diff --git a/assets/deflate-9cfc3535.js b/assets/deflate-9cfc3535.js new file mode 100644 index 000000000..d8aa01c0b --- /dev/null +++ b/assets/deflate-9cfc3535.js @@ -0,0 +1 @@ +import{i as r}from"./pako.esm-147cf1d7.js";import{B as a}from"./index-1328ccd8.js";class s extends a{decodeBlock(e){return r(new Uint8Array(e)).buffer}}export{s as default}; diff --git a/assets/deflate.148275c2.js b/assets/deflate.148275c2.js deleted file mode 100644 index fb387e6c8..000000000 --- a/assets/deflate.148275c2.js +++ /dev/null @@ -1 +0,0 @@ -import{i as r}from"./pako.esm.343ed2eb.js";import{B as a}from"./index.ed0b1304.js";class s extends a{decodeBlock(e){return r(new Uint8Array(e)).buffer}}export{s as default}; diff --git a/assets/index-1328ccd8.js b/assets/index-1328ccd8.js new file mode 100644 index 000000000..8cbeb4906 --- /dev/null +++ b/assets/index-1328ccd8.js @@ -0,0 +1,3924 @@ +var Rk=Object.defineProperty;var xk=(e,A,t)=>A in e?Rk(e,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[A]=t;var to=(e,A,t)=>(xk(e,typeof A!="symbol"?A+"":A,t),t);function Fk(e,A){for(var t=0;ti[n]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const A=document.createElement("link").relList;if(A&&A.supports&&A.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))i(n);new MutationObserver(n=>{for(const r of n)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function t(n){const r={};return n.integrity&&(r.integrity=n.integrity),n.referrerPolicy&&(r.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?r.credentials="include":n.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(n){if(n.ep)return;n.ep=!0;const r=t(n);fetch(n.href,r)}})();var rc=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function pi(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Nk(e){if(e.__esModule)return e;var A=e.default;if(typeof A=="function"){var t=function i(){return this instanceof i?Reflect.construct(A,arguments,this.constructor):A.apply(this,arguments)};t.prototype=A.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(e).forEach(function(i){var n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,n.get?n:{enumerable:!0,get:function(){return e[i]}})}),t}var iF={exports:{}},al={};/* +object-assign +(c) Sindre Sorhus +@license MIT +*/var Om=Object.getOwnPropertySymbols,Lk=Object.prototype.hasOwnProperty,bk=Object.prototype.propertyIsEnumerable;function Gk(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function _k(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var A={},t=0;t<10;t++)A["_"+String.fromCharCode(t)]=t;var i=Object.getOwnPropertyNames(A).map(function(r){return A[r]});if(i.join("")!=="0123456789")return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach(function(r){n[r]=r}),Object.keys(Object.assign({},n)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var nF=_k()?Object.assign:function(e,A){for(var t,i=Gk(e),n,r=1;r"u"||typeof MessageChannel!="function"){var a=null,g=null,I=function(){if(a!==null)try{var T=e.unstable_now();a(!0,T),a=null}catch(q){throw setTimeout(I,0),q}};A=function(T){a!==null?setTimeout(A,0,T):(a=T,setTimeout(I,0))},t=function(T,q){g=setTimeout(T,q)},i=function(){clearTimeout(g)},e.unstable_shouldYield=function(){return!1},n=e.unstable_forceFrameRate=function(){}}else{var l=window.setTimeout,c=window.clearTimeout;if(typeof console<"u"){var C=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 C!="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 B=!1,E=null,u=-1,h=5,f=0;e.unstable_shouldYield=function(){return e.unstable_now()>=f},n=function(){},e.unstable_forceFrameRate=function(T){0>T||125>>1,iA=T[AA];if(iA!==void 0&&0x(sA,j))IA!==void 0&&0>x(IA,sA)?(T[AA]=IA,T[BA]=j,AA=BA):(T[AA]=sA,T[gA]=j,AA=gA);else if(IA!==void 0&&0>x(IA,j))T[AA]=IA,T[BA]=j,AA=BA;else break A}}return q}return null}function x(T,q){var j=T.sortIndex-q.sortIndex;return j!==0?j:T.id-q.id}var D=[],F=[],N=1,k=null,P=3,H=!1,W=!1,J=!1;function Z(T){for(var q=m(F);q!==null;){if(q.callback===null)v(F);else if(q.startTime<=T)v(F),q.sortIndex=q.expirationTime,w(D,q);else break;q=m(F)}}function z(T){if(J=!1,Z(T),!W)if(m(D)!==null)W=!0,A(O);else{var q=m(F);q!==null&&t(z,q.startTime-T)}}function O(T,q){W=!1,J&&(J=!1,i()),H=!0;var j=P;try{for(Z(q),k=m(D);k!==null&&(!(k.expirationTime>q)||T&&!e.unstable_shouldYield());){var AA=k.callback;if(typeof AA=="function"){k.callback=null,P=k.priorityLevel;var iA=AA(k.expirationTime<=q);q=e.unstable_now(),typeof iA=="function"?k.callback=iA:k===m(D)&&v(D),Z(q)}else v(D);k=m(D)}if(k!==null)var gA=!0;else{var sA=m(F);sA!==null&&t(z,sA.startTime-q),gA=!1}return gA}finally{k=null,P=j,H=!1}}var Y=n;e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(T){T.callback=null},e.unstable_continueExecution=function(){W||H||(W=!0,A(O))},e.unstable_getCurrentPriorityLevel=function(){return P},e.unstable_getFirstCallbackNode=function(){return m(D)},e.unstable_next=function(T){switch(P){case 1:case 2:case 3:var q=3;break;default:q=P}var j=P;P=q;try{return T()}finally{P=j}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=Y,e.unstable_runWithPriority=function(T,q){switch(T){case 1:case 2:case 3:case 4:case 5:break;default:T=3}var j=P;P=T;try{return q()}finally{P=j}},e.unstable_scheduleCallback=function(T,q,j){var AA=e.unstable_now();switch(typeof j=="object"&&j!==null?(j=j.delay,j=typeof j=="number"&&0AA?(T.sortIndex=j,w(F,T),m(D)===null&&T===m(F)&&(J?i():J=!0,t(z,j-AA))):(T.sortIndex=iA,w(D,T),W||H||(W=!0,A(O))),T},e.unstable_wrapCallback=function(T){var q=P;return function(){var j=P;P=q;try{return T.apply(this,arguments)}finally{P=j}}}})(mF);yF.exports=mF;var Yk=yF.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 aE=p,He=nF,st=Yk;function oA(e){for(var A="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;t"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Kk=/^[: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]*$/,Wm=Object.prototype.hasOwnProperty,zm={},jm={};function Vk(e){return Wm.call(jm,e)?!0:Wm.call(zm,e)?!1:Kk.test(e)?jm[e]=!0:(zm[e]=!0,!1)}function Wk(e,A,t,i){if(t!==null&&t.type===0)return!1;switch(typeof A){case"function":case"symbol":return!0;case"boolean":return i?!1:t!==null?!t.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function zk(e,A,t,i){if(A===null||typeof A>"u"||Wk(e,A,t,i))return!0;if(i)return!1;if(t!==null)switch(t.type){case 3:return!A;case 4:return A===!1;case 5:return isNaN(A);case 6:return isNaN(A)||1>A}return!1}function Ut(e,A,t,i,n,r,o){this.acceptsBooleans=A===2||A===3||A===4,this.attributeName=i,this.attributeNamespace=n,this.mustUseProperty=t,this.propertyName=e,this.type=A,this.sanitizeURL=r,this.removeEmptyString=o}var dt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){dt[e]=new Ut(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var A=e[0];dt[A]=new Ut(A,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){dt[e]=new Ut(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){dt[e]=new Ut(e,2,!1,e,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(e){dt[e]=new Ut(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){dt[e]=new Ut(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){dt[e]=new Ut(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){dt[e]=new Ut(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){dt[e]=new Ut(e,5,!1,e.toLowerCase(),null,!1,!1)});var C0=/[\-:]([a-z])/g;function B0(e){return e[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(e){var A=e.replace(C0,B0);dt[A]=new Ut(A,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var A=e.replace(C0,B0);dt[A]=new Ut(A,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var A=e.replace(C0,B0);dt[A]=new Ut(A,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){dt[e]=new Ut(e,1,!1,e.toLowerCase(),null,!1,!1)});dt.xlinkHref=new Ut("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){dt[e]=new Ut(e,1,!1,e.toLowerCase(),null,!0,!0)});function E0(e,A,t,i){var n=dt.hasOwnProperty(A)?dt[A]:null,r=n!==null?n.type===0:i?!1:!(!(2s||n[o]!==r[s])return` +`+n[o].replace(" at new "," at ");while(1<=o&&0<=s);break}}}finally{Lu=!1,Error.prepareStackTrace=t}return(e=e?e.displayName||e.name:"")?bg(e):""}function jk(e){switch(e.tag){case 5:return bg(e.type);case 16:return bg("Lazy");case 13:return bg("Suspense");case 19:return bg("SuspenseList");case 0:case 2:case 15:return e=sc(e.type,!1),e;case 11:return e=sc(e.type.render,!1),e;case 22:return e=sc(e.type._render,!1),e;case 1:return e=sc(e.type,!0),e;default:return""}}function Ys(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case sr:return"Fragment";case Co:return"Portal";case Kg:return"Profiler";case u0:return"StrictMode";case Vg:return"Suspense";case zC:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case f0:return(e.displayName||"Context")+".Consumer";case h0:return(e._context.displayName||"Context")+".Provider";case gE:var A=e.render;return A=A.displayName||A.name||"",e.displayName||(A!==""?"ForwardRef("+A+")":"ForwardRef");case IE:return Ys(e.type);case d0:return Ys(e._render);case Q0:A=e._payload,e=e._init;try{return Ys(e(A))}catch{}}return null}function Fr(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function SF(e){var A=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(A==="checkbox"||A==="radio")}function Xk(e){var A=SF(e)?"checked":"value",t=Object.getOwnPropertyDescriptor(e.constructor.prototype,A),i=""+e[A];if(!e.hasOwnProperty(A)&&typeof t<"u"&&typeof t.get=="function"&&typeof t.set=="function"){var n=t.get,r=t.set;return Object.defineProperty(e,A,{configurable:!0,get:function(){return n.call(this)},set:function(o){i=""+o,r.call(this,o)}}),Object.defineProperty(e,A,{enumerable:t.enumerable}),{getValue:function(){return i},setValue:function(o){i=""+o},stopTracking:function(){e._valueTracker=null,delete e[A]}}}}function ac(e){e._valueTracker||(e._valueTracker=Xk(e))}function DF(e){if(!e)return!1;var A=e._valueTracker;if(!A)return!0;var t=A.getValue(),i="";return e&&(i=SF(e)?e.checked?"true":"false":e.value),e=i,e!==t?(A.setValue(e),!0):!1}function jC(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Yf(e,A){var t=A.checked;return He({},A,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:t??e._wrapperState.initialChecked})}function Zm(e,A){var t=A.defaultValue==null?"":A.defaultValue,i=A.checked!=null?A.checked:A.defaultChecked;t=Fr(A.value!=null?A.value:t),e._wrapperState={initialChecked:i,initialValue:t,controlled:A.type==="checkbox"||A.type==="radio"?A.checked!=null:A.value!=null}}function RF(e,A){A=A.checked,A!=null&&E0(e,"checked",A,!1)}function Kf(e,A){RF(e,A);var t=Fr(A.value),i=A.type;if(t!=null)i==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+t):e.value!==""+t&&(e.value=""+t);else if(i==="submit"||i==="reset"){e.removeAttribute("value");return}A.hasOwnProperty("value")?Vf(e,A.type,t):A.hasOwnProperty("defaultValue")&&Vf(e,A.type,Fr(A.defaultValue)),A.checked==null&&A.defaultChecked!=null&&(e.defaultChecked=!!A.defaultChecked)}function $m(e,A,t){if(A.hasOwnProperty("value")||A.hasOwnProperty("defaultValue")){var i=A.type;if(!(i!=="submit"&&i!=="reset"||A.value!==void 0&&A.value!==null))return;A=""+e._wrapperState.initialValue,t||A===e.value||(e.value=A),e.defaultValue=A}t=e.name,t!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,t!==""&&(e.name=t)}function Vf(e,A,t){(A!=="number"||jC(e.ownerDocument)!==e)&&(t==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+t&&(e.defaultValue=""+t))}function Zk(e){var A="";return aE.Children.forEach(e,function(t){t!=null&&(A+=t)}),A}function Wf(e,A){return e=He({children:void 0},A),(A=Zk(A.children))&&(e.children=A),e}function Ks(e,A,t,i){if(e=e.options,A){A={};for(var n=0;n=t.length))throw Error(oA(93));t=t[0]}A=t}A==null&&(A=""),t=A}e._wrapperState={initialValue:Fr(t)}}function xF(e,A){var t=Fr(A.value),i=Fr(A.defaultValue);t!=null&&(t=""+t,t!==e.value&&(e.value=t),A.defaultValue==null&&e.defaultValue!==t&&(e.defaultValue=t)),i!=null&&(e.defaultValue=""+i)}function ew(e){var A=e.textContent;A===e._wrapperState.initialValue&&A!==""&&A!==null&&(e.value=A)}var jf={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function FF(e){switch(e){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 Xf(e,A){return e==null||e==="http://www.w3.org/1999/xhtml"?FF(A):e==="http://www.w3.org/2000/svg"&&A==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var gc,NF=function(e){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(A,t,i,n){MSApp.execUnsafeLocalFunction(function(){return e(A,t,i,n)})}:e}(function(e,A){if(e.namespaceURI!==jf.svg||"innerHTML"in e)e.innerHTML=A;else{for(gc=gc||document.createElement("div"),gc.innerHTML=""+A.valueOf().toString()+"",A=gc.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;A.firstChild;)e.appendChild(A.firstChild)}});function wI(e,A){if(A){var t=e.firstChild;if(t&&t===e.lastChild&&t.nodeType===3){t.nodeValue=A;return}}e.textContent=A}var Wg={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},$k=["Webkit","ms","Moz","O"];Object.keys(Wg).forEach(function(e){$k.forEach(function(A){A=A+e.charAt(0).toUpperCase()+e.substring(1),Wg[A]=Wg[e]})});function LF(e,A,t){return A==null||typeof A=="boolean"||A===""?"":t||typeof A!="number"||A===0||Wg.hasOwnProperty(e)&&Wg[e]?(""+A).trim():A+"px"}function bF(e,A){e=e.style;for(var t in A)if(A.hasOwnProperty(t)){var i=t.indexOf("--")===0,n=LF(t,A[t],i);t==="float"&&(t="cssFloat"),i?e.setProperty(t,n):e[t]=n}}var AT=He({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 Zf(e,A){if(A){if(AT[e]&&(A.children!=null||A.dangerouslySetInnerHTML!=null))throw Error(oA(137,e));if(A.dangerouslySetInnerHTML!=null){if(A.children!=null)throw Error(oA(60));if(!(typeof A.dangerouslySetInnerHTML=="object"&&"__html"in A.dangerouslySetInnerHTML))throw Error(oA(61))}if(A.style!=null&&typeof A.style!="object")throw Error(oA(62))}}function $f(e,A){if(e.indexOf("-")===-1)return typeof A.is=="string";switch(e){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 m0(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var AQ=null,Vs=null,Ws=null;function tw(e){if(e=ll(e)){if(typeof AQ!="function")throw Error(oA(280));var A=e.stateNode;A&&(A=uE(A),AQ(e.stateNode,e.type,A))}}function GF(e){Vs?Ws?Ws.push(e):Ws=[e]:Vs=e}function _F(){if(Vs){var e=Vs,A=Ws;if(Ws=Vs=null,tw(e),A)for(e=0;ei?0:1<t;t++)A.push(e);return A}function cE(e,A,t){e.pendingLanes|=A;var i=A-1;e.suspendedLanes&=i,e.pingedLanes&=i,e=e.eventTimes,A=31-Nr(A),e[A]=t}var Nr=Math.clz32?Math.clz32:uT,BT=Math.log,ET=Math.LN2;function uT(e){return e===0?32:31-(BT(e)/ET|0)|0}var hT=st.unstable_UserBlockingPriority,fT=st.unstable_runWithPriority,uC=!0;function QT(e,A,t,i){Bo||v0();var n=F0,r=Bo;Bo=!0;try{MF(n,e,A,t,i)}finally{(Bo=r)||S0()}}function dT(e,A,t,i){fT(hT,F0.bind(null,e,A,t,i))}function F0(e,A,t,i){if(uC){var n;if((n=(A&4)===0)&&0=jg),cw=String.fromCharCode(32),Cw=!1;function $F(e,A){switch(e){case"keyup":return JT.indexOf(A.keyCode)!==-1;case"keydown":return A.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function AN(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ls=!1;function YT(e,A){switch(e){case"compositionend":return AN(A);case"keypress":return A.which!==32?null:(Cw=!0,cw);case"textInput":return e=A.data,e===cw&&Cw?null:e;default:return null}}function KT(e,A){if(Ls)return e==="compositionend"||!_0&&$F(e,A)?(e=XF(),hC=L0=gr=null,Ls=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(A.ctrlKey||A.altKey||A.metaKey)||A.ctrlKey&&A.altKey){if(A.char&&1=A)return{node:t,offset:A-e};e=i}A:{for(;t;){if(t.nextSibling){t=t.nextSibling;break A}t=t.parentNode}t=void 0}t=hw(t)}}function nN(e,A){return e&&A?e===A?!0:e&&e.nodeType===3?!1:A&&A.nodeType===3?nN(e,A.parentNode):"contains"in e?e.contains(A):e.compareDocumentPosition?!!(e.compareDocumentPosition(A)&16):!1:!1}function Qw(){for(var e=window,A=jC();A instanceof e.HTMLIFrameElement;){try{var t=typeof A.contentWindow.location.href=="string"}catch{t=!1}if(t)e=A.contentWindow;else break;A=jC(e.document)}return A}function rQ(e){var A=e&&e.nodeName&&e.nodeName.toLowerCase();return A&&(A==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||A==="textarea"||e.contentEditable==="true")}var tU=_n&&"documentMode"in document&&11>=document.documentMode,bs=null,oQ=null,Zg=null,sQ=!1;function dw(e,A,t){var i=t.window===t?t.document:t.nodeType===9?t:t.ownerDocument;sQ||bs==null||bs!==jC(i)||(i=bs,"selectionStart"in i&&rQ(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),Zg&&FI(Zg,i)||(Zg=i,i=AB(oQ,"onSelect"),0_s||(e.current=gQ[_s],gQ[_s]=null,_s--)}function Ve(e,A){_s++,gQ[_s]=e.current,e.current=A}var Lr={},Nt=Yr(Lr),Kt=Yr(!1),Ro=Lr;function ga(e,A){var t=e.type.contextTypes;if(!t)return Lr;var i=e.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===A)return i.__reactInternalMemoizedMaskedChildContext;var n={},r;for(r in t)n[r]=A[r];return i&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=A,e.__reactInternalMemoizedMaskedChildContext=n),n}function Vt(e){return e=e.childContextTypes,e!=null}function iB(){ke(Kt),ke(Nt)}function xw(e,A,t){if(Nt.current!==Lr)throw Error(oA(168));Ve(Nt,A),Ve(Kt,t)}function cN(e,A,t){var i=e.stateNode;if(e=A.childContextTypes,typeof i.getChildContext!="function")return t;i=i.getChildContext();for(var n in i)if(!(n in e))throw Error(oA(108,Ys(A)||"Unknown",n));return He({},t,i)}function QC(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Lr,Ro=Nt.current,Ve(Nt,e),Ve(Kt,Kt.current),!0}function Fw(e,A,t){var i=e.stateNode;if(!i)throw Error(oA(169));t?(e=cN(e,A,Ro),i.__reactInternalMemoizedMergedChildContext=e,ke(Kt),ke(Nt),Ve(Nt,e)):ke(Kt),Ve(Kt,t)}var k0=null,wo=null,rU=st.unstable_runWithPriority,T0=st.unstable_scheduleCallback,IQ=st.unstable_cancelCallback,oU=st.unstable_shouldYield,Nw=st.unstable_requestPaint,lQ=st.unstable_now,sU=st.unstable_getCurrentPriorityLevel,hE=st.unstable_ImmediatePriority,CN=st.unstable_UserBlockingPriority,BN=st.unstable_NormalPriority,EN=st.unstable_LowPriority,uN=st.unstable_IdlePriority,Yu={},aU=Nw!==void 0?Nw:function(){},mn=null,dC=null,Ku=!1,Lw=lQ(),xt=1e4>Lw?lQ:function(){return lQ()-Lw};function Ia(){switch(sU()){case hE:return 99;case CN:return 98;case BN:return 97;case EN:return 96;case uN:return 95;default:throw Error(oA(332))}}function hN(e){switch(e){case 99:return hE;case 98:return CN;case 97:return BN;case 96:return EN;case 95:return uN;default:throw Error(oA(332))}}function xo(e,A){return e=hN(e),rU(e,A)}function LI(e,A,t){return e=hN(e),T0(e,A,t)}function cn(){if(dC!==null){var e=dC;dC=null,IQ(e)}fN()}function fN(){if(!Ku&&mn!==null){Ku=!0;var e=0;try{var A=mn;xo(99,function(){for(;ev?(x=m,m=null):x=m.sibling;var D=c(u,m,f[v],Q);if(D===null){m===null&&(m=x);break}e&&m&&D.alternate===null&&A(u,m),h=r(D,h,v),w===null?d=D:w.sibling=D,w=D,m=x}if(v===f.length)return t(u,m),d;if(m===null){for(;vv?(x=m,m=null):x=m.sibling;var F=c(u,m,D.value,Q);if(F===null){m===null&&(m=x);break}e&&m&&F.alternate===null&&A(u,m),h=r(F,h,v),w===null?d=F:w.sibling=F,w=F,m=x}if(D.done)return t(u,m),d;if(m===null){for(;!D.done;v++,D=f.next())D=l(u,D.value,Q),D!==null&&(h=r(D,h,v),w===null?d=D:w.sibling=D,w=D);return d}for(m=i(u,m);!D.done;v++,D=f.next())D=C(m,u,v,D.value,Q),D!==null&&(e&&D.alternate!==null&&m.delete(D.key===null?v:D.key),h=r(D,h,v),w===null?d=D:w.sibling=D,w=D);return e&&m.forEach(function(N){return A(u,N)}),d}return function(u,h,f,Q){var d=typeof f=="object"&&f!==null&&f.type===sr&&f.key===null;d&&(f=f.props.children);var w=typeof f=="object"&&f!==null;if(w)switch(f.$$typeof){case Lg:A:{for(w=f.key,d=h;d!==null;){if(d.key===w){switch(d.tag){case 7:if(f.type===sr){t(u,d.sibling),h=n(d,f.props.children),h.return=u,u=h;break A}break;default:if(d.elementType===f.type){t(u,d.sibling),h=n(d,f.props),h.ref=gg(u,d,f),h.return=u,u=h;break A}}t(u,d);break}else A(u,d);d=d.sibling}f.type===sr?(h=Aa(f.props.children,u.mode,Q,f.key),h.return=u,u=h):(Q=wC(f.type,f.key,f.props,null,u.mode,Q),Q.ref=gg(u,h,f),Q.return=u,u=Q)}return o(u);case Co:A:{for(d=f.key;h!==null;){if(h.key===d)if(h.tag===4&&h.stateNode.containerInfo===f.containerInfo&&h.stateNode.implementation===f.implementation){t(u,h.sibling),h=n(h,f.children||[]),h.return=u,u=h;break A}else{t(u,h);break}else A(u,h);h=h.sibling}h=Zu(f,u.mode,Q),h.return=u,u=h}return o(u)}if(typeof f=="string"||typeof f=="number")return f=""+f,h!==null&&h.tag===6?(t(u,h.sibling),h=n(h,f),h.return=u,u=h):(t(u,h),h=Xu(f,u.mode,Q),h.return=u,u=h),o(u);if(cc(f))return B(u,h,f,Q);if(ig(f))return E(u,h,f,Q);if(w&&Cc(u,f),typeof f>"u"&&!d)switch(u.tag){case 1:case 22:case 0:case 11:case 15:throw Error(oA(152,Ys(u.type)||"Component"))}return t(u,h)}}var aB=mN(!0),wN=mN(!1),cl={},on=Yr(cl),GI=Yr(cl),_I=Yr(cl);function uo(e){if(e===cl)throw Error(oA(174));return e}function CQ(e,A){switch(Ve(_I,A),Ve(GI,e),Ve(on,cl),e=A.nodeType,e){case 9:case 11:A=(A=A.documentElement)?A.namespaceURI:Xf(null,"");break;default:e=e===8?A.parentNode:A,A=e.namespaceURI||null,e=e.tagName,A=Xf(A,e)}ke(on),Ve(on,A)}function la(){ke(on),ke(GI),ke(_I)}function kw(e){uo(_I.current);var A=uo(on.current),t=Xf(A,e.type);A!==t&&(Ve(GI,e),Ve(on,t))}function q0(e){GI.current===e&&(ke(on),ke(GI))}var Ke=Yr(0);function gB(e){for(var A=e;A!==null;){if(A.tag===13){var t=A.memoizedState;if(t!==null&&(t=t.dehydrated,t===null||t.data==="$?"||t.data==="$!"))return A}else if(A.tag===19&&A.memoizedProps.revealOrder!==void 0){if(A.flags&64)return A}else if(A.child!==null){A.child.return=A,A=A.child;continue}if(A===e)break;for(;A.sibling===null;){if(A.return===null||A.return===e)return null;A=A.return}A.sibling.return=A.return,A=A.sibling}return null}var xn=null,lr=null,sn=!1;function vN(e,A){var t=li(5,null,null,0);t.elementType="DELETED",t.type="DELETED",t.stateNode=A,t.return=e,t.flags=8,e.lastEffect!==null?(e.lastEffect.nextEffect=t,e.lastEffect=t):e.firstEffect=e.lastEffect=t}function Tw(e,A){switch(e.tag){case 5:var t=e.type;return A=A.nodeType!==1||t.toLowerCase()!==A.nodeName.toLowerCase()?null:A,A!==null?(e.stateNode=A,!0):!1;case 6:return A=e.pendingProps===""||A.nodeType!==3?null:A,A!==null?(e.stateNode=A,!0):!1;case 13:return!1;default:return!1}}function BQ(e){if(sn){var A=lr;if(A){var t=A;if(!Tw(e,A)){if(A=zs(t.nextSibling),!A||!Tw(e,A)){e.flags=e.flags&-1025|2,sn=!1,xn=e;return}vN(xn,t)}xn=e,lr=zs(A.firstChild)}else e.flags=e.flags&-1025|2,sn=!1,xn=e}}function Uw(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;xn=e}function Bc(e){if(e!==xn)return!1;if(!sn)return Uw(e),sn=!0,!1;var A=e.type;if(e.tag!==5||A!=="head"&&A!=="body"&&!aQ(A,e.memoizedProps))for(A=lr;A;)vN(e,A),A=zs(A.nextSibling);if(Uw(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(oA(317));A:{for(e=e.nextSibling,A=0;e;){if(e.nodeType===8){var t=e.data;if(t==="/$"){if(A===0){lr=zs(e.nextSibling);break A}A--}else t!=="$"&&t!=="$!"&&t!=="$?"||A++}e=e.nextSibling}lr=null}}else lr=xn?zs(e.stateNode.nextSibling):null;return!0}function Vu(){lr=xn=null,sn=!1}var Xs=[];function J0(){for(var e=0;er))throw Error(oA(301));r+=1,Ct=vt=null,A.updateQueue=null,$g.current=CU,e=t(i,n)}while(AI)}if($g.current=BB,A=vt!==null&&vt.next!==null,MI=0,Ct=vt=ze=null,IB=!1,A)throw Error(oA(300));return e}function ho(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Ct===null?ze.memoizedState=Ct=e:Ct=Ct.next=e,Ct}function $o(){if(vt===null){var e=ze.alternate;e=e!==null?e.memoizedState:null}else e=vt.next;var A=Ct===null?ze.memoizedState:Ct.next;if(A!==null)Ct=A,vt=e;else{if(e===null)throw Error(oA(310));vt=e,e={memoizedState:vt.memoizedState,baseState:vt.baseState,baseQueue:vt.baseQueue,queue:vt.queue,next:null},Ct===null?ze.memoizedState=Ct=e:Ct=Ct.next=e}return Ct}function tn(e,A){return typeof A=="function"?A(e):A}function Ig(e){var A=$o(),t=A.queue;if(t===null)throw Error(oA(311));t.lastRenderedReducer=e;var i=vt,n=i.baseQueue,r=t.pending;if(r!==null){if(n!==null){var o=n.next;n.next=r.next,r.next=o}i.baseQueue=n=r,t.pending=null}if(n!==null){n=n.next,i=i.baseState;var s=o=r=null,a=n;do{var g=a.lane;if((MI&g)===g)s!==null&&(s=s.next={lane:0,action:a.action,eagerReducer:a.eagerReducer,eagerState:a.eagerState,next:null}),i=a.eagerReducer===e?a.eagerState:e(i,a.action);else{var I={lane:g,action:a.action,eagerReducer:a.eagerReducer,eagerState:a.eagerState,next:null};s===null?(o=s=I,r=i):s=s.next=I,ze.lanes|=g,Cl|=g}a=a.next}while(a!==null&&a!==n);s===null?r=i:s.next=o,Ii(i,A.memoizedState)||(xi=!0),A.memoizedState=i,A.baseState=r,A.baseQueue=s,t.lastRenderedState=i}return[A.memoizedState,t.dispatch]}function lg(e){var A=$o(),t=A.queue;if(t===null)throw Error(oA(311));t.lastRenderedReducer=e;var i=t.dispatch,n=t.pending,r=A.memoizedState;if(n!==null){t.pending=null;var o=n=n.next;do r=e(r,o.action),o=o.next;while(o!==n);Ii(r,A.memoizedState)||(xi=!0),A.memoizedState=r,A.baseQueue===null&&(A.baseState=r),t.lastRenderedState=r}return[r,i]}function Pw(e,A,t){var i=A._getVersion;i=i(A._source);var n=A._workInProgressVersionPrimary;if(n!==null?e=n===i:(e=e.mutableReadLanes,(e=(MI&e)===e)&&(A._workInProgressVersionPrimary=i,Xs.push(A))),e)return t(A._source);throw Xs.push(A),Error(oA(350))}function SN(e,A,t,i){var n=Mt;if(n===null)throw Error(oA(349));var r=A._getVersion,o=r(A._source),s=$g.current,a=s.useState(function(){return Pw(n,A,t)}),g=a[1],I=a[0];a=Ct;var l=e.memoizedState,c=l.refs,C=c.getSnapshot,B=l.source;l=l.subscribe;var E=ze;return e.memoizedState={refs:c,source:A,subscribe:i},s.useEffect(function(){c.getSnapshot=t,c.setSnapshot=g;var u=r(A._source);if(!Ii(o,u)){u=t(A._source),Ii(I,u)||(g(u),u=pr(E),n.mutableReadLanes|=u&n.pendingLanes),u=n.mutableReadLanes,n.entangledLanes|=u;for(var h=n.entanglements,f=u;0t?98:t,function(){e(!0)}),xo(97<\/script>",e=e.removeChild(e.firstChild)):typeof i.is=="string"?e=o.createElement(t,{is:i.is}):(e=o.createElement(t),t==="select"&&(o=e,i.multiple?o.multiple=!0:i.size&&(o.size=i.size))):e=o.createElementNS(e,t),e[Ir]=A,e[tB]=i,_N(e,A,!1,!1),A.stateNode=e,o=$f(t,i),t){case"dialog":Me("cancel",e),Me("close",e),n=i;break;case"iframe":case"object":case"embed":Me("load",e),n=i;break;case"video":case"audio":for(n=0;nwQ&&(A.flags|=64,r=!0,Cg(i,!1),A.lanes=33554432)}else{if(!r)if(e=gB(o),e!==null){if(A.flags|=64,r=!0,t=e.updateQueue,t!==null&&(A.updateQueue=t,A.flags|=4),Cg(i,!0),i.tail===null&&i.tailMode==="hidden"&&!o.alternate&&!sn)return A=A.lastEffect=i.lastEffect,A!==null&&(A.nextEffect=null),null}else 2*xt()-i.renderingStartTime>wQ&&t!==1073741824&&(A.flags|=64,r=!0,Cg(i,!1),A.lanes=33554432);i.isBackwards?(o.sibling=A.child,A.child=o):(t=i.last,t!==null?t.sibling=o:A.child=o,i.last=o)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.lastEffect=A.lastEffect,i.renderingStartTime=xt(),t.sibling=null,A=Ke.current,Ve(Ke,r?A&1|2:A&1),t):null;case 23:case 24:return $0(),e!==null&&e.memoizedState!==null!=(A.memoizedState!==null)&&i.mode!=="unstable-defer-without-hiding"&&(A.flags|=4),null}throw Error(oA(156,A.tag))}function uU(e){switch(e.tag){case 1:Vt(e.type)&&iB();var A=e.flags;return A&4096?(e.flags=A&-4097|64,e):null;case 3:if(la(),ke(Kt),ke(Nt),J0(),A=e.flags,A&64)throw Error(oA(285));return e.flags=A&-4097|64,e;case 5:return q0(e),null;case 13:return ke(Ke),A=e.flags,A&4096?(e.flags=A&-4097|64,e):null;case 19:return ke(Ke),null;case 4:return la(),null;case 10:return P0(e),null;case 23:case 24:return $0(),null;default:return null}}function z0(e,A){try{var t="",i=A;do t+=jk(i),i=i.return;while(i);var n=t}catch(r){n=` +Error generating stack: `+r.message+` +`+r.stack}return{value:e,source:A,stack:n}}function QQ(e,A){try{console.error(A.value)}catch(t){setTimeout(function(){throw t})}}var hU=typeof WeakMap=="function"?WeakMap:Map;function TN(e,A,t){t=Qr(-1,t),t.tag=3,t.payload={element:null};var i=A.value;return t.callback=function(){uB||(uB=!0,vQ=i),QQ(e,A)},t}function UN(e,A,t){t=Qr(-1,t),t.tag=3;var i=e.type.getDerivedStateFromError;if(typeof i=="function"){var n=A.value;t.payload=function(){return QQ(e,A),i(n)}}var r=e.stateNode;return r!==null&&typeof r.componentDidCatch=="function"&&(t.callback=function(){typeof i!="function"&&(nn===null?nn=new Set([this]):nn.add(this),QQ(e,A));var o=A.stack;this.componentDidCatch(A.value,{componentStack:o!==null?o:""})}),t}var fU=typeof WeakSet=="function"?WeakSet:Set;function $w(e){var A=e.ref;if(A!==null)if(typeof A=="function")try{A(null)}catch(t){mr(e,t)}else A.current=null}function QU(e,A){switch(A.tag){case 0:case 11:case 15:case 22:return;case 1:if(A.flags&256&&e!==null){var t=e.memoizedProps,i=e.memoizedState;e=A.stateNode,A=e.getSnapshotBeforeUpdate(A.elementType===A.type?t:Di(A.type,t),i),e.__reactInternalSnapshotBeforeUpdate=A}return;case 3:A.flags&256&&M0(A.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(oA(163))}function dU(e,A,t){switch(t.tag){case 0:case 11:case 15:case 22:if(A=t.updateQueue,A=A!==null?A.lastEffect:null,A!==null){e=A=A.next;do{if((e.tag&3)===3){var i=e.create;e.destroy=i()}e=e.next}while(e!==A)}if(A=t.updateQueue,A=A!==null?A.lastEffect:null,A!==null){e=A=A.next;do{var n=e;i=n.next,n=n.tag,n&4&&n&1&&(WN(t,e),RU(t,e)),e=i}while(e!==A)}return;case 1:e=t.stateNode,t.flags&4&&(A===null?e.componentDidMount():(i=t.elementType===t.type?A.memoizedProps:Di(t.type,A.memoizedProps),e.componentDidUpdate(i,A.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),A=t.updateQueue,A!==null&&Gw(t,A,e);return;case 3:if(A=t.updateQueue,A!==null){if(e=null,t.child!==null)switch(t.child.tag){case 5:e=t.child.stateNode;break;case 1:e=t.child.stateNode}Gw(t,A,e)}return;case 5:e=t.stateNode,A===null&&t.flags&4&&IN(t.type,t.memoizedProps)&&e.focus();return;case 6:return;case 4:return;case 12:return;case 13:t.memoizedState===null&&(t=t.alternate,t!==null&&(t=t.memoizedState,t!==null&&(t=t.dehydrated,t!==null&&JF(t))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(oA(163))}function Av(e,A){for(var t=e;;){if(t.tag===5){var i=t.stateNode;if(A)i=i.style,typeof i.setProperty=="function"?i.setProperty("display","none","important"):i.display="none";else{i=t.stateNode;var n=t.memoizedProps.style;n=n!=null&&n.hasOwnProperty("display")?n.display:null,i.style.display=LF("display",n)}}else if(t.tag===6)t.stateNode.nodeValue=A?"":t.memoizedProps;else if((t.tag!==23&&t.tag!==24||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return;t=t.return}t.sibling.return=t.return,t=t.sibling}}function ev(e,A){if(wo&&typeof wo.onCommitFiberUnmount=="function")try{wo.onCommitFiberUnmount(k0,A)}catch{}switch(A.tag){case 0:case 11:case 14:case 15:case 22:if(e=A.updateQueue,e!==null&&(e=e.lastEffect,e!==null)){var t=e=e.next;do{var i=t,n=i.destroy;if(i=i.tag,n!==void 0)if(i&4)WN(A,t);else{i=A;try{n()}catch(r){mr(i,r)}}t=t.next}while(t!==e)}break;case 1:if($w(A),e=A.stateNode,typeof e.componentWillUnmount=="function")try{e.props=A.memoizedProps,e.state=A.memoizedState,e.componentWillUnmount()}catch(r){mr(A,r)}break;case 5:$w(A);break;case 4:PN(e,A)}}function tv(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function iv(e){return e.tag===5||e.tag===3||e.tag===4}function nv(e){A:{for(var A=e.return;A!==null;){if(iv(A))break A;A=A.return}throw Error(oA(160))}var t=A;switch(A=t.stateNode,t.tag){case 5:var i=!1;break;case 3:A=A.containerInfo,i=!0;break;case 4:A=A.containerInfo,i=!0;break;default:throw Error(oA(161))}t.flags&16&&(wI(A,""),t.flags&=-17);A:e:for(t=e;;){for(;t.sibling===null;){if(t.return===null||iv(t.return)){t=null;break A}t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2)){t=t.stateNode;break A}}i?dQ(e,t,A):pQ(e,t,A)}function dQ(e,A,t){var i=e.tag,n=i===5||i===6;if(n)e=n?e.stateNode:e.stateNode.instance,A?t.nodeType===8?t.parentNode.insertBefore(e,A):t.insertBefore(e,A):(t.nodeType===8?(A=t.parentNode,A.insertBefore(e,t)):(A=t,A.appendChild(e)),t=t._reactRootContainer,t!=null||A.onclick!==null||(A.onclick=eB));else if(i!==4&&(e=e.child,e!==null))for(dQ(e,A,t),e=e.sibling;e!==null;)dQ(e,A,t),e=e.sibling}function pQ(e,A,t){var i=e.tag,n=i===5||i===6;if(n)e=n?e.stateNode:e.stateNode.instance,A?t.insertBefore(e,A):t.appendChild(e);else if(i!==4&&(e=e.child,e!==null))for(pQ(e,A,t),e=e.sibling;e!==null;)pQ(e,A,t),e=e.sibling}function PN(e,A){for(var t=A,i=!1,n,r;;){if(!i){i=t.return;A:for(;;){if(i===null)throw Error(oA(160));switch(n=i.stateNode,i.tag){case 5:r=!1;break A;case 3:n=n.containerInfo,r=!0;break A;case 4:n=n.containerInfo,r=!0;break A}i=i.return}i=!0}if(t.tag===5||t.tag===6){A:for(var o=e,s=t,a=s;;)if(ev(o,a),a.child!==null&&a.tag!==4)a.child.return=a,a=a.child;else{if(a===s)break A;for(;a.sibling===null;){if(a.return===null||a.return===s)break A;a=a.return}a.sibling.return=a.return,a=a.sibling}r?(o=n,s=t.stateNode,o.nodeType===8?o.parentNode.removeChild(s):o.removeChild(s)):n.removeChild(t.stateNode)}else if(t.tag===4){if(t.child!==null){n=t.stateNode.containerInfo,r=!0,t.child.return=t,t=t.child;continue}}else if(ev(e,t),t.child!==null){t.child.return=t,t=t.child;continue}if(t===A)break;for(;t.sibling===null;){if(t.return===null||t.return===A)return;t=t.return,t.tag===4&&(i=!1)}t.sibling.return=t.return,t=t.sibling}}function ju(e,A){switch(A.tag){case 0:case 11:case 14:case 15:case 22:var t=A.updateQueue;if(t=t!==null?t.lastEffect:null,t!==null){var i=t=t.next;do(i.tag&3)===3&&(e=i.destroy,i.destroy=void 0,e!==void 0&&e()),i=i.next;while(i!==t)}return;case 1:return;case 5:if(t=A.stateNode,t!=null){i=A.memoizedProps;var n=e!==null?e.memoizedProps:i;e=A.type;var r=A.updateQueue;if(A.updateQueue=null,r!==null){for(t[tB]=i,e==="input"&&i.type==="radio"&&i.name!=null&&RF(t,i),$f(e,n),A=$f(e,i),n=0;nn&&(n=o),t&=~r}if(t=n,t=xt()-t,t=(120>t?120:480>t?480:1080>t?1080:1920>t?1920:3e3>t?3e3:4320>t?4320:1960*yU(t/1960))-t,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}Et!==5&&(Et=2),a=z0(a,s),c=o;do{switch(c.tag){case 3:r=a,c.flags|=4096,A&=-A,c.lanes|=A;var w=TN(c,r,A);bw(c,w);break A;case 1:r=a;var m=c.type,v=c.stateNode;if(!(c.flags&64)&&(typeof m.getDerivedStateFromError=="function"||v!==null&&typeof v.componentDidCatch=="function"&&(nn===null||!nn.has(v)))){c.flags|=4096,A&=-A,c.lanes|=A;var x=UN(c,r,A);bw(c,x);break A}}c=c.return}while(c!==null)}VN(t)}catch(D){A=D,At===t&&t!==null&&(At=t=t.return);continue}break}while(1)}function YN(){var e=EB.current;return EB.current=BB,e===null?BB:e}function Mg(e,A){var t=YA;YA|=16;var i=YN();Mt===e&&Ft===A||$s(e,A);do try{wU();break}catch(n){ON(e,n)}while(1);if(U0(),YA=t,EB.current=i,At!==null)throw Error(oA(261));return Mt=null,Ft=0,Et}function wU(){for(;At!==null;)KN(At)}function vU(){for(;At!==null&&!oU();)KN(At)}function KN(e){var A=zN(e.alternate,e,Fo);e.memoizedProps=e.pendingProps,A===null?VN(e):At=A,j0.current=null}function VN(e){var A=e;do{var t=A.alternate;if(e=A.return,A.flags&2048){if(t=uU(A),t!==null){t.flags&=2047,At=t;return}e!==null&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}else{if(t=EU(t,A,Fo),t!==null){At=t;return}if(t=A,t.tag!==24&&t.tag!==23||t.memoizedState===null||Fo&1073741824||!(t.mode&4)){for(var i=0,n=t.child;n!==null;)i|=n.lanes|n.childLanes,n=n.sibling;t.childLanes=i}e!==null&&!(e.flags&2048)&&(e.firstEffect===null&&(e.firstEffect=A.firstEffect),A.lastEffect!==null&&(e.lastEffect!==null&&(e.lastEffect.nextEffect=A.firstEffect),e.lastEffect=A.lastEffect),1o&&(s=o,o=w,w=s),s=fw(f,w),r=fw(f,o),s&&r&&(d.rangeCount!==1||d.anchorNode!==s.node||d.anchorOffset!==s.offset||d.focusNode!==r.node||d.focusOffset!==r.offset)&&(Q=Q.createRange(),Q.setStart(s.node,s.offset),d.removeAllRanges(),w>o?(d.addRange(Q),d.extend(r.node,r.offset)):(Q.setEnd(r.node,r.offset),d.addRange(Q)))))),Q=[],d=f;d=d.parentNode;)d.nodeType===1&&Q.push({element:d,left:d.scrollLeft,top:d.scrollTop});for(typeof f.focus=="function"&&f.focus(),f=0;fxt()-Z0?$s(e,0):X0|=t),hi(e,A)}function NU(e,A){var t=e.stateNode;t!==null&&t.delete(A),A=0,A===0&&(A=e.mode,A&2?A&4?(Sn===0&&(Sn=Ra),A=Ds(62914560&~Sn),A===0&&(A=4194304)):A=Ia()===99?1:2:A=1),t=ti(),e=dE(e,A),e!==null&&(cE(e,A,t),hi(e,t))}var zN;zN=function(e,A,t){var i=A.lanes;if(e!==null)if(e.memoizedProps!==A.pendingProps||Kt.current)xi=!0;else if(t&i)xi=!!(e.flags&16384);else{switch(xi=!1,A.tag){case 3:Kw(A),Vu();break;case 5:kw(A);break;case 1:Vt(A.type)&&QC(A);break;case 4:CQ(A,A.stateNode.containerInfo);break;case 10:i=A.memoizedProps.value;var n=A.type._context;Ve(nB,n._currentValue),n._currentValue=i;break;case 13:if(A.memoizedState!==null)return t&A.child.childLanes?Vw(e,A,t):(Ve(Ke,Ke.current&1),A=Fn(e,A,t),A!==null?A.sibling:null);Ve(Ke,Ke.current&1);break;case 19:if(i=(t&A.childLanes)!==0,e.flags&64){if(i)return Zw(e,A,t);A.flags|=64}if(n=A.memoizedState,n!==null&&(n.rendering=null,n.tail=null,n.lastEffect=null),Ve(Ke,Ke.current),i)break;return null;case 23:case 24:return A.lanes=0,Wu(e,A,t)}return Fn(e,A,t)}else xi=!1;switch(A.lanes=0,A.tag){case 2:if(i=A.type,e!==null&&(e.alternate=null,A.alternate=null,A.flags|=2),e=A.pendingProps,n=ga(A,Nt.current),js(A,t),n=Y0(null,A,i,e,n,t),A.flags|=1,typeof n=="object"&&n!==null&&typeof n.render=="function"&&n.$$typeof===void 0){if(A.tag=1,A.memoizedState=null,A.updateQueue=null,Vt(i)){var r=!0;QC(A)}else r=!1;A.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,H0(A);var o=i.getDerivedStateFromProps;typeof o=="function"&&sB(A,i,o,e),n.updater=fE,A.stateNode=n,n._reactInternals=A,cQ(A,i,e,t),A=hQ(null,A,i,!0,r,t)}else A.tag=0,Jt(null,A,n,t),A=A.child;return A;case 16:n=A.elementType;A:{switch(e!==null&&(e.alternate=null,A.alternate=null,A.flags|=2),e=A.pendingProps,r=n._init,n=r(n._payload),A.type=n,r=A.tag=bU(n),e=Di(n,e),r){case 0:A=uQ(null,A,n,e,t);break A;case 1:A=Yw(null,A,n,e,t);break A;case 11:A=Jw(null,A,n,e,t);break A;case 14:A=Ow(null,A,n,Di(n.type,e),i,t);break A}throw Error(oA(306,n,""))}return A;case 0:return i=A.type,n=A.pendingProps,n=A.elementType===i?n:Di(i,n),uQ(e,A,i,n,t);case 1:return i=A.type,n=A.pendingProps,n=A.elementType===i?n:Di(i,n),Yw(e,A,i,n,t);case 3:if(Kw(A),i=A.updateQueue,e===null||i===null)throw Error(oA(282));if(i=A.pendingProps,n=A.memoizedState,n=n!==null?n.element:null,dN(e,A),bI(A,i,null,t),i=A.memoizedState.element,i===n)Vu(),A=Fn(e,A,t);else{if(n=A.stateNode,(r=n.hydrate)&&(lr=zs(A.stateNode.containerInfo.firstChild),xn=A,r=sn=!0),r){if(e=n.mutableSourceEagerHydrationData,e!=null)for(n=0;n"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(XN)}catch(e){console.error(e)}}XN(),pF.exports=yi;var kt=pF.exports;const kg=pi(kt);function FQ(e,A){return FQ=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(i,n){return i.__proto__=n,i},FQ(e,A)}function Wt(e,A){e.prototype=Object.create(A.prototype),e.prototype.constructor=e,FQ(e,A)}var ZN={exports:{}},PU="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",HU=PU,qU=HU;function $N(){}function A2(){}A2.resetWarningCache=$N;var JU=function(){function e(i,n,r,o,s,a){if(a!==qU){var g=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw g.name="Invariant Violation",g}}e.isRequired=e;function A(){return e}var t={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:A,element:e,elementType:e,instanceOf:A,node:e,objectOf:A,oneOf:A,oneOfType:A,shape:A,exact:A,checkPropTypes:A2,resetWarningCache:$N};return t.PropTypes=t,t};ZN.exports=JU();var OU=ZN.exports;const ye=pi(OU);function M(){return M=Object.assign?Object.assign.bind():function(e){for(var A=1;A=0;I--){var l=i[I];l==="."?Ah(i,I):l===".."?(Ah(i,I),g++):g&&(Ah(i,I),g--)}if(!o)for(;g--;g)i.unshift("..");o&&i[0]!==""&&(!i[0]||!fc(i[0]))&&i.unshift("");var c=i.join("/");return s&&c.substr(-1)!=="/"&&(c+="/"),c}var KU=!0,eh="Invariant failed";function As(e,A){if(!e){if(KU)throw new Error(eh);var t=typeof A=="function"?A():A,i=t?eh+": "+t:eh;throw new Error(i)}}function nI(e){return e.charAt(0)==="/"?e:"/"+e}function av(e){return e.charAt(0)==="/"?e.substr(1):e}function VU(e,A){return e.toLowerCase().indexOf(A.toLowerCase())===0&&"/?#".indexOf(e.charAt(A.length))!==-1}function e2(e,A){return VU(e,A)?e.substr(A.length):e}function t2(e){return e.charAt(e.length-1)==="/"?e.slice(0,-1):e}function WU(e){var A=e||"/",t="",i="",n=A.indexOf("#");n!==-1&&(i=A.substr(n),A=A.substr(0,n));var r=A.indexOf("?");return r!==-1&&(t=A.substr(r),A=A.substr(0,r)),{pathname:A,search:t==="?"?"":t,hash:i==="#"?"":i}}function Ot(e){var A=e.pathname,t=e.search,i=e.hash,n=A||"/";return t&&t!=="?"&&(n+=t.charAt(0)==="?"?t:"?"+t),i&&i!=="#"&&(n+=i.charAt(0)==="#"?i:"#"+i),n}function ei(e,A,t,i){var n;typeof e=="string"?(n=WU(e),n.state=A):(n=M({},e),n.pathname===void 0&&(n.pathname=""),n.search?n.search.charAt(0)!=="?"&&(n.search="?"+n.search):n.search="",n.hash?n.hash.charAt(0)!=="#"&&(n.hash="#"+n.hash):n.hash="",A!==void 0&&n.state===void 0&&(n.state=A));try{n.pathname=decodeURI(n.pathname)}catch(r){throw r instanceof URIError?new URIError('Pathname "'+n.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):r}return t&&(n.key=t),i?n.pathname?n.pathname.charAt(0)!=="/"&&(n.pathname=YU(n.pathname,i.pathname)):n.pathname=i.pathname:n.pathname||(n.pathname="/"),n}function np(){var e=null;function A(o){return e=o,function(){e===o&&(e=null)}}function t(o,s,a,g){if(e!=null){var I=typeof e=="function"?e(o,s):e;typeof I=="string"?typeof a=="function"?a(I,g):g(!0):g(I!==!1)}else g(!0)}var i=[];function n(o){var s=!0;function a(){s&&o.apply(void 0,arguments)}return i.push(a),function(){s=!1,i=i.filter(function(g){return g!==a})}}function r(){for(var o=arguments.length,s=new Array(o),a=0;aH?W.splice(H,W.length-H,N):W.push(N),I({action:F,location:N,index:H,entries:W})}})}function u(x,D){var F="REPLACE",N=ei(x,D,l(),v.location);g.confirmTransitionTo(N,F,t,function(k){k&&(v.entries[v.index]=N,I({action:F,location:N}))})}function h(x){var D=Cv(v.index+x,0,v.entries.length-1),F="POP",N=v.entries[D];g.confirmTransitionTo(N,F,t,function(k){k?I({action:F,location:N,index:D}):I()})}function f(){h(-1)}function Q(){h(1)}function d(x){var D=v.index+x;return D>=0&&D=0)&&(t[n]=e[n]);return t}var lp=S3,D3={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},R3={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},x3={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l2={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},cp={};cp[lp.ForwardRef]=x3;cp[lp.Memo]=l2;function Ev(e){return lp.isMemo(e)?l2:cp[e.$$typeof]||D3}var F3=Object.defineProperty,N3=Object.getOwnPropertyNames,uv=Object.getOwnPropertySymbols,L3=Object.getOwnPropertyDescriptor,b3=Object.getPrototypeOf,hv=Object.prototype;function c2(e,A,t){if(typeof A!="string"){if(hv){var i=b3(A);i&&i!==hv&&c2(e,i,t)}var n=N3(A);uv&&(n=n.concat(uv(A)));for(var r=Ev(e),o=Ev(A),s=0;s"u"&&(ca=Ep);function K3(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}var V3=ca(function(e,A){var t=e.innerRef,i=e.navigate,n=e.onClick,r=Vr(e,["innerRef","navigate","onClick"]),o=r.target,s=M({},r,{onClick:function(g){try{n&&n(g)}catch(I){throw g.preventDefault(),I}!g.defaultPrevented&&g.button===0&&(!o||o==="_self")&&!K3(g)&&(g.preventDefault(),i())}});return Ep!==ca?s.ref=A||t:s.ref=t,vA.createElement("a",s)}),W3=ca(function(e,A){var t=e.component,i=t===void 0?V3:t,n=e.replace,r=e.to,o=e.innerRef,s=Vr(e,["component","replace","to","innerRef"]);return vA.createElement(No.Consumer,null,function(a){a||As(!1);var g=a.history,I=LQ(NQ(r,a.location),a.location),l=I?g.createHref(I):"",c=M({},s,{href:l,navigate:function(){var B=NQ(r,a.location),E=Ot(a.location)===Ot(LQ(B)),u=n||E?g.replace:g.push;u(B)}});return Ep!==ca?c.ref=A||o:c.innerRef=o,vA.createElement(i,c)})}),E2=function(A){return A},QB=vA.forwardRef;typeof QB>"u"&&(QB=E2);function z3(){for(var e=arguments.length,A=new Array(e),t=0;t2&&arguments[2]!==void 0?arguments[2]:{clone:!0},i=t.clone?M({},e):e;return rh(e)&&rh(A)&&Object.keys(A).forEach(function(n){n!=="__proto__"&&(rh(A[n])&&n in e?i[n]=Lo(e[n],A[n],t):i[n]=A[n])}),i}function y(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}function Ca(e){for(var A="https://mui.com/production-error/?code="+e,t=1;t1&&arguments[1]!==void 0?arguments[1]:0,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;return Math.min(Math.max(A,e),t)}function oP(e){e=e.substr(1);var A=new RegExp(".{1,".concat(e.length>=6?2:1,"}"),"g"),t=e.match(A);return t&&t[0].length===1&&(t=t.map(function(i){return i+i})),t?"rgb".concat(t.length===4?"a":"","(").concat(t.map(function(i,n){return n<3?parseInt(i,16):Math.round(parseInt(i,16)/255*1e3)/1e3}).join(", "),")"):""}function sP(e){e=bo(e);var A=e,t=A.values,i=t[0],n=t[1]/100,r=t[2]/100,o=n*Math.min(r,1-r),s=function(l){var c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:(l+i/30)%12;return r-o*Math.max(Math.min(c-3,9-c,1),-1)},a="rgb",g=[Math.round(s(0)*255),Math.round(s(8)*255),Math.round(s(4)*255)];return e.type==="hsla"&&(a+="a",g.push(t[3])),_E({type:a,values:g})}function bo(e){if(e.type)return e;if(e.charAt(0)==="#")return bo(oP(e));var A=e.indexOf("("),t=e.substring(0,A);if(["rgb","rgba","hsl","hsla"].indexOf(t)===-1)throw new Error(Ca(3,e));var i=e.substring(A+1,e.length-1).split(",");return i=i.map(function(n){return parseFloat(n)}),{type:t,values:i}}function _E(e){var A=e.type,t=e.values;return A.indexOf("rgb")!==-1?t=t.map(function(i,n){return n<3?parseInt(i,10):i}):A.indexOf("hsl")!==-1&&(t[1]="".concat(t[1],"%"),t[2]="".concat(t[2],"%")),"".concat(A,"(").concat(t.join(", "),")")}function aP(e,A){var t=bQ(e),i=bQ(A);return(Math.max(t,i)+.05)/(Math.min(t,i)+.05)}function bQ(e){e=bo(e);var A=e.type==="hsl"?bo(sP(e)).values:e.values;return A=A.map(function(t){return t/=255,t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}),Number((.2126*A[0]+.7152*A[1]+.0722*A[2]).toFixed(3))}function gP(e){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.15;return bQ(e)>.5?TI(e,A):UI(e,A)}function Bt(e,A){return e=bo(e),A=hp(A),(e.type==="rgb"||e.type==="hsl")&&(e.type+="a"),e.values[3]=A,_E(e)}function TI(e,A){if(e=bo(e),A=hp(A),e.type.indexOf("hsl")!==-1)e.values[2]*=1-A;else if(e.type.indexOf("rgb")!==-1)for(var t=0;t<3;t+=1)e.values[t]*=1-A;return _E(e)}function UI(e,A){if(e=bo(e),A=hp(A),e.type.indexOf("hsl")!==-1)e.values[2]+=(100-e.values[2])*A;else if(e.type.indexOf("rgb")!==-1)for(var t=0;t<3;t+=1)e.values[t]+=(255-e.values[t])*A;return _E(e)}function SA(e,A){if(e==null)return{};var t=Vr(e,A),i,n;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(e,i)&&(t[i]=e[i])}return t}var jn=["xs","sm","md","lg","xl"];function IP(e){var A=e.values,t=A===void 0?{xs:0,sm:600,md:960,lg:1280,xl:1920}:A,i=e.unit,n=i===void 0?"px":i,r=e.step,o=r===void 0?5:r,s=SA(e,["values","unit","step"]);function a(C){var B=typeof t[C]=="number"?t[C]:C;return"@media (min-width:".concat(B).concat(n,")")}function g(C){var B=jn.indexOf(C)+1,E=t[jn[B]];if(B===jn.length)return a("xs");var u=typeof E=="number"&&B>0?E:C;return"@media (max-width:".concat(u-o/100).concat(n,")")}function I(C,B){var E=jn.indexOf(B);return E===jn.length-1?a(C):"@media (min-width:".concat(typeof t[C]=="number"?t[C]:C).concat(n,") and ")+"(max-width:".concat((E!==-1&&typeof t[jn[E+1]]=="number"?t[jn[E+1]]:B)-o/100).concat(n,")")}function l(C){return I(C,C)}function c(C){return t[C]}return M({keys:jn,values:t,up:a,down:g,between:I,only:l,width:c},s)}function lP(e,A,t){var i;return M({gutters:function(){var r=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(` +`)),M({paddingLeft:A(2),paddingRight:A(2)},r,y({},e.up("sm"),M({paddingLeft:A(3),paddingRight:A(3)},r[e.up("sm")])))},toolbar:(i={minHeight:56},y(i,"".concat(e.up("xs")," and (orientation: landscape)"),{minHeight:48}),y(i,e.up("sm"),{minHeight:64}),i)},t)}var cP={black:"#000",white:"#fff"};const dB=cP;var CP={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 PI=CP;var BP={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 oh=BP;var EP={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 sh=EP;var uP={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 ah=uP;var hP={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 gh=hP;var fP={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 Ih=fP;var QP={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 lh=QP;var yv={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:dB.white,default:PI[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}},ch={text:{primary:dB.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:PI[800],default:"#303030"},action:{active:dB.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 mv(e,A,t,i){var n=i.light||i,r=i.dark||i*1.5;e[A]||(e.hasOwnProperty(t)?e[A]=e[t]:A==="light"?e.light=UI(e.main,n):A==="dark"&&(e.dark=TI(e.main,r)))}function dP(e){var A=e.primary,t=A===void 0?{light:oh[300],main:oh[500],dark:oh[700]}:A,i=e.secondary,n=i===void 0?{light:sh.A200,main:sh.A400,dark:sh.A700}:i,r=e.error,o=r===void 0?{light:ah[300],main:ah[500],dark:ah[700]}:r,s=e.warning,a=s===void 0?{light:gh[300],main:gh[500],dark:gh[700]}:s,g=e.info,I=g===void 0?{light:Ih[300],main:Ih[500],dark:Ih[700]}:g,l=e.success,c=l===void 0?{light:lh[300],main:lh[500],dark:lh[700]}:l,C=e.type,B=C===void 0?"light":C,E=e.contrastThreshold,u=E===void 0?3:E,h=e.tonalOffset,f=h===void 0?.2:h,Q=SA(e,["primary","secondary","error","warning","info","success","type","contrastThreshold","tonalOffset"]);function d(x){var D=aP(x,ch.text.primary)>=u?ch.text.primary:yv.text.primary;return D}var w=function(D){var F=arguments.length>1&&arguments[1]!==void 0?arguments[1]:500,N=arguments.length>2&&arguments[2]!==void 0?arguments[2]:300,k=arguments.length>3&&arguments[3]!==void 0?arguments[3]:700;if(D=M({},D),!D.main&&D[F]&&(D.main=D[F]),!D.main)throw new Error(Ca(4,F));if(typeof D.main!="string")throw new Error(Ca(5,JSON.stringify(D.main)));return mv(D,"light",N,f),mv(D,"dark",k,f),D.contrastText||(D.contrastText=d(D.main)),D},m={dark:ch,light:yv},v=Lo(M({common:dB,type:B,primary:w(t),secondary:w(n,"A400","A200","A700"),error:w(o),warning:w(a),info:w(I),success:w(c),grey:PI,contrastThreshold:u,getContrastText:d,augmentColor:w,tonalOffset:f},m[B]),Q);return v}function p2(e){return Math.round(e*1e5)/1e5}function pP(e){return p2(e)}var wv={textTransform:"uppercase"},vv='"Roboto", "Helvetica", "Arial", sans-serif';function yP(e,A){var t=typeof A=="function"?A(e):A,i=t.fontFamily,n=i===void 0?vv:i,r=t.fontSize,o=r===void 0?14:r,s=t.fontWeightLight,a=s===void 0?300:s,g=t.fontWeightRegular,I=g===void 0?400:g,l=t.fontWeightMedium,c=l===void 0?500:l,C=t.fontWeightBold,B=C===void 0?700:C,E=t.htmlFontSize,u=E===void 0?16:E,h=t.allVariants,f=t.pxToRem,Q=SA(t,["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"]),d=o/14,w=f||function(x){return"".concat(x/u*d,"rem")},m=function(D,F,N,k,P){return M({fontFamily:n,fontWeight:D,fontSize:w(F),lineHeight:N},n===vv?{letterSpacing:"".concat(p2(k/F),"em")}:{},P,h)},v={h1:m(a,96,1.167,-1.5),h2:m(a,60,1.2,-.5),h3:m(I,48,1.167,0),h4:m(I,34,1.235,.25),h5:m(I,24,1.334,0),h6:m(c,20,1.6,.15),subtitle1:m(I,16,1.75,.15),subtitle2:m(c,14,1.57,.1),body1:m(I,16,1.5,.15),body2:m(I,14,1.43,.15),button:m(c,14,1.75,.4,wv),caption:m(I,12,1.66,.4),overline:m(I,12,2.66,1,wv)};return Lo(M({htmlFontSize:u,pxToRem:w,round:pP,fontFamily:n,fontSize:o,fontWeightLight:a,fontWeightRegular:I,fontWeightMedium:c,fontWeightBold:B},v),Q,{clone:!1})}var mP=.2,wP=.14,vP=.12;function Ue(){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(mP,")"),"".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(wP,")"),"".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(vP,")")].join(",")}var SP=["none",Ue(0,2,1,-1,0,1,1,0,0,1,3,0),Ue(0,3,1,-2,0,2,2,0,0,1,5,0),Ue(0,3,3,-2,0,3,4,0,0,1,8,0),Ue(0,2,4,-1,0,4,5,0,0,1,10,0),Ue(0,3,5,-1,0,5,8,0,0,1,14,0),Ue(0,3,5,-1,0,6,10,0,0,1,18,0),Ue(0,4,5,-2,0,7,10,1,0,2,16,1),Ue(0,5,5,-3,0,8,10,1,0,3,14,2),Ue(0,5,6,-3,0,9,12,1,0,3,16,2),Ue(0,6,6,-3,0,10,14,1,0,4,18,3),Ue(0,6,7,-4,0,11,15,1,0,4,20,3),Ue(0,7,8,-4,0,12,17,2,0,5,22,4),Ue(0,7,8,-4,0,13,19,2,0,5,24,4),Ue(0,7,9,-4,0,14,21,2,0,5,26,4),Ue(0,8,9,-5,0,15,22,2,0,6,28,5),Ue(0,8,10,-5,0,16,24,2,0,6,30,5),Ue(0,8,11,-5,0,17,26,2,0,6,32,5),Ue(0,9,11,-5,0,18,28,2,0,7,34,6),Ue(0,9,12,-6,0,19,29,2,0,7,36,6),Ue(0,10,13,-6,0,20,31,3,0,8,38,7),Ue(0,10,13,-6,0,21,33,3,0,8,40,7),Ue(0,10,14,-6,0,22,35,3,0,8,42,7),Ue(0,11,14,-7,0,23,36,3,0,9,44,8),Ue(0,11,15,-7,0,24,38,3,0,9,46,8)];const DP=SP;var RP={borderRadius:4};const xP=RP;function GQ(e,A){(A==null||A>e.length)&&(A=e.length);for(var t=0,i=new Array(A);t2)if(xv[e])e=xv[e];else return[e];var A=e.split(""),t=Sl(A,2),i=t[0],n=t[1],r=Z4[i],o=$4[n]||"";return Array.isArray(o)?o.map(function(s){return r+s}):[r+o]}),w2=["m","mt","mr","mb","ml","mx","my","p","pt","pr","pb","pl","px","py","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY"];function v2(e){var A=e.spacing||8;return typeof A=="number"?function(t){return A*t}:Array.isArray(A)?function(t){return A[t]}:typeof A=="function"?A:function(){}}function e8(e,A){if(typeof A=="string"||A==null)return A;var t=Math.abs(A),i=e(t);return A>=0?i:typeof i=="number"?-i:"-".concat(i)}function t8(e,A){return function(t){return e.reduce(function(i,n){return i[n]=e8(A,t),i},{})}}function fp(e){var A=e.theme,t=v2(A);return Object.keys(e).map(function(i){if(w2.indexOf(i)===-1)return null;var n=A8(i),r=t8(n,t),o=e[i];return m2(e,o,r)}).reduce(pB,{})}fp.propTypes={};fp.filterProps=w2;var i8=mA({prop:"fontFamily",themeKey:"typography"}),n8=mA({prop:"fontSize",themeKey:"typography"}),r8=mA({prop:"fontStyle",themeKey:"typography"}),o8=mA({prop:"fontWeight",themeKey:"typography"}),s8=mA({prop:"letterSpacing"}),a8=mA({prop:"lineHeight"}),g8=mA({prop:"textAlign"}),I8=Hn(i8,n8,r8,o8,s8,a8,g8);const l8=I8;function c8(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:8;if(e.mui)return e;var A=v2({spacing:e}),t=function(){for(var n=arguments.length,r=new Array(n),o=0;o0&&arguments[0]!==void 0?arguments[0]:["all"],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=t.duration,n=i===void 0?yB.standard:i,r=t.easing,o=r===void 0?Fv.easeInOut:r,s=t.delay,a=s===void 0?0:s;return SA(t,["duration","easing","delay"]),(Array.isArray(A)?A:[A]).map(function(g){return"".concat(g," ").concat(typeof n=="string"?n:Nv(n)," ").concat(o," ").concat(typeof a=="string"?a:Nv(a))}).join(",")},getAutoHeightDuration:function(A){if(!A)return 0;var t=A/36;return Math.round((4+15*Math.pow(t,.25)+t/5)*10)}};var B8={mobileStepper:1e3,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};const S2=B8;function D2(){for(var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},A=e.breakpoints,t=A===void 0?{}:A,i=e.mixins,n=i===void 0?{}:i,r=e.palette,o=r===void 0?{}:r,s=e.spacing,a=e.typography,g=a===void 0?{}:a,I=SA(e,["breakpoints","mixins","palette","spacing","typography"]),l=dP(o),c=IP(t),C=c8(s),B=Lo({breakpoints:c,direction:"ltr",mixins:lP(c,C,n),overrides:{},palette:l,props:{},shadows:DP,typography:yP(l,g),spacing:C,shape:xP,transitions:C8,zIndex:S2},I),E=arguments.length,u=new Array(E>1?E-1:0),h=1;h0&&arguments[0]!==void 0?arguments[0]:{},A=e.disableGlobal,t=A===void 0?!1:A,i=e.productionPrefix,n=i===void 0?"jss":i,r=e.seed,o=r===void 0?"":r,s=o===""?"":"".concat(o,"-"),a=0,g=function(){return a+=1,a};return function(I,l){var c=l.options.name;if(c&&c.indexOf("Mui")===0&&!l.options.link&&!t){if(u8.indexOf(I.key)!==-1)return"Mui-".concat(I.key);var C="".concat(s).concat(c,"-").concat(I.key);return!l.options.theme[R2]||o!==""?C:"".concat(C,"-").concat(g())}return"".concat(s).concat(n).concat(g())}}function x2(e){var A=e.theme,t=e.name,i=e.props;if(!A||!A.props||!A.props[t])return i;var n=A.props[t],r;for(r in n)i[r]===void 0&&(i[r]=n[r]);return i}var Lv=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Dl=(typeof window>"u"?"undefined":Lv(window))==="object"&&(typeof document>"u"?"undefined":Lv(document))==="object"&&document.nodeType===9;function bv(e,A){for(var t=0;t<+~=|^:(),"'`\s])/g,_v=typeof CSS<"u"&&CSS.escape,pp=function(e){return _v?_v(e):e.replace(Q8,"\\$1")},F2=function(){function e(t,i,n){this.type="style",this.isProcessed=!1;var r=n.sheet,o=n.Renderer;this.key=t,this.options=n,this.style=i,r?this.renderer=r.renderer:o&&(this.renderer=new o)}var A=e.prototype;return A.prop=function(i,n,r){if(n===void 0)return this.style[i];var o=r?r.force:!1;if(!o&&this.style[i]===n)return this;var s=n;(!r||r.process!==!1)&&(s=this.options.jss.plugins.onChangeValue(n,i,this));var a=s==null||s===!1,g=i in this.style;if(a&&!g&&!o)return this;var I=a&&g;if(I?delete this.style[i]:this.style[i]=s,this.renderable&&this.renderer)return I?this.renderer.removeProperty(this.renderable,i):this.renderer.setProperty(this.renderable,i,s),this;var l=this.options.sheet;return l&&l.attached,this},e}(),kQ=function(e){Wt(A,e);function A(i,n,r){var o;o=e.call(this,i,n,r)||this;var s=r.selector,a=r.scoped,g=r.sheet,I=r.generateId;return s?o.selectorText=s:a!==!1&&(o.id=I(_Q(_Q(o)),g),o.selectorText="."+pp(o.id)),o}var t=A.prototype;return t.applyTo=function(n){var r=this.renderer;if(r){var o=this.toJSON();for(var s in o)r.setProperty(n,s,o[s])}return this},t.toJSON=function(){var n={};for(var r in this.style){var o=this.style[r];typeof o!="object"?n[r]=o:Array.isArray(o)&&(n[r]=vo(o))}return n},t.toString=function(n){var r=this.options.sheet,o=r?r.options.link:!1,s=o?M({},n,{allowEmpty:!0}):n;return HI(this.selectorText,this.style,s)},Qp(A,[{key:"selector",set:function(n){if(n!==this.selectorText){this.selectorText=n;var r=this.renderer,o=this.renderable;if(!(!o||!r)){var s=r.setSelector(o,n);s||r.replaceRule(o,this)}}},get:function(){return this.selectorText}}]),A}(F2),d8={onCreateRule:function(A,t,i){return A[0]==="@"||i.parent&&i.parent.type==="keyframes"?null:new kQ(A,t,i)}},Ch={indent:1,children:!0},p8=/@([\w-]+)/,y8=function(){function e(t,i,n){this.type="conditional",this.isProcessed=!1,this.key=t;var r=t.match(p8);this.at=r?r[1]:"unknown",this.query=n.name||"@"+this.at,this.options=n,this.rules=new ME(M({},n,{parent:this}));for(var o in i)this.rules.add(o,i[o]);this.rules.process()}var A=e.prototype;return A.getRule=function(i){return this.rules.get(i)},A.indexOf=function(i){return this.rules.indexOf(i)},A.addRule=function(i,n,r){var o=this.rules.add(i,n,r);return o?(this.options.jss.plugins.onProcessRule(o),o):null},A.replaceRule=function(i,n,r){var o=this.rules.replace(i,n,r);return o&&this.options.jss.plugins.onProcessRule(o),o},A.toString=function(i){i===void 0&&(i=Ch);var n=La(i),r=n.linebreak;if(i.indent==null&&(i.indent=Ch.indent),i.children==null&&(i.children=Ch.children),i.children===!1)return this.query+" {}";var o=this.rules.toString(i);return o?this.query+" {"+r+o+r+"}":""},e}(),m8=/@media|@supports\s+/,w8={onCreateRule:function(A,t,i){return m8.test(A)?new y8(A,t,i):null}},Bh={indent:1,children:!0},v8=/@keyframes\s+([\w-]+)/,TQ=function(){function e(t,i,n){this.type="keyframes",this.at="@keyframes",this.isProcessed=!1;var r=t.match(v8);r&&r[1]?this.name=r[1]:this.name="noname",this.key=this.type+"-"+this.name,this.options=n;var o=n.scoped,s=n.sheet,a=n.generateId;this.id=o===!1?this.name:pp(a(this,s)),this.rules=new ME(M({},n,{parent:this}));for(var g in i)this.rules.add(g,i[g],M({},n,{parent:this}));this.rules.process()}var A=e.prototype;return A.toString=function(i){i===void 0&&(i=Bh);var n=La(i),r=n.linebreak;if(i.indent==null&&(i.indent=Bh.indent),i.children==null&&(i.children=Bh.children),i.children===!1)return this.at+" "+this.id+" {}";var o=this.rules.toString(i);return o&&(o=""+r+o+r),this.at+" "+this.id+" {"+o+"}"},e}(),S8=/@keyframes\s+/,D8=/\$([\w-]+)/g,UQ=function(A,t){return typeof A=="string"?A.replace(D8,function(i,n){return n in t?t[n]:i}):A},Mv=function(A,t,i){var n=A[t],r=UQ(n,i);r!==n&&(A[t]=r)},R8={onCreateRule:function(A,t,i){return typeof A=="string"&&S8.test(A)?new TQ(A,t,i):null},onProcessStyle:function(A,t,i){return t.type!=="style"||!i||("animation-name"in A&&Mv(A,"animation-name",i.keyframes),"animation"in A&&Mv(A,"animation",i.keyframes)),A},onChangeValue:function(A,t,i){var n=i.options.sheet;if(!n)return A;switch(t){case"animation":return UQ(A,n.keyframes);case"animation-name":return UQ(A,n.keyframes);default:return A}}},x8=function(e){Wt(A,e);function A(){return e.apply(this,arguments)||this}var t=A.prototype;return t.toString=function(n){var r=this.options.sheet,o=r?r.options.link:!1,s=o?M({},n,{allowEmpty:!0}):n;return HI(this.key,this.style,s)},A}(F2),F8={onCreateRule:function(A,t,i){return i.parent&&i.parent.type==="keyframes"?new x8(A,t,i):null}},N8=function(){function e(t,i,n){this.type="font-face",this.at="@font-face",this.isProcessed=!1,this.key=t,this.style=i,this.options=n}var A=e.prototype;return A.toString=function(i){var n=La(i),r=n.linebreak;if(Array.isArray(this.style)){for(var o="",s=0;s=this.index){n.push(i);return}for(var o=0;or){n.splice(o,0,i);return}}},A.reset=function(){this.registry=[]},A.remove=function(i){var n=this.registry.indexOf(i);this.registry.splice(n,1)},A.toString=function(i){for(var n=i===void 0?{}:i,r=n.attached,o=Vr(n,["attached"]),s=La(o),a=s.linebreak,g="",I=0;I-1?n.substr(0,r-1):n;A.style.setProperty(t,o,r>-1?"important":"")}}catch{return!1}return!0},O8=function(A,t){try{A.attributeStyleMap?A.attributeStyleMap.delete(t):A.style.removeProperty(t)}catch{}},Y8=function(A,t){return A.selectorText=t,A.selectorText===t},b2=L2(function(){return document.querySelector("head")});function K8(e,A){for(var t=0;tA.index&&i.options.insertionPoint===A.insertionPoint)return i}return null}function V8(e,A){for(var t=e.length-1;t>=0;t--){var i=e[t];if(i.attached&&i.options.insertionPoint===A.insertionPoint)return i}return null}function W8(e){for(var A=b2(),t=0;t0){var t=K8(A,e);if(t&&t.renderer)return{parent:t.renderer.element.parentNode,node:t.renderer.element};if(t=V8(A,e),t&&t.renderer)return{parent:t.renderer.element.parentNode,node:t.renderer.element.nextSibling}}var i=e.insertionPoint;if(i&&typeof i=="string"){var n=W8(i);if(n)return{parent:n.parentNode,node:n.nextSibling}}return!1}function j8(e,A){var t=A.insertionPoint,i=z8(A);if(i!==!1&&i.parent){i.parent.insertBefore(e,i.node);return}if(t&&typeof t.nodeType=="number"){var n=t,r=n.parentNode;r&&r.insertBefore(e,n.nextSibling);return}b2().appendChild(e)}var X8=L2(function(){var e=document.querySelector('meta[property="csp-nonce"]');return e?e.getAttribute("content"):null}),Hv=function(A,t,i){try{"insertRule"in A?A.insertRule(t,i):"appendRule"in A&&A.appendRule(t)}catch{return!1}return A.cssRules[i]},qv=function(A,t){var i=A.cssRules.length;return t===void 0||t>i?i:t},Z8=function(){var A=document.createElement("style");return A.textContent=` +`,A},$8=function(){function e(t){this.getPropertyValue=q8,this.setProperty=J8,this.removeProperty=O8,this.setSelector=Y8,this.hasInsertedRules=!1,this.cssRules=[],t&&rI.add(t),this.sheet=t;var i=this.sheet?this.sheet.options:{},n=i.media,r=i.meta,o=i.element;this.element=o||Z8(),this.element.setAttribute("data-jss",""),n&&this.element.setAttribute("media",n),r&&this.element.setAttribute("data-meta",r);var s=X8();s&&this.element.setAttribute("nonce",s)}var A=e.prototype;return A.attach=function(){if(!(this.element.parentNode||!this.sheet)){j8(this.element,this.sheet.options);var i=!!(this.sheet&&this.sheet.deployed);this.hasInsertedRules&&i&&(this.hasInsertedRules=!1,this.deploy())}},A.detach=function(){if(this.sheet){var i=this.element.parentNode;i&&i.removeChild(this.element),this.sheet.options.link&&(this.cssRules=[],this.element.textContent=` +`)}},A.deploy=function(){var i=this.sheet;if(i){if(i.options.link){this.insertRules(i.rules);return}this.element.textContent=` +`+i.toString()+` +`}},A.insertRules=function(i,n){for(var r=0;r-1){var r=q2[A];if(!Array.isArray(r))return zA.js+_r(r)in t?zA.css+r:!1;if(!n)return!1;for(var o=0;oi?1:-1:t.length-i.length};return{onProcessStyle:function(t,i){if(i.type!=="style")return t;for(var n={},r=Object.keys(t).sort(e),o=0;o"u"?null:zH(),jH()]}}function wp(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},A=e.baseClasses,t=e.newClasses;if(e.Component,!t)return A;var i=M({},A);return Object.keys(t).forEach(function(n){t[n]&&(i[n]="".concat(A[n]," ").concat(t[n]))}),i}var ZH={set:function(A,t,i,n){var r=A.get(t);r||(r=new Map,A.set(t,r)),r.set(i,n)},get:function(A,t,i){var n=A.get(t);return n?n.get(i):void 0},delete:function(A,t,i){var n=A.get(t);n.delete(i)}};const ks=ZH;var $H=vA.createContext(null);const O2=$H;function ba(){var e=vA.useContext(O2);return e}var Aq=G2(XH()),eq=h8(),tq=new Map,iq={disableGeneration:!1,generateClassName:eq,jss:Aq,sheetsCache:null,sheetsManager:tq,sheetsRegistry:null},nq=vA.createContext(iq),Kv=-1e9;function rq(){return Kv+=1,Kv}var oq={};const sq=oq;function aq(e){var A=typeof e=="function";return{create:function(i,n){var r;try{r=A?e(i):e}catch(a){throw a}if(!n||!i.overrides||!i.overrides[n])return r;var o=i.overrides[n],s=M({},r);return Object.keys(o).forEach(function(a){s[a]=Lo(s[a],o[a])}),s},options:{}}}function gq(e,A,t){var i=e.state,n=e.stylesOptions;if(n.disableGeneration)return A||{};i.cacheClasses||(i.cacheClasses={value:null,lastProp:null,lastJSS:{}});var r=!1;return i.classes!==i.cacheClasses.lastJSS&&(i.cacheClasses.lastJSS=i.classes,r=!0),A!==i.cacheClasses.lastProp&&(i.cacheClasses.lastProp=A,r=!0),r&&(i.cacheClasses.value=wp({baseClasses:i.cacheClasses.lastJSS,newClasses:A,Component:t})),i.cacheClasses.value}function Iq(e,A){var t=e.state,i=e.theme,n=e.stylesOptions,r=e.stylesCreator,o=e.name;if(!n.disableGeneration){var s=ks.get(n.sheetsManager,r,i);s||(s={refs:0,staticSheet:null,dynamicStyles:null},ks.set(n.sheetsManager,r,i,s));var a=M({},r.options,n,{theme:i,flip:typeof n.flip=="boolean"?n.flip:i.direction==="rtl"});a.generateId=a.serverGenerateClassName||a.generateClassName;var g=n.sheetsRegistry;if(s.refs===0){var I;n.sheetsCache&&(I=ks.get(n.sheetsCache,r,i));var l=r.create(i,o);I||(I=n.jss.createStyleSheet(l,M({link:!1},a)),I.attach(),n.sheetsCache&&ks.set(n.sheetsCache,r,i,I)),g&&g.add(I),s.staticSheet=I,s.dynamicStyles=_2(l)}if(s.dynamicStyles){var c=n.jss.createStyleSheet(s.dynamicStyles,M({link:!0},a));c.update(A),c.attach(),t.dynamicSheet=c,t.classes=wp({baseClasses:s.staticSheet.classes,newClasses:c.classes}),g&&g.add(c)}else t.classes=s.staticSheet.classes;s.refs+=1}}function lq(e,A){var t=e.state;t.dynamicSheet&&t.dynamicSheet.update(A)}function cq(e){var A=e.state,t=e.theme,i=e.stylesOptions,n=e.stylesCreator;if(!i.disableGeneration){var r=ks.get(i.sheetsManager,n,t);r.refs-=1;var o=i.sheetsRegistry;r.refs===0&&(ks.delete(i.sheetsManager,n,t),i.jss.removeStyleSheet(r.staticSheet),o&&o.remove(r.staticSheet)),A.dynamicSheet&&(i.jss.removeStyleSheet(A.dynamicSheet),o&&o.remove(A.dynamicSheet))}}function Cq(e,A){var t=vA.useRef([]),i,n=vA.useMemo(function(){return{}},A);t.current!==n&&(t.current=n,i=e()),vA.useEffect(function(){return function(){i&&i()}},[n])}function vp(e){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=A.name,i=A.classNamePrefix,n=A.Component,r=A.defaultTheme,o=r===void 0?sq:r,s=SA(A,["name","classNamePrefix","Component","defaultTheme"]),a=aq(e),g=t||i||"makeStyles";a.options={index:rq(),name:t,meta:g,classNamePrefix:g};var I=function(){var c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},C=ba()||o,B=M({},vA.useContext(nq),s),E=vA.useRef(),u=vA.useRef();Cq(function(){var f={name:t,state:{},stylesCreator:a,stylesOptions:B,theme:C};return Iq(f,c),u.current=!1,E.current=f,function(){cq(f)}},[C,a]),vA.useEffect(function(){u.current&&lq(E.current,c),u.current=!0});var h=gq(E.current,c.classes,n);return h};return I}function Bq(e,A){if(!(e instanceof A))throw new TypeError("Cannot call a class as a function")}function Y2(e){var A,t,i="";if(typeof e=="string"||typeof e=="number")i+=e;else if(typeof e=="object")if(Array.isArray(e))for(A=0;A1&&arguments[1]!==void 0?arguments[1]:{},r=n.name,o=SA(n,["name"]),s=r,a=typeof i=="function"?function(c){return{root:function(B){return i(M({theme:c},B))}}}:{root:i},g=vp(a,M({Component:e,name:r||e.displayName,classNamePrefix:s},o)),I;i.filterProps&&(I=i.filterProps,delete i.filterProps),i.propTypes&&(i.propTypes,delete i.propTypes);var l=vA.forwardRef(function(C,B){var E=C.children,u=C.className,h=C.clone,f=C.component,Q=SA(C,["children","className","clone","component"]),d=g(C),w=yA(d.root,u),m=Q;if(I&&(m=Eq(m,I)),h)return vA.cloneElement(E,M({className:yA(E.props.className,w)},m));if(typeof E=="function")return E(M({className:w},m));var v=f||e;return vA.createElement(v,M({ref:B,className:w},m),E)});return C2(l,e),l};return A}function hq(e,A){if(typeof A=="function"){var t=A(e);return t}return M({},e,A)}function Vv(e){var A=e.children,t=e.theme,i=ba(),n=vA.useMemo(function(){var r=i===null?t:hq(i,t);return r!=null&&(r[R2]=i!==null),r},[t,i]);return vA.createElement(O2.Provider,{value:n},A)}var fq=function(A){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return function(i){var n=t.defaultTheme,r=t.withTheme,o=r===void 0?!1:r,s=t.name,a=SA(t,["defaultTheme","withTheme","name"]),g=s,I=vp(A,M({defaultTheme:n,Component:i,name:s||i.displayName,classNamePrefix:g},a)),l=vA.forwardRef(function(C,B){C.classes;var E=C.innerRef,u=SA(C,["classes","innerRef"]),h=I(M({},i.defaultProps,C)),f,Q=u;return(typeof s=="string"||o)&&(f=ba()||n,s&&(Q=x2({theme:f,name:s,props:u})),o&&!Q.theme&&(Q.theme=f)),vA.createElement(i,M({ref:E||B,classes:h},Q))});return C2(l,i),l}};const Qq=fq;function K2(e){return e}var dq=D2();const kE=dq;function es(e){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return vp(e,M({defaultTheme:kE},A))}var pq=function(A){var t=uq(A);return function(i,n){return t(i,M({defaultTheme:kE},n))}};const yq=pq;function Rl(){var e=ba()||kE;return e}function Ae(e,A){return Qq(e,M({defaultTheme:kE},A))}const mq="https://viv-demo.storage.googleapis.com",wq=[{path:"Vanderbilt-Spraggins-Kidney-MxIF.ome.tif",description:"OME-TIFF Kidney mxIF"},{path:"12448_G1HR_Mesh003.ome.tif",description:"OME-TIFF Covid-19 Primary Gut Epithelial Stem Cells"},{path:"LuCa-7color_Scan1/",description:"Perkin Elmer LuCa-7color_Scan1.qptiff"},{path:"LuCa-7color_3x3component_data.ome.tif",description:"Perkin Elmer LuCa-7color_3x3component_data.qptiff"},{path:"2018-12-18_ASY_H2B_bud_05_3D_8_angles.ome.tif",description:"idr0077"},{path:"brain.pyramid.ome.tif",description:"idr0085"},{path:"idr0106.pyramid.ome.tif",description:"idr0106"}],Wv=wq.map(e=>({urlOrFile:`${mq}/${e.path}`,description:e.description}));function vq(e){let A;const t=new Set,i=(g,I)=>{const l=typeof g=="function"?g(A):g;if(l!==A){const c=A;A=I?l:Object.assign({},A,l),t.forEach(C=>C(A,c))}},n=()=>A,r=(g,I=n,l=Object.is)=>{console.warn("[DEPRECATED] Please use `subscribeWithSelector` middleware");let c=I(A);function C(){const B=I(A);if(!l(c,B)){const E=c;g(c=B,E)}}return t.add(C),()=>t.delete(C)},a={setState:i,getState:n,subscribe:(g,I,l)=>I||l?r(g,I,l):(t.add(g),()=>t.delete(g)),destroy:()=>t.clear()};return A=e(i,n,a),a}const Sq=typeof window>"u"||!window.navigator||/ServerSideRendering|^Deno\//.test(window.navigator.userAgent),zv=Sq?p.useEffect:p.useLayoutEffect;function Sp(e){const A=typeof e=="function"?vq(e):e,t=(i=A.getState,n=Object.is)=>{const[,r]=p.useReducer(u=>u+1,0),o=A.getState(),s=p.useRef(o),a=p.useRef(i),g=p.useRef(n),I=p.useRef(!1),l=p.useRef();l.current===void 0&&(l.current=i(o));let c,C=!1;(s.current!==o||a.current!==i||g.current!==n||I.current)&&(c=i(o),C=!n(l.current,c)),zv(()=>{C&&(l.current=c),s.current=o,a.current=i,g.current=n,I.current=!1});const B=p.useRef(o);zv(()=>{const u=()=>{try{const f=A.getState(),Q=a.current(f);g.current(l.current,Q)||(s.current=f,l.current=Q,r())}catch{I.current=!0,r()}},h=A.subscribe(u);return A.getState()!==B.current&&u(),h},[]);const E=C?c:l.current;return p.useDebugValue(E),E};return Object.assign(t,A),t[Symbol.iterator]=function(){console.warn("[useStore, api] = create() is deprecated and will be removed in v4");const i=[t,A];return{next(){const n=i.length<=0;return{value:i.shift(),done:n}}}},t}function wB(e,A){if(!e)throw new Error(A||"loader assertion failed.")}const Dp=!!(typeof process!="object"||String(process)!=="[object process]"||process.browser),jv=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version);jv&&parseFloat(jv[1]);const Dq="3.2.7";function Mn(e,A){if(!e)throw new Error(A||"loaders.gl assertion failed.")}const YQ=typeof process!="object"||String(process)!=="[object process]"||process.browser,Rq=typeof window<"u"&&typeof window.orientation<"u",Xv=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version);Xv&&parseFloat(Xv[1]);class xq{constructor(A,t){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=A,this.workerThread=t,this.result=new Promise((i,n)=>{this._resolve=i,this._reject=n})}postMessage(A,t){this.workerThread.postMessage({source:"loaders.gl",type:A,payload:t})}done(A){Mn(this.isRunning),this.isRunning=!1,this._resolve(A)}error(A){Mn(this.isRunning),this.isRunning=!1,this._reject(A)}}let mh=class{};const wh=new Map;function Fq(e){Mn(e.source&&!e.url||!e.source&&e.url);let A=wh.get(e.source||e.url);return A||(e.url&&(A=Nq(e.url),wh.set(e.url,A)),e.source&&(A=V2(e.source),wh.set(e.source,A))),Mn(A),A}function Nq(e){if(!e.startsWith("http"))return e;const A=Lq(e);return V2(A)}function V2(e){const A=new Blob([e],{type:"application/javascript"});return URL.createObjectURL(A)}function Lq(e){return`try { + importScripts('`.concat(e,`'); +} catch (error) { + console.error(error); + throw error; +}`)}function W2(e,A=!0,t){const i=t||new Set;if(e){if(Zv(e))i.add(e);else if(Zv(e.buffer))i.add(e.buffer);else if(!ArrayBuffer.isView(e)){if(A&&typeof e=="object")for(const n in e)W2(e[n],A,i)}}return t===void 0?Array.from(i):[]}function Zv(e){return e?e instanceof ArrayBuffer||typeof MessagePort<"u"&&e instanceof MessagePort||typeof ImageBitmap<"u"&&e instanceof ImageBitmap||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas:!1}const vh=()=>{};class KQ{static isSupported(){return typeof Worker<"u"&&YQ||typeof mh!==void 0}constructor(A){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:t,source:i,url:n}=A;Mn(i||n),this.name=t,this.source=i,this.url=n,this.onMessage=vh,this.onError=r=>console.log(r),this.worker=YQ?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=vh,this.onError=vh,this.worker.terminate(),this.terminated=!0}get isRunning(){return!!this.onMessage}postMessage(A,t){t=t||W2(A),this.worker.postMessage(A,t)}_getErrorFromErrorEvent(A){let t="Failed to load ";return t+="worker ".concat(this.name," from ").concat(this.url,". "),A.message&&(t+="".concat(A.message," in ")),A.lineno&&(t+=":".concat(A.lineno,":").concat(A.colno)),new Error(t)}_createBrowserWorker(){this._loadableURL=Fq({source:this.source,url:this.url});const A=new Worker(this._loadableURL,{name:this.name});return A.onmessage=t=>{t.data?this.onMessage(t.data):this.onError(new Error("No data received"))},A.onerror=t=>{this.onError(this._getErrorFromErrorEvent(t)),this.terminated=!0},A.onmessageerror=t=>console.error(t),A}_createNodeWorker(){let A;if(this.url){const i=this.url.includes(":/")||this.url.startsWith("/")?this.url:"./".concat(this.url);A=new mh(i,{eval:!1})}else if(this.source)A=new mh(this.source,{eval:!0});else throw new Error("no worker");return A.on("message",t=>{this.onMessage(t)}),A.on("error",t=>{this.onError(t)}),A.on("exit",t=>{}),A}}class bq{static isSupported(){return KQ.isSupported()}constructor(A){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=A.source,this.url=A.url,this.setProps(A)}destroy(){this.idleQueue.forEach(A=>A.destroy()),this.isDestroyed=!0}setProps(A){this.props={...this.props,...A},A.name!==void 0&&(this.name=A.name),A.maxConcurrency!==void 0&&(this.maxConcurrency=A.maxConcurrency),A.maxMobileConcurrency!==void 0&&(this.maxMobileConcurrency=A.maxMobileConcurrency),A.reuseWorkers!==void 0&&(this.reuseWorkers=A.reuseWorkers),A.onDebug!==void 0&&(this.onDebug=A.onDebug)}async startJob(A,t=(n,r,o)=>n.done(o),i=(n,r)=>n.error(r)){const n=new Promise(r=>(this.jobQueue.push({name:A,onMessage:t,onError:i,onStart:r}),this));return this._startQueuedJob(),await n}async _startQueuedJob(){if(!this.jobQueue.length)return;const A=this._getAvailableWorker();if(!A)return;const t=this.jobQueue.shift();if(t){this.onDebug({message:"Starting job",name:t.name,workerThread:A,backlog:this.jobQueue.length});const i=new xq(t.name,A);A.onMessage=n=>t.onMessage(i,n.type,n.payload),A.onError=n=>t.onError(i,n),t.onStart(i);try{await i.result}finally{this.returnWorkerToQueue(A)}}}returnWorkerToQueue(A){this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(A.destroy(),this.count--):this.idleQueue.push(A),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count{}};class Dn{static isSupported(){return KQ.isSupported()}static getWorkerFarm(A={}){return Dn._workerFarm=Dn._workerFarm||new Dn({}),Dn._workerFarm.setProps(A),Dn._workerFarm}constructor(A){y(this,"props",void 0),y(this,"workerPools",new Map),this.props={...Gq},this.setProps(A),this.workerPools=new Map}destroy(){for(const A of this.workerPools.values())A.destroy();this.workerPools=new Map}setProps(A){this.props={...this.props,...A};for(const t of this.workerPools.values())t.setProps(this._getWorkerPoolProps())}getWorkerPool(A){const{name:t,source:i,url:n}=A;let r=this.workerPools.get(t);return r||(r=new bq({name:t,source:i,url:n}),r.setProps(this._getWorkerPoolProps()),this.workerPools.set(t,r)),r}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}}y(Dn,"_workerFarm",void 0);const _q="latest";function Mq(e,A={}){const t=A[e.id]||{},i="".concat(e.id,"-worker.js");let n=t.workerUrl;if(!n&&e.id==="compression"&&(n=A.workerUrl),A._workerType==="test"&&(n="modules/".concat(e.module,"/dist/").concat(i)),!n){let r=e.version;r==="latest"&&(r=_q);const o=r?"@".concat(r):"";n="https://unpkg.com/@loaders.gl/".concat(e.module).concat(o,"/dist/").concat(i)}return Mn(n),n}function kq(e,A=Dq){Mn(e,"no worker provided");const t=e.version;return!(!A||!t)}const ea={};function Tq(e,A){return!Dn.isSupported()||!YQ&&!(A!=null&&A._nodeWorkers)?!1:e.worker&&(A==null?void 0:A.worker)}async function Uq(e,A,t,i,n){const r=e.id,o=Mq(e,t),a=Dn.getWorkerFarm(t).getWorkerPool({name:r,url:o});t=JSON.parse(JSON.stringify(t)),i=JSON.parse(JSON.stringify(i||{}));const g=await a.startJob("process-on-worker",Pq.bind(null,n));return g.postMessage("process",{input:A,options:t,context:i}),await(await g.result).result}async function Pq(e,A,t,i){switch(t){case"done":A.done(i);break;case"error":A.error(new Error(i.error));break;case"process":const{id:n,input:r,options:o}=i;try{const s=await e(r,o);A.postMessage("done",{id:n,result:s})}catch(s){const a=s instanceof Error?s.message:"unknown error";A.postMessage("error",{id:n,error:a})}break;default:console.warn("parse-with-worker unknown message ".concat(t))}}function z2(e){return e&&typeof e=="object"&&e.isBuffer}function Hq(e){return z2(e)?new Uint8Array(e.buffer,e.byteOffset,e.length).slice().buffer:e}function j2(e){if(z2(e))return Hq(e);if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if(typeof e=="string"){const A=e;return new TextEncoder().encode(A).buffer}if(e&&typeof e=="object"&&e._toArrayBuffer)return e._toArrayBuffer();throw new Error("toArrayBuffer")}function qq(e,A,t){if(t=t||e.byteLength,e.byteLengthr instanceof ArrayBuffer?new Uint8Array(r):r),t=A.reduce((r,o)=>r+o.byteLength,0),i=new Uint8Array(t);let n=0;for(const r of A)i.set(r,n),n+=r.byteLength;return i.buffer}async function Oq(e){const A=[];for await(const t of e)A.push(t);return Jq(...A)}function $v(){let e;if(typeof window<"u"&&window.performance)e=window.performance.now();else if(typeof process<"u"&&process.hrtime){const A=process.hrtime();e=A[0]*1e3+A[1]/1e6}else e=Date.now();return e}class AS{constructor(A,t){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=A,this.type=t,this.reset()}setSampleSize(A){return this.sampleSize=A,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(A){return this._count+=A,this._samples++,this._checkSampling(),this}subtractCount(A){return this._count-=A,this._samples++,this._checkSampling(),this}addTime(A){return this._time+=A,this.lastTiming=A,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=$v(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime($v()-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 TE{constructor(A){y(this,"id",void 0),y(this,"stats",{}),this.id=A.id,this.stats={},this._initializeStats(A.stats),Object.seal(this)}get(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"count";return this._getOrCreate({name:A,type:t})}get size(){return Object.keys(this.stats).length}reset(){for(const A in this.stats)this.stats[A].reset();return this}forEach(A){for(const t in this.stats)A(this.stats[t])}getTable(){const A={};return this.forEach(t=>{A[t.name]={time:t.time||0,count:t.count||0,average:t.getAverageTime()||0,hz:t.getHz()||0}}),A}_initializeStats(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).forEach(t=>this._getOrCreate(t))}_getOrCreate(A){if(!A||!A.name)return null;const{name:t,type:i}=A;return this.stats[t]||(A instanceof AS?this.stats[t]=A:this.stats[t]=new AS(t,i)),this.stats[t]}}const Yq="Queued Requests",Kq="Active Requests",Vq="Cancelled Requests",Wq="Queued Requests Ever",zq="Active Requests Ever",jq={id:"request-scheduler",throttleRequests:!0,maxRequests:6};class Xq{constructor(A={}){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={...jq,...A},this.stats=new TE({id:this.props.id}),this.stats.get(Yq),this.stats.get(Kq),this.stats.get(Vq),this.stats.get(Wq),this.stats.get(zq)}scheduleRequest(A,t=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(A))return this.requestMap.get(A);const i={handle:A,priority:0,getPriority:t},n=new Promise(r=>(i.resolve=r,i));return this.requestQueue.push(i),this.requestMap.set(A,n),this._issueNewRequests(),n}_issueRequest(A){const{handle:t,resolve:i}=A;let n=!1;const r=()=>{n||(n=!0,this.requestMap.delete(t),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,i?i({done:r}):Promise.resolve({done:r})}_issueNewRequests(){this.deferredUpdate||(this.deferredUpdate=setTimeout(()=>this._issueNewRequestsAsync(),0))}_issueNewRequestsAsync(){this.deferredUpdate=null;const A=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(A!==0){this._updateAllRequests();for(let t=0;tt.priority-i.priority)}_updateRequest(A){return A.priority=A.getPriority(A.handle),A.priority<0?(A.resolve(null),!1):!0}}let Zq="";const eS={};function $q(e){for(const A in eS)if(e.startsWith(A)){const t=eS[A];e=e.replace(A,t)}return!e.startsWith("http://")&&!e.startsWith("https://")&&(e="".concat(Zq).concat(e)),e}function AJ(e){const A=e&&e.lastIndexOf("/");return A>=0?e.substr(A+1):""}const eJ=e=>typeof e=="boolean",sI=e=>typeof e=="function",xl=e=>e!==null&&typeof e=="object",tS=e=>xl(e)&&e.constructor==={}.constructor,tJ=e=>e&&typeof e[Symbol.iterator]=="function",iJ=e=>e&&typeof e[Symbol.asyncIterator]=="function",Ga=e=>typeof Response<"u"&&e instanceof Response||e&&e.arrayBuffer&&e.text&&e.json,_a=e=>typeof Blob<"u"&&e instanceof Blob,nJ=e=>e&&typeof e=="object"&&e.isBuffer,rJ=e=>typeof ReadableStream<"u"&&e instanceof ReadableStream||xl(e)&&sI(e.tee)&&sI(e.cancel)&&sI(e.getReader),oJ=e=>xl(e)&&sI(e.read)&&sI(e.pipe)&&eJ(e.readable),X2=e=>rJ(e)||oJ(e),sJ=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,aJ=/^([-\w.]+\/[-\w.+]+)/;function gJ(e){const A=aJ.exec(e);return A?A[1]:e}function iS(e){const A=sJ.exec(e);return A?A[1]:""}const IJ=/\?.*/;function UE(e){if(Ga(e)){const A=Sh(e.url||""),t=e.headers.get("content-type")||"";return{url:A,type:gJ(t)||iS(A)}}return _a(e)?{url:Sh(e.name||""),type:e.type||""}:typeof e=="string"?{url:Sh(e),type:iS(e)}:{url:"",type:""}}function lJ(e){return Ga(e)?e.headers["content-length"]||-1:_a(e)?e.size:typeof e=="string"?e.length:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:-1}function Sh(e){return e.replace(IJ,"")}async function Z2(e){if(Ga(e))return e;const A={},t=lJ(e);t>=0&&(A["content-length"]=String(t));const{url:i,type:n}=UE(e);n&&(A["content-type"]=n);const r=await BJ(e);r&&(A["x-first-bytes"]=r),typeof e=="string"&&(e=new TextEncoder().encode(e));const o=new Response(e,{headers:A});return Object.defineProperty(o,"url",{value:i}),o}async function cJ(e){if(!e.ok){const A=await CJ(e);throw new Error(A)}}async function CJ(e){let A="Failed to fetch resource ".concat(e.url," (").concat(e.status,"): ");try{const t=e.headers.get("Content-Type");let i=e.statusText;t.includes("application/json")&&(i+=" ".concat(await e.text())),A+=i,A=A.length>60?"".concat(A.slice(0,60),"..."):A}catch{}return A}async function BJ(e){if(typeof e=="string")return"data:,".concat(e.slice(0,5));if(e instanceof Blob){const t=e.slice(0,5);return await new Promise(i=>{const n=new FileReader;n.onload=r=>{var o;return i(r==null||(o=r.target)===null||o===void 0?void 0:o.result)},n.readAsDataURL(t)})}if(e instanceof ArrayBuffer){const t=e.slice(0,5),i=EJ(t);return"data:base64,".concat(i)}return null}function EJ(e){let A="";const t=new Uint8Array(e);for(let i=0;i=0)}function qn(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process.browser)||$2()}const SC={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},dc=SC.window||SC.self||SC.global,hg=SC.process||{},AL=typeof __VERSION__<"u"?__VERSION__:"untranspiled source";qn();const Dh=globalThis;function eL(e){if(!e&&!qn())return"Node";if($2(e))return"Electron";const t=e||(typeof navigator<"u"?navigator:{}).userAgent||"";if(t.indexOf("Edge")>-1)return"Edge";const i=t.indexOf("MSIE ")!==-1,n=t.indexOf("Trident/")!==-1;return i||n?"IE":Dh.chrome?"Chrome":Dh.safari?"Safari":Dh.mozInnerScreenX?"Firefox":"Unknown"}function uJ(e){try{const A=window[e],t="__storage_test__";return A.setItem(t,t),A.removeItem(t),A}catch{return null}}class hJ{constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"sessionStorage";y(this,"storage",void 0),y(this,"id",void 0),y(this,"config",{}),this.storage=uJ(i),this.id=A,this.config={},Object.assign(this.config,t),this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(A){return this.config={},this.updateConfiguration(A)}updateConfiguration(A){if(Object.assign(this.config,A),this.storage){const t=JSON.stringify(this.config);this.storage.setItem(this.id,t)}return this}_loadConfiguration(){let A={};if(this.storage){const t=this.storage.getItem(this.id);A=t?JSON.parse(t):{}}return Object.assign(this.config,A),this}}function fJ(e){let A;return e<10?A="".concat(e.toFixed(2),"ms"):e<100?A="".concat(e.toFixed(1),"ms"):e<1e3?A="".concat(e.toFixed(0),"ms"):A="".concat((e/1e3).toFixed(2),"s"),A}function QJ(e){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:8;const t=Math.max(A-e.length,0);return"".concat(" ".repeat(t)).concat(e)}function Rh(e,A,t){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:600;const n=e.src.replace(/\(/g,"%28").replace(/\)/g,"%29");e.width>i&&(t=Math.min(t,i/e.width));const r=e.width*t,o=e.height*t,s=["font-size:1px;","padding:".concat(Math.floor(o/2),"px ").concat(Math.floor(r/2),"px;"),"line-height:".concat(o,"px;"),"background:url(".concat(n,");"),"background-size:".concat(r,"px ").concat(o,"px;"),"color:transparent;"].join("");return["".concat(A," %c+"),s]}let vB;(function(e){e[e.BLACK=30]="BLACK",e[e.RED=31]="RED",e[e.GREEN=32]="GREEN",e[e.YELLOW=33]="YELLOW",e[e.BLUE=34]="BLUE",e[e.MAGENTA=35]="MAGENTA",e[e.CYAN=36]="CYAN",e[e.WHITE=37]="WHITE",e[e.BRIGHT_BLACK=90]="BRIGHT_BLACK",e[e.BRIGHT_RED=91]="BRIGHT_RED",e[e.BRIGHT_GREEN=92]="BRIGHT_GREEN",e[e.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",e[e.BRIGHT_BLUE=94]="BRIGHT_BLUE",e[e.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",e[e.BRIGHT_CYAN=96]="BRIGHT_CYAN",e[e.BRIGHT_WHITE=97]="BRIGHT_WHITE"})(vB||(vB={}));function rS(e){return typeof e=="string"?vB[e.toUpperCase()]||vB.WHITE:e}function dJ(e,A,t){return!qn&&typeof e=="string"&&(A&&(A=rS(A),e="\x1B[".concat(A,"m").concat(e,"\x1B[39m")),t&&(A=rS(t),e="\x1B[".concat(t+10,"m").concat(e,"\x1B[49m"))),e}function pJ(e){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:["constructor"];const t=Object.getPrototypeOf(e),i=Object.getOwnPropertyNames(t);for(const n of i)typeof e[n]=="function"&&(A.find(r=>n===r)||(e[n]=e[n].bind(e)))}function SB(e,A){if(!e)throw new Error(A||"Assertion failed")}function Bs(){let e;if(qn&&"performance"in dc){var A,t;e=dc==null||(A=dc.performance)===null||A===void 0||(t=A.now)===null||t===void 0?void 0:t.call(A)}else if("hrtime"in hg){var i;const n=hg==null||(i=hg.hrtime)===null||i===void 0?void 0:i.call(hg);e=n[0]*1e3+n[1]/1e6}else e=Date.now();return e}const Es={debug:qn&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},yJ={enabled:!0,level:0};function gi(){}const oS={},sS={once:!0};class Fl{constructor(){let{id:A}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{id:""};y(this,"id",void 0),y(this,"VERSION",AL),y(this,"_startTs",Bs()),y(this,"_deltaTs",Bs()),y(this,"_storage",void 0),y(this,"userData",{}),y(this,"LOG_THROTTLE_TIMEOUT",0),this.id=A,this._storage=new hJ("__probe-".concat(this.id,"__"),yJ),this.userData={},this.timeStamp("".concat(this.id," started")),pJ(this),Object.seal(this)}set level(A){this.setLevel(A)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((Bs()-this._startTs).toPrecision(10))}getDelta(){return Number((Bs()-this._deltaTs).toPrecision(10))}set priority(A){this.level=A}get priority(){return this.level}getPriority(){return this.level}enable(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return this._storage.updateConfiguration({enabled:A}),this}setLevel(A){return this._storage.updateConfiguration({level:A}),this}get(A){return this._storage.config[A]}set(A,t){this._storage.updateConfiguration({[A]:t})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(A,t){SB(A,t)}warn(A){return this._getLogFunction(0,A,Es.warn,arguments,sS)}error(A){return this._getLogFunction(0,A,Es.error,arguments)}deprecated(A,t){return this.warn("`".concat(A,"` is deprecated and will be removed in a later version. Use `").concat(t,"` instead"))}removed(A,t){return this.error("`".concat(A,"` has been removed. Use `").concat(t,"` instead"))}probe(A,t){return this._getLogFunction(A,t,Es.log,arguments,{time:!0,once:!0})}log(A,t){return this._getLogFunction(A,t,Es.debug,arguments)}info(A,t){return this._getLogFunction(A,t,console.info,arguments)}once(A,t){for(var i=arguments.length,n=new Array(i>2?i-2:0),r=2;r2&&arguments[2]!==void 0?arguments[2]:{collapsed:!1};const n=aS({logLevel:A,message:t,opts:i}),{collapsed:r}=i;return n.method=(r?console.groupCollapsed:console.group)||console.info,this._getLogFunction(n)}groupCollapsed(A,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.group(A,t,Object.assign({},i,{collapsed:!0}))}groupEnd(A){return this._getLogFunction(A,"",console.groupEnd||gi)}withGroup(A,t,i){this.group(A,t)();try{i()}finally{this.groupEnd(A)()}}trace(){console.trace&&console.trace()}_shouldLog(A){return this.isEnabled()&&this.getLevel()>=tL(A)}_getLogFunction(A,t,i,n,r){if(this._shouldLog(A)){r=aS({logLevel:A,message:t,args:n,opts:r}),i=i||r.method,SB(i),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=Bs();const o=r.tag||r.message;if(r.once)if(!oS[o])oS[o]=Bs();else return gi;return t=mJ(this.id,r.message,r),i.bind(console,t,...r.args)}return gi}}y(Fl,"VERSION",AL);function tL(e){if(!e)return 0;let A;switch(typeof e){case"number":A=e;break;case"object":A=e.logLevel||e.priority||0;break;default:return 0}return SB(Number.isFinite(A)&&A>=0),A}function aS(e){const{logLevel:A,message:t}=e;e.logLevel=tL(A);const i=e.args?Array.from(e.args):[];for(;i.length&&i.shift()!==t;);switch(typeof A){case"string":case"function":t!==void 0&&i.unshift(t),e.message=A;break;case"object":Object.assign(e,A);break}typeof e.message=="function"&&(e.message=e.message());const n=typeof e.message;return SB(n==="string"||n==="object"),Object.assign(e,{args:i},e.opts)}function mJ(e,A,t){if(typeof A=="string"){const i=t.time?QJ(fJ(t.total)):"";A=t.time?"".concat(e,": ").concat(i," ").concat(A):"".concat(e,": ").concat(A),A=dJ(A,t.color,t.background)}return A}function wJ(e){let{image:A,message:t="",scale:i=1}=e;return(void 0)({image:A,message:t,scale:i}),gi}function vJ(e){let{image:A,message:t="",scale:i=1}=e;if(typeof A=="string"){const r=new Image;return r.onload=()=>{const o=Rh(r,t,i);console.log(...o)},r.src=A,gi}const n=A.nodeName||"";if(n.toLowerCase()==="img")return console.log(...Rh(A,t,i)),gi;if(n.toLowerCase()==="canvas"){const r=new Image;return r.onload=()=>console.log(...Rh(r,t,i)),r.src=A.toDataURL(),gi}return gi}function SJ(e){for(const A in e)for(const t in e[A])return t||"untitled";return"empty"}const gS=new Fl({id:"loaders.gl"});class DJ{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}}class RJ{constructor(){y(this,"console",void 0),this.console=console}log(...A){return this.console.log.bind(this.console,...A)}info(...A){return this.console.info.bind(this.console,...A)}warn(...A){return this.console.warn.bind(this.console,...A)}error(...A){return this.console.error.bind(this.console,...A)}}const iL={fetch:null,mimeType:void 0,nothrow:!1,log:new RJ,CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:Dp,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]},xJ={throws:"nothrow",dataType:"(no longer used)",uri:"baseUri",method:"fetch.method",headers:"fetch.headers",body:"fetch.body",mode:"fetch.mode",credentials:"fetch.credentials",cache:"fetch.cache",redirect:"fetch.redirect",referrer:"fetch.referrer",referrerPolicy:"fetch.referrerPolicy",integrity:"fetch.integrity",keepalive:"fetch.keepalive",signal:"fetch.signal"};function nL(){globalThis.loaders=globalThis.loaders||{};const{loaders:e}=globalThis;return e._state=e._state||{},e._state}const rL=()=>{const e=nL();return e.globalOptions=e.globalOptions||{...iL},e.globalOptions};function FJ(e,A,t,i){return t=t||[],t=Array.isArray(t)?t:[t],NJ(e,t),bJ(A,e,i)}function oL(e,A){const t=rL(),i=e||t;return typeof i.fetch=="function"?i.fetch:xl(i.fetch)?n=>nS(n,i):A!=null&&A.fetch?A==null?void 0:A.fetch:nS}function NJ(e,A){IS(e,null,iL,xJ,A);for(const t of A){const i=e&&e[t.id]||{},n=t.options&&t.options[t.id]||{},r=t.deprecatedOptions&&t.deprecatedOptions[t.id]||{};IS(i,t.id,n,r,A)}}function IS(e,A,t,i,n){const r=A||"Top level",o=A?"".concat(A,"."):"";for(const s in e){const a=!A&&xl(e[s]),g=s==="baseUri"&&!A,I=s==="workerUrl"&&A;if(!(s in t)&&!g&&!I){if(s in i)gS.warn("".concat(r," loader option '").concat(o).concat(s,"' no longer supported, use '").concat(i[s],"'"))();else if(!a){const l=LJ(s,n);gS.warn("".concat(r," loader option '").concat(o).concat(s,"' not recognized. ").concat(l))()}}}}function LJ(e,A){const t=e.toLowerCase();let i="";for(const n of A)for(const r in n.options){if(e===r)return"Did you mean '".concat(n.id,".").concat(r,"'?");const o=r.toLowerCase();(t.startsWith(o)||o.startsWith(t))&&(i=i||"Did you mean '".concat(n.id,".").concat(r,"'?"))}return i}function bJ(e,A,t){const n={...e.options||{}};return GJ(n,t),n.log===null&&(n.log=new DJ),lS(n,rL()),lS(n,A),n}function lS(e,A){for(const t in A)if(t in A){const i=A[t];tS(i)&&tS(e[t])?e[t]={...e[t],...A[t]}:e[t]=A[t]}}function GJ(e,A){A&&!("baseUri"in e)&&(e.baseUri=A)}function Rp(e){var A;return e?(Array.isArray(e)&&(e=e[0]),Array.isArray((A=e)===null||A===void 0?void 0:A.extensions)):!1}function xp(e){var A,t;wB(e,"null loader"),wB(Rp(e),"invalid loader");let i;return Array.isArray(e)&&(i=e[1],e=e[0],e={...e,options:{...e.options,...i}}),((A=e)!==null&&A!==void 0&&A.parseTextSync||(t=e)!==null&&t!==void 0&&t.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}const sL=()=>{const e=nL();return e.loaderRegistry=e.loaderRegistry||[],e.loaderRegistry};function _J(e){const A=sL();e=Array.isArray(e)?e:[e];for(const t of e){const i=xp(t);A.find(n=>i===n)||A.unshift(i)}}function MJ(){return sL()}const kJ=new Fl({id:"loaders.gl"}),TJ=/\.([^.]+)$/;async function UJ(e,A=[],t,i){if(!aL(e))return null;let n=cS(e,A,{...t,nothrow:!0},i);if(n)return n;if(_a(e)&&(e=await e.slice(0,10).arrayBuffer(),n=cS(e,A,t,i)),!n&&!(t!=null&&t.nothrow))throw new Error(gL(e));return n}function cS(e,A=[],t,i){if(!aL(e))return null;if(A&&!Array.isArray(A))return xp(A);let n=[];A&&(n=n.concat(A)),t!=null&&t.ignoreRegisteredLoaders||n.push(...MJ()),HJ(n);const r=PJ(e,n,t,i);if(!r&&!(t!=null&&t.nothrow))throw new Error(gL(e));return r}function PJ(e,A,t,i){const{url:n,type:r}=UE(e),o=n||(i==null?void 0:i.url);let s=null,a="";if(t!=null&&t.mimeType&&(s=xh(A,t==null?void 0:t.mimeType),a="match forced by supplied MIME type ".concat(t==null?void 0:t.mimeType)),s=s||qJ(A,o),a=a||(s?"matched url ".concat(o):""),s=s||xh(A,r),a=a||(s?"matched MIME type ".concat(r):""),s=s||OJ(A,e),a=a||(s?"matched initial data ".concat(IL(e)):""),s=s||xh(A,t==null?void 0:t.fallbackMimeType),a=a||(s?"matched fallback MIME type ".concat(r):""),a){var g;kJ.log(1,"selectLoader selected ".concat((g=s)===null||g===void 0?void 0:g.name,": ").concat(a,"."))}return s}function aL(e){return!(e instanceof Response&&e.status===204)}function gL(e){const{url:A,type:t}=UE(e);let i="No valid loader found (";i+=A?"".concat(AJ(A),", "):"no url provided, ",i+="MIME type: ".concat(t?'"'.concat(t,'"'):"not provided",", ");const n=e?IL(e):"";return i+=n?' first bytes: "'.concat(n,'"'):"first bytes: not available",i+=")",i}function HJ(e){for(const A of e)xp(A)}function qJ(e,A){const t=A&&TJ.exec(A),i=t&&t[1];return i?JJ(e,i):null}function JJ(e,A){A=A.toLowerCase();for(const t of e)for(const i of t.extensions)if(i.toLowerCase()===A)return t;return null}function xh(e,A){for(const t of e)if(t.mimeTypes&&t.mimeTypes.includes(A)||A==="application/x.".concat(t.id))return t;return null}function OJ(e,A){if(!A)return null;for(const t of e)if(typeof A=="string"){if(YJ(A,t))return t}else if(ArrayBuffer.isView(A)){if(CS(A.buffer,A.byteOffset,t))return t}else if(A instanceof ArrayBuffer&&CS(A,0,t))return t;return null}function YJ(e,A){return A.testText?A.testText(e):(Array.isArray(A.tests)?A.tests:[A.tests]).some(i=>e.startsWith(i))}function CS(e,A,t){return(Array.isArray(t.tests)?t.tests:[t.tests]).some(n=>KJ(e,A,t,n))}function KJ(e,A,t,i){if(i instanceof ArrayBuffer)return qq(i,e,i.byteLength);switch(typeof i){case"function":return i(e,t);case"string":const n=VQ(e,A,i.length);return i===n;default:return!1}}function IL(e,A=5){return typeof e=="string"?e.slice(0,A):ArrayBuffer.isView(e)?VQ(e.buffer,e.byteOffset,A):e instanceof ArrayBuffer?VQ(e,0,A):""}function VQ(e,A,t){if(e.byteLength{try{t.onload=()=>i(t),t.onerror=r=>n(new Error("Could not load image ".concat(e,": ").concat(r)))}catch(r){n(r)}})}const QO={};let ES=!0;async function dO(e,A,t){let i;Np(t)?i=await CL(e,A,t):i=cL(e,t);const n=A&&A.imagebitmap;return await pO(i,n)}async function pO(e,A=null){if((yO(A)||!ES)&&(A=null),A)try{return await createImageBitmap(e,A)}catch(t){console.warn(t),ES=!1}return await createImageBitmap(e)}function yO(e){for(const A in e||QO)return!1;return!0}const Xi=!1,aI=!0;function BL(e){const A=Nl(e);return mO(A)||SO(A)||wO(A)||vO(A)}function mO(e){const A=Nl(e);return A.byteLength>=24&&A.getUint32(0,Xi)===2303741511?{mimeType:"image/png",width:A.getUint32(16,Xi),height:A.getUint32(20,Xi)}:null}function wO(e){const A=Nl(e);return A.byteLength>=10&&A.getUint32(0,Xi)===1195984440?{mimeType:"image/gif",width:A.getUint16(6,aI),height:A.getUint16(8,aI)}:null}function vO(e){const A=Nl(e);return A.byteLength>=14&&A.getUint16(0,Xi)===16973&&A.getUint32(2,aI)===A.byteLength?{mimeType:"image/bmp",width:A.getUint32(18,aI),height:A.getUint32(22,aI)}:null}function SO(e){const A=Nl(e);if(!(A.byteLength>=3&&A.getUint16(0,Xi)===65496&&A.getUint8(2)===255))return null;const{tableMarkers:i,sofMarkers:n}=DO();let r=2;for(;r+9!!BL(new DataView(e))],options:bO},$A=new Fl({id:"deck"});let XQ={};function GO(e){XQ=e}function St(e,A,t,i){$A.level>0&&XQ[e]&&XQ[e].call(null,A,t,i)}function _O(e){const A=e[0],t=e[e.length-1];return A==="{"&&t==="}"||A==="["&&t==="]"}const MO={id:"JSON",name:"JSON",module:"",version:"",options:{},extensions:["json","geojson"],mimeTypes:["application/json","application/geo+json"],testText:_O,parseTextSync:JSON.parse},gI="8.8.9",DC=globalThis.deck&&globalThis.deck.VERSION;if(DC&&DC!==gI)throw new Error("deck.gl - multiple versions detected: ".concat(DC," vs ").concat(gI));DC||($A.log(1,"deck.gl ".concat(gI))(),globalThis.deck={...globalThis.deck,VERSION:gI,version:gI,log:$A,_registerLoggers:GO},_J([MO,[EL,{imagebitmap:{premultiplyAlpha:"none"}}]]));const kO=globalThis.deck,DA=new Fl({id:"luma.gl"});function Gt(e,A){if(!e)throw new Error(A||"luma.gl: assertion failed.")}const TO="Invalid WebGLRenderingContext",UO="Requires WebGL2";function PE(e){return typeof WebGLRenderingContext<"u"&&e instanceof WebGLRenderingContext||typeof WebGL2RenderingContext<"u"&&e instanceof WebGL2RenderingContext?!0:!!(e&&Number.isFinite(e._version))}function te(e){return typeof WebGL2RenderingContext<"u"&&e instanceof WebGL2RenderingContext?!0:!!(e&&e._version===2)}function PO(e){return te(e)?e:null}function HE(e){return Gt(PE(e),TO),e}function Rt(e){return Gt(te(e),UO),e}const Pg={};function HO(e){globalThis.console&&globalThis.console.error&&globalThis.console.error(e)}function qO(e){globalThis.console&&globalThis.console.log&&globalThis.console.log(e)}function JO(e,A){Pg[e]=!0,A!==void 0&&HO(A)}function OO(e){const A=e.getError;e.getError=function(){let i;do i=A.apply(e),i!==0&&(Pg[i]=!0);while(i!==0);for(i in Pg)if(Pg[i])return delete Pg[i],parseInt(i,10);return 0}}const Ll=function e(A){const t=A.gl;this.ext=A,this.isAlive=!0,this.hasBeenBound=!1,this.elementArrayBuffer=null,this.attribs=new Array(A.maxVertexAttribs);for(let i=0;i{qO("OESVertexArrayObject emulation library context restored"),t.reset_()},!0),this.reset_()};ts.prototype.VERTEX_ARRAY_BINDING_OES=34229;ts.prototype.reset_=function(){if(this.vertexArrayObjects!==void 0)for(let i=0;ite(e)?void 0:0,eY={3074:e=>te(e)?void 0:36064,[zO]:e=>te(e)?void 0:jO,35977:Ne,32937:Ne,[XO]:(e,A)=>{const t=te(e)?e.getExtension(VO):e.getExtension(KO);return t&&t.GPU_DISJOINT_EXT?A(t.GPU_DISJOINT_EXT):0},[$O]:(e,A)=>{const t=e.getExtension(fS);return A(t&&t.UNMASKED_VENDOR_WEBGL||7936)},[AY]:(e,A)=>{const t=e.getExtension(fS);return A(t&&t.UNMASKED_RENDERER_WEBGL||7937)},[ZO]:(e,A)=>{const t=e.luma.extensions[WO];return t?A(t.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1},32883:Ne,35071:Ne,37447:Ne,36063:(e,A)=>{if(!te(e)){const t=e.getExtension(hS);return t?A(t.MAX_COLOR_ATTACHMENTS_WEBGL):0}},35379:Ne,35374:Ne,35377:Ne,34852:e=>{if(!te(e)){const A=e.getExtension(hS);return A?A.MAX_DRAW_BUFFERS_WEBGL:0}},36203:e=>e.getExtension(uS)?2147483647:65535,33001:e=>e.getExtension(uS)?16777216:65535,33e3:e=>16777216,37157:Ne,35373:Ne,35657:Ne,36183:Ne,37137:Ne,34045:Ne,35978:Ne,35979:Ne,35968:Ne,35376:Ne,35375:Ne,35659:Ne,37154:Ne,35371:Ne,35658:Ne,35076:Ne,35077:Ne,35380:Ne};function tY(e,A,t){const i=eY[t],n=typeof i=="function"?i(e,A,t):i;return n!==void 0?n:A(t)}const iY="OES_vertex_array_object",uL="ANGLE_instanced_arrays",nY="WEBGL_draw_buffers",rY="EXT_disjoint_timer_query",oY="EXT_texture_filter_anisotropic",sY="VertexArray requires WebGL2 or OES_vertex_array_object extension";function aY(e,A){return{webgl2:te(e),ext:e.getExtension(A)}}const hL={[iY]:{meta:{suffix:"OES"},createVertexArray:()=>{Gt(!1,sY)},deleteVertexArray:()=>{},bindVertexArray:()=>{},isVertexArray:()=>!1},[uL]:{meta:{suffix:"ANGLE"},vertexAttribDivisor(e,A){Gt(A===0,"WebGL instanced rendering not supported")},drawElementsInstanced:()=>{},drawArraysInstanced:()=>{}},[nY]:{meta:{suffix:"WEBGL"},drawBuffers:()=>{Gt(!1)}},[rY]:{meta:{suffix:"EXT"},createQuery:()=>{Gt(!1)},deleteQuery:()=>{Gt(!1)},beginQuery:()=>{Gt(!1)},endQuery:()=>{},getQuery(e,A){return this.getQueryObject(e,A)},getQueryParameter(e,A){return this.getQueryObject(e,A)},getQueryObject:()=>{}}},Fh={readBuffer:(e,A,t)=>{te(e)&&A(t)},getVertexAttrib:(e,A,t,i)=>{const{webgl2:n,ext:r}=aY(e,uL);let o;switch(i){case 35069:o=n?void 0:!1;break;case 35070:o=!n&&!r?0:void 0;break}return o!==void 0?o:A(t,i)},getProgramParameter:(e,A,t,i)=>{if(!te(e))switch(i){case 35967:return 35981;case 35971:return 0;case 35382:return 0}return A(t,i)},getInternalformatParameter:(e,A,t,i,n)=>{if(!te(e))switch(n){case 32937:return new Int32Array([0])}return e.getInternalformatParameter(t,i,n)},getTexParameter(e,A,t,i){switch(i){case 34046:const{extensions:n}=e.luma,r=n[oY];i=r&&r.TEXTURE_MAX_ANISOTROPY_EXT||34046;break}return A(t,i)},getParameter:tY,hint(e,A,t,i){return A(t,i)}};function gY(e){e.luma=e.luma||{};const{luma:A}=e;return A.polyfilled||(YO(e),IY(e),cY(e,hL),lY(e,{target:A,target2:e}),A.polyfilled=!0),e}globalThis.polyfillContext=gY;function IY(e){e.luma.extensions={};const A=e.getSupportedExtensions()||[];for(const t of A)e.luma[t]=e.getExtension(t)}function lY(e,A){let{target:t,target2:i}=A;Object.keys(Fh).forEach(n=>{if(typeof Fh[n]=="function"){const r=e[n]?e[n].bind(e):()=>{},o=Fh[n].bind(null,e,r);t[n]=o,i[n]=o}})}function cY(e,A){for(const t of Object.getOwnPropertyNames(A))t!=="overrides"&&CY(e,{extension:t,target:e.luma,target2:e})}function CY(e,A){let{extension:t,target:i,target2:n}=A;const r=hL[t];Gt(r);const{meta:o={}}=r,{suffix:s=""}=o,a=e.getExtension(t);for(const g of Object.keys(r)){const I="".concat(g).concat(s);let l=null;g==="meta"||typeof e[g]=="function"||(a&&typeof a[I]=="function"?l=function(){return a[I](...arguments)}:typeof r[g]=="function"&&(l=r[g].bind(i))),l&&(i[g]=l,n[g]=l)}}const Lp={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},Xn=(e,A,t)=>A?e.enable(t):e.disable(t),QS=(e,A,t)=>e.hint(t,A),zt=(e,A,t)=>e.pixelStorei(t,A),BY=(e,A)=>{const t=te(e)?36009:36160;return e.bindFramebuffer(t,A)},EY=(e,A)=>e.bindFramebuffer(36008,A);function fg(e){return Array.isArray(e)||ArrayBuffer.isView(e)}const uY={3042:Xn,32773:(e,A)=>e.blendColor(...A),32777:"blendEquation",34877:"blendEquation",32969:"blendFunc",32968:"blendFunc",32971:"blendFunc",32970:"blendFunc",3106:(e,A)=>e.clearColor(...A),3107:(e,A)=>e.colorMask(...A),2884:Xn,2885:(e,A)=>e.cullFace(A),2929:Xn,2931:(e,A)=>e.clearDepth(A),2932:(e,A)=>e.depthFunc(A),2928:(e,A)=>e.depthRange(...A),2930:(e,A)=>e.depthMask(A),3024:Xn,35723:QS,36006:BY,2886:(e,A)=>e.frontFace(A),33170:QS,2849:(e,A)=>e.lineWidth(A),32823:Xn,32824:"polygonOffset",10752:"polygonOffset",35977:Xn,32938:"sampleCoverage",32939:"sampleCoverage",3089:Xn,3088:(e,A)=>e.scissor(...A),2960:Xn,2961:(e,A)=>e.clearStencil(A),2968:(e,A)=>e.stencilMaskSeparate(1028,A),36005:(e,A)=>e.stencilMaskSeparate(1029,A),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:(e,A)=>e.viewport(...A),3333:zt,3317:zt,37440:zt,37441:zt,37443:zt,3330:zt,3332:zt,3331:zt,36010:EY,3314:zt,32878:zt,3316:zt,3315:zt,32877:zt,framebuffer:(e,A)=>{const t=A&&"handle"in A?A.handle:A;return e.bindFramebuffer(36160,t)},blend:(e,A)=>A?e.enable(3042):e.disable(3042),blendColor:(e,A)=>e.blendColor(...A),blendEquation:(e,A)=>{A=fg(A)?A:[A,A],e.blendEquationSeparate(...A)},blendFunc:(e,A)=>{A=fg(A)&&A.length===2?[...A,...A]:A,e.blendFuncSeparate(...A)},clearColor:(e,A)=>e.clearColor(...A),clearDepth:(e,A)=>e.clearDepth(A),clearStencil:(e,A)=>e.clearStencil(A),colorMask:(e,A)=>e.colorMask(...A),cull:(e,A)=>A?e.enable(2884):e.disable(2884),cullFace:(e,A)=>e.cullFace(A),depthTest:(e,A)=>A?e.enable(2929):e.disable(2929),depthFunc:(e,A)=>e.depthFunc(A),depthMask:(e,A)=>e.depthMask(A),depthRange:(e,A)=>e.depthRange(...A),dither:(e,A)=>A?e.enable(3024):e.disable(3024),derivativeHint:(e,A)=>{e.hint(35723,A)},frontFace:(e,A)=>e.frontFace(A),mipmapHint:(e,A)=>e.hint(33170,A),lineWidth:(e,A)=>e.lineWidth(A),polygonOffsetFill:(e,A)=>A?e.enable(32823):e.disable(32823),polygonOffset:(e,A)=>e.polygonOffset(...A),sampleCoverage:(e,A)=>e.sampleCoverage(...A),scissorTest:(e,A)=>A?e.enable(3089):e.disable(3089),scissor:(e,A)=>e.scissor(...A),stencilTest:(e,A)=>A?e.enable(2960):e.disable(2960),stencilMask:(e,A)=>{A=fg(A)?A:[A,A];const[t,i]=A;e.stencilMaskSeparate(1028,t),e.stencilMaskSeparate(1029,i)},stencilFunc:(e,A)=>{A=fg(A)&&A.length===3?[...A,...A]:A;const[t,i,n,r,o,s]=A;e.stencilFuncSeparate(1028,t,i,n),e.stencilFuncSeparate(1029,r,o,s)},stencilOp:(e,A)=>{A=fg(A)&&A.length===3?[...A,...A]:A;const[t,i,n,r,o,s]=A;e.stencilOpSeparate(1028,t,i,n),e.stencilOpSeparate(1029,r,o,s)},viewport:(e,A)=>e.viewport(...A)};function Ye(e,A,t){return A[e]!==void 0?A[e]:t[e]}const hY={blendEquation:(e,A,t)=>e.blendEquationSeparate(Ye(32777,A,t),Ye(34877,A,t)),blendFunc:(e,A,t)=>e.blendFuncSeparate(Ye(32969,A,t),Ye(32968,A,t),Ye(32971,A,t),Ye(32970,A,t)),polygonOffset:(e,A,t)=>e.polygonOffset(Ye(32824,A,t),Ye(10752,A,t)),sampleCoverage:(e,A,t)=>e.sampleCoverage(Ye(32938,A,t),Ye(32939,A,t)),stencilFuncFront:(e,A,t)=>e.stencilFuncSeparate(1028,Ye(2962,A,t),Ye(2967,A,t),Ye(2963,A,t)),stencilFuncBack:(e,A,t)=>e.stencilFuncSeparate(1029,Ye(34816,A,t),Ye(36003,A,t),Ye(36004,A,t)),stencilOpFront:(e,A,t)=>e.stencilOpSeparate(1028,Ye(2964,A,t),Ye(2965,A,t),Ye(2966,A,t)),stencilOpBack:(e,A,t)=>e.stencilOpSeparate(1029,Ye(34817,A,t),Ye(34818,A,t),Ye(34819,A,t))},dS={enable:(e,A)=>e({[A]:!0}),disable:(e,A)=>e({[A]:!1}),pixelStorei:(e,A,t)=>e({[A]:t}),hint:(e,A,t)=>e({[A]:t}),bindFramebuffer:(e,A,t)=>{switch(A){case 36160:return e({36006:t,36010:t});case 36009:return e({36006:t});case 36008:return e({36010:t});default:return null}},blendColor:(e,A,t,i,n)=>e({32773:new Float32Array([A,t,i,n])}),blendEquation:(e,A)=>e({32777:A,34877:A}),blendEquationSeparate:(e,A,t)=>e({32777:A,34877:t}),blendFunc:(e,A,t)=>e({32969:A,32968:t,32971:A,32970:t}),blendFuncSeparate:(e,A,t,i,n)=>e({32969:A,32968:t,32971:i,32970:n}),clearColor:(e,A,t,i,n)=>e({3106:new Float32Array([A,t,i,n])}),clearDepth:(e,A)=>e({2931:A}),clearStencil:(e,A)=>e({2961:A}),colorMask:(e,A,t,i,n)=>e({3107:[A,t,i,n]}),cullFace:(e,A)=>e({2885:A}),depthFunc:(e,A)=>e({2932:A}),depthRange:(e,A,t)=>e({2928:new Float32Array([A,t])}),depthMask:(e,A)=>e({2930:A}),frontFace:(e,A)=>e({2886:A}),lineWidth:(e,A)=>e({2849:A}),polygonOffset:(e,A,t)=>e({32824:A,10752:t}),sampleCoverage:(e,A,t)=>e({32938:A,32939:t}),scissor:(e,A,t,i,n)=>e({3088:new Int32Array([A,t,i,n])}),stencilMask:(e,A)=>e({2968:A,36005:A}),stencilMaskSeparate:(e,A,t)=>e({[A===1028?2968:36005]:t}),stencilFunc:(e,A,t,i)=>e({2962:A,2967:t,2963:i,34816:A,36003:t,36004:i}),stencilFuncSeparate:(e,A,t,i,n)=>e({[A===1028?2962:34816]:t,[A===1028?2967:36003]:i,[A===1028?2963:36004]:n}),stencilOp:(e,A,t,i)=>e({2964:A,2965:t,2966:i,34817:A,34818:t,34819:i}),stencilOpSeparate:(e,A,t,i,n)=>e({[A===1028?2964:34817]:t,[A===1028?2965:34818]:i,[A===1028?2966:34819]:n}),viewport:(e,A,t,i,n)=>e({2978:[A,t,i,n]})},qi=(e,A)=>e.isEnabled(A),pS={3042:qi,2884:qi,2929:qi,3024:qi,32823:qi,32926:qi,32928:qi,3089:qi,2960:qi,35977:qi};function fL(e){for(const A in e)return!1;return!0}function fY(e,A){if(e===A)return!0;const t=Array.isArray(e)||ArrayBuffer.isView(e),i=Array.isArray(A)||ArrayBuffer.isView(A);if(t&&i&&e.length===A.length){for(let n=0;n{}}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=A,this.program=null,this.stateStack=[],this.enable=!0,this.cache=t?mY(A):Object.assign({},Lp),this.log=i,this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(){this.stateStack.push({})}pop(){Gt(this.stateStack.length>0);const A=this.stateStack[this.stateStack.length-1];kn(this.gl,A),this.stateStack.pop()}_updateCache(A){let t=!1,i;const n=this.stateStack.length>0&&this.stateStack[this.stateStack.length-1];for(const r in A){Gt(r!==void 0);const o=A[r],s=this.cache[r];fY(o,s)||(t=!0,i=s,n&&!(r in n)&&(n[r]=s),this.cache[r]=o)}return{valueChanged:t,oldValue:i}}}function QL(e){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{enable:t=!0,copyState:i}=A;if(Gt(i!==void 0),!e.state){const{polyfillContext:n}=globalThis;n&&n(e),e.state=new pY(e,{copyState:i}),dY(e);for(const r in dS){const o=dS[r];QY(e,r,o)}yS(e,"getParameter"),yS(e,"isEnabled")}return e.state.enable=t,e}function yY(e){e.state||QL(e,{copyState:!1}),e.state.push()}function mS(e){Gt(e.state),e.state.pop()}function kn(e,A){if(Gt(PE(e),"setParameters requires a WebGL context"),fL(A))return;const t={};for(const n in A){const r=Number(n),o=uY[n];o&&(typeof o=="string"?t[o]=!0:o(e,A[n],r))}const i=e.state&&e.state.cache;if(i)for(const n in t){const r=hY[n];r(e,A,i)}}function mY(e,A){if(A=A||Lp,typeof A=="number"){const n=A,r=pS[n];return r?r(e,n):e.getParameter(n)}const t=Array.isArray(A)?A:Object.keys(A),i={};for(const n of t){const r=pS[n];i[n]=r?r(e,Number(n)):e.getParameter(Number(n))}return i}function wY(e){kn(e,Lp)}function Bi(e,A,t){if(fL(A))return t(e);const{nocatch:i=!0}=A;yY(e),kn(e,A);let n;if(i)n=t(e),mS(e);else try{n=t(e)}finally{mS(e)}return n}function Ba(e){const{luma:A}=e;if(e.canvas&&A){const{clientWidth:t}=A.canvasSizeInfo;return t?e.drawingBufferWidth/t:1}return 1}function Nh(e,A){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const i=Ba(e),n=e.drawingBufferWidth,r=e.drawingBufferHeight;return SY(A,i,n,r,t)}function vY(e){const A=typeof window>"u"?1:window.devicePixelRatio||1;return Number.isFinite(e)?e<=0?1:e:e?A:1}function SY(e,A,t,i,n){const r=wS(e[0],A,t);let o=vS(e[1],A,i,n),s=wS(e[0]+1,A,t);const a=s===t-1?s:s-1;s=vS(e[1]+1,A,i,n);let g;return n?(s=s===0?s:s+1,g=o,o=s):g=s===i-1?s:s-1,{x:r,y:o,width:Math.max(a-r+1,1),height:Math.max(g-o+1,1)}}function wS(e,A,t){return Math.min(Math.round(e*A),t-1)}function vS(e,A,t,i){return i?Math.max(0,t-1-Math.round(e*A)):Math.min(Math.round(e*A),t-1)}const bp=qn(),DY=bp&&typeof document<"u",dL={webgl2:!0,webgl1:!0,throwOnError:!0,manageState:!0,canvas:null,debug:!1,width:800,height:600};function pL(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Gt(bp,`createGLContext only available in the browser. +Create your own headless context or use 'createHeadlessContext' from @luma.gl/test-utils`),e=Object.assign({},dL,e);const{width:A,height:t}=e;function i(s){if(e.throwOnError)throw new Error(s);return console.error(s),null}e.onError=i;let n;const{canvas:r}=e,o=NY({canvas:r,width:A,height:t,onError:i});return n=FY(o,e),n?(n=Gp(n,e),LY(n),n):null}function Gp(e){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!e||e._instrumented)return e;e._version=e._version||bY(e),e.luma=e.luma||{},e.luma.canvasSizeInfo=e.luma.canvasSizeInfo||{},A=Object.assign({},dL,A);const{manageState:t,debug:i}=A;return t&&QL(e,{copyState:!1,log:function(){for(var n=arguments.length,r=new Array(n),o=0;o1&&arguments[1]!==void 0?arguments[1]:{};if(e.canvas){const i=vY(A.useDevicePixels);GY(e,i,A);return}const t=e.getExtension("STACKGL_resize_drawingbuffer");t&&"width"in A&&"height"in A&&t.resize(A.width,A.height)}function FY(e,A){const{onError:t}=A;let i=null;const n=a=>i=a.statusMessage||i;e.addEventListener("webglcontextcreationerror",n,!1);const{webgl1:r=!0,webgl2:o=!0}=A;let s=null;return o&&(s=s||e.getContext("webgl2",A),s=s||e.getContext("experimental-webgl2",A)),r&&(s=s||e.getContext("webgl",A),s=s||e.getContext("experimental-webgl",A)),e.removeEventListener("webglcontextcreationerror",n,!1),s?(A.onContextLost&&e.addEventListener("webglcontextlost",A.onContextLost,!1),A.onContextRestored&&e.addEventListener("webglcontextrestored",A.onContextRestored,!1),s):t("Failed to create ".concat(o&&!r?"WebGL2":"WebGL"," context: ").concat(i||"Unknown error"))}function NY(e){let{canvas:A,width:t=800,height:i=600,onError:n}=e,r;return typeof A=="string"?(DY&&document.readyState==="complete"||n("createGLContext called on canvas '".concat(A,"' before page was loaded")),r=document.getElementById(A)):A?r=A:(r=document.createElement("canvas"),r.id="lumagl-canvas",r.style.width=Number.isFinite(t)?"".concat(t,"px"):"100%",r.style.height=Number.isFinite(i)?"".concat(i,"px"):"100%",document.body.insertBefore(r,document.body.firstChild)),r}function LY(e){const A=te(e)?"WebGL2":"WebGL1",t=RY(e),i=t?"(".concat(t.vendor,",").concat(t.renderer,")"):"",n=e.debug?" debug":"";DA.info(1,"".concat(A).concat(n," context ").concat(i))()}function bY(e){return typeof WebGL2RenderingContext<"u"&&e instanceof WebGL2RenderingContext?2:1}function GY(e,A,t){let i="width"in t?t.width:e.canvas.clientWidth,n="height"in t?t.height:e.canvas.clientHeight;(!i||!n)&&(DA.log(1,"Canvas clientWidth/clientHeight is 0")(),A=1,i=e.canvas.width||1,n=e.canvas.height||1),e.luma=e.luma||{},e.luma.canvasSizeInfo=e.luma.canvasSizeInfo||{};const r=e.luma.canvasSizeInfo;if(r.clientWidth!==i||r.clientHeight!==n||r.devicePixelRatio!==A){let o=A;const s=Math.floor(i*o),a=Math.floor(n*o);e.canvas.width=s,e.canvas.height=a,(e.drawingBufferWidth!==s||e.drawingBufferHeight!==a)&&(DA.warn("Device pixel ratio clamped")(),o=Math.min(e.drawingBufferWidth/i,e.drawingBufferHeight/n),e.canvas.width=Math.floor(i*o),e.canvas.height=Math.floor(n*o)),Object.assign(e.luma.canvasSizeInfo,{clientWidth:i,clientHeight:n,devicePixelRatio:A})}}const II="8.5.16",_Y="set luma.log.level=1 (or higher) to trace rendering";class yL{constructor(){this.stats=new Map}get(A){return this.stats.has(A)||this.stats.set(A,new TE({id:A})),this.stats.get(A)}}const fo=new yL;if(globalThis.luma&&globalThis.luma.VERSION!==II)throw new Error("luma.gl - multiple VERSIONs detected: ".concat(globalThis.luma.VERSION," vs ").concat(II));globalThis.luma||(qn()&&DA.log(1,"luma.gl ".concat(II," - ").concat(_Y))(),globalThis.luma=globalThis.luma||{VERSION:II,version:II,log:DA,stats:fo,globals:{modules:{},nodeIO:{}}});function MY(e){return typeof window<"u"&&window.requestAnimationFrame?window.requestAnimationFrame(e):setTimeout(e,1e3/60)}function kY(e){return typeof window<"u"&&window.cancelAnimationFrame?window.cancelAnimationFrame(e):clearTimeout(e)}function cA(e,A){if(!e)throw new Error(A||"luma.gl: assertion failed.")}function Lh(e,A){if(typeof A!="string")return A;const t=Number(A);if(!isNaN(t))return t;A=A.replace(/^.*\./,"");const i=e[A];return cA(i!==void 0,"Accessing undefined constant GL.".concat(A)),i}function vr(e,A){A=Number(A);for(const t in e)if(e[t]===A)return"GL.".concat(t);return String(A)}const bh={};function Mr(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"id";bh[e]=bh[e]||1;const A=bh[e]++;return"".concat(e,"-").concat(A)}function SS(e){return cA(typeof e=="number","Input must be a number"),e&&(e&e-1)===0}function Ea(e){let A=!0;for(const t in e){A=!1;break}return A}function mL(e,A,t,i){const n="See luma.gl ".concat(t," Upgrade Guide at https://luma.gl/docs/upgrade-guide"),r=Object.getPrototypeOf(e);i.forEach(o=>{r.methodName||(r[o]=()=>{throw DA.removed("Calling removed method ".concat(A,".").concat(o,": "),n)(),new Error(o)})})}const us="Resource subclass must define virtual methods";let Jn=class{get[Symbol.toStringTag](){return"Resource"}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};HE(A);const{id:i,userData:n={}}=t;this.gl=A,this.gl2=A,this.id=i||Mr(this[Symbol.toStringTag]),this.userData=n,this._bound=!1,this._handle=t.handle,this._handle===void 0&&(this._handle=this._createHandle()),this.byteLength=0,this._initStats(),this._addStats()}toString(){return"".concat(this[Symbol.toStringTag]||this.constructor.name,"(").concat(this.id,")")}get handle(){return this._handle}delete(){let{deleteChildren:A=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const t=this._handle&&this._deleteHandle(this._handle);return this._handle&&this._removeStats(),this._handle=null,t&&A&&t.filter(Boolean).forEach(i=>i.delete()),this}bind(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.handle;if(typeof A!="function")return this._bindHandle(A),this;let t;return this._bound?t=A():(this._bindHandle(this.handle),this._bound=!0,t=A(),this._bound=!1,this._bindHandle(null)),t}unbind(){this.bind(null)}getParameter(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};A=Lh(this.gl,A),cA(A);const n=(this.constructor.PARAMETERS||{})[A];if(n){const r=te(this.gl);if(!((!("webgl2"in n)||r)&&(!("extension"in n)||this.gl.getExtension(n.extension)))){const s=n.webgl1,a="webgl2"in n?n.webgl2:n.webgl1;return r?a:s}}return this._getParameter(A,t)}getParameters(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{parameters:t,keys:i}=A,n=this.constructor.PARAMETERS||{},r=te(this.gl),o={},s=t||Object.keys(n);for(const a of s){const g=n[a];if(g&&(!("webgl2"in g)||r)&&(!("extension"in g)||this.gl.getExtension(g.extension))){const l=i?vr(this.gl,a):a;o[l]=this.getParameter(a,A),i&&g.type==="GLenum"&&(o[l]=vr(this.gl,o[l]))}}return o}setParameter(A,t){A=Lh(this.gl,A),cA(A);const n=(this.constructor.PARAMETERS||{})[A];if(n){const r=te(this.gl);if(!((!("webgl2"in n)||r)&&(!("extension"in n)||this.gl.getExtension(n.extension))))throw new Error("Parameter not available on this platform");n.type==="GLenum"&&(t=Lh(t))}return this._setParameter(A,t),this}setParameters(A){for(const t in A)this.setParameter(t,A[t]);return this}stubRemovedMethods(A,t,i){return mL(this,A,t,i)}initialize(A){}_createHandle(){throw new Error(us)}_deleteHandle(){throw new Error(us)}_bindHandle(A){throw new Error(us)}_getOptsFromHandle(){throw new Error(us)}_getParameter(A,t){throw new Error(us)}_setParameter(A,t){throw new Error(us)}_context(){return this.gl.luma=this.gl.luma||{},this.gl.luma}_initStats(){this.gl.stats=this.gl.stats||new yL}_addStats(){const A=this[Symbol.toStringTag],t=fo.get("Resource Counts");t.get("Resources Created").incrementCount(),t.get("".concat(A,"s Created")).incrementCount(),t.get("".concat(A,"s Active")).incrementCount()}_removeStats(){const A=this[Symbol.toStringTag];fo.get("Resource Counts").get("".concat(A,"s Active")).decrementCount()}_trackAllocatedMemory(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this[Symbol.toStringTag];this._doTrackAllocatedMemory(A,t),this._doTrackAllocatedMemory(A,t,this.gl.stats.get("Memory Usage"))}_doTrackAllocatedMemory(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this[Symbol.toStringTag],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:fo.get("Memory Usage");i.get("GPU Memory").addCount(A),i.get("".concat(t," Memory")).addCount(A),this.byteLength=A}_trackDeallocatedMemory(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this[Symbol.toStringTag];this._doTrackDeallocatedMemory(A),this._doTrackDeallocatedMemory(A,this.gl.stats.get("Memory Usage"))}_doTrackDeallocatedMemory(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this[Symbol.toStringTag],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:fo.get("Memory Usage");t.get("GPU Memory").subtractCount(this.byteLength),t.get("".concat(A," Memory")).subtractCount(this.byteLength),this.byteLength=0}};const TY="Failed to deduce GL constant from typed array";function ZQ(e){switch(ArrayBuffer.isView(e)?e.constructor:e){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(TY)}}function qI(e){let{clamped:A=!0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};switch(e){case 5126:return Float32Array;case 5123:case 33635:case 32819:case 32820:return Uint16Array;case 5125:return Uint32Array;case 5121:return A?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 UY(e){let{data:A,width:t,height:i,bytesPerPixel:n=4,temp:r}=e;const o=t*n;r=r||new Uint8Array(o);for(let s=0;sthis._assign(n)),Object.freeze(this)}toString(){return JSON.stringify(this)}get BYTES_PER_ELEMENT(){return Ai.getBytesPerElement(this)}get BYTES_PER_VERTEX(){return Ai.getBytesPerVertex(this)}_assign(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return A=$Q("Accessor",A,qY),A.type!==void 0&&(this.type=A.type,(A.type===5124||A.type===5125)&&(this.integer=!0)),A.size!==void 0&&(this.size=A.size),A.offset!==void 0&&(this.offset=A.offset),A.stride!==void 0&&(this.stride=A.stride),A.normalized!==void 0&&(this.normalized=A.normalized),A.integer!==void 0&&(this.integer=A.integer),A.divisor!==void 0&&(this.divisor=A.divisor),A.buffer!==void 0&&(this.buffer=A.buffer),A.index!==void 0&&(typeof A.index=="boolean"?this.index=A.index?1:0:this.index=A.index),A.instanced!==void 0&&(this.divisor=A.instanced?1:0),A.isInstanced!==void 0&&(this.divisor=A.isInstanced?1:0),this}}const DS=10,wL={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"},JY={removedProps:{},replacedProps:{bytes:"byteLength"},deprecatedProps:wL},OY={removedProps:wL};let me=class extends Jn{get[Symbol.toStringTag](){return"Buffer"}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(A,t),this.stubRemovedMethods("Buffer","v6.0",["layout","setLayout","getIndexedParameter"]),this.target=t.target||(this.gl.webgl2?36662:34962),this.initialize(t),Object.seal(this)}getElementCount(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.accessor;return Math.round(this.byteLength/Ai.getBytesPerElement(A))}getVertexCount(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.accessor;return Math.round(this.byteLength/Ai.getBytesPerVertex(A))}initialize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return ArrayBuffer.isView(A)&&(A={data:A}),Number.isFinite(A)&&(A={byteLength:A}),A=$Q("Buffer",A,JY),this.usage=A.usage||35044,this.debugData=null,this.setAccessor(Object.assign({},A,A.accessor)),A.data?this._setData(A.data,A.offset,A.byteLength):this._setByteLength(A.byteLength||0),this}setProps(A){return A=$Q("Buffer",A,OY),"accessor"in A&&this.setAccessor(A.accessor),this}setAccessor(A){return A=Object.assign({},A),delete A.buffer,this.accessor=new Ai(A),this}reallocate(A){return A>this.byteLength?(this._setByteLength(A),!0):(this.bytesUsed=A,!1)}setData(A){return this.initialize(A)}subData(A){ArrayBuffer.isView(A)&&(A={data:A});const{data:t,offset:i=0,srcOffset:n=0}=A,r=A.byteLength||A.length;cA(t);const o=this.gl.webgl2?36663:this.target;return this.gl.bindBuffer(o,this.handle),n!==0||r!==void 0?(Rt(this.gl),this.gl.bufferSubData(this.target,i,t,n,r)):this.gl.bufferSubData(o,i,t),this.gl.bindBuffer(o,null),this.debugData=null,this._inferType(t),this}copyData(A){let{sourceBuffer:t,readOffset:i=0,writeOffset:n=0,size:r}=A;const{gl:o}=this;return Rt(o),o.bindBuffer(36662,t.handle),o.bindBuffer(36663,this.handle),o.copyBufferSubData(36662,36663,i,n,r),o.bindBuffer(36662,null),o.bindBuffer(36663,null),this.debugData=null,this}getData(){let{dstData:A=null,srcByteOffset:t=0,dstOffset:i=0,length:n=0}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Rt(this.gl);const r=qI(this.accessor.type||5126,{clamped:!1}),o=this._getAvailableElementCount(t),s=i;let a,g;A?(g=A.length,a=g-s):(a=Math.min(o,n||o),g=s+a);const I=Math.min(o,a);return n=n||I,cA(n<=I),A=A||new r(g),this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,t,A,i,n),this.gl.bindBuffer(36662,null),A}bind(){let{target:A=this.target,index:t=this.accessor&&this.accessor.index,offset:i=0,size:n}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return A===35345||A===35982?n!==void 0?this.gl.bindBufferRange(A,t,this.handle,i,n):(cA(i===0),this.gl.bindBufferBase(A,t,this.handle)):this.gl.bindBuffer(A,this.handle),this}unbind(){let{target:A=this.target,index:t=this.accessor&&this.accessor.index}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return A===35345||A===35982?this.gl.bindBufferBase(A,t,null):this.gl.bindBuffer(A,null),this}getDebugData(){return this.debugData?{data:this.debugData,changed:!1}:(this.debugData=this.getData({length:Math.min(DS,this.byteLength)}),{data:this.debugData,changed:!0})}invalidateDebugData(){this.debugData=null}_setData(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:A.byteLength+t;cA(ArrayBuffer.isView(A)),this._trackDeallocatedMemory();const n=this._getTarget();this.gl.bindBuffer(n,this.handle),this.gl.bufferData(n,i,this.usage),this.gl.bufferSubData(n,t,A),this.gl.bindBuffer(n,null),this.debugData=A.slice(0,DS),this.bytesUsed=i,this._trackAllocatedMemory(i);const r=ZQ(A);return cA(r),this.setAccessor(new Ai(this.accessor,{type:r})),this}_setByteLength(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.usage;cA(A>=0),this._trackDeallocatedMemory();let i=A;A===0&&(i=new Float32Array(0));const n=this._getTarget();return this.gl.bindBuffer(n,this.handle),this.gl.bufferData(n,i,t),this.gl.bindBuffer(n,null),this.usage=t,this.debugData=null,this.bytesUsed=A,this._trackAllocatedMemory(A),this}_getTarget(){return this.gl.webgl2?36663:this.target}_getAvailableElementCount(A){const t=qI(this.accessor.type||5126,{clamped:!1}),i=A/t.BYTES_PER_ELEMENT;return this.getElementCount()-i}_inferType(A){this.accessor.type||this.setAccessor(new Ai(this.accessor,{type:ZQ(A)}))}_createHandle(){return this.gl.createBuffer()}_deleteHandle(){this.gl.deleteBuffer(this.handle),this._trackDeallocatedMemory()}_getParameter(A){this.gl.bindBuffer(this.target,this.handle);const t=this.gl.getBufferParameter(this.target,A);return this.gl.bindBuffer(this.target,null),t}get type(){return DA.deprecated("Buffer.type","Buffer.accessor.type")(),this.accessor.type}get bytes(){return DA.deprecated("Buffer.bytes","Buffer.byteLength")(),this.byteLength}setByteLength(A){return DA.deprecated("setByteLength","reallocate")(),this.reallocate(A)}updateAccessor(A){return DA.deprecated("updateAccessor(...)","setAccessor(new Accessor(buffer.accessor, ...)")(),this.accessor=new Ai(this.accessor,A),this}};const _p={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}},vL={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},SL={5126:4,5125:4,5124:4,5123:2,5122:2,5131:2,5120:1,5121:1};function YY(e,A){const t=_p[A];if(!t)return!1;if(t.gl1===void 0&&t.gl2===void 0)return!0;const i=te(e)&&t.gl2||t.gl1;return typeof i=="string"?e.getExtension(i):i}function KY(e,A){const t=_p[A];switch(t&&t.types[0]){case 5126:return e.getExtension("OES_texture_float_linear");case 5131:return e.getExtension("OES_texture_half_float_linear");default:return!0}}const VY=[9729,9728],RS=globalThis.WebGLBuffer||function(){};class Go extends Jn{get[Symbol.toStringTag](){return"Texture"}static isSupported(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{format:i,linearFiltering:n}=t;let r=!0;return i&&(r=r&&YY(A,i),r=r&&(!n||KY(A,i))),r}constructor(A,t){const{id:i=Mr("texture"),handle:n,target:r}=t;super(A,{id:i,handle:n}),this.target=r,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 A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=A.data;if(t instanceof Promise)return t.then(f=>this.initialize(Object.assign({},A,{pixels:f,data:f}))),this;const i=typeof HTMLVideoElement<"u"&&t instanceof HTMLVideoElement;if(i&&t.readyStatethis.initialize(A)),this;const{pixels:n=null,format:r=6408,border:o=0,recreate:s=!1,parameters:a={},pixelStore:g={},textureUnit:I=void 0}=A;t||(t=n);let{width:l,height:c,dataFormat:C,type:B,compressed:E=!1,mipmaps:u=!0}=A;const{depth:h=0}=A;return{width:l,height:c,compressed:E,dataFormat:C,type:B}=this._deduceParameters({format:r,type:B,dataFormat:C,compressed:E,data:t,width:l,height:c}),this.width=l,this.height=c,this.depth=h,this.format=r,this.type=B,this.dataFormat=C,this.border=o,this.textureUnit=I,Number.isFinite(this.textureUnit)&&(this.gl.activeTexture(33984+this.textureUnit),this.gl.bindTexture(this.target,this.handle)),u&&this._isNPOT()&&(DA.warn("texture: ".concat(this," is Non-Power-Of-Two, disabling mipmaping"))(),u=!1,this._updateForNPOT(a)),this.mipmaps=u,this.setImageData({data:t,width:l,height:c,depth:h,format:r,type:B,dataFormat:C,border:o,mipmaps:u,parameters:g,compressed:E}),u&&this.generateMipmap(),this.setParameters(a),s&&(this.data=t),i&&(this._video={video:t,parameters:a,lastTime:t.readyState>=HTMLVideoElement.HAVE_CURRENT_DATA?t.currentTime:-1}),this}update(){if(this._video){const{video:A,parameters:t,lastTime:i}=this._video;if(i===A.currentTime||A.readyState0&&arguments[0]!==void 0?arguments[0]:{};return this._isNPOT()?(DA.warn("texture: ".concat(this," is Non-Power-Of-Two, disabling mipmaping"))(),this):(this.mipmaps=!0,this.gl.bindTexture(this.target,this.handle),Bi(this.gl,A,()=>{this.gl.generateMipmap(this.target)}),this.gl.bindTexture(this.target,null),this)}setImageData(A){this._trackDeallocatedMemory("Texture");const{target:t=this.target,pixels:i=null,level:n=0,format:r=this.format,border:o=this.border,offset:s=0,parameters:a={}}=A;let{data:g=null,type:I=this.type,width:l=this.width,height:c=this.height,dataFormat:C=this.dataFormat,compressed:B=!1}=A;g||(g=i),{type:I,dataFormat:C,compressed:B,width:l,height:c}=this._deduceParameters({format:r,type:I,dataFormat:C,compressed:B,data:g,width:l,height:c});const{gl:E}=this;E.bindTexture(this.target,this.handle);let u=null;({data:g,dataType:u}=this._getDataType({data:g,compressed:B}));let h,f=0;if(Bi(this.gl,a,()=>{switch(u){case"null":E.texImage2D(t,n,r,l,c,o,C,I,g);break;case"typed-array":E.texImage2D(t,n,r,l,c,o,C,I,g,s);break;case"buffer":h=Rt(E),h.bindBuffer(35052,g.handle||g),h.texImage2D(t,n,r,l,c,o,C,I,s),h.bindBuffer(35052,null);break;case"browser-object":te(E)?E.texImage2D(t,n,r,l,c,o,C,I,g):E.texImage2D(t,n,r,C,I,g);break;case"compressed":for(const[Q,d]of g.entries())E.compressedTexImage2D(t,Q,d.format,d.width,d.height,o,d.data),f+=d.levelSize;break;default:cA(!1,"Unknown image data type")}}),u==="compressed")this._trackAllocatedMemory(f,"Texture");else if(g&&g.byteLength)this._trackAllocatedMemory(g.byteLength,"Texture");else{const Q=vL[this.dataFormat]||4,d=SL[this.type]||1;this._trackAllocatedMemory(this.width*this.height*Q*d,"Texture")}return this.loaded=!0,this}setSubImageData(A){let{target:t=this.target,pixels:i=null,data:n=null,x:r=0,y:o=0,width:s=this.width,height:a=this.height,level:g=0,format:I=this.format,type:l=this.type,dataFormat:c=this.dataFormat,compressed:C=!1,offset:B=0,border:E=this.border,parameters:u={}}=A;if({type:l,dataFormat:c,compressed:C,width:s,height:a}=this._deduceParameters({format:I,type:l,dataFormat:c,compressed:C,data:n,width:s,height:a}),cA(this.depth===0,"texSubImage not supported for 3D textures"),n||(n=i),n&&n.data){const h=n;n=h.data,s=h.shape[0],a=h.shape[1]}n instanceof me&&(n=n.handle),this.gl.bindTexture(this.target,this.handle),Bi(this.gl,u,()=>{if(C)this.gl.compressedTexSubImage2D(t,g,r,o,s,a,I,n);else if(n===null)this.gl.texSubImage2D(t,g,r,o,s,a,c,l,null);else if(ArrayBuffer.isView(n))this.gl.texSubImage2D(t,g,r,o,s,a,c,l,n,B);else if(n instanceof RS){const h=Rt(this.gl);h.bindBuffer(35052,n),h.texSubImage2D(t,g,r,o,s,a,c,l,B),h.bindBuffer(35052,null)}else te(this.gl)?Rt(this.gl).texSubImage2D(t,g,r,o,s,a,c,l,n):this.gl.texSubImage2D(t,g,r,o,c,l,n)}),this.gl.bindTexture(this.target,null)}copyFramebuffer(){return DA.error("Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})")(),null}getActiveUnit(){return this.gl.getParameter(34016)-33984}bind(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.textureUnit;const{gl:t}=this;return A!==void 0&&(this.textureUnit=A,t.activeTexture(33984+A)),t.bindTexture(this.target,this.handle),A}unbind(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.textureUnit;const{gl:t}=this;return A!==void 0&&(this.textureUnit=A,t.activeTexture(33984+A)),t.bindTexture(this.target,null),A}_getDataType(A){let{data:t,compressed:i=!1}=A;return i?{data:t,dataType:"compressed"}:t===null?{data:t,dataType:"null"}:ArrayBuffer.isView(t)?{data:t,dataType:"typed-array"}:t instanceof me?{data:t.handle,dataType:"buffer"}:t instanceof RS?{data:t,dataType:"buffer"}:{data:t,dataType:"browser-object"}}_deduceParameters(A){const{format:t,data:i}=A;let{width:n,height:r,dataFormat:o,type:s,compressed:a}=A;const g=_p[t];return o=o||g&&g.dataFormat,s=s||g&&g.types[0],a=a||g&&g.compressed,{width:n,height:r}=this._deduceImageSize(i,n,r),{dataFormat:o,type:s,compressed:a,width:n,height:r,format:t,data:i}}_deduceImageSize(A,t,i){let n;return typeof ImageData<"u"&&A instanceof ImageData?n={width:A.width,height:A.height}:typeof HTMLImageElement<"u"&&A instanceof HTMLImageElement?n={width:A.naturalWidth,height:A.naturalHeight}:typeof HTMLCanvasElement<"u"&&A instanceof HTMLCanvasElement?n={width:A.width,height:A.height}:typeof ImageBitmap<"u"&&A instanceof ImageBitmap?n={width:A.width,height:A.height}:typeof HTMLVideoElement<"u"&&A instanceof HTMLVideoElement?n={width:A.videoWidth,height:A.videoHeight}:A?n={width:t,height:i}:n={width:t>=0?t:1,height:i>=0?i:1},cA(n,"Could not deduced texture size"),cA(t===void 0||n.width===t,"Deduced texture width does not match supplied width"),cA(i===void 0||n.height===i,"Deduced texture height does not match supplied height"),n}_createHandle(){return this.gl.createTexture()}_deleteHandle(){this.gl.deleteTexture(this.handle),this._trackDeallocatedMemory("Texture")}_getParameter(A){switch(A){case 4096:return this.width;case 4097:return this.height;default:this.gl.bindTexture(this.target,this.handle);const t=this.gl.getTexParameter(this.target,A);return this.gl.bindTexture(this.target,null),t}}_setParameter(A,t){switch(this.gl.bindTexture(this.target,this.handle),t=this._getNPOTParam(A,t),A){case 33082:case 33083:this.gl.texParameterf(this.handle,A,t);break;case 4096:case 4097:cA(!1);break;default:this.gl.texParameteri(this.target,A,t);break}return this.gl.bindTexture(this.target,null),this}_isNPOT(){return te(this.gl)||!this.width||!this.height?!1:!SS(this.width)||!SS(this.height)}_updateForNPOT(A){A[this.gl.TEXTURE_MIN_FILTER]===void 0&&(A[this.gl.TEXTURE_MIN_FILTER]=this.gl.LINEAR),A[this.gl.TEXTURE_WRAP_S]===void 0&&(A[this.gl.TEXTURE_WRAP_S]=this.gl.CLAMP_TO_EDGE),A[this.gl.TEXTURE_WRAP_T]===void 0&&(A[this.gl.TEXTURE_WRAP_T]=this.gl.CLAMP_TO_EDGE)}_getNPOTParam(A,t){if(this._isNPOT())switch(A){case 10241:VY.indexOf(t)===-1&&(t=9729);break;case 10242:case 10243:t!==33071&&(t=33071);break}return t}}let WY="";function zY(e,A){return cA(typeof e=="string"),e=WY+e,new Promise((t,i)=>{try{const n=new Image;n.onload=()=>t(n),n.onerror=()=>i(new Error("Could not load image ".concat(e,"."))),n.crossOrigin=A&&A.crossOrigin||"anonymous",n.src=e}catch(n){i(n)}})}class Tt extends Go{get[Symbol.toStringTag](){return"Texture2D"}static isSupported(A,t){return Go.isSupported(A,t)}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};HE(A),(t instanceof Promise||typeof t=="string")&&(t={data:t}),typeof t.data=="string"&&(t=Object.assign({},t,{data:zY(t.data)})),super(A,Object.assign({},t,{target:3553})),this.initialize(t),Object.seal(this)}}const Ad=[34069,34070,34071,34072,34073,34074];class DL extends Go{get[Symbol.toStringTag](){return"TextureCube"}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};HE(A),super(A,Object.assign({},t,{target:34067})),this.initialize(t),Object.seal(this)}initialize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{mipmaps:t=!0,parameters:i={}}=A;return this.opts=A,this.setCubeMapImageData(A).then(()=>{this.loaded=!0,t&&this.generateMipmap(A),this.setParameters(i)}),this}subImage(A){let{face:t,data:i,x:n=0,y:r=0,mipmapLevel:o=0}=A;return this._subImage({target:t,data:i,x:n,y:r,mipmapLevel:o})}async setCubeMapImageData(A){let{width:t,height:i,pixels:n,data:r,border:o=0,format:s=6408,type:a=5121}=A;const{gl:g}=this,I=n||r,l=await Promise.all(Ad.map(c=>{const C=I[c];return Promise.all(Array.isArray(C)?C:[C])}));this.bind(),Ad.forEach((c,C)=>{l[C].length>1&&this.opts.mipmaps!==!1&&DA.warn("".concat(this.id," has mipmap and multiple LODs."))(),l[C].forEach((B,E)=>{t&&i?g.texImage2D(c,E,s,t,i,o,s,a,B):g.texImage2D(c,E,s,s,a,B)})}),this.unbind()}setImageDataForFace(A){const{face:t,width:i,height:n,pixels:r,data:o,border:s=0,format:a=6408,type:g=5121}=A,{gl:I}=this,l=r||o;return this.bind(),l instanceof Promise?l.then(c=>this.setImageDataForFace(Object.assign({},A,{face:t,data:c,pixels:c}))):this.width||this.height?I.texImage2D(t,0,a,i,n,s,a,g,l):I.texImage2D(t,0,a,a,g,l),this}}DL.FACES=Ad;class RL extends Go{get[Symbol.toStringTag](){return"Texture3D"}static isSupported(A){return te(A)}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Rt(A),t=Object.assign({depth:1},t,{target:32879,unpackFlipY:!1}),super(A,t),this.initialize(t),Object.seal(this)}setImageData(A){let{level:t=0,dataFormat:i=6408,width:n,height:r,depth:o=1,border:s=0,format:a,type:g=5121,offset:I=0,data:l,parameters:c={}}=A;if(this._trackDeallocatedMemory("Texture"),this.gl.bindTexture(this.target,this.handle),Bi(this.gl,c,()=>{ArrayBuffer.isView(l)&&this.gl.texImage3D(this.target,t,i,n,r,o,s,a,g,l),l instanceof me&&(this.gl.bindBuffer(35052,l.handle),this.gl.texImage3D(this.target,t,i,n,r,o,s,a,g,I))}),l&&l.byteLength)this._trackAllocatedMemory(l.byteLength,"Texture");else{const C=vL[this.dataFormat]||4,B=SL[this.type]||1;this._trackAllocatedMemory(this.width*this.height*this.depth*C*B,"Texture")}return this.loaded=!0,this}}const io="EXT_color_buffer_float",xS={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:io,bpp:2},33327:{gl2:io,bpp:4},34842:{gl2:io,bpp:8},33326:{gl2:io,bpp:4},33328:{gl2:io,bpp:8},34836:{gl2:io,bpp:16},35898:{gl2:io,bpp:4}};function jY(e,A,t){const i=t[A];if(!i)return!1;const n=te(e)&&i.gl2||i.gl1;return typeof n=="string"?e.getExtension(n):n}class Ts extends Jn{get[Symbol.toStringTag](){return"Renderbuffer"}static isSupported(A){let{format:t}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{format:null};return!t||jY(A,t,xS)}static getSamplesForFormat(A,t){let{format:i}=t;return A.getInternalformatParameter(36161,i,32937)}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(A,t),this.initialize(t),Object.seal(this)}initialize(A){let{format:t,width:i=1,height:n=1,samples:r=0}=A;return cA(t,"Needs format"),this._trackDeallocatedMemory(),this.gl.bindRenderbuffer(36161,this.handle),r!==0&&te(this.gl)?this.gl.renderbufferStorageMultisample(36161,r,t,i,n):this.gl.renderbufferStorage(36161,t,i,n),this.format=t,this.width=i,this.height=n,this.samples=r,this._trackAllocatedMemory(this.width*this.height*(this.samples||1)*xS[this.format].bpp),this}resize(A){let{width:t,height:i}=A;return t!==this.width||i!==this.height?this.initialize({width:t,height:i,format:this.format,samples:this.samples}):this}_createHandle(){return this.gl.createRenderbuffer()}_deleteHandle(){this.gl.deleteRenderbuffer(this.handle),this._trackDeallocatedMemory()}_bindHandle(A){this.gl.bindRenderbuffer(36161,A)}_syncHandle(A){this.format=this.getParameter(36164),this.width=this.getParameter(36162),this.height=this.getParameter(36163),this.samples=this.getParameter(36011)}_getParameter(A){return this.gl.bindRenderbuffer(36161,this.handle),this.gl.getRenderbufferParameter(36161,A)}}const XY=256,ZY=1024,$Y=16384,FS=6144,NS=6145,LS=6146,bS=34041,xL="clear: bad arguments";function Mp(e){let{framebuffer:A=null,color:t=null,depth:i=null,stencil:n=null}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r={};A&&(r.framebuffer=A);let o=0;t&&(o|=$Y,t!==!0&&(r.clearColor=t)),i&&(o|=XY,i!==!0&&(r.clearDepth=i)),n&&(o|=ZY,i!==!0&&(r.clearStencil=i)),cA(o!==0,xL),Bi(e,r,()=>{e.clear(o)})}function AK(e){let{framebuffer:A=null,buffer:t=FS,drawBuffer:i=0,value:n=[0,0,0,0]}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Rt(e),Bi(e,{framebuffer:A},()=>{switch(t){case FS:switch(n.constructor){case Int32Array:e.clearBufferiv(t,i,n);break;case Uint32Array:e.clearBufferuiv(t,i,n);break;case Float32Array:default:e.clearBufferfv(t,i,n)}break;case NS:e.clearBufferfv(NS,0,[n]);break;case LS:e.clearBufferiv(LS,0,[n]);break;case bS:const[r,o]=n;e.clearBufferfi(bS,0,r,o);break;default:cA(!1,xL)}})}function eK(e){switch(e){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 cA(!1),0}}function qE(e){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{sourceX:t=0,sourceY:i=0,sourceFormat:n=6408}=A;let{sourceAttachment:r=36064,target:o=null,sourceWidth:s,sourceHeight:a,sourceType:g}=A;const{framebuffer:I,deleteFramebuffer:l}=FL(e);cA(I);const{gl:c,handle:C,attachments:B}=I;s=s||I.width,a=a||I.height,r===36064&&C===null&&(r=1028),cA(B[r]),g=g||B[r].type,o=iK(o,g,n,s,a),g=g||ZQ(o);const E=c.bindFramebuffer(36160,C);return c.readPixels(t,i,s,a,n,g,o),c.bindFramebuffer(36160,E||null),l&&I.delete(),o}function GS(e){let{sourceAttachment:A=36064,targetMaxHeight:t=Number.MAX_SAFE_INTEGER}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=qE(e,{sourceAttachment:A}),{width:n,height:r}=e;for(;r>t;)({data:i,width:n,height:r}=PY({data:i,width:n,height:r}));UY({data:i,width:n,height:r});const o=document.createElement("canvas");o.width=n,o.height=r;const s=o.getContext("2d"),a=s.createImageData(n,r);return a.data.set(i),s.putImageData(a,0,0),o.toDataURL()}function tK(e,A){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{sourceX:i=0,sourceY:n=0,targetMipmaplevel:r=0,targetInternalFormat:o=6408}=t;let{targetX:s,targetY:a,targetZ:g,width:I,height:l}=t;const{framebuffer:c,deleteFramebuffer:C}=FL(e);cA(c);const{gl:B,handle:E}=c,u=typeof s<"u"||typeof a<"u"||typeof g<"u";s=s||0,a=a||0,g=g||0;const h=B.bindFramebuffer(36160,E);cA(A);let f=null;if(A instanceof Go&&(f=A,I=Number.isFinite(I)?I:f.width,l=Number.isFinite(l)?l:f.height,f.bind(0),A=f.target),!u)B.copyTexImage2D(A,r,o,i,n,I,l,0);else switch(A){case 3553:case 34067:B.copyTexSubImage2D(A,r,s,a,i,n,I,l);break;case 35866:case 32879:Rt(B).copyTexSubImage3D(A,r,s,a,g,i,n,I,l);break}return f&&f.unbind(),B.bindFramebuffer(36160,h||null),C&&c.delete(),f}function FL(e){return e instanceof Xe?{framebuffer:e,deleteFramebuffer:!1}:{framebuffer:lK(e),deleteFramebuffer:!0}}function iK(e,A,t,i,n){if(e)return e;A=A||5121;const r=qI(A,{clamped:!1}),o=eK(t);return new r(i*n*o)}const Se={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 nK(e){const A=new Tt(e,{format:6408,type:5126,dataFormat:6408}),t=new Xe(e,{id:"test-framebuffer",check:!1,attachments:{36064:A}}),i=t.getStatus();return A.delete(),t.delete(),i===36053}const NL={[Se.WEBGL2]:[!1,!0],[Se.VERTEX_ARRAY_OBJECT]:["OES_vertex_array_object",!0],[Se.TIMER_QUERY]:["EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2"],[Se.INSTANCED_RENDERING]:["ANGLE_instanced_arrays",!0],[Se.MULTIPLE_RENDER_TARGETS]:["WEBGL_draw_buffers",!0],[Se.ELEMENT_INDEX_UINT32]:["OES_element_index_uint",!0],[Se.BLEND_EQUATION_MINMAX]:["EXT_blend_minmax",!0],[Se.FLOAT_BLEND]:["EXT_float_blend"],[Se.COLOR_ENCODING_SRGB]:["EXT_sRGB",!0],[Se.TEXTURE_DEPTH]:["WEBGL_depth_texture",!0],[Se.TEXTURE_FLOAT]:["OES_texture_float",!0],[Se.TEXTURE_HALF_FLOAT]:["OES_texture_half_float",!0],[Se.TEXTURE_FILTER_LINEAR_FLOAT]:["OES_texture_float_linear"],[Se.TEXTURE_FILTER_LINEAR_HALF_FLOAT]:["OES_texture_half_float_linear"],[Se.TEXTURE_FILTER_ANISOTROPIC]:["EXT_texture_filter_anisotropic"],[Se.COLOR_ATTACHMENT_RGBA32F]:[nK,"EXT_color_buffer_float"],[Se.COLOR_ATTACHMENT_FLOAT]:[!1,"EXT_color_buffer_float"],[Se.COLOR_ATTACHMENT_HALF_FLOAT]:["EXT_color_buffer_half_float"],[Se.GLSL_FRAG_DATA]:["WEBGL_draw_buffers",!0],[Se.GLSL_FRAG_DEPTH]:["EXT_frag_depth",!0],[Se.GLSL_DERIVATIVES]:["OES_standard_derivatives",!0],[Se.GLSL_TEXTURE_LOD]:["EXT_shader_texture_lod",!0]},rK=2;function ed(e,A){return kp(e,A)}function kp(e,A){return A=Array.isArray(A)?A:[A],A.every(t=>LL(e,t))}function oK(e){e.luma=e.luma||{},e.luma.caps=e.luma.caps||{};for(const A in NL)e.luma.caps[A]===void 0&&(e.luma.caps[A]=LL(e,A));return e.luma.caps}function LL(e,A){return e.luma=e.luma||{},e.luma.caps=e.luma.caps||{},e.luma.caps[A]===void 0&&(e.luma.caps[A]=sK(e,A)),e.luma.caps[A]||DA.log(rK,"Feature: ".concat(A," not supported"))(),e.luma.caps[A]}function sK(e,A){const t=NL[A];cA(t,A);let i;const n=te(e)&&t[1]||t[0];if(typeof n=="function")i=n(e);else if(Array.isArray(n)){i=!0;for(const r of n)i=i&&!!e.getExtension(r)}else typeof n=="string"?i=!!e.getExtension(n):typeof n=="boolean"?i=n:cA(!1);return i}const _S="Multiple render targets not supported";class Xe extends Jn{get[Symbol.toStringTag](){return"Framebuffer"}static isSupported(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{colorBufferFloat:i,colorBufferHalfFloat:n}=t;let r=!0;return i&&(r=!!(A.getExtension("EXT_color_buffer_float")||A.getExtension("WEBGL_color_buffer_float")||A.getExtension("OES_texture_float"))),n&&(r=r&&!!(A.getExtension("EXT_color_buffer_float")||A.getExtension("EXT_color_buffer_half_float"))),r}static getDefaultFramebuffer(A){return A.luma=A.luma||{},A.luma.defaultFramebuffer=A.luma.defaultFramebuffer||new Xe(A,{id:"default-framebuffer",handle:null,attachments:{}}),A.luma.defaultFramebuffer}get MAX_COLOR_ATTACHMENTS(){const A=Rt(this.gl);return A.getParameter(A.MAX_COLOR_ATTACHMENTS)}get MAX_DRAW_BUFFERS(){const A=Rt(this.gl);return A.getParameter(A.MAX_DRAW_BUFFERS)}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(A,t),this.width=null,this.height=null,this.attachments={},this.readBuffer=36064,this.drawBuffers=[36064],this.ownResources=[],this.initialize(t),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(A){let{width:t=1,height:i=1,attachments:n=null,color:r=!0,depth:o=!0,stencil:s=!1,check:a=!0,readBuffer:g=void 0,drawBuffers:I=void 0}=A;if(cA(t>=0&&i>=0,"Width and height need to be integers"),this.width=t,this.height=i,n)for(const l in n){const c=n[l];(Array.isArray(c)?c[0]:c).resize({width:t,height:i})}else n=this._createDefaultAttachments(r,o,s,t,i);this.update({clearAttachments:!0,attachments:n,readBuffer:g,drawBuffers:I}),n&&a&&this.checkStatus()}delete(){for(const A of this.ownResources)A.delete();return super.delete(),this}update(A){let{attachments:t={},readBuffer:i,drawBuffers:n,clearAttachments:r=!1,resizeAttachments:o=!0}=A;this.attach(t,{clearAttachments:r,resizeAttachments:o});const{gl:s}=this,a=s.bindFramebuffer(36160,this.handle);return i&&this._setReadBuffer(i),n&&this._setDrawBuffers(n),s.bindFramebuffer(36160,a||null),this}resize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{width:t,height:i}=A;if(this.handle===null)return cA(t===void 0&&i===void 0),this.width=this.gl.drawingBufferWidth,this.height=this.gl.drawingBufferHeight,this;t===void 0&&(t=this.gl.drawingBufferWidth),i===void 0&&(i=this.gl.drawingBufferHeight),t!==this.width&&i!==this.height&&DA.log(2,"Resizing framebuffer ".concat(this.id," to ").concat(t,"x").concat(i))();for(const n in this.attachments)this.attachments[n].resize({width:t,height:i});return this.width=t,this.height=i,this}attach(A){let{clearAttachments:t=!1,resizeAttachments:i=!0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const n={};t&&Object.keys(this.attachments).forEach(o=>{n[o]=null}),Object.assign(n,A);const r=this.gl.bindFramebuffer(36160,this.handle);for(const o in n){cA(o!==void 0,"Misspelled framebuffer binding point?");const s=Number(o),a=n[s];let g=a;if(!g)this._unattach(s);else if(g instanceof Ts)this._attachRenderbuffer({attachment:s,renderbuffer:g});else if(Array.isArray(a)){const[I,l=0,c=0]=a;g=I,this._attachTexture({attachment:s,texture:I,layer:l,level:c})}else this._attachTexture({attachment:s,texture:g,layer:0,level:0});i&&g&&g.resize({width:this.width,height:this.height})}this.gl.bindFramebuffer(36160,r||null),Object.assign(this.attachments,A),Object.keys(this.attachments).filter(o=>!this.attachments[o]).forEach(o=>{delete this.attachments[o]})}checkStatus(){const A=this.getStatus();if(A!==36053)throw new Error(gK(A));return this}getStatus(){const{gl:A}=this,t=A.bindFramebuffer(36160,this.handle),i=A.checkFramebufferStatus(36160);return A.bindFramebuffer(36160,t||null),i}clear(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{color:t,depth:i,stencil:n,drawBuffers:r=[]}=A,o=this.gl.bindFramebuffer(36160,this.handle);return(t||i||n)&&Mp(this.gl,{color:t,depth:i,stencil:n}),r.forEach((s,a)=>{AK(this.gl,{drawBuffer:a,value:s})}),this.gl.bindFramebuffer(36160,o||null),this}readPixels(){return DA.error("Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)")(),null}readPixelsToBuffer(){return DA.error("Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)")(),null}copyToDataUrl(){return DA.error("Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)")(),null}copyToImage(){return DA.error("Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)")(),null}copyToTexture(){return DA.error("Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})")(),null}blit(){return DA.error("Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)")(),null}invalidate(A){let{attachments:t=[],x:i=0,y:n=0,width:r,height:o}=A;const s=Rt(this.gl),a=s.bindFramebuffer(36008,this.handle);return i===0&&n===0&&r===void 0&&o===void 0?s.invalidateFramebuffer(36008,t):s.invalidateFramebuffer(36008,t,i,n,r,o),s.bindFramebuffer(36008,a),this}getAttachmentParameter(A,t,i){let n=this._getAttachmentParameterFallback(t);return n===null&&(this.gl.bindFramebuffer(36160,this.handle),n=this.gl.getFramebufferAttachmentParameter(36160,A,t),this.gl.bindFramebuffer(36160,null)),i&&n>1e3&&(n=vr(this.gl,n)),n}getAttachmentParameters(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:36064,t=arguments.length>1?arguments[1]:void 0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.constructor.ATTACHMENT_PARAMETERS||[];const n={};for(const r of i){const o=t?vr(this.gl,r):r;n[o]=this.getAttachmentParameter(A,r,t)}return n}getParameters(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;const t=Object.keys(this.attachments),i={};for(const n of t){const r=Number(n),o=A?vr(this.gl,r):r;i[o]=this.getAttachmentParameters(r,A)}return i}show(){return typeof window<"u"&&window.open(GS(this),"luma-debug-texture"),this}log(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";if(A>DA.level||typeof window>"u")return this;t=t||"Framebuffer ".concat(this.id);const i=GS(this,{targetMaxHeight:100});return DA.image({logLevel:A,message:t,image:i},t)(),this}bind(){let{target:A=36160}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.gl.bindFramebuffer(A,this.handle),this}unbind(){let{target:A=36160}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.gl.bindFramebuffer(A,null),this}_createDefaultAttachments(A,t,i,n,r){let o=null;return A&&(o=o||{},o[36064]=new Tt(this.gl,{id:"".concat(this.id,"-color0"),pixels:null,format:6408,type:5121,width:n,height:r,mipmaps:!1,parameters:{10241:9729,10240:9729,10242:33071,10243:33071}}),this.ownResources.push(o[36064])),t&&i?(o=o||{},o[33306]=new Ts(this.gl,{id:"".concat(this.id,"-depth-stencil"),format:35056,width:n,height:111}),this.ownResources.push(o[33306])):t?(o=o||{},o[36096]=new Ts(this.gl,{id:"".concat(this.id,"-depth"),format:33189,width:n,height:r}),this.ownResources.push(o[36096])):i&&cA(!1),o}_unattach(A){const t=this.attachments[A];t&&(t instanceof Ts?this.gl.framebufferRenderbuffer(36160,A,36161,null):this.gl.framebufferTexture2D(36160,A,3553,null,0),delete this.attachments[A])}_attachRenderbuffer(A){let{attachment:t=36064,renderbuffer:i}=A;const{gl:n}=this;n.framebufferRenderbuffer(36160,t,36161,i.handle),this.attachments[t]=i}_attachTexture(A){let{attachment:t=36064,texture:i,layer:n,level:r}=A;const{gl:o}=this;switch(o.bindTexture(i.target,i.handle),i.target){case 35866:case 32879:Rt(o).framebufferTextureLayer(36160,t,i.target,r,n);break;case 34067:const a=aK(n);o.framebufferTexture2D(36160,t,a,i.handle,r);break;case 3553:o.framebufferTexture2D(36160,t,3553,i.handle,r);break;default:cA(!1,"Illegal texture type")}o.bindTexture(i.target,null),this.attachments[t]=i}_setReadBuffer(A){const t=PO(this.gl);t?t.readBuffer(A):cA(A===36064||A===1029,_S),this.readBuffer=A}_setDrawBuffers(A){const{gl:t}=this,i=Rt(t);if(i)i.drawBuffers(A);else{const n=t.getExtension("WEBGL_draw_buffers");n?n.drawBuffersWEBGL(A):cA(A.length===1&&(A[0]===36064||A[0]===1029),_S)}this.drawBuffers=A}_getAttachmentParameterFallback(A){const t=oK(this.gl);switch(A){case 36052:return t.WEBGL2?null:0;case 33298:case 33299:case 33300:case 33301:case 33302:case 33303:return t.WEBGL2?null:8;case 33297:return t.WEBGL2?null:5125;case 33296:return!t.WEBGL2&&!t.EXT_sRGB?9729:null;default:return null}}_createHandle(){return this.gl.createFramebuffer()}_deleteHandle(){this.gl.deleteFramebuffer(this.handle)}_bindHandle(A){return this.gl.bindFramebuffer(36160,A)}}function aK(e){return e<34069?e+34069:e}function gK(e){return(Xe.STATUS||{})[e]||"Framebuffer error ".concat(e)}const IK=[36049,36048,33296,33298,33299,33300,33301,33302,33303];Xe.ATTACHMENT_PARAMETERS=IK;function bL(e,A){cA(e instanceof Tt||e instanceof DL||e instanceof RL);const t=e.constructor,{gl:i,width:n,height:r,format:o,type:s,dataFormat:a,border:g,mipmaps:I}=e,l=Object.assign({width:n,height:r,format:o,type:s,dataFormat:a,border:g,mipmaps:I},A);return new t(i,l)}function lK(e,A){const{gl:t,width:i,height:n,id:r}=e;return new Xe(t,Object.assign({},A,{id:"framebuffer-for-".concat(r),width:i,height:n,attachments:{36064:e}}))}function RC(e){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"unnamed";const t=/#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/,i=e.match(t);return i?i[1]:A}const cK=35632,CK=35633;function BK(e){switch(e){case cK:return"fragment";case CK:return"vertex";default:return"unknown type"}}function EK(e,A,t,i){const n=e.split(/\r?\n/),r={},o={},s=i||RC(A)||"(unnamed)",a="".concat(BK(t)," shader ").concat(s);for(let I=0;I1&&arguments[1]!==void 0?arguments[1]:1,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:": ";const i=e.split(/\r?\n/),n=String(i.length+A-1).length;return i.map((r,o)=>{const s=String(o+A),a=s.length;return GL(s,n-a)+t+r})}function GL(e,A){let t="";for(let i=0;i=2&&t[0]==="#version"){const i=parseInt(t[1],10);Number.isFinite(i)&&(A=i)}return A}const hK="Shader: GLSL source code must be a JavaScript string";class JI extends Jn{get[Symbol.toStringTag](){return"Shader"}static getTypeName(A){switch(A){case 35633:return"vertex-shader";case 35632:return"fragment-shader";default:return cA(!1),"unknown"}}constructor(A,t){HE(A),cA(typeof t.source=="string",hK);const i=RC(t.source,null)||t.id||Mr("unnamed ".concat(JI.getTypeName(t.shaderType)));super(A,{id:i}),this.shaderType=t.shaderType,this.source=t.source,this.initialize(t)}initialize(A){let{source:t}=A;const i=RC(t,null);i&&(this.id=Mr(i)),this._compile(t)}getParameter(A){return this.gl.getShaderParameter(this.handle,A)}toString(){return"".concat(JI.getTypeName(this.shaderType),":").concat(this.id)}getName(){return RC(this.source)||"unnamed-shader"}getSource(){return this.gl.getShaderSource(this.handle)}getTranslatedSource(){const A=this.gl.getExtension("WEBGL_debug_shaders");return A?A.getTranslatedShaderSource(this.handle):"No translated source available. WEBGL_debug_shaders not implemented"}_compile(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.source;if(A.startsWith("#version ")||(A=`#version 100 +`.concat(A)),this.source=A,this.gl.shaderSource(this.handle,this.source),this.gl.compileShader(this.handle),!this.getParameter(35713)){const i=this.gl.getShaderInfoLog(this.handle),{shaderName:n,errors:r,warnings:o}=EK(i,this.source,this.shaderType,this.id);throw DA.error("GLSL compilation errors in ".concat(n,` +`).concat(r))(),DA.warn("GLSL compilation warnings in ".concat(n,` +`).concat(o))(),new Error("GLSL compilation errors in ".concat(n))}}_deleteHandle(){this.gl.deleteShader(this.handle)}_getOptsFromHandle(){return{type:this.getParameter(35663),source:this.getSource()}}}class Gh extends JI{get[Symbol.toStringTag](){return"VertexShader"}constructor(A,t){typeof t=="string"&&(t={source:t}),super(A,Object.assign({},t,{shaderType:35633}))}_createHandle(){return this.gl.createShader(35633)}}class _h extends JI{get[Symbol.toStringTag](){return"FragmentShader"}constructor(A,t){typeof t=="string"&&(t={source:t}),super(A,Object.assign({},t,{shaderType:35632}))}_createHandle(){return this.gl.createShader(35632)}}const fK={5126:_e.bind(null,"uniform1fv",jt,1,wt),35664:_e.bind(null,"uniform2fv",jt,2,wt),35665:_e.bind(null,"uniform3fv",jt,3,wt),35666:_e.bind(null,"uniform4fv",jt,4,wt),5124:_e.bind(null,"uniform1iv",Zn,1,wt),35667:_e.bind(null,"uniform2iv",Zn,2,wt),35668:_e.bind(null,"uniform3iv",Zn,3,wt),35669:_e.bind(null,"uniform4iv",Zn,4,wt),35670:_e.bind(null,"uniform1iv",Zn,1,wt),35671:_e.bind(null,"uniform2iv",Zn,2,wt),35672:_e.bind(null,"uniform3iv",Zn,3,wt),35673:_e.bind(null,"uniform4iv",Zn,4,wt),35674:_e.bind(null,"uniformMatrix2fv",jt,4,Qn),35675:_e.bind(null,"uniformMatrix3fv",jt,9,Qn),35676:_e.bind(null,"uniformMatrix4fv",jt,16,Qn),35678:ct,35680:ct,5125:_e.bind(null,"uniform1uiv",pc,1,wt),36294:_e.bind(null,"uniform2uiv",pc,2,wt),36295:_e.bind(null,"uniform3uiv",pc,3,wt),36296:_e.bind(null,"uniform4uiv",pc,4,wt),35685:_e.bind(null,"uniformMatrix2x3fv",jt,6,Qn),35686:_e.bind(null,"uniformMatrix2x4fv",jt,8,Qn),35687:_e.bind(null,"uniformMatrix3x2fv",jt,6,Qn),35688:_e.bind(null,"uniformMatrix3x4fv",jt,12,Qn),35689:_e.bind(null,"uniformMatrix4x2fv",jt,8,Qn),35690:_e.bind(null,"uniformMatrix4x3fv",jt,12,Qn),35678:ct,35680:ct,35679:ct,35682:ct,36289:ct,36292:ct,36293:ct,36298:ct,36299:ct,36300:ct,36303:ct,36306:ct,36307:ct,36308:ct,36311:ct},QK={},dK={},pK={},kS=[0];function Tp(e,A,t,i){A===1&&typeof e=="boolean"&&(e=e?1:0),Number.isFinite(e)&&(kS[0]=e,e=kS);const n=e.length;if(n%A&&DA.warn("Uniform size should be multiples of ".concat(A),e)(),e instanceof t)return e;let r=i[n];r||(r=new t(n),i[n]=r);for(let o=0;o{const n=e!==i;return n&&(A.uniform1i(t,i),e=i),n}}function _e(e,A,t,i){let n=null,r=null;return(o,s,a)=>{const g=A(a,t),I=g.length;let l=!1;if(n===null)n=new Float32Array(I),r=I,l=!0;else{cA(r===I,"Uniform length cannot change.");for(let c=0;c=0&&this._addAttribute(a,r,o,s)}this.attributeInfos.sort((n,r)=>n.location-r.location)}_readVaryingsFromProgram(A){const{gl:t}=A;if(!te(t))return;const i=t.getProgramParameter(A.handle,35971);for(let n=0;nn.location-r.location)}_addAttribute(A,t,i,n){const{type:r,components:o}=PS(i),s={type:r,size:n*o};this._inferProperties(A,t,s);const a={location:A,name:t,accessor:new Ai(s)};this.attributeInfos.push(a),this.attributeInfosByLocation[A]=a,this.attributeInfosByName[a.name]=a}_inferProperties(A,t,i){/instance/i.test(t)&&(i.divisor=1)}_addVarying(A,t,i,n){const{type:r,components:o}=PS(i),s=new Ai({type:r,size:n*o}),a={location:A,name:t,accessor:s};this.varyingInfos.push(a),this.varyingInfosByName[a.name]=a}}const HS=4,r5=35981,o5=["setVertexArray","setAttributes","setBuffers","unsetBuffers","use","getUniformCount","getUniformInfo","getUniformLocation","getUniformValue","getVarying","getFragDataLocation","getAttachedShaders","getAttributeCount","getAttributeLocation","getAttributeInfo"];class kL extends Jn{get[Symbol.toStringTag](){return"Program"}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(A,t),this.stubRemovedMethods("Program","v6.0",o5),this._isCached=!1,this.initialize(t),Object.seal(this),this._setId(t.id)}initialize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{hash:t,vs:i,fs:n,varyings:r,bufferMode:o=r5}=A;return this.hash=t||"",this.vs=typeof i=="string"?new Gh(this.gl,{id:"".concat(A.id,"-vs"),source:i}):i,this.fs=typeof n=="string"?new _h(this.gl,{id:"".concat(A.id,"-fs"),source:n}):n,cA(this.vs instanceof Gh),cA(this.fs instanceof _h),this.uniforms={},this._textureUniforms={},r&&r.length>0&&(Rt(this.gl),this.varyings=r,this.gl2.transformFeedbackVaryings(this.handle,r,o)),this._compileAndLink(),this._readUniformLocationsFromLinkedProgram(),this.configuration=new n5(this),this.setProps(A)}delete(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this._isCached?this:super.delete(A)}setProps(A){return"uniforms"in A&&this.setUniforms(A.uniforms),this}draw(A){let{logPriority:t,drawMode:i=4,vertexCount:n,offset:r=0,start:o,end:s,isIndexed:a=!1,indexType:g=5123,instanceCount:I=0,isInstanced:l=I>0,vertexArray:c=null,transformFeedback:C,framebuffer:B,parameters:E={},uniforms:u,samplers:h}=A;if((u||h)&&(DA.deprecated("Program.draw({uniforms})","Program.setUniforms(uniforms)")(),this.setUniforms(u||{})),DA.priority>=t){const f=B?B.id:"default",Q="mode=".concat(vr(this.gl,i)," verts=").concat(n," ")+"instances=".concat(I," indexType=").concat(vr(this.gl,g)," ")+"isInstanced=".concat(l," isIndexed=").concat(a," ")+"Framebuffer=".concat(f);DA.log(t,Q)()}return cA(c),this.gl.useProgram(this.handle),!this._areTexturesRenderable()||n===0||l&&I===0?!1:(c.bindForDraw(n,I,()=>{if(B!==void 0&&(E=Object.assign({},E,{framebuffer:B})),C){const f=i5(i);C.begin(f)}this._bindTextures(),Bi(this.gl,E,()=>{a&&l?this.gl2.drawElementsInstanced(i,n,g,r,I):a&&te(this.gl)&&!isNaN(o)&&!isNaN(s)?this.gl2.drawRangeElements(i,o,s,n,g,r):a?this.gl.drawElements(i,n,g,r):l?this.gl2.drawArraysInstanced(i,r,n,I):this.gl.drawArrays(i,r,n)}),C&&C.end()}),!0)}setUniforms(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};DA.priority>=2&&mK(A,this.id,this._uniformSetters),this.gl.useProgram(this.handle);for(const t in A){const i=A[t],n=this._uniformSetters[t];if(n){let r=i,o=!1;if(r instanceof Xe&&(r=r.texture),r instanceof Go)if(o=this.uniforms[t]!==i,o){n.textureIndex===void 0&&(n.textureIndex=this._textureIndexCounter++);const s=r,{textureIndex:a}=n;s.bind(a),r=a,this._textureUniforms[t]=s}else r=n.textureIndex;else this._textureUniforms[t]&&delete this._textureUniforms[t];(n(r)||o)&&vK(this.uniforms,t,i)}}return this}_areTexturesRenderable(){let A=!0;for(const t in this._textureUniforms){const i=this._textureUniforms[t];i.update(),A=A&&i.loaded}return A}_bindTextures(){for(const A in this._textureUniforms){const t=this._uniformSetters[A].textureIndex;this._textureUniforms[A].bind(t)}}_createHandle(){return this.gl.createProgram()}_deleteHandle(){this.gl.deleteProgram(this.handle)}_getOptionsFromHandle(A){const t=this.gl.getAttachedShaders(A),i={};for(const n of t)switch(this.gl.getShaderParameter(this.handle,35663)){case 35633:i.vs=new Gh({handle:n});break;case 35632:i.fs=new _h({handle:n});break}return i}_getParameter(A){return this.gl.getProgramParameter(this.handle,A)}_setId(A){if(!A){const t=this._getName();this.id=Mr(t)}}_getName(){let A=this.vs.getName()||this.fs.getName();return A=A.replace(/shader/i,""),A=A?"".concat(A,"-program"):"program",A}_compileAndLink(){const{gl:A}=this;if(A.attachShader(this.handle,this.vs.handle),A.attachShader(this.handle,this.fs.handle),DA.time(HS,"linkProgram for ".concat(this._getName()))(),A.linkProgram(this.handle),DA.timeEnd(HS,"linkProgram for ".concat(this._getName()))(),A.debug||DA.level>0){if(!A.getProgramParameter(this.handle,35714))throw new Error("Error linking: ".concat(A.getProgramInfoLog(this.handle)));if(A.validateProgram(this.handle),!A.getProgramParameter(this.handle,35715))throw new Error("Error validating: ".concat(A.getProgramInfoLog(this.handle)))}}_readUniformLocationsFromLinkedProgram(){const{gl:A}=this;this._uniformSetters={},this._uniformCount=this._getParameter(35718);for(let t=0;t1)for(let o=0;o1&&arguments[1]!==void 0?arguments[1]:[];const i=te(A),n=kp(A,Se.TIMER_QUERY);let r=i||n;for(const o of t)switch(o){case"queries":r=r&&i;break;case"timers":r=r&&n;break;default:cA(!1)}return r}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(A,t),this.target=null,this._queryPending=!1,this._pollingPromise=null,Object.seal(this)}beginTimeElapsedQuery(){return this.begin(g5)}beginOcclusionQuery(){let{conservative:A=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.begin(A?C5:c5)}beginTransformFeedbackQuery(){return this.begin(l5)}begin(A){return this._queryPending?this:(this.target=A,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 A=this.gl2.getQueryParameter(this.handle,a5);return A&&(this._queryPending=!1),A}isTimerDisjoint(){return this.gl2.getParameter(I5)}getResult(){return this.gl2.getQueryParameter(this.handle,s5)}getTimerMilliseconds(){return this.getResult()/1e6}createPoll(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Number.POSITIVE_INFINITY;if(this._pollingPromise)return this._pollingPromise;let t=0;return this._pollingPromise=new Promise((i,n)=>{const r=()=>{this.isResultAvailable()?(i(this.getResult()),this._pollingPromise=null):t++>A?(n("Timed out"),this._pollingPromise=null):requestAnimationFrame(r)};requestAnimationFrame(r)}),this._pollingPromise}_createHandle(){return RB.isSupported(this.gl)?this.gl2.createQuery():null}_deleteHandle(){this.gl2.deleteQuery(this.handle)}}class TL extends Jn{get[Symbol.toStringTag](){return"TransformFeedback"}static isSupported(A){return te(A)}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Rt(A),super(A,t),this.initialize(t),this.stubRemovedMethods("TransformFeedback","v6.0",["pause","resume"]),Object.seal(this)}initialize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.buffers={},this.unused={},this.configuration=null,this.bindOnUse=!0,Ea(this.buffers)||this.bind(()=>this._unbindBuffers()),this.setProps(A),this}setProps(A){"program"in A&&(this.configuration=A.program&&A.program.configuration),"configuration"in A&&(this.configuration=A.configuration),"bindOnUse"in A&&(A=A.bindOnUse),"buffers"in A&&this.setBuffers(A.buffers)}setBuffers(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.bind(()=>{for(const t in A)this.setBuffer(t,A[t])}),this}setBuffer(A,t){const i=this._getVaryingIndex(A),{buffer:n,byteSize:r,byteOffset:o}=this._getBufferParams(t);return i<0?(this.unused[A]=n,DA.warn("".concat(this.id," unused varying buffer ").concat(A))(),this):(this.buffers[i]=t,this.bindOnUse||this._bindBuffer(i,n,o,r),this)}begin(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.gl.bindTransformFeedback(36386,this.handle),this._bindBuffers(),this.gl.beginTransformFeedback(A),this}end(){return this.gl.endTransformFeedback(),this._unbindBuffers(),this.gl.bindTransformFeedback(36386,null),this}_getBufferParams(A){let t,i,n;return A instanceof me?n=A:(n=A.buffer,i=A.byteSize,t=A.byteOffset),(t!==void 0||i!==void 0)&&(t=t||0,i=i||n.byteLength-t),{buffer:n,byteOffset:t,byteSize:i}}_getVaryingInfo(A){return this.configuration&&this.configuration.getVaryingInfo(A)}_getVaryingIndex(A){if(this.configuration)return this.configuration.getVaryingInfo(A).location;const t=Number(A);return Number.isFinite(t)?t:-1}_bindBuffers(){if(this.bindOnUse)for(const A in this.buffers){const{buffer:t,byteSize:i,byteOffset:n}=this._getBufferParams(this.buffers[A]);this._bindBuffer(A,t,n,i)}}_unbindBuffers(){if(this.bindOnUse)for(const A in this.buffers)this._bindBuffer(A,null)}_bindBuffer(A,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=arguments.length>3?arguments[3]:void 0;const r=t&&t.handle;return!r||n===void 0?this.gl.bindBufferBase(35982,A,r):this.gl.bindBufferRange(35982,A,r,i,n),this}_createHandle(){return this.gl.createTransformFeedback()}_deleteHandle(){this.gl.deleteTransformFeedback(this.handle)}_bindHandle(A){this.gl.bindTransformFeedback(36386,this.handle)}}let wc=null;function B5(e){return(!wc||wc.byteLength1&&arguments[1]!==void 0?arguments[1]:{}).constantAttributeZero?te(A)||eL()==="Chrome":!0}static getDefaultArray(A){return A.luma=A.luma||{},A.luma.defaultVertexArray||(A.luma.defaultVertexArray=new $t(A,{handle:null,isDefaultArray:!0})),A.luma.defaultVertexArray}static getMaxAttributes(A){return $t.MAX_ATTRIBUTES=$t.MAX_ATTRIBUTES||A.getParameter(34921),$t.MAX_ATTRIBUTES}static setConstant(A,t,i){switch(i.constructor){case Float32Array:$t._setConstantFloatArray(A,t,i);break;case Int32Array:$t._setConstantIntArray(A,t,i);break;case Uint32Array:$t._setConstantUintArray(A,t,i);break;default:cA(!1)}}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const i=t.id||t.program&&t.program.id;super(A,Object.assign({},t,{id:i})),this.buffer=null,this.bufferValue=null,this.isDefaultArray=t.isDefaultArray||!1,this.gl2=A,this.initialize(t),Object.seal(this)}delete(){return super.delete(),this.buffer&&this.buffer.delete(),this}get MAX_ATTRIBUTES(){return $t.getMaxAttributes(this.gl)}initialize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.setProps(A)}setProps(A){return this}setElementBuffer(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return cA(!A||A.target===34963,h5),this.bind(()=>{this.gl.bindBuffer(34963,A?A.handle:null)}),this}setBuffer(A,t,i){if(t.target===34963)return this.setElementBuffer(t,i);const{size:n,type:r,stride:o,offset:s,normalized:a,integer:g,divisor:I}=i,{gl:l,gl2:c}=this;return A=Number(A),this.bind(()=>{l.bindBuffer(34962,t.handle),g?(cA(te(l)),c.vertexAttribIPointer(A,n,r,o,s)):l.vertexAttribPointer(A,n,r,a,o,s),l.enableVertexAttribArray(A),c.vertexAttribDivisor(A,I||0)}),this}enable(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return!t&&A===0&&!$t.isSupported(this.gl,{constantAttributeZero:!0})||(A=Number(A),this.bind(()=>t?this.gl.enableVertexAttribArray(A):this.gl.disableVertexAttribArray(A))),this}getConstantBuffer(A,t){const i=this._normalizeConstantArrayValue(t),n=i.byteLength*A,r=i.length*A;let o=!this.buffer;if(this.buffer=this.buffer||new me(this.gl,n),o=o||this.buffer.reallocate(n),o=o||!this._compareConstantArrayValues(i,this.bufferValue),o){const s=E5(t.constructor,r);u5({target:s,source:i,start:0,count:r}),this.buffer.subData(s),this.bufferValue=t}return this.buffer}_normalizeConstantArrayValue(A){return Array.isArray(A)?new Float32Array(A):A}_compareConstantArrayValues(A,t){if(!A||!t||A.length!==t.length||A.constructor!==t.constructor)return!1;for(let i=0;i{switch(A){case 34373:return this.gl.getVertexAttribOffset(i,A);default:return this.gl.getVertexAttrib(i,A)}})}}const f5="VertexArray: attributes must be Buffers or constants (i.e. typed array)",Q5=/^(.+)__LOCATION_([0-9]+)$/,d5=["setBuffers","setGeneric","clearBindings","setLocations","setGenericValues","setDivisor","enable","disable"];class p5{constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const i=t.id||t.program&&t.program.id;this.id=i,this.gl=A,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 $t(A),mL(this,"VertexArray","v6.0",d5),this.initialize(t),Object.seal(this)}delete(){this.buffer&&this.buffer.delete(),this.vertexArrayObject.delete()}initialize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.reset(),this.configuration=null,this.bindOnUse=!1,this.setProps(A)}reset(){this.elements=null,this.elementsAccessor=null;const{MAX_ATTRIBUTES:A}=this.vertexArrayObject;return this.values=new Array(A).fill(null),this.accessors=new Array(A).fill(null),this.unused={},this.drawParams=null,this}setProps(A){return"program"in A&&(this.configuration=A.program&&A.program.configuration),"configuration"in A&&(this.configuration=A.configuration),"attributes"in A&&this.setAttributes(A.attributes),"elements"in A&&this.setElementBuffer(A.elements),"bindOnUse"in A&&(A=A.bindOnUse),this}clearDrawParams(){this.drawParams=null}getDrawParams(){return this.drawParams=this.drawParams||this._updateDrawParams(),this.drawParams}setAttributes(A){return Object.assign(this.attributes,A),this.vertexArrayObject.bind(()=>{for(const t in A){const i=A[t];this._setAttribute(t,i)}this.gl.bindBuffer(34962,null)}),this}setElementBuffer(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return this.elements=A,this.elementsAccessor=t,this.clearDrawParams(),this.vertexArrayObject.setElementBuffer(A,t),this}setBuffer(A,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(t.target===34963)return this.setElementBuffer(t,i);const{location:n,accessor:r}=this._resolveLocationAndAccessor(A,t,t.accessor,i);return n>=0&&(this.values[n]=t,this.accessors[n]=r,this.clearDrawParams(),this.vertexArrayObject.setBuffer(n,t,r)),this}setConstant(A,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{location:n,accessor:r}=this._resolveLocationAndAccessor(A,t,Object.assign({size:t.length},i));return n>=0&&(t=this.vertexArrayObject._normalizeConstantArrayValue(t),this.values[n]=t,this.accessors[n]=r,this.clearDrawParams(),this.vertexArrayObject.enable(n,!1)),this}unbindBuffers(){return this.vertexArrayObject.bind(()=>{this.elements&&this.vertexArrayObject.setElementBuffer(null),this.buffer=this.buffer||new me(this.gl,{accessor:{size:4}});for(let A=0;A{this.elements&&this.setElementBuffer(this.elements);for(let A=0;A{this._setConstantAttributes(A,t),n=i()}),n}_resolveLocationAndAccessor(A,t,i,n){const r={location:-1,accessor:null},{location:o,name:s}=this._getAttributeIndex(A);if(!Number.isFinite(o)||o<0)return this.unused[A]=t,DA.once(3,()=>"unused value ".concat(A," in ").concat(this.id))(),r;const a=this._getAttributeInfo(s||o);if(!a)return r;const g=this.accessors[o]||{},I=Ai.resolve(a.accessor,g,i,n),{size:l,type:c}=I;return cA(Number.isFinite(l)&&Number.isFinite(c)),{location:o,accessor:I}}_getAttributeInfo(A){return this.configuration&&this.configuration.getAttributeInfo(A)}_getAttributeIndex(A){const t=Number(A);if(Number.isFinite(t))return{location:t};const i=Q5.exec(A),n=i?i[1]:A,r=i?Number(i[2]):0;return this.configuration?{location:this.configuration.getAttributeLocation(n)+r,name:n}:{location:-1}}_setAttribute(A,t){if(t instanceof me)this.setBuffer(A,t);else if(Array.isArray(t)&&t.length&&t[0]instanceof me){const i=t[0],n=t[1];this.setBuffer(A,i,n)}else if(ArrayBuffer.isView(t)||Array.isArray(t)){const i=t;this.setConstant(A,i)}else if(t.buffer instanceof me){const i=t;this.setBuffer(A,i.buffer,i)}else throw new Error(f5)}_setConstantAttributes(A,t){const i=Math.max(A|0,t|0);let n=this.values[0];ArrayBuffer.isView(n)&&this._setConstantAttributeZero(n,i);for(let r=1;r0;if(A.isInstanced=A.isInstanced||o,i instanceof me){const s=i;if(o){const a=s.getVertexCount(n);A.instanceCount=Math.min(A.instanceCount,a)}else{const a=s.getVertexCount(n);A.vertexCount=Math.min(A.vertexCount,a)}}}setElements(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return DA.deprecated("setElements","setElementBuffer")(),this.setElementBuffer(A,t)}}function y5(e,A){const{maxElts:t=16,size:i=1}=A;let n="[";for(let o=0;o0&&(n+=",".concat(o%i===0?" ":"")),n+=OI(e[o],A);const r=e.length>t?"...":"]";return"".concat(n).concat(r)}function OI(e){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const t=1e-16,{isInteger:i=!1}=A;if(Array.isArray(e)||ArrayBuffer.isView(e))return y5(e,A);if(!Number.isFinite(e))return String(e);if(Math.abs(e)100&&Math.abs(e)<1e4)return e.toFixed(0);const n=e.toPrecision(2);return n.indexOf(".0")===n.length-2?n.slice(0,-1):n}function qS(e){let{header:A="Uniforms",program:t,uniforms:i,undefinedOnly:n=!1}=e;cA(t);const r=".*_.*",o=".*Matrix",s=t._uniformSetters,a={},g=Object.keys(s).sort();let I=0;for(const C of g)!C.match(r)&&!C.match(o)&&Mh({table:a,header:A,uniforms:i,uniformName:C,undefinedOnly:n})&&I++;for(const C of g)C.match(o)&&Mh({table:a,header:A,uniforms:i,uniformName:C,undefinedOnly:n})&&I++;for(const C of g)a[C]||Mh({table:a,header:A,uniforms:i,uniformName:C,undefinedOnly:n})&&I++;let l=0;const c={};if(!n)for(const C in i){const B=i[C];a[C]||(l++,c[C]={Type:"NOT USED: ".concat(B),[A]:OI(B)})}return{table:a,count:I,unusedTable:c,unusedCount:l}}function Mh(e){let{table:A,header:t,uniforms:i,uniformName:n,undefinedOnly:r}=e;const o=i[n],s=m5(o);return!r||!s?(A[n]={[t]:s?OI(o):"N/A","Uniform Type":s?o:"NOT PROVIDED"},!0):!1}function m5(e){return e!=null}function w5(e){let{vertexArray:A,header:t="Attributes"}=e;if(!A.configuration)return{};const i={};A.elements&&(i.ELEMENT_ARRAY_BUFFER=JS(A,A.elements,null,t));const n=A.values;for(const r in n){const o=A._getAttributeInfo(r);if(o){let s="".concat(r,": ").concat(o.name);const a=A.accessors[o.location];a&&(s="".concat(r,": ").concat(v5(o.name,a))),i[s]=JS(A,n[r],a,t)}}return i}function JS(e,A,t,i){const{gl:n}=e;if(!A)return{[i]:"null","Format ":"N/A"};let r="NOT PROVIDED",o=1,s=0,a=0,g,I,l;if(t&&(r=t.type,o=t.size,r=String(r).replace("Array",""),g=r.indexOf("nt")!==-1),A instanceof me){const c=A,{data:C,changed:B}=c.getDebugData();I=B?"*":"",l=C,a=c.byteLength,s=a/C.BYTES_PER_ELEMENT/o;let E;if(t){const u=t.divisor>0;E="".concat(u?"I ":"P "," ").concat(s," (x").concat(o,"=").concat(a," bytes ").concat(vr(n,r),")")}else g=!0,E="".concat(a," bytes");return{[i]:"".concat(I).concat(OI(l,{size:o,isInteger:g})),"Format ":E}}return l=A,o=A.length,r=String(A.constructor.name).replace("Array",""),g=r.indexOf("nt")!==-1,{[i]:"".concat(OI(l,{size:o,isInteger:g})," (constant)"),"Format ":"".concat(o,"x").concat(r," (constant)")}}function v5(e,A){const{type:t,size:i}=A,n=ML(t,i);return n?"".concat(e," (").concat(n.name,")"):e}function S5(e){const A={},t="Accessors for ".concat(e.id);for(const i of e.attributeInfos)if(i){const n=OS(i);A["in ".concat(n)]={[t]:JSON.stringify(i.accessor)}}for(const i of e.varyingInfos)if(i){const n=OS(i);A["out ".concat(n)]={[t]:JSON.stringify(i.accessor)}}return A}function OS(e){const{type:A,size:t}=e.accessor,i=ML(A,t);return i?"".concat(i.name," ").concat(e.name):e.name}const YS=qn()&&typeof document<"u";let D5=0;class R5{constructor(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{onCreateContext:t=u=>pL(u),onAddHTML:i=null,onInitialize:n=()=>{},onRender:r=()=>{},onFinalize:o=()=>{},onError:s,gl:a=null,glOptions:g={},debug:I=!1,createFramebuffer:l=!1,autoResizeViewport:c=!0,autoResizeDrawingBuffer:C=!0,stats:B=fo.get("animation-loop-".concat(D5++))}=A;let{useDevicePixels:E=!0}=A;"useDevicePixelRatio"in A&&(DA.deprecated("useDevicePixelRatio","useDevicePixels")(),E=A.useDevicePixelRatio),this.props={onCreateContext:t,onAddHTML:i,onInitialize:n,onRender:r,onFinalize:o,onError:s,gl:a,glOptions:g,debug:I,createFramebuffer:l},this.gl=a,this.needsRedraw=null,this.timeline=null,this.stats=B,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:c,autoResizeDrawingBuffer:C,useDevicePixels:E}),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(A){return cA(typeof A=="string"),this.needsRedraw=this.needsRedraw||A,this}setProps(A){return"autoResizeViewport"in A&&(this.autoResizeViewport=A.autoResizeViewport),"autoResizeDrawingBuffer"in A&&(this.autoResizeDrawingBuffer=A.autoResizeDrawingBuffer),"useDevicePixels"in A&&(this.useDevicePixels=A.useDevicePixels),this}start(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(this._running)return this;this._running=!0;const t=this._getPageLoadPromise().then(()=>!this._running||this._initialized?null:(this._createWebGLContext(A),this._createFramebuffer(),this._startEventHandling(),this._initializeCallbackData(),this._updateCallbackData(),this._resizeCanvasDrawingBuffer(),this._resizeViewport(),this._gpuTimeQuery=RB.isSupported(this.gl,["timers"])?new RB(this.gl):null,this._initialized=!0,this.onInitialize(this.animationProps))).then(i=>{this._running&&(this._addCallbackData(i||{}),i!==!1&&this._startLoop())});return this.props.onError&&t.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(A){return this.timeline=A,this.timeline}detachTimeline(){this.timeline=null}waitForRender(){return this.setNeedsRedraw("waitForRender"),this._nextFramePromise||(this._nextFramePromise=new Promise(A=>{this._resolveNextFrame=A})),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(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const i=document.getElementById(A);return i?Number(i.value):t}setViewParameters(){return DA.removed("AnimationLoop.setViewParameters","AnimationLoop.setProps")(),this}_startLoop(){const A=()=>{this._running&&(this.redraw(),this._animationFrameId=this._requestAnimationFrame(A))};this._cancelAnimationFrame(this._animationFrameId),this._animationFrameId=this._requestAnimationFrame(A)}_getPageLoadPromise(){return this._pageLoadPromise||(this._pageLoadPromise=YS?new Promise((A,t)=>{if(YS&&document.readyState==="complete"){A(document);return}window.addEventListener("load",()=>{A(document)})}):Promise.resolve({})),this._pageLoadPromise}_setDisplay(A){this.display&&(this.display.delete(),this.display.animationLoop=null),A&&(A.animationLoop=this),this.display=A}_cancelAnimationFrame(A){return this.display&&this.display.cancelAnimationFrame?this.display.cancelAnimationFrame(A):kY(A)}_requestAnimationFrame(A){if(this._running)return this.display&&this.display.requestAnimationFrame?this.display.requestAnimationFrame(A):MY(A)}_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:A,height:t,aspect:i}=this._getSizeAndAspect();(A!==this.animationProps.width||t!==this.animationProps.height)&&this.setNeedsRedraw("drawing buffer resized"),i!==this.animationProps.aspect&&this.setNeedsRedraw("drawing buffer aspect changed"),this.animationProps.width=A,this.animationProps.height=t,this.animationProps.aspect=i,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(A){typeof A=="object"&&A!==null&&(this.animationProps=Object.assign({},this.animationProps,A))}_createWebGLContext(A){if(this.offScreen=A.canvas&&typeof OffscreenCanvas<"u"&&A.canvas instanceof OffscreenCanvas,A=Object.assign({},A,this.props.glOptions),this.gl=this.props.gl?Gp(this.props.gl,A):this.onCreateContext(A),!PE(this.gl))throw new Error("AnimationLoop.onCreateContext - illegal context returned");wY(this.gl),this._createInfoDiv()}_createInfoDiv(){if(this.gl.canvas&&this.props.onAddHTML){const A=document.createElement("div");document.body.appendChild(A),A.style.position="relative";const t=document.createElement("div");t.style.position="absolute",t.style.left="10px",t.style.bottom="10px",t.style.width="300px",t.style.background="white",A.appendChild(this.gl.canvas),A.appendChild(t);const i=this.props.onAddHTML(t);i&&(t.innerHTML=i)}}_getSizeAndAspect(){const A=this.gl.drawingBufferWidth,t=this.gl.drawingBufferHeight;let i=1;const{canvas:n}=this.gl;return n&&n.clientHeight?i=n.clientWidth/n.clientHeight:A>0&&t>0&&(i=A/t),{width:A,height:t,aspect:i}}_resizeViewport(){this.autoResizeViewport&&this.gl.viewport(0,0,this.gl.drawingBufferWidth,this.gl.drawingBufferHeight)}_resizeCanvasDrawingBuffer(){this.autoResizeDrawingBuffer&&xY(this.gl,{useDevicePixels:this.useDevicePixels})}_createFramebuffer(){this.props.createFramebuffer&&(this.framebuffer=new Xe(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:A}=this.gl;A&&(A.addEventListener("mousemove",this._onMousemove),A.addEventListener("mouseleave",this._onMouseleave))}_onMousemove(A){this.animationProps._mousePosition=[A.offsetX,A.offsetY]}_onMouseleave(A){this.animationProps._mousePosition=null}}const bl="vs",Up="fs";function ii(e,A){if(!e)throw new Error(A||"shadertools: assertion failed.")}const kh={number:{validate(e,A){return Number.isFinite(e)&&(!("max"in A)||e<=A.max)&&(!("min"in A)||e>=A.min)}},array:{validate(e,A){return Array.isArray(e)||ArrayBuffer.isView(e)}}};function x5(e){const A={};for(const t in e){const i=e[t],n=F5(i);A[t]=n}return A}function F5(e){let A=KS(e);return A==="object"?e?"type"in e?Object.assign({},e,kh[e.type]):"value"in e?(A=KS(e.value),Object.assign({type:A},e,kh[A])):{type:"object",value:e}:{type:"object",value:null}:Object.assign({type:A,value:e},kh[A])}function KS(e){return Array.isArray(e)||ArrayBuffer.isView(e)?"array":typeof e}const N5="vs",L5="fs";class VS{constructor(A){let{name:t,vs:i,fs:n,dependencies:r=[],uniforms:o,getUniforms:s,deprecations:a=[],defines:g={},inject:I={},vertexShader:l,fragmentShader:c}=A;ii(typeof t=="string"),this.name=t,this.vs=i||l,this.fs=n||c,this.getModuleUniforms=s,this.dependencies=r,this.deprecations=this._parseDeprecationDefinitions(a),this.defines=g,this.injections=b5(I),o&&(this.uniforms=x5(o))}getModuleSource(A){let t;switch(A){case N5:t=this.vs||"";break;case L5:t=this.fs||"";break;default:ii(!1)}return"#define MODULE_".concat(this.name.toUpperCase().replace(/[^0-9a-z]/gi,"_"),` +`).concat(t,"// END MODULE_").concat(this.name,` + +`)}getUniforms(A,t){return this.getModuleUniforms?this.getModuleUniforms(A,t):this.uniforms?this._defaultGetUniforms(A):{}}getDefines(){return this.defines}checkDeprecations(A,t){this.deprecations.forEach(i=>{i.regex.test(A)&&(i.deprecated?t.deprecated(i.old,i.new)():t.removed(i.old,i.new)())})}_parseDeprecationDefinitions(A){return A.forEach(t=>{switch(t.type){case"function":t.regex=new RegExp("\\b".concat(t.old,"\\("));break;default:t.regex=new RegExp("".concat(t.type," ").concat(t.old,";"))}}),A}_defaultGetUniforms(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const t={},i=this.uniforms;for(const n in i){const r=i[n];n in A&&!r.private?(r.validate&&ii(r.validate(A[n],r),"".concat(this.name,": invalid ").concat(n)),t[n]=A[n]):t[n]=r.value}return t}}function b5(e){const A={vs:{},fs:{}};for(const t in e){let i=e[t];const n=t.slice(0,2);typeof i=="string"&&(i={order:0,injection:i}),A[n][t]=i}return A}function G5(e){return _5(PL(e))}function _5(e){const A={},t={};return UL({modules:e,level:0,moduleMap:A,moduleDepth:t}),Object.keys(t).sort((i,n)=>t[n]-t[i]).map(i=>A[i])}function UL(e){let{modules:A,level:t,moduleMap:i,moduleDepth:n}=e;if(t>=5)throw new Error("Possible loop in shader dependency graph");for(const r of A)i[r.name]=r,(n[r.name]===void 0||n[r.name](t instanceof VS||(ii(typeof t!="string","Shader module use by name is deprecated. Import shader module '".concat(t,"' and use it directly.")),ii(t.name,"shader module has no name"),t=new VS(t),t.dependencies=PL(t.dependencies)),t))}function M5(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const A=typeof window<"u"?window.navigator||{}:{},t=e.userAgent||A.userAgent||"",i=t.indexOf("MSIE ")!==-1,n=t.indexOf("Trident/")!==-1;return i||n}const k5=7936,T5=7937,U5=7938,P5=35724,Pp={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]},ao={};Object.keys(Pp).forEach(e=>{ao[e]=e});function H5(e){return typeof WebGL2RenderingContext<"u"&&e instanceof WebGL2RenderingContext?!0:!!(e&&e._version===2)}function q5(e){const A=e.getExtension("WEBGL_debug_renderer_info"),t=e.getParameter(A&&A.UNMASKED_VENDOR_WEBGL||k5),i=e.getParameter(A&&A.UNMASKED_RENDERER_WEBGL||T5);return{gpuVendor:J5(t,i),vendor:t,renderer:i,version:e.getParameter(U5),shadingLanguageVersion:e.getParameter(P5)}}function J5(e,A){return e.match(/NVIDIA/i)||A.match(/NVIDIA/i)?"NVIDIA":e.match(/INTEL/i)||A.match(/INTEL/i)?"INTEL":e.match(/AMD/i)||A.match(/AMD/i)||e.match(/ATI/i)||A.match(/ATI/i)?"AMD":"UNKNOWN GPU"}const Th={};function WS(e,A){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const i=Pp[A];if(ii(i,A),!M5(t))return!0;if(A in Th)return Th[A];const n=i[0],r=t.behavior||"enable",o="#extension GL_".concat(n," : ").concat(r,` +void main(void) {}`),s=e.createShader(35633);e.shaderSource(s,o),e.compileShader(s);const a=e.getShaderParameter(s,35713);return e.deleteShader(s),Th[A]=a,a}function O5(e,A){const t=Pp[A];ii(t,A);const i=H5(e)&&t[1]||t[0],n=typeof i=="string"?!!e.getExtension(i):i;return ii(n===!1||n===!0),n}function vc(e,A){return A=Array.isArray(A)?A:[A],A.every(t=>O5(e,t))}function Y5(e){switch(q5(e).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 K5(e,A,t){let i=`#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 vc(e,ao.GLSL_FRAG_DEPTH)&&(i+=` +// 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 +`),vc(e,ao.GLSL_DERIVATIVES)&&WS(e,ao.GLSL_DERIVATIVES)&&(i+=` +// 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 +`),vc(e,ao.GLSL_FRAG_DATA)&&WS(e,ao.GLSL_FRAG_DATA,{behavior:"require"})&&(i+=` +// 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 +`),vc(e,ao.GLSL_TEXTURE_LOD)&&(i+=`// 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 +`),i}const V5=`#ifdef MODULE_LOGDEPTH + logdepth_adjustPosition(gl_Position); +#endif +`,W5=`#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 +`,z5={[bl]:V5,[Up]:W5},xC="__LUMA_INJECT_DECLARATIONS__",zS=/void\s+main\s*\([^)]*\)\s*\{\n?/,jS=/}\n?[^{}]*$/,Uh=[];function XS(e,A,t){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;const n=A===bl;for(const r in t){const o=t[r];o.sort((a,g)=>a.order-g.order),Uh.length=o.length;for(let a=0,g=o.length;aa+s));break;case"vs:#main-end":n&&(e=e.replace(jS,a=>s+a));break;case"fs:#decl":n||(e=e.replace(xC,s));break;case"fs:#main-start":n||(e=e.replace(zS,a=>a+s));break;case"fs:#main-end":n||(e=e.replace(jS,a=>s+a));break;default:e=e.replace(r,a=>a+s)}}return e=e.replace(xC,""),i&&(e=e.replace(/\}\s*$/,r=>r+z5[A])),e}function id(e){const A={};return ii(Array.isArray(e)&&e.length>1),e.forEach(t=>{for(const i in t)A[i]=A[i]?"".concat(A[i],` +`).concat(t[i]):t[i]}),A}function ua(e){return new RegExp("\\b".concat(e,"[ \\t]+(\\w+[ \\t]+\\w+(\\[\\w+\\])?;)"),"g")}const HL=[[/^(#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("]],j5=[...HL,[ua("attribute"),"in $1"],[ua("varying"),"out $1"]],X5=[...HL,[ua("varying"),"in $1"]],qL=[[/^#version[ \t]+300[ \t]+es/,"#version 100"],[/\btexture(2D|2DProj|Cube)Lod\(/g,"texture$1LodEXT("],[/\btexture\(/g,"texture2D("],[/\btextureLod\(/g,"texture2DLodEXT("]],Z5=[...qL,[ua("in"),"attribute $1"],[ua("out"),"varying $1"]],$5=[...qL,[ua("in"),"varying $1"]],nd="gl_FragColor",rd=/\bout[ \t]+vec4[ \t]+(\w+)[ \t]*;\n?/,A6=/void\s+main\s*\([^)]*\)\s*\{\n?/;function e6(e,A,t){switch(A){case 300:return t?xB(e,j5):t6(e);case 100:return t?xB(e,Z5):i6(e);default:throw new Error("unknown GLSL version ".concat(A))}}function xB(e,A){for(const[t,i]of A)e=e.replace(t,i);return e}function t6(e){e=xB(e,X5);const A=e.match(rd);if(A){const t=A[1];e=e.replace(new RegExp("\\b".concat(nd,"\\b"),"g"),t)}else{const t="fragmentColor";e=e.replace(A6,i=>"out vec4 ".concat(t,`; +`).concat(i)).replace(new RegExp("\\b".concat(nd,"\\b"),"g"),t)}return e}function i6(e){e=xB(e,$5);const A=e.match(rd);if(A){const t=A[1];e=e.replace(rd,"").replace(new RegExp("\\b".concat(t,"\\b"),"g"),nd)}return e}const n6=` + +`.concat(xC,` + +`),JL={[bl]:"vertex",[Up]:"fragment"},r6=`precision highp float; + +`;function o6(e,A){const{vs:t,fs:i}=A,n=G5(A.modules||[]);return{gl:e,vs:ZS(e,Object.assign({},A,{source:t,type:bl,modules:n})),fs:ZS(e,Object.assign({},A,{source:i,type:Up,modules:n})),getUniforms:s6(n)}}function ZS(e,A){let{id:t,source:i,type:n,modules:r,defines:o={},hookFunctions:s=[],inject:a={},transpileToGLSL100:g=!1,prologue:I=!0,log:l}=A;ii(typeof i=="string","shader source must be a string");const c=n===bl,C=i.split(` +`);let B=100,E="",u=i;C[0].indexOf("#version ")===0?(B=300,E=C[0],u=C.slice(1).join(` +`)):E="#version ".concat(B);const h={};r.forEach(v=>{Object.assign(h,v.getDefines())}),Object.assign(h,o);let f=I?"".concat(E,` +`).concat(g6({id:t,source:i,type:n}),` +`).concat(a6({type:n}),` +`).concat(Y5(e),` +`).concat(K5(e),` +`).concat(I6(h),` +`).concat(c?"":r6,` +`):"".concat(E,` +`);const Q=c6(s),d={},w={},m={};for(const v in a){const x=typeof a[v]=="string"?{injection:a[v],order:0}:a[v],D=v.match(/^(v|f)s:(#)?([\w-]+)$/);if(D){const F=D[2],N=D[3];F?N==="decl"?w[v]=[x]:m[v]=[x]:d[v]=[x]}else m[v]=[x]}for(const v of r){l&&v.checkDeprecations(u,l);const x=v.getModuleSource(n,B);f+=x;const D=v.injections[n];for(const F in D){const N=F.match(/^(v|f)s:#([\w-]+)$/);if(N){const P=N[2]==="decl"?w:m;P[F]=P[F]||[],P[F].push(D[F])}else d[F]=d[F]||[],d[F].push(D[F])}}return f+=n6,f=XS(f,n,w),f+=l6(Q[n],d),f+=u,f=XS(f,n,m),f=e6(f,g?100:B,c),f}function s6(e){return function(t){const i={};for(const n of e){const r=n.getUniforms(t,i);Object.assign(i,r)}return i}}function a6(e){let{type:A}=e;return` +#define SHADER_TYPE_`.concat(JL[A].toUpperCase(),` +`)}function g6(e){let{id:A,source:t,type:i}=e;return A&&typeof A=="string"&&t.indexOf("SHADER_NAME")===-1?` +#define SHADER_NAME `.concat(A,"_").concat(JL[i],` + +`):""}function I6(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},A=0,t="";for(const i in e){A===0&&(t+=` +// APPLICATION DEFINES +`),A++;const n=e[i];(n||Number.isFinite(n))&&(t+="#define ".concat(i.toUpperCase()," ").concat(e[i],` +`))}return A===0&&(t+=` +`),t}function l6(e,A){let t="";for(const i in e){const n=e[i];if(t+="void ".concat(n.signature,` { +`),n.header&&(t+=" ".concat(n.header)),A[i]){const r=A[i];r.sort((o,s)=>o.order-s.order);for(const o of r)t+=" ".concat(o.injection,` +`)}n.footer&&(t+=" ".concat(n.footer)),t+=`} +`}return t}function c6(e){const A={vs:{},fs:{}};return e.forEach(t=>{let i;typeof t!="string"?(i=t,t=i.hook):i={},t=t.trim();const[n,r]=t.split(":"),o=t.replace(/\(.+/,"");A[n][o]=Object.assign(i,{signature:r})}),A}const C6="void main() {gl_FragColor = vec4(0);}",OL=`out vec4 transform_output; +void main() { + transform_output = vec4(0); +}`,B6=`#version 300 es +`.concat(OL);function YL(e,A){A=Array.isArray(A)?A:[A];const t=e.replace(/^\s+/,"").split(/\s+/),[i,n,r]=t;if(!A.includes(i)||!n||!r)return null;const o=r.split(";")[0];return{qualifier:i,type:n,name:o}}function KL(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{version:A=100,input:t,inputType:i,output:n}=e;if(!t)return A===300?B6:A>300?"#version ".concat(A,` +`).concat(OL):C6;const r=h6(t,i);return A>=300?"#version ".concat(A," ").concat(A===300?"es":"",` +in `).concat(i," ").concat(t,`; +out vec4 `).concat(n,`; +void main() { + `).concat(n," = ").concat(r,`; +}`):"varying ".concat(i," ").concat(t,`; +void main() { + gl_FragColor = `).concat(r,`; +}`)}function E6(e){switch(e){case"float":return"x";case"vec2":return"xy";case"vec3":return"xyz";case"vec4":return"xyzw";default:return ii(!1),null}}function u6(e){switch(e){case"float":return 1;case"vec2":return 2;case"vec3":return 3;case"vec4":return 4;default:return ii(!1),null}}function h6(e,A){switch(A){case"float":return"vec4(".concat(e,", 0.0, 0.0, 1.0)");case"vec2":return"vec4(".concat(e,", 0.0, 1.0)");case"vec3":return"vec4(".concat(e,", 1.0)");case"vec4":return e;default:return ii(!1),null}}const f6=`#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 +} +`,Q6={name:"fp32",vs:f6,fs:null};function YI(e,A){if(!e)throw new Error("math.gl assertion ".concat(A))}const _t={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0};function d6(e,{precision:A=_t.precision}={}){return e=p6(e),"".concat(parseFloat(e.toPrecision(A)))}function _o(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function ut(e,A,t){return m6(e,i=>Math.max(A,Math.min(t,i)))}function So(e,A,t){return _o(e)?e.map((i,n)=>So(i,A[n],t)):t*A+(1-t)*e}function an(e,A,t){const i=_t.EPSILON;t&&(_t.EPSILON=t);try{if(e===A)return!0;if(_o(e)&&_o(A)){if(e.length!==A.length)return!1;for(let n=0;n0?", ":"")+d6(this[i],A);return"".concat(A.printTypes?this.constructor.name:"","[").concat(t,"]")}equals(A){if(!A||this.length!==A.length)return!1;for(let t=0;t=0&&A=0&&A0&&(r=1/Math.sqrt(r)),e[0]=A[0]*r,e[1]=A[1]*r,e[2]=A[2]*r,e}function $L(e,A){return e[0]*A[0]+e[1]*A[1]+e[2]*A[2]}function FC(e,A,t){var i=A[0],n=A[1],r=A[2],o=t[0],s=t[1],a=t[2];return e[0]=n*a-r*s,e[1]=r*o-i*a,e[2]=i*s-n*o,e}function k6(e,A,t,i){var n=A[0],r=A[1],o=A[2];return e[0]=n+i*(t[0]-n),e[1]=r+i*(t[1]-r),e[2]=o+i*(t[2]-o),e}function qp(e,A,t){var i=A[0],n=A[1],r=A[2],o=t[3]*i+t[7]*n+t[11]*r+t[15];return o=o||1,e[0]=(t[0]*i+t[4]*n+t[8]*r+t[12])/o,e[1]=(t[1]*i+t[5]*n+t[9]*r+t[13])/o,e[2]=(t[2]*i+t[6]*n+t[10]*r+t[14])/o,e}function Ab(e,A,t){var i=A[0],n=A[1],r=A[2];return e[0]=i*t[0]+n*t[3]+r*t[6],e[1]=i*t[1]+n*t[4]+r*t[7],e[2]=i*t[2]+n*t[5]+r*t[8],e}function eb(e,A,t){var i=t[0],n=t[1],r=t[2],o=t[3],s=A[0],a=A[1],g=A[2],I=n*g-r*a,l=r*s-i*g,c=i*a-n*s,C=n*c-r*l,B=r*I-i*c,E=i*l-n*I,u=o*2;return I*=u,l*=u,c*=u,C*=2,B*=2,E*=2,e[0]=s+I+C,e[1]=a+l+B,e[2]=g+c+E,e}function T6(e,A,t,i){var n=[],r=[];return n[0]=A[0]-t[0],n[1]=A[1]-t[1],n[2]=A[2]-t[2],r[0]=n[0],r[1]=n[1]*Math.cos(i)-n[2]*Math.sin(i),r[2]=n[1]*Math.sin(i)+n[2]*Math.cos(i),e[0]=r[0]+t[0],e[1]=r[1]+t[1],e[2]=r[2]+t[2],e}function U6(e,A,t,i){var n=[],r=[];return n[0]=A[0]-t[0],n[1]=A[1]-t[1],n[2]=A[2]-t[2],r[0]=n[2]*Math.sin(i)+n[0]*Math.cos(i),r[1]=n[1],r[2]=n[2]*Math.cos(i)-n[0]*Math.sin(i),e[0]=r[0]+t[0],e[1]=r[1]+t[1],e[2]=r[2]+t[2],e}function P6(e,A,t,i){var n=[],r=[];return n[0]=A[0]-t[0],n[1]=A[1]-t[1],n[2]=A[2]-t[2],r[0]=n[0]*Math.cos(i)-n[1]*Math.sin(i),r[1]=n[0]*Math.sin(i)+n[1]*Math.cos(i),r[2]=n[2],e[0]=r[0]+t[0],e[1]=r[1]+t[1],e[2]=r[2]+t[2],e}function H6(e,A){var t=e[0],i=e[1],n=e[2],r=A[0],o=A[1],s=A[2],a=Math.sqrt(t*t+i*i+n*n),g=Math.sqrt(r*r+o*o+s*s),I=a*g,l=I&&$L(e,A)/I;return Math.acos(Math.min(Math.max(l,-1),1))}var tb=b6,ib=L6,Ph=G6;(function(){var e=ZL();return function(A,t,i,n,r,o){var s,a;for(t||(t=3),i||(i=0),n?a=Math.min(n*t+i,A.length):a=A.length,s=i;s0?this.copy([A,...t]):this.identity()}copy(A){return this[0]=A[0],this[1]=A[1],this[2]=A[2],this[3]=A[3],this[4]=A[4],this[5]=A[5],this[6]=A[6],this[7]=A[7],this[8]=A[8],this.check()}identity(){return this.copy(z6)}fromObject(A){return this.check()}fromQuaternion(A){return W6(this,A),this.check()}set(A,t,i,n,r,o,s,a,g){return this[0]=A,this[1]=t,this[2]=i,this[3]=n,this[4]=r,this[5]=o,this[6]=s,this[7]=a,this[8]=g,this.check()}setRowMajor(A,t,i,n,r,o,s,a,g){return this[0]=A,this[1]=n,this[2]=s,this[3]=t,this[4]=r,this[5]=a,this[6]=i,this[7]=o,this[8]=g,this.check()}determinant(){return Y6(this)}transpose(){return J6(this,this),this.check()}invert(){return O6(this,this),this.check()}multiplyLeft(A){return AD(this,A,this),this.check()}multiplyRight(A){return AD(this,this,A),this.check()}rotate(A){return V6(this,this,A),this.check()}scale(A){return Array.isArray(A)?eD(this,this,A):eD(this,this,[A,A]),this.check()}translate(A){return K6(this,this,A),this.check()}transform(A,t){let i;switch(A.length){case 2:i=D6(t||[-0,-0],A,this);break;case 3:i=Ab(t||[-0,-0,-0],A,this);break;case 4:i=XL(t||[-0,-0,-0,-0],A,this);break;default:throw new Error("Illegal vector")}return lI(i,A.length),i}transformVector(A,t){return this.transform(A,t)}transformVector2(A,t){return this.transform(A,t)}transformVector3(A,t){return this.transform(A,t)}}let Rc,xc;function j6(){return Rc||(Rc=new ht([0,0,0,0,0,0,0,0,0]),Object.freeze(Rc)),Rc}function X6(){return xc||(xc=new ht,Object.freeze(xc)),xc}function Z6(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function $6(e,A){if(e===A){var t=A[1],i=A[2],n=A[3],r=A[6],o=A[7],s=A[11];e[1]=A[4],e[2]=A[8],e[3]=A[12],e[4]=t,e[6]=A[9],e[7]=A[13],e[8]=i,e[9]=r,e[11]=A[14],e[12]=n,e[13]=o,e[14]=s}else e[0]=A[0],e[1]=A[4],e[2]=A[8],e[3]=A[12],e[4]=A[1],e[5]=A[5],e[6]=A[9],e[7]=A[13],e[8]=A[2],e[9]=A[6],e[10]=A[10],e[11]=A[14],e[12]=A[3],e[13]=A[7],e[14]=A[11],e[15]=A[15];return e}function sd(e,A){var t=A[0],i=A[1],n=A[2],r=A[3],o=A[4],s=A[5],a=A[6],g=A[7],I=A[8],l=A[9],c=A[10],C=A[11],B=A[12],E=A[13],u=A[14],h=A[15],f=t*s-i*o,Q=t*a-n*o,d=t*g-r*o,w=i*a-n*s,m=i*g-r*s,v=n*g-r*a,x=I*E-l*B,D=I*u-c*B,F=I*h-C*B,N=l*u-c*E,k=l*h-C*E,P=c*h-C*u,H=f*P-Q*k+d*N+w*F-m*D+v*x;return H?(H=1/H,e[0]=(s*P-a*k+g*N)*H,e[1]=(n*k-i*P-r*N)*H,e[2]=(E*v-u*m+h*w)*H,e[3]=(c*m-l*v-C*w)*H,e[4]=(a*F-o*P-g*D)*H,e[5]=(t*P-n*F+r*D)*H,e[6]=(u*d-B*v-h*Q)*H,e[7]=(I*v-c*d+C*Q)*H,e[8]=(o*k-s*F+g*x)*H,e[9]=(i*F-t*k-r*x)*H,e[10]=(B*m-E*d+h*f)*H,e[11]=(l*d-I*m-C*f)*H,e[12]=(s*D-o*N-a*x)*H,e[13]=(t*N-i*D+n*x)*H,e[14]=(E*Q-B*w-u*f)*H,e[15]=(I*w-l*Q+c*f)*H,e):null}function A9(e){var A=e[0],t=e[1],i=e[2],n=e[3],r=e[4],o=e[5],s=e[6],a=e[7],g=e[8],I=e[9],l=e[10],c=e[11],C=e[12],B=e[13],E=e[14],u=e[15],h=A*o-t*r,f=A*s-i*r,Q=A*a-n*r,d=t*s-i*o,w=t*a-n*o,m=i*a-n*s,v=g*B-I*C,x=g*E-l*C,D=g*u-c*C,F=I*E-l*B,N=I*u-c*B,k=l*u-c*E;return h*k-f*N+Q*F+d*D-w*x+m*v}function Do(e,A,t){var i=A[0],n=A[1],r=A[2],o=A[3],s=A[4],a=A[5],g=A[6],I=A[7],l=A[8],c=A[9],C=A[10],B=A[11],E=A[12],u=A[13],h=A[14],f=A[15],Q=t[0],d=t[1],w=t[2],m=t[3];return e[0]=Q*i+d*s+w*l+m*E,e[1]=Q*n+d*a+w*c+m*u,e[2]=Q*r+d*g+w*C+m*h,e[3]=Q*o+d*I+w*B+m*f,Q=t[4],d=t[5],w=t[6],m=t[7],e[4]=Q*i+d*s+w*l+m*E,e[5]=Q*n+d*a+w*c+m*u,e[6]=Q*r+d*g+w*C+m*h,e[7]=Q*o+d*I+w*B+m*f,Q=t[8],d=t[9],w=t[10],m=t[11],e[8]=Q*i+d*s+w*l+m*E,e[9]=Q*n+d*a+w*c+m*u,e[10]=Q*r+d*g+w*C+m*h,e[11]=Q*o+d*I+w*B+m*f,Q=t[12],d=t[13],w=t[14],m=t[15],e[12]=Q*i+d*s+w*l+m*E,e[13]=Q*n+d*a+w*c+m*u,e[14]=Q*r+d*g+w*C+m*h,e[15]=Q*o+d*I+w*B+m*f,e}function NB(e,A,t){var i=t[0],n=t[1],r=t[2],o,s,a,g,I,l,c,C,B,E,u,h;return A===e?(e[12]=A[0]*i+A[4]*n+A[8]*r+A[12],e[13]=A[1]*i+A[5]*n+A[9]*r+A[13],e[14]=A[2]*i+A[6]*n+A[10]*r+A[14],e[15]=A[3]*i+A[7]*n+A[11]*r+A[15]):(o=A[0],s=A[1],a=A[2],g=A[3],I=A[4],l=A[5],c=A[6],C=A[7],B=A[8],E=A[9],u=A[10],h=A[11],e[0]=o,e[1]=s,e[2]=a,e[3]=g,e[4]=I,e[5]=l,e[6]=c,e[7]=C,e[8]=B,e[9]=E,e[10]=u,e[11]=h,e[12]=o*i+I*n+B*r+A[12],e[13]=s*i+l*n+E*r+A[13],e[14]=a*i+c*n+u*r+A[14],e[15]=g*i+C*n+h*r+A[15]),e}function Op(e,A,t){var i=t[0],n=t[1],r=t[2];return e[0]=A[0]*i,e[1]=A[1]*i,e[2]=A[2]*i,e[3]=A[3]*i,e[4]=A[4]*n,e[5]=A[5]*n,e[6]=A[6]*n,e[7]=A[7]*n,e[8]=A[8]*r,e[9]=A[9]*r,e[10]=A[10]*r,e[11]=A[11]*r,e[12]=A[12],e[13]=A[13],e[14]=A[14],e[15]=A[15],e}function e9(e,A,t,i){var n=i[0],r=i[1],o=i[2],s=Math.hypot(n,r,o),a,g,I,l,c,C,B,E,u,h,f,Q,d,w,m,v,x,D,F,N,k,P,H,W;return s0&&(o=1/Math.sqrt(o)),e[0]=t*o,e[1]=i*o,e[2]=n*o,e[3]=r*o,e}function u9(e,A){return e[0]*A[0]+e[1]*A[1]+e[2]*A[2]+e[3]*A[3]}function h9(e,A,t,i){var n=A[0],r=A[1],o=A[2],s=A[3];return e[0]=n+i*(t[0]-n),e[1]=r+i*(t[1]-r),e[2]=o+i*(t[2]-o),e[3]=s+i*(t[3]-s),e}function Ma(e,A,t){var i=A[0],n=A[1],r=A[2],o=A[3];return e[0]=t[0]*i+t[4]*n+t[8]*r+t[12]*o,e[1]=t[1]*i+t[5]*n+t[9]*r+t[13]*o,e[2]=t[2]*i+t[6]*n+t[10]*r+t[14]*o,e[3]=t[3]*i+t[7]*n+t[11]*r+t[15]*o,e}function f9(e,A,t){var i=A[0],n=A[1],r=A[2],o=t[0],s=t[1],a=t[2],g=t[3],I=g*i+s*r-a*n,l=g*n+a*i-o*r,c=g*r+o*n-s*i,C=-o*i-s*n-a*r;return e[0]=I*g+C*-o+l*-a-c*-s,e[1]=l*g+C*-s+c*-o-I*-a,e[2]=c*g+C*-a+I*-s-l*-o,e[3]=A[3],e}(function(){var e=l9();return function(A,t,i,n,r,o){var s,a;for(t||(t=4),i||(i=0),n?a=Math.min(n*t+i,A.length):a=A.length,s=i;sMath.PI*2)throw Error("expected radians")}function w9(e,A,t,i,n,r){const o=2*r/(t-A),s=2*r/(n-i),a=(t+A)/(t-A),g=(n+i)/(n-i),I=-1,l=-1,c=-2*r;return e[0]=o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=s,e[6]=0,e[7]=0,e[8]=a,e[9]=g,e[10]=I,e[11]=l,e[12]=0,e[13]=0,e[14]=c,e[15]=0,e}function iD(){var e=new Mi(4);return Mi!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function v9(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e}function sb(e,A,t){t=t*.5;var i=Math.sin(t);return e[0]=i*A[0],e[1]=i*A[1],e[2]=i*A[2],e[3]=Math.cos(t),e}function nD(e,A,t){var i=A[0],n=A[1],r=A[2],o=A[3],s=t[0],a=t[1],g=t[2],I=t[3];return e[0]=i*I+o*s+n*g-r*a,e[1]=n*I+o*a+r*s-i*g,e[2]=r*I+o*g+i*a-n*s,e[3]=o*I-i*s-n*a-r*g,e}function S9(e,A,t){t*=.5;var i=A[0],n=A[1],r=A[2],o=A[3],s=Math.sin(t),a=Math.cos(t);return e[0]=i*a+o*s,e[1]=n*a+r*s,e[2]=r*a-n*s,e[3]=o*a-i*s,e}function D9(e,A,t){t*=.5;var i=A[0],n=A[1],r=A[2],o=A[3],s=Math.sin(t),a=Math.cos(t);return e[0]=i*a-r*s,e[1]=n*a+o*s,e[2]=r*a+i*s,e[3]=o*a-n*s,e}function R9(e,A,t){t*=.5;var i=A[0],n=A[1],r=A[2],o=A[3],s=Math.sin(t),a=Math.cos(t);return e[0]=i*a+n*s,e[1]=n*a-i*s,e[2]=r*a+o*s,e[3]=o*a-r*s,e}function x9(e,A){var t=A[0],i=A[1],n=A[2];return e[0]=t,e[1]=i,e[2]=n,e[3]=Math.sqrt(Math.abs(1-t*t-i*i-n*n)),e}function NC(e,A,t,i){var n=A[0],r=A[1],o=A[2],s=A[3],a=t[0],g=t[1],I=t[2],l=t[3],c,C,B,E,u;return C=n*a+r*g+o*I+s*l,C<0&&(C=-C,a=-a,g=-g,I=-I,l=-l),1-C>cI?(c=Math.acos(C),B=Math.sin(c),E=Math.sin((1-i)*c)/B,u=Math.sin(i*c)/B):(E=1-i,u=i),e[0]=E*n+u*a,e[1]=E*r+u*g,e[2]=E*o+u*I,e[3]=E*s+u*l,e}function F9(e,A){var t=A[0],i=A[1],n=A[2],r=A[3],o=t*t+i*i+n*n+r*r,s=o?1/o:0;return e[0]=-t*s,e[1]=-i*s,e[2]=-n*s,e[3]=r*s,e}function N9(e,A){return e[0]=-A[0],e[1]=-A[1],e[2]=-A[2],e[3]=A[3],e}function ab(e,A){var t=A[0]+A[4]+A[8],i;if(t>0)i=Math.sqrt(t+1),e[3]=.5*i,i=.5/i,e[0]=(A[5]-A[7])*i,e[1]=(A[6]-A[2])*i,e[2]=(A[1]-A[3])*i;else{var n=0;A[4]>A[0]&&(n=1),A[8]>A[n*3+n]&&(n=2);var r=(n+1)%3,o=(n+2)%3;i=Math.sqrt(A[n*3+n]-A[r*3+r]-A[o*3+o]+1),e[n]=.5*i,i=.5/i,e[3]=(A[r*3+o]-A[o*3+r])*i,e[r]=(A[r*3+n]+A[n*3+r])*i,e[o]=(A[o*3+n]+A[n*3+o])*i}return e}var L9=c9,b9=Yp,G9=u9,_9=h9,M9=C9,k9=B9,gb=E9,T9=function(){var e=ZL(),A=$S(1,0,0),t=$S(0,1,0);return function(i,n,r){var o=$L(n,r);return o<-.999999?(FC(e,A,n),ib(e)<1e-6&&FC(e,t,n),M6(e,e),sb(i,e,Math.PI),i):o>.999999?(i[0]=0,i[1]=0,i[2]=0,i[3]=1,i):(FC(e,n,r),i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=1+o,gb(i,i))}}();(function(){var e=iD(),A=iD();return function(t,i,n,r,o,s){return NC(e,i,o,s),NC(A,n,r,s),NC(t,e,A,2*s*(1-s)),t}})();(function(){var e=q6();return function(A,t,i,n){return e[0]=i[0],e[3]=i[1],e[6]=i[2],e[1]=n[0],e[4]=n[1],e[7]=n[2],e[2]=-t[0],e[5]=-t[1],e[8]=-t[2],gb(A,ab(A,e))}})();const U9=[0,0,0,1];class rD extends Hp{constructor(A=0,t=0,i=0,n=1){super(-0,-0,-0,-0),Array.isArray(A)&&arguments.length===1?this.copy(A):this.set(A,t,i,n)}copy(A){return this[0]=A[0],this[1]=A[1],this[2]=A[2],this[3]=A[3],this.check()}set(A,t,i,n){return this[0]=A,this[1]=t,this[2]=i,this[3]=n,this.check()}fromObject(A){return this[0]=A.x,this[1]=A.y,this[2]=A.z,this[3]=A.w,this.check()}fromMatrix3(A){return ab(this,A),this.check()}fromAxisRotation(A,t){return sb(this,A,t),this.check()}identity(){return v9(this),this.check()}setAxisAngle(A,t){return this.fromAxisRotation(A,t)}get ELEMENTS(){return 4}get x(){return this[0]}set x(A){this[0]=De(A)}get y(){return this[1]}set y(A){this[1]=De(A)}get z(){return this[2]}set z(A){this[2]=De(A)}get w(){return this[3]}set w(A){this[3]=De(A)}len(){return M9(this)}lengthSquared(){return k9(this)}dot(A){return G9(this,A)}rotationTo(A,t){return T9(this,A,t),this.check()}add(A){return L9(this,this,A),this.check()}calculateW(){return x9(this,this),this.check()}conjugate(){return N9(this,this),this.check()}invert(){return F9(this,this),this.check()}lerp(A,t,i){return i===void 0?this.lerp(this,A,t):(_9(this,A,t,i),this.check())}multiplyRight(A){return nD(this,this,A),this.check()}multiplyLeft(A){return nD(this,A,this),this.check()}normalize(){const A=this.len(),t=A>0?1/A:0;return this[0]=this[0]*t,this[1]=this[1]*t,this[2]=this[2]*t,this[3]=this[3]*t,A===0&&(this[3]=1),this.check()}rotateX(A){return S9(this,this,A),this.check()}rotateY(A){return D9(this,this,A),this.check()}rotateZ(A){return R9(this,this,A),this.check()}scale(A){return b9(this,this,A),this.check()}slerp(A,t,i){let n,r,o;switch(arguments.length){case 1:({start:n=U9,target:r,ratio:o}=A);break;case 2:n=this,r=A,o=t;break;default:n=A,r=t,o=i}return NC(this,n,r,o),this.check()}transformVector4(A,t=new Jp){return f9(t,A,this),lI(t,4)}lengthSq(){return this.lengthSquared()}setFromAxisAngle(A,t){return this.setAxisAngle(A,t)}premultiply(A){return this.multiplyLeft(A)}multiply(A){return this.multiplyRight(A)}}const Ib={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},oD=`#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 +`,P9={lightSources:{}};function Oh(){let{color:e=[0,0,0],intensity:A=1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e.map(t=>t*A/255)}function H9(e){let{ambientLight:A,pointLights:t=[],directionalLights:i=[]}=e;const n={};return A?n["lighting_uAmbientLight.color"]=Oh(A):n["lighting_uAmbientLight.color"]=[0,0,0],t.forEach((r,o)=>{n["lighting_uPointLight[".concat(o,"].color")]=Oh(r),n["lighting_uPointLight[".concat(o,"].position")]=r.position,n["lighting_uPointLight[".concat(o,"].attenuation")]=r.attenuation||[1,0,0]}),n.lighting_uPointLightCount=t.length,i.forEach((r,o)=>{n["lighting_uDirectionalLight[".concat(o,"].color")]=Oh(r),n["lighting_uDirectionalLight[".concat(o,"].direction")]=r.direction}),n.lighting_uDirectionalLightCount=i.length,n}function lb(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:P9;if("lightSources"in e){const{ambientLight:A,pointLights:t,directionalLights:i}=e.lightSources||{};return A||t&&t.length>0||i&&i.length>0?Object.assign({},H9({ambientLight:A,pointLights:t,directionalLights:i}),{lighting_uEnabled:!0}):{lighting_uEnabled:!1}}if("lights"in e){const A={pointLights:[],directionalLights:[]};for(const t of e.lights||[])switch(t.type){case"ambient":A.ambientLight=t;break;case"directional":A.directionalLights.push(t);break;case"point":A.pointLights.push(t);break}return lb({lightSources:A})}return{}}const q9={name:"lights",vs:oD,fs:oD,getUniforms:lb,defines:{MAX_LIGHTS:3}},J9=new Uint8Array([0,255,255,255]),O9={pickingSelectedColor:null,pickingHighlightColor:J9,pickingActive:!1,pickingAttribute:!1};function Y9(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:O9;const A={};if(e.pickingSelectedColor!==void 0)if(!e.pickingSelectedColor)A.picking_uSelectedColorValid=0;else{const t=e.pickingSelectedColor.slice(0,3);A.picking_uSelectedColorValid=1,A.picking_uSelectedColor=t}if(e.pickingHighlightColor){const t=Array.from(e.pickingHighlightColor,i=>i/255);Number.isFinite(t[3])||(t[3]=1),A.picking_uHighlightColor=t}return e.pickingActive!==void 0&&(A.picking_uActive=!!e.pickingActive,A.picking_uAttribute=!!e.pickingAttribute),A}const K9=`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; + } +} +`,V9=`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); +} + +`,W9={name:"picking",vs:K9,fs:V9,getUniforms:Y9},z9=` +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; +} +`,j9={};function X9(e){const{ambient:A=.35,diffuse:t=.6,shininess:i=32,specularColor:n=[30,30,30]}=e;return{lighting_uAmbient:A,lighting_uDiffuse:t,lighting_uShininess:i,lighting_uSpecularColor:n.map(r=>r/255)}}function Z9(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:j9;if(!("material"in e))return{};const{material:A}=e;return A?X9(A):{lighting_uEnabled:!1}}const $9={name:"gouraud-lighting",dependencies:[q9],vs:z9,defines:{LIGHTING_VERTEX:1},getUniforms:Z9},AV=`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; +} +`,eV={name:"transform",vs:AV,fs:null};class is{static getDefaultProgramManager(A){return A.luma=A.luma||{},A.luma.defaultProgramManager=A.luma.defaultProgramManager||new is(A),A.luma.defaultProgramManager}constructor(A){this.gl=A,this._programCache={},this._getUniforms={},this._registeredModules={},this._hookFunctions=[],this._defaultModules=[],this._hashes={},this._hashCounter=0,this.stateHash=0,this._useCounts={}}addDefaultModule(A){this._defaultModules.find(t=>t.name===A.name)||this._defaultModules.push(A),this.stateHash++}removeDefaultModule(A){const t=typeof A=="string"?A:A.name;this._defaultModules=this._defaultModules.filter(i=>i.name!==t),this.stateHash++}addShaderHook(A,t){t&&(A=Object.assign(t,{hook:A})),this._hookFunctions.push(A),this.stateHash++}get(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{vs:t="",fs:i="",defines:n={},inject:r={},varyings:o=[],bufferMode:s=35981,transpileToGLSL100:a=!1}=A,g=this._getModuleList(A.modules),I=this._getHash(t),l=this._getHash(i),c=g.map(Q=>this._getHash(Q.name)).sort(),C=o.map(Q=>this._getHash(Q)),B=Object.keys(n).sort(),E=Object.keys(r).sort(),u=[],h=[];for(const Q of B)u.push(this._getHash(Q)),u.push(this._getHash(n[Q]));for(const Q of E)h.push(this._getHash(Q)),h.push(this._getHash(r[Q]));const f="".concat(I,"/").concat(l,"D").concat(u.join("/"),"M").concat(c.join("/"),"I").concat(h.join("/"),"V").concat(C.join("/"),"H").concat(this.stateHash,"B").concat(s).concat(a?"T":"");if(!this._programCache[f]){const Q=o6(this.gl,{vs:t,fs:i,modules:g,inject:r,defines:n,hookFunctions:this._hookFunctions,transpileToGLSL100:a});this._programCache[f]=new kL(this.gl,{hash:f,vs:Q.vs,fs:Q.fs,varyings:o,bufferMode:s}),this._getUniforms[f]=Q.getUniforms||(d=>{}),this._useCounts[f]=0}return this._useCounts[f]++,this._programCache[f]}getUniforms(A){return this._getUniforms[A.hash]||null}release(A){const t=A.hash;this._useCounts[t]--,this._useCounts[t]===0&&(this._programCache[t].delete(),delete this._programCache[t],delete this._getUniforms[t],delete this._useCounts[t])}_getHash(A){return this._hashes[A]===void 0&&(this._hashes[A]=this._hashCounter++),this._hashes[A]}_getModuleList(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];const t=new Array(this._defaultModules.length+A.length),i={};let n=0;for(let r=0,o=this._defaultModules.length;r{},aV={};class fi{constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{id:i=Mr("model")}=t;cA(PE(A)),this.id=i,this.gl=A,this.id=t.id||Mr("Model"),this.lastLogTime=0,this.animated=!1,this.initialize(t)}initialize(A){this.props={},this.programManager=A.programManager||is.getDefaultProgramManager(this.gl),this._programManagerState=-1,this._managedProgram=!1;const{program:t=null,vs:i,fs:n,modules:r,defines:o,inject:s,varyings:a,bufferMode:g,transpileToGLSL100:I}=A;this.programProps={program:t,vs:i,fs:n,modules:r,defines:o,inject:s,varyings:a,bufferMode:g,transpileToGLSL100:I},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(A.moduleSettings))),this.drawMode=A.drawMode!==void 0?A.drawMode:4,this.vertexCount=A.vertexCount||0,this.geometryBuffers={},this.isInstanced=A.isInstanced||A.instanced||A.instanceCount>0,this._setModelProps(A),this.geometry={},cA(this.drawMode!==void 0&&Number.isFinite(this.vertexCount),sV)}setProps(A){this._setModelProps(A)}delete(){for(const A in this._attributes)this._attributes[A]!==this.attributes[A]&&this._attributes[A].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(A){const{program:t,vs:i,fs:n,modules:r,defines:o,inject:s,varyings:a,bufferMode:g,transpileToGLSL100:I}=A;this.programProps={program:t,vs:i,fs:n,modules:r,defines:o,inject:s,varyings:a,bufferMode:g,transpileToGLSL100:I},this._programDirty=!0}getUniforms(){return this.uniforms}setDrawMode(A){return this.drawMode=A,this}setVertexCount(A){return cA(Number.isFinite(A)),this.vertexCount=A,this}setInstanceCount(A){return cA(Number.isFinite(A)),this.instanceCount=A,this}setGeometry(A){return this.drawMode=A.drawMode,this.vertexCount=A.getVertexCount(),this._deleteGeometryBuffers(),this.geometryBuffers=iV(this.gl,A),this.vertexArray.setAttributes(this.geometryBuffers),this}setAttributes(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(Ea(A))return this;const t={};for(const i in A){const n=A[i];t[i]=n.getValue?n.getValue():n}return this.vertexArray.setAttributes(t),this}setUniforms(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Object.assign(this.uniforms,A),this}getModuleUniforms(A){this._checkProgram();const t=this.programManager.getUniforms(this.program);return t?t(A):{}}updateModuleSettings(A){const t=this.getModuleUniforms(A||{});return this.setUniforms(t)}clear(A){return Mp(this.program.gl,A),this}draw(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._checkProgram();const{moduleSettings:t=null,framebuffer:i,uniforms:n={},attributes:r={},transformFeedback:o=this.transformFeedback,parameters:s={},vertexArray:a=this.vertexArray}=A;this.setAttributes(r),this.updateModuleSettings(t),this.setUniforms(n);let g;DA.priority>=hs&&(g=this._logDrawCallStart(hs));const I=this.vertexArray.getDrawParams(),{isIndexed:l=I.isIndexed,indexType:c=I.indexType,indexOffset:C=I.indexOffset,vertexArrayInstanced:B=I.isInstanced}=this.props;B&&!this.isInstanced&&DA.warn("Found instanced attributes on non-instanced model",this.id)();const{isInstanced:E,instanceCount:u}=this,{onBeforeRender:h=sD,onAfterRender:f=sD}=this.props;h(),this.program.setUniforms(this.uniforms);const Q=this.program.draw(Object.assign(aV,A,{logPriority:g,uniforms:null,framebuffer:i,parameters:s,drawMode:this.getDrawMode(),vertexCount:this.getVertexCount(),vertexArray:a,transformFeedback:o,isIndexed:l,indexType:c,isInstanced:E,instanceCount:u,offset:l?C:0}));return f(),DA.priority>=hs&&this._logDrawCallEnd(g,a,i),Q}transform(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{discard:t=!0,feedbackBuffers:i,unbindModels:n=[]}=A;let{parameters:r}=A;i&&this._setFeedbackBuffers(i),t&&(r=Object.assign({},r,{35977:t})),n.forEach(o=>o.vertexArray.unbindBuffers());try{this.draw(Object.assign({},A,{parameters:r}))}finally{n.forEach(o=>o.vertexArray.bindBuffers())}return this}render(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return DA.warn("Model.render() is deprecated. Use Model.setUniforms() and Model.draw()")(),this.setUniforms(A).draw()}_setModelProps(A){Object.assign(this.props,A),"uniforms"in A&&this.setUniforms(A.uniforms),"pickable"in A&&(this.pickable=A.pickable),"instanceCount"in A&&(this.instanceCount=A.instanceCount),"geometry"in A&&this.setGeometry(A.geometry),"attributes"in A&&this.setAttributes(A.attributes),"_feedbackBuffers"in A&&this._setFeedbackBuffers(A._feedbackBuffers)}_checkProgram(){if(!(this._programDirty||this.programManager.stateHash!==this._programManagerState))return;let{program:t}=this.programProps;if(t)this._managedProgram=!1;else{const{vs:i,fs:n,modules:r,inject:o,defines:s,varyings:a,bufferMode:g,transpileToGLSL100:I}=this.programProps;t=this.programManager.get({vs:i,fs:n,modules:r,inject:o,defines:s,varyings:a,bufferMode:g,transpileToGLSL100:I}),this.program&&this._managedProgram&&this.programManager.release(this.program),this._programManagerState=this.programManager.stateHash,this._managedProgram=!0}cA(t instanceof kL,"Model needs a program"),this._programDirty=!1,t!==this.program&&(this.program=t,this.vertexArray?this.vertexArray.setProps({program:this.program,attributes:this.vertexArray.attributes}):this.vertexArray=new p5(this.gl,{program:this.program}),this.setUniforms(Object.assign({},this.getModuleUniforms())))}_deleteGeometryBuffers(){for(const A in this.geometryBuffers){const t=this.geometryBuffers[A][0]||this.geometryBuffers[A];t instanceof me&&t.delete()}}_setAnimationProps(A){this.animated&&cA(A,"Model.draw(): animated uniforms but no animationProps")}_setFeedbackBuffers(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(Ea(A))return this;const{gl:t}=this.program;return this.transformFeedback=this.transformFeedback||new TL(t,{program:this.program}),this.transformFeedback.setBuffers(A),this}_logDrawCallStart(A){const t=A>3?0:oV;if(!(Date.now()-this.lastLogTime>> DRAWING MODEL ".concat(this.id),{collapsed:DA.level<=2})(),A}_logDrawCallEnd(A,t,i,n){if(A===void 0)return;const r=w5({vertexArray:t,header:"".concat(this.id," attributes"),attributes:this._attributes}),{table:o,unusedTable:s,unusedCount:a}=qS({header:"".concat(this.id," uniforms"),program:this.program,uniforms:Object.assign({},this.program.uniforms,i)}),{table:g,count:I}=qS({header:"".concat(this.id," uniforms"),program:this.program,uniforms:Object.assign({},this.program.uniforms,i),undefinedOnly:!0});I>0&&DA.log("MISSING UNIFORMS",Object.keys(g))(),a>0&&DA.log("UNUSED UNIFORMS",Object.keys(s))();const l=S5(this.vertexArray.configuration);DA.table(A,r)(),DA.table(A,o)(),DA.table(A+1,l)(),n&&n.log({logLevel:hs,message:"Rendered to ".concat(n.id)}),DA.groupEnd(hs)()}}class gV{constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=A,this.currentIndex=0,this.feedbackMap={},this.varyings=null,this.bindings=[],this.resources={},this._initialize(t),Object.seal(this)}setupResources(A){for(const t of this.bindings)this._setupTransformFeedback(t,A)}updateModelProps(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{varyings:t}=this;return t.length>0&&(A=Object.assign({},A,{varyings:t})),A}getDrawOptions(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const t=this.bindings[this.currentIndex],{sourceBuffers:i,transformFeedback:n}=t;return{attributes:Object.assign({},i,A.attributes),transformFeedback:n}}swap(){return this.feedbackMap?(this.currentIndex=this._getNextIndex(),!0):!1}update(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupBuffers(A)}getBuffer(A){const{feedbackBuffers:t}=this.bindings[this.currentIndex],i=A?t[A]:null;return i?i instanceof me?i:i.buffer:null}getData(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{varyingName:t}=A,i=this.getBuffer(t);return i?i.getData():null}delete(){for(const A in this.resources)this.resources[A].delete()}_initialize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupBuffers(A),this.varyings=A.varyings||Object.keys(this.bindings[this.currentIndex].feedbackBuffers),this.varyings.length>0&&cA(te(this.gl))}_getFeedbackBuffers(A){const{sourceBuffers:t={}}=A,i={};if(this.bindings[this.currentIndex]&&Object.assign(i,this.bindings[this.currentIndex].feedbackBuffers),this.feedbackMap)for(const n in this.feedbackMap){const r=this.feedbackMap[n];n in t&&(i[r]=n)}Object.assign(i,A.feedbackBuffers);for(const n in i){const r=i[n];if(typeof r=="string"){const o=t[r],{byteLength:s,usage:a,accessor:g}=o;i[n]=this._createNewBuffer(n,{byteLength:s,usage:a,accessor:g})}}return i}_setupBuffers(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{sourceBuffers:t=null}=A;Object.assign(this.feedbackMap,A.feedbackMap);const i=this._getFeedbackBuffers(A);this._updateBindings({sourceBuffers:t,feedbackBuffers:i})}_setupTransformFeedback(A,t){let{model:i}=t;const{program:n}=i;A.transformFeedback=new TL(this.gl,{program:n,buffers:A.feedbackBuffers})}_updateBindings(A){if(this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],A),this.feedbackMap){const{sourceBuffers:t,feedbackBuffers:i}=this._swapBuffers(this.bindings[this.currentIndex]),n=this._getNextIndex();this.bindings[n]=this._updateBinding(this.bindings[n],{sourceBuffers:t,feedbackBuffers:i})}}_updateBinding(A,t){return A?(Object.assign(A.sourceBuffers,t.sourceBuffers),Object.assign(A.feedbackBuffers,t.feedbackBuffers),A.transformFeedback&&A.transformFeedback.setBuffers(A.feedbackBuffers),A):{sourceBuffers:Object.assign({},t.sourceBuffers),feedbackBuffers:Object.assign({},t.feedbackBuffers)}}_swapBuffers(A){if(!this.feedbackMap)return null;const t=Object.assign({},A.sourceBuffers),i=Object.assign({},A.feedbackBuffers);for(const n in this.feedbackMap){const r=this.feedbackMap[n];t[n]=A.feedbackBuffers[r],i[r]=A.sourceBuffers[n],cA(i[r]instanceof me)}return{sourceBuffers:t,feedbackBuffers:i}}_createNewBuffer(A,t){const i=new me(this.gl,t);return this.resources[A]&&this.resources[A].delete(),this.resources[A]=i,i}_getNextIndex(){return(this.currentIndex+1)%2}}const IV="transform_uSampler_",LB="transform_uSize_",aD="transform_position";function lV(e){let{vs:A,sourceTextureMap:t,targetTextureVarying:i,targetTexture:n}=e,o=Object.keys(t).length,s=null;const a={};let g=A,I={};if(o>0||i){const l=g.split(` +`),c=l.slice();if(l.forEach((C,B,E)=>{if(o>0){const u=uV(C,t);if(u){const{updatedLine:h,inject:f}=u;c[B]=h,I=id([I,f]),Object.assign(a,u.samplerTextureMap),o--}}i&&!s&&(s=EV(C,i))}),i){cA(n);const C="".concat(LB).concat(i),B="uniform vec2 ".concat(C,`; +`),E=" vec2 ".concat(aD," = transform_getPos(").concat(C,`); + gl_Position = vec4(`).concat(aD,`, 0, 1.); +`);I=id([I,{"vs:#decl":B,"vs:#main-start":E}])}g=c.join(` +`)}return{vs:g,targetTextureType:s,inject:I,samplerTextureMap:a}}function cV(e){let{sourceTextureMap:A,targetTextureVarying:t,targetTexture:i}=e;const n={};let r,o;t&&({width:r,height:o}=i,n["".concat(LB).concat(t)]=[r,o]);for(const s in A)({width:r,height:o}=A[s]),n["".concat(LB).concat(s)]=[r,o];return n}function CV(e){return YL(e,["attribute","in"])}function BV(e){const A="".concat(IV).concat(e),t="".concat(LB).concat(e),i=" uniform sampler2D ".concat(A,`; + uniform vec2 `).concat(t,";");return{samplerName:A,sizeName:t,uniformDeclerations:i}}function EV(e,A){const t=YL(e,["varying","out"]);return t&&t.name===A?t.type:null}function uV(e,A){const t={},i=CV(e);if(!i)return null;const{type:n,name:r}=i;if(r&&A[r]){const o="// ".concat(e," => Replaced by Transform with a sampler"),{samplerName:s,sizeName:a,uniformDeclerations:g}=BV(r),I=E6(n),l=" ".concat(n," ").concat(r," = transform_getInput(").concat(s,", ").concat(a,").").concat(I,`; +`);return t[s]=r,{updatedLine:o,inject:{"vs:#decl":g,"vs:#main-start":l},samplerTextureMap:t}}return null}const hV={10241:9728,10240:9728,10242:33071,10243:33071},fV="transform_output";class QV{constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=A,this.id=this.currentIndex=0,this._swapTexture=null,this.targetTextureVarying=null,this.targetTextureType=null,this.samplerTextureMap=null,this.bindings=[],this.resources={},this._initialize(t),Object.seal(this)}updateModelProps(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const t=this._processVertexShader(A);return Object.assign({},A,t)}getDrawOptions(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{sourceBuffers:t,sourceTextures:i,framebuffer:n,targetTexture:r}=this.bindings[this.currentIndex],o=Object.assign({},t,A.attributes),s=Object.assign({},A.uniforms),a=Object.assign({},A.parameters);let g=A.discard;if(this.hasSourceTextures||this.hasTargetTexture){o.transform_elementID=this.elementIDBuffer;for(const l in this.samplerTextureMap){const c=this.samplerTextureMap[l];s[l]=i[c]}this._setSourceTextureParameters();const I=cV({sourceTextureMap:i,targetTextureVarying:this.targetTextureVarying,targetTexture:r});Object.assign(s,I)}return this.hasTargetTexture&&(g=!1,a.viewport=[0,0,n.width,n.height]),{attributes:o,framebuffer:n,uniforms:s,discard:g,parameters:a}}swap(){return this._swapTexture?(this.currentIndex=this._getNextIndex(),!0):!1}update(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupTextures(A)}getTargetTexture(){const{targetTexture:A}=this.bindings[this.currentIndex];return A}getData(){let{packed:A=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{framebuffer:t}=this.bindings[this.currentIndex],i=qE(t);if(!A)return i;const n=i.constructor,r=u6(this.targetTextureType),o=new n(i.length*r/4);let s=0;for(let a=0;a0&&arguments[0]!==void 0?arguments[0]:{};const{_targetTextureVarying:t,_swapTexture:i}=A;this._swapTexture=i,this.targetTextureVarying=t,this.hasTargetTexture=t,this._setupTextures(A)}_createTargetTexture(A){const{sourceTextures:t,textureOrReference:i}=A;if(i instanceof Tt)return i;const n=t[i];return n?(this._targetRefTexName=i,this._createNewTexture(n)):null}_setupTextures(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{sourceBuffers:t,_sourceTextures:i={},_targetTexture:n}=A,r=this._createTargetTexture({sourceTextures:i,textureOrReference:n});this.hasSourceTextures=this.hasSourceTextures||i&&Object.keys(i).length>0,this._updateBindings({sourceBuffers:t,sourceTextures:i,targetTexture:r}),"elementCount"in A&&this._updateElementIDBuffer(A.elementCount)}_updateElementIDBuffer(A){if(typeof A!="number"||this.elementCount>=A)return;const t=new Float32Array(A);t.forEach((i,n,r)=>{r[n]=n}),this.elementIDBuffer?this.elementIDBuffer.setData({data:t}):this.elementIDBuffer=new me(this.gl,{data:t,accessor:{size:1}}),this.elementCount=A}_updateBindings(A){if(this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],A),this._swapTexture){const{sourceTextures:t,targetTexture:i}=this._swapTextures(this.bindings[this.currentIndex]),n=this._getNextIndex();this.bindings[n]=this._updateBinding(this.bindings[n],{sourceTextures:t,targetTexture:i})}}_updateBinding(A,t){const{sourceBuffers:i,sourceTextures:n,targetTexture:r}=t;if(A||(A={sourceBuffers:{},sourceTextures:{},targetTexture:null}),Object.assign(A.sourceTextures,n),Object.assign(A.sourceBuffers,i),r){A.targetTexture=r;const{width:o,height:s}=r,{framebuffer:a}=A;a?(a.update({attachments:{36064:r},resizeAttachments:!1}),a.resize({width:o,height:s})):A.framebuffer=new Xe(this.gl,{id:"transform-framebuffer",width:o,height:s,attachments:{36064:r}})}return A}_setSourceTextureParameters(){const A=this.currentIndex,{sourceTextures:t}=this.bindings[A];for(const i in t)t[i].setParameters(hV)}_swapTextures(A){if(!this._swapTexture)return null;const t=Object.assign({},A.sourceTextures);t[this._swapTexture]=A.targetTexture;const i=A.sourceTextures[this._swapTexture];return{sourceTextures:t,targetTexture:i}}_createNewTexture(A){const t=bL(A,{parameters:{10241:9728,10240:9728,10242:33071,10243:33071},pixelStore:{37440:!1}});return this.ownTexture&&this.ownTexture.delete(),this.ownTexture=t,t}_getNextIndex(){return(this.currentIndex+1)%2}_processVertexShader(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{sourceTextures:t,targetTexture:i}=this.bindings[this.currentIndex],{vs:n,uniforms:r,targetTextureType:o,inject:s,samplerTextureMap:a}=lV({vs:A.vs,sourceTextureMap:t,targetTextureVarying:this.targetTextureVarying,targetTexture:i}),g=id([A.inject||{},s]);this.targetTextureType=o,this.samplerTextureMap=a;const I=A._fs||KL({version:_L(n),input:this.targetTextureVarying,inputType:o,output:fV}),l=this.hasSourceTextures||this.targetTextureVarying?[eV].concat(A.modules||[]):A.modules;return{vs:n,fs:I,modules:l,uniforms:r,inject:g}}}class Kp{static isSupported(A){return te(A)}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=A,this.model=null,this.elementCount=0,this.bufferTransform=null,this.textureTransform=null,this.elementIDBuffer=null,this._initialize(t),Object.seal(this)}delete(){const{model:A,bufferTransform:t,textureTransform:i}=this;A&&A.delete(),t&&t.delete(),i&&i.delete()}run(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{clearRenderTarget:t=!0}=A,i=this._updateDrawOptions(A);t&&i.framebuffer&&i.framebuffer.clear({color:!0}),this.model.transform(i)}swap(){let A=!1;const t=[this.bufferTransform,this.textureTransform].filter(Boolean);for(const i of t)A=A||i.swap();cA(A,"Nothing to swap")}getBuffer(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return this.bufferTransform&&this.bufferTransform.getBuffer(A)}getData(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const t=[this.bufferTransform,this.textureTransform].filter(Boolean);for(const i of t){const n=i.getData(A);if(n)return n}return null}getFramebuffer(){return this.textureTransform&&this.textureTransform.getFramebuffer()}update(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};"elementCount"in A&&this.model.setVertexCount(A.elementCount);const t=[this.bufferTransform,this.textureTransform].filter(Boolean);for(const i of t)i.update(A)}_initialize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{gl:t}=this;this._buildResourceTransforms(t,A),A=this._updateModelProps(A),this.model=new fi(t,Object.assign({},A,{fs:A.fs||KL({version:_L(A.vs)}),id:A.id||"transform-model",drawMode:A.drawMode||0,vertexCount:A.elementCount})),this.bufferTransform&&this.bufferTransform.setupResources({model:this.model})}_updateModelProps(A){let t=Object.assign({},A);const i=[this.bufferTransform,this.textureTransform].filter(Boolean);for(const n of i)t=n.updateModelProps(t);return t}_buildResourceTransforms(A,t){dV(t)&&(this.bufferTransform=new gV(A,t)),pV(t)&&(this.textureTransform=new QV(A,t)),cA(this.bufferTransform||this.textureTransform,"must provide source/feedback buffers or source/target textures")}_updateDrawOptions(A){let t=Object.assign({},A);const i=[this.bufferTransform,this.textureTransform].filter(Boolean);for(const n of i)t=Object.assign(t,n.getDrawOptions(t));return t}}function dV(e){return!!(!Ea(e.feedbackBuffers)||!Ea(e.feedbackMap)||e.varyings&&e.varyings.length>0)}function pV(e){return!!(!Ea(e._sourceTextures)||e._targetTexture||e._targetTextureVarying)}const gD={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6};class Cn{static get DRAW_MODE(){return gD}constructor(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{id:t=Mr("geometry"),drawMode:i=gD.TRIANGLES,attributes:n={},indices:r=null,vertexCount:o=null}=A;this.id=t,this.drawMode=i|0,this.attributes={},this.userData={},this._setAttributes(n,r),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(A){return"Geometry ".concat(this.id," attribute ").concat(A)}_setAttributes(A,t){t&&(this.indices=ArrayBuffer.isView(t)?{value:t,size:1}:t);for(const i in A){let n=A[i];n=ArrayBuffer.isView(n)?{value:n}:n,cA(ArrayBuffer.isView(n.value),"".concat(this._print(i),": must be typed array or object with value as typed array")),(i==="POSITION"||i==="positions")&&!n.size&&(n.size=3),i==="indices"?(cA(!this.indices),this.indices=n):this.attributes[i]=n}return this.indices&&this.indices.isIndexed!==void 0&&(this.indices=Object.assign({},this.indices),delete this.indices.isIndexed),this}_calculateVertexCount(A,t){if(t)return t.value.length;let i=1/0;for(const n in A){const r=A[n],{value:o,size:s,constant:a}=r;!a&&o&&s>=1&&(i=Math.min(i,o.length/s))}return cA(Number.isFinite(i)),i}}let yV=1,mV=1;class cb{constructor(){this.time=0,this.channels=new Map,this.animations=new Map,this.playing=!1,this.lastEngineTime=-1}addChannel(A){const{delay:t=0,duration:i=Number.POSITIVE_INFINITY,rate:n=1,repeat:r=1}=A,o=yV++,s={time:0,delay:t,duration:i,rate:n,repeat:r};return this._setChannelTime(s,this.time),this.channels.set(o,s),o}removeChannel(A){this.channels.delete(A);for(const[t,i]of this.animations)i.channel===A&&this.detachAnimation(t)}isFinished(A){const t=this.channels.get(A);return t===void 0?!1:this.time>=t.delay+t.duration*t.repeat}getTime(A){if(A===void 0)return this.time;const t=this.channels.get(A);return t===void 0?-1:t.time}setTime(A){this.time=Math.max(0,A);const t=this.channels.values();for(const n of t)this._setChannelTime(n,this.time);const i=this.animations.values();for(const n of i){const{animation:r,channel:o}=n;r.setTime(this.getTime(o))}}play(){this.playing=!0}pause(){this.playing=!1,this.lastEngineTime=-1}reset(){this.setTime(0)}attachAnimation(A,t){const i=mV++;return this.animations.set(i,{animation:A,channel:t}),A.setTime(this.getTime(t)),i}detachAnimation(A){this.animations.delete(A)}update(A){this.playing&&(this.lastEngineTime===-1&&(this.lastEngineTime=A),this.setTime(this.time+(A-this.lastEngineTime)),this.lastEngineTime=A)}_setChannelTime(A,t){const i=t-A.delay,n=A.duration*A.repeat;i>=n?A.time=A.duration*A.rate:(A.time=Math.max(0,i)%A.duration,A.time*=A.rate)}}const Cb="#define SMOOTH_EDGE_RADIUS 0.5",wV=` +`.concat(Cb,` + +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) +); +`),vV=` +`.concat(Cb,` + +struct FragmentGeometry { + vec2 uv; +} geometry; + +float smoothedge(float edge, float x) { + return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x); +} +`),SV={name:"geometry",vs:wV,fs:vV},HA={DEFAULT:-1,LNGLAT:1,METER_OFFSETS:2,LNGLAT_OFFSETS:3,CARTESIAN:0};Object.defineProperty(HA,"IDENTITY",{get:()=>($A.deprecated("COORDINATE_SYSTEM.IDENTITY","COORDINATE_SYSTEM.CARTESIAN")(),0)});const Fi={WEB_MERCATOR:1,GLOBE:2,WEB_MERCATOR_AUTO_OFFSET:4,IDENTITY:0},kr={common:0,meters:1,pixels:2},ID={click:{handler:"onClick"},panstart:{handler:"onDragStart"},panmove:{handler:"onDrag"},panend:{handler:"onDragEnd"}},Gl={DRAW:"draw",MASK:"mask"},DV=Object.keys(HA).map(e=>"const int COORDINATE_SYSTEM_".concat(e," = ").concat(HA[e],";")).join(""),RV=Object.keys(Fi).map(e=>"const int PROJECTION_MODE_".concat(e," = ").concat(Fi[e],";")).join(""),xV=Object.keys(kr).map(e=>"const int UNIT_".concat(e.toUpperCase()," = ").concat(kr[e],";")).join(""),FV="".concat(DV,` +`).concat(RV,` +`).concat(xV,` + +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() { + 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) { + float y = clamp(geometry.worldPosition.y, -89.9, 89.9); + return 1.0 / cos(radians(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; +} +// +// 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(position_world.z), + 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 NV(e,A){if(e===A)return!0;if(Array.isArray(e)){const t=e.length;if(!A||A.length!==t)return!1;for(let i=0;i{for(const n in i)if(!NV(i[n],A[n])){t=e(i),A=i;break}return t}}const lD=[0,0,0,0],LV=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],Bb=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],bV=[0,0,0],Eb=[0,0,0],GV=_l(kV);function ub(e,A,t=Eb){t.length<3&&(t=[t[0],t[1],0]);let i=t,n,r=!0;switch(A===HA.LNGLAT_OFFSETS||A===HA.METER_OFFSETS?n=t:n=e.isGeospatial?[Math.fround(e.longitude),Math.fround(e.latitude),0]:null,e.projectionMode){case Fi.WEB_MERCATOR:(A===HA.LNGLAT||A===HA.CARTESIAN)&&(n=[0,0,0],r=!1);break;case Fi.WEB_MERCATOR_AUTO_OFFSET:A===HA.LNGLAT?i=n:A===HA.CARTESIAN&&(i=[Math.fround(e.center[0]),Math.fround(e.center[1]),0],n=e.unprojectPosition(i),i[0]-=t[0],i[1]-=t[1],i[2]-=t[2]);break;case Fi.IDENTITY:i=e.position.map(Math.fround),i[2]=i[2]||0;break;case Fi.GLOBE:r=!1,n=null;break;default:r=!1}return{geospatialOrigin:n,shaderCoordinateOrigin:i,offsetMode:r}}function _V(e,A,t){const{viewMatrixUncentered:i,projectionMatrix:n}=e;let{viewMatrix:r,viewProjectionMatrix:o}=e,s=lD,a=lD,g=e.cameraPosition;const{geospatialOrigin:I,shaderCoordinateOrigin:l,offsetMode:c}=ub(e,A,t);return c&&(a=e.projectPosition(I||l),g=[g[0]-a[0],g[1]-a[1],g[2]-a[2]],a[3]=1,s=Ma([],a,o),r=i||r,o=Do([],n,r),o=Do([],o,LV)),{viewMatrix:r,viewProjectionMatrix:o,projectionCenter:s,originCommon:a,cameraPosCommon:g,shaderCoordinateOrigin:l,geospatialOrigin:I}}function MV({viewport:e,devicePixelRatio:A=1,modelMatrix:t=null,coordinateSystem:i=HA.DEFAULT,coordinateOrigin:n=Eb,autoWrapLongitude:r=!1}){i===HA.DEFAULT&&(i=e.isGeospatial?HA.LNGLAT:HA.CARTESIAN);const o=GV({viewport:e,devicePixelRatio:A,coordinateSystem:i,coordinateOrigin:n});return o.project_uWrapLongitude=r,o.project_uModelMatrix=t||Bb,o}function kV({viewport:e,devicePixelRatio:A,coordinateSystem:t,coordinateOrigin:i}){const{projectionCenter:n,viewProjectionMatrix:r,originCommon:o,cameraPosCommon:s,shaderCoordinateOrigin:a,geospatialOrigin:g}=_V(e,t,i),I=e.getDistanceScales(),l=[e.width*A,e.height*A],c=Ma([],[0,0,-e.focalDistance,1],e.projectionMatrix)[3]||1,C={project_uCoordinateSystem:t,project_uProjectionMode:e.projectionMode,project_uCoordinateOrigin:a,project_uCommonOrigin:o.slice(0,3),project_uCenter:n,project_uPseudoMeters:!!e._pseudoMeters,project_uViewportSize:l,project_uDevicePixelRatio:A,project_uFocalDistance:c,project_uCommonUnitsPerMeter:I.unitsPerMeter,project_uCommonUnitsPerWorldUnit:I.unitsPerMeter,project_uCommonUnitsPerWorldUnit2:bV,project_uScale:e.scale,project_uWrapLongitude:!1,project_uViewProjectionMatrix:r,project_uModelMatrix:Bb,project_uCameraPosition:s};if(g){const B=e.getDistanceScales(g);switch(t){case HA.METER_OFFSETS:C.project_uCommonUnitsPerWorldUnit=B.unitsPerMeter,C.project_uCommonUnitsPerWorldUnit2=B.unitsPerMeter2;break;case HA.LNGLAT:case HA.LNGLAT_OFFSETS:e._pseudoMeters||(C.project_uCommonUnitsPerMeter=B.unitsPerMeter),C.project_uCommonUnitsPerWorldUnit=B.unitsPerDegree,C.project_uCommonUnitsPerWorldUnit2=B.unitsPerDegree2;break;case HA.CARTESIAN:C.project_uCommonUnitsPerWorldUnit=[1,1,B.unitsPerMeter[2]],C.project_uCommonUnitsPerWorldUnit2=[0,0,B.unitsPerMeter2[2]];break}}return C}const TV={};function UV(e=TV){return"viewport"in e?MV(e):{}}const Vp={name:"project",dependencies:[Q6,SV],vs:FV,getUniforms:UV},PV=` +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); +} +`,zr={name:"project32",dependencies:[Vp],vs:PV};function HV(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function ta(e,A){const t=Ma([],A,e);return Yp(t,t,1/t[3]),t}function cD(e,A){const t=e%A;return t<0?A+t:t}function gd(e,A,t){return et?t:e}function qV(e){return Math.log(e)*Math.LOG2E}const Wp=Math.log2||qV;function Tn(e,A){if(!e)throw new Error(A||"@math.gl/web-mercator: assertion failed.")}const Ni=Math.PI,hb=Ni/4,bi=Ni/180,Id=180/Ni,KI=512,ld=4003e4,Lc=85.051129,JV=1.5;function OV(e){return Wp(e)}function Tr(e){const[A,t]=e;Tn(Number.isFinite(A)),Tn(Number.isFinite(t)&&t>=-90&&t<=90,"invalid latitude");const i=A*bi,n=t*bi,r=KI*(i+Ni)/(2*Ni),o=KI*(Ni+Math.log(Math.tan(hb+n*.5)))/(2*Ni);return[r,o]}function ha(e){const[A,t]=e,i=A/KI*(2*Ni)-Ni,n=2*(Math.atan(Math.exp(t/KI*(2*Ni)-Ni))-hb);return[i*Id,n*Id]}function YV(e){const{latitude:A}=e;Tn(Number.isFinite(A));const t=Math.cos(A*bi);return OV(ld*t)-9}function cd(e){const{latitude:A,longitude:t,highPrecision:i=!1}=e;Tn(Number.isFinite(A)&&Number.isFinite(t));const n=KI,r=Math.cos(A*bi),o=n/360,s=o/r,a=n/ld/r,g={unitsPerMeter:[a,a,a],metersPerUnit:[1/a,1/a,1/a],unitsPerDegree:[o,s,a],degreesPerUnit:[1/o,1/s,1/a]};if(i){const I=bi*Math.tan(A*bi)/r,l=o*I/2,c=n/ld*I,C=c/s*a;g.unitsPerDegree2=[0,l,c],g.unitsPerMeter2=[C,0,C]}return g}function fb(e,A){const[t,i,n]=e,[r,o,s]=A,{unitsPerMeter:a,unitsPerMeter2:g}=cd({longitude:t,latitude:i,highPrecision:!0}),I=Tr(e);I[0]+=r*(a[0]+g[0]*o),I[1]+=o*(a[1]+g[1]*o);const l=ha(I),c=(n||0)+(s||0);return Number.isFinite(n)||Number.isFinite(s)?[l[0],l[1],c]:l}function KV(e){const{height:A,pitch:t,bearing:i,altitude:n,scale:r,center:o}=e,s=HV();NB(s,s,[0,0,-n]),rb(s,s,-t*bi),ob(s,s,i*bi);const a=r/A;return Op(s,s,[a,a,a]),o&&NB(s,s,_6([],o)),s}function VV(e){const{width:A,height:t,altitude:i,pitch:n=0,offset:r,center:o,scale:s,nearZMultiplier:a=1,farZMultiplier:g=1}=e;let{fovy:I=bB(JV)}=e;i!==void 0&&(I=bB(i));const l=I*bi,c=n*bi,C=zp(I);let B=C;o&&(B+=o[2]*s/Math.cos(c)/t);const E=l*(.5+(r?r[1]:0)/t),u=Math.sin(E)*B/Math.sin(gd(Math.PI/2-c-E,.01,Math.PI-.01)),h=Math.sin(c)*u+B,f=B*10,Q=Math.min(h*g,f);return{fov:l,aspect:A/t,focalDistance:C,near:a,far:Q}}function bB(e){return 2*Math.atan(.5/e)*Id}function zp(e){return .5/Math.tan(.5*e*bi)}function Qb(e,A){const[t,i,n=0]=e;return Tn(Number.isFinite(t)&&Number.isFinite(i)&&Number.isFinite(n)),ta(A,[t,i,n,1])}function Ml(e,A,t=0){const[i,n,r]=e;if(Tn(Number.isFinite(i)&&Number.isFinite(n),"invalid pixel coordinate"),Number.isFinite(r))return ta(A,[i,n,r,1]);const o=ta(A,[i,n,0,1]),s=ta(A,[i,n,1,1]),a=o[2],g=s[2],I=a===g?0:((t||0)-a)/(g-a);return zL([],o,s,I)}function db(e){const{width:A,height:t,bounds:i,minExtent:n=0,maxZoom:r=24,offset:o=[0,0]}=e,[[s,a],[g,I]]=i,l=WV(e.padding),c=Tr([s,gd(I,-Lc,Lc)]),C=Tr([g,gd(a,-Lc,Lc)]),B=[Math.max(Math.abs(C[0]-c[0]),n),Math.max(Math.abs(C[1]-c[1]),n)],E=[A-l.left-l.right-Math.abs(o[0])*2,t-l.top-l.bottom-Math.abs(o[1])*2];Tn(E[0]>0&&E[1]>0);const u=E[0]/B[0],h=E[1]/B[1],f=(l.right-l.left)/2/u,Q=(l.top-l.bottom)/2/h,d=[(C[0]+c[0])/2+f,(C[1]+c[1])/2+Q],w=ha(d),m=Math.min(r,Wp(Math.abs(Math.min(u,h))));return Tn(Number.isFinite(m)),{longitude:w[0],latitude:w[1],zoom:m}}function WV(e=0){return typeof e=="number"?{top:e,bottom:e,left:e,right:e}:(Tn(Number.isFinite(e.top)&&Number.isFinite(e.bottom)&&Number.isFinite(e.left)&&Number.isFinite(e.right)),e)}const CD=Math.PI/180;function zV(e,A=0){const{width:t,height:i,unproject:n}=e,r={targetZ:A},o=n([0,i],r),s=n([t,i],r);let a,g;const I=e.fovy?.5*e.fovy*CD:Math.atan(.5/e.altitude),l=(90-e.pitch)*CD;return I>l-.01?(a=BD(e,0,A),g=BD(e,t,A)):(a=n([0,0],r),g=n([t,0],r)),[o,s,g,a]}function BD(e,A,t){const{pixelUnprojectionMatrix:i}=e,n=ta(i,[A,0,1,1]),r=ta(i,[A,e.height,1,1]),s=(t*e.distanceScales.unitsPerMeter[2]-n[2])/(r[2]-n[2]),a=zL([],n,r,s),g=ha(a);return g.push(t),g}const ED=512;function jV(e){const{width:A,height:t,pitch:i=0}=e;let{longitude:n,latitude:r,zoom:o,bearing:s=0}=e;(n<-180||n>180)&&(n=cD(n+180,360)-180),(s<-180||s>180)&&(s=cD(s+180,360)-180);const a=Wp(t/ED);if(o<=a)o=a,r=0;else{const g=t/2/Math.pow(2,o),I=ha([0,g])[1];if(rl&&(r=l)}}return{width:A,height:t,longitude:n,latitude:r,zoom:o,pitch:i,bearing:s}}const XV=` +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; +} +`,ZV=` +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; +} +`,$V=_l(nW),AW=_l(rW),eW=[0,0,0,1],tW=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0];function iW(e,A){const[t,i,n]=e,r=Ml([t,i,n],A);return Number.isFinite(n)?r:[r[0],r[1],0]}function nW({viewport:e,center:A}){return new he(e.viewProjectionMatrix).invert().transform(A)}function rW({viewport:e,shadowMatrices:A}){const t=[],i=e.pixelUnprojectionMatrix,n=e.isGeospatial?void 0:1,r=[[0,0,n],[e.width,0,n],[0,e.height,n],[e.width,e.height,n],[0,0,-1],[e.width,0,-1],[0,e.height,-1],[e.width,e.height,-1]].map(o=>iW(o,i));for(const o of A){const s=o.clone().translate(new hA(e.center).negate()),a=r.map(I=>s.transform(I)),g=new he().ortho({left:Math.min(...a.map(I=>I[0])),right:Math.max(...a.map(I=>I[0])),bottom:Math.min(...a.map(I=>I[1])),top:Math.max(...a.map(I=>I[1])),near:Math.min(...a.map(I=>-I[2])),far:Math.max(...a.map(I=>-I[2]))});t.push(g.multiplyRight(o))}return t}function oW(e,A){const{shadowEnabled:t=!0}=e;if(!t||!e.shadowMatrices||!e.shadowMatrices.length)return{shadow_uDrawShadowMap:!1,shadow_uUseShadowMap:!1};const i={shadow_uDrawShadowMap:!!e.drawToShadowMap,shadow_uUseShadowMap:e.shadowMaps?e.shadowMaps.length>0:!1,shadow_uColor:e.shadowColor||eW,shadow_uLightId:e.shadowLightId||0,shadow_uLightCount:e.shadowMatrices.length},n=$V({viewport:e.viewport,center:A.project_uCenter}),r=[],o=AW({shadowMatrices:e.shadowMatrices,viewport:e.viewport}).slice();for(let s=0;s0?i["shadow_uShadowMap".concat(s)]=e.shadowMaps[s]:i["shadow_uShadowMap".concat(s)]=e.dummyShadowMap;return i}const Yh={name:"shadow",dependencies:[Vp],vs:XV,fs:ZV,inject:{"vs:DECKGL_FILTER_GL_POSITION":` + position = shadow_setVertexPosition(geometry.position); + `,"fs:DECKGL_FILTER_COLOR":` + color = shadow_filterShadowColor(color); + `},getUniforms:(e={},A={})=>"viewport"in e&&(e.drawToShadowMap||e.shadowMaps&&e.shadowMaps.length>0)?oW(e,A):{}},jr={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); + `}},...W9},sW=[Vp],aW=["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 gW(e){const A=is.getDefaultProgramManager(e);for(const t of sW)A.addDefaultModule(t);for(const t of aW)A.addShaderHook(t);return A}const IW=[255,255,255],lW=1;let cW=0;class CW{constructor(A={}){y(this,"id",void 0),y(this,"color",void 0),y(this,"intensity",void 0),y(this,"type","ambient");const{color:t=IW}=A,{intensity:i=lW}=A;this.id=A.id||"ambient-".concat(cW++),this.color=t,this.intensity=i}}const BW=[255,255,255],EW=1,uW=[0,0,-1];let hW=0;class uD{constructor(A={}){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:t=BW}=A,{intensity:i=EW}=A,{direction:n=uW}=A,{_shadow:r=!1}=A;this.id=A.id||"directional-".concat(hW++),this.color=t,this.intensity=i,this.type="directional",this.direction=new hA(n).normalize().toArray(),this.shadow=r}getProjectedLight(A){return this}}class fW{constructor(A,t={id:"pass"}){y(this,"id",void 0),y(this,"gl",void 0),y(this,"props",void 0);const{id:i}=t;this.id=i,this.gl=A,this.props={...t}}setProps(A){Object.assign(this.props,A)}render(A){}cleanup(){}}class JE extends fW{constructor(...A){super(...A),y(this,"_lastRenderIndex",-1)}render(A){const t=this.gl;return kn(t,{framebuffer:A.target}),this._drawLayers(A)}_drawLayers(A){const{target:t,moduleParameters:i,viewports:n,views:r,onViewportActive:o,clearStack:s=!0,clearCanvas:a=!0}=A;A.pass=A.pass||"unknown";const g=this.gl;a&&dW(g),s&&(this._lastRenderIndex=-1);const I=[];for(const l of n){const c=r&&r[l.id];o(l);const C=this._getDrawLayerParams(l,A),B=l.subViewports||[l];for(const E of B){const u=this._drawLayersInViewport(g,{target:t,moduleParameters:i,viewport:E,view:c,pass:A.pass,layers:A.layers},C);I.push(u)}}return I}_getDrawLayerParams(A,{layers:t,pass:i,layerFilter:n,cullRect:r,effects:o,moduleParameters:s}){const a=[],g=pb(this._lastRenderIndex+1),I={layer:t[0],viewport:A,isPicking:i.startsWith("picking"),renderPass:i,cullRect:r},l={};for(let c=0;cMp(A,l))}const I={totalCount:t.length,visibleCount:0,compositeCount:0,pickableCount:0};kn(A,{viewport:g});for(let l=0;l{const o=n.props._offset,s=n.id,a=n.parent&&n.parent.id;let g;if(a&&!(a in A)&&i(n.parent,!1),a in t){const I=t[a]=t[a]||pb(A[a],A);g=I(n,r),t[s]=I}else Number.isFinite(o)?(g=o+(A[a]||0),t[s]=null):g=e;return r&&g>=e&&(e=g+1),A[s]=g,g};return i}function QW(e,{moduleParameters:A,target:t,viewport:i}){const n=t&&t.id!=="default-framebuffer",r=A&&A.devicePixelRatio||Ba(e),o=n?t.height:e.drawingBufferHeight,s=i;return[s.x*r,o-(s.y+s.height)*r,s.width*r,s.height*r]}function dW(e){const A=e.drawingBufferWidth,t=e.drawingBufferHeight;kn(e,{viewport:[0,0,A,t]}),e.clear(16640)}class pW extends JE{constructor(A,t){super(A,t),y(this,"shadowMap",void 0),y(this,"depthBuffer",void 0),y(this,"fbo",void 0),this.shadowMap=new Tt(A,{width:1,height:1,parameters:{10241:9729,10240:9729,10242:33071,10243:33071}}),this.depthBuffer=new Ts(A,{format:33189,width:1,height:1}),this.fbo=new Xe(A,{id:"shadowmap",width:1,height:1,attachments:{36064:this.shadowMap,36096:this.depthBuffer}})}render(A){const t=this.fbo;Bi(this.gl,{depthRange:[0,1],depthTest:!0,blend:!1,clearColor:[1,1,1,1]},()=>{const i=A.viewports[0],n=Ba(this.gl),r=i.width*n,o=i.height*n;(r!==t.width||o!==t.height)&&t.resize({width:r,height:o}),super.render({...A,target:t,pass:"shadow"})})}shouldDrawLayer(A){return A.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 yW={color:[255,255,255],intensity:1},hD=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}],mW=[0,0,0,200/255];class yb{constructor(A={}){y(this,"id","lighting-effect"),y(this,"props",null),y(this,"shadowColor",mW),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 t in A){const i=A[t];switch(i.type){case"ambient":this.ambientLight=i;break;case"directional":this.directionalLights.push(i);break;case"point":this.pointLights.push(i);break}}this._applyDefaultLights(),this.shadow=this.directionalLights.some(t=>t.shadow)}preRender(A,{layers:t,layerFilter:i,viewports:n,onViewportActive:r,views:o}){if(this.shadow){this.shadowMatrices=this._calculateMatrices(),this.shadowPasses.length===0&&this._createShadowPasses(A),this.programManager||(this.programManager=is.getDefaultProgramManager(A),Yh&&this.programManager.addDefaultModule(Yh)),this.dummyShadowMap||(this.dummyShadowMap=new Tt(A,{width:1,height:1}));for(let s=0;si.getProjectedLight({layer:A})),pointLights:this.pointLights.map(i=>i.getProjectedLight({layer:A}))},t}cleanup(){for(const A of this.shadowPasses)A.delete();this.shadowPasses.length=0,this.shadowMaps.length=0,this.dummyShadowMap&&(this.dummyShadowMap.delete(),this.dummyShadowMap=null),this.shadow&&this.programManager&&(this.programManager.removeDefaultModule(Yh),this.programManager=null)}_calculateMatrices(){const A=[];for(const t of this.directionalLights){const i=new he().lookAt({eye:new hA(t.direction).negate()});A.push(i)}return A}_createShadowPasses(A){for(let t=0;tn&&(r=n);const o=this._pool,s=A.BYTES_PER_ELEMENT*r,a=o.findIndex(g=>g.byteLength>=s);if(a>=0){const g=new A(o.splice(a,1)[0],0,r);return i&&g.fill(0),g}return new A(r)}_release(A){if(!ArrayBuffer.isView(A))return;const t=this._pool,{buffer:i}=A,{byteLength:n}=i,r=t.findIndex(o=>o.byteLength>=n);r<0?t.push(i):(r>0||t.lengththis.opts.poolSize&&t.shift()}}const fa=new wW;function Hg(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function vW(e,A){const t=e%A;return t<0?A+t:t}function SW(e){return[e[12],e[13],e[14]]}function DW(e){return{left:fs(e[3]+e[0],e[7]+e[4],e[11]+e[8],e[15]+e[12]),right:fs(e[3]-e[0],e[7]-e[4],e[11]-e[8],e[15]-e[12]),bottom:fs(e[3]+e[1],e[7]+e[5],e[11]+e[9],e[15]+e[13]),top:fs(e[3]-e[1],e[7]-e[5],e[11]-e[9],e[15]-e[13]),near:fs(e[3]+e[2],e[7]+e[6],e[11]+e[10],e[15]+e[14]),far:fs(e[3]-e[2],e[7]-e[6],e[11]-e[10],e[15]-e[14])}}const fD=new hA;function fs(e,A,t,i){fD.set(e,A,t);const n=fD.len();return{distance:i/n,normal:new hA(-e/n,-A/n,-t/n)}}function RW(e){return e-Math.fround(e)}let pg;function Kh(e,A){const{size:t=1,startIndex:i=0}=A,n=A.endIndex!==void 0?A.endIndex:e.length,r=(n-i)/t;pg=fa.allocate(pg,r,{type:Float32Array,size:t*2});let o=i,s=0;for(;o!0){return Array.isArray(e)?wb(e,A,[]):A(e)?[e]:[]}function wb(e,A,t){let i=-1;for(;++i0}delete(){}getData(){return this.isLoaded?this._error?Promise.reject(this._error):this._content:this._loader.then(()=>this.getData())}setData(A,t){if(A===this._data&&!t)return;this._data=A;const i=++this._loadCount;let n=A;typeof A=="string"&&(n=DB(A)),n instanceof Promise?(this.isLoaded=!1,this._loader=n.then(r=>{this._loadCount===i&&(this.isLoaded=!0,this._error=void 0,this._content=r)}).catch(r=>{this._loadCount===i&&(this.isLoaded=!0,this._error=r||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=A);for(const r of this._subscribers)r.onChange(this.getData())}}class PW{constructor({gl:A,protocol:t}){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=t||"resource://",this._context={gl:A,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(A){return A.startsWith(this.protocol)?!0:A in this._resources}add({resourceId:A,data:t,forceUpdate:i=!1,persistent:n=!0}){let r=this._resources[A];r?r.setData(t,i):(r=new UW(A,t,this._context),this._resources[A]=r),r.persistent=n}remove(A){const t=this._resources[A];t&&(t.delete(),delete this._resources[A])}unsubscribe({consumerId:A}){const t=this._consumers[A];if(t){for(const i in t){const n=t[i],r=this._resources[n.resourceId];r&&r.unsubscribe(n)}delete this._consumers[A],this.prune()}}subscribe({resourceId:A,onChange:t,consumerId:i,requestId:n="default"}){const{_resources:r,protocol:o}=this;A.startsWith(o)&&(A=A.replace(o,""),r[A]||this.add({resourceId:A,data:null,persistent:!1}));const s=r[A];if(this._track(i,n,s,t),s)return s.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(const A in this._resources)this._resources[A].delete()}_track(A,t,i,n){const r=this._consumers,o=r[A]=r[A]||{},s=o[t]||{},a=s.resourceId&&this._resources[s.resourceId];a&&(a.unsubscribe(s),this.prune()),i&&(o[t]=s,s.onChange=n,s.resourceId=i.id,i.subscribe(s))}_prune(){this._pruneRequest=null;for(const A of Object.keys(this._resources)){const t=this._resources[A];!t.persistent&&!t.inUse()&&(t.delete(),delete this._resources[A])}}}const HW="layerManager.setLayers",qW="layerManager.activateViewport";class JW{constructor(A,{deck:t,stats:i,viewport:n,timeline:r}={}){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=>{St(qW,this,o),o&&(this.context.viewport=o)}),this.layers=[],this.resourceManager=new PW({gl:A,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,gl:A,deck:t,programManager:A&&gW(A),stats:i||new TE({id:"deck.gl"}),viewport:n||new On({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:r||new cb,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){this.resourceManager.finalize();for(const A of this.layers)this._finalizeLayer(A)}needsRedraw(A={clearRedrawFlags:!1}){let t=this._needsRedraw;A.clearRedrawFlags&&(this._needsRedraw=!1);for(const i of this.layers){const n=i.getNeedsRedraw(A);t=t||n}return t}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?"layers changed":this._needsUpdate}setNeedsRedraw(A){this._needsRedraw=this._needsRedraw||A}setNeedsUpdate(A){this._needsUpdate=this._needsUpdate||A}getLayers({layerIds:A}={}){return A?this.layers.filter(t=>A.find(i=>t.id.indexOf(i)===0)):this.layers}setProps(A){"debug"in A&&(this._debug=A.debug),"userData"in A&&(this.context.userData=A.userData),"layers"in A&&(this._nextLayers=A.layers),"onError"in A&&(this.context.onError=A.onError)}setLayers(A,t){St(HW,this,t,A),this._lastRenderedLayers=A;const i=OE(A,Boolean);for(const n of i)n.context=this.context;this._updateLayers(this.layers,i)}updateLayers(){const A=this.needsUpdate();A&&(this.setNeedsRedraw("updating layers: ".concat(A)),this.setLayers(this._nextLayers||this._lastRenderedLayers,A)),this._nextLayers=null}_handleError(A,t,i){i.raiseError(t,"".concat(A," of ").concat(i))}_updateLayers(A,t){const i={};for(const o of A)i[o.id]?$A.warn("Multiple old layers with same id ".concat(o.id))():i[o.id]=o;const n=[];this._updateSublayersRecursively(t,i,n),this._finalizeOldLayers(i);let r=!1;for(const o of n)if(o.hasUniformTransition()){r="Uniform transition in ".concat(o);break}this._needsUpdate=r,this.layers=n}_updateSublayersRecursively(A,t,i){for(const n of A){n.context=this.context;const r=t[n.id];r===null&&$A.warn("Multiple new layers with same id ".concat(n.id))(),t[n.id]=null;let o=null;try{this._debug&&r!==n&&n.validateProps(),r?(this._transferLayerState(r,n),this._updateLayer(n)):this._initializeLayer(n),i.push(n),o=n.isComposite?n.getSubLayers():null}catch(s){this._handleError("matching",s,n)}o&&this._updateSublayersRecursively(o,t,i)}}_finalizeOldLayers(A){for(const t in A){const i=A[t];i&&this._finalizeLayer(i)}}_initializeLayer(A){try{A._initialize(),A.lifecycle=Rs.INITIALIZED}catch(t){this._handleError("initialization",t,A)}}_transferLayerState(A,t){t._transferState(A),t.lifecycle=Rs.MATCHED,t!==A&&(A.lifecycle=Rs.AWAITING_GC)}_updateLayer(A){try{A._update()}catch(t){this._handleError("update",t,A)}}_finalizeLayer(A){this._needsRedraw=this._needsRedraw||"finalized ".concat(A),A.lifecycle=Rs.AWAITING_FINALIZATION;try{A._finalize(),A.lifecycle=Rs.FINALIZED}catch(t){this._handleError("finalization",t,A)}}}function ns(e,A){if(e===A)return!0;if(!e||!A)return!1;for(const t in e){const i=e[t],n=A[t];if(!(i===n||Array.isArray(i)&&Array.isArray(n)&&ns(i,n)))return!1}return!0}class OW{constructor(A){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=A.timeline,this._viewports=[],this._viewportMap={},this._isUpdating=!1,this._needsRedraw="First render",this._needsUpdate="Initialize",this._eventManager=A.eventManager,this._eventCallbacks={onViewStateChange:A.onViewStateChange,onInteractionStateChange:A.onInteractionStateChange},Object.seal(this),this.setProps(A)}finalize(){for(const A in this.controllers){const t=this.controllers[A];t&&t.finalize()}this.controllers={}}needsRedraw(A={clearRedrawFlags:!1}){const t=this._needsRedraw;return A.clearRedrawFlags&&(this._needsRedraw=!1),t}setNeedsUpdate(A){this._needsUpdate=this._needsUpdate||A,this._needsRedraw=this._needsRedraw||A}updateViewStates(){for(const A in this.controllers){const t=this.controllers[A];t&&t.updateTransition()}}getViewports(A){return A?this._viewports.filter(t=>t.containsPixel(A)):this._viewports}getViews(){const A={};return this.views.forEach(t=>{A[t.id]=t}),A}getView(A){return this.views.find(t=>t.id===A)}getViewState(A){const t=typeof A=="string"?this.getView(A):A,i=t&&this.viewState[t.getViewStateId()]||this.viewState;return t?t.filterViewState(i):i}getViewport(A){return this._viewportMap[A]}unproject(A,t){const i=this.getViewports(),n={x:A[0],y:A[1]};for(let r=i.length-1;r>=0;--r){const o=i[r];if(o.containsPixel(n)){const s=A.slice();return s[0]-=o.x,s[1]-=o.y,o.unproject(s,t)}}return null}setProps(A){A.views&&this._setViews(A.views),A.viewState&&this._setViewState(A.viewState),("width"in A||"height"in A)&&this._setSize(A.width,A.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(A,t){(A!==this.width||t!==this.height)&&(this.width=A,this.height=t,this.setNeedsUpdate("Size changed"))}_setViews(A){A=OE(A,Boolean),this._diffViews(A,this.views)&&this.setNeedsUpdate("views changed"),this.views=A}_setViewState(A){A?(!ns(A,this.viewState)&&this.setNeedsUpdate("viewState changed"),this.viewState=A):$A.warn("missing `viewState` or `initialViewState`")()}_onViewStateChange(A,t){this._eventCallbacks.onViewStateChange&&this._eventCallbacks.onViewStateChange({...t,viewId:A})}_createController(A,t){const i=t.type;return new i({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._onViewStateChange.bind(this,t.id),onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:r=>{var o;return(o=this.getView(A.id))===null||o===void 0?void 0:o.makeViewport({viewState:r,width:this.width,height:this.height})}})}_updateController(A,t,i,n){const r=A.controller;if(r){const o={...t,...r,id:A.id,x:i.x,y:i.y,width:i.width,height:i.height};return n||(n=this._createController(A,o)),n&&n.setProps(o),n}return null}_rebuildViewports(){const{views:A}=this,t=this.controllers;this._viewports=[],this.controllers={};let i=!1;for(let n=A.length;n--;){const r=A[n],o=this.getViewState(r),s=r.makeViewport({viewState:o,width:this.width,height:this.height});let a=t[r.id];const g=!!r.controller;g&&!a&&(i=!0),(i||!g)&&a&&(a.finalize(),a=null),this.controllers[r.id]=this._updateController(r,o,s,a),this._viewports.unshift(s)}for(const n in t){const r=t[n];r&&!this.controllers[n]&&r.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(A=>{A.id&&(this._viewportMap[A.id]=this._viewportMap[A.id]||A)})}_diffViews(A,t){return A.length!==t.length?!0:A.some((i,n)=>!A[n].equals(t[n]))}}const YW=/([0-9]+\.?[0-9]*)(%|px)/;function $n(e){switch(typeof e){case"number":return{position:e,relative:!1};case"string":const A=YW.exec(e);if(A&&A.length>=3){const t=A[2]==="%",i=parseFloat(A[1]);return{position:t?i/100:i,relative:t}}default:throw new Error("Could not parse position string ".concat(e))}}function Ar(e,A){return e.relative?Math.round(e.position*A):e.position}function ot(e,A){if(!e)throw new Error(A||"deck.gl: assertion failed.")}class Ur{constructor(A){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:t,x:i=0,y:n=0,width:r="100%",height:o="100%",padding:s=null,viewportInstance:a}=A||{};ot(!a||a instanceof On),this.viewportInstance=a,this.id=t||this.constructor.displayName||"view",this.props={...A,id:this.id},this._x=$n(i),this._y=$n(n),this._width=$n(r),this._height=$n(o),this._padding=s&&{left:$n(s.left||0),right:$n(s.right||0),top:$n(s.top||0),bottom:$n(s.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(A){return this===A?!0:this.viewportInstance?A.viewportInstance?this.viewportInstance.equals(A.viewportInstance):!1:this.ViewportType===A.ViewportType&&ns(this.props,A.props)}makeViewport({width:A,height:t,viewState:i}){if(this.viewportInstance)return this.viewportInstance;i=this.filterViewState(i);const n=this.getDimensions({width:A,height:t});return new this.ViewportType({...i,...this.props,...n})}getViewStateId(){const{viewState:A}=this.props;return typeof A=="string"?A:(A==null?void 0:A.id)||this.id}filterViewState(A){if(this.props.viewState&&typeof this.props.viewState=="object"){if(!this.props.viewState.id)return this.props.viewState;const t={...A};for(const i in this.props.viewState)i!=="id"&&(t[i]=this.props.viewState[i]);return t}return A}getDimensions({width:A,height:t}){const i={x:Ar(this._x,A),y:Ar(this._y,t),width:Ar(this._width,A),height:Ar(this._height,t)};return this._padding&&(i.padding={left:Ar(this._padding.left,A),top:Ar(this._padding.top,t),right:Ar(this._padding.right,A),bottom:Ar(this._padding.bottom,t)}),i}get controller(){const A=this.props.controller;return A?A===!0?{type:this.ControllerType}:typeof A=="function"?{type:A}:{type:this.ControllerType,...A}:null}}let kl=class{constructor(A){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=A,this.time=0,this.settings={duration:0}}get inProgress(){return this._inProgress}start(A){var t,i;this.cancel(),this.settings=A,this._inProgress=!0,(t=(i=this.settings).onStart)===null||t===void 0||t.call(i,this)}end(){if(this._inProgress){var A,t;this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1,(A=(t=this.settings).onEnd)===null||A===void 0||A.call(t,this)}}cancel(){if(this._inProgress){var A,t;(A=(t=this.settings).onInterrupt)===null||A===void 0||A.call(t,this),this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1}}update(){var A,t;if(!this._inProgress)return!1;if(this._handle===null){const{_timeline:i,settings:n}=this;this._handle=i.addChannel({delay:i.getTime(),duration:n.duration})}return this.time=this._timeline.getTime(this._handle),this._onUpdate(),(A=(t=this.settings).onUpdate)===null||A===void 0||A.call(t,this),this._timeline.isFinished(this._handle)&&this.end(),!0}_onUpdate(){}};const pD=()=>{},Cd={BREAK:1,SNAP_TO_END:2,IGNORE:3},KW=e=>e,VW=Cd.BREAK;class WW{constructor(A){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",t=>{const{time:i,settings:{interpolator:n,startProps:r,endProps:o,duration:s,easing:a}}=t,g=a(i/s),I=n.interpolateProps(r,o,g);this.propsInTransition=this.getControllerState({...this.props,...I}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})}),this.getControllerState=A.getControllerState,this.propsInTransition=null,this.transition=new kl(A.timeline),this.onViewStateChange=A.onViewStateChange||pD,this.onStateChange=A.onStateChange||pD}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(A){let t=!1;const i=this.props;if(this.props=A,!i||this._shouldIgnoreViewportChange(i,A))return!1;if(this._isTransitionEnabled(A)){let n=i;if(this.transition.inProgress){const{interruption:r,endProps:o}=this.transition.settings;n={...i,...r===Cd.SNAP_TO_END?o:this.propsInTransition||i}}this._triggerTransition(n,A),t=!0}else this.transition.cancel();return t}updateTransition(){this.transition.update()}_isTransitionEnabled(A){const{transitionDuration:t,transitionInterpolator:i}=A;return(t>0||t==="auto")&&!!i}_isUpdateDueToCurrentTransition(A){return this.transition.inProgress&&this.propsInTransition?this.transition.settings.interpolator.arePropsEqual(A,this.propsInTransition):!1}_shouldIgnoreViewportChange(A,t){return this.transition.inProgress?this.transition.settings.interruption===Cd.IGNORE||this._isUpdateDueToCurrentTransition(t):this._isTransitionEnabled(t)?t.transitionInterpolator.arePropsEqual(A,t):!0}_triggerTransition(A,t){const i=this.getControllerState(A),n=this.getControllerState(t).shortestPathFrom(i),r=t.transitionInterpolator,o=r.getDuration?r.getDuration(A,t):t.transitionDuration;if(o===0)return;const s=r.initializeProps(A,n);this.propsInTransition={};const a={duration:o,easing:t.transitionEasing||KW,interpolator:r,interruption:t.transitionInterruption||VW,startProps:s.start,endProps:s.end,onStart:t.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(t.onTransitionInterrupt),onEnd:this._onTransitionEnd(t.onTransitionEnd)};this.transition.start(a),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(A){return t=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),A==null||A(t)}}}class zW{constructor(A){y(this,"_propsToCompare",void 0),y(this,"_propsToExtract",void 0),y(this,"_requiredProps",void 0);const{compare:t,extract:i,required:n}=A;this._propsToCompare=t,this._propsToExtract=i||t,this._requiredProps=n}arePropsEqual(A,t){for(const i of this._propsToCompare)if(!(i in A)||!(i in t)||!an(A[i],t[i]))return!1;return!0}initializeProps(A,t){const i={},n={};for(const r of this._propsToExtract)(r in A||r in t)&&(i[r]=A[r],n[r]=t[r]);return this._checkRequiredProps(i),this._checkRequiredProps(n),{start:i,end:n}}getDuration(A,t){return t.transitionDuration}_checkRequiredProps(A){this._requiredProps&&this._requiredProps.forEach(t=>{const i=A[t];ot(Number.isFinite(i)||Array.isArray(i),"".concat(t," is required for transition"))})}}const jW=["longitude","latitude","zoom","bearing","pitch"],XW=["longitude","latitude","zoom"];class YE extends zW{constructor(A={}){const t=Array.isArray(A)?A:A.transitionProps,i=Array.isArray(A)?{}:A;i.transitionProps=Array.isArray(t)?{compare:t,required:t}:t||{compare:jW,required:XW},super(i.transitionProps),y(this,"opts",void 0),this.opts=i}initializeProps(A,t){const i=super.initializeProps(A,t),{makeViewport:n,around:r}=this.opts;if(n&&r){const o=n(A),s=n(t),a=o.unproject(r);i.start.around=r,Object.assign(i.end,{around:s.project(a),aroundPosition:a,width:t.width,height:t.height})}return i}interpolateProps(A,t,i){const n={};for(const r of this._propsToExtract)n[r]=So(A[r]||0,t[r]||0,i);if(t.aroundPosition&&this.opts.makeViewport){const r=this.opts.makeViewport({...t,...n});Object.assign(n,r.panByPosition(t.aroundPosition,So(A.around,t.around,i)))}return n}}const er={transitionDuration:0},ZW=300,bc=e=>1-(1-e)*(1-e),Qs={WHEEL:["wheel"],PAN:["panstart","panmove","panend"],PINCH:["pinchstart","pinchmove","pinchend"],TRIPLE_PAN:["tripanstart","tripanmove","tripanend"],DOUBLE_TAP:["doubletap"],KEYBOARD:["keydown"]},no={};let KE=class{constructor(A){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 WW({...A,getControllerState:t=>new this.ControllerState(t),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=A.eventManager,this.onViewStateChange=A.onViewStateChange||(()=>{}),this.onStateChange=A.onStateChange||(()=>{}),this.makeViewport=A.makeViewport}set events(A){this.toggleEvents(this._customEvents,!1),this.toggleEvents(A,!0),this._customEvents=A,this.props&&this.setProps(this.props)}finalize(){for(const t in this._events)if(this._events[t]){var A;(A=this.eventManager)===null||A===void 0||A.off(t,this.handleEvent)}this.transitionManager.finalize()}handleEvent(A){this._controllerState=void 0;const t=this._eventStartBlocked;switch(A.type){case"panstart":return t?!1:this._onPanStart(A);case"panmove":return this._onPan(A);case"panend":return this._onPanEnd(A);case"pinchstart":return t?!1:this._onPinchStart(A);case"pinchmove":return this._onPinch(A);case"pinchend":return this._onPinchEnd(A);case"tripanstart":return t?!1:this._onTriplePanStart(A);case"tripanmove":return this._onTriplePan(A);case"tripanend":return this._onTriplePanEnd(A);case"doubletap":return this._onDoubleTap(A);case"wheel":return this._onWheel(A);case"keydown":return this._onKeyDown(A);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(A){const{x:t,y:i}=this.props,{offsetCenter:n}=A;return[n.x-t,n.y-i]}isPointInBounds(A,t){const{width:i,height:n}=this.props;if(t&&t.handled)return!1;const r=A[0]>=0&&A[0]<=i&&A[1]>=0&&A[1]<=n;return r&&t&&t.stopPropagation(),r}isFunctionKeyPressed(A){const{srcEvent:t}=A;return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(A){const t=setTimeout(()=>{this._eventStartBlocked===t&&(this._eventStartBlocked=null)},A);this._eventStartBlocked=t}setProps(A){A.dragMode&&(this.dragMode=A.dragMode),this.props=A,"transitionInterpolator"in A||(A.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(A);const{inertia:t}=A;this.inertia=Number.isFinite(t)?t:t===!0?ZW:0;const{scrollZoom:i=!0,dragPan:n=!0,dragRotate:r=!0,doubleClickZoom:o=!0,touchZoom:s=!0,touchRotate:a=!1,keyboard:g=!0}=A,I=!!this.onViewStateChange;this.toggleEvents(Qs.WHEEL,I&&i),this.toggleEvents(Qs.PAN,I&&(n||r)),this.toggleEvents(Qs.PINCH,I&&(s||a)),this.toggleEvents(Qs.TRIPLE_PAN,I&&a),this.toggleEvents(Qs.DOUBLE_TAP,I&&o),this.toggleEvents(Qs.KEYBOARD,I&&g),this.scrollZoom=i,this.dragPan=n,this.dragRotate=r,this.doubleClickZoom=o,this.touchZoom=s,this.touchRotate=a,this.keyboard=g}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(A,t){this.eventManager&&A.forEach(i=>{this._events[i]!==t&&(this._events[i]=t,t?this.eventManager.on(i,this.handleEvent):this.eventManager.off(i,this.handleEvent))})}updateViewport(A,t=null,i={}){const n={...A.getViewportProps(),...t},r=this.controllerState!==A;if(this.state=A.getState(),this._setInteractionState(i),r){const o=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:n,interactionState:this._interactionState,oldViewState:o})}}_onTransition(A){this.onViewStateChange({...A,interactionState:this._interactionState})}_setInteractionState(A){Object.assign(this._interactionState,A),this.onStateChange(this._interactionState)}_onPanStart(A){const t=this.getCenter(A);if(!this.isPointInBounds(t,A))return!1;let i=this.isFunctionKeyPressed(A)||A.rightButton||!1;(this.invertPan||this.dragMode==="pan")&&(i=!i);const n=this.controllerState[i?"panStart":"rotateStart"]({pos:t});return this._panMove=i,this.updateViewport(n,er,{isDragging:!0}),!0}_onPan(A){return this.isDragging()?this._panMove?this._onPanMove(A):this._onPanRotate(A):!1}_onPanEnd(A){return this.isDragging()?this._panMove?this._onPanMoveEnd(A):this._onPanRotateEnd(A):!1}_onPanMove(A){if(!this.dragPan)return!1;const t=this.getCenter(A),i=this.controllerState.pan({pos:t});return this.updateViewport(i,er,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(A){const{inertia:t}=this;if(this.dragPan&&t&&A.velocity){const i=this.getCenter(A),n=[i[0]+A.velocityX*t/2,i[1]+A.velocityY*t/2],r=this.controllerState.pan({pos:n}).panEnd();this.updateViewport(r,{...this._getTransitionProps(),transitionDuration:t,transitionEasing:bc},{isDragging:!1,isPanning:!0})}else{const i=this.controllerState.panEnd();this.updateViewport(i,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(A){if(!this.dragRotate)return!1;const t=this.getCenter(A),i=this.controllerState.rotate({pos:t});return this.updateViewport(i,er,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(A){const{inertia:t}=this;if(this.dragRotate&&t&&A.velocity){const i=this.getCenter(A),n=[i[0]+A.velocityX*t/2,i[1]+A.velocityY*t/2],r=this.controllerState.rotate({pos:n}).rotateEnd();this.updateViewport(r,{...this._getTransitionProps(),transitionDuration:t,transitionEasing:bc},{isDragging:!1,isRotating:!0})}else{const i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(A){if(!this.scrollZoom)return!1;A.srcEvent.preventDefault();const t=this.getCenter(A);if(!this.isPointInBounds(t,A))return!1;const{speed:i=.01,smooth:n=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:r}=A;let o=2/(1+Math.exp(-Math.abs(r*i)));r<0&&o!==0&&(o=1/o);const s=this.controllerState.zoom({pos:t,scale:o});return this.updateViewport(s,{...this._getTransitionProps({around:t}),transitionDuration:n?250:1},{isZooming:!0,isPanning:!0}),!0}_onTriplePanStart(A){const t=this.getCenter(A);if(!this.isPointInBounds(t,A))return!1;const i=this.controllerState.rotateStart({pos:t});return this.updateViewport(i,er,{isDragging:!0}),!0}_onTriplePan(A){if(!this.touchRotate||!this.isDragging())return!1;const t=this.getCenter(A);t[0]-=A.deltaX;const i=this.controllerState.rotate({pos:t});return this.updateViewport(i,er,{isDragging:!0,isRotating:!0}),!0}_onTriplePanEnd(A){if(!this.isDragging())return!1;const{inertia:t}=this;if(this.touchRotate&&t&&A.velocityY){const i=this.getCenter(A),n=[i[0],i[1]+=A.velocityY*t/2],r=this.controllerState.rotate({pos:n});this.updateViewport(r,{...this._getTransitionProps(),transitionDuration:t,transitionEasing:bc},{isDragging:!1,isRotating:!0}),this.blockEvents(t)}else{const i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(A){const t=this.getCenter(A);if(!this.isPointInBounds(t,A))return!1;const i=this.controllerState.zoomStart({pos:t}).rotateStart({pos:t});return no._startPinchRotation=A.rotation,no._lastPinchEvent=A,this.updateViewport(i,er,{isDragging:!0}),!0}_onPinch(A){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let t=this.controllerState;if(this.touchZoom){const{scale:i}=A,n=this.getCenter(A);t=t.zoom({pos:n,scale:i})}if(this.touchRotate){const{rotation:i}=A;t=t.rotate({deltaAngleX:no._startPinchRotation-i})}return this.updateViewport(t,er,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),no._lastPinchEvent=A,!0}_onPinchEnd(A){if(!this.isDragging())return!1;const{inertia:t}=this,{_lastPinchEvent:i}=no;if(this.touchZoom&&t&&i&&A.scale!==i.scale){const n=this.getCenter(A);let r=this.controllerState.rotateEnd();const o=Math.log2(A.scale),s=(o-Math.log2(i.scale))/(A.deltaTime-i.deltaTime),a=Math.pow(2,o+s*t/2);r=r.zoom({pos:n,scale:a}).zoomEnd(),this.updateViewport(r,{...this._getTransitionProps({around:n}),transitionDuration:t,transitionEasing:bc},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(t)}else{const n=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(n,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return no._startPinchRotation=null,no._lastPinchEvent=null,!0}_onDoubleTap(A){if(!this.doubleClickZoom)return!1;const t=this.getCenter(A);if(!this.isPointInBounds(t,A))return!1;const i=this.isFunctionKeyPressed(A),n=this.controllerState.zoom({pos:t,scale:i?.5:2});return this.updateViewport(n,this._getTransitionProps({around:t}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(A){if(!this.keyboard)return!1;const t=this.isFunctionKeyPressed(A),{zoomSpeed:i,moveSpeed:n,rotateSpeedX:r,rotateSpeedY:o}=this.keyboard===!0?{}:this.keyboard,{controllerState:s}=this;let a;const g={};switch(A.srcEvent.code){case"Minus":a=t?s.zoomOut(i).zoomOut(i):s.zoomOut(i),g.isZooming=!0;break;case"Equal":a=t?s.zoomIn(i).zoomIn(i):s.zoomIn(i),g.isZooming=!0;break;case"ArrowLeft":t?(a=s.rotateLeft(r),g.isRotating=!0):(a=s.moveLeft(n),g.isPanning=!0);break;case"ArrowRight":t?(a=s.rotateRight(r),g.isRotating=!0):(a=s.moveRight(n),g.isPanning=!0);break;case"ArrowUp":t?(a=s.rotateUp(o),g.isRotating=!0):(a=s.moveUp(n),g.isPanning=!0);break;case"ArrowDown":t?(a=s.rotateDown(o),g.isRotating=!0):(a=s.moveDown(n),g.isPanning=!0);break;default:return!1}return this.updateViewport(a,this._getTransitionProps(),g),!0}_getTransitionProps(A){const{transition:t}=this;return!t||!t.transitionInterpolator?er:A?{...t,transitionInterpolator:new YE({...A,...t.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:t}};class vb{constructor(A,t){y(this,"_viewportProps",void 0),y(this,"_state",void 0),this._viewportProps=this.applyConstraints(A),this._state=t}getViewportProps(){return this._viewportProps}getState(){return this._state}}const yD=5,$W=1.2;class Az extends vb{constructor(A){const{width:t,height:i,latitude:n,longitude:r,zoom:o,bearing:s=0,pitch:a=0,altitude:g=1.5,position:I=[0,0,0],maxZoom:l=20,minZoom:c=0,maxPitch:C=60,minPitch:B=0,startPanLngLat:E,startZoomLngLat:u,startRotatePos:h,startBearing:f,startPitch:Q,startZoom:d,normalize:w=!0}=A;ot(Number.isFinite(r)),ot(Number.isFinite(n)),ot(Number.isFinite(o)),super({width:t,height:i,latitude:n,longitude:r,zoom:o,bearing:s,pitch:a,altitude:g,maxZoom:l,minZoom:c,maxPitch:C,minPitch:B,normalize:w,position:I},{startPanLngLat:E,startZoomLngLat:u,startRotatePos:h,startBearing:f,startPitch:Q,startZoom:d}),y(this,"makeViewport",void 0),this.makeViewport=A.makeViewport}panStart({pos:A}){return this._getUpdatedState({startPanLngLat:this._unproject(A)})}pan({pos:A,startPos:t}){const i=this.getState().startPanLngLat||this._unproject(t);if(!i)return this;const r=this.makeViewport(this.getViewportProps()).panByPosition(i,A);return this._getUpdatedState(r)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:A}){return this._getUpdatedState({startRotatePos:A,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:A,deltaAngleX:t=0,deltaAngleY:i=0}){const{startRotatePos:n,startBearing:r,startPitch:o}=this.getState();if(!n||r===void 0||o===void 0)return this;let s;return A?s=this._getNewRotation(A,n,o,r):s={bearing:r+t,pitch:o+i},this._getUpdatedState(s)}rotateEnd(){return this._getUpdatedState({startBearing:null,startPitch:null})}zoomStart({pos:A}){return this._getUpdatedState({startZoomLngLat:this._unproject(A),startZoom:this.getViewportProps().zoom})}zoom({pos:A,startPos:t,scale:i}){let{startZoom:n,startZoomLngLat:r}=this.getState();if(r||(n=this.getViewportProps().zoom,r=this._unproject(t)||this._unproject(A)),!r)return this;const{maxZoom:o,minZoom:s}=this.getViewportProps();let a=n+Math.log2(i);a=ut(a,s,o);const g=this.makeViewport({...this.getViewportProps(),zoom:a});return this._getUpdatedState({zoom:a,...g.panByPosition(r,A)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(A=2){return this._zoomFromCenter(A)}zoomOut(A=2){return this._zoomFromCenter(1/A)}moveLeft(A=100){return this._panFromCenter([A,0])}moveRight(A=100){return this._panFromCenter([-A,0])}moveUp(A=100){return this._panFromCenter([0,A])}moveDown(A=100){return this._panFromCenter([0,-A])}rotateLeft(A=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-A})}rotateRight(A=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+A})}rotateUp(A=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+A})}rotateDown(A=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-A})}shortestPathFrom(A){const t=A.getViewportProps(),i={...this.getViewportProps()},{bearing:n,longitude:r}=i;return Math.abs(n-t.bearing)>180&&(i.bearing=n<0?n+360:n-360),Math.abs(r-t.longitude)>180&&(i.longitude=r<0?r+360:r-360),i}applyConstraints(A){const{maxZoom:t,minZoom:i,zoom:n}=A;A.zoom=ut(n,i,t);const{maxPitch:r,minPitch:o,pitch:s}=A;A.pitch=ut(s,o,r);const{normalize:a=!0}=A;return a&&Object.assign(A,jV(A)),A}_zoomFromCenter(A){const{width:t,height:i}=this.getViewportProps();return this.zoom({pos:[t/2,i/2],scale:A})}_panFromCenter(A){const{width:t,height:i}=this.getViewportProps();return this.pan({startPos:[t/2,i/2],pos:[t/2+A[0],i/2+A[1]]})}_getUpdatedState(A){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...A})}_unproject(A){const t=this.makeViewport(this.getViewportProps());return A&&t.unproject(A)}_getNewRotation(A,t,i,n){const r=A[0]-t[0],o=A[1]-t[1],s=A[1],a=t[1],{width:g,height:I}=this.getViewportProps(),l=r/g;let c=0;o>0?Math.abs(I-a)>yD&&(c=o/(a-I)*$W):o<0&&a>yD&&(c=1-s/a),c=ut(c,-1,1);const{minPitch:C,maxPitch:B}=this.getViewportProps(),E=n+180*l;let u=i;return c>0?u=i+c*(B-i):c<0&&(u=i-c*(C-i)),{pitch:u,bearing:E}}}class ez extends KE{constructor(...A){super(...A),y(this,"ControllerState",Az),y(this,"transition",{transitionDuration:300,transitionInterpolator:new YE({transitionProps:{compare:["longitude","latitude","zoom","bearing","pitch","position"],required:["longitude","latitude","zoom"]}})}),y(this,"dragMode","pan")}setProps(A){A.position=A.position||[0,0,0];const t=this.props;super.setProps(A),(!t||t.height!==A.height)&&this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...A,...this.state}))}}class Sb extends Ur{get ViewportType(){return In}get ControllerType(){return ez}}y(Sb,"displayName","MapView");class tz extends JE{constructor(A,t){super(A,t),y(this,"maskMap",void 0),y(this,"fbo",void 0);const{mapSize:i=2048}=t;this.maskMap=new Tt(A,{width:i,height:i,parameters:{10241:9729,10240:9729,10242:33071,10243:33071}}),this.fbo=new Xe(A,{id:"maskmap",width:i,height:i,attachments:{36064:this.maskMap}})}render(A){const t=this.gl,i=[!1,!1,!1,!1];return i[A.channel]=!0,Bi(t,{clearColor:[255,255,255,255],blend:!0,blendFunc:[0,1],blendEquation:32778,colorMask:i,depthTest:!1},()=>super.render({...A,target:this.fbo,pass:"mask"}))}shouldDrawLayer(A){return A.props.operation===Gl.MASK}delete(){this.fbo.delete(),this.maskMap.delete()}}const iz=new he().lookAt({eye:[0,0,1]});function nz({width:e,height:A,near:t,far:i,padding:n}){let r=-e/2,o=e/2,s=-A/2,a=A/2;if(n){const{left:g=0,right:I=0,top:l=0,bottom:c=0}=n,C=ut((g+e-I)/2,0,e)-e/2,B=ut((l+A-c)/2,0,A)-A/2;r-=C,o-=C,s+=B,a+=B}return new he().ortho({left:r,right:o,bottom:s,top:a,near:t,far:i})}class rz extends On{constructor(A){const{width:t,height:i,near:n=.1,far:r=1e3,zoom:o=0,target:s=[0,0,0],padding:a=null,flipY:g=!0}=A,I=Array.isArray(o)?o[0]:o,l=Array.isArray(o)?o[1]:o,c=Math.min(I,l),C=Math.pow(2,c);let B;if(I!==l){const E=Math.pow(2,I),u=Math.pow(2,l);B={unitsPerMeter:[E/C,u/C,1],metersPerUnit:[C/E,C/u,1]}}super({...A,longitude:void 0,position:s,viewMatrix:iz.clone().scale([C,C*(g?-1:1),C]),projectionMatrix:nz({width:t||1,height:i||1,padding:a,near:n,far:r}),zoom:c,distanceScales:B})}projectFlat([A,t]){const{unitsPerMeter:i}=this.distanceScales;return[A*i[0],t*i[1]]}unprojectFlat([A,t]){const{metersPerUnit:i}=this.distanceScales;return[A*i[0],t*i[1]]}panByPosition(A,t){const i=Ml(t,this.pixelUnprojectionMatrix),n=this.projectFlat(A),r=FB([],n,WL([],i)),o=FB([],this.center,r);return{target:this.unprojectFlat(o)}}}class Db extends vb{constructor(A){const{width:t,height:i,rotationX:n=0,rotationOrbit:r=0,target:o=[0,0,0],zoom:s=0,minRotationX:a=-90,maxRotationX:g=90,minZoom:I=-1/0,maxZoom:l=1/0,startPanPosition:c,startRotatePos:C,startRotationX:B,startRotationOrbit:E,startZoomPosition:u,startZoom:h}=A;super({width:t,height:i,rotationX:n,rotationOrbit:r,target:o,zoom:s,minRotationX:a,maxRotationX:g,minZoom:I,maxZoom:l},{startPanPosition:c,startRotatePos:C,startRotationX:B,startRotationOrbit:E,startZoomPosition:u,startZoom:h}),y(this,"makeViewport",void 0),this.makeViewport=A.makeViewport}panStart({pos:A}){return this._getUpdatedState({startPanPosition:this._unproject(A)})}pan({pos:A,startPosition:t}){const i=this.getState().startPanPosition||t;if(!i)return this;const r=this.makeViewport(this.getViewportProps()).panByPosition(i,A);return this._getUpdatedState(r)}panEnd(){return this._getUpdatedState({startPanPosition:null})}rotateStart({pos:A}){return this._getUpdatedState({startRotatePos:A,startRotationX:this.getViewportProps().rotationX,startRotationOrbit:this.getViewportProps().rotationOrbit})}rotate({pos:A,deltaAngleX:t=0,deltaAngleY:i=0}){const{startRotatePos:n,startRotationX:r,startRotationOrbit:o}=this.getState(),{width:s,height:a}=this.getViewportProps();if(!n||r===void 0||o===void 0)return this;let g;if(A){let I=(A[0]-n[0])/s;const l=(A[1]-n[1])/a;(r<-90||r>90)&&(I*=-1),g={rotationX:r+l*180,rotationOrbit:o+I*180}}else g={rotationX:r+i,rotationOrbit:o+t};return this._getUpdatedState(g)}rotateEnd(){return this._getUpdatedState({startRotationX:null,startRotationOrbit:null})}shortestPathFrom(A){const t=A.getViewportProps(),i={...this.getViewportProps()},{rotationOrbit:n}=i;return Math.abs(n-t.rotationOrbit)>180&&(i.rotationOrbit=n<0?n+360:n-360),i}zoomStart({pos:A}){return this._getUpdatedState({startZoomPosition:this._unproject(A),startZoom:this.getViewportProps().zoom})}zoom({pos:A,startPos:t,scale:i}){let{startZoom:n,startZoomPosition:r}=this.getState();if(r||(n=this.getViewportProps().zoom,r=this._unproject(t)||this._unproject(A)),!r)return this;const o=this._calculateNewZoom({scale:i,startZoom:n}),s=this.makeViewport({...this.getViewportProps(),zoom:o});return this._getUpdatedState({zoom:o,...s.panByPosition(r,A)})}zoomEnd(){return this._getUpdatedState({startZoomPosition:null,startZoom:null})}zoomIn(A=2){return this._getUpdatedState({zoom:this._calculateNewZoom({scale:A})})}zoomOut(A=2){return this._getUpdatedState({zoom:this._calculateNewZoom({scale:1/A})})}moveLeft(A=50){return this._panFromCenter([-A,0])}moveRight(A=50){return this._panFromCenter([A,0])}moveUp(A=50){return this._panFromCenter([0,-A])}moveDown(A=50){return this._panFromCenter([0,A])}rotateLeft(A=15){return this._getUpdatedState({rotationOrbit:this.getViewportProps().rotationOrbit-A})}rotateRight(A=15){return this._getUpdatedState({rotationOrbit:this.getViewportProps().rotationOrbit+A})}rotateUp(A=10){return this._getUpdatedState({rotationX:this.getViewportProps().rotationX-A})}rotateDown(A=10){return this._getUpdatedState({rotationX:this.getViewportProps().rotationX+A})}_unproject(A){const t=this.makeViewport(this.getViewportProps());return A&&t.unproject(A)}_calculateNewZoom({scale:A,startZoom:t}){const{maxZoom:i,minZoom:n}=this.getViewportProps();t===void 0&&(t=this.getViewportProps().zoom);const r=t+Math.log2(A);return ut(r,n,i)}_panFromCenter(A){const{width:t,height:i,target:n}=this.getViewportProps();return this.pan({startPosition:n,pos:[t/2+A[0],i/2+A[1]]})}_getUpdatedState(A){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...A})}applyConstraints(A){const{maxZoom:t,minZoom:i,zoom:n,maxRotationX:r,minRotationX:o,rotationOrbit:s}=A;return A.zoom=Array.isArray(n)?[ut(n[0],i,t),ut(n[1],i,t)]:ut(n,i,t),A.rotationX=ut(A.rotationX,o,r),(s<-180||s>180)&&(A.rotationOrbit=vW(s+180,360)-180),A}}class oz extends KE{constructor(...A){super(...A),y(this,"ControllerState",Db),y(this,"transition",{transitionDuration:300,transitionInterpolator:new YE({transitionProps:{compare:["target","zoom","rotationX","rotationOrbit"],required:["target","zoom"]}})})}}class sz extends Db{constructor(A){super(A),y(this,"zoomAxis",void 0),this.zoomAxis=A.zoomAxis||"all"}_calculateNewZoom({scale:A,startZoom:t}){const{maxZoom:i,minZoom:n}=this.getViewportProps();t===void 0&&(t=this.getViewportProps().zoom);let r=Math.log2(A);if(Array.isArray(t)){let[o,s]=t;switch(this.zoomAxis){case"X":o=ut(o+r,n,i);break;case"Y":s=ut(s+r,n,i);break;default:let a=Math.min(o+r,s+r);ai&&(r+=i-a),o+=r,s+=r}return[o,s]}return ut(t+r,n,i)}}class az extends KE{constructor(...A){super(...A),y(this,"ControllerState",sz),y(this,"transition",{transitionDuration:300,transitionInterpolator:new YE(["target","zoom"])}),y(this,"dragMode","pan")}_onPanRotate(){return!1}}class Tl extends Ur{get ViewportType(){return rz}get ControllerType(){return az}}y(Tl,"displayName","OrthographicView");function gz({layers:e,viewport:A}){let t=null;for(const r of e){const o=r.getBounds();o&&(t?(t[0]=Math.min(t[0],o[0][0]),t[1]=Math.min(t[1],o[0][1]),t[2]=Math.max(t[2],o[1][0]),t[3]=Math.max(t[3],o[1][1])):t=[o[0][0],o[0][1],o[1][0],o[1][1]])}const i=A.getBounds();if(!t)return i;const n=lz(i);return t[2]-t[0]l.props.visible&&l.props.operation===Gl.MASK);if(s.length===0){this.masks=null,this.channels.length=0;return}this.masks={},this.maskPass||(this.maskPass=new tz(A,{id:"default-mask"}),this.maskMap=this.maskPass.maskMap);const a=this._sortMaskChannels(s),g=n[0],I=!this.lastViewport||!this.lastViewport.equals(g);for(const l in a)this._renderChannel(a[l],{layerFilter:i,onViewportActive:r,views:o,viewport:g,viewportChanged:I})}_renderChannel(A,{layerFilter:t,onViewportActive:i,views:n,viewport:r,viewportChanged:o}){const s=this.channels[A.index];if(!s)return;const a=A===s||s.layers.length!==A.layers.length||A.layerBounds.some((g,I)=>g!==s.layerBounds[I]);if(A.bounds=s.bounds,A.maskBounds=s.maskBounds,this.channels[A.index]=A,(a||o)&&(this.lastViewport=r,A.bounds=gz({layers:A.layers,viewport:r}),a||!an(A.bounds,s.bounds))){const{maskPass:g,maskMap:I}=this,l=Iz({bounds:A.bounds,viewport:r,width:I.width,height:I.height});A.maskBounds=l?l.getBounds():[0,0,1,1],g.render({pass:"mask",channel:A.index,layers:A.layers,layerFilter:t,viewports:l?[l]:[],onViewportActive:i,views:n,moduleParameters:{devicePixelRatio:1}})}this.masks[A.id]={index:A.index,bounds:A.maskBounds,coordinateOrigin:A.coordinateOrigin,coordinateSystem:A.coordinateSystem}}_sortMaskChannels(A){const t={};let i=0;for(const n of A){const{id:r}=n.root;let o=t[r];if(!o){if(++i>4){$A.warn("Too many mask layers. The max supported is 4")();continue}o={id:r,index:this.channels.findIndex(s=>(s==null?void 0:s.id)===r),layers:[],layerBounds:[],coordinateOrigin:n.root.props.coordinateOrigin,coordinateSystem:n.root.props.coordinateSystem},t[r]=o}o.layers.push(n),o.layerBounds.push(n.getBounds())}for(let n=0;n<4;n++){const r=this.channels[n];(!r||!(r.id in t))&&(this.channels[n]=null)}for(const n in t){const r=t[n];r.index<0&&(r.index=this.channels.findIndex(o=>!o),this.channels[r.index]=r)}return t}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 Cz=new yb;class Bz{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(A){"effects"in A&&(A.effects.length!==this.effects.length||!ns(A.effects,this.effects))&&(this.setEffects(A.effects),this._needsRedraw="effects changed")}needsRedraw(A={clearRedrawFlags:!1}){const t=this._needsRedraw;return A.clearRedrawFlags&&(this._needsRedraw=!1),t}getEffects(){return this._internalEffects}finalize(){this.cleanup()}setEffects(A=[]){this.cleanup(),this.effects=A,this._internalEffects=A.slice(),this._internalEffects.push(new cz),A.some(t=>t instanceof yb)||this._internalEffects.push(Cz)}cleanup(){for(const A of this.effects)A.cleanup();for(const A of this._internalEffects)A.cleanup();this.effects.length=0,this._internalEffects.length=0}}class Ez extends JE{shouldDrawLayer(A){return A.props.operation===Gl.DRAW}}const mD={blendFunc:[1,0,32771,0],blendEquation:32774};class Rb extends JE{constructor(...A){super(...A),y(this,"pickZ",void 0),y(this,"_colors",null)}render(A){return A.pickingFBO?this._drawPickingBuffer(A):super.render(A)}_drawPickingBuffer({layers:A,layerFilter:t,views:i,viewports:n,onViewportActive:r,pickingFBO:o,deviceRect:{x:s,y:a,width:g,height:I},cullRect:l,effects:c,pass:C="picking",pickZ:B}){const E=this.gl;this.pickZ=B;const u=B?null:{byLayer:new Map,byAlpha:[]};this._colors=u;const h=Bi(E,{scissorTest:!0,scissor:[s,a,g,I],clearColor:[0,0,0,0],depthMask:!0,depthTest:!0,depthRange:[0,1],colorMask:[!0,!0,!0,!0],...mD,blend:!B},()=>super.render({target:o,layers:A,layerFilter:t,views:i,viewports:n,onViewportActive:r,cullRect:l,effects:c==null?void 0:c.filter(Q=>Q.useInPicking),pass:C}));return this._colors=null,{decodePickingColor:u&&hz.bind(null,u),stats:h}}shouldDrawLayer(A){return A.props.pickable&&A.props.operation===Gl.DRAW}getModuleParameters(){return{pickingActive:1,pickingAttribute:this.pickZ,lightSources:{}}}getLayerParameters(A,t,i){const n={...A.props.parameters};return this._colors?(Object.assign(n,mD),n.blend=!0,n.blendColor=uz(this._colors,A,i)):n.blend=!1,n}}function uz(e,A,t){const{byLayer:i,byAlpha:n}=e;let r,o=i.get(A);return o?(o.viewports.push(t),r=o.a):(r=i.size+1,r<=255?(o={a:r,layer:A,viewports:[t]},i.set(A,o),n[r]=o):($A.warn("Too many pickable layers, only picking the first 255")(),r=0)),[0,0,0,r/255]}function hz(e,A){const t=e.byAlpha[A[3]];return t&&{pickedLayer:t.layer,pickedViewports:t.viewports,pickedObjectIndex:t.layer.decodePickingColor(A)}}const fz="deckRenderer.renderLayers";class Qz{constructor(A){this.gl=A,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new Ez(A),this.pickLayersPass=new Rb(A),this.renderCount=0,this._needsRedraw="Initial render",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(A){"layerFilter"in A&&this.layerFilter!==A.layerFilter&&(this.layerFilter=A.layerFilter,this._needsRedraw="layerFilter changed"),"drawPickingColors"in A&&this.drawPickingColors!==A.drawPickingColors&&(this.drawPickingColors=A.drawPickingColors,this._needsRedraw="drawPickingColors changed")}renderLayers(A){const t=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass;A.layerFilter=A.layerFilter||this.layerFilter,A.effects=A.effects||[],A.target=A.target||Xe.getDefaultFramebuffer(this.gl),this._preRender(A.effects,A);const i=this.lastPostProcessEffect?this.renderBuffers[0]:A.target,n=t.render({...A,target:i});this._postRender(A.effects,A),this.renderCount++,St(fz,this,n,A)}needsRedraw(A={clearRedrawFlags:!1}){const t=this._needsRedraw;return A.clearRedrawFlags&&(this._needsRedraw=!1),t}finalize(){const{renderBuffers:A}=this;for(const t of A)t.delete();A.length=0}_preRender(A,t){let i=null;for(const n of A)n.preRender(this.gl,t),n.postRender&&(i=n);i&&this._resizeRenderBuffers(),this.lastPostProcessEffect=i}_resizeRenderBuffers(){const{renderBuffers:A}=this;A.length===0&&A.push(new Xe(this.gl),new Xe(this.gl));for(const t of A)t.resize()}_postRender(A,t){const{renderBuffers:i}=this,n={inputBuffer:i[0],swapBuffer:i[1],target:null};for(const r of A)if(r.postRender){if(r===this.lastPostProcessEffect){n.target=t.target,r.postRender(this.gl,n);break}const o=r.postRender(this.gl,n);n.inputBuffer=o,n.swapBuffer=o===i[0]?i[1]:i[0]}}}const dz={pickedColor:null,pickedObjectIndex:-1};function pz({pickedColors:e,decodePickingColor:A,deviceX:t,deviceY:i,deviceRadius:n,deviceRect:r}){const{x:o,y:s,width:a,height:g}=r;let I=n*n,l=-1,c=0;for(let C=0;CI)c+=4*a;else for(let u=0;u=0){const f=u+o-t,Q=f*f+E;Q<=I&&(I=Q,l=c)}c+=4}}if(l>=0){const C=e.slice(l,l+4),B=A(C);if(B){const E=Math.floor(l/4/a),u=l/4-E*a;return{...B,pickedColor:C,pickedX:o+u,pickedY:s+E}}$A.error("Picked non-existent layer. Is picking buffer corrupt?")()}return dz}function yz({pickedColors:e,decodePickingColor:A}){const t=new Map;if(e){for(let i=0;i=0){const r=e.slice(i,i+4),o=r.join(",");if(!t.has(o)){const s=A(r);s?t.set(o,{...s,color:r}):$A.error("Picked non-existent layer. Is picking buffer corrupt?")()}}}return Array.from(t.values())}function xb({pickInfo:e,viewports:A,pixelRatio:t,x:i,y:n,z:r}){let o=A[0];A.length>1&&(o=wz((e==null?void 0:e.pickedViewports)||A,{x:i,y:n}));let s;if(o){const a=[i-o.x,n-o.y];r!==void 0&&(a[2]=r),s=o.unproject(a)}return{color:null,layer:null,viewport:o,index:-1,picked:!1,x:i,y:n,pixel:[i,n],coordinate:s,devicePixel:e&&"pickedX"in e?[e.pickedX,e.pickedY]:void 0,pixelRatio:t}}function mz(e){const{pickInfo:A,lastPickedInfo:t,mode:i,layers:n}=e,{pickedColor:r,pickedLayer:o,pickedObjectIndex:s}=A,a=o?[o]:[];if(i==="hover"){const l=t.index,c=t.layerId,C=o?o.props.id:null;if(C!==c||s!==l){if(C!==c){const B=n.find(E=>E.props.id===c);B&&a.unshift(B)}t.layerId=C,t.index=s,t.info=null}}const g=xb(e),I=new Map;return I.set(null,g),a.forEach(l=>{let c={...g};l===o&&(c.color=r,c.index=s,c.picked=!0),c=Fb({layer:l,info:c,mode:i});const C=c.layer;l===o&&i==="hover"&&(t.info=c),I.set(C.id,c),i==="hover"&&C.updateAutoHighlight(c)}),I}function Fb({layer:e,info:A,mode:t}){for(;e&&A;){const i=A.layer||null;A.sourceLayer=i,A.layer=e,A=e.getPickingInfo({info:A,mode:t,sourceLayer:i}),e=e.parent}return A}function wz(e,A){for(let t=e.length-1;t>=0;t--){const i=e[t];if(i.containsPixel(A))return i}return e[0]}class vz{constructor(A){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=A,this.pickLayersPass=new Rb(A),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(A){"layerFilter"in A&&(this.layerFilter=A.layerFilter),"_pickable"in A&&(this._pickable=A._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.delete(),this.depthFBO&&(this.depthFBO.color.delete(),this.depthFBO.delete())}pickObject(A){return this._pickClosestObject(A)}pickObjects(A){return this._pickVisibleObjects(A)}getLastPickedObject({x:A,y:t,layers:i,viewports:n},r=this.lastPickedInfo.info){const o=r&&r.layer&&r.layer.id,s=r&&r.viewport&&r.viewport.id,a=o?i.find(c=>c.id===o):null,g=s&&n.find(c=>c.id===s)||n[0],I=g&&g.unproject([A-g.x,t-g.y]);return{...r,...{x:A,y:t,viewport:g,coordinate:I,layer:a}}}_resizeBuffer(){var A,t;const{gl:i}=this;if(!this.pickingFBO&&(this.pickingFBO=new Xe(i),Xe.isSupported(i,{colorBufferFloat:!0}))){const n=new Xe(i);n.attach({36064:new Tt(i,{format:te(i)?34836:6408,type:5126})}),this.depthFBO=n}(A=this.pickingFBO)===null||A===void 0||A.resize({width:i.canvas.width,height:i.canvas.height}),(t=this.depthFBO)===null||t===void 0||t.resize({width:i.canvas.width,height:i.canvas.height})}_getPickable(A){if(this._pickable===!1)return null;const t=A.filter(i=>i.isPickable()&&!i.isComposite);return t.length?t:null}_pickClosestObject({layers:A,views:t,viewports:i,x:n,y:r,radius:o=0,depth:s=1,mode:a="query",unproject3D:g,onViewportActive:I,effects:l}){const c=this._getPickable(A),C=Ba(this.gl);if(!c)return{result:[],emptyInfo:xb({viewports:i,x:n,y:r,pixelRatio:C})};this._resizeBuffer();const B=Nh(this.gl,[n,r],!0),E=[B.x+Math.floor(B.width/2),B.y+Math.floor(B.height/2)],u=Math.round(o*C),{width:h,height:f}=this.pickingFBO,Q=this._getPickingRect({deviceX:E[0],deviceY:E[1],deviceRadius:u,deviceWidth:h,deviceHeight:f}),d={x:n-o,y:r-o,width:o*2+1,height:o*2+1};let w;const m=[],v=new Set;for(let x=0;x=g);D++){const F=m[D];let N={color:F.pickedColor,layer:null,index:F.pickedObjectIndex,picked:!0,x:n,y:r,pixelRatio:C};N=Fb({layer:F.pickedLayer,info:N,mode:a}),v.has(N.object)||v.set(N.object,N)}return Array.from(v.values())}_drawAndSample({layers:A,views:t,viewports:i,onViewportActive:n,deviceRect:r,cullRect:o,effects:s,pass:a},g=!1){const I=g?this.depthFBO:this.pickingFBO,{decodePickingColor:l}=this.pickLayersPass.render({layers:A,layerFilter:this.layerFilter,views:t,viewports:i,onViewportActive:n,pickingFBO:I,deviceRect:r,cullRect:o,effects:s,pass:a,pickZ:g}),{x:c,y:C,width:B,height:E}=r,u=new(g?Float32Array:Uint8Array)(B*E*4);return qE(I,{sourceX:c,sourceY:C,sourceWidth:B,sourceHeight:E,target:u}),{pickedColors:u,decodePickingColor:l}}_getPickingRect({deviceX:A,deviceY:t,deviceRadius:i,deviceWidth:n,deviceHeight:r}){const o=Math.max(0,A-i),s=Math.max(0,t-i),a=Math.min(n,A+i+1)-o,g=Math.min(r,t+i+1)-s;return a<=0||g<=0?null:{x:o,y:s,width:a,height:g}}}const Sz={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"};class Dz{constructor(A){y(this,"el",null),y(this,"isVisible",!1);const t=A.parentElement;t&&(this.el=document.createElement("div"),this.el.className="deck-tooltip",Object.assign(this.el.style,Sz),t.appendChild(this.el))}setTooltip(A,t,i){const n=this.el;if(n){if(typeof A=="string")n.innerText=A;else if(A)A.text&&(n.innerText=A.text),A.html&&(n.innerHTML=A.html),A.className&&(n.className=A.className),Object.assign(n.style,A.style);else{this.isVisible=!1,n.style.display="none";return}this.isVisible=!0,n.style.display="block",n.style.transform="translate(".concat(t,"px, ").concat(i,"px)")}}remove(){this.el&&(this.el.remove(),this.el=null)}}var Nb={exports:{}};/*! Hammer.JS - v2.0.7 - 2016-04-22 + * http://hammerjs.github.io/ + * + * Copyright (c) 2016 Jorik Tangelder; + * Licensed under the MIT license */(function(e){(function(A,t,i,n){var r=["","webkit","Moz","MS","ms","o"],o=t.createElement("div"),s="function",a=Math.round,g=Math.abs,I=Date.now;function l(S,R,b){return setTimeout(Q(S,b),R)}function c(S,R,b){return Array.isArray(S)?(C(S,b[R],b),!0):!1}function C(S,R,b){var K;if(S)if(S.forEach)S.forEach(R,b);else if(S.length!==n)for(K=0;K\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",re=A.console&&(A.console.warn||A.console.log);return re&&re.call(A.console,K,uA),S.apply(this,arguments)}}var E;typeof Object.assign!="function"?E=function(R){if(R===n||R===null)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(R),K=1;K-1}function F(S){return S.trim().split(/\s+/g)}function N(S,R,b){if(S.indexOf&&!b)return S.indexOf(R);for(var K=0;KLt[R]}):K=K.sort()),K}function H(S,R){for(var b,K,nA=R[0].toUpperCase()+R.slice(1),uA=0;uA1&&!b.firstMultiple?b.firstMultiple=Ge(R):nA===1&&(b.firstMultiple=!1);var uA=b.firstInput,re=b.firstMultiple,tt=re?re.center:uA.center,It=R.center=WA(K);R.timeStamp=I(),R.deltaTime=R.timeStamp-uA.timeStamp,R.angle=JA(tt,It),R.distance=oe(tt,It),ne(b,R),R.offsetDirection=Re(R.deltaX,R.deltaY);var Lt=qA(R.deltaTime,R.deltaX,R.deltaY);R.overallVelocityX=Lt.x,R.overallVelocityY=Lt.y,R.overallVelocity=g(Lt.x)>g(Lt.y)?Lt.x:Lt.y,R.scale=re?Ce(re.pointers,K):1,R.rotation=re?xA(re.pointers,K):0,R.maxPointers=b.prevInput?R.pointers.length>b.prevInput.maxPointers?R.pointers.length:b.prevInput.maxPointers:R.pointers.length,VA(b,R);var Hi=S.element;x(R.srcEvent.target,Hi)&&(Hi=R.srcEvent.target),R.target=Hi}function ne(S,R){var b=R.center,K=S.offsetDelta||{},nA=S.prevDelta||{},uA=S.prevInput||{};(R.eventType===sA||uA.eventType===IA)&&(nA=S.prevDelta={x:uA.deltaX||0,y:uA.deltaY||0},K=S.offsetDelta={x:b.x,y:b.y}),R.deltaX=nA.x+(b.x-K.x),R.deltaY=nA.y+(b.y-K.y)}function VA(S,R){var b=S.lastInterval||R,K=R.timeStamp-b.timeStamp,nA,uA,re,tt;if(R.eventType!=bA&&(K>gA||b.velocity===n)){var It=R.deltaX-b.deltaX,Lt=R.deltaY-b.deltaY,Hi=qA(K,It,Lt);uA=Hi.x,re=Hi.y,nA=g(Hi.x)>g(Hi.y)?Hi.x:Hi.y,tt=Re(It,Lt),S.lastInterval=R}else nA=b.velocity,uA=b.velocityX,re=b.velocityY,tt=b.direction;R.velocity=nA,R.velocityX=uA,R.velocityY=re,R.direction=tt}function Ge(S){for(var R=[],b=0;b=g(R)?S<0?QA:TA:R<0?RA:UA}function oe(S,R,b){b||(b=ie);var K=R[b[0]]-S[b[0]],nA=R[b[1]]-S[b[1]];return Math.sqrt(K*K+nA*nA)}function JA(S,R,b){b||(b=ie);var K=R[b[0]]-S[b[0]],nA=R[b[1]]-S[b[1]];return Math.atan2(nA,K)*180/Math.PI}function xA(S,R){return JA(R[1],R[0],ge)+JA(S[1],S[0],ge)}function Ce(S,R){return oe(R[0],R[1],ge)/oe(S[0],S[1],ge)}var Ee={mousedown:sA,mousemove:BA,mouseup:IA},PA="mousedown",rA="mousemove mouseup";function GA(){this.evEl=PA,this.evWin=rA,this.pressed=!1,KA.apply(this,arguments)}f(GA,KA,{handler:function(R){var b=Ee[R.type];b&sA&&R.button===0&&(this.pressed=!0),b&BA&&R.which!==1&&(b=IA),this.pressed&&(b&IA&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[R],changedPointers:[R],pointerType:AA,srcEvent:R}))}});var we={pointerdown:sA,pointermove:BA,pointerup:IA,pointercancel:bA,pointerout:bA},de={2:q,3:j,4:AA,5:iA},xe="pointerdown",Fe="pointermove pointerup pointercancel";A.MSPointerEvent&&!A.PointerEvent&&(xe="MSPointerDown",Fe="MSPointerMove MSPointerUp MSPointerCancel");function je(){this.evEl=xe,this.evWin=Fe,KA.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}f(je,KA,{handler:function(R){var b=this.store,K=!1,nA=R.type.toLowerCase().replace("ms",""),uA=we[nA],re=de[R.pointerType]||R.pointerType,tt=re==q,It=N(b,R.pointerId,"pointerId");uA&sA&&(R.button===0||tt)?It<0&&(b.push(R),It=b.length-1):uA&(IA|bA)&&(K=!0),!(It<0)&&(b[It]=R,this.callback(this.manager,uA,{pointers:b,changedPointers:[R],pointerType:re,srcEvent:R}),K&&b.splice(It,1))}});var et={touchstart:sA,touchmove:BA,touchend:IA,touchcancel:bA},Wn="touchstart",gs="touchstart touchmove touchend touchcancel";function En(){this.evTarget=Wn,this.evWin=gs,this.started=!1,KA.apply(this,arguments)}f(En,KA,{handler:function(R){var b=et[R.type];if(b===sA&&(this.started=!0),!!this.started){var K=tg.call(this,R,b);b&(IA|bA)&&K[0].length-K[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:K[0],changedPointers:K[1],pointerType:q,srcEvent:R})}}});function tg(S,R){var b=k(S.touches),K=k(S.changedTouches);return R&(IA|bA)&&(b=P(b.concat(K),"identifier",!0)),[b,K]}var Is={touchstart:sA,touchmove:BA,touchend:IA,touchcancel:bA},wA="touchstart touchmove touchend touchcancel";function LA(){this.evTarget=wA,this.targetIds={},KA.apply(this,arguments)}f(LA,KA,{handler:function(R){var b=Is[R.type],K=ve.call(this,R,b);K&&this.callback(this.manager,b,{pointers:K[0],changedPointers:K[1],pointerType:q,srcEvent:R})}});function ve(S,R){var b=k(S.touches),K=this.targetIds;if(R&(sA|BA)&&b.length===1)return K[b[0].identifier]=!0,[b,b];var nA,uA,re=k(S.changedTouches),tt=[],It=this.target;if(uA=b.filter(function(Lt){return x(Lt.target,It)}),R===sA)for(nA=0;nA-1&&K.splice(uA,1)};setTimeout(nA,pe)}}function L(S){for(var R=S.srcEvent.clientX,b=S.srcEvent.clientY,K=0;K-1&&this.requireFail.splice(R,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(S){return!!this.simultaneous[S.id]},emit:function(S){var R=this,b=this.state;function K(nA){R.manager.emit(nA,S)}b=yt&&K(R.options.event+Pm(b))},tryEmit:function(S){if(this.canEmit())return this.emit(S);this.state=Pi},canEmit:function(){for(var S=0;SR.threshold&&nA&R.direction},attrTest:function(S){return wi.prototype.attrTest.call(this,S)&&(this.state&kA||!(this.state&kA)&&this.directionTest(S))},emit:function(S){this.pX=S.deltaX,this.pY=S.deltaY;var R=Hm(S.direction);R&&(S.additionalEvent=this.options.event+R),this._super.emit.call(this,S)}});function vu(){wi.apply(this,arguments)}f(vu,wi,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[dA]},attrTest:function(S){return this._super.attrTest.call(this,S)&&(Math.abs(S.scale-1)>this.options.threshold||this.state&kA)},emit:function(S){if(S.scale!==1){var R=S.scale<1?"in":"out";S.additionalEvent=this.options.event+R}this._super.emit.call(this,S)}});function Su(){hn.apply(this,arguments),this._timer=null,this._input=null}f(Su,hn,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[X]},process:function(S){var R=this.options,b=S.pointers.length===R.pointers,K=S.distanceR.time;if(this._input=S,!K||!b||S.eventType&(IA|bA)&&!nA)this.reset();else if(S.eventType&sA)this.reset(),this._timer=l(function(){this.state=mt,this.tryEmit()},R.time,this);else if(S.eventType&IA)return mt;return Pi},reset:function(){clearTimeout(this._timer)},emit:function(S){this.state===mt&&(S&&S.eventType&IA?this.manager.emit(this.options.event+"up",S):(this._input.timeStamp=I(),this.manager.emit(this.options.event,this._input)))}});function Du(){wi.apply(this,arguments)}f(Du,wi,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[dA]},attrTest:function(S){return this._super.attrTest.call(this,S)&&(Math.abs(S.rotation)>this.options.threshold||this.state&kA)}});function Ru(){wi.apply(this,arguments)}f(Ru,wi,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:fA|NA,pointers:1},getTouchAction:function(){return ic.prototype.getTouchAction.call(this)},attrTest:function(S){var R=this.options.direction,b;return R&(fA|NA)?b=S.overallVelocity:R&fA?b=S.overallVelocityX:R&NA&&(b=S.overallVelocityY),this._super.attrTest.call(this,S)&&R&S.offsetDirection&&S.distance>this.options.threshold&&S.maxPointers==this.options.pointers&&g(b)>this.options.velocity&&S.eventType&IA},emit:function(S){var R=Hm(S.offsetDirection);R&&this.manager.emit(this.options.event+R,S),this.manager.emit(this.options.event,S)}});function nc(){hn.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}f(nc,hn,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[tA]},process:function(S){var R=this.options,b=S.pointers.length===R.pointers,K=S.distance0&&i.type==="pointerdown"&&(Fz(n,r=>r.pointerId===i.pointerId)||n.push(i)),A.call(this,i)}}function Lz(e){e.prototype.handler=function(t){let i=xz[t.type];i&Lb&&t.button>=0&&(this.pressed=!0),i&bb&&t.which===0&&(i=Bd),this.pressed&&(i&Bd&&(this.pressed=!1),this.callback(this.manager,i,{pointers:[t],changedPointers:[t],pointerType:"mouse",srcEvent:t}))}}Nz(Ul.PointerEventInput);Lz(Ul.MouseInput);const bz=Ul.Manager;let VE=class{constructor(A,t,i){this.element=A,this.callback=t,this.options={enable:!0,...i}}};const Gz=Ji?[[Ji.Pan,{event:"tripan",pointers:3,threshold:0,enable:!1}],[Ji.Rotate,{enable:!1}],[Ji.Pinch,{enable:!1}],[Ji.Swipe,{enable:!1}],[Ji.Pan,{threshold:0,enable:!1}],[Ji.Press,{enable:!1}],[Ji.Tap,{event:"doubletap",taps:2,enable:!1}],[Ji.Tap,{event:"anytap",enable:!1}],[Ji.Tap,{enable:!1}]]:null,wD={tripan:["rotate","pinch","pan"],rotate:["pinch"],pinch:["pan"],pan:["press","doubletap","anytap","tap"],doubletap:["anytap"],anytap:["tap"]},_z={doubletap:["tap"]},Mz={pointerdown:"pointerdown",pointermove:"pointermove",pointerup:"pointerup",touchstart:"pointerdown",touchmove:"pointermove",touchend:"pointerup",mousedown:"pointerdown",mousemove:"pointermove",mouseup:"pointerup"},jp={KEY_EVENTS:["keydown","keyup"],MOUSE_EVENTS:["mousedown","mousemove","mouseup","mouseover","mouseout","mouseleave"],WHEEL_EVENTS:["wheel","mousewheel"]},kz={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"},vD={click:"tap",anyclick:"anytap",dblclick:"doubletap",mousedown:"pointerdown",mousemove:"pointermove",mouseup:"pointerup",mouseover:"pointerover",mouseout:"pointerout",mouseleave:"pointerleave"},Tz=typeof navigator<"u"&&navigator.userAgent?navigator.userAgent.toLowerCase():"",Us=typeof window<"u"?window:global;let Ed=!1;try{const e={get passive(){return Ed=!0,!0}};Us.addEventListener("test",null,e),Us.removeEventListener("test",null)}catch{Ed=!1}const Uz=Tz.indexOf("firefox")!==-1,{WHEEL_EVENTS:Pz}=jp,SD="wheel",DD=4.000244140625,Hz=40,qz=.25;class Jz extends VE{constructor(A,t,i){super(A,t,i),this.handleEvent=n=>{if(!this.options.enable)return;let r=n.deltaY;Us.WheelEvent&&(Uz&&n.deltaMode===Us.WheelEvent.DOM_DELTA_PIXEL&&(r/=Us.devicePixelRatio),n.deltaMode===Us.WheelEvent.DOM_DELTA_LINE&&(r*=Hz)),r!==0&&r%DD===0&&(r=Math.floor(r/DD)),n.shiftKey&&r&&(r=r*qz),this.callback({type:SD,center:{x:n.clientX,y:n.clientY},delta:-r,srcEvent:n,pointerType:"mouse",target:n.target})},this.events=(this.options.events||[]).concat(Pz),this.events.forEach(n=>A.addEventListener(n,this.handleEvent,Ed?{passive:!1}:!1))}destroy(){this.events.forEach(A=>this.element.removeEventListener(A,this.handleEvent))}enableEventType(A,t){A===SD&&(this.options.enable=t)}}const{MOUSE_EVENTS:Oz}=jp,RD="pointermove",xD="pointerover",FD="pointerout",ND="pointerenter",LD="pointerleave";class Yz extends VE{constructor(A,t,i){super(A,t,i),this.handleEvent=r=>{this.handleOverEvent(r),this.handleOutEvent(r),this.handleEnterEvent(r),this.handleLeaveEvent(r),this.handleMoveEvent(r)},this.pressed=!1;const{enable:n}=this.options;this.enableMoveEvent=n,this.enableLeaveEvent=n,this.enableEnterEvent=n,this.enableOutEvent=n,this.enableOverEvent=n,this.events=(this.options.events||[]).concat(Oz),this.events.forEach(r=>A.addEventListener(r,this.handleEvent))}destroy(){this.events.forEach(A=>this.element.removeEventListener(A,this.handleEvent))}enableEventType(A,t){A===RD&&(this.enableMoveEvent=t),A===xD&&(this.enableOverEvent=t),A===FD&&(this.enableOutEvent=t),A===ND&&(this.enableEnterEvent=t),A===LD&&(this.enableLeaveEvent=t)}handleOverEvent(A){this.enableOverEvent&&A.type==="mouseover"&&this._emit(xD,A)}handleOutEvent(A){this.enableOutEvent&&A.type==="mouseout"&&this._emit(FD,A)}handleEnterEvent(A){this.enableEnterEvent&&A.type==="mouseenter"&&this._emit(ND,A)}handleLeaveEvent(A){this.enableLeaveEvent&&A.type==="mouseleave"&&this._emit(LD,A)}handleMoveEvent(A){if(this.enableMoveEvent)switch(A.type){case"mousedown":A.button>=0&&(this.pressed=!0);break;case"mousemove":A.which===0&&(this.pressed=!1),this.pressed||this._emit(RD,A);break;case"mouseup":this.pressed=!1;break}}_emit(A,t){this.callback({type:A,center:{x:t.clientX,y:t.clientY},srcEvent:t,pointerType:"mouse",target:t.target})}}const{KEY_EVENTS:Kz}=jp,bD="keydown",GD="keyup";class Vz extends VE{constructor(A,t,i){super(A,t,i),this.handleEvent=n=>{const r=n.target||n.srcElement;r.tagName==="INPUT"&&r.type==="text"||r.tagName==="TEXTAREA"||(this.enableDownEvent&&n.type==="keydown"&&this.callback({type:bD,srcEvent:n,key:n.key,target:n.target}),this.enableUpEvent&&n.type==="keyup"&&this.callback({type:GD,srcEvent:n,key:n.key,target:n.target}))},this.enableDownEvent=this.options.enable,this.enableUpEvent=this.options.enable,this.events=(this.options.events||[]).concat(Kz),A.tabIndex=this.options.tabIndex||0,A.style.outline="none",this.events.forEach(n=>A.addEventListener(n,this.handleEvent))}destroy(){this.events.forEach(A=>this.element.removeEventListener(A,this.handleEvent))}enableEventType(A,t){A===bD&&(this.enableDownEvent=t),A===GD&&(this.enableUpEvent=t)}}const _D="contextmenu";class Wz extends VE{constructor(A,t,i){super(A,t,i),this.handleEvent=n=>{this.options.enable&&this.callback({type:_D,center:{x:n.clientX,y:n.clientY},srcEvent:n,pointerType:"mouse",target:n.target})},A.addEventListener("contextmenu",this.handleEvent)}destroy(){this.element.removeEventListener("contextmenu",this.handleEvent)}enableEventType(A,t){A===_D&&(this.options.enable=t)}}const ud=1,_B=2,hd=4,zz={pointerdown:ud,pointermove:_B,pointerup:hd,mousedown:ud,mousemove:_B,mouseup:hd},jz=1,Xz=2,Zz=3,$z=0,A7=1,e7=2,t7=1,i7=2,n7=4;function r7(e){const A=zz[e.srcEvent.type];if(!A)return null;const{buttons:t,button:i,which:n}=e.srcEvent;let r=!1,o=!1,s=!1;return A===hd||A===_B&&!Number.isFinite(t)?(r=n===jz,o=n===Xz,s=n===Zz):A===_B?(r=!!(t&t7),o=!!(t&n7),s=!!(t&i7)):A===ud&&(r=i===$z,o=i===A7,s=i===e7),{leftButton:r,middleButton:o,rightButton:s}}function o7(e,A){const t=e.center;if(!t)return null;const i=A.getBoundingClientRect(),n=i.width/A.offsetWidth||1,r=i.height/A.offsetHeight||1,o={x:(t.x-i.left-A.clientLeft)/n,y:(t.y-i.top-A.clientTop)/r};return{center:t,offsetCenter:o}}const Wh={srcElement:"root",priority:0};class s7{constructor(A){this.handleEvent=t=>{if(this.isEmpty())return;const i=this._normalizeEvent(t);let n=t.srcEvent.target;for(;n&&n!==i.rootElement;){if(this._emit(i,n),i.handled)return;n=n.parentNode}this._emit(i,"root")},this.eventManager=A,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(A,t,i,n=!1,r=!1){const{handlers:o,handlersByElement:s}=this;let a=Wh;typeof i=="string"||i&&i.addEventListener?a={...Wh,srcElement:i}:i&&(a={...Wh,...i});let g=s.get(a.srcElement);g||(g=[],s.set(a.srcElement,g));const I={type:A,handler:t,srcElement:a.srcElement,priority:a.priority};n&&(I.once=!0),r&&(I.passive=!0),o.push(I),this._active=this._active||!I.passive;let l=g.length-1;for(;l>=0&&!(g[l].priority>=I.priority);)l--;g.splice(l+1,0,I)}remove(A,t){const{handlers:i,handlersByElement:n}=this;for(let r=i.length-1;r>=0;r--){const o=i[r];if(o.type===A&&o.handler===t){i.splice(r,1);const s=n.get(o.srcElement);s.splice(s.indexOf(o),1),s.length===0&&n.delete(o.srcElement)}}this._active=i.some(r=>!r.passive)}_emit(A,t){const i=this.handlersByElement.get(t);if(i){let n=!1;const r=()=>{A.handled=!0},o=()=>{A.handled=!0,n=!0},s=[];for(let a=0;a{A.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:t}}}const a7={events:null,recognizers:null,recognizerOptions:{},Manager:bz,touchAction:"none",tabIndex:0};class g7{constructor(A=null,t){this._onBasicInput=n=>{const{srcEvent:r}=n,o=Mz[r.type];o&&this.manager.emit(o,n)},this._onOtherEvent=n=>{this.manager.emit(n.type,n)},this.options={...a7,...t},this.events=new Map,this.setElement(A);const{events:i}=this.options;i&&this.on(i)}getElement(){return this.element}setElement(A){if(this.element&&this.destroy(),this.element=A,!A)return;const{options:t}=this,i=t.Manager;this.manager=new i(A,{touchAction:t.touchAction,recognizers:t.recognizers||Gz}).on("hammer.input",this._onBasicInput),t.recognizers||Object.keys(wD).forEach(n=>{const r=this.manager.get(n);r&&wD[n].forEach(o=>{r.recognizeWith(o)})});for(const n in t.recognizerOptions){const r=this.manager.get(n);if(r){const o=t.recognizerOptions[n];delete o.enable,r.set(o)}}this.wheelInput=new Jz(A,this._onOtherEvent,{enable:!1}),this.moveInput=new Yz(A,this._onOtherEvent,{enable:!1}),this.keyInput=new Vz(A,this._onOtherEvent,{enable:!1,tabIndex:t.tabIndex}),this.contextmenuInput=new Wz(A,this._onOtherEvent,{enable:!1});for(const[n,r]of this.events)r.isEmpty()||(this._toggleRecognizer(r.recognizerName,!0),this.manager.on(n,r.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(A,t,i){this._addEventHandler(A,t,i,!1)}once(A,t,i){this._addEventHandler(A,t,i,!0)}watch(A,t,i){this._addEventHandler(A,t,i,!1,!0)}off(A,t){this._removeEventHandler(A,t)}_toggleRecognizer(A,t){const{manager:i}=this;if(!i)return;const n=i.get(A);if(n&&n.options.enable!==t){n.set({enable:t});const r=_z[A];r&&!this.options.recognizers&&r.forEach(o=>{const s=i.get(o);t?(s.requireFailure(A),n.dropRequireFailure(o)):s.dropRequireFailure(A)})}this.wheelInput.enableEventType(A,t),this.moveInput.enableEventType(A,t),this.keyInput.enableEventType(A,t),this.contextmenuInput.enableEventType(A,t)}_addEventHandler(A,t,i,n,r){if(typeof A!="string"){i=t;for(const I in A)this._addEventHandler(I,A[I],i,n,r);return}const{manager:o,events:s}=this,a=vD[A]||A;let g=s.get(a);g||(g=new s7(this),s.set(a,g),g.recognizerName=kz[a]||a,o&&o.on(a,g.handleEvent)),g.add(A,t,i,n,r),g.isEmpty()||this._toggleRecognizer(g.recognizerName,!0)}_removeEventHandler(A,t){if(typeof A!="string"){for(const o in A)this._removeEventHandler(o,A[o]);return}const{events:i}=this,n=vD[A]||A,r=i.get(n);if(r&&(r.remove(A,t),r.isEmpty())){const{recognizerName:o}=r;let s=!1;for(const a of i.values())if(a.recognizerName===o&&!a.isEmpty()){s=!0;break}s||this._toggleRecognizer(o,!1)}}}function ro(){}const I7=({isDragging:e})=>e?"grabbing":"grab",Gb={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:ro,onResize:ro,onViewStateChange:ro,onInteractionStateChange:ro,onBeforeRender:ro,onAfterRender:ro,onLoad:ro,onError:e=>$A.error(e.message)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:I7,getTooltip:null,debug:!1,drawPickingColors:!1};class WE{constructor(A){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",t=>{const{_pickRequest:i}=this;if(t.type==="pointerleave")i.x=-1,i.y=-1,i.radius=0;else{if(t.leftButton||t.rightButton)return;{const n=t.offsetCenter;if(!n)return;i.x=n.x,i.y=n.y,i.radius=this.props.pickingRadius}}this.layerManager&&(this.layerManager.context.mousePosition={x:i.x,y:i.y}),i.event=t}),y(this,"_onEvent",t=>{const i=ID[t.type],n=t.offsetCenter;if(!i||!n||!this.layerManager)return;const r=this.layerManager.getLayers(),o=this.deckPicker.getLastPickedObject({x:n.x,y:n.y,layers:r,viewports:this.getViewports(n)},this._lastPointerDownInfo),{layer:s}=o,a=s&&(s[i.handler]||s.props[i.handler]),g=this.props[i.handler];let I=!1;a&&(I=a.call(s,o,t)),!I&&g&&g(o,t)}),y(this,"_onPointerDown",t=>{const i=t.offsetCenter,n=this._pick("pickObject","pickObject Time",{x:i.x,y:i.y,radius:this.props.pickingRadius});this._lastPointerDownInfo=n.result[0]||n.emptyInfo}),this.props={...Gb,...A},A=this.props,this._needsRedraw="Initial render",this._pickRequest={mode:"hover",x:-1,y:-1,radius:0,event:null},this.cursorState={isHovering:!1,isDragging:!1},A.viewState&&A.initialViewState&&$A.warn("View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.")(),eL()==="IE"&&$A.warn("IE 11 is not supported")(),this.viewState=A.initialViewState,A.gl||typeof document<"u"&&(this.canvas=this._createCanvas(A)),this.animationLoop=this._createAnimationLoop(A),this.stats=new TE({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(A),A._typedArrayManagerProps&&fa.setOptions(A._typedArrayManagerProps),this.animationLoop.start()}finalize(){var A,t,i,n,r,o,s;if(this.animationLoop.stop(),this.animationLoop=null,this._lastPointerDownInfo=null,(A=this.layerManager)===null||A===void 0||A.finalize(),this.layerManager=null,(t=this.viewManager)===null||t===void 0||t.finalize(),this.viewManager=null,(i=this.effectManager)===null||i===void 0||i.finalize(),this.effectManager=null,(n=this.deckRenderer)===null||n===void 0||n.finalize(),this.deckRenderer=null,(r=this.deckPicker)===null||r===void 0||r.finalize(),this.deckPicker=null,(o=this.eventManager)===null||o===void 0||o.destroy(),this.eventManager=null,(s=this.tooltip)===null||s===void 0||s.remove(),this.tooltip=null,!this.props.canvas&&!this.props.gl&&this.canvas){var a;(a=this.canvas.parentElement)===null||a===void 0||a.removeChild(this.canvas),this.canvas=null}}setProps(A){this.stats.get("setProps Time").timeStart(),"onLayerHover"in A&&$A.removed("onLayerHover","onHover")(),"onLayerClick"in A&&$A.removed("onLayerClick","onClick")(),A.initialViewState&&!ns(this.props.initialViewState,A.initialViewState)&&(this.viewState=A.initialViewState),Object.assign(this.props,A),this._setCanvasSize(this.props);const t=Object.create(this.props);Object.assign(t,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState()}),this.animationLoop.setProps(t),this.layerManager&&(this.viewManager.setProps(t),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(t),this.effectManager.setProps(t),this.deckRenderer.setProps(t),this.deckPicker.setProps(t)),this.stats.get("setProps Time").timeEnd()}needsRedraw(A={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return"Deck._animate";let t=this._needsRedraw;A.clearRedrawFlags&&(this._needsRedraw=!1);const i=this.viewManager.needsRedraw(A),n=this.layerManager.needsRedraw(A),r=this.effectManager.needsRedraw(A),o=this.deckRenderer.needsRedraw(A);return t=t||i||n||r||o,t}redraw(A){if(!this.layerManager)return;let t=this.needsRedraw({clearRedrawFlags:!0});t=A||t,t&&(this.stats.get("Redraw Count").incrementCount(),this.props._customRender?this.props._customRender(t):this._drawLayers(t))}get isInitialized(){return this.viewManager!==null}getViews(){return ot(this.viewManager),this.viewManager.views}getViewports(A){return ot(this.viewManager),this.viewManager.getViewports(A)}pickObject(A){const t=this._pick("pickObject","pickObject Time",A).result;return t.length?t[0]:null}pickMultipleObjects(A){return A.depth=A.depth||10,this._pick("pickObject","pickMultipleObjects Time",A).result}pickObjects(A){return this._pick("pickObjects","pickObjects Time",A)}_addResources(A,t=!1){for(const i in A)this.layerManager.resourceManager.add({resourceId:i,data:A[i],forceUpdate:t})}_removeResources(A){for(const t of A)this.layerManager.resourceManager.remove(t)}_pick(A,t,i){ot(this.deckPicker);const{stats:n}=this;n.get("Pick Count").incrementCount(),n.get(t).timeStart();const r=this.deckPicker[A]({layers:this.layerManager.getLayers(i),views:this.viewManager.getViews(),viewports:this.getViewports(i),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...i});return n.get(t).timeEnd(),r}_createCanvas(A){let t=A.canvas;return typeof t=="string"&&(t=document.getElementById(t),ot(t)),t||(t=document.createElement("canvas"),t.id=A.id||"deckgl-overlay",(A.parent||document.body).appendChild(t)),Object.assign(t.style,A.style),t}_setCanvasSize(A){if(!this.canvas)return;const{width:t,height:i}=A;if(t||t===0){const r=Number.isFinite(t)?"".concat(t,"px"):t;this.canvas.style.width=r}if(i||i===0){var n;const r=Number.isFinite(i)?"".concat(i,"px"):i;this.canvas.style.position=((n=A.style)===null||n===void 0?void 0:n.position)||"absolute",this.canvas.style.height=r}}_updateCanvasSize(){const{canvas:A}=this;if(!A)return;const t=A.clientWidth||A.width,i=A.clientHeight||A.height;if(t!==this.width||i!==this.height){var n;this.width=t,this.height=i,(n=this.viewManager)===null||n===void 0||n.setProps({width:t,height:i}),this.props.onResize({width:t,height:i})}}_createAnimationLoop(A){const{width:t,height:i,gl:n,glOptions:r,debug:o,onError:s,onBeforeRender:a,onAfterRender:g,useDevicePixels:I}=A;return new R5({width:t,height:i,useDevicePixels:I,autoResizeViewport:!1,gl:n,onCreateContext:l=>pL({...r,...l,canvas:this.canvas,debug:o,onContextLost:()=>this._onContextLost()}),onInitialize:l=>this._setGLContext(l.gl),onRender:this._onRenderFrame.bind(this),onBeforeRender:a,onAfterRender:g,onError:s})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let A=this.props.views||[new Sb({id:"default-view"})];return A=Array.isArray(A)?A:[A],A.length&&this.props.controller&&(A[0].props.controller=this.props.controller),A}_onContextLost(){const{onError:A}=this.props;this.animationLoop&&A&&A(new Error("WebGL context is lost"))}_pickAndCallback(){const{_pickRequest:A}=this;if(A.event){const{result:i,emptyInfo:n}=this._pick("pickObject","pickObject Time",A);this.cursorState.isHovering=i.length>0;let r=n,o=!1;for(const s of i){var t;r=s,o=((t=s.layer)===null||t===void 0?void 0:t.onHover(s,A.event))||o}if(!o&&this.props.onHover&&this.props.onHover(r,A.event),this.props.getTooltip&&this.tooltip){const s=this.props.getTooltip(r);this.tooltip.setTooltip(s,r.x,r.y)}A.event=null}}_updateCursor(){const A=this.props.parent||this.canvas;A&&(A.style.cursor=this.props.getCursor(this.cursorState))}_setGLContext(A){if(this.layerManager)return;this.canvas||(this.canvas=A.canvas,Gp(A,{enable:!0,copyState:!0})),this.tooltip=new Dz(this.canvas),kn(A,{blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthTest:!0,depthFunc:515}),this.props.onWebGLInitialized(A);const t=new cb;t.play(),this.animationLoop.attachTimeline(t),this.eventManager=new g7(this.props.parent||A.canvas,{touchAction:this.props.touchAction,recognizerOptions:this.props.eventRecognizerOptions,events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(const n in ID)this.eventManager.on(n,this._onEvent);this.viewManager=new OW({timeline:t,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 i=this.viewManager.getViewports()[0];this.layerManager=new JW(A,{deck:this,stats:this.stats,viewport:i,timeline:t}),this.effectManager=new Bz,this.deckRenderer=new Qz(A),this.deckPicker=new vz(A),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(A,t){const{gl:i}=this.layerManager.context;kn(i,this.props.parameters),this.props.onBeforeRender({gl:i}),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:A,effects:this.effectManager.getEffects(),...t}),this.props.onAfterRender({gl:i})}_onRenderFrame(A){this._getFrameStats(),this._metricsCounter++%60===0&&(this._getMetrics(),this.stats.reset(),$A.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(A){const t=this.props.onViewStateChange(A)||A.viewState;this.viewState&&(this.viewState={...this.viewState,[A.viewId]:t},this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(A){this.cursorState.isDragging=A.isDragging||!1,this.props.onInteractionStateChange(A)}_getFrameStats(){const{stats:A}=this;A.get("frameRate").timeEnd(),A.get("frameRate").timeStart();const t=this.animationLoop.stats;A.get("GPU Time").addTime(t.get("GPU Time").lastTiming),A.get("CPU Time").addTime(t.get("CPU Time").lastTiming)}_getMetrics(){const{metrics:A,stats:t}=this;A.fps=t.get("frameRate").getHz(),A.setPropsTime=t.get("setProps Time").time,A.updateAttributesTime=t.get("Update Attributes").time,A.framesRedrawn=t.get("Redraw Count").count,A.pickTime=t.get("pickObject Time").time+t.get("pickMultipleObjects Time").time+t.get("pickObjects Time").time,A.pickCount=t.get("Pick Count").count,A.gpuTime=t.get("GPU Time").time,A.cpuTime=t.get("CPU Time").time,A.gpuTimePerFrame=t.get("GPU Time").getAverageTime(),A.cpuTimePerFrame=t.get("CPU Time").getAverageTime();const i=fo.get("Memory Usage");A.bufferMemory=i.get("Buffer Memory").count,A.textureMemory=i.get("Texture Memory").count,A.renderbufferMemory=i.get("Renderbuffer Memory").count,A.gpuMemory=i.get("GPU Memory").count}}y(WE,"defaultProps",Gb);y(WE,"VERSION",kO.VERSION);class zh{constructor(A,t){y(this,"opts",void 0),y(this,"source",void 0),this.opts=t,this.source=A}get value(){return this.source.value}getValue(){const A=this.source.getBuffer(),t=this.getAccessor();if(A)return[A,t];const{value:i}=this.source,{size:n}=t;let r=i;if(i&&i.length!==n){r=new Float32Array(n);const o=t.elementOffset||0;for(let s=0;s=r){const o=new Array(n).fill(1/0),s=new Array(n).fill(-1/0);for(let a=0;as[g]&&(s[g]=I)}A=[o,s]}}return this.state.bounds=A,A}setData(A){const{state:t}=this;let i;ArrayBuffer.isView(A)?i={value:A}:A instanceof me?i={buffer:A}:i=A;const n={...this.settings,...i};if(t.bufferAccessor=n,t.bounds=null,i.constant){let r=i.value;if(r=this._normalizeValue(r,[],0),this.settings.normalized&&(r=this.normalizeConstant(r)),!(!t.constant||!this._areValuesEqual(r,this.value)))return!1;t.externalBuffer=null,t.constant=!0,this.value=r}else if(i.buffer){const r=i.buffer;t.externalBuffer=r,t.constant=!1,this.value=i.value||null;const o=i.value instanceof Float64Array;n.type=i.type||r.accessor.type,n.bytesPerElement=r.accessor.BYTES_PER_ELEMENT*(o?2:1),n.stride=LC(n)}else if(i.value){this._checkExternalBuffer(i);let r=i.value;t.externalBuffer=null,t.constant=!1,this.value=r,n.bytesPerElement=r.BYTES_PER_ELEMENT,n.stride=LC(n);const{buffer:o,byteOffset:s}=this;this.doublePrecision&&r instanceof Float64Array&&(r=Kh(r,n));const a=r.byteLength+s+n.stride*2;o.byteLength(t+128)/255*2-1);case 5122:return new Float32Array(A).map(t=>(t+32768)/65535*2-1);case 5121:return new Float32Array(A).map(t=>t/255);case 5123:return new Float32Array(A).map(t=>t/65535);default:return A}}_normalizeValue(A,t,i){const{defaultValue:n,size:r}=this.settings;if(Number.isFinite(A))return t[i]=A,t;if(!A)return t[i]=n[0],t;switch(r){case 4:t[i+3]=Number.isFinite(A[3])?A[3]:n[3];case 3:t[i+2]=Number.isFinite(A[2])?A[2]:n[2];case 2:t[i+1]=Number.isFinite(A[1])?A[1]:n[1];case 1:t[i+0]=Number.isFinite(A[0])?A[0]:n[0];break;default:let o=r;for(;--o>=0;)t[i+o]=Number.isFinite(A[o])?A[o]:n[o]}return t}_areValuesEqual(A,t){if(!A||!t)return!1;const{size:i}=this;for(let n=0;n0&&(kD.length=e.length,i=kD):i=MD,(A>0||Number.isFinite(t))&&(i=(Array.isArray(i)?i:Array.from(i)).slice(A,t),n.index=A-1),{iterable:i,objectInfo:n}}function Mb(e){return e&&e[Symbol.asyncIterator]}function kb(e,A){const{size:t,stride:i,offset:n,startIndices:r,nested:o}=A,s=e.BYTES_PER_ELEMENT,a=i?i/s:t,g=n?n/s:0,I=Math.floor((e.length-g)/a);return(l,{index:c,target:C})=>{if(!r){const h=c*a+g;for(let f=0;f=A[1]))return e;const t=[],i=e.length;let n=0;for(let r=0;rA[1]?t.push(o):A=[Math.min(o[0],A[0]),Math.max(o[1],A[1])]}return t.splice(n,0,A),t}function jh(e){const{source:A,target:t,start:i=0,size:n,getData:r}=e,o=e.end||t.length,s=A.length,a=o-i;if(s>a){t.set(A.subarray(0,a),i);return}if(t.set(A,i),!r)return;let g=s;for(;gi(I+s,l)),g=Math.min(n.length,r.length);for(let I=1;Ie},spring:{stiffness:.05,damping:.5}};function Tb(e,A){if(!e)return null;Number.isFinite(e)&&(e={type:"interpolation",duration:e});const t=e.type||"interpolation";return{...h7[t],...A,...e,type:t}}function Ub(e,A){const t=A.getBuffer();return t?[t,{divisor:0,size:A.size,normalized:A.settings.normalized}]:A.value}function Pb(e){switch(e){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(e,'"'))}}function Hb(e){e.push(e.shift())}function Xp(e,A){const{doublePrecision:t,settings:i,value:n,size:r}=e,o=t&&n instanceof Float64Array?2:1;return(i.noAlloc?n.length:A*r)*o}function qb({buffer:e,numInstances:A,attribute:t,fromLength:i,fromStartIndices:n,getData:r=o=>o}){const o=t.doublePrecision&&t.value instanceof Float64Array?2:1,s=t.size*o,a=t.byteOffset,g=t.startIndices,I=n&&g,l=Xp(t,A),c=t.isConstant;if(!I&&i>=l)return;const C=c?t.value:t.getBuffer().getData({srcByteOffset:a});if(t.settings.normalized&&!c){const h=r;r=(f,Q)=>t.normalizeConstant(h(f,Q))}const B=c?(h,f)=>r(C,f):(h,f)=>r(C.subarray(h,h+s),f),E=e.getData({length:i}),u=new Float32Array(l);u7({source:E,target:u,sourceStartIndices:n,targetStartIndices:g,size:s,getData:B}),e.byteLengthA[r])]:A[t];return Tb(n,i)}setNeedsUpdate(A=this.id,t){if(this.state.needsUpdate=this.state.needsUpdate||A,this.setNeedsRedraw(A),t){const{startRow:i=0,endRow:n=1/0}=t;this.state.updateRanges=E7(this.state.updateRanges,[i,n])}else this.state.updateRanges=bC}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=B7}setNeedsRedraw(A=this.id){this.state.needsRedraw=this.state.needsRedraw||A}allocate(A){const{state:t,settings:i}=this;return i.noAlloc?!1:i.update?(super.allocate(A,t.updateRanges!==bC),!0):!1}updateBuffer({numInstances:A,data:t,props:i,context:n}){if(!this.needsUpdate())return!1;const{state:{updateRanges:r},settings:{update:o,noAlloc:s}}=this;let a=!0;if(o){for(const[g,I]of r)o.call(n,this,{data:t,startRow:g,endRow:I,props:i,numInstances:A});if(this.value)if(this.constant||this.buffer.byteLengthI?g.set(Q,E):(A._normalizeValue(Q,h.target,0),TW({target:g,source:h.target,start:E,count:d}));E+=d*I}else A._normalizeValue(Q,g,E),E+=I}}_validateAttributeUpdaters(){const{settings:A}=this;if(!(A.noAlloc||typeof A.update=="function"))throw new Error("Attribute ".concat(this.id," missing update or accessor"))}_checkAttributeArray(){const{value:A}=this,t=Math.min(4,this.size);if(A&&A.length>=t){let i=!0;switch(t){case 4:i=i&&Number.isFinite(A[3]);case 3:i=i&&Number.isFinite(A[2]);case 2:i=i&&Number.isFinite(A[1]);case 1:i=i&&Number.isFinite(A[0]);break;default:i=!1}if(!i)throw new Error("Illegal attribute generated for ".concat(this.id))}}}class f7{constructor({gl:A,attribute:t,timeline:i}){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=A,this.transition=new kl(i),this.attribute=t,this.attributeInTransition=new Zp(A,t.settings),this.currentStartIndices=t.startIndices,this.currentLength=0,this.transform=d7(A,t);const n={byteLength:0,usage:35050};this.buffers=[new me(A,n),new me(A,n)]}get inProgress(){return this.transition.inProgress}start(A,t){if(A.duration<=0){this.transition.cancel();return}this.settings=A;const{gl:i,buffers:n,attribute:r}=this;Hb(n);const o={numInstances:t,attribute:r,fromLength:this.currentLength,fromStartIndices:this.currentStartIndices,getData:A.enter};for(const s of n)qb({buffer:s,...o});this.currentStartIndices=r.startIndices,this.currentLength=Xp(r,t),this.attributeInTransition.setData({buffer:n[1],value:r.value}),this.transition.start(A),this.transform.update({elementCount:Math.floor(this.currentLength/r.size),sourceBuffers:{aFrom:n[0],aTo:Ub(i,r)},feedbackBuffers:{vCurrent:n[1]}})}update(){const A=this.transition.update();if(A){const{duration:t,easing:i}=this.settings,{time:n}=this.transition;let r=n/t;i&&(r=i(r)),this.transform.run({uniforms:{time:r}})}return A}cancel(){this.transition.cancel(),this.transform.delete();for(const A of this.buffers)A.delete();this.buffers.length=0}}const Q7=` +#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 d7(e,A){const t=Pb(A.size);return new Kp(e,{vs:Q7,defines:{ATTRIBUTE_TYPE:t},varyings:["vCurrent"]})}class p7{constructor({gl:A,attribute:t,timeline:i}){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=A,this.type="spring",this.transition=new kl(i),this.attribute=t,this.attributeInTransition=new Zp(A,{...t.settings,normalized:!1}),this.currentStartIndices=t.startIndices,this.currentLength=0,this.texture=m7(A),this.framebuffer=w7(A,this.texture),this.transform=y7(A,t,this.framebuffer);const n={byteLength:0,usage:35050};this.buffers=[new me(A,n),new me(A,n),new me(A,n)]}get inProgress(){return this.transition.inProgress}start(A,t){const{gl:i,buffers:n,attribute:r}=this,o={numInstances:t,attribute:r,fromLength:this.currentLength,fromStartIndices:this.currentStartIndices,getData:A.enter};for(const s of n)qb({buffer:s,...o});this.settings=A,this.currentStartIndices=r.startIndices,this.currentLength=Xp(r,t),this.attributeInTransition.setData({buffer:n[1],value:r.value}),this.transition.start({...A,duration:1/0}),this.transform.update({elementCount:Math.floor(this.currentLength/r.size),sourceBuffers:{aTo:Ub(i,r)}})}update(){const{buffers:A,transform:t,framebuffer:i,transition:n}=this;if(!n.update())return!1;const o=this.settings;return t.update({sourceBuffers:{aPrev:A[0],aCur:A[1]},feedbackBuffers:{vNext:A[2]}}),t.run({framebuffer:i,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]}}),Hb(A),this.attributeInTransition.setData({buffer:A[1],value:this.attribute.value}),qE(i)[0]>0||n.end(),!0}cancel(){this.transition.cancel(),this.transform.delete();for(const A of this.buffers)A.delete();this.buffers.length=0,this.texture.delete(),this.framebuffer.delete()}}function y7(e,A,t){const i=Pb(A.size);return new Kp(e,{framebuffer:t,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:i},varyings:["vNext"]})}function m7(e){return new Tt(e,{data:new Uint8Array(4),format:6408,type:5121,border:0,mipmaps:!1,dataFormat:6408,width:1,height:1})}function w7(e,A){return new Xe(e,{id:"spring-transition-is-transitioning-framebuffer",width:1,height:1,attachments:{36064:A}})}const v7={interpolation:f7,spring:p7};class S7{constructor(A,{id:t,timeline:i}){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=t,this.gl=A,this.timeline=i,this.transitions={},this.needsRedraw=!1,this.numInstances=1,this.isSupported=Kp.isSupported(A)}finalize(){for(const A in this.transitions)this._removeTransition(A)}update({attributes:A,transitions:t,numInstances:i}){this.numInstances=i||1;for(const n in A){const r=A[n],o=r.getTransitionSetting(t);o&&this._updateAttribute(n,r,o)}for(const n in this.transitions){const r=A[n];(!r||!r.getTransitionSetting(t))&&this._removeTransition(n)}}hasAttribute(A){const t=this.transitions[A];return t&&t.inProgress}getAttributes(){const A={};for(const t in this.transitions){const i=this.transitions[t];i.inProgress&&(A[t]=i.attributeInTransition)}return A}run(){if(!this.isSupported||this.numInstances===0)return!1;for(const t in this.transitions)this.transitions[t].update()&&(this.needsRedraw=!0);const A=this.needsRedraw;return this.needsRedraw=!1,A}_removeTransition(A){this.transitions[A].cancel(),delete this.transitions[A]}_updateAttribute(A,t,i){const n=this.transitions[A];let r=!n||n.type!==i.type;if(r){if(!this.isSupported){$A.warn("WebGL2 not supported by this browser. Transition for ".concat(A," is disabled."))();return}n&&this._removeTransition(A);const o=v7[i.type];o?this.transitions[A]=new o({attribute:t,timeline:this.timeline,gl:this.gl}):($A.error("unsupported transition type '".concat(i.type,"'"))(),r=!1)}(r||t.needsRedraw())&&(this.needsRedraw=!0,this.transitions[A].start(i,this.numInstances))}}const TD="attributeManager.invalidate",D7="attributeManager.updateStart",R7="attributeManager.updateEnd",x7="attribute.updateStart",F7="attribute.allocate",N7="attribute.updateEnd";class L7{constructor(A,{id:t="attribute-manager",stats:i,timeline:n}={}){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=t,this.gl=A,this.attributes={},this.updateTriggers={},this.needsRedraw=!0,this.userData={},this.stats=i,this.attributeTransitionManager=new S7(A,{id:"".concat(t,"-transitions"),timeline:n}),Object.seal(this)}finalize(){for(const A in this.attributes)this.attributes[A].delete();this.attributeTransitionManager.finalize()}getNeedsRedraw(A={clearRedrawFlags:!1}){const t=this.needsRedraw;return this.needsRedraw=this.needsRedraw&&!A.clearRedrawFlags,t&&this.id}setNeedsRedraw(){this.needsRedraw=!0}add(A){this._add(A)}addInstanced(A){this._add(A,{instanced:1})}remove(A){for(const t of A)this.attributes[t]!==void 0&&(this.attributes[t].delete(),delete this.attributes[t])}invalidate(A,t){const i=this._invalidateTrigger(A,t);St(TD,this,A,i)}invalidateAll(A){for(const t in this.attributes)this.attributes[t].setNeedsUpdate(t,A);St(TD,this,"all")}update({data:A,numInstances:t,startIndices:i=null,transitions:n,props:r={},buffers:o={},context:s={}}){let a=!1;St(D7,this),this.stats&&this.stats.get("Update Attributes").timeStart();for(const g in this.attributes){const I=this.attributes[g],l=I.settings.accessor;I.startIndices=i,I.numInstances=t,r[g]&&$A.removed("props.".concat(g),"data.attributes.".concat(g))(),I.setExternalBuffer(o[g])||I.setBinaryValue(typeof l=="string"?o[l]:void 0,A.startIndices)||typeof l=="string"&&!o[l]&&I.setConstantValue(r[l])||I.needsUpdate()&&(a=!0,this._updateAttribute({attribute:I,numInstances:t,data:A,props:r,context:s})),this.needsRedraw=this.needsRedraw||I.needsRedraw()}a&&St(R7,this,t),this.stats&&this.stats.get("Update Attributes").timeEnd(),this.attributeTransitionManager.update({attributes:this.attributes,numInstances:t,transitions:n})}updateTransition(){const{attributeTransitionManager:A}=this,t=A.run();return this.needsRedraw=this.needsRedraw||t,t}getAttributes(){return this.attributes}getChangedAttributes(A={clearChangedFlags:!1}){const{attributes:t,attributeTransitionManager:i}=this,n={...i.getAttributes()};for(const r in t){const o=t[r];o.needsRedraw(A)&&!i.hasAttribute(r)&&(n[r]=o)}return n}getShaderAttributes(A,t={}){A||(A=this.getAttributes());const i={};for(const n in A)t[n]||Object.assign(i,A[n].getShaderAttributes());return i}_add(A,t={}){for(const i in A){const n=A[i];this.attributes[i]=this._createAttribute(i,n,t)}this._mapUpdateTriggersToAttributes()}_createAttribute(A,t,i){const n={...t,id:A,size:t.isIndexed&&1||t.size||1,divisor:i.instanced?1:t.divisor||0};return new Zp(this.gl,n)}_mapUpdateTriggersToAttributes(){const A={};for(const t in this.attributes)this.attributes[t].getUpdateTriggers().forEach(n=>{A[n]||(A[n]=[]),A[n].push(t)});this.updateTriggers=A}_invalidateTrigger(A,t){const{attributes:i,updateTriggers:n}=this,r=n[A];return r&&r.forEach(o=>{const s=i[o];s&&s.setNeedsUpdate(s.id,t)}),r}_updateAttribute(A){const{attribute:t,numInstances:i}=A;if(St(x7,t),t.constant){t.setConstantValue(t.value);return}t.allocate(i)&&St(F7,t,i),t.updateBuffer(A)&&(this.needsRedraw=!0,St(N7,t,i))}}class b7 extends kl{get value(){return this._value}_onUpdate(){const{time:A,settings:{fromValue:t,toValue:i,duration:n,easing:r}}=this,o=r(A/n);this._value=So(t,i,o)}}const UD=1e-5;function PD(e,A,t,i,n){const r=A-e,s=(t-A)*n,a=-r*i;return s+a+r+A}function G7(e,A,t,i,n){if(Array.isArray(t)){const r=[];for(let o=0;o0}add(A,t,i,n){const{transitions:r}=this;if(r.has(A)){const a=r.get(A),{value:g=a.settings.fromValue}=a;t=g,this.remove(A)}if(n=Tb(n),!n)return;const o=M7[n.type];if(!o){$A.error("unsupported transition type '".concat(n.type,"'"))();return}const s=new o(this.timeline);s.start({...n,fromValue:t,toValue:i}),r.set(A,s)}remove(A){const{transitions:t}=this;t.has(A)&&(t.get(A).cancel(),t.delete(A))}update(){const A={};for(const[t,i]of this.transitions)i.update(),A[t]=i.value,i.inProgress||this.remove(t);return A}clear(){for(const A of this.transitions.keys())this.remove(A)}}function T7(e){const A=$p(e);for(const t in A){const i=A[t],{validate:n}=i;if(n&&!n(e[t],i))throw new Error("Invalid prop ".concat(t,": ").concat(e[t]))}}function U7(e,A){const t=Jb({newProps:e,oldProps:A,propTypes:$p(e),ignoreProps:{data:null,updateTriggers:null,extensions:null,transitions:null}}),i=H7(e,A);let n=!1;return i||(n=q7(e,A)),{dataChanged:i,propsChanged:t,updateTriggersChanged:n,extensionsChanged:J7(e,A),transitionsChanged:P7(e,A)}}function P7(e,A){if(!e.transitions)return!1;const t={},i=$p(e);let n=!1;for(const r in e.transitions){const o=i[r],s=o&&o.type;(s==="number"||s==="color"||s==="array")&&fd(e[r],A[r],o)&&(t[r]=!0,n=!0)}return n?t:!1}function Jb({newProps:e,oldProps:A,ignoreProps:t={},propTypes:i={},triggerName:n="props"}){if(A===e)return!1;if(typeof e!="object"||e===null||typeof A!="object"||A===null)return"".concat(n," changed shallowly");for(const r of Object.keys(e))if(!(r in t)){if(!(r in A))return"".concat(n,".").concat(r," added");const o=fd(e[r],A[r],i[r]);if(o)return"".concat(n,".").concat(r," ").concat(o)}for(const r of Object.keys(A))if(!(r in t)){if(!(r in e))return"".concat(n,".").concat(r," dropped");if(!Object.hasOwnProperty.call(e,r)){const o=fd(e[r],A[r],i[r]);if(o)return"".concat(n,".").concat(r," ").concat(o)}}return!1}function fd(e,A,t){let i=t&&t.equal;return i&&!i(e,A,t)||!i&&(i=e&&A&&e.equals,i&&!i.call(e,A))?"changed deeply":!i&&A!==e?"changed shallowly":null}function H7(e,A){if(A===null)return"oldProps is null, initial diff";let t=!1;const{dataComparator:i,_dataDiff:n}=e;return i?i(e.data,A.data)||(t="Data comparator detected a change"):e.data!==A.data&&(t="A new data container was supplied"),t&&n&&(t=n(e.data,A.data)||t),t}function q7(e,A){if(A===null)return{all:!0};if("all"in e.updateTriggers&&qD(e,A,"all"))return{all:!0};const t={};let i=!1;for(const n in e.updateTriggers)n!=="all"&&qD(e,A,n)&&(t[n]=!0,i=!0);return i?t:!1}function J7(e,A){if(A===null)return!0;const t=A.extensions,{extensions:i}=e;if(i===t)return!1;if(!t||!i||i.length!==t.length)return!0;for(let n=0;ni.name==="project64"))){const i=t.modules.findIndex(n=>n.name==="project32");i>=0&&t.modules.splice(i,1)}if("inject"in A)if(!e.inject)t.inject=A.inject;else{const i={...e.inject};for(const n in A.inject)i[n]=(i[n]||"")+A.inject[n];t.inject=i}return t}const j7={10241:9987,10240:9729,10242:33071,10243:33071},Qd={};function X7(e,A){const t=e.context&&e.context.gl;if(!t||!A)return null;if(A instanceof Tt)return A;A.constructor&&A.constructor.name!=="Object"&&(A={data:A});let i=null;A.compressed&&(i={10241:A.data.length>1?9985:9729});const n=new Tt(t,{...A,parameters:{...j7,...i,...e.props.textureParameters}});return Qd[n.id]=!0,n}function Z7(e){!e||!(e instanceof Tt)||Qd[e.id]&&(e.delete(),delete Qd[e.id])}const $7={boolean:{validate(e,A){return!0},equal(e,A,t){return!!e==!!A}},number:{validate(e,A){return Number.isFinite(e)&&(!("max"in A)||e<=A.max)&&(!("min"in A)||e>=A.min)}},color:{validate(e,A){return A.optional&&!e||VI(e)&&(e.length===3||e.length===4)},equal(e,A,t){return Xh(e,A)}},accessor:{validate(e,A){const t=MB(e);return t==="function"||t===MB(A.value)},equal(e,A,t){return typeof A=="function"?!0:Xh(e,A)}},array:{validate(e,A){return A.optional&&!e||VI(e)},equal(e,A,t){return t.compare?Xh(e,A):e===A}},object:{equal(e,A,t){return t.compare?ns(e,A):e===A}},function:{validate(e,A){return A.optional&&!e||typeof e=="function"},equal(e,A,t){return!t.compare||e===A}},data:{transform:(e,A,t)=>{const{dataTransform:i}=t.props;return i&&e?i(e):e}},image:{transform:(e,A,t)=>X7(t,e),release:e=>{Z7(e)}}};function Xh(e,A){if(e===A)return!0;if(!VI(e)||!VI(A))return!1;const t=e.length;if(t!==A.length)return!1;for(let i=0;i{},this.oldProps=null,this.oldAsyncProps=null}finalize(){for(const A in this.asyncProps){const t=this.asyncProps[A];t&&t.type&&t.type.release&&t.type.release(t.resolvedValue,t.type,this.component)}}getOldProps(){return this.oldAsyncProps||this.oldProps||Ij}resetOldProps(){this.oldAsyncProps=null,this.oldProps=this.component.props}hasAsyncProp(A){return A in this.asyncProps}getAsyncProp(A){const t=this.asyncProps[A];return t&&t.resolvedValue}isAsyncPropLoading(A){if(A){const t=this.asyncProps[A];return!!(t&&t.pendingLoadCount>0&&t.pendingLoadCount!==t.resolvedLoadCount)}for(const t in this.asyncProps)if(this.isAsyncPropLoading(t))return!0;return!1}reloadAsyncProp(A,t){this._watchPromise(A,Promise.resolve(t))}setAsyncProps(A){const t=A[cr]||{},i=A[Mo]||A,n=A[ia]||{};for(const r in t){const o=t[r];this._createAsyncPropData(r,n[r]),this._updateAsyncProp(r,o),t[r]=this.getAsyncProp(r)}for(const r in i){const o=i[r];this._createAsyncPropData(r,n[r]),this._updateAsyncProp(r,o)}}_fetch(A,t){return null}_onResolve(A,t){}_onError(A,t){}_updateAsyncProp(A,t){if(this._didAsyncInputValueChange(A,t)){if(typeof t=="string"&&(t=this._fetch(A,t)),t instanceof Promise){this._watchPromise(A,t);return}if(Mb(t)){this._resolveAsyncIterable(A,t);return}this._setPropValue(A,t)}}_freezeAsyncOldProps(){if(!this.oldAsyncProps&&this.oldProps){this.oldAsyncProps=Object.create(this.oldProps);for(const A in this.asyncProps)Object.defineProperty(this.oldAsyncProps,A,{enumerable:!0,value:this.oldProps[A]})}}_didAsyncInputValueChange(A,t){const i=this.asyncProps[A];return t===i.resolvedValue||t===i.lastValue?!1:(i.lastValue=t,!0)}_setPropValue(A,t){this._freezeAsyncOldProps();const i=this.asyncProps[A];i&&(t=this._postProcessValue(i,t),i.resolvedValue=t,i.pendingLoadCount++,i.resolvedLoadCount=i.pendingLoadCount)}_setAsyncPropValue(A,t,i){const n=this.asyncProps[A];n&&i>=n.resolvedLoadCount&&t!==void 0&&(this._freezeAsyncOldProps(),n.resolvedValue=t,n.resolvedLoadCount=i,this.onAsyncPropUpdated(A,t))}_watchPromise(A,t){const i=this.asyncProps[A];if(i){i.pendingLoadCount++;const n=i.pendingLoadCount;t.then(r=>{r=this._postProcessValue(i,r),this._setAsyncPropValue(A,r,n),this._onResolve(A,r)}).catch(r=>{this._onError(A,r)})}}async _resolveAsyncIterable(A,t){if(A!=="data"){this._setPropValue(A,t);return}const i=this.asyncProps[A];if(!i)return;i.pendingLoadCount++;const n=i.pendingLoadCount;let r=[],o=0;for await(const s of t){const{dataTransform:a}=this.component.props;a?r=a(s,r):r=r.concat(s),Object.defineProperty(r,"__diff",{enumerable:!1,value:[{startRow:o,endRow:r.length}]}),o=r.length,this._setAsyncPropValue(A,r,n)}this._onResolve(A,r)}_postProcessValue(A,t){const i=A.type;return i&&(i.release&&i.release(A.resolvedValue,i,this.component),i.transform)?i.transform(t,i,this.component):t}_createAsyncPropData(A,t){if(!this.asyncProps[A]){const n=this.component&&this.component.constructor._propTypes;this.asyncProps[A]={type:n&&n[A],lastValue:null,resolvedValue:t,pendingLoadCount:0,resolvedLoadCount:0}}}}class cj extends lj{constructor({attributeManager:A,layer:t}){super(t),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=A,this.needsRedraw=!0,this.needsUpdate=!0,this.subLayers=null,this.usesPickingColorCache=!1}get layer(){return this.component}set layer(A){this.component=A}_fetch(A,t){const i=this.component.props.fetch;return i?i(t,{propName:A,layer:this.layer}):super._fetch(A,t)}_onResolve(A,t){const i=this.component.props.onDataLoad;A==="data"&&i&&i(t,{propName:A,layer:this.layer})}_onError(A,t){this.layer.raiseError(t,"loading ".concat(A," of ").concat(this.layer))}}const Cj="layer.changeFlag",Bj="layer.initialize",Ej="layer.update",uj="layer.finalize",hj="layer.matched",JD=2**24-1,fj=Object.freeze([]),Qj=_l(({oldViewport:e,viewport:A})=>e.equals(A));let Oi=new Uint8ClampedArray(0);const dj={data:{type:"data",value:fj,async:!0},dataComparator:{type:"function",value:null,compare:!1,optional:!0},_dataDiff:{type:"function",value:e=>e&&e.__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:(e,{propName:A,layer:t,loaders:i,loadOptions:n,signal:r})=>{const{resourceManager:o}=t.context;if(n=n||t.getLoadOptions(),i=i||t.props.loaders,r){var s;n={...n,fetch:{...(s=n)===null||s===void 0?void 0:s.fetch,signal:r}}}let a=o.contains(e);return!a&&!n&&(o.add({resourceId:e,data:DB(e,i),persistent:!1}),a=!0),a?o.subscribe({resourceId:e,onChange:g=>{var I;return(I=t.internalState)===null||I===void 0?void 0:I.reloadAsyncProp(A,g)},consumerId:t.id,requestId:A}):DB(e,i,n)},compare:!1},updateTriggers:{},visible:!0,pickable:!1,opacity:{type:"number",min:0,max:1,value:1},operation:Gl.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:HA.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:e})=>[0,-e*100],compare:!1},highlightedObjectIndex:null,autoHighlight:!1,highlightColor:{type:"accessor",value:[0,0,128,128]}};class si extends Ay{constructor(...A){super(...A),y(this,"internalState",null),y(this,"lifecycle",Rs.NO_STATE),y(this,"context",void 0),y(this,"state",void 0),y(this,"parent",null)}get root(){let A=this;for(;A.parent;)A=A.parent;return A}toString(){const A=this.constructor.layerName||this.constructor.name;return"".concat(A,"({id: '").concat(this.props.id,"'})")}project(A){ot(this.internalState);const t=this.internalState.viewport||this.context.viewport,i=mb(A,{viewport:t,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem}),[n,r,o]=Qb(i,t.pixelProjectionMatrix);return A.length===2?[n,r]:[n,r,o]}unproject(A){return ot(this.internalState),(this.internalState.viewport||this.context.viewport).unproject(A)}projectPosition(A,t){ot(this.internalState);const i=this.internalState.viewport||this.context.viewport;return kW(A,{viewport:i,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem,...t})}get isComposite(){return!1}setState(A){this.setChangeFlags({stateChanged:!0}),Object.assign(this.state,A),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(A){for(const t of this.getModels())t.updateModuleSettings(A)}getAttributeManager(){return this.internalState&&this.internalState.attributeManager}getCurrentLayer(){return this.internalState&&this.internalState.layer}getLoadOptions(){return this.props.loadOptions}use64bitPositions(){const{coordinateSystem:A}=this.props;return A===HA.DEFAULT||A===HA.LNGLAT||A===HA.CARTESIAN}onHover(A,t){return this.props.onHover&&this.props.onHover(A,t)||!1}onClick(A,t){return this.props.onClick&&this.props.onClick(A,t)||!1}nullPickingColor(){return[0,0,0]}encodePickingColor(A,t=[]){return t[0]=A+1&255,t[1]=A+1>>8&255,t[2]=A+1>>8>>8&255,t}decodePickingColor(A){ot(A instanceof Uint8Array);const[t,i,n]=A;return t+i*256+n*65536-1}getNumInstances(){return Number.isFinite(this.props.numInstances)?this.props.numInstances:this.state&&this.state.numInstances!==void 0?this.state.numInstances:K7(this.props.data)}getStartIndices(){return this.props.startIndices?this.props.startIndices:this.state&&this.state.startIndices?this.state.startIndices:null}getBounds(){var A;const t=this.getAttributeManager();if(!t)return null;const{positions:i,instancePositions:n}=t.attributes;return(A=i||n)===null||A===void 0?void 0:A.getBounds()}getShaders(A){for(const t of this.props.extensions)A=z7(A,t.getShaders.call(this,t));return A}shouldUpdateState(A){return A.changeFlags.propsOrDataChanged}updateState(A){const t=this.getAttributeManager(),{dataChanged:i}=A.changeFlags;if(i&&t)if(Array.isArray(i))for(const a of i)t.invalidateAll(a);else t.invalidateAll();const{props:n,oldProps:r}=A,o=Number.isInteger(r.highlightedObjectIndex)||r.pickable,s=Number.isInteger(n.highlightedObjectIndex)||n.pickable;if(o!==s&&t){const{pickingColors:a,instancePickingColors:g}=t.attributes,I=a||g;I&&(s&&I.constant&&(I.constant=!1,t.invalidate(I.id)),!I.value&&!s&&(I.constant=!0,I.value=[0,0,0]))}}finalizeState(A){for(const i of this.getModels())i.delete();const t=this.getAttributeManager();t&&t.finalize(),this.context&&this.context.resourceManager.unsubscribe({consumerId:this.id}),this.internalState&&(this.internalState.uniformTransitions.clear(),this.internalState.finalize())}draw(A){for(const t of this.getModels())t.draw(A)}getPickingInfo({info:A,mode:t,sourceLayer:i}){const{index:n}=A;return n>=0&&Array.isArray(this.props.data)&&(A.object=this.props.data[n]),A}raiseError(A,t){var i,n;if(t&&(A.message="".concat(t,": ").concat(A.message)),!((i=(n=this.props).onError)!==null&&i!==void 0&&i.call(n,A))){var r,o;(r=this.context)===null||r===void 0||(o=r.onError)===null||o===void 0||o.call(r,A,this)}}getNeedsRedraw(A={clearRedrawFlags:!1}){return this._getNeedsRedraw(A)}needsUpdate(){return this.internalState?this.internalState.needsUpdate||this.hasUniformTransition()||this.shouldUpdateState(this._getUpdateParams()):!1}hasUniformTransition(){var A;return((A=this.internalState)===null||A===void 0?void 0:A.uniformTransitions.active)||!1}activateViewport(A){if(!this.internalState)return;const t=this.internalState.viewport;this.internalState.viewport=A,(!t||!Qj({oldViewport:t,viewport:A}))&&(this.setChangeFlags({viewportChanged:!0}),this.isComposite?this.needsUpdate()&&this.setNeedsUpdate():this._update())}invalidateAttribute(A="all"){const t=this.getAttributeManager();t&&(A==="all"?t.invalidateAll():t.invalidate(A))}updateAttributes(A){for(const t of this.getModels())this._setModelAttributes(t,A)}_updateAttributes(){const A=this.getAttributeManager();if(!A)return;const t=this.props,i=this.getNumInstances(),n=this.getStartIndices();A.update({data:t.data,numInstances:i,startIndices:n,props:t,transitions:t.transitions,buffers:t.data.attributes,context:this});const r=A.getChangedAttributes({clearChangedFlags:!0});this.updateAttributes(r)}_updateAttributeTransition(){const A=this.getAttributeManager();A&&A.updateTransition()}_updateUniformTransition(){const{uniformTransitions:A}=this.internalState;if(A.active){const t=A.update(),i=Object.create(this.props);for(const n in t)Object.defineProperty(i,n,{value:t[n]});return i}return this.props}calculateInstancePickingColors(A,{numInstances:t}){if(A.constant)return;const i=Math.floor(Oi.length/3);if(this.internalState.usesPickingColorCache=!0,iJD&&$A.warn("Layer has too many data objects. Picking might not be able to distinguish all objects.")(),Oi=fa.allocate(Oi,t,{size:3,copy:!0,maxCount:Math.max(t,JD)});const n=Math.floor(Oi.length/3),r=[];for(let o=i;o($A.deprecated("layer.state.attributeManager","layer.getAttributeManager()")(),A)}),this.internalState.layer=this,this.internalState.uniformTransitions=new k7(this.context.timeline),this.internalState.onAsyncPropUpdated=this._onAsyncPropUpdated.bind(this),this.internalState.setAsyncProps(this.props),this.initializeState(this.context);for(const t of this.props.extensions)t.initializeState.call(this,this.context,t);this.setChangeFlags({dataChanged:"init",propsChanged:"init",viewportChanged:!0,extensionsChanged:!0}),this._update()}_transferState(A){St(hj,this,this===A);const{state:t,internalState:i}=A;this!==A&&(this.internalState=i,this.internalState.layer=this,this.state=t,this.internalState.setAsyncProps(this.props),this._diffProps(this.props,this.internalState.getOldProps()))}_update(){const A=this.needsUpdate();if(St(Ej,this,A),!A)return;const t=this.props,i=this.context,n=this.internalState,r=i.viewport,o=this._updateUniformTransition();n.propsInTransition=o,i.viewport=n.viewport||r,this.props=o;try{const s=this._getUpdateParams(),a=this.getModels();if(i.gl)this.updateState(s);else try{this.updateState(s)}catch{}for(const I of this.props.extensions)I.updateState.call(this,s,I);const g=this.getModels()[0]!==a[0];this._postUpdate(s,g)}finally{i.viewport=r,this.props=t,this._clearChangeFlags(),n.needsUpdate=!1,n.resetOldProps()}}_finalize(){St(uj,this),this.finalizeState(this.context);for(const A of this.props.extensions)A.finalizeState.call(this,A)}_drawLayer({moduleParameters:A=null,uniforms:t={},parameters:i={}}){this._updateAttributeTransition();const n=this.props,r=this.context;this.props=this.internalState.propsInTransition||n;const o=this.props.opacity;t.opacity=Math.pow(o,1/2.2);try{A&&this.setModuleParameters(A);const{getPolygonOffset:s}=this.props,a=s&&s(t)||[0,0];kn(r.gl,{polygonOffset:a}),Bi(r.gl,i,()=>{const g={moduleParameters:A,uniforms:t,parameters:i,context:r};for(const I of this.props.extensions)I.draw.call(this,g,I);this.draw(g)})}finally{this.props=n}}getChangeFlags(){var A;return(A=this.internalState)===null||A===void 0?void 0:A.changeFlags}setChangeFlags(A){if(!this.internalState)return;const{changeFlags:t}=this.internalState;for(const n in A)if(A[n]){let r=!1;switch(n){case"dataChanged":const o=A[n],s=t[n];o&&Array.isArray(s)&&(t.dataChanged=Array.isArray(o)?s.concat(o):o,r=!0);default:t[n]||(t[n]=A[n],r=!0)}r&&St(Cj,this,n,A)}const i=!!(t.dataChanged||t.updateTriggersChanged||t.propsChanged||t.extensionsChanged);t.propsOrDataChanged=i,t.somethingChanged=i||t.viewportChanged||t.stateChanged}_clearChangeFlags(){this.internalState.changeFlags={dataChanged:!1,propsChanged:!1,updateTriggersChanged:!1,viewportChanged:!1,stateChanged:!1,extensionsChanged:!1,propsOrDataChanged:!1,somethingChanged:!1}}_diffProps(A,t){const i=U7(A,t);if(i.updateTriggersChanged)for(const r in i.updateTriggersChanged)i.updateTriggersChanged[r]&&this.invalidateAttribute(r);if(i.transitionsChanged)for(const r in i.transitionsChanged){var n;this.internalState.uniformTransitions.add(r,t[r],A[r],(n=A.transitions)===null||n===void 0?void 0:n[r])}return this.setChangeFlags(i)}validateProps(){T7(this.props)}updateAutoHighlight(A){this.props.autoHighlight&&!Number.isInteger(this.props.highlightedObjectIndex)&&this._updateAutoHighlight(A)}_updateAutoHighlight(A){const t={pickingSelectedColor:A.picked?A.color:null},{highlightColor:i}=this.props;A.picked&&typeof i=="function"&&(t.pickingHighlightColor=i(A)),this.setModuleParameters(t),this.setNeedsRedraw()}_getAttributeManager(){const A=this.context;return new L7(A.gl,{id:this.props.id,stats:A.stats,timeline:A.timeline})}_postUpdate(A,t){const{props:i,oldProps:n}=A;this.setNeedsRedraw(),this._updateAttributes();const{model:r}=this.state;r==null||r.setInstanceCount(this.getNumInstances());const{autoHighlight:o,highlightedObjectIndex:s,highlightColor:a}=i;if(t||n.autoHighlight!==o||n.highlightedObjectIndex!==s||n.highlightColor!==a){const g={};o||(g.pickingSelectedColor=null),Array.isArray(a)&&(g.pickingHighlightColor=a),Number.isInteger(s)&&(g.pickingSelectedColor=Number.isFinite(s)&&s>=0?this.encodePickingColor(s):null),this.setModuleParameters(g)}}_getUpdateParams(){return{props:this.props,oldProps:this.internalState.getOldProps(),context:this.context,changeFlags:this.internalState.changeFlags}}_getNeedsRedraw(A){if(!this.internalState)return!1;let t=!1;t=t||this.internalState.needsRedraw&&this.id,this.internalState.needsRedraw=this.internalState.needsRedraw&&!A.clearRedrawFlags;const i=this.getAttributeManager(),n=i?i.getNeedsRedraw(A):!1;return t=t||n,t}_onAsyncPropUpdated(){this._diffProps(this.props,this.internalState.getOldProps()),this.setNeedsUpdate()}}y(si,"defaultProps",dj);y(si,"layerName","Layer");const pj="compositeLayer.renderLayers";class Ti extends si{get isComposite(){return!0}get isLoaded(){return super.isLoaded&&this.getSubLayers().every(A=>A.isLoaded)}getSubLayers(){return this.internalState&&this.internalState.subLayers||[]}initializeState(A){}setState(A){super.setState(A),this.setNeedsUpdate()}getPickingInfo({info:A}){const{object:t}=A;return t&&t.__source&&t.__source.parent&&t.__source.parent.id===this.id&&(A.object=t.__source.object,A.index=t.__source.index),A}filterSubLayer(A){return!0}shouldRenderSubLayer(A,t){return t&&t.length}getSubLayerClass(A,t){const{_subLayerProps:i}=this.props;return i&&i[A]&&i[A].type||t}getSubLayerRow(A,t,i){return A.__source={parent:this,object:t,index:i},A}getSubLayerAccessor(A){if(typeof A=="function"){const t={index:-1,data:this.props.data,target:[]};return(i,n)=>i&&i.__source?(t.index=i.__source.index,A(i.__source.object,t)):A(i,n)}return A}getSubLayerProps(A={}){var t;const{opacity:i,pickable:n,visible:r,parameters:o,getPolygonOffset:s,highlightedObjectIndex:a,autoHighlight:g,highlightColor:I,coordinateSystem:l,coordinateOrigin:c,wrapLongitude:C,positionFormat:B,modelMatrix:E,extensions:u,fetch:h,operation:f,_subLayerProps:Q}=this.props,d={id:"",updateTriggers:{},opacity:i,pickable:n,visible:r,parameters:o,getPolygonOffset:s,highlightedObjectIndex:a,autoHighlight:g,highlightColor:I,coordinateSystem:l,coordinateOrigin:c,wrapLongitude:C,positionFormat:B,modelMatrix:E,extensions:u,fetch:h,operation:f},w=Q&&A.id&&Q[A.id],m=w&&w.updateTriggers,v=A.id||"sublayer";if(w){const x=this.constructor._propTypes,D=A.type?A.type._propTypes:{};for(const F in w){const N=D[F]||x[F];N&&N.type==="accessor"&&(w[F]=this.getSubLayerAccessor(w[F]))}}Object.assign(d,A,w),d.id="".concat(this.props.id,"-").concat(v),d.updateTriggers={all:(t=this.props.updateTriggers)===null||t===void 0?void 0:t.all,...A.updateTriggers,...m};for(const x of u){const D=x.getSubLayerProps.call(this,x);D&&Object.assign(d,D,{updateTriggers:Object.assign(d.updateTriggers,D.updateTriggers)})}return d}_updateAutoHighlight(A){for(const t of this.getSubLayers())t.updateAutoHighlight(A)}_getAttributeManager(){return null}_postUpdate(A,t){let i=this.internalState.subLayers;const n=!i||this.needsUpdate();if(n){const r=this.renderLayers();i=OE(r,Boolean),this.internalState.subLayers=i}St(pj,this,n,i);for(const r of i)r.parent=this}}y(Ti,"layerName","CompositeLayer");const Gc=Math.PI/180,OD=180/Math.PI,GC=6370972,Ps=256;function yj(){const e=Ps/GC,A=Math.PI/180*Ps;return{unitsPerMeter:[e,e,e],unitsPerMeter2:[0,0,0],metersPerUnit:[1/e,1/e,1/e],unitsPerDegree:[A,A,e],unitsPerDegree2:[0,0,0],degreesPerUnit:[1/A,1/A,1/e]}}class mj extends On{constructor(A={}){const{latitude:t=0,longitude:i=0,zoom:n=0,nearZMultiplier:r=.1,farZMultiplier:o=2,resolution:s=10}=A;let{height:a,altitude:g=1.5}=A;a=a||1,g=Math.max(.75,g);const I=new he().lookAt({eye:[0,-g,0],up:[0,0,1]}),l=Math.pow(2,n);I.rotateX(t*Gc),I.rotateZ(-i*Gc),I.scale(l/a);const c=Math.atan(.5/g),C=Ps*2*l/a;super({...A,height:a,viewMatrix:I,longitude:i,latitude:t,zoom:n,distanceScales:yj(),fovyRadians:c*2,focalDistance:g,near:r,far:Math.min(2,1/C+1)*g*o}),y(this,"longitude",void 0),y(this,"latitude",void 0),y(this,"resolution",void 0),this.latitude=t,this.longitude=i,this.resolution=s}get projectionMode(){return Fi.GLOBE}getDistanceScales(){return this.distanceScales}getBounds(A={}){const t={targetZ:A.z||0},i=this.unproject([0,this.height/2],t),n=this.unproject([this.width/2,0],t),r=this.unproject([this.width,this.height/2],t),o=this.unproject([this.width/2,this.height],t);return r[0]this.longitude&&(i[0]-=360),[Math.min(i[0],r[0],n[0],o[0]),Math.min(i[1],r[1],n[1],o[1]),Math.max(i[0],r[0],n[0],o[0]),Math.max(i[1],r[1],n[1],o[1])]}unproject(A,{topLeft:t=!0,targetZ:i}={}){const[n,r,o]=A,s=t?r:this.height-r,{pixelUnprojectionMatrix:a}=this;let g;if(Number.isFinite(o))g=Zh(a,[n,s,o,1]);else{const C=Zh(a,[n,s,-1,1]),B=Zh(a,[n,s,1,1]),E=((i||0)/GC+1)*Ps,u=Ph(tb([],C,B)),h=Ph(C),f=Ph(B),d=4*((4*h*f-(u-h-f)**2)/16)/u,w=Math.sqrt(h-d),m=Math.sqrt(Math.max(0,E*E-d)),v=(w-m)/Math.sqrt(u);g=k6([],C,B,v)}const[I,l,c]=this.unprojectPosition(g);return Number.isFinite(o)?[I,l,c]:Number.isFinite(i)?[I,l,i]:[I,l]}projectPosition(A){const[t,i,n=0]=A,r=t*Gc,o=i*Gc,s=Math.cos(o),a=(n/GC+1)*Ps;return[Math.sin(r)*s*a,-Math.cos(r)*s*a,Math.sin(o)*a]}unprojectPosition(A){const[t,i,n]=A,r=ib(A),o=Math.asin(n/r),a=Math.atan2(t,-i)*OD,g=o*OD,I=(r/Ps-1)*GC;return[a,g,I]}projectFlat(A){return A}unprojectFlat(A){return A}panByPosition(A,t){const i=this.unproject(t);return{longitude:A[0]-i[0]+this.longitude,latitude:A[1]-i[1]+this.latitude}}}function Zh(e,A){const t=Ma([],A,e);return Yp(t,t,1/t[3]),t}const $h=Math.PI/180;function wj({height:e,focalDistance:A,orbitAxis:t,rotationX:i,rotationOrbit:n,zoom:r}){const o=t==="Z"?[0,0,1]:[0,1,0],s=t==="Z"?[0,-A,0]:[0,0,A],a=new he().lookAt({eye:s,up:o});a.rotateX(i*$h),t==="Z"?a.rotateZ(n*$h):a.rotateY(n*$h);const g=Math.pow(2,r)/e;return a.scale(g),a}class vj extends On{constructor(A){const{height:t,projectionMatrix:i,fovy:n=50,orbitAxis:r="Z",target:o=[0,0,0],rotationX:s=0,rotationOrbit:a=0,zoom:g=0}=A,I=i?i[5]/2:zp(n);super({...A,longitude:void 0,viewMatrix:wj({height:t||1,focalDistance:I,orbitAxis:r,rotationX:s,rotationOrbit:a,zoom:g}),fovy:n,focalDistance:I,position:o,zoom:g}),y(this,"projectedCenter",void 0),this.projectedCenter=this.project(this.center)}unproject(A,{topLeft:t=!0}={}){const[i,n,r=this.projectedCenter[2]]=A,o=t?n:this.height-n,[s,a,g]=Ml([i,o,r],this.pixelUnprojectionMatrix);return[s,a,g]}panByPosition(A,t){const i=this.project(A),n=[this.width/2+i[0]-t[0],this.height/2+i[1]-t[1],this.projectedCenter[2]];return{target:this.unproject(n)}}}class Kb extends Ur{constructor(A={}){super(A),this.props.orbitAxis=A.orbitAxis||"Z"}get ViewportType(){return vj}get ControllerType(){return oz}}y(Kb,"displayName","OrbitView");class ka{constructor(A){y(this,"opts",void 0),A&&(this.opts=A)}equals(A){return this===A?!0:this.constructor===A.constructor&&ns(this.opts,A.opts)}getShaders(A){return null}getSubLayerProps(A){const{defaultProps:t}=A.constructor,i={updateTriggers:{}};for(const n in t)if(n in this.props){const r=t[n],o=this.props[n];i[n]=o,r&&r.type==="accessor"&&(i.updateTriggers[n]=this.props.updateTriggers[n],typeof o=="function"&&(i[n]=this.getSubLayerAccessor(o)))}return i}initializeState(A,t){}updateState(A,t){}draw(A,t){}finalizeState(A,t){}}y(ka,"defaultProps",{});class Vb{constructor(A){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:t={}}=A;this.typedArrayManager=fa,this.attributes={},this._attributeDefs=t,this.opts=A,this.updateGeometry(A)}updateGeometry(A){Object.assign(this.opts,A);const{data:t,buffers:i={},getGeometry:n,geometryBuffer:r,positionFormat:o,dataChanged:s,normalize:a=!0}=this.opts;if(this.data=t,this.getGeometry=n,this.positionSize=r&&r.size||(o==="XY"?2:3),this.buffers=i,this.normalize=a,r&&(ot(t.startIndices),this.getGeometry=this.getGeometryFromBuffer(r),a||(i.positions=r)),this.geometryBuffer=i.positions,Array.isArray(s))for(const g of s)this._rebuildGeometry(g);else this._rebuildGeometry()}updatePartialGeometry({startRow:A,endRow:t}){this._rebuildGeometry({startRow:A,endRow:t})}getGeometryFromBuffer(A){const t=A.value||A;return ArrayBuffer.isView(t)?kb(t,{size:this.positionSize,offset:A.offset,stride:A.stride,startIndices:this.data.startIndices}):null}_allocate(A,t){const{attributes:i,buffers:n,_attributeDefs:r,typedArrayManager:o}=this;for(const s in r)if(s in n)o.release(i[s]),i[s]=null;else{const a=r[s];a.copy=t,i[s]=o.allocate(i[s],A,a)}}_forEachGeometry(A,t,i){const{data:n,getGeometry:r}=this,{iterable:o,objectInfo:s}=Pl(n,t,i);for(const a of o){s.index++;const g=r?r(a,s):null;A(g,s.index)}}_rebuildGeometry(A){if(!this.data)return;let{indexStarts:t,vertexStarts:i,instanceCount:n}=this;const{data:r,geometryBuffer:o}=this,{startRow:s=0,endRow:a=1/0}=A||{},g={};if(A||(t=[0],i=[0]),this.normalize||!o)this._forEachGeometry((l,c)=>{const C=l&&this.normalizeGeometry(l);g[c]=C,i[c+1]=i[c]+(C?this.getGeometrySize(C):0)},s,a),n=i[i.length-1];else if(i=r.startIndices,n=i[r.length]||0,ArrayBuffer.isView(o))n=n||o.length/this.positionSize;else if(o instanceof me){const l=o.accessor.stride||this.positionSize*4;n=n||o.byteLength/l}else if(o.buffer){const l=o.stride||this.positionSize*4;n=n||o.buffer.byteLength/l}else if(o.value){const l=o.value,c=o.stride/l.BYTES_PER_ELEMENT||this.positionSize;n=n||l.length/c}this._allocate(n,!!A),this.indexStarts=t,this.vertexStarts=i,this.instanceCount=n;const I={};this._forEachGeometry((l,c)=>{const C=g[c]||l;I.vertexStart=i[c],I.indexStart=t[c];const B=c0&&B>0&&(s[l++]=I-r,s[l++]=I-r-1,s[l++]=I-1,s[l++]=I-r,s[l++]=I-1,s[l++]=I),I++}}return{vertexCount:o,positions:g,indices:s,texCoords:a}}function xj(e){const A=new Float64Array(12);for(let t=0;t 0.5) { + vTexPos = geometry.worldPosition.xy; + } + + vec4 color = vec4(0.0); + DECKGL_FILTER_COLOR(color, geometry); +} +`,Lj=` +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.; +} +`,bj=` +#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(Lj,` + +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); + } +} +`),Gj={image:{type:"image",value:null,async:!0},bounds:{type:"array",value:[1,0,0,1],compare:!0},_imageCoordinateSystem:HA.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 zE=class extends si{constructor(...A){super(...A),y(this,"state",void 0)}getShaders(){return super.getShaders({vs:Nj,fs:bj,modules:[zr,jr]})}initializeState(){const A=this.getAttributeManager();A.remove(["instancePickingColors"]);const t=!0;A.add({indices:{size:1,isIndexed:!0,update:i=>i.value=this.state.mesh.indices,noAlloc:t},positions:{size:3,type:5130,fp64:this.use64bitPositions(),update:i=>i.value=this.state.mesh.positions,noAlloc:t},texCoords:{size:2,update:i=>i.value=this.state.mesh.texCoords,noAlloc:t}})}updateState({props:A,oldProps:t,changeFlags:i}){const n=this.getAttributeManager();if(i.extensionsChanged){var r;const{gl:o}=this.context;(r=this.state.model)===null||r===void 0||r.delete(),this.state.model=this._getModel(o),n.invalidateAll()}if(A.bounds!==t.bounds){const o=this.state.mesh,s=this._createMesh();this.state.model.setVertexCount(s.vertexCount);for(const a in s)o&&o[a]!==s[a]&&n.invalidate(a);this.setState({mesh:s,...this._getCoordinateUniforms()})}else A._imageCoordinateSystem!==t._imageCoordinateSystem&&this.setState(this._getCoordinateUniforms())}getPickingInfo(A){const{image:t}=this.props,i=A.info;if(!i.color||!t)return i.bitmap=null,i;const{width:n,height:r}=t;i.index=0;const o=_j(i.color),s=[Math.floor(o[0]*n),Math.floor(o[1]*r)];return i.bitmap={size:{width:n,height:r},uv:o,pixel:s},i}disablePickingIndex(){this.setState({disablePicking:!0})}restorePickingColors(){this.setState({disablePicking:!1})}_updateAutoHighlight(A){super._updateAutoHighlight({...A,color:this.encodePickingColor(0)})}_createMesh(){const{bounds:A}=this.props;let t=A;return YD(A)&&(t=[[A[0],A[1]],[A[0],A[3]],[A[2],A[3]],[A[2],A[1]]]),Rj(t,this.context.viewport.resolution)}_getModel(A){return A?new fi(A,{...this.getShaders(),id:this.props.id,geometry:new Cn({drawMode:4,vertexCount:6}),isInstanced:!1}):null}draw(A){const{uniforms:t,moduleParameters:i}=A,{model:n,coordinateConversion:r,bounds:o,disablePicking:s}=this.state,{image:a,desaturate:g,transparentColor:I,tintColor:l}=this.props;i.pickingActive&&s||a&&n&&n.setUniforms(t).setUniforms({bitmapTexture:a,desaturate:g,transparentColor:I.map(c=>c/255),tintColor:l.slice(0,3).map(c=>c/255),coordinateConversion:r,bounds:o}).draw()}_getCoordinateUniforms(){const{LNGLAT:A,CARTESIAN:t,DEFAULT:i}=HA;let{_imageCoordinateSystem:n}=this.props;if(n!==i){const{bounds:r}=this.props;if(!YD(r))throw new Error("_imageCoordinateSystem only supports rectangular bounds");const o=this.context.viewport.resolution?A:t;if(n=n===A?A:t,n===A&&o===t)return{coordinateConversion:-1,bounds:r};if(n===t&&o===A){const s=Tr([r[0],r[1]]),a=Tr([r[2],r[3]]);return{coordinateConversion:1,bounds:[s[0],s[1],a[0],a[1]]}}}return{coordinateConversion:0,bounds:[0,0,0,0]}}};y(zE,"layerName","BitmapLayer");y(zE,"defaultProps",Gj);function _j(e){const[A,t,i]=e,n=(i&240)/256,r=(i&15)/16;return[(A+r)/256,(t+n)/256]}function YD(e){return Number.isFinite(e[0])}const Mj=`#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; +} +`,kj=`#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); +} +`,Tj=1024,Uj=4,KD=()=>{},Pj={10241:9987,10240:9729,10242:33071,10243:33071};function Hj(e){return Math.pow(2,Math.ceil(Math.log2(e)))}function qj(e,A,t,i){return t===A.width&&i===A.height?A:(e.canvas.height=i,e.canvas.width=t,e.clearRect(0,0,e.canvas.width,e.canvas.height),e.drawImage(A,0,0,A.width,A.height,0,0,t,i),e.canvas)}function WI(e){return e&&(e.id||e.url)}function Jj(e,A,t){const i=e.width,n=e.height,r=bL(e,{width:A,height:t});return tK(e,r,{targetY:0,width:i,height:n}),e.delete(),r}function VD(e,A,t){for(let i=0;io&&(VD(t,s,n),i=0,n=r+n+A,r=0,s=[]),s.push({icon:g,xOffset:i}),i=i+c+A,r=Math.max(r,l)}}return s.length>0&&VD(t,s,n),{mapping:t,rowHeight:r,xOffset:i,yOffset:n,canvasWidth:o,canvasHeight:Hj(r+n+A)}}function Yj(e,A,t){if(!e||!A)return null;t=t||{};const i={},{iterable:n,objectInfo:r}=Pl(e);for(const o of n){r.index++;const s=A(o,r),a=WI(s);if(!s)throw new Error("Icon is missing.");if(!s.url)throw new Error("Icon url is missing.");!i[a]&&(!t[a]||s.url!==t[a].url)&&(i[a]={...s,source:o,sourceIndex:r.index})}return i}class Kj{constructor(A,{onUpdate:t=KD,onError:i=KD}){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",Uj),y(this,"_canvasWidth",Tj),y(this,"_canvasHeight",0),y(this,"_canvas",null),this.gl=A,this.onUpdate=t,this.onError=i}finalize(){var A;(A=this._texture)===null||A===void 0||A.delete()}getTexture(){return this._texture||this._externalTexture}getIconMapping(A){const t=this._autoPacking?WI(A):A;return this._mapping[t]||{}}setProps({loadOptions:A,autoPacking:t,iconAtlas:i,iconMapping:n,textureParameters:r}){if(A&&(this._loadOptions=A),t!==void 0&&(this._autoPacking=t),n&&(this._mapping=n),i){var o;(o=this._texture)===null||o===void 0||o.delete(),this._texture=null,this._externalTexture=i}r&&(this._textureParameters=r)}get isLoaded(){return this._pendingCount===0}packIcons(A,t){if(!this._autoPacking||typeof document>"u")return;const i=Object.values(Yj(A,t,this._mapping)||{});if(i.length>0){const{mapping:n,xOffset:r,yOffset:o,rowHeight:s,canvasHeight:a}=Oj({icons:i,buffer:this._buffer,canvasWidth:this._canvasWidth,mapping:this._mapping,rowHeight:this._rowHeight,xOffset:this._xOffset,yOffset:this._yOffset});this._rowHeight=s,this._mapping=n,this._xOffset=r,this._yOffset=o,this._canvasHeight=a,this._texture||(this._texture=new Tt(this.gl,{width:this._canvasWidth,height:this._canvasHeight,parameters:this._textureParameters||Pj})),this._texture.height!==this._canvasHeight&&(this._texture=Jj(this._texture,this._canvasWidth,this._canvasHeight)),this.onUpdate(),this._canvas=this._canvas||document.createElement("canvas"),this._loadIcons(i)}}_loadIcons(A){const t=this._canvas.getContext("2d");for(const i of A)this._pendingCount++,DB(i.url,EL,this._loadOptions).then(n=>{const r=WI(i),{x:o,y:s,width:a,height:g}=this._mapping[r],I=qj(t,n,a,g);this._texture.setSubImageData({data:I,x:o,y:s,width:a,height:g}),this._texture.generateMipmap(),this.onUpdate()}).catch(n=>{this.onError({url:i.url,source:i.source,sourceIndex:i.sourceIndex,loadOptions:this._loadOptions,error:n})}).finally(()=>{this._pendingCount--})}}const Wb=[0,0,0,255],Vj={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:e=>e.position},getIcon:{type:"accessor",value:e=>e.icon},getColor:{type:"accessor",value:Wb},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 jE extends si{constructor(...A){super(...A),y(this,"state",void 0)}getShaders(){return super.getShaders({vs:Mj,fs:kj,modules:[zr,jr]})}initializeState(){this.state={iconManager:new Kj(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:Wb},instanceAngles:{size:1,transition:!0,accessor:"getAngle"},instancePixelOffset:{size:2,transition:!0,accessor:"getPixelOffset"}})}updateState(A){super.updateState(A);const{props:t,oldProps:i,changeFlags:n}=A,r=this.getAttributeManager(),{iconAtlas:o,iconMapping:s,data:a,getIcon:g,textureParameters:I}=t,{iconManager:l}=this.state,c=o||this.internalState.isAsyncPropLoading("iconAtlas");if(l.setProps({loadOptions:t.loadOptions,autoPacking:!c,iconAtlas:o,iconMapping:c?s:null,textureParameters:I}),c?i.iconMapping!==t.iconMapping&&r.invalidate("getIcon"):(n.dataChanged||n.updateTriggersChanged&&(n.updateTriggersChanged.all||n.updateTriggersChanged.getIcon))&&l.packIcons(a,g),n.extensionsChanged){var C;const{gl:B}=this.context;(C=this.state.model)===null||C===void 0||C.delete(),this.state.model=this._getModel(B),r.invalidateAll()}}get isLoaded(){return super.isLoaded&&this.state.iconManager.isLoaded}finalizeState(A){super.finalizeState(A),this.state.iconManager.finalize()}draw({uniforms:A}){const{sizeScale:t,sizeMinPixels:i,sizeMaxPixels:n,sizeUnits:r,billboard:o,alphaCutoff:s}=this.props,{iconManager:a}=this.state,g=a.getTexture();g&&this.state.model.setUniforms(A).setUniforms({iconsTexture:g,iconsTextureDim:[g.width,g.height],sizeUnits:kr[r],sizeScale:t,sizeMinPixels:i,sizeMaxPixels:n,billboard:o,alphaCutoff:s}).draw()}_getModel(A){const t=[-1,-1,-1,1,1,1,1,-1];return new fi(A,{...this.getShaders(),id:this.props.id,geometry:new Cn({drawMode:6,attributes:{positions:{size:2,value:new Float32Array(t)}}}),isInstanced:!0})}_onUpdate(){this.setNeedsRedraw()}_onError(A){var t;const i=(t=this.getCurrentLayer())===null||t===void 0?void 0:t.props.onIconError;i?i(A):$A.error(A.error.message)()}getInstanceOffset(A){const{width:t,height:i,anchorX:n=t/2,anchorY:r=i/2}=this.state.iconManager.getIconMapping(A);return[t/2-n,i/2-r]}getInstanceColorMode(A){return this.state.iconManager.getIconMapping(A).mask?1:0}getInstanceIconFrame(A){const{x:t,y:i,width:n,height:r}=this.state.iconManager.getIconMapping(A);return[t,i,n,r]}}y(jE,"defaultProps",Vj);y(jE,"layerName","IconLayer");const Wj=`#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); +} +`,zj=`#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); +} +`,jj=[0,0,0,255],Xj={getSourcePosition:{type:"accessor",value:e=>e.sourcePosition},getTargetPosition:{type:"accessor",value:e=>e.targetPosition},getColor:{type:"accessor",value:jj},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 CI extends si{getShaders(){return super.getShaders({vs:Wj,fs:zj,modules:[zr,jr]})}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(A){if(super.updateState(A),A.changeFlags.extensionsChanged){var t;const{gl:i}=this.context;(t=this.state.model)===null||t===void 0||t.delete(),this.state.model=this._getModel(i),this.getAttributeManager().invalidateAll()}}draw({uniforms:A}){const{widthUnits:t,widthScale:i,widthMinPixels:n,widthMaxPixels:r,wrapLongitude:o}=this.props;this.state.model.setUniforms(A).setUniforms({widthUnits:kr[t],widthScale:i,widthMinPixels:n,widthMaxPixels:r,useShortestPath:o?1:0}).draw(),o&&this.state.model.setUniforms({useShortestPath:-1}).draw()}_getModel(A){const t=[0,-1,0,0,1,0,1,-1,0,1,1,0];return new fi(A,{...this.getShaders(),id:this.props.id,geometry:new Cn({drawMode:5,attributes:{positions:new Float32Array(t)}}),isInstanced:!0})}}y(CI,"layerName","LineLayer");y(CI,"defaultProps",Xj);const Zj=`#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); +} +`,$j=`#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); +} +`,WD=[0,0,0,255],AX={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:e=>e.position},getRadius:{type:"accessor",value:1},getFillColor:{type:"accessor",value:WD},getLineColor:{type:"accessor",value:WD},getLineWidth:{type:"accessor",value:1},strokeWidth:{deprecatedFor:"getLineWidth"},outline:{deprecatedFor:"stroked"},getColor:{deprecatedFor:["getFillColor","getLineColor"]}};class ey extends si{getShaders(){return super.getShaders({vs:Zj,fs:$j,modules:[zr,jr]})}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(A){if(super.updateState(A),A.changeFlags.extensionsChanged){var t;const{gl:i}=this.context;(t=this.state.model)===null||t===void 0||t.delete(),this.state.model=this._getModel(i),this.getAttributeManager().invalidateAll()}}draw({uniforms:A}){const{radiusUnits:t,radiusScale:i,radiusMinPixels:n,radiusMaxPixels:r,stroked:o,filled:s,billboard:a,antialiasing:g,lineWidthUnits:I,lineWidthScale:l,lineWidthMinPixels:c,lineWidthMaxPixels:C}=this.props;this.state.model.setUniforms(A).setUniforms({stroked:o?1:0,filled:s,billboard:a,antialiasing:g,radiusUnits:kr[t],radiusScale:i,radiusMinPixels:n,radiusMaxPixels:r,lineWidthUnits:kr[I],lineWidthScale:l,lineWidthMinPixels:c,lineWidthMaxPixels:C}).draw()}_getModel(A){const t=[-1,-1,0,1,-1,0,1,1,0,-1,1,0];return new fi(A,{...this.getShaders(),id:this.props.id,geometry:new Cn({drawMode:6,vertexCount:4,attributes:{positions:{size:3,value:new Float32Array(t)}}}),isInstanced:!0})}}y(ey,"defaultProps",AX);y(ey,"layerName","ScatterplotLayer");const zb={CLOCKWISE:1,COUNTER_CLOCKWISE:-1};function jb(e,A,t={}){return eX(e,t)!==A?(iX(e,t),!0):!1}function eX(e,A={}){return Math.sign(tX(e,A))}function tX(e,A={}){const{start:t=0,end:i=e.length}=A,n=A.size||2;let r=0;for(let o=t,s=i-n;o0){let n=!0;for(let r=0;rA[2]&&(t|=2),e[1]A[3]&&(t|=8),t}function Xb(e,A){const{size:t=2,broken:i=!1,gridResolution:n=10,gridOffset:r=[0,0],startIndex:o=0,endIndex:s=e.length}=A||{},a=(s-o)/t;let g=[];const I=[g],l=zI(e,0,t,o);let c,C;const B=$b(l,n,r,[]),E=[];Li(g,l);for(let u=1;ut&&(g=[],I.push(g),Li(g,l)),C=_C(c,B)}Li(g,c),dd(l,c)}return i?I:I[0]}const zD=0,nX=1;function _c(e,A){for(let t=0;t=0?(Li(g,C)&&l.push(E),d+=B):l.length&&(l[l.length-1]=zD),dd(u,C),h=B,f=E;return[Q?{pos:a,types:A&&I}:null,d?{pos:g,types:A&&l}:null]}function $b(e,A,t,i){const n=Math.floor((e[0]-t[0])/A)*A+t[0],r=Math.floor((e[1]-t[1])/A)*A+t[1];return i[0]=n,i[1]=r,i[2]=n+A,i[3]=r+A,i}function rX(e,A,t){t&8?(e[1]+=A,e[3]+=A):t&4?(e[1]-=A,e[3]-=A):t&2?(e[0]+=A,e[2]+=A):t&1&&(e[0]-=A,e[2]-=A)}function oX(e,A,t,i){let n=1/0,r=-1/0,o=1/0,s=-1/0;for(let a=0;ar?g:r,o=Is?I:s}return i[0][0]=n,i[0][1]=o,i[1][0]=r,i[1][1]=s,i}const sX=85.051129;function aX(e,A){const{size:t=2,startIndex:i=0,endIndex:n=e.length,normalize:r=!0}=A||{},o=e.slice(i,n);AG(o,t,0,n-i);const s=Xb(o,{size:t,broken:!0,gridResolution:360,gridOffset:[-180,-180]});if(r)for(const a of s)eG(a,t);return s}function gX(e,A=null,t){const{size:i=2,normalize:n=!0,edgeTypes:r=!1}=t||{};A=A||[];const o=[],s=[];let a=0,g=0;for(let l=0;l<=A.length;l++){const c=A[l]||e.length,C=g,B=IX(e,i,a,c);for(let E=B;En&&(n=s,r=o-1)}return r}function lX(e,A,t,i,n=sX){const r=e[t],o=e[i-A];if(Math.abs(r-o)>180){const s=zI(e,0,A,t);s[0]+=Math.round((o-r)/360)*360,Li(e,s),s[1]=Math.sign(s[1])*n,Li(e,s),s[0]=r,Li(e,s)}}function AG(e,A,t,i){let n=e[0],r;for(let o=t;o180||s<-180)&&(r-=Math.round(s/360)*360),e[o]=n=r}}function eG(e,A){let t;const i=e.length/A;for(let r=0;r=A.length&&(t+=1-A.length/n);const r=t*n;return i[0]=A[r],i[1]=A[r+1],i[2]=n===3&&A[r+2]||0,i}isClosed(A){if(!this.normalize)return!!this.opts.loop;const{positionSize:t}=this,i=A.length-t;return A[0]===A[i]&&A[1]===A[i+1]&&(t===2||A[2]===A[i+2])}}function XD(e){return Array.isArray(e[0])}const uX=`#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); +} +`,hX=`#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); +} +`,tG=[0,0,0,255],fX={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:e=>e.path},getColor:{type:"accessor",value:tG},getWidth:{type:"accessor",value:1},rounded:{deprecatedFor:["jointRounded","capRounded"]}},ef={enter:(e,A)=>A.length?A.subarray(A.length-e.length):e};class XE extends si{constructor(...A){super(...A),y(this,"state",void 0)}getShaders(){return super.getShaders({vs:uX,fs:hX,modules:[zr,jr]})}get wrapLongitude(){return!1}initializeState(){this.getAttributeManager().addInstanced({positions:{size:3,vertexOffset:1,type:5130,fp64:this.use64bitPositions(),transition:ef,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:ef,defaultValue:1},instanceColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,accessor:"getColor",transition:ef,defaultValue:tG},instancePickingColors:{size:3,type:5121,accessor:(i,{index:n,target:r})=>this.encodePickingColor(i&&i.__source?i.__source.index:n,r)}}),this.setState({pathTesselator:new EX({fp64:this.use64bitPositions()})})}updateState(A){super.updateState(A);const{props:t,changeFlags:i}=A,n=this.getAttributeManager();if(i.dataChanged||i.updateTriggersChanged&&(i.updateTriggersChanged.all||i.updateTriggersChanged.getPath)){const{pathTesselator:s}=this.state,a=t.data.attributes||{};s.updateGeometry({data:t.data,geometryBuffer:a.getPath,buffers:a,normalize:!t._pathType,loop:t._pathType==="loop",getGeometry:t.getPath,positionFormat:t.positionFormat,wrapLongitude:t.wrapLongitude,resolution:this.context.viewport.resolution,dataChanged:i.dataChanged}),this.setState({numInstances:s.instanceCount,startIndices:s.vertexStarts}),i.dataChanged||n.invalidateAll()}if(i.extensionsChanged){var o;const{gl:s}=this.context;(o=this.state.model)===null||o===void 0||o.delete(),this.state.model=this._getModel(s),n.invalidateAll()}}getPickingInfo(A){const t=super.getPickingInfo(A),{index:i}=t,{data:n}=this.props;return n[0]&&n[0].__source&&(t.object=n.find(r=>r.__source.index===i)),t}disablePickingIndex(A){const{data:t}=this.props;if(t[0]&&t[0].__source)for(let i=0;i80*t){s=g=e[0],a=I=e[1];for(var B=t;Bg&&(g=l),c>I&&(I=c);C=Math.max(g-s,I-a),C=C!==0?32767/C:0}return jI(r,o,t,s,a,C,0),o}function iG(e,A,t,i,n){var r,o;if(n===wd(e,A,t,i)>0)for(r=A;r=A;r-=i)o=ZD(r,e[r],e[r+1],o);return o&&$E(o,o.next)&&(ZI(o),o=o.next),o}function ko(e,A){if(!e)return e;A||(A=e);var t=e,i;do if(i=!1,!t.steiner&&($E(t,t.next)||Oe(t.prev,t,t.next)===0)){if(ZI(t),t=A=t.prev,t===t.next)break;i=!0}else t=t.next;while(i||t!==A);return A}function jI(e,A,t,i,n,r,o){if(e){!o&&r&&RX(e,i,n,r);for(var s=e,a,g;e.prev!==e.next;){if(a=e.prev,g=e.next,r?dX(e,i,n,r):QX(e)){A.push(a.i/t|0),A.push(e.i/t|0),A.push(g.i/t|0),ZI(e),e=g.next,s=g.next;continue}if(e=g,e===s){o?o===1?(e=pX(ko(e),A,t),jI(e,A,t,i,n,r,2)):o===2&&yX(e,A,t,i,n,r):jI(ko(e),A,t,i,n,r,1);break}}}}function QX(e){var A=e.prev,t=e,i=e.next;if(Oe(A,t,i)>=0)return!1;for(var n=A.x,r=t.x,o=i.x,s=A.y,a=t.y,g=i.y,I=nr?n>o?n:o:r>o?r:o,C=s>a?s>g?s:g:a>g?a:g,B=i.next;B!==A;){if(B.x>=I&&B.x<=c&&B.y>=l&&B.y<=C&&Hs(n,s,r,a,o,g,B.x,B.y)&&Oe(B.prev,B,B.next)>=0)return!1;B=B.next}return!0}function dX(e,A,t,i){var n=e.prev,r=e,o=e.next;if(Oe(n,r,o)>=0)return!1;for(var s=n.x,a=r.x,g=o.x,I=n.y,l=r.y,c=o.y,C=sa?s>g?s:g:a>g?a:g,u=I>l?I>c?I:c:l>c?l:c,h=yd(C,B,A,t,i),f=yd(E,u,A,t,i),Q=e.prevZ,d=e.nextZ;Q&&Q.z>=h&&d&&d.z<=f;){if(Q.x>=C&&Q.x<=E&&Q.y>=B&&Q.y<=u&&Q!==n&&Q!==o&&Hs(s,I,a,l,g,c,Q.x,Q.y)&&Oe(Q.prev,Q,Q.next)>=0||(Q=Q.prevZ,d.x>=C&&d.x<=E&&d.y>=B&&d.y<=u&&d!==n&&d!==o&&Hs(s,I,a,l,g,c,d.x,d.y)&&Oe(d.prev,d,d.next)>=0))return!1;d=d.nextZ}for(;Q&&Q.z>=h;){if(Q.x>=C&&Q.x<=E&&Q.y>=B&&Q.y<=u&&Q!==n&&Q!==o&&Hs(s,I,a,l,g,c,Q.x,Q.y)&&Oe(Q.prev,Q,Q.next)>=0)return!1;Q=Q.prevZ}for(;d&&d.z<=f;){if(d.x>=C&&d.x<=E&&d.y>=B&&d.y<=u&&d!==n&&d!==o&&Hs(s,I,a,l,g,c,d.x,d.y)&&Oe(d.prev,d,d.next)>=0)return!1;d=d.nextZ}return!0}function pX(e,A,t){var i=e;do{var n=i.prev,r=i.next.next;!$E(n,r)&&nG(n,i,i.next,r)&&XI(n,r)&&XI(r,n)&&(A.push(n.i/t|0),A.push(i.i/t|0),A.push(r.i/t|0),ZI(i),ZI(i.next),i=e=r),i=i.next}while(i!==e);return ko(i)}function yX(e,A,t,i,n,r){var o=e;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&NX(o,s)){var a=rG(o,s);o=ko(o,o.next),a=ko(a,a.next),jI(o,A,t,i,n,r,0),jI(a,A,t,i,n,r,0);return}s=s.next}o=o.next}while(o!==e)}function mX(e,A,t,i){var n=[],r,o,s,a,g;for(r=0,o=A.length;r=t.next.y&&t.next.y!==t.y){var s=t.x+(n-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(s<=i&&s>r&&(r=s,o=t.x=t.x&&t.x>=g&&i!==t.x&&Hs(no.x||t.x===o.x&&DX(o,t)))&&(o=t,l=c)),t=t.next;while(t!==a);return o}function DX(e,A){return Oe(e.prev,e,A.prev)<0&&Oe(A.next,e,e.next)<0}function RX(e,A,t,i){var n=e;do n.z===0&&(n.z=yd(n.x,n.y,A,t,i)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next;while(n!==e);n.prevZ.nextZ=null,n.prevZ=null,xX(n)}function xX(e){var A,t,i,n,r,o,s,a,g=1;do{for(t=e,e=null,r=null,o=0;t;){for(o++,i=t,s=0,A=0;A0||a>0&&i;)s!==0&&(a===0||!i||t.z<=i.z)?(n=t,t=t.nextZ,s--):(n=i,i=i.nextZ,a--),r?r.nextZ=n:e=n,n.prevZ=r,r=n;t=i}r.nextZ=null,g*=2}while(o>1);return e}function yd(e,A,t,i,n){return e=(e-t)*n|0,A=(A-i)*n|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,e|A<<1}function FX(e){var A=e,t=e;do(A.x=(e-o)*(r-s)&&(e-o)*(i-s)>=(t-o)*(A-s)&&(t-o)*(r-s)>=(n-o)*(i-s)}function NX(e,A){return e.next.i!==A.i&&e.prev.i!==A.i&&!LX(e,A)&&(XI(e,A)&&XI(A,e)&&bX(e,A)&&(Oe(e.prev,e,A.prev)||Oe(e,A.prev,A))||$E(e,A)&&Oe(e.prev,e,e.next)>0&&Oe(A.prev,A,A.next)>0)}function Oe(e,A,t){return(A.y-e.y)*(t.x-A.x)-(A.x-e.x)*(t.y-A.y)}function $E(e,A){return e.x===A.x&&e.y===A.y}function nG(e,A,t,i){var n=kc(Oe(e,A,t)),r=kc(Oe(e,A,i)),o=kc(Oe(t,i,e)),s=kc(Oe(t,i,A));return!!(n!==r&&o!==s||n===0&&Mc(e,t,A)||r===0&&Mc(e,i,A)||o===0&&Mc(t,e,i)||s===0&&Mc(t,A,i))}function Mc(e,A,t){return A.x<=Math.max(e.x,t.x)&&A.x>=Math.min(e.x,t.x)&&A.y<=Math.max(e.y,t.y)&&A.y>=Math.min(e.y,t.y)}function kc(e){return e>0?1:e<0?-1:0}function LX(e,A){var t=e;do{if(t.i!==e.i&&t.next.i!==e.i&&t.i!==A.i&&t.next.i!==A.i&&nG(t,t.next,e,A))return!0;t=t.next}while(t!==e);return!1}function XI(e,A){return Oe(e.prev,e,e.next)<0?Oe(e,A,e.next)>=0&&Oe(e,e.prev,A)>=0:Oe(e,A,e.prev)<0||Oe(e,e.next,A)<0}function bX(e,A){var t=e,i=!1,n=(e.x+A.x)/2,r=(e.y+A.y)/2;do t.y>r!=t.next.y>r&&t.next.y!==t.y&&n<(t.next.x-t.x)*(r-t.y)/(t.next.y-t.y)+t.x&&(i=!i),t=t.next;while(t!==e);return i}function rG(e,A){var t=new md(e.i,e.x,e.y),i=new md(A.i,A.x,A.y),n=e.next,r=A.prev;return e.next=A,A.prev=e,t.next=n,n.prev=t,i.next=t,t.prev=i,r.next=i,i.prev=r,i}function ZD(e,A,t,i){var n=new md(e,A,t);return i?(n.next=i.next,n.prev=i,i.next.prev=n,i.next=n):(n.prev=n,n.next=n),n}function ZI(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function md(e,A,t){this.i=e,this.x=A,this.y=t,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}ZE.deviation=function(e,A,t,i){var n=A&&A.length,r=n?A[0]*t:e.length,o=Math.abs(wd(e,0,r,t));if(n)for(var s=0,a=A.length;s0&&(i+=e[n-1].length,t.holes.push(i))}return t};var GX=ty.exports;const _X=pi(GX),Tc=zb.CLOCKWISE,$D=zb.COUNTER_CLOCKWISE,Cr={isClosed:!0};function MX(e){if(e=e&&e.positions||e,!Array.isArray(e)&&!ArrayBuffer.isView(e))throw new Error("invalid polygon")}function qg(e){return"positions"in e?e.positions:e}function MC(e){return"holeIndices"in e?e.holeIndices:null}function kX(e){return Array.isArray(e[0])}function TX(e){return e.length>=1&&e[0].length>=2&&Number.isFinite(e[0][0])}function UX(e){const A=e[0],t=e[e.length-1];return A[0]===t[0]&&A[1]===t[1]&&A[2]===t[2]}function PX(e,A,t,i){for(let n=0;nr/A));let n=qg(e);if(t){const r=n.length;n=n.slice();const o=[];for(let s=0;s2?o[a*r+2]:0;n[s*3]=g,n[s*3+1]=I,n[s*3+2]=l}}_updateVertexValid(A,{vertexStart:t,geometrySize:i}){const{positionSize:n}=this,r=this.attributes.vertexValid,o=A&&MC(A);if(A&&A.edgeTypes?r.set(A.edgeTypes,t):r.fill(1,t,t+i),o)for(let s=0;s0&&!Number.isFinite(e[0])}const sG=` +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); +} +`,JX=`#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(sG,` + +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); +} +`),OX=`#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(sG,` + +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); +} +`),YX=`#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); +} +`,TB=[0,0,0,255],KX={filled:!0,extruded:!1,wireframe:!1,_normalize:!0,_windingOrder:"CW",elevationScale:{type:"number",min:0,value:1},getPolygon:{type:"accessor",value:e=>e.polygon},getElevation:{type:"accessor",value:1e3},getFillColor:{type:"accessor",value:TB},getLineColor:{type:"accessor",value:TB},material:!0},Uc={enter:(e,A)=>A.length?A.subarray(A.length-e.length):e};class Au extends si{constructor(...A){super(...A),y(this,"state",void 0)}getShaders(A){return super.getShaders({vs:A==="top"?JX:OX,fs:YX,defines:{RING_WINDING_ORDER_CW:!this.props._normalize&&this.props._windingOrder==="CCW"?0:1},modules:[zr,$9,jr]})}get wrapLongitude(){return!1}initializeState(){const{gl:A,viewport:t}=this.context;let{coordinateSystem:i}=this.props;t.isGeospatial&&i===HA.DEFAULT&&(i=HA.LNGLAT),this.setState({numInstances:0,polygonTesselator:new qX({preproject:i===HA.LNGLAT&&t.projectFlat.bind(t),fp64:this.use64bitPositions(),IndexType:!A||kp(A,Se.ELEMENT_INDEX_UINT32)?Uint32Array:Uint16Array})});const n=this.getAttributeManager(),r=!0;n.remove(["instancePickingColors"]),n.add({indices:{size:1,isIndexed:!0,update:this.calculateIndices,noAlloc:r},positions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:Uc,accessor:"getPolygon",update:this.calculatePositions,noAlloc:r,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:r},elevations:{size:1,transition:Uc,accessor:"getElevation",shaderAttributes:{elevations:{divisor:0},instanceElevations:{divisor:1}}},fillColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:Uc,accessor:"getFillColor",defaultValue:TB,shaderAttributes:{fillColors:{divisor:0},instanceFillColors:{divisor:1}}},lineColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:Uc,accessor:"getLineColor",defaultValue:TB,shaderAttributes:{lineColors:{divisor:0},instanceLineColors:{divisor:1}}},pickingColors:{size:3,type:5121,accessor:(o,{index:s,target:a})=>this.encodePickingColor(o&&o.__source?o.__source.index:s,a),shaderAttributes:{pickingColors:{divisor:0},instancePickingColors:{divisor:1}}}})}getPickingInfo(A){const t=super.getPickingInfo(A),{index:i}=t,{data:n}=this.props;return n[0]&&n[0].__source&&(t.object=n.find(r=>r.__source.index===i)),t}disablePickingIndex(A){const{data:t}=this.props;if(t[0]&&t[0].__source)for(let i=0;ia.delete()),this.setState(this._getModels(this.context.gl)),r.invalidateAll()}}updateGeometry({props:A,oldProps:t,changeFlags:i}){if(i.dataChanged||i.updateTriggersChanged&&(i.updateTriggersChanged.all||i.updateTriggersChanged.getPolygon)){const{polygonTesselator:r}=this.state,o=A.data.attributes||{};r.updateGeometry({data:A.data,normalize:A._normalize,geometryBuffer:o.getPolygon,buffers:o,getGeometry:A.getPolygon,positionFormat:A.positionFormat,wrapLongitude:A.wrapLongitude,resolution:this.context.viewport.resolution,fp64:this.use64bitPositions(),dataChanged:i.dataChanged}),this.setState({numInstances:r.instanceCount,startIndices:r.vertexStarts}),i.dataChanged||this.getAttributeManager().invalidateAll()}}_getModels(A){const{id:t,filled:i,extruded:n}=this.props;let r,o;if(i){const s=this.getShaders("top");s.defines.NON_INSTANCED_MODEL=1,r=new fi(A,{...s,id:"".concat(t,"-top"),drawMode:4,attributes:{vertexPositions:new Float32Array([0,1])},uniforms:{isWireframe:!1,isSideVertex:!1},vertexCount:0,isIndexed:!0})}return n&&(o=new fi(A,{...this.getShaders("side"),id:"".concat(t,"-side"),geometry:new Cn({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,r].filter(Boolean),topModel:r,sideModel:o}}calculateIndices(A){const{polygonTesselator:t}=this.state;A.startIndices=t.indexStarts,A.value=t.get("indices")}calculatePositions(A){const{polygonTesselator:t}=this.state;A.startIndices=t.vertexStarts,A.value=t.get("positions")}calculateVertexValid(A){A.value=this.state.polygonTesselator.get("vertexValid")}}y(Au,"defaultProps",KX);y(Au,"layerName","SolidPolygonLayer");function aG({data:e,getIndex:A,dataRange:t,replace:i}){const{startRow:n=0,endRow:r=1/0}=t,o=e.length;let s=o,a=o;for(let c=0;cc&&C>=n&&(s=c),C>=r){a=c;break}}let g=s;const l=a-s!==i.length?e.slice(a):void 0;for(let c=0;ce.polygon},getFillColor:{type:"accessor",value:VX},getLineColor:{type:"accessor",value:gG},getLineWidth:{type:"accessor",value:1},getElevation:{type:"accessor",value:1e3},material:!0};class $I extends Ti{initializeState(){this.state={paths:[]},this.props.getLineDashArray&&$A.removed("getLineDashArray","PathStyleExtension")()}updateState({changeFlags:A}){const t=A.dataChanged||A.updateTriggersChanged&&(A.updateTriggersChanged.all||A.updateTriggersChanged.getPolygon);if(t&&Array.isArray(A.dataChanged)){const i=this.state.paths.slice(),n=A.dataChanged.map(r=>aG({data:i,getIndex:o=>o.__source.index,dataRange:r,replace:this._getPaths(r)}));this.setState({paths:i,pathsDiff:n})}else t&&this.setState({paths:this._getPaths(),pathsDiff:null})}_getPaths(A={}){const{data:t,getPolygon:i,positionFormat:n,_normalize:r}=this.props,o=[],s=n==="XY"?2:3,{startRow:a,endRow:g}=A,{iterable:I,objectInfo:l}=Pl(t,a,g);for(const c of I){l.index++;let C=i(c,l);r&&(C=oG(C,s));const{holeIndices:B}=C,E=C.positions||C;if(B)for(let u=0;u<=B.length;u++){const h=E.slice(B[u-1]||0,B[u]||E.length);o.push(this.getSubLayerRow({path:h},c,l.index))}else o.push(this.getSubLayerRow({path:E},c,l.index))}return o}renderLayers(){const{data:A,_dataDiff:t,stroked:i,filled:n,extruded:r,wireframe:o,_normalize:s,_windingOrder:a,elevationScale:g,transitions:I,positionFormat:l}=this.props,{lineWidthUnits:c,lineWidthScale:C,lineWidthMinPixels:B,lineWidthMaxPixels:E,lineJointRounded:u,lineMiterLimit:h,lineDashJustified:f}=this.props,{getFillColor:Q,getLineColor:d,getLineWidth:w,getLineDashArray:m,getElevation:v,getPolygon:x,updateTriggers:D,material:F}=this.props,{paths:N,pathsDiff:k}=this.state,P=this.getSubLayerClass("fill",Au),H=this.getSubLayerClass("stroke",XE),W=this.shouldRenderSubLayer("fill",N)&&new P({_dataDiff:t,extruded:r,elevationScale:g,filled:n,wireframe:o,_normalize:s,_windingOrder:a,getElevation:v,getFillColor:Q,getLineColor:r&&o?d:gG,material:F,transitions:I},this.getSubLayerProps({id:"fill",updateTriggers:D&&{getPolygon:D.getPolygon,getElevation:D.getElevation,getFillColor:D.getFillColor,lineColors:r&&o,getLineColor:D.getLineColor}}),{data:A,positionFormat:l,getPolygon:x}),J=!r&&i&&this.shouldRenderSubLayer("stroke",N)&&new H({_dataDiff:k&&(()=>k),widthUnits:c,widthScale:C,widthMinPixels:B,widthMaxPixels:E,jointRounded:u,miterLimit:h,dashJustified:f,_pathType:"loop",transitions:I&&{getWidth:I.getLineWidth,getColor:I.getLineColor,getPath:I.getPolygon},getColor:this.getSubLayerAccessor(d),getWidth:this.getSubLayerAccessor(w),getDashArray:this.getSubLayerAccessor(m)},this.getSubLayerProps({id:"stroke",updateTriggers:D&&{getWidth:D.getLineWidth,getColor:D.getLineColor,getDashArray:D.getLineDashArray}}),{data:N,positionFormat:l,getPath:Z=>Z.path});return[!r&&W,J,r&&W]}}y($I,"layerName","PolygonLayer");y($I,"defaultProps",WX);function zX(e,A){if(!e)return null;const t="startIndices"in e?e.startIndices[A]:A,i=e.featureIds.value[t];return t!==-1?jX(e,i,t):null}function jX(e,A,t){const i={properties:{...e.properties[A]}};for(const n in e.numericProps)i.properties[n]=e.numericProps[n].value[t];return i}function XX(e,A){const t={points:null,lines:null,polygons:null};for(const i in t){const n=e[i].globalFeatureIds.value;t[i]=new Uint8ClampedArray(n.length*3);const r=[];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); +} +`,iR=192/256,nR=[],$X={getIconOffsets:{type:"accessor",value:e=>e.offsets},alphaCutoff:.001,smoothing:.1,outlineWidth:0,outlineColor:{type:"color",value:[0,0,0,255]}};class iy extends jE{constructor(...A){super(...A),y(this,"state",void 0)}getShaders(){return{...super.getShaders(),fs:ZX}}initializeState(){super.initializeState(),this.getAttributeManager().addInstanced({instanceOffsets:{size:2,accessor:"getIconOffsets"},instancePickingColors:{type:5121,size:3,accessor:(t,{index:i,target:n})=>this.encodePickingColor(i,n)}})}updateState(A){super.updateState(A);const{props:t,oldProps:i}=A;let{outlineColor:n}=t;n!==i.outlineColor&&(n=n.map(r=>r/255),n[3]=Number.isFinite(n[3])?n[3]:1,this.setState({outlineColor:n})),!t.sdf&&t.outlineWidth&&$A.warn("".concat(this.id,": fontSettings.sdf is required to render outline"))()}draw(A){const{sdf:t,smoothing:i,outlineWidth:n}=this.props,{outlineColor:r}=this.state;A.uniforms={...A.uniforms,buffer:iR,outlineBuffer:n?Math.max(i,iR*(1-n)):-1,gamma:i,sdf:!!t,outlineColor:r},super.draw(A)}getInstanceOffset(A){return A?Array.from(A).flatMap(t=>super.getInstanceOffset(t)):nR}getInstanceColorMode(A){return 1}getInstanceIconFrame(A){return A?Array.from(A).flatMap(t=>super.getInstanceIconFrame(t)):nR}}y(iy,"defaultProps",$X);y(iy,"layerName","MultiIconLayer");var ny={exports:{}};ny.exports=Hl;ny.exports.default=Hl;var na=1e20;function Hl(e,A,t,i,n,r){this.fontSize=e||24,this.buffer=A===void 0?3:A,this.cutoff=i||.25,this.fontFamily=n||"sans-serif",this.fontWeight=r||"normal",this.radius=t||8;var o=this.size=this.fontSize+this.buffer*2,s=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(s*s),this.gridInner=new Float64Array(s*s),this.f=new Float64Array(s),this.z=new Float64Array(s+1),this.v=new Uint16Array(s),this.useMetrics=this.ctx.measureText("A").actualBoundingBoxLeft!==void 0,this.middle=Math.round(o/2*(navigator.userAgent.indexOf("Gecko/")>=0?1.2:1))}function AZ(e,A,t,i,n,r,o){r.fill(na,0,A*t),o.fill(0,0,A*t);for(var s=(A-i)/2,a=0;a-1);a++,r[a]=s,o[a]=g,o[a+1]=na}for(s=0,a=0;sn&&(g=0,a++),r[l]={x:g+i,y:s+a*(t+i*2)+i,width:c,height:t},g+=c+i*2}const I=t+i*2;return{mapping:r,xOffset:g,yOffset:s+a*I,canvasHeight:oZ(s+(a+1)*I)}}function IG(e,A,t,i){let n=0;for(let o=A;oi&&(os){let l=IG(e,s,a,n);g+l>i&&(oi&&(l=lG(e,s,a,i,n,r),o=r[r.length-1])),s=a,g+=l}return g}function gZ(e,A,t,i,n=0,r){r===void 0&&(r=e.length);const o=[];return A==="break-all"?lG(e,n,r,t,i,o):aZ(e,n,r,t,i,o),o}function IZ(e,A,t,i,n,r){let o=0,s=0;for(let a=A;a0,l=[0,0],c=[0,0];let C=0,B=0,E=0;for(let u=0;u<=o;u++){const h=r[u];if((h===` +`||u===o)&&(E=u),E>B){const f=I?gZ(r,t,i,n,B,E):rZ;for(let Q=0;Q<=f.length;Q++){const d=Q===0?B:f[Q-1],w=Q1||a>0){const C=e.constructor;c=new C(g);for(let B=0;B=0&&this._order.splice(t,1)}_appendOrder(A){this._order.push(A)}}function cZ(){const e=[];for(let A=32;A<128;A++)e.push(String.fromCharCode(A));return e}const BI={fontFamily:"Monaco, monospace",fontWeight:"normal",characterSet:cZ(),fontSize:64,buffer:4,sdf:!1,cutoff:.25,radius:12,smoothing:.1},aR=1024,CZ=.9,gR=1.2,CG=3;let UB=new cG(CG);function BZ(e,A){let t;typeof A=="string"?t=new Set(Array.from(A)):t=new Set(A);const i=UB.get(e);if(!i)return t;for(const n in i.mapping)t.has(n)&&t.delete(n);return t}function EZ(e,A){for(let t=0;t=CG,"Invalid cache limit"),UB=new cG(e)}class hZ{constructor(){y(this,"props",{...BI}),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 gR}setProps(A={}){Object.assign(this.props,A);const t=this._key;this._key=this._getKey();const i=BZ(this._key,this.props.characterSet),n=UB.get(this._key);if(n&&i.size===0){this._key!==t&&(this._atlas=n);return}const r=this._generateFontAtlas(this._key,i,n);this._atlas=r,UB.set(this._key,r)}_generateFontAtlas(A,t,i){const{fontFamily:n,fontWeight:r,fontSize:o,buffer:s,sdf:a,radius:g,cutoff:I}=this.props;let l=i&&i.data;l||(l=document.createElement("canvas"),l.width=aR);const c=l.getContext("2d");IR(c,n,o,r);const{mapping:C,canvasHeight:B,xOffset:E,yOffset:u}=sZ({getFontWidth:h=>c.measureText(h).width,fontHeight:o*gR,buffer:s,characterSet:t,maxCanvasWidth:aR,...i&&{mapping:i.mapping,xOffset:i.xOffset,yOffset:i.yOffset}});if(l.height!==B){const h=c.getImageData(0,0,l.width,l.height);l.height=B,c.putImageData(h,0,0)}if(IR(c,n,o,r),a){const h=new iZ(o,s,g,I,n,r),f=c.getImageData(0,0,h.size,h.size);for(const Q of t)EZ(h.draw(Q),f),c.putImageData(f,C[Q].x-s,C[Q].y+s)}else for(const h of t)c.fillText(h,C[h].x,C[h].y+o*CZ);return{xOffset:E,yOffset:u,mapping:C,data:l,width:l.width,height:l.height}}_getKey(){const{fontFamily:A,fontWeight:t,fontSize:i,buffer:n,sdf:r,radius:o,cutoff:s}=this.props;return r?"".concat(A," ").concat(t," ").concat(i," ").concat(n," ").concat(o," ").concat(s):"".concat(A," ").concat(t," ").concat(i," ").concat(n)}}const fZ=`#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); +} +`,QZ=`#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); +} +`,dZ={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:e=>e.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 ry extends si{constructor(...A){super(...A),y(this,"state",void 0)}getShaders(){return super.getShaders({vs:fZ,fs:QZ,modules:[zr,jr]})}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(A){super.updateState(A);const{changeFlags:t}=A;if(t.extensionsChanged){var i;const{gl:n}=this.context;(i=this.state.model)===null||i===void 0||i.delete(),this.state.model=this._getModel(n),this.getAttributeManager().invalidateAll()}}draw({uniforms:A}){const{billboard:t,sizeScale:i,sizeUnits:n,sizeMinPixels:r,sizeMaxPixels:o,getLineWidth:s}=this.props;let{padding:a}=this.props;a.length<4&&(a=[a[0],a[1],a[0],a[1]]),this.state.model.setUniforms(A).setUniforms({billboard:t,stroked:!!s,padding:a,sizeUnits:kr[n],sizeScale:i,sizeMinPixels:r,sizeMaxPixels:o}).draw()}_getModel(A){const t=[0,0,1,0,1,1,0,1];return new fi(A,{...this.getShaders(),id:this.props.id,geometry:new Cn({drawMode:6,vertexCount:4,attributes:{positions:{size:2,value:new Float32Array(t)}}}),isInstanced:!0})}}y(ry,"defaultProps",dZ);y(ry,"layerName","TextBackgroundLayer");const lR={start:1,middle:0,end:-1},cR={top:1,center:0,bottom:-1},tf=[0,0,0,255],pZ=1,yZ={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:tf},getBorderWidth:{type:"accessor",value:0},backgroundPadding:{type:"array",value:[0,0,0,0]},characterSet:{type:"object",value:BI.characterSet},fontFamily:BI.fontFamily,fontWeight:BI.fontWeight,lineHeight:pZ,outlineWidth:{type:"number",value:0,min:0},outlineColor:{type:"color",value:tf},fontSettings:{},wordBreak:"break-word",maxWidth:{type:"number",value:-1},getText:{type:"accessor",value:e=>e.text},getPosition:{type:"accessor",value:e=>e.position},getColor:{type:"accessor",value:tf},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 ql extends Ti{constructor(...A){super(...A),y(this,"state",void 0),y(this,"getBoundingRect",(t,i)=>{const n=this.state.fontAtlasManager.mapping,r=this.state.getText,{wordBreak:o,maxWidth:s,lineHeight:a,getTextAnchor:g,getAlignmentBaseline:I}=this.props,l=r(t,i)||"",{size:[c,C]}=sR(l,a,o,s,n),B=lR[typeof g=="function"?g(t,i):g],E=cR[typeof I=="function"?I(t,i):I];return[(B-1)*c/2,(E-1)*C/2,c,C]}),y(this,"getIconOffsets",(t,i)=>{const n=this.state.fontAtlasManager.mapping,r=this.state.getText,{wordBreak:o,maxWidth:s,lineHeight:a,getTextAnchor:g,getAlignmentBaseline:I}=this.props,l=r(t,i)||"",{x:c,y:C,rowWidth:B,size:[E,u]}=sR(l,a,o,s,n),h=lR[typeof g=="function"?g(t,i):g],f=cR[typeof I=="function"?I(t,i):I],Q=c.length,d=new Array(Q*2);let w=0;for(let m=0;m=0?this.props.data[A.index]:null,A}_updateFontAtlas(){const{fontSettings:A,fontFamily:t,fontWeight:i}=this.props,{fontAtlasManager:n,characterSet:r}=this.state,o={...A,characterSet:r,fontFamily:t,fontWeight:i};if(!n.mapping)return n.setProps(o),!0;for(const s in o)if(o[s]!==n.props[s])return n.setProps(o),!0;return!1}_updateText(){var A;const{data:t,characterSet:i}=this.props,n=(A=t.attributes)===null||A===void 0?void 0:A.getText;let{getText:r}=this.props,o=t.startIndices,s;const a=i==="auto"&&new Set;if(n&&o){const{texts:g,characterCount:I}=lZ({...ArrayBuffer.isView(n)?{value:n}:n,length:t.length,startIndices:o,characterSet:a});s=I,r=(l,{index:c})=>g[c]}else{const{iterable:g,objectInfo:I}=Pl(t);o=[0],s=0;for(const l of g){I.index++;const c=Array.from(r(l,I)||"");a&&c.forEach(a.add,a),s+=c.length,o.push(s)}}this.setState({getText:r,startIndices:o,numInstances:s,characterSet:a||i})}renderLayers(){const{startIndices:A,numInstances:t,getText:i,fontAtlasManager:{scale:n,texture:r,mapping:o},styleVersion:s}=this.state,{data:a,_dataDiff:g,getPosition:I,getColor:l,getSize:c,getAngle:C,getPixelOffset:B,getBackgroundColor:E,getBorderColor:u,getBorderWidth:h,backgroundPadding:f,background:Q,billboard:d,fontSettings:w,outlineWidth:m,outlineColor:v,sizeScale:x,sizeUnits:D,sizeMinPixels:F,sizeMaxPixels:N,transitions:k,updateTriggers:P}=this.props,H=this.getSubLayerClass("characters",iy),W=this.getSubLayerClass("background",ry);return[Q&&new W({getFillColor:E,getLineColor:u,getLineWidth:h,padding:f,getPosition:I,getSize:c,getAngle:C,getPixelOffset:B,billboard:d,sizeScale:x/this.state.fontAtlasManager.props.fontSize,sizeUnits:D,sizeMinPixels:F,sizeMaxPixels:N,transitions:k&&{getPosition:k.getPosition,getAngle:k.getAngle,getSize:k.getSize,getFillColor:k.getBackgroundColor,getLineColor:k.getBorderColor,getLineWidth:k.getBorderWidth,getPixelOffset:k.getPixelOffset}},this.getSubLayerProps({id:"background",updateTriggers:{getPosition:P.getPosition,getAngle:P.getAngle,getSize:P.getSize,getFillColor:P.getBackgroundColor,getLineColor:P.getBorderColor,getLineWidth:P.getBorderWidth,getPixelOffset:P.getPixelOffset,getBoundingRect:{getText:P.getText,getTextAnchor:P.getTextAnchor,getAlignmentBaseline:P.getAlignmentBaseline,styleVersion:s}}}),{data:a.attributes&&a.attributes.background?{length:a.length,attributes:a.attributes.background}:a,_dataDiff:g,autoHighlight:!1,getBoundingRect:this.getBoundingRect}),new H({sdf:w.sdf,smoothing:Number.isFinite(w.smoothing)?w.smoothing:BI.smoothing,outlineWidth:m,outlineColor:v,iconAtlas:r,iconMapping:o,getPosition:I,getColor:l,getSize:c,getAngle:C,getPixelOffset:B,billboard:d,sizeScale:x*n,sizeUnits:D,sizeMinPixels:F*n,sizeMaxPixels:N*n,transitions:k&&{getPosition:k.getPosition,getAngle:k.getAngle,getColor:k.getColor,getSize:k.getSize,getPixelOffset:k.getPixelOffset}},this.getSubLayerProps({id:"characters",updateTriggers:{getIcon:P.getText,getPosition:P.getPosition,getAngle:P.getAngle,getColor:P.getColor,getSize:P.getSize,getPixelOffset:P.getPixelOffset,getIconOffsets:{getText:P.getText,getTextAnchor:P.getTextAnchor,getAlignmentBaseline:P.getAlignmentBaseline,styleVersion:s}}}),{data:a,_dataDiff:g,startIndices:A,numInstances:t,getIconOffsets:this.getIconOffsets,getIcon:i})]}static set fontAtlasCacheLimit(A){uZ(A)}}y(ql,"defaultProps",yZ);y(ql,"layerName","TextLayer");const kC={circle:{type:ey,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:jE,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:ql,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"}}},TC={type:XE,props:{lineWidthUnits:"widthUnits",lineWidthScale:"widthScale",lineWidthMinPixels:"widthMinPixels",lineWidthMaxPixels:"widthMaxPixels",lineJointRounded:"jointRounded",lineCapRounded:"capRounded",lineMiterLimit:"miterLimit",lineBillboard:"billboard",getLineColor:"getColor",getLineWidth:"getWidth"}},vd={type:Au,props:{extruded:"extruded",filled:"filled",wireframe:"wireframe",elevationScale:"elevationScale",material:"material",getElevation:"getElevation",getFillColor:"getFillColor",getLineColor:"getLineColor"}};function mg({type:e,props:A}){const t={};for(const i in A)t[i]=e.defaultProps[A[i]];return t}function nf(e,A){const{transitions:t,updateTriggers:i}=e.props,n={updateTriggers:{},transitions:t&&{getPosition:t.geometry}};for(const r in A){const o=A[r];let s=e.props[r];r.startsWith("get")&&(s=e.getSubLayerAccessor(s),n.updateTriggers[o]=i[r],t&&(n.transitions[o]=t[r])),n[o]=s}return n}function mZ(e){if(Array.isArray(e))return e;switch($A.assert(e.type,"GeoJSON does not have type"),e.type){case"Feature":return[e];case"FeatureCollection":return $A.assert(Array.isArray(e.features),"GeoJSON does not have features array"),e.features;default:return[{geometry:e}]}}function CR(e,A,t={}){const i={pointFeatures:[],lineFeatures:[],polygonFeatures:[],polygonOutlineFeatures:[]},{startRow:n=0,endRow:r=e.length}=t;for(let o=n;o{s.push(t({geometry:{type:"Point",coordinates:l}},i,n))});break;case"LineString":a.push(t({geometry:e},i,n));break;case"MultiLineString":o.forEach(l=>{a.push(t({geometry:{type:"LineString",coordinates:l}},i,n))});break;case"Polygon":g.push(t({geometry:e},i,n)),o.forEach(l=>{I.push(t({geometry:{type:"LineString",coordinates:l}},i,n))});break;case"MultiPolygon":o.forEach(l=>{g.push(t({geometry:{type:"Polygon",coordinates:l}},i,n)),l.forEach(c=>{I.push(t({geometry:{type:"LineString",coordinates:c}},i,n))})});break}}const wZ={Point:1,MultiPoint:2,LineString:2,MultiLineString:3,Polygon:3,MultiPolygon:4};function vZ(e,A){let t=wZ[e];for($A.assert(t,"Unknown GeoJSON type ".concat(e));A&&--t>0;)A=A[0];return A&&Number.isFinite(A[0])}function BG(){return{points:{},lines:{},polygons:{},polygonsOutline:{}}}function Pc(e){return e.geometry.coordinates}function SZ(e,A){const t=BG(),{pointFeatures:i,lineFeatures:n,polygonFeatures:r,polygonOutlineFeatures:o}=e;return t.points.data=i,t.points._dataDiff=A.pointFeatures&&(()=>A.pointFeatures),t.points.getPosition=Pc,t.lines.data=n,t.lines._dataDiff=A.lineFeatures&&(()=>A.lineFeatures),t.lines.getPath=Pc,t.polygons.data=r,t.polygons._dataDiff=A.polygonFeatures&&(()=>A.polygonFeatures),t.polygons.getPolygon=Pc,t.polygonsOutline.data=o,t.polygonsOutline._dataDiff=A.polygonOutlineFeatures&&(()=>A.polygonOutlineFeatures),t.polygonsOutline.getPath=Pc,t}function DZ(e,A){const t=BG(),{points:i,lines:n,polygons:r}=e,o=XX(e,A);return t.points.data={length:i.positions.value.length/i.positions.size,attributes:{...i.attributes,getPosition:i.positions,instancePickingColors:{size:3,value:o.points}},properties:i.properties,numericProps:i.numericProps,featureIds:i.featureIds},t.lines.data={length:n.pathIndices.value.length-1,startIndices:n.pathIndices.value,attributes:{...n.attributes,getPath:n.positions,instancePickingColors:{size:3,value:o.lines}},properties:n.properties,numericProps:n.numericProps,featureIds:n.featureIds},t.lines._pathType="open",t.polygons.data={length:r.polygonIndices.value.length-1,startIndices:r.polygonIndices.value,attributes:{...r.attributes,getPolygon:r.positions,pickingColors:{size:3,value:o.polygons}},properties:r.properties,numericProps:r.numericProps,featureIds:r.featureIds},t.polygons._normalize=!1,r.triangles&&(t.polygons.data.attributes.indices=r.triangles.value),t.polygonsOutline.data={length:r.primitivePolygonIndices.value.length-1,startIndices:r.primitivePolygonIndices.value,attributes:{...r.attributes,getPath:r.positions,instancePickingColors:{size:3,value:o.polygons}},properties:r.properties,numericProps:r.numericProps,featureIds:r.featureIds},t.polygonsOutline._pathType="open",t}const RZ=["points","linestrings","polygons"],xZ={...mg(kC.circle),...mg(kC.icon),...mg(kC.text),...mg(TC),...mg(vd),stroked:!0,filled:!0,extruded:!1,wireframe:!1,iconAtlas:{type:"object",value:null},iconMapping:{type:"object",value:{}},getIcon:{type:"accessor",value:e=>e.properties.icon},getText:{type:"accessor",value:e=>e.properties.text},pointType:"circle",getRadius:{deprecatedFor:"getPointRadius"}};class oy extends Ti{initializeState(){this.state={layerProps:{},features:{}}}updateState({props:A,changeFlags:t}){if(!t.dataChanged)return;const{data:i}=this.props,n=i&&"points"in i&&"polygons"in i&&"lines"in i;this.setState({binary:n}),n?this._updateStateBinary({props:A,changeFlags:t}):this._updateStateJSON({props:A,changeFlags:t})}_updateStateBinary({props:A,changeFlags:t}){const i=DZ(A.data,this.encodePickingColor);this.setState({layerProps:i})}_updateStateJSON({props:A,changeFlags:t}){const i=mZ(A.data),n=this.getSubLayerRow.bind(this);let r={};const o={};if(Array.isArray(t.dataChanged)){const a=this.state.features;for(const g in a)r[g]=a[g].slice(),o[g]=[];for(const g of t.dataChanged){const I=CR(i,n,g);for(const l in a)o[l].push(aG({data:r[l],getIndex:c=>c.__source.index,dataRange:g,replace:I[l]}))}}else r=CR(i,n);const s=SZ(r,o);this.setState({features:r,featuresDiff:o,layerProps:s})}getPickingInfo(A){const t=super.getPickingInfo(A),{index:i,sourceLayer:n}=t;return t.featureType=RZ.find(r=>n.id.startsWith("".concat(this.id,"-").concat(r,"-"))),i>=0&&n.id.startsWith("".concat(this.id,"-points-text"))&&this.state.binary&&(t.index=this.props.data.points.globalFeatureIds.value[i]),t}_updateAutoHighlight(A){const t="".concat(this.id,"-points-"),i=A.featureType==="points";for(const n of this.getSubLayers())n.id.startsWith(t)===i&&n.updateAutoHighlight(A)}_renderPolygonLayer(){const{extruded:A,wireframe:t}=this.props,{layerProps:i}=this.state,n="polygons-fill",r=this.shouldRenderSubLayer(n,i.polygons.data)&&this.getSubLayerClass(n,vd.type);if(r){const o=nf(this,vd.props),s=A&&t;return s||delete o.getLineColor,o.updateTriggers.lineColors=s,new r(o,this.getSubLayerProps({id:n,updateTriggers:o.updateTriggers}),i.polygons)}return null}_renderLineLayers(){const{extruded:A,stroked:t}=this.props,{layerProps:i}=this.state,n="polygons-stroke",r="linestrings",o=!A&&t&&this.shouldRenderSubLayer(n,i.polygonsOutline.data)&&this.getSubLayerClass(n,TC.type),s=this.shouldRenderSubLayer(r,i.lines.data)&&this.getSubLayerClass(r,TC.type);if(o||s){const a=nf(this,TC.props);return[o&&new o(a,this.getSubLayerProps({id:n,updateTriggers:a.updateTriggers}),i.polygonsOutline),s&&new s(a,this.getSubLayerProps({id:r,updateTriggers:a.updateTriggers}),i.lines)]}return null}_renderPointLayers(){const{pointType:A}=this.props,{layerProps:t,binary:i}=this.state;let{highlightedObjectIndex:n}=this.props;!i&&Number.isFinite(n)&&(n=t.points.data.findIndex(s=>s.__source.index===n));const r=new Set(A.split("+")),o=[];for(const s of r){const a="points-".concat(s),g=kC[s],I=g&&this.shouldRenderSubLayer(a,t.points.data)&&this.getSubLayerClass(a,g.type);if(I){const l=nf(this,g.props);let c=t.points;if(s==="text"&&i){const{instancePickingColors:C,...B}=c.data.attributes;c={...c,data:{...c.data,attributes:B}}}o.push(new I(l,this.getSubLayerProps({id:a,updateTriggers:l.updateTriggers,highlightedObjectIndex:n}),c))}}return o}renderLayers(){const{extruded:A}=this.props,t=this._renderPolygonLayer(),i=this._renderLineLayers(),n=this._renderPointLayers();return[!A&&t,i,n,A&&t]}getSubLayerAccessor(A){const{binary:t}=this.state;return!t||typeof A!="function"?super.getSubLayerAccessor(A):(i,n)=>{const{data:r,index:o}=n,s=zX(r,o);return A(s,n)}}}y(oy,"layerName","GeoJsonLayer");y(oy,"defaultProps",xZ);class FZ{constructor(A){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=A,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 A=this.content?this.content.byteLength:0;return Number.isFinite(A)||$A.error("byteLength not defined in tile data")(),A}async _loadData({getData:A,requestScheduler:t,onLoad:i,onError:n}){const{index:r,id:o,bbox:s,userData:a,zoom:g}=this,I=this._loaderId;this._abortController=new AbortController;const{signal:l}=this._abortController,c=await t.scheduleRequest(this,E=>E.isSelected?1:-1);if(!c){this._isCancelled=!0;return}if(this._isCancelled){c.done();return}let C=null,B;try{C=await A({index:r,id:o,bbox:s,userData:a,zoom:g,signal:l})}catch(E){B=E||!0}finally{c.done()}if(I===this._loaderId){if(this._loader=void 0,this.content=C,this._isCancelled&&!C){this._isLoaded=!1;return}this._isLoaded=!0,this._isCancelled=!1,B?n(B,this):i(this)}}loadData(A){return this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1,this._loaderId++,this._loader=this._loadData(A),this._loader}setNeedsReload(){this.isLoading&&(this.abort(),this._loader=void 0),this._needsReload=!0}abort(){var A;this.isLoaded||(this._isCancelled=!0,(A=this._abortController)===null||A===void 0||A.abort())}}const Dt={OUTSIDE:-1,INTERSECTING:0,INSIDE:1},ER=new hA,NZ=new hA;class sy{constructor(A=[0,0,0],t=[0,0,0],i){y(this,"center",void 0),y(this,"halfDiagonal",void 0),y(this,"minimum",void 0),y(this,"maximum",void 0),i=i||ER.copy(A).add(t).scale(.5),this.center=new hA(i),this.halfDiagonal=new hA(t).subtract(this.center),this.minimum=new hA(A),this.maximum=new hA(t)}clone(){return new sy(this.minimum,this.maximum,this.center)}equals(A){return this===A||!!A&&this.minimum.equals(A.minimum)&&this.maximum.equals(A.maximum)}transform(A){return this.center.transformAsPoint(A),this.halfDiagonal.transform(A),this.minimum.transform(A),this.maximum.transform(A),this}intersectPlane(A){const{halfDiagonal:t}=this,i=NZ.from(A.normal),n=t.x*Math.abs(i.x)+t.y*Math.abs(i.y)+t.z*Math.abs(i.z),r=this.center.dot(i)+A.distance;return r-n>0?Dt.INSIDE:r+n<0?Dt.OUTSIDE:Dt.INTERSECTING}distanceTo(A){return Math.sqrt(this.distanceSquaredTo(A))}distanceSquaredTo(A){const t=ER.from(A).subtract(this.center),{halfDiagonal:i}=this;let n=0,r;return r=Math.abs(t.x)-i.x,r>0&&(n+=r*r),r=Math.abs(t.y)-i.y,r>0&&(n+=r*r),r=Math.abs(t.z)-i.z,r>0&&(n+=r*r),n}}const wg=new hA,uR=new hA;class ay{constructor(A=[0,0,0],t=0){y(this,"center",void 0),y(this,"radius",void 0),this.radius=-0,this.center=new hA,this.fromCenterRadius(A,t)}fromCenterRadius(A,t){return this.center.from(A),this.radius=t,this}fromCornerPoints(A,t){return t=wg.from(t),this.center=new hA().from(A).add(t).scale(.5),this.radius=this.center.distance(t),this}equals(A){return this===A||!!A&&this.center.equals(A.center)&&this.radius===A.radius}clone(){return new ay(this.center,this.radius)}union(A){const t=this.center,i=this.radius,n=A.center,r=A.radius,o=wg.copy(n).subtract(t),s=o.magnitude();if(i>=s+r)return this.clone();if(r>=s+i)return A.clone();const a=(i+s+r)*.5;return uR.copy(o).scale((-i+a)/s).add(t),this.center.copy(uR),this.radius=a,this}expand(A){const i=wg.from(A).subtract(this.center).magnitude();return i>this.radius&&(this.radius=i),this}transform(A){this.center.transform(A);const t=i9(wg,A);return this.radius=Math.max(t[0],Math.max(t[1],t[2]))*this.radius,this}distanceSquaredTo(A){const t=this.distanceTo(A);return t*t}distanceTo(A){const i=wg.from(A).subtract(this.center);return Math.max(0,i.len()-this.radius)}intersectPlane(A){const t=this.center,i=this.radius,r=A.normal.dot(t)+A.distance;return r<-i?Dt.OUTSIDE:r=a?Dt.INSIDE:Dt.INTERSECTING}distanceTo(A){return Math.sqrt(this.distanceSquaredTo(A))}distanceSquaredTo(A){const t=bZ.from(A).subtract(this.center),i=this.halfAxes,n=i.getColumn(0,Hc),r=i.getColumn(1,qc),o=i.getColumn(2,Jc),s=n.magnitude(),a=r.magnitude(),g=o.magnitude();n.normalize(),r.normalize(),o.normalize();let I=0,l;return l=Math.abs(t.dot(n))-s,l>0&&(I+=l*l),l=Math.abs(t.dot(r))-a,l>0&&(I+=l*l),l=Math.abs(t.dot(o))-g,l>0&&(I+=l*l),I}computePlaneDistances(A,t,i=[-0,-0]){let n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;const o=this.center,s=this.halfAxes,a=s.getColumn(0,Hc),g=s.getColumn(1,qc),I=s.getColumn(2,Jc),l=GZ.copy(a).add(g).add(I).add(o),c=_Z.copy(l).subtract(A);let C=t.dot(c);return n=Math.min(C,n),r=Math.max(C,r),l.copy(o).add(a).add(g).subtract(I),c.copy(l).subtract(A),C=t.dot(c),n=Math.min(C,n),r=Math.max(C,r),l.copy(o).add(a).subtract(g).add(I),c.copy(l).subtract(A),C=t.dot(c),n=Math.min(C,n),r=Math.max(C,r),l.copy(o).add(a).subtract(g).subtract(I),c.copy(l).subtract(A),C=t.dot(c),n=Math.min(C,n),r=Math.max(C,r),o.copy(l).subtract(a).add(g).add(I),c.copy(l).subtract(A),C=t.dot(c),n=Math.min(C,n),r=Math.max(C,r),o.copy(l).subtract(a).add(g).subtract(I),c.copy(l).subtract(A),C=t.dot(c),n=Math.min(C,n),r=Math.max(C,r),o.copy(l).subtract(a).subtract(g).add(I),c.copy(l).subtract(A),C=t.dot(c),n=Math.min(C,n),r=Math.max(C,r),o.copy(l).subtract(a).subtract(g).subtract(I),c.copy(l).subtract(A),C=t.dot(c),n=Math.min(C,n),r=Math.max(C,r),i[0]=n,i[1]=r,i}transform(A){this.center.transformAsPoint(A);const t=this.halfAxes.getColumn(0,Hc);t.transformAsPoint(A);const i=this.halfAxes.getColumn(1,qc);i.transformAsPoint(A);const n=this.halfAxes.getColumn(2,Jc);return n.transformAsPoint(A),this.halfAxes=new ht([...t,...i,...n]),this}getTransform(){throw new Error("not implemented")}}const hR=new hA,fR=new hA;class To{constructor(A=[0,0,1],t=0){y(this,"normal",void 0),y(this,"distance",void 0),this.normal=new hA,this.distance=-0,this.fromNormalDistance(A,t)}fromNormalDistance(A,t){return YI(Number.isFinite(t)),this.normal.from(A).normalize(),this.distance=t,this}fromPointNormal(A,t){A=hR.from(A),this.normal.from(t).normalize();const i=-this.normal.dot(A);return this.distance=i,this}fromCoefficients(A,t,i,n){return this.normal.set(A,t,i),YI(an(this.normal.len(),1)),this.distance=n,this}clone(){return new To(this.normal,this.distance)}equals(A){return an(this.distance,A.distance)&&an(this.normal,A.normal)}getPointDistance(A){return this.normal.dot(A)+this.distance}transform(A){const t=fR.copy(this.normal).transformAsVector(A).normalize(),i=this.normal.scale(-this.distance).transform(A);return this.fromPointNormal(i,t)}projectPointOntoPlane(A,t=[0,0,0]){A=hR.from(A);const i=this.getPointDistance(A),n=fR.copy(this.normal).scale(i);return A.subtract(n).to(t)}}const QR=[new hA([1,0,0]),new hA([0,1,0]),new hA([0,0,1])],dR=new hA,MZ=new hA;new To(new hA(1,0,0),0);class Nn{constructor(A=[]){y(this,"planes",void 0),this.planes=A}fromBoundingSphere(A){this.planes.length=2*QR.length;const t=A.center,i=A.radius;let n=0;for(const r of QR){let o=this.planes[n],s=this.planes[n+1];o||(o=this.planes[n]=new To),s||(s=this.planes[n+1]=new To);const a=dR.copy(r).scale(-i).add(t);-r.dot(a),o.fromPointNormal(a,r);const g=dR.copy(r).scale(i).add(t),I=MZ.copy(r).negate();-I.dot(g),s.fromPointNormal(g,I),n+=2}return this}computeVisibility(A){let t=Dt.INSIDE;for(const i of this.planes)switch(A.intersectPlane(i)){case Dt.OUTSIDE:return Dt.OUTSIDE;case Dt.INTERSECTING:t=Dt.INTERSECTING;break}return t}computeVisibilityWithPlaneMask(A,t){if(YI(Number.isFinite(t),"parentPlaneMask is required."),t===Nn.MASK_OUTSIDE||t===Nn.MASK_INSIDE)return t;let i=Nn.MASK_INSIDE;const n=this.planes;for(let r=0;ra;)qZ(s,Oc),pR.copy(Oc).transpose(),s.multiplyRight(Oc),s.multiplyLeft(pR),o.multiplyRight(Oc),++n>2&&(++r,n=0);return A.unitary=o.toTarget(A.unitary),A.diagonal=s.toTarget(A.diagonal),A}function PZ(e){let A=0;for(let t=0;t<9;++t){const i=e[t];A+=i*i}return Math.sqrt(A)}const Sd=[1,0,0],Dd=[2,2,1];function HZ(e){let A=0;for(let t=0;t<3;++t){const i=e[zi.getElementIndex(Dd[t],Sd[t])];A+=2*i*i}return Math.sqrt(A)}function qZ(e,A){const t=Ib.EPSILON15;let i=0,n=1;for(let g=0;g<3;++g){const I=Math.abs(e[zi.getElementIndex(Dd[g],Sd[g])]);I>i&&(n=g,i=I)}const r=Sd[n],o=Dd[n];let s=1,a=0;if(Math.abs(e[zi.getElementIndex(o,r)])>t){const g=e[zi.getElementIndex(o,o)],I=e[zi.getElementIndex(r,r)],l=e[zi.getElementIndex(o,r)],c=(g-I)/2/l;let C;c<0?C=-1/(-c+Math.sqrt(1+c*c)):C=1/(c+Math.sqrt(1+c*c)),s=1/Math.sqrt(1+C*C),a=C*s}return ht.IDENTITY.to(A),A[zi.getElementIndex(r,r)]=A[zi.getElementIndex(o,o)]=s,A[zi.getElementIndex(o,r)]=a,A[zi.getElementIndex(r,o)]=-a,A}const tr=new hA,JZ=new hA,OZ=new hA,YZ=new hA,KZ=new hA,VZ=new ht,WZ={diagonal:new ht,unitary:new ht};function zZ(e,A=new gy){if(!e||e.length===0)return A.halfAxes=new ht([0,0,0,0,0,0,0,0,0]),A.center=new hA,A;const t=e.length,i=new hA(0,0,0);for(const D of e)i.add(D);const n=1/t;i.multiplyByScalar(n);let r=0,o=0,s=0,a=0,g=0,I=0;for(const D of e){const F=tr.copy(D).subtract(i);r+=F.x*F.x,o+=F.x*F.y,s+=F.x*F.z,a+=F.y*F.y,g+=F.y*F.z,I+=F.z*F.z}r*=n,o*=n,s*=n,a*=n,g*=n,I*=n;const l=VZ;l[0]=r,l[1]=o,l[2]=s,l[3]=o,l[4]=a,l[5]=g,l[6]=s,l[7]=g,l[8]=I;const{unitary:c}=UZ(l,WZ),C=A.halfAxes.copy(c);let B=C.getColumn(0,OZ),E=C.getColumn(1,YZ),u=C.getColumn(2,KZ),h=-Number.MAX_VALUE,f=-Number.MAX_VALUE,Q=-Number.MAX_VALUE,d=Number.MAX_VALUE,w=Number.MAX_VALUE,m=Number.MAX_VALUE;for(const D of e)tr.copy(D),h=Math.max(tr.dot(B),h),f=Math.max(tr.dot(E),f),Q=Math.max(tr.dot(u),Q),d=Math.min(tr.dot(B),d),w=Math.min(tr.dot(E),w),m=Math.min(tr.dot(u),m);B=B.multiplyByScalar(.5*(d+h)),E=E.multiplyByScalar(.5*(w+f)),u=u.multiplyByScalar(.5*(m+Q)),A.center.copy(B).add(E).add(u);const v=JZ.set(h-d,f-w,Q-m).multiplyByScalar(.5),x=new ht([v[0],0,0,0,v[1],0,0,0,v[2]]);return A.halfAxes.multiplyRight(x),A}const qs=512,yR=3,EG=[[.5,.5],[0,0],[0,1],[1,0],[1,1]],uG=EG.concat([[0,.5],[.5,0],[1,.5],[.5,1]]),jZ=uG.concat([[.25,.5],[.75,.5]]);class Js{constructor(A,t,i){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=A,this.y=t,this.z=i}get children(){if(!this._children){const A=this.x*2,t=this.y*2,i=this.z+1;this._children=[new Js(A,t,i),new Js(A,t+1,i),new Js(A+1,t,i),new Js(A+1,t+1,i)]}return this._children}update(A){const{viewport:t,cullingVolume:i,elevationBounds:n,minZ:r,maxZ:o,bounds:s,offset:a,project:g}=A,I=this.getBoundingVolume(n,a,g);if(s&&!this.insideBounds(s)||i.computeVisibility(I)<0)return!1;if(!this.childVisible){let{z:c}=this;if(c=r){const C=I.distanceTo(t.cameraPosition)*t.scale/t.height;c+=Math.floor(Math.log2(C))}if(c>=o)return this.selected=!0,!0}this.selected=!1,this.childVisible=!0;for(const c of this.children)c.update(A);return!0}getSelected(A=[]){if(this.selected&&A.push(this),this._children)for(const t of this._children)t.getSelected(A);return A}insideBounds([A,t,i,n]){const r=Math.pow(2,this.z),o=qs/r;return this.x*oA&&(this.y+1)*o>t}getBoundingVolume(A,t,i){if(i){const a=this.z<1?jZ:this.z<2?uG:EG,g=[];for(const I of a){const l=Rd(this.x+I[0],this.y+I[1],this.z);l[2]=A[0],g.push(i(l)),A[0]!==A[1]&&(l[2]=A[1],g.push(i(l)))}return zZ(g)}const n=Math.pow(2,this.z),r=qs/n,o=this.x*r+t*qs,s=qs-(this.y+1)*r;return new sy([o,s,A[0]],[o+r,s+r,A[1]])}}function XZ(e,A,t,i){const n=e instanceof mj&&e.resolution?e.projectPosition:null,r=Object.values(e.getFrustumPlanes()).map(({normal:C,distance:B})=>new To(C.clone().negate(),B)),o=new Nn(r),s=e.distanceScales.unitsPerMeter[2],a=t&&t[0]*s||0,g=t&&t[1]*s||0,I=e instanceof In&&e.pitch<=60?A:0;if(i){const[C,B,E,u]=i,h=Tr([C,u]),f=Tr([E,B]);i=[h[0],qs-h[1],f[0],qs-f[1]]}const l=new Js(0,0,0),c={viewport:e,project:n,cullingVolume:o,elevationBounds:[a,g],minZ:I,maxZ:A,bounds:i,offset:0};if(l.update(c),e instanceof In&&e.subViewports&&e.subViewports.length>1){for(c.offset=-1;l.update(c)&&!(--c.offset<-yR););for(c.offset=1;l.update(c)&&!(++c.offset>yR););}return l.getSelected()}const Un=512,ZZ=[-1/0,-1/0,1/0,1/0],$Z={type:"url",value:null,validate:(e,A)=>A.optional&&e===null||typeof e=="string"||Array.isArray(e)&&e.every(t=>typeof t=="string"),equals:(e,A)=>{if(e===A)return!0;if(!Array.isArray(e)||!Array.isArray(A))return!1;const t=e.length;if(t!==A.length)return!1;for(let i=0;in[0])),Math.min(...t.map(n=>n[1])),Math.max(...t.map(n=>n[0])),Math.max(...t.map(n=>n[1]))]}function A$(e){return Math.abs(e.split("").reduce((A,t)=>(A<<5)-A+t.charCodeAt(0)|0,0))}function e$(e,A){if(!e||!e.length)return null;const{index:t,id:i}=A;if(Array.isArray(e)){const r=A$(i)%e.length;e=e[r]}let n=e;for(const r of Object.keys(t)){const o=new RegExp("{".concat(r,"}"),"g");n=n.replace(o,String(t[r]))}return Number.isInteger(t.y)&&Number.isInteger(t.z)&&(n=n.replace(/\{-y\}/g,String(Math.pow(2,t.z)-t.y-1))),n}function t$(e,A,t){let i;if(A&&A.length===2){const[n,r]=A,o=e.getBounds({z:n}),s=e.getBounds({z:r});i=[Math.min(o[0],s[0]),Math.min(o[1],s[1]),Math.max(o[2],s[2]),Math.max(o[3],s[3])]}else i=e.getBounds();return e.isGeospatial?[Math.max(i[0],t[0]),Math.max(i[1],t[1]),Math.min(i[2],t[2]),Math.min(i[3],t[3])]:[Math.max(Math.min(i[0],t[2]),t[0]),Math.max(Math.min(i[1],t[3]),t[1]),Math.min(Math.max(i[2],t[0]),t[2]),Math.min(Math.max(i[3],t[1]),t[3])]}function PB({viewport:e,z:A,cullRect:t}){const i=t.x-e.x,n=t.y-e.y,{width:r,height:o}=t;if(!Array.isArray(A)){const g={targetZ:A||0},I=e.unproject([i,n],g),l=e.unproject([i+r,n],g),c=e.unproject([i,n+o],g),C=e.unproject([i+r,n+o],g);return[Math.min(I[0],l[0],c[0],C[0]),Math.min(I[1],l[1],c[1],C[1]),Math.max(I[0],l[0],c[0],C[0]),Math.max(I[1],l[1],c[1],C[1])]}const s=PB({viewport:e,z:A[0],cullRect:t}),a=PB({viewport:e,z:A[1],cullRect:t});return[Math.min(s[0],a[0]),Math.min(s[1],a[1]),Math.max(s[2],a[2]),Math.max(s[3],a[3])]}function i$(e,A,t){return t?hG(e,t).map(n=>n*A/Un):e.map(i=>i*A/Un)}function Iy(e,A){return Math.pow(2,e)*Un/A}function Rd(e,A,t){const i=Iy(t,Un),n=e/i*360-180,r=Math.PI-2*Math.PI*A/i,o=180/Math.PI*Math.atan(.5*(Math.exp(r)-Math.exp(-r)));return[n,o]}function mR(e,A,t,i){const n=Iy(t,i);return[e/n*Un,A/n*Un]}function n$(e,A,t,i,n=Un){if(e.isGeospatial){const[g,I]=Rd(A,t,i),[l,c]=Rd(A+1,t+1,i);return{west:g,north:I,east:l,south:c}}const[r,o]=mR(A,t,i,n),[s,a]=mR(A+1,t+1,i,n);return{left:r,top:o,right:s,bottom:a}}function r$(e,A,t,i,n){const r=t$(e,null,i),o=Iy(A,t),[s,a,g,I]=i$(r,o,n),l=[];for(let c=Math.floor(s);cA&&(g=A);let I=n;return o&&s&&n&&!e.isGeospatial&&(I=hG(n,o)),e.isGeospatial?XZ(e,g,i,n):r$(e,g,r,I||ZZ,s)}const wR=1,eu=2,s$="never",a$="no-overlap",ly="best-available",g$=5,I$={[ly]:c$,[a$]:C$,[s$]:()=>{}};class l${constructor(A){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",_l(PB)),this.opts=A,this.onTileLoad=t=>{this.opts.onTileLoad(t),this.opts.maxCacheByteSize&&(this._cacheByteSize+=t.byteLength,this._resizeCache())},this._requestScheduler=new Xq({maxRequests:A.maxRequests,throttleRequests:A.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 he,this._modelMatrixInverse=new he,this.setOptions(A)}get tiles(){return this._tiles}get selectedTiles(){return this._selectedTiles}get isLoaded(){return this._selectedTiles!==null&&this._selectedTiles.every(A=>A.isLoaded)}get needsReload(){return this._selectedTiles!==null&&this._selectedTiles.some(A=>A.needsReload)}setOptions(A){Object.assign(this.opts,A),Number.isFinite(A.maxZoom)&&(this._maxZoom=Math.floor(A.maxZoom)),Number.isFinite(A.minZoom)&&(this._minZoom=Math.ceil(A.minZoom))}finalize(){for(const A of this._cache.values())A.isLoading&&A.abort();this._cache.clear(),this._tiles=[],this._selectedTiles=null}reloadAll(){for(const A of this._cache.keys()){const t=this._cache.get(A);!this._selectedTiles||!this._selectedTiles.includes(t)?this._cache.delete(A):t.setNeedsReload()}}update(A,{zRange:t,modelMatrix:i}={}){const n=new he(i),r=!n.equals(this._modelMatrix);if(!this._viewport||!A.equals(this._viewport)||!an(this._zRange,t)||r){r&&(this._modelMatrixInverse=n.clone().invert(),this._modelMatrix=n),this._viewport=A,this._zRange=t;const s=this.getTileIndices({viewport:A,maxZoom:this._maxZoom,minZoom:this._minZoom,zRange:t,modelMatrix:this._modelMatrix,modelMatrixInverse:this._modelMatrixInverse});this._selectedTiles=s.map(a=>this._getTile(a,!0)),this._dirty&&this._rebuildTree()}else this.needsReload&&(this._selectedTiles=this._selectedTiles.map(s=>this._getTile(s.index,!0)));const o=this.updateTileStates();return this._pruneRequests(),this._dirty&&this._resizeCache(),o&&this._frameNumber++,this._frameNumber}isTileVisible(A,t){if(!A.isVisible)return!1;if(t&&this._viewport){const[i,n,r,o]=PB({viewport:this._viewport,z:this._zRange,cullRect:t}),{bbox:s}=A;if("west"in s)return s.westi&&s.southn;const a=Math.min(s.top,s.bottom),g=Math.max(s.top,s.bottom);return s.lefti&&an}return!0}getTileIndices({viewport:A,maxZoom:t,minZoom:i,zRange:n,modelMatrix:r,modelMatrixInverse:o}){const{tileSize:s,extent:a,zoomOffset:g}=this.opts;return o$({viewport:A,maxZoom:t,minZoom:i,zRange:n,tileSize:s,extent:a,modelMatrix:r,modelMatrixInverse:o,zoomOffset:g})}getTileId(A){return"".concat(A.x,"-").concat(A.y,"-").concat(A.z)}getTileZoom(A){return A.z}getTileMetadata(A){const{tileSize:t}=this.opts;return{bbox:n$(this._viewport,A.x,A.y,A.z,t)}}getParentIndex(A){const t=Math.floor(A.x/2),i=Math.floor(A.y/2),n=A.z-1;return{x:t,y:i,z:n}}updateTileStates(){const A=this.opts.refinementStrategy||ly,t=new Array(this._cache.size);let i=0;for(const n of this._cache.values())t[i++]=n.isVisible,n.isSelected=!1,n.isVisible=!1;for(const n of this._selectedTiles)n.isSelected=!0,n.isVisible=!0;(typeof A=="function"?A:I$[A])(Array.from(this._cache.values())),i=0;for(const n of this._cache.values())if(t[i++]!==n.isVisible)return!0;return!1}_pruneRequests(){const{maxRequests:A}=this.opts,t=[];let i=0;for(const n of this._cache.values())n.isLoading&&(i++,!n.isSelected&&!n.isVisible&&t.push(n));for(;A>0&&i>A&&t.length>0;)t.shift().abort(),i--}_rebuildTree(){const{_cache:A}=this;for(const t of A.values())t.parent=null,t.children&&(t.children.length=0);for(const t of A.values()){const i=this._getNearestAncestor(t);t.parent=i,i!=null&&i.children&&i.children.push(t)}}_resizeCache(){const{_cache:A,opts:t}=this,i=t.maxCacheSize||(t.maxCacheByteSize?1/0:g$*this.selectedTiles.length),n=t.maxCacheByteSize||1/0;if(A.size>i||this._cacheByteSize>n){for(const[o,s]of A)if(s.isVisible||(this._cacheByteSize-=t.maxCacheByteSize?s.byteLength:0,A.delete(o),this.opts.onTileUnload(s)),A.size<=i&&this._cacheByteSize<=n)break;this._rebuildTree(),this._dirty=!0}this._dirty&&(this._tiles=Array.from(this._cache.values()).sort((o,s)=>o.zoom-s.zoom),this._dirty=!1)}_getTile(A,t){const i=this.getTileId(A);let n=this._cache.get(i),r=!1;return!n&&t?(n=new FZ(A),Object.assign(n,this.getTileMetadata(n.index)),Object.assign(n,{id:i,zoom:this.getTileZoom(n.index)}),r=!0,this._cache.set(i,n),this._dirty=!0):n&&n.needsReload&&(r=!0),n&&r&&n.loadData({getData:this.opts.getTileData,requestScheduler:this._requestScheduler,onLoad:this.onTileLoad,onError:this.opts.onTileError}),n}_getNearestAncestor(A){const{_minZoom:t=0}=this;let i=A.index;for(;this.getTileZoom(i)>t;){i=this.getParentIndex(i);const n=this._getTile(i);if(n)return n}return null}}function c$(e){for(const A of e)A.state=0;for(const A of e)A.isSelected&&!fG(A)&&cy(A);for(const A of e)A.isVisible=!!(A.state&eu)}function C$(e){for(const t of e)t.state=0;for(const t of e)t.isSelected&&fG(t);const A=Array.from(e).sort((t,i)=>t.zoom-i.zoom);for(const t of A)if(t.isVisible=!!(t.state&eu),t.children&&(t.isVisible||t.state&wR))for(const i of t.children)i.state=wR;else t.isSelected&&cy(t)}function fG(e){let A=e;for(;A;){if(A.isLoaded||A.content)return A.state|=eu,!0;A=A.parent}return!1}function cy(e){for(const A of e.children)A.isLoaded||A.content?A.state|=eu:cy(A)}const B$={TilesetClass:l$,data:{type:"data",value:[]},dataComparator:$Z.equals,renderSubLayers:{type:"function",value:e=>new oy(e),compare:!1},getTileData:{type:"function",optional:!0,value:null,compare:!1},onViewportLoad:{type:"function",optional:!0,value:null,compare:!1},onTileLoad:{type:"function",value:e=>{},compare:!1},onTileUnload:{type:"function",value:e=>{},compare:!1},onTileError:{type:"function",value:e=>console.error(e),compare:!1},extent:{type:"array",optional:!0,value:null,compare:!0},tileSize:512,maxZoom:null,minZoom:0,maxCacheSize:null,maxCacheByteSize:null,refinementStrategy:ly,zRange:null,maxRequests:6,zoomOffset:0};class Cy extends Ti{initializeState(){this.state={tileset:null,isLoaded:!1}}finalizeState(){var A,t;(A=this.state)===null||A===void 0||(t=A.tileset)===null||t===void 0||t.finalize()}get isLoaded(){var A,t;return(A=this.state)===null||A===void 0||(t=A.tileset)===null||t===void 0?void 0:t.selectedTiles.every(i=>i.isLoaded&&i.layers&&i.layers.every(n=>n.isLoaded))}shouldUpdateState({changeFlags:A}){return A.somethingChanged}updateState({changeFlags:A}){let{tileset:t}=this.state;const i=A.propsOrDataChanged||A.updateTriggersChanged,n=A.dataChanged||A.updateTriggersChanged&&(A.updateTriggersChanged.all||A.updateTriggersChanged.getTileData);t?i&&(t.setOptions(this._getTilesetOptions()),n?t.reloadAll():this.state.tileset.tiles.forEach(r=>{r.layers=null})):(t=new this.props.TilesetClass(this._getTilesetOptions()),this.setState({tileset:t})),this._updateTileset()}_getTilesetOptions(){const{tileSize:A,maxCacheSize:t,maxCacheByteSize:i,refinementStrategy:n,extent:r,maxZoom:o,minZoom:s,maxRequests:a,zoomOffset:g}=this.props;return{maxCacheSize:t,maxCacheByteSize:i,maxZoom:o,minZoom:s,tileSize:A,refinementStrategy:n,extent:r,maxRequests:a,zoomOffset:g,getTileData:this.getTileData.bind(this),onTileLoad:this._onTileLoad.bind(this),onTileError:this._onTileError.bind(this),onTileUnload:this._onTileUnload.bind(this)}}_updateTileset(){const{tileset:A}=this.state,{zRange:t,modelMatrix:i}=this.props,n=A.update(this.context.viewport,{zRange:t,modelMatrix:i}),{isLoaded:r}=A,o=this.state.isLoaded!==r,s=this.state.frameNumber!==n;r&&(o||s)&&this._onViewportLoad(),s&&this.setState({frameNumber:n}),this.state.isLoaded=r}_onViewportLoad(){const{tileset:A}=this.state,{onViewportLoad:t}=this.props;t&&t(A.selectedTiles)}_onTileLoad(A){this.props.onTileLoad(A),A.layers=null,this.setNeedsUpdate()}_onTileError(A,t){this.props.onTileError(A),t.layers=null,this.setNeedsUpdate()}_onTileUnload(A){this.props.onTileUnload(A)}getTileData(A){const{data:t,getTileData:i,fetch:n}=this.props,{signal:r}=A;return A.url=typeof t=="string"||Array.isArray(t)?e$(t,A):null,i?i(A):n&&A.url?n(A.url,{propName:"data",layer:this,signal:r}):null}renderSubLayers(A){return this.props.renderSubLayers(A)}getSubLayerPropsByTile(A){return null}getPickingInfo({info:A,sourceLayer:t}){return A.tile=t.props.tile,A}_updateAutoHighlight(A){A.sourceLayer&&A.sourceLayer.updateAutoHighlight(A)}renderLayers(){return this.state.tileset.tiles.map(A=>{const t=this.getSubLayerPropsByTile(A);if(!(!A.isLoaded&&!A.content))if(A.layers)t&&A.layers[0]&&Object.keys(t).some(i=>A.layers[0].props[i]!==t[i])&&(A.layers=A.layers.map(i=>i.clone(t)));else{const i=this.renderSubLayers({...this.props,id:"".concat(this.id,"-").concat(A.id),data:A.content,_offset:0,tile:A});A.layers=OE(i,Boolean).map(n=>n.clone({tile:A,...t}))}return A.layers})}filterSubLayer({layer:A,cullRect:t}){const{tile:i}=A.props;return this.state.tileset.isTileVisible(i,t)}}y(Cy,"defaultProps",B$);y(Cy,"layerName","TileLayer");function pt(e){return(A,...t)=>E$(e,A,t)}function Ta(e,A){return pt(QG(e,A).get)}const{apply:E$,construct:MuA,defineProperty:kuA,get:TuA,getOwnPropertyDescriptor:QG,getPrototypeOf:By,has:UuA,ownKeys:u$,set:PuA,setPrototypeOf:HuA}=Reflect,{iterator:Jl,species:quA,toStringTag:h$,for:JuA}=Symbol,f$=Object,{create:Ey,defineProperty:Q$,freeze:OuA,is:YuA}=f$,d$=Array,p$=d$.prototype,dG=p$[Jl],y$=pt(dG),pG=ArrayBuffer,m$=pG.prototype;Ta(m$,"byteLength");const vR=typeof SharedArrayBuffer<"u"?SharedArrayBuffer:null;vR&&Ta(vR.prototype,"byteLength");const yG=By(Uint8Array);yG.from;const Pt=yG.prototype;Pt[Jl];pt(Pt.keys);pt(Pt.values);pt(Pt.entries);pt(Pt.set);pt(Pt.reverse);pt(Pt.fill);pt(Pt.copyWithin);pt(Pt.sort);pt(Pt.slice);pt(Pt.subarray);Ta(Pt,"buffer");Ta(Pt,"byteOffset");Ta(Pt,"length");Ta(Pt,h$);const Ua=Uint32Array,w$=Float32Array,HB=By([][Jl]()),v$=pt(HB.next),S$=pt(function*(){}().next),D$=By(HB),R$=DataView.prototype,x$=pt(R$.getUint16),uy=WeakMap,mG=uy.prototype,wG=pt(mG.get),F$=pt(mG.set),vG=new uy,N$=Ey(null,{next:{value:function(){const A=wG(vG,this);return v$(A)}},[Jl]:{value:function(){return this}}});function L$(e){if(e[Jl]===dG)return e;const A=Ey(N$);return F$(vG,A,y$(e)),A}const b$=new uy,G$=Ey(D$,{next:{value:function(){const A=wG(b$,this);return S$(A)},writable:!0,configurable:!0}});for(const e of u$(HB))e!=="next"&&Q$(G$,e,QG(HB,e));const SG=new pG(4),_$=new w$(SG),M$=new Ua(SG),Yi=new Ua(512),Ki=new Ua(512);for(let e=0;e<256;++e){const A=e-127;A<-27?(Yi[e]=0,Yi[e|256]=32768,Ki[e]=24,Ki[e|256]=24):A<-14?(Yi[e]=1024>>-A-14,Yi[e|256]=1024>>-A-14|32768,Ki[e]=-A-1,Ki[e|256]=-A-1):A<=15?(Yi[e]=A+15<<10,Yi[e|256]=A+15<<10|32768,Ki[e]=13,Ki[e|256]=13):A<128?(Yi[e]=31744,Yi[e|256]=64512,Ki[e]=24,Ki[e|256]=24):(Yi[e]=31744,Yi[e|256]=64512,Ki[e]=13,Ki[e|256]=13)}const hy=new Ua(2048),Pa=new Ua(64),DG=new Ua(64);for(let e=1;e<1024;++e){let A=e<<13,t=0;for(;!(A&8388608);)A<<=1,t-=8388608;A&=-8388609,t+=947912704,hy[e]=A|t}for(let e=1024;e<2048;++e)hy[e]=939524096+(e-1024<<13);for(let e=1;e<31;++e)Pa[e]=e<<23;Pa[31]=1199570944;Pa[32]=2147483648;for(let e=33;e<63;++e)Pa[e]=2147483648+(e-32<<23);Pa[63]=3347054592;for(let e=1;e<64;++e)e!==32&&(DG[e]=1024);function k$(e){const A=e>>10;return M$[0]=hy[DG[A]+(e&1023)]+Pa[A],_$[0]}function RG(e,A,...t){return k$(x$(e,A,...L$(t)))}var fy={exports:{}};function xG(e,A,t){const i=t&&t.debug||!1;i&&console.log("getting "+A+" in "+e);const n=typeof e=="object"?e.outer:e,r=`${A}\\="([^"]*)"`;i&&console.log("pattern:",r);const s=new RegExp(r).exec(n);if(i&&console.log("match:",s),s)return s[1]}fy.exports=xG;fy.exports.default=xG;var T$=fy.exports;const rf=pi(T$);var Qy={exports:{}},dy={exports:{}},py={exports:{}};function FG(e,A,t){const n=new RegExp(A).exec(e.slice(t));return n?t+n.index:-1}py.exports=FG;py.exports.default=FG;var U$=py.exports,yy={exports:{}};function NG(e,A,t){const n=new RegExp(A).exec(e.slice(t));return n?t+n.index+n[0].length-1:-1}yy.exports=NG;yy.exports.default=NG;var P$=yy.exports,my={exports:{}};function LG(e,A){const t=new RegExp(A,"g"),i=e.match(t);return i?i.length:0}my.exports=LG;my.exports.default=LG;var H$=my.exports;const q$=U$,of=P$,SR=H$;function bG(e,A,t){const i=t&&t.debug||!1,n=!(t&&typeof t.nested===!1),r=t&&t.startIndex||0;i&&console.log("[xml-utils] starting findTagByName with",A," and ",t);const o=q$(e,`<${A}[ >/]`,r);if(i&&console.log("[xml-utils] start:",o),o===-1)return;const s=e.slice(o+A.length);let a=of(s,"^[^<]*[ /]>",0);const g=a!==-1&&s[a-1]==="/";if(i&&console.log("[xml-utils] selfClosing:",g),g===!1)if(n){let C=0,B=1,E=0;for(;(a=of(s,"[ /]"+A+">",C))!==-1;){const u=s.substring(C,a+1);if(B+=SR(u,"<"+A),E+=SR(u,"/"+A+">"),E>=B)break;C=a}}else a=of(s,"[ /]"+A+">",0);const I=o+A.length+a+1;if(i&&console.log("[xml-utils] end:",I),I===-1)return;const l=e.slice(o,I);let c;return g?c=null:c=l.slice(l.indexOf(">")+1,l.lastIndexOf("<")),{inner:c,outer:l,start:o,end:I}}dy.exports=bG;dy.exports.default=bG;var J$=dy.exports;const O$=J$;function GG(e,A,t){const i=[],n=t&&t.debug||!1,r=t&&typeof t.nested=="boolean"?t.nested:!0;let o=t&&t.startIndex||0,s;for(;s=O$(e,A,{debug:n,startIndex:o});)r?o=s.start+1+A.length:o=s.end,i.push(s);return n&&console.log("findTagsByName found",i.length,"tags"),i}Qy.exports=GG;Qy.exports.default=GG;var Y$=Qy.exports;const K$=pi(Y$),EI={315:"Artist",258:"BitsPerSample",265:"CellLength",264:"CellWidth",320:"ColorMap",259:"Compression",33432:"Copyright",306:"DateTime",338:"ExtraSamples",266:"FillOrder",289:"FreeByteCounts",288:"FreeOffsets",291:"GrayResponseCurve",290:"GrayResponseUnit",316:"HostComputer",270:"ImageDescription",257:"ImageLength",256:"ImageWidth",271:"Make",281:"MaxSampleValue",280:"MinSampleValue",272:"Model",254:"NewSubfileType",274:"Orientation",262:"PhotometricInterpretation",284:"PlanarConfiguration",296:"ResolutionUnit",278:"RowsPerStrip",277:"SamplesPerPixel",305:"Software",279:"StripByteCounts",273:"StripOffsets",255:"SubfileType",263:"Threshholding",282:"XResolution",283:"YResolution",326:"BadFaxLines",327:"CleanFaxData",343:"ClipPath",328:"ConsecutiveBadFaxLines",433:"Decode",434:"DefaultImageColor",269:"DocumentName",336:"DotRange",321:"HalftoneHints",346:"Indexed",347:"JPEGTables",285:"PageName",297:"PageNumber",317:"Predictor",319:"PrimaryChromaticities",532:"ReferenceBlackWhite",339:"SampleFormat",340:"SMinSampleValue",341:"SMaxSampleValue",559:"StripRowCounts",330:"SubIFDs",292:"T4Options",293:"T6Options",325:"TileByteCounts",323:"TileLength",324:"TileOffsets",322:"TileWidth",301:"TransferFunction",318:"WhitePoint",344:"XClipPathUnits",286:"XPosition",529:"YCbCrCoefficients",531:"YCbCrPositioning",530:"YCbCrSubSampling",345:"YClipPathUnits",287:"YPosition",37378:"ApertureValue",40961:"ColorSpace",36868:"DateTimeDigitized",36867:"DateTimeOriginal",34665:"Exif IFD",36864:"ExifVersion",33434:"ExposureTime",41728:"FileSource",37385:"Flash",40960:"FlashpixVersion",33437:"FNumber",42016:"ImageUniqueID",37384:"LightSource",37500:"MakerNote",37377:"ShutterSpeedValue",37510:"UserComment",33723:"IPTC",34675:"ICC Profile",700:"XMP",42112:"GDAL_METADATA",42113:"GDAL_NODATA",34377:"Photoshop",33550:"ModelPixelScale",33922:"ModelTiepoint",34264:"ModelTransformation",34735:"GeoKeyDirectory",34736:"GeoDoubleParams",34737:"GeoAsciiParams",50674:"LercParameters"},ji={};for(const e in EI)EI.hasOwnProperty(e)&&(ji[EI[e]]=parseInt(e,10));const V$=[ji.BitsPerSample,ji.ExtraSamples,ji.SampleFormat,ji.StripByteCounts,ji.StripOffsets,ji.StripRowCounts,ji.TileByteCounts,ji.TileOffsets,ji.SubIFDs],sf={1:"BYTE",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",6:"SBYTE",7:"UNDEFINED",8:"SSHORT",9:"SLONG",10:"SRATIONAL",11:"FLOAT",12:"DOUBLE",13:"IFD",16:"LONG8",17:"SLONG8",18:"IFD8"},jA={};for(const e in sf)sf.hasOwnProperty(e)&&(jA[sf[e]]=parseInt(e,10));const Xt={WhiteIsZero:0,BlackIsZero:1,RGB:2,Palette:3,TransparencyMask:4,CMYK:5,YCbCr:6,CIELab:8,ICCLab:9},W$={Unspecified:0,Assocalpha:1,Unassalpha:2},KuA={Version:0,AddCompression:1},VuA={None:0,Deflate:1},z$={1024:"GTModelTypeGeoKey",1025:"GTRasterTypeGeoKey",1026:"GTCitationGeoKey",2048:"GeographicTypeGeoKey",2049:"GeogCitationGeoKey",2050:"GeogGeodeticDatumGeoKey",2051:"GeogPrimeMeridianGeoKey",2052:"GeogLinearUnitsGeoKey",2053:"GeogLinearUnitSizeGeoKey",2054:"GeogAngularUnitsGeoKey",2055:"GeogAngularUnitSizeGeoKey",2056:"GeogEllipsoidGeoKey",2057:"GeogSemiMajorAxisGeoKey",2058:"GeogSemiMinorAxisGeoKey",2059:"GeogInvFlatteningGeoKey",2060:"GeogAzimuthUnitsGeoKey",2061:"GeogPrimeMeridianLongGeoKey",2062:"GeogTOWGS84GeoKey",3072:"ProjectedCSTypeGeoKey",3073:"PCSCitationGeoKey",3074:"ProjectionGeoKey",3075:"ProjCoordTransGeoKey",3076:"ProjLinearUnitsGeoKey",3077:"ProjLinearUnitSizeGeoKey",3078:"ProjStdParallel1GeoKey",3079:"ProjStdParallel2GeoKey",3080:"ProjNatOriginLongGeoKey",3081:"ProjNatOriginLatGeoKey",3082:"ProjFalseEastingGeoKey",3083:"ProjFalseNorthingGeoKey",3084:"ProjFalseOriginLongGeoKey",3085:"ProjFalseOriginLatGeoKey",3086:"ProjFalseOriginEastingGeoKey",3087:"ProjFalseOriginNorthingGeoKey",3088:"ProjCenterLongGeoKey",3089:"ProjCenterLatGeoKey",3090:"ProjCenterEastingGeoKey",3091:"ProjCenterNorthingGeoKey",3092:"ProjScaleAtNatOriginGeoKey",3093:"ProjScaleAtCenterGeoKey",3094:"ProjAzimuthAngleGeoKey",3095:"ProjStraightVertPoleLongGeoKey",3096:"ProjRectifiedGridAngleGeoKey",4096:"VerticalCSTypeGeoKey",4097:"VerticalCitationGeoKey",4098:"VerticalDatumGeoKey",4099:"VerticalUnitsGeoKey"};function j$(e,A){const{width:t,height:i}=e,n=new Uint8Array(t*i*3);let r;for(let o=0,s=0;o>24,a=e[n+2]<<24>>24;let g=(o+16)/116,I=s/500+g,l=g-a/200,c,C,B;I=eAA*(I*I*I>.008856?I*I*I:(I-16/116)/7.787),g=tAA*(g*g*g>.008856?g*g*g:(g-16/116)/7.787),l=iAA*(l*l*l>.008856?l*l*l:(l-16/116)/7.787),c=I*3.2406+g*-1.5372+l*-.4986,C=I*-.9689+g*1.8758+l*.0415,B=I*.0557+g*-.204+l*1.057,c=c>.0031308?1.055*c**(1/2.4)-.055:12.92*c,C=C>.0031308?1.055*C**(1/2.4)-.055:12.92*C,B=B>.0031308?1.055*B**(1/2.4)-.055:12.92*B,i[r]=Math.max(0,Math.min(1,c))*255,i[r+1]=Math.max(0,Math.min(1,C))*255,i[r+2]=Math.max(0,Math.min(1,B))*255}return i}const rAA="modulepreload",oAA=function(e){return"/"+e},DR={},rs=function(A,t,i){if(!t||t.length===0)return A();const n=document.getElementsByTagName("link");return Promise.all(t.map(r=>{if(r=oAA(r),r in DR)return;DR[r]=!0;const o=r.endsWith(".css"),s=o?'[rel="stylesheet"]':"";if(!!i)for(let I=n.length-1;I>=0;I--){const l=n[I];if(l.href===r&&(!o||l.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${r}"]${s}`))return;const g=document.createElement("link");if(g.rel=o?"stylesheet":rAA,o||(g.as="script",g.crossOrigin=""),g.href=r,document.head.appendChild(g),o)return new Promise((I,l)=>{g.addEventListener("load",I),g.addEventListener("error",()=>l(new Error(`Unable to preload CSS for ${r}`)))})})).then(()=>A()).catch(r=>{const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=r,window.dispatchEvent(o),!o.defaultPrevented)throw r})},_G=new Map;function Yn(e,A){Array.isArray(e)||(e=[e]),e.forEach(t=>_G.set(t,A))}async function sAA(e){const A=_G.get(e.Compression);if(!A)throw new Error(`Unknown compression method identifier: ${e.Compression}`);const t=await A();return new t(e)}Yn([void 0,1],()=>rs(()=>import("./raw-ea95a25e.js"),[]).then(e=>e.default));Yn(5,()=>rs(()=>import("./lzw-ef39d3b8.js"),[]).then(e=>e.default));Yn(6,()=>{throw new Error("old style JPEG compression is not supported.")});Yn(7,()=>rs(()=>import("./jpeg-29034b1c.js"),[]).then(e=>e.default));Yn([8,32946],()=>rs(()=>import("./deflate-9cfc3535.js"),["assets/deflate-9cfc3535.js","assets/pako.esm-147cf1d7.js"]).then(e=>e.default));Yn(32773,()=>rs(()=>import("./packbits-a16817ed.js"),[]).then(e=>e.default));Yn(34887,()=>rs(()=>import("./lerc-673b10b7.js"),["assets/lerc-673b10b7.js","assets/pako.esm-147cf1d7.js"]).then(e=>e.default));Yn(50001,()=>rs(()=>import("./webimage-7b855e8d.js"),[]).then(e=>e.default));function tu(e,A,t,i=1){return new(Object.getPrototypeOf(e)).constructor(A*t*i)}function aAA(e,A,t,i,n){const r=A/i,o=t/n;return e.map(s=>{const a=tu(s,i,n);for(let g=0;g{const a=tu(s,i,n);for(let g=0;g>8-n-m&l;else if(m+n<=16)I[d]=s.getUint16(w)>>16-n-m&l;else if(m+n<=24){const v=s.getUint16(w)<<8|s.getUint8(w+2);I[d]=v>>24-n-m&l}else I[d]=s.getUint32(w)>>32-n-m&l}}}}return I.buffer}class hAA{constructor(A,t,i,n,r,o){this.fileDirectory=A,this.geoKeys=t,this.dataView=i,this.littleEndian=n,this.tiles=r?{}:null,this.isTiled=!A.StripOffsets;const s=A.PlanarConfiguration;if(this.planarConfiguration=typeof s>"u"?1:s,this.planarConfiguration!==1&&this.planarConfiguration!==2)throw new Error("Invalid planar configuration.");this.source=o}getFileDirectory(){return this.fileDirectory}getGeoKeys(){return this.geoKeys}getWidth(){return this.fileDirectory.ImageWidth}getHeight(){return this.fileDirectory.ImageLength}getSamplesPerPixel(){return typeof this.fileDirectory.SamplesPerPixel<"u"?this.fileDirectory.SamplesPerPixel:1}getTileWidth(){return this.isTiled?this.fileDirectory.TileWidth:this.getWidth()}getTileHeight(){return this.isTiled?this.fileDirectory.TileLength:typeof this.fileDirectory.RowsPerStrip<"u"?Math.min(this.fileDirectory.RowsPerStrip,this.getHeight()):this.getHeight()}getBlockWidth(){return this.getTileWidth()}getBlockHeight(A){return this.isTiled||(A+1)*this.getTileHeight()<=this.getHeight()?this.getTileHeight():this.getHeight()-A*this.getTileHeight()}getBytesPerPixel(){let A=0;for(let t=0;t=this.fileDirectory.BitsPerSample.length)throw new RangeError(`Sample index ${A} is out of range.`);return Math.ceil(this.fileDirectory.BitsPerSample[A]/8)}getReaderForSample(A){const t=this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[A]:1,i=this.fileDirectory.BitsPerSample[A];switch(t){case 1:if(i<=8)return DataView.prototype.getUint8;if(i<=16)return DataView.prototype.getUint16;if(i<=32)return DataView.prototype.getUint32;break;case 2:if(i<=8)return DataView.prototype.getInt8;if(i<=16)return DataView.prototype.getInt16;if(i<=32)return DataView.prototype.getInt32;break;case 3:switch(i){case 16:return function(n,r){return RG(this,n,r)};case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}break}throw Error("Unsupported data format/bitsPerSample")}getSampleFormat(A=0){return this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[A]:1}getBitsPerSample(A=0){return this.fileDirectory.BitsPerSample[A]}getArrayForSample(A,t){const i=this.getSampleFormat(A),n=this.getBitsPerSample(A);return xd(i,n,t)}async getTileOrStrip(A,t,i,n,r){const o=Math.ceil(this.getWidth()/this.getTileWidth()),s=Math.ceil(this.getHeight()/this.getTileHeight());let a;const{tiles:g}=this;this.planarConfiguration===1?a=t*o+A:this.planarConfiguration===2&&(a=i*o*s+t*o+A);let I,l;this.isTiled?(I=this.fileDirectory.TileOffsets[a],l=this.fileDirectory.TileByteCounts[a]):(I=this.fileDirectory.StripOffsets[a],l=this.fileDirectory.StripByteCounts[a]);const c=(await this.source.fetch([{offset:I,length:l}],r))[0];let C;return g===null||!g[a]?(C=(async()=>{let B=await n.decode(this.fileDirectory,c);const E=this.getSampleFormat(),u=this.getBitsPerSample();return EAA(E,u)&&(B=uAA(B,E,this.planarConfiguration,this.getSamplesPerPixel(),u,this.getTileWidth(),this.getBlockHeight(t))),B})(),g!==null&&(g[a]=C)):C=g[a],{x:A,y:t,sample:i,data:await C}}async _readRaster(A,t,i,n,r,o,s,a,g){const I=this.getTileWidth(),l=this.getTileHeight(),c=this.getWidth(),C=this.getHeight(),B=Math.max(Math.floor(A[0]/I),0),E=Math.min(Math.ceil(A[2]/I),Math.ceil(c/I)),u=Math.max(Math.floor(A[1]/l),0),h=Math.min(Math.ceil(A[3]/l),Math.ceil(C/l)),f=A[2]-A[0];let Q=this.getBytesPerPixel();const d=[],w=[];for(let x=0;x{const W=H.data,J=new DataView(W),Z=this.getBlockHeight(H.y),z=H.y*l,O=H.x*I,Y=z+Z,T=(H.x+1)*I,q=w[N],j=Math.min(Z,Z-(Y-A[3]),C-z),AA=Math.min(I,I-(T-A[2]),c-O);for(let iA=Math.max(0,A[1]-z);iAI[2]||I[1]>I[3])throw new Error("Invalid subsets");const l=I[2]-I[0],c=I[3]-I[1],C=l*c,B=this.getSamplesPerPixel();if(!t||!t.length)for(let f=0;f=B)return Promise.reject(new RangeError(`Invalid sample index '${t[f]}'.`));let E;if(i){const f=this.fileDirectory.SampleFormat?Math.max.apply(null,this.fileDirectory.SampleFormat):1,Q=Math.max.apply(null,this.fileDirectory.BitsPerSample);E=xd(f,Q,C*t.length),a&&E.fill(a)}else{E=[];for(let f=0;fg[2]||g[1]>g[3])throw new Error("Invalid subsets");const I=this.fileDirectory.PhotometricInterpretation;if(I===Xt.RGB){let h=[0,1,2];if(this.fileDirectory.ExtraSamples!==W$.Unspecified&&s){h=[];for(let f=0;frf(r,"sample")===void 0):n=n.filter(r=>Number(rf(r,"sample"))===A);for(let r=0;r0;let r=!0;for(let o=0;o<8;o++){let s=this._dataView.getUint8(A+(t?o:7-o));n&&(r?s!==0&&(s=~(s-1)&255,r=!1):s=~s&255),i+=s*256**o}return n&&(i=-i),i}getUint8(A,t){return this._dataView.getUint8(A,t)}getInt8(A,t){return this._dataView.getInt8(A,t)}getUint16(A,t){return this._dataView.getUint16(A,t)}getInt16(A,t){return this._dataView.getInt16(A,t)}getUint32(A,t){return this._dataView.getUint32(A,t)}getInt32(A,t){return this._dataView.getInt32(A,t)}getFloat16(A,t){return RG(this._dataView,A,t)}getFloat32(A,t){return this._dataView.getFloat32(A,t)}getFloat64(A,t){return this._dataView.getFloat64(A,t)}}class QAA{constructor(A,t,i,n){this._dataView=new DataView(A),this._sliceOffset=t,this._littleEndian=i,this._bigTiff=n}get sliceOffset(){return this._sliceOffset}get sliceTop(){return this._sliceOffset+this.buffer.byteLength}get littleEndian(){return this._littleEndian}get bigTiff(){return this._bigTiff}get buffer(){return this._dataView.buffer}covers(A,t){return this.sliceOffset<=A&&this.sliceTop>=A+t}readUint8(A){return this._dataView.getUint8(A-this._sliceOffset,this._littleEndian)}readInt8(A){return this._dataView.getInt8(A-this._sliceOffset,this._littleEndian)}readUint16(A){return this._dataView.getUint16(A-this._sliceOffset,this._littleEndian)}readInt16(A){return this._dataView.getInt16(A-this._sliceOffset,this._littleEndian)}readUint32(A){return this._dataView.getUint32(A-this._sliceOffset,this._littleEndian)}readInt32(A){return this._dataView.getInt32(A-this._sliceOffset,this._littleEndian)}readFloat32(A){return this._dataView.getFloat32(A-this._sliceOffset,this._littleEndian)}readFloat64(A){return this._dataView.getFloat64(A-this._sliceOffset,this._littleEndian)}readUint64(A){const t=this.readUint32(A),i=this.readUint32(A+4);let n;if(this._littleEndian){if(n=t+2**32*i,!Number.isSafeInteger(n))throw new Error(`${n} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return n}if(n=2**32*t+i,!Number.isSafeInteger(n))throw new Error(`${n} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return n}readInt64(A){let t=0;const i=(this._dataView.getUint8(A+(this._littleEndian?7:0))&128)>0;let n=!0;for(let r=0;r<8;r++){let o=this._dataView.getUint8(A+(this._littleEndian?r:7-r));i&&(n?o!==0&&(o=~(o-1)&255,n=!1):o=~o&255),t+=o*256**r}return i&&(t=-t),t}readOffset(A){return this._bigTiff?this.readUint64(A):this.readUint32(A)}}const RR=`\r +\r +`;function kG(e){if(typeof Object.fromEntries<"u")return Object.fromEntries(e);const A={};for(const[t,i]of e)A[t.toLowerCase()]=i;return A}function dAA(e){const A=e.split(`\r +`).map(t=>{const i=t.split(":").map(n=>n.trim());return i[0]=i[0].toLowerCase(),i});return kG(A)}function pAA(e){const[A,...t]=e.split(";").map(n=>n.trim()),i=t.map(n=>n.split("="));return{type:A,params:kG(i)}}function Fd(e){let A,t,i;return e&&([,A,t,i]=e.match(/bytes (\d+)-(\d+)\/(\d+)/),A=parseInt(A,10),t=parseInt(t,10),i=parseInt(i,10)),{start:A,end:t,total:i}}function yAA(e,A){let t=null;const i=new TextDecoder("ascii"),n=[],r=`--${A}`,o=`${r}--`;for(let s=0;s<10;++s)i.decode(new Uint8Array(e,s,r.length))===r&&(t=s);if(t===null)throw new Error("Could not find initial boundary");for(;tthis.fetchSlice(i,t)))}async fetchSlice(A){throw new Error(`fetching of slice ${A} not possible, not implemented`)}get fileSize(){return null}async close(){}}class mAA extends Map{constructor(A={}){if(super(),!(A.maxSize&&A.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if(typeof A.maxAge=="number"&&A.maxAge===0)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=A.maxSize,this.maxAge=A.maxAge||Number.POSITIVE_INFINITY,this.onEviction=A.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(A){if(typeof this.onEviction=="function")for(const[t,i]of A)this.onEviction(t,i.value)}_deleteIfExpired(A,t){return typeof t.expiry=="number"&&t.expiry<=Date.now()?(typeof this.onEviction=="function"&&this.onEviction(A,t.value),this.delete(A)):!1}_getOrDeleteIfExpired(A,t){if(this._deleteIfExpired(A,t)===!1)return t.value}_getItemValue(A,t){return t.expiry?this._getOrDeleteIfExpired(A,t):t.value}_peek(A,t){const i=t.get(A);return this._getItemValue(A,i)}_set(A,t){this.cache.set(A,t),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(A,t){this.oldCache.delete(A),this._set(A,t)}*_entriesAscending(){for(const A of this.oldCache){const[t,i]=A;this.cache.has(t)||this._deleteIfExpired(t,i)===!1&&(yield A)}for(const A of this.cache){const[t,i]=A;this._deleteIfExpired(t,i)===!1&&(yield A)}}get(A){if(this.cache.has(A)){const t=this.cache.get(A);return this._getItemValue(A,t)}if(this.oldCache.has(A)){const t=this.oldCache.get(A);if(this._deleteIfExpired(A,t)===!1)return this._moveToRecent(A,t),t.value}}set(A,t,{maxAge:i=this.maxAge}={}){const n=typeof i=="number"&&i!==Number.POSITIVE_INFINITY?Date.now()+i:void 0;this.cache.has(A)?this.cache.set(A,{value:t,expiry:n}):this._set(A,{value:t,expiry:n})}has(A){return this.cache.has(A)?!this._deleteIfExpired(A,this.cache.get(A)):this.oldCache.has(A)?!this._deleteIfExpired(A,this.oldCache.get(A)):!1}peek(A){if(this.cache.has(A))return this._peek(A,this.cache);if(this.oldCache.has(A))return this._peek(A,this.oldCache)}delete(A){const t=this.cache.delete(A);return t&&this._size--,this.oldCache.delete(A)||t}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(A){if(!(A&&A>0))throw new TypeError("`maxSize` must be a number greater than 0");const t=[...this._entriesAscending()],i=t.length-A;i<0?(this.cache=new Map(t),this.oldCache=new Map,this._size=t.length):(i>0&&this._emitEvictions(t.slice(0,i)),this.oldCache=new Map(t.slice(i)),this.cache=new Map,this._size=0),this.maxSize=A}*keys(){for(const[A]of this)yield A}*values(){for(const[,A]of this)yield A}*[Symbol.iterator](){for(const A of this.cache){const[t,i]=A;this._deleteIfExpired(t,i)===!1&&(yield[t,i.value])}for(const A of this.oldCache){const[t,i]=A;this.cache.has(t)||this._deleteIfExpired(t,i)===!1&&(yield[t,i.value])}}*entriesDescending(){let A=[...this.cache];for(let t=A.length-1;t>=0;--t){const i=A[t],[n,r]=i;this._deleteIfExpired(n,r)===!1&&(yield[n,r.value])}A=[...this.oldCache];for(let t=A.length-1;t>=0;--t){const i=A[t],[n,r]=i;this.cache.has(n)||this._deleteIfExpired(n,r)===!1&&(yield[n,r.value])}}*entriesAscending(){for(const[A,t]of this._entriesAscending())yield[A,t.value]}get size(){if(!this._size)return this.oldCache.size;let A=0;for(const t of this.oldCache.keys())this.cache.has(t)||A++;return Math.min(this._size+A,this.maxSize)}entries(){return this.entriesAscending()}forEach(A,t=this){for(const[i,n]of this.entriesAscending())A.call(t,n,i,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}}async function wAA(e){return new Promise(A=>setTimeout(A,e))}function vAA(e,A){const t=Array.isArray(e)?e:Array.from(e),i=Array.isArray(A)?A:Array.from(A);return t.map((n,r)=>[n,i[r]])}class Qa extends Error{constructor(A){super(A),Error.captureStackTrace&&Error.captureStackTrace(this,Qa),this.name="AbortError"}}class SAA extends Error{constructor(A,t){super(t),this.errors=A,this.message=t,this.name="AggregateError"}}const DAA=SAA;class RAA{constructor(A,t,i=null){this.offset=A,this.length=t,this.data=i}get top(){return this.offset+this.length}}class xR{constructor(A,t,i){this.offset=A,this.length=t,this.blockIds=i}}class xAA extends iu{constructor(A,{blockSize:t=65536,cacheSize:i=100}={}){super(),this.source=A,this.blockSize=t,this.blockCache=new mAA({maxSize:i}),this.blockRequests=new Map,this.blockIdsToFetch=new Set,this.abortedBlockIds=new Set}get fileSize(){return this.source.fileSize}async fetch(A,t){const i=[],n=[],r=[];for(const{offset:c,length:C}of A){let B=c+C;const{fileSize:E}=this;E!==null&&(B=Math.min(B,E));const u=Math.floor(c/this.blockSize)*this.blockSize;for(let h=u;hthis.abortedBlockIds.has(c)||!this.blockCache.has(c));if(a.forEach(c=>this.blockIdsToFetch.add(c)),a.length>0&&t&&!t.aborted){this.fetchBlocks(null);for(const c of a){const C=this.blockRequests.get(c);if(!C)throw new Error(`Block ${c} is not in the block requests`);s.push(C)}await Promise.allSettled(s)}if(t&&t.aborted)throw new Qa("Request was aborted");const g=r.map(c=>this.blockCache.get(c)),I=g.filter(c=>!c);if(I.length)throw new DAA(I,"Request failed");const l=new Map(vAA(r,g));return this.readSliceData(A,l)}fetchBlocks(A){if(this.blockIdsToFetch.size>0){const t=this.groupBlocks(this.blockIdsToFetch),i=this.source.fetch(t,A);for(let n=0;n{try{const s=(await i)[n],a=o*this.blockSize,g=a-s.offset,I=Math.min(g+this.blockSize,s.data.byteLength),l=s.data.slice(g,I),c=new RAA(a,l.byteLength,l,o);this.blockCache.set(o,c),this.abortedBlockIds.delete(o)}catch(s){if(s.name==="AbortError")s.signal=A,this.blockCache.delete(o),this.abortedBlockIds.add(o);else throw s}finally{this.blockRequests.delete(o)}})())}this.blockIdsToFetch.clear()}}groupBlocks(A){const t=Array.from(A).sort((o,s)=>o-s);if(t.length===0)return[];let i=[],n=null;const r=[];for(const o of t)n===null||n+1===o?(i.push(o),n=o):(r.push(new xR(i[0]*this.blockSize,i.length*this.blockSize,i)),i=[o],n=o);return r.push(new xR(i[0]*this.blockSize,i.length*this.blockSize,i)),r}readSliceData(A,t){return A.map(i=>{let n=i.offset+i.length;this.fileSize!==null&&(n=Math.min(this.fileSize,n));const r=Math.floor(i.offset/this.blockSize),o=Math.floor(n/this.blockSize),s=new ArrayBuffer(i.length),a=new Uint8Array(s);for(let g=r;g<=o;++g){const I=t.get(g),l=I.offset-i.offset,c=I.top-n;let C=0,B=0,E;l<0?C=-l:l>0&&(B=l),c<0?E=I.length-C:E=n-I.offset-C;const u=new Uint8Array(I.data,C,E);a.set(u,B)}return s})}}class wy{get ok(){return this.status>=200&&this.status<=299}get status(){throw new Error("not implemented")}getHeader(A){throw new Error("not implemented")}async getData(){throw new Error("not implemented")}}class vy{constructor(A){this.url=A}async request({headers:A,credentials:t,signal:i}={}){throw new Error("request is not implemented")}}class FAA extends wy{constructor(A){super(),this.response=A}get status(){return this.response.status}getHeader(A){return this.response.headers.get(A)}async getData(){return this.response.arrayBuffer?await this.response.arrayBuffer():(await this.response.buffer()).buffer}}class NAA extends vy{constructor(A,t){super(A),this.credentials=t}async request({headers:A,credentials:t,signal:i}={}){const n=await fetch(this.url,{headers:A,credentials:t,signal:i});return new FAA(n)}}class LAA extends wy{constructor(A,t){super(),this.xhr=A,this.data=t}get status(){return this.xhr.status}getHeader(A){return this.xhr.getResponseHeader(A)}async getData(){return this.data}}class bAA extends vy{constructRequest(A,t){return new Promise((i,n)=>{const r=new XMLHttpRequest;r.open("GET",this.url),r.responseType="arraybuffer";for(const[o,s]of Object.entries(A))r.setRequestHeader(o,s);r.onload=()=>{const o=r.response;i(new LAA(r,o))},r.onerror=n,r.onabort=()=>n(new Qa("Request aborted")),r.send(),t&&(t.aborted&&r.abort(),t.addEventListener("abort",()=>r.abort()))})}async request({headers:A,signal:t}={}){return await this.constructRequest(A,t)}}class GAA extends wy{constructor(A,t){super(),this.response=A,this.dataPromise=t}get status(){return this.response.statusCode}getHeader(A){return this.response.headers[A]}async getData(){return await this.dataPromise}}class _AA extends vy{constructor(A){super(A),this.parsedUrl=ea.parse(this.url),this.httpApi=(this.parsedUrl.protocol==="http:",ea)}constructRequest(A,t){return new Promise((i,n)=>{const r=this.httpApi.get({...this.parsedUrl,headers:A},o=>{const s=new Promise(a=>{const g=[];o.on("data",I=>{g.push(I)}),o.on("end",()=>{const I=Buffer.concat(g).buffer;a(I)}),o.on("error",n)});i(new GAA(o,s))});r.on("error",n),t&&(t.aborted&&r.destroy(new Qa("Request aborted")),t.addEventListener("abort",()=>r.destroy(new Qa("Request aborted"))))})}async request({headers:A,signal:t}={}){return await this.constructRequest(A,t)}}class Sy extends iu{constructor(A,t,i,n){super(),this.client=A,this.headers=t,this.maxRanges=i,this.allowFullFile=n,this._fileSize=null}async fetch(A,t){return this.maxRanges>=A.length?this.fetchSlices(A,t):(this.maxRanges>0&&A.length>1,Promise.all(A.map(i=>this.fetchSlice(i,t))))}async fetchSlices(A,t){const i=await this.client.request({headers:{...this.headers,Range:`bytes=${A.map(({offset:n,length:r})=>`${n}-${n+r}`).join(",")}`},signal:t});if(i.ok)if(i.status===206){const{type:n,params:r}=pAA(i.getHeader("content-type"));if(n==="multipart/byteranges"){const l=yAA(await i.getData(),r.boundary);return this._fileSize=l[0].fileSize||null,l}const o=await i.getData(),{start:s,end:a,total:g}=Fd(i.getHeader("content-range"));this._fileSize=g||null;const I=[{data:o,offset:s,length:a-s}];if(A.length>1){const l=await Promise.all(A.slice(1).map(c=>this.fetchSlice(c,t)));return I.concat(l)}return I}else{if(!this.allowFullFile)throw new Error("Server responded with full file");const n=await i.getData();return this._fileSize=n.byteLength,[{data:n,offset:0,length:n.byteLength}]}else throw new Error("Error fetching data.")}async fetchSlice(A,t){const{offset:i,length:n}=A,r=await this.client.request({headers:{...this.headers,Range:`bytes=${i}-${i+n}`},signal:t});if(r.ok)if(r.status===206){const o=await r.getData(),{total:s}=Fd(r.getHeader("content-range"));return this._fileSize=s||null,{data:o,offset:i,length:n}}else{if(!this.allowFullFile)throw new Error("Server responded with full file");const o=await r.getData();return this._fileSize=o.byteLength,{data:o,offset:0,length:o.byteLength}}else throw new Error("Error fetching data.")}get fileSize(){return this._fileSize}}function Dy(e,{blockSize:A,cacheSize:t}){return A===null?e:new xAA(e,{blockSize:A,cacheSize:t})}function MAA(e,{headers:A={},credentials:t,maxRanges:i=0,allowFullFile:n=!1,...r}={}){const o=new NAA(e,t),s=new Sy(o,A,i,n);return Dy(s,r)}function kAA(e,{headers:A={},maxRanges:t=0,allowFullFile:i=!1,...n}={}){const r=new bAA(e),o=new Sy(r,A,t,i);return Dy(o,n)}function TAA(e,{headers:A={},maxRanges:t=0,allowFullFile:i=!1,...n}={}){const r=new _AA(e),o=new Sy(r,A,t,i);return Dy(o,n)}function UAA(e,{forceXHR:A=!1,...t}={}){return typeof fetch=="function"&&!A?MAA(e,t):typeof XMLHttpRequest<"u"?kAA(e,t):TAA(e,t)}class PAA extends iu{constructor(A){super(),this.file=A}async fetchSlice(A,t){return new Promise((i,n)=>{const r=this.file.slice(A.offset,A.offset+A.length),o=new FileReader;o.onload=s=>i(s.target.result),o.onerror=n,o.onabort=n,o.readAsArrayBuffer(r),t&&t.addEventListener("abort",()=>o.abort())})}}function HAA(e){return new PAA(e)}function qAA(e){return new Promise((A,t)=>{ea.close(e,i=>{i?t(i):A()})})}function JAA(e,A,t=void 0){return new Promise((i,n)=>{ea.open(e,A,t,(r,o)=>{r?n(r):i(o)})})}function OAA(...e){return new Promise((A,t)=>{ea.read(...e,(i,n,r)=>{i?t(i):A({bytesRead:n,buffer:r})})})}class YAA extends iu{constructor(A){super(),this.path=A,this.openRequest=JAA(A,"r")}async fetchSlice(A){const t=await this.openRequest,{buffer:i}=await OAA(t,Buffer.alloc(A.length),0,A.length,A.offset);return i.buffer}async close(){const A=await this.openRequest;await qAA(A)}}function KAA(e){return new YAA(e)}function VAA(e,A){let t=e.length-A,i=0;do{for(let n=A;n>0;n--)e[i+A]+=e[i],i++;t-=A}while(t>0)}function WAA(e,A,t){let i=0,n=e.length;const r=n/t;for(;n>A;){for(let s=A;s>0;--s)e[i+A]+=e[i],++i;n-=A}const o=e.slice();for(let s=0;s=e.byteLength);++a){let g;if(A===2){switch(n[0]){case 8:g=new Uint8Array(e,a*s*t*o,s*t*o);break;case 16:g=new Uint16Array(e,a*s*t*o,s*t*o/2);break;case 32:g=new Uint32Array(e,a*s*t*o,s*t*o/4);break;default:throw new Error(`Predictor 2 not allowed with ${n[0]} bits per sample.`)}VAA(g,s)}else A===3&&(g=new Uint8Array(e,a*s*t*o,s*t*o),WAA(g,s,o))}return e}class jAA{async decode(A,t){const i=await this.decodeBlock(t),n=A.Predictor||1;if(n!==1){const r=!A.StripOffsets,o=r?A.TileWidth:A.ImageWidth,s=r?A.TileLength:A.RowsPerStrip||A.ImageLength;return zAA(i,n,o,s,A.BitsPerSample,A.PlanarConfiguration)}return i}}function Nd(e){switch(e){case jA.BYTE:case jA.ASCII:case jA.SBYTE:case jA.UNDEFINED:return 1;case jA.SHORT:case jA.SSHORT:return 2;case jA.LONG:case jA.SLONG:case jA.FLOAT:case jA.IFD:return 4;case jA.RATIONAL:case jA.SRATIONAL:case jA.DOUBLE:case jA.LONG8:case jA.SLONG8:case jA.IFD8:return 8;default:throw new RangeError(`Invalid field type: ${e}`)}}function XAA(e){const A=e.GeoKeyDirectory;if(!A)return null;const t={};for(let i=4;i<=A[3]*4;i+=4){const n=z$[A[i]],r=A[i+1]?EI[A[i+1]]:null,o=A[i+2],s=A[i+3];let a=null;if(!r)a=s;else{if(a=e[r],typeof a>"u"||a===null)throw new Error(`Could not get value of geoKey '${n}'.`);typeof a=="string"?a=a.substring(s,s+o-1):a.subarray&&(a=a.subarray(s,s+o),o===1&&(a=a[0]))}t[n]=a}return t}function ds(e,A,t,i){let n=null,r=null;const o=Nd(A);switch(A){case jA.BYTE:case jA.ASCII:case jA.UNDEFINED:n=new Uint8Array(t),r=e.readUint8;break;case jA.SBYTE:n=new Int8Array(t),r=e.readInt8;break;case jA.SHORT:n=new Uint16Array(t),r=e.readUint16;break;case jA.SSHORT:n=new Int16Array(t),r=e.readInt16;break;case jA.LONG:case jA.IFD:n=new Uint32Array(t),r=e.readUint32;break;case jA.SLONG:n=new Int32Array(t),r=e.readInt32;break;case jA.LONG8:case jA.IFD8:n=new Array(t),r=e.readUint64;break;case jA.SLONG8:n=new Array(t),r=e.readInt64;break;case jA.RATIONAL:n=new Uint32Array(t*2),r=e.readUint32;break;case jA.SRATIONAL:n=new Int32Array(t*2),r=e.readInt32;break;case jA.FLOAT:n=new Float32Array(t),r=e.readFloat32;break;case jA.DOUBLE:n=new Float64Array(t),r=e.readFloat64;break;default:throw new RangeError(`Invalid field type: ${A}`)}if(A===jA.RATIONAL||A===jA.SRATIONAL)for(let s=0;sB.getWidth()-E.getWidth());for(let B=0;Bu||o&&o>h)break}}let c=t;if(s){const[C,B]=a.getOrigin(),[E,u]=g.getResolution(a);c=[Math.round((s[0]-C)/E),Math.round((s[1]-B)/u),Math.round((s[2]-C)/E),Math.round((s[3]-B)/u)],c=[Math.min(c[0],c[2]),Math.min(c[1],c[3]),Math.max(c[0],c[2]),Math.max(c[1],c[3])]}return g.readRasters({...A,window:c})}}class Ol extends $AA{constructor(A,t,i,n,r={}){super(),this.source=A,this.littleEndian=t,this.bigTiff=i,this.firstIFDOffset=n,this.cache=r.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(A,t){const i=this.bigTiff?4048:1024;return new QAA((await this.source.fetch([{offset:A,length:typeof t<"u"?t:i}]))[0],A,this.littleEndian,this.bigTiff)}async parseFileDirectoryAt(A){const t=this.bigTiff?20:12,i=this.bigTiff?8:2;let n=await this.getSlice(A);const r=this.bigTiff?n.readUint64(A):n.readUint16(A),o=r*t+(this.bigTiff?16:6);n.covers(A,o)||(n=await this.getSlice(A,o));const s={};let a=A+(this.bigTiff?8:2);for(let l=0;l{const t=await this.ifdRequests[A-1];if(t.nextIFDByteOffset===0)throw new Yc(A);return this.parseFileDirectoryAt(t.nextIFDByteOffset)})(),this.ifdRequests[A]}async getImage(A=0){const t=await this.requestIFD(A);return new MG(t.fileDirectory,t.geoKeyDirectory,this.dataView,this.littleEndian,this.cache,this.source)}async getImageCount(){let A=0,t=!0;for(;t;)try{await this.requestIFD(A),++A}catch(i){if(i instanceof Yc)t=!1;else throw i}return A}async getGhostValues(){const A=this.bigTiff?16:8;if(this.ghostValues)return this.ghostValues;const t="GDAL_STRUCTURAL_METADATA_SIZE=",i=t.length+100;let n=await this.getSlice(A,i);if(t===ds(n,jA.ASCII,t.length,A)){const o=ds(n,jA.ASCII,i,A).split(` +`)[0],s=Number(o.split("=")[1].split(" ")[0])+o.length;s>i&&(n=await this.getSlice(A,s));const a=ds(n,jA.ASCII,s,A);this.ghostValues={},a.split(` +`).filter(g=>g.length>0).map(g=>g.split("=")).forEach(([g,I])=>{this.ghostValues[g]=I})}return this.ghostValues}static async fromSource(A,t,i){const n=(await A.fetch([{offset:0,length:1024}],i))[0],r=new fAA(n),o=r.getUint16(0,0);let s;if(o===18761)s=!0;else if(o===19789)s=!1;else throw new TypeError("Invalid byte order value.");const a=r.getUint16(2,s);let g;if(a===42)g=!1;else if(a===43){if(g=!0,r.getUint16(4,s)!==8)throw new Error("Unsupported offset byte-size.")}else throw new TypeError("Invalid magic number.");const I=g?r.getUint64(8,s):r.getUint32(4,s);return new Ol(A,s,g,I,t)}close(){return typeof this.source.close=="function"?this.source.close():!1}}async function nu(e,A={},t){return Ol.fromSource(UAA(e,A),t)}async function TG(e,A){return Ol.fromSource(KAA(e),A)}async function ru(e,A){return Ol.fromSource(HAA(e),A)}const UG="__viv",AeA=`${UG}-offsets`;function eeA(e){teA(e)||console.warn("GeoTIFF source is missing offsets proxy.")}function teA(e){return e[UG]}function ieA(e,A){const t=(i,n)=>n==="getImage"?r=>{if(!(r in i.ifdRequests)&&r in A){const o=A[r];i.ifdRequests[r]=i.parseFileDirectoryAt(o)}return i.getImage(r)}:n===AeA?!0:Reflect.get(i,n);return new Proxy(e,{get:t})}let Ri,Kc=null;function FR(){return Kc!==null&&Kc.buffer===Ri.memory.buffer||(Kc=new Uint8Array(Ri.memory.buffer)),Kc}let NR=0,Vc=null;function LR(){return Vc!==null&&Vc.buffer===Ri.memory.buffer||(Vc=new Int32Array(Ri.memory.buffer)),Vc}async function Ry(e){e===void 0&&(e="".replace(/\.js$/,"_bg.wasm")),(typeof e=="string"||typeof Request=="function"&&e instanceof Request||typeof URL=="function"&&e instanceof URL)&&(e=fetch(e));const{instance:A,module:t}=await async function(i,n){if(typeof Response=="function"&&i instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(i,n)}catch(o){if(i.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 r=await i.arrayBuffer();return await WebAssembly.instantiate(r,n)}{const r=await WebAssembly.instantiate(i,n);return r instanceof WebAssembly.Instance?{instance:r,module:i}:r}}(await e,{});return Ri=A.exports,Ry.__wbindgen_wasm_module=t,Ri}var neA=Object.freeze({__proto__:null,decompress:function(e,A){try{const g=Ri.__wbindgen_add_to_stack_pointer(-16);var t=function(I,l){const c=l(1*I.length);return FR().set(I,c/1),NR=I.length,c}(e,Ri.__wbindgen_malloc),i=NR;Ri.decompress(g,t,i,A);var n=LR()[g/4+0],r=LR()[g/4+1],o=(s=n,a=r,FR().subarray(s/1,s/1+a)).slice();return Ri.__wbindgen_free(n,1*r),o}finally{Ri.__wbindgen_add_to_stack_pointer(16)}var s,a},default:Ry});const reA=[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 Wc(e){return reA[e-43]}const oeA=function(e){let A,t=e.endsWith("==")?2:e.endsWith("=")?1:0,i=e.length,n=new Uint8Array(i/4*3);for(let r=0,o=0;r>16,n[o+1]=A>>8&255,n[o+2]=255&A;return n.subarray(0,n.length-t)}("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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 af;async function seA(e,A){af||(af=await(async()=>(await Ry(oeA),neA))());const t=af.decompress(e,A);if(t.length===0)throw Error("Failed to decode with LZW decoder.");return t}class aeA extends jAA{constructor(t){super();to(this,"maxUncompressedSize");const i=t.TileWidth||t.ImageWidth,n=t.TileLength||t.ImageLength,r=t.BitsPerSample[0]/8;this.maxUncompressedSize=i*n*r}async decodeBlock(t){const i=new Uint8Array(t);return(await seA(i,this.maxUncompressedSize)).buffer}}function vg(e,A,t,i,n){PG(e,A,t||0,i||e.length-1,n||geA)}function PG(e,A,t,i,n){for(;i>t;){if(i-t>600){var r=i-t+1,o=A-t+1,s=Math.log(r),a=.5*Math.exp(2*s/3),g=.5*Math.sqrt(s*a*(r-a)/r)*(o-r/2<0?-1:1),I=Math.max(t,Math.floor(A-o*a/r+g)),l=Math.min(i,Math.floor(A+(r-o)*a/r+g));PG(e,A,I,l,n)}var c=e[A],C=t,B=i;for(Sg(e,t,A),n(e[i],c)>0&&Sg(e,t,i);C0;)B--}n(e[t],c)===0?Sg(e,t,B):(B++,Sg(e,B,i)),B<=A&&(t=B+1),A<=B&&(i=B-1)}}function Sg(e,A,t){var i=e[A];e[A]=e[t],e[t]=i}function geA(e,A){return eA?1:0}const Si={uint8:"Uint8",uint16:"Uint16",uint32:"Uint32",float:"Float32",double:"Float64",int8:"Int8",int16:"Int16",int32:"Int32"};function UC(e){let A=e.length,t=1/0,i=-1/0,n=0;for(;A--;)e[A]i&&(i=e[A]),n+=e[A];const r=n/e.length;A=e.length;let o=0;for(;A--;)o+=(e[A]-r)**2;const s=(o/e.length)**.5,a=Math.floor(e.length/2),g=Math.floor(e.length/4),I=3*Math.floor(e.length/4);vg(e,a);const l=e[a];vg(e,g,0,a);const c=e[g];vg(e,I,a,e.length-1);const C=e[I],B=e.filter(Q=>Q>0),E=5e-4,u=Math.floor(B.length*(1-E)),h=Math.floor(B.length*E);vg(B,u),vg(B,h,0,u);const f=[B[h]||0,B[u]||0];return{mean:r,sd:s,q1:c,q3:C,median:l,domain:[t,i],contrastLimits:f}}function bR(e){return Array.isArray(e)?e:[e]}function IeA(e){if(!Number.isInteger(e))throw Error("Not an integer.");const A=new ArrayBuffer(4);new DataView(A).setInt32(0,e,!1);const i=new Uint8Array(A);return Array.from(i)}function Pr(e){const A=e[e.length-1];return A===3||A===4}function qB(e){return e.toLowerCase().split("").reverse()}function HG(e){const A=new Map(e.map((t,i)=>[t,i]));if(A.size!==e.length)throw Error("Labels must be unique, found duplicated label.");return t=>{const i=A.get(t);if(i===void 0)throw Error("Invalid dimension.");return i}}function Xr(e){const A=Pr(e.shape),[t,i]=e.shape.slice(A?-3:-2);return{height:t,width:i}}function qG(e){return 2**Math.floor(Math.log2(e))}const xy="__vivSignalAborted";function JG(e){const A=e.getTileWidth(),t=e.getTileHeight(),i=Math.min(A,t);return qG(i)}function leA({Pixels:e}){const A=qB(e.DimensionOrder),t=HG(A),i=Array(A.length).fill(0);i[t("t")]=e.SizeT,i[t("c")]=e.SizeC,i[t("z")]=e.SizeZ,e.Interleaved&&(A.push("_c"),i.push(3));const n=o=>{const s=[...i];return s[t("x")]=e.SizeX>>o,s[t("y")]=e.SizeY>>o,s};if(!(e.Type in Si))throw Error(`Pixel type ${e.Type} not supported.`);const r=Si[e.Type];if(e.PhysicalSizeX&&e.PhysicalSizeY){const o={x:{size:e.PhysicalSizeX,unit:e.PhysicalSizeXUnit},y:{size:e.PhysicalSizeY,unit:e.PhysicalSizeYUnit}};return e.PhysicalSizeZ&&(o.z={size:e.PhysicalSizeZ,unit:e.PhysicalSizeZUnit}),{labels:A,getShape:n,physicalSizes:o,dtype:r}}return{labels:A,getShape:n,dtype:r}}function ceA(e){const t=e.fileDirectory.SampleFormat?e.fileDirectory.SampleFormat[0]:1,i=e.fileDirectory.BitsPerSample[0];switch(t){case 1:if(i<=8)return Si.uint8;if(i<=16)return Si.uint16;if(i<=32)return Si.uint32;break;case 2:if(i<=8)return Si.int8;if(i<=16)return Si.int16;if(i<=32)return Si.int32;break;case 3:switch(i){case 16:return Si.float;case 32:return Si.float;case 64:return Si.double}break}throw Error("Unsupported data format/bitsPerSample")}function OG(e){let[A,t,i]=[0,0,0];for(const r of e)A=Math.max(A,r.selection.c),t=Math.max(t,r.selection.z),i=Math.max(i,r.selection.t);const n=e[0].tiff;return{x:n.getWidth(),y:n.getHeight(),z:t+1,c:A+1,t:i+1}}function CeA(e,A){const t=Array(A).fill(0);for(const i of e){const n=i.selection.c,r=i.tiff.getSamplesPerPixel(),o=t[n];if(o&&o!=r)throw Error("Channel samples per pixel mismatch");t[n]=r}return t}function BeA(e,A){const t=A[0].tiff,i=OG(A),n=[];for(const s of e.toLowerCase())n.unshift(i[s]);const r=qB(e),o=ceA(t);return{shape:n,labels:r,dtype:o}}function EeA(e,A,t,i,n,r,o){const s=[];for(let a=0;a({"Acquisition Date":s,"Dimensions (XY)":`${g.x} x ${g.y}`,PixelsType:n,"Z-sections/Timepoints":`${g.z} x ${g.t}`,Channels:g.c})}}function GR(e){const A={},t=e.split("/").pop(),i=t==null?void 0:t.split(".");return i&&(A.name=i.slice(0,-1).join("."),[,A.extension]=i),A}var YG={},KG={},ln={};(function(e){const A=":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",t=A+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",i="["+A+"]["+t+"]*",n=new RegExp("^"+i+"$"),r=function(s,a){const g=[];let I=a.exec(s);for(;I;){const l=[];l.startIndex=a.lastIndex-I[0].length;const c=I.length;for(let C=0;C"u")};e.isExist=function(s){return typeof s<"u"},e.isEmptyObject=function(s){return Object.keys(s).length===0},e.merge=function(s,a,g){if(a){const I=Object.keys(a),l=I.length;for(let c=0;c1){i[o]=[];for(let s in e.child[o])e.child[o].hasOwnProperty(s)&&i[o].push(Ld(e.child[o][s],A,o))}else{const s=Ld(e.child[o][0],A,o),a=A.arrayMode===!0&&typeof s=="object"||oo.isTagNameInArrayMode(o,A.arrayMode,t);i[o]=a?[s]:s}}return i};KG.convertToJson=Ld;var Uo={},heA=function(e,A,t){this.tagname=e,this.parent=A,this.child={},this.attrsMap={},this.val=t,this.addChild=function(i){Array.isArray(this.child[i.tagname])?this.child[i.tagname].push(i):this.child[i.tagname]=[i]}};const feA=/^[-+]?0x[a-fA-F0-9]+$/,QeA=/^([\-\+])?(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 deA={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function peA(e,A={}){if(A=Object.assign({},deA,A),!e||typeof e!="string")return e;let t=e.trim();if(A.skipLike!==void 0&&A.skipLike.test(t))return e;if(A.hex&&feA.test(t))return Number.parseInt(t,16);{const i=QeA.exec(t);if(i){const n=i[1],r=i[2];let o=yeA(i[3]);const s=i[4]||i[6];if(!A.leadingZeros&&r.length>0&&n&&t[2]!==".")return e;if(!A.leadingZeros&&r.length>0&&!n&&t[1]!==".")return e;{const a=Number(t),g=""+a;return g.search(/[eE]/)!==-1||s?A.eNotation?a:e:t.indexOf(".")!==-1?g==="0"&&o===""||g===o||n&&g==="-"+o?a:e:r?o===g||n+o===g?a:e:t===g||t===n+g?a:e}}else return e}}function yeA(e){return e&&e.indexOf(".")!==-1&&(e=e.replace(/0+$/,""),e==="."?e="0":e[0]==="."?e="0"+e:e[e.length-1]==="."&&(e=e.substr(0,e.length-1))),e}var meA=peA;const Qo=ln,weA=ln.buildOptions,zc=heA,veA=meA;"<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)".replace(/NAME/g,Qo.nameRegexp);!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt);!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const VG={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(e,A){return e},attrValueProcessor:function(e,A){return e},stopNodes:[],alwaysCreateTextNode:!1};Uo.defaultOptions=VG;const WG=["attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","ignoreNameSpace","allowBooleanAttributes","parseNodeValue","parseAttributeValue","arrayMode","trimValues","cdataTagName","cdataPositionChar","tagValueProcessor","attrValueProcessor","parseTrueNumberOnly","numParseOptions","stopNodes","alwaysCreateTextNode"];Uo.props=WG;function jc(e,A,t){return A&&(t.trimValues&&(A=A.trim()),A=t.tagValueProcessor(A,e),A=zG(A,t.parseNodeValue,t.numParseOptions)),A}function SeA(e,A){if(A.ignoreNameSpace){const t=e.split(":"),i=e.charAt(0)==="/"?"/":"";if(t[0]==="xmlns")return"";t.length===2&&(e=i+t[1])}return e}function zG(e,A,t){if(A&&typeof e=="string"){const i=e.trim();return i==="true"?!0:i==="false"?!1:veA(e,t)}else return Qo.isExist(e)?e:""}const DeA=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])(.*?)\\3)?`,"g");function _R(e,A){if(!A.ignoreAttributes&&typeof e=="string"){e=e.replace(/\r?\n/g," ");const t=Qo.getAllMatches(e,DeA),i=t.length,n={};for(let r=0;r",r,"Closing Tag is not closed.");let a=e.substring(r+2,s).trim();if(A.ignoreNameSpace){const g=a.indexOf(":");g!==-1&&(a=a.substr(g+1))}i&&(i.val?i.val=Qo.getValue(i.val)+""+jc(a,n,A):i.val=jc(a,n,A)),A.stopNodes.length&&A.stopNodes.includes(i.tagname)&&(i.child=[],i.attrsMap==null&&(i.attrsMap={}),i.val=e.substr(i.startIndex+1,r-i.startIndex-1)),i=i.parent,n="",r=s}else if(e[r+1]==="?")r=Dg(e,"?>",r,"Pi Tag is not closed.");else if(e.substr(r+1,3)==="!--")r=Dg(e,"-->",r,"Comment is not closed.");else if(e.substr(r+1,2)==="!D"){const s=Dg(e,">",r,"DOCTYPE is not closed.");e.substring(r,s).indexOf("[")>=0?r=e.indexOf("]>",r)+1:r=s}else if(e.substr(r+1,2)==="!["){const s=Dg(e,"]]>",r,"CDATA is not closed.")-2,a=e.substring(r+9,s);if(n&&(i.val=Qo.getValue(i.val)+""+jc(i.tagname,n,A),n=""),A.cdataTagName){const g=new zc(A.cdataTagName,i,a);i.addChild(g),i.val=Qo.getValue(i.val)+A.cdataPositionChar,a&&(g.val=a)}else i.val=(i.val||"")+(a||"");r=s+2}else{const s=xeA(e,r+1);let a=s.data;const g=s.index,I=a.indexOf(" ");let l=a,c=!0;if(I!==-1&&(l=a.substr(0,I).replace(/\s\s*$/,""),a=a.substr(I+1)),A.ignoreNameSpace){const C=l.indexOf(":");C!==-1&&(l=l.substr(C+1),c=l!==s.data.substr(C+1))}if(i&&n&&i.tagname!=="!xml"&&(i.val=Qo.getValue(i.val)+""+jc(i.tagname,n,A)),a.length>0&&a.lastIndexOf("/")===a.length-1){l[l.length-1]==="/"?(l=l.substr(0,l.length-1),a=l):a=a.substr(0,a.length-1);const C=new zc(l,i,"");l!==a&&(C.attrsMap=_R(a,A)),i.addChild(C)}else{const C=new zc(l,i);A.stopNodes.length&&A.stopNodes.includes(C.tagname)&&(C.startIndex=g),l!==a&&c&&(C.attrsMap=_R(a,A)),i.addChild(C),i=C}n="",r=g}else n+=e[r];return t};function xeA(e,A){let t,i="";for(let n=A;n")return{data:i,index:n};r===" "&&(r=" ")}i+=r}}function Dg(e,A,t,i){const n=e.indexOf(A,t);if(n===-1)throw new Error(i);return n+A.length-1}Uo.getTraversalObj=ReA;var jG={};const ou=ln,FeA={allowBooleanAttributes:!1},NeA=["allowBooleanAttributes"];jG.validate=function(e,A){A=ou.buildOptions(A,FeA,NeA);const t=[];let i=!1,n=!1;e[0]==="\uFEFF"&&(e=e.substr(1));for(let r=0;r"&&e[r]!==" "&&e[r]!==" "&&e[r]!==` +`&&e[r]!=="\r";r++)a+=e[r];if(a=a.trim(),a[a.length-1]==="/"&&(a=a.substring(0,a.length-1),r--),!UeA(a)){let l;return a.trim().length===0?l="Invalid space after '<'.":l="Tag '"+a+"' is an invalid name.",nt("InvalidTag",l,Zt(e,r))}const g=GeA(e,r);if(g===!1)return nt("InvalidAttr","Attributes for '"+a+"' have open quote.",Zt(e,r));let I=g.value;if(r=g.index,I[I.length-1]==="/"){const l=r-I.length;I=I.substring(0,I.length-1);const c=TR(I,A);if(c===!0)i=!0;else return nt(c.err.code,c.err.msg,Zt(e,l+c.err.line))}else if(s)if(g.tagClosed){if(I.trim().length>0)return nt("InvalidTag","Closing tag '"+a+"' can't have attributes or invalid starting.",Zt(e,o));{const l=t.pop();if(a!==l.tagName){let c=Zt(e,l.tagStartPos);return nt("InvalidTag","Expected closing tag '"+l.tagName+"' (opened in line "+c.line+", col "+c.col+") instead of closing tag '"+a+"'.",Zt(e,o))}t.length==0&&(n=!0)}}else return nt("InvalidTag","Closing tag '"+a+"' doesn't have proper closing.",Zt(e,r));else{const l=TR(I,A);if(l!==!0)return nt(l.err.code,l.err.msg,Zt(e,r-I.length+l.err.line));if(n===!0)return nt("InvalidXml","Multiple possible root nodes found.",Zt(e,r));t.push({tagName:a,tagStartPos:o}),i=!0}for(r++;r0)return nt("InvalidXml","Invalid '"+JSON.stringify(t.map(r=>r.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1})}else return nt("InvalidXml","Start tag expected.",1);return!0};function MR(e,A){const t=A;for(;A5&&i==="xml")return nt("InvalidXml","XML declaration allowed only at the start of the document.",Zt(e,A));if(e[A]=="?"&&e[A+1]==">"){A++;break}else continue}return A}function kR(e,A){if(e.length>A+5&&e[A+1]==="-"&&e[A+2]==="-"){for(A+=3;A"){A+=2;break}}else if(e.length>A+8&&e[A+1]==="D"&&e[A+2]==="O"&&e[A+3]==="C"&&e[A+4]==="T"&&e[A+5]==="Y"&&e[A+6]==="P"&&e[A+7]==="E"){let t=1;for(A+=8;A"&&(t--,t===0))break}else if(e.length>A+9&&e[A+1]==="["&&e[A+2]==="C"&&e[A+3]==="D"&&e[A+4]==="A"&&e[A+5]==="T"&&e[A+6]==="A"&&e[A+7]==="["){for(A+=8;A"){A+=2;break}}return A}const LeA='"',beA="'";function GeA(e,A){let t="",i="",n=!1;for(;A"&&i===""){n=!0;break}t+=e[A]}return i!==""?!1:{value:t,index:A,tagClosed:n}}const _eA=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function TR(e,A){const t=ou.getAllMatches(e,_eA),i={};for(let n=0;n1){g+='"'+c+'" : [ ';for(let C in o.child[c])g+=n(o.child[c][C],s)+" , ";g=g.substr(0,g.length-1)+" ] "}else g+='"'+c+'" : '+n(o.child[c][0],s)+" ,"}return e.merge(g,o.attrsMap),e.isEmptyObject(g)?e.isExist(o.val)?o.val:"":(e.isExist(o.val)&&(typeof o.val=="string"&&(o.val===""||o.val===s.cdataPositionChar)||(g+='"'+s.textNodeName+'" : '+r(o.val))),g[g.length-1]===","&&(g=g.substr(0,g.length-2)),g+"}")};function r(o){return o===!0||o===!1||!isNaN(o)?o:'"'+o+'"'}return If.convertToJsonString=i,If}var lf,HR;function qeA(){if(HR)return lf;HR=1;const e=ln.buildOptions,A={attributeNamePrefix:"@_",attrNodeName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataTagName:!1,cdataPositionChar:"\\c",format:!1,indentBy:" ",supressEmptyNode:!1,tagValueProcessor:function(B){return B},attrValueProcessor:function(B){return B}},t=["attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","cdataTagName","cdataPositionChar","format","indentBy","supressEmptyNode","tagValueProcessor","attrValueProcessor","rootNodeName"];function i(B){this.options=e(B,A,t),this.options.ignoreAttributes||this.options.attrNodeName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=c),this.options.cdataTagName?this.isCDATA=C:this.isCDATA=function(){return!1},this.replaceCDATAstr=r,this.replaceCDATAarr=o,this.processTextOrObjNode=n,this.options.format?(this.indentate=l,this.tagEndChar=`> +`,this.newLine=` +`):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine=""),this.options.supressEmptyNode?(this.buildTextNode=I,this.buildObjNode=a):(this.buildTextNode=g,this.buildObjNode=s),this.buildTextValNode=g,this.buildObjectNode=s}i.prototype.parse=function(B){return Array.isArray(B)&&this.options.rootNodeName&&this.options.rootNodeName.length>1&&(B={[this.options.rootNodeName]:B}),this.j2x(B,0).val},i.prototype.j2x=function(B,E){let u="",h="";for(let f in B)if(!(typeof B[f]>"u"))if(B[f]===null)h+=this.indentate(E)+"<"+f+"/"+this.tagEndChar;else if(B[f]instanceof Date)h+=this.buildTextNode(B[f],f,"",E);else if(typeof B[f]!="object"){const Q=this.isAttribute(f);Q?u+=" "+Q+'="'+this.options.attrValueProcessor(""+B[f])+'"':this.isCDATA(f)?B[this.options.textNodeName]?h+=this.replaceCDATAstr(B[this.options.textNodeName],B[f]):h+=this.replaceCDATAstr("",B[f]):f===this.options.textNodeName?B[this.options.cdataTagName]||(h+=this.options.tagValueProcessor(""+B[f])):h+=this.buildTextNode(B[f],f,"",E)}else if(Array.isArray(B[f]))if(this.isCDATA(f))h+=this.indentate(E),B[this.options.textNodeName]?h+=this.replaceCDATAarr(B[this.options.textNodeName],B[f]):h+=this.replaceCDATAarr("",B[f]);else{const Q=B[f].length;for(let d=0;d"u"||(w===null?h+=this.indentate(E)+"<"+f+"/"+this.tagEndChar:typeof w=="object"?h+=this.processTextOrObjNode(w,f,E):h+=this.buildTextNode(w,f,"",E))}}else if(this.options.attrNodeName&&f===this.options.attrNodeName){const Q=Object.keys(B[f]),d=Q.length;for(let w=0;w");return B+this.newLine}function s(B,E,u,h){return u&&B.indexOf("<")===-1?this.indentate(h)+"<"+E+u+">"+B+""+this.options.tagValueProcessor(B)+"YG.parse(e,JeA);function XG(e){const A=OeA(e);if(!A.OME)throw Error("Failed to parse OME-XML metadata.");return bR(A.OME.Image).map(t=>{const i=bR(t.Pixels.Channel).map(s=>"Color"in s.attr?{...s.attr,Color:IeA(s.attr.Color)}:{...s.attr}),{AquisitionDate:n="",Description:r=""}=t,o={...t.attr,AquisitionDate:n,Description:r,Pixels:{...t.Pixels.attr,Channels:i}};return{...o,format(){const{Pixels:s}=o,a=["X","Y","Z"].map(g=>{const I=s[`PhysicalSize${g}`],l=s[`PhysicalSize${g}Unit`];return I&&l?`${I} ${l}`:"-"}).join(" x ");return{"Acquisition Date":o.AquisitionDate,"Dimensions (XY)":`${s.SizeX} x ${s.SizeY}`,"Pixels Type":s.Type,"Pixels Size (XYZ)":a,"Z-sections/Timepoints":`${s.SizeZ} x ${s.SizeT}`,Channels:s.SizeC}}}})}class ZG{constructor(A,t,i,n,r,o,s){to(this,"_indexer");this.dtype=t,this.tileSize=i,this.shape=n,this.labels=r,this.meta=o,this.pool=s,this._indexer=A}async getRaster({selection:A,signal:t}){const i=await this._indexer(A);return this._readRasters(i,{signal:t})}async getTile({x:A,y:t,selection:i,signal:n}){const{height:r,width:o}=this._getTileExtent(A,t),s=A*this.tileSize,a=t*this.tileSize,g=[s,a,s+o,a+r],I=await this._indexer(i);return this._readRasters(I,{window:g,width:o,height:r,signal:n})}async _readRasters(A,t){var o;const i=Pr(this.shape),n=await A.readRasters({interleave:i,...t,pool:this.pool});if((o=t==null?void 0:t.signal)!=null&&o.aborted)throw xy;return{data:i?n:n[0],width:n.width,height:n.height}}_getTileExtent(A,t){const{height:i,width:n}=Xr(this);let r=this.tileSize,o=this.tileSize;const s=Math.floor(n/this.tileSize),a=Math.floor(i/this.tileSize);return A===s&&(o=n%this.tileSize),t===a&&(r=i%this.tileSize),{height:r,width:o}}onTileError(A){console.error(A)}}function YeA(e,A){const{SizeT:t,SizeC:i,SizeZ:n}=A[0].Pixels,r=$G(A,0);return(o,s)=>{const a=r(o),g=s*n*t*i;return e.getImage(a+g)}}function KeA(e,A,t=0){const i=$G(A,t),n=new Map;return async(r,o)=>{const s=i(r),a=await e.getImage(s);if(o===0)return a;const{SubIFDs:g}=a.fileDirectory;if(!g)throw Error("Indexing Error: OME-TIFF is missing SubIFDs.");const I=`${r.t}-${r.c}-${r.z}-${o}`;if(!n.has(I)){const c=g[o-1];n.set(I,e.parseFileDirectoryAt(c))}const l=await n.get(I);return new MG(l.fileDirectory,l.geoKeyDirectory,a.dataView,e.littleEndian,e.cache,e.source)}}function $G(e,A=0){const{SizeC:t,SizeZ:i,SizeT:n,DimensionOrder:r}=e[A].Pixels;let o=0;if(A>0)for(let s=0;so+s*i*t+a*i+g;case"XYZTC":return({t:s,c:a,z:g})=>o+a*i*n+s*i+g;case"XYCTZ":return({t:s,c:a,z:g})=>o+g*t*n+s*t+a;case"XYCZT":return({t:s,c:a,z:g})=>o+s*t*i+g*t+a;case"XYTCZ":return({t:s,c:a,z:g})=>o+g*n*t+a*n+s;case"XYTZC":return({t:s,c:a,z:g})=>o+a*n*i+g*n+s;default:throw new Error(`Invalid OME-XML DimensionOrder, got ${r}.`)}}function VeA(e){function A({c:i=0,t:n=0,z:r=0}){return`${i}-${n}-${r}`}const t=new Map(e.map(({selection:i,tiff:n})=>[A(i),n]));return async i=>{const n=A(i),r=t.get(n);if(!r)throw new Error(`No image available for selection ${n}`);return r}}function WeA(e,A,t,i){return t?KeA(e,A,i):YeA(e,A)}async function zeA(e,A){const t=await e.getImage(0),{ImageDescription:i,SubIFDs:n,PhotometricInterpretation:r}=t.fileDirectory,o=XG(i);let s=o,a;n?a=n.length+1:(a=o.length,s=[o[0]]);const g=(I,l,c)=>{const{labels:C,getShape:B,physicalSizes:E,dtype:u}=leA(c),h=JG(t),f={photometricInterpretation:r,physicalSizes:E},Q=B(I),d=m=>l(m,I);return new ZG(d,u,h,Q,C,f,A)};return s.map((I,l)=>{const c=WeA(e,o,n,l);return{data:Array.from({length:a}).map((B,E)=>g(E,c,I)),metadata:I}})}function jeA(e){const A=e[0].tiff.getWidth(),t=e[0].tiff.getHeight();for(const i of e)if(i.tiff.getWidth()!==A||i.tiff.getHeight()!==t)throw new Error("All images must have the same width and height")}async function XeA(e,A){for(let t=0;t<=Math.max(...e.map(i=>i.selection.t));t+=1)for(let i=0;i<=Math.max(...e.map(n=>n.selection.c));i+=1)for(let n=0;n<=Math.max(...e.map(r=>r.selection.z));n+=1)await A({t,c:i,z:n})}async function ZeA(e,A,t,i){jeA(A);const n=A[0].tiff,{PhotometricInterpretation:r}=n.fileDirectory,o="XYZCT",s=JG(n),a={photometricInterpretation:r},g=VeA(A),{shape:I,labels:l,dtype:c}=BeA(o,A),C=ueA(e,A,t,o,c);return await XeA(A,g),{data:[new ZG(g,c,s,I,l,a,i)],metadata:C}}Yn(5,()=>aeA);const JB="file://";async function qR(e,A={}){const{headers:t={},offsets:i,pool:n,images:r="first"}=A;let o;typeof e=="string"?e.startsWith(JB)?o=await TG(e.slice(JB.length)):o=await nu(e,{headers:t,cacheSize:1/0}):o=await ru(e),i&&(o=ieA(o,i)),eeA(o);const s=await zeA(o,n);return r==="all"?s:s[0]}function JR(e,A,t){return t.length===1?e:e+`_${A.toString()}`}async function $eA(e,A={}){var s;const{pool:t,headers:i={},name:n="MultiTiff"}=A,r=[],o=[];for(const a of e){const[g,I]=a,l=Array.isArray(g)?g:[g];if(typeof I=="string"){const c=GR(I),C=(s=c.extension)==null?void 0:s.toLowerCase();if(C==="tif"||C==="tiff"){const B=c.name;if(B){let E;I.startsWith(JB)?E=await TG(I.slice(JB.length)):E=await nu(I,{headers:i,cacheSize:1/0});for(let u=0;u0)return ZeA(n,r,A.channelNames||o,t);throw new Error("Unable to load image from provided TiffFolder source.")}const bd=new Map;function Fy(e,A){bd.set(e,A)}async function AtA(e){if(!bd.has(e.id))throw new Error(`Compression codec ${e.id} is not supported by Zarr.js yet.`);return(await bd.get(e.id)()).fromConfig(e)}function Ny(e){return new Proxy(e,{set(A,t,i,n){return A.setItem(t,i)},get(A,t,i){return A.getItem(t)},deleteProperty(A,t){return A.deleteItem(t)},has(A,t){return A.containsItem(t)}})}function etA(e){return typeof e=="object"&&e!==null&&"__zarr__"in e}function cf(e){return etA(e)&&e.__zarr__==="KeyError"}class Sr extends Error{constructor(A){super(`path ${A} contains an array`),this.__zarr__="ContainsArrayError",Object.setPrototypeOf(this,Sr.prototype)}}class Ha extends Error{constructor(A){super(`path ${A} contains a group`),this.__zarr__="ContainsGroupError",Object.setPrototypeOf(this,Ha.prototype)}}class su extends Error{constructor(A){super(`group not found at path ${A}`),this.__zarr__="GroupNotFoundError",Object.setPrototypeOf(this,su.prototype)}}class bt extends Error{constructor(A){super(A),this.__zarr__="PermissionError",Object.setPrototypeOf(this,bt.prototype)}}class qa extends Error{constructor(A){super(`key ${A} not present`),this.__zarr__="KeyError",Object.setPrototypeOf(this,qa.prototype)}}class Ly extends RangeError{constructor(A,t){super(`too many indices for array; expected ${t.length}, got ${A.length}`),this.__zarr__="TooManyIndicesError",Object.setPrototypeOf(this,Ly.prototype)}}let Gd=class A_ extends RangeError{constructor(A){super(A),this.__zarr__="BoundsCheckError",Object.setPrototypeOf(this,A_.prototype)}};class OB extends RangeError{constructor(A,t,i,n){super(`slice arguments slice(${A}, ${t}, ${i}) invalid: ${n}`),this.__zarr__="InvalidSliceError",Object.setPrototypeOf(this,OB.prototype)}}class by extends Error{constructor(){super("Negative step size is not supported when indexing."),this.__zarr__="NegativeStepError",Object.setPrototypeOf(this,by.prototype)}}class ni extends Error{constructor(A){super(A),this.__zarr__="ValueError",Object.setPrototypeOf(this,ni.prototype)}}class Gy extends Error{constructor(A){super(A),this.__zarr__="HTTPError",Object.setPrototypeOf(this,Gy.prototype)}}function Po(e,A=void 0,t=null){if(e===void 0)throw new OB(e,A,t,"The first argument must not be undefined");if(typeof e=="string"&&e!==":"||typeof A=="string"&&A!==":")throw new OB(e,A,t,'Arguments can only be integers, ":" or null');return A===void 0&&(A=e,e=null),{start:e===":"?null:e,stop:A===":"?null:A,step:t,_slice:!0}}function ttA(e,A,t,i){if(e<0?(e+=i,e<0&&(e=t<0?-1:0)):e>=i&&(e=t<0?i-1:i),A<0?(A+=i,A<0&&(A=t<0?-1:0)):A>=i&&(A=t<0?i-1:i),t<0){if(AA.length)throw new Ly(e,A)}function Ho(e,A){const t=[],i=[];for(let n=0;n1)throw new RangeError("an index can only have a single ellipsis ('...')");if(i===1){const n=t,r=e.length-(n+1),o=e.length-1;if(o>=A.length)e=e.filter(s=>s!=="...");else{const s=A.length-o;let a=e.slice(0,n).concat(new Array(s).fill(null));r>0&&(a=a.concat(e.slice(e.length-r))),e=a}}if(e.length=A||e<0)throw new Gd(`index out of bounds for dimension with length ${A}`);return e}function rtA(e){return typeof e=="number"}function i_(e){if(!Array.isArray(e))return!1;for(const A of e)if(typeof A!="number")return!1;return!0}function My(e){return e!==null&&e._slice===!0}function otA(e){return My(e)&&(e.step===null||e.step===1)}function stA(e){e=t_(e);for(let A=0;Ai()),t=A.map(i=>i.next());for(let i=0;;){if(t[i].done){if(A[i]=e[i](),t[i]=A[i].next(),++i>=A.length)return}else yield t.map(({value:n})=>n),i=0;t[i]=A[i].next()}}class OR{constructor(A,t){A=Hr(A,t.shape),this.dimIndexers=[];const i=t.shape;for(let n=0;n()=>i.iter()),t=atA(...A);for(const i of t){const n=[],r=[],o=[];for(const s of i)n.push(s.dimChunkIndex),r.push(s.dimChunkSelection),s.dimOutSelection!==null&&o.push(s.dimOutSelection);yield{chunkCoords:n,chunkSelection:r,outSelection:o}}}}class gtA{constructor(A,t,i){A=_y(A,t),this.dimSelection=A,this.dimLength=t,this.dimChunkLength=i,this.numItems=1}*iter(){const A=Math.floor(this.dimSelection/this.dimChunkLength),t=A*this.dimChunkLength,i=this.dimSelection-t;yield{dimChunkIndex:A,dimChunkSelection:i,dimOutSelection:null}}}class YR{constructor(A,t,i){const[n,r,o]=e_(A,t);if(this.start=n,this.stop=r,this.step=o,this.step<1)throw new by;this.dimLength=t,this.dimChunkLength=i,this.numItems=Math.max(0,Math.ceil((this.stop-this.start)/this.step)),this.numChunks=Math.ceil(this.dimLength/this.dimChunkLength)}*iter(){const A=Math.floor(this.start/this.dimChunkLength),t=Math.ceil(this.stop/this.dimChunkLength);for(let i=A;i0&&(s+=this.step-C),g=Math.ceil((n-this.start)/this.step)}else s=this.start-n,g=0;this.stop>r?a=o:a=this.stop-n;const I=Po(s,a,this.step),l=Math.ceil((a-s)/this.step),c=Po(g,g+l);yield{dimChunkIndex:i,dimChunkSelection:I,dimOutSelection:c}}}}const Ja=typeof process<"u"&&process.versions&&process.versions.node;function KR(){}function Gi(e){if(e===null)return"";for(e instanceof String&&(e=e.valueOf()),e=e.replace(/\\/g,"/");e.length>0&&e[0]==="/";)e=e.slice(1);for(;e.length>0&&e[e.length-1]==="/";)e=e.slice(0,e.length-1);e=e.replace(/\/\/+/g,"/");const A=e.split("/");for(const t of A)if(t==="."||t==="..")throw Error("path containing '.' or '..' segment not allowed");return e}function ky(e){return typeof e=="number"&&(e=[e]),e.map(A=>Math.floor(A))}function ItA(e,A){if(e===null||e===!0)throw new Error("Chunk guessing is not supported yet");return e===!1?A:(typeof e=="number"&&(e=[e]),e.lengtht===-1||t===null?A[i]:Math.floor(t)))}function ltA(e){return e=e.toUpperCase(),e}function VR(e,A){if(e===null)return!0;Array.isArray(e)||(e=[e]);for(let t=0;t=0;n--)t[n]=i,i*=e[n];return t}function Cf(e,A){const t=typeof e=="string"?new URL(e):e;t.pathname.endsWith("/")||(t.pathname+="/");const i=new URL(A,t);return i.search=t.search,i.href}function n_(e){const A=e.BYTES_PER_ELEMENT;if(A===1)return;if(Ja){const o=Buffer.from(e.buffer,e.byteOffset,e.length*A);A===2&&o.swap16(),A===4&&o.swap32(),A===8&&o.swap64();return}const t=new Uint8Array(e.buffer,e.byteOffset,e.length*A),i=A/2,n=A-1;let r;for(let o=0;os*a),r=t.map((s,a)=>a+1===i?1:t.slice(a+1).reduce((g,I)=>g*I,1)),o=Array(i).fill(0);for(let s=0;s0?e+"/":""}async function o_(e,A,t,i){if(A.length===0)return;const n=A.split("/");let r="";for(const o of n.slice(0,n.length-1))r+=o,await Gn(e,r)?await _d(e,r,i):await gn(e,r)||await _d(e,r),r+="/"}async function _d(e,A=null,t=!1){if(A=Gi(A),t)throw Error("Group overwriting not implemented yet :(");if(await Gn(e,A))throw new Sr(A);if(await gn(e,A))throw new Ha(A);const i={zarr_format:2},n=qr(A)+Uy;await e.setItem(n,JSON.stringify(i))}async function uI(e,A=null,t=null,i=!1){A=Gi(A),await o_(e,A,t,i),await _d(e,A,i)}async function ptA(e,A,t,i,n,r,o,s,a,g,I,l){if(a)throw Error("Array overwriting not implemented yet :(");if(await Gn(e,n))throw new Sr(n);if(await gn(e,n))throw new Ha(n);if(i=i,A=ky(A),t=ItA(t,A),s=ltA(s),o=o,I!==null&&I.length>0)throw Error("Filters are not supported yet");let c=o;typeof o=="number"&&(Number.isNaN(o)&&(c="NaN"),Number.POSITIVE_INFINITY===o&&(c="Infinity"),Number.NEGATIVE_INFINITY===o&&(c="-Infinity")),I=null;const C={zarr_format:2,shape:A,chunks:t,dtype:i,fill_value:c,order:s,compressor:r,filters:I};l&&(C.dimension_separator=l);const B=qr(n)+YB;await e.setItem(B,JSON.stringify(C))}async function ytA(e,A,t,i,n=null,r=null,o=null,s="C",a=!1,g=null,I=null,l){n=Gi(n),await o_(e,n,g,a),await ptA(e,A,t,i,n,r,o,s,a,g,I,l)}function KB(e){if(typeof e!="string"){if(Ja&&Buffer.isBuffer(e))return JSON.parse(e.toString());if(Ty(e)){const A=new TextDecoder,t=new Uint8Array(e);return JSON.parse(A.decode(t))}else return e}return JSON.parse(e)}class s_{constructor(A,t,i,n=!0){this.store=A,this.key=t,this.readOnly=i,this.cache=n,this.cachedValue=null}async asObject(){if(this.cache&&this.cachedValue!==null)return this.cachedValue;const A=await this.getNoSync();return this.cache&&(this.cachedValue=A),A}async getNoSync(){try{const A=await this.store.getItem(this.key);return KB(A)}catch{return{}}}async setNoSync(A,t){const i=await this.getNoSync();return i[A]=t,await this.putNoSync(i),!0}async putNoSync(A){await this.store.setItem(this.key,JSON.stringify(A)),this.cache&&(this.cachedValue=A)}async delNoSync(A){const t=await this.getNoSync();return delete t[A],await this.putNoSync(t),!0}async put(A){if(this.readOnly)throw new bt("attributes are read-only");return this.putNoSync(A)}async setItem(A,t){if(this.readOnly)throw new bt("attributes are read-only");return this.setNoSync(A,t)}async getItem(A){return(await this.asObject())[A]}async deleteItem(A){if(this.readOnly)throw new bt("attributes are read-only");return this.delNoSync(A)}async containsItem(A){return(await this.asObject())[A]!==void 0}proxy(){return Ny(this)}}const WR=globalThis.Float16Array,mtA={"|b":Int8Array,"|b1":Uint8Array,"|B":Uint8Array,"|u1":Uint8Array,"|i1":Int8Array,"b":Int8Array,">B":Uint8Array,">u1":Uint8Array,">i1":Int8Array,">u2":Uint16Array,">i2":Int16Array,">u4":Uint32Array,">i4":Int32Array,">f4":Float32Array,">f2":WR,">f8":Float64Array};function rn(e){const A=mtA[e];if(!A)throw e.slice(1)==="f2"?Error(`'${e}' is not supported natively in zarr.js. In order to access this dataset you must make Float16Array available as a global. See https://github.com/gzuidhof/zarr.js/issues/127`):Error(`Dtype not recognized or not supported in zarr.js, got ${e}.`);return A}function a_(e){if(e instanceof Uint8Array)return"|u1";if(e instanceof Int8Array)return"|i1";if(e instanceof Uint16Array)return"0&&typeof a[0]=="number"&&(a=e[0].constructor.from(a)),a}function vtA(e,A,t,i){const n=Hr(i,t,!0),[r,o]=Ho(n,t);Hy(e,A,t,r)}function StA(e,A,t,i,n){const r=Hr(n,t,!1),[o,s]=Ho(r,t);if(JSON.stringify(s)!==JSON.stringify(i))throw new ni(`Shape mismatch in target and source NestedArray: ${s} and ${i}`);kd(e,A,t,o)}function kd(e,A,t,i){const n=i[0];if(typeof A=="number"){Hy(e,A,t,i.map(g=>typeof g=="number"?[g,g+1,1,1]:g));return}if(typeof n=="number"){kd(e[n],A,t.slice(1),i.slice(1));return}const[r,o,s,a]=n;if(t.length===1){if(s===1)e.set(A,r);else for(let g=0;gr*o,1),n=new t(i);return g_(e,A,n,0),n}function g_(e,A,t,i){if(A.length===1){t.set(e,i);return}if(A.length===2){for(let o=0;oo*s,1);for(let o=0;oa*g,1);A===null&&(A=new ArrayBuffer(r*parseInt(i[i.length-1],10)));const o=A.byteLength/parseInt(i[i.length-1],10);if(r!==o)throw new Error(`Buffer has ${o} of dtype ${i}, shape is too large or small ${t} (flat=${r})`);const s=rn(i);this.data=I_(A,s,t)}else this.data=A}get(A){const[t,i]=wtA(this.data,this.shape,A);return i.length===0?t:new Rn(t,i,this.dtype)}set(A=null,t){A===null&&(A=[Po(null)]),typeof t=="number"?this.shape.length===0?this.data[0]=t:vtA(this.data,t,this.shape,A):StA(this.data,t.data,this.shape,t.shape,A)}flatten(){return this.shape.length===1?this.data:DtA(this.data,this.shape,rn(this.dtype))}static arange(A,t="n*r,1),i=new A(t);return i.set([...Array(t).keys()]),i}function I_(e,A,t,i=0){if(t.length===1)return new A(e.slice(i,i+t[0]*A.BYTES_PER_ELEMENT));const n=new Array(t[0]);if(t.length===2){for(let s=0;ss*a,1);for(let s=0;sg*I,1);A===null&&(A=new ArrayBuffer(o*parseInt(i[i.length-1],10)));const s=A.byteLength/parseInt(i[i.length-1],10);if(o!==s)throw new Error(`Buffer has ${s} of dtype ${i}, shape is too large or small ${t} (flat=${o})`);const a=rn(i);this.data=new a(A)}else this.data=A}set(A=null,t,i){A===null&&(A=[Po(null)]),typeof t=="number"?this.shape.length===0?this.data[0]=t:xtA(this.data,this.strides,this.shape,A,t):t instanceof co&&i?NtA(this.data,this.strides,this.shape,A,t.data,t.strides,t.shape,i):FtA(this.data,this.strides,this.shape,A,t.data,t.strides,t.shape)}}var c_={exports:{}};(function(e){var A=Object.prototype.hasOwnProperty,t="~";function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(t=!1));function n(a,g,I){this.fn=a,this.context=g,this.once=I||!1}function r(a,g,I,l,c){if(typeof I!="function")throw new TypeError("The listener must be a function");var C=new n(I,l||a,c),B=t?t+g:g;return a._events[B]?a._events[B].fn?a._events[B]=[a._events[B],C]:a._events[B].push(C):(a._events[B]=C,a._eventsCount++),a}function o(a,g){--a._eventsCount===0?a._events=new i:delete a._events[g]}function s(){this._events=new i,this._eventsCount=0}s.prototype.eventNames=function(){var g=[],I,l;if(this._eventsCount===0)return g;for(l in I=this._events)A.call(I,l)&&g.push(t?l.slice(1):l);return Object.getOwnPropertySymbols?g.concat(Object.getOwnPropertySymbols(I)):g},s.prototype.listeners=function(g){var I=t?t+g:g,l=this._events[I];if(!l)return[];if(l.fn)return[l.fn];for(var c=0,C=l.length,B=new Array(C);c{if(typeof A!="number"||A<0)throw new TypeError("Expected `milliseconds` to be a positive number");if(A===Number.POSITIVE_INFINITY){o(e);return}i={customTimers:{setTimeout,clearTimeout},...i},n=i.customTimers.setTimeout.call(void 0,()=>{if(typeof t=="function"){try{o(t())}catch(I){s(I)}return}const a=typeof t=="string"?t:`Promise timed out after ${A} milliseconds`,g=t instanceof Error?t:new C_(a);typeof e.cancel=="function"&&e.cancel(),s(g)},A),(async()=>{try{o(await e)}catch(a){s(a)}finally{i.customTimers.clearTimeout.call(void 0,n)}})()});return r.clear=()=>{clearTimeout(n),n=void 0},r}function GtA(e,A,t){let i=0,n=e.length;for(;n>0;){const r=Math.trunc(n/2);let o=i+r;t(e[o],A)<=0?(i=++o,n-=r+1):n=r}return i}class _tA{constructor(){Object.defineProperty(this,"_queue",{enumerable:!0,configurable:!0,writable:!0,value:[]})}enqueue(A,t){var i;t={priority:0,...t};const n={priority:t.priority,run:A};if(this.size&&((i=this._queue[this.size-1])===null||i===void 0?void 0:i.priority)>=t.priority){this._queue.push(n);return}const r=GtA(this._queue,n,(o,s)=>s.priority-o.priority);this._queue.splice(r,0,n)}dequeue(){const A=this._queue.shift();return A==null?void 0:A.run}filter(A){return this._queue.filter(t=>t.priority===A.priority).map(t=>t.run)}get size(){return this._queue.length}}const Zc=()=>{},MtA=new C_;class zR extends LtA{constructor(A){var t,i,n,r;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:Zc}),Object.defineProperty(this,"_resolveIdle",{enumerable:!0,configurable:!0,writable:!0,value:Zc}),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}),A={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:_tA,...A},!(typeof A.intervalCap=="number"&&A.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${(i=(t=A.intervalCap)===null||t===void 0?void 0:t.toString())!==null&&i!==void 0?i:""}\` (${typeof A.intervalCap})`);if(A.interval===void 0||!(Number.isFinite(A.interval)&&A.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${(r=(n=A.interval)===null||n===void 0?void 0:n.toString())!==null&&r!==void 0?r:""}\` (${typeof A.interval})`);this._carryoverConcurrencyCount=A.carryoverConcurrencyCount,this._isIntervalIgnored=A.intervalCap===Number.POSITIVE_INFINITY||A.interval===0,this._intervalCap=A.intervalCap,this._interval=A.interval,this._queue=new A.queueClass,this._queueClass=A.queueClass,this.concurrency=A.concurrency,this._timeout=A.timeout,this._throwOnTimeout=A.throwOnTimeout===!0,this._isPaused=A.autoStart===!1}get _doesIntervalAllowAnother(){return this._isIntervalIgnored||this._intervalCount{this._onResumeInterval()},t)),!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 A=!this._isIntervalPaused();if(this._doesIntervalAllowAnother&&this._doesConcurrentAllowAnother){const t=this._queue.dequeue();return t?(this.emit("active"),t(),A&&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(A){if(!(typeof A=="number"&&A>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${A}\` (${typeof A})`);this._concurrency=A,this._processQueue()}async add(A,t={}){return new Promise((i,n)=>{const r=async()=>{this._pendingCount++,this._intervalCount++;try{const s=await(this._timeout===void 0&&t.timeout===void 0?A():btA(Promise.resolve(A()),t.timeout===void 0?this._timeout:t.timeout,()=>{(t.throwOnTimeout===void 0?this._throwOnTimeout:t.throwOnTimeout)&&n(MtA)}));i(s),this.emit("completed",s)}catch(o){n(o),this.emit("error",o)}this._next()};this._queue.enqueue(r,t),this._tryToStartAnother(),this.emit("add")})}async addAll(A,t){return Promise.all(A.map(async i=>this.add(i,t)))}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(A=>{const t=this._resolveEmpty;this._resolveEmpty=()=>{t(),A()}})}async onSizeLessThan(A){if(!(this._queue.size{const i=()=>{this._queue.size{const t=this._resolveIdle;this._resolveIdle=()=>{t(),A()}})}get size(){return this._queue.size}sizeBy(A){return this._queue.filter(A).length}get pending(){return this._pendingCount}get isPaused(){return this._isPaused}get timeout(){return this._timeout}set timeout(A){this._timeout=A}}class au{constructor(A,t=null,i,n=!1,r=null,o=!0,s=!0){this.store=A,this._chunkStore=r,this.path=Gi(t),this.keyPrefix=qr(this.path),this.readOnly=n,this.cacheMetadata=o,this.cacheAttrs=s,this.meta=i,this.meta.compressor!==null?this.compressor=AtA(this.meta.compressor):this.compressor=null;const a=this.keyPrefix+r_;this.attrs=new s_(this.store,a,this.readOnly,s)}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 A=this.name;if(A===null)return null;const t=A.split("/");return t[t.length-1]}get shape(){return this.meta.shape}get chunks(){return this.meta.chunks}get chunkSize(){return this.chunks.reduce((A,t)=>A*t,1)}get dtype(){return this.meta.dtype}get fillValue(){const A=this.meta.fill_value;return A==="NaN"?NaN:A==="Infinity"?1/0:A==="-Infinity"?-1/0:this.meta.fill_value}get nDims(){return this.meta.shape.length}get size(){return this.meta.shape.reduce((A,t)=>A*t,1)}get length(){return this.shape[0]}get _chunkDataShape(){if(this.shape.length===0)return[1];{const A=[];for(let t=0;tA*t,1)}static async create(A,t=null,i=!1,n=null,r=!0,o=!0){const s=await this.loadMetadataForConstructor(A,t);return new au(A,t,s,i,n,r,o)}static async loadMetadataForConstructor(A,t){try{t=Gi(t);const i=qr(t),n=await A.getItem(i+YB);return KB(n)}catch(i){throw await gn(A,t)?new Ha(t??""):new Error("Failed to load metadata for ZarrArray:"+i.toString())}}async reloadMetadata(){const A=this.keyPrefix+YB,t=this.store.getItem(A);return this.meta=KB(await t),this.meta}async refreshMetadata(){this.cacheMetadata||await this.reloadMetadata()}get(A=null,t={}){return this.getBasicSelection(A,!1,t)}getRaw(A=null,t={}){return this.getBasicSelection(A,!0,t)}async getBasicSelection(A,t=!1,{concurrencyLimit:i=10,progressCallback:n,storeOptions:r}={}){if(this.cacheMetadata||await this.reloadMetadata(),this.shape.length===0)throw new Error("Shape [] indexing is not supported yet");return this.getBasicSelectionND(A,t,i,n,r)}getBasicSelectionND(A,t,i,n,r){const o=new OR(A,this);return this.getSelection(o,t,i,n,r)}async getSelection(A,t,i,n,r){const o=this.dtype,s=A.shape,a=A.shape.reduce((l,c)=>l*c,1);if(t&&a===this.chunkSize){const l=A.iter(),c=l.next();if(c.done===!1&&l.next().done===!0){const C=c.value;return await this.decodeDirectToRawArray(C,s,a)}}const g=t?new co(null,s,o):new Rn(null,s,o);if(a===0)return g;const I=new zR({concurrency:i});if(n){let l=0,c=0;for(const C of A.iter())c+=1;n({progress:0,queueSize:c});for(const C of A.iter())(async()=>(await I.add(()=>this.chunkGetItem(C.chunkCoords,C.chunkSelection,g,C.outSelection,A.dropAxes,r)),l+=1,n({progress:l,queueSize:c})))()}else for(const l of A.iter())I.add(()=>this.chunkGetItem(l.chunkCoords,l.chunkSelection,g,l.outSelection,A.dropAxes,r));return await I.onIdle(),g.shape.length===0?g.data[0]:g}async chunkGetItem(A,t,i,n,r,o){if(A.length!==this._chunkDataShape.length)throw new ni(`Inconsistent shapes: chunkCoordsLength: ${A.length}, cDataShapeLength: ${this.chunkDataShape.length}`);const s=this.chunkKey(A);try{const a=await this.chunkStore.getItem(s,o),g=await this.decodeChunk(a);if(i instanceof Rn){if(stA(n)&&VR(t,this.chunks)&&!this.meta.filters){i.set(n,this.toNestedArray(g));return}const l=this.toNestedArray(g).get(t);if(r!==null)throw new Error("Drop axes is not supported yet");i.set(n,l)}else i.set(n,this.chunkBufferToRawArray(g),t)}catch(a){if(cf(a))this.fillValue!==null&&i.set(n,this.fillValue);else throw a}}async getRawChunk(A,t){if(A.length!==this.shape.length)throw new Error(`Chunk coordinates ${A.join(".")} do not correspond to shape ${this.shape}.`);try{for(let s=0;ss!==1);return new co(r,o,this.dtype)}chunkKey(A){var t;const i=(t=this.meta.dimension_separator)!==null&&t!==void 0?t:".";return this.keyPrefix+A.join(i)}ensureByteArray(A){return typeof A=="string"?new Uint8Array(Buffer.from(A).buffer):new Uint8Array(A)}toTypedArray(A){return new(rn(this.dtype))(A)}toNestedArray(A){const t=this.ensureByteArray(A).buffer;return new Rn(t,this.chunks,this.dtype)}async decodeChunk(A){let t=this.ensureByteArray(A);if(this.compressor!==null&&(t=await(await this.compressor).decode(t)),this.dtype.includes(">")&&n_(this.toTypedArray(t.buffer)),this.meta.order==="F"&&this.nDims>1){const i=this.toTypedArray(t.buffer),n=new(rn(this.dtype))(i.length);return dtA(i,n,this.chunks),n.buffer}return t.buffer}chunkBufferToRawArray(A){return new co(A,this.chunks,this.dtype)}async decodeDirectToRawArray({chunkCoords:A},t,i){const n=this.chunkKey(A);try{const r=await this.chunkStore.getItem(n);return new co(await this.decodeChunk(r),t,this.dtype)}catch(r){if(cf(r)){const o=new(rn(this.dtype))(i);return new co(o.fill(this.fillValue),t)}else throw r}}async set(A=null,t,i={}){await this.setBasicSelection(A,t,i)}async setBasicSelection(A,t,{concurrencyLimit:i=10,progressCallback:n}={}){if(this.readOnly)throw new bt("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(A,t,i,n)}async setBasicSelectionND(A,t,i,n){const r=new OR(A,this);await this.setSelection(r,t,i,n)}getChunkValue(A,t,i,n){let r;if(n.length===0)r=i;else if(typeof i=="number")r=i;else if(r=i.get(A.outSelection),t.dropAxes!==null)throw new Error("Handling drop axes not supported yet");return r}async setSelection(A,t,i,n){const r=A.shape;if(r.length!==0){if(typeof t!="number")if(t instanceof Rn){if(!ctA(t.shape,r))throw new ni(`Shape mismatch in source NestedArray and set selection: ${t.shape} and ${r}`)}else throw new Error("Unknown data type for setting :(")}const o=new zR({concurrency:i});if(n){let s=0;for(const g of A.iter())s+=1;let a=0;n({progress:0,queueSize:s});for(const g of A.iter()){const I=this.getChunkValue(g,A,t,r);(async()=>(await o.add(()=>this.chunkSetItem(g.chunkCoords,g.chunkSelection,I)),a+=1,n({progress:a,queueSize:s})))()}}else for(const s of A.iter()){const a=this.getChunkValue(s,A,t,r);o.add(()=>this.chunkSetItem(s.chunkCoords,s.chunkSelection,a))}await o.onIdle()}async chunkSetItem(A,t,i){if(this.meta.order==="F"&&this.nDims>1)throw new Error("Setting content for arrays in F-order is not supported.");const n=this.chunkKey(A);let r=null;const o=rn(this.dtype),s=this.chunkSize;if(VR(t,this.chunks))typeof i=="number"?(r=new o(s),r.fill(i)):r=i.flatten();else{let g;try{const l=await this.chunkStore.getItem(n),c=await this.decodeChunk(l);g=this.toTypedArray(c)}catch(l){if(cf(l))g=new o(s),this.fillValue!==null&&g.fill(this.fillValue);else throw l}const I=new Rn(g,this.chunks,this.dtype);I.set(t,i),r=I.flatten()}const a=await this.encodeChunk(r);this.chunkStore.setItem(n,a)}async encodeChunk(A){if(this.dtype.includes(">")&&(A=BtA(A)),this.compressor!==null){const t=new Uint8Array(A.buffer);return(await(await this.compressor).encode(t)).buffer}return A.buffer}}class ktA{constructor(A={}){this.root=A}proxy(){return Ny(this)}getParent(A){let t=this.root;const i=A.split("/");for(const n of i.slice(0,i.length-1))if(t=t[n],!t)throw Error(A);return[t,i[i.length-1]]}requireParent(A){let t=this.root;const i=A.split("/");for(const n of i.slice(0,i.length-1))t[n]===void 0&&(t[n]={}),t=t[n];return[t,i[i.length-1]]}getItem(A){const[t,i]=this.getParent(A),n=t[i];if(n===void 0)throw new qa(A);return n}setItem(A,t){const[i,n]=this.requireParent(A);return i[n]=t,!0}deleteItem(A){const[t,i]=this.getParent(A);return delete t[i]}containsItem(A){try{return this.getItem(A)!==void 0}catch{return!1}}keys(){throw new Error("Method not implemented.")}}var Zi;(function(e){e.HEAD="HEAD",e.GET="GET",e.PUT="PUT"})(Zi||(Zi={}));const TtA=[Zi.HEAD,Zi.GET,Zi.PUT];class qy{constructor(A,t={}){this.url=A;const{fetchOptions:i={},supportedMethods:n=TtA}=t;this.fetchOptions=i,this.supportedMethods=new Set(n)}keys(){throw new Error("Method not implemented.")}async getItem(A,t){const i=Cf(this.url,A),n=await fetch(i,{...this.fetchOptions,...t});if(n.status===404)throw new qa(A);if(n.status!==200)throw new Gy(String(n.status));return Ja?Buffer.from(await n.arrayBuffer()):n.arrayBuffer()}async setItem(A,t){if(!this.supportedMethods.has(Zi.PUT))throw new Error("HTTP PUT no a supported method for store.");const i=Cf(this.url,A);return typeof t=="string"&&(t=new TextEncoder().encode(t).buffer),(await fetch(i,{...this.fetchOptions,method:Zi.PUT,body:t})).status.toString()[0]==="2"}deleteItem(A){throw new Error("Method not implemented.")}async containsItem(A){const t=Cf(this.url,A),i=this.supportedMethods.has(Zi.HEAD)?Zi.HEAD:Zi.GET;return(await fetch(t,{...this.fetchOptions,method:i})).status===200}}async function Oa({shape:e,chunks:A=!0,dtype:t="0?this.path[0]!=="/"?"/"+this.path:this.path:"/"}get basename(){const A=this.name.split("/");return A[A.length-1]}get chunkStore(){return this._chunkStore?this._chunkStore:this.store}static async create(A,t=null,i=!1,n=null,r=!0){const o=await this.loadMetadataForConstructor(A,t);return new Os(A,t,o,i,n,r)}static async loadMetadataForConstructor(A,t){t=Gi(t);const i=qr(t);try{const n=await A.getItem(i+Uy);return KB(n)}catch{throw await Gn(A,t)?new Sr(t):new su(t)}}itemPath(A){const t=typeof A=="string"&&A.length>0&&A[0]==="/",i=Gi(A);return!t&&this.path.length>0?this.keyPrefix+i:i}async createGroup(A,t=!1){if(this.readOnly)throw new bt("group is read only");const i=this.itemPath(A);return await uI(this.store,i,this._chunkStore,t),Os.create(this.store,i,this.readOnly,this._chunkStore,this.attrs.cache)}async requireGroup(A,t=!1){if(this.readOnly)throw new bt("group is read only");const i=this.itemPath(A);return await gn(this.store,i)||await uI(this.store,i,this._chunkStore,t),Os.create(this.store,i,this.readOnly,this._chunkStore,this.attrs.cache)}getOptsForArrayCreation(A,t={}){const i=this.itemPath(A);return t.path=i,t.cacheAttrs===void 0&&(t.cacheAttrs=this.attrs.cache),t.store=this.store,t.chunkStore=this.chunkStore,t}array(A,t,i,n){if(this.readOnly)throw new bt("group is read only");return i=this.getOptsForArrayCreation(A,i),i.overwrite=n===void 0?i.overwrite:n,jR(t,i)}empty(A,t,i={}){if(this.readOnly)throw new bt("group is read only");return i=this.getOptsForArrayCreation(A,i),UtA(t,i)}zeros(A,t,i={}){if(this.readOnly)throw new bt("group is read only");return i=this.getOptsForArrayCreation(A,i),PtA(t,i)}ones(A,t,i={}){if(this.readOnly)throw new bt("group is read only");return i=this.getOptsForArrayCreation(A,i),HtA(t,i)}full(A,t,i,n={}){if(this.readOnly)throw new bt("group is read only");return n=this.getOptsForArrayCreation(A,n),qtA(t,i,n)}createDataset(A,t,i,n){if(this.readOnly)throw new bt("group is read only");n=this.getOptsForArrayCreation(A,n);let r;if(i===void 0){if(t===void 0)throw new ni("Shape must be set if no data is passed to CreateDataset");r=Oa({shape:t,...n})}else r=jR(i,n);return r}async getItem(A){const t=this.itemPath(A);if(await Gn(this.store,t))return au.create(this.store,t,this.readOnly,this.chunkStore,void 0,this.attrs.cache);if(await gn(this.store,t))return Os.create(this.store,t,this.readOnly,this._chunkStore,this.attrs.cache);throw new qa(A)}async setItem(A,t){return await this.array(A,t,{},!0),!0}async deleteItem(A){throw this.readOnly?new bt("group is read only"):new Error("Method not implemented.")}async containsItem(A){const t=this.itemPath(A);return await Gn(this.store,t)||gn(this.store,t)}proxy(){return Ny(this)}}async function JtA(e,A=null,t="a",i,n=!0){if(e=Pd(e),i!==void 0&&(i=Pd(e)),A=Gi(A),t==="r"||t==="r+"){if(!await gn(e,A))throw await Gn(e,A)?new Sr(A):new su(A)}else if(t==="w")await uI(e,A,i,!0);else if(t==="a"){if(!await gn(e,A)){if(await Gn(e,A))throw new Sr(A);await uI(e,A,i)}}else if(t==="w-"||t==="x"){if(await Gn(e,A))throw new Sr(A);if(await gn(e,A))throw new Ha(A);await uI(e,A,i)}else throw new ni(`Invalid mode argument: ${t}`);const r=t==="r";return Os.create(e,A,r,i,n)}/*! pako 2.0.3 https://github.com/nodeca/pako @license (MIT AND Zlib) */const OtA=4,XR=0,ZR=1,YtA=2;function Ya(e){let A=e.length;for(;--A>=0;)e[A]=0}const KtA=0,B_=1,VtA=2,WtA=3,ztA=258,Jy=29,Yl=256,Al=Yl+1+Jy,oa=30,Oy=19,E_=2*Al+1,po=15,Bf=16,jtA=7,Yy=256,u_=16,h_=17,f_=18,Hd=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),PC=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),XtA=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),Q_=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),ZtA=512,wn=new Array((Al+2)*2);Ya(wn);const hI=new Array(oa*2);Ya(hI);const el=new Array(ZtA);Ya(el);const tl=new Array(ztA-WtA+1);Ya(tl);const Ky=new Array(Jy);Ya(Ky);const VB=new Array(oa);Ya(VB);function Ef(e,A,t,i,n){this.static_tree=e,this.extra_bits=A,this.extra_base=t,this.elems=i,this.max_length=n,this.has_stree=e&&e.length}let d_,p_,y_;function uf(e,A){this.dyn_tree=e,this.max_code=0,this.stat_desc=A}const m_=e=>e<256?el[e]:el[256+(e>>>7)],il=(e,A)=>{e.pending_buf[e.pending++]=A&255,e.pending_buf[e.pending++]=A>>>8&255},Yt=(e,A,t)=>{e.bi_valid>Bf-t?(e.bi_buf|=A<>Bf-e.bi_valid,e.bi_valid+=t-Bf):(e.bi_buf|=A<{Yt(e,t[A*2],t[A*2+1])},w_=(e,A)=>{let t=0;do t|=e&1,e>>>=1,t<<=1;while(--A>0);return t>>>1},$tA=e=>{e.bi_valid===16?(il(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},AiA=(e,A)=>{const t=A.dyn_tree,i=A.max_code,n=A.stat_desc.static_tree,r=A.stat_desc.has_stree,o=A.stat_desc.extra_bits,s=A.stat_desc.extra_base,a=A.stat_desc.max_length;let g,I,l,c,C,B,E=0;for(c=0;c<=po;c++)e.bl_count[c]=0;for(t[e.heap[e.heap_max]*2+1]=0,g=e.heap_max+1;ga&&(c=a,E++),t[I*2+1]=c,!(I>i)&&(e.bl_count[c]++,C=0,I>=s&&(C=o[I-s]),B=t[I*2],e.opt_len+=B*(c+C),r&&(e.static_len+=B*(n[I*2+1]+C)));if(E!==0){do{for(c=a-1;e.bl_count[c]===0;)c--;e.bl_count[c]--,e.bl_count[c+1]+=2,e.bl_count[a]--,E-=2}while(E>0);for(c=a;c!==0;c--)for(I=e.bl_count[c];I!==0;)l=e.heap[--g],!(l>i)&&(t[l*2+1]!==c&&(e.opt_len+=(c-t[l*2+1])*t[l*2],t[l*2+1]=c),I--)}},v_=(e,A,t)=>{const i=new Array(po+1);let n=0,r,o;for(r=1;r<=po;r++)i[r]=n=n+t[r-1]<<1;for(o=0;o<=A;o++){let s=e[o*2+1];s!==0&&(e[o*2]=w_(i[s]++,s))}},eiA=()=>{let e,A,t,i,n;const r=new Array(po+1);for(t=0,i=0;i>=7;i{let A;for(A=0;A{e.bi_valid>8?il(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},tiA=(e,A,t,i)=>{D_(e),i&&(il(e,t),il(e,~t)),e.pending_buf.set(e.window.subarray(A,A+t),e.pending),e.pending+=t},$R=(e,A,t,i)=>{const n=A*2,r=t*2;return e[n]{const i=e.heap[t];let n=t<<1;for(;n<=e.heap_len&&(n{let i,n,r=0,o,s;if(e.last_lit!==0)do i=e.pending_buf[e.d_buf+r*2]<<8|e.pending_buf[e.d_buf+r*2+1],n=e.pending_buf[e.l_buf+r],r++,i===0?$i(e,n,A):(o=tl[n],$i(e,o+Yl+1,A),s=Hd[o],s!==0&&(n-=Ky[o],Yt(e,n,s)),i--,o=m_(i),$i(e,o,t),s=PC[o],s!==0&&(i-=VB[o],Yt(e,i,s)));while(r{const t=A.dyn_tree,i=A.stat_desc.static_tree,n=A.stat_desc.has_stree,r=A.stat_desc.elems;let o,s,a=-1,g;for(e.heap_len=0,e.heap_max=E_,o=0;o>1;o>=1;o--)hf(e,t,o);g=r;do o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],hf(e,t,1),s=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=s,t[g*2]=t[o*2]+t[s*2],e.depth[g]=(e.depth[o]>=e.depth[s]?e.depth[o]:e.depth[s])+1,t[o*2+1]=t[s*2+1]=g,e.heap[1]=g++,hf(e,t,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],AiA(e,A),v_(t,a,e.bl_count)},e1=(e,A,t)=>{let i,n=-1,r,o=A[0*2+1],s=0,a=7,g=4;for(o===0&&(a=138,g=3),A[(t+1)*2+1]=65535,i=0;i<=t;i++)r=o,o=A[(i+1)*2+1],!(++s{let i,n=-1,r,o=A[0*2+1],s=0,a=7,g=4;for(o===0&&(a=138,g=3),i=0;i<=t;i++)if(r=o,o=A[(i+1)*2+1],!(++s{let A;for(e1(e,e.dyn_ltree,e.l_desc.max_code),e1(e,e.dyn_dtree,e.d_desc.max_code),qd(e,e.bl_desc),A=Oy-1;A>=3&&e.bl_tree[Q_[A]*2+1]===0;A--);return e.opt_len+=3*(A+1)+5+5+4,A},niA=(e,A,t,i)=>{let n;for(Yt(e,A-257,5),Yt(e,t-1,5),Yt(e,i-4,4),n=0;n{let A=4093624447,t;for(t=0;t<=31;t++,A>>>=1)if(A&1&&e.dyn_ltree[t*2]!==0)return XR;if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0)return ZR;for(t=32;t{i1||(eiA(),i1=!0),e.l_desc=new uf(e.dyn_ltree,d_),e.d_desc=new uf(e.dyn_dtree,p_),e.bl_desc=new uf(e.bl_tree,y_),e.bi_buf=0,e.bi_valid=0,S_(e)},R_=(e,A,t,i)=>{Yt(e,(KtA<<1)+(i?1:0),3),tiA(e,A,t,!0)},siA=e=>{Yt(e,B_<<1,3),$i(e,Yy,wn),$tA(e)},aiA=(e,A,t,i)=>{let n,r,o=0;e.level>0?(e.strm.data_type===YtA&&(e.strm.data_type=riA(e)),qd(e,e.l_desc),qd(e,e.d_desc),o=iiA(e),n=e.opt_len+3+7>>>3,r=e.static_len+3+7>>>3,r<=n&&(n=r)):n=r=t+5,t+4<=n&&A!==-1?R_(e,A,t,i):e.strategy===OtA||r===n?(Yt(e,(B_<<1)+(i?1:0),3),A1(e,wn,hI)):(Yt(e,(VtA<<1)+(i?1:0),3),niA(e,e.l_desc.max_code+1,e.d_desc.max_code+1,o+1),A1(e,e.dyn_ltree,e.dyn_dtree)),S_(e),i&&D_(e)},giA=(e,A,t)=>(e.pending_buf[e.d_buf+e.last_lit*2]=A>>>8&255,e.pending_buf[e.d_buf+e.last_lit*2+1]=A&255,e.pending_buf[e.l_buf+e.last_lit]=t&255,e.last_lit++,A===0?e.dyn_ltree[t*2]++:(e.matches++,A--,e.dyn_ltree[(tl[t]+Yl+1)*2]++,e.dyn_dtree[m_(A)*2]++),e.last_lit===e.lit_bufsize-1);var IiA=oiA,liA=R_,ciA=aiA,CiA=giA,BiA=siA,EiA={_tr_init:IiA,_tr_stored_block:liA,_tr_flush_block:ciA,_tr_tally:CiA,_tr_align:BiA};const uiA=(e,A,t,i)=>{let n=e&65535|0,r=e>>>16&65535|0,o=0;for(;t!==0;){o=t>2e3?2e3:t,t-=o;do n=n+A[i++]|0,r=r+n|0;while(--o);n%=65521,r%=65521}return n|r<<16|0};var nl=uiA;const hiA=()=>{let e,A=[];for(var t=0;t<256;t++){e=t;for(var i=0;i<8;i++)e=e&1?3988292384^e>>>1:e>>>1;A[t]=e}return A},fiA=new Uint32Array(hiA()),QiA=(e,A,t,i)=>{const n=fiA,r=i+t;e^=-1;for(let o=i;o>>8^n[(e^A[o])&255];return e^-1};var rt=QiA,qo={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},os={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:diA,_tr_stored_block:piA,_tr_flush_block:yiA,_tr_tally:Dr,_tr_align:miA}=EiA,{Z_NO_FLUSH:ss,Z_PARTIAL_FLUSH:wiA,Z_FULL_FLUSH:viA,Z_FINISH:Rr,Z_BLOCK:n1,Z_OK:An,Z_STREAM_END:r1,Z_STREAM_ERROR:Ei,Z_DATA_ERROR:SiA,Z_BUF_ERROR:ff,Z_DEFAULT_COMPRESSION:DiA,Z_FILTERED:RiA,Z_HUFFMAN_ONLY:$c,Z_RLE:xiA,Z_FIXED:FiA,Z_DEFAULT_STRATEGY:NiA,Z_UNKNOWN:LiA,Z_DEFLATED:gu}=os,biA=9,GiA=15,_iA=8,MiA=29,kiA=256,Jd=kiA+1+MiA,TiA=30,UiA=19,PiA=2*Jd+1,HiA=15,ae=3,Br=258,_i=Br+ae+1,qiA=32,Iu=42,Od=69,HC=73,qC=91,JC=103,yo=113,Jg=666,$e=1,Kl=2,Jo=3,Ka=4,JiA=3,Er=(e,A)=>(e.msg=qo[A],A),o1=e=>(e<<1)-(e>4?9:0),ar=e=>{let A=e.length;for(;--A>=0;)e[A]=0};let OiA=(e,A,t)=>(A<{const A=e.state;let t=A.pending;t>e.avail_out&&(t=e.avail_out),t!==0&&(e.output.set(A.pending_buf.subarray(A.pending_out,A.pending_out+t),e.next_out),e.next_out+=t,A.pending_out+=t,e.total_out+=t,e.avail_out-=t,A.pending-=t,A.pending===0&&(A.pending_out=0))},ft=(e,A)=>{yiA(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,A),e.block_start=e.strstart,rr(e.strm)},ce=(e,A)=>{e.pending_buf[e.pending++]=A},Rg=(e,A)=>{e.pending_buf[e.pending++]=A>>>8&255,e.pending_buf[e.pending++]=A&255},YiA=(e,A,t,i)=>{let n=e.avail_in;return n>i&&(n=i),n===0?0:(e.avail_in-=n,A.set(e.input.subarray(e.next_in,e.next_in+n),t),e.state.wrap===1?e.adler=nl(e.adler,A,n,t):e.state.wrap===2&&(e.adler=rt(e.adler,A,n,t)),e.next_in+=n,e.total_in+=n,n)},x_=(e,A)=>{let t=e.max_chain_length,i=e.strstart,n,r,o=e.prev_length,s=e.nice_match;const a=e.strstart>e.w_size-_i?e.strstart-(e.w_size-_i):0,g=e.window,I=e.w_mask,l=e.prev,c=e.strstart+Br;let C=g[i+o-1],B=g[i+o];e.prev_length>=e.good_match&&(t>>=2),s>e.lookahead&&(s=e.lookahead);do if(n=A,!(g[n+o]!==B||g[n+o-1]!==C||g[n]!==g[i]||g[++n]!==g[i+1])){i+=2,n++;do;while(g[++i]===g[++n]&&g[++i]===g[++n]&&g[++i]===g[++n]&&g[++i]===g[++n]&&g[++i]===g[++n]&&g[++i]===g[++n]&&g[++i]===g[++n]&&g[++i]===g[++n]&&io){if(e.match_start=A,o=r,r>=s)break;C=g[i+o-1],B=g[i+o]}}while((A=l[A&I])>a&&--t!==0);return o<=e.lookahead?o:e.lookahead},Oo=e=>{const A=e.w_size;let t,i,n,r,o;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=A+(A-_i)){e.window.set(e.window.subarray(A,A+A),0),e.match_start-=A,e.strstart-=A,e.block_start-=A,i=e.hash_size,t=i;do n=e.head[--t],e.head[t]=n>=A?n-A:0;while(--i);i=A,t=i;do n=e.prev[--t],e.prev[t]=n>=A?n-A:0;while(--i);r+=A}if(e.strm.avail_in===0)break;if(i=YiA(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=i,e.lookahead+e.insert>=ae)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=xr(e,e.ins_h,e.window[o+1]);e.insert&&(e.ins_h=xr(e,e.ins_h,e.window[o+ae-1]),e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert{let t=65535;for(t>e.pending_buf_size-5&&(t=e.pending_buf_size-5);;){if(e.lookahead<=1){if(Oo(e),e.lookahead===0&&A===ss)return $e;if(e.lookahead===0)break}e.strstart+=e.lookahead,e.lookahead=0;const i=e.block_start+t;if((e.strstart===0||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,ft(e,!1),e.strm.avail_out===0)||e.strstart-e.block_start>=e.w_size-_i&&(ft(e,!1),e.strm.avail_out===0))return $e}return e.insert=0,A===Rr?(ft(e,!0),e.strm.avail_out===0?Jo:Ka):(e.strstart>e.block_start&&(ft(e,!1),e.strm.avail_out===0),$e)},Qf=(e,A)=>{let t,i;for(;;){if(e.lookahead<_i){if(Oo(e),e.lookahead<_i&&A===ss)return $e;if(e.lookahead===0)break}if(t=0,e.lookahead>=ae&&(e.ins_h=xr(e,e.ins_h,e.window[e.strstart+ae-1]),t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),t!==0&&e.strstart-t<=e.w_size-_i&&(e.match_length=x_(e,t)),e.match_length>=ae)if(i=Dr(e,e.strstart-e.match_start,e.match_length-ae),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=ae){e.match_length--;do e.strstart++,e.ins_h=xr(e,e.ins_h,e.window[e.strstart+ae-1]),t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=xr(e,e.ins_h,e.window[e.strstart+1]);else i=Dr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(ft(e,!1),e.strm.avail_out===0))return $e}return e.insert=e.strstart{let t,i,n;for(;;){if(e.lookahead<_i){if(Oo(e),e.lookahead<_i&&A===ss)return $e;if(e.lookahead===0)break}if(t=0,e.lookahead>=ae&&(e.ins_h=xr(e,e.ins_h,e.window[e.strstart+ae-1]),t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=ae-1,t!==0&&e.prev_length4096)&&(e.match_length=ae-1)),e.prev_length>=ae&&e.match_length<=e.prev_length){n=e.strstart+e.lookahead-ae,i=Dr(e,e.strstart-1-e.prev_match,e.prev_length-ae),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=n&&(e.ins_h=xr(e,e.ins_h,e.window[e.strstart+ae-1]),t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=ae-1,e.strstart++,i&&(ft(e,!1),e.strm.avail_out===0))return $e}else if(e.match_available){if(i=Dr(e,0,e.window[e.strstart-1]),i&&ft(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return $e}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=Dr(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart{let t,i,n,r;const o=e.window;for(;;){if(e.lookahead<=Br){if(Oo(e),e.lookahead<=Br&&A===ss)return $e;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=ae&&e.strstart>0&&(n=e.strstart-1,i=o[n],i===o[++n]&&i===o[++n]&&i===o[++n])){r=e.strstart+Br;do;while(i===o[++n]&&i===o[++n]&&i===o[++n]&&i===o[++n]&&i===o[++n]&&i===o[++n]&&i===o[++n]&&i===o[++n]&&ne.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=ae?(t=Dr(e,1,e.match_length-ae),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(t=Dr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),t&&(ft(e,!1),e.strm.avail_out===0))return $e}return e.insert=0,A===Rr?(ft(e,!0),e.strm.avail_out===0?Jo:Ka):e.last_lit&&(ft(e,!1),e.strm.avail_out===0)?$e:Kl},WiA=(e,A)=>{let t;for(;;){if(e.lookahead===0&&(Oo(e),e.lookahead===0)){if(A===ss)return $e;break}if(e.match_length=0,t=Dr(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,t&&(ft(e,!1),e.strm.avail_out===0))return $e}return e.insert=0,A===Rr?(ft(e,!0),e.strm.avail_out===0?Jo:Ka):e.last_lit&&(ft(e,!1),e.strm.avail_out===0)?$e:Kl};function Vi(e,A,t,i,n){this.good_length=e,this.max_lazy=A,this.nice_length=t,this.max_chain=i,this.func=n}const Og=[new Vi(0,0,0,0,KiA),new Vi(4,4,8,4,Qf),new Vi(4,5,16,8,Qf),new Vi(4,6,32,32,Qf),new Vi(4,4,16,16,ps),new Vi(8,16,32,32,ps),new Vi(8,16,128,128,ps),new Vi(8,32,128,256,ps),new Vi(32,128,258,1024,ps),new Vi(32,258,258,4096,ps)],ziA=e=>{e.window_size=2*e.w_size,ar(e.head),e.max_lazy_match=Og[e.level].max_lazy,e.good_match=Og[e.level].good_length,e.nice_match=Og[e.level].nice_length,e.max_chain_length=Og[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=ae-1,e.match_available=0,e.ins_h=0};function jiA(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=gu,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(PiA*2),this.dyn_dtree=new Uint16Array((2*TiA+1)*2),this.bl_tree=new Uint16Array((2*UiA+1)*2),ar(this.dyn_ltree),ar(this.dyn_dtree),ar(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(HiA+1),this.heap=new Uint16Array(2*Jd+1),ar(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*Jd+1),ar(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const F_=e=>{if(!e||!e.state)return Er(e,Ei);e.total_in=e.total_out=0,e.data_type=LiA;const A=e.state;return A.pending=0,A.pending_out=0,A.wrap<0&&(A.wrap=-A.wrap),A.status=A.wrap?Iu:yo,e.adler=A.wrap===2?0:1,A.last_flush=ss,diA(A),An},N_=e=>{const A=F_(e);return A===An&&ziA(e.state),A},XiA=(e,A)=>!e||!e.state||e.state.wrap!==2?Ei:(e.state.gzhead=A,An),L_=(e,A,t,i,n,r)=>{if(!e)return Ei;let o=1;if(A===DiA&&(A=6),i<0?(o=0,i=-i):i>15&&(o=2,i-=16),n<1||n>biA||t!==gu||i<8||i>15||A<0||A>9||r<0||r>FiA)return Er(e,Ei);i===8&&(i=9);const s=new jiA;return e.state=s,s.strm=e,s.wrap=o,s.gzhead=null,s.w_bits=i,s.w_size=1<L_(e,A,gu,GiA,_iA,NiA),$iA=(e,A)=>{let t,i;if(!e||!e.state||A>n1||A<0)return e?Er(e,Ei):Ei;const n=e.state;if(!e.output||!e.input&&e.avail_in!==0||n.status===Jg&&A!==Rr)return Er(e,e.avail_out===0?ff:Ei);n.strm=e;const r=n.last_flush;if(n.last_flush=A,n.status===Iu)if(n.wrap===2)e.adler=0,ce(n,31),ce(n,139),ce(n,8),n.gzhead?(ce(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),ce(n,n.gzhead.time&255),ce(n,n.gzhead.time>>8&255),ce(n,n.gzhead.time>>16&255),ce(n,n.gzhead.time>>24&255),ce(n,n.level===9?2:n.strategy>=$c||n.level<2?4:0),ce(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(ce(n,n.gzhead.extra.length&255),ce(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=rt(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Od):(ce(n,0),ce(n,0),ce(n,0),ce(n,0),ce(n,0),ce(n,n.level===9?2:n.strategy>=$c||n.level<2?4:0),ce(n,JiA),n.status=yo);else{let o=gu+(n.w_bits-8<<4)<<8,s=-1;n.strategy>=$c||n.level<2?s=0:n.level<6?s=1:n.level===6?s=2:s=3,o|=s<<6,n.strstart!==0&&(o|=qiA),o+=31-o%31,n.status=yo,Rg(n,o),n.strstart!==0&&(Rg(n,e.adler>>>16),Rg(n,e.adler&65535)),e.adler=1}if(n.status===Od)if(n.gzhead.extra){for(t=n.pending;n.gzindex<(n.gzhead.extra.length&65535)&&!(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>t&&(e.adler=rt(e.adler,n.pending_buf,n.pending-t,t)),rr(e),t=n.pending,n.pending===n.pending_buf_size));)ce(n,n.gzhead.extra[n.gzindex]&255),n.gzindex++;n.gzhead.hcrc&&n.pending>t&&(e.adler=rt(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=HC)}else n.status=HC;if(n.status===HC)if(n.gzhead.name){t=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>t&&(e.adler=rt(e.adler,n.pending_buf,n.pending-t,t)),rr(e),t=n.pending,n.pending===n.pending_buf_size)){i=1;break}n.gzindext&&(e.adler=rt(e.adler,n.pending_buf,n.pending-t,t)),i===0&&(n.gzindex=0,n.status=qC)}else n.status=qC;if(n.status===qC)if(n.gzhead.comment){t=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>t&&(e.adler=rt(e.adler,n.pending_buf,n.pending-t,t)),rr(e),t=n.pending,n.pending===n.pending_buf_size)){i=1;break}n.gzindext&&(e.adler=rt(e.adler,n.pending_buf,n.pending-t,t)),i===0&&(n.status=JC)}else n.status=JC;if(n.status===JC&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&rr(e),n.pending+2<=n.pending_buf_size&&(ce(n,e.adler&255),ce(n,e.adler>>8&255),e.adler=0,n.status=yo)):n.status=yo),n.pending!==0){if(rr(e),e.avail_out===0)return n.last_flush=-1,An}else if(e.avail_in===0&&o1(A)<=o1(r)&&A!==Rr)return Er(e,ff);if(n.status===Jg&&e.avail_in!==0)return Er(e,ff);if(e.avail_in!==0||n.lookahead!==0||A!==ss&&n.status!==Jg){let o=n.strategy===$c?WiA(n,A):n.strategy===xiA?ViA(n,A):Og[n.level].func(n,A);if((o===Jo||o===Ka)&&(n.status=Jg),o===$e||o===Jo)return e.avail_out===0&&(n.last_flush=-1),An;if(o===Kl&&(A===wiA?miA(n):A!==n1&&(piA(n,0,0,!1),A===viA&&(ar(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),rr(e),e.avail_out===0))return n.last_flush=-1,An}return A!==Rr?An:n.wrap<=0?r1:(n.wrap===2?(ce(n,e.adler&255),ce(n,e.adler>>8&255),ce(n,e.adler>>16&255),ce(n,e.adler>>24&255),ce(n,e.total_in&255),ce(n,e.total_in>>8&255),ce(n,e.total_in>>16&255),ce(n,e.total_in>>24&255)):(Rg(n,e.adler>>>16),Rg(n,e.adler&65535)),rr(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?An:r1)},AnA=e=>{if(!e||!e.state)return Ei;const A=e.state.status;return A!==Iu&&A!==Od&&A!==HC&&A!==qC&&A!==JC&&A!==yo&&A!==Jg?Er(e,Ei):(e.state=null,A===yo?Er(e,SiA):An)},enA=(e,A)=>{let t=A.length;if(!e||!e.state)return Ei;const i=e.state,n=i.wrap;if(n===2||n===1&&i.status!==Iu||i.lookahead)return Ei;if(n===1&&(e.adler=nl(e.adler,A,t,0)),i.wrap=0,t>=i.w_size){n===0&&(ar(i.head),i.strstart=0,i.block_start=0,i.insert=0);let a=new Uint8Array(i.w_size);a.set(A.subarray(t-i.w_size,t),0),A=a,t=i.w_size}const r=e.avail_in,o=e.next_in,s=e.input;for(e.avail_in=t,e.next_in=0,e.input=A,Oo(i);i.lookahead>=ae;){let a=i.strstart,g=i.lookahead-(ae-1);do i.ins_h=xr(i,i.ins_h,i.window[a+ae-1]),i.prev[a&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=a,a++;while(--g);i.strstart=a,i.lookahead=ae-1,Oo(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=ae-1,i.match_available=0,e.next_in=o,e.input=s,e.avail_in=r,i.wrap=n,An};var tnA=ZiA,inA=L_,nnA=N_,rnA=F_,onA=XiA,snA=$iA,anA=AnA,gnA=enA,InA="pako deflate (from Nodeca project)",fI={deflateInit:tnA,deflateInit2:inA,deflateReset:nnA,deflateResetKeep:rnA,deflateSetHeader:onA,deflate:snA,deflateEnd:anA,deflateSetDictionary:gnA,deflateInfo:InA};const lnA=(e,A)=>Object.prototype.hasOwnProperty.call(e,A);var cnA=function(e){const A=Array.prototype.slice.call(arguments,1);for(;A.length;){const t=A.shift();if(t){if(typeof t!="object")throw new TypeError(t+"must be non-object");for(const i in t)lnA(t,i)&&(e[i]=t[i])}}return e},CnA=e=>{let A=0;for(let i=0,n=e.length;i=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;rl[254]=rl[254]=1;var BnA=e=>{let A,t,i,n,r,o=e.length,s=0;for(n=0;n>>6,A[r++]=128|t&63):t<65536?(A[r++]=224|t>>>12,A[r++]=128|t>>>6&63,A[r++]=128|t&63):(A[r++]=240|t>>>18,A[r++]=128|t>>>12&63,A[r++]=128|t>>>6&63,A[r++]=128|t&63);return A};const EnA=(e,A)=>{if(A<65534&&e.subarray&&b_)return String.fromCharCode.apply(null,e.length===A?e:e.subarray(0,A));let t="";for(let i=0;i{let t,i;const n=A||e.length,r=new Array(n*2);for(i=0,t=0;t4){r[i++]=65533,t+=s-1;continue}for(o&=s===2?31:s===3?15:7;s>1&&t1){r[i++]=65533;continue}o<65536?r[i++]=o:(o-=65536,r[i++]=55296|o>>10&1023,r[i++]=56320|o&1023)}return EnA(r,i)},hnA=(e,A)=>{A=A||e.length,A>e.length&&(A=e.length);let t=A-1;for(;t>=0&&(e[t]&192)===128;)t--;return t<0||t===0?A:t+rl[e[t]]>A?t:A},ol={string2buf:BnA,buf2string:unA,utf8border:hnA};function fnA(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var G_=fnA;const __=Object.prototype.toString,{Z_NO_FLUSH:QnA,Z_SYNC_FLUSH:dnA,Z_FULL_FLUSH:pnA,Z_FINISH:ynA,Z_OK:WB,Z_STREAM_END:mnA,Z_DEFAULT_COMPRESSION:wnA,Z_DEFAULT_STRATEGY:vnA,Z_DEFLATED:SnA}=os;function Vl(e){this.options=lu.assign({level:wnA,method:SnA,chunkSize:16384,windowBits:15,memLevel:8,strategy:vnA},e||{});let A=this.options;A.raw&&A.windowBits>0?A.windowBits=-A.windowBits:A.gzip&&A.windowBits>0&&A.windowBits<16&&(A.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new G_,this.strm.avail_out=0;let t=fI.deflateInit2(this.strm,A.level,A.method,A.windowBits,A.memLevel,A.strategy);if(t!==WB)throw new Error(qo[t]);if(A.header&&fI.deflateSetHeader(this.strm,A.header),A.dictionary){let i;if(typeof A.dictionary=="string"?i=ol.string2buf(A.dictionary):__.call(A.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(A.dictionary):i=A.dictionary,t=fI.deflateSetDictionary(this.strm,i),t!==WB)throw new Error(qo[t]);this._dict_set=!0}}Vl.prototype.push=function(e,A){const t=this.strm,i=this.options.chunkSize;let n,r;if(this.ended)return!1;for(A===~~A?r=A:r=A===!0?ynA:QnA,typeof e=="string"?t.input=ol.string2buf(e):__.call(e)==="[object ArrayBuffer]"?t.input=new Uint8Array(e):t.input=e,t.next_in=0,t.avail_in=t.input.length;;){if(t.avail_out===0&&(t.output=new Uint8Array(i),t.next_out=0,t.avail_out=i),(r===dnA||r===pnA)&&t.avail_out<=6){this.onData(t.output.subarray(0,t.next_out)),t.avail_out=0;continue}if(n=fI.deflate(t,r),n===mnA)return t.next_out>0&&this.onData(t.output.subarray(0,t.next_out)),n=fI.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===WB;if(t.avail_out===0){this.onData(t.output);continue}if(r>0&&t.next_out>0){this.onData(t.output.subarray(0,t.next_out)),t.avail_out=0;continue}if(t.avail_in===0)break}return!0};Vl.prototype.onData=function(e){this.chunks.push(e)};Vl.prototype.onEnd=function(e){e===WB&&(this.result=lu.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Vy(e,A){const t=new Vl(A);if(t.push(e,!0),t.err)throw t.msg||qo[t.err];return t.result}function DnA(e,A){return A=A||{},A.raw=!0,Vy(e,A)}function RnA(e,A){return A=A||{},A.gzip=!0,Vy(e,A)}var xnA=Vl,FnA=Vy,NnA=DnA,LnA=RnA,bnA=os,GnA={Deflate:xnA,deflate:FnA,deflateRaw:NnA,gzip:LnA,constants:bnA};const AC=30,_nA=12;var MnA=function(A,t){let i,n,r,o,s,a,g,I,l,c,C,B,E,u,h,f,Q,d,w,m,v,x,D,F;const N=A.state;i=A.next_in,D=A.input,n=i+(A.avail_in-5),r=A.next_out,F=A.output,o=r-(t-A.avail_out),s=r+(A.avail_out-257),a=N.dmax,g=N.wsize,I=N.whave,l=N.wnext,c=N.window,C=N.hold,B=N.bits,E=N.lencode,u=N.distcode,h=(1<>>24,C>>>=d,B-=d,d=Q>>>16&255,d===0)F[r++]=Q&65535;else if(d&16){w=Q&65535,d&=15,d&&(B>>=d,B-=d),B<15&&(C+=D[i++]<>>24,C>>>=d,B-=d,d=Q>>>16&255,d&16){if(m=Q&65535,d&=15,Ba){A.msg="invalid distance too far back",N.mode=AC;break A}if(C>>>=d,B-=d,d=r-o,m>d){if(d=m-d,d>I&&N.sane){A.msg="invalid distance too far back",N.mode=AC;break A}if(v=0,x=c,l===0){if(v+=g-d,d2;)F[r++]=x[v++],F[r++]=x[v++],F[r++]=x[v++],w-=3;w&&(F[r++]=x[v++],w>1&&(F[r++]=x[v++]))}else{v=r-m;do F[r++]=F[v++],F[r++]=F[v++],F[r++]=F[v++],w-=3;while(w>2);w&&(F[r++]=F[v++],w>1&&(F[r++]=F[v++]))}}else if(d&64){A.msg="invalid distance code",N.mode=AC;break A}else{Q=u[(Q&65535)+(C&(1<>3,i-=w,B-=w<<3,C&=(1<{const a=s.bits;let g=0,I=0,l=0,c=0,C=0,B=0,E=0,u=0,h=0,f=0,Q,d,w,m,v,x=null,D=0,F;const N=new Uint16Array(ys+1),k=new Uint16Array(ys+1);let P=null,H=0,W,J,Z;for(g=0;g<=ys;g++)N[g]=0;for(I=0;I=1&&N[c]===0;c--);if(C>c&&(C=c),c===0)return n[r++]=1<<24|64<<16|0,n[r++]=1<<24|64<<16|0,s.bits=1,0;for(l=1;l0&&(e===g1||c!==1))return-1;for(k[1]=0,g=1;gs1||e===I1&&h>a1)return 1;for(;;){W=g-E,o[I]F?(J=P[H+o[I]],Z=x[D+o[I]]):(J=32+64,Z=0),Q=1<>E)+d]=W<<24|J<<16|Z|0;while(d!==0);for(Q=1<>=1;if(Q!==0?(f&=Q-1,f+=Q):f=0,I++,--N[g]===0){if(g===c)break;g=A[t+o[I]]}if(g>C&&(f&m)!==w){for(E===0&&(E=C),v+=l,B=g-E,u=1<s1||e===I1&&h>a1)return 1;w=f&m,n[w]=C<<24|B<<16|v-r|0}}return f!==0&&(n[v+f]=g-E<<24|64<<16|0),s.bits=C,0};var QI=HnA;const qnA=0,M_=1,k_=2,{Z_FINISH:l1,Z_BLOCK:JnA,Z_TREES:eC,Z_OK:Yo,Z_STREAM_END:OnA,Z_NEED_DICT:YnA,Z_STREAM_ERROR:Qi,Z_DATA_ERROR:T_,Z_MEM_ERROR:U_,Z_BUF_ERROR:KnA,Z_DEFLATED:c1}=os,P_=1,C1=2,B1=3,E1=4,u1=5,h1=6,f1=7,Q1=8,d1=9,p1=10,zB=11,pn=12,pf=13,y1=14,yf=15,m1=16,w1=17,v1=18,S1=19,tC=20,iC=21,D1=22,R1=23,x1=24,F1=25,N1=26,mf=27,L1=28,b1=29,Pe=30,H_=31,VnA=32,WnA=852,znA=592,jnA=15,XnA=jnA,G1=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function ZnA(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const q_=e=>{if(!e||!e.state)return Qi;const A=e.state;return e.total_in=e.total_out=A.total=0,e.msg="",A.wrap&&(e.adler=A.wrap&1),A.mode=P_,A.last=0,A.havedict=0,A.dmax=32768,A.head=null,A.hold=0,A.bits=0,A.lencode=A.lendyn=new Int32Array(WnA),A.distcode=A.distdyn=new Int32Array(znA),A.sane=1,A.back=-1,Yo},J_=e=>{if(!e||!e.state)return Qi;const A=e.state;return A.wsize=0,A.whave=0,A.wnext=0,q_(e)},O_=(e,A)=>{let t;if(!e||!e.state)return Qi;const i=e.state;return A<0?(t=0,A=-A):(t=(A>>4)+1,A<48&&(A&=15)),A&&(A<8||A>15)?Qi:(i.window!==null&&i.wbits!==A&&(i.window=null),i.wrap=t,i.wbits=A,J_(e))},Y_=(e,A)=>{if(!e)return Qi;const t=new ZnA;e.state=t,t.window=null;const i=O_(e,A);return i!==Yo&&(e.state=null),i},$nA=e=>Y_(e,XnA);let _1=!0,wf,vf;const ArA=e=>{if(_1){wf=new Int32Array(512),vf=new Int32Array(32);let A=0;for(;A<144;)e.lens[A++]=8;for(;A<256;)e.lens[A++]=9;for(;A<280;)e.lens[A++]=7;for(;A<288;)e.lens[A++]=8;for(QI(M_,e.lens,0,288,wf,0,e.work,{bits:9}),A=0;A<32;)e.lens[A++]=5;QI(k_,e.lens,0,32,vf,0,e.work,{bits:5}),_1=!1}e.lencode=wf,e.lenbits=9,e.distcode=vf,e.distbits=5},K_=(e,A,t,i)=>{let n;const r=e.state;return r.window===null&&(r.wsize=1<=r.wsize?(r.window.set(A.subarray(t-r.wsize,t),0),r.wnext=0,r.whave=r.wsize):(n=r.wsize-r.wnext,n>i&&(n=i),r.window.set(A.subarray(t-i,t-i+n),r.wnext),i-=n,i?(r.window.set(A.subarray(t-i,t),0),r.wnext=i,r.whave=r.wsize):(r.wnext+=n,r.wnext===r.wsize&&(r.wnext=0),r.whave{let t,i,n,r,o,s,a,g,I,l,c,C,B,E,u=0,h,f,Q,d,w,m,v,x;const D=new Uint8Array(4);let F,N;const k=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0)return Qi;t=e.state,t.mode===pn&&(t.mode=pf),o=e.next_out,n=e.output,a=e.avail_out,r=e.next_in,i=e.input,s=e.avail_in,g=t.hold,I=t.bits,l=s,c=a,x=Yo;A:for(;;)switch(t.mode){case P_:if(t.wrap===0){t.mode=pf;break}for(;I<16;){if(s===0)break A;s--,g+=i[r++]<>>8&255,t.check=rt(t.check,D,2,0),g=0,I=0,t.mode=C1;break}if(t.flags=0,t.head&&(t.head.done=!1),!(t.wrap&1)||(((g&255)<<8)+(g>>8))%31){e.msg="incorrect header check",t.mode=Pe;break}if((g&15)!==c1){e.msg="unknown compression method",t.mode=Pe;break}if(g>>>=4,I-=4,v=(g&15)+8,t.wbits===0)t.wbits=v;else if(v>t.wbits){e.msg="invalid window size",t.mode=Pe;break}t.dmax=1<>8&1),t.flags&512&&(D[0]=g&255,D[1]=g>>>8&255,t.check=rt(t.check,D,2,0)),g=0,I=0,t.mode=B1;case B1:for(;I<32;){if(s===0)break A;s--,g+=i[r++]<>>8&255,D[2]=g>>>16&255,D[3]=g>>>24&255,t.check=rt(t.check,D,4,0)),g=0,I=0,t.mode=E1;case E1:for(;I<16;){if(s===0)break A;s--,g+=i[r++]<>8),t.flags&512&&(D[0]=g&255,D[1]=g>>>8&255,t.check=rt(t.check,D,2,0)),g=0,I=0,t.mode=u1;case u1:if(t.flags&1024){for(;I<16;){if(s===0)break A;s--,g+=i[r++]<>>8&255,t.check=rt(t.check,D,2,0)),g=0,I=0}else t.head&&(t.head.extra=null);t.mode=h1;case h1:if(t.flags&1024&&(C=t.length,C>s&&(C=s),C&&(t.head&&(v=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Uint8Array(t.head.extra_len)),t.head.extra.set(i.subarray(r,r+C),v)),t.flags&512&&(t.check=rt(t.check,i,C,r)),s-=C,r+=C,t.length-=C),t.length))break A;t.length=0,t.mode=f1;case f1:if(t.flags&2048){if(s===0)break A;C=0;do v=i[r+C++],t.head&&v&&t.length<65536&&(t.head.name+=String.fromCharCode(v));while(v&&C>9&1,t.head.done=!0),e.adler=t.check=0,t.mode=pn;break;case p1:for(;I<32;){if(s===0)break A;s--,g+=i[r++]<>>=I&7,I-=I&7,t.mode=mf;break}for(;I<3;){if(s===0)break A;s--,g+=i[r++]<>>=1,I-=1,g&3){case 0:t.mode=y1;break;case 1:if(ArA(t),t.mode=tC,A===eC){g>>>=2,I-=2;break A}break;case 2:t.mode=w1;break;case 3:e.msg="invalid block type",t.mode=Pe}g>>>=2,I-=2;break;case y1:for(g>>>=I&7,I-=I&7;I<32;){if(s===0)break A;s--,g+=i[r++]<>>16^65535)){e.msg="invalid stored block lengths",t.mode=Pe;break}if(t.length=g&65535,g=0,I=0,t.mode=yf,A===eC)break A;case yf:t.mode=m1;case m1:if(C=t.length,C){if(C>s&&(C=s),C>a&&(C=a),C===0)break A;n.set(i.subarray(r,r+C),o),s-=C,r+=C,a-=C,o+=C,t.length-=C;break}t.mode=pn;break;case w1:for(;I<14;){if(s===0)break A;s--,g+=i[r++]<>>=5,I-=5,t.ndist=(g&31)+1,g>>>=5,I-=5,t.ncode=(g&15)+4,g>>>=4,I-=4,t.nlen>286||t.ndist>30){e.msg="too many length or distance symbols",t.mode=Pe;break}t.have=0,t.mode=v1;case v1:for(;t.have>>=3,I-=3}for(;t.have<19;)t.lens[k[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,F={bits:t.lenbits},x=QI(qnA,t.lens,0,19,t.lencode,0,t.work,F),t.lenbits=F.bits,x){e.msg="invalid code lengths set",t.mode=Pe;break}t.have=0,t.mode=S1;case S1:for(;t.have>>24,f=u>>>16&255,Q=u&65535,!(h<=I);){if(s===0)break A;s--,g+=i[r++]<>>=h,I-=h,t.lens[t.have++]=Q;else{if(Q===16){for(N=h+2;I>>=h,I-=h,t.have===0){e.msg="invalid bit length repeat",t.mode=Pe;break}v=t.lens[t.have-1],C=3+(g&3),g>>>=2,I-=2}else if(Q===17){for(N=h+3;I>>=h,I-=h,v=0,C=3+(g&7),g>>>=3,I-=3}else{for(N=h+7;I>>=h,I-=h,v=0,C=11+(g&127),g>>>=7,I-=7}if(t.have+C>t.nlen+t.ndist){e.msg="invalid bit length repeat",t.mode=Pe;break}for(;C--;)t.lens[t.have++]=v}}if(t.mode===Pe)break;if(t.lens[256]===0){e.msg="invalid code -- missing end-of-block",t.mode=Pe;break}if(t.lenbits=9,F={bits:t.lenbits},x=QI(M_,t.lens,0,t.nlen,t.lencode,0,t.work,F),t.lenbits=F.bits,x){e.msg="invalid literal/lengths set",t.mode=Pe;break}if(t.distbits=6,t.distcode=t.distdyn,F={bits:t.distbits},x=QI(k_,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,F),t.distbits=F.bits,x){e.msg="invalid distances set",t.mode=Pe;break}if(t.mode=tC,A===eC)break A;case tC:t.mode=iC;case iC:if(s>=6&&a>=258){e.next_out=o,e.avail_out=a,e.next_in=r,e.avail_in=s,t.hold=g,t.bits=I,MnA(e,c),o=e.next_out,n=e.output,a=e.avail_out,r=e.next_in,i=e.input,s=e.avail_in,g=t.hold,I=t.bits,t.mode===pn&&(t.back=-1);break}for(t.back=0;u=t.lencode[g&(1<>>24,f=u>>>16&255,Q=u&65535,!(h<=I);){if(s===0)break A;s--,g+=i[r++]<>d)],h=u>>>24,f=u>>>16&255,Q=u&65535,!(d+h<=I);){if(s===0)break A;s--,g+=i[r++]<>>=d,I-=d,t.back+=d}if(g>>>=h,I-=h,t.back+=h,t.length=Q,f===0){t.mode=N1;break}if(f&32){t.back=-1,t.mode=pn;break}if(f&64){e.msg="invalid literal/length code",t.mode=Pe;break}t.extra=f&15,t.mode=D1;case D1:if(t.extra){for(N=t.extra;I>>=t.extra,I-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=R1;case R1:for(;u=t.distcode[g&(1<>>24,f=u>>>16&255,Q=u&65535,!(h<=I);){if(s===0)break A;s--,g+=i[r++]<>d)],h=u>>>24,f=u>>>16&255,Q=u&65535,!(d+h<=I);){if(s===0)break A;s--,g+=i[r++]<>>=d,I-=d,t.back+=d}if(g>>>=h,I-=h,t.back+=h,f&64){e.msg="invalid distance code",t.mode=Pe;break}t.offset=Q,t.extra=f&15,t.mode=x1;case x1:if(t.extra){for(N=t.extra;I>>=t.extra,I-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){e.msg="invalid distance too far back",t.mode=Pe;break}t.mode=F1;case F1:if(a===0)break A;if(C=c-a,t.offset>C){if(C=t.offset-C,C>t.whave&&t.sane){e.msg="invalid distance too far back",t.mode=Pe;break}C>t.wnext?(C-=t.wnext,B=t.wsize-C):B=t.wnext-C,C>t.length&&(C=t.length),E=t.window}else E=n,B=o-t.offset,C=t.length;C>a&&(C=a),a-=C,t.length-=C;do n[o++]=E[B++];while(--C);t.length===0&&(t.mode=iC);break;case N1:if(a===0)break A;n[o++]=t.length,a--,t.mode=iC;break;case mf:if(t.wrap){for(;I<32;){if(s===0)break A;s--,g|=i[r++]<{if(!e||!e.state)return Qi;let A=e.state;return A.window&&(A.window=null),e.state=null,Yo},irA=(e,A)=>{if(!e||!e.state)return Qi;const t=e.state;return t.wrap&2?(t.head=A,A.done=!1,Yo):Qi},nrA=(e,A)=>{const t=A.length;let i,n,r;return!e||!e.state||(i=e.state,i.wrap!==0&&i.mode!==zB)?Qi:i.mode===zB&&(n=1,n=nl(n,A,t,0),n!==i.check)?T_:(r=K_(e,A,t,t),r?(i.mode=H_,U_):(i.havedict=1,Yo))};var rrA=J_,orA=O_,srA=q_,arA=$nA,grA=Y_,IrA=erA,lrA=trA,crA=irA,CrA=nrA,BrA="pako inflate (from Nodeca project)",vn={inflateReset:rrA,inflateReset2:orA,inflateResetKeep:srA,inflateInit:arA,inflateInit2:grA,inflate:IrA,inflateEnd:lrA,inflateGetHeader:crA,inflateSetDictionary:CrA,inflateInfo:BrA};function ErA(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var urA=ErA;const V_=Object.prototype.toString,{Z_NO_FLUSH:hrA,Z_FINISH:frA,Z_OK:sl,Z_STREAM_END:Sf,Z_NEED_DICT:Df,Z_STREAM_ERROR:QrA,Z_DATA_ERROR:M1,Z_MEM_ERROR:drA}=os;function Wl(e){this.options=lu.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});const A=this.options;A.raw&&A.windowBits>=0&&A.windowBits<16&&(A.windowBits=-A.windowBits,A.windowBits===0&&(A.windowBits=-15)),A.windowBits>=0&&A.windowBits<16&&!(e&&e.windowBits)&&(A.windowBits+=32),A.windowBits>15&&A.windowBits<48&&(A.windowBits&15||(A.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new G_,this.strm.avail_out=0;let t=vn.inflateInit2(this.strm,A.windowBits);if(t!==sl)throw new Error(qo[t]);if(this.header=new urA,vn.inflateGetHeader(this.strm,this.header),A.dictionary&&(typeof A.dictionary=="string"?A.dictionary=ol.string2buf(A.dictionary):V_.call(A.dictionary)==="[object ArrayBuffer]"&&(A.dictionary=new Uint8Array(A.dictionary)),A.raw&&(t=vn.inflateSetDictionary(this.strm,A.dictionary),t!==sl)))throw new Error(qo[t])}Wl.prototype.push=function(e,A){const t=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let r,o,s;if(this.ended)return!1;for(A===~~A?o=A:o=A===!0?frA:hrA,V_.call(e)==="[object ArrayBuffer]"?t.input=new Uint8Array(e):t.input=e,t.next_in=0,t.avail_in=t.input.length;;){for(t.avail_out===0&&(t.output=new Uint8Array(i),t.next_out=0,t.avail_out=i),r=vn.inflate(t,o),r===Df&&n&&(r=vn.inflateSetDictionary(t,n),r===sl?r=vn.inflate(t,o):r===M1&&(r=Df));t.avail_in>0&&r===Sf&&t.state.wrap>0&&e[t.next_in]!==0;)vn.inflateReset(t),r=vn.inflate(t,o);switch(r){case QrA:case M1:case Df:case drA:return this.onEnd(r),this.ended=!0,!1}if(s=t.avail_out,t.next_out&&(t.avail_out===0||r===Sf))if(this.options.to==="string"){let a=ol.utf8border(t.output,t.next_out),g=t.next_out-a,I=ol.buf2string(t.output,a);t.next_out=g,t.avail_out=i-g,g&&t.output.set(t.output.subarray(a,a+g),0),this.onData(I)}else this.onData(t.output.length===t.next_out?t.output:t.output.subarray(0,t.next_out));if(!(r===sl&&s===0)){if(r===Sf)return r=vn.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,!0;if(t.avail_in===0)break}}return!0};Wl.prototype.onData=function(e){this.chunks.push(e)};Wl.prototype.onEnd=function(e){e===sl&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=lu.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Wy(e,A){const t=new Wl(A);if(t.push(e),t.err)throw t.msg||qo[t.err];return t.result}function prA(e,A){return A=A||{},A.raw=!0,Wy(e,A)}var yrA=Wl,mrA=Wy,wrA=prA,vrA=Wy,SrA=os,DrA={Inflate:yrA,inflate:mrA,inflateRaw:wrA,ungzip:vrA,constants:SrA};const{Deflate:RrA,deflate:xrA,deflateRaw:FrA,gzip:NrA}=GnA,{Inflate:LrA,inflate:brA,inflateRaw:GrA,ungzip:_rA}=DrA;var MrA=RrA,krA=xrA,TrA=FrA,UrA=NrA,PrA=LrA,HrA=brA,qrA=GrA,JrA=_rA,OrA=os,jB={Deflate:MrA,deflate:krA,deflateRaw:TrA,gzip:UrA,Inflate:PrA,inflate:HrA,inflateRaw:qrA,ungzip:JrA,constants:OrA},nC;const YrA=(nC=class{constructor(e=1){if(e<0||e>9)throw new Error("Invalid gzip compression level, it should be between 0 and 9");this.level=e}static fromConfig({level:e}){return new nC(e)}encode(e){return jB.gzip(e,{level:this.level})}decode(e,A){const t=jB.ungzip(e);return A!==void 0?(A.set(t),A):t}},nC.codecId="gzip",nC);var k1=YrA,rC;const KrA=(rC=class{constructor(e=1){if(e<-1||e>9)throw new Error("Invalid zlib compression level, it should be between -1 and 9");this.level=e}static fromConfig({level:e}){return new rC(e)}encode(e){return jB.deflate(e,{level:this.level})}decode(e,A){const t=jB.inflate(e);return A!==void 0?(A.set(t),A):t}},rC.codecId="zlib",rC);var T1=KrA,VrA=function(){return typeof document<"u"&&document.currentScript&&document.currentScript.src,function(e){e=e||{};var A;A||(A=typeof e<"u"?e:{});var t,i;A.ready=new Promise(function(L,_){t=L,i=_});var n={},r;for(r in A)A.hasOwnProperty(r)&&(n[r]=A[r]);var o="./this.program",s=A.print||console.log.bind(console),a=A.printErr||console.warn.bind(console);for(r in n)n.hasOwnProperty(r)&&(A[r]=n[r]);n=null,A.thisProgram&&(o=A.thisProgram);var g;A.wasmBinary&&(g=A.wasmBinary),A.noExitRuntime&&A.noExitRuntime,typeof WebAssembly!="object"&&iA("no native wasm support detected");var I,l=!1,c=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function C(L,_,U){var V=_+U;for(U=_;L[U]&&!(U>=V);)++U;if(16X?V+=String.fromCharCode(X):(X-=65536,V+=String.fromCharCode(55296|X>>10,56320|X&1023))}}else V+=String.fromCharCode(X)}return V}function B(L,_,U){var V=x;if(0=tA){var dA=L.charCodeAt(++X);tA=65536+((tA&1023)<<10)|dA&1023}if(127>=tA){if(_>=U)break;V[_++]=tA}else{if(2047>=tA){if(_+1>=U)break;V[_++]=192|tA>>6}else{if(65535>=tA){if(_+2>=U)break;V[_++]=224|tA>>12}else{if(_+3>=U)break;V[_++]=240|tA>>18,V[_++]=128|tA>>12&63}V[_++]=128|tA>>6&63}V[_++]=128|tA&63}}V[_]=0}}var E=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function u(L,_){for(var U=L>>1,V=U+_/2;!(U>=V)&&F[U];)++U;if(U<<=1,32>1];if(X==0||U==_/2)return V;++U,V+=String.fromCharCode(X)}}function h(L,_,U){if(U===void 0&&(U=2147483647),2>U)return 0;U-=2;var V=_;U=U<2*L.length?U/2:L.length;for(var X=0;X>1]=L.charCodeAt(X),_+=2;return D[_>>1]=0,_-V}function f(L){return 2*L.length}function Q(L,_){for(var U=0,V="";!(U>=_/4);){var X=N[L+4*U>>2];if(X==0)break;++U,65536<=X?(X-=65536,V+=String.fromCharCode(55296|X>>10,56320|X&1023)):V+=String.fromCharCode(X)}return V}function d(L,_,U){if(U===void 0&&(U=2147483647),4>U)return 0;var V=_;U=V+U-4;for(var X=0;X=tA){var dA=L.charCodeAt(++X);tA=65536+((tA&1023)<<10)|dA&1023}if(N[_>>2]=tA,_+=4,_+4>U)break}return N[_>>2]=0,_-V}function w(L){for(var _=0,U=0;U=V&&++U,_+=4}return _}var m,v,x,D,F,N,k,P,H;function W(L){m=L,A.HEAP8=v=new Int8Array(L),A.HEAP16=D=new Int16Array(L),A.HEAP32=N=new Int32Array(L),A.HEAPU8=x=new Uint8Array(L),A.HEAPU16=F=new Uint16Array(L),A.HEAPU32=k=new Uint32Array(L),A.HEAPF32=P=new Float32Array(L),A.HEAPF64=H=new Float64Array(L)}var J=A.INITIAL_MEMORY||16777216;A.wasmMemory?I=A.wasmMemory:I=new WebAssembly.Memory({initial:J/65536,maximum:32768}),I&&(m=I.buffer),J=m.byteLength,W(m);var Z,z=[],O=[],Y=[],T=[];function q(){var L=A.preRun.shift();z.unshift(L)}var j=0,AA=null;A.preloadedImages={},A.preloadedAudios={};function iA(L){throw A.onAbort&&A.onAbort(L),a(L),l=!0,L=new WebAssembly.RuntimeError("abort("+L+"). Build with -s ASSERTIONS=1 for more info."),i(L),L}function gA(L){var _=BA;return String.prototype.startsWith?_.startsWith(L):_.indexOf(L)===0}function sA(){return gA("data:application/octet-stream;base64,")}var BA="blosc_codec.wasm";if(!sA()){var IA=BA;BA=A.locateFile?A.locateFile(IA,""):""+IA}function bA(){try{if(g)return new Uint8Array(g);throw"both async and sync fetching of the wasm failed"}catch(L){iA(L)}}function EA(L){for(;0>2]=_},this.X=function(_){N[this.N+0>>2]=_},this.Y=function(){N[this.N+4>>2]=0},this.W=function(){v[this.N+12>>0]=0},this.Z=function(){v[this.N+13>>0]=0},this.V=function(_,U){this.$(_),this.X(U),this.Y(),this.W(),this.Z()}}function TA(L){switch(L){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+L)}}var RA=void 0;function UA(L){for(var _="";x[L];)_+=RA[x[L++]];return _}var fA={},NA={},XA={};function ie(L){if(L===void 0)return"_unknown";L=L.replace(/[^a-zA-Z0-9_]/g,"$");var _=L.charCodeAt(0);return 48<=_&&57>=_?"_"+L:L}function ge(L,_){return L=ie(L),new Function("body","return function "+L+`() { + "use strict"; return body.apply(this, arguments); +}; +`)(_)}function KA(L){var _=Error,U=ge(L,function(V){this.name=L,this.message=V,V=Error(V).stack,V!==void 0&&(this.stack=this.toString()+` +`+V.replace(/^Error(:[^\n]*)?\n/,""))});return U.prototype=Object.create(_.prototype),U.prototype.constructor=U,U.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},U}var eA=void 0;function aA(L){throw new eA(L)}var FA=void 0;function ne(L,_){function U(lA){if(lA=_(lA),lA.length!==V.length)throw new FA("Mismatched type converter count");for(var MA=0;MA>2])}function JA(L){if(L===null)return"null";var _=typeof L;return _==="object"||_==="array"||_==="function"?L.toString():""+L}function xA(L,_){switch(_){case 2:return function(U){return this.fromWireType(P[U>>2])};case 3:return function(U){return this.fromWireType(H[U>>3])};default:throw new TypeError("Unknown float type: "+L)}}function Ce(L){var _=Function;if(!(_ instanceof Function))throw new TypeError("new_ called with constructor type "+typeof _+" which is not a function");var U=ge(_.name||"unknownFunctionName",function(){});return U.prototype=_.prototype,U=new U,L=_.apply(U,L),L instanceof Object?L:U}function Ee(L){for(;L.length;){var _=L.pop();L.pop()(_)}}function PA(L,_){var U=A;if(U[L].L===void 0){var V=U[L];U[L]=function(){return U[L].L.hasOwnProperty(arguments.length)||aA("Function '"+_+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+U[L].L+")!"),U[L].L[arguments.length].apply(this,arguments)},U[L].L=[],U[L].L[V.S]=V}}function rA(L,_,U){A.hasOwnProperty(L)?((U===void 0||A[L].L!==void 0&&A[L].L[U]!==void 0)&&aA("Cannot register public name '"+L+"' twice"),PA(L,L),A.hasOwnProperty(U)&&aA("Cannot register multiple overloads of a function with the same number of arguments ("+U+")!"),A[L].L[U]=_):(A[L]=_,U!==void 0&&(A[L].ba=U))}function GA(L,_){for(var U=[],V=0;V>2)+V]);return U}function we(L,_){0<=L.indexOf("j")||iA("Assertion failed: getDynCaller should only be called with i64 sigs");var U=[];return function(){U.length=arguments.length;for(var V=0;V>1]}:function(V){return F[V>>1]};case 2:return U?function(V){return N[V>>2]}:function(V){return k[V>>2]};default:throw new TypeError("Unknown integer type: "+L)}}var Wn={};function gs(){if(!En){var L={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",_:o||"./this.program"},_;for(_ in Wn)L[_]=Wn[_];var U=[];for(_ in L)U.push(_+"="+L[_]);En=U}return En}for(var En,tg=[null,[],[]],Is=Array(256),wA=0;256>wA;++wA)Is[wA]=String.fromCharCode(wA);RA=Is,eA=A.BindingError=KA("BindingError"),FA=A.InternalError=KA("InternalError"),A.count_emval_handles=function(){for(var L=0,_=5;_>tA])},M:null})},y:function(L,_){_=UA(_),VA(L,{name:_,fromWireType:function(U){var V=WA[U].value;return qA(U),V},toWireType:function(U,V){return Re(V)},argPackAdvance:8,readValueFromPointer:oe,M:null})},h:function(L,_,U){U=TA(U),_=UA(_),VA(L,{name:_,fromWireType:function(V){return V},toWireType:function(V,X){if(typeof X!="number"&&typeof X!="boolean")throw new TypeError('Cannot convert "'+JA(X)+'" to '+this.name);return X},argPackAdvance:8,readValueFromPointer:xA(_,U),M:null})},e:function(L,_,U,V,X,tA){var dA=GA(_,U);L=UA(L),X=de(V,X),rA(L,function(){je("Cannot call "+L+" due to unbound types",dA)},_-1),ne(dA,function(lA){var MA=L,OA=L;lA=[lA[0],null].concat(lA.slice(1));var se=X,le=lA.length;2>le&&aA("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var ai=lA[1]!==null&&!1,Ht=!1,kA=1;kA>>lA}}var MA=_.indexOf("unsigned")!=-1;VA(L,{name:_,fromWireType:tA,toWireType:function(OA,se){if(typeof se!="number"&&typeof se!="boolean")throw new TypeError('Cannot convert "'+JA(se)+'" to '+this.name);if(seX)throw new TypeError('Passing a number "'+JA(se)+'" from JS side to C/C++ side to an argument of type "'+_+'", which is outside the valid range ['+V+", "+X+"]!");return MA?se>>>0:se|0},argPackAdvance:8,readValueFromPointer:et(_,dA,V!==0),M:null})},b:function(L,_,U){function V(tA){tA>>=2;var dA=k;return new X(m,dA[tA+1],dA[tA])}var X=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][_];U=UA(U),VA(L,{name:U,fromWireType:V,argPackAdvance:8,readValueFromPointer:V},{U:!0})},i:function(L,_){_=UA(_);var U=_==="std::string";VA(L,{name:_,fromWireType:function(V){var X=k[V>>2];if(U)for(var tA=V+4,dA=0;dA<=X;++dA){var lA=V+4+dA;if(dA==X||x[lA]==0){if(tA=tA?C(x,tA,lA-tA):"",MA===void 0)var MA=tA;else MA+=String.fromCharCode(0),MA+=tA;tA=lA+1}}else{for(MA=Array(X),dA=0;dA=le&&(le=65536+((le&1023)<<10)|X.charCodeAt(++se)&1023),127>=le?++OA:OA=2047>=le?OA+2:65535>=le?OA+3:OA+4}return OA}:function(){return X.length})(),lA=pe(4+dA+1);if(k[lA>>2]=dA,U&&tA)B(X,lA+4,dA+1);else if(tA)for(tA=0;tA>2],se=dA(),le,ai=MA+4,Ht=0;Ht<=OA;++Ht){var kA=MA+4+Ht*_;(Ht==OA||se[kA>>lA]==0)&&(ai=V(ai,kA-ai),le===void 0?le=ai:(le+=String.fromCharCode(0),le+=ai),ai=kA+_)}return ee(MA),le},toWireType:function(MA,OA){typeof OA!="string"&&aA("Cannot pass non-string to C++ string type "+U);var se=tA(OA),le=pe(4+se+_);return k[le>>2]=se>>lA,X(OA,le+4,se+_),MA!==null&&MA.push(ee,le),le},argPackAdvance:8,readValueFromPointer:oe,M:function(MA){ee(MA)}})},A:function(L,_){_=UA(_),VA(L,{aa:!0,name:_,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},n:qA,x:function(L){4>>=0;var _=x.length;if(2147483648=U;U*=2){var V=_*(1+.2/U);V=Math.min(V,L+100663296),V=Math.max(16777216,L,V),0>>16),W(I.buffer);var X=1;break A}catch{}X=void 0}if(X)return!0}return!1},u:function(L,_){var U=0;return gs().forEach(function(V,X){var tA=_+U;for(X=N[L+4*X>>2]=tA,tA=0;tA>0]=V.charCodeAt(tA);v[X>>0]=0,U+=V.length+1}),0},v:function(L,_){var U=gs();N[L>>2]=U.length;var V=0;return U.forEach(function(X){V+=X.length+1}),N[_>>2]=V,0},w:function(){return 0},q:function(){},g:function(L,_,U,V){for(var X=0,tA=0;tA>2],lA=N[_+(8*tA+4)>>2],MA=0;MA>2]=X,0},a:I,l:function(){return 0},k:function(){return 0},j:function(){},B:function(){return 6},m:function(){},f:function(){}};(function(){function L(X){A.asm=X.exports,Z=A.asm.D,j--,A.monitorRunDependencies&&A.monitorRunDependencies(j),j==0&&AA&&(X=AA,AA=null,X())}function _(X){L(X.instance)}function U(X){return Promise.resolve().then(bA).then(function(tA){return WebAssembly.instantiate(tA,V)}).then(X,function(tA){a("failed to asynchronously prepare wasm: "+tA),iA(tA)})}var V={a:LA};if(j++,A.monitorRunDependencies&&A.monitorRunDependencies(j),A.instantiateWasm)try{return A.instantiateWasm(V,L)}catch(X){return a("Module.instantiateWasm callback failed with error: "+X),!1}return function(){return g||typeof WebAssembly.instantiateStreaming!="function"||sA()||gA("file://")||typeof fetch!="function"?U(_):fetch(BA,{credentials:"same-origin"}).then(function(X){return WebAssembly.instantiateStreaming(X,V).then(_,function(tA){return a("wasm streaming compile failed: "+tA),a("falling back to ArrayBuffer instantiation"),U(_)})})}().catch(i),{}})();var ve=A.___wasm_call_ctors=function(){return(ve=A.___wasm_call_ctors=A.asm.E).apply(null,arguments)},pe=A._malloc=function(){return(pe=A._malloc=A.asm.F).apply(null,arguments)},ee=A._free=function(){return(ee=A._free=A.asm.G).apply(null,arguments)},gt=A.___getTypeName=function(){return(gt=A.___getTypeName=A.asm.H).apply(null,arguments)};A.___embind_register_native_and_builtin_types=function(){return(A.___embind_register_native_and_builtin_types=A.asm.I).apply(null,arguments)},A.dynCall_jiiiii=function(){return(A.dynCall_jiiiii=A.asm.J).apply(null,arguments)},A.dynCall_jiji=function(){return(A.dynCall_jiji=A.asm.K).apply(null,arguments)};var Be;AA=function L(){Be||Ui(),Be||(AA=L)};function Ui(){function L(){if(!Be&&(Be=!0,A.calledRun=!0,!l)){if(EA(O),EA(Y),t(A),A.onRuntimeInitialized&&A.onRuntimeInitialized(),A.postRun)for(typeof A.postRun=="function"&&(A.postRun=[A.postRun]);A.postRun.length;){var _=A.postRun.shift();T.unshift(_)}EA(T)}}if(!(0new Uint8Array(Buffer.from(e,"base64")):(()=>{for(var e=new Uint8Array(128),A=0;A<64;A++)e[A<26?A+65:A<52?A+71:A<62?A-4:A*4-205]=A;return t=>{for(var i=t.length,n=new Uint8Array((i-(t[i-1]=="=")-(t[i-2]=="="))*3/4|0),r=0,o=0;r>4,n[o++]=a<<4|g>>2,n[o++]=g<<6|I}return n}})(),jrA=zrA("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//8DSxsiCzsBhoABIAggACADajYCgIABIAggCCgCkIABIANqNgKQgAEgASABKAAAIAsQMCAIIAsgASAAayIMEEkgD0F7aiITQX9qIRcgE0F9aiERIAZBBnQiCkEBciENIAFBAWoiAygAACALEDAhBCABQYCABEkhFSACIQUgASEGA0ACQCAVRQRAIAMgFEsNBCADQQFqIQ4gCiEJIA0hBwNAIAQgCBCFASEAIA4oAABBARAwIRIgAyAEIAhBASAMEEkgAEH//wNqIANPBEAgACgAACADKAAARg0DCyAJQQZ1IQAgByEJIAdBAWohByASIQQgACAOIgNqIg4gEE0NAAsMBAsgAyAUSw0DIANBAWohDiAEIAggCxBIIQAgCiEJIA0hBwNAIA4oAAAgCxAwIRIgAyAMayIWIAQgCCALEFwgAEH//wNqIBZPBEAgACAMaiIAKAAAIAMoAABGDQILIAlBBnUhFiASIAggCxBIIQAgByEJIAdBAWohByASIQQgFiAOIgNqIg4gEE0NAAsMAwsDQCAAIgQgAU0gAyIJIAZNckUEQCAJQX9qIgMtAAAgBEF/aiIALQAARg0BCwsgBUEBaiEDAkAgCSAGayIAQQ9PBEAgBUHwAToAACAAQXFqIgdB/wFOBEAgA0H/ASAJQe8BaiIDIAdB/QMgB0H9A0gbIgcgBmprQf8BbkEBahAoGiAFIAMgBmsgB2tB/wFuIgdqQQJqIQMgACAHQYF+bGpB8n1qIQcLIAMgBzoAACADQQFqIQMMAQsgBSAAQQR0OgAACyADIAYgACADaiIHEDsgCSEGA0AgByAGIARrQf//A3EQLyAEQQRqIQMCfwJAAn8gESAGQQRqIgBNBEAgAAwBCyADKAAAIAAoAABzIgMNASAEQQhqIQMgBkEIagsiBCARSQRAA0AgAygAACAEKAAAcyIJBEAgCRAlIARqIABrDAQLIANBBGohAyAEQQRqIgQgEUkNAAsLAkAgBCAXTw0AIAMvAAAgBC8AAEcNACADQQJqIQMgBEECaiEECyAEIBNJBH8gBEEBaiAEIAMtAAAgBC0AAEYbBSAECyAAawwBCyADECULIQAgB0ECaiEDIAAgBmpBBGohBiAFLQAAIQQCfyAAQQ9PBEAgBSAEQQ9qOgAAIANBfxA0IABBcWoiBEH8B08EQANAIANBBGoiA0F/EDQgBEGEeGoiBEH7B0sNAAsLIAMgBEH//wNxQf8BbiIAaiIDIABBgX5sIARqOgAAIANBAWoMAQsgBSAAIARqOgAAIAMLIQUgBiAQTw0DIAZBfmoiACAAKAAAIAsQMCAIIAsgDBBJIAYoAAAhAAJAAkAgFUUEQCAAQQEQMCIAIAgQhQEhBCAGIAAgCEEBIAwQSSAEQf//A2ogBkkNASAEKAAAIAYoAABHDQEMAgsgACALEDAiAyAIIAsQSCEAIAYgDGsiBCADIAggCxBcIABB//8DaiAESQ0AIAAgDGoiBCgAACAGKAAARg0BCyAGQQFqIgMoAAAgCxAwIQQMAgsgBUEAOgAAIAVBAWohBwwACwALAAsgEw8LAkAgDyAGayIBQQ9PBEAgBUHwAToAACAFQQFqIQAgAUFxaiIDQf8BSQRAIAAiBSADOgAADAILIABB/wEgAUHyfWoiAEH/AW5BAWoQKBogAEH/AW4iAyAFakECaiIFIANBgX5sIABqOgAADAELIAUgAUEEdDoAAAsgBUEBaiAGIAEQKiABaiACaw8LIANBAWogACAEECogBGogAmsLJgAgAEEXNgIQIABBGDYCDCAAQRk2AgggAEEaNgIEIABBwBU2AgAL1QgBCX8gBAR/QRBBICAEQRB2IgUbQXhBACAFIAQgBRsiBUEIdiIEG2pBfEEAIAQgBSAEGyIFQQR2IgQbakF+QQAgBCAFIAQbIgVBAnYiBBtqIAQgBSAEG0EBS2sFQSELIQsgACABaiEJAkAgAUEPSQ0AIAlBfGohDCAJQXFqIQ0gACIGQQFqIgEhBANAIAEoAAAhB0EgIQEDQCAEIgUgAUEFdmoiBCANSwRAIAYhAAwDCyADIAdBvc/W8QFsIAt2QQF0aiIILwEAIQogBCgAACEHIAggBSAAazsBACABQQFqIQEgBSgAACAAIApqIgooAABHDQALIAUgBmsiCEF/aiEBAkACQCAIQT1OBEAgAkEBaiEEQQAhBwNAIAQgAToAACAEQQFqIQQgB0EBaiEHIAFBCHYiAQ0ACyACIAdBAnRBbGo6AAAMAQsgAiABQQJ0OgAAIAJBAWohBCAIQRBKDQAgAiAGKAAANgABIAIgBigABDYABSACIAYoAAg2AAkgAiAGKAAMNgANDAELIAQgBiAIECoaCyAEIAhqIQIDQCAKQQRqIQdBACEEAkACQCAMIAVBBGoiAUkNAANAIAEoAAAiBiAEIAdqKAAAIghGBEAgBEEEaiEEIAFBBGoiASAMTQ0BDAILCyAEQXhBACAGIAhzIgRBEHQiASAEIAEbIgZBCHQiBBtBD0EfIAEbakF8QQAgBCAGIAQbIgRBBHQiARtqQX5BACABIAQgARsiBEECdCIBG2ogASAEIAEbQf////8HcUEAR2tBA3VqIQQMAQsgASAJTw0AIAkgBCABa2ohBgNAIAQgB2otAAAgAS0AAEcNASAEQQFqIQQgAUEBaiIBIAlHDQALIAYhBAsgBSAKayEGIARBBGohAQJAIARBwABIBEAgASEHDAELIAEhBANAIAIgBjsAASACQf4BOgAAIAJBA2ohAiAEQYMBSiEIIARBQGoiByEEIAgNAAsLIAdBwQBOBEAgAiAGOwABIAJB7gE6AAAgB0FEaiEHIAJBA2ohAgsgASAFaiEFAn8gB0ELSiAGQf8PS3JFBEAgAiAGOgABIAIgBkEDdkHgAXEgB0ECdGpB8QFqOgAAIAJBAmoMAQsgAiAGOwABIAIgB0ECdEF+ajoAACACQQNqCyECIAUgDU8EQCAFIQAMAwsgAyAFQX9qIgEoAABBvc/W8QFsIAt2QQF0aiAFIABrIgRBf2o7AQAgACADIAUoAABBvc/W8QFsIAt2QQF0aiIGLwEAaiIKKAAAIQcgBiAEOwEAIAcgBSgAAEYNAAsgBUEBaiEEIAFBAmohASAFIQYMAAsACyAAIAlJBH8gCSAAayIDQX9qIQEgAgJ/IANBPU4EQCACQQFqIQRBACEHA0AgBCABOgAAIARBAWohBCAHQQFqIQcgAUEIdiIBDQALIAdBAnRBbGoMAQsgAkEBaiEEIAFBAnQLOgAAIAQgACADECogA2oFIAILC+sCAhV/AX5CsH8hGSACQQdxBH4gGQUgAwRAIAJBA3YhBSADQQN0IQkDQCAFBEAgCEEDdCIGIAVsIQogBkEHciILIAVsIQwgBkEGciINIAVsIQ4gBkEFciIPIAVsIRAgBkEEciIRIAVsIRIgBkEDciITIAVsIRQgBkECciIVIAVsIRYgBkEBciIXIAVsIRhBACEEA0AgASAGIAQgCWwiB2pqIAAgBCAKamotAAA6AAAgASAHIBdqaiAAIAQgGGpqLQAAOgAAIAEgByAVamogACAEIBZqai0AADoAACABIAcgE2pqIAAgBCAUamotAAA6AAAgASAHIBFqaiAAIAQgEmpqLQAAOgAAIAEgByAPamogACAEIBBqai0AADoAACABIAcgDWpqIAAgBCAOamotAAA6AAAgASAHIAtqaiAAIAQgDGpqLQAAOgAAIARBAWoiBCAFRw0ACwsgCEEBaiIIIANHDQALCyACIANsrQsLNAEBfkKwfyEFAkAgAkEHcQ0AIAAgBCACIAMQtgQiBUIAUw0AIAQgASACIAMQuAQhBQsgBQv2AgINfwJ+QrB/IREgAkEHcQR+IBEFIAIgA2whByADQQN0IgUEQCADQQdsIQkgA0EGbCEKIANBBWwhCyADQQJ0IQwgA0EDbCENIANBAXQhDiAFQX9qIAdPIQ8DQCAPRQRAIAZBA3YhEEEAIQggBSECA0AgASAIIBBqIgRqIAAgBiAIamopAwAiEUIHiCARhUKqgaiFoJWA1QCDIhIgEYUgEkIHhoUiEUIOiCARhULMmYOAwJkzgyISIBGFIBJCDoaFIhFCHIggEYVC8OHDhw+DIhIgEYUiETwAACABIAMgBGpqIBFCCIg8AAAgASAEIA5qaiARQhCIPAAAIAEgBCANamogEUIYiDwAACABIAQgDGpqIBEgEkIchoUiEUIgiDwAACABIAQgC2pqIBFCKIg8AAAgASAEIApqaiARQjCIPAAAIAEgBCAJamogEUI4iDwAACACIgggBWoiAkF/aiAHSQ0ACwsgBkEIaiIGIAVJDQALCyAHrQsLVQEBfkKwfyEFAkAgAkEHcQ0AIAAgASACIAMQvAQiBUIAUw0AIAEgBCACIAMQuwQiBUIAUw0AIAJBB3EEfkKwfwUgBCABIAMgAkEDdhC6BAshBQsgBQtZAQN/A0AgAgRAIAIgBGwhBkEAIQUDQCABIAVBA3QgBGogA2xqIAAgBSAGaiADbGogAxAqGiAFQQFqIgUgAkcNAAsLIARBAWoiBEEIRw0ACyACIANsQQN0rQvAAgIHfwJ+QrB/IQsgAiADbCIEQQdxBH4gCwUgBEEDdiICBEAgAkEHbCEFIAJBBmwhBiACQQVsIQcgAkECdCEIIAJBA2whCSACQQF0IQpBACEDA0AgASADaiAAIANBA3RqKQMAIgtCB4ggC4VCqoGohaCVgNUAgyIMIAuFIAxCB4aFIgtCDoggC4VCzJmDgMCZM4MiDCALhSAMQg6GhSILQhyIIAuFQvDhw4cPgyIMIAuFIgs8AAAgASACIANqaiALQgiIPAAAIAEgAyAKamogC0IQiDwAACABIAMgCWpqIAtCGIg8AAAgASADIAhqaiALIAxCHIaFIgtCIIg8AAAgASADIAdqaiALQiiIPAAAIAEgAyAGamogC0IwiDwAACABIAMgBWpqIAtCOIg8AAAgA0EBaiIDIAJHDQALCyAErQsLrQMBEn8CQCACRQ0AIAJBCE8EQANAIAMEQCADIAVsIQcgBUEHciIIIANsIQkgBUEGciIKIANsIQsgBUEFciIMIANsIQ0gBUEEciIOIANsIQ8gBUEDciIQIANsIREgBUECciISIANsIRMgBUEBciIUIANsIRVBACEEA0AgASAFIAIgBGwiBmpqIAAgBCAHamotAAA6AAAgASAGIBRqaiAAIAQgFWpqLQAAOgAAIAEgBiASamogACAEIBNqai0AADoAACABIAYgEGpqIAAgBCARamotAAA6AAAgASAGIA5qaiAAIAQgD2pqLQAAOgAAIAEgBiAMamogACAEIA1qai0AADoAACABIAYgCmpqIAAgBCALamotAAA6AAAgASAGIAhqaiAAIAQgCWpqLQAAOgAAIARBAWoiBCADRw0ACwsgBUEPaiEEIAVBCGohBSAEIAJJDQALCyACQXhxIgUgAk8NAANAIAMEQCADIAVsIQZBACEEA0AgASACIARsIAVqaiAAIAQgBmpqLQAAOgAAIARBAWoiBCADRw0ACwsgBUEBaiIFIAJHDQALCyACIANsrQuCAQEGfyABIAEgAG4iBiAAbGshByAAIAFNBEAgBkEBIAZBAUsbIQgDQCAABEAgACAEbCEJQQAhBQNAIAMgBSAJamogAiAFIAZsIARqai0AADoAACAFQQFqIgUgAEcNAAsLIARBAWoiBCAIRw0ACwsgAyABIAdrIgBqIAAgAmogBxAqGgsNACAAIAEgAiADEL0EC4IBAQZ/IAEgASAAbiIGIABsayEHIAAEQCAGQQEgBkEBSxshCANAIAAgAU0EQCAEIAZsIQlBACEFA0AgAyAFIAlqaiACIAAgBWwgBGpqLQAAOgAAIAVBAWoiBSAIRw0ACwsgBEEBaiIEIABHDQALCyADIAEgB2siAGogACACaiAHECoaC7gBAQN/AkAgAUEBSA0AIAAsAAAiBEH/AHEhAwJAIARBf0oNACABQQJIDQEgACwAASIEQQd0QYD/AHEgA3IhAyAEQX9KDQAgAUEDSA0BIAAsAAIiBEEOdEGAgP8AcSADciEDIARBf0oNACABQQRIDQEgACwAAyIEQRV0QYCAgP8AcSADciEDIARBf0oNACABQQVIDQEgAC0ABCIAQQ9LDQEgAEEcdCADciEDCyACIAM2AgBBASEFCyAFCw0AIAAgASACIAMQvwQLlAIB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CA0tEC0gLgAJDS4QLiAvAAoNLxAvIDAACw0wEDAgMQAEDjEQMSAyAAUOMhAyIDMABg4zEDMgNAAHDjQQNCA1AAgONRA1IDYACQ42EDYgNwAKDjcQNyA4AAsOOBA4IDkABA85EDkgOgAFDzoQOiA7AAYPOxA7IDwABw88EDwgAQgIDz0QPSABEAkPPhA+IAEYCg8/ED8gASALD0AQQCAAAAAA/wAAAP//AAD///8A/////2RlY29tcHJlc3MAY29tcHJlc3MAZnJlZV9yZXN1bHQAdmkAAHhzAABpaWlpaWlpAEGQDgvUBigHAAAwBwAAMAcAAMxzAADMcwAAzHMAABh0AAC2BwAAQHQAAEgHAAAAAAAAAQAAAIgHAAAAAAAATlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAABh0AACQBwAATlN0M19fMjIxX19iYXNpY19zdHJpbmdfY29tbW9uSUxiMUVFRQBOMTBlbXNjcmlwdGVuM3ZhbEUAAAAAGHQAANQHAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0loRUUAaWlpAAAoBwAAMAcAABgIAAAgCAAAJAgAACoIAAAxCAAANggAAGJsb3NjbHoAbHo0AGx6NGhjAHNuYXBweQB6bGliAHpzdGQARXJyb3IuICBudGhyZWFkcyBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gQkxPU0NfTUFYX1RIUkVBRFMgKCVkKQBFcnJvci4gIG50aHJlYWRzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyAEVSUk9SOyByZXR1cm4gY29kZSBmcm9tIHB0aHJlYWRfY3JlYXRlKCkgaXMgJWQKAAlFcnJvciBkZXRhaWw6ICVzCgBCbG9zYyBoYXMgbm90IGJlZW4gY29tcGlsZWQgd2l0aCAnJXMnIABjb21wcmVzc2lvbiBzdXBwb3J0LiAgUGxlYXNlIHVzZSBvbmUgaGF2aW5nIGl0LgBFcnJvciBhbGxvY2F0aW5nIG1lbW9yeSEARVJST1I7IHJldHVybiBjb2RlIGZyb20gcHRocmVhZF9qb2luKCkgaXMgJWQKAElucHV0IGJ1ZmZlciBzaXplIGNhbm5vdCBleGNlZWQgJWQgYnl0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AAAIAAAACQAAAAkAAAAKAAAACgAAAAsAAAALAAAADAAAAAwAAAANAAAADQBBgNsAC/8IDAAIAIwACABMAAgAzAAIACwACACsAAgAbAAIAOwACAAcAAgAnAAIAFwACADcAAgAPAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgAEgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkAcwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkAKwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkAWwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkABwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkAZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBX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AAAJ/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=="),yn,U1;(function(e){e[e.NOSHUFFLE=0]="NOSHUFFLE",e[e.SHUFFLE=1]="SHUFFLE",e[e.BITSHUFFLE=2]="BITSHUFFLE",e[e.AUTOSHUFFLE=-1]="AUTOSHUFFLE"})(U1||(U1={}));const P1=new Set(["blosclz","lz4","lz4hc","snappy","zlib","zstd"]);let ms;const H1=()=>VrA({noInitialRun:!0,wasmBinary:jrA}),XrA=(yn=class{constructor(e=5,A="lz4",t=1,i=0){if(e<0||e>9)throw new Error(`Invalid compression level: '${e}'. It should be between 0 and 9`);if(!P1.has(A))throw new Error(`Invalid compressor '${A}'. Valid compressors include + 'blosclz', 'lz4', 'lz4hc','snappy', 'zlib', 'zstd'.`);if(t<-1||t>2)throw new Error(`Invalid shuffle ${t}. Must be one of 0 (NOSHUFFLE), + 1 (SHUFFLE), 2 (BITSHUFFLE), -1 (AUTOSHUFFLE).`);this.blocksize=i,this.clevel=e,this.cname=A,this.shuffle=t}static fromConfig({blocksize:e,clevel:A,cname:t,shuffle:i}){return new yn(A,t,i,e)}async encode(e){ms||(ms=H1());const A=await ms,t=A.compress(e,this.cname,this.clevel,this.shuffle,this.blocksize),i=new Uint8Array(t);return A.free_result(),i}async decode(e,A){ms||(ms=H1());const t=await ms,i=t.decompress(e),n=new Uint8Array(i);return t.free_result(),A!==void 0?(A.set(n),A):n}},yn.codecId="blosc",yn.COMPRESSORS=[...P1],yn.NOSHUFFLE=0,yn.SHUFFLE=1,yn.BITSHUFFLE=2,yn.AUTOSHUFFLE=-1,yn);var q1=XrA;Fy(T1.codecId,()=>T1);Fy(k1.codecId,()=>k1);Fy(q1.codecId,()=>q1);function ZrA(...e){return e.map((A,t)=>t===0?A.trim().replace(/[/]*$/g,""):A.trim().replace(/(^[/]*|[/]*$)/g,"")).filter(A=>A.length).join("/")}class $rA{async keys(){return[]}async deleteItem(){return!1}async setItem(){return console.warn("Cannot write to read-only store."),!1}}class AoA extends $rA{constructor(t,i=""){super();to(this,"_map");to(this,"_rootPrefix");this._map=t,this._rootPrefix=i}_key(t){return ZrA(this._rootPrefix,t)}async getItem(t){const i=this._map.get(this._key(t));if(!i)throw new qa(t);return await i.arrayBuffer()}async containsItem(t){const i=this._key(t);return this._map.has(i)}}function eoA(e,A){const{SizeT:t,SizeC:i,SizeZ:n,SizeY:r,SizeX:o}=A,s=[t,i,n,r,o];return e.every((a,g)=>s[g]===a)}function toA({shape:e},{Pixels:A}){if(eoA(e,A))return qB("XYZCT");const t=qB(A.DimensionOrder);return t.forEach((i,n)=>{const r=i.toUpperCase(),o=A[`Size${r}`];if(!o)throw Error(`Dimension ${r} is invalid for OME-XML.`);if(e[n]!==o)throw Error("Dimension mismatch between zarr source and OME-XML.")}),t}function ioA(e,A){const t=e.find(n=>n.path.indexOf(A)>0);if(!t)throw Error("Could not find root in store.");const i=t.path.indexOf(A)+A.length;return t.path.slice(0,i)}function noA(e){return typeof e[0]!="string"}async function W_(e,A=""){const t=await JtA(e,A),i=await t.attrs.asObject();let n=["0"],r=["t","c","z","y","x"];if("multiscales"in i){const{datasets:s,axes:a}=i.multiscales[0];n=s.map(g=>g.path),a&&(noA(a)?r=a.map(g=>g.name):r=a)}const o=n.map(s=>t.getItem(s));return{data:await Promise.all(o),rootAttrs:i,labels:r}}function z_(e){const A=Pr(e.shape),[t,i]=e.chunks.slice(A?-3:-2),n=Math.min(t,i);return qG(n)}function roA(e){const A=e.length,t=HG(e);return i=>{if(Array.isArray(i))return[...i];const n=Array(A).fill(0);for(const[r,o]of Object.entries(i))n[t(r)]=o;return n}}const J1={u1:"Uint8",u2:"Uint16",u4:"Uint32",f4:"Float32",f8:"Float64",i1:"Int8",i2:"Int16",i4:"Int32"};function O1(e,A){return{start:e,stop:A,step:1,_slice:!0}}class Rf extends Error{}class j_{constructor(A,t,i){to(this,"_data");to(this,"_indexer");this.labels=t,this.tileSize=i,this._indexer=roA(t),this._data=A}get shape(){return this._data.shape}get dtype(){const A=this._data.dtype.slice(1);if(!(A in J1))throw Error(`Zarr dtype not supported, got ${A}.`);return J1[A]}get _xIndex(){const A=Pr(this._data.shape);return this._data.shape.length-(A?2:1)}_chunkIndex(A,{x:t,y:i}){const n=this._indexer(A);return n[this._xIndex]=t,n[this._xIndex-1]=i,n}_getSlices(A,t){const{height:i,width:n}=Xr(this),[r,o]=[A*this.tileSize,Math.min((A+1)*this.tileSize,n)],[s,a]=[t*this.tileSize,Math.min((t+1)*this.tileSize,i)];if(r===o||s===a)throw new Rf("Tile slice is zero-sized.");if(r<0||s<0||o>n||a>i)throw new Rf("Tile slice is out of bounds.");return[O1(r,o),O1(s,a)]}async _getRaw(A,t){const i=await this._data.getRaw(A,t);if(typeof i!="object")throw new Error("Expected object from getRaw");return i}async getRaster({selection:A,signal:t}){const i=this._chunkIndex(A,{x:null,y:null}),n=await this._getRaw(i,{storeOptions:{signal:t}}),{data:r,shape:[o,s]}=n;return{data:r,width:s,height:o}}async getTile(A){const{x:t,y:i,selection:n,signal:r}=A,[o,s]=this._getSlices(t,i),a=this._chunkIndex(n,{x:o,y:s}),g=await this._getRaw(a,{storeOptions:{signal:r}}),{data:I,shape:[l,c]}=g;return{data:I,height:l,width:c}}onTileError(A){if(!(A instanceof Rf))throw A}}async function Y1(e,A){typeof A!="string"&&(A=await A.text());const t=XG(A)[0],{data:i}=await W_(e,"0"),n=toA(i[0],t),r=z_(i[0]);return{data:i.map(s=>new j_(s,n,r)),metadata:t}}async function ooA(e){const{data:A,rootAttrs:t,labels:i}=await W_(e),n=z_(A[0]);return{data:A.map(o=>new j_(o,i,n)),metadata:t}}async function soA(e,A={}){const t="METADATA.ome.xml",i="data.zarr";if(typeof e=="string"){const s=e.endsWith("/")?e.slice(0,-1):e,a=new qy(s+"/"+i,A),g=await fetch(s+"/"+t,A.fetchOptions);return Y1(a,g)}const n=new Map;let r;for(const s of e)s.name===t?r=s:n.set(s.path,s);if(!r)throw Error("No OME-XML metadata found for store.");const o=new AoA(n,ioA(e,i));return Y1(o,r)}async function aoA(e,A={}){const t=new qy(e,A);if((A==null?void 0:A.type)!=="multiscales")throw Error("Only multiscale OME-Zarr is supported.");return ooA(t)}const goA=`float apply_contrast_limits(float intensity, vec2 contrastLimits) { + return max(0., (intensity - contrastLimits[0]) / max(0.0005, (contrastLimits[1] - contrastLimits[0]))); +} +`,IoA={name:"channel-intensity",defines:{SAMPLER_TYPE:"usampler2D",COLORMAP_FUNCTION:""},fs:goA},loA=255,K1=[0,0,0],X_=6,coA="-apple-system, 'Helvetica Neue', Arial, sans-serif",Yd={Uint8:{format:CA.R8UI,dataFormat:CA.RED_INTEGER,type:CA.UNSIGNED_BYTE,max:2**8-1,sampler:"usampler2D"},Uint16:{format:CA.R16UI,dataFormat:CA.RED_INTEGER,type:CA.UNSIGNED_SHORT,max:2**16-1,sampler:"usampler2D"},Uint32:{format:CA.R32UI,dataFormat:CA.RED_INTEGER,type:CA.UNSIGNED_INT,max:2**32-1,sampler:"usampler2D"},Float32:{format:CA.R32F,dataFormat:CA.RED,type:CA.FLOAT,max:3.4*10**38,sampler:"sampler2D"},Int8:{format:CA.R8I,dataFormat:CA.RED_INTEGER,type:CA.BYTE,max:2**(8-1)-1,sampler:"isampler2D"},Int16:{format:CA.R16I,dataFormat:CA.RED_INTEGER,type:CA.SHORT,max:2**(16-1)-1,sampler:"isampler2D"},Int32:{format:CA.R32I,dataFormat:CA.RED_INTEGER,type:CA.INT,max:2**(32-1)-1,sampler:"isampler2D"},Float64:{format:CA.R32F,dataFormat:CA.RED,type:CA.FLOAT,max:3.4*10**38,sampler:"sampler2D",cast:e=>new Float32Array(e)}};var sa=(e=>(e.MAX_INTENSITY_PROJECTION="Maximum Intensity Projection",e.MIN_INTENSITY_PROJECTION="Minimum Intensity Projection",e.ADDITIVE="Additive",e))(sa||{});function CoA(e){return[...Array(e).keys()]}function Z_(e,A,t){for(let i=0;iA[g]?a:[n,n]),o=X_-r.length;if(o<0)throw Error(`${r.lengths} channels passed in, but only 6 are allowed.`);return Z_(r,[n,n],o).reduce((a,g)=>a.concat(g),[])}function AM(e){var n;const{x:A,y:t,z:i}=((n=e==null?void 0:e.meta)==null?void 0:n.physicalSizes)??{};if(A!=null&&A.size&&(t!=null&&t.size)&&(i!=null&&i.size)){const r=Math.min(i.size,A.size,t.size),o=[A.size/r,t.size/r,i.size/r];return new he().scale(o)}return new he().identity()}function jy(e){const A=new Tl().makeViewport({viewState:e,height:e.height,width:e.width});return[A.unproject([0,0]),A.unproject([A.width,0]),A.unproject([A.width,A.height]),A.unproject([0,A.height])]}const XB=[1,2,3,4,5,10,20,25,50,100,200,250,500,1e3],BoA=XB[0],EoA=XB[XB.length-1],Kd=[{symbol:"Y",exponent:24},{symbol:"Z",exponent:21},{symbol:"E",exponent:18},{symbol:"P",exponent:15},{symbol:"T",exponent:12},{symbol:"G",exponent:9},{symbol:"M",exponent:6},{symbol:"k",exponent:3},{symbol:"h",exponent:2},{symbol:"da",exponent:1},{symbol:"",exponent:0},{symbol:"d",exponent:-1},{symbol:"c",exponent:-2},{symbol:"m",exponent:-3},{symbol:"µ",exponent:-6},{symbol:"n",exponent:-9},{symbol:"p",exponent:-12},{symbol:"f",exponent:-15},{symbol:"a",exponent:-18},{symbol:"z",exponent:-21},{symbol:"y",exponent:-24}];function uoA(e,A){if(!A||A==="m")return e;if(A.length>1){let t=A.substring(0,A.length-1);t==="u"&&(t="µ");const i=Kd.find(n=>n.symbol===t);if(i)return e*10**i.exponent}throw new Error("Received unknown unit")}function hoA(e){let A=0;(eEoA)&&(A=Math.floor(Math.log10(e)));let t=Kd.find(o=>o.exponent%3===0&&o.exponent<=A),i=e/10**t.exponent;i>500&&i<=1e3&&(t=Kd.find(o=>o.exponent%3===0&&o.exponent<=A+3),i=e/10**t.exponent);const n=XB.find(o=>o>i);return[n*10**t.exponent,n,t.symbol]}const foA=`#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); +} +`,QoA=`#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); +} +`,V1={fs:foA,vs:QoA};function doA(e,A){const t=ed(e,Se.TEXTURE_FLOAT),i=ed(e,Se.TEXTURE_FILTER_LINEAR_FLOAT);if(!t)throw new Error("WebGL1 context does not support floating point textures. Unable to display raster data.");return!i&&A===CA.LINEAR?(console.warn("LINEAR filtering not supported in WebGL1 context. Falling back to NEAREST."),CA.NEAREST):A}function W1(e,A,t){if(!te(A))return{format:CA.LUMINANCE,dataFormat:CA.LUMINANCE,type:CA.FLOAT,sampler:"sampler2D",shaderModule:V1,filter:doA(A,t),cast:s=>new Float32Array(s)};const i=t===CA.LINEAR,n={...V1},r=`#version 300 es +`;n.fs=r.concat(n.fs),n.vs=r.concat(n.vs);const o=zy(i?"Float32":e);return{shaderModule:n,filter:t,cast:i?s=>new Float32Array(s):s=>s,...o}}const poA={pickable:{type:"boolean",value:!0,compare:!0},coordinateSystem:HA.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:CA.NEAREST,compare:!0}},cu=class extends si{getShaders(){const{dtype:e,interpolation:A}=this.props,{shaderModule:t,sampler:i}=W1(e,this.context.gl,A),n=this._isHookDefinedByExtensions("fs:DECKGL_PROCESS_INTENSITY"),r={...IoA,inject:{}};return n||(r.inject["fs:DECKGL_PROCESS_INTENSITY"]=` + intensity = apply_contrast_limits(intensity, contrastLimits); + `),super.getShaders({...t,defines:{SAMPLER_TYPE:i},modules:[zr,jr,r]})}_isHookDefinedByExtensions(e){const{extensions:A}=this.props;return A==null?void 0:A.some(t=>{const i=t.getShaders(),{inject:n={},modules:r=[]}=i,o=n[e],s=r.some(a=>a==null?void 0:a.inject[e]);return o||s})}initializeState(){const{gl:e}=this.context;e.pixelStorei(CA.UNPACK_ALIGNMENT,1),e.pixelStorei(CA.PACK_ALIGNMENT,1),this.getAttributeManager().add({positions:{size:3,type:CA.DOUBLE,fp64:this.use64bitPositions(),update:this.calculatePositions,noAlloc:!0}}),this.setState({numInstances:1,positions:new Float64Array(12)});const t=is.getDefaultProgramManager(e),i="fs:DECKGL_MUTATE_COLOR(inout vec4 rgba, float intensity0, float intensity1, float intensity2, float intensity3, float intensity4, float intensity5, vec2 vTexCoord)",n="fs:DECKGL_PROCESS_INTENSITY(inout float intensity, vec2 contrastLimits, int channelIndex)";t._hookFunctions.includes(i)||t.addShaderHook(i),t._hookFunctions.includes(n)||t.addShaderHook(n)}finalizeState(){super.finalizeState(),this.state.textures&&Object.values(this.state.textures).forEach(e=>e&&e.delete())}updateState({props:e,oldProps:A,changeFlags:t,...i}){var r,o;if(super.updateState({props:e,oldProps:A,changeFlags:t,...i}),t.extensionsChanged||e.interpolation!==A.interpolation){const{gl:s}=this.context;this.state.model&&this.state.model.delete(),this.setState({model:this._getModel(s)}),this.getAttributeManager().invalidateAll()}(e.channelData!==A.channelData&&((r=e.channelData)==null?void 0:r.data)!==((o=A.channelData)==null?void 0:o.data)||e.interpolation!==A.interpolation)&&this.loadChannelTextures(e.channelData);const n=this.getAttributeManager();e.bounds!==A.bounds&&n.invalidate("positions")}_getModel(e){return e?new fi(e,{...this.getShaders(),id:this.props.id,geometry:new Cn({drawMode:CA.TRIANGLE_FAN,vertexCount:4,attributes:{texCoords:new Float32Array([0,1,0,0,1,0,1,1])}}),isInstanced:!1}):null}calculatePositions(e){const{positions:A}=this.state,{bounds:t}=this.props;A[0]=t[0],A[1]=t[1],A[2]=0,A[3]=t[0],A[4]=t[3],A[5]=0,A[6]=t[2],A[7]=t[3],A[8]=0,A[9]=t[2],A[10]=t[1],A[11]=0,e.value=A}draw({uniforms:e}){const{textures:A,model:t}=this.state;if(A&&t){const{contrastLimits:i,domain:n,dtype:r,channelsVisible:o}=this.props,s=Object.values(A).filter(g=>g).length,a=$_({contrastLimits:i.slice(0,s),channelsVisible:o.slice(0,s),domain:n,dtype:r});t.setUniforms({...e,contrastLimits:a,...A}).draw()}}loadChannelTextures(e){const A={channel0:null,channel1:null,channel2:null,channel3:null,channel4:null,channel5:null};this.state.textures&&Object.values(this.state.textures).forEach(t=>t&&t.delete()),e&&Object.keys(e).length>0&&e.data&&(e.data.forEach((t,i)=>{A[`channel${i}`]=this.dataToTexture(t,e.width,e.height)},this),this.setState({textures:A}))}dataToTexture(e,A,t){var r;const{interpolation:i}=this.props,n=W1(this.props.dtype,this.context.gl,i);return new Tt(this.context.gl,{width:A,height:t,data:((r=n.cast)==null?void 0:r.call(n,e))??e,mipmaps:!1,parameters:{[CA.TEXTURE_MIN_FILTER]:n.filter,[CA.TEXTURE_MAG_FILTER]:n.filter,[CA.TEXTURE_WRAP_S]:CA.CLAMP_TO_EDGE,[CA.TEXTURE_WRAP_T]:CA.CLAMP_TO_EDGE},format:n.format,dataFormat:n.dataFormat,type:n.type})}};cu.layerName="XRLayer";cu.defaultProps=poA;const Ln={WhiteIsZero:0,BlackIsZero:1,RGB:2,Palette:3,TransparencyMask:4,CMYK:5,YCbCr:6,CIELab:8,ICCLab:9},eM={...zE.defaultProps,pickable:{type:"boolean",value:!0,compare:!0},coordinateSystem:HA.CARTESIAN},yoA=(e,A)=>{const t=A?"true":"false",i=`vec3(${(A||[0,0,0]).map(n=>String(n/255)).join(",")})`;switch(e){case Ln.RGB:return`color[3] = (${t} && (color.rgb == ${i})) ? 0.0 : color.a;`;case Ln.WhiteIsZero:return` float value = 1.0 - (color.r / 256.0); + color = vec4(value, value, value, (${t} && vec3(value, value, value) == ${i}) ? 0.0 : color.a); + `;case Ln.BlackIsZero:return` float value = (color.r / 256.0); + color = vec4(value, value, value, (${t} && vec3(value, value, value) == ${i}) ? 0.0 : color.a); + `;case Ln.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] = (${t} && distance(color.rgb, ${i}) < 0.01) ? 0.0 : color.a; + `;default:return console.error("Unsupported photometric interpretation or none provided. No transformation will be done to image data"),""}},moA=e=>{switch(e){case Ln.RGB:return[0,0,0,0];case Ln.WhiteIsZero:return[255,255,255,0];case Ln.BlackIsZero:return[0,0,0,0];case Ln.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 Xy extends zE{_getModel(A){const{photometricInterpretation:t,transparentColorInHook:i}=this.props,n=yoA(t,i);return A?new fi(A,{...this.getShaders(),id:this.props.id,geometry:new Cn({drawMode:CA.TRIANGLES,vertexCount:6}),isInstanced:!1,inject:{"fs:DECKGL_FILTER_COLOR":n}}):null}}const zl=class extends Ti{initializeState(e){const{gl:A}=this.context;A.pixelStorei(CA.UNPACK_ALIGNMENT,1),A.pixelStorei(CA.PACK_ALIGNMENT,1),super.initializeState(e)}renderLayers(){const{photometricInterpretation:e,transparentColor:A}=this.props,t=moA(e);return new Xy(this.props,{transparentColor:t,transparentColorInHook:A,id:`${this.props.id}-wrapped`})}};zl.layerName="BitmapLayer";zl.PHOTOMETRIC_INTERPRETATIONS=Ln;zl.defaultProps={...eM,image:{type:"object",value:{},compare:!0},transparentColor:{type:"array",value:[0,0,0],compare:!0},photometricInterpretation:{type:"number",value:2,compare:!0}};Xy.defaultProps=eM;Xy.layerName="BitmapLayerWrapper";function woA(e){const{bbox:{left:A,top:t,right:i,bottom:n},index:{x:r,y:o,z:s}}=e.tile,{data:a,id:g,loader:I,maxZoom:l}=e;if([A,n,i,t].some(u=>u<0)||!a)return null;const c=I[0],{height:C,width:B}=Xr(c),E=[A,a.heightz1.length)throw new Error("Too many colors");return z1.slice(0,e)}function Am({colors:e,channelsVisible:A}){const t=e.map((r,o)=>A[o]?r.map(s=>s/loA):K1),i=X_-t.length;return dsA(t,K1,i).reduce((r,o)=>r.concat(o),[])}const YC={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}},Va=class extends ka{getShaders(){return{...super.getShaders(),modules:[QsA]}}draw(){var s;const{colors:e,channelsVisible:A,opacity:t=YC.opacity.value,transparentColor:i=YC.transparentColor.value,useTransparentColor:n=YC.useTransparentColor.value}=this.props,o={colors:Am({channelsVisible:A||this.selections.map(()=>!0),colors:e||$y(this.props.selections.length)}),opacity:t,transparentColor:(i||[0,0,0]).map(a=>a/255),useTransparentColor:!!n};(s=this.state.model)==null||s.setUniforms(o)}};Va.extensionName="ColorPaletteExtension";Va.defaultProps=YC;const psA=`// 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.)); +} +`,ysA={name:"lens-module",fs:psA,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; + `}},xs={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}},$B=class extends ka{getShaders(){return{...super.getShaders(),modules:[ysA]}}initializeState(){const e=this.getCurrentLayer();if(e.isComposite)return;const A=()=>{const{viewportId:t}=e.props,{lensRadius:i=xs.lensRadius.value}=this.props;if(!t){e.setState({unprojectLensBounds:[0,0,0,0]});return}const{mousePosition:n}=e.context,r=e.context.deck.viewManager.views.filter(a=>a.id===t)[0],o=e.context.deck.viewManager.viewState[t],s=r.makeViewport({...o,viewState:o});if(n&&s.containsPixel(n)){const a={x:n.x-s.x,y:n.y-s.y},I=[[a.x-i,a.y],[a.x,a.y+i],[a.x+i,a.y],[a.x,a.y-i]].map((l,c)=>s.unproject(l)[c%2]);e.setState({unprojectLensBounds:I})}else e.setState({unprojectLensBounds:[0,0,0,0]})};this.context.deck&&this.context.deck.eventManager.on({pointermove:A,pointerleave:A,wheel:A}),this.setState({onMouseMove:A,unprojectLensBounds:[0,0,0,0]})}draw(){var m;const{unprojectLensBounds:e=[0,0,0,0]}=this.state,{bounds:A,lensEnabled:t=xs.lensEnabled.value,lensSelection:i=xs.lensSelection.value,lensBorderColor:n=xs.lensBorderColor.value,lensBorderRadius:r=xs.lensBorderRadius.value,colors:o,channelsVisible:s}=this.props,[a,g,I,l]=e,[c,C,B,E]=A,u=(a-c)/(B-c),h=(g-E)/(C-E),f=(I-c)/(B-c),Q=(l-E)/(C-E),d=Am({channelsVisible:s||this.selections.map(()=>!0),colors:o||$y(this.props.selections.length)}),w={majorLensAxis:(f-u)/2,minorLensAxis:(h-Q)/2,lensCenter:[(f+u)/2,(h+Q)/2],lensEnabled:t,lensSelection:i,lensBorderColor:n,lensBorderRadius:r,colors:d};(m=this.state.model)==null||m.setUniforms(w)}finalizeState(){var e,A,t;this.context.deck&&this.context.deck.eventManager.off({pointermove:(e=this.state)==null?void 0:e.onMouseMove,pointerleave:(A=this.state)==null?void 0:A.onMouseMove,wheel:(t=this.state)==null?void 0:t.onMouseMove})}};$B.extensionName="LensExtension";$B.defaultProps=xs;function msA(e,A){const t=`${A} + +vec4 colormap(float intensity, float opacity) { + return vec4(apply_cmap(min(1.,intensity)).xyz, opacity); +}`;return{name:`additive-colormap-3d-${e}`,fs:t}}const nM={colormap:{type:"string",value:"viridis",compare:!0}},Wa=class extends ka{constructor(...A){super(A),this.opts=this.opts||{}}getShaders(){var i;const A=((i=this==null?void 0:this.props)==null?void 0:i.colormap)||nM.colormap.value,t=iM[A];return{...super.getShaders(),modules:[msA(A,t)]}}updateState({props:A,oldProps:t,changeFlags:i,...n}){if(super.updateState({props:A,oldProps:t,changeFlags:i,...n}),A.colormap!==t.colormap){const{gl:r}=this.context;this.state.model&&(this.state.model.delete(),this.setState({model:this._getModel(r)}))}}};Wa.extensionName="BaseExtension";Wa.defaultProps=nM;const wsA="",vsA=` 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; +`,SsA="",rM=class extends Wa{constructor(A){super(A),this.rendering={_BEFORE_RENDER:wsA,_RENDER:vsA,_AFTER_RENDER:SsA}}};rM.extensionName="AdditiveBlendExtension";const DsA=` float maxVals[6] = float[6](-1.0, -1.0, -1.0, -1.0, -1.0, -1.0); +`,RsA=` 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]; + } + } +`,xsA=` 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); +`,oM=class extends Wa{constructor(A){super(A),this.rendering={_BEFORE_RENDER:DsA,_RENDER:RsA,_AFTER_RENDER:xsA}}};oM.extensionName="MaximumIntensityProjectionExtension";const FsA=` float minVals[6] = float[6](1. / 0., 1. / 0., 1. / 0., 1. / 0., 1. / 0., 1. / 0.); +`,NsA=` 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]; + } + } +`,LsA=` 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); +`,sM=class extends Wa{constructor(A){super(A),this.rendering={_BEFORE_RENDER:FsA,_RENDER:NsA,_AFTER_RENDER:LsA}}};sM.extensionName="MinimumIntensityProjectionExtension";const bsA={BaseExtension:Wa,AdditiveBlendExtension:rM,MaximumIntensityProjectionExtension:oM,MinimumIntensityProjectionExtension:sM},GsA={colors:{type:"array",value:null,compare:!0}},za=class extends ka{constructor(...e){super(e),this.opts=this.opts||{}}draw(){var n;const{colors:e,channelsVisible:A}=this.props,i={colors:Am({channelsVisible:A||this.selections.map(()=>!0),colors:e||$y(this.props.selections.length)})};(n=this.state.model)==null||n.setUniforms(i)}};za.extensionName="BaseExtension";za.defaultProps=GsA;const _sA="",MsA=` 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; + } +`,ksA="",aM=class extends za{constructor(e){super(e),this.rendering={_BEFORE_RENDER:_sA,_RENDER:MsA,_AFTER_RENDER:ksA}}};aM.extensionName="AdditiveBlendExtension";const TsA=` float maxVals[6] = float[6](-1.0, -1.0, -1.0, -1.0, -1.0, -1.0); +`,UsA=` 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]; + } + } +`,PsA=` 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); +`,gM=class extends za{constructor(e){super(e),this.rendering={_BEFORE_RENDER:TsA,_RENDER:UsA,_AFTER_RENDER:PsA}}};gM.extensionName="MaximumIntensityProjectionExtension";const HsA=` float minVals[6] = float[6](1. / 0., 1. / 0., 1. / 0., 1. / 0., 1. / 0., 1. / 0.); +`,qsA=` 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]; + } + } +`,JsA=` 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); +`,IM=class extends za{constructor(e){super(e),this.rendering={_BEFORE_RENDER:HsA,_RENDER:qsA,_AFTER_RENDER:JsA}}};IM.extensionName="MinimumIntensityProjectionExtension";const Cu={BaseExtension:za,AdditiveBlendExtension:aM,MaximumIntensityProjectionExtension:gM,MinimumIntensityProjectionExtension:IM},OsA={pickable:{type:"boolean",value:!0,compare:!0},coordinateSystem:HA.CARTESIAN,contrastLimits:{type:"array",value:[],compare:!0},channelsVisible:{type:"array",value:[],compare:!0},selections:{type:"array",value:[],compare:!0},domain:{type:"array",value:[],compare:!0},viewportId:{type:"string",value:"",compare:!0},loader:{type:"object",value:{getRaster:async()=>({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:CA.NEAREST,compare:!0},extensions:{type:"array",value:[new Va],compare:!0}},jl=class extends Ti{finalizeState(){this.state.abortController.abort()}updateState({props:e,oldProps:A}){const t=e.loader!==A.loader,i=e.selections!==A.selections;if(t||i){const{loader:n,selections:r=[],onViewportLoad:o}=this.props,s=new AbortController;this.setState({abortController:s});const{signal:a}=s,g=l=>n.getRaster({selection:l,signal:a}),I=r.map(g);Promise.all(I).then(l=>{var C,B;const c={data:l.map(E=>E.data),width:(C=l[0])==null?void 0:C.width,height:(B=l[0])==null?void 0:B.height};Pr(n.shape)&&(c.data=c.data[0],c.data.length===c.width*c.height*3&&(c.format=CA.RGB,c.dataFormat=CA.RGB)),o&&o(c),this.setState({...c})}).catch(l=>{if(l!==xy)throw l})}}getPickingInfo({info:e,sourceLayer:A}){return e.sourceLayer=A,e.tile=A.props.tile,e}renderLayers(){const{loader:e,id:A}=this.props,{dtype:t}=e,{width:i,height:n,data:r}=this.state;if(!(i&&n))return null;const o=[0,n,i,0];if(Pr(e.shape)){const{photometricInterpretation:s=2}=e.meta;return new zl(this.props,{image:this.state,photometricInterpretation:s,bounds:o,id:`image-sub-layer-${o}-${A}`,extensions:[]})}return new cu(this.props,{channelData:{data:r,height:n,width:i},bounds:o,id:`image-sub-layer-${o}-${A}`,dtype:t})}};jl.layerName="ImageLayer";jl.defaultProps=OsA;const YsA={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 Va],compare:!0}},em=class extends Ti{renderLayers(){const{loader:e,selections:A,opacity:t,viewportId:i,onTileError:n,onHover:r,id:o,onClick:s,modelMatrix:a,excludeBackground:g,refinementStrategy:I}=this.props,{tileSize:l,dtype:c}=e[0],C=async({index:{x:m,y:v,z:x},signal:D})=>{if(!A||A.length===0)return null;const F=Math.round(-x),N=k=>{const P={x:m,y:v,selection:k,signal:D};return e[F].getTile(P)};try{const k=await Promise.all(A.map(N)),P={data:k.map(H=>H.data),width:k[0].width,height:k[0].height};return Pr(e[F].shape)&&(P.data=P.data[0],P.data.length===P.width*P.height*3&&(P.format=CA.RGB,P.dataFormat=CA.RGB)),P}catch(k){if(k===xy)return null;throw k}},{height:B,width:E}=Xr(e[0]),u=new Zy(this.props,{id:`Tiled-Image-${o}`,getTileData:C,dtype:c,tileSize:l,zoomOffset:Math.round(Math.log2(a?a.getScale()[0]:1)),extent:[0,0,E,B],minZoom:Math.round(-(e.length-1)),maxZoom:0,refinementStrategy:I||(t===1?"best-available":"no-overlap"),updateTriggers:{getTileData:[e,A]},onTileError:n||e[0].onTileError}),h=e[e.length-1],f=typeof h.getRaster=="function",Q=a?a.clone():new he;return[f&&!g&&new jl(this.props,{id:`Background-Image-${o}`,loader:h,modelMatrix:Q.scale(2**(e.length-1)),visible:!i||this.context.viewport.id===i,onHover:r,onClick:s,interpolation:CA.LINEAR,onViewportLoad:null}),u]}};em.layerName="MultiscaleImageLayer";em.defaultProps=YsA;const KsA={pickable:{type:"boolean",value:!0,compare:!0},loader:{type:"object",value:{getRaster:async()=>({data:[],height:0,width:0}),getRasterSize:()=>({height:0,width:0}),dtype:"h,filled:!1,stroked:!0,getLineColor:n,getLineWidth:r*2**t}),E=new $I({id:`viewport-outline-${A}`,coordinateSystem:HA.CARTESIAN,data:[[[0,0],[g*a,0],[g*a,I*a],[0,I*a]]],getPolygon:h=>h,filled:!1,stroked:!0,getLineColor:o,getLineWidth:s*2**t});return[C,B,E]}};tm.layerName="OverviewLayer";tm.defaultProps=KsA;function VsA(e,A,t){const i=e[2][0]-e[0][0],n=e[2][1]-e[0][1];switch(A){case"bottom-right":{const r=e[2][1]-n*t,o=e[2][0]-i*t;return[r,o]}case"top-right":{const r=e[0][1]+n*t,o=e[2][0]-i*t;return[r,o]}case"top-left":{const r=e[0][1]+n*t,o=e[0][0]+i*t;return[r,o]}case"bottom-left":{const r=e[2][1]-n*t,o=e[0][0]+i*t;return[r,o]}default:throw new Error(`Position ${A} not found`)}}const WsA={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},snap:{type:"boolean",value:!1,compare:!0}},Bu=class extends Ti{renderLayers(){const{id:e,unit:A,size:t,position:i,viewState:n,length:r,snap:o}=this.props,s=jy(n),{zoom:a}=n,I=(s[2][0]-s[0][0])*.05,l=Math.max(2**(-a+1.5),(s[2][1]-s[0][1])*.007);let c=I,C=(I*t).toPrecision(5),B=A;if(o){const v=uoA(t,A),x=I*v,[D,F,N]=hoA(x);c=D/v,C=F,B=`${N}m`}const[E,u]=VsA(s,i,r),h=u+I,f=i.endsWith("-left"),Q=new CI({id:`scale-bar-length-${e}`,coordinateSystem:HA.CARTESIAN,data:[[[f?u:h-c,E],[f?u+c:h,E]]],getSourcePosition:v=>v[0],getTargetPosition:v=>v[1],getWidth:2,getColor:[220,220,220]}),d=new CI({id:`scale-bar-height-left-${e}`,coordinateSystem:HA.CARTESIAN,data:[[[f?u:h-c,E-l],[f?u:h-c,E+l]]],getSourcePosition:v=>v[0],getTargetPosition:v=>v[1],getWidth:2,getColor:[220,220,220]}),w=new CI({id:`scale-bar-height-right-${e}`,coordinateSystem:HA.CARTESIAN,data:[[[f?u+c:h,E-l],[f?u+c:h,E+l]]],getSourcePosition:v=>v[0],getTargetPosition:v=>v[1],getWidth:2,getColor:[220,220,220]}),m=new ql({id:`units-label-layer-${e}`,coordinateSystem:HA.CARTESIAN,data:[{text:`${C}${B}`,position:[f?u+I*.5:h-I*.5,E+l*4]}],getColor:[220,220,220,255],getSize:12,fontFamily:coA,sizeUnits:"meters",sizeScale:2**-a,characterSet:[...B.split(""),...CoA(10).map(v=>String(v)),".","e","+"]});return[Q,d,w,m]}};Bu.layerName="ScaleBarLayer";Bu.defaultProps=WsA;const zsA=`#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; +} +`,jsA=`#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); +} +`,XsA={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); + } + `},ZsA=[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],j1=1,$sA={pickable:!1,coordinateSystem:HA.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 he,compare:!0},channelsVisible:{type:"array",value:[],compare:!0},extensions:{type:"array",value:[new Cu.AdditiveBlendExtension],compare:!0}};function X1(){const e=zy("Float32");return{...e,sampler:e.sampler.replace("2D","3D"),cast:A=>new Float32Array(A)}}function AaA(e){let A={};if(e.forEach(t=>{A=t.rendering}),!A._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 A}const im=class extends si{initializeState(){const{gl:e}=this.context;e.pixelStorei(CA.UNPACK_ALIGNMENT,1),e.pixelStorei(CA.PACK_ALIGNMENT,1);const A=is.getDefaultProgramManager(e),t="fs:DECKGL_PROCESS_INTENSITY(inout float intensity, vec2 contrastLimits, int channelIndex)";A._hookFunctions.includes(t)||A.addShaderHook(t)}_isHookDefinedByExtensions(e){const{extensions:A}=this.props;return A==null?void 0:A.some(t=>{const i=t.getShaders();if(i){const{inject:n={},modules:r=[]}=i,o=n[e],s=r.some(a=>a.inject&&(a==null?void 0:a.inject[e]));return o||s}return!1})}getShaders(){const{clippingPlanes:e,extensions:A}=this.props,{sampler:t}=X1(),{_BEFORE_RENDER:i,_RENDER:n,_AFTER_RENDER:r}=AaA(A),o=this._isHookDefinedByExtensions("fs:DECKGL_PROCESS_INTENSITY"),s={inject:{},...XsA};return o||(s.inject["fs:DECKGL_PROCESS_INTENSITY"]=` + intensity = apply_contrast_limits(intensity, contrastLimits); + `),super.getShaders({vs:zsA,fs:jsA.replace("_BEFORE_RENDER",i).replace("_RENDER",n).replace("_AFTER_RENDER",r),defines:{SAMPLER_TYPE:t,NUM_PLANES:String(e.length||j1)},modules:[s]})}finalizeState(){super.finalizeState(),this.state.textures&&Object.values(this.state.textures).forEach(e=>e&&e.delete())}updateState({props:e,oldProps:A,changeFlags:t}){var i,n;if(t.extensionsChanged||e.colormap!==A.colormap||e.renderingMode!==A.renderingMode||e.clippingPlanes.length!==A.clippingPlanes.length){const{gl:r}=this.context;this.state.model&&this.state.model.delete(),this.setState({model:this._getModel(r)})}e.channelData&&((i=e==null?void 0:e.channelData)==null?void 0:i.data)!==((n=A==null?void 0:A.channelData)==null?void 0:n.data)&&this.loadTexture(e.channelData)}_getModel(e){return e?new fi(e,{...this.getShaders(),geometry:new Cn({drawMode:e.TRIANGLE_STRIP,attributes:{positions:new Float32Array(ZsA)}})}):null}draw({uniforms:e}){const{textures:A,model:t,scaleMatrix:i}=this.state,{contrastLimits:n,xSlice:r,ySlice:o,zSlice:s,modelMatrix:a,channelsVisible:g,domain:I,dtype:l,clippingPlanes:c,resolutionMatrix:C}=this.props,{viewMatrix:B,viewMatrixInverse:E,projectionMatrix:u}=this.context.viewport;if(A&&t&&i){const h=$_({contrastLimits:n,channelsVisible:g,domain:I,dtype:l}),f=i.clone().invert(),Q=C.clone().invert(),d=Z_(c.map(v=>v.clone().transform(f).transform(Q)),new To([1,0,0]),c.length||j1),w=d.map(v=>v.normal).flat(),m=d.map(v=>v.distance);t.setUniforms({...e,...A,contrastLimits:h,xSlice:new Float32Array(r?r.map(v=>v/i[0]/C[0]):[0,1]),ySlice:new Float32Array(o?o.map(v=>v/i[5]/C[5]):[0,1]),zSlice:new Float32Array(s?s.map(v=>v/i[10]/C[10]):[0,1]),eye_pos:new Float32Array([E[12],E[13],E[14]]),view:B,proj:u,scale:i,resolution:C,model:a||new he,normals:w,distances:m}).draw()}}loadTexture(e){const A={volume0:null,volume1:null,volume2:null,volume3:null,volume4:null,volume5:null};if(this.state.textures&&Object.values(this.state.textures).forEach(t=>t&&t.delete()),e&&Object.keys(e).length>0&&e.data){const{height:t,width:i,depth:n}=e;e.data.forEach((r,o)=>{A[`volume${o}`]=this.dataToTexture(r,i,t,n)},this),this.setState({textures:A,scaleMatrix:new he().scale(this.props.physicalSizeScalingMatrix.transformPoint([i,t,n]))})}}dataToTexture(e,A,t,i){var o;const n=X1();return new RL(this.context.gl,{width:A,height:t,depth:i,data:((o=n.cast)==null?void 0:o.call(n,e))??e,format:n.dataFormat,dataFormat:n.format,type:n.type,mipmaps:!1,parameters:{[CA.TEXTURE_MIN_FILTER]:CA.LINEAR,[CA.TEXTURE_MAG_FILTER]:CA.LINEAR,[CA.TEXTURE_WRAP_S]:CA.CLAMP_TO_EDGE,[CA.TEXTURE_WRAP_T]:CA.CLAMP_TO_EDGE,[CA.TEXTURE_WRAP_R]:CA.CLAMP_TO_EDGE}})}};im.layerName="XR3DLayer";im.defaultProps=$sA;async function eaA({source:e,selection:A,onUpdate:t=()=>{},downsampleDepth:i=1,signal:n}){const{shape:r,labels:o,dtype:s}=e,{height:a,width:g}=Xr(e),I=r[o.indexOf("z")],l=Math.max(1,Math.floor(I/i)),c=a*g,C=`${s}Array`,B=globalThis[C],E=new B(c*l);return await Promise.all(new Array(l).fill(0).map(async(u,h)=>{const f={...A,z:h*i},{data:Q}=await e.getRaster({selection:f,signal:n});let d=0;for(t();dnew ql({id:`text-${t}`,coordinateSystem:HA.CARTESIAN,data:[{text:e,position:A.position}],getColor:[220,220,220,255],getSize:25,sizeUnits:"meters",sizeScale:2**-A.zoom,fontFamily:"Helvetica"}),taA={pickable:!1,coordinateSystem:HA.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 Cu.AdditiveBlendExtension],compare:!0}},nm=class extends Ti{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:e,props:A}){const t=A.loader!==e.loader,i=A.resolution!==e.resolution,n=A.selections!==e.selections;if(i&&this.clearState(),t||n||i){const{loader:r,selections:o=[],resolution:s,onViewportLoad:a}=this.props,g=r[s];let I=0;const l=(g.shape[g.labels.indexOf("z")]>>s)*o.length,c=()=>{I+=.5/l,this.props.onUpdate&&this.props.onUpdate({progress:I}),this.setState({progress:I})},C=new AbortController;this.setState({abortController:C});const{signal:B}=C,E=o.map(h=>eaA({selection:h,source:g,onUpdate:c,downsampleDepth:2**s,signal:B})),u=AM(r[s]);Promise.all(E).then(h=>{var Q,d,w;a&&a(h);const f={data:h.map(m=>m.data),width:(Q=h[0])==null?void 0:Q.width,height:(d=h[0])==null?void 0:d.height,depth:(w=h[0])==null?void 0:w.depth};this.setState({...f,physicalSizeScalingMatrix:u,resolutionMatrix:new he().scale(2**s)})})}}renderLayers(){const{loader:e,id:A,resolution:t,useProgressIndicator:i,useWebGL1Warning:n}=this.props,{dtype:r}=e[t],{data:o,width:s,height:a,depth:g,progress:I,physicalSizeScalingMatrix:l,resolutionMatrix:c}=this.state,{gl:C}=this.context;if(!te(C)&&n){const{viewport:B}=this.context;return Z1(["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(` +`),B,A)}if(!(s&&a)&&i){const{viewport:B}=this.context;return Z1(`Loading Volume ${String((I||0)*100).slice(0,5)}%...`,B,A)}return new im(this.props,{channelData:{data:o,width:s,height:a,depth:g},id:`XR3DLayer-0-${a}-${s}-0-${t}-${A}`,physicalSizeScalingMatrix:l,parameters:{[CA.CULL_FACE]:!0,[CA.CULL_FACE_MODE]:CA.FRONT,[CA.DEPTH_TEST]:!1,blendFunc:[CA.SRC_ALPHA,CA.ONE],blend:!0},resolutionMatrix:c,dtype:r})}};nm.layerName="VolumeLayer";nm.defaultProps=taA;const iaA=typeof window<"u"?p.useLayoutEffect:p.useEffect,naA=iaA;function AE(e,A){for(;e;){if(e===A)return!0;e=Object.getPrototypeOf(e)}return!1}const raA={position:"absolute",zIndex:-1};function lM(e,A){if(typeof e=="function")return e(A);if(Array.isArray(e))return e.map(t=>lM(t,A));if(Eu(e)){if(oaA(e))return A.style=raA,p.cloneElement(e,A);if(saA(e))return p.cloneElement(e,A)}return e}function Eu(e){return e&&typeof e=="object"&&"type"in e||!1}function oaA(e){const A=e.type,t=A&&A.defaultProps;return t&&t.mapStyle}function saA(e){const A=e.type;return A&&A.deckGLViewProps}function Vd(e){if(typeof e=="function")return p.createElement(Ur,{},e);if(Array.isArray(e))return e.map(Vd);if(Eu(e)){if(e.type===p.Fragment)return Vd(e.props.children);if(AE(e.type,Ur))return e}return e}function aaA({children:e,layers:A=[],views:t=null}){const i=[],n=[],r={};return p.Children.forEach(Vd(e),o=>{if(Eu(o)){const s=o.type;if(AE(s,si)){const a=gaA(s,o.props);n.push(a)}else i.push(o);if(AE(s,Ur)&&s!==Ur&&o.props.id){const a=new s(o.props);r[a.id]=a}}else o&&i.push(o)}),Object.keys(r).length>0&&(Array.isArray(t)?t.forEach(o=>{r[o.id]=o}):t&&(r[t.id]=t),t=Object.values(r)),A=n.length>0?[...n,...A]:A,{layers:A,children:i,views:t}}function gaA(e,A){const t={},i=e.defaultProps||{};for(const n in A)i[n]!==A[n]&&(t[n]=A[n]);return new e(t)}function IaA({children:e,deck:A,ContextProvider:t}){const{viewManager:i}=A||{};if(!i||!i.views.length)return[];const n={},r=i.views[0].id;for(const o of e){let s=r,a=o;Eu(o)&&AE(o.type,Ur)&&(s=o.props.id||r,a=o.props.children);const g=i.getViewport(s),I=i.getViewState(s);if(g){const{x:l,y:c,width:C,height:B}=g;a=lM(a,{x:l,y:c,width:C,height:B,viewport:g,viewState:I}),n[s]||(n[s]={viewport:g,children:[]}),n[s].children.push(a)}}return Object.keys(n).map(o=>{const{viewport:s,children:a}=n[o],{x:g,y:I,width:l,height:c}=s,C={position:"absolute",left:g,top:I,width:l,height:c},B="view-".concat(o),E=p.createElement("div",{key:B,id:B,style:C},...a);if(t){const u={viewport:s,container:A.canvas.offsetParent,eventManager:A.eventManager,onViewStateChange:h=>{h.viewId=o,A._onViewStateChange(h)}};return p.createElement(t,{key:B,value:u},E)}return E})}const laA={mixBlendMode:null};function caA({width:e,height:A,style:t}){const i={position:"absolute",zIndex:0,left:0,top:0,width:e,height:A},n={left:0,top:0};if(t)for(const r in t)r in laA?n[r]=t[r]:i[r]=t[r];return{containerStyle:i,canvasStyle:n}}function CaA(e){return{get deck(){return e.deck},pickObject:A=>e.deck.pickObject(A),pickMultipleObjects:A=>e.deck.pickMultipleObjects(A),pickObjects:A=>e.deck.pickObjects(A)}}function cM(e){e.redrawReason&&(e.deck._drawLayers(e.redrawReason),e.redrawReason=null)}function BaA(e,A,t){const i=new A({...t,_customRender:n=>{e.redrawReason=n;const r=i.getViewports();e.lastRenderedViewports!==r?e.forceUpdate():cM(e)}});return i}const CM=p.forwardRef((e,A)=>{const[t,i]=p.useState(0),r=p.useRef({control:null,version:t,forceUpdate:()=>i(w=>w+1)}).current,o=p.useRef(null),s=p.useRef(null),a=p.useMemo(()=>aaA(e),[e.layers,e.views,e.children]);let g=!0;const I=w=>{var m;return g&&e.viewState?(r.viewStateUpdateRequested=w,null):(r.viewStateUpdateRequested=null,(m=e.onViewStateChange)===null||m===void 0?void 0:m.call(e,w))},l=w=>{if(g)r.interactionStateUpdateRequested=w;else{var m;r.interactionStateUpdateRequested=null,(m=e.onInteractionStateChange)===null||m===void 0||m.call(e,w)}},c=p.useMemo(()=>{const w={...e,style:null,width:"100%",height:"100%",parent:o.current,canvas:s.current,layers:a.layers,views:a.views,onViewStateChange:I,onInteractionStateChange:l};return delete w._customRender,r.deck&&r.deck.setProps(w),w},[e]);p.useEffect(()=>{const w=e.Deck||WE;return r.deck=BaA(r,w,{...c,parent:o.current,canvas:s.current}),()=>{var m;return(m=r.deck)===null||m===void 0?void 0:m.finalize()}},[]),naA(()=>{cM(r);const{viewStateUpdateRequested:w,interactionStateUpdateRequested:m}=r;w&&I(w),m&&l(m)}),p.useImperativeHandle(A,()=>CaA(r),[]);const C=r.deck&&r.deck.isInitialized?r.deck.getViewports():void 0,{ContextProvider:B,width:E,height:u,id:h,style:f}=e,{containerStyle:Q,canvasStyle:d}=p.useMemo(()=>caA({width:E,height:u,style:f}),[E,u,f]);if(!r.viewStateUpdateRequested&&r.lastRenderedViewports===C||r.version!==t){r.lastRenderedViewports=C,r.version=t;const w=IaA({children:a.children,deck:r.deck,ContextProvider:B}),m=p.createElement("canvas",{key:"canvas",id:h||"deckgl-overlay",ref:s,style:d});r.control=p.createElement("div",{id:"".concat(h||"deckgl","-wrapper"),ref:o,style:Q},[m,w])}return g=!1,r.control});CM.defaultProps=WE.defaultProps;const EaA=CM;class uu{constructor({id:A,x:t=0,y:i=0,height:n,width:r}){this.width=r,this.height=n,this.id=A,this.x=t,this.y=i}getDeckGlView(){return new Tl({controller:!0,id:this.id,height:this.height,width:this.width,x:this.x,y:this.y})}filterViewState({viewState:A}){const{id:t,height:i,width:n}=this;return A.id===t?{height:i,width:n,...A}:null}getLayers({viewStates:A,props:t}){}}function Ko(e){return`-#${e}#`}function hu(e,A,t=0,i=!1,n){const r=Array.isArray(e)?e[0]:e,{width:o,height:s}=Xr(r),a=(n||new he).getScale(),[g,I]=[a[0]*o,a[1]*s],l=r.shape[r.labels.indexOf("z")],c=Math.log2(Math.min(A.width/g,A.height/I))-t,C=AM(r);return{target:(n||new he).transformPoint((i?C:new he).transformPoint([o/2,s/2,i?l/2:0])),zoom:c}}function BM(e,A){var o,s;const{loader:t}=A,i=(s=(o=t[0])==null?void 0:o.constructor)==null?void 0:s.name,n=t.length>1?em:jl,r=t.length>1?t:t[0];return new n({...A,id:`${i}${Ko(e)}`,viewportId:e,loader:r})}const KC="overview";class uaA extends KE{constructor(A){super(A),this.events=["click"]}handleEvent(A){if(A.type!=="click")return;let[t,i]=this.getCenter(A);const{width:n,height:r,zoom:o,scale:s}=this.props;if(t<0||i<0||t>n||i>r)return;const a=1/(2**o*s);t*=a,i*=a,this.onViewStateChange&&this.onViewStateChange({viewState:{target:[t,i,0]}})}}class haA extends uu{constructor({id:A,loader:t,detailHeight:i,detailWidth:n,scale:r=.2,margin:o=25,position:s="bottom-right",minimumWidth:a=150,maximumWidth:g=350,minimumHeight:I=150,maximumHeight:l=350,clickCenter:c=!0}){super({id:A}),this.margin=o,this.loader=t,this.position=s,this.detailHeight=i,this.detailWidth=n,this._setHeightWidthScale({detailWidth:n,detailHeight:i,scale:r,minimumWidth:a,maximumWidth:g,minimumHeight:I,maximumHeight:l}),this._setXY(),this.clickCenter=c}_setHeightWidthScale({detailWidth:A,detailHeight:t,scale:i,minimumWidth:n,maximumWidth:r,minimumHeight:o,maximumHeight:s}){const a=this.loader.length,{width:g,height:I}=Xr(this.loader[0]);if(this._imageWidth=g,this._imageHeight=I,g>I){const l=I/g;this.width=Math.min(r,Math.max(A*i,n)),this.height=this.width*l,this.scale=2**(a-1)/g*this.width}else{const l=g/I;this.height=Math.min(s,Math.max(t*i,o)),this.width=this.height*l,this.scale=2**(a-1)/I*this.height}}_setXY(){const{height:A,width:t,margin:i,position:n,detailWidth:r,detailHeight:o}=this;switch(n){case"bottom-right":{this.x=r-t-i,this.y=o-A-i;break}case"top-right":{this.x=r-t-i,this.y=i;break}case"top-left":{this.x=i,this.y=i;break}case"bottom-left":{this.x=i,this.y=o-A-i;break}default:throw new Error("overviewLocation prop needs to be one of ['bottom-right', 'top-right', 'top-left', 'bottom-left']")}}getDeckGlView(){const{scale:A,clickCenter:t}=this,i=t&&{type:uaA,scale:A};return new Tl({controller:i,id:this.id,height:this.height,width:this.width,x:this.x,y:this.y,clear:!0})}filterViewState({viewState:A}){const{_imageWidth:t,_imageHeight:i,scale:n}=this;return{...A,height:this.height,width:this.width,id:this.id,target:[t*n/2,i*n/2,0],zoom:-(this.loader.length-1)}}getLayers({viewStates:A,props:t}){const{detail:i,overview:n}=A;if(!i)throw new Error("Overview requires a viewState with id detail");const r=jy(i).map(s=>s.map(a=>a*this.scale));return[new tm(t,{id:Ko(this.id),boundingBox:r,overviewScale:this.scale,zoom:-n.zoom})]}}const xf="detail";class faA extends uu{constructor({id:A,x:t=0,y:i=0,height:n,width:r,snapScaleBar:o=!1}){super({id:A,x:t,y:i,height:n,width:r}),this.snapScaleBar=o}getLayers({props:A,viewStates:t}){var g,I,l;const{loader:i}=A,{id:n,height:r,width:o}=this,s=t[n],a=[BM(n,A)];if((l=(I=(g=i[0])==null?void 0:g.meta)==null?void 0:I.physicalSizes)!=null&&l.x){const{size:c,unit:C}=i[0].meta.physicalSizes.x;a.push(new Bu({id:Ko(n),loader:i,unit:C,size:c,snap:this.snapScaleBar,viewState:{...s,height:r,width:o}}))}return a}filterViewState({viewState:A,currentViewState:t}){if(A.id===KC){const{target:i}=A;if(i)return{...t,target:i}}return super.filterViewState({viewState:A})}}class $1 extends uu{constructor({id:A,x:t=0,y:i=0,height:n,width:r,linkedIds:o=[],panLock:s=!0,zoomLock:a=!0,viewportOutlineColor:g=[255,255,255],viewportOutlineWidth:I=10,snapScaleBar:l=!1}){super({id:A,x:t,y:i,height:n,width:r}),this.linkedIds=o,this.panLock=s,this.zoomLock=a,this.viewportOutlineColor=g,this.viewportOutlineWidth=I,this.snapScaleBar=l}filterViewState({viewState:A,oldViewState:t,currentViewState:i}){const{id:n}=A,{id:r,linkedIds:o,panLock:s,zoomLock:a}=this;if(t&&o.indexOf(n)!==-1&&(a||s)){const g={height:i.height,width:i.width,target:[],zoom:null},[I,l]=i.target;if(a){const c=A.zoom-t.zoom;g.zoom=i.zoom+c}else g.zoom=i.zoom;if(s){const[c,C]=t.target,[B,E]=A.target,u=B-c,h=E-C;g.target.push(I+u),g.target.push(l+h)}else g.target.push(I),g.target.push(l);return{id:r,target:g.target,zoom:g.zoom,height:g.height,width:g.width}}return A.id===r?{id:r,target:A.target,zoom:A.zoom,height:A.height,width:A.width}:{id:r,target:i.target,zoom:i.zoom,height:i.height,width:i.width}}getLayers({props:A,viewStates:t}){var C,B,E;const{loader:i}=A,{id:n,viewportOutlineColor:r,viewportOutlineWidth:o,height:s,width:a}=this,g=t[n],I=jy({...g,height:s,width:a}),l=[BM(n,A)],c=new $I({id:`viewport-outline-${Ko(n)}`,coordinateSystem:HA.CARTESIAN,data:[I],getPolygon:u=>u,filled:!1,stroked:!0,getLineColor:r,getLineWidth:o*2**-g.zoom});if(l.push(c),(E=(B=(C=i[0])==null?void 0:C.meta)==null?void 0:B.physicalSizes)!=null&&E.x){const{size:u,unit:h}=i[0].meta.physicalSizes.x;l.push(new Bu({id:Ko(n),loader:i,unit:h,size:u,snap:this.snapScaleBar,viewState:{...g,height:s,width:a}}))}return l}}class QaA extends uu{constructor({target:A,useFixedAxis:t,...i}){super(i),this.target=A,this.useFixedAxis=t}getDeckGlView(){const{height:A,width:t,id:i,x:n,y:r}=this;return new Kb({id:i,controller:!0,height:A,width:t,x:n,y:r,orbitAxis:"Y"})}filterViewState({viewState:A}){const{id:t,target:i,useFixedAxis:n}=this;return A.id===t?{...A,target:n?i:A.target}:null}getLayers({props:A}){const{loader:t}=A,{id:i}=this;return[new nm(A,{id:`${t.type}${Ko(i)}`})]}}var daA=function e(A,t){if(A===t)return!0;if(A&&t&&typeof A=="object"&&typeof t=="object"){if(A.constructor!==t.constructor)return!1;var i,n,r;if(Array.isArray(A)){if(i=A.length,i!=t.length)return!1;for(n=i;n--!==0;)if(!e(A[n],t[n]))return!1;return!0}if(A.constructor===RegExp)return A.source===t.source&&A.flags===t.flags;if(A.valueOf!==Object.prototype.valueOf)return A.valueOf()===t.valueOf();if(A.toString!==Object.prototype.toString)return A.toString()===t.toString();if(r=Object.keys(A),i=r.length,i!==Object.keys(t).length)return!1;for(n=i;n--!==0;)if(!Object.prototype.hasOwnProperty.call(t,r[n]))return!1;for(n=i;n--!==0;){var o=r[n];if(!e(A[o],t[o]))return!1}return!0}return A!==A&&t!==t};const paA=pi(daA),yaA=(e,A)=>A===e||(e==null?void 0:e.zoom)===(A==null?void 0:A.zoom)&&(e==null?void 0:e.rotationX)===(A==null?void 0:A.rotationX)&&(e==null?void 0:e.rotationOrbit)===(A==null?void 0:A.rotationOrbit)&&paA(e==null?void 0:e.target,A==null?void 0:A.target);class maA extends p.PureComponent{constructor(A){super(A),this.state={viewStates:{}};const{viewStates:t}=this.state,{views:i,viewStates:n}=this.props;i.forEach(r=>{t[r.id]=r.filterViewState({viewState:n.find(o=>o.id===r.id)})}),this._onViewStateChange=this._onViewStateChange.bind(this),this.layerFilter=this.layerFilter.bind(this),this.onHover=this.onHover.bind(this)}layerFilter({layer:A,viewport:t}){return A.id.includes(Ko(t.id))}_onViewStateChange({viewId:A,viewState:t,interactionState:i,oldViewState:n}){const{views:r,onViewStateChange:o}=this.props;return t=o&&o({viewId:A,viewState:t,interactionState:i,oldViewState:n})||t,this.setState(s=>{const a={};return r.forEach(g=>{const I=s.viewStates[g.id];a[g.id]=g.filterViewState({viewState:{...t,id:A},oldViewState:n,currentViewState:I})}),{viewStates:a}}),t}componentDidUpdate(A){const{props:t}=this,{views:i}=t,n={...this.state.viewStates};let r=!1;i.forEach(o=>{var l,c;const s=(l=t.viewStates)==null?void 0:l.find(C=>C.id===o.id);if(!s)return;const a=(c=A.viewStates)==null?void 0:c.find(C=>C.id===o.id);if(yaA(s,a))return;r=!0;const{height:g,width:I}=o;n[o.id]=o.filterViewState({viewState:{...s,height:g,width:I,id:o.id}})}),r&&this.setState({viewStates:n})}static getDerivedStateFromProps(A,t){const{views:i,viewStates:n}=A;if(i.some(r=>!t.viewStates[r.id]||r.height!==t.viewStates[r.id].height||r.width!==t.viewStates[r.id].width)){const r={};return i.forEach(o=>{const{height:s,width:a}=o,g=t.viewStates[o.id];r[o.id]=o.filterViewState({viewState:{...g||n.find(I=>I.id===o.id),height:s,width:a,id:o.id}})}),{viewStates:r}}return t}onHover(A,t){const{tile:i,coordinate:n,sourceLayer:r}=A,{onHover:o,hoverHooks:s}=this.props;if(o&&o(A,t),!s||!n||!r)return null;const{handleValue:a=()=>{},handleCoordnate:g=()=>{}}=s;let I;if(r.id.includes("Tiled")){if(!(i!=null&&i.content))return null;const{content:l,bbox:c,index:{z:C}}=i;if(!l.data||!c)return null;const{data:B,width:E,height:u}=l,{left:h,right:f,top:Q,bottom:d}=c,w=[h,B.heightD[x])}else{const{channelData:l}=r.props;if(!l)return null;const{data:c,width:C,height:B}=l;if(!c||!C||!B)return null;const E=[0,B,C,0],{zoom:u}=r.context.viewport,h=Math.max(1,2**Math.floor(-u)),f=[Math.floor((n[0]-E[0])/h),Math.floor((n[1]-E[3])/h)],Q=f[1]*C+f[0];I=c.map(d=>d[Q])}a(I),g(n)}_renderLayers(){const{onHover:A}=this,{viewStates:t}=this.state,{views:i,layerProps:n}=this.props;return i.map((r,o)=>r.getLayers({viewStates:t,props:{...n[o],onHover:A}}))}render(){const{views:A,randomize:t,useDevicePixels:i=!0,deckProps:n}=this.props,{viewStates:r}=this.state,o=A.map(s=>s.getDeckGlView());if(t){const s=Math.random(),a=o[0],g=s*1.49,I=Math.round(g*(A.length-1));o[0]=o[I],o[I]=a}return G.jsx(EaA,{...n??{},layerFilter:this.layerFilter,layers:(n==null?void 0:n.layers)===void 0?[...this._renderLayers()]:[...this._renderLayers(),...n.layers],onViewStateChange:this._onViewStateChange,views:o,viewState:r,useDevicePixels:i,getCursor:({isDragging:s})=>s?"grabbing":"crosshair"})}}const rm=e=>G.jsx(maA,{...e}),waA=e=>{const{loader:A,contrastLimits:t,colors:i,channelsVisible:n,viewStates:r,colormap:o,overview:s,overviewOn:a,selections:g,hoverHooks:I={handleValue:()=>{},handleCoordinate:()=>{}},height:l,width:c,lensEnabled:C=!1,lensSelection:B=0,lensRadius:E=100,lensBorderColor:u=[255,255,255],lensBorderRadius:h=.02,clickCenter:f=!0,transparentColor:Q,snapScaleBar:d=!1,onViewStateChange:w,onHover:m,onViewportLoad:v,extensions:x=[new Va],deckProps:D}=e,F=r==null?void 0:r.find(Z=>Z.id===xf),N=p.useMemo(()=>F||hu(A,{height:l,width:c},.5),[A,F]),k=new faA({id:xf,height:l,width:c,snapScaleBar:d}),P={loader:A,contrastLimits:t,colors:i,channelsVisible:n,selections:g,onViewportLoad:v,colormap:o,lensEnabled:C,lensSelection:B,lensRadius:E,lensBorderColor:u,lensBorderRadius:h,extensions:x,transparentColor:Q},H=[k],W=[P],J=[{...N,id:xf}];if(a&&A){const Z=(r==null?void 0:r.find(O=>O.id===KC))||{...N,id:KC},z=new haA({id:KC,loader:A,detailHeight:l,detailWidth:c,clickCenter:f,...s});H.push(z),W.push({...P,lensEnabled:!1}),J.push(Z)}return A?G.jsx(rm,{layerProps:W,views:H,viewStates:J,hoverHooks:I,onViewStateChange:w,onHover:m,deckProps:D}):null},vaA=e=>{const{loader:A,contrastLimits:t,colors:i,channelsVisible:n,viewStates:r,colormap:o,panLock:s,selections:a,zoomLock:g,height:I,width:l,lensEnabled:c=!1,lensSelection:C=0,lensRadius:B=100,lensBorderColor:E=[255,255,255],lensBorderRadius:u=.02,transparentColor:h,snapScaleBar:f=!1,onViewStateChange:Q,onHover:d,onViewportLoad:w,extensions:m=[new Va],deckProps:v}=e,x=r==null?void 0:r.find(J=>J.id==="left"),D=r==null?void 0:r.find(J=>J.id==="right"),F=p.useMemo(()=>{if(x&&D)return r;const J=hu(A,{height:I,width:l/2},.5);return[x||{...J,id:"left"},D||{...J,id:"right"}]},[A,x,D]),N=new $1({id:"left",linkedIds:["right"],panLock:s,zoomLock:g,height:I,width:l/2,snapScaleBar:f}),k=new $1({id:"right",x:l/2,linkedIds:["left"],panLock:s,zoomLock:g,height:I,width:l/2,snapScaleBar:f}),P={loader:A,contrastLimits:t,colors:i,channelsVisible:n,selections:a,onViewportLoad:w,colormap:o,lensEnabled:c,lensSelection:C,lensRadius:B,lensBorderColor:E,lensBorderRadius:u,extensions:m,transparentColor:h},H=[k,N],W=[P,P];return A?G.jsx(rm,{layerProps:W,views:H,randomize:!0,onViewStateChange:Q,onHover:d,viewStates:F,deckProps:v}):null},SaA=e=>{const{loader:A,contrastLimits:t,colors:i,channelsVisible:n,selections:r,colormap:o,resolution:s=Math.max(0,A.length-1),modelMatrix:a,onViewStateChange:g,xSlice:I=null,ySlice:l=null,zSlice:c=null,onViewportLoad:C,height:B,width:E,viewStates:u,clippingPlanes:h=[],useFixedAxis:f=!0,extensions:Q=[new Cu.AdditiveBlendExtension]}=e,d=u==null?void 0:u.find(N=>(N==null?void 0:N.id)==="3d"),w=p.useMemo(()=>d||{...hu(A,{height:B,width:E},1,!0,a),rotationX:0,rotationOrbit:0},[A,s,a]),m=[d||{...w,id:"3d"}],v=new QaA({id:"3d",target:m[0].target,useFixedAxis:f}),x={loader:A,contrastLimits:t,colors:i,channelsVisible:n,selections:r,colormap:o,xSlice:I,ySlice:l,zSlice:c,resolution:s,extensions:Q,modelMatrix:a,onViewportLoad:()=>setTimeout(C,0),clippingPlanes:h},D=[v],F=[x];return A?G.jsx(rm,{layerProps:F,views:D,viewStates:m,onViewStateChange:g,useDevicePixels:!1}):null},DaA=e=>e.charAt(0).toUpperCase()+e.slice(1),om=(e,A)=>{const t={};return Object.entries(e).forEach(([i,n])=>{typeof n=="boolean"&&(t[`toggle${DaA(i)}`]=()=>A(r=>({...r,[i]:!r[i]})))}),t},RaA={channelsVisible:[],contrastLimits:[],colors:[],domains:[],selections:[],ids:[],loader:[{labels:[],shape:[]}],image:0},Ff={channelsVisible:!0,contrastLimits:[0,65535],colors:[255,255,255],domains:[0,65535],selections:{z:0,c:0,t:0},ids:""},di=Sp(e=>({...RaA,...om(Ff,e),toggleIsOn:A=>e(t=>{const i=[...t.channelsVisible];return i[A]=!i[A],{...t,channelsVisible:i}}),setPropertiesForChannel:(A,t)=>e(i=>{const n=Object.entries(t),r={};return n.forEach(([o,s])=>{r[o]=[...i[o]],r[o][A]=s}),{...i,...r}}),removeChannel:A=>e(t=>{const i={},n=Object.keys(Ff);return Object.keys(t).forEach(r=>{n.includes(r)&&(i[r]=t[r].filter((o,s)=>s!==A))}),{...t,...i}}),addChannel:A=>e(t=>{const i=Object.entries(A),n={...t};return i.forEach(([r,o])=>{n[r]=[...t[r],o]}),Object.entries(Ff).forEach(([r,o])=>{n[r].length{}},ue=Sp(e=>({...Ax,...om(Ax,e)})),ex={isChannelLoading:[],isViewerLoading:!0,pixelValues:[],isOffsetsSnackbarOn:!1,loaderErrorSnackbar:{on:!1,message:null},isNoImageUrlSnackbarOn:!1,isVolumeRenderingWarningOn:!1,useLinkedView:!1,isControllerOn:!0,use3d:!1,useLens:!1,useColormap:!1,globalSelection:{z:0,t:0},channelOptions:[],metadata:null,viewState:null,source:"",pyramidResolution:0},_A=Sp(e=>({...ex,...om(ex,e),setIsChannelLoading:(A,t)=>e(i=>{const n=[...i.isChannelLoading];return n[A]=t,{...i,isChannelLoading:n}}),addIsChannelLoading:A=>e(t=>{const i=[...t.isChannelLoading,A];return{...t,isChannelLoading:i}}),removeIsChannelLoading:A=>e(t=>{const i=[...t.isChannelLoading];return i.splice(A,1),{...t,isChannelLoading:i}})})),Bn=()=>{const[e,A]=di(t=>[t.loader,t.image]);return Array.isArray(e[0])?e[A]:e},sm=()=>{const e=di(t=>t.image),A=_A(t=>t.metadata);return Array.isArray(A)?A[e]:A};function ja(e,A,t,i){function n(r){return r instanceof t?r:new t(function(o){o(r)})}return new(t||(t=Promise))(function(r,o){function s(I){try{g(i.next(I))}catch(l){o(l)}}function a(I){try{g(i.throw(I))}catch(l){o(l)}}function g(I){I.done?r(I.value):n(I.value).then(s,a)}g((i=i.apply(e,A||[])).next())})}function Xa(e,A){var t={label:0,sent:function(){if(r[0]&1)throw r[1];return r[1]},trys:[],ops:[]},i,n,r,o;return o={next:s(0),throw:s(1),return:s(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function s(g){return function(I){return a([g,I])}}function a(g){if(i)throw new TypeError("Generator is already executing.");for(;t;)try{if(i=1,n&&(r=g[0]&2?n.return:g[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,g[1])).done)return r;switch(n=0,r&&(g=[g[0]&2,r.value]),g[0]){case 0:case 1:r=g;break;case 4:return t.label++,{value:g[1],done:!1};case 5:t.label++,n=g[1],g=[0];continue;case 7:g=t.ops.pop(),t.trys.pop();continue;default:if(r=t.trys,!(r=r.length>0&&r[r.length-1])&&(g[0]===6||g[0]===2)){t=0;continue}if(g[0]===3&&(!r||g[1]>r[0]&&g[1]0)&&!(n=i.next()).done;)r.push(n.value)}catch(s){o={error:s}}finally{try{n&&!n.done&&(t=i.return)&&t.call(i)}finally{if(o)throw o.error}}return r}function FaA(){for(var e=[],A=0;A0?i:e.name,writable:!1,configurable:!1,enumerable:!0})}return t}function LaA(e){var A=e.name,t=A&&A.lastIndexOf(".")!==-1;if(t&&!e.type){var i=A.split(".").pop().toLowerCase(),n=NaA.get(i);n&&Object.defineProperty(e,"type",{value:n,writable:!1,configurable:!1,enumerable:!0})}return e}var baA=[".DS_Store","Thumbs.db"];function GaA(e){return ja(this,void 0,void 0,function(){return Xa(this,function(A){return eE(e)&&_aA(e)?[2,UaA(e.dataTransfer,e.type)]:MaA(e)?[2,kaA(e)]:Array.isArray(e)&&e.every(function(t){return"getFile"in t&&typeof t.getFile=="function"})?[2,TaA(e)]:[2,[]]})})}function _aA(e){return eE(e.dataTransfer)}function MaA(e){return eE(e)&&eE(e.target)}function eE(e){return typeof e=="object"&&e!==null}function kaA(e){return Wd(e.target.files).map(function(A){return Xl(A)})}function TaA(e){return ja(this,void 0,void 0,function(){var A;return Xa(this,function(t){switch(t.label){case 0:return[4,Promise.all(e.map(function(i){return i.getFile()}))];case 1:return A=t.sent(),[2,A.map(function(i){return Xl(i)})]}})})}function UaA(e,A){return ja(this,void 0,void 0,function(){var t,i;return Xa(this,function(n){switch(n.label){case 0:return e===null?[2,[]]:e.items?(t=Wd(e.items).filter(function(r){return r.kind==="file"}),A!=="drop"?[2,t]:[4,Promise.all(t.map(PaA))]):[3,2];case 1:return i=n.sent(),[2,tx(EM(i))];case 2:return[2,tx(Wd(e.files).map(function(r){return Xl(r)}))]}})})}function tx(e){return e.filter(function(A){return baA.indexOf(A.name)===-1})}function Wd(e){if(e===null)return[];for(var A=[],t=0;te.length)&&(A=e.length);for(var t=0,i=new Array(A);tt)return[!1,ax(t)];if(e.sizet)return[!1,ax(t)]}return[!0,null]}function xg(e){return e!=null}function AgA(e){var A=e.files,t=e.accept,i=e.minSize,n=e.maxSize,r=e.multiple,o=e.maxFiles;return!r&&A.length>1||r&&o>=1&&A.length>o?!1:A.every(function(s){var a=fM(s,t),g=ox(a,1),I=g[0],l=QM(s,i,n),c=ox(l,1),C=c[0];return I&&C})}function tE(e){return typeof e.isPropagationStopped=="function"?e.isPropagationStopped():typeof e.cancelBubble<"u"?e.cancelBubble:!1}function oC(e){return e.dataTransfer?Array.prototype.some.call(e.dataTransfer.types,function(A){return A==="Files"||A==="application/x-moz-file"}):!!e.target&&!!e.target.files}function Ix(e){e.preventDefault()}function egA(e){return e.indexOf("MSIE")!==-1||e.indexOf("Trident/")!==-1}function tgA(e){return e.indexOf("Edge/")!==-1}function igA(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:window.navigator.userAgent;return egA(e)||tgA(e)}function Wi(){for(var e=arguments.length,A=new Array(e),t=0;t1?n-1:0),o=1;oe.length)&&(A=e.length);for(var t=0,i=new Array(A);t=0)&&Object.prototype.propertyIsEnumerable.call(e,i)&&(t[i]=e[i])}return t}function ugA(e,A){if(e==null)return{};var t={},i=Object.keys(e),n,r;for(r=0;r=0)&&(t[n]=e[n]);return t}var am=p.forwardRef(function(e,A){var t=e.children,i=iE(e,rgA),n=yM(i),r=n.open,o=iE(n,ogA);return p.useImperativeHandle(A,function(){return{open:r}},[r]),vA.createElement(p.Fragment,null,t(qe(qe({},o),{},{open:r})))});am.displayName="Dropzone";var pM={disabled:!1,getFilesFromEvent:GaA,maxSize:1/0,minSize:0,multiple:!0,maxFiles:0,preventDropOnDocument:!0,noClick:!1,noKeyboard:!1,noDrag:!1,noDragEventsBubbling:!1,validator:null,useFsAccessApi:!1};am.defaultProps=pM;am.propTypes={children:ye.func,accept:ye.oneOfType([ye.string,ye.arrayOf(ye.string)]),multiple:ye.bool,preventDropOnDocument:ye.bool,noClick:ye.bool,noKeyboard:ye.bool,noDrag:ye.bool,noDragEventsBubbling:ye.bool,minSize:ye.number,maxSize:ye.number,maxFiles:ye.number,disabled:ye.bool,getFilesFromEvent:ye.func,onFileDialogCancel:ye.func,onFileDialogOpen:ye.func,useFsAccessApi:ye.bool,onDragEnter:ye.func,onDragLeave:ye.func,onDragOver:ye.func,onDrop:ye.func,onDropAccepted:ye.func,onDropRejected:ye.func,validator:ye.func};var Xd={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,draggedFiles:[],acceptedFiles:[],fileRejections:[]};function yM(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},A=qe(qe({},pM),e),t=A.accept,i=A.disabled,n=A.getFilesFromEvent,r=A.maxSize,o=A.minSize,s=A.multiple,a=A.maxFiles,g=A.onDragEnter,I=A.onDragLeave,l=A.onDragOver,c=A.onDrop,C=A.onDropAccepted,B=A.onDropRejected,E=A.onFileDialogCancel,u=A.onFileDialogOpen,h=A.useFsAccessApi,f=A.preventDropOnDocument,Q=A.noClick,d=A.noKeyboard,w=A.noDrag,m=A.noDragEventsBubbling,v=A.validator,x=p.useMemo(function(){return typeof u=="function"?u:Cx},[u]),D=p.useMemo(function(){return typeof E=="function"?E:Cx},[E]),F=p.useRef(null),N=p.useRef(null),k=p.useReducer(hgA,Xd),P=Nf(k,2),H=P[0],W=P[1],J=H.isFocused,Z=H.isFileDialogActive,z=H.draggedFiles,O=function(){Z&&setTimeout(function(){if(N.current){var aA=N.current.files;aA.length||(W({type:"closeDialog"}),D())}},300)};p.useEffect(function(){return h&&lx()?function(){}:(window.addEventListener("focus",O,!1),function(){window.removeEventListener("focus",O,!1)})},[N,Z,D,h]);var Y=p.useRef([]),T=function(aA){F.current&&F.current.contains(aA.target)||(aA.preventDefault(),Y.current=[])};p.useEffect(function(){return f&&(document.addEventListener("dragover",Ix,!1),document.addEventListener("drop",T,!1)),function(){f&&(document.removeEventListener("dragover",Ix),document.removeEventListener("drop",T))}},[F,f]);var q=p.useCallback(function(eA){eA.preventDefault(),eA.persist(),UA(eA),Y.current=[].concat(ggA(Y.current),[eA.target]),oC(eA)&&Promise.resolve(n(eA)).then(function(aA){tE(eA)&&!m||(W({draggedFiles:aA,isDragActive:!0,type:"setDraggedFiles"}),g&&g(eA))})},[n,g,m]),j=p.useCallback(function(eA){eA.preventDefault(),eA.persist(),UA(eA);var aA=oC(eA);if(aA&&eA.dataTransfer)try{eA.dataTransfer.dropEffect="copy"}catch{}return aA&&l&&l(eA),!1},[l,m]),AA=p.useCallback(function(eA){eA.preventDefault(),eA.persist(),UA(eA);var aA=Y.current.filter(function(ne){return F.current&&F.current.contains(ne)}),FA=aA.indexOf(eA.target);FA!==-1&&aA.splice(FA,1),Y.current=aA,!(aA.length>0)&&(W({isDragActive:!1,type:"setDraggedFiles",draggedFiles:[]}),oC(eA)&&I&&I(eA))},[F,I,m]),iA=p.useCallback(function(eA,aA){var FA=[],ne=[];eA.forEach(function(VA){var Ge=fM(VA,t),WA=Nf(Ge,2),qA=WA[0],Re=WA[1],oe=QM(VA,o,r),JA=Nf(oe,2),xA=JA[0],Ce=JA[1],Ee=v?v(VA):null;if(qA&&xA&&!Ee)FA.push(VA);else{var PA=[Re,Ce];Ee&&(PA=PA.concat(Ee)),ne.push({file:VA,errors:PA.filter(function(rA){return rA})})}}),(!s&&FA.length>1||s&&a>=1&&FA.length>a)&&(FA.forEach(function(VA){ne.push({file:VA,errors:[$aA]})}),FA.splice(0)),W({acceptedFiles:FA,fileRejections:ne,type:"setFiles"}),c&&c(FA,ne,aA),ne.length>0&&B&&B(ne,aA),FA.length>0&&C&&C(FA,aA)},[W,s,t,o,r,a,c,C,B,v]),gA=p.useCallback(function(eA){eA.preventDefault(),eA.persist(),UA(eA),Y.current=[],oC(eA)&&Promise.resolve(n(eA)).then(function(aA){tE(eA)&&!m||iA(aA,eA)}),W({type:"reset"})},[n,iA,m]),sA=p.useCallback(function(){if(h&&lx()){W({type:"openDialog"}),x();var eA={multiple:s,types:ngA(t)};window.showOpenFilePicker(eA).then(function(aA){return n(aA)}).then(function(aA){return iA(aA,null)}).catch(function(aA){return D(aA)}).finally(function(){return W({type:"closeDialog"})});return}N.current&&(W({type:"openDialog"}),x(),N.current.value=null,N.current.click())},[W,x,D,h,iA,t,s]),BA=p.useCallback(function(eA){!F.current||!F.current.isEqualNode(eA.target)||(eA.keyCode===32||eA.keyCode===13)&&(eA.preventDefault(),sA())},[F,N,sA]),IA=p.useCallback(function(){W({type:"focus"})},[]),bA=p.useCallback(function(){W({type:"blur"})},[]),EA=p.useCallback(function(){Q||(igA()?setTimeout(sA,0):sA())},[N,Q,sA]),QA=function(aA){return i?null:aA},TA=function(aA){return d?null:QA(aA)},RA=function(aA){return w?null:QA(aA)},UA=function(aA){m&&aA.stopPropagation()},fA=p.useMemo(function(){return function(){var eA=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},aA=eA.refKey,FA=aA===void 0?"ref":aA,ne=eA.role,VA=eA.onKeyDown,Ge=eA.onFocus,WA=eA.onBlur,qA=eA.onClick,Re=eA.onDragEnter,oe=eA.onDragOver,JA=eA.onDragLeave,xA=eA.onDrop,Ce=iE(eA,sgA);return qe(qe(jd({onKeyDown:TA(Wi(VA,BA)),onFocus:TA(Wi(Ge,IA)),onBlur:TA(Wi(WA,bA)),onClick:QA(Wi(qA,EA)),onDragEnter:RA(Wi(Re,q)),onDragOver:RA(Wi(oe,j)),onDragLeave:RA(Wi(JA,AA)),onDrop:RA(Wi(xA,gA)),role:typeof ne=="string"&&ne!==""?ne:"button"},FA,F),!i&&!d?{tabIndex:0}:{}),Ce)}},[F,BA,IA,bA,EA,q,j,AA,gA,d,w,i]),NA=p.useCallback(function(eA){eA.stopPropagation()},[]),XA=p.useMemo(function(){return function(){var eA=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},aA=eA.refKey,FA=aA===void 0?"ref":aA,ne=eA.onChange,VA=eA.onClick,Ge=iE(eA,agA),WA=jd({accept:t,multiple:s,type:"file",style:{display:"none"},onChange:QA(Wi(ne,gA)),onClick:QA(Wi(VA,NA)),autoComplete:"off",tabIndex:-1},FA,N);return qe(qe({},WA),Ge)}},[N,t,s,gA,i]),ie=z.length,ge=ie>0&&AgA({files:z,accept:t,minSize:o,maxSize:r,multiple:s,maxFiles:a}),KA=ie>0&&!ge;return qe(qe({},H),{},{isDragAccept:ge,isDragReject:KA,isFocused:J&&!i,getRootProps:fA,getInputProps:XA,rootRef:F,inputRef:N,open:QA(sA)})}function hgA(e,A){switch(A.type){case"focus":return qe(qe({},e),{},{isFocused:!0});case"blur":return qe(qe({},e),{},{isFocused:!1});case"openDialog":return qe(qe({},Xd),{},{isFileDialogActive:!0});case"closeDialog":return qe(qe({},e),{},{isFileDialogActive:!1});case"setDraggedFiles":var t=A.isDragActive,i=A.draggedFiles;return qe(qe({},e),{},{draggedFiles:i,isDragActive:t});case"setFiles":return qe(qe({},e),{},{acceptedFiles:A.acceptedFiles,fileRejections:A.fileRejections});case"reset":return qe({},Xd);default:return e}}function Cx(){}function Te(e,A){if(Object.is(e,A))return!0;if(typeof e!="object"||e===null||typeof A!="object"||A===null)return!1;const t=Object.keys(e);if(t.length!==Object.keys(A).length)return!1;for(let i=0;iA.name):e instanceof File?[e.name]:e.split(",")}function wgA(e){const A=mgA(e);for(const t of A){const i=t.toLowerCase();if(!(i.includes(".tiff")||i.includes(".tif")))return!1}return!0}async function vgA(e){return Array.isArray(e)?e:e instanceof File?[e]:e.split(",")}async function SgA(e){return(await(typeof e=="string"?nu:ru)(e)).getImageCount()}async function DgA(e){const A=await vgA(e),t=[];let i=0;for(const n of A){const r=[],o=await SgA(n);for(let s=0;s{const{Pixels:{SizeC:E,SizeT:u,SizeZ:h}}=B;return E*u*h+C},1);const s=t[0].length,{Pixels:{SizeC:a,SizeT:g,SizeZ:I}}=A[0];return a*g*I*s}async function xgA(e,A,t){try{if(ygA(e)){if(e instanceof File)return await qR(e,{images:"all",pool:!1});const r=await fetch(e.replace(/ome\.tif(f?)/gi,"offsets.json")),o=r.status!==200,s=o?void 0:await r.json(),a=await qR(e,{offsets:s,images:"all",pool:!1}),g=await RgA(e,a.map(I=>I.metadata),a.map(I=>I.data));return o&&g>pgA&&A(!0),a}if(Array.isArray(e)&&typeof e[0].arrayBuffer!="function")throw new Bx("Cannot upload a local Zarr or flat TIFF files with this browser. Try using Chrome, Firefox, or Microsoft Edge.");if(wgA(e)){const n=await DgA(e);return await $eA(n,{images:"all",pool:!1})}let i;try{i=await soA(e)}catch{const n=await aoA(e,{type:"multiscales"}),r={Pixels:{Channels:n.metadata.omero.channels.map(o=>({Name:o.label,SamplesPerPixel:1}))}};i={data:n.data,metadata:r}}return i}catch(i){return i instanceof Bx?t(i.message):(console.error(i),t(null)),{data:null}}}function mM(e){return e.split("?")[0].split("/").slice(-1)[0]}function FgA({labels:e,shape:A}){const t=e.map((n,r)=>[n,r]).filter(n=>Im.includes(n[0])),i={};return t.forEach(([n,r])=>{i[n]=Math.floor((A[r]||0)/2)}),i}function wM(e){const A=e[e.length-1];return A===3||A===4}function NgA(e){let A=[];const t=FgA(e),i=e.labels.map((n,r)=>({name:n,size:e.shape[r]})).find(n=>!Im.includes(n.name)&&n.size);for(let n=0;n{const r=()=>{n(t())};return window.addEventListener("resize",r),()=>{window.removeEventListener("resize",r)}}),i}async function LgA({loader:e,selection:A}){const i=await(Array.isArray(e)?e[e.length-1]:e).getRaster({selection:A}),n=UC(i.data),{domain:r,contrastLimits:o}=n;return{domain:r,contrastLimits:o}}async function bgA({loader:e,selection:A}){const t=e[e.length-1],{shape:i,labels:n}=t,r=i[n.indexOf("z")]>>e.length-1,o=await t.getRaster({selection:{...A,z:0}}),s=await t.getRaster({selection:{...A,z:Math.floor(r/2)}}),a=await t.getRaster({selection:{...A,z:Math.max(0,r-1)}}),g=UC(o.data),I=UC(s.data),l=UC(a.data);return{domain:[Math.min(g.domain[0],I.domain[0],l.domain[0]),Math.max(g.domain[1],I.domain[1],l.domain[1])],contrastLimits:[Math.min(g.contrastLimits[0],I.contrastLimits[0],l.contrastLimits[0]),Math.max(g.contrastLimits[1],I.contrastLimits[1],l.contrastLimits[1])]}}const cm=async({loader:e,selection:A,use3d:t})=>(t?bgA:LgA)({loader:e,selection:A}),nE=async({loader:e,selections:A,use3d:t})=>{const i=await Promise.all(A.map(o=>cm({loader:e,selection:o,use3d:t}))),n=i.map(o=>o.domain),r=i.map(o=>o.contrastLimits);return{domains:n,contrastLimits:r}};function GgA(){let e=!1;return function(A){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(A)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(A.substr(0,4)))&&(e=!0)}(navigator.userAgent||navigator.vendor||window.opera),e}function vM({Pixels:e}){const A=e.Channels.length,{SamplesPerPixel:t}=e.Channels[0],i=A===3&&e.Type==="uint8",n=e.SizeC===3&&A===1&&e.Interleaved;return t===3||i||n}function Cm(e,A){if(!e&&e!==0)return"";const t=e.toString();return t.length>A?t.substring(0,A).replace(/\.$/,""):t}function _gA(e){var n;const{x:A,y:t,z:i}=((n=e==null?void 0:e.meta)==null?void 0:n.physicalSizes)??{};if(A!=null&&A.size&&(t!=null&&t.size)&&(i!=null&&i.size)){const r=Math.min(i.size,A.size,t.size),o=[A.size/r,t.size/r,i.size/r];return new he().scale(o)}return new he().identity()}function Bm(e){const A=Array.isArray(e)?e[0]:e,{shape:t,labels:i}=A,n=_gA(A),r=[0,n[0]*t[i.indexOf("x")]],o=[0,n[5]*t[i.indexOf("y")]],s=[0,n[10]*t[i.indexOf("z")]];return[r,o,s]}function MgA(e,A){const t=e?bsA:Cu;if(A===sa.MAX_INTENSITY_PROJECTION)return new t.MaximumIntensityProjectionExtension;if(A===sa.MIN_INTENSITY_PROJECTION)return new t.MinimumIntensityProjectionExtension;if(A===sa.ADDITIVE)return new t.AdditiveBlendExtension;throw new Error(`${A} rendering mode not supported`)}const kgA=(e,A)=>{const[t,i,n]=_A(g=>[g.use3d,g.toggleUse3d,g.toggleIsOffsetsSnackbarOn],Te),[r,o]=ue(g=>[g.lensEnabled,g.toggleLensEnabled],Te),s=Bn(),a=sm();p.useEffect(()=>{async function g(){_A.setState({isChannelLoading:[!0]}),_A.setState({isViewerLoading:!0}),t&&i();const{urlOrFile:I}=e,l=await xgA(I,n,B=>_A.setState({loaderErrorSnackbar:{on:!0,message:B}}));let c,C;Array.isArray(l)?l.length>1?(c=l.map(B=>B.metadata),C=l.map(B=>B.data)):(c=l[0].metadata,C=l[0].data):(c=l.metadata,C=l.data),C&&(console.info("Metadata (in JSON-like form) for current file being viewed: ",c),kt.unstable_batchedUpdates(()=>{di.setState({loader:C}),_A.setState({metadata:c})}),t&&i(),A==null||A.push(typeof I=="string"?`?image_url=${I}`:""))}e&&g()},[e,A]),p.useEffect(()=>{a&&(async()=>{_A.setState({isChannelLoading:[!0]}),_A.setState({isViewerLoading:!0}),t&&i();const I=NgA(s[0]),{Channels:l}=a.Pixels,c=l.map((d,w)=>d.Name??`Channel ${w}`);let C=[],B=[],E=[];if(vM(a))wM(s[0].shape)?(C=[[0,255]],B=[[0,255]],E=[[255,0,0]]):(C=[[0,255],[0,255],[0,255]],B=[[0,255],[0,255],[0,255]],E=[[255,0,0],[0,255,0],[0,0,255]]),r&&o(),_A.setState({useColormap:!1,useLens:!1});else{const d=await nE({loader:s,selections:I,use3d:!1});B=d.domains,C=d.contrastLimits,E=B.length===1?[[255,255,255]]:B.map((w,m)=>(l[m].Color&&l[m].Color.slice(0,-1))??gm[m]),_A.setState({useLens:c.length!==1,useColormap:!0})}di.setState({ids:B.map(()=>String(Math.random())),selections:I,domains:B,contrastLimits:C,colors:E,channelsVisible:E.map(()=>!0)}),_A.setState({isChannelLoading:I.map(d=>!d),isViewerLoading:!1,pixelValues:new Array(I.length).fill(Zd),globalSelection:I[0],channelOptions:c});const[h,f,Q]=Bm(s);ue.setState({xSlice:h,ySlice:f,zSlice:Q})})()},[s,a])},SM=()=>yM({onDrop:A=>{let t;A.length===1?t={urlOrFile:A[0],description:A[0].name}:t={urlOrFile:A,description:"data.zarr"},_A.setState({source:t})}});function Qt(e){return e&&e.ownerDocument||document}function Vo(e,A){typeof e=="function"?e(A):e&&(e.current=A)}function We(e,A){return p.useMemo(function(){return e==null&&A==null?null:function(t){Vo(e,t),Vo(A,t)}},[e,A])}var TgA=typeof window<"u"?p.useLayoutEffect:p.useEffect;function Je(e){var A=p.useRef(e);return TgA(function(){A.current=e}),p.useCallback(function(){return A.current.apply(void 0,arguments)},[])}function Ex(e){return e.substring(2).toLowerCase()}function UgA(e){return document.documentElement.clientWidth-1;else{var w=Qt(I.current);d=!w.documentElement.contains(f.target)||I.current.contains(f.target)}!d&&(i||!Q)&&o(f)}}),u=function(Q){return function(d){c.current=!0;var w=A.props[Q];w&&w(d)}},h={ref:B};return a!==!1&&(h[a]=u(a)),p.useEffect(function(){if(a!==!1){var f=Ex(a),Q=Qt(I.current),d=function(){g.current=!0};return Q.addEventListener(f,E),Q.addEventListener("touchmove",d),function(){Q.removeEventListener(f,E),Q.removeEventListener("touchmove",d)}}},[E,a]),r!==!1&&(h[r]=u(r)),p.useEffect(function(){if(r!==!1){var f=Ex(r),Q=Qt(I.current);return Q.addEventListener(f,E),function(){Q.removeEventListener(f,E)}}},[E,r]),p.createElement(p.Fragment,null,p.cloneElement(A,h))}function fe(e){if(typeof e!="string")throw new Error(Ca(7));return e.charAt(0).toUpperCase()+e.slice(1)}function Jr(){for(var e=arguments.length,A=new Array(e),t=0;t1&&arguments[1]!==void 0?arguments[1]:166,t;function i(){for(var n=arguments.length,r=new Array(n),o=0;o"u"?p.useEffect:p.useLayoutEffect;function yIA(e){var A=e.classes,t=e.pulsate,i=t===void 0?!1:t,n=e.rippleX,r=e.rippleY,o=e.rippleSize,s=e.in,a=e.onExited,g=a===void 0?function(){}:a,I=e.timeout,l=p.useState(!1),c=l[0],C=l[1],B=yA(A.ripple,A.rippleVisible,i&&A.ripplePulsate),E={width:o,height:o,top:-(o/2)+r,left:-(o/2)+n},u=yA(A.child,c&&A.childLeaving,i&&A.childPulsate),h=Je(g);return pIA(function(){if(!s){C(!0);var f=setTimeout(h,I);return function(){clearTimeout(f)}}},[h,s,I]),p.createElement("span",{className:B,style:E},p.createElement("span",{className:u}))}var t0=550,mIA=80,wIA=function(A){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(t0,"ms ").concat(A.transitions.easing.easeInOut)},ripplePulsate:{animationDuration:"".concat(A.transitions.duration.shorter,"ms")},child:{opacity:1,display:"block",width:"100%",height:"100%",borderRadius:"50%",backgroundColor:"currentColor"},childLeaving:{opacity:0,animation:"$exit ".concat(t0,"ms ").concat(A.transitions.easing.easeInOut)},childPulsate:{position:"absolute",left:0,top:0,animation:"$pulsate 2500ms ".concat(A.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)"}}}},vIA=p.forwardRef(function(A,t){var i=A.center,n=i===void 0?!1:i,r=A.classes,o=A.className,s=SA(A,["center","classes","className"]),a=p.useState([]),g=a[0],I=a[1],l=p.useRef(0),c=p.useRef(null);p.useEffect(function(){c.current&&(c.current(),c.current=null)},[g]);var C=p.useRef(!1),B=p.useRef(null),E=p.useRef(null),u=p.useRef(null);p.useEffect(function(){return function(){clearTimeout(B.current)}},[]);var h=p.useCallback(function(w){var m=w.pulsate,v=w.rippleX,x=w.rippleY,D=w.rippleSize,F=w.cb;I(function(N){return[].concat(wl(N),[p.createElement(yIA,{key:l.current,classes:r,timeout:t0,pulsate:m,rippleX:v,rippleY:x,rippleSize:D})])}),l.current+=1,c.current=F},[r]),f=p.useCallback(function(){var w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},m=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},v=arguments.length>2?arguments[2]:void 0,x=m.pulsate,D=x===void 0?!1:x,F=m.center,N=F===void 0?n||m.pulsate:F,k=m.fakeElement,P=k===void 0?!1:k;if(w.type==="mousedown"&&C.current){C.current=!1;return}w.type==="touchstart"&&(C.current=!0);var H=P?null:u.current,W=H?H.getBoundingClientRect():{width:0,height:0,left:0,top:0},J,Z,z;if(N||w.clientX===0&&w.clientY===0||!w.clientX&&!w.touches)J=Math.round(W.width/2),Z=Math.round(W.height/2);else{var O=w.touches?w.touches[0]:w,Y=O.clientX,T=O.clientY;J=Math.round(Y-W.left),Z=Math.round(T-W.top)}if(N)z=Math.sqrt((2*Math.pow(W.width,2)+Math.pow(W.height,2))/3),z%2===0&&(z+=1);else{var q=Math.max(Math.abs((H?H.clientWidth:0)-J),J)*2+2,j=Math.max(Math.abs((H?H.clientHeight:0)-Z),Z)*2+2;z=Math.sqrt(Math.pow(q,2)+Math.pow(j,2))}w.touches?E.current===null&&(E.current=function(){h({pulsate:D,rippleX:J,rippleY:Z,rippleSize:z,cb:v})},B.current=setTimeout(function(){E.current&&(E.current(),E.current=null)},mIA)):h({pulsate:D,rippleX:J,rippleY:Z,rippleSize:z,cb:v})},[n,h]),Q=p.useCallback(function(){f({},{pulsate:!0})},[f]),d=p.useCallback(function(w,m){if(clearTimeout(B.current),w.type==="touchend"&&E.current){w.persist(),E.current(),E.current=null,B.current=setTimeout(function(){d(w,m)});return}E.current=null,I(function(v){return v.length>0?v.slice(1):v}),c.current=m},[]);return p.useImperativeHandle(t,function(){return{pulsate:Q,start:f,stop:d}},[Q,f,d]),p.createElement("span",M({className:yA(r.root,o),ref:u},s),p.createElement(WgA,{component:null,exit:!0},g))});const SIA=Ae(wIA,{flip:!1,name:"MuiTouchRipple"})(p.memo(vIA));var DIA={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:{}},RIA=p.forwardRef(function(A,t){var i=A.action,n=A.buttonRef,r=A.centerRipple,o=r===void 0?!1:r,s=A.children,a=A.classes,g=A.className,I=A.component,l=I===void 0?"button":I,c=A.disabled,C=c===void 0?!1:c,B=A.disableRipple,E=B===void 0?!1:B,u=A.disableTouchRipple,h=u===void 0?!1:u,f=A.focusRipple,Q=f===void 0?!1:f,d=A.focusVisibleClassName,w=A.onBlur,m=A.onClick,v=A.onFocus,x=A.onFocusVisible,D=A.onKeyDown,F=A.onKeyUp,N=A.onMouseDown,k=A.onMouseLeave,P=A.onMouseUp,H=A.onTouchEnd,W=A.onTouchMove,J=A.onTouchStart,Z=A.onDragLeave,z=A.tabIndex,O=z===void 0?0:z,Y=A.TouchRippleProps,T=A.type,q=T===void 0?"button":T,j=SA(A,["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"]),AA=p.useRef(null);function iA(){return kt.findDOMNode(AA.current)}var gA=p.useRef(null),sA=p.useState(!1),BA=sA[0],IA=sA[1];C&&BA&&IA(!1);var bA=yu(),EA=bA.isFocusVisible,QA=bA.onBlurVisible,TA=bA.ref;p.useImperativeHandle(i,function(){return{focusVisible:function(){IA(!0),AA.current.focus()}}},[]),p.useEffect(function(){BA&&Q&&!E&&gA.current.pulsate()},[E,Q,BA]);function RA(rA,GA){var we=arguments.length>2&&arguments[2]!==void 0?arguments[2]:h;return Je(function(de){GA&&GA(de);var xe=we;return!xe&&gA.current&&gA.current[rA](de),!0})}var UA=RA("start",N),fA=RA("stop",Z),NA=RA("stop",P),XA=RA("stop",function(rA){BA&&rA.preventDefault(),k&&k(rA)}),ie=RA("start",J),ge=RA("stop",H),KA=RA("stop",W),eA=RA("stop",function(rA){BA&&(QA(rA),IA(!1)),w&&w(rA)},!1),aA=Je(function(rA){AA.current||(AA.current=rA.currentTarget),EA(rA)&&(IA(!0),x&&x(rA)),v&&v(rA)}),FA=function(){var GA=iA();return l&&l!=="button"&&!(GA.tagName==="A"&&GA.href)},ne=p.useRef(!1),VA=Je(function(rA){Q&&!ne.current&&BA&&gA.current&&rA.key===" "&&(ne.current=!0,rA.persist(),gA.current.stop(rA,function(){gA.current.start(rA)})),rA.target===rA.currentTarget&&FA()&&rA.key===" "&&rA.preventDefault(),D&&D(rA),rA.target===rA.currentTarget&&FA()&&rA.key==="Enter"&&!C&&(rA.preventDefault(),m&&m(rA))}),Ge=Je(function(rA){Q&&rA.key===" "&&gA.current&&BA&&!rA.defaultPrevented&&(ne.current=!1,rA.persist(),gA.current.stop(rA,function(){gA.current.pulsate(rA)})),F&&F(rA),m&&rA.target===rA.currentTarget&&FA()&&rA.key===" "&&!rA.defaultPrevented&&m(rA)}),WA=l;WA==="button"&&j.href&&(WA="a");var qA={};WA==="button"?(qA.type=q,qA.disabled=C):((WA!=="a"||!j.href)&&(qA.role="button"),qA["aria-disabled"]=C);var Re=We(n,t),oe=We(TA,AA),JA=We(Re,oe),xA=p.useState(!1),Ce=xA[0],Ee=xA[1];p.useEffect(function(){Ee(!0)},[]);var PA=Ce&&!E&&!C;return p.createElement(WA,M({className:yA(a.root,g,BA&&[a.focusVisible,d],C&&a.disabled),onBlur:eA,onClick:m,onFocus:aA,onKeyDown:VA,onKeyUp:Ge,onMouseDown:UA,onMouseLeave:XA,onMouseUp:NA,onDragLeave:fA,onTouchEnd:ge,onTouchMove:KA,onTouchStart:ie,ref:JA,tabIndex:C?-1:O},qA,j),s,PA?p.createElement(SIA,M({ref:gA,center:o},Y)):null)});const Zl=Ae(DIA,{name:"MuiButtonBase"})(RIA);var xIA=function(A){return{root:{textAlign:"center",flex:"0 0 auto",fontSize:A.typography.pxToRem(24),padding:12,borderRadius:"50%",overflow:"visible",color:A.palette.action.active,transition:A.transitions.create("background-color",{duration:A.transitions.duration.shortest}),"&:hover":{backgroundColor:Bt(A.palette.action.active,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"&$disabled":{backgroundColor:"transparent",color:A.palette.action.disabled}},edgeStart:{marginLeft:-12,"$sizeSmall&":{marginLeft:-3}},edgeEnd:{marginRight:-12,"$sizeSmall&":{marginRight:-3}},colorInherit:{color:"inherit"},colorPrimary:{color:A.palette.primary.main,"&:hover":{backgroundColor:Bt(A.palette.primary.main,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},colorSecondary:{color:A.palette.secondary.main,"&:hover":{backgroundColor:Bt(A.palette.secondary.main,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},disabled:{},sizeSmall:{padding:3,fontSize:A.typography.pxToRem(18)},label:{width:"100%",display:"flex",alignItems:"inherit",justifyContent:"inherit"}}},FIA=p.forwardRef(function(A,t){var i=A.edge,n=i===void 0?!1:i,r=A.children,o=A.classes,s=A.className,a=A.color,g=a===void 0?"default":a,I=A.disabled,l=I===void 0?!1:I,c=A.disableFocusRipple,C=c===void 0?!1:c,B=A.size,E=B===void 0?"medium":B,u=SA(A,["edge","children","classes","className","color","disabled","disableFocusRipple","size"]);return p.createElement(Zl,M({className:yA(o.root,s,g!=="default"&&o["color".concat(fe(g))],l&&o.disabled,E==="small"&&o["size".concat(fe(E))],{start:o.edgeStart,end:o.edgeEnd}[n]),centerRipple:!0,focusRipple:!C,disabled:l,ref:t},u),p.createElement("span",{className:o.label},r))});const Wo=Ae(xIA,{name:"MuiIconButton"})(FIA);var NIA=function(A){var t=A.palette.type==="light"?TI:UI,i=A.palette.type==="light"?UI:TI;return{root:M({},A.typography.body2,{borderRadius:A.shape.borderRadius,backgroundColor:"transparent",display:"flex",padding:"6px 16px"}),standardSuccess:{color:t(A.palette.success.main,.6),backgroundColor:i(A.palette.success.main,.9),"& $icon":{color:A.palette.success.main}},standardInfo:{color:t(A.palette.info.main,.6),backgroundColor:i(A.palette.info.main,.9),"& $icon":{color:A.palette.info.main}},standardWarning:{color:t(A.palette.warning.main,.6),backgroundColor:i(A.palette.warning.main,.9),"& $icon":{color:A.palette.warning.main}},standardError:{color:t(A.palette.error.main,.6),backgroundColor:i(A.palette.error.main,.9),"& $icon":{color:A.palette.error.main}},outlinedSuccess:{color:t(A.palette.success.main,.6),border:"1px solid ".concat(A.palette.success.main),"& $icon":{color:A.palette.success.main}},outlinedInfo:{color:t(A.palette.info.main,.6),border:"1px solid ".concat(A.palette.info.main),"& $icon":{color:A.palette.info.main}},outlinedWarning:{color:t(A.palette.warning.main,.6),border:"1px solid ".concat(A.palette.warning.main),"& $icon":{color:A.palette.warning.main}},outlinedError:{color:t(A.palette.error.main,.6),border:"1px solid ".concat(A.palette.error.main),"& $icon":{color:A.palette.error.main}},filledSuccess:{color:"#fff",fontWeight:A.typography.fontWeightMedium,backgroundColor:A.palette.success.main},filledInfo:{color:"#fff",fontWeight:A.typography.fontWeightMedium,backgroundColor:A.palette.info.main},filledWarning:{color:"#fff",fontWeight:A.typography.fontWeightMedium,backgroundColor:A.palette.warning.main},filledError:{color:"#fff",fontWeight:A.typography.fontWeightMedium,backgroundColor:A.palette.error.main},icon:{marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9},message:{padding:"8px 0"},action:{display:"flex",alignItems:"center",marginLeft:"auto",paddingLeft:16,marginRight:-8}}},dx={success:p.createElement(uIA,{fontSize:"inherit"}),warning:p.createElement(hIA,{fontSize:"inherit"}),error:p.createElement(fIA,{fontSize:"inherit"}),info:p.createElement(QIA,{fontSize:"inherit"})},LIA=p.createElement(dIA,{fontSize:"small"}),bIA=p.forwardRef(function(A,t){var i=A.action,n=A.children,r=A.classes,o=A.className,s=A.closeText,a=s===void 0?"Close":s,g=A.color,I=A.icon,l=A.iconMapping,c=l===void 0?dx:l,C=A.onClose,B=A.role,E=B===void 0?"alert":B,u=A.severity,h=u===void 0?"success":u,f=A.variant,Q=f===void 0?"standard":f,d=SA(A,["action","children","classes","className","closeText","color","icon","iconMapping","onClose","role","severity","variant"]);return p.createElement(Zr,M({role:E,square:!0,elevation:0,className:yA(r.root,r["".concat(Q).concat(fe(g||h))],o),ref:t},d),I!==!1?p.createElement("div",{className:r.icon},I||c[h]||dx[h]):null,p.createElement("div",{className:r.message},n),i!=null?p.createElement("div",{className:r.action},i):null,i==null&&C?p.createElement("div",{className:r.action},p.createElement(Wo,{size:"small","aria-label":a,title:a,color:"inherit",onClick:C},LIA)):null)});const aC=Ae(NIA,{name:"MuiAlert"})(bIA);var GIA=function(A){return{root:{margin:0},body2:A.typography.body2,body1:A.typography.body1,caption:A.typography.caption,button:A.typography.button,h1:A.typography.h1,h2:A.typography.h2,h3:A.typography.h3,h4:A.typography.h4,h5:A.typography.h5,h6:A.typography.h6,subtitle1:A.typography.subtitle1,subtitle2:A.typography.subtitle2,overline:A.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:A.palette.primary.main},colorSecondary:{color:A.palette.secondary.main},colorTextPrimary:{color:A.palette.text.primary},colorTextSecondary:{color:A.palette.text.secondary},colorError:{color:A.palette.error.main},displayInline:{display:"inline"},displayBlock:{display:"block"}}},px={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p"},_IA=p.forwardRef(function(A,t){var i=A.align,n=i===void 0?"inherit":i,r=A.classes,o=A.className,s=A.color,a=s===void 0?"initial":s,g=A.component,I=A.display,l=I===void 0?"initial":I,c=A.gutterBottom,C=c===void 0?!1:c,B=A.noWrap,E=B===void 0?!1:B,u=A.paragraph,h=u===void 0?!1:u,f=A.variant,Q=f===void 0?"body1":f,d=A.variantMapping,w=d===void 0?px:d,m=SA(A,["align","classes","className","color","component","display","gutterBottom","noWrap","paragraph","variant","variantMapping"]),v=g||(h?"p":w[Q]||px[Q])||"span";return p.createElement(v,M({className:yA(r.root,o,Q!=="inherit"&&r[Q],a!=="initial"&&r["color".concat(fe(a))],E&&r.noWrap,C&&r.gutterBottom,h&&r.paragraph,n!=="inherit"&&r["align".concat(fe(n))],l!=="initial"&&r["display".concat(fe(l))]),ref:t},m))});const zo=Ae(GIA,{name:"MuiTypography"})(_IA);var MIA={root:{},underlineNone:{textDecoration:"none"},underlineHover:{textDecoration:"none","&:hover":{textDecoration:"underline"}},underlineAlways:{textDecoration:"underline"},button:{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","&::-moz-focus-inner":{borderStyle:"none"},"&$focusVisible":{outline:"auto"}},focusVisible:{}},kIA=p.forwardRef(function(A,t){var i=A.classes,n=A.className,r=A.color,o=r===void 0?"primary":r,s=A.component,a=s===void 0?"a":s,g=A.onBlur,I=A.onFocus,l=A.TypographyClasses,c=A.underline,C=c===void 0?"hover":c,B=A.variant,E=B===void 0?"inherit":B,u=SA(A,["classes","className","color","component","onBlur","onFocus","TypographyClasses","underline","variant"]),h=yu(),f=h.isFocusVisible,Q=h.onBlurVisible,d=h.ref,w=p.useState(!1),m=w[0],v=w[1],x=We(t,d),D=function(k){m&&(Q(),v(!1)),g&&g(k)},F=function(k){f(k)&&v(!0),I&&I(k)};return p.createElement(zo,M({className:yA(i.root,i["underline".concat(fe(C))],n,m&&i.focusVisible,a==="button"&&i.button),classes:l,color:o,component:a,onBlur:D,onFocus:F,ref:x,variant:E},u))});const mu=Ae(MIA,{name:"MuiLink"})(kIA);function TIA(){return G.jsxs(G.Fragment,{children:['Avivator could not find an IFD index for the requested OME-TIFF, and therefore longer latencies are expected. Please read our documentation on "Indexed TIFF" to generate an IFD index for your OME-TIFF and improve initial load times.',G.jsx(mu,{target:"_blank",rel:"noopener noreferrer",href:"http://viv.gehlenborglab.org/#data-preparation",children:"in this section of our documentation"})," ","and then place the offsets.json adjacent to the OME-TIFF wherever hosted."]})}function UIA({message:e}){return G.jsxs(G.Fragment,{children:[e?`The following error was thrown: "${e}". `:"Something has gone wrong loading your image. ","Please refer to the"," ",G.jsx(mu,{target:"_blank",rel:"noopener noreferrer",href:"http://viv.gehlenborglab.org",children:"docs"})," ","for information about supported file formats."]})}function PIA(){return G.jsxs(G.Fragment,{children:['You are seeing a random demo image because no image URL was provided. To view your own images, enter a URL into the "OME-TIFF/Bioformats-Zarr URL" field. See the'," ",G.jsx(mu,{target:"_blank",rel:"noopener noreferrer",href:"http://viv.gehlenborglab.org",children:"docs"})," ","for details on how to prepare your images for viewing with Avivator."]})}function HIA(){return G.jsx(G.Fragment,{children:"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."})}const qIA=()=>{const[e,A,t,i,n,r,o]=_A(s=>[s.isOffsetsSnackbarOn,s.loaderErrorSnackbar,s.isNoImageUrlSnackbarOn,s.toggleIsOffsetsSnackbarOn,s.toggleIsNoImageUrlSnackbarOn,s.isVolumeRenderingWarningOn,s.toggleIsVolumeRenderingWarningOn],Te);return G.jsxs(G.Fragment,{children:[G.jsx(sC,{open:e,anchorOrigin:{vertical:"top",horizontal:"center"},elevation:6,variant:"filled",children:G.jsx(aC,{onClose:i,severity:"warning",children:G.jsx(TIA,{})})}),G.jsx(sC,{open:A.on,anchorOrigin:{vertical:"top",horizontal:"center"},elevation:6,variant:"filled",children:G.jsx(aC,{onClose:()=>_A.setState({loaderErrorSnackbar:{on:!1,message:null}}),severity:"error",children:G.jsx(UIA,{message:A.message})})}),G.jsx(sC,{open:t,anchorOrigin:{vertical:"top",horizontal:"center"},elevation:6,variant:"filled",children:G.jsx(aC,{onClose:n,severity:"info",children:G.jsx(PIA,{})})}),G.jsx(sC,{open:r,anchorOrigin:{vertical:"top",horizontal:"center"},elevation:6,variant:"filled",children:G.jsx(aC,{onClose:o,severity:"warning",children:G.jsx(HIA,{})})})]})},JIA=qIA;function OIA(e){var A=typeof e;return e!=null&&(A=="object"||A=="function")}var FM=OIA,YIA=typeof rc=="object"&&rc&&rc.Object===Object&&rc,KIA=YIA,VIA=KIA,WIA=typeof self=="object"&&self&&self.Object===Object&&self,zIA=VIA||WIA||Function("return this")(),NM=zIA,jIA=NM,XIA=function(){return jIA.Date.now()},ZIA=XIA,$IA=/\s/;function AlA(e){for(var A=e.length;A--&&$IA.test(e.charAt(A)););return A}var elA=AlA,tlA=elA,ilA=/^\s+/;function nlA(e){return e&&e.slice(0,tlA(e)+1).replace(ilA,"")}var rlA=nlA,olA=NM,slA=olA.Symbol,LM=slA,yx=LM,bM=Object.prototype,alA=bM.hasOwnProperty,glA=bM.toString,Fg=yx?yx.toStringTag:void 0;function IlA(e){var A=alA.call(e,Fg),t=e[Fg];try{e[Fg]=void 0;var i=!0}catch{}var n=glA.call(e);return i&&(A?e[Fg]=t:delete e[Fg]),n}var llA=IlA,clA=Object.prototype,ClA=clA.toString;function BlA(e){return ClA.call(e)}var ElA=BlA,mx=LM,ulA=llA,hlA=ElA,flA="[object Null]",QlA="[object Undefined]",wx=mx?mx.toStringTag:void 0;function dlA(e){return e==null?e===void 0?QlA:flA:wx&&wx in Object(e)?ulA(e):hlA(e)}var plA=dlA;function ylA(e){return e!=null&&typeof e=="object"}var mlA=ylA,wlA=plA,vlA=mlA,SlA="[object Symbol]";function DlA(e){return typeof e=="symbol"||vlA(e)&&wlA(e)==SlA}var RlA=DlA,xlA=rlA,vx=FM,FlA=RlA,Sx=0/0,NlA=/^[-+]0x[0-9a-f]+$/i,LlA=/^0b[01]+$/i,blA=/^0o[0-7]+$/i,GlA=parseInt;function _lA(e){if(typeof e=="number")return e;if(FlA(e))return Sx;if(vx(e)){var A=typeof e.valueOf=="function"?e.valueOf():e;e=vx(A)?A+"":A}if(typeof e!="string")return e===0?e:+e;e=xlA(e);var t=LlA.test(e);return t||blA.test(e)?GlA(e.slice(2),t?2:8):NlA.test(e)?Sx:+e}var MlA=_lA,klA=FM,bf=ZIA,Dx=MlA,TlA="Expected a function",UlA=Math.max,PlA=Math.min;function HlA(e,A,t){var i,n,r,o,s,a,g=0,I=!1,l=!1,c=!0;if(typeof e!="function")throw new TypeError(TlA);A=Dx(A)||0,klA(t)&&(I=!!t.leading,l="maxWait"in t,r=l?UlA(Dx(t.maxWait)||0,A):r,c="trailing"in t?!!t.trailing:c);function C(m){var v=i,x=n;return i=n=void 0,g=m,o=e.apply(x,v),o}function B(m){return g=m,s=setTimeout(h,A),I?C(m):o}function E(m){var v=m-a,x=m-g,D=A-v;return l?PlA(D,r-x):D}function u(m){var v=m-a,x=m-g;return a===void 0||v>=A||v<0||l&&x>=r}function h(){var m=bf();if(u(m))return f(m);s=setTimeout(h,E(m))}function f(m){return s=void 0,c&&i?C(m):(i=n=void 0,o)}function Q(){s!==void 0&&clearTimeout(s),g=0,i=a=n=s=void 0}function d(){return s===void 0?o:f(bf())}function w(){var m=bf(),v=u(m);if(i=arguments,n=this,a=m,v){if(s===void 0)return B(a);if(l)return clearTimeout(s),s=setTimeout(h,A),C(a)}return s===void 0&&(s=setTimeout(h,A)),o}return w.cancel=Q,w.flush=d,w}var qlA=HlA;const GM=pi(qlA),JlA=()=>{const[e,A,t]=_A(v=>[v.useLinkedView,v.use3d,v.viewState],Te),[i,n,r,o]=di(v=>[v.colors,v.contrastLimits,v.channelsVisible,v.selections],Te),s=Bn(),a=lm(),[g,I,l,c,C,B,E,u,h,f,Q,d,w]=ue(v=>[v.lensSelection,v.colormap,v.renderingMode,v.xSlice,v.ySlice,v.zSlice,v.resolution,v.lensEnabled,v.zoomLock,v.panLock,v.isOverviewOn,v.onViewportLoad,v.useFixedAxis],Te),m=({viewState:{zoom:v}})=>{const x=Math.min(Math.max(Math.round(-v),0),s.length-1);_A.setState({pyramidResolution:x})};return A?G.jsx(SaA,{loader:s,contrastLimits:n,colors:i,channelsVisible:r,selections:o,colormap:I,xSlice:c,ySlice:C,zSlice:B,resolution:E,extensions:[MgA(I,l)],height:a.height,width:a.width,onViewportLoad:d,useFixedAxis:w,viewStates:[t],onViewStateChange:GM(({viewState:v,viewId:x})=>_A.setState({viewState:{...v,id:x}}),250,{trailing:!0})}):e?G.jsx(vaA,{loader:s,contrastLimits:n,colors:i,channelsVisible:r,selections:o,height:a.height,width:a.width,zoomLock:h,panLock:f,hoverHooks:{handleValue:v=>_A.setState({pixelValues:v})},lensSelection:g,lensEnabled:u,onViewportLoad:d,extensions:[I?new ZB:new $B],colormap:I||"viridis",snapScaleBar:!0}):G.jsx(waA,{loader:s,contrastLimits:n,colors:i,channelsVisible:r,selections:o,height:a.height,width:a.width,overview:QgA,overviewOn:Q,hoverHooks:{handleValue:v=>_A.setState({pixelValues:v})},lensSelection:g,lensEnabled:u,onViewportLoad:d,extensions:[I?new ZB:new $B],colormap:I||"viridis",onViewStateChange:m,snapScaleBar:!0})},OlA=JlA;var ir=44,YlA=function(A){return{root:{display:"inline-block"},static:{transition:A.transitions.create("transform")},indeterminate:{animation:"$circular-rotate 1.4s linear infinite"},determinate:{transition:A.transitions.create("transform")},colorPrimary:{color:A.palette.primary.main},colorSecondary:{color:A.palette.secondary.main},svg:{display:"block"},circle:{stroke:"currentColor"},circleStatic:{transition:A.transitions.create("stroke-dashoffset")},circleIndeterminate:{animation:"$circular-dash 1.4s ease-in-out infinite",strokeDasharray:"80px, 200px",strokeDashoffset:"0px"},circleDeterminate:{transition:A.transitions.create("stroke-dashoffset")},"@keyframes circular-rotate":{"0%":{transformOrigin:"50% 50%"},"100%":{transform:"rotate(360deg)"}},"@keyframes circular-dash":{"0%":{strokeDasharray:"1px, 200px",strokeDashoffset:"0px"},"50%":{strokeDasharray:"100px, 200px",strokeDashoffset:"-15px"},"100%":{strokeDasharray:"100px, 200px",strokeDashoffset:"-125px"}},circleDisableShrink:{animation:"none"}}},KlA=p.forwardRef(function(A,t){var i=A.classes,n=A.className,r=A.color,o=r===void 0?"primary":r,s=A.disableShrink,a=s===void 0?!1:s,g=A.size,I=g===void 0?40:g,l=A.style,c=A.thickness,C=c===void 0?3.6:c,B=A.value,E=B===void 0?0:B,u=A.variant,h=u===void 0?"indeterminate":u,f=SA(A,["classes","className","color","disableShrink","size","style","thickness","value","variant"]),Q={},d={},w={};if(h==="determinate"||h==="static"){var m=2*Math.PI*((ir-C)/2);Q.strokeDasharray=m.toFixed(3),w["aria-valuenow"]=Math.round(E),Q.strokeDashoffset="".concat(((100-E)/100*m).toFixed(3),"px"),d.transform="rotate(-90deg)"}return p.createElement("div",M({className:yA(i.root,n,o!=="inherit"&&i["color".concat(fe(o))],{determinate:i.determinate,indeterminate:i.indeterminate,static:i.static}[h]),style:M({width:I,height:I},d,l),ref:t,role:"progressbar"},w,f),p.createElement("svg",{className:i.svg,viewBox:"".concat(ir/2," ").concat(ir/2," ").concat(ir," ").concat(ir)},p.createElement("circle",{className:yA(i.circle,a&&i.circleDisableShrink,{determinate:i.circleDeterminate,indeterminate:i.circleIndeterminate,static:i.circleStatic}[h]),style:Q,cx:ir,cy:ir,r:(ir-C)/2,fill:"none",strokeWidth:C})))});const _M=Ae(YlA,{name:"MuiCircularProgress",flip:!1})(KlA);var VlA=[0,1,2,3,4,5,6,7,8,9,10],WlA=["auto",!0,1,2,3,4,5,6,7,8,9,10,11,12];function zlA(e,A,t){var i={};WlA.forEach(function(n){var r="grid-".concat(t,"-").concat(n);if(n===!0){i[r]={flexBasis:0,flexGrow:1,maxWidth:"100%"};return}if(n==="auto"){i[r]={flexBasis:"auto",flexGrow:0,maxWidth:"none"};return}var o="".concat(Math.round(n/12*1e8)/1e6,"%");i[r]={flexBasis:o,flexGrow:0,maxWidth:o}}),t==="xs"?M(e,i):e[A.breakpoints.up(t)]=i}function Gf(e){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,t=parseFloat(e);return"".concat(t/A).concat(String(e).replace(String(t),"")||"px")}function jlA(e,A){var t={};return VlA.forEach(function(i){var n=e.spacing(i);n!==0&&(t["spacing-".concat(A,"-").concat(i)]={margin:"-".concat(Gf(n,2)),width:"calc(100% + ".concat(Gf(n),")"),"& > $item":{padding:Gf(n,2)}})}),t}var XlA=function(A){return M({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"}},jlA(A,"xs"),A.breakpoints.keys.reduce(function(t,i){return zlA(t,A,i),t},{}))},ZlA=p.forwardRef(function(A,t){var i=A.alignContent,n=i===void 0?"stretch":i,r=A.alignItems,o=r===void 0?"stretch":r,s=A.classes,a=A.className,g=A.component,I=g===void 0?"div":g,l=A.container,c=l===void 0?!1:l,C=A.direction,B=C===void 0?"row":C,E=A.item,u=E===void 0?!1:E,h=A.justify,f=A.justifyContent,Q=f===void 0?"flex-start":f,d=A.lg,w=d===void 0?!1:d,m=A.md,v=m===void 0?!1:m,x=A.sm,D=x===void 0?!1:x,F=A.spacing,N=F===void 0?0:F,k=A.wrap,P=k===void 0?"wrap":k,H=A.xl,W=H===void 0?!1:H,J=A.xs,Z=J===void 0?!1:J,z=A.zeroMinWidth,O=z===void 0?!1:z,Y=SA(A,["alignContent","alignItems","classes","className","component","container","direction","item","justify","justifyContent","lg","md","sm","spacing","wrap","xl","xs","zeroMinWidth"]),T=yA(s.root,a,c&&[s.container,N!==0&&s["spacing-xs-".concat(String(N))]],u&&s.item,O&&s.zeroMinWidth,B!=="row"&&s["direction-xs-".concat(String(B))],P!=="wrap"&&s["wrap-xs-".concat(String(P))],o!=="stretch"&&s["align-items-xs-".concat(String(o))],n!=="stretch"&&s["align-content-xs-".concat(String(n))],(h||Q)!=="flex-start"&&s["justify-content-xs-".concat(String(h||Q))],Z!==!1&&s["grid-xs-".concat(String(Z))],D!==!1&&s["grid-sm-".concat(String(D))],v!==!1&&s["grid-md-".concat(String(v))],w!==!1&&s["grid-lg-".concat(String(w))],W!==!1&&s["grid-xl-".concat(String(W))]);return p.createElement(I,M({className:T,ref:t},Y))}),$lA=Ae(XlA,{name:"MuiGrid"})(ZlA);const ZA=$lA;var vs;function MM(){if(vs)return vs;var e=document.createElement("div"),A=document.createElement("div");return A.style.width="10px",A.style.height="1px",e.appendChild(A),e.dir="rtl",e.style.fontSize="14px",e.style.width="4px",e.style.height="1px",e.style.position="absolute",e.style.top="-1000px",e.style.overflow="scroll",document.body.appendChild(e),vs="reverse",e.scrollLeft>0?vs="default":(e.scrollLeft=1,e.scrollLeft===0&&(vs="negative")),document.body.removeChild(e),vs}function Rx(e,A){var t=e.scrollLeft;if(A!=="rtl")return t;var i=MM();switch(i){case"negative":return e.scrollWidth-e.clientWidth+t;case"reverse":return e.scrollWidth-e.clientWidth-t;default:return t}}function AcA(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}function ecA(e,A,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:function(){},r=i.ease,o=r===void 0?AcA:r,s=i.duration,a=s===void 0?300:s,g=null,I=A[e],l=!1,c=function(){l=!0},C=function B(E){if(l){n(new Error("Animation cancelled"));return}g===null&&(g=E);var u=Math.min(1,(E-g)/a);if(A[e]=o(u)*(t-I)+I,u>=1){requestAnimationFrame(function(){n(null)});return}requestAnimationFrame(B)};return I===t?(n(new Error("Element already at target position")),c):(requestAnimationFrame(C),c)}var tcA={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};function icA(e){var A=e.onChange,t=SA(e,["onChange"]),i=p.useRef(),n=p.useRef(null),r=function(){i.current=n.current.offsetHeight-n.current.clientHeight};return p.useEffect(function(){var o=da(function(){var s=i.current;r(),s!==i.current&&A(i.current)});return window.addEventListener("resize",o),function(){o.clear(),window.removeEventListener("resize",o)}},[A]),p.useEffect(function(){r(),A(i.current)},[A]),p.createElement("div",M({style:tcA,ref:n},t))}var ncA=function(A){return{root:{position:"absolute",height:2,bottom:0,width:"100%",transition:A.transitions.create()},colorPrimary:{backgroundColor:A.palette.primary.main},colorSecondary:{backgroundColor:A.palette.secondary.main},vertical:{height:"100%",width:2,right:0}}},rcA=p.forwardRef(function(A,t){var i=A.classes,n=A.className,r=A.color,o=A.orientation,s=SA(A,["classes","className","color","orientation"]);return p.createElement("span",M({className:yA(i.root,i["color".concat(fe(r))],n,o==="vertical"&&i.vertical),ref:t},s))});const ocA=Ae(ncA,{name:"PrivateTabIndicator"})(rcA),scA=mi(p.createElement("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"})),acA=mi(p.createElement("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}));var gcA={root:{width:40,flexShrink:0,opacity:.8,"&$disabled":{opacity:0}},vertical:{width:"100%",height:40,"& svg":{transform:"rotate(90deg)"}},disabled:{}},IcA=p.createElement(scA,{fontSize:"small"}),lcA=p.createElement(acA,{fontSize:"small"}),ccA=p.forwardRef(function(A,t){var i=A.classes,n=A.className,r=A.direction,o=A.orientation,s=A.disabled,a=SA(A,["classes","className","direction","orientation","disabled"]);return p.createElement(Zl,M({component:"div",className:yA(i.root,n,s&&i.disabled,o==="vertical"&&i.vertical),ref:t,role:null,tabIndex:null},a),r==="left"?IcA:lcA)});const CcA=Ae(gcA,{name:"MuiTabScrollButton"})(ccA);var BcA=function(A){return{root:{overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex"},vertical:{flexDirection:"column"},flexContainer:{display:"flex"},flexContainerVertical:{flexDirection:"column"},centered:{justifyContent:"center"},scroller:{position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap"},fixed:{overflowX:"hidden",width:"100%"},scrollable:{overflowX:"scroll",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}},scrollButtons:{},scrollButtonsDesktop:y({},A.breakpoints.down("xs"),{display:"none"}),indicator:{}}},EcA=p.forwardRef(function(A,t){var i=A["aria-label"],n=A["aria-labelledby"],r=A.action,o=A.centered,s=o===void 0?!1:o,a=A.children,g=A.classes,I=A.className,l=A.component,c=l===void 0?"div":l,C=A.indicatorColor,B=C===void 0?"secondary":C,E=A.onChange,u=A.orientation,h=u===void 0?"horizontal":u,f=A.ScrollButtonComponent,Q=f===void 0?CcA:f,d=A.scrollButtons,w=d===void 0?"auto":d,m=A.selectionFollowsFocus,v=A.TabIndicatorProps,x=v===void 0?{}:v,D=A.TabScrollButtonProps,F=A.textColor,N=F===void 0?"inherit":F,k=A.value,P=A.variant,H=P===void 0?"standard":P,W=SA(A,["aria-label","aria-labelledby","action","centered","children","classes","className","component","indicatorColor","onChange","orientation","ScrollButtonComponent","scrollButtons","selectionFollowsFocus","TabIndicatorProps","TabScrollButtonProps","textColor","value","variant"]),J=Rl(),Z=H==="scrollable",z=J.direction==="rtl",O=h==="vertical",Y=O?"scrollTop":"scrollLeft",T=O?"top":"left",q=O?"bottom":"right",j=O?"clientHeight":"clientWidth",AA=O?"height":"width",iA=p.useState(!1),gA=iA[0],sA=iA[1],BA=p.useState({}),IA=BA[0],bA=BA[1],EA=p.useState({start:!1,end:!1}),QA=EA[0],TA=EA[1],RA=p.useState({overflow:"hidden",marginBottom:null}),UA=RA[0],fA=RA[1],NA=new Map,XA=p.useRef(null),ie=p.useRef(null),ge=function(){var rA=XA.current,GA;if(rA){var we=rA.getBoundingClientRect();GA={clientWidth:rA.clientWidth,scrollLeft:rA.scrollLeft,scrollTop:rA.scrollTop,scrollLeftNormalized:Rx(rA,J.direction),scrollWidth:rA.scrollWidth,top:we.top,bottom:we.bottom,left:we.left,right:we.right}}var de;if(rA&&k!==!1){var xe=ie.current.children;if(xe.length>0){var Fe=xe[NA.get(k)];de=Fe?Fe.getBoundingClientRect():null}}return{tabsMeta:GA,tabMeta:de}},KA=Je(function(){var PA,rA=ge(),GA=rA.tabsMeta,we=rA.tabMeta,de=0;if(we&&GA)if(O)de=we.top-GA.top+GA.scrollTop;else{var xe=z?GA.scrollLeftNormalized+GA.clientWidth-GA.scrollWidth:GA.scrollLeft;de=we.left-GA.left+xe}var Fe=(PA={},y(PA,T,de),y(PA,AA,we?we[AA]:0),PA);if(isNaN(IA[T])||isNaN(IA[AA]))bA(Fe);else{var je=Math.abs(IA[T]-Fe[T]),et=Math.abs(IA[AA]-Fe[AA]);(je>=1||et>=1)&&bA(Fe)}}),eA=function(rA){ecA(Y,XA.current,rA)},aA=function(rA){var GA=XA.current[Y];O?GA+=rA:(GA+=rA*(z?-1:1),GA*=z&&MM()==="reverse"?-1:1),eA(GA)},FA=function(){aA(-XA.current[j])},ne=function(){aA(XA.current[j])},VA=p.useCallback(function(PA){fA({overflow:null,marginBottom:-PA})},[]),Ge=function(){var rA={};rA.scrollbarSizeListener=Z?p.createElement(icA,{className:g.scrollable,onChange:VA}):null;var GA=QA.start||QA.end,we=Z&&(w==="auto"&&GA||w==="desktop"||w==="on");return rA.scrollButtonStart=we?p.createElement(Q,M({orientation:h,direction:z?"right":"left",onClick:FA,disabled:!QA.start,className:yA(g.scrollButtons,w!=="on"&&g.scrollButtonsDesktop)},D)):null,rA.scrollButtonEnd=we?p.createElement(Q,M({orientation:h,direction:z?"left":"right",onClick:ne,disabled:!QA.end,className:yA(g.scrollButtons,w!=="on"&&g.scrollButtonsDesktop)},D)):null,rA},WA=Je(function(){var PA=ge(),rA=PA.tabsMeta,GA=PA.tabMeta;if(!(!GA||!rA)){if(GA[T]rA[q]){var de=rA[Y]+(GA[q]-rA[q]);eA(de)}}}),qA=Je(function(){if(Z&&w!=="off"){var PA=XA.current,rA=PA.scrollTop,GA=PA.scrollHeight,we=PA.clientHeight,de=PA.scrollWidth,xe=PA.clientWidth,Fe,je;if(O)Fe=rA>1,je=rA1,je=z?et>1:et *:first-child":{marginBottom:6}},textColorInherit:{color:"inherit",opacity:.7,"&$selected":{opacity:1},"&$disabled":{opacity:.5}},textColorPrimary:{color:A.palette.text.secondary,"&$selected":{color:A.palette.primary.main},"&$disabled":{color:A.palette.text.disabled}},textColorSecondary:{color:A.palette.text.secondary,"&$selected":{color:A.palette.secondary.main},"&$disabled":{color:A.palette.text.disabled}},selected:{},disabled:{},fullWidth:{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"},wrapped:{fontSize:A.typography.pxToRem(12),lineHeight:1.5},wrapper:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"100%",flexDirection:"column"}}},fcA=p.forwardRef(function(A,t){var i=A.classes,n=A.className,r=A.disabled,o=r===void 0?!1:r,s=A.disableFocusRipple,a=s===void 0?!1:s,g=A.fullWidth,I=A.icon,l=A.indicator,c=A.label,C=A.onChange,B=A.onClick,E=A.onFocus,u=A.selected,h=A.selectionFollowsFocus,f=A.textColor,Q=f===void 0?"inherit":f,d=A.value,w=A.wrapped,m=w===void 0?!1:w,v=SA(A,["classes","className","disabled","disableFocusRipple","fullWidth","icon","indicator","label","onChange","onClick","onFocus","selected","selectionFollowsFocus","textColor","value","wrapped"]),x=function(N){C&&C(N,d),B&&B(N)},D=function(N){h&&!u&&C&&C(N,d),E&&E(N)};return p.createElement(Zl,M({focusRipple:!a,className:yA(i.root,i["textColor".concat(fe(Q))],n,o&&i.disabled,u&&i.selected,c&&I&&i.labelIcon,g&&i.fullWidth,m&&i.wrapped),ref:t,role:"tab","aria-selected":u,disabled:o,onClick:x,onFocus:D,tabIndex:u?0:-1},v),p.createElement("span",{className:i.wrapper},I,c),l)});const xx=Ae(hcA,{name:"MuiTab"})(fcA);var QcA=function(A){return{root:{height:1,margin:0,border:"none",flexShrink:0,backgroundColor:A.palette.divider},absolute:{position:"absolute",bottom:0,left:0,width:"100%"},inset:{marginLeft:72},light:{backgroundColor:Bt(A.palette.divider,.08)},middle:{marginLeft:A.spacing(2),marginRight:A.spacing(2)},vertical:{height:"100%",width:1},flexItem:{alignSelf:"stretch",height:"auto"}}},dcA=p.forwardRef(function(A,t){var i=A.absolute,n=i===void 0?!1:i,r=A.classes,o=A.className,s=A.component,a=s===void 0?"hr":s,g=A.flexItem,I=g===void 0?!1:g,l=A.light,c=l===void 0?!1:l,C=A.orientation,B=C===void 0?"horizontal":C,E=A.role,u=E===void 0?a!=="hr"?"separator":void 0:E,h=A.variant,f=h===void 0?"fullWidth":h,Q=SA(A,["absolute","classes","className","component","flexItem","light","orientation","role","variant"]);return p.createElement(a,M({className:yA(r.root,o,f!=="fullWidth"&&r[f],n&&r.absolute,I&&r.flexItem,c&&r.light,B==="vertical"&&r.vertical),role:u,ref:t},Q))});const i0=Ae(QcA,{name:"MuiDivider"})(dcA);var kM=p.createContext();function pcA(){return p.useContext(kM)}const hm=kM;function Za(){return p.useContext(hm)}var ycA={root:{padding:9},checked:{},disabled:{},input:{cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}},mcA=p.forwardRef(function(A,t){var i=A.autoFocus,n=A.checked,r=A.checkedIcon,o=A.classes,s=A.className,a=A.defaultChecked,g=A.disabled,I=A.icon,l=A.id,c=A.inputProps,C=A.inputRef,B=A.name,E=A.onBlur,u=A.onChange,h=A.onFocus,f=A.readOnly,Q=A.required,d=A.tabIndex,w=A.type,m=A.value,v=SA(A,["autoFocus","checked","checkedIcon","classes","className","defaultChecked","disabled","icon","id","inputProps","inputRef","name","onBlur","onChange","onFocus","readOnly","required","tabIndex","type","value"]),x=du({controlled:n,default:!!a,name:"SwitchBase",state:"checked"}),D=Sl(x,2),F=D[0],N=D[1],k=Za(),P=function(O){h&&h(O),k&&k.onFocus&&k.onFocus(O)},H=function(O){E&&E(O),k&&k.onBlur&&k.onBlur(O)},W=function(O){var Y=O.target.checked;N(Y),u&&u(O,Y)},J=g;k&&typeof J>"u"&&(J=k.disabled);var Z=w==="checkbox"||w==="radio";return p.createElement(Wo,M({component:"span",className:yA(o.root,s,F&&o.checked,J&&o.disabled),disabled:J,tabIndex:null,role:void 0,onFocus:P,onBlur:H,ref:t},v),p.createElement("input",M({autoFocus:i,checked:n,defaultChecked:a,className:o.input,disabled:J,id:Z&&l,name:B,onChange:W,readOnly:f,ref:C,required:Q,tabIndex:d,type:w,value:m},c)),F?r:I)});const wcA=Ae(ycA,{name:"PrivateSwitchBase"})(mcA),vcA=mi(p.createElement("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"})),ScA=mi(p.createElement("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})),DcA=mi(p.createElement("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}));var RcA=function(A){return{root:{color:A.palette.text.secondary},checked:{},disabled:{},indeterminate:{},colorPrimary:{"&$checked":{color:A.palette.primary.main,"&:hover":{backgroundColor:Bt(A.palette.primary.main,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"&$disabled":{color:A.palette.action.disabled}},colorSecondary:{"&$checked":{color:A.palette.secondary.main,"&:hover":{backgroundColor:Bt(A.palette.secondary.main,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"&$disabled":{color:A.palette.action.disabled}}}},xcA=p.createElement(ScA,null),FcA=p.createElement(vcA,null),NcA=p.createElement(DcA,null),LcA=p.forwardRef(function(A,t){var i=A.checkedIcon,n=i===void 0?xcA:i,r=A.classes,o=A.color,s=o===void 0?"secondary":o,a=A.icon,g=a===void 0?FcA:a,I=A.indeterminate,l=I===void 0?!1:I,c=A.indeterminateIcon,C=c===void 0?NcA:c,B=A.inputProps,E=A.size,u=E===void 0?"medium":E,h=SA(A,["checkedIcon","classes","color","icon","indeterminate","indeterminateIcon","inputProps","size"]),f=l?C:g,Q=l?C:n;return p.createElement(wcA,M({type:"checkbox",classes:{root:yA(r.root,r["color".concat(fe(s))],l&&r.indeterminate),checked:r.checked,disabled:r.disabled},color:s,inputProps:M({"data-indeterminate":l},B),icon:p.cloneElement(f,{fontSize:f.props.fontSize===void 0&&u==="small"?u:f.props.fontSize}),checkedIcon:p.cloneElement(Q,{fontSize:Q.props.fontSize===void 0&&u==="small"?u:Q.props.fontSize}),ref:t},h))});const fm=Ae(RcA,{name:"MuiCheckbox"})(LcA);var bcA=function(A){return{thumb:{"&$open":{"& $offset":{transform:"scale(1) translateY(-10px)"}}},open:{},offset:M({zIndex:1},A.typography.body2,{fontSize:A.typography.pxToRem(12),lineHeight:1.2,transition:A.transitions.create(["transform"],{duration:A.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:A.palette.primary.contrastText,transform:"rotate(45deg)"}}};function GcA(e){var A=e.children,t=e.classes,i=e.className,n=e.open,r=e.value,o=e.valueLabelDisplay;return o==="off"?A:p.cloneElement(A,{className:yA(A.props.className,(n||o==="on")&&t.open,t.thumb)},p.createElement("span",{className:yA(t.offset,i)},p.createElement("span",{className:t.circle},p.createElement("span",{className:t.label},r))))}const _cA=Ae(bcA,{name:"PrivateValueLabel"})(GcA);function _f(e,A){return e-A}function Mf(e,A,t){return Math.min(Math.max(A,e),t)}function Fx(e,A){var t=e.reduce(function(n,r,o){var s=Math.abs(A-r);return n===null||s0&&aA.some(function(wA){return wA.label})&&o.marked,Y===!1&&o.trackFalse,k==="vertical"&&o.vertical,Y==="inverted"&&o.trackInverted),onMouseDown:gs},BA),p.createElement("span",{className:o.rail}),p.createElement("span",{className:o.track,style:Is}),p.createElement("input",{value:eA.join(","),name:v,type:"hidden"}),aA.map(function(wA,LA){var ve=IC(wA.value,m,d),pe=cC[xe].offset(ve),ee;return Y===!1?ee=eA.indexOf(wA.value)!==-1:ee=Y==="normal"&&(KA?wA.value>=eA[0]&&wA.value<=eA[eA.length-1]:wA.value<=eA[0])||Y==="inverted"&&(KA?wA.value<=eA[0]||wA.value>=eA[eA.length-1]:wA.value>=eA[0]),p.createElement(p.Fragment,{key:wA.value},p.createElement("span",{style:pe,"data-index":LA,className:yA(o.mark,ee&&o.markActive)}),wA.label!=null?p.createElement("span",{"aria-hidden":!0,"data-index":LA,style:pe,className:yA(o.markLabel,ee&&o.markLabelActive)},wA.label):null)}),eA.map(function(wA,LA){var ve=IC(wA,m,d),pe=cC[xe].offset(ve);return p.createElement(j,{key:LA,valueLabelFormat:sA,valueLabelDisplay:iA,className:o.valueLabel,value:typeof sA=="function"?sA(H(wA),LA):sA,index:LA,open:UA===LA||QA===LA||iA==="on",disabled:B},p.createElement(z,{className:yA(o.thumb,o["thumbColor".concat(fe(g))],QA===LA&&o.active,B&&o.disabled,qA===LA&&o.focusVisible),tabIndex:B?null:0,role:"slider",style:pe,"data-index":LA,"aria-label":E?E(LA):i,"aria-labelledby":n,"aria-orientation":k,"aria-valuemax":H(d),"aria-valuemin":H(m),"aria-valuenow":H(wA),"aria-valuetext":u?u(H(wA),LA):r,onKeyDown:we,onFocus:Ce,onBlur:Ee,onMouseOver:PA,onMouseLeave:rA}))}))});const Qm=Ae(TcA,{name:"MuiSlider"})(UcA);function PcA(e){return e=typeof e=="function"?e():e,kt.findDOMNode(e)}var kf=typeof window<"u"?p.useLayoutEffect:p.useEffect,HcA=p.forwardRef(function(A,t){var i=A.children,n=A.container,r=A.disablePortal,o=r===void 0?!1:r,s=A.onRendered,a=p.useState(null),g=a[0],I=a[1],l=We(p.isValidElement(i)?i.ref:null,t);return kf(function(){o||I(PcA(n)||document.body)},[n,o]),kf(function(){if(g&&!o)return Vo(t,g),function(){Vo(t,null)}},[t,g,o]),kf(function(){s&&(g||o)&&s()},[s,g,o]),o?p.isValidElement(i)?p.cloneElement(i,{ref:l}):i:g&&kt.createPortal(i,g)});const TM=HcA;function UM(){var e=document.createElement("div");e.style.width="99px",e.style.height="99px",e.style.position="absolute",e.style.top="-9999px",e.style.overflow="scroll",document.body.appendChild(e);var A=e.offsetWidth-e.clientWidth;return document.body.removeChild(e),A}function qcA(e){var A=Qt(e);return A.body===e?Qu(A).innerWidth>A.documentElement.clientWidth:e.scrollHeight>e.clientHeight}function yI(e,A){A?e.setAttribute("aria-hidden","true"):e.removeAttribute("aria-hidden")}function Gx(e){return parseInt(window.getComputedStyle(e)["padding-right"],10)||0}function _x(e,A,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[],n=arguments.length>4?arguments[4]:void 0,r=[A,t].concat(wl(i)),o=["TEMPLATE","SCRIPT","STYLE"];[].forEach.call(e.children,function(s){s.nodeType===1&&r.indexOf(s)===-1&&o.indexOf(s.tagName)===-1&&yI(s,n)})}function Tf(e,A){var t=-1;return e.some(function(i,n){return A(i)?(t=n,!0):!1}),t}function JcA(e,A){var t=[],i=[],n=e.container,r;if(!A.disableScrollLock){if(qcA(n)){var o=UM();t.push({value:n.style.paddingRight,key:"padding-right",el:n}),n.style["padding-right"]="".concat(Gx(n)+o,"px"),r=Qt(n).querySelectorAll(".mui-fixed"),[].forEach.call(r,function(I){i.push(I.style.paddingRight),I.style.paddingRight="".concat(Gx(I)+o,"px")})}var s=n.parentElement,a=s.nodeName==="HTML"&&window.getComputedStyle(s)["overflow-y"]==="scroll"?s:n;t.push({value:a.style.overflow,key:"overflow",el:a}),a.style.overflow="hidden"}var g=function(){r&&[].forEach.call(r,function(l,c){i[c]?l.style.paddingRight=i[c]:l.style.removeProperty("padding-right")}),t.forEach(function(l){var c=l.value,C=l.el,B=l.key;c?C.style.setProperty(B,c):C.style.removeProperty(B)})};return g}function OcA(e){var A=[];return[].forEach.call(e.children,function(t){t.getAttribute&&t.getAttribute("aria-hidden")==="true"&&A.push(t)}),A}var YcA=function(){function e(){Bq(this,e),this.modals=[],this.containers=[]}return Qp(e,[{key:"add",value:function(t,i){var n=this.modals.indexOf(t);if(n!==-1)return n;n=this.modals.length,this.modals.push(t),t.modalRef&&yI(t.modalRef,!1);var r=OcA(i);_x(i,t.mountNode,t.modalRef,r,!0);var o=Tf(this.containers,function(s){return s.container===i});return o!==-1?(this.containers[o].modals.push(t),n):(this.containers.push({modals:[t],container:i,restore:null,hiddenSiblingNodes:r}),n)}},{key:"mount",value:function(t,i){var n=Tf(this.containers,function(o){return o.modals.indexOf(t)!==-1}),r=this.containers[n];r.restore||(r.restore=JcA(r,i))}},{key:"remove",value:function(t){var i=this.modals.indexOf(t);if(i===-1)return i;var n=Tf(this.containers,function(s){return s.modals.indexOf(t)!==-1}),r=this.containers[n];if(r.modals.splice(r.modals.indexOf(t),1),this.modals.splice(i,1),r.modals.length===0)r.restore&&r.restore(),t.modalRef&&yI(t.modalRef,!0),_x(r.container,t.mountNode,t.modalRef,r.hiddenSiblingNodes,!1),this.containers.splice(n,1);else{var o=r.modals[r.modals.length-1];o.modalRef&&yI(o.modalRef,!1)}return i}},{key:"isTopModal",value:function(t){return this.modals.length>0&&this.modals[this.modals.length-1]===t}}]),e}();function KcA(e){var A=e.children,t=e.disableAutoFocus,i=t===void 0?!1:t,n=e.disableEnforceFocus,r=n===void 0?!1:n,o=e.disableRestoreFocus,s=o===void 0?!1:o,a=e.getDoc,g=e.isEnabled,I=e.open,l=p.useRef(),c=p.useRef(null),C=p.useRef(null),B=p.useRef(),E=p.useRef(null),u=p.useCallback(function(Q){E.current=kt.findDOMNode(Q)},[]),h=We(A.ref,u),f=p.useRef();return p.useEffect(function(){f.current=I},[I]),!f.current&&I&&typeof window<"u"&&(B.current=a().activeElement),p.useEffect(function(){if(I){var Q=Qt(E.current);!i&&E.current&&!E.current.contains(Q.activeElement)&&(E.current.hasAttribute("tabIndex")||E.current.setAttribute("tabIndex",-1),E.current.focus());var d=function(){var x=E.current;if(x!==null){if(!Q.hasFocus()||r||!g()||l.current){l.current=!1;return}E.current&&!E.current.contains(Q.activeElement)&&E.current.focus()}},w=function(x){r||!g()||x.keyCode!==9||Q.activeElement===E.current&&(l.current=!0,x.shiftKey?C.current.focus():c.current.focus())};Q.addEventListener("focus",d,!0),Q.addEventListener("keydown",w,!0);var m=setInterval(function(){d()},50);return function(){clearInterval(m),Q.removeEventListener("focus",d,!0),Q.removeEventListener("keydown",w,!0),s||(B.current&&B.current.focus&&B.current.focus(),B.current=null)}}},[i,r,s,g,I]),p.createElement(p.Fragment,null,p.createElement("div",{tabIndex:0,ref:c,"data-test":"sentinelStart"}),p.cloneElement(A,{ref:h}),p.createElement("div",{tabIndex:0,ref:C,"data-test":"sentinelEnd"}))}var Mx={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"}},VcA=p.forwardRef(function(A,t){var i=A.invisible,n=i===void 0?!1:i,r=A.open,o=SA(A,["invisible","open"]);return r?p.createElement("div",M({"aria-hidden":!0,ref:t},o,{style:M({},Mx.root,n?Mx.invisible:{},o.style)})):null});const WcA=VcA;function zcA(e){return e=typeof e=="function"?e():e,kt.findDOMNode(e)}function jcA(e){return e.children?e.children.props.hasOwnProperty("in"):!1}var XcA=new YcA,ZcA=function(A){return{root:{position:"fixed",zIndex:A.zIndex.modal,right:0,bottom:0,top:0,left:0},hidden:{visibility:"hidden"}}},$cA=p.forwardRef(function(A,t){var i=ba(),n=x2({name:"MuiModal",props:M({},A),theme:i}),r=n.BackdropComponent,o=r===void 0?WcA:r,s=n.BackdropProps,a=n.children,g=n.closeAfterTransition,I=g===void 0?!1:g,l=n.container,c=n.disableAutoFocus,C=c===void 0?!1:c,B=n.disableBackdropClick,E=B===void 0?!1:B,u=n.disableEnforceFocus,h=u===void 0?!1:u,f=n.disableEscapeKeyDown,Q=f===void 0?!1:f,d=n.disablePortal,w=d===void 0?!1:d,m=n.disableRestoreFocus,v=m===void 0?!1:m,x=n.disableScrollLock,D=x===void 0?!1:x,F=n.hideBackdrop,N=F===void 0?!1:F,k=n.keepMounted,P=k===void 0?!1:k,H=n.manager,W=H===void 0?XcA:H,J=n.onBackdropClick,Z=n.onClose,z=n.onEscapeKeyDown,O=n.onRendered,Y=n.open,T=SA(n,["BackdropComponent","BackdropProps","children","closeAfterTransition","container","disableAutoFocus","disableBackdropClick","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","manager","onBackdropClick","onClose","onEscapeKeyDown","onRendered","open"]),q=p.useState(!0),j=q[0],AA=q[1],iA=p.useRef({}),gA=p.useRef(null),sA=p.useRef(null),BA=We(sA,t),IA=jcA(n),bA=function(){return Qt(gA.current)},EA=function(){return iA.current.modalRef=sA.current,iA.current.mountNode=gA.current,iA.current},QA=function(){W.mount(EA(),{disableScrollLock:D}),sA.current.scrollTop=0},TA=Je(function(){var aA=zcA(l)||bA().body;W.add(EA(),aA),sA.current&&QA()}),RA=p.useCallback(function(){return W.isTopModal(EA())},[W]),UA=Je(function(aA){gA.current=aA,aA&&(O&&O(),Y&&RA()?QA():yI(sA.current,!0))}),fA=p.useCallback(function(){W.remove(EA())},[W]);if(p.useEffect(function(){return function(){fA()}},[fA]),p.useEffect(function(){Y?TA():(!IA||!I)&&fA()},[Y,fA,IA,I,TA]),!P&&!Y&&(!IA||j))return null;var NA=function(){AA(!1)},XA=function(){AA(!0),I&&fA()},ie=function(FA){FA.target===FA.currentTarget&&(J&&J(FA),!E&&Z&&Z(FA,"backdropClick"))},ge=function(FA){FA.key!=="Escape"||!RA()||(z&&z(FA),Q||(FA.stopPropagation(),Z&&Z(FA,"escapeKeyDown")))},KA=ZcA(i||{zIndex:S2}),eA={};return a.props.tabIndex===void 0&&(eA.tabIndex=a.props.tabIndex||"-1"),IA&&(eA.onEnter=Jr(NA,a.props.onEnter),eA.onExited=Jr(XA,a.props.onExited)),p.createElement(TM,{ref:UA,container:l,disablePortal:w},p.createElement("div",M({ref:BA,onKeyDown:ge,role:"presentation"},T,{style:M({},KA.root,!Y&&j?KA.hidden:{},T.style)}),N?null:p.createElement(o,M({open:Y,onClick:ie},s)),p.createElement(KcA,{disableEnforceFocus:h,disableAutoFocus:C,disableRestoreFocus:v,getDoc:bA,isEnabled:RA,open:Y},p.cloneElement(a,eA))))});const ACA=$cA;function kx(e,A){var t=0;return typeof A=="number"?t=A:A==="center"?t=e.height/2:A==="bottom"&&(t=e.height),t}function Tx(e,A){var t=0;return typeof A=="number"?t=A:A==="center"?t=e.width/2:A==="right"&&(t=e.width),t}function Ux(e){return[e.horizontal,e.vertical].map(function(A){return typeof A=="number"?"".concat(A,"px"):A}).join(" ")}function eCA(e,A){for(var t=A,i=0;t&&t!==e;)t=t.parentElement,i+=t.scrollTop;return i}function Uf(e){return typeof e=="function"?e():e}var tCA={root:{},paper:{position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}},iCA=p.forwardRef(function(A,t){var i=A.action,n=A.anchorEl,r=A.anchorOrigin,o=r===void 0?{vertical:"top",horizontal:"left"}:r,s=A.anchorPosition,a=A.anchorReference,g=a===void 0?"anchorEl":a,I=A.children,l=A.classes,c=A.className,C=A.container,B=A.elevation,E=B===void 0?8:B,u=A.getContentAnchorEl,h=A.marginThreshold,f=h===void 0?16:h,Q=A.onEnter,d=A.onEntered,w=A.onEntering,m=A.onExit,v=A.onExited,x=A.onExiting,D=A.open,F=A.PaperProps,N=F===void 0?{}:F,k=A.transformOrigin,P=k===void 0?{vertical:"top",horizontal:"left"}:k,H=A.TransitionComponent,W=H===void 0?RM:H,J=A.transitionDuration,Z=J===void 0?"auto":J,z=A.TransitionProps,O=z===void 0?{}:z,Y=SA(A,["action","anchorEl","anchorOrigin","anchorPosition","anchorReference","children","classes","className","container","elevation","getContentAnchorEl","marginThreshold","onEnter","onEntered","onEntering","onExit","onExited","onExiting","open","PaperProps","transformOrigin","TransitionComponent","transitionDuration","TransitionProps"]),T=p.useRef(),q=p.useCallback(function(EA){if(g==="anchorPosition")return s;var QA=Uf(n),TA=QA&&QA.nodeType===1?QA:Qt(T.current).body,RA=TA.getBoundingClientRect(),UA=EA===0?o.vertical:"center";return{top:RA.top+kx(RA,UA),left:RA.left+Tx(RA,o.horizontal)}},[n,o.horizontal,o.vertical,s,g]),j=p.useCallback(function(EA){var QA=0;if(u&&g==="anchorEl"){var TA=u(EA);if(TA&&EA.contains(TA)){var RA=eCA(EA,TA);QA=TA.offsetTop+TA.clientHeight/2-RA||0}}return QA},[o.vertical,g,u]),AA=p.useCallback(function(EA){var QA=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return{vertical:kx(EA,P.vertical)+QA,horizontal:Tx(EA,P.horizontal)}},[P.horizontal,P.vertical]),iA=p.useCallback(function(EA){var QA=j(EA),TA={width:EA.offsetWidth,height:EA.offsetHeight},RA=AA(TA,QA);if(g==="none")return{top:null,left:null,transformOrigin:Ux(RA)};var UA=q(QA),fA=UA.top-RA.vertical,NA=UA.left-RA.horizontal,XA=fA+TA.height,ie=NA+TA.width,ge=Qu(Uf(n)),KA=ge.innerHeight-f,eA=ge.innerWidth-f;if(fAKA){var FA=XA-KA;fA-=FA,RA.vertical+=FA}if(NAeA){var VA=ie-eA;NA-=VA,RA.horizontal+=VA}return{top:"".concat(Math.round(fA),"px"),left:"".concat(Math.round(NA),"px"),transformOrigin:Ux(RA)}},[n,g,q,j,AA,f]),gA=p.useCallback(function(){var EA=T.current;if(EA){var QA=iA(EA);QA.top!==null&&(EA.style.top=QA.top),QA.left!==null&&(EA.style.left=QA.left),EA.style.transformOrigin=QA.transformOrigin}},[iA]),sA=function(QA,TA){w&&w(QA,TA),gA()},BA=p.useCallback(function(EA){T.current=kt.findDOMNode(EA)},[]);p.useEffect(function(){D&&gA()}),p.useImperativeHandle(i,function(){return D?{updatePosition:function(){gA()}}:null},[D,gA]),p.useEffect(function(){if(D){var EA=da(function(){gA()});return window.addEventListener("resize",EA),function(){EA.clear(),window.removeEventListener("resize",EA)}}},[D,gA]);var IA=Z;Z==="auto"&&!W.muiSupportAuto&&(IA=void 0);var bA=C||(n?Qt(Uf(n)).body:void 0);return p.createElement(ACA,M({container:bA,open:D,ref:t,BackdropProps:{invisible:!0},className:yA(l.root,c)},Y),p.createElement(W,M({appear:!0,in:D,onEnter:Q,onEntered:d,onExit:m,onExited:v,onExiting:x,timeout:IA},O,{onEntering:Jr(sA,O.onEntering)}),p.createElement(Zr,M({elevation:E,ref:BA},N,{className:yA(l.paper,N.className)}),I)))});const nCA=Ae(tCA,{name:"MuiPopover"})(iCA);var rCA=p.createContext({});const VC=rCA;var oCA={root:{listStyle:"none",margin:0,padding:0,position:"relative"},padding:{paddingTop:8,paddingBottom:8},dense:{},subheader:{paddingTop:0}},sCA=p.forwardRef(function(A,t){var i=A.children,n=A.classes,r=A.className,o=A.component,s=o===void 0?"ul":o,a=A.dense,g=a===void 0?!1:a,I=A.disablePadding,l=I===void 0?!1:I,c=A.subheader,C=SA(A,["children","classes","className","component","dense","disablePadding","subheader"]),B=p.useMemo(function(){return{dense:g}},[g]);return p.createElement(VC.Provider,{value:B},p.createElement(s,M({className:yA(n.root,r,g&&n.dense,!l&&n.padding,c&&n.subheader),ref:t},C),c,i))});const aCA=Ae(oCA,{name:"MuiList"})(sCA);function Pf(e,A,t){return e===A?e.firstChild:A&&A.nextElementSibling?A.nextElementSibling:t?null:e.firstChild}function Px(e,A,t){return e===A?t?e.firstChild:e.lastChild:A&&A.previousElementSibling?A.previousElementSibling:t?null:e.lastChild}function PM(e,A){if(A===void 0)return!0;var t=e.innerText;return t===void 0&&(t=e.textContent),t=t.trim().toLowerCase(),t.length===0?!1:A.repeating?t[0]===A.keys[0]:t.indexOf(A.keys.join(""))===0}function Ng(e,A,t,i,n,r){for(var o=!1,s=n(e,A,A?t:!1);s;){if(s===e.firstChild){if(o)return;o=!0}var a=i?!1:s.disabled||s.getAttribute("aria-disabled")==="true";if(!s.hasAttribute("tabindex")||!PM(s,r)||a)s=n(e,s,t);else{s.focus();return}}}var gCA=typeof window>"u"?p.useEffect:p.useLayoutEffect,ICA=p.forwardRef(function(A,t){var i=A.actions,n=A.autoFocus,r=n===void 0?!1:n,o=A.autoFocusItem,s=o===void 0?!1:o,a=A.children,g=A.className,I=A.disabledItemsFocusable,l=I===void 0?!1:I,c=A.disableListWrap,C=c===void 0?!1:c,B=A.onKeyDown,E=A.variant,u=E===void 0?"selectedMenu":E,h=SA(A,["actions","autoFocus","autoFocusItem","children","className","disabledItemsFocusable","disableListWrap","onKeyDown","variant"]),f=p.useRef(null),Q=p.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});gCA(function(){r&&f.current.focus()},[r]),p.useImperativeHandle(i,function(){return{adjustStyleForScrollbar:function(F,N){var k=!f.current.style.width;if(F.clientHeight0&&(J-H.lastTime>500?(H.keys=[],H.repeating=!0,H.previousKeyMatched=!0):H.repeating&&W!==H.keys[0]&&(H.repeating=!1)),H.lastTime=J,H.keys.push(W);var Z=P&&!H.repeating&&PM(P,H);H.previousKeyMatched&&(Z||Ng(N,P,!1,l,Pf,H))?F.preventDefault():H.previousKeyMatched=!1}B&&B(F)},w=p.useCallback(function(D){f.current=kt.findDOMNode(D)},[]),m=We(w,t),v=-1;p.Children.forEach(a,function(D,F){p.isValidElement(D)&&(D.props.disabled||(u==="selectedMenu"&&D.props.selected||v===-1)&&(v=F))});var x=p.Children.map(a,function(D,F){if(F===v){var N={};return s&&(N.autoFocus=!0),D.props.tabIndex===void 0&&u==="selectedMenu"&&(N.tabIndex=0),p.cloneElement(D,N)}return D});return p.createElement(aCA,M({role:"menu",ref:m,className:g,onKeyDown:d,tabIndex:r?0:-1},h),x)});const dm=ICA;var Hx={vertical:"top",horizontal:"right"},qx={vertical:"top",horizontal:"left"},lCA={paper:{maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"},list:{outline:0}},cCA=p.forwardRef(function(A,t){var i=A.autoFocus,n=i===void 0?!0:i,r=A.children,o=A.classes,s=A.disableAutoFocusItem,a=s===void 0?!1:s,g=A.MenuListProps,I=g===void 0?{}:g,l=A.onClose,c=A.onEntering,C=A.open,B=A.PaperProps,E=B===void 0?{}:B,u=A.PopoverClasses,h=A.transitionDuration,f=h===void 0?"auto":h,Q=A.TransitionProps;Q=Q===void 0?{}:Q;var d=Q.onEntering,w=SA(Q,["onEntering"]),m=A.variant,v=m===void 0?"selectedMenu":m,x=SA(A,["autoFocus","children","classes","disableAutoFocusItem","MenuListProps","onClose","onEntering","open","PaperProps","PopoverClasses","transitionDuration","TransitionProps","variant"]),D=Rl(),F=n&&!a&&C,N=p.useRef(null),k=p.useRef(null),P=function(){return k.current},H=function(O,Y){N.current&&N.current.adjustStyleForScrollbar(O,D),c&&c(O,Y),d&&d(O,Y)},W=function(O){O.key==="Tab"&&(O.preventDefault(),l&&l(O,"tabKeyDown"))},J=-1;p.Children.map(r,function(z,O){p.isValidElement(z)&&(z.props.disabled||(v!=="menu"&&z.props.selected||J===-1)&&(J=O))});var Z=p.Children.map(r,function(z,O){return O===J?p.cloneElement(z,{ref:function(T){k.current=kt.findDOMNode(T),Vo(z.ref,T)}}):z});return p.createElement(nCA,M({getContentAnchorEl:P,classes:u,onClose:l,TransitionProps:M({onEntering:H},w),anchorOrigin:D.direction==="rtl"?Hx:qx,transformOrigin:D.direction==="rtl"?Hx:qx,PaperProps:M({},E,{classes:M({},E.classes,{root:o.paper})}),open:C,ref:t,transitionDuration:f},x),p.createElement(dm,M({onKeyDown:W,actions:N,autoFocus:n&&(J===-1||a),autoFocusItem:F,variant:v},I,{className:yA(o.list,I.className)}),Z))});const CCA=Ae(lCA,{name:"MuiMenu"})(cCA);function Jx(e){return e!=null&&!(Array.isArray(e)&&e.length===0)}function pm(e){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return e&&(Jx(e.value)&&e.value!==""||A&&Jx(e.defaultValue)&&e.defaultValue!=="")}function BCA(e){return e.startAdornment}function Ox(e,A){return kI(A)==="object"&&A!==null?e===A:String(e)===String(A)}function ECA(e){return e==null||typeof e=="string"&&!e.trim()}var uCA=p.forwardRef(function(A,t){var i=A["aria-label"],n=A.autoFocus,r=A.autoWidth,o=A.children,s=A.classes,a=A.className,g=A.defaultValue,I=A.disabled,l=A.displayEmpty,c=A.IconComponent,C=A.inputRef,B=A.labelId,E=A.MenuProps,u=E===void 0?{}:E,h=A.multiple,f=A.name,Q=A.onBlur,d=A.onChange,w=A.onClose,m=A.onFocus,v=A.onOpen,x=A.open,D=A.readOnly,F=A.renderValue,N=A.SelectDisplayProps,k=N===void 0?{}:N,P=A.tabIndex;A.type;var H=A.value,W=A.variant,J=W===void 0?"standard":W,Z=SA(A,["aria-label","autoFocus","autoWidth","children","classes","className","defaultValue","disabled","displayEmpty","IconComponent","inputRef","labelId","MenuProps","multiple","name","onBlur","onChange","onClose","onFocus","onOpen","open","readOnly","renderValue","SelectDisplayProps","tabIndex","type","value","variant"]),z=du({controlled:H,default:g,name:"Select"}),O=Sl(z,2),Y=O[0],T=O[1],q=p.useRef(null),j=p.useState(null),AA=j[0],iA=j[1],gA=p.useRef(x!=null),sA=gA.current,BA=p.useState(),IA=BA[0],bA=BA[1],EA=p.useState(!1),QA=EA[0],TA=EA[1],RA=We(t,C);p.useImperativeHandle(RA,function(){return{focus:function(){AA.focus()},node:q.current,value:Y}},[AA,Y]),p.useEffect(function(){n&&AA&&AA.focus()},[n,AA]),p.useEffect(function(){if(AA){var JA=Qt(AA).getElementById(B);if(JA){var xA=function(){getSelection().isCollapsed&&AA.focus()};return JA.addEventListener("click",xA),function(){JA.removeEventListener("click",xA)}}}},[B,AA]);var UA=function(xA,Ce){xA?v&&v(Ce):w&&w(Ce),sA||(bA(r?null:AA.clientWidth),TA(xA))},fA=function(xA){xA.button===0&&(xA.preventDefault(),AA.focus(),UA(!0,xA))},NA=function(xA){UA(!1,xA)},XA=p.Children.toArray(o),ie=function(xA){var Ce=XA.map(function(PA){return PA.props.value}).indexOf(xA.target.value);if(Ce!==-1){var Ee=XA[Ce];T(Ee.props.value),d&&d(xA,Ee)}},ge=function(xA){return function(Ce){h||UA(!1,Ce);var Ee;if(h){Ee=Array.isArray(Y)?Y.slice():[];var PA=Y.indexOf(xA.props.value);PA===-1?Ee.push(xA.props.value):Ee.splice(PA,1)}else Ee=xA.props.value;xA.props.onClick&&xA.props.onClick(Ce),Y!==Ee&&(T(Ee),d&&(Ce.persist(),Object.defineProperty(Ce,"target",{writable:!0,value:{value:Ee,name:f}}),d(Ce,xA)))}},KA=function(xA){if(!D){var Ce=[" ","ArrowUp","ArrowDown","Enter"];Ce.indexOf(xA.key)!==-1&&(xA.preventDefault(),UA(!0,xA))}},eA=AA!==null&&(sA?x:QA),aA=function(xA){!eA&&Q&&(xA.persist(),Object.defineProperty(xA,"target",{writable:!0,value:{value:Y,name:f}}),Q(xA))};delete Z["aria-invalid"];var FA,ne,VA=[],Ge=!1;(pm({value:Y})||l)&&(F?FA=F(Y):Ge=!0);var WA=XA.map(function(JA){if(!p.isValidElement(JA))return null;var xA;if(h){if(!Array.isArray(Y))throw new Error(Ca(2));xA=Y.some(function(Ce){return Ox(Ce,JA.props.value)}),xA&&Ge&&VA.push(JA.props.children)}else xA=Ox(Y,JA.props.value),xA&&Ge&&(ne=JA.props.children);return p.cloneElement(JA,{"aria-selected":xA?"true":void 0,onClick:ge(JA),onKeyUp:function(Ee){Ee.key===" "&&Ee.preventDefault(),JA.props.onKeyUp&&JA.props.onKeyUp(Ee)},role:"option",selected:xA,value:void 0,"data-value":JA.props.value})});Ge&&(FA=h?VA.join(", "):ne);var qA=IA;!r&&sA&&AA&&(qA=AA.clientWidth);var Re;typeof P<"u"?Re=P:Re=I?null:0;var oe=k.id||(f?"mui-component-select-".concat(f):void 0);return p.createElement(p.Fragment,null,p.createElement("div",M({className:yA(s.root,s.select,s.selectMenu,s[J],a,I&&s.disabled),ref:iA,tabIndex:Re,role:"button","aria-disabled":I?"true":void 0,"aria-expanded":eA?"true":void 0,"aria-haspopup":"listbox","aria-label":i,"aria-labelledby":[B,oe].filter(Boolean).join(" ")||void 0,onKeyDown:KA,onMouseDown:I||D?null:fA,onBlur:aA,onFocus:m},k,{id:oe}),ECA(FA)?p.createElement("span",{dangerouslySetInnerHTML:{__html:"​"}}):FA),p.createElement("input",M({value:Array.isArray(Y)?Y.join(","):Y,name:f,ref:q,"aria-hidden":!0,onChange:ie,tabIndex:-1,className:s.nativeInput,autoFocus:n},Z)),p.createElement(c,{className:yA(s.icon,s["icon".concat(fe(J))],eA&&s.iconOpen,I&&s.disabled)}),p.createElement(CCA,M({id:"menu-".concat(f||""),anchorEl:AA,open:eA,onClose:NA},u,{MenuListProps:M({"aria-labelledby":B,role:"listbox",disableListWrap:!0},u.MenuListProps),PaperProps:M({},u.PaperProps,{style:M({minWidth:qA},u.PaperProps!=null?u.PaperProps.style:null)})}),WA))});const hCA=uCA;function $a(e){var A=e.props,t=e.states,i=e.muiFormControl;return t.reduce(function(n,r){return n[r]=A[r],i&&typeof A[r]>"u"&&(n[r]=i[r]),n},{})}const HM=mi(p.createElement("path",{d:"M7 10l5 5 5-5z"}));function CC(e,A){return parseInt(e[A],10)||0}var fCA=typeof window<"u"?p.useLayoutEffect:p.useEffect,QCA={shadow:{visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"}},dCA=p.forwardRef(function(A,t){var i=A.onChange,n=A.rows,r=A.rowsMax,o=A.rowsMin,s=A.maxRows,a=A.minRows,g=a===void 0?1:a,I=A.style,l=A.value,c=SA(A,["onChange","rows","rowsMax","rowsMin","maxRows","minRows","style","value"]),C=s||r,B=n||o||g,E=p.useRef(l!=null),u=E.current,h=p.useRef(null),f=We(t,h),Q=p.useRef(null),d=p.useRef(0),w=p.useState({}),m=w[0],v=w[1],x=p.useCallback(function(){var F=h.current,N=window.getComputedStyle(F),k=Q.current;k.style.width=N.width,k.value=F.value||A.placeholder||"x",k.value.slice(-1)===` +`&&(k.value+=" ");var P=N["box-sizing"],H=CC(N,"padding-bottom")+CC(N,"padding-top"),W=CC(N,"border-bottom-width")+CC(N,"border-top-width"),J=k.scrollHeight-H;k.value="x";var Z=k.scrollHeight-H,z=J;B&&(z=Math.max(Number(B)*Z,z)),C&&(z=Math.min(Number(C)*Z,z)),z=Math.max(z,Z);var O=z+(P==="border-box"?H+W:0),Y=Math.abs(z-J)<=1;v(function(T){return d.current<20&&(O>0&&Math.abs((T.outerHeightStyle||0)-O)>1||T.overflow!==Y)?(d.current+=1,{overflow:Y,outerHeightStyle:O}):T})},[C,B,A.placeholder]);p.useEffect(function(){var F=da(function(){d.current=0,x()});return window.addEventListener("resize",F),function(){F.clear(),window.removeEventListener("resize",F)}},[x]),fCA(function(){x()}),p.useEffect(function(){d.current=0},[l]);var D=function(N){d.current=0,u||x(),i&&i(N)};return p.createElement(p.Fragment,null,p.createElement("textarea",M({value:l,onChange:D,ref:f,rows:B,style:M({height:m.outerHeightStyle,overflow:m.overflow?"hidden":null},I)},c)),p.createElement("textarea",{"aria-hidden":!0,className:A.className,readOnly:!0,ref:Q,tabIndex:-1,style:M({},QCA.shadow,I)}))});const pCA=dCA;var yCA=function(A){var t=A.palette.type==="light",i={color:"currentColor",opacity:t?.42:.5,transition:A.transitions.create("opacity",{duration:A.transitions.duration.shorter})},n={opacity:"0 !important"},r={opacity:t?.42:.5};return{"@global":{"@keyframes mui-auto-fill":{},"@keyframes mui-auto-fill-cancel":{}},root:M({},A.typography.body1,{color:A.palette.text.primary,lineHeight:"1.1876em",boxSizing:"border-box",position:"relative",cursor:"text",display:"inline-flex",alignItems:"center","&$disabled":{color:A.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":i,"&::-moz-placeholder":i,"&:-ms-input-placeholder":i,"&::-ms-input-placeholder":i,"&:focus":{outline:0},"&:invalid":{boxShadow:"none"},"&::-webkit-search-decoration":{"-webkit-appearance":"none"},"label[data-shrink=false] + $formControl &":{"&::-webkit-input-placeholder":n,"&::-moz-placeholder":n,"&:-ms-input-placeholder":n,"&::-ms-input-placeholder":n,"&:focus::-webkit-input-placeholder":r,"&:focus::-moz-placeholder":r,"&:focus:-ms-input-placeholder":r,"&:focus::-ms-input-placeholder":r},"&$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:{}}},mCA=typeof window>"u"?p.useEffect:p.useLayoutEffect,wCA=p.forwardRef(function(A,t){var i=A["aria-describedby"],n=A.autoComplete,r=A.autoFocus,o=A.classes,s=A.className;A.color;var a=A.defaultValue,g=A.disabled,I=A.endAdornment;A.error;var l=A.fullWidth,c=l===void 0?!1:l,C=A.id,B=A.inputComponent,E=B===void 0?"input":B,u=A.inputProps,h=u===void 0?{}:u,f=A.inputRef;A.margin;var Q=A.multiline,d=Q===void 0?!1:Q,w=A.name,m=A.onBlur,v=A.onChange,x=A.onClick,D=A.onFocus,F=A.onKeyDown,N=A.onKeyUp,k=A.placeholder,P=A.readOnly,H=A.renderSuffix,W=A.rows,J=A.rowsMax,Z=A.rowsMin,z=A.maxRows,O=A.minRows,Y=A.startAdornment,T=A.type,q=T===void 0?"text":T,j=A.value,AA=SA(A,["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"]),iA=h.value!=null?h.value:j,gA=p.useRef(iA!=null),sA=gA.current,BA=p.useRef(),IA=p.useCallback(function(WA){},[]),bA=We(h.ref,IA),EA=We(f,bA),QA=We(BA,EA),TA=p.useState(!1),RA=TA[0],UA=TA[1],fA=pcA(),NA=$a({props:A,muiFormControl:fA,states:["color","disabled","error","hiddenLabel","margin","required","filled"]});NA.focused=fA?fA.focused:RA,p.useEffect(function(){!fA&&g&&RA&&(UA(!1),m&&m())},[fA,g,RA,m]);var XA=fA&&fA.onFilled,ie=fA&&fA.onEmpty,ge=p.useCallback(function(WA){pm(WA)?XA&&XA():ie&&ie()},[XA,ie]);mCA(function(){sA&&ge({value:iA})},[iA,ge,sA]);var KA=function(qA){if(NA.disabled){qA.stopPropagation();return}D&&D(qA),h.onFocus&&h.onFocus(qA),fA&&fA.onFocus?fA.onFocus(qA):UA(!0)},eA=function(qA){m&&m(qA),h.onBlur&&h.onBlur(qA),fA&&fA.onBlur?fA.onBlur(qA):UA(!1)},aA=function(qA){if(!sA){var Re=qA.target||BA.current;if(Re==null)throw new Error(Ca(1));ge({value:Re.value})}for(var oe=arguments.length,JA=new Array(oe>1?oe-1:0),xA=1;xA span":{paddingLeft:5,paddingRight:5,display:"inline-block"}},legendNotched:{maxWidth:1e3,transition:A.transitions.create("max-width",{duration:100,easing:A.transitions.easing.easeOut,delay:50})}}},FCA=p.forwardRef(function(A,t){A.children;var i=A.classes,n=A.className,r=A.label,o=A.labelWidth,s=A.notched,a=A.style,g=SA(A,["children","classes","className","label","labelWidth","notched","style"]),I=Rl(),l=I.direction==="rtl"?"right":"left";if(r!==void 0)return p.createElement("fieldset",M({"aria-hidden":!0,className:yA(i.root,n),ref:t,style:a},g),p.createElement("legend",{className:yA(i.legendLabelled,s&&i.legendNotched)},r?p.createElement("span",null,r):p.createElement("span",{dangerouslySetInnerHTML:{__html:"​"}})));var c=o>0?o*.75+8:.01;return p.createElement("fieldset",M({"aria-hidden":!0,style:M(y({},"padding".concat(fe(l)),8),a),className:yA(i.root,n),ref:t},g),p.createElement("legend",{className:i.legend,style:{width:s?c:.01}},p.createElement("span",{dangerouslySetInnerHTML:{__html:"​"}})))});const NCA=Ae(xCA,{name:"PrivateNotchedOutline"})(FCA);var LCA=function(A){var t=A.palette.type==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{root:{position:"relative",borderRadius:A.shape.borderRadius,"&:hover $notchedOutline":{borderColor:A.palette.text.primary},"@media (hover: none)":{"&:hover $notchedOutline":{borderColor:t}},"&$focused $notchedOutline":{borderColor:A.palette.primary.main,borderWidth:2},"&$error $notchedOutline":{borderColor:A.palette.error.main},"&$disabled $notchedOutline":{borderColor:A.palette.action.disabled}},colorSecondary:{"&$focused $notchedOutline":{borderColor:A.palette.secondary.main}},focused:{},disabled:{},adornedStart:{paddingLeft:14},adornedEnd:{paddingRight:14},error:{},marginDense:{},multiline:{padding:"18.5px 14px","&$marginDense":{paddingTop:10.5,paddingBottom:10.5}},notchedOutline:{borderColor:t},input:{padding:"18.5px 14px","&:-webkit-autofill":{WebkitBoxShadow:A.palette.type==="light"?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:A.palette.type==="light"?null:"#fff",caretColor:A.palette.type==="light"?null:"#fff",borderRadius:"inherit"}},inputMarginDense:{paddingTop:10.5,paddingBottom:10.5},inputMultiline:{padding:0},inputAdornedStart:{paddingLeft:0},inputAdornedEnd:{paddingRight:0}}},WM=p.forwardRef(function(A,t){var i=A.classes,n=A.fullWidth,r=n===void 0?!1:n,o=A.inputComponent,s=o===void 0?"input":o,a=A.label,g=A.labelWidth,I=g===void 0?0:g,l=A.multiline,c=l===void 0?!1:l,C=A.notched,B=A.type,E=B===void 0?"text":B,u=SA(A,["classes","fullWidth","inputComponent","label","labelWidth","multiline","notched","type"]);return p.createElement(ym,M({renderSuffix:function(f){return p.createElement(NCA,{className:i.notchedOutline,label:a,labelWidth:I,notched:typeof C<"u"?C:!!(f.startAdornment||f.filled||f.focused)})},classes:M({},i,{root:yA(i.root,i.underline),notchedOutline:null}),fullWidth:r,inputComponent:s,multiline:c,ref:t,type:E},u))});WM.muiName="Input";const zM=Ae(LCA,{name:"MuiOutlinedInput"})(WM);var bCA=OM,GCA=p.createElement(mm,null),_CA=p.createElement(VM,null),jM=p.forwardRef(function e(A,t){var i=A.autoWidth,n=i===void 0?!1:i,r=A.children,o=A.classes,s=A.displayEmpty,a=s===void 0?!1:s,g=A.IconComponent,I=g===void 0?HM:g,l=A.id,c=A.input,C=A.inputProps,B=A.label,E=A.labelId,u=A.labelWidth,h=u===void 0?0:u,f=A.MenuProps,Q=A.multiple,d=Q===void 0?!1:Q,w=A.native,m=w===void 0?!1:w,v=A.onClose,x=A.onOpen,D=A.open,F=A.renderValue,N=A.SelectDisplayProps,k=A.variant,P=k===void 0?"standard":k,H=SA(A,["autoWidth","children","classes","displayEmpty","IconComponent","id","input","inputProps","label","labelId","labelWidth","MenuProps","multiple","native","onClose","onOpen","open","renderValue","SelectDisplayProps","variant"]),W=m?JM:hCA,J=Za(),Z=$a({props:A,muiFormControl:J,states:["variant"]}),z=Z.variant||P,O=c||{standard:GCA,outlined:p.createElement(zM,{label:B,labelWidth:h}),filled:_CA}[z];return p.cloneElement(O,M({inputComponent:W,inputProps:M({children:r,IconComponent:I,variant:z,type:void 0,multiple:d},m?{id:l}:{autoWidth:n,displayEmpty:a,labelId:E,MenuProps:f,onClose:v,onOpen:x,open:D,renderValue:F,SelectDisplayProps:M({id:l},N)},C,{classes:C?wp({baseClasses:o,newClasses:C.classes,Component:e}):o},c?c.props.inputProps:{}),ref:t},H))});jM.muiName="Select";const Ag=Ae(bCA,{name:"MuiSelect"})(jM);var wm={},XM={exports:{}};(function(e){function A(t){return t&&t.__esModule?t:{default:t}}e.exports=A,e.exports.__esModule=!0,e.exports.default=e.exports})(XM);var $r=XM.exports,ZM={exports:{}},$M={exports:{}};(function(e){function A(t){"@babel/helpers - typeof";return e.exports=A=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},e.exports.__esModule=!0,e.exports.default=e.exports,A(t)}e.exports=A,e.exports.__esModule=!0,e.exports.default=e.exports})($M);var MCA=$M.exports;(function(e){var A=MCA.default;function t(n){if(typeof WeakMap!="function")return null;var r=new WeakMap,o=new WeakMap;return(t=function(a){return a?o:r})(n)}function i(n,r){if(!r&&n&&n.__esModule)return n;if(n===null||A(n)!=="object"&&typeof n!="function")return{default:n};var o=t(r);if(o&&o.has(n))return o.get(n);var s={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in n)if(g!=="default"&&Object.prototype.hasOwnProperty.call(n,g)){var I=a?Object.getOwnPropertyDescriptor(n,g):null;I&&(I.get||I.set)?Object.defineProperty(s,g,I):s[g]=n[g]}return s.default=n,o&&o.set(n,s),s}e.exports=i,e.exports.__esModule=!0,e.exports.default=e.exports})(ZM);var Ao=ZM.exports,Hf={};const kCA=Nk(EIA);var Yx;function eo(){return Yx||(Yx=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return A.createSvgIcon}});var A=kCA}(Hf)),Hf}var TCA=$r,UCA=Ao;Object.defineProperty(wm,"__esModule",{value:!0});var Ak=wm.default=void 0,PCA=UCA(p),HCA=TCA(eo()),qCA=(0,HCA.default)(PCA.createElement("path",{d:"M14.59 8L12 10.59 9.41 8 8 9.41 10.59 12 8 14.59 9.41 16 12 13.41 14.59 16 16 14.59 13.41 12 16 9.41 14.59 8zM12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"}),"HighlightOff");Ak=wm.default=qCA;var vm={},JCA=$r,OCA=Ao;Object.defineProperty(vm,"__esModule",{value:!0});var ek=vm.default=void 0,YCA=OCA(p),KCA=JCA(eo()),VCA=(0,KCA.default)(YCA.createElement("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"MoreVert");ek=vm.default=VCA;/**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.16.1-lts + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */var $l=typeof window<"u"&&typeof document<"u"&&typeof navigator<"u",WCA=function(){for(var e=["Edge","Trident","Firefox"],A=0;A=0)return 1;return 0}();function zCA(e){var A=!1;return function(){A||(A=!0,window.Promise.resolve().then(function(){A=!1,e()}))}}function jCA(e){var A=!1;return function(){A||(A=!0,setTimeout(function(){A=!1,e()},WCA))}}var XCA=$l&&window.Promise,ZCA=XCA?zCA:jCA;function tk(e){var A={};return e&&A.toString.call(e)==="[object Function]"}function as(e,A){if(e.nodeType!==1)return[];var t=e.ownerDocument.defaultView,i=t.getComputedStyle(e,null);return A?i[A]:i}function Sm(e){return e.nodeName==="HTML"?e:e.parentNode||e.host}function Ac(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var A=as(e),t=A.overflow,i=A.overflowX,n=A.overflowY;return/(auto|scroll|overlay)/.test(t+n+i)?e:Ac(Sm(e))}function ik(e){return e&&e.referenceNode?e.referenceNode:e}var Kx=$l&&!!(window.MSInputMethodContext&&document.documentMode),Vx=$l&&/MSIE 10/.test(navigator.userAgent);function eg(e){return e===11?Kx:e===10?Vx:Kx||Vx}function pa(e){if(!e)return document.documentElement;for(var A=eg(10)?document.body:null,t=e.offsetParent||null;t===A&&e.nextElementSibling;)t=(e=e.nextElementSibling).offsetParent;var i=t&&t.nodeName;return!i||i==="BODY"||i==="HTML"?e?e.ownerDocument.documentElement:document.documentElement:["TH","TD","TABLE"].indexOf(t.nodeName)!==-1&&as(t,"position")==="static"?pa(t):t}function $CA(e){var A=e.nodeName;return A==="BODY"?!1:A==="HTML"||pa(e.firstElementChild)===e}function n0(e){return e.parentNode!==null?n0(e.parentNode):e}function oE(e,A){if(!e||!e.nodeType||!A||!A.nodeType)return document.documentElement;var t=e.compareDocumentPosition(A)&Node.DOCUMENT_POSITION_FOLLOWING,i=t?e:A,n=t?A:e,r=document.createRange();r.setStart(i,0),r.setEnd(n,0);var o=r.commonAncestorContainer;if(e!==o&&A!==o||i.contains(n))return $CA(o)?o:pa(o);var s=n0(e);return s.host?oE(s.host,A):oE(e,n0(A).host)}function ya(e){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"top",t=A==="top"?"scrollTop":"scrollLeft",i=e.nodeName;if(i==="BODY"||i==="HTML"){var n=e.ownerDocument.documentElement,r=e.ownerDocument.scrollingElement||n;return r[t]}return e[t]}function ABA(e,A){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=ya(A,"top"),n=ya(A,"left"),r=t?-1:1;return e.top+=i*r,e.bottom+=i*r,e.left+=n*r,e.right+=n*r,e}function Wx(e,A){var t=A==="x"?"Left":"Top",i=t==="Left"?"Right":"Bottom";return parseFloat(e["border"+t+"Width"])+parseFloat(e["border"+i+"Width"])}function zx(e,A,t,i){return Math.max(A["offset"+e],A["scroll"+e],t["client"+e],t["offset"+e],t["scroll"+e],eg(10)?parseInt(t["offset"+e])+parseInt(i["margin"+(e==="Height"?"Top":"Left")])+parseInt(i["margin"+(e==="Height"?"Bottom":"Right")]):0)}function nk(e){var A=e.body,t=e.documentElement,i=eg(10)&&getComputedStyle(t);return{height:zx("Height",A,t,i),width:zx("Width",A,t,i)}}var eBA=function(e,A){if(!(e instanceof A))throw new TypeError("Cannot call a class as a function")},tBA=function(){function e(A,t){for(var i=0;i2&&arguments[2]!==void 0?arguments[2]:!1,i=eg(10),n=A.nodeName==="HTML",r=r0(e),o=r0(A),s=Ac(e),a=as(A),g=parseFloat(a.borderTopWidth),I=parseFloat(a.borderLeftWidth);t&&n&&(o.top=Math.max(o.top,0),o.left=Math.max(o.left,0));var l=Or({top:r.top-o.top-g,left:r.left-o.left-I,width:r.width,height:r.height});if(l.marginTop=0,l.marginLeft=0,!i&&n){var c=parseFloat(a.marginTop),C=parseFloat(a.marginLeft);l.top-=g-c,l.bottom-=g-c,l.left-=I-C,l.right-=I-C,l.marginTop=c,l.marginLeft=C}return(i&&!t?A.contains(s):A===s&&s.nodeName!=="BODY")&&(l=ABA(l,A)),l}function iBA(e){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=e.ownerDocument.documentElement,i=Dm(e,t),n=Math.max(t.clientWidth,window.innerWidth||0),r=Math.max(t.clientHeight,window.innerHeight||0),o=A?0:ya(t),s=A?0:ya(t,"left"),a={top:o-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:n,height:r};return Or(a)}function rk(e){var A=e.nodeName;if(A==="BODY"||A==="HTML")return!1;if(as(e,"position")==="fixed")return!0;var t=Sm(e);return t?rk(t):!1}function ok(e){if(!e||!e.parentElement||eg())return document.documentElement;for(var A=e.parentElement;A&&as(A,"transform")==="none";)A=A.parentElement;return A||document.documentElement}function Rm(e,A,t,i){var n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,r={top:0,left:0},o=n?ok(e):oE(e,ik(A));if(i==="viewport")r=iBA(o,n);else{var s=void 0;i==="scrollParent"?(s=Ac(Sm(A)),s.nodeName==="BODY"&&(s=e.ownerDocument.documentElement)):i==="window"?s=e.ownerDocument.documentElement:s=i;var a=Dm(s,o,n);if(s.nodeName==="HTML"&&!rk(o)){var g=nk(e.ownerDocument),I=g.height,l=g.width;r.top+=a.top-a.marginTop,r.bottom=I+a.top,r.left+=a.left-a.marginLeft,r.right=l+a.left}else r=a}t=t||0;var c=typeof t=="number";return r.left+=c?t:t.left||0,r.top+=c?t:t.top||0,r.right-=c?t:t.right||0,r.bottom-=c?t:t.bottom||0,r}function nBA(e){var A=e.width,t=e.height;return A*t}function sk(e,A,t,i,n){var r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(e.indexOf("auto")===-1)return e;var o=Rm(t,i,r,n),s={top:{width:o.width,height:A.top-o.top},right:{width:o.right-A.right,height:o.height},bottom:{width:o.width,height:o.bottom-A.bottom},left:{width:A.left-o.left,height:o.height}},a=Object.keys(s).map(function(c){return ci({key:c},s[c],{area:nBA(s[c])})}).sort(function(c,C){return C.area-c.area}),g=a.filter(function(c){var C=c.width,B=c.height;return C>=t.clientWidth&&B>=t.clientHeight}),I=g.length>0?g[0].key:a[0].key,l=e.split("-")[1];return I+(l?"-"+l:"")}function ak(e,A,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,n=i?ok(A):oE(A,ik(t));return Dm(t,n,i)}function gk(e){var A=e.ownerDocument.defaultView,t=A.getComputedStyle(e),i=parseFloat(t.marginTop||0)+parseFloat(t.marginBottom||0),n=parseFloat(t.marginLeft||0)+parseFloat(t.marginRight||0),r={width:e.offsetWidth+n,height:e.offsetHeight+i};return r}function sE(e){var A={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(t){return A[t]})}function Ik(e,A,t){t=t.split("-")[0];var i=gk(e),n={width:i.width,height:i.height},r=["right","left"].indexOf(t)!==-1,o=r?"top":"left",s=r?"left":"top",a=r?"height":"width",g=r?"width":"height";return n[o]=A[o]+A[a]/2-i[a]/2,t===s?n[s]=A[s]-i[g]:n[s]=A[sE(s)],n}function ec(e,A){return Array.prototype.find?e.find(A):e.filter(A)[0]}function rBA(e,A,t){if(Array.prototype.findIndex)return e.findIndex(function(n){return n[A]===t});var i=ec(e,function(n){return n[A]===t});return e.indexOf(i)}function lk(e,A,t){var i=t===void 0?e:e.slice(0,rBA(e,"name",t));return i.forEach(function(n){n.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var r=n.function||n.fn;n.enabled&&tk(r)&&(A.offsets.popper=Or(A.offsets.popper),A.offsets.reference=Or(A.offsets.reference),A=r(A,n))}),A}function oBA(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=ak(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=sk(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=Ik(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=lk(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function ck(e,A){return e.some(function(t){var i=t.name,n=t.enabled;return n&&i===A})}function xm(e){for(var A=[!1,"ms","Webkit","Moz","O"],t=e.charAt(0).toUpperCase()+e.slice(1),i=0;io[C]&&(e.offsets.popper[l]+=s[l]+B-o[C]),e.offsets.popper=Or(e.offsets.popper);var E=s[l]+s[g]/2-B/2,u=as(e.instance.popper),h=parseFloat(u["margin"+I]),f=parseFloat(u["border"+I+"Width"]),Q=E-e.offsets.popper[l]-h-f;return Q=Math.max(Math.min(o[g]-B,Q),0),e.arrowElement=i,e.offsets.arrow=(t={},ma(t,l,Math.round(Q)),ma(t,c,""),t),e}function QBA(e){return e==="end"?"start":e==="start"?"end":e}var uk=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],qf=uk.slice(3);function jx(e){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=qf.indexOf(e),i=qf.slice(t+1).concat(qf.slice(0,t));return A?i.reverse():i}var Jf={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function dBA(e,A){if(ck(e.instance.modifiers,"inner")||e.flipped&&e.placement===e.originalPlacement)return e;var t=Rm(e.instance.popper,e.instance.reference,A.padding,A.boundariesElement,e.positionFixed),i=e.placement.split("-")[0],n=sE(i),r=e.placement.split("-")[1]||"",o=[];switch(A.behavior){case Jf.FLIP:o=[i,n];break;case Jf.CLOCKWISE:o=jx(i);break;case Jf.COUNTERCLOCKWISE:o=jx(i,!0);break;default:o=A.behavior}return o.forEach(function(s,a){if(i!==s||o.length===a+1)return e;i=e.placement.split("-")[0],n=sE(i);var g=e.offsets.popper,I=e.offsets.reference,l=Math.floor,c=i==="left"&&l(g.right)>l(I.left)||i==="right"&&l(g.left)l(I.top)||i==="bottom"&&l(g.top)l(t.right),E=l(g.top)l(t.bottom),h=i==="left"&&C||i==="right"&&B||i==="top"&&E||i==="bottom"&&u,f=["top","bottom"].indexOf(i)!==-1,Q=!!A.flipVariations&&(f&&r==="start"&&C||f&&r==="end"&&B||!f&&r==="start"&&E||!f&&r==="end"&&u),d=!!A.flipVariationsByContent&&(f&&r==="start"&&B||f&&r==="end"&&C||!f&&r==="start"&&u||!f&&r==="end"&&E),w=Q||d;(c||h||w)&&(e.flipped=!0,(c||h)&&(i=o[a+1]),w&&(r=QBA(r)),e.placement=i+(r?"-"+r:""),e.offsets.popper=ci({},e.offsets.popper,Ik(e.instance.popper,e.offsets.reference,e.placement)),e=lk(e.instance.modifiers,e,"flip"))}),e}function pBA(e){var A=e.offsets,t=A.popper,i=A.reference,n=e.placement.split("-")[0],r=Math.floor,o=["top","bottom"].indexOf(n)!==-1,s=o?"right":"bottom",a=o?"left":"top",g=o?"width":"height";return t[s]r(i[s])&&(e.offsets.popper[a]=r(i[s])),e}function yBA(e,A,t,i){var n=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+n[1],o=n[2];if(!r)return e;if(o.indexOf("%")===0){var s=void 0;switch(o){case"%p":s=t;break;case"%":case"%r":default:s=i}var a=Or(s);return a[A]/100*r}else if(o==="vh"||o==="vw"){var g=void 0;return o==="vh"?g=Math.max(document.documentElement.clientHeight,window.innerHeight||0):g=Math.max(document.documentElement.clientWidth,window.innerWidth||0),g/100*r}else return r}function mBA(e,A,t,i){var n=[0,0],r=["right","left"].indexOf(i)!==-1,o=e.split(/(\+|\-)/).map(function(I){return I.trim()}),s=o.indexOf(ec(o,function(I){return I.search(/,|\s/)!==-1}));o[s]&&o[s].indexOf(",")===-1&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var a=/\s*,\s*|\s+/,g=s!==-1?[o.slice(0,s).concat([o[s].split(a)[0]]),[o[s].split(a)[1]].concat(o.slice(s+1))]:[o];return g=g.map(function(I,l){var c=(l===1?!r:r)?"height":"width",C=!1;return I.reduce(function(B,E){return B[B.length-1]===""&&["+","-"].indexOf(E)!==-1?(B[B.length-1]=E,C=!0,B):C?(B[B.length-1]+=E,C=!1,B):B.concat(E)},[]).map(function(B){return yBA(B,c,A,t)})}),g.forEach(function(I,l){I.forEach(function(c,C){Fm(c)&&(n[l]+=c*(I[C-1]==="-"?-1:1))})}),n}function wBA(e,A){var t=A.offset,i=e.placement,n=e.offsets,r=n.popper,o=n.reference,s=i.split("-")[0],a=void 0;return Fm(+t)?a=[+t,0]:a=mBA(t,r,o,s),s==="left"?(r.top+=a[0],r.left-=a[1]):s==="right"?(r.top+=a[0],r.left+=a[1]):s==="top"?(r.left+=a[0],r.top-=a[1]):s==="bottom"&&(r.left+=a[0],r.top+=a[1]),e.popper=r,e}function vBA(e,A){var t=A.boundariesElement||pa(e.instance.popper);e.instance.reference===t&&(t=pa(t));var i=xm("transform"),n=e.instance.popper.style,r=n.top,o=n.left,s=n[i];n.top="",n.left="",n[i]="";var a=Rm(e.instance.popper,e.instance.reference,A.padding,t,e.positionFixed);n.top=r,n.left=o,n[i]=s,A.boundaries=a;var g=A.priority,I=e.offsets.popper,l={primary:function(C){var B=I[C];return I[C]a[C]&&!A.escapeWithReference&&(E=Math.min(I[B],a[C]-(C==="right"?I.width:I.height))),ma({},B,E)}};return g.forEach(function(c){var C=["left","top"].indexOf(c)!==-1?"primary":"secondary";I=ci({},I,l[C](c))}),e.offsets.popper=I,e}function SBA(e){var A=e.placement,t=A.split("-")[0],i=A.split("-")[1];if(i){var n=e.offsets,r=n.reference,o=n.popper,s=["bottom","top"].indexOf(t)!==-1,a=s?"left":"top",g=s?"width":"height",I={start:ma({},a,r[a]),end:ma({},a,r[a]+r[g]-o[g])};e.offsets.popper=ci({},o,I[i])}return e}function DBA(e){if(!Ek(e.instance.modifiers,"hide","preventOverflow"))return e;var A=e.offsets.reference,t=ec(e.instance.modifiers,function(i){return i.name==="preventOverflow"}).boundaries;if(A.bottomt.right||A.top>t.bottom||A.right2&&arguments[2]!==void 0?arguments[2]:{};eBA(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=ZCA(this.update.bind(this)),this.options=ci({},e.Defaults,n),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=A&&A.jquery?A[0]:A,this.popper=t&&t.jquery?t[0]:t,this.options.modifiers={},Object.keys(ci({},e.Defaults.modifiers,n.modifiers)).forEach(function(o){i.options.modifiers[o]=ci({},e.Defaults.modifiers[o]||{},n.modifiers?n.modifiers[o]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(o){return ci({name:o},i.options.modifiers[o])}).sort(function(o,s){return o.order-s.order}),this.modifiers.forEach(function(o){o.enabled&&tk(o.onLoad)&&o.onLoad(i.reference,i.popper,i.options,o,i.state)}),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return tBA(e,[{key:"update",value:function(){return oBA.call(this)}},{key:"destroy",value:function(){return sBA.call(this)}},{key:"enableEventListeners",value:function(){return gBA.call(this)}},{key:"disableEventListeners",value:function(){return lBA.call(this)}}]),e}();wu.Utils=(typeof window<"u"?window:global).PopperUtils;wu.placements=uk;wu.Defaults=FBA;const NBA=wu;function LBA(e,A){var t=A&&A.direction||"ltr";if(t==="ltr")return e;switch(e){case"bottom-end":return"bottom-start";case"bottom-start":return"bottom-end";case"top-end":return"top-start";case"top-start":return"top-end";default:return e}}function Xx(e){return typeof e=="function"?e():e}var bBA=typeof window<"u"?p.useLayoutEffect:p.useEffect,GBA={},_BA=p.forwardRef(function(A,t){var i=A.anchorEl,n=A.children,r=A.container,o=A.disablePortal,s=o===void 0?!1:o,a=A.keepMounted,g=a===void 0?!1:a,I=A.modifiers,l=A.open,c=A.placement,C=c===void 0?"bottom":c,B=A.popperOptions,E=B===void 0?GBA:B,u=A.popperRef,h=A.style,f=A.transition,Q=f===void 0?!1:f,d=SA(A,["anchorEl","children","container","disablePortal","keepMounted","modifiers","open","placement","popperOptions","popperRef","style","transition"]),w=p.useRef(null),m=We(w,t),v=p.useRef(null),x=We(v,u),D=p.useRef(x);bBA(function(){D.current=x},[x]),p.useImperativeHandle(u,function(){return v.current},[]);var F=p.useState(!0),N=F[0],k=F[1],P=ba(),H=LBA(C,P),W=p.useState(H),J=W[0],Z=W[1];p.useEffect(function(){v.current&&v.current.update()});var z=p.useCallback(function(){if(!(!w.current||!i||!l)){v.current&&(v.current.destroy(),D.current(null));var AA=function(sA){Z(sA.placement)};Xx(i);var iA=new NBA(Xx(i),w.current,M({placement:H},E,{modifiers:M({},s?{}:{preventOverflow:{boundariesElement:"window"}},I,E.modifiers),onCreate:Jr(AA,E.onCreate),onUpdate:Jr(AA,E.onUpdate)}));D.current(iA)}},[i,s,I,l,H,E]),O=p.useCallback(function(AA){Vo(m,AA),z()},[m,z]),Y=function(){k(!1)},T=function(){v.current&&(v.current.destroy(),D.current(null))},q=function(){k(!0),T()};if(p.useEffect(function(){return function(){T()}},[]),p.useEffect(function(){!l&&!Q&&T()},[l,Q]),!g&&!l&&(!Q||N))return null;var j={placement:J};return Q&&(j.TransitionProps={in:l,onEnter:Y,onExited:q}),p.createElement(TM,{disablePortal:s,container:r},p.createElement("div",M({ref:O,role:"tooltip"},d,{style:M({position:"fixed",top:0,left:0,display:!l&&g&&!Q?"none":null},h)}),typeof n=="function"?n(j):n))});const Nm=_BA;var MBA=function(A){return{root:{display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left",paddingTop:8,paddingBottom:8,"&$focusVisible":{backgroundColor:A.palette.action.selected},"&$selected, &$selected:hover":{backgroundColor:A.palette.action.selected},"&$disabled":{opacity:.5}},container:{position:"relative"},focusVisible:{},dense:{paddingTop:4,paddingBottom:4},alignItemsFlexStart:{alignItems:"flex-start"},disabled:{},divider:{borderBottom:"1px solid ".concat(A.palette.divider),backgroundClip:"padding-box"},gutters:{paddingLeft:16,paddingRight:16},button:{transition:A.transitions.create("background-color",{duration:A.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:A.palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}},secondaryAction:{paddingRight:48},selected:{}}},kBA=typeof window>"u"?p.useEffect:p.useLayoutEffect,TBA=p.forwardRef(function(A,t){var i=A.alignItems,n=i===void 0?"center":i,r=A.autoFocus,o=r===void 0?!1:r,s=A.button,a=s===void 0?!1:s,g=A.children,I=A.classes,l=A.className,c=A.component,C=A.ContainerComponent,B=C===void 0?"li":C,E=A.ContainerProps;E=E===void 0?{}:E;var u=E.className,h=SA(E,["className"]),f=A.dense,Q=f===void 0?!1:f,d=A.disabled,w=d===void 0?!1:d,m=A.disableGutters,v=m===void 0?!1:m,x=A.divider,D=x===void 0?!1:x,F=A.focusVisibleClassName,N=A.selected,k=N===void 0?!1:N,P=SA(A,["alignItems","autoFocus","button","children","classes","className","component","ContainerComponent","ContainerProps","dense","disabled","disableGutters","divider","focusVisibleClassName","selected"]),H=p.useContext(VC),W={dense:Q||H.dense||!1,alignItems:n},J=p.useRef(null);kBA(function(){o&&J.current&&J.current.focus()},[o]);var Z=p.Children.toArray(g),z=Z.length&&pI(Z[Z.length-1],["ListItemSecondaryAction"]),O=p.useCallback(function(j){J.current=kt.findDOMNode(j)},[]),Y=We(O,t),T=M({className:yA(I.root,l,W.dense&&I.dense,!v&&I.gutters,D&&I.divider,w&&I.disabled,a&&I.button,n!=="center"&&I.alignItemsFlexStart,z&&I.secondaryAction,k&&I.selected),disabled:w},P),q=c||"li";return a&&(T.component=c||"div",T.focusVisibleClassName=yA(I.focusVisible,F),q=Zl),z?(q=!T.component&&!c?"div":q,B==="li"&&(q==="li"?q="div":T.component==="li"&&(T.component="div")),p.createElement(VC.Provider,{value:W},p.createElement(B,M({className:yA(I.container,u),ref:Y},h),p.createElement(q,T,Z),Z.pop()))):p.createElement(VC.Provider,{value:W},p.createElement(q,M({ref:Y},T),Z))});const UBA=Ae(MBA,{name:"MuiListItem"})(TBA);var PBA=function(A){return{root:M({},A.typography.body1,y({minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",width:"auto",overflow:"hidden",whiteSpace:"nowrap"},A.breakpoints.up("sm"),{minHeight:"auto"})),gutters:{},selected:{},dense:M({},A.typography.body2,{minHeight:"auto"})}},HBA=p.forwardRef(function(A,t){var i=A.classes,n=A.className,r=A.component,o=r===void 0?"li":r,s=A.disableGutters,a=s===void 0?!1:s,g=A.ListItemClasses,I=A.role,l=I===void 0?"menuitem":I,c=A.selected,C=A.tabIndex,B=SA(A,["classes","className","component","disableGutters","ListItemClasses","role","selected","tabIndex"]),E;return A.disabled||(E=C!==void 0?C:-1),p.createElement(UBA,M({button:!0,role:l,tabIndex:E,component:o,selected:c,disableGutters:a,classes:M({dense:i.dense},g),className:yA(i.root,n,c&&i.selected,!a&&i.gutters),ref:t},B))});const WC=Ae(PBA,{name:"MuiMenuItem"})(HBA);var Lm={},qBA=$r,JBA=Ao;Object.defineProperty(Lm,"__esModule",{value:!0});var hk=Lm.default=void 0,OBA=JBA(p),YBA=qBA(eo()),KBA=(0,YBA.default)(OBA.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"}),"Lens");hk=Lm.default=KBA;const VBA=es(()=>({container:{width:"70px",height:"40px",display:"flex",justifyContent:"space-between",alignItems:"center",flexWrap:"wrap"},button:{padding:"3px",width:"16px",height:"16px"},icon:{width:"17px",height:"17px"}})),WBA=({handleColorSelect:e})=>{const A=VBA();return G.jsx("div",{className:A.container,"aria-label":"color-swatch",children:gm.map(t=>G.jsx(Wo,{className:A.button,onClick:()=>e(t),children:G.jsx(hk,{fontSize:"small",style:{color:`rgb(${t})`},className:A.icon})},t))})},zBA=WBA,jBA=es(()=>({paper:{backgroundColor:"rgba(0, 0, 0, 0.75)"},span:{width:"70px",textAlign:"center",paddingLeft:"2px",paddingRight:"2px"},colors:{"&:hover":{backgroundColor:"transparent"},paddingLeft:"2px",paddingRight:"2px"}}));function XBA({handleColorSelect:e,disabled:A,handleModeSelect:t}){const[i,n]=p.useReducer(a=>!a,!1),r=p.useRef(null),o=jBA();function s(a){const{mode:g}=a.currentTarget.dataset;t(g)}return G.jsxs(G.Fragment,{children:[G.jsx(Wo,{"aria-label":"Remove channel",size:"small",onClick:n,ref:r,disabled:A,children:G.jsx(ek,{fontSize:"small"})}),G.jsx(Nm,{open:i,anchorEl:r.current,placement:"bottom-end",children:G.jsx(Zr,{className:o.paper,children:G.jsx(fu,{onClickAway:n,children:G.jsxs(dm,{id:"channel-options",children:[G.jsx(WC,{dense:!0,disableGutters:!0,className:o.colors,children:G.jsx(zBA,{handleColorSelect:e})}),G.jsx(WC,{"data-mode":"full",dense:!0,disableGutters:!0,onClick:s,children:G.jsx("span",{className:o.span,children:"Full"})}),G.jsx(WC,{"data-mode":"max/min",dense:!0,disableGutters:!0,onClick:s,children:G.jsx("span",{className:o.span,children:"Max/Min"})})]})})})})]})}const ZBA=[220,220,220],$BA=(e,A)=>`rgb(${e?ZBA:A})`,AEA=(e,A,t)=>A?G.jsx(_M,{size:"50%"}):t&&(e||typeof e=="number")?Cm(e,7):Zd;function eEA({name:e,onSelectionChange:A,channelsVisible:t,pixelValue:i,toggleIsOn:n,handleSliderChange:r,domain:o,slider:s,color:a,handleRemoveChannel:g,handleColorSelect:I,isLoading:l}){const c=Bn(),C=ue(N=>N.colormap),[B,E,u]=_A(N=>[N.channelOptions,N.useLinkedView,N.use3d],Te),h=$BA(C,a),f=({domain:N,mode:k,loader:P})=>{switch(k){case"max/min":return N;case"full":{const{dtype:H}=P[0],{max:W}=Yd[H];return[H.startsWith("Int")?-W:0,W]}default:throw new Error}},[Q,d]=p.useState("max/min"),[w,m]=f({domain:o,mode:Q,loader:c}),{dtype:v}=c[0],x=v==="Float32"||v==="Float64",D=m-w<500&&x?(m-w)/500:1,F=!E&&!u;return G.jsxs(ZA,{container:!0,direction:"column",m:2,justifyContent:"center",children:[G.jsxs(ZA,{container:!0,direction:"row",justifyContent:"space-between",children:[G.jsx(ZA,{item:!0,xs:10,children:G.jsx(Ag,{native:!0,value:e,onChange:A,children:B.map(N=>G.jsx("option",{disabled:l,value:N,children:N},N))})}),G.jsx(ZA,{item:!0,xs:1,children:G.jsx(XBA,{handleColorSelect:I,disabled:l,handleModeSelect:d})}),G.jsx(ZA,{item:!0,xs:1,children:G.jsx(Wo,{"aria-label":"remove-channel",component:"span",size:"small",onClick:g,children:G.jsx(Ak,{fontSize:"small"})})})]}),G.jsxs(ZA,{container:!0,direction:"row",justifyContent:"flex-start",alignItems:"center",children:[G.jsx(ZA,{item:!0,xs:2,children:AEA(i,l,F)}),G.jsx(ZA,{item:!0,xs:2,children:G.jsx(fm,{onChange:n,disabled:l,checked:t,style:{color:h,"&$checked":{color:h}}})}),G.jsx(ZA,{item:!0,xs:7,children:G.jsx(Qm,{disabled:l,value:s,onChange:r,valueLabelDisplay:"auto",getAriaLabel:()=>`${e}-${a}-${s}`,valueLabelFormat:N=>Cm(N,5),min:w,max:m,step:D,orientation:"horizontal",style:{color:h,marginTop:"7px"}})})]})]})}var tEA=JP(Hn(qP,jP,l4,v4,M4,x4,T4,V4,fp,l8)),iEA=yq("div")(tEA,{name:"MuiBox"});const s0=iEA;var nEA=function(A){return{root:M({color:A.palette.text.secondary},A.typography.body1,{lineHeight:1,padding:0,"&$focused":{color:A.palette.primary.main},"&$disabled":{color:A.palette.text.disabled},"&$error":{color:A.palette.error.main}}),colorSecondary:{"&$focused":{color:A.palette.secondary.main}},focused:{},disabled:{},error:{},filled:{},required:{},asterisk:{"&$error":{color:A.palette.error.main}}}},rEA=p.forwardRef(function(A,t){var i=A.children,n=A.classes,r=A.className;A.color;var o=A.component,s=o===void 0?"label":o;A.disabled,A.error,A.filled,A.focused,A.required;var a=SA(A,["children","classes","className","color","component","disabled","error","filled","focused","required"]),g=Za(),I=$a({props:A,muiFormControl:g,states:["color","required","focused","disabled","error","filled"]});return p.createElement(s,M({className:yA(n.root,n["color".concat(fe(I.color||"primary"))],r,I.disabled&&n.disabled,I.error&&n.error,I.filled&&n.filled,I.focused&&n.focused,I.required&&n.required),ref:t},a),i,I.required&&p.createElement("span",{"aria-hidden":!0,className:yA(n.asterisk,I.error&&n.error)}," ","*"))});const oEA=Ae(nEA,{name:"MuiFormLabel"})(rEA);var sEA=function(A){return{root:{display:"block",transformOrigin:"top left"},focused:{},disabled:{},error:{},required:{},asterisk:{},formControl:{position:"absolute",left:0,top:0,transform:"translate(0, 24px) scale(1)"},marginDense:{transform:"translate(0, 21px) scale(1)"},shrink:{transform:"translate(0, 1.5px) scale(0.75)",transformOrigin:"top left"},animated:{transition:A.transitions.create(["color","transform"],{duration:A.transitions.duration.shorter,easing:A.transitions.easing.easeOut})},filled:{zIndex:1,pointerEvents:"none",transform:"translate(12px, 20px) scale(1)","&$marginDense":{transform:"translate(12px, 17px) scale(1)"},"&$shrink":{transform:"translate(12px, 10px) scale(0.75)","&$marginDense":{transform:"translate(12px, 7px) scale(0.75)"}}},outlined:{zIndex:1,pointerEvents:"none",transform:"translate(14px, 20px) scale(1)","&$marginDense":{transform:"translate(14px, 12px) scale(1)"},"&$shrink":{transform:"translate(14px, -6px) scale(0.75)"}}}},aEA=p.forwardRef(function(A,t){var i=A.classes,n=A.className,r=A.disableAnimation,o=r===void 0?!1:r;A.margin;var s=A.shrink;A.variant;var a=SA(A,["classes","className","disableAnimation","margin","shrink","variant"]),g=Za(),I=s;typeof I>"u"&&g&&(I=g.filled||g.focused||g.adornedStart);var l=$a({props:A,muiFormControl:g,states:["margin","variant"]});return p.createElement(oEA,M({"data-shrink":I,className:yA(i.root,n,g&&i.formControl,!o&&i.animated,I&&i.shrink,l.margin==="dense"&&i.marginDense,{filled:i.filled,outlined:i.outlined}[l.variant]),classes:{focused:i.focused,disabled:i.disabled,error:i.error,required:i.required,asterisk:i.asterisk},ref:t},a))});const bm=Ae(sEA,{name:"MuiInputLabel"})(aEA);var gEA={root:{display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top"},marginNormal:{marginTop:16,marginBottom:8},marginDense:{marginTop:8,marginBottom:4},fullWidth:{width:"100%"}},IEA=p.forwardRef(function(A,t){var i=A.children,n=A.classes,r=A.className,o=A.color,s=o===void 0?"primary":o,a=A.component,g=a===void 0?"div":a,I=A.disabled,l=I===void 0?!1:I,c=A.error,C=c===void 0?!1:c,B=A.fullWidth,E=B===void 0?!1:B,u=A.focused,h=A.hiddenLabel,f=h===void 0?!1:h,Q=A.margin,d=Q===void 0?"none":Q,w=A.required,m=w===void 0?!1:w,v=A.size,x=A.variant,D=x===void 0?"standard":x,F=SA(A,["children","classes","className","color","component","disabled","error","fullWidth","focused","hiddenLabel","margin","required","size","variant"]),N=p.useState(function(){var iA=!1;return i&&p.Children.forEach(i,function(gA){if(pI(gA,["Input","Select"])){var sA=pI(gA,["Select"])?gA.props.input:gA;sA&&BCA(sA.props)&&(iA=!0)}}),iA}),k=N[0],P=N[1],H=p.useState(function(){var iA=!1;return i&&p.Children.forEach(i,function(gA){pI(gA,["Input","Select"])&&pm(gA.props,!0)&&(iA=!0)}),iA}),W=H[0],J=H[1],Z=p.useState(!1),z=Z[0],O=Z[1],Y=u!==void 0?u:z;l&&Y&&O(!1);var T,q=p.useCallback(function(){J(!0)},[]),j=p.useCallback(function(){J(!1)},[]),AA={adornedStart:k,setAdornedStart:P,color:s,disabled:l,error:C,filled:W,focused:Y,fullWidth:E,hiddenLabel:f,margin:(v==="small"?"dense":void 0)||d,onBlur:function(){O(!1)},onEmpty:j,onFilled:q,onFocus:function(){O(!0)},registerEffect:T,required:m,variant:D};return p.createElement(hm.Provider,{value:AA},p.createElement(g,M({className:yA(n.root,r,d!=="none"&&n["margin".concat(fe(d))],E&&n.fullWidth),ref:t},F),i))});const Gm=Ae(gEA,{name:"MuiFormControl"})(IEA);var lEA=function(A){return{root:M({color:A.palette.text.secondary},A.typography.caption,{textAlign:"left",marginTop:3,margin:0,"&$disabled":{color:A.palette.text.disabled},"&$error":{color:A.palette.error.main}}),error:{},disabled:{},marginDense:{marginTop:4},contained:{marginLeft:14,marginRight:14},focused:{},filled:{},required:{}}},cEA=p.forwardRef(function(A,t){var i=A.children,n=A.classes,r=A.className,o=A.component,s=o===void 0?"p":o;A.disabled,A.error,A.filled,A.focused,A.margin,A.required,A.variant;var a=SA(A,["children","classes","className","component","disabled","error","filled","focused","margin","required","variant"]),g=Za(),I=$a({props:A,muiFormControl:g,states:["variant","margin","disabled","error","filled","focused","required"]});return p.createElement(s,M({className:yA(n.root,(I.variant==="filled"||I.variant==="outlined")&&n.contained,r,I.disabled&&n.disabled,I.error&&n.error,I.filled&&n.filled,I.focused&&n.focused,I.required&&n.required,I.margin==="dense"&&n.marginDense),ref:t},a),i===" "?p.createElement("span",{dangerouslySetInnerHTML:{__html:"​"}}):i)});const CEA=Ae(lEA,{name:"MuiFormHelperText"})(cEA);var BEA={standard:mm,filled:VM,outlined:zM},EEA={root:{}},uEA=p.forwardRef(function(A,t){var i=A.autoComplete,n=A.autoFocus,r=n===void 0?!1:n,o=A.children,s=A.classes,a=A.className,g=A.color,I=g===void 0?"primary":g,l=A.defaultValue,c=A.disabled,C=c===void 0?!1:c,B=A.error,E=B===void 0?!1:B,u=A.FormHelperTextProps,h=A.fullWidth,f=h===void 0?!1:h,Q=A.helperText,d=A.hiddenLabel,w=A.id,m=A.InputLabelProps,v=A.inputProps,x=A.InputProps,D=A.inputRef,F=A.label,N=A.multiline,k=N===void 0?!1:N,P=A.name,H=A.onBlur,W=A.onChange,J=A.onFocus,Z=A.placeholder,z=A.required,O=z===void 0?!1:z,Y=A.rows,T=A.rowsMax,q=A.maxRows,j=A.minRows,AA=A.select,iA=AA===void 0?!1:AA,gA=A.SelectProps,sA=A.type,BA=A.value,IA=A.variant,bA=IA===void 0?"standard":IA,EA=SA(A,["autoComplete","autoFocus","children","classes","className","color","defaultValue","disabled","error","FormHelperTextProps","fullWidth","helperText","hiddenLabel","id","InputLabelProps","inputProps","InputProps","inputRef","label","multiline","name","onBlur","onChange","onFocus","placeholder","required","rows","rowsMax","maxRows","minRows","select","SelectProps","type","value","variant"]),QA={};if(bA==="outlined"&&(m&&typeof m.shrink<"u"&&(QA.notched=m.shrink),F)){var TA,RA=(TA=m==null?void 0:m.required)!==null&&TA!==void 0?TA:O;QA.label=p.createElement(p.Fragment,null,F,RA&&" *")}iA&&((!gA||!gA.native)&&(QA.id=void 0),QA["aria-describedby"]=void 0);var UA=Q&&w?"".concat(w,"-helper-text"):void 0,fA=F&&w?"".concat(w,"-label"):void 0,NA=BEA[bA],XA=p.createElement(NA,M({"aria-describedby":UA,autoComplete:i,autoFocus:r,defaultValue:l,fullWidth:f,multiline:k,name:P,rows:Y,rowsMax:T,maxRows:q,minRows:j,type:sA,value:BA,id:w,inputRef:D,onBlur:H,onChange:W,onFocus:J,placeholder:Z,inputProps:v},QA,x));return p.createElement(Gm,M({className:yA(s.root,a),disabled:C,error:E,fullWidth:f,hiddenLabel:d,ref:t,required:O,color:I,variant:bA},EA),F&&p.createElement(bm,M({htmlFor:w,id:fA},m),F),iA?p.createElement(Ag,M({"aria-describedby":UA,id:w,labelId:fA,value:BA,input:XA},gA),o):XA,Q&&p.createElement(CEA,M({id:UA},u),Q))});const hEA=Ae(EEA,{name:"MuiTextField"})(uEA);var _m={},fEA=$r,QEA=Ao;Object.defineProperty(_m,"__esModule",{value:!0});var fk=_m.default=void 0,dEA=QEA(p),pEA=fEA(eo()),yEA=(0,pEA.default)(dEA.createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"}),"Info");fk=_m.default=yEA;var mEA=function(A){return{root:M({},A.typography.button,{boxSizing:"border-box",minWidth:64,padding:"6px 16px",borderRadius:A.shape.borderRadius,color:A.palette.text.primary,transition:A.transitions.create(["background-color","box-shadow","border"],{duration:A.transitions.duration.short}),"&:hover":{textDecoration:"none",backgroundColor:Bt(A.palette.text.primary,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"},"&$disabled":{backgroundColor:"transparent"}},"&$disabled":{color:A.palette.action.disabled}}),label:{width:"100%",display:"inherit",alignItems:"inherit",justifyContent:"inherit"},text:{padding:"6px 8px"},textPrimary:{color:A.palette.primary.main,"&:hover":{backgroundColor:Bt(A.palette.primary.main,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},textSecondary:{color:A.palette.secondary.main,"&:hover":{backgroundColor:Bt(A.palette.secondary.main,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},outlined:{padding:"5px 15px",border:"1px solid ".concat(A.palette.type==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"),"&$disabled":{border:"1px solid ".concat(A.palette.action.disabledBackground)}},outlinedPrimary:{color:A.palette.primary.main,border:"1px solid ".concat(Bt(A.palette.primary.main,.5)),"&:hover":{border:"1px solid ".concat(A.palette.primary.main),backgroundColor:Bt(A.palette.primary.main,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},outlinedSecondary:{color:A.palette.secondary.main,border:"1px solid ".concat(Bt(A.palette.secondary.main,.5)),"&:hover":{border:"1px solid ".concat(A.palette.secondary.main),backgroundColor:Bt(A.palette.secondary.main,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"&$disabled":{border:"1px solid ".concat(A.palette.action.disabled)}},contained:{color:A.palette.getContrastText(A.palette.grey[300]),backgroundColor:A.palette.grey[300],boxShadow:A.shadows[2],"&:hover":{backgroundColor:A.palette.grey.A100,boxShadow:A.shadows[4],"@media (hover: none)":{boxShadow:A.shadows[2],backgroundColor:A.palette.grey[300]},"&$disabled":{backgroundColor:A.palette.action.disabledBackground}},"&$focusVisible":{boxShadow:A.shadows[6]},"&:active":{boxShadow:A.shadows[8]},"&$disabled":{color:A.palette.action.disabled,boxShadow:A.shadows[0],backgroundColor:A.palette.action.disabledBackground}},containedPrimary:{color:A.palette.primary.contrastText,backgroundColor:A.palette.primary.main,"&:hover":{backgroundColor:A.palette.primary.dark,"@media (hover: none)":{backgroundColor:A.palette.primary.main}}},containedSecondary:{color:A.palette.secondary.contrastText,backgroundColor:A.palette.secondary.main,"&:hover":{backgroundColor:A.palette.secondary.dark,"@media (hover: none)":{backgroundColor:A.palette.secondary.main}}},disableElevation:{boxShadow:"none","&:hover":{boxShadow:"none"},"&$focusVisible":{boxShadow:"none"},"&:active":{boxShadow:"none"},"&$disabled":{boxShadow:"none"}},focusVisible:{},disabled:{},colorInherit:{color:"inherit",borderColor:"currentColor"},textSizeSmall:{padding:"4px 5px",fontSize:A.typography.pxToRem(13)},textSizeLarge:{padding:"8px 11px",fontSize:A.typography.pxToRem(15)},outlinedSizeSmall:{padding:"3px 9px",fontSize:A.typography.pxToRem(13)},outlinedSizeLarge:{padding:"7px 21px",fontSize:A.typography.pxToRem(15)},containedSizeSmall:{padding:"4px 10px",fontSize:A.typography.pxToRem(13)},containedSizeLarge:{padding:"8px 22px",fontSize:A.typography.pxToRem(15)},sizeSmall:{},sizeLarge:{},fullWidth:{width:"100%"},startIcon:{display:"inherit",marginRight:8,marginLeft:-4,"&$iconSizeSmall":{marginLeft:-2}},endIcon:{display:"inherit",marginRight:-4,marginLeft:8,"&$iconSizeSmall":{marginRight:-2}},iconSizeSmall:{"& > *:first-child":{fontSize:18}},iconSizeMedium:{"& > *:first-child":{fontSize:20}},iconSizeLarge:{"& > *:first-child":{fontSize:22}}}},wEA=p.forwardRef(function(A,t){var i=A.children,n=A.classes,r=A.className,o=A.color,s=o===void 0?"default":o,a=A.component,g=a===void 0?"button":a,I=A.disabled,l=I===void 0?!1:I,c=A.disableElevation,C=c===void 0?!1:c,B=A.disableFocusRipple,E=B===void 0?!1:B,u=A.endIcon,h=A.focusVisibleClassName,f=A.fullWidth,Q=f===void 0?!1:f,d=A.size,w=d===void 0?"medium":d,m=A.startIcon,v=A.type,x=v===void 0?"button":v,D=A.variant,F=D===void 0?"text":D,N=SA(A,["children","classes","className","color","component","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"]),k=m&&p.createElement("span",{className:yA(n.startIcon,n["iconSize".concat(fe(w))])},m),P=u&&p.createElement("span",{className:yA(n.endIcon,n["iconSize".concat(fe(w))])},u);return p.createElement(Zl,M({className:yA(n.root,n[F],r,s==="inherit"?n.colorInherit:s!=="default"&&n["".concat(F).concat(fe(s))],w!=="medium"&&[n["".concat(F,"Size").concat(fe(w))],n["size".concat(fe(w))]],C&&n.disableElevation,l&&n.disabled,Q&&n.fullWidth),component:g,disabled:l,focusRipple:!E,focusVisibleClassName:yA(n.focusVisible,h),ref:t,type:x},N),p.createElement("span",{className:n.label},k,i,P))});const Vn=Ae(mEA,{name:"MuiButton"})(wEA);var Mm={},vEA=$r,SEA=Ao;Object.defineProperty(Mm,"__esModule",{value:!0});var Qk=Mm.default=void 0,DEA=SEA(p),REA=vEA(eo()),xEA=(0,REA.default)(DEA.createElement("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"}),"Settings");Qk=Mm.default=xEA;var km={},FEA=$r,NEA=Ao;Object.defineProperty(km,"__esModule",{value:!0});var dk=km.default=void 0,LEA=NEA(p),bEA=FEA(eo()),GEA=(0,bEA.default)(LEA.createElement("path",{d:"M12 .3a12 12 0 0 0-3.8 23.4c.6.1.8-.3.8-.6v-2c-3.3.7-4-1.6-4-1.6-.6-1.4-1.4-1.8-1.4-1.8-1-.7.1-.7.1-.7 1.2 0 1.9 1.2 1.9 1.2 1 1.8 2.8 1.3 3.5 1 0-.8.4-1.3.7-1.6-2.7-.3-5.5-1.3-5.5-6 0-1.2.5-2.3 1.3-3.1-.2-.4-.6-1.6 0-3.2 0 0 1-.3 3.4 1.2a11.5 11.5 0 0 1 6 0c2.3-1.5 3.3-1.2 3.3-1.2.6 1.6.2 2.8 0 3.2.9.8 1.3 1.9 1.3 3.2 0 4.6-2.8 5.6-5.5 5.9.5.4.9 1 .9 2.2v3.3c0 .3.1.7.8.6A12 12 0 0 0 12 .3"}),"GitHub");dk=km.default=GEA;var Tm={},_EA=$r,MEA=Ao;Object.defineProperty(Tm,"__esModule",{value:!0});var pk=Tm.default=void 0,kEA=MEA(p),TEA=_EA(eo()),UEA=(0,TEA.default)(kEA.createElement("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close");pk=Tm.default=UEA;const PEA={marginRight:"4.5px",marginTop:"3px"};function HEA(){const e=_A(A=>A.toggleIsControllerOn);return G.jsxs(ZA,{container:!0,direction:"row",justifyContent:"flex-end",alignItems:"center",children:[G.jsx(ZA,{style:{marginRight:"auto"},item:!0,children:G.jsx(zo,{variant:"body1",children:G.jsx("strong",{children:"AVIVATOR"})})}),G.jsx(ZA,{item:!0,children:G.jsx(Wo,{href:"https://github.com/hms-dbmi/viv","aria-label":"GitHub Repository",disableRipple:!0,children:G.jsx(dk,{})})}),G.jsx(ZA,{item:!0,children:G.jsx(Wo,{size:"small",onClick:e,disableRipple:!0,"aria-label":"hide-menu",style:PEA,children:G.jsx(pk,{fontSize:"small"})})})]})}function qEA(){const{getRootProps:e,getInputProps:A}=SM();return G.jsxs(Vn,{fullWidth:!0,variant:"outlined",style:{borderStyle:"dashed",backgroundColor:"transparent",height:"2rem"},size:"small",...e(),children:[G.jsx("input",{...A({accept:".tif, .tiff"})}),"Choose a file"]})}const yk=es(e=>({root:{maxHeight:A=>`${A.maxHeight-e.spacing(4)}px`,width:"365px",overflowX:"hidden",overflowY:"scroll","&::-webkit-scrollbar":{display:"none",background:"transparent"},scrollbarWidth:"none"},typography:{fontSize:".8rem"},paper:{paddingBottom:e.spacing(2),paddingRight:e.spacing(2),paddingLeft:e.spacing(2),backgroundColor:"rgba(0, 0, 0, 0.75)",borderRadius:2},item:{width:"100%"},divider:{paddingBottom:e.spacing(1),paddingTop:e.spacing(2)}}));function JEA(e){const A=di(C=>C.image),[t,i]=_A(C=>[C.source,C.metadata]),n=(C,B)=>{C.preventDefault();const E={urlOrFile:B,description:mM(B)};_A.setState({source:E})},r=C=>di.setState({image:C.target.value}),o=typeof t.urlOrFile=="string"?t.urlOrFile:"",[s,a]=p.useState(o),[g,I]=p.useReducer(C=>!C,!1),l=p.useRef(null),c=yk(e);return p.useEffect(()=>a(o),[o]),G.jsxs(ZA,{container:!0,direction:"column",spacing:0,children:[G.jsx(ZA,{item:!0,xs:12,children:G.jsx(HEA,{})}),G.jsxs(ZA,{container:!0,direction:"row",justifyContent:"space-between",alignItems:"center",children:[G.jsxs(ZA,{item:!0,xs:1,children:[G.jsx(fk,{onClick:I,ref:l}),G.jsx(Nm,{open:g,anchorEl:l.current,placement:"bottom-start",style:{width:"25%"},children:G.jsx(Zr,{style:{padding:8},children:G.jsx(fu,{onClickAway:I,children:G.jsxs(zo,{className:c.typography,children:["Provide a URL to an OME-TIFF file or a Bio-Formats Zarr store to view the image. View the"," ",G.jsx(mu,{target:"_blank",rel:"noopener noreferrer",href:"http://viv.gehlenborglab.org",children:"docs"})," ","to learn more about the supported file formats."]})})})})]}),G.jsx(ZA,{item:!0,xs:11,children:G.jsx("form",{onSubmit:C=>{n(C,s)},children:G.jsx(hEA,{id:"ome-input",label:"OME-TIFF/Bioformats-Zarr URL",variant:"filled",size:"small",fullWidth:!0,value:s,onChange:C=>a(C.target.value)})})})]}),!GgA()&&G.jsx(ZA,{item:!0,xs:12,style:{paddingTop:16},children:G.jsx(qEA,{})}),Array.isArray(i)&&G.jsx(ZA,{item:!0,xs:12,children:G.jsx(Ag,{native:!0,value:A,onChange:r,children:i.map((C,B)=>G.jsx("option",{value:B,children:C.Name},C.Name))})}),G.jsx(ZA,{item:!0,xs:12,className:c.divider,children:G.jsx(i0,{})})]})}function OEA({children:e,...A}){const t=yk(A),[i,n]=_A(r=>[r.isControllerOn,r.toggleIsControllerOn],Te);return i?G.jsx(s0,{position:"absolute",right:0,top:0,m:1,className:t.root,children:G.jsxs(Zr,{className:t.paper,children:[G.jsx(JEA,{}),G.jsx(ZA,{container:!0,direction:"column",justifyContent:"center",alignItems:"center",children:e.map((r,o)=>G.jsx(ZA,{item:!0,className:t.item,children:r},o))})]})}):G.jsx(s0,{position:"absolute",right:-8,top:-8,m:2,children:G.jsx(Vn,{variant:"outlined",color:"default",size:"small",endIcon:G.jsx(Qk,{}),onClick:n,"aria-label":"show-menu",children:"AVIVATOR"})})}function YEA(){const e=ue(t=>t.colormap),A=_A(t=>t.isViewerLoading);return G.jsxs(Gm,{fullWidth:!0,children:[G.jsxs(bm,{htmlFor:"colormap-select",children:["Additive ",e===""?" Blending":"Color Mapping"]}),G.jsxs(Ag,{native:!0,onChange:t=>ue.setState({colormap:t.target.value}),value:e,inputProps:{name:"colormap",id:"colormap-select"},disabled:A,children:[G.jsx("option",{"aria-label":"None",value:""}),dgA.map(t=>G.jsx("option",{value:t,children:t},t))]})]})}function KEA(e){const{size:A,label:t}=e,[i,n]=di(a=>[a.selections,a.setPropertiesForChannel],Te),r=Bn(),o=_A(a=>a.globalSelection),s=p.useCallback(GM((a,g)=>{_A.setState({isChannelLoading:i.map(()=>!0)});const I=[...i].map(l=>({...l,[t]:g}));nE({loader:r,selections:I,use3d:!1}).then(({domains:l,contrastLimits:c})=>{kt.unstable_batchedUpdates(()=>{dI(I.length).forEach((C,B)=>n(C,{domains:l[B],contrastLimits:c[B]}))}),kt.unstable_batchedUpdates(()=>{ue.setState({onViewportLoad:()=>{ue.setState({onViewportLoad:()=>{}}),_A.setState({isChannelLoading:i.map(()=>!1)})}}),dI(I.length).forEach((C,B)=>n(C,{selections:I[B]}))})})},50,{trailing:!0}),[r,i]);return G.jsxs(ZA,{container:!0,direction:"row",justifyContent:"space-between",alignItems:"center",children:[G.jsxs(ZA,{item:!0,xs:1,children:[t,":"]}),G.jsx(ZA,{item:!0,xs:11,children:G.jsx(Qm,{value:o[t],onChange:(a,g)=>{_A.setState({globalSelection:{...o,[t]:g}}),a.type==="keydown"&&s(a,g)},onChangeCommitted:s,valueLabelDisplay:"auto",getAriaLabel:()=>`${t} slider`,marks:dI(A).map(a=>({value:a})),min:0,max:A,orientation:"horizontal",style:{marginTop:"7px"},step:null})})]})}function VEA(){const e=di(s=>s.selections),[A,t,i]=ue(s=>[s.lensEnabled,s.toggleLensEnabled,s.lensSelection],Te),n=_A(s=>s.channelOptions),r=e.map(s=>s.c),o=`rgb(${[255,255,255]})`;return G.jsxs(ZA,{container:!0,direction:"row",justifyContent:"flex-start",alignItems:"center",children:[G.jsx(ZA,{item:!0,xs:2,children:"Lens:"}),G.jsx(ZA,{item:!0,xs:2,children:G.jsx(fm,{onChange:t,checked:A,style:{color:o,"&$checked":{color:o}}})}),G.jsx(ZA,{item:!0,xs:7,children:G.jsx(Ag,{native:!0,value:i,onChange:s=>ue.setState({lensSelection:s.target.value}),children:r.map((s,a)=>G.jsx("option",{value:a,children:n[s]},n[s]+String(a)))})})]})}function WEA(e,A=2){if(e===0)return"0 Bytes";const t=1024,i=A<0?0:A,n=["Bytes","KB","MB","GB"],r=Math.floor(Math.log(e)/Math.log(t));return`${parseFloat((e/Math.pow(t,r)).toFixed(i))} ${n[r]}`}const mk=(e,A)=>{const{shape:t,labels:i}=e[A],n=t[i.indexOf("y")],r=t[i.indexOf("x")],o=t[i.indexOf("z")],s=Math.max(1,o>>A),a=4*n*r*s;return{height:n,width:r,depthDownsampled:s,totalBytes:a}},Zx=(e,A)=>{var a,g,I;const{totalBytes:t,height:i,width:n,depthDownsampled:r}=mk(e,A),s=((a=window.performance)==null?void 0:a.memory)&&((I=(g=window.performance)==null?void 0:g.memory)==null?void 0:I.jsHeapSizeLimit)/2||2**31-1;return t1},zEA=es(()=>({paper:{backgroundColor:"rgba(0, 0, 0, 1)"},span:{width:"70px",textAlign:"center",paddingLeft:"2px",paddingRight:"2px"},colors:{"&:hover":{backgroundColor:"transparent"},paddingLeft:"2px",paddingRight:"2px"}}));function jEA(){const[e,A]=di(B=>[B.selections,B.setPropertiesForChannel],Te),t=Bn(),[i,n,r,o]=_A(B=>[B.use3d,B.toggleUse3d,B.toggleIsVolumeRenderingWarningOn,B.isViewerLoading],Te),[s,a]=p.useReducer(B=>!B,!1),g=p.useRef(null),I=zEA(),{shape:l,labels:c}=Array.isArray(t)?t[0]:t,C=Array.from({length:t.length}).filter((B,E)=>Zx(t,E)).length;return G.jsxs(G.Fragment,{children:[G.jsxs(Vn,{variant:"outlined",size:"small",ref:g,disabled:!(l[c.indexOf("z")]>1)||o||!C,onClick:()=>{a(),i&&(n(),_A.setState({isChannelLoading:Array(e.length).fill(!0)}),nE({loader:t,selections:e,use3d:!i}).then(({domains:B,contrastLimits:E})=>{dI(e.length).forEach((u,h)=>A(u,{domains:B[h],contrastLimits:E[h]})),_A.setState({isChannelLoading:Array(e.length).fill(!1)})}))},fullWidth:!0,children:[i?"Hide":"Show"," Volumetric Rendering"]}),G.jsx(Nm,{open:s,anchorEl:g.current,placement:"bottom-end",children:G.jsx(Zr,{className:I.paper,children:G.jsx(fu,{onClickAway:a,children:G.jsx(dm,{id:"resolution-options",children:Array.from({length:t.length}).fill(0).map((B,E)=>{if(t&&Zx(t,E)){const{height:u,width:h,depthDownsampled:f,totalBytes:Q}=mk(t,E);return G.jsx(WC,{dense:!0,disableGutters:!0,onClick:()=>{_A.setState({isChannelLoading:Array(e.length).fill(!0)});const[d,w,m]=Bm(t);ue.setState({resolution:E,xSlice:d,ySlice:w,zSlice:m}),a(),nE({loader:t,selections:e,use3d:!0}).then(({domains:v,contrastLimits:x})=>{dI(e.length).forEach((F,N)=>A(F,{domains:v[N],contrastLimits:x[N]})),ue.setState({onViewportLoad:()=>{ue.setState({onViewportLoad:()=>{}}),_A.setState({isChannelLoading:Array(e.length).fill(!1)})}}),n(),!!document.createElement("canvas").getContext("webgl2")||r()})},children:`${E}x Downsampled, ~${WEA(Q)} per channel, (${u}, ${h}, ${f})`},`(${u}, ${h}, ${f})`)}return null})})})})})]})}const $x=Object.values(sa);function XEA(){const e=ue(n=>n.renderingMode),[A,t]=_A(n=>[n.isViewerLoading,n.use3d],Te),i=t?$x:[...$x,""];return G.jsxs(Gm,{fullWidth:!0,children:[G.jsx(bm,{htmlFor:"rendering-mode-select",children:"Rendering Mode"}),G.jsx(Ag,{native:!0,onChange:n=>ue.setState({renderingMode:n.target.value}),value:t?e:"",inputProps:{name:"rendering-mode",id:"rendering-mode-select"},disabled:A||!t,children:i.map(n=>G.jsx("option",{value:n,children:n},n))})]})}const ZEA=es(e=>K2({enabled:{},disabled:{color:e.palette.text.disabled,"& .MuiSlider-thumb":{color:"rgb(100, 100, 100, 1.0)"},"& .MuiSlider-track":{color:"rgb(100, 100, 100, 1.0)"}}})),$EA=()=>{const[e,A,t]=ue(l=>[l.xSlice,l.ySlice,l.zSlice],Te),i=Bn(),n=_A(l=>l.use3d),[r,o,s]=Bm(i),a=[[e,l=>ue.setState({xSlice:l}),"x",r],[A,l=>ue.setState({ySlice:l}),"y",o],[t,l=>ue.setState({zSlice:l}),"z",s]],g=ZEA(),I=a.map(([l,c,C,[B,E]])=>G.jsxs(ZA,{container:!0,direction:"row",justifyContent:"flex-start",alignItems:"center",children:[G.jsx(ZA,{item:!0,xs:1,style:{marginBottom:8},children:G.jsxs(zo,{className:n?g.enabled:g.disabled,style:{marginTop:4},children:[C,":"]})}),G.jsx(ZA,{item:!0,xs:11,children:G.jsx(Qm,{disabled:!n,className:n?g.enabled:g.disabled,value:l,onChange:(u,h)=>c(h),valueLabelDisplay:"auto",valueLabelFormat:u=>Cm(u,5),getAriaLabel:()=>`${C} slider`,min:B,max:E,step:.005,orientation:"horizontal"})})]},C));return G.jsxs(G.Fragment,{children:[G.jsxs(zo,{className:n?g.enabled:g.disabled,style:{marginTop:16},children:["Clipping Planes:"," "]})," ",I]})},AuA=$EA;var Um={},euA=$r,tuA=Ao;Object.defineProperty(Um,"__esModule",{value:!0});var wk=Um.default=void 0,iuA=tuA(p),nuA=euA(eo()),ruA=(0,nuA.default)(iuA.createElement("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");wk=Um.default=ruA;const ouA=()=>{const[e,A,t,i,n]=_A(c=>[c.globalSelection,c.isViewerLoading,c.use3d,c.setIsChannelLoading,c.addIsChannelLoading],Te),[r,o,s]=di(c=>[c.selections,c.addChannel,c.setPropertiesForChannel],Te),a=Bn(),g=sm(),{labels:I}=a[0],l=p.useCallback(()=>{let c=Object.fromEntries(I.map(B=>[B,0]));c={...c,...e};const C=r.length;cm({loader:a,selection:c,use3d:t}).then(({domain:B,contrastLimits:E})=>{s(C,{domains:B,contrastLimits:E,channelsVisible:!0}),ue.setState({onViewportLoad:()=>{ue.setState({onViewportLoad:()=>{}}),i(C,!1)}}),n(!0);const{Pixels:{Channels:u}}=g,{c:h}=c;o({selections:c,ids:String(Math.random()),channelsVisible:!1,colors:(u[h].Color&&u[h].Color.slice(0,-1))??(gm[h]||[255,255,255])})})},[I,a,e,t,o,n,r,i,s,g]);return G.jsx(Vn,{disabled:r.length===fgA||A,onClick:l,fullWidth:!0,variant:"outlined",style:{borderStyle:"dashed"},startIcon:G.jsx(wk,{}),size:"small",children:"Add Channel"})},suA=ouA,auA=()=>{const[e,A]=ue(i=>[i.togglePanLock,i.panLock],Te),t=_A(i=>i.isViewerLoading);return G.jsxs(Vn,{disabled:t,onClick:e,variant:"outlined",size:"small",fullWidth:!0,children:[A?"Unlock":"Lock"," Pan"]})},guA=auA,IuA=()=>{const[e,A]=ue(i=>[i.toggleZoomLock,i.zoomLock],Te),t=_A(i=>i.isViewerLoading);return G.jsxs(Vn,{disabled:t,onClick:e,variant:"outlined",size:"small",fullWidth:!0,children:[A?"Unlock":"Lock"," Zoom"]})},luA=IuA,cuA=()=>{const e=ue(r=>r.isOverviewOn),[A,t,i,n]=_A(r=>[r.isViewerLoading,r.toggleUseLinkedView,r.useLinkedView,r.use3d],Te);return G.jsxs(Vn,{disabled:A||e||n,onClick:t,variant:"outlined",size:"small",fullWidth:!0,children:[i?"Hide":"Show"," Side-by-Side"]})},CuA=cuA,BuA=()=>{const[e,A]=ue(r=>[r.isOverviewOn,r.toggleIsOverviewOn],Te),[t,i,n]=_A(r=>[r.isViewerLoading,r.useLinkedView,r.use3d],Te);return G.jsxs(Vn,{disabled:t||i||n,onClick:A,variant:"outlined",size:"small",fullWidth:!0,children:[e?"Hide":"Show"," Picture-In-Picture"]})},EuA=BuA,uuA=es(e=>K2({enabled:{marginLeft:"4px"},disabled:{color:e.palette.text.disabled,marginLeft:"4px"}})),huA=()=>{const e=Bn(),[A,t]=ue(I=>[I.useFixedAxis,I.toggleUseFixedAxis],Te),[i,n]=_A(I=>[I.viewState,I.use3d]),{height:r,width:o}=lm(),s=uuA(),a=G.jsx(ZA,{item:!0,xs:"auto",children:G.jsxs(ZA,{container:!0,direction:"row",children:[G.jsx(fm,{onClick:t,style:{padding:0},disabled:!n,checked:A}),G.jsx(zo,{className:n?s.enabled:s.disabled,children:"Fix Camera Axis"})]})},"toggle-fixed-axis"),g=G.jsx(ZA,{item:!0,xs:"auto",children:G.jsx(Vn,{onClick:()=>_A.setState({viewState:{...i,...hu(e,{height:r,width:o},1,!0),rotationX:0,rotationOrbit:0}}),disabled:!n,style:{padding:0},children:"Re-Center"})},"recenter");return G.jsx(ZA,{container:!0,direction:"row",justifyContent:"space-between",alignItems:"center",style:{marginTop:16},children:[a,g]})},fuA=huA;function AF(e){const{children:A,value:t,index:i,...n}=e;return G.jsx("div",{role:"tabpanel",hidden:t!==i,id:`simple-tabpanel-${i}`,"aria-labelledby":`simple-tab-${i}`,...n,children:t===i&&A})}const QuA=()=>{const[e,A,t,i,n,r,o,s,a]=di(J=>[J.channelsVisible,J.contrastLimits,J.colors,J.domains,J.selections,J.ids,J.setPropertiesForChannel,J.toggleIsOn,J.removeChannel],Te),g=Bn(),I=ue(J=>J.colormap),[l,c,C,B,E,u,h,f,Q,d]=_A(J=>[J.channelOptions,J.useLinkedView,J.use3d,J.useColormap,J.useLens,J.isChannelLoading,J.setIsChannelLoading,J.removeIsChannelLoading,J.pixelValues,J.isViewerLoading],Te),w=sm(),m=lm(),v=w&&vM(w),{shape:x,labels:D}=g[0],F=D.filter(J=>Im.includes(J)),N=r.map((J,Z)=>{const z=AA=>{const iA={...n[Z],c:l.indexOf(AA.target.value)};h(Z,!0),cm({loader:g,selection:iA,use3d:C}).then(({domain:gA,contrastLimits:sA})=>{const{Pixels:{Channels:BA}}=w,{c:IA}=iA,bA={contrastLimits:sA,domains:gA};BA[IA].Color&&(bA.colors=BA[IA].Color.slice(0,-1)),o(Z,bA),ue.setState({onViewportLoad:()=>{ue.setState({onViewportLoad:()=>{}}),h(Z,!1)}}),o(Z,{selections:iA})})},O=()=>s(Z),Y=(AA,iA)=>o(Z,{contrastLimits:iA}),T=()=>{a(Z),f(Z)},q=AA=>{o(Z,{colors:AA})},j=l[n[Z].c];return G.jsx(ZA,{style:{width:"100%"},item:!0,children:G.jsx(eEA,{name:j,onSelectionChange:z,channelsVisible:e[Z],pixelValue:Q[Z],toggleIsOn:O,handleSliderChange:Y,domain:i[Z],slider:A[Z],color:t[Z],handleRemoveChannel:T,handleColorSelect:q,isLoading:u[Z]})},`channel-controller-${j}-${J}`)}),k=F.map(J=>{const Z=x[D.indexOf(J)];return Z>1?G.jsx(KEA,{size:Z,label:J},J):null}),[P,H]=p.useState(0),W=(J,Z)=>{H(Z)};return G.jsxs(OEA,{maxHeight:m.height,children:[G.jsxs(ucA,{value:P,onChange:W,"aria-label":"simple tabs example",style:{height:"24px",minHeight:"24px"},children:[G.jsx(xx,{label:"Channels",style:{fontSize:".75rem",bottom:12}}),G.jsx(xx,{label:"Volume",style:{fontSize:".75rem",bottom:12}})]}),G.jsx(i0,{}),G.jsxs(AF,{value:P,index:0,children:[B&&G.jsx(YEA,{}),E&&!I&&!C&&x[D.indexOf("c")]>1&&G.jsx(VEA,{channelOptions:n.map(J=>l[J.c])}),!C&&k,!d&&!v?G.jsx(ZA,{container:!0,children:N}):G.jsx(ZA,{container:!0,justifyContent:"center",children:!v&&G.jsx(_M,{})}),!v&&G.jsx(suA,{})]}),G.jsxs(AF,{value:P,index:1,children:[G.jsx(XEA,{}),G.jsx(AuA,{}),G.jsx(fuA,{})]}),G.jsx(i0,{style:{marginTop:"8px",marginBottom:"8px"}}),G.jsx(jEA,{}),G.jsx(EuA,{}),G.jsx(CuA,{}),c&&!C&&G.jsxs(G.Fragment,{children:[G.jsx(luA,{}),G.jsx(guA,{})]})]})},duA=QuA;function puA({children:e}){const{getRootProps:A,getInputProps:t}=SM();return G.jsxs("div",{...A({onClick:i=>i.stopPropagation()}),children:[G.jsx("input",{...t()}),e]})}const yuA=es(e=>({typography:{fontSize:".8rem"},paper:{paddingRight:e.spacing(1),paddingLeft:e.spacing(1),backgroundColor:"rgba(0, 0, 0, 0.75)",borderRadius:2}}));function muA(e,A,t){return`${e}/${A} [${t.join(", ")}]`}function wuA(){const e=yuA(),[A,t]=_A(s=>[s.use3d,s.pyramidResolution],Te),i=Bn(),n=ue(s=>s.resolution),r=A?n:t,o=i[r];return o?G.jsx(s0,{style:{position:"fixed",marginTop:"calc(5% + 60px)",bottom:0},children:G.jsx(Zr,{className:e.paper,children:G.jsx(zo,{className:e.typography,children:muA(r+1,i.length,o.shape)})})}):null}function eF(e){const{history:A,source:t,isDemoImage:i}=e,n=_A(s=>s.isViewerLoading),r=_A(s=>s.source),o=_A(s=>s.useLinkedView);return p.useEffect(()=>{_A.setState({source:t,isNoImageUrlSnackbarOn:i})},[]),kgA(r,A),G.jsxs(G.Fragment,{children:[G.jsx(puA,{children:!n&&G.jsx(OlA,{})}),G.jsx(duA,{}),G.jsx(JIA,{}),!o&&G.jsx(wuA,{})]})}const tF=D2({palette:{type:"dark",primary:PI,secondary:PI},props:{MuiButtonBase:{disableRipple:!0}}});function vuA(){return Wv[Math.floor(Math.random()*Wv.length)]}function SuA(){return new URLSearchParams(O3().search)}function DuA(e){const t=SuA().get("image_url"),{routeProps:{history:i}}=e;if(t){const r={urlOrFile:t,description:mM(t)};return G.jsx(Vv,{theme:tF,children:G.jsx(eF,{source:r,history:i})})}const n=vuA();return G.jsx(Vv,{theme:tF,children:G.jsx(eF,{source:n,history:i,isDemoImage:!0})})}kg.render(G.jsx(Y3,{children:G.jsx(q3,{children:G.jsx(U3,{path:"/",render:e=>G.jsx(DuA,{routeProps:e})})})}),document.getElementById("root"));export{jAA as B,KuA as L,VuA as a,pi as g}; diff --git a/assets/index.4b675974.css b/assets/index-55b42f6f.css similarity index 100% rename from assets/index.4b675974.css rename to assets/index-55b42f6f.css diff --git a/assets/index.ed0b1304.js b/assets/index.ed0b1304.js deleted file mode 100644 index c564d588f..000000000 --- a/assets/index.ed0b1304.js +++ /dev/null @@ -1,3924 +0,0 @@ -function xk(e,A){return A.forEach(function(t){t&&typeof t!="string"&&!Array.isArray(t)&&Object.keys(t).forEach(function(i){if(i!=="default"&&!(i in e)){var n=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,n.get?n:{enumerable:!0,get:function(){return t[i]}})}})}),Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}const Fk=function(){const A=document.createElement("link").relList;if(A&&A.supports&&A.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))i(n);new MutationObserver(n=>{for(const r of n)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function t(n){const r={};return n.integrity&&(r.integrity=n.integrity),n.referrerpolicy&&(r.referrerPolicy=n.referrerpolicy),n.crossorigin==="use-credentials"?r.credentials="include":n.crossorigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(n){if(n.ep)return;n.ep=!0;const r=t(n);fetch(n.href,r)}};Fk();var gc=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Nk(e){if(e.__esModule)return e;var A=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach(function(t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(A,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})}),A}var p={exports:{}},le={};/* -object-assign -(c) Sindre Sorhus -@license MIT -*/var zm=Object.getOwnPropertySymbols,Lk=Object.prototype.hasOwnProperty,bk=Object.prototype.propertyIsEnumerable;function Gk(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function _k(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var A={},t=0;t<10;t++)A["_"+String.fromCharCode(t)]=t;var i=Object.getOwnPropertyNames(A).map(function(r){return A[r]});if(i.join("")!=="0123456789")return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach(function(r){n[r]=r}),Object.keys(Object.assign({},n)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var gF=_k()?Object.assign:function(e,A){for(var t,i=Gk(e),n,r=1;r=f},n=function(){},e.unstable_forceFrameRate=function(k){0>k||125>>1,iA=k[AA];if(iA!==void 0&&0x(sA,j))IA!==void 0&&0>x(IA,sA)?(k[AA]=IA,k[BA]=j,AA=BA):(k[AA]=sA,k[gA]=j,AA=gA);else if(IA!==void 0&&0>x(IA,j))k[AA]=IA,k[BA]=j,AA=BA;else break A}}return q}return null}function x(k,q){var j=k.sortIndex-q.sortIndex;return j!==0?j:k.id-q.id}var D=[],F=[],N=1,M=null,U=3,P=!1,W=!1,J=!1;function Z(k){for(var q=m(F);q!==null;){if(q.callback===null)v(F);else if(q.startTime<=k)v(F),q.sortIndex=q.expirationTime,w(D,q);else break;q=m(F)}}function z(k){if(J=!1,Z(k),!W)if(m(D)!==null)W=!0,A(O);else{var q=m(F);q!==null&&t(z,q.startTime-k)}}function O(k,q){W=!1,J&&(J=!1,i()),P=!0;var j=U;try{for(Z(q),M=m(D);M!==null&&(!(M.expirationTime>q)||k&&!e.unstable_shouldYield());){var AA=M.callback;if(typeof AA=="function"){M.callback=null,U=M.priorityLevel;var iA=AA(M.expirationTime<=q);q=e.unstable_now(),typeof iA=="function"?M.callback=iA:M===m(D)&&v(D),Z(q)}else v(D);M=m(D)}if(M!==null)var gA=!0;else{var sA=m(F);sA!==null&&t(z,sA.startTime-q),gA=!1}return gA}finally{M=null,U=j,P=!1}}var Y=n;e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(k){k.callback=null},e.unstable_continueExecution=function(){W||P||(W=!0,A(O))},e.unstable_getCurrentPriorityLevel=function(){return U},e.unstable_getFirstCallbackNode=function(){return m(D)},e.unstable_next=function(k){switch(U){case 1:case 2:case 3:var q=3;break;default:q=U}var j=U;U=q;try{return k()}finally{U=j}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=Y,e.unstable_runWithPriority=function(k,q){switch(k){case 1:case 2:case 3:case 4:case 5:break;default:k=3}var j=U;U=k;try{return q()}finally{U=j}},e.unstable_scheduleCallback=function(k,q,j){var AA=e.unstable_now();switch(typeof j=="object"&&j!==null?(j=j.delay,j=typeof j=="number"&&0AA?(k.sortIndex=j,w(F,k),m(D)===null&&k===m(F)&&(J?i():J=!0,t(z,j-AA))):(k.sortIndex=iA,w(D,k),W||P||(W=!0,A(O))),k},e.unstable_wrapCallback=function(k){var q=U;return function(){var j=U;U=q;try{return k.apply(this,arguments)}finally{U=j}}}})(wF);mF.exports=wF;/** @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 CE=p.exports,qe=gF,gt=mF.exports;function oA(e){for(var A="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;tA}return!1}function Ht(e,A,t,i,n,r,o){this.acceptsBooleans=A===2||A===3||A===4,this.attributeName=i,this.attributeNamespace=n,this.mustUseProperty=t,this.propertyName=e,this.type=A,this.sanitizeURL=r,this.removeEmptyString=o}var yt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){yt[e]=new Ht(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var A=e[0];yt[A]=new Ht(A,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){yt[e]=new Ht(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){yt[e]=new Ht(e,2,!1,e,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(e){yt[e]=new Ht(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){yt[e]=new Ht(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){yt[e]=new Ht(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){yt[e]=new Ht(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){yt[e]=new Ht(e,5,!1,e.toLowerCase(),null,!1,!1)});var h0=/[\-:]([a-z])/g;function f0(e){return e[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(e){var A=e.replace(h0,f0);yt[A]=new Ht(A,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var A=e.replace(h0,f0);yt[A]=new Ht(A,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var A=e.replace(h0,f0);yt[A]=new Ht(A,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){yt[e]=new Ht(e,1,!1,e.toLowerCase(),null,!1,!1)});yt.xlinkHref=new Ht("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){yt[e]=new Ht(e,1,!1,e.toLowerCase(),null,!0,!0)});function Q0(e,A,t,i){var n=yt.hasOwnProperty(A)?yt[A]:null,r=n!==null?n.type===0:i?!1:!(!(2s||n[o]!==r[s])return` -`+n[o].replace(" at new "," at ");while(1<=o&&0<=s);break}}}finally{Tu=!1,Error.prepareStackTrace=t}return(e=e?e.displayName||e.name:"")?Mg(e):""}function Yk(e){switch(e.tag){case 5:return Mg(e.type);case 16:return Mg("Lazy");case 13:return Mg("Suspense");case 19:return Mg("SuspenseList");case 0:case 2:case 15:return e=lc(e.type,!1),e;case 11:return e=lc(e.type.render,!1),e;case 22:return e=lc(e.type._render,!1),e;case 1:return e=lc(e.type,!0),e;default:return""}}function Vs(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Cr:return"Fragment";case Eo:return"Portal";case jg:return"Profiler";case d0:return"StrictMode";case Xg:return"Suspense";case AB:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case y0:return(e.displayName||"Context")+".Consumer";case p0:return(e._context.displayName||"Context")+".Provider";case BE:var A=e.render;return A=A.displayName||A.name||"",e.displayName||(A!==""?"ForwardRef("+A+")":"ForwardRef");case EE:return Vs(e.type);case w0:return Vs(e._render);case m0:A=e._payload,e=e._init;try{return Vs(e(A))}catch{}}return null}function Mr(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function DF(e){var A=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(A==="checkbox"||A==="radio")}function Kk(e){var A=DF(e)?"checked":"value",t=Object.getOwnPropertyDescriptor(e.constructor.prototype,A),i=""+e[A];if(!e.hasOwnProperty(A)&&typeof t!="undefined"&&typeof t.get=="function"&&typeof t.set=="function"){var n=t.get,r=t.set;return Object.defineProperty(e,A,{configurable:!0,get:function(){return n.call(this)},set:function(o){i=""+o,r.call(this,o)}}),Object.defineProperty(e,A,{enumerable:t.enumerable}),{getValue:function(){return i},setValue:function(o){i=""+o},stopTracking:function(){e._valueTracker=null,delete e[A]}}}}function cc(e){e._valueTracker||(e._valueTracker=Kk(e))}function RF(e){if(!e)return!1;var A=e._valueTracker;if(!A)return!0;var t=A.getValue(),i="";return e&&(i=DF(e)?e.checked?"true":"false":e.value),e=i,e!==t?(A.setValue(e),!0):!1}function eB(e){if(e=e||(typeof document!="undefined"?document:void 0),typeof e=="undefined")return null;try{return e.activeElement||e.body}catch{return e.body}}function zf(e,A){var t=A.checked;return qe({},A,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:t!=null?t:e._wrapperState.initialChecked})}function tw(e,A){var t=A.defaultValue==null?"":A.defaultValue,i=A.checked!=null?A.checked:A.defaultChecked;t=Mr(A.value!=null?A.value:t),e._wrapperState={initialChecked:i,initialValue:t,controlled:A.type==="checkbox"||A.type==="radio"?A.checked!=null:A.value!=null}}function xF(e,A){A=A.checked,A!=null&&Q0(e,"checked",A,!1)}function jf(e,A){xF(e,A);var t=Mr(A.value),i=A.type;if(t!=null)i==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+t):e.value!==""+t&&(e.value=""+t);else if(i==="submit"||i==="reset"){e.removeAttribute("value");return}A.hasOwnProperty("value")?Xf(e,A.type,t):A.hasOwnProperty("defaultValue")&&Xf(e,A.type,Mr(A.defaultValue)),A.checked==null&&A.defaultChecked!=null&&(e.defaultChecked=!!A.defaultChecked)}function iw(e,A,t){if(A.hasOwnProperty("value")||A.hasOwnProperty("defaultValue")){var i=A.type;if(!(i!=="submit"&&i!=="reset"||A.value!==void 0&&A.value!==null))return;A=""+e._wrapperState.initialValue,t||A===e.value||(e.value=A),e.defaultValue=A}t=e.name,t!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,t!==""&&(e.name=t)}function Xf(e,A,t){(A!=="number"||eB(e.ownerDocument)!==e)&&(t==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+t&&(e.defaultValue=""+t))}function Vk(e){var A="";return CE.Children.forEach(e,function(t){t!=null&&(A+=t)}),A}function Zf(e,A){return e=qe({children:void 0},A),(A=Vk(A.children))&&(e.children=A),e}function Ws(e,A,t,i){if(e=e.options,A){A={};for(var n=0;n=t.length))throw Error(oA(93));t=t[0]}A=t}A==null&&(A=""),t=A}e._wrapperState={initialValue:Mr(t)}}function FF(e,A){var t=Mr(A.value),i=Mr(A.defaultValue);t!=null&&(t=""+t,t!==e.value&&(e.value=t),A.defaultValue==null&&e.defaultValue!==t&&(e.defaultValue=t)),i!=null&&(e.defaultValue=""+i)}function rw(e){var A=e.textContent;A===e._wrapperState.initialValue&&A!==""&&A!==null&&(e.value=A)}var AQ={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function NF(e){switch(e){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 eQ(e,A){return e==null||e==="http://www.w3.org/1999/xhtml"?NF(A):e==="http://www.w3.org/2000/svg"&&A==="foreignObject"?"http://www.w3.org/1999/xhtml":e}var Cc,LF=function(e){return typeof MSApp!="undefined"&&MSApp.execUnsafeLocalFunction?function(A,t,i,n){MSApp.execUnsafeLocalFunction(function(){return e(A,t,i,n)})}:e}(function(e,A){if(e.namespaceURI!==AQ.svg||"innerHTML"in e)e.innerHTML=A;else{for(Cc=Cc||document.createElement("div"),Cc.innerHTML=""+A.valueOf().toString()+"",A=Cc.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;A.firstChild;)e.appendChild(A.firstChild)}});function RI(e,A){if(A){var t=e.firstChild;if(t&&t===e.lastChild&&t.nodeType===3){t.nodeValue=A;return}}e.textContent=A}var Zg={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},Wk=["Webkit","ms","Moz","O"];Object.keys(Zg).forEach(function(e){Wk.forEach(function(A){A=A+e.charAt(0).toUpperCase()+e.substring(1),Zg[A]=Zg[e]})});function bF(e,A,t){return A==null||typeof A=="boolean"||A===""?"":t||typeof A!="number"||A===0||Zg.hasOwnProperty(e)&&Zg[e]?(""+A).trim():A+"px"}function GF(e,A){e=e.style;for(var t in A)if(A.hasOwnProperty(t)){var i=t.indexOf("--")===0,n=bF(t,A[t],i);t==="float"&&(t="cssFloat"),i?e.setProperty(t,n):e[t]=n}}var zk=qe({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 tQ(e,A){if(A){if(zk[e]&&(A.children!=null||A.dangerouslySetInnerHTML!=null))throw Error(oA(137,e));if(A.dangerouslySetInnerHTML!=null){if(A.children!=null)throw Error(oA(60));if(!(typeof A.dangerouslySetInnerHTML=="object"&&"__html"in A.dangerouslySetInnerHTML))throw Error(oA(61))}if(A.style!=null&&typeof A.style!="object")throw Error(oA(62))}}function iQ(e,A){if(e.indexOf("-")===-1)return typeof A.is=="string";switch(e){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 D0(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var nQ=null,zs=null,js=null;function ow(e){if(e=El(e)){if(typeof nQ!="function")throw Error(oA(280));var A=e.stateNode;A&&(A=pE(A),nQ(e.stateNode,e.type,A))}}function _F(e){zs?js?js.push(e):js=[e]:zs=e}function MF(){if(zs){var e=zs,A=js;if(js=zs=null,ow(e),A)for(e=0;ei?0:1<t;t++)A.push(e);return A}function hE(e,A,t){e.pendingLanes|=A;var i=A-1;e.suspendedLanes&=i,e.pingedLanes&=i,e=e.eventTimes,A=31-kr(A),e[A]=t}var kr=Math.clz32?Math.clz32:lT,gT=Math.log,IT=Math.LN2;function lT(e){return e===0?32:31-(gT(e)/IT|0)|0}var cT=gt.unstable_UserBlockingPriority,CT=gt.unstable_runWithPriority,pC=!0;function BT(e,A,t,i){uo||x0();var n=G0,r=uo;uo=!0;try{kF(n,e,A,t,i)}finally{(uo=r)||F0()}}function ET(e,A,t,i){CT(cT,G0.bind(null,e,A,t,i))}function G0(e,A,t,i){if(pC){var n;if((n=(A&4)===0)&&0=AI),uw=String.fromCharCode(32),hw=!1;function AN(e,A){switch(e){case"keyup":return TT.indexOf(A.keyCode)!==-1;case"keydown":return A.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function eN(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Gs=!1;function PT(e,A){switch(e){case"compositionend":return eN(A);case"keypress":return A.which!==32?null:(hw=!0,uw);case"textInput":return e=A.data,e===uw&&hw?null:e;default:return null}}function HT(e,A){if(Gs)return e==="compositionend"||!U0&&AN(e,A)?(e=ZF(),yC=M0=Er=null,Gs=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(A.ctrlKey||A.altKey||A.metaKey)||A.ctrlKey&&A.altKey){if(A.char&&1=A)return{node:t,offset:A-e};e=i}A:{for(;t;){if(t.nextSibling){t=t.nextSibling;break A}t=t.parentNode}t=void 0}t=pw(t)}}function rN(e,A){return e&&A?e===A?!0:e&&e.nodeType===3?!1:A&&A.nodeType===3?rN(e,A.parentNode):"contains"in e?e.contains(A):e.compareDocumentPosition?!!(e.compareDocumentPosition(A)&16):!1:!1}function mw(){for(var e=window,A=eB();A instanceof e.HTMLIFrameElement;){try{var t=typeof A.contentWindow.location.href=="string"}catch{t=!1}if(t)e=A.contentWindow;else break;A=eB(e.document)}return A}function gQ(e){var A=e&&e.nodeName&&e.nodeName.toLowerCase();return A&&(A==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||A==="textarea"||e.contentEditable==="true")}var XT=Tn&&"documentMode"in document&&11>=document.documentMode,_s=null,IQ=null,tI=null,lQ=!1;function ww(e,A,t){var i=t.window===t?t.document:t.nodeType===9?t:t.ownerDocument;lQ||_s==null||_s!==eB(i)||(i=_s,"selectionStart"in i&&gQ(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),tI&&GI(tI,i)||(tI=i,i=rB(IQ,"onSelect"),0ks||(e.current=CQ[ks],CQ[ks]=null,ks--)}function We(e,A){ks++,CQ[ks]=e.current,e.current=A}var Tr={},Gt=Xr(Tr),Wt=Xr(!1),Fo=Tr;function la(e,A){var t=e.type.contextTypes;if(!t)return Tr;var i=e.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===A)return i.__reactInternalMemoizedMaskedChildContext;var n={},r;for(r in t)n[r]=A[r];return i&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=A,e.__reactInternalMemoizedMaskedChildContext=n),n}function zt(e){return e=e.childContextTypes,e!=null}function aB(){Te(Wt),Te(Gt)}function bw(e,A,t){if(Gt.current!==Tr)throw Error(oA(168));We(Gt,A),We(Wt,t)}function CN(e,A,t){var i=e.stateNode;if(e=A.childContextTypes,typeof i.getChildContext!="function")return t;i=i.getChildContext();for(var n in i)if(!(n in e))throw Error(oA(108,Vs(A)||"Unknown",n));return qe({},t,i)}function wC(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Tr,Fo=Gt.current,We(Gt,e),We(Wt,Wt.current),!0}function Gw(e,A,t){var i=e.stateNode;if(!i)throw Error(oA(169));t?(e=CN(e,A,Fo),i.__reactInternalMemoizedMergedChildContext=e,Te(Wt),Te(Gt),We(Gt,e)):Te(Wt),We(Wt,t)}var H0=null,So=null,AU=gt.unstable_runWithPriority,q0=gt.unstable_scheduleCallback,BQ=gt.unstable_cancelCallback,eU=gt.unstable_shouldYield,_w=gt.unstable_requestPaint,EQ=gt.unstable_now,tU=gt.unstable_getCurrentPriorityLevel,yE=gt.unstable_ImmediatePriority,BN=gt.unstable_UserBlockingPriority,EN=gt.unstable_NormalPriority,uN=gt.unstable_LowPriority,hN=gt.unstable_IdlePriority,Xu={},iU=_w!==void 0?_w:function(){},Sn=null,vC=null,Zu=!1,Mw=EQ(),Nt=1e4>Mw?EQ:function(){return EQ()-Mw};function ca(){switch(tU()){case yE:return 99;case BN:return 98;case EN:return 97;case uN:return 96;case hN:return 95;default:throw Error(oA(332))}}function fN(e){switch(e){case 99:return yE;case 98:return BN;case 97:return EN;case 96:return uN;case 95:return hN;default:throw Error(oA(332))}}function No(e,A){return e=fN(e),AU(e,A)}function MI(e,A,t){return e=fN(e),q0(e,A,t)}function Bn(){if(vC!==null){var e=vC;vC=null,BQ(e)}QN()}function QN(){if(!Zu&&Sn!==null){Zu=!0;var e=0;try{var A=Sn;No(99,function(){for(;ev?(x=m,m=null):x=m.sibling;var D=c(E,m,f[v],Q);if(D===null){m===null&&(m=x);break}e&&m&&D.alternate===null&&A(E,m),h=r(D,h,v),w===null?d=D:w.sibling=D,w=D,m=x}if(v===f.length)return t(E,m),d;if(m===null){for(;vv?(x=m,m=null):x=m.sibling;var F=c(E,m,D.value,Q);if(F===null){m===null&&(m=x);break}e&&m&&F.alternate===null&&A(E,m),h=r(F,h,v),w===null?d=F:w.sibling=F,w=F,m=x}if(D.done)return t(E,m),d;if(m===null){for(;!D.done;v++,D=f.next())D=l(E,D.value,Q),D!==null&&(h=r(D,h,v),w===null?d=D:w.sibling=D,w=D);return d}for(m=i(E,m);!D.done;v++,D=f.next())D=C(m,E,v,D.value,Q),D!==null&&(e&&D.alternate!==null&&m.delete(D.key===null?v:D.key),h=r(D,h,v),w===null?d=D:w.sibling=D,w=D);return e&&m.forEach(function(N){return A(E,N)}),d}return function(E,h,f,Q){var d=typeof f=="object"&&f!==null&&f.type===Cr&&f.key===null;d&&(f=f.props.children);var w=typeof f=="object"&&f!==null;if(w)switch(f.$$typeof){case _g:A:{for(w=f.key,d=h;d!==null;){if(d.key===w){switch(d.tag){case 7:if(f.type===Cr){t(E,d.sibling),h=n(d,f.props.children),h.return=E,E=h;break A}break;default:if(d.elementType===f.type){t(E,d.sibling),h=n(d,f.props),h.ref=cg(E,d,f),h.return=E,E=h;break A}}t(E,d);break}else A(E,d);d=d.sibling}f.type===Cr?(h=ta(f.props.children,E.mode,Q,f.key),h.return=E,E=h):(Q=xC(f.type,f.key,f.props,null,E.mode,Q),Q.ref=cg(E,h,f),Q.return=E,E=Q)}return o(E);case Eo:A:{for(d=f.key;h!==null;){if(h.key===d)if(h.tag===4&&h.stateNode.containerInfo===f.containerInfo&&h.stateNode.implementation===f.implementation){t(E,h.sibling),h=n(h,f.children||[]),h.return=E,E=h;break A}else{t(E,h);break}else A(E,h);h=h.sibling}h=nh(f,E.mode,Q),h.return=E,E=h}return o(E)}if(typeof f=="string"||typeof f=="number")return f=""+f,h!==null&&h.tag===6?(t(E,h.sibling),h=n(h,f),h.return=E,E=h):(t(E,h),h=ih(f,E.mode,Q),h.return=E,E=h),o(E);if(uc(f))return B(E,h,f,Q);if(og(f))return u(E,h,f,Q);if(w&&hc(E,f),typeof f=="undefined"&&!d)switch(E.tag){case 1:case 22:case 0:case 11:case 15:throw Error(oA(152,Vs(E.type)||"Component"))}return t(E,h)}}var CB=wN(!0),vN=wN(!1),ul={},gn=Xr(ul),TI=Xr(ul),UI=Xr(ul);function fo(e){if(e===ul)throw Error(oA(174));return e}function hQ(e,A){switch(We(UI,A),We(TI,e),We(gn,ul),e=A.nodeType,e){case 9:case 11:A=(A=A.documentElement)?A.namespaceURI:eQ(null,"");break;default:e=e===8?A.parentNode:A,A=e.namespaceURI||null,e=e.tagName,A=eQ(A,e)}Te(gn),We(gn,A)}function Ca(){Te(gn),Te(TI),Te(UI)}function Hw(e){fo(UI.current);var A=fo(gn.current),t=eQ(A,e.type);A!==t&&(We(TI,e),We(gn,t))}function K0(e){TI.current===e&&(Te(gn),Te(TI))}var Ve=Xr(0);function BB(e){for(var A=e;A!==null;){if(A.tag===13){var t=A.memoizedState;if(t!==null&&(t=t.dehydrated,t===null||t.data==="$?"||t.data==="$!"))return A}else if(A.tag===19&&A.memoizedProps.revealOrder!==void 0){if((A.flags&64)!==0)return A}else if(A.child!==null){A.child.return=A,A=A.child;continue}if(A===e)break;for(;A.sibling===null;){if(A.return===null||A.return===e)return null;A=A.return}A.sibling.return=A.return,A=A.sibling}return null}var Ln=null,hr=null,In=!1;function SN(e,A){var t=Ci(5,null,null,0);t.elementType="DELETED",t.type="DELETED",t.stateNode=A,t.return=e,t.flags=8,e.lastEffect!==null?(e.lastEffect.nextEffect=t,e.lastEffect=t):e.firstEffect=e.lastEffect=t}function qw(e,A){switch(e.tag){case 5:var t=e.type;return A=A.nodeType!==1||t.toLowerCase()!==A.nodeName.toLowerCase()?null:A,A!==null?(e.stateNode=A,!0):!1;case 6:return A=e.pendingProps===""||A.nodeType!==3?null:A,A!==null?(e.stateNode=A,!0):!1;case 13:return!1;default:return!1}}function fQ(e){if(In){var A=hr;if(A){var t=A;if(!qw(e,A)){if(A=Xs(t.nextSibling),!A||!qw(e,A)){e.flags=e.flags&-1025|2,In=!1,Ln=e;return}SN(Ln,t)}Ln=e,hr=Xs(A.firstChild)}else e.flags=e.flags&-1025|2,In=!1,Ln=e}}function Jw(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;Ln=e}function fc(e){if(e!==Ln)return!1;if(!In)return Jw(e),In=!0,!1;var A=e.type;if(e.tag!==5||A!=="head"&&A!=="body"&&!cQ(A,e.memoizedProps))for(A=hr;A;)SN(e,A),A=Xs(A.nextSibling);if(Jw(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(oA(317));A:{for(e=e.nextSibling,A=0;e;){if(e.nodeType===8){var t=e.data;if(t==="/$"){if(A===0){hr=Xs(e.nextSibling);break A}A--}else t!=="$"&&t!=="$!"&&t!=="$?"||A++}e=e.nextSibling}hr=null}}else hr=Ln?Xs(e.stateNode.nextSibling):null;return!0}function $u(){hr=Ln=null,In=!1}var $s=[];function V0(){for(var e=0;e<$s.length;e++)$s[e]._workInProgressVersionPrimary=null;$s.length=0}var iI=$o.ReactCurrentDispatcher,Ei=$o.ReactCurrentBatchConfig,PI=0,je=null,Dt=null,Et=null,EB=!1,nI=!1;function Ot(){throw Error(oA(321))}function W0(e,A){if(A===null)return!1;for(var t=0;tr))throw Error(oA(301));r+=1,Et=Dt=null,A.updateQueue=null,iI.current=aU,e=t(i,n)}while(nI)}if(iI.current=QB,A=Dt!==null&&Dt.next!==null,PI=0,Et=Dt=je=null,EB=!1,A)throw Error(oA(300));return e}function Qo(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Et===null?je.memoizedState=Et=e:Et=Et.next=e,Et}function es(){if(Dt===null){var e=je.alternate;e=e!==null?e.memoizedState:null}else e=Dt.next;var A=Et===null?je.memoizedState:Et.next;if(A!==null)Et=A,Dt=e;else{if(e===null)throw Error(oA(310));Dt=e,e={memoizedState:Dt.memoizedState,baseState:Dt.baseState,baseQueue:Dt.baseQueue,queue:Dt.queue,next:null},Et===null?je.memoizedState=Et=e:Et=Et.next=e}return Et}function on(e,A){return typeof A=="function"?A(e):A}function Cg(e){var A=es(),t=A.queue;if(t===null)throw Error(oA(311));t.lastRenderedReducer=e;var i=Dt,n=i.baseQueue,r=t.pending;if(r!==null){if(n!==null){var o=n.next;n.next=r.next,r.next=o}i.baseQueue=n=r,t.pending=null}if(n!==null){n=n.next,i=i.baseState;var s=o=r=null,a=n;do{var g=a.lane;if((PI&g)===g)s!==null&&(s=s.next={lane:0,action:a.action,eagerReducer:a.eagerReducer,eagerState:a.eagerState,next:null}),i=a.eagerReducer===e?a.eagerState:e(i,a.action);else{var I={lane:g,action:a.action,eagerReducer:a.eagerReducer,eagerState:a.eagerState,next:null};s===null?(o=s=I,r=i):s=s.next=I,je.lanes|=g,hl|=g}a=a.next}while(a!==null&&a!==n);s===null?r=i:s.next=o,ci(i,A.memoizedState)||(Fi=!0),A.memoizedState=i,A.baseState=r,A.baseQueue=s,t.lastRenderedState=i}return[A.memoizedState,t.dispatch]}function Bg(e){var A=es(),t=A.queue;if(t===null)throw Error(oA(311));t.lastRenderedReducer=e;var i=t.dispatch,n=t.pending,r=A.memoizedState;if(n!==null){t.pending=null;var o=n=n.next;do r=e(r,o.action),o=o.next;while(o!==n);ci(r,A.memoizedState)||(Fi=!0),A.memoizedState=r,A.baseQueue===null&&(A.baseState=r),t.lastRenderedState=r}return[r,i]}function Ow(e,A,t){var i=A._getVersion;i=i(A._source);var n=A._workInProgressVersionPrimary;if(n!==null?e=n===i:(e=e.mutableReadLanes,(e=(PI&e)===e)&&(A._workInProgressVersionPrimary=i,$s.push(A))),e)return t(A._source);throw $s.push(A),Error(oA(350))}function DN(e,A,t,i){var n=Ut;if(n===null)throw Error(oA(349));var r=A._getVersion,o=r(A._source),s=iI.current,a=s.useState(function(){return Ow(n,A,t)}),g=a[1],I=a[0];a=Et;var l=e.memoizedState,c=l.refs,C=c.getSnapshot,B=l.source;l=l.subscribe;var u=je;return e.memoizedState={refs:c,source:A,subscribe:i},s.useEffect(function(){c.getSnapshot=t,c.setSnapshot=g;var E=r(A._source);if(!ci(o,E)){E=t(A._source),ci(I,E)||(g(E),E=Dr(u),n.mutableReadLanes|=E&n.pendingLanes),E=n.mutableReadLanes,n.entangledLanes|=E;for(var h=n.entanglements,f=E;0t?98:t,function(){e(!0)}),No(97<\/script>",e=e.removeChild(e.firstChild)):typeof i.is=="string"?e=o.createElement(t,{is:i.is}):(e=o.createElement(t),t==="select"&&(o=e,i.multiple?o.multiple=!0:i.size&&(o.size=i.size))):e=o.createElementNS(e,t),e[ur]=A,e[sB]=i,MN(e,A,!1,!1),A.stateNode=e,o=iQ(t,i),t){case"dialog":ke("cancel",e),ke("close",e),n=i;break;case"iframe":case"object":case"embed":ke("load",e),n=i;break;case"video":case"audio":for(n=0;nRQ&&(A.flags|=64,r=!0,ug(i,!1),A.lanes=33554432)}else{if(!r)if(e=BB(o),e!==null){if(A.flags|=64,r=!0,t=e.updateQueue,t!==null&&(A.updateQueue=t,A.flags|=4),ug(i,!0),i.tail===null&&i.tailMode==="hidden"&&!o.alternate&&!In)return A=A.lastEffect=i.lastEffect,A!==null&&(A.nextEffect=null),null}else 2*Nt()-i.renderingStartTime>RQ&&t!==1073741824&&(A.flags|=64,r=!0,ug(i,!1),A.lanes=33554432);i.isBackwards?(o.sibling=A.child,A.child=o):(t=i.last,t!==null?t.sibling=o:A.child=o,i.last=o)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.lastEffect=A.lastEffect,i.renderingStartTime=Nt(),t.sibling=null,A=Ve.current,We(Ve,r?A&1|2:A&1),t):null;case 23:case 24:return ip(),e!==null&&e.memoizedState!==null!=(A.memoizedState!==null)&&i.mode!=="unstable-defer-without-hiding"&&(A.flags|=4),null}throw Error(oA(156,A.tag))}function lU(e){switch(e.tag){case 1:zt(e.type)&&aB();var A=e.flags;return A&4096?(e.flags=A&-4097|64,e):null;case 3:if(Ca(),Te(Wt),Te(Gt),V0(),A=e.flags,(A&64)!==0)throw Error(oA(285));return e.flags=A&-4097|64,e;case 5:return K0(e),null;case 13:return Te(Ve),A=e.flags,A&4096?(e.flags=A&-4097|64,e):null;case 19:return Te(Ve),null;case 4:return Ca(),null;case 10:return O0(e),null;case 23:case 24:return ip(),null;default:return null}}function $0(e,A){try{var t="",i=A;do t+=Yk(i),i=i.return;while(i);var n=t}catch(r){n=` -Error generating stack: `+r.message+` -`+r.stack}return{value:e,source:A,stack:n}}function mQ(e,A){try{console.error(A.value)}catch(t){setTimeout(function(){throw t})}}var cU=typeof WeakMap=="function"?WeakMap:Map;function UN(e,A,t){t=vr(-1,t),t.tag=3,t.payload={element:null};var i=A.value;return t.callback=function(){pB||(pB=!0,xQ=i),mQ(e,A)},t}function PN(e,A,t){t=vr(-1,t),t.tag=3;var i=e.type.getDerivedStateFromError;if(typeof i=="function"){var n=A.value;t.payload=function(){return mQ(e,A),i(n)}}var r=e.stateNode;return r!==null&&typeof r.componentDidCatch=="function"&&(t.callback=function(){typeof i!="function"&&(sn===null?sn=new Set([this]):sn.add(this),mQ(e,A));var o=A.stack;this.componentDidCatch(A.value,{componentStack:o!==null?o:""})}),t}var CU=typeof WeakSet=="function"?WeakSet:Set;function iv(e){var A=e.ref;if(A!==null)if(typeof A=="function")try{A(null)}catch(t){xr(e,t)}else A.current=null}function BU(e,A){switch(A.tag){case 0:case 11:case 15:case 22:return;case 1:if(A.flags&256&&e!==null){var t=e.memoizedProps,i=e.memoizedState;e=A.stateNode,A=e.getSnapshotBeforeUpdate(A.elementType===A.type?t:Ri(A.type,t),i),e.__reactInternalSnapshotBeforeUpdate=A}return;case 3:A.flags&256&&P0(A.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(oA(163))}function EU(e,A,t){switch(t.tag){case 0:case 11:case 15:case 22:if(A=t.updateQueue,A=A!==null?A.lastEffect:null,A!==null){e=A=A.next;do{if((e.tag&3)===3){var i=e.create;e.destroy=i()}e=e.next}while(e!==A)}if(A=t.updateQueue,A=A!==null?A.lastEffect:null,A!==null){e=A=A.next;do{var n=e;i=n.next,n=n.tag,(n&4)!==0&&(n&1)!==0&&(zN(t,e),mU(t,e)),e=i}while(e!==A)}return;case 1:e=t.stateNode,t.flags&4&&(A===null?e.componentDidMount():(i=t.elementType===t.type?A.memoizedProps:Ri(t.type,A.memoizedProps),e.componentDidUpdate(i,A.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),A=t.updateQueue,A!==null&&Tw(t,A,e);return;case 3:if(A=t.updateQueue,A!==null){if(e=null,t.child!==null)switch(t.child.tag){case 5:e=t.child.stateNode;break;case 1:e=t.child.stateNode}Tw(t,A,e)}return;case 5:e=t.stateNode,A===null&&t.flags&4&&lN(t.type,t.memoizedProps)&&e.focus();return;case 6:return;case 4:return;case 12:return;case 13:t.memoizedState===null&&(t=t.alternate,t!==null&&(t=t.memoizedState,t!==null&&(t=t.dehydrated,t!==null&&OF(t))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(oA(163))}function nv(e,A){for(var t=e;;){if(t.tag===5){var i=t.stateNode;if(A)i=i.style,typeof i.setProperty=="function"?i.setProperty("display","none","important"):i.display="none";else{i=t.stateNode;var n=t.memoizedProps.style;n=n!=null&&n.hasOwnProperty("display")?n.display:null,i.style.display=bF("display",n)}}else if(t.tag===6)t.stateNode.nodeValue=A?"":t.memoizedProps;else if((t.tag!==23&&t.tag!==24||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return;t=t.return}t.sibling.return=t.return,t=t.sibling}}function rv(e,A){if(So&&typeof So.onCommitFiberUnmount=="function")try{So.onCommitFiberUnmount(H0,A)}catch{}switch(A.tag){case 0:case 11:case 14:case 15:case 22:if(e=A.updateQueue,e!==null&&(e=e.lastEffect,e!==null)){var t=e=e.next;do{var i=t,n=i.destroy;if(i=i.tag,n!==void 0)if((i&4)!==0)zN(A,t);else{i=A;try{n()}catch(r){xr(i,r)}}t=t.next}while(t!==e)}break;case 1:if(iv(A),e=A.stateNode,typeof e.componentWillUnmount=="function")try{e.props=A.memoizedProps,e.state=A.memoizedState,e.componentWillUnmount()}catch(r){xr(A,r)}break;case 5:iv(A);break;case 4:HN(e,A)}}function ov(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function sv(e){return e.tag===5||e.tag===3||e.tag===4}function av(e){A:{for(var A=e.return;A!==null;){if(sv(A))break A;A=A.return}throw Error(oA(160))}var t=A;switch(A=t.stateNode,t.tag){case 5:var i=!1;break;case 3:A=A.containerInfo,i=!0;break;case 4:A=A.containerInfo,i=!0;break;default:throw Error(oA(161))}t.flags&16&&(RI(A,""),t.flags&=-17);A:e:for(t=e;;){for(;t.sibling===null;){if(t.return===null||sv(t.return)){t=null;break A}t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2)){t=t.stateNode;break A}}i?wQ(e,t,A):vQ(e,t,A)}function wQ(e,A,t){var i=e.tag,n=i===5||i===6;if(n)e=n?e.stateNode:e.stateNode.instance,A?t.nodeType===8?t.parentNode.insertBefore(e,A):t.insertBefore(e,A):(t.nodeType===8?(A=t.parentNode,A.insertBefore(e,t)):(A=t,A.appendChild(e)),t=t._reactRootContainer,t!=null||A.onclick!==null||(A.onclick=oB));else if(i!==4&&(e=e.child,e!==null))for(wQ(e,A,t),e=e.sibling;e!==null;)wQ(e,A,t),e=e.sibling}function vQ(e,A,t){var i=e.tag,n=i===5||i===6;if(n)e=n?e.stateNode:e.stateNode.instance,A?t.insertBefore(e,A):t.appendChild(e);else if(i!==4&&(e=e.child,e!==null))for(vQ(e,A,t),e=e.sibling;e!==null;)vQ(e,A,t),e=e.sibling}function HN(e,A){for(var t=A,i=!1,n,r;;){if(!i){i=t.return;A:for(;;){if(i===null)throw Error(oA(160));switch(n=i.stateNode,i.tag){case 5:r=!1;break A;case 3:n=n.containerInfo,r=!0;break A;case 4:n=n.containerInfo,r=!0;break A}i=i.return}i=!0}if(t.tag===5||t.tag===6){A:for(var o=e,s=t,a=s;;)if(rv(o,a),a.child!==null&&a.tag!==4)a.child.return=a,a=a.child;else{if(a===s)break A;for(;a.sibling===null;){if(a.return===null||a.return===s)break A;a=a.return}a.sibling.return=a.return,a=a.sibling}r?(o=n,s=t.stateNode,o.nodeType===8?o.parentNode.removeChild(s):o.removeChild(s)):n.removeChild(t.stateNode)}else if(t.tag===4){if(t.child!==null){n=t.stateNode.containerInfo,r=!0,t.child.return=t,t=t.child;continue}}else if(rv(e,t),t.child!==null){t.child.return=t,t=t.child;continue}if(t===A)break;for(;t.sibling===null;){if(t.return===null||t.return===A)return;t=t.return,t.tag===4&&(i=!1)}t.sibling.return=t.return,t=t.sibling}}function th(e,A){switch(A.tag){case 0:case 11:case 14:case 15:case 22:var t=A.updateQueue;if(t=t!==null?t.lastEffect:null,t!==null){var i=t=t.next;do(i.tag&3)===3&&(e=i.destroy,i.destroy=void 0,e!==void 0&&e()),i=i.next;while(i!==t)}return;case 1:return;case 5:if(t=A.stateNode,t!=null){i=A.memoizedProps;var n=e!==null?e.memoizedProps:i;e=A.type;var r=A.updateQueue;if(A.updateQueue=null,r!==null){for(t[sB]=i,e==="input"&&i.type==="radio"&&i.name!=null&&xF(t,i),iQ(e,n),A=iQ(e,i),n=0;nn&&(n=o),t&=~r}if(t=n,t=Nt()-t,t=(120>t?120:480>t?480:1080>t?1080:1920>t?1920:3e3>t?3e3:4320>t?4320:1960*hU(t/1960))-t,10 component higher in the tree to provide a loading indicator or placeholder to display.`)}ht!==5&&(ht=2),a=$0(a,s),c=o;do{switch(c.tag){case 3:r=a,c.flags|=4096,A&=-A,c.lanes|=A;var w=UN(c,r,A);kw(c,w);break A;case 1:r=a;var m=c.type,v=c.stateNode;if((c.flags&64)===0&&(typeof m.getDerivedStateFromError=="function"||v!==null&&typeof v.componentDidCatch=="function"&&(sn===null||!sn.has(v)))){c.flags|=4096,A&=-A,c.lanes|=A;var x=PN(c,r,A);kw(c,x);break A}}c=c.return}while(c!==null)}WN(t)}catch(D){A=D,tt===t&&t!==null&&(tt=t=t.return);continue}break}while(1)}function KN(){var e=dB.current;return dB.current=QB,e===null?QB:e}function Ug(e,A){var t=YA;YA|=16;var i=KN();Ut===e&&Lt===A||ea(e,A);do try{QU();break}catch(n){YN(e,n)}while(1);if(J0(),YA=t,dB.current=i,tt!==null)throw Error(oA(261));return Ut=null,Lt=0,ht}function QU(){for(;tt!==null;)VN(tt)}function dU(){for(;tt!==null&&!eU();)VN(tt)}function VN(e){var A=jN(e.alternate,e,Lo);e.memoizedProps=e.pendingProps,A===null?WN(e):tt=A,Ap.current=null}function WN(e){var A=e;do{var t=A.alternate;if(e=A.return,(A.flags&2048)===0){if(t=IU(t,A,Lo),t!==null){tt=t;return}if(t=A,t.tag!==24&&t.tag!==23||t.memoizedState===null||(Lo&1073741824)!==0||(t.mode&4)===0){for(var i=0,n=t.child;n!==null;)i|=n.lanes|n.childLanes,n=n.sibling;t.childLanes=i}e!==null&&(e.flags&2048)===0&&(e.firstEffect===null&&(e.firstEffect=A.firstEffect),A.lastEffect!==null&&(e.lastEffect!==null&&(e.lastEffect.nextEffect=A.firstEffect),e.lastEffect=A.lastEffect),1o&&(s=o,o=w,w=s),s=yw(f,w),r=yw(f,o),s&&r&&(d.rangeCount!==1||d.anchorNode!==s.node||d.anchorOffset!==s.offset||d.focusNode!==r.node||d.focusOffset!==r.offset)&&(Q=Q.createRange(),Q.setStart(s.node,s.offset),d.removeAllRanges(),w>o?(d.addRange(Q),d.extend(r.node,r.offset)):(Q.setEnd(r.node,r.offset),d.addRange(Q)))))),Q=[],d=f;d=d.parentNode;)d.nodeType===1&&Q.push({element:d,left:d.scrollLeft,top:d.scrollTop});for(typeof f.focus=="function"&&f.focus(),f=0;fNt()-tp?ea(e,0):ep|=t),Qi(e,A)}function SU(e,A){var t=e.stateNode;t!==null&&t.delete(A),A=0,A===0&&(A=e.mode,(A&2)===0?A=1:(A&4)===0?A=ca()===99?1:2:(xn===0&&(xn=Fa),A=xs(62914560&~xn),A===0&&(A=4194304))),t=ni(),e=vE(e,A),e!==null&&(hE(e,A,t),Qi(e,t))}var jN;jN=function(e,A,t){var i=A.lanes;if(e!==null)if(e.memoizedProps!==A.pendingProps||Wt.current)Fi=!0;else if((t&i)!==0)Fi=(e.flags&16384)!==0;else{switch(Fi=!1,A.tag){case 3:jw(A),$u();break;case 5:Hw(A);break;case 1:zt(A.type)&&wC(A);break;case 4:hQ(A,A.stateNode.containerInfo);break;case 10:i=A.memoizedProps.value;var n=A.type._context;We(gB,n._currentValue),n._currentValue=i;break;case 13:if(A.memoizedState!==null)return(t&A.child.childLanes)!==0?Xw(e,A,t):(We(Ve,Ve.current&1),A=bn(e,A,t),A!==null?A.sibling:null);We(Ve,Ve.current&1);break;case 19:if(i=(t&A.childLanes)!==0,(e.flags&64)!==0){if(i)return tv(e,A,t);A.flags|=64}if(n=A.memoizedState,n!==null&&(n.rendering=null,n.tail=null,n.lastEffect=null),We(Ve,Ve.current),i)break;return null;case 23:case 24:return A.lanes=0,Ah(e,A,t)}return bn(e,A,t)}else Fi=!1;switch(A.lanes=0,A.tag){case 2:if(i=A.type,e!==null&&(e.alternate=null,A.alternate=null,A.flags|=2),e=A.pendingProps,n=la(A,Gt.current),Zs(A,t),n=z0(null,A,i,e,n,t),A.flags|=1,typeof n=="object"&&n!==null&&typeof n.render=="function"&&n.$$typeof===void 0){if(A.tag=1,A.memoizedState=null,A.updateQueue=null,zt(i)){var r=!0;wC(A)}else r=!1;A.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,Y0(A);var o=i.getDerivedStateFromProps;typeof o=="function"&&cB(A,i,o,e),n.updater=mE,A.stateNode=n,n._reactInternals=A,uQ(A,i,e,t),A=pQ(null,A,i,!0,r,t)}else A.tag=0,Yt(null,A,n,t),A=A.child;return A;case 16:n=A.elementType;A:{switch(e!==null&&(e.alternate=null,A.alternate=null,A.flags|=2),e=A.pendingProps,r=n._init,n=r(n._payload),A.type=n,r=A.tag=RU(n),e=Ri(n,e),r){case 0:A=dQ(null,A,n,e,t);break A;case 1:A=zw(null,A,n,e,t);break A;case 11:A=Vw(null,A,n,e,t);break A;case 14:A=Ww(null,A,n,Ri(n.type,e),i,t);break A}throw Error(oA(306,n,""))}return A;case 0:return i=A.type,n=A.pendingProps,n=A.elementType===i?n:Ri(i,n),dQ(e,A,i,n,t);case 1:return i=A.type,n=A.pendingProps,n=A.elementType===i?n:Ri(i,n),zw(e,A,i,n,t);case 3:if(jw(A),i=A.updateQueue,e===null||i===null)throw Error(oA(282));if(i=A.pendingProps,n=A.memoizedState,n=n!==null?n.element:null,pN(e,A),kI(A,i,null,t),i=A.memoizedState.element,i===n)$u(),A=bn(e,A,t);else{if(n=A.stateNode,(r=n.hydrate)&&(hr=Xs(A.stateNode.containerInfo.firstChild),Ln=A,r=In=!0),r){if(e=n.mutableSourceEagerHydrationData,e!=null)for(n=0;n=0;I--){var l=i[I];l==="."?oh(i,I):l===".."?(oh(i,I),g++):g&&(oh(i,I),g--)}if(!o)for(;g--;g)i.unshift("..");o&&i[0]!==""&&(!i[0]||!yc(i[0]))&&i.unshift("");var c=i.join("/");return s&&c.substr(-1)!=="/"&&(c+="/"),c}var PU=!0,sh="Invariant failed";function ts(e,A){if(!e){if(PU)throw new Error(sh);var t=typeof A=="function"?A():A,i=t?sh+": "+t:sh;throw new Error(i)}}function aI(e){return e.charAt(0)==="/"?e:"/"+e}function cv(e){return e.charAt(0)==="/"?e.substr(1):e}function HU(e,A){return e.toLowerCase().indexOf(A.toLowerCase())===0&&"/?#".indexOf(e.charAt(A.length))!==-1}function t2(e,A){return HU(e,A)?e.substr(A.length):e}function i2(e){return e.charAt(e.length-1)==="/"?e.slice(0,-1):e}function qU(e){var A=e||"/",t="",i="",n=A.indexOf("#");n!==-1&&(i=A.substr(n),A=A.substr(0,n));var r=A.indexOf("?");return r!==-1&&(t=A.substr(r),A=A.substr(0,r)),{pathname:A,search:t==="?"?"":t,hash:i==="#"?"":i}}function Kt(e){var A=e.pathname,t=e.search,i=e.hash,n=A||"/";return t&&t!=="?"&&(n+=t.charAt(0)==="?"?t:"?"+t),i&&i!=="#"&&(n+=i.charAt(0)==="#"?i:"#"+i),n}function ii(e,A,t,i){var n;typeof e=="string"?(n=qU(e),n.state=A):(n=_({},e),n.pathname===void 0&&(n.pathname=""),n.search?n.search.charAt(0)!=="?"&&(n.search="?"+n.search):n.search="",n.hash?n.hash.charAt(0)!=="#"&&(n.hash="#"+n.hash):n.hash="",A!==void 0&&n.state===void 0&&(n.state=A));try{n.pathname=decodeURI(n.pathname)}catch(r){throw r instanceof URIError?new URIError('Pathname "'+n.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):r}return t&&(n.key=t),i?n.pathname?n.pathname.charAt(0)!=="/"&&(n.pathname=UU(n.pathname,i.pathname)):n.pathname=i.pathname:n.pathname||(n.pathname="/"),n}function ap(){var e=null;function A(o){return e=o,function(){e===o&&(e=null)}}function t(o,s,a,g){if(e!=null){var I=typeof e=="function"?e(o,s):e;typeof I=="string"?typeof a=="function"?a(I,g):g(!0):g(I!==!1)}else g(!0)}var i=[];function n(o){var s=!0;function a(){s&&o.apply(void 0,arguments)}return i.push(a),function(){s=!1,i=i.filter(function(g){return g!==a})}}function r(){for(var o=arguments.length,s=new Array(o),a=0;aP?W.splice(P,W.length-P,N):W.push(N),I({action:F,location:N,index:P,entries:W})}})}function E(x,D){var F="REPLACE",N=ii(x,D,l(),v.location);g.confirmTransitionTo(N,F,t,function(M){!M||(v.entries[v.index]=N,I({action:F,location:N}))})}function h(x){var D=hv(v.index+x,0,v.entries.length-1),F="POP",N=v.entries[D];g.confirmTransitionTo(N,F,t,function(M){M?I({action:F,location:N,index:D}):I()})}function f(){h(-1)}function Q(){h(1)}function d(x){var D=v.index+x;return D>=0&&D=0)&&(t[n]=e[n]);return t}var Ep=I2.exports,Q3={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},d3={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},p3={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},c2={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},up={};up[Ep.ForwardRef]=p3;up[Ep.Memo]=c2;function Qv(e){return Ep.isMemo(e)?c2:up[e.$$typeof]||Q3}var y3=Object.defineProperty,m3=Object.getOwnPropertyNames,dv=Object.getOwnPropertySymbols,w3=Object.getOwnPropertyDescriptor,v3=Object.getPrototypeOf,pv=Object.prototype;function C2(e,A,t){if(typeof A!="string"){if(pv){var i=v3(A);i&&i!==pv&&C2(e,i,t)}var n=m3(A);dv&&(n=n.concat(dv(A)));for(var r=Qv(e),o=Qv(A),s=0;s2&&arguments[2]!==void 0?arguments[2]:{clone:!0},i=t.clone?_({},e):e;return lh(e)&&lh(A)&&Object.keys(A).forEach(function(n){n!=="__proto__"&&(lh(A[n])&&n in e?i[n]=Go(e[n],A[n],t):i[n]=A[n])}),i}function y(e,A,t){return A in e?Object.defineProperty(e,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[A]=t,e}function Ea(e){for(var A="https://mui.com/production-error/?code="+e,t=1;t1&&arguments[1]!==void 0?arguments[1]:0,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;return Math.min(Math.max(A,e),t)}function X3(e){e=e.substr(1);var A=new RegExp(".{1,".concat(e.length>=6?2:1,"}"),"g"),t=e.match(A);return t&&t[0].length===1&&(t=t.map(function(i){return i+i})),t?"rgb".concat(t.length===4?"a":"","(").concat(t.map(function(i,n){return n<3?parseInt(i,16):Math.round(parseInt(i,16)/255*1e3)/1e3}).join(", "),")"):""}function Z3(e){e=_o(e);var A=e,t=A.values,i=t[0],n=t[1]/100,r=t[2]/100,o=n*Math.min(r,1-r),s=function(l){var c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:(l+i/30)%12;return r-o*Math.max(Math.min(c-3,9-c,1),-1)},a="rgb",g=[Math.round(s(0)*255),Math.round(s(8)*255),Math.round(s(4)*255)];return e.type==="hsla"&&(a+="a",g.push(t[3])),PE({type:a,values:g})}function _o(e){if(e.type)return e;if(e.charAt(0)==="#")return _o(X3(e));var A=e.indexOf("("),t=e.substring(0,A);if(["rgb","rgba","hsl","hsla"].indexOf(t)===-1)throw new Error(Ea(3,e));var i=e.substring(A+1,e.length-1).split(",");return i=i.map(function(n){return parseFloat(n)}),{type:t,values:i}}function PE(e){var A=e.type,t=e.values;return A.indexOf("rgb")!==-1?t=t.map(function(i,n){return n<3?parseInt(i,10):i}):A.indexOf("hsl")!==-1&&(t[1]="".concat(t[1],"%"),t[2]="".concat(t[2],"%")),"".concat(A,"(").concat(t.join(", "),")")}function $3(e,A){var t=kQ(e),i=kQ(A);return(Math.max(t,i)+.05)/(Math.min(t,i)+.05)}function kQ(e){e=_o(e);var A=e.type==="hsl"?_o(Z3(e)).values:e.values;return A=A.map(function(t){return t/=255,t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}),Number((.2126*A[0]+.7152*A[1]+.0722*A[2]).toFixed(3))}function AP(e){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.15;return kQ(e)>.5?qI(e,A):JI(e,A)}function ut(e,A){return e=_o(e),A=pp(A),(e.type==="rgb"||e.type==="hsl")&&(e.type+="a"),e.values[3]=A,PE(e)}function qI(e,A){if(e=_o(e),A=pp(A),e.type.indexOf("hsl")!==-1)e.values[2]*=1-A;else if(e.type.indexOf("rgb")!==-1)for(var t=0;t<3;t+=1)e.values[t]*=1-A;return PE(e)}function JI(e,A){if(e=_o(e),A=pp(A),e.type.indexOf("hsl")!==-1)e.values[2]+=(100-e.values[2])*A;else if(e.type.indexOf("rgb")!==-1)for(var t=0;t<3;t+=1)e.values[t]+=(255-e.values[t])*A;return PE(e)}function SA(e,A){if(e==null)return{};var t=$r(e,A),i,n;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0)&&(!Object.prototype.propertyIsEnumerable.call(e,i)||(t[i]=e[i]))}return t}var tr=["xs","sm","md","lg","xl"];function eP(e){var A=e.values,t=A===void 0?{xs:0,sm:600,md:960,lg:1280,xl:1920}:A,i=e.unit,n=i===void 0?"px":i,r=e.step,o=r===void 0?5:r,s=SA(e,["values","unit","step"]);function a(C){var B=typeof t[C]=="number"?t[C]:C;return"@media (min-width:".concat(B).concat(n,")")}function g(C){var B=tr.indexOf(C)+1,u=t[tr[B]];if(B===tr.length)return a("xs");var E=typeof u=="number"&&B>0?u:C;return"@media (max-width:".concat(E-o/100).concat(n,")")}function I(C,B){var u=tr.indexOf(B);return u===tr.length-1?a(C):"@media (min-width:".concat(typeof t[C]=="number"?t[C]:C).concat(n,") and ")+"(max-width:".concat((u!==-1&&typeof t[tr[u+1]]=="number"?t[tr[u+1]]:B)-o/100).concat(n,")")}function l(C){return I(C,C)}function c(C){return t[C]}return _({keys:tr,values:t,up:a,down:g,between:I,only:l,width:c},s)}function tP(e,A,t){var i;return _({gutters:function(){var r=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(` -`)),_({paddingLeft:A(2),paddingRight:A(2)},r,y({},e.up("sm"),_({paddingLeft:A(3),paddingRight:A(3)},r[e.up("sm")])))},toolbar:(i={minHeight:56},y(i,"".concat(e.up("xs")," and (orientation: landscape)"),{minHeight:48}),y(i,e.up("sm"),{minHeight:64}),i)},t)}var iP={black:"#000",white:"#fff"},vB=iP,nP={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"},OI=nP,rP={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"},ch=rP,oP={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"},Ch=oP,sP={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"},Bh=sP,aP={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"},Eh=aP,gP={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"},uh=gP,IP={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"},hh=IP,Sv={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:vB.white,default:OI[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}},fh={text:{primary:vB.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:OI[800],default:"#303030"},action:{active:vB.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 Dv(e,A,t,i){var n=i.light||i,r=i.dark||i*1.5;e[A]||(e.hasOwnProperty(t)?e[A]=e[t]:A==="light"?e.light=JI(e.main,n):A==="dark"&&(e.dark=qI(e.main,r)))}function lP(e){var A=e.primary,t=A===void 0?{light:ch[300],main:ch[500],dark:ch[700]}:A,i=e.secondary,n=i===void 0?{light:Ch.A200,main:Ch.A400,dark:Ch.A700}:i,r=e.error,o=r===void 0?{light:Bh[300],main:Bh[500],dark:Bh[700]}:r,s=e.warning,a=s===void 0?{light:Eh[300],main:Eh[500],dark:Eh[700]}:s,g=e.info,I=g===void 0?{light:uh[300],main:uh[500],dark:uh[700]}:g,l=e.success,c=l===void 0?{light:hh[300],main:hh[500],dark:hh[700]}:l,C=e.type,B=C===void 0?"light":C,u=e.contrastThreshold,E=u===void 0?3:u,h=e.tonalOffset,f=h===void 0?.2:h,Q=SA(e,["primary","secondary","error","warning","info","success","type","contrastThreshold","tonalOffset"]);function d(x){var D=$3(x,fh.text.primary)>=E?fh.text.primary:Sv.text.primary;return D}var w=function(D){var F=arguments.length>1&&arguments[1]!==void 0?arguments[1]:500,N=arguments.length>2&&arguments[2]!==void 0?arguments[2]:300,M=arguments.length>3&&arguments[3]!==void 0?arguments[3]:700;if(D=_({},D),!D.main&&D[F]&&(D.main=D[F]),!D.main)throw new Error(Ea(4,F));if(typeof D.main!="string")throw new Error(Ea(5,JSON.stringify(D.main)));return Dv(D,"light",N,f),Dv(D,"dark",M,f),D.contrastText||(D.contrastText=d(D.main)),D},m={dark:fh,light:Sv},v=Go(_({common:vB,type:B,primary:w(t),secondary:w(n,"A400","A200","A700"),error:w(o),warning:w(a),info:w(I),success:w(c),grey:OI,contrastThreshold:E,getContrastText:d,augmentColor:w,tonalOffset:f},m[B]),Q);return v}function y2(e){return Math.round(e*1e5)/1e5}function cP(e){return y2(e)}var Rv={textTransform:"uppercase"},xv='"Roboto", "Helvetica", "Arial", sans-serif';function CP(e,A){var t=typeof A=="function"?A(e):A,i=t.fontFamily,n=i===void 0?xv:i,r=t.fontSize,o=r===void 0?14:r,s=t.fontWeightLight,a=s===void 0?300:s,g=t.fontWeightRegular,I=g===void 0?400:g,l=t.fontWeightMedium,c=l===void 0?500:l,C=t.fontWeightBold,B=C===void 0?700:C,u=t.htmlFontSize,E=u===void 0?16:u,h=t.allVariants,f=t.pxToRem,Q=SA(t,["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"]),d=o/14,w=f||function(x){return"".concat(x/E*d,"rem")},m=function(D,F,N,M,U){return _({fontFamily:n,fontWeight:D,fontSize:w(F),lineHeight:N},n===xv?{letterSpacing:"".concat(y2(M/F),"em")}:{},U,h)},v={h1:m(a,96,1.167,-1.5),h2:m(a,60,1.2,-.5),h3:m(I,48,1.167,0),h4:m(I,34,1.235,.25),h5:m(I,24,1.334,0),h6:m(c,20,1.6,.15),subtitle1:m(I,16,1.75,.15),subtitle2:m(c,14,1.57,.1),body1:m(I,16,1.5,.15),body2:m(I,14,1.43,.15),button:m(c,14,1.75,.4,Rv),caption:m(I,12,1.66,.4),overline:m(I,12,2.66,1,Rv)};return Go(_({htmlFontSize:E,pxToRem:w,round:cP,fontFamily:n,fontSize:o,fontWeightLight:a,fontWeightRegular:I,fontWeightMedium:c,fontWeightBold:B},v),Q,{clone:!1})}var BP=.2,EP=.14,uP=.12;function Pe(){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(BP,")"),"".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(EP,")"),"".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(uP,")")].join(",")}var hP=["none",Pe(0,2,1,-1,0,1,1,0,0,1,3,0),Pe(0,3,1,-2,0,2,2,0,0,1,5,0),Pe(0,3,3,-2,0,3,4,0,0,1,8,0),Pe(0,2,4,-1,0,4,5,0,0,1,10,0),Pe(0,3,5,-1,0,5,8,0,0,1,14,0),Pe(0,3,5,-1,0,6,10,0,0,1,18,0),Pe(0,4,5,-2,0,7,10,1,0,2,16,1),Pe(0,5,5,-3,0,8,10,1,0,3,14,2),Pe(0,5,6,-3,0,9,12,1,0,3,16,2),Pe(0,6,6,-3,0,10,14,1,0,4,18,3),Pe(0,6,7,-4,0,11,15,1,0,4,20,3),Pe(0,7,8,-4,0,12,17,2,0,5,22,4),Pe(0,7,8,-4,0,13,19,2,0,5,24,4),Pe(0,7,9,-4,0,14,21,2,0,5,26,4),Pe(0,8,9,-5,0,15,22,2,0,6,28,5),Pe(0,8,10,-5,0,16,24,2,0,6,30,5),Pe(0,8,11,-5,0,17,26,2,0,6,32,5),Pe(0,9,11,-5,0,18,28,2,0,7,34,6),Pe(0,9,12,-6,0,19,29,2,0,7,36,6),Pe(0,10,13,-6,0,20,31,3,0,8,38,7),Pe(0,10,13,-6,0,21,33,3,0,8,40,7),Pe(0,10,14,-6,0,22,35,3,0,8,42,7),Pe(0,11,14,-7,0,23,36,3,0,9,44,8),Pe(0,11,15,-7,0,24,38,3,0,9,46,8)],fP=hP,QP={borderRadius:4},dP=QP;function TQ(e,A){(A==null||A>e.length)&&(A=e.length);for(var t=0,i=new Array(A);t2)if(bv[e])e=bv[e];else return[e];var A=e.split(""),t=Fl(A,2),i=t[0],n=t[1],r=J4[i],o=O4[n]||"";return Array.isArray(o)?o.map(function(s){return r+s}):[r+o]}),v2=["m","mt","mr","mb","ml","mx","my","p","pt","pr","pb","pl","px","py","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY"];function S2(e){var A=e.spacing||8;return typeof A=="number"?function(t){return A*t}:Array.isArray(A)?function(t){return A[t]}:typeof A=="function"?A:function(){}}function K4(e,A){if(typeof A=="string"||A==null)return A;var t=Math.abs(A),i=e(t);return A>=0?i:typeof i=="number"?-i:"-".concat(i)}function V4(e,A){return function(t){return e.reduce(function(i,n){return i[n]=K4(A,t),i},{})}}function yp(e){var A=e.theme,t=S2(A);return Object.keys(e).map(function(i){if(v2.indexOf(i)===-1)return null;var n=Y4(i),r=V4(n,t),o=e[i];return w2(e,o,r)}).reduce(SB,{})}yp.propTypes={};yp.filterProps=v2;var W4=mA({prop:"fontFamily",themeKey:"typography"}),z4=mA({prop:"fontSize",themeKey:"typography"}),j4=mA({prop:"fontStyle",themeKey:"typography"}),X4=mA({prop:"fontWeight",themeKey:"typography"}),Z4=mA({prop:"letterSpacing"}),$4=mA({prop:"lineHeight"}),A8=mA({prop:"textAlign"}),e8=On(W4,z4,j4,X4,Z4,$4,A8),t8=e8;function i8(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:8;if(e.mui)return e;var A=S2({spacing:e}),t=function(){for(var n=arguments.length,r=new Array(n),o=0;o0&&arguments[0]!==void 0?arguments[0]:["all"],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=t.duration,n=i===void 0?DB.standard:i,r=t.easing,o=r===void 0?Gv.easeInOut:r,s=t.delay,a=s===void 0?0:s;return SA(t,["duration","easing","delay"]),(Array.isArray(A)?A:[A]).map(function(g){return"".concat(g," ").concat(typeof n=="string"?n:_v(n)," ").concat(o," ").concat(typeof a=="string"?a:_v(a))}).join(",")},getAutoHeightDuration:function(A){if(!A)return 0;var t=A/36;return Math.round((4+15*Math.pow(t,.25)+t/5)*10)}},r8={mobileStepper:1e3,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500},D2=r8;function R2(){for(var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},A=e.breakpoints,t=A===void 0?{}:A,i=e.mixins,n=i===void 0?{}:i,r=e.palette,o=r===void 0?{}:r,s=e.spacing,a=e.typography,g=a===void 0?{}:a,I=SA(e,["breakpoints","mixins","palette","spacing","typography"]),l=lP(o),c=eP(t),C=i8(s),B=Go({breakpoints:c,direction:"ltr",mixins:tP(c,C,n),overrides:{},palette:l,props:{},shadows:fP,typography:CP(l,g),spacing:C,shape:dP,transitions:n8,zIndex:D2},I),u=arguments.length,E=new Array(u>1?u-1:0),h=1;h0&&arguments[0]!==void 0?arguments[0]:{},A=e.disableGlobal,t=A===void 0?!1:A,i=e.productionPrefix,n=i===void 0?"jss":i,r=e.seed,o=r===void 0?"":r,s=o===""?"":"".concat(o,"-"),a=0,g=function(){return a+=1,a};return function(I,l){var c=l.options.name;if(c&&c.indexOf("Mui")===0&&!l.options.link&&!t){if(s8.indexOf(I.key)!==-1)return"Mui-".concat(I.key);var C="".concat(s).concat(c,"-").concat(I.key);return!l.options.theme[x2]||o!==""?C:"".concat(C,"-").concat(g())}return"".concat(s).concat(n).concat(g())}}function F2(e){var A=e.theme,t=e.name,i=e.props;if(!A||!A.props||!A.props[t])return i;var n=A.props[t],r;for(r in n)i[r]===void 0&&(i[r]=n[r]);return i}var Mv=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Nl=(typeof window=="undefined"?"undefined":Mv(window))==="object"&&(typeof document=="undefined"?"undefined":Mv(document))==="object"&&document.nodeType===9;function kv(e,A){for(var t=0;t<+~=|^:(),"'`\s])/g,Uv=typeof CSS!="undefined"&&CSS.escape,vp=function(e){return Uv?Uv(e):e.replace(I8,"\\$1")},N2=function(){function e(t,i,n){this.type="style",this.isProcessed=!1;var r=n.sheet,o=n.Renderer;this.key=t,this.options=n,this.style=i,r?this.renderer=r.renderer:o&&(this.renderer=new o)}var A=e.prototype;return A.prop=function(i,n,r){if(n===void 0)return this.style[i];var o=r?r.force:!1;if(!o&&this.style[i]===n)return this;var s=n;(!r||r.process!==!1)&&(s=this.options.jss.plugins.onChangeValue(n,i,this));var a=s==null||s===!1,g=i in this.style;if(a&&!g&&!o)return this;var I=a&&g;if(I?delete this.style[i]:this.style[i]=s,this.renderable&&this.renderer)return I?this.renderer.removeProperty(this.renderable,i):this.renderer.setProperty(this.renderable,i,s),this;var l=this.options.sheet;return l&&l.attached,this},e}(),HQ=function(e){jt(A,e);function A(i,n,r){var o;o=e.call(this,i,n,r)||this;var s=r.selector,a=r.scoped,g=r.sheet,I=r.generateId;return s?o.selectorText=s:a!==!1&&(o.id=I(UQ(UQ(o)),g),o.selectorText="."+vp(o.id)),o}var t=A.prototype;return t.applyTo=function(n){var r=this.renderer;if(r){var o=this.toJSON();for(var s in o)r.setProperty(n,s,o[s])}return this},t.toJSON=function(){var n={};for(var r in this.style){var o=this.style[r];typeof o!="object"?n[r]=o:Array.isArray(o)&&(n[r]=Do(o))}return n},t.toString=function(n){var r=this.options.sheet,o=r?r.options.link:!1,s=o?_({},n,{allowEmpty:!0}):n;return YI(this.selectorText,this.style,s)},mp(A,[{key:"selector",set:function(n){if(n!==this.selectorText){this.selectorText=n;var r=this.renderer,o=this.renderable;if(!(!o||!r)){var s=r.setSelector(o,n);s||r.replaceRule(o,this)}}},get:function(){return this.selectorText}}]),A}(N2),l8={onCreateRule:function(A,t,i){return A[0]==="@"||i.parent&&i.parent.type==="keyframes"?null:new HQ(A,t,i)}},Qh={indent:1,children:!0},c8=/@([\w-]+)/,C8=function(){function e(t,i,n){this.type="conditional",this.isProcessed=!1,this.key=t;var r=t.match(c8);this.at=r?r[1]:"unknown",this.query=n.name||"@"+this.at,this.options=n,this.rules=new HE(_({},n,{parent:this}));for(var o in i)this.rules.add(o,i[o]);this.rules.process()}var A=e.prototype;return A.getRule=function(i){return this.rules.get(i)},A.indexOf=function(i){return this.rules.indexOf(i)},A.addRule=function(i,n,r){var o=this.rules.add(i,n,r);return o?(this.options.jss.plugins.onProcessRule(o),o):null},A.replaceRule=function(i,n,r){var o=this.rules.replace(i,n,r);return o&&this.options.jss.plugins.onProcessRule(o),o},A.toString=function(i){i===void 0&&(i=Qh);var n=Ga(i),r=n.linebreak;if(i.indent==null&&(i.indent=Qh.indent),i.children==null&&(i.children=Qh.children),i.children===!1)return this.query+" {}";var o=this.rules.toString(i);return o?this.query+" {"+r+o+r+"}":""},e}(),B8=/@media|@supports\s+/,E8={onCreateRule:function(A,t,i){return B8.test(A)?new C8(A,t,i):null}},dh={indent:1,children:!0},u8=/@keyframes\s+([\w-]+)/,qQ=function(){function e(t,i,n){this.type="keyframes",this.at="@keyframes",this.isProcessed=!1;var r=t.match(u8);r&&r[1]?this.name=r[1]:this.name="noname",this.key=this.type+"-"+this.name,this.options=n;var o=n.scoped,s=n.sheet,a=n.generateId;this.id=o===!1?this.name:vp(a(this,s)),this.rules=new HE(_({},n,{parent:this}));for(var g in i)this.rules.add(g,i[g],_({},n,{parent:this}));this.rules.process()}var A=e.prototype;return A.toString=function(i){i===void 0&&(i=dh);var n=Ga(i),r=n.linebreak;if(i.indent==null&&(i.indent=dh.indent),i.children==null&&(i.children=dh.children),i.children===!1)return this.at+" "+this.id+" {}";var o=this.rules.toString(i);return o&&(o=""+r+o+r),this.at+" "+this.id+" {"+o+"}"},e}(),h8=/@keyframes\s+/,f8=/\$([\w-]+)/g,JQ=function(A,t){return typeof A=="string"?A.replace(f8,function(i,n){return n in t?t[n]:i}):A},Pv=function(A,t,i){var n=A[t],r=JQ(n,i);r!==n&&(A[t]=r)},Q8={onCreateRule:function(A,t,i){return typeof A=="string"&&h8.test(A)?new qQ(A,t,i):null},onProcessStyle:function(A,t,i){return t.type!=="style"||!i||("animation-name"in A&&Pv(A,"animation-name",i.keyframes),"animation"in A&&Pv(A,"animation",i.keyframes)),A},onChangeValue:function(A,t,i){var n=i.options.sheet;if(!n)return A;switch(t){case"animation":return JQ(A,n.keyframes);case"animation-name":return JQ(A,n.keyframes);default:return A}}},d8=function(e){jt(A,e);function A(){return e.apply(this,arguments)||this}var t=A.prototype;return t.toString=function(n){var r=this.options.sheet,o=r?r.options.link:!1,s=o?_({},n,{allowEmpty:!0}):n;return YI(this.key,this.style,s)},A}(N2),p8={onCreateRule:function(A,t,i){return i.parent&&i.parent.type==="keyframes"?new d8(A,t,i):null}},y8=function(){function e(t,i,n){this.type="font-face",this.at="@font-face",this.isProcessed=!1,this.key=t,this.style=i,this.options=n}var A=e.prototype;return A.toString=function(i){var n=Ga(i),r=n.linebreak;if(Array.isArray(this.style)){for(var o="",s=0;s=this.index){n.push(i);return}for(var o=0;or){n.splice(o,0,i);return}}},A.reset=function(){this.registry=[]},A.remove=function(i){var n=this.registry.indexOf(i);this.registry.splice(n,1)},A.toString=function(i){for(var n=i===void 0?{}:i,r=n.attached,o=$r(n,["attached"]),s=Ga(o),a=s.linebreak,g="",I=0;I-1?n.substr(0,r-1):n;A.style.setProperty(t,o,r>-1?"important":"")}}catch{return!1}return!0},_8=function(A,t){try{A.attributeStyleMap?A.attributeStyleMap.delete(t):A.style.removeProperty(t)}catch{}},M8=function(A,t){return A.selectorText=t,A.selectorText===t},G2=b2(function(){return document.querySelector("head")});function k8(e,A){for(var t=0;tA.index&&i.options.insertionPoint===A.insertionPoint)return i}return null}function T8(e,A){for(var t=e.length-1;t>=0;t--){var i=e[t];if(i.attached&&i.options.insertionPoint===A.insertionPoint)return i}return null}function U8(e){for(var A=G2(),t=0;t0){var t=k8(A,e);if(t&&t.renderer)return{parent:t.renderer.element.parentNode,node:t.renderer.element};if(t=T8(A,e),t&&t.renderer)return{parent:t.renderer.element.parentNode,node:t.renderer.element.nextSibling}}var i=e.insertionPoint;if(i&&typeof i=="string"){var n=U8(i);if(n)return{parent:n.parentNode,node:n.nextSibling}}return!1}function H8(e,A){var t=A.insertionPoint,i=P8(A);if(i!==!1&&i.parent){i.parent.insertBefore(e,i.node);return}if(t&&typeof t.nodeType=="number"){var n=t,r=n.parentNode;r&&r.insertBefore(e,n.nextSibling);return}G2().appendChild(e)}var q8=b2(function(){var e=document.querySelector('meta[property="csp-nonce"]');return e?e.getAttribute("content"):null}),Yv=function(A,t,i){try{"insertRule"in A?A.insertRule(t,i):"appendRule"in A&&A.appendRule(t)}catch{return!1}return A.cssRules[i]},Kv=function(A,t){var i=A.cssRules.length;return t===void 0||t>i?i:t},J8=function(){var A=document.createElement("style");return A.textContent=` -`,A},O8=function(){function e(t){this.getPropertyValue=b8,this.setProperty=G8,this.removeProperty=_8,this.setSelector=M8,this.hasInsertedRules=!1,this.cssRules=[],t&&gI.add(t),this.sheet=t;var i=this.sheet?this.sheet.options:{},n=i.media,r=i.meta,o=i.element;this.element=o||J8(),this.element.setAttribute("data-jss",""),n&&this.element.setAttribute("media",n),r&&this.element.setAttribute("data-meta",r);var s=q8();s&&this.element.setAttribute("nonce",s)}var A=e.prototype;return A.attach=function(){if(!(this.element.parentNode||!this.sheet)){H8(this.element,this.sheet.options);var i=Boolean(this.sheet&&this.sheet.deployed);this.hasInsertedRules&&i&&(this.hasInsertedRules=!1,this.deploy())}},A.detach=function(){if(!!this.sheet){var i=this.element.parentNode;i&&i.removeChild(this.element),this.sheet.options.link&&(this.cssRules=[],this.element.textContent=` -`)}},A.deploy=function(){var i=this.sheet;if(!!i){if(i.options.link){this.insertRules(i.rules);return}this.element.textContent=` -`+i.toString()+` -`}},A.insertRules=function(i,n){for(var r=0;r-1){var r=J2[A];if(!Array.isArray(r))return zA.js+Hr(r)in t?zA.css+r:!1;if(!n)return!1;for(var o=0;oi?1:-1:t.length-i.length};return{onProcessStyle:function(t,i){if(i.type!=="style")return t;for(var n={},r=Object.keys(t).sort(e),o=0;o0&&arguments[0]!==void 0?arguments[0]:{},A=e.baseClasses,t=e.newClasses;if(e.Component,!t)return A;var i=_({},A);return Object.keys(t).forEach(function(n){t[n]&&(i[n]="".concat(A[n]," ").concat(t[n]))}),i}var JH={set:function(A,t,i,n){var r=A.get(t);r||(r=new Map,A.set(t,r)),r.set(i,n)},get:function(A,t,i){var n=A.get(t);return n?n.get(i):void 0},delete:function(A,t,i){var n=A.get(t);n.delete(i)}},Us=JH,OH=vA.createContext(null),Y2=OH;function _a(){var e=vA.useContext(Y2);return e}var YH=_2(qH()),KH=a8(),VH=new Map,WH={disableGeneration:!1,generateClassName:KH,jss:YH,sheetsCache:null,sheetsManager:VH,sheetsRegistry:null},zH=vA.createContext(WH),jv=-1e9;function jH(){return jv+=1,jv}var XH={},ZH=XH;function $H(e){var A=typeof e=="function";return{create:function(i,n){var r;try{r=A?e(i):e}catch(a){throw a}if(!n||!i.overrides||!i.overrides[n])return r;var o=i.overrides[n],s=_({},r);return Object.keys(o).forEach(function(a){s[a]=Go(s[a],o[a])}),s},options:{}}}function Aq(e,A,t){var i=e.state,n=e.stylesOptions;if(n.disableGeneration)return A||{};i.cacheClasses||(i.cacheClasses={value:null,lastProp:null,lastJSS:{}});var r=!1;return i.classes!==i.cacheClasses.lastJSS&&(i.cacheClasses.lastJSS=i.classes,r=!0),A!==i.cacheClasses.lastProp&&(i.cacheClasses.lastProp=A,r=!0),r&&(i.cacheClasses.value=Rp({baseClasses:i.cacheClasses.lastJSS,newClasses:A,Component:t})),i.cacheClasses.value}function eq(e,A){var t=e.state,i=e.theme,n=e.stylesOptions,r=e.stylesCreator,o=e.name;if(!n.disableGeneration){var s=Us.get(n.sheetsManager,r,i);s||(s={refs:0,staticSheet:null,dynamicStyles:null},Us.set(n.sheetsManager,r,i,s));var a=_({},r.options,n,{theme:i,flip:typeof n.flip=="boolean"?n.flip:i.direction==="rtl"});a.generateId=a.serverGenerateClassName||a.generateClassName;var g=n.sheetsRegistry;if(s.refs===0){var I;n.sheetsCache&&(I=Us.get(n.sheetsCache,r,i));var l=r.create(i,o);I||(I=n.jss.createStyleSheet(l,_({link:!1},a)),I.attach(),n.sheetsCache&&Us.set(n.sheetsCache,r,i,I)),g&&g.add(I),s.staticSheet=I,s.dynamicStyles=M2(l)}if(s.dynamicStyles){var c=n.jss.createStyleSheet(s.dynamicStyles,_({link:!0},a));c.update(A),c.attach(),t.dynamicSheet=c,t.classes=Rp({baseClasses:s.staticSheet.classes,newClasses:c.classes}),g&&g.add(c)}else t.classes=s.staticSheet.classes;s.refs+=1}}function tq(e,A){var t=e.state;t.dynamicSheet&&t.dynamicSheet.update(A)}function iq(e){var A=e.state,t=e.theme,i=e.stylesOptions,n=e.stylesCreator;if(!i.disableGeneration){var r=Us.get(i.sheetsManager,n,t);r.refs-=1;var o=i.sheetsRegistry;r.refs===0&&(Us.delete(i.sheetsManager,n,t),i.jss.removeStyleSheet(r.staticSheet),o&&o.remove(r.staticSheet)),A.dynamicSheet&&(i.jss.removeStyleSheet(A.dynamicSheet),o&&o.remove(A.dynamicSheet))}}function nq(e,A){var t=vA.useRef([]),i,n=vA.useMemo(function(){return{}},A);t.current!==n&&(t.current=n,i=e()),vA.useEffect(function(){return function(){i&&i()}},[n])}function xp(e){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=A.name,i=A.classNamePrefix,n=A.Component,r=A.defaultTheme,o=r===void 0?ZH:r,s=SA(A,["name","classNamePrefix","Component","defaultTheme"]),a=$H(e),g=t||i||"makeStyles";a.options={index:jH(),name:t,meta:g,classNamePrefix:g};var I=function(){var c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},C=_a()||o,B=_({},vA.useContext(zH),s),u=vA.useRef(),E=vA.useRef();nq(function(){var f={name:t,state:{},stylesCreator:a,stylesOptions:B,theme:C};return eq(f,c),E.current=!1,u.current=f,function(){iq(f)}},[C,a]),vA.useEffect(function(){E.current&&tq(u.current,c),E.current=!0});var h=Aq(u.current,c.classes,n);return h};return I}function rq(e,A){if(!(e instanceof A))throw new TypeError("Cannot call a class as a function")}function K2(e){var A,t,i="";if(typeof e=="string"||typeof e=="number")i+=e;else if(typeof e=="object")if(Array.isArray(e))for(A=0;A1&&arguments[1]!==void 0?arguments[1]:{},r=n.name,o=SA(n,["name"]),s=r,a=typeof i=="function"?function(c){return{root:function(B){return i(_({theme:c},B))}}}:{root:i},g=xp(a,_({Component:e,name:r||e.displayName,classNamePrefix:s},o)),I;i.filterProps&&(I=i.filterProps,delete i.filterProps),i.propTypes&&(i.propTypes,delete i.propTypes);var l=vA.forwardRef(function(C,B){var u=C.children,E=C.className,h=C.clone,f=C.component,Q=SA(C,["children","className","clone","component"]),d=g(C),w=yA(d.root,E),m=Q;if(I&&(m=oq(m,I)),h)return vA.cloneElement(u,_({className:yA(u.props.className,w)},m));if(typeof u=="function")return u(_({className:w},m));var v=f||e;return vA.createElement(v,_({ref:B,className:w},m),u)});return B2(l,e),l};return A}function aq(e,A){if(typeof A=="function"){var t=A(e);return t}return _({},e,A)}function Xv(e){var A=e.children,t=e.theme,i=_a(),n=vA.useMemo(function(){var r=i===null?t:aq(i,t);return r!=null&&(r[x2]=i!==null),r},[t,i]);return vA.createElement(Y2.Provider,{value:n},A)}var gq=function(A){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return function(i){var n=t.defaultTheme,r=t.withTheme,o=r===void 0?!1:r,s=t.name,a=SA(t,["defaultTheme","withTheme","name"]),g=s,I=xp(A,_({defaultTheme:n,Component:i,name:s||i.displayName,classNamePrefix:g},a)),l=vA.forwardRef(function(C,B){C.classes;var u=C.innerRef,E=SA(C,["classes","innerRef"]),h=I(_({},i.defaultProps,C)),f,Q=E;return(typeof s=="string"||o)&&(f=_a()||n,s&&(Q=F2({theme:f,name:s,props:E})),o&&!Q.theme&&(Q.theme=f)),vA.createElement(i,_({ref:u||B,classes:h},Q))});return B2(l,i),l}},Iq=gq;function V2(e){return e}var lq=R2(),qE=lq;function is(e){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return xp(e,_({defaultTheme:qE},A))}var cq=function(A){var t=sq(A);return function(i,n){return t(i,_({defaultTheme:qE},n))}},Cq=cq;function Ll(){var e=_a()||qE;return e}function ee(e,A){return Iq(e,_({defaultTheme:qE},A))}const Bq="https://viv-demo.storage.googleapis.com",Eq=[{path:"Vanderbilt-Spraggins-Kidney-MxIF.ome.tif",description:"OME-TIFF Kidney mxIF"},{path:"12448_G1HR_Mesh003.ome.tif",description:"OME-TIFF Covid-19 Primary Gut Epithelial Stem Cells"},{path:"LuCa-7color_Scan1/",description:"Perkin Elmer LuCa-7color_Scan1.qptiff"},{path:"LuCa-7color_3x3component_data.ome.tif",description:"Perkin Elmer LuCa-7color_3x3component_data.qptiff"},{path:"2018-12-18_ASY_H2B_bud_05_3D_8_angles.ome.tif",description:"idr0077"},{path:"brain.pyramid.ome.tif",description:"idr0085"},{path:"idr0106.pyramid.ome.tif",description:"idr0106"}];var Zv=Eq.map(e=>({urlOrFile:`${Bq}/${e.path}`,description:e.description}));function uq(e){let A;const t=new Set,i=(g,I)=>{const l=typeof g=="function"?g(A):g;if(l!==A){const c=A;A=I?l:Object.assign({},A,l),t.forEach(C=>C(A,c))}},n=()=>A,r=(g,I=n,l=Object.is)=>{console.warn("[DEPRECATED] Please use `subscribeWithSelector` middleware");let c=I(A);function C(){const B=I(A);if(!l(c,B)){const u=c;g(c=B,u)}}return t.add(C),()=>t.delete(C)},a={setState:i,getState:n,subscribe:(g,I,l)=>I||l?r(g,I,l):(t.add(g),()=>t.delete(g)),destroy:()=>t.clear()};return A=e(i,n,a),a}const hq=typeof window=="undefined"||!window.navigator||/ServerSideRendering|^Deno\//.test(window.navigator.userAgent),$v=hq?p.exports.useEffect:p.exports.useLayoutEffect;function Fp(e){const A=typeof e=="function"?uq(e):e,t=(i=A.getState,n=Object.is)=>{const[,r]=p.exports.useReducer(E=>E+1,0),o=A.getState(),s=p.exports.useRef(o),a=p.exports.useRef(i),g=p.exports.useRef(n),I=p.exports.useRef(!1),l=p.exports.useRef();l.current===void 0&&(l.current=i(o));let c,C=!1;(s.current!==o||a.current!==i||g.current!==n||I.current)&&(c=i(o),C=!n(l.current,c)),$v(()=>{C&&(l.current=c),s.current=o,a.current=i,g.current=n,I.current=!1});const B=p.exports.useRef(o);$v(()=>{const E=()=>{try{const f=A.getState(),Q=a.current(f);g.current(l.current,Q)||(s.current=f,l.current=Q,r())}catch{I.current=!0,r()}},h=A.subscribe(E);return A.getState()!==B.current&&E(),h},[]);const u=C?c:l.current;return p.exports.useDebugValue(u),u};return Object.assign(t,A),t[Symbol.iterator]=function(){console.warn("[useStore, api] = create() is deprecated and will be removed in v4");const i=[t,A];return{next(){const n=i.length<=0;return{value:i.shift(),done:n}}}},t}function xB(e,A){if(!e)throw new Error(A||"loader assertion failed.")}const Np=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser),AS=typeof process!="undefined"&&process.version&&/v([0-9]*)/.exec(process.version);AS&&parseFloat(AS[1]);const fq="3.2.7";function Un(e,A){if(!e)throw new Error(A||"loaders.gl assertion failed.")}const zQ=typeof process!="object"||String(process)!=="[object process]"||process.browser,Qq=typeof window!="undefined"&&typeof window.orientation!="undefined",eS=typeof process!="undefined"&&process.version&&/v([0-9]*)/.exec(process.version);eS&&parseFloat(eS[1]);class dq{constructor(A,t){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=A,this.workerThread=t,this.result=new Promise((i,n)=>{this._resolve=i,this._reject=n})}postMessage(A,t){this.workerThread.postMessage({source:"loaders.gl",type:A,payload:t})}done(A){Un(this.isRunning),this.isRunning=!1,this._resolve(A)}error(A){Un(this.isRunning),this.isRunning=!1,this._reject(A)}}class xh{}const Fh=new Map;function pq(e){Un(e.source&&!e.url||!e.source&&e.url);let A=Fh.get(e.source||e.url);return A||(e.url&&(A=yq(e.url),Fh.set(e.url,A)),e.source&&(A=W2(e.source),Fh.set(e.source,A))),Un(A),A}function yq(e){if(!e.startsWith("http"))return e;const A=mq(e);return W2(A)}function W2(e){const A=new Blob([e],{type:"application/javascript"});return URL.createObjectURL(A)}function mq(e){return`try { - importScripts('`.concat(e,`'); -} catch (error) { - console.error(error); - throw error; -}`)}function z2(e,A=!0,t){const i=t||new Set;if(e){if(tS(e))i.add(e);else if(tS(e.buffer))i.add(e.buffer);else if(!ArrayBuffer.isView(e)){if(A&&typeof e=="object")for(const n in e)z2(e[n],A,i)}}return t===void 0?Array.from(i):[]}function tS(e){return e?e instanceof ArrayBuffer||typeof MessagePort!="undefined"&&e instanceof MessagePort||typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap||typeof OffscreenCanvas!="undefined"&&e instanceof OffscreenCanvas:!1}const Nh=()=>{};class jQ{static isSupported(){return typeof Worker!="undefined"&&zQ||typeof xh!==void 0}constructor(A){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:t,source:i,url:n}=A;Un(i||n),this.name=t,this.source=i,this.url=n,this.onMessage=Nh,this.onError=r=>console.log(r),this.worker=zQ?this._createBrowserWorker():this._createNodeWorker()}destroy(){this.onMessage=Nh,this.onError=Nh,this.worker.terminate(),this.terminated=!0}get isRunning(){return Boolean(this.onMessage)}postMessage(A,t){t=t||z2(A),this.worker.postMessage(A,t)}_getErrorFromErrorEvent(A){let t="Failed to load ";return t+="worker ".concat(this.name," from ").concat(this.url,". "),A.message&&(t+="".concat(A.message," in ")),A.lineno&&(t+=":".concat(A.lineno,":").concat(A.colno)),new Error(t)}_createBrowserWorker(){this._loadableURL=pq({source:this.source,url:this.url});const A=new Worker(this._loadableURL,{name:this.name});return A.onmessage=t=>{t.data?this.onMessage(t.data):this.onError(new Error("No data received"))},A.onerror=t=>{this.onError(this._getErrorFromErrorEvent(t)),this.terminated=!0},A.onmessageerror=t=>console.error(t),A}_createNodeWorker(){let A;if(this.url){const i=this.url.includes(":/")||this.url.startsWith("/")?this.url:"./".concat(this.url);A=new xh(i,{eval:!1})}else if(this.source)A=new xh(this.source,{eval:!0});else throw new Error("no worker");return A.on("message",t=>{this.onMessage(t)}),A.on("error",t=>{this.onError(t)}),A.on("exit",t=>{}),A}}class wq{static isSupported(){return jQ.isSupported()}constructor(A){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=A.source,this.url=A.url,this.setProps(A)}destroy(){this.idleQueue.forEach(A=>A.destroy()),this.isDestroyed=!0}setProps(A){this.props={...this.props,...A},A.name!==void 0&&(this.name=A.name),A.maxConcurrency!==void 0&&(this.maxConcurrency=A.maxConcurrency),A.maxMobileConcurrency!==void 0&&(this.maxMobileConcurrency=A.maxMobileConcurrency),A.reuseWorkers!==void 0&&(this.reuseWorkers=A.reuseWorkers),A.onDebug!==void 0&&(this.onDebug=A.onDebug)}async startJob(A,t=(n,r,o)=>n.done(o),i=(n,r)=>n.error(r)){const n=new Promise(r=>(this.jobQueue.push({name:A,onMessage:t,onError:i,onStart:r}),this));return this._startQueuedJob(),await n}async _startQueuedJob(){if(!this.jobQueue.length)return;const A=this._getAvailableWorker();if(!A)return;const t=this.jobQueue.shift();if(t){this.onDebug({message:"Starting job",name:t.name,workerThread:A,backlog:this.jobQueue.length});const i=new dq(t.name,A);A.onMessage=n=>t.onMessage(i,n.type,n.payload),A.onError=n=>t.onError(i,n),t.onStart(i);try{await i.result}finally{this.returnWorkerToQueue(A)}}}returnWorkerToQueue(A){this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(A.destroy(),this.count--):this.idleQueue.push(A),this.isDestroyed||this._startQueuedJob()}_getAvailableWorker(){if(this.idleQueue.length>0)return this.idleQueue.shift()||null;if(this.count{}};class Fn{static isSupported(){return jQ.isSupported()}static getWorkerFarm(A={}){return Fn._workerFarm=Fn._workerFarm||new Fn({}),Fn._workerFarm.setProps(A),Fn._workerFarm}constructor(A){y(this,"props",void 0),y(this,"workerPools",new Map),this.props={...vq},this.setProps(A),this.workerPools=new Map}destroy(){for(const A of this.workerPools.values())A.destroy();this.workerPools=new Map}setProps(A){this.props={...this.props,...A};for(const t of this.workerPools.values())t.setProps(this._getWorkerPoolProps())}getWorkerPool(A){const{name:t,source:i,url:n}=A;let r=this.workerPools.get(t);return r||(r=new wq({name:t,source:i,url:n}),r.setProps(this._getWorkerPoolProps()),this.workerPools.set(t,r)),r}_getWorkerPoolProps(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}}y(Fn,"_workerFarm",void 0);const Sq="latest";function Dq(e,A={}){const t=A[e.id]||{},i="".concat(e.id,"-worker.js");let n=t.workerUrl;if(!n&&e.id==="compression"&&(n=A.workerUrl),A._workerType==="test"&&(n="modules/".concat(e.module,"/dist/").concat(i)),!n){let r=e.version;r==="latest"&&(r=Sq);const o=r?"@".concat(r):"";n="https://unpkg.com/@loaders.gl/".concat(e.module).concat(o,"/dist/").concat(i)}return Un(n),n}function Rq(e,A=fq){Un(e,"no worker provided");const t=e.version;return!(!A||!t)}var ia={};function xq(e,A){return!Fn.isSupported()||!zQ&&!(A!=null&&A._nodeWorkers)?!1:e.worker&&(A==null?void 0:A.worker)}async function Fq(e,A,t,i,n){const r=e.id,o=Dq(e,t),a=Fn.getWorkerFarm(t).getWorkerPool({name:r,url:o});t=JSON.parse(JSON.stringify(t)),i=JSON.parse(JSON.stringify(i||{}));const g=await a.startJob("process-on-worker",Nq.bind(null,n));return g.postMessage("process",{input:A,options:t,context:i}),await(await g.result).result}async function Nq(e,A,t,i){switch(t){case"done":A.done(i);break;case"error":A.error(new Error(i.error));break;case"process":const{id:n,input:r,options:o}=i;try{const s=await e(r,o);A.postMessage("done",{id:n,result:s})}catch(s){const a=s instanceof Error?s.message:"unknown error";A.postMessage("error",{id:n,error:a})}break;default:console.warn("parse-with-worker unknown message ".concat(t))}}function j2(e){return e&&typeof e=="object"&&e.isBuffer}function Lq(e){return j2(e)?new Uint8Array(e.buffer,e.byteOffset,e.length).slice().buffer:e}function X2(e){if(j2(e))return Lq(e);if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return e.byteOffset===0&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if(typeof e=="string"){const A=e;return new TextEncoder().encode(A).buffer}if(e&&typeof e=="object"&&e._toArrayBuffer)return e._toArrayBuffer();throw new Error("toArrayBuffer")}function bq(e,A,t){if(t=t||e.byteLength,e.byteLengthr instanceof ArrayBuffer?new Uint8Array(r):r),t=A.reduce((r,o)=>r+o.byteLength,0),i=new Uint8Array(t);let n=0;for(const r of A)i.set(r,n),n+=r.byteLength;return i.buffer}async function _q(e){const A=[];for await(const t of e)A.push(t);return Gq(...A)}function iS(){let e;if(typeof window!="undefined"&&window.performance)e=window.performance.now();else if(typeof process!="undefined"&&process.hrtime){const A=process.hrtime();e=A[0]*1e3+A[1]/1e6}else e=Date.now();return e}class nS{constructor(A,t){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=A,this.type=t,this.reset()}setSampleSize(A){return this.sampleSize=A,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(A){return this._count+=A,this._samples++,this._checkSampling(),this}subtractCount(A){return this._count-=A,this._samples++,this._checkSampling(),this}addTime(A){return this._time+=A,this.lastTiming=A,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=iS(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(iS()-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 JE{constructor(A){y(this,"id",void 0),y(this,"stats",{}),this.id=A.id,this.stats={},this._initializeStats(A.stats),Object.seal(this)}get(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"count";return this._getOrCreate({name:A,type:t})}get size(){return Object.keys(this.stats).length}reset(){for(const A in this.stats)this.stats[A].reset();return this}forEach(A){for(const t in this.stats)A(this.stats[t])}getTable(){const A={};return this.forEach(t=>{A[t.name]={time:t.time||0,count:t.count||0,average:t.getAverageTime()||0,hz:t.getHz()||0}}),A}_initializeStats(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).forEach(t=>this._getOrCreate(t))}_getOrCreate(A){if(!A||!A.name)return null;const{name:t,type:i}=A;return this.stats[t]||(A instanceof nS?this.stats[t]=A:this.stats[t]=new nS(t,i)),this.stats[t]}}const Mq="Queued Requests",kq="Active Requests",Tq="Cancelled Requests",Uq="Queued Requests Ever",Pq="Active Requests Ever",Hq={id:"request-scheduler",throttleRequests:!0,maxRequests:6};class qq{constructor(A={}){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={...Hq,...A},this.stats=new JE({id:this.props.id}),this.stats.get(Mq),this.stats.get(kq),this.stats.get(Tq),this.stats.get(Uq),this.stats.get(Pq)}scheduleRequest(A,t=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(A))return this.requestMap.get(A);const i={handle:A,priority:0,getPriority:t},n=new Promise(r=>(i.resolve=r,i));return this.requestQueue.push(i),this.requestMap.set(A,n),this._issueNewRequests(),n}_issueRequest(A){const{handle:t,resolve:i}=A;let n=!1;const r=()=>{n||(n=!0,this.requestMap.delete(t),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,i?i({done:r}):Promise.resolve({done:r})}_issueNewRequests(){this.deferredUpdate||(this.deferredUpdate=setTimeout(()=>this._issueNewRequestsAsync(),0))}_issueNewRequestsAsync(){this.deferredUpdate=null;const A=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(A!==0){this._updateAllRequests();for(let t=0;tt.priority-i.priority)}_updateRequest(A){return A.priority=A.getPriority(A.handle),A.priority<0?(A.resolve(null),!1):!0}}let Jq="";const rS={};function Oq(e){for(const A in rS)if(e.startsWith(A)){const t=rS[A];e=e.replace(A,t)}return!e.startsWith("http://")&&!e.startsWith("https://")&&(e="".concat(Jq).concat(e)),e}function Yq(e){const A=e&&e.lastIndexOf("/");return A>=0?e.substr(A+1):""}const Kq=e=>typeof e=="boolean",lI=e=>typeof e=="function",bl=e=>e!==null&&typeof e=="object",oS=e=>bl(e)&&e.constructor==={}.constructor,Vq=e=>e&&typeof e[Symbol.iterator]=="function",Wq=e=>e&&typeof e[Symbol.asyncIterator]=="function",Ma=e=>typeof Response!="undefined"&&e instanceof Response||e&&e.arrayBuffer&&e.text&&e.json,ka=e=>typeof Blob!="undefined"&&e instanceof Blob,zq=e=>e&&typeof e=="object"&&e.isBuffer,jq=e=>typeof ReadableStream!="undefined"&&e instanceof ReadableStream||bl(e)&&lI(e.tee)&&lI(e.cancel)&&lI(e.getReader),Xq=e=>bl(e)&&lI(e.read)&&lI(e.pipe)&&Kq(e.readable),Z2=e=>jq(e)||Xq(e),Zq=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,$q=/^([-\w.]+\/[-\w.+]+)/;function AJ(e){const A=$q.exec(e);return A?A[1]:e}function sS(e){const A=Zq.exec(e);return A?A[1]:""}const eJ=/\?.*/;function OE(e){if(Ma(e)){const A=Lh(e.url||""),t=e.headers.get("content-type")||"";return{url:A,type:AJ(t)||sS(A)}}return ka(e)?{url:Lh(e.name||""),type:e.type||""}:typeof e=="string"?{url:Lh(e),type:sS(e)}:{url:"",type:""}}function tJ(e){return Ma(e)?e.headers["content-length"]||-1:ka(e)?e.size:typeof e=="string"?e.length:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:-1}function Lh(e){return e.replace(eJ,"")}async function $2(e){if(Ma(e))return e;const A={},t=tJ(e);t>=0&&(A["content-length"]=String(t));const{url:i,type:n}=OE(e);n&&(A["content-type"]=n);const r=await rJ(e);r&&(A["x-first-bytes"]=r),typeof e=="string"&&(e=new TextEncoder().encode(e));const o=new Response(e,{headers:A});return Object.defineProperty(o,"url",{value:i}),o}async function iJ(e){if(!e.ok){const A=await nJ(e);throw new Error(A)}}async function nJ(e){let A="Failed to fetch resource ".concat(e.url," (").concat(e.status,"): ");try{const t=e.headers.get("Content-Type");let i=e.statusText;t.includes("application/json")&&(i+=" ".concat(await e.text())),A+=i,A=A.length>60?"".concat(A.slice(0,60),"..."):A}catch{}return A}async function rJ(e){if(typeof e=="string")return"data:,".concat(e.slice(0,5));if(e instanceof Blob){const t=e.slice(0,5);return await new Promise(i=>{const n=new FileReader;n.onload=r=>{var o;return i(r==null||(o=r.target)===null||o===void 0?void 0:o.result)},n.readAsDataURL(t)})}if(e instanceof ArrayBuffer){const t=e.slice(0,5),i=oJ(t);return"data:base64,".concat(i)}return null}function oJ(e){let A="";const t=new Uint8Array(e);for(let i=0;i=0)}function Yn(){return!(typeof process=="object"&&String(process)==="[object process]"&&!process.browser)||AL()}const NC={self:typeof self!="undefined"&&self,window:typeof window!="undefined"&&window,global:typeof global!="undefined"&&global,document:typeof document!="undefined"&&document,process:typeof process=="object"&&process},wc=NC.window||NC.self||NC.global,dg=NC.process||{},eL=typeof __VERSION__!="undefined"?__VERSION__:"untranspiled source";Yn();const bh=globalThis;function tL(e){if(!e&&!Yn())return"Node";if(AL(e))return"Electron";const t=e||(typeof navigator!="undefined"?navigator:{}).userAgent||"";if(t.indexOf("Edge")>-1)return"Edge";const i=t.indexOf("MSIE ")!==-1,n=t.indexOf("Trident/")!==-1;return i||n?"IE":bh.chrome?"Chrome":bh.safari?"Safari":bh.mozInnerScreenX?"Firefox":"Unknown"}function sJ(e){try{const A=window[e],t="__storage_test__";return A.setItem(t,t),A.removeItem(t),A}catch{return null}}class aJ{constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"sessionStorage";y(this,"storage",void 0),y(this,"id",void 0),y(this,"config",{}),this.storage=sJ(i),this.id=A,this.config={},Object.assign(this.config,t),this._loadConfiguration()}getConfiguration(){return this.config}setConfiguration(A){return this.config={},this.updateConfiguration(A)}updateConfiguration(A){if(Object.assign(this.config,A),this.storage){const t=JSON.stringify(this.config);this.storage.setItem(this.id,t)}return this}_loadConfiguration(){let A={};if(this.storage){const t=this.storage.getItem(this.id);A=t?JSON.parse(t):{}}return Object.assign(this.config,A),this}}function gJ(e){let A;return e<10?A="".concat(e.toFixed(2),"ms"):e<100?A="".concat(e.toFixed(1),"ms"):e<1e3?A="".concat(e.toFixed(0),"ms"):A="".concat((e/1e3).toFixed(2),"s"),A}function IJ(e){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:8;const t=Math.max(A-e.length,0);return"".concat(" ".repeat(t)).concat(e)}function Gh(e,A,t){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:600;const n=e.src.replace(/\(/g,"%28").replace(/\)/g,"%29");e.width>i&&(t=Math.min(t,i/e.width));const r=e.width*t,o=e.height*t,s=["font-size:1px;","padding:".concat(Math.floor(o/2),"px ").concat(Math.floor(r/2),"px;"),"line-height:".concat(o,"px;"),"background:url(".concat(n,");"),"background-size:".concat(r,"px ").concat(o,"px;"),"color:transparent;"].join("");return["".concat(A," %c+"),s]}let FB;(function(e){e[e.BLACK=30]="BLACK",e[e.RED=31]="RED",e[e.GREEN=32]="GREEN",e[e.YELLOW=33]="YELLOW",e[e.BLUE=34]="BLUE",e[e.MAGENTA=35]="MAGENTA",e[e.CYAN=36]="CYAN",e[e.WHITE=37]="WHITE",e[e.BRIGHT_BLACK=90]="BRIGHT_BLACK",e[e.BRIGHT_RED=91]="BRIGHT_RED",e[e.BRIGHT_GREEN=92]="BRIGHT_GREEN",e[e.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",e[e.BRIGHT_BLUE=94]="BRIGHT_BLUE",e[e.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",e[e.BRIGHT_CYAN=96]="BRIGHT_CYAN",e[e.BRIGHT_WHITE=97]="BRIGHT_WHITE"})(FB||(FB={}));function gS(e){return typeof e=="string"?FB[e.toUpperCase()]||FB.WHITE:e}function lJ(e,A,t){return!Yn&&typeof e=="string"&&(A&&(A=gS(A),e="\x1B[".concat(A,"m").concat(e,"\x1B[39m")),t&&(A=gS(t),e="\x1B[".concat(t+10,"m").concat(e,"\x1B[49m"))),e}function cJ(e){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:["constructor"];const t=Object.getPrototypeOf(e),i=Object.getOwnPropertyNames(t);for(const n of i)typeof e[n]=="function"&&(A.find(r=>n===r)||(e[n]=e[n].bind(e)))}function NB(e,A){if(!e)throw new Error(A||"Assertion failed")}function us(){let e;if(Yn&&"performance"in wc){var A,t;e=wc==null||(A=wc.performance)===null||A===void 0||(t=A.now)===null||t===void 0?void 0:t.call(A)}else if("hrtime"in dg){var i;const n=dg==null||(i=dg.hrtime)===null||i===void 0?void 0:i.call(dg);e=n[0]*1e3+n[1]/1e6}else e=Date.now();return e}const hs={debug:Yn&&console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},CJ={enabled:!0,level:0};function li(){}const IS={},lS={once:!0};class Gl{constructor(){let{id:A}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{id:""};y(this,"id",void 0),y(this,"VERSION",eL),y(this,"_startTs",us()),y(this,"_deltaTs",us()),y(this,"_storage",void 0),y(this,"userData",{}),y(this,"LOG_THROTTLE_TIMEOUT",0),this.id=A,this._storage=new aJ("__probe-".concat(this.id,"__"),CJ),this.userData={},this.timeStamp("".concat(this.id," started")),cJ(this),Object.seal(this)}set level(A){this.setLevel(A)}get level(){return this.getLevel()}isEnabled(){return this._storage.config.enabled}getLevel(){return this._storage.config.level}getTotal(){return Number((us()-this._startTs).toPrecision(10))}getDelta(){return Number((us()-this._deltaTs).toPrecision(10))}set priority(A){this.level=A}get priority(){return this.level}getPriority(){return this.level}enable(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return this._storage.updateConfiguration({enabled:A}),this}setLevel(A){return this._storage.updateConfiguration({level:A}),this}get(A){return this._storage.config[A]}set(A,t){this._storage.updateConfiguration({[A]:t})}settings(){console.table?console.table(this._storage.config):console.log(this._storage.config)}assert(A,t){NB(A,t)}warn(A){return this._getLogFunction(0,A,hs.warn,arguments,lS)}error(A){return this._getLogFunction(0,A,hs.error,arguments)}deprecated(A,t){return this.warn("`".concat(A,"` is deprecated and will be removed in a later version. Use `").concat(t,"` instead"))}removed(A,t){return this.error("`".concat(A,"` has been removed. Use `").concat(t,"` instead"))}probe(A,t){return this._getLogFunction(A,t,hs.log,arguments,{time:!0,once:!0})}log(A,t){return this._getLogFunction(A,t,hs.debug,arguments)}info(A,t){return this._getLogFunction(A,t,console.info,arguments)}once(A,t){for(var i=arguments.length,n=new Array(i>2?i-2:0),r=2;r2&&arguments[2]!==void 0?arguments[2]:{collapsed:!1};const n=cS({logLevel:A,message:t,opts:i}),{collapsed:r}=i;return n.method=(r?console.groupCollapsed:console.group)||console.info,this._getLogFunction(n)}groupCollapsed(A,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.group(A,t,Object.assign({},i,{collapsed:!0}))}groupEnd(A){return this._getLogFunction(A,"",console.groupEnd||li)}withGroup(A,t,i){this.group(A,t)();try{i()}finally{this.groupEnd(A)()}}trace(){console.trace&&console.trace()}_shouldLog(A){return this.isEnabled()&&this.getLevel()>=iL(A)}_getLogFunction(A,t,i,n,r){if(this._shouldLog(A)){r=cS({logLevel:A,message:t,args:n,opts:r}),i=i||r.method,NB(i),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=us();const o=r.tag||r.message;if(r.once)if(!IS[o])IS[o]=us();else return li;return t=BJ(this.id,r.message,r),i.bind(console,t,...r.args)}return li}}y(Gl,"VERSION",eL);function iL(e){if(!e)return 0;let A;switch(typeof e){case"number":A=e;break;case"object":A=e.logLevel||e.priority||0;break;default:return 0}return NB(Number.isFinite(A)&&A>=0),A}function cS(e){const{logLevel:A,message:t}=e;e.logLevel=iL(A);const i=e.args?Array.from(e.args):[];for(;i.length&&i.shift()!==t;);switch(typeof A){case"string":case"function":t!==void 0&&i.unshift(t),e.message=A;break;case"object":Object.assign(e,A);break}typeof e.message=="function"&&(e.message=e.message());const n=typeof e.message;return NB(n==="string"||n==="object"),Object.assign(e,{args:i},e.opts)}function BJ(e,A,t){if(typeof A=="string"){const i=t.time?IJ(gJ(t.total)):"";A=t.time?"".concat(e,": ").concat(i," ").concat(A):"".concat(e,": ").concat(A),A=lJ(A,t.color,t.background)}return A}function EJ(e){let{image:A,message:t="",scale:i=1}=e;return(void 0)({image:A,message:t,scale:i}),li}function uJ(e){let{image:A,message:t="",scale:i=1}=e;if(typeof A=="string"){const r=new Image;return r.onload=()=>{const o=Gh(r,t,i);console.log(...o)},r.src=A,li}const n=A.nodeName||"";if(n.toLowerCase()==="img")return console.log(...Gh(A,t,i)),li;if(n.toLowerCase()==="canvas"){const r=new Image;return r.onload=()=>console.log(...Gh(r,t,i)),r.src=A.toDataURL(),li}return li}function hJ(e){for(const A in e)for(const t in e[A])return t||"untitled";return"empty"}const CS=new Gl({id:"loaders.gl"});class fJ{log(){return()=>{}}info(){return()=>{}}warn(){return()=>{}}error(){return()=>{}}}class QJ{constructor(){y(this,"console",void 0),this.console=console}log(...A){return this.console.log.bind(this.console,...A)}info(...A){return this.console.info.bind(this.console,...A)}warn(...A){return this.console.warn.bind(this.console,...A)}error(...A){return this.console.error.bind(this.console,...A)}}const nL={fetch:null,mimeType:void 0,nothrow:!1,log:new QJ,CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:Np,_nodeWorkers:!1,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]},dJ={throws:"nothrow",dataType:"(no longer used)",uri:"baseUri",method:"fetch.method",headers:"fetch.headers",body:"fetch.body",mode:"fetch.mode",credentials:"fetch.credentials",cache:"fetch.cache",redirect:"fetch.redirect",referrer:"fetch.referrer",referrerPolicy:"fetch.referrerPolicy",integrity:"fetch.integrity",keepalive:"fetch.keepalive",signal:"fetch.signal"};function rL(){globalThis.loaders=globalThis.loaders||{};const{loaders:e}=globalThis;return e._state=e._state||{},e._state}const oL=()=>{const e=rL();return e.globalOptions=e.globalOptions||{...nL},e.globalOptions};function pJ(e,A,t,i){return t=t||[],t=Array.isArray(t)?t:[t],yJ(e,t),wJ(A,e,i)}function sL(e,A){const t=oL(),i=e||t;return typeof i.fetch=="function"?i.fetch:bl(i.fetch)?n=>aS(n,i):A!=null&&A.fetch?A==null?void 0:A.fetch:aS}function yJ(e,A){BS(e,null,nL,dJ,A);for(const t of A){const i=e&&e[t.id]||{},n=t.options&&t.options[t.id]||{},r=t.deprecatedOptions&&t.deprecatedOptions[t.id]||{};BS(i,t.id,n,r,A)}}function BS(e,A,t,i,n){const r=A||"Top level",o=A?"".concat(A,"."):"";for(const s in e){const a=!A&&bl(e[s]),g=s==="baseUri"&&!A,I=s==="workerUrl"&&A;if(!(s in t)&&!g&&!I){if(s in i)CS.warn("".concat(r," loader option '").concat(o).concat(s,"' no longer supported, use '").concat(i[s],"'"))();else if(!a){const l=mJ(s,n);CS.warn("".concat(r," loader option '").concat(o).concat(s,"' not recognized. ").concat(l))()}}}}function mJ(e,A){const t=e.toLowerCase();let i="";for(const n of A)for(const r in n.options){if(e===r)return"Did you mean '".concat(n.id,".").concat(r,"'?");const o=r.toLowerCase();(t.startsWith(o)||o.startsWith(t))&&(i=i||"Did you mean '".concat(n.id,".").concat(r,"'?"))}return i}function wJ(e,A,t){const n={...e.options||{}};return vJ(n,t),n.log===null&&(n.log=new fJ),ES(n,oL()),ES(n,A),n}function ES(e,A){for(const t in A)if(t in A){const i=A[t];oS(i)&&oS(e[t])?e[t]={...e[t],...A[t]}:e[t]=A[t]}}function vJ(e,A){A&&!("baseUri"in e)&&(e.baseUri=A)}function Lp(e){var A;return e?(Array.isArray(e)&&(e=e[0]),Array.isArray((A=e)===null||A===void 0?void 0:A.extensions)):!1}function bp(e){var A,t;xB(e,"null loader"),xB(Lp(e),"invalid loader");let i;return Array.isArray(e)&&(i=e[1],e=e[0],e={...e,options:{...e.options,...i}}),((A=e)!==null&&A!==void 0&&A.parseTextSync||(t=e)!==null&&t!==void 0&&t.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}const aL=()=>{const e=rL();return e.loaderRegistry=e.loaderRegistry||[],e.loaderRegistry};function SJ(e){const A=aL();e=Array.isArray(e)?e:[e];for(const t of e){const i=bp(t);A.find(n=>i===n)||A.unshift(i)}}function DJ(){return aL()}const RJ=new Gl({id:"loaders.gl"}),xJ=/\.([^.]+)$/;async function FJ(e,A=[],t,i){if(!gL(e))return null;let n=uS(e,A,{...t,nothrow:!0},i);if(n)return n;if(ka(e)&&(e=await e.slice(0,10).arrayBuffer(),n=uS(e,A,t,i)),!n&&!(t!=null&&t.nothrow))throw new Error(IL(e));return n}function uS(e,A=[],t,i){if(!gL(e))return null;if(A&&!Array.isArray(A))return bp(A);let n=[];A&&(n=n.concat(A)),t!=null&&t.ignoreRegisteredLoaders||n.push(...DJ()),LJ(n);const r=NJ(e,n,t,i);if(!r&&!(t!=null&&t.nothrow))throw new Error(IL(e));return r}function NJ(e,A,t,i){const{url:n,type:r}=OE(e),o=n||(i==null?void 0:i.url);let s=null,a="";if(t!=null&&t.mimeType&&(s=_h(A,t==null?void 0:t.mimeType),a="match forced by supplied MIME type ".concat(t==null?void 0:t.mimeType)),s=s||bJ(A,o),a=a||(s?"matched url ".concat(o):""),s=s||_h(A,r),a=a||(s?"matched MIME type ".concat(r):""),s=s||_J(A,e),a=a||(s?"matched initial data ".concat(lL(e)):""),s=s||_h(A,t==null?void 0:t.fallbackMimeType),a=a||(s?"matched fallback MIME type ".concat(r):""),a){var g;RJ.log(1,"selectLoader selected ".concat((g=s)===null||g===void 0?void 0:g.name,": ").concat(a,"."))}return s}function gL(e){return!(e instanceof Response&&e.status===204)}function IL(e){const{url:A,type:t}=OE(e);let i="No valid loader found (";i+=A?"".concat(Yq(A),", "):"no url provided, ",i+="MIME type: ".concat(t?'"'.concat(t,'"'):"not provided",", ");const n=e?lL(e):"";return i+=n?' first bytes: "'.concat(n,'"'):"first bytes: not available",i+=")",i}function LJ(e){for(const A of e)bp(A)}function bJ(e,A){const t=A&&xJ.exec(A),i=t&&t[1];return i?GJ(e,i):null}function GJ(e,A){A=A.toLowerCase();for(const t of e)for(const i of t.extensions)if(i.toLowerCase()===A)return t;return null}function _h(e,A){for(const t of e)if(t.mimeTypes&&t.mimeTypes.includes(A)||A==="application/x.".concat(t.id))return t;return null}function _J(e,A){if(!A)return null;for(const t of e)if(typeof A=="string"){if(MJ(A,t))return t}else if(ArrayBuffer.isView(A)){if(hS(A.buffer,A.byteOffset,t))return t}else if(A instanceof ArrayBuffer&&hS(A,0,t))return t;return null}function MJ(e,A){return A.testText?A.testText(e):(Array.isArray(A.tests)?A.tests:[A.tests]).some(i=>e.startsWith(i))}function hS(e,A,t){return(Array.isArray(t.tests)?t.tests:[t.tests]).some(n=>kJ(e,A,t,n))}function kJ(e,A,t,i){if(i instanceof ArrayBuffer)return bq(i,e,i.byteLength);switch(typeof i){case"function":return i(e,t);case"string":const n=XQ(e,A,i.length);return i===n;default:return!1}}function lL(e,A=5){return typeof e=="string"?e.slice(0,A):ArrayBuffer.isView(e)?XQ(e.buffer,e.byteOffset,A):e instanceof ArrayBuffer?XQ(e,0,A):""}function XQ(e,A,t){if(e.byteLength{try{t.onload=()=>i(t),t.onerror=r=>n(new Error("Could not load image ".concat(e,": ").concat(r)))}catch(r){n(r)}})}const IO={};let QS=!0;async function lO(e,A,t){let i;_p(t)?i=await BL(e,A,t):i=CL(e,t);const n=A&&A.imagebitmap;return await cO(i,n)}async function cO(e,A=null){if((CO(A)||!QS)&&(A=null),A)try{return await createImageBitmap(e,A)}catch(t){console.warn(t),QS=!1}return await createImageBitmap(e)}function CO(e){for(const A in e||IO)return!1;return!0}const An=!1,cI=!0;function EL(e){const A=_l(e);return BO(A)||hO(A)||EO(A)||uO(A)}function BO(e){const A=_l(e);return A.byteLength>=24&&A.getUint32(0,An)===2303741511?{mimeType:"image/png",width:A.getUint32(16,An),height:A.getUint32(20,An)}:null}function EO(e){const A=_l(e);return A.byteLength>=10&&A.getUint32(0,An)===1195984440?{mimeType:"image/gif",width:A.getUint16(6,cI),height:A.getUint16(8,cI)}:null}function uO(e){const A=_l(e);return A.byteLength>=14&&A.getUint16(0,An)===16973&&A.getUint32(2,cI)===A.byteLength?{mimeType:"image/bmp",width:A.getUint32(18,cI),height:A.getUint32(22,cI)}:null}function hO(e){const A=_l(e);if(!(A.byteLength>=3&&A.getUint16(0,An)===65496&&A.getUint8(2)===255))return null;const{tableMarkers:i,sofMarkers:n}=fO();let r=2;for(;r+9Boolean(EL(new DataView(e)))],options:wO};var Ae=new Gl({id:"deck"});let ed={};function vO(e){ed=e}function Rt(e,A,t,i){Ae.level>0&&ed[e]&&ed[e].call(null,A,t,i)}function SO(e){const A=e[0],t=e[e.length-1];return A==="{"&&t==="}"||A==="["&&t==="]"}var DO={id:"JSON",name:"JSON",module:"",version:"",options:{},extensions:["json","geojson"],mimeTypes:["application/json","application/geo+json"],testText:SO,parseTextSync:JSON.parse};const CI="8.8.9",LC=globalThis.deck&&globalThis.deck.VERSION;if(LC&&LC!==CI)throw new Error("deck.gl - multiple versions detected: ".concat(LC," vs ").concat(CI));LC||(Ae.log(1,"deck.gl ".concat(CI))(),globalThis.deck={...globalThis.deck,VERSION:CI,version:CI,log:Ae,_registerLoggers:vO},SJ([DO,[uL,{imagebitmap:{premultiplyAlpha:"none"}}]]));var RO=globalThis.deck;const DA=new Gl({id:"luma.gl"});function kt(e,A){if(!e)throw new Error(A||"luma.gl: assertion failed.")}const xO="Invalid WebGLRenderingContext",FO="Requires WebGL2";function YE(e){return typeof WebGLRenderingContext!="undefined"&&e instanceof WebGLRenderingContext||typeof WebGL2RenderingContext!="undefined"&&e instanceof WebGL2RenderingContext?!0:Boolean(e&&Number.isFinite(e._version))}function ie(e){return typeof WebGL2RenderingContext!="undefined"&&e instanceof WebGL2RenderingContext?!0:Boolean(e&&e._version===2)}function NO(e){return ie(e)?e:null}function KE(e){return kt(YE(e),xO),e}function Ft(e){return kt(ie(e),FO),e}const Jg={};function LO(e){globalThis.console&&globalThis.console.error&&globalThis.console.error(e)}function bO(e){globalThis.console&&globalThis.console.log&&globalThis.console.log(e)}function GO(e,A){Jg[e]=!0,A!==void 0&&LO(A)}function _O(e){const A=e.getError;e.getError=function(){let i;do i=A.apply(e),i!==0&&(Jg[i]=!0);while(i!==0);for(i in Jg)if(Jg[i])return delete Jg[i],parseInt(i,10);return 0}}const Ml=function e(A){const t=A.gl;this.ext=A,this.isAlive=!0,this.hasBeenBound=!1,this.elementArrayBuffer=null,this.attribs=new Array(A.maxVertexAttribs);for(let i=0;i{bO("OESVertexArrayObject emulation library context restored"),t.reset_()},!0),this.reset_()};ns.prototype.VERTEX_ARRAY_BINDING_OES=34229;ns.prototype.reset_=function(){if(this.vertexArrayObjects!==void 0)for(let i=0;iie(e)?void 0:0,KO={[3074]:e=>ie(e)?void 0:36064,[PO]:e=>ie(e)?void 0:HO,[35977]:Le,[32937]:Le,[qO]:(e,A)=>{const t=ie(e)?e.getExtension(TO):e.getExtension(kO);return t&&t.GPU_DISJOINT_EXT?A(t.GPU_DISJOINT_EXT):0},[OO]:(e,A)=>{const t=e.getExtension(yS);return A(t&&t.UNMASKED_VENDOR_WEBGL||7936)},[YO]:(e,A)=>{const t=e.getExtension(yS);return A(t&&t.UNMASKED_RENDERER_WEBGL||7937)},[JO]:(e,A)=>{const t=e.luma.extensions[UO];return t?A(t.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1},[32883]:Le,[35071]:Le,[37447]:Le,[36063]:(e,A)=>{if(!ie(e)){const t=e.getExtension(pS);return t?A(t.MAX_COLOR_ATTACHMENTS_WEBGL):0}},[35379]:Le,[35374]:Le,[35377]:Le,[34852]:e=>{if(!ie(e)){const A=e.getExtension(pS);return A?A.MAX_DRAW_BUFFERS_WEBGL:0}},[36203]:e=>e.getExtension(dS)?2147483647:65535,[33001]:e=>e.getExtension(dS)?16777216:65535,[33e3]:e=>16777216,[37157]:Le,[35373]:Le,[35657]:Le,[36183]:Le,[37137]:Le,[34045]:Le,[35978]:Le,[35979]:Le,[35968]:Le,[35376]:Le,[35375]:Le,[35659]:Le,[37154]:Le,[35371]:Le,[35658]:Le,[35076]:Le,[35077]:Le,[35380]:Le};function VO(e,A,t){const i=KO[t],n=typeof i=="function"?i(e,A,t):i;return n!==void 0?n:A(t)}const WO="OES_vertex_array_object",hL="ANGLE_instanced_arrays",zO="WEBGL_draw_buffers",jO="EXT_disjoint_timer_query",XO="EXT_texture_filter_anisotropic",ZO="VertexArray requires WebGL2 or OES_vertex_array_object extension";function $O(e,A){return{webgl2:ie(e),ext:e.getExtension(A)}}const fL={[WO]:{meta:{suffix:"OES"},createVertexArray:()=>{kt(!1,ZO)},deleteVertexArray:()=>{},bindVertexArray:()=>{},isVertexArray:()=>!1},[hL]:{meta:{suffix:"ANGLE"},vertexAttribDivisor(e,A){kt(A===0,"WebGL instanced rendering not supported")},drawElementsInstanced:()=>{},drawArraysInstanced:()=>{}},[zO]:{meta:{suffix:"WEBGL"},drawBuffers:()=>{kt(!1)}},[jO]:{meta:{suffix:"EXT"},createQuery:()=>{kt(!1)},deleteQuery:()=>{kt(!1)},beginQuery:()=>{kt(!1)},endQuery:()=>{},getQuery(e,A){return this.getQueryObject(e,A)},getQueryParameter(e,A){return this.getQueryObject(e,A)},getQueryObject:()=>{}}},Mh={readBuffer:(e,A,t)=>{ie(e)&&A(t)},getVertexAttrib:(e,A,t,i)=>{const{webgl2:n,ext:r}=$O(e,hL);let o;switch(i){case 35069:o=n?void 0:!1;break;case 35070:o=!n&&!r?0:void 0;break}return o!==void 0?o:A(t,i)},getProgramParameter:(e,A,t,i)=>{if(!ie(e))switch(i){case 35967:return 35981;case 35971:return 0;case 35382:return 0}return A(t,i)},getInternalformatParameter:(e,A,t,i,n)=>{if(!ie(e))switch(n){case 32937:return new Int32Array([0])}return e.getInternalformatParameter(t,i,n)},getTexParameter(e,A,t,i){switch(i){case 34046:const{extensions:n}=e.luma,r=n[XO];i=r&&r.TEXTURE_MAX_ANISOTROPY_EXT||34046;break}return A(t,i)},getParameter:VO,hint(e,A,t,i){return A(t,i)}};function AY(e){e.luma=e.luma||{};const{luma:A}=e;return A.polyfilled||(MO(e),eY(e),iY(e,fL),tY(e,{target:A,target2:e}),A.polyfilled=!0),e}globalThis.polyfillContext=AY;function eY(e){e.luma.extensions={};const A=e.getSupportedExtensions()||[];for(const t of A)e.luma[t]=e.getExtension(t)}function tY(e,A){let{target:t,target2:i}=A;Object.keys(Mh).forEach(n=>{if(typeof Mh[n]=="function"){const r=e[n]?e[n].bind(e):()=>{},o=Mh[n].bind(null,e,r);t[n]=o,i[n]=o}})}function iY(e,A){for(const t of Object.getOwnPropertyNames(A))t!=="overrides"&&nY(e,{extension:t,target:e.luma,target2:e})}function nY(e,A){let{extension:t,target:i,target2:n}=A;const r=fL[t];kt(r);const{meta:o={}}=r,{suffix:s=""}=o,a=e.getExtension(t);for(const g of Object.keys(r)){const I="".concat(g).concat(s);let l=null;g==="meta"||typeof e[g]=="function"||(a&&typeof a[I]=="function"?l=function(){return a[I](...arguments)}:typeof r[g]=="function"&&(l=r[g].bind(i))),l&&(i[g]=l,n[g]=l)}}const Mp={[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},ir=(e,A,t)=>A?e.enable(t):e.disable(t),mS=(e,A,t)=>e.hint(t,A),Xt=(e,A,t)=>e.pixelStorei(t,A),rY=(e,A)=>{const t=ie(e)?36009:36160;return e.bindFramebuffer(t,A)},oY=(e,A)=>e.bindFramebuffer(36008,A);function pg(e){return Array.isArray(e)||ArrayBuffer.isView(e)}const sY={[3042]:ir,[32773]:(e,A)=>e.blendColor(...A),[32777]:"blendEquation",[34877]:"blendEquation",[32969]:"blendFunc",[32968]:"blendFunc",[32971]:"blendFunc",[32970]:"blendFunc",[3106]:(e,A)=>e.clearColor(...A),[3107]:(e,A)=>e.colorMask(...A),[2884]:ir,[2885]:(e,A)=>e.cullFace(A),[2929]:ir,[2931]:(e,A)=>e.clearDepth(A),[2932]:(e,A)=>e.depthFunc(A),[2928]:(e,A)=>e.depthRange(...A),[2930]:(e,A)=>e.depthMask(A),[3024]:ir,[35723]:mS,[36006]:rY,[2886]:(e,A)=>e.frontFace(A),[33170]:mS,[2849]:(e,A)=>e.lineWidth(A),[32823]:ir,[32824]:"polygonOffset",[10752]:"polygonOffset",[35977]:ir,[32938]:"sampleCoverage",[32939]:"sampleCoverage",[3089]:ir,[3088]:(e,A)=>e.scissor(...A),[2960]:ir,[2961]:(e,A)=>e.clearStencil(A),[2968]:(e,A)=>e.stencilMaskSeparate(1028,A),[36005]:(e,A)=>e.stencilMaskSeparate(1029,A),[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]:(e,A)=>e.viewport(...A),[3333]:Xt,[3317]:Xt,[37440]:Xt,[37441]:Xt,[37443]:Xt,[3330]:Xt,[3332]:Xt,[3331]:Xt,[36010]:oY,[3314]:Xt,[32878]:Xt,[3316]:Xt,[3315]:Xt,[32877]:Xt,framebuffer:(e,A)=>{const t=A&&"handle"in A?A.handle:A;return e.bindFramebuffer(36160,t)},blend:(e,A)=>A?e.enable(3042):e.disable(3042),blendColor:(e,A)=>e.blendColor(...A),blendEquation:(e,A)=>{A=pg(A)?A:[A,A],e.blendEquationSeparate(...A)},blendFunc:(e,A)=>{A=pg(A)&&A.length===2?[...A,...A]:A,e.blendFuncSeparate(...A)},clearColor:(e,A)=>e.clearColor(...A),clearDepth:(e,A)=>e.clearDepth(A),clearStencil:(e,A)=>e.clearStencil(A),colorMask:(e,A)=>e.colorMask(...A),cull:(e,A)=>A?e.enable(2884):e.disable(2884),cullFace:(e,A)=>e.cullFace(A),depthTest:(e,A)=>A?e.enable(2929):e.disable(2929),depthFunc:(e,A)=>e.depthFunc(A),depthMask:(e,A)=>e.depthMask(A),depthRange:(e,A)=>e.depthRange(...A),dither:(e,A)=>A?e.enable(3024):e.disable(3024),derivativeHint:(e,A)=>{e.hint(35723,A)},frontFace:(e,A)=>e.frontFace(A),mipmapHint:(e,A)=>e.hint(33170,A),lineWidth:(e,A)=>e.lineWidth(A),polygonOffsetFill:(e,A)=>A?e.enable(32823):e.disable(32823),polygonOffset:(e,A)=>e.polygonOffset(...A),sampleCoverage:(e,A)=>e.sampleCoverage(...A),scissorTest:(e,A)=>A?e.enable(3089):e.disable(3089),scissor:(e,A)=>e.scissor(...A),stencilTest:(e,A)=>A?e.enable(2960):e.disable(2960),stencilMask:(e,A)=>{A=pg(A)?A:[A,A];const[t,i]=A;e.stencilMaskSeparate(1028,t),e.stencilMaskSeparate(1029,i)},stencilFunc:(e,A)=>{A=pg(A)&&A.length===3?[...A,...A]:A;const[t,i,n,r,o,s]=A;e.stencilFuncSeparate(1028,t,i,n),e.stencilFuncSeparate(1029,r,o,s)},stencilOp:(e,A)=>{A=pg(A)&&A.length===3?[...A,...A]:A;const[t,i,n,r,o,s]=A;e.stencilOpSeparate(1028,t,i,n),e.stencilOpSeparate(1029,r,o,s)},viewport:(e,A)=>e.viewport(...A)};function Ke(e,A,t){return A[e]!==void 0?A[e]:t[e]}const aY={blendEquation:(e,A,t)=>e.blendEquationSeparate(Ke(32777,A,t),Ke(34877,A,t)),blendFunc:(e,A,t)=>e.blendFuncSeparate(Ke(32969,A,t),Ke(32968,A,t),Ke(32971,A,t),Ke(32970,A,t)),polygonOffset:(e,A,t)=>e.polygonOffset(Ke(32824,A,t),Ke(10752,A,t)),sampleCoverage:(e,A,t)=>e.sampleCoverage(Ke(32938,A,t),Ke(32939,A,t)),stencilFuncFront:(e,A,t)=>e.stencilFuncSeparate(1028,Ke(2962,A,t),Ke(2967,A,t),Ke(2963,A,t)),stencilFuncBack:(e,A,t)=>e.stencilFuncSeparate(1029,Ke(34816,A,t),Ke(36003,A,t),Ke(36004,A,t)),stencilOpFront:(e,A,t)=>e.stencilOpSeparate(1028,Ke(2964,A,t),Ke(2965,A,t),Ke(2966,A,t)),stencilOpBack:(e,A,t)=>e.stencilOpSeparate(1029,Ke(34817,A,t),Ke(34818,A,t),Ke(34819,A,t))},wS={enable:(e,A)=>e({[A]:!0}),disable:(e,A)=>e({[A]:!1}),pixelStorei:(e,A,t)=>e({[A]:t}),hint:(e,A,t)=>e({[A]:t}),bindFramebuffer:(e,A,t)=>{switch(A){case 36160:return e({[36006]:t,[36010]:t});case 36009:return e({[36006]:t});case 36008:return e({[36010]:t});default:return null}},blendColor:(e,A,t,i,n)=>e({[32773]:new Float32Array([A,t,i,n])}),blendEquation:(e,A)=>e({[32777]:A,[34877]:A}),blendEquationSeparate:(e,A,t)=>e({[32777]:A,[34877]:t}),blendFunc:(e,A,t)=>e({[32969]:A,[32968]:t,[32971]:A,[32970]:t}),blendFuncSeparate:(e,A,t,i,n)=>e({[32969]:A,[32968]:t,[32971]:i,[32970]:n}),clearColor:(e,A,t,i,n)=>e({[3106]:new Float32Array([A,t,i,n])}),clearDepth:(e,A)=>e({[2931]:A}),clearStencil:(e,A)=>e({[2961]:A}),colorMask:(e,A,t,i,n)=>e({[3107]:[A,t,i,n]}),cullFace:(e,A)=>e({[2885]:A}),depthFunc:(e,A)=>e({[2932]:A}),depthRange:(e,A,t)=>e({[2928]:new Float32Array([A,t])}),depthMask:(e,A)=>e({[2930]:A}),frontFace:(e,A)=>e({[2886]:A}),lineWidth:(e,A)=>e({[2849]:A}),polygonOffset:(e,A,t)=>e({[32824]:A,[10752]:t}),sampleCoverage:(e,A,t)=>e({[32938]:A,[32939]:t}),scissor:(e,A,t,i,n)=>e({[3088]:new Int32Array([A,t,i,n])}),stencilMask:(e,A)=>e({[2968]:A,[36005]:A}),stencilMaskSeparate:(e,A,t)=>e({[A===1028?2968:36005]:t}),stencilFunc:(e,A,t,i)=>e({[2962]:A,[2967]:t,[2963]:i,[34816]:A,[36003]:t,[36004]:i}),stencilFuncSeparate:(e,A,t,i,n)=>e({[A===1028?2962:34816]:t,[A===1028?2967:36003]:i,[A===1028?2963:36004]:n}),stencilOp:(e,A,t,i)=>e({[2964]:A,[2965]:t,[2966]:i,[34817]:A,[34818]:t,[34819]:i}),stencilOpSeparate:(e,A,t,i,n)=>e({[A===1028?2964:34817]:t,[A===1028?2965:34818]:i,[A===1028?2966:34819]:n}),viewport:(e,A,t,i,n)=>e({[2978]:[A,t,i,n]})},Oi=(e,A)=>e.isEnabled(A),vS={[3042]:Oi,[2884]:Oi,[2929]:Oi,[3024]:Oi,[32823]:Oi,[32926]:Oi,[32928]:Oi,[3089]:Oi,[2960]:Oi,[35977]:Oi};function QL(e){for(const A in e)return!1;return!0}function gY(e,A){if(e===A)return!0;const t=Array.isArray(e)||ArrayBuffer.isView(e),i=Array.isArray(A)||ArrayBuffer.isView(A);if(t&&i&&e.length===A.length){for(let n=0;n{}}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=A,this.program=null,this.stateStack=[],this.enable=!0,this.cache=t?BY(A):Object.assign({},Mp),this.log=i,this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(){this.stateStack.push({})}pop(){kt(this.stateStack.length>0);const A=this.stateStack[this.stateStack.length-1];Pn(this.gl,A),this.stateStack.pop()}_updateCache(A){let t=!1,i;const n=this.stateStack.length>0&&this.stateStack[this.stateStack.length-1];for(const r in A){kt(r!==void 0);const o=A[r],s=this.cache[r];gY(o,s)||(t=!0,i=s,n&&!(r in n)&&(n[r]=s),this.cache[r]=o)}return{valueChanged:t,oldValue:i}}}function dL(e){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{enable:t=!0,copyState:i}=A;if(kt(i!==void 0),!e.state){const{polyfillContext:n}=globalThis;n&&n(e),e.state=new cY(e,{copyState:i}),lY(e);for(const r in wS){const o=wS[r];IY(e,r,o)}SS(e,"getParameter"),SS(e,"isEnabled")}return e.state.enable=t,e}function CY(e){e.state||dL(e,{copyState:!1}),e.state.push()}function DS(e){kt(e.state),e.state.pop()}function Pn(e,A){if(kt(YE(e),"setParameters requires a WebGL context"),QL(A))return;const t={};for(const n in A){const r=Number(n),o=sY[n];o&&(typeof o=="string"?t[o]=!0:o(e,A[n],r))}const i=e.state&&e.state.cache;if(i)for(const n in t){const r=aY[n];r(e,A,i)}}function BY(e,A){if(A=A||Mp,typeof A=="number"){const n=A,r=vS[n];return r?r(e,n):e.getParameter(n)}const t=Array.isArray(A)?A:Object.keys(A),i={};for(const n of t){const r=vS[n];i[n]=r?r(e,Number(n)):e.getParameter(Number(n))}return i}function EY(e){Pn(e,Mp)}function ui(e,A,t){if(QL(A))return t(e);const{nocatch:i=!0}=A;CY(e),Pn(e,A);let n;if(i)n=t(e),DS(e);else try{n=t(e)}finally{DS(e)}return n}function ua(e){const{luma:A}=e;if(e.canvas&&A){const{clientWidth:t}=A.canvasSizeInfo;return t?e.drawingBufferWidth/t:1}return 1}function kh(e,A){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const i=ua(e),n=e.drawingBufferWidth,r=e.drawingBufferHeight;return hY(A,i,n,r,t)}function uY(e){const A=typeof window=="undefined"?1:window.devicePixelRatio||1;return Number.isFinite(e)?e<=0?1:e:e?A:1}function hY(e,A,t,i,n){const r=RS(e[0],A,t);let o=xS(e[1],A,i,n),s=RS(e[0]+1,A,t);const a=s===t-1?s:s-1;s=xS(e[1]+1,A,i,n);let g;return n?(s=s===0?s:s+1,g=o,o=s):g=s===i-1?s:s-1,{x:r,y:o,width:Math.max(a-r+1,1),height:Math.max(g-o+1,1)}}function RS(e,A,t){return Math.min(Math.round(e*A),t-1)}function xS(e,A,t,i){return i?Math.max(0,t-1-Math.round(e*A)):Math.min(Math.round(e*A),t-1)}const kp=Yn(),fY=kp&&typeof document!="undefined",pL={webgl2:!0,webgl1:!0,throwOnError:!0,manageState:!0,canvas:null,debug:!1,width:800,height:600};function yL(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};kt(kp,`createGLContext only available in the browser. -Create your own headless context or use 'createHeadlessContext' from @luma.gl/test-utils`),e=Object.assign({},pL,e);const{width:A,height:t}=e;function i(s){if(e.throwOnError)throw new Error(s);return console.error(s),null}e.onError=i;let n;const{canvas:r}=e,o=yY({canvas:r,width:A,height:t,onError:i});return n=pY(o,e),n?(n=Tp(n,e),mY(n),n):null}function Tp(e){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!e||e._instrumented)return e;e._version=e._version||wY(e),e.luma=e.luma||{},e.luma.canvasSizeInfo=e.luma.canvasSizeInfo||{},A=Object.assign({},pL,A);const{manageState:t,debug:i}=A;return t&&dL(e,{copyState:!1,log:function(){for(var n=arguments.length,r=new Array(n),o=0;o1&&arguments[1]!==void 0?arguments[1]:{};if(e.canvas){const i=uY(A.useDevicePixels);vY(e,i,A);return}const t=e.getExtension("STACKGL_resize_drawingbuffer");t&&"width"in A&&"height"in A&&t.resize(A.width,A.height)}function pY(e,A){const{onError:t}=A;let i=null;const n=a=>i=a.statusMessage||i;e.addEventListener("webglcontextcreationerror",n,!1);const{webgl1:r=!0,webgl2:o=!0}=A;let s=null;return o&&(s=s||e.getContext("webgl2",A),s=s||e.getContext("experimental-webgl2",A)),r&&(s=s||e.getContext("webgl",A),s=s||e.getContext("experimental-webgl",A)),e.removeEventListener("webglcontextcreationerror",n,!1),s?(A.onContextLost&&e.addEventListener("webglcontextlost",A.onContextLost,!1),A.onContextRestored&&e.addEventListener("webglcontextrestored",A.onContextRestored,!1),s):t("Failed to create ".concat(o&&!r?"WebGL2":"WebGL"," context: ").concat(i||"Unknown error"))}function yY(e){let{canvas:A,width:t=800,height:i=600,onError:n}=e,r;return typeof A=="string"?(fY&&document.readyState==="complete"||n("createGLContext called on canvas '".concat(A,"' before page was loaded")),r=document.getElementById(A)):A?r=A:(r=document.createElement("canvas"),r.id="lumagl-canvas",r.style.width=Number.isFinite(t)?"".concat(t,"px"):"100%",r.style.height=Number.isFinite(i)?"".concat(i,"px"):"100%",document.body.insertBefore(r,document.body.firstChild)),r}function mY(e){const A=ie(e)?"WebGL2":"WebGL1",t=QY(e),i=t?"(".concat(t.vendor,",").concat(t.renderer,")"):"",n=e.debug?" debug":"";DA.info(1,"".concat(A).concat(n," context ").concat(i))()}function wY(e){return typeof WebGL2RenderingContext!="undefined"&&e instanceof WebGL2RenderingContext?2:1}function vY(e,A,t){let i="width"in t?t.width:e.canvas.clientWidth,n="height"in t?t.height:e.canvas.clientHeight;(!i||!n)&&(DA.log(1,"Canvas clientWidth/clientHeight is 0")(),A=1,i=e.canvas.width||1,n=e.canvas.height||1),e.luma=e.luma||{},e.luma.canvasSizeInfo=e.luma.canvasSizeInfo||{};const r=e.luma.canvasSizeInfo;if(r.clientWidth!==i||r.clientHeight!==n||r.devicePixelRatio!==A){let o=A;const s=Math.floor(i*o),a=Math.floor(n*o);e.canvas.width=s,e.canvas.height=a,(e.drawingBufferWidth!==s||e.drawingBufferHeight!==a)&&(DA.warn("Device pixel ratio clamped")(),o=Math.min(e.drawingBufferWidth/i,e.drawingBufferHeight/n),e.canvas.width=Math.floor(i*o),e.canvas.height=Math.floor(n*o)),Object.assign(e.luma.canvasSizeInfo,{clientWidth:i,clientHeight:n,devicePixelRatio:A})}}const BI="8.5.16",SY="set luma.log.level=1 (or higher) to trace rendering";class mL{constructor(){this.stats=new Map}get(A){return this.stats.has(A)||this.stats.set(A,new JE({id:A})),this.stats.get(A)}}const po=new mL;if(globalThis.luma&&globalThis.luma.VERSION!==BI)throw new Error("luma.gl - multiple VERSIONs detected: ".concat(globalThis.luma.VERSION," vs ").concat(BI));globalThis.luma||(Yn()&&DA.log(1,"luma.gl ".concat(BI," - ").concat(SY))(),globalThis.luma=globalThis.luma||{VERSION:BI,version:BI,log:DA,stats:po,globals:{modules:{},nodeIO:{}}});function DY(e){return typeof window!="undefined"&&window.requestAnimationFrame?window.requestAnimationFrame(e):setTimeout(e,1e3/60)}function RY(e){return typeof window!="undefined"&&window.cancelAnimationFrame?window.cancelAnimationFrame(e):clearTimeout(e)}function cA(e,A){if(!e)throw new Error(A||"luma.gl: assertion failed.")}function Th(e,A){if(typeof A!="string")return A;const t=Number(A);if(!isNaN(t))return t;A=A.replace(/^.*\./,"");const i=e[A];return cA(i!==void 0,"Accessing undefined constant GL.".concat(A)),i}function Nr(e,A){A=Number(A);for(const t in e)if(e[t]===A)return"GL.".concat(t);return String(A)}const Uh={};function qr(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"id";Uh[e]=Uh[e]||1;const A=Uh[e]++;return"".concat(e,"-").concat(A)}function FS(e){return cA(typeof e=="number","Input must be a number"),e&&(e&e-1)===0}function ha(e){let A=!0;for(const t in e){A=!1;break}return A}function wL(e,A,t,i){const n="See luma.gl ".concat(t," Upgrade Guide at https://luma.gl/docs/upgrade-guide"),r=Object.getPrototypeOf(e);i.forEach(o=>{r.methodName||(r[o]=()=>{throw DA.removed("Calling removed method ".concat(A,".").concat(o,": "),n)(),new Error(o)})})}const fs="Resource subclass must define virtual methods";class Kn{get[Symbol.toStringTag](){return"Resource"}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};KE(A);const{id:i,userData:n={}}=t;this.gl=A,this.gl2=A,this.id=i||qr(this[Symbol.toStringTag]),this.userData=n,this._bound=!1,this._handle=t.handle,this._handle===void 0&&(this._handle=this._createHandle()),this.byteLength=0,this._initStats(),this._addStats()}toString(){return"".concat(this[Symbol.toStringTag]||this.constructor.name,"(").concat(this.id,")")}get handle(){return this._handle}delete(){let{deleteChildren:A=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const t=this._handle&&this._deleteHandle(this._handle);return this._handle&&this._removeStats(),this._handle=null,t&&A&&t.filter(Boolean).forEach(i=>i.delete()),this}bind(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.handle;if(typeof A!="function")return this._bindHandle(A),this;let t;return this._bound?t=A():(this._bindHandle(this.handle),this._bound=!0,t=A(),this._bound=!1,this._bindHandle(null)),t}unbind(){this.bind(null)}getParameter(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};A=Th(this.gl,A),cA(A);const n=(this.constructor.PARAMETERS||{})[A];if(n){const r=ie(this.gl);if(!((!("webgl2"in n)||r)&&(!("extension"in n)||this.gl.getExtension(n.extension)))){const s=n.webgl1,a="webgl2"in n?n.webgl2:n.webgl1;return r?a:s}}return this._getParameter(A,t)}getParameters(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{parameters:t,keys:i}=A,n=this.constructor.PARAMETERS||{},r=ie(this.gl),o={},s=t||Object.keys(n);for(const a of s){const g=n[a];if(g&&(!("webgl2"in g)||r)&&(!("extension"in g)||this.gl.getExtension(g.extension))){const l=i?Nr(this.gl,a):a;o[l]=this.getParameter(a,A),i&&g.type==="GLenum"&&(o[l]=Nr(this.gl,o[l]))}}return o}setParameter(A,t){A=Th(this.gl,A),cA(A);const n=(this.constructor.PARAMETERS||{})[A];if(n){const r=ie(this.gl);if(!((!("webgl2"in n)||r)&&(!("extension"in n)||this.gl.getExtension(n.extension))))throw new Error("Parameter not available on this platform");n.type==="GLenum"&&(t=Th(t))}return this._setParameter(A,t),this}setParameters(A){for(const t in A)this.setParameter(t,A[t]);return this}stubRemovedMethods(A,t,i){return wL(this,A,t,i)}initialize(A){}_createHandle(){throw new Error(fs)}_deleteHandle(){throw new Error(fs)}_bindHandle(A){throw new Error(fs)}_getOptsFromHandle(){throw new Error(fs)}_getParameter(A,t){throw new Error(fs)}_setParameter(A,t){throw new Error(fs)}_context(){return this.gl.luma=this.gl.luma||{},this.gl.luma}_initStats(){this.gl.stats=this.gl.stats||new mL}_addStats(){const A=this[Symbol.toStringTag],t=po.get("Resource Counts");t.get("Resources Created").incrementCount(),t.get("".concat(A,"s Created")).incrementCount(),t.get("".concat(A,"s Active")).incrementCount()}_removeStats(){const A=this[Symbol.toStringTag];po.get("Resource Counts").get("".concat(A,"s Active")).decrementCount()}_trackAllocatedMemory(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this[Symbol.toStringTag];this._doTrackAllocatedMemory(A,t),this._doTrackAllocatedMemory(A,t,this.gl.stats.get("Memory Usage"))}_doTrackAllocatedMemory(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this[Symbol.toStringTag],i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:po.get("Memory Usage");i.get("GPU Memory").addCount(A),i.get("".concat(t," Memory")).addCount(A),this.byteLength=A}_trackDeallocatedMemory(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this[Symbol.toStringTag];this._doTrackDeallocatedMemory(A),this._doTrackDeallocatedMemory(A,this.gl.stats.get("Memory Usage"))}_doTrackDeallocatedMemory(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this[Symbol.toStringTag],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:po.get("Memory Usage");t.get("GPU Memory").subtractCount(this.byteLength),t.get("".concat(A," Memory")).subtractCount(this.byteLength),this.byteLength=0}}const xY="Failed to deduce GL constant from typed array";function td(e){switch(ArrayBuffer.isView(e)?e.constructor:e){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(xY)}}function KI(e){let{clamped:A=!0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};switch(e){case 5126:return Float32Array;case 5123:case 33635:case 32819:case 32820:return Uint16Array;case 5125:return Uint32Array;case 5121:return A?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 FY(e){let{data:A,width:t,height:i,bytesPerPixel:n=4,temp:r}=e;const o=t*n;r=r||new Uint8Array(o);for(let s=0;sthis._assign(n)),Object.freeze(this)}toString(){return JSON.stringify(this)}get BYTES_PER_ELEMENT(){return ti.getBytesPerElement(this)}get BYTES_PER_VERTEX(){return ti.getBytesPerVertex(this)}_assign(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return A=id("Accessor",A,bY),A.type!==void 0&&(this.type=A.type,(A.type===5124||A.type===5125)&&(this.integer=!0)),A.size!==void 0&&(this.size=A.size),A.offset!==void 0&&(this.offset=A.offset),A.stride!==void 0&&(this.stride=A.stride),A.normalized!==void 0&&(this.normalized=A.normalized),A.integer!==void 0&&(this.integer=A.integer),A.divisor!==void 0&&(this.divisor=A.divisor),A.buffer!==void 0&&(this.buffer=A.buffer),A.index!==void 0&&(typeof A.index=="boolean"?this.index=A.index?1:0:this.index=A.index),A.instanced!==void 0&&(this.divisor=A.instanced?1:0),A.isInstanced!==void 0&&(this.divisor=A.isInstanced?1:0),this}}const NS=10,vL={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"},GY={removedProps:{},replacedProps:{bytes:"byteLength"},deprecatedProps:vL},_Y={removedProps:vL};class we extends Kn{get[Symbol.toStringTag](){return"Buffer"}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(A,t),this.stubRemovedMethods("Buffer","v6.0",["layout","setLayout","getIndexedParameter"]),this.target=t.target||(this.gl.webgl2?36662:34962),this.initialize(t),Object.seal(this)}getElementCount(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.accessor;return Math.round(this.byteLength/ti.getBytesPerElement(A))}getVertexCount(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.accessor;return Math.round(this.byteLength/ti.getBytesPerVertex(A))}initialize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return ArrayBuffer.isView(A)&&(A={data:A}),Number.isFinite(A)&&(A={byteLength:A}),A=id("Buffer",A,GY),this.usage=A.usage||35044,this.debugData=null,this.setAccessor(Object.assign({},A,A.accessor)),A.data?this._setData(A.data,A.offset,A.byteLength):this._setByteLength(A.byteLength||0),this}setProps(A){return A=id("Buffer",A,_Y),"accessor"in A&&this.setAccessor(A.accessor),this}setAccessor(A){return A=Object.assign({},A),delete A.buffer,this.accessor=new ti(A),this}reallocate(A){return A>this.byteLength?(this._setByteLength(A),!0):(this.bytesUsed=A,!1)}setData(A){return this.initialize(A)}subData(A){ArrayBuffer.isView(A)&&(A={data:A});const{data:t,offset:i=0,srcOffset:n=0}=A,r=A.byteLength||A.length;cA(t);const o=this.gl.webgl2?36663:this.target;return this.gl.bindBuffer(o,this.handle),n!==0||r!==void 0?(Ft(this.gl),this.gl.bufferSubData(this.target,i,t,n,r)):this.gl.bufferSubData(o,i,t),this.gl.bindBuffer(o,null),this.debugData=null,this._inferType(t),this}copyData(A){let{sourceBuffer:t,readOffset:i=0,writeOffset:n=0,size:r}=A;const{gl:o}=this;return Ft(o),o.bindBuffer(36662,t.handle),o.bindBuffer(36663,this.handle),o.copyBufferSubData(36662,36663,i,n,r),o.bindBuffer(36662,null),o.bindBuffer(36663,null),this.debugData=null,this}getData(){let{dstData:A=null,srcByteOffset:t=0,dstOffset:i=0,length:n=0}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ft(this.gl);const r=KI(this.accessor.type||5126,{clamped:!1}),o=this._getAvailableElementCount(t),s=i;let a,g;A?(g=A.length,a=g-s):(a=Math.min(o,n||o),g=s+a);const I=Math.min(o,a);return n=n||I,cA(n<=I),A=A||new r(g),this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,t,A,i,n),this.gl.bindBuffer(36662,null),A}bind(){let{target:A=this.target,index:t=this.accessor&&this.accessor.index,offset:i=0,size:n}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return A===35345||A===35982?n!==void 0?this.gl.bindBufferRange(A,t,this.handle,i,n):(cA(i===0),this.gl.bindBufferBase(A,t,this.handle)):this.gl.bindBuffer(A,this.handle),this}unbind(){let{target:A=this.target,index:t=this.accessor&&this.accessor.index}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return A===35345||A===35982?this.gl.bindBufferBase(A,t,null):this.gl.bindBuffer(A,null),this}getDebugData(){return this.debugData?{data:this.debugData,changed:!1}:(this.debugData=this.getData({length:Math.min(NS,this.byteLength)}),{data:this.debugData,changed:!0})}invalidateDebugData(){this.debugData=null}_setData(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:A.byteLength+t;cA(ArrayBuffer.isView(A)),this._trackDeallocatedMemory();const n=this._getTarget();this.gl.bindBuffer(n,this.handle),this.gl.bufferData(n,i,this.usage),this.gl.bufferSubData(n,t,A),this.gl.bindBuffer(n,null),this.debugData=A.slice(0,NS),this.bytesUsed=i,this._trackAllocatedMemory(i);const r=td(A);return cA(r),this.setAccessor(new ti(this.accessor,{type:r})),this}_setByteLength(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.usage;cA(A>=0),this._trackDeallocatedMemory();let i=A;A===0&&(i=new Float32Array(0));const n=this._getTarget();return this.gl.bindBuffer(n,this.handle),this.gl.bufferData(n,i,t),this.gl.bindBuffer(n,null),this.usage=t,this.debugData=null,this.bytesUsed=A,this._trackAllocatedMemory(A),this}_getTarget(){return this.gl.webgl2?36663:this.target}_getAvailableElementCount(A){const t=KI(this.accessor.type||5126,{clamped:!1}),i=A/t.BYTES_PER_ELEMENT;return this.getElementCount()-i}_inferType(A){this.accessor.type||this.setAccessor(new ti(this.accessor,{type:td(A)}))}_createHandle(){return this.gl.createBuffer()}_deleteHandle(){this.gl.deleteBuffer(this.handle),this._trackDeallocatedMemory()}_getParameter(A){this.gl.bindBuffer(this.target,this.handle);const t=this.gl.getBufferParameter(this.target,A);return this.gl.bindBuffer(this.target,null),t}get type(){return DA.deprecated("Buffer.type","Buffer.accessor.type")(),this.accessor.type}get bytes(){return DA.deprecated("Buffer.bytes","Buffer.byteLength")(),this.byteLength}setByteLength(A){return DA.deprecated("setByteLength","reallocate")(),this.reallocate(A)}updateAccessor(A){return DA.deprecated("updateAccessor(...)","setAccessor(new Accessor(buffer.accessor, ...)")(),this.accessor=new ti(this.accessor,A),this}}const Up={[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}},SL={[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},DL={[5126]:4,[5125]:4,[5124]:4,[5123]:2,[5122]:2,[5131]:2,[5120]:1,[5121]:1};function MY(e,A){const t=Up[A];if(!t)return!1;if(t.gl1===void 0&&t.gl2===void 0)return!0;const i=ie(e)&&t.gl2||t.gl1;return typeof i=="string"?e.getExtension(i):i}function kY(e,A){const t=Up[A];switch(t&&t.types[0]){case 5126:return e.getExtension("OES_texture_float_linear");case 5131:return e.getExtension("OES_texture_half_float_linear");default:return!0}}const TY=[9729,9728],LS=globalThis.WebGLBuffer||function(){};class Mo extends Kn{get[Symbol.toStringTag](){return"Texture"}static isSupported(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{format:i,linearFiltering:n}=t;let r=!0;return i&&(r=r&&MY(A,i),r=r&&(!n||kY(A,i))),r}constructor(A,t){const{id:i=qr("texture"),handle:n,target:r}=t;super(A,{id:i,handle:n}),this.target=r,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 A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=A.data;if(t instanceof Promise)return t.then(f=>this.initialize(Object.assign({},A,{pixels:f,data:f}))),this;const i=typeof HTMLVideoElement!="undefined"&&t instanceof HTMLVideoElement;if(i&&t.readyStatethis.initialize(A)),this;const{pixels:n=null,format:r=6408,border:o=0,recreate:s=!1,parameters:a={},pixelStore:g={},textureUnit:I=void 0}=A;t||(t=n);let{width:l,height:c,dataFormat:C,type:B,compressed:u=!1,mipmaps:E=!0}=A;const{depth:h=0}=A;return{width:l,height:c,compressed:u,dataFormat:C,type:B}=this._deduceParameters({format:r,type:B,dataFormat:C,compressed:u,data:t,width:l,height:c}),this.width=l,this.height=c,this.depth=h,this.format=r,this.type=B,this.dataFormat=C,this.border=o,this.textureUnit=I,Number.isFinite(this.textureUnit)&&(this.gl.activeTexture(33984+this.textureUnit),this.gl.bindTexture(this.target,this.handle)),E&&this._isNPOT()&&(DA.warn("texture: ".concat(this," is Non-Power-Of-Two, disabling mipmaping"))(),E=!1,this._updateForNPOT(a)),this.mipmaps=E,this.setImageData({data:t,width:l,height:c,depth:h,format:r,type:B,dataFormat:C,border:o,mipmaps:E,parameters:g,compressed:u}),E&&this.generateMipmap(),this.setParameters(a),s&&(this.data=t),i&&(this._video={video:t,parameters:a,lastTime:t.readyState>=HTMLVideoElement.HAVE_CURRENT_DATA?t.currentTime:-1}),this}update(){if(this._video){const{video:A,parameters:t,lastTime:i}=this._video;if(i===A.currentTime||A.readyState0&&arguments[0]!==void 0?arguments[0]:{};return this._isNPOT()?(DA.warn("texture: ".concat(this," is Non-Power-Of-Two, disabling mipmaping"))(),this):(this.mipmaps=!0,this.gl.bindTexture(this.target,this.handle),ui(this.gl,A,()=>{this.gl.generateMipmap(this.target)}),this.gl.bindTexture(this.target,null),this)}setImageData(A){this._trackDeallocatedMemory("Texture");const{target:t=this.target,pixels:i=null,level:n=0,format:r=this.format,border:o=this.border,offset:s=0,parameters:a={}}=A;let{data:g=null,type:I=this.type,width:l=this.width,height:c=this.height,dataFormat:C=this.dataFormat,compressed:B=!1}=A;g||(g=i),{type:I,dataFormat:C,compressed:B,width:l,height:c}=this._deduceParameters({format:r,type:I,dataFormat:C,compressed:B,data:g,width:l,height:c});const{gl:u}=this;u.bindTexture(this.target,this.handle);let E=null;({data:g,dataType:E}=this._getDataType({data:g,compressed:B}));let h,f=0;if(ui(this.gl,a,()=>{switch(E){case"null":u.texImage2D(t,n,r,l,c,o,C,I,g);break;case"typed-array":u.texImage2D(t,n,r,l,c,o,C,I,g,s);break;case"buffer":h=Ft(u),h.bindBuffer(35052,g.handle||g),h.texImage2D(t,n,r,l,c,o,C,I,s),h.bindBuffer(35052,null);break;case"browser-object":ie(u)?u.texImage2D(t,n,r,l,c,o,C,I,g):u.texImage2D(t,n,r,C,I,g);break;case"compressed":for(const[Q,d]of g.entries())u.compressedTexImage2D(t,Q,d.format,d.width,d.height,o,d.data),f+=d.levelSize;break;default:cA(!1,"Unknown image data type")}}),E==="compressed")this._trackAllocatedMemory(f,"Texture");else if(g&&g.byteLength)this._trackAllocatedMemory(g.byteLength,"Texture");else{const Q=SL[this.dataFormat]||4,d=DL[this.type]||1;this._trackAllocatedMemory(this.width*this.height*Q*d,"Texture")}return this.loaded=!0,this}setSubImageData(A){let{target:t=this.target,pixels:i=null,data:n=null,x:r=0,y:o=0,width:s=this.width,height:a=this.height,level:g=0,format:I=this.format,type:l=this.type,dataFormat:c=this.dataFormat,compressed:C=!1,offset:B=0,border:u=this.border,parameters:E={}}=A;if({type:l,dataFormat:c,compressed:C,width:s,height:a}=this._deduceParameters({format:I,type:l,dataFormat:c,compressed:C,data:n,width:s,height:a}),cA(this.depth===0,"texSubImage not supported for 3D textures"),n||(n=i),n&&n.data){const h=n;n=h.data,s=h.shape[0],a=h.shape[1]}n instanceof we&&(n=n.handle),this.gl.bindTexture(this.target,this.handle),ui(this.gl,E,()=>{if(C)this.gl.compressedTexSubImage2D(t,g,r,o,s,a,I,n);else if(n===null)this.gl.texSubImage2D(t,g,r,o,s,a,c,l,null);else if(ArrayBuffer.isView(n))this.gl.texSubImage2D(t,g,r,o,s,a,c,l,n,B);else if(n instanceof LS){const h=Ft(this.gl);h.bindBuffer(35052,n),h.texSubImage2D(t,g,r,o,s,a,c,l,B),h.bindBuffer(35052,null)}else ie(this.gl)?Ft(this.gl).texSubImage2D(t,g,r,o,s,a,c,l,n):this.gl.texSubImage2D(t,g,r,o,c,l,n)}),this.gl.bindTexture(this.target,null)}copyFramebuffer(){return DA.error("Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})")(),null}getActiveUnit(){return this.gl.getParameter(34016)-33984}bind(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.textureUnit;const{gl:t}=this;return A!==void 0&&(this.textureUnit=A,t.activeTexture(33984+A)),t.bindTexture(this.target,this.handle),A}unbind(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.textureUnit;const{gl:t}=this;return A!==void 0&&(this.textureUnit=A,t.activeTexture(33984+A)),t.bindTexture(this.target,null),A}_getDataType(A){let{data:t,compressed:i=!1}=A;return i?{data:t,dataType:"compressed"}:t===null?{data:t,dataType:"null"}:ArrayBuffer.isView(t)?{data:t,dataType:"typed-array"}:t instanceof we?{data:t.handle,dataType:"buffer"}:t instanceof LS?{data:t,dataType:"buffer"}:{data:t,dataType:"browser-object"}}_deduceParameters(A){const{format:t,data:i}=A;let{width:n,height:r,dataFormat:o,type:s,compressed:a}=A;const g=Up[t];return o=o||g&&g.dataFormat,s=s||g&&g.types[0],a=a||g&&g.compressed,{width:n,height:r}=this._deduceImageSize(i,n,r),{dataFormat:o,type:s,compressed:a,width:n,height:r,format:t,data:i}}_deduceImageSize(A,t,i){let n;return typeof ImageData!="undefined"&&A instanceof ImageData?n={width:A.width,height:A.height}:typeof HTMLImageElement!="undefined"&&A instanceof HTMLImageElement?n={width:A.naturalWidth,height:A.naturalHeight}:typeof HTMLCanvasElement!="undefined"&&A instanceof HTMLCanvasElement?n={width:A.width,height:A.height}:typeof ImageBitmap!="undefined"&&A instanceof ImageBitmap?n={width:A.width,height:A.height}:typeof HTMLVideoElement!="undefined"&&A instanceof HTMLVideoElement?n={width:A.videoWidth,height:A.videoHeight}:A?n={width:t,height:i}:n={width:t>=0?t:1,height:i>=0?i:1},cA(n,"Could not deduced texture size"),cA(t===void 0||n.width===t,"Deduced texture width does not match supplied width"),cA(i===void 0||n.height===i,"Deduced texture height does not match supplied height"),n}_createHandle(){return this.gl.createTexture()}_deleteHandle(){this.gl.deleteTexture(this.handle),this._trackDeallocatedMemory("Texture")}_getParameter(A){switch(A){case 4096:return this.width;case 4097:return this.height;default:this.gl.bindTexture(this.target,this.handle);const t=this.gl.getTexParameter(this.target,A);return this.gl.bindTexture(this.target,null),t}}_setParameter(A,t){switch(this.gl.bindTexture(this.target,this.handle),t=this._getNPOTParam(A,t),A){case 33082:case 33083:this.gl.texParameterf(this.handle,A,t);break;case 4096:case 4097:cA(!1);break;default:this.gl.texParameteri(this.target,A,t);break}return this.gl.bindTexture(this.target,null),this}_isNPOT(){return ie(this.gl)||!this.width||!this.height?!1:!FS(this.width)||!FS(this.height)}_updateForNPOT(A){A[this.gl.TEXTURE_MIN_FILTER]===void 0&&(A[this.gl.TEXTURE_MIN_FILTER]=this.gl.LINEAR),A[this.gl.TEXTURE_WRAP_S]===void 0&&(A[this.gl.TEXTURE_WRAP_S]=this.gl.CLAMP_TO_EDGE),A[this.gl.TEXTURE_WRAP_T]===void 0&&(A[this.gl.TEXTURE_WRAP_T]=this.gl.CLAMP_TO_EDGE)}_getNPOTParam(A,t){if(this._isNPOT())switch(A){case 10241:TY.indexOf(t)===-1&&(t=9729);break;case 10242:case 10243:t!==33071&&(t=33071);break}return t}}let UY="";function PY(e,A){return cA(typeof e=="string"),e=UY+e,new Promise((t,i)=>{try{const n=new Image;n.onload=()=>t(n),n.onerror=()=>i(new Error("Could not load image ".concat(e,"."))),n.crossOrigin=A&&A.crossOrigin||"anonymous",n.src=e}catch(n){i(n)}})}class Pt extends Mo{get[Symbol.toStringTag](){return"Texture2D"}static isSupported(A,t){return Mo.isSupported(A,t)}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};KE(A),(t instanceof Promise||typeof t=="string")&&(t={data:t}),typeof t.data=="string"&&(t=Object.assign({},t,{data:PY(t.data)})),super(A,Object.assign({},t,{target:3553})),this.initialize(t),Object.seal(this)}}const nd=[34069,34070,34071,34072,34073,34074];class RL extends Mo{get[Symbol.toStringTag](){return"TextureCube"}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};KE(A),super(A,Object.assign({},t,{target:34067})),this.initialize(t),Object.seal(this)}initialize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{mipmaps:t=!0,parameters:i={}}=A;return this.opts=A,this.setCubeMapImageData(A).then(()=>{this.loaded=!0,t&&this.generateMipmap(A),this.setParameters(i)}),this}subImage(A){let{face:t,data:i,x:n=0,y:r=0,mipmapLevel:o=0}=A;return this._subImage({target:t,data:i,x:n,y:r,mipmapLevel:o})}async setCubeMapImageData(A){let{width:t,height:i,pixels:n,data:r,border:o=0,format:s=6408,type:a=5121}=A;const{gl:g}=this,I=n||r,l=await Promise.all(nd.map(c=>{const C=I[c];return Promise.all(Array.isArray(C)?C:[C])}));this.bind(),nd.forEach((c,C)=>{l[C].length>1&&this.opts.mipmaps!==!1&&DA.warn("".concat(this.id," has mipmap and multiple LODs."))(),l[C].forEach((B,u)=>{t&&i?g.texImage2D(c,u,s,t,i,o,s,a,B):g.texImage2D(c,u,s,s,a,B)})}),this.unbind()}setImageDataForFace(A){const{face:t,width:i,height:n,pixels:r,data:o,border:s=0,format:a=6408,type:g=5121}=A,{gl:I}=this,l=r||o;return this.bind(),l instanceof Promise?l.then(c=>this.setImageDataForFace(Object.assign({},A,{face:t,data:c,pixels:c}))):this.width||this.height?I.texImage2D(t,0,a,i,n,s,a,g,l):I.texImage2D(t,0,a,a,g,l),this}}RL.FACES=nd;class xL extends Mo{get[Symbol.toStringTag](){return"Texture3D"}static isSupported(A){return ie(A)}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Ft(A),t=Object.assign({depth:1},t,{target:32879,unpackFlipY:!1}),super(A,t),this.initialize(t),Object.seal(this)}setImageData(A){let{level:t=0,dataFormat:i=6408,width:n,height:r,depth:o=1,border:s=0,format:a,type:g=5121,offset:I=0,data:l,parameters:c={}}=A;if(this._trackDeallocatedMemory("Texture"),this.gl.bindTexture(this.target,this.handle),ui(this.gl,c,()=>{ArrayBuffer.isView(l)&&this.gl.texImage3D(this.target,t,i,n,r,o,s,a,g,l),l instanceof we&&(this.gl.bindBuffer(35052,l.handle),this.gl.texImage3D(this.target,t,i,n,r,o,s,a,g,I))}),l&&l.byteLength)this._trackAllocatedMemory(l.byteLength,"Texture");else{const C=SL[this.dataFormat]||4,B=DL[this.type]||1;this._trackAllocatedMemory(this.width*this.height*this.depth*C*B,"Texture")}return this.loaded=!0,this}}const ro="EXT_color_buffer_float";var bS={[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:ro,bpp:2},[33327]:{gl2:ro,bpp:4},[34842]:{gl2:ro,bpp:8},[33326]:{gl2:ro,bpp:4},[33328]:{gl2:ro,bpp:8},[34836]:{gl2:ro,bpp:16},[35898]:{gl2:ro,bpp:4}};function HY(e,A,t){const i=t[A];if(!i)return!1;const n=ie(e)&&i.gl2||i.gl1;return typeof n=="string"?e.getExtension(n):n}class Ps extends Kn{get[Symbol.toStringTag](){return"Renderbuffer"}static isSupported(A){let{format:t}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{format:null};return!t||HY(A,t,bS)}static getSamplesForFormat(A,t){let{format:i}=t;return A.getInternalformatParameter(36161,i,32937)}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(A,t),this.initialize(t),Object.seal(this)}initialize(A){let{format:t,width:i=1,height:n=1,samples:r=0}=A;return cA(t,"Needs format"),this._trackDeallocatedMemory(),this.gl.bindRenderbuffer(36161,this.handle),r!==0&&ie(this.gl)?this.gl.renderbufferStorageMultisample(36161,r,t,i,n):this.gl.renderbufferStorage(36161,t,i,n),this.format=t,this.width=i,this.height=n,this.samples=r,this._trackAllocatedMemory(this.width*this.height*(this.samples||1)*bS[this.format].bpp),this}resize(A){let{width:t,height:i}=A;return t!==this.width||i!==this.height?this.initialize({width:t,height:i,format:this.format,samples:this.samples}):this}_createHandle(){return this.gl.createRenderbuffer()}_deleteHandle(){this.gl.deleteRenderbuffer(this.handle),this._trackDeallocatedMemory()}_bindHandle(A){this.gl.bindRenderbuffer(36161,A)}_syncHandle(A){this.format=this.getParameter(36164),this.width=this.getParameter(36162),this.height=this.getParameter(36163),this.samples=this.getParameter(36011)}_getParameter(A){return this.gl.bindRenderbuffer(36161,this.handle),this.gl.getRenderbufferParameter(36161,A)}}const qY=256,JY=1024,OY=16384,GS=6144,_S=6145,MS=6146,kS=34041,FL="clear: bad arguments";function Pp(e){let{framebuffer:A=null,color:t=null,depth:i=null,stencil:n=null}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r={};A&&(r.framebuffer=A);let o=0;t&&(o|=OY,t!==!0&&(r.clearColor=t)),i&&(o|=qY,i!==!0&&(r.clearDepth=i)),n&&(o|=JY,i!==!0&&(r.clearStencil=i)),cA(o!==0,FL),ui(e,r,()=>{e.clear(o)})}function YY(e){let{framebuffer:A=null,buffer:t=GS,drawBuffer:i=0,value:n=[0,0,0,0]}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Ft(e),ui(e,{framebuffer:A},()=>{switch(t){case GS:switch(n.constructor){case Int32Array:e.clearBufferiv(t,i,n);break;case Uint32Array:e.clearBufferuiv(t,i,n);break;case Float32Array:default:e.clearBufferfv(t,i,n)}break;case _S:e.clearBufferfv(_S,0,[n]);break;case MS:e.clearBufferiv(MS,0,[n]);break;case kS:const[r,o]=n;e.clearBufferfi(kS,0,r,o);break;default:cA(!1,FL)}})}function KY(e){switch(e){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 cA(!1),0}}function VE(e){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{sourceX:t=0,sourceY:i=0,sourceFormat:n=6408}=A;let{sourceAttachment:r=36064,target:o=null,sourceWidth:s,sourceHeight:a,sourceType:g}=A;const{framebuffer:I,deleteFramebuffer:l}=NL(e);cA(I);const{gl:c,handle:C,attachments:B}=I;s=s||I.width,a=a||I.height,r===36064&&C===null&&(r=1028),cA(B[r]),g=g||B[r].type,o=WY(o,g,n,s,a),g=g||td(o);const u=c.bindFramebuffer(36160,C);return c.readPixels(t,i,s,a,n,g,o),c.bindFramebuffer(36160,u||null),l&&I.delete(),o}function TS(e){let{sourceAttachment:A=36064,targetMaxHeight:t=Number.MAX_SAFE_INTEGER}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=VE(e,{sourceAttachment:A}),{width:n,height:r}=e;for(;r>t;)({data:i,width:n,height:r}=NY({data:i,width:n,height:r}));FY({data:i,width:n,height:r});const o=document.createElement("canvas");o.width=n,o.height=r;const s=o.getContext("2d"),a=s.createImageData(n,r);return a.data.set(i),s.putImageData(a,0,0),o.toDataURL()}function VY(e,A){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{sourceX:i=0,sourceY:n=0,targetMipmaplevel:r=0,targetInternalFormat:o=6408}=t;let{targetX:s,targetY:a,targetZ:g,width:I,height:l}=t;const{framebuffer:c,deleteFramebuffer:C}=NL(e);cA(c);const{gl:B,handle:u}=c,E=typeof s!="undefined"||typeof a!="undefined"||typeof g!="undefined";s=s||0,a=a||0,g=g||0;const h=B.bindFramebuffer(36160,u);cA(A);let f=null;if(A instanceof Mo&&(f=A,I=Number.isFinite(I)?I:f.width,l=Number.isFinite(l)?l:f.height,f.bind(0),A=f.target),!E)B.copyTexImage2D(A,r,o,i,n,I,l,0);else switch(A){case 3553:case 34067:B.copyTexSubImage2D(A,r,s,a,i,n,I,l);break;case 35866:case 32879:Ft(B).copyTexSubImage3D(A,r,s,a,g,i,n,I,l);break}return f&&f.unbind(),B.bindFramebuffer(36160,h||null),C&&c.delete(),f}function NL(e){return e instanceof $e?{framebuffer:e,deleteFramebuffer:!1}:{framebuffer:tK(e),deleteFramebuffer:!0}}function WY(e,A,t,i,n){if(e)return e;A=A||5121;const r=KI(A,{clamped:!1}),o=KY(t);return new r(i*n*o)}const De={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 zY(e){const A=new Pt(e,{format:6408,type:5126,dataFormat:6408}),t=new $e(e,{id:"test-framebuffer",check:!1,attachments:{[36064]:A}}),i=t.getStatus();return A.delete(),t.delete(),i===36053}var LL={[De.WEBGL2]:[!1,!0],[De.VERTEX_ARRAY_OBJECT]:["OES_vertex_array_object",!0],[De.TIMER_QUERY]:["EXT_disjoint_timer_query","EXT_disjoint_timer_query_webgl2"],[De.INSTANCED_RENDERING]:["ANGLE_instanced_arrays",!0],[De.MULTIPLE_RENDER_TARGETS]:["WEBGL_draw_buffers",!0],[De.ELEMENT_INDEX_UINT32]:["OES_element_index_uint",!0],[De.BLEND_EQUATION_MINMAX]:["EXT_blend_minmax",!0],[De.FLOAT_BLEND]:["EXT_float_blend"],[De.COLOR_ENCODING_SRGB]:["EXT_sRGB",!0],[De.TEXTURE_DEPTH]:["WEBGL_depth_texture",!0],[De.TEXTURE_FLOAT]:["OES_texture_float",!0],[De.TEXTURE_HALF_FLOAT]:["OES_texture_half_float",!0],[De.TEXTURE_FILTER_LINEAR_FLOAT]:["OES_texture_float_linear"],[De.TEXTURE_FILTER_LINEAR_HALF_FLOAT]:["OES_texture_half_float_linear"],[De.TEXTURE_FILTER_ANISOTROPIC]:["EXT_texture_filter_anisotropic"],[De.COLOR_ATTACHMENT_RGBA32F]:[zY,"EXT_color_buffer_float"],[De.COLOR_ATTACHMENT_FLOAT]:[!1,"EXT_color_buffer_float"],[De.COLOR_ATTACHMENT_HALF_FLOAT]:["EXT_color_buffer_half_float"],[De.GLSL_FRAG_DATA]:["WEBGL_draw_buffers",!0],[De.GLSL_FRAG_DEPTH]:["EXT_frag_depth",!0],[De.GLSL_DERIVATIVES]:["OES_standard_derivatives",!0],[De.GLSL_TEXTURE_LOD]:["EXT_shader_texture_lod",!0]};const jY=2;function rd(e,A){return Hp(e,A)}function Hp(e,A){return A=Array.isArray(A)?A:[A],A.every(t=>bL(e,t))}function XY(e){e.luma=e.luma||{},e.luma.caps=e.luma.caps||{};for(const A in LL)e.luma.caps[A]===void 0&&(e.luma.caps[A]=bL(e,A));return e.luma.caps}function bL(e,A){return e.luma=e.luma||{},e.luma.caps=e.luma.caps||{},e.luma.caps[A]===void 0&&(e.luma.caps[A]=ZY(e,A)),e.luma.caps[A]||DA.log(jY,"Feature: ".concat(A," not supported"))(),e.luma.caps[A]}function ZY(e,A){const t=LL[A];cA(t,A);let i;const n=ie(e)&&t[1]||t[0];if(typeof n=="function")i=n(e);else if(Array.isArray(n)){i=!0;for(const r of n)i=i&&Boolean(e.getExtension(r))}else typeof n=="string"?i=Boolean(e.getExtension(n)):typeof n=="boolean"?i=n:cA(!1);return i}const US="Multiple render targets not supported";class $e extends Kn{get[Symbol.toStringTag](){return"Framebuffer"}static isSupported(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{colorBufferFloat:i,colorBufferHalfFloat:n}=t;let r=!0;return i&&(r=Boolean(A.getExtension("EXT_color_buffer_float")||A.getExtension("WEBGL_color_buffer_float")||A.getExtension("OES_texture_float"))),n&&(r=r&&Boolean(A.getExtension("EXT_color_buffer_float")||A.getExtension("EXT_color_buffer_half_float"))),r}static getDefaultFramebuffer(A){return A.luma=A.luma||{},A.luma.defaultFramebuffer=A.luma.defaultFramebuffer||new $e(A,{id:"default-framebuffer",handle:null,attachments:{}}),A.luma.defaultFramebuffer}get MAX_COLOR_ATTACHMENTS(){const A=Ft(this.gl);return A.getParameter(A.MAX_COLOR_ATTACHMENTS)}get MAX_DRAW_BUFFERS(){const A=Ft(this.gl);return A.getParameter(A.MAX_DRAW_BUFFERS)}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(A,t),this.width=null,this.height=null,this.attachments={},this.readBuffer=36064,this.drawBuffers=[36064],this.ownResources=[],this.initialize(t),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(A){let{width:t=1,height:i=1,attachments:n=null,color:r=!0,depth:o=!0,stencil:s=!1,check:a=!0,readBuffer:g=void 0,drawBuffers:I=void 0}=A;if(cA(t>=0&&i>=0,"Width and height need to be integers"),this.width=t,this.height=i,n)for(const l in n){const c=n[l];(Array.isArray(c)?c[0]:c).resize({width:t,height:i})}else n=this._createDefaultAttachments(r,o,s,t,i);this.update({clearAttachments:!0,attachments:n,readBuffer:g,drawBuffers:I}),n&&a&&this.checkStatus()}delete(){for(const A of this.ownResources)A.delete();return super.delete(),this}update(A){let{attachments:t={},readBuffer:i,drawBuffers:n,clearAttachments:r=!1,resizeAttachments:o=!0}=A;this.attach(t,{clearAttachments:r,resizeAttachments:o});const{gl:s}=this,a=s.bindFramebuffer(36160,this.handle);return i&&this._setReadBuffer(i),n&&this._setDrawBuffers(n),s.bindFramebuffer(36160,a||null),this}resize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{width:t,height:i}=A;if(this.handle===null)return cA(t===void 0&&i===void 0),this.width=this.gl.drawingBufferWidth,this.height=this.gl.drawingBufferHeight,this;t===void 0&&(t=this.gl.drawingBufferWidth),i===void 0&&(i=this.gl.drawingBufferHeight),t!==this.width&&i!==this.height&&DA.log(2,"Resizing framebuffer ".concat(this.id," to ").concat(t,"x").concat(i))();for(const n in this.attachments)this.attachments[n].resize({width:t,height:i});return this.width=t,this.height=i,this}attach(A){let{clearAttachments:t=!1,resizeAttachments:i=!0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const n={};t&&Object.keys(this.attachments).forEach(o=>{n[o]=null}),Object.assign(n,A);const r=this.gl.bindFramebuffer(36160,this.handle);for(const o in n){cA(o!==void 0,"Misspelled framebuffer binding point?");const s=Number(o),a=n[s];let g=a;if(!g)this._unattach(s);else if(g instanceof Ps)this._attachRenderbuffer({attachment:s,renderbuffer:g});else if(Array.isArray(a)){const[I,l=0,c=0]=a;g=I,this._attachTexture({attachment:s,texture:I,layer:l,level:c})}else this._attachTexture({attachment:s,texture:g,layer:0,level:0});i&&g&&g.resize({width:this.width,height:this.height})}this.gl.bindFramebuffer(36160,r||null),Object.assign(this.attachments,A),Object.keys(this.attachments).filter(o=>!this.attachments[o]).forEach(o=>{delete this.attachments[o]})}checkStatus(){const A=this.getStatus();if(A!==36053)throw new Error(AK(A));return this}getStatus(){const{gl:A}=this,t=A.bindFramebuffer(36160,this.handle),i=A.checkFramebufferStatus(36160);return A.bindFramebuffer(36160,t||null),i}clear(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{color:t,depth:i,stencil:n,drawBuffers:r=[]}=A,o=this.gl.bindFramebuffer(36160,this.handle);return(t||i||n)&&Pp(this.gl,{color:t,depth:i,stencil:n}),r.forEach((s,a)=>{YY(this.gl,{drawBuffer:a,value:s})}),this.gl.bindFramebuffer(36160,o||null),this}readPixels(){return DA.error("Framebuffer.readPixels() is no logner supported, use readPixelsToArray(framebuffer)")(),null}readPixelsToBuffer(){return DA.error("Framebuffer.readPixelsToBuffer()is no logner supported, use readPixelsToBuffer(framebuffer)")(),null}copyToDataUrl(){return DA.error("Framebuffer.copyToDataUrl() is no logner supported, use copyToDataUrl(framebuffer)")(),null}copyToImage(){return DA.error("Framebuffer.copyToImage() is no logner supported, use copyToImage(framebuffer)")(),null}copyToTexture(){return DA.error("Framebuffer.copyToTexture({...}) is no logner supported, use copyToTexture(source, target, opts})")(),null}blit(){return DA.error("Framebuffer.blit({...}) is no logner supported, use blit(source, target, opts)")(),null}invalidate(A){let{attachments:t=[],x:i=0,y:n=0,width:r,height:o}=A;const s=Ft(this.gl),a=s.bindFramebuffer(36008,this.handle);return i===0&&n===0&&r===void 0&&o===void 0?s.invalidateFramebuffer(36008,t):s.invalidateFramebuffer(36008,t,i,n,r,o),s.bindFramebuffer(36008,a),this}getAttachmentParameter(A,t,i){let n=this._getAttachmentParameterFallback(t);return n===null&&(this.gl.bindFramebuffer(36160,this.handle),n=this.gl.getFramebufferAttachmentParameter(36160,A,t),this.gl.bindFramebuffer(36160,null)),i&&n>1e3&&(n=Nr(this.gl,n)),n}getAttachmentParameters(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:36064,t=arguments.length>1?arguments[1]:void 0,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.constructor.ATTACHMENT_PARAMETERS||[];const n={};for(const r of i){const o=t?Nr(this.gl,r):r;n[o]=this.getAttachmentParameter(A,r,t)}return n}getParameters(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;const t=Object.keys(this.attachments),i={};for(const n of t){const r=Number(n),o=A?Nr(this.gl,r):r;i[o]=this.getAttachmentParameters(r,A)}return i}show(){return typeof window!="undefined"&&window.open(TS(this),"luma-debug-texture"),this}log(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";if(A>DA.level||typeof window=="undefined")return this;t=t||"Framebuffer ".concat(this.id);const i=TS(this,{targetMaxHeight:100});return DA.image({logLevel:A,message:t,image:i},t)(),this}bind(){let{target:A=36160}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.gl.bindFramebuffer(A,this.handle),this}unbind(){let{target:A=36160}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.gl.bindFramebuffer(A,null),this}_createDefaultAttachments(A,t,i,n,r){let o=null;return A&&(o=o||{},o[36064]=new Pt(this.gl,{id:"".concat(this.id,"-color0"),pixels:null,format:6408,type:5121,width:n,height:r,mipmaps:!1,parameters:{[10241]:9729,[10240]:9729,[10242]:33071,[10243]:33071}}),this.ownResources.push(o[36064])),t&&i?(o=o||{},o[33306]=new Ps(this.gl,{id:"".concat(this.id,"-depth-stencil"),format:35056,width:n,height:111}),this.ownResources.push(o[33306])):t?(o=o||{},o[36096]=new Ps(this.gl,{id:"".concat(this.id,"-depth"),format:33189,width:n,height:r}),this.ownResources.push(o[36096])):i&&cA(!1),o}_unattach(A){const t=this.attachments[A];!t||(t instanceof Ps?this.gl.framebufferRenderbuffer(36160,A,36161,null):this.gl.framebufferTexture2D(36160,A,3553,null,0),delete this.attachments[A])}_attachRenderbuffer(A){let{attachment:t=36064,renderbuffer:i}=A;const{gl:n}=this;n.framebufferRenderbuffer(36160,t,36161,i.handle),this.attachments[t]=i}_attachTexture(A){let{attachment:t=36064,texture:i,layer:n,level:r}=A;const{gl:o}=this;switch(o.bindTexture(i.target,i.handle),i.target){case 35866:case 32879:Ft(o).framebufferTextureLayer(36160,t,i.target,r,n);break;case 34067:const a=$Y(n);o.framebufferTexture2D(36160,t,a,i.handle,r);break;case 3553:o.framebufferTexture2D(36160,t,3553,i.handle,r);break;default:cA(!1,"Illegal texture type")}o.bindTexture(i.target,null),this.attachments[t]=i}_setReadBuffer(A){const t=NO(this.gl);t?t.readBuffer(A):cA(A===36064||A===1029,US),this.readBuffer=A}_setDrawBuffers(A){const{gl:t}=this,i=Ft(t);if(i)i.drawBuffers(A);else{const n=t.getExtension("WEBGL_draw_buffers");n?n.drawBuffersWEBGL(A):cA(A.length===1&&(A[0]===36064||A[0]===1029),US)}this.drawBuffers=A}_getAttachmentParameterFallback(A){const t=XY(this.gl);switch(A){case 36052:return t.WEBGL2?null:0;case 33298:case 33299:case 33300:case 33301:case 33302:case 33303:return t.WEBGL2?null:8;case 33297:return t.WEBGL2?null:5125;case 33296:return!t.WEBGL2&&!t.EXT_sRGB?9729:null;default:return null}}_createHandle(){return this.gl.createFramebuffer()}_deleteHandle(){this.gl.deleteFramebuffer(this.handle)}_bindHandle(A){return this.gl.bindFramebuffer(36160,A)}}function $Y(e){return e<34069?e+34069:e}function AK(e){return($e.STATUS||{})[e]||"Framebuffer error ".concat(e)}const eK=[36049,36048,33296,33298,33299,33300,33301,33302,33303];$e.ATTACHMENT_PARAMETERS=eK;function GL(e,A){cA(e instanceof Pt||e instanceof RL||e instanceof xL);const t=e.constructor,{gl:i,width:n,height:r,format:o,type:s,dataFormat:a,border:g,mipmaps:I}=e,l=Object.assign({width:n,height:r,format:o,type:s,dataFormat:a,border:g,mipmaps:I},A);return new t(i,l)}function tK(e,A){const{gl:t,width:i,height:n,id:r}=e;return new $e(t,Object.assign({},A,{id:"framebuffer-for-".concat(r),width:i,height:n,attachments:{[36064]:e}}))}function bC(e){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"unnamed";const t=/#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/,i=e.match(t);return i?i[1]:A}const iK=35632,nK=35633;function rK(e){switch(e){case iK:return"fragment";case nK:return"vertex";default:return"unknown type"}}function oK(e,A,t,i){const n=e.split(/\r?\n/),r={},o={},s=i||bC(A)||"(unnamed)",a="".concat(rK(t)," shader ").concat(s);for(let I=0;I1&&arguments[1]!==void 0?arguments[1]:1,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:": ";const i=e.split(/\r?\n/),n=String(i.length+A-1).length;return i.map((r,o)=>{const s=String(o+A),a=s.length;return _L(s,n-a)+t+r})}function _L(e,A){let t="";for(let i=0;i=2&&t[0]==="#version"){const i=parseInt(t[1],10);Number.isFinite(i)&&(A=i)}return A}const aK="Shader: GLSL source code must be a JavaScript string";class VI extends Kn{get[Symbol.toStringTag](){return"Shader"}static getTypeName(A){switch(A){case 35633:return"vertex-shader";case 35632:return"fragment-shader";default:return cA(!1),"unknown"}}constructor(A,t){KE(A),cA(typeof t.source=="string",aK);const i=bC(t.source,null)||t.id||qr("unnamed ".concat(VI.getTypeName(t.shaderType)));super(A,{id:i}),this.shaderType=t.shaderType,this.source=t.source,this.initialize(t)}initialize(A){let{source:t}=A;const i=bC(t,null);i&&(this.id=qr(i)),this._compile(t)}getParameter(A){return this.gl.getShaderParameter(this.handle,A)}toString(){return"".concat(VI.getTypeName(this.shaderType),":").concat(this.id)}getName(){return bC(this.source)||"unnamed-shader"}getSource(){return this.gl.getShaderSource(this.handle)}getTranslatedSource(){const A=this.gl.getExtension("WEBGL_debug_shaders");return A?A.getTranslatedShaderSource(this.handle):"No translated source available. WEBGL_debug_shaders not implemented"}_compile(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.source;if(A.startsWith("#version ")||(A=`#version 100 -`.concat(A)),this.source=A,this.gl.shaderSource(this.handle,this.source),this.gl.compileShader(this.handle),!this.getParameter(35713)){const i=this.gl.getShaderInfoLog(this.handle),{shaderName:n,errors:r,warnings:o}=oK(i,this.source,this.shaderType,this.id);throw DA.error("GLSL compilation errors in ".concat(n,` -`).concat(r))(),DA.warn("GLSL compilation warnings in ".concat(n,` -`).concat(o))(),new Error("GLSL compilation errors in ".concat(n))}}_deleteHandle(){this.gl.deleteShader(this.handle)}_getOptsFromHandle(){return{type:this.getParameter(35663),source:this.getSource()}}}class Ph extends VI{get[Symbol.toStringTag](){return"VertexShader"}constructor(A,t){typeof t=="string"&&(t={source:t}),super(A,Object.assign({},t,{shaderType:35633}))}_createHandle(){return this.gl.createShader(35633)}}class Hh extends VI{get[Symbol.toStringTag](){return"FragmentShader"}constructor(A,t){typeof t=="string"&&(t={source:t}),super(A,Object.assign({},t,{shaderType:35632}))}_createHandle(){return this.gl.createShader(35632)}}const gK={[5126]:Me.bind(null,"uniform1fv",Zt,1,St),[35664]:Me.bind(null,"uniform2fv",Zt,2,St),[35665]:Me.bind(null,"uniform3fv",Zt,3,St),[35666]:Me.bind(null,"uniform4fv",Zt,4,St),[5124]:Me.bind(null,"uniform1iv",nr,1,St),[35667]:Me.bind(null,"uniform2iv",nr,2,St),[35668]:Me.bind(null,"uniform3iv",nr,3,St),[35669]:Me.bind(null,"uniform4iv",nr,4,St),[35670]:Me.bind(null,"uniform1iv",nr,1,St),[35671]:Me.bind(null,"uniform2iv",nr,2,St),[35672]:Me.bind(null,"uniform3iv",nr,3,St),[35673]:Me.bind(null,"uniform4iv",nr,4,St),[35674]:Me.bind(null,"uniformMatrix2fv",Zt,4,yn),[35675]:Me.bind(null,"uniformMatrix3fv",Zt,9,yn),[35676]:Me.bind(null,"uniformMatrix4fv",Zt,16,yn),[35678]:Bt,[35680]:Bt,[5125]:Me.bind(null,"uniform1uiv",vc,1,St),[36294]:Me.bind(null,"uniform2uiv",vc,2,St),[36295]:Me.bind(null,"uniform3uiv",vc,3,St),[36296]:Me.bind(null,"uniform4uiv",vc,4,St),[35685]:Me.bind(null,"uniformMatrix2x3fv",Zt,6,yn),[35686]:Me.bind(null,"uniformMatrix2x4fv",Zt,8,yn),[35687]:Me.bind(null,"uniformMatrix3x2fv",Zt,6,yn),[35688]:Me.bind(null,"uniformMatrix3x4fv",Zt,12,yn),[35689]:Me.bind(null,"uniformMatrix4x2fv",Zt,8,yn),[35690]:Me.bind(null,"uniformMatrix4x3fv",Zt,12,yn),[35678]:Bt,[35680]:Bt,[35679]:Bt,[35682]:Bt,[36289]:Bt,[36292]:Bt,[36293]:Bt,[36298]:Bt,[36299]:Bt,[36300]:Bt,[36303]:Bt,[36306]:Bt,[36307]:Bt,[36308]:Bt,[36311]:Bt},IK={},lK={},cK={},HS=[0];function qp(e,A,t,i){A===1&&typeof e=="boolean"&&(e=e?1:0),Number.isFinite(e)&&(HS[0]=e,e=HS);const n=e.length;if(n%A&&DA.warn("Uniform size should be multiples of ".concat(A),e)(),e instanceof t)return e;let r=i[n];r||(r=new t(n),i[n]=r);for(let o=0;o{const n=e!==i;return n&&(A.uniform1i(t,i),e=i),n}}function Me(e,A,t,i){let n=null,r=null;return(o,s,a)=>{const g=A(a,t),I=g.length;let l=!1;if(n===null)n=new Float32Array(I),r=I,l=!0;else{cA(r===I,"Uniform length cannot change.");for(let c=0;c=0&&this._addAttribute(a,r,o,s)}this.attributeInfos.sort((n,r)=>n.location-r.location)}_readVaryingsFromProgram(A){const{gl:t}=A;if(!ie(t))return;const i=t.getProgramParameter(A.handle,35971);for(let n=0;nn.location-r.location)}_addAttribute(A,t,i,n){const{type:r,components:o}=OS(i),s={type:r,size:n*o};this._inferProperties(A,t,s);const a={location:A,name:t,accessor:new ti(s)};this.attributeInfos.push(a),this.attributeInfosByLocation[A]=a,this.attributeInfosByName[a.name]=a}_inferProperties(A,t,i){/instance/i.test(t)&&(i.divisor=1)}_addVarying(A,t,i,n){const{type:r,components:o}=OS(i),s=new ti({type:r,size:n*o}),a={location:A,name:t,accessor:s};this.varyingInfos.push(a),this.varyingInfosByName[a.name]=a}}const YS=4,jK=35981,XK=["setVertexArray","setAttributes","setBuffers","unsetBuffers","use","getUniformCount","getUniformInfo","getUniformLocation","getUniformValue","getVarying","getFragDataLocation","getAttachedShaders","getAttributeCount","getAttributeLocation","getAttributeInfo"];class TL extends Kn{get[Symbol.toStringTag](){return"Program"}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(A,t),this.stubRemovedMethods("Program","v6.0",XK),this._isCached=!1,this.initialize(t),Object.seal(this),this._setId(t.id)}initialize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{hash:t,vs:i,fs:n,varyings:r,bufferMode:o=jK}=A;return this.hash=t||"",this.vs=typeof i=="string"?new Ph(this.gl,{id:"".concat(A.id,"-vs"),source:i}):i,this.fs=typeof n=="string"?new Hh(this.gl,{id:"".concat(A.id,"-fs"),source:n}):n,cA(this.vs instanceof Ph),cA(this.fs instanceof Hh),this.uniforms={},this._textureUniforms={},r&&r.length>0&&(Ft(this.gl),this.varyings=r,this.gl2.transformFeedbackVaryings(this.handle,r,o)),this._compileAndLink(),this._readUniformLocationsFromLinkedProgram(),this.configuration=new zK(this),this.setProps(A)}delete(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this._isCached?this:super.delete(A)}setProps(A){return"uniforms"in A&&this.setUniforms(A.uniforms),this}draw(A){let{logPriority:t,drawMode:i=4,vertexCount:n,offset:r=0,start:o,end:s,isIndexed:a=!1,indexType:g=5123,instanceCount:I=0,isInstanced:l=I>0,vertexArray:c=null,transformFeedback:C,framebuffer:B,parameters:u={},uniforms:E,samplers:h}=A;if((E||h)&&(DA.deprecated("Program.draw({uniforms})","Program.setUniforms(uniforms)")(),this.setUniforms(E||{})),DA.priority>=t){const f=B?B.id:"default",Q="mode=".concat(Nr(this.gl,i)," verts=").concat(n," ")+"instances=".concat(I," indexType=").concat(Nr(this.gl,g)," ")+"isInstanced=".concat(l," isIndexed=").concat(a," ")+"Framebuffer=".concat(f);DA.log(t,Q)()}return cA(c),this.gl.useProgram(this.handle),!this._areTexturesRenderable()||n===0||l&&I===0?!1:(c.bindForDraw(n,I,()=>{if(B!==void 0&&(u=Object.assign({},u,{framebuffer:B})),C){const f=WK(i);C.begin(f)}this._bindTextures(),ui(this.gl,u,()=>{a&&l?this.gl2.drawElementsInstanced(i,n,g,r,I):a&&ie(this.gl)&&!isNaN(o)&&!isNaN(s)?this.gl2.drawRangeElements(i,o,s,n,g,r):a?this.gl.drawElements(i,n,g,r):l?this.gl2.drawArraysInstanced(i,r,n,I):this.gl.drawArrays(i,r,n)}),C&&C.end()}),!0)}setUniforms(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};DA.priority>=2&&BK(A,this.id,this._uniformSetters),this.gl.useProgram(this.handle);for(const t in A){const i=A[t],n=this._uniformSetters[t];if(n){let r=i,o=!1;if(r instanceof $e&&(r=r.texture),r instanceof Mo)if(o=this.uniforms[t]!==i,o){n.textureIndex===void 0&&(n.textureIndex=this._textureIndexCounter++);const s=r,{textureIndex:a}=n;s.bind(a),r=a,this._textureUniforms[t]=s}else r=n.textureIndex;else this._textureUniforms[t]&&delete this._textureUniforms[t];(n(r)||o)&&uK(this.uniforms,t,i)}}return this}_areTexturesRenderable(){let A=!0;for(const t in this._textureUniforms){const i=this._textureUniforms[t];i.update(),A=A&&i.loaded}return A}_bindTextures(){for(const A in this._textureUniforms){const t=this._uniformSetters[A].textureIndex;this._textureUniforms[A].bind(t)}}_createHandle(){return this.gl.createProgram()}_deleteHandle(){this.gl.deleteProgram(this.handle)}_getOptionsFromHandle(A){const t=this.gl.getAttachedShaders(A),i={};for(const n of t)switch(this.gl.getShaderParameter(this.handle,35663)){case 35633:i.vs=new Ph({handle:n});break;case 35632:i.fs=new Hh({handle:n});break}return i}_getParameter(A){return this.gl.getProgramParameter(this.handle,A)}_setId(A){if(!A){const t=this._getName();this.id=qr(t)}}_getName(){let A=this.vs.getName()||this.fs.getName();return A=A.replace(/shader/i,""),A=A?"".concat(A,"-program"):"program",A}_compileAndLink(){const{gl:A}=this;if(A.attachShader(this.handle,this.vs.handle),A.attachShader(this.handle,this.fs.handle),DA.time(YS,"linkProgram for ".concat(this._getName()))(),A.linkProgram(this.handle),DA.timeEnd(YS,"linkProgram for ".concat(this._getName()))(),A.debug||DA.level>0){if(!A.getProgramParameter(this.handle,35714))throw new Error("Error linking: ".concat(A.getProgramInfoLog(this.handle)));if(A.validateProgram(this.handle),!A.getProgramParameter(this.handle,35715))throw new Error("Error validating: ".concat(A.getProgramInfoLog(this.handle)))}}_readUniformLocationsFromLinkedProgram(){const{gl:A}=this;this._uniformSetters={},this._uniformCount=this._getParameter(35718);for(let t=0;t1)for(let o=0;o1&&arguments[1]!==void 0?arguments[1]:[];const i=ie(A),n=Hp(A,De.TIMER_QUERY);let r=i||n;for(const o of t)switch(o){case"queries":r=r&&i;break;case"timers":r=r&&n;break;default:cA(!1)}return r}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(A,t),this.target=null,this._queryPending=!1,this._pollingPromise=null,Object.seal(this)}beginTimeElapsedQuery(){return this.begin(A5)}beginOcclusionQuery(){let{conservative:A=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.begin(A?n5:i5)}beginTransformFeedbackQuery(){return this.begin(t5)}begin(A){return this._queryPending?this:(this.target=A,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 A=this.gl2.getQueryParameter(this.handle,$K);return A&&(this._queryPending=!1),A}isTimerDisjoint(){return this.gl2.getParameter(e5)}getResult(){return this.gl2.getQueryParameter(this.handle,ZK)}getTimerMilliseconds(){return this.getResult()/1e6}createPoll(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Number.POSITIVE_INFINITY;if(this._pollingPromise)return this._pollingPromise;let t=0;return this._pollingPromise=new Promise((i,n)=>{const r=()=>{this.isResultAvailable()?(i(this.getResult()),this._pollingPromise=null):t++>A?(n("Timed out"),this._pollingPromise=null):requestAnimationFrame(r)};requestAnimationFrame(r)}),this._pollingPromise}_createHandle(){return bB.isSupported(this.gl)?this.gl2.createQuery():null}_deleteHandle(){this.gl2.deleteQuery(this.handle)}}class UL extends Kn{get[Symbol.toStringTag](){return"TransformFeedback"}static isSupported(A){return ie(A)}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Ft(A),super(A,t),this.initialize(t),this.stubRemovedMethods("TransformFeedback","v6.0",["pause","resume"]),Object.seal(this)}initialize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.buffers={},this.unused={},this.configuration=null,this.bindOnUse=!0,ha(this.buffers)||this.bind(()=>this._unbindBuffers()),this.setProps(A),this}setProps(A){"program"in A&&(this.configuration=A.program&&A.program.configuration),"configuration"in A&&(this.configuration=A.configuration),"bindOnUse"in A&&(A=A.bindOnUse),"buffers"in A&&this.setBuffers(A.buffers)}setBuffers(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.bind(()=>{for(const t in A)this.setBuffer(t,A[t])}),this}setBuffer(A,t){const i=this._getVaryingIndex(A),{buffer:n,byteSize:r,byteOffset:o}=this._getBufferParams(t);return i<0?(this.unused[A]=n,DA.warn("".concat(this.id," unused varying buffer ").concat(A))(),this):(this.buffers[i]=t,this.bindOnUse||this._bindBuffer(i,n,o,r),this)}begin(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.gl.bindTransformFeedback(36386,this.handle),this._bindBuffers(),this.gl.beginTransformFeedback(A),this}end(){return this.gl.endTransformFeedback(),this._unbindBuffers(),this.gl.bindTransformFeedback(36386,null),this}_getBufferParams(A){let t,i,n;return A instanceof we?n=A:(n=A.buffer,i=A.byteSize,t=A.byteOffset),(t!==void 0||i!==void 0)&&(t=t||0,i=i||n.byteLength-t),{buffer:n,byteOffset:t,byteSize:i}}_getVaryingInfo(A){return this.configuration&&this.configuration.getVaryingInfo(A)}_getVaryingIndex(A){if(this.configuration)return this.configuration.getVaryingInfo(A).location;const t=Number(A);return Number.isFinite(t)?t:-1}_bindBuffers(){if(this.bindOnUse)for(const A in this.buffers){const{buffer:t,byteSize:i,byteOffset:n}=this._getBufferParams(this.buffers[A]);this._bindBuffer(A,t,n,i)}}_unbindBuffers(){if(this.bindOnUse)for(const A in this.buffers)this._bindBuffer(A,null)}_bindBuffer(A,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,n=arguments.length>3?arguments[3]:void 0;const r=t&&t.handle;return!r||n===void 0?this.gl.bindBufferBase(35982,A,r):this.gl.bindBufferRange(35982,A,r,i,n),this}_createHandle(){return this.gl.createTransformFeedback()}_deleteHandle(){this.gl.deleteTransformFeedback(this.handle)}_bindHandle(A){this.gl.bindTransformFeedback(36386,this.handle)}}let Rc=null;function r5(e){return(!Rc||Rc.byteLength1&&arguments[1]!==void 0?arguments[1]:{}).constantAttributeZero?ie(A)||tL()==="Chrome":!0}static getDefaultArray(A){return A.luma=A.luma||{},A.luma.defaultVertexArray||(A.luma.defaultVertexArray=new ei(A,{handle:null,isDefaultArray:!0})),A.luma.defaultVertexArray}static getMaxAttributes(A){return ei.MAX_ATTRIBUTES=ei.MAX_ATTRIBUTES||A.getParameter(34921),ei.MAX_ATTRIBUTES}static setConstant(A,t,i){switch(i.constructor){case Float32Array:ei._setConstantFloatArray(A,t,i);break;case Int32Array:ei._setConstantIntArray(A,t,i);break;case Uint32Array:ei._setConstantUintArray(A,t,i);break;default:cA(!1)}}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const i=t.id||t.program&&t.program.id;super(A,Object.assign({},t,{id:i})),this.buffer=null,this.bufferValue=null,this.isDefaultArray=t.isDefaultArray||!1,this.gl2=A,this.initialize(t),Object.seal(this)}delete(){return super.delete(),this.buffer&&this.buffer.delete(),this}get MAX_ATTRIBUTES(){return ei.getMaxAttributes(this.gl)}initialize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.setProps(A)}setProps(A){return this}setElementBuffer(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return cA(!A||A.target===34963,a5),this.bind(()=>{this.gl.bindBuffer(34963,A?A.handle:null)}),this}setBuffer(A,t,i){if(t.target===34963)return this.setElementBuffer(t,i);const{size:n,type:r,stride:o,offset:s,normalized:a,integer:g,divisor:I}=i,{gl:l,gl2:c}=this;return A=Number(A),this.bind(()=>{l.bindBuffer(34962,t.handle),g?(cA(ie(l)),c.vertexAttribIPointer(A,n,r,o,s)):l.vertexAttribPointer(A,n,r,a,o,s),l.enableVertexAttribArray(A),c.vertexAttribDivisor(A,I||0)}),this}enable(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return!t&&A===0&&!ei.isSupported(this.gl,{constantAttributeZero:!0})||(A=Number(A),this.bind(()=>t?this.gl.enableVertexAttribArray(A):this.gl.disableVertexAttribArray(A))),this}getConstantBuffer(A,t){const i=this._normalizeConstantArrayValue(t),n=i.byteLength*A,r=i.length*A;let o=!this.buffer;if(this.buffer=this.buffer||new we(this.gl,n),o=o||this.buffer.reallocate(n),o=o||!this._compareConstantArrayValues(i,this.bufferValue),o){const s=o5(t.constructor,r);s5({target:s,source:i,start:0,count:r}),this.buffer.subData(s),this.bufferValue=t}return this.buffer}_normalizeConstantArrayValue(A){return Array.isArray(A)?new Float32Array(A):A}_compareConstantArrayValues(A,t){if(!A||!t||A.length!==t.length||A.constructor!==t.constructor)return!1;for(let i=0;i{switch(A){case 34373:return this.gl.getVertexAttribOffset(i,A);default:return this.gl.getVertexAttrib(i,A)}})}}const g5="VertexArray: attributes must be Buffers or constants (i.e. typed array)",I5=/^(.+)__LOCATION_([0-9]+)$/,l5=["setBuffers","setGeneric","clearBindings","setLocations","setGenericValues","setDivisor","enable","disable"];class c5{constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const i=t.id||t.program&&t.program.id;this.id=i,this.gl=A,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 ei(A),wL(this,"VertexArray","v6.0",l5),this.initialize(t),Object.seal(this)}delete(){this.buffer&&this.buffer.delete(),this.vertexArrayObject.delete()}initialize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.reset(),this.configuration=null,this.bindOnUse=!1,this.setProps(A)}reset(){this.elements=null,this.elementsAccessor=null;const{MAX_ATTRIBUTES:A}=this.vertexArrayObject;return this.values=new Array(A).fill(null),this.accessors=new Array(A).fill(null),this.unused={},this.drawParams=null,this}setProps(A){return"program"in A&&(this.configuration=A.program&&A.program.configuration),"configuration"in A&&(this.configuration=A.configuration),"attributes"in A&&this.setAttributes(A.attributes),"elements"in A&&this.setElementBuffer(A.elements),"bindOnUse"in A&&(A=A.bindOnUse),this}clearDrawParams(){this.drawParams=null}getDrawParams(){return this.drawParams=this.drawParams||this._updateDrawParams(),this.drawParams}setAttributes(A){return Object.assign(this.attributes,A),this.vertexArrayObject.bind(()=>{for(const t in A){const i=A[t];this._setAttribute(t,i)}this.gl.bindBuffer(34962,null)}),this}setElementBuffer(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return this.elements=A,this.elementsAccessor=t,this.clearDrawParams(),this.vertexArrayObject.setElementBuffer(A,t),this}setBuffer(A,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(t.target===34963)return this.setElementBuffer(t,i);const{location:n,accessor:r}=this._resolveLocationAndAccessor(A,t,t.accessor,i);return n>=0&&(this.values[n]=t,this.accessors[n]=r,this.clearDrawParams(),this.vertexArrayObject.setBuffer(n,t,r)),this}setConstant(A,t){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{location:n,accessor:r}=this._resolveLocationAndAccessor(A,t,Object.assign({size:t.length},i));return n>=0&&(t=this.vertexArrayObject._normalizeConstantArrayValue(t),this.values[n]=t,this.accessors[n]=r,this.clearDrawParams(),this.vertexArrayObject.enable(n,!1)),this}unbindBuffers(){return this.vertexArrayObject.bind(()=>{this.elements&&this.vertexArrayObject.setElementBuffer(null),this.buffer=this.buffer||new we(this.gl,{accessor:{size:4}});for(let A=0;A{this.elements&&this.setElementBuffer(this.elements);for(let A=0;A{this._setConstantAttributes(A,t),n=i()}),n}_resolveLocationAndAccessor(A,t,i,n){const r={location:-1,accessor:null},{location:o,name:s}=this._getAttributeIndex(A);if(!Number.isFinite(o)||o<0)return this.unused[A]=t,DA.once(3,()=>"unused value ".concat(A," in ").concat(this.id))(),r;const a=this._getAttributeInfo(s||o);if(!a)return r;const g=this.accessors[o]||{},I=ti.resolve(a.accessor,g,i,n),{size:l,type:c}=I;return cA(Number.isFinite(l)&&Number.isFinite(c)),{location:o,accessor:I}}_getAttributeInfo(A){return this.configuration&&this.configuration.getAttributeInfo(A)}_getAttributeIndex(A){const t=Number(A);if(Number.isFinite(t))return{location:t};const i=I5.exec(A),n=i?i[1]:A,r=i?Number(i[2]):0;return this.configuration?{location:this.configuration.getAttributeLocation(n)+r,name:n}:{location:-1}}_setAttribute(A,t){if(t instanceof we)this.setBuffer(A,t);else if(Array.isArray(t)&&t.length&&t[0]instanceof we){const i=t[0],n=t[1];this.setBuffer(A,i,n)}else if(ArrayBuffer.isView(t)||Array.isArray(t)){const i=t;this.setConstant(A,i)}else if(t.buffer instanceof we){const i=t;this.setBuffer(A,i.buffer,i)}else throw new Error(g5)}_setConstantAttributes(A,t){const i=Math.max(A|0,t|0);let n=this.values[0];ArrayBuffer.isView(n)&&this._setConstantAttributeZero(n,i);for(let r=1;r0;if(A.isInstanced=A.isInstanced||o,i instanceof we){const s=i;if(o){const a=s.getVertexCount(n);A.instanceCount=Math.min(A.instanceCount,a)}else{const a=s.getVertexCount(n);A.vertexCount=Math.min(A.vertexCount,a)}}}setElements(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return DA.deprecated("setElements","setElementBuffer")(),this.setElementBuffer(A,t)}}function C5(e,A){const{maxElts:t=16,size:i=1}=A;let n="[";for(let o=0;o0&&(n+=",".concat(o%i===0?" ":"")),n+=WI(e[o],A);const r=e.length>t?"...":"]";return"".concat(n).concat(r)}function WI(e){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const t=1e-16,{isInteger:i=!1}=A;if(Array.isArray(e)||ArrayBuffer.isView(e))return C5(e,A);if(!Number.isFinite(e))return String(e);if(Math.abs(e)100&&Math.abs(e)<1e4)return e.toFixed(0);const n=e.toPrecision(2);return n.indexOf(".0")===n.length-2?n.slice(0,-1):n}function KS(e){let{header:A="Uniforms",program:t,uniforms:i,undefinedOnly:n=!1}=e;cA(t);const r=".*_.*",o=".*Matrix",s=t._uniformSetters,a={},g=Object.keys(s).sort();let I=0;for(const C of g)!C.match(r)&&!C.match(o)&&qh({table:a,header:A,uniforms:i,uniformName:C,undefinedOnly:n})&&I++;for(const C of g)C.match(o)&&qh({table:a,header:A,uniforms:i,uniformName:C,undefinedOnly:n})&&I++;for(const C of g)a[C]||qh({table:a,header:A,uniforms:i,uniformName:C,undefinedOnly:n})&&I++;let l=0;const c={};if(!n)for(const C in i){const B=i[C];a[C]||(l++,c[C]={Type:"NOT USED: ".concat(B),[A]:WI(B)})}return{table:a,count:I,unusedTable:c,unusedCount:l}}function qh(e){let{table:A,header:t,uniforms:i,uniformName:n,undefinedOnly:r}=e;const o=i[n],s=B5(o);return!r||!s?(A[n]={[t]:s?WI(o):"N/A","Uniform Type":s?o:"NOT PROVIDED"},!0):!1}function B5(e){return e!=null}function E5(e){let{vertexArray:A,header:t="Attributes"}=e;if(!A.configuration)return{};const i={};A.elements&&(i.ELEMENT_ARRAY_BUFFER=VS(A,A.elements,null,t));const n=A.values;for(const r in n){const o=A._getAttributeInfo(r);if(o){let s="".concat(r,": ").concat(o.name);const a=A.accessors[o.location];a&&(s="".concat(r,": ").concat(u5(o.name,a))),i[s]=VS(A,n[r],a,t)}}return i}function VS(e,A,t,i){const{gl:n}=e;if(!A)return{[i]:"null","Format ":"N/A"};let r="NOT PROVIDED",o=1,s=0,a=0,g,I,l;if(t&&(r=t.type,o=t.size,r=String(r).replace("Array",""),g=r.indexOf("nt")!==-1),A instanceof we){const c=A,{data:C,changed:B}=c.getDebugData();I=B?"*":"",l=C,a=c.byteLength,s=a/C.BYTES_PER_ELEMENT/o;let u;if(t){const E=t.divisor>0;u="".concat(E?"I ":"P "," ").concat(s," (x").concat(o,"=").concat(a," bytes ").concat(Nr(n,r),")")}else g=!0,u="".concat(a," bytes");return{[i]:"".concat(I).concat(WI(l,{size:o,isInteger:g})),"Format ":u}}return l=A,o=A.length,r=String(A.constructor.name).replace("Array",""),g=r.indexOf("nt")!==-1,{[i]:"".concat(WI(l,{size:o,isInteger:g})," (constant)"),"Format ":"".concat(o,"x").concat(r," (constant)")}}function u5(e,A){const{type:t,size:i}=A,n=kL(t,i);return n?"".concat(e," (").concat(n.name,")"):e}function h5(e){const A={},t="Accessors for ".concat(e.id);for(const i of e.attributeInfos)if(i){const n=WS(i);A["in ".concat(n)]={[t]:JSON.stringify(i.accessor)}}for(const i of e.varyingInfos)if(i){const n=WS(i);A["out ".concat(n)]={[t]:JSON.stringify(i.accessor)}}return A}function WS(e){const{type:A,size:t}=e.accessor,i=kL(A,t);return i?"".concat(i.name," ").concat(e.name):e.name}const zS=Yn()&&typeof document!="undefined";let f5=0;class Q5{constructor(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{onCreateContext:t=E=>yL(E),onAddHTML:i=null,onInitialize:n=()=>{},onRender:r=()=>{},onFinalize:o=()=>{},onError:s,gl:a=null,glOptions:g={},debug:I=!1,createFramebuffer:l=!1,autoResizeViewport:c=!0,autoResizeDrawingBuffer:C=!0,stats:B=po.get("animation-loop-".concat(f5++))}=A;let{useDevicePixels:u=!0}=A;"useDevicePixelRatio"in A&&(DA.deprecated("useDevicePixelRatio","useDevicePixels")(),u=A.useDevicePixelRatio),this.props={onCreateContext:t,onAddHTML:i,onInitialize:n,onRender:r,onFinalize:o,onError:s,gl:a,glOptions:g,debug:I,createFramebuffer:l},this.gl=a,this.needsRedraw=null,this.timeline=null,this.stats=B,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:c,autoResizeDrawingBuffer:C,useDevicePixels:u}),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(A){return cA(typeof A=="string"),this.needsRedraw=this.needsRedraw||A,this}setProps(A){return"autoResizeViewport"in A&&(this.autoResizeViewport=A.autoResizeViewport),"autoResizeDrawingBuffer"in A&&(this.autoResizeDrawingBuffer=A.autoResizeDrawingBuffer),"useDevicePixels"in A&&(this.useDevicePixels=A.useDevicePixels),this}start(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(this._running)return this;this._running=!0;const t=this._getPageLoadPromise().then(()=>!this._running||this._initialized?null:(this._createWebGLContext(A),this._createFramebuffer(),this._startEventHandling(),this._initializeCallbackData(),this._updateCallbackData(),this._resizeCanvasDrawingBuffer(),this._resizeViewport(),this._gpuTimeQuery=bB.isSupported(this.gl,["timers"])?new bB(this.gl):null,this._initialized=!0,this.onInitialize(this.animationProps))).then(i=>{this._running&&(this._addCallbackData(i||{}),i!==!1&&this._startLoop())});return this.props.onError&&t.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(A){return this.timeline=A,this.timeline}detachTimeline(){this.timeline=null}waitForRender(){return this.setNeedsRedraw("waitForRender"),this._nextFramePromise||(this._nextFramePromise=new Promise(A=>{this._resolveNextFrame=A})),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(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const i=document.getElementById(A);return i?Number(i.value):t}setViewParameters(){return DA.removed("AnimationLoop.setViewParameters","AnimationLoop.setProps")(),this}_startLoop(){const A=()=>{!this._running||(this.redraw(),this._animationFrameId=this._requestAnimationFrame(A))};this._cancelAnimationFrame(this._animationFrameId),this._animationFrameId=this._requestAnimationFrame(A)}_getPageLoadPromise(){return this._pageLoadPromise||(this._pageLoadPromise=zS?new Promise((A,t)=>{if(zS&&document.readyState==="complete"){A(document);return}window.addEventListener("load",()=>{A(document)})}):Promise.resolve({})),this._pageLoadPromise}_setDisplay(A){this.display&&(this.display.delete(),this.display.animationLoop=null),A&&(A.animationLoop=this),this.display=A}_cancelAnimationFrame(A){return this.display&&this.display.cancelAnimationFrame?this.display.cancelAnimationFrame(A):RY(A)}_requestAnimationFrame(A){if(this._running)return this.display&&this.display.requestAnimationFrame?this.display.requestAnimationFrame(A):DY(A)}_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:A,height:t,aspect:i}=this._getSizeAndAspect();(A!==this.animationProps.width||t!==this.animationProps.height)&&this.setNeedsRedraw("drawing buffer resized"),i!==this.animationProps.aspect&&this.setNeedsRedraw("drawing buffer aspect changed"),this.animationProps.width=A,this.animationProps.height=t,this.animationProps.aspect=i,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(A){typeof A=="object"&&A!==null&&(this.animationProps=Object.assign({},this.animationProps,A))}_createWebGLContext(A){if(this.offScreen=A.canvas&&typeof OffscreenCanvas!="undefined"&&A.canvas instanceof OffscreenCanvas,A=Object.assign({},A,this.props.glOptions),this.gl=this.props.gl?Tp(this.props.gl,A):this.onCreateContext(A),!YE(this.gl))throw new Error("AnimationLoop.onCreateContext - illegal context returned");EY(this.gl),this._createInfoDiv()}_createInfoDiv(){if(this.gl.canvas&&this.props.onAddHTML){const A=document.createElement("div");document.body.appendChild(A),A.style.position="relative";const t=document.createElement("div");t.style.position="absolute",t.style.left="10px",t.style.bottom="10px",t.style.width="300px",t.style.background="white",A.appendChild(this.gl.canvas),A.appendChild(t);const i=this.props.onAddHTML(t);i&&(t.innerHTML=i)}}_getSizeAndAspect(){const A=this.gl.drawingBufferWidth,t=this.gl.drawingBufferHeight;let i=1;const{canvas:n}=this.gl;return n&&n.clientHeight?i=n.clientWidth/n.clientHeight:A>0&&t>0&&(i=A/t),{width:A,height:t,aspect:i}}_resizeViewport(){this.autoResizeViewport&&this.gl.viewport(0,0,this.gl.drawingBufferWidth,this.gl.drawingBufferHeight)}_resizeCanvasDrawingBuffer(){this.autoResizeDrawingBuffer&&dY(this.gl,{useDevicePixels:this.useDevicePixels})}_createFramebuffer(){this.props.createFramebuffer&&(this.framebuffer=new $e(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:A}=this.gl;A&&(A.addEventListener("mousemove",this._onMousemove),A.addEventListener("mouseleave",this._onMouseleave))}_onMousemove(A){this.animationProps._mousePosition=[A.offsetX,A.offsetY]}_onMouseleave(A){this.animationProps._mousePosition=null}}const kl="vs",Jp="fs";function ri(e,A){if(!e)throw new Error(A||"shadertools: assertion failed.")}const Jh={number:{validate(e,A){return Number.isFinite(e)&&(!("max"in A)||e<=A.max)&&(!("min"in A)||e>=A.min)}},array:{validate(e,A){return Array.isArray(e)||ArrayBuffer.isView(e)}}};function d5(e){const A={};for(const t in e){const i=e[t],n=p5(i);A[t]=n}return A}function p5(e){let A=jS(e);return A==="object"?e?"type"in e?Object.assign({},e,Jh[e.type]):"value"in e?(A=jS(e.value),Object.assign({type:A},e,Jh[A])):{type:"object",value:e}:{type:"object",value:null}:Object.assign({type:A,value:e},Jh[A])}function jS(e){return Array.isArray(e)||ArrayBuffer.isView(e)?"array":typeof e}const y5="vs",m5="fs";class XS{constructor(A){let{name:t,vs:i,fs:n,dependencies:r=[],uniforms:o,getUniforms:s,deprecations:a=[],defines:g={},inject:I={},vertexShader:l,fragmentShader:c}=A;ri(typeof t=="string"),this.name=t,this.vs=i||l,this.fs=n||c,this.getModuleUniforms=s,this.dependencies=r,this.deprecations=this._parseDeprecationDefinitions(a),this.defines=g,this.injections=w5(I),o&&(this.uniforms=d5(o))}getModuleSource(A){let t;switch(A){case y5:t=this.vs||"";break;case m5:t=this.fs||"";break;default:ri(!1)}return"#define MODULE_".concat(this.name.toUpperCase().replace(/[^0-9a-z]/gi,"_"),` -`).concat(t,"// END MODULE_").concat(this.name,` - -`)}getUniforms(A,t){return this.getModuleUniforms?this.getModuleUniforms(A,t):this.uniforms?this._defaultGetUniforms(A):{}}getDefines(){return this.defines}checkDeprecations(A,t){this.deprecations.forEach(i=>{i.regex.test(A)&&(i.deprecated?t.deprecated(i.old,i.new)():t.removed(i.old,i.new)())})}_parseDeprecationDefinitions(A){return A.forEach(t=>{switch(t.type){case"function":t.regex=new RegExp("\\b".concat(t.old,"\\("));break;default:t.regex=new RegExp("".concat(t.type," ").concat(t.old,";"))}}),A}_defaultGetUniforms(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const t={},i=this.uniforms;for(const n in i){const r=i[n];n in A&&!r.private?(r.validate&&ri(r.validate(A[n],r),"".concat(this.name,": invalid ").concat(n)),t[n]=A[n]):t[n]=r.value}return t}}function w5(e){const A={vs:{},fs:{}};for(const t in e){let i=e[t];const n=t.slice(0,2);typeof i=="string"&&(i={order:0,injection:i}),A[n][t]=i}return A}function v5(e){return S5(HL(e))}function S5(e){const A={},t={};return PL({modules:e,level:0,moduleMap:A,moduleDepth:t}),Object.keys(t).sort((i,n)=>t[n]-t[i]).map(i=>A[i])}function PL(e){let{modules:A,level:t,moduleMap:i,moduleDepth:n}=e;if(t>=5)throw new Error("Possible loop in shader dependency graph");for(const r of A)i[r.name]=r,(n[r.name]===void 0||n[r.name](t instanceof XS||(ri(typeof t!="string","Shader module use by name is deprecated. Import shader module '".concat(t,"' and use it directly.")),ri(t.name,"shader module has no name"),t=new XS(t),t.dependencies=HL(t.dependencies)),t))}function D5(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const A=typeof window!="undefined"?window.navigator||{}:{},t=e.userAgent||A.userAgent||"",i=t.indexOf("MSIE ")!==-1,n=t.indexOf("Trident/")!==-1;return i||n}const R5=7936,x5=7937,F5=7938,N5=35724,Op={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]},Io={};Object.keys(Op).forEach(e=>{Io[e]=e});function L5(e){return typeof WebGL2RenderingContext!="undefined"&&e instanceof WebGL2RenderingContext?!0:Boolean(e&&e._version===2)}function b5(e){const A=e.getExtension("WEBGL_debug_renderer_info"),t=e.getParameter(A&&A.UNMASKED_VENDOR_WEBGL||R5),i=e.getParameter(A&&A.UNMASKED_RENDERER_WEBGL||x5);return{gpuVendor:G5(t,i),vendor:t,renderer:i,version:e.getParameter(F5),shadingLanguageVersion:e.getParameter(N5)}}function G5(e,A){return e.match(/NVIDIA/i)||A.match(/NVIDIA/i)?"NVIDIA":e.match(/INTEL/i)||A.match(/INTEL/i)?"INTEL":e.match(/AMD/i)||A.match(/AMD/i)||e.match(/ATI/i)||A.match(/ATI/i)?"AMD":"UNKNOWN GPU"}const Oh={};function ZS(e,A){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const i=Op[A];if(ri(i,A),!D5(t))return!0;if(A in Oh)return Oh[A];const n=i[0],r=t.behavior||"enable",o="#extension GL_".concat(n," : ").concat(r,` -void main(void) {}`),s=e.createShader(35633);e.shaderSource(s,o),e.compileShader(s);const a=e.getShaderParameter(s,35713);return e.deleteShader(s),Oh[A]=a,a}function _5(e,A){const t=Op[A];ri(t,A);const i=L5(e)&&t[1]||t[0],n=typeof i=="string"?Boolean(e.getExtension(i)):i;return ri(n===!1||n===!0),n}function xc(e,A){return A=Array.isArray(A)?A:[A],A.every(t=>_5(e,t))}function M5(e){switch(b5(e).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 k5(e,A,t){let i=`#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 xc(e,Io.GLSL_FRAG_DEPTH)&&(i+=` -// 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 -`),xc(e,Io.GLSL_DERIVATIVES)&&ZS(e,Io.GLSL_DERIVATIVES)&&(i+=` -// 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 -`),xc(e,Io.GLSL_FRAG_DATA)&&ZS(e,Io.GLSL_FRAG_DATA,{behavior:"require"})&&(i+=` -// 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 -`),xc(e,Io.GLSL_TEXTURE_LOD)&&(i+=`// 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 -`),i}const T5=`#ifdef MODULE_LOGDEPTH - logdepth_adjustPosition(gl_Position); -#endif -`,U5=`#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 -`,P5={[kl]:T5,[Jp]:U5},GC="__LUMA_INJECT_DECLARATIONS__",$S=/void\s+main\s*\([^)]*\)\s*\{\n?/,AD=/}\n?[^{}]*$/,Yh=[];function eD(e,A,t){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;const n=A===kl;for(const r in t){const o=t[r];o.sort((a,g)=>a.order-g.order),Yh.length=o.length;for(let a=0,g=o.length;aa+s));break;case"vs:#main-end":n&&(e=e.replace(AD,a=>s+a));break;case"fs:#decl":n||(e=e.replace(GC,s));break;case"fs:#main-start":n||(e=e.replace($S,a=>a+s));break;case"fs:#main-end":n||(e=e.replace(AD,a=>s+a));break;default:e=e.replace(r,a=>a+s)}}return e=e.replace(GC,""),i&&(e=e.replace(/\}\s*$/,r=>r+P5[A])),e}function sd(e){const A={};return ri(Array.isArray(e)&&e.length>1),e.forEach(t=>{for(const i in t)A[i]=A[i]?"".concat(A[i],` -`).concat(t[i]):t[i]}),A}function fa(e){return new RegExp("\\b".concat(e,"[ \\t]+(\\w+[ \\t]+\\w+(\\[\\w+\\])?;)"),"g")}const qL=[[/^(#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("]],H5=[...qL,[fa("attribute"),"in $1"],[fa("varying"),"out $1"]],q5=[...qL,[fa("varying"),"in $1"]],JL=[[/^#version[ \t]+300[ \t]+es/,"#version 100"],[/\btexture(2D|2DProj|Cube)Lod\(/g,"texture$1LodEXT("],[/\btexture\(/g,"texture2D("],[/\btextureLod\(/g,"texture2DLodEXT("]],J5=[...JL,[fa("in"),"attribute $1"],[fa("out"),"varying $1"]],O5=[...JL,[fa("in"),"varying $1"]],ad="gl_FragColor",gd=/\bout[ \t]+vec4[ \t]+(\w+)[ \t]*;\n?/,Y5=/void\s+main\s*\([^)]*\)\s*\{\n?/;function K5(e,A,t){switch(A){case 300:return t?GB(e,H5):V5(e);case 100:return t?GB(e,J5):W5(e);default:throw new Error("unknown GLSL version ".concat(A))}}function GB(e,A){for(const[t,i]of A)e=e.replace(t,i);return e}function V5(e){e=GB(e,q5);const A=e.match(gd);if(A){const t=A[1];e=e.replace(new RegExp("\\b".concat(ad,"\\b"),"g"),t)}else{const t="fragmentColor";e=e.replace(Y5,i=>"out vec4 ".concat(t,`; -`).concat(i)).replace(new RegExp("\\b".concat(ad,"\\b"),"g"),t)}return e}function W5(e){e=GB(e,O5);const A=e.match(gd);if(A){const t=A[1];e=e.replace(gd,"").replace(new RegExp("\\b".concat(t,"\\b"),"g"),ad)}return e}const z5=` - -`.concat(GC,` - -`),OL={[kl]:"vertex",[Jp]:"fragment"},j5=`precision highp float; - -`;function X5(e,A){const{vs:t,fs:i}=A,n=v5(A.modules||[]);return{gl:e,vs:tD(e,Object.assign({},A,{source:t,type:kl,modules:n})),fs:tD(e,Object.assign({},A,{source:i,type:Jp,modules:n})),getUniforms:Z5(n)}}function tD(e,A){let{id:t,source:i,type:n,modules:r,defines:o={},hookFunctions:s=[],inject:a={},transpileToGLSL100:g=!1,prologue:I=!0,log:l}=A;ri(typeof i=="string","shader source must be a string");const c=n===kl,C=i.split(` -`);let B=100,u="",E=i;C[0].indexOf("#version ")===0?(B=300,u=C[0],E=C.slice(1).join(` -`)):u="#version ".concat(B);const h={};r.forEach(v=>{Object.assign(h,v.getDefines())}),Object.assign(h,o);let f=I?"".concat(u,` -`).concat(A6({id:t,source:i,type:n}),` -`).concat($5({type:n}),` -`).concat(M5(e),` -`).concat(k5(e),` -`).concat(e6(h),` -`).concat(c?"":j5,` -`):"".concat(u,` -`);const Q=i6(s),d={},w={},m={};for(const v in a){const x=typeof a[v]=="string"?{injection:a[v],order:0}:a[v],D=v.match(/^(v|f)s:(#)?([\w-]+)$/);if(D){const F=D[2],N=D[3];F?N==="decl"?w[v]=[x]:m[v]=[x]:d[v]=[x]}else m[v]=[x]}for(const v of r){l&&v.checkDeprecations(E,l),f+=v.getModuleSource(n,B);const D=v.injections[n];for(const F in D){const N=F.match(/^(v|f)s:#([\w-]+)$/);if(N){const U=N[2]==="decl"?w:m;U[F]=U[F]||[],U[F].push(D[F])}else d[F]=d[F]||[],d[F].push(D[F])}}return f+=z5,f=eD(f,n,w),f+=t6(Q[n],d),f+=E,f=eD(f,n,m),f=K5(f,g?100:B,c),f}function Z5(e){return function(t){const i={};for(const n of e){const r=n.getUniforms(t,i);Object.assign(i,r)}return i}}function $5(e){let{type:A}=e;return` -#define SHADER_TYPE_`.concat(OL[A].toUpperCase(),` -`)}function A6(e){let{id:A,source:t,type:i}=e;return A&&typeof A=="string"&&t.indexOf("SHADER_NAME")===-1?` -#define SHADER_NAME `.concat(A,"_").concat(OL[i],` - -`):""}function e6(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},A=0,t="";for(const i in e){A===0&&(t+=` -// APPLICATION DEFINES -`),A++;const n=e[i];(n||Number.isFinite(n))&&(t+="#define ".concat(i.toUpperCase()," ").concat(e[i],` -`))}return A===0&&(t+=` -`),t}function t6(e,A){let t="";for(const i in e){const n=e[i];if(t+="void ".concat(n.signature,` { -`),n.header&&(t+=" ".concat(n.header)),A[i]){const r=A[i];r.sort((o,s)=>o.order-s.order);for(const o of r)t+=" ".concat(o.injection,` -`)}n.footer&&(t+=" ".concat(n.footer)),t+=`} -`}return t}function i6(e){const A={vs:{},fs:{}};return e.forEach(t=>{let i;typeof t!="string"?(i=t,t=i.hook):i={},t=t.trim();const[n,r]=t.split(":"),o=t.replace(/\(.+/,"");A[n][o]=Object.assign(i,{signature:r})}),A}const n6="void main() {gl_FragColor = vec4(0);}",YL=`out vec4 transform_output; -void main() { - transform_output = vec4(0); -}`,r6=`#version 300 es -`.concat(YL);function KL(e,A){A=Array.isArray(A)?A:[A];const t=e.replace(/^\s+/,"").split(/\s+/),[i,n,r]=t;if(!A.includes(i)||!n||!r)return null;const o=r.split(";")[0];return{qualifier:i,type:n,name:o}}function VL(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{version:A=100,input:t,inputType:i,output:n}=e;if(!t)return A===300?r6:A>300?"#version ".concat(A,` -`).concat(YL):n6;const r=a6(t,i);return A>=300?"#version ".concat(A," ").concat(A===300?"es":"",` -in `).concat(i," ").concat(t,`; -out vec4 `).concat(n,`; -void main() { - `).concat(n," = ").concat(r,`; -}`):"varying ".concat(i," ").concat(t,`; -void main() { - gl_FragColor = `).concat(r,`; -}`)}function o6(e){switch(e){case"float":return"x";case"vec2":return"xy";case"vec3":return"xyz";case"vec4":return"xyzw";default:return ri(!1),null}}function s6(e){switch(e){case"float":return 1;case"vec2":return 2;case"vec3":return 3;case"vec4":return 4;default:return ri(!1),null}}function a6(e,A){switch(A){case"float":return"vec4(".concat(e,", 0.0, 0.0, 1.0)");case"vec2":return"vec4(".concat(e,", 0.0, 1.0)");case"vec3":return"vec4(".concat(e,", 1.0)");case"vec4":return e;default:return ri(!1),null}}const g6=`#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 -} -`,I6={name:"fp32",vs:g6,fs:null};function zI(e,A){if(!e)throw new Error("math.gl assertion ".concat(A))}const Tt={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0};function l6(e,{precision:A=Tt.precision}={}){return e=c6(e),"".concat(parseFloat(e.toPrecision(A)))}function ko(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function ft(e,A,t){return B6(e,i=>Math.max(A,Math.min(t,i)))}function Ro(e,A,t){return ko(e)?e.map((i,n)=>Ro(i,A[n],t)):t*A+(1-t)*e}function ln(e,A,t){const i=Tt.EPSILON;t&&(Tt.EPSILON=t);try{if(e===A)return!0;if(ko(e)&&ko(A)){if(e.length!==A.length)return!1;for(let n=0;n0?", ":"")+l6(this[i],A);return"".concat(A.printTypes?this.constructor.name:"","[").concat(t,"]")}equals(A){if(!A||this.length!==A.length)return!1;for(let t=0;t=0&&A=0&&A0&&(r=1/Math.sqrt(r)),e[0]=A[0]*r,e[1]=A[1]*r,e[2]=A[2]*r,e}function Ab(e,A){return e[0]*A[0]+e[1]*A[1]+e[2]*A[2]}function _C(e,A,t){var i=A[0],n=A[1],r=A[2],o=t[0],s=t[1],a=t[2];return e[0]=n*a-r*s,e[1]=r*o-i*a,e[2]=i*s-n*o,e}function R6(e,A,t,i){var n=A[0],r=A[1],o=A[2];return e[0]=n+i*(t[0]-n),e[1]=r+i*(t[1]-r),e[2]=o+i*(t[2]-o),e}function Kp(e,A,t){var i=A[0],n=A[1],r=A[2],o=t[3]*i+t[7]*n+t[11]*r+t[15];return o=o||1,e[0]=(t[0]*i+t[4]*n+t[8]*r+t[12])/o,e[1]=(t[1]*i+t[5]*n+t[9]*r+t[13])/o,e[2]=(t[2]*i+t[6]*n+t[10]*r+t[14])/o,e}function eb(e,A,t){var i=A[0],n=A[1],r=A[2];return e[0]=i*t[0]+n*t[3]+r*t[6],e[1]=i*t[1]+n*t[4]+r*t[7],e[2]=i*t[2]+n*t[5]+r*t[8],e}function tb(e,A,t){var i=t[0],n=t[1],r=t[2],o=t[3],s=A[0],a=A[1],g=A[2],I=n*g-r*a,l=r*s-i*g,c=i*a-n*s,C=n*c-r*l,B=r*I-i*c,u=i*l-n*I,E=o*2;return I*=E,l*=E,c*=E,C*=2,B*=2,u*=2,e[0]=s+I+C,e[1]=a+l+B,e[2]=g+c+u,e}function x6(e,A,t,i){var n=[],r=[];return n[0]=A[0]-t[0],n[1]=A[1]-t[1],n[2]=A[2]-t[2],r[0]=n[0],r[1]=n[1]*Math.cos(i)-n[2]*Math.sin(i),r[2]=n[1]*Math.sin(i)+n[2]*Math.cos(i),e[0]=r[0]+t[0],e[1]=r[1]+t[1],e[2]=r[2]+t[2],e}function F6(e,A,t,i){var n=[],r=[];return n[0]=A[0]-t[0],n[1]=A[1]-t[1],n[2]=A[2]-t[2],r[0]=n[2]*Math.sin(i)+n[0]*Math.cos(i),r[1]=n[1],r[2]=n[2]*Math.cos(i)-n[0]*Math.sin(i),e[0]=r[0]+t[0],e[1]=r[1]+t[1],e[2]=r[2]+t[2],e}function N6(e,A,t,i){var n=[],r=[];return n[0]=A[0]-t[0],n[1]=A[1]-t[1],n[2]=A[2]-t[2],r[0]=n[0]*Math.cos(i)-n[1]*Math.sin(i),r[1]=n[0]*Math.sin(i)+n[1]*Math.cos(i),r[2]=n[2],e[0]=r[0]+t[0],e[1]=r[1]+t[1],e[2]=r[2]+t[2],e}function L6(e,A){var t=e[0],i=e[1],n=e[2],r=A[0],o=A[1],s=A[2],a=Math.sqrt(t*t+i*i+n*n),g=Math.sqrt(r*r+o*o+s*s),I=a*g,l=I&&Ab(e,A)/I;return Math.acos(Math.min(Math.max(l,-1),1))}var ib=w6,nb=m6,Kh=v6;(function(){var e=$L();return function(A,t,i,n,r,o){var s,a;for(t||(t=3),i||(i=0),n?a=Math.min(n*t+i,A.length):a=A.length,s=i;s0?this.copy([A,...t]):this.identity()}copy(A){return this[0]=A[0],this[1]=A[1],this[2]=A[2],this[3]=A[3],this[4]=A[4],this[5]=A[5],this[6]=A[6],this[7]=A[7],this[8]=A[8],this.check()}identity(){return this.copy(P6)}fromObject(A){return this.check()}fromQuaternion(A){return U6(this,A),this.check()}set(A,t,i,n,r,o,s,a,g){return this[0]=A,this[1]=t,this[2]=i,this[3]=n,this[4]=r,this[5]=o,this[6]=s,this[7]=a,this[8]=g,this.check()}setRowMajor(A,t,i,n,r,o,s,a,g){return this[0]=A,this[1]=n,this[2]=s,this[3]=t,this[4]=r,this[5]=a,this[6]=i,this[7]=o,this[8]=g,this.check()}determinant(){return M6(this)}transpose(){return G6(this,this),this.check()}invert(){return _6(this,this),this.check()}multiplyLeft(A){return nD(this,A,this),this.check()}multiplyRight(A){return nD(this,this,A),this.check()}rotate(A){return T6(this,this,A),this.check()}scale(A){return Array.isArray(A)?rD(this,this,A):rD(this,this,[A,A]),this.check()}translate(A){return k6(this,this,A),this.check()}transform(A,t){let i;switch(A.length){case 2:i=f6(t||[-0,-0],A,this);break;case 3:i=eb(t||[-0,-0,-0],A,this);break;case 4:i=ZL(t||[-0,-0,-0,-0],A,this);break;default:throw new Error("Illegal vector")}return EI(i,A.length),i}transformVector(A,t){return this.transform(A,t)}transformVector2(A,t){return this.transform(A,t)}transformVector3(A,t){return this.transform(A,t)}}let Lc,bc;function H6(){return Lc||(Lc=new Qt([0,0,0,0,0,0,0,0,0]),Object.freeze(Lc)),Lc}function q6(){return bc||(bc=new Qt,Object.freeze(bc)),bc}function J6(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function O6(e,A){if(e===A){var t=A[1],i=A[2],n=A[3],r=A[6],o=A[7],s=A[11];e[1]=A[4],e[2]=A[8],e[3]=A[12],e[4]=t,e[6]=A[9],e[7]=A[13],e[8]=i,e[9]=r,e[11]=A[14],e[12]=n,e[13]=o,e[14]=s}else e[0]=A[0],e[1]=A[4],e[2]=A[8],e[3]=A[12],e[4]=A[1],e[5]=A[5],e[6]=A[9],e[7]=A[13],e[8]=A[2],e[9]=A[6],e[10]=A[10],e[11]=A[14],e[12]=A[3],e[13]=A[7],e[14]=A[11],e[15]=A[15];return e}function ld(e,A){var t=A[0],i=A[1],n=A[2],r=A[3],o=A[4],s=A[5],a=A[6],g=A[7],I=A[8],l=A[9],c=A[10],C=A[11],B=A[12],u=A[13],E=A[14],h=A[15],f=t*s-i*o,Q=t*a-n*o,d=t*g-r*o,w=i*a-n*s,m=i*g-r*s,v=n*g-r*a,x=I*u-l*B,D=I*E-c*B,F=I*h-C*B,N=l*E-c*u,M=l*h-C*u,U=c*h-C*E,P=f*U-Q*M+d*N+w*F-m*D+v*x;return P?(P=1/P,e[0]=(s*U-a*M+g*N)*P,e[1]=(n*M-i*U-r*N)*P,e[2]=(u*v-E*m+h*w)*P,e[3]=(c*m-l*v-C*w)*P,e[4]=(a*F-o*U-g*D)*P,e[5]=(t*U-n*F+r*D)*P,e[6]=(E*d-B*v-h*Q)*P,e[7]=(I*v-c*d+C*Q)*P,e[8]=(o*M-s*F+g*x)*P,e[9]=(i*F-t*M-r*x)*P,e[10]=(B*m-u*d+h*f)*P,e[11]=(l*d-I*m-C*f)*P,e[12]=(s*D-o*N-a*x)*P,e[13]=(t*N-i*D+n*x)*P,e[14]=(u*Q-B*w-E*f)*P,e[15]=(I*w-l*Q+c*f)*P,e):null}function Y6(e){var A=e[0],t=e[1],i=e[2],n=e[3],r=e[4],o=e[5],s=e[6],a=e[7],g=e[8],I=e[9],l=e[10],c=e[11],C=e[12],B=e[13],u=e[14],E=e[15],h=A*o-t*r,f=A*s-i*r,Q=A*a-n*r,d=t*s-i*o,w=t*a-n*o,m=i*a-n*s,v=g*B-I*C,x=g*u-l*C,D=g*E-c*C,F=I*u-l*B,N=I*E-c*B,M=l*E-c*u;return h*M-f*N+Q*F+d*D-w*x+m*v}function xo(e,A,t){var i=A[0],n=A[1],r=A[2],o=A[3],s=A[4],a=A[5],g=A[6],I=A[7],l=A[8],c=A[9],C=A[10],B=A[11],u=A[12],E=A[13],h=A[14],f=A[15],Q=t[0],d=t[1],w=t[2],m=t[3];return e[0]=Q*i+d*s+w*l+m*u,e[1]=Q*n+d*a+w*c+m*E,e[2]=Q*r+d*g+w*C+m*h,e[3]=Q*o+d*I+w*B+m*f,Q=t[4],d=t[5],w=t[6],m=t[7],e[4]=Q*i+d*s+w*l+m*u,e[5]=Q*n+d*a+w*c+m*E,e[6]=Q*r+d*g+w*C+m*h,e[7]=Q*o+d*I+w*B+m*f,Q=t[8],d=t[9],w=t[10],m=t[11],e[8]=Q*i+d*s+w*l+m*u,e[9]=Q*n+d*a+w*c+m*E,e[10]=Q*r+d*g+w*C+m*h,e[11]=Q*o+d*I+w*B+m*f,Q=t[12],d=t[13],w=t[14],m=t[15],e[12]=Q*i+d*s+w*l+m*u,e[13]=Q*n+d*a+w*c+m*E,e[14]=Q*r+d*g+w*C+m*h,e[15]=Q*o+d*I+w*B+m*f,e}function MB(e,A,t){var i=t[0],n=t[1],r=t[2],o,s,a,g,I,l,c,C,B,u,E,h;return A===e?(e[12]=A[0]*i+A[4]*n+A[8]*r+A[12],e[13]=A[1]*i+A[5]*n+A[9]*r+A[13],e[14]=A[2]*i+A[6]*n+A[10]*r+A[14],e[15]=A[3]*i+A[7]*n+A[11]*r+A[15]):(o=A[0],s=A[1],a=A[2],g=A[3],I=A[4],l=A[5],c=A[6],C=A[7],B=A[8],u=A[9],E=A[10],h=A[11],e[0]=o,e[1]=s,e[2]=a,e[3]=g,e[4]=I,e[5]=l,e[6]=c,e[7]=C,e[8]=B,e[9]=u,e[10]=E,e[11]=h,e[12]=o*i+I*n+B*r+A[12],e[13]=s*i+l*n+u*r+A[13],e[14]=a*i+c*n+E*r+A[14],e[15]=g*i+C*n+h*r+A[15]),e}function Wp(e,A,t){var i=t[0],n=t[1],r=t[2];return e[0]=A[0]*i,e[1]=A[1]*i,e[2]=A[2]*i,e[3]=A[3]*i,e[4]=A[4]*n,e[5]=A[5]*n,e[6]=A[6]*n,e[7]=A[7]*n,e[8]=A[8]*r,e[9]=A[9]*r,e[10]=A[10]*r,e[11]=A[11]*r,e[12]=A[12],e[13]=A[13],e[14]=A[14],e[15]=A[15],e}function K6(e,A,t,i){var n=i[0],r=i[1],o=i[2],s=Math.hypot(n,r,o),a,g,I,l,c,C,B,u,E,h,f,Q,d,w,m,v,x,D,F,N,M,U,P,W;return s0&&(o=1/Math.sqrt(o)),e[0]=t*o,e[1]=i*o,e[2]=n*o,e[3]=r*o,e}function s9(e,A){return e[0]*A[0]+e[1]*A[1]+e[2]*A[2]+e[3]*A[3]}function a9(e,A,t,i){var n=A[0],r=A[1],o=A[2],s=A[3];return e[0]=n+i*(t[0]-n),e[1]=r+i*(t[1]-r),e[2]=o+i*(t[2]-o),e[3]=s+i*(t[3]-s),e}function Ta(e,A,t){var i=A[0],n=A[1],r=A[2],o=A[3];return e[0]=t[0]*i+t[4]*n+t[8]*r+t[12]*o,e[1]=t[1]*i+t[5]*n+t[9]*r+t[13]*o,e[2]=t[2]*i+t[6]*n+t[10]*r+t[14]*o,e[3]=t[3]*i+t[7]*n+t[11]*r+t[15]*o,e}function g9(e,A,t){var i=A[0],n=A[1],r=A[2],o=t[0],s=t[1],a=t[2],g=t[3],I=g*i+s*r-a*n,l=g*n+a*i-o*r,c=g*r+o*n-s*i,C=-o*i-s*n-a*r;return e[0]=I*g+C*-o+l*-a-c*-s,e[1]=l*g+C*-s+c*-o-I*-a,e[2]=c*g+C*-a+I*-s-l*-o,e[3]=A[3],e}(function(){var e=t9();return function(A,t,i,n,r,o){var s,a;for(t||(t=4),i||(i=0),n?a=Math.min(n*t+i,A.length):a=A.length,s=i;sMath.PI*2)throw Error("expected radians")}function E9(e,A,t,i,n,r){const o=2*r/(t-A),s=2*r/(n-i),a=(t+A)/(t-A),g=(n+i)/(n-i),I=-1,l=-1,c=-2*r;return e[0]=o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=s,e[6]=0,e[7]=0,e[8]=a,e[9]=g,e[10]=I,e[11]=l,e[12]=0,e[13]=0,e[14]=c,e[15]=0,e}function sD(){var e=new ki(4);return ki!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function u9(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e}function ab(e,A,t){t=t*.5;var i=Math.sin(t);return e[0]=i*A[0],e[1]=i*A[1],e[2]=i*A[2],e[3]=Math.cos(t),e}function aD(e,A,t){var i=A[0],n=A[1],r=A[2],o=A[3],s=t[0],a=t[1],g=t[2],I=t[3];return e[0]=i*I+o*s+n*g-r*a,e[1]=n*I+o*a+r*s-i*g,e[2]=r*I+o*g+i*a-n*s,e[3]=o*I-i*s-n*a-r*g,e}function h9(e,A,t){t*=.5;var i=A[0],n=A[1],r=A[2],o=A[3],s=Math.sin(t),a=Math.cos(t);return e[0]=i*a+o*s,e[1]=n*a+r*s,e[2]=r*a-n*s,e[3]=o*a-i*s,e}function f9(e,A,t){t*=.5;var i=A[0],n=A[1],r=A[2],o=A[3],s=Math.sin(t),a=Math.cos(t);return e[0]=i*a-r*s,e[1]=n*a+o*s,e[2]=r*a+i*s,e[3]=o*a-n*s,e}function Q9(e,A,t){t*=.5;var i=A[0],n=A[1],r=A[2],o=A[3],s=Math.sin(t),a=Math.cos(t);return e[0]=i*a+n*s,e[1]=n*a-i*s,e[2]=r*a+o*s,e[3]=o*a-r*s,e}function d9(e,A){var t=A[0],i=A[1],n=A[2];return e[0]=t,e[1]=i,e[2]=n,e[3]=Math.sqrt(Math.abs(1-t*t-i*i-n*n)),e}function MC(e,A,t,i){var n=A[0],r=A[1],o=A[2],s=A[3],a=t[0],g=t[1],I=t[2],l=t[3],c,C,B,u,E;return C=n*a+r*g+o*I+s*l,C<0&&(C=-C,a=-a,g=-g,I=-I,l=-l),1-C>uI?(c=Math.acos(C),B=Math.sin(c),u=Math.sin((1-i)*c)/B,E=Math.sin(i*c)/B):(u=1-i,E=i),e[0]=u*n+E*a,e[1]=u*r+E*g,e[2]=u*o+E*I,e[3]=u*s+E*l,e}function p9(e,A){var t=A[0],i=A[1],n=A[2],r=A[3],o=t*t+i*i+n*n+r*r,s=o?1/o:0;return e[0]=-t*s,e[1]=-i*s,e[2]=-n*s,e[3]=r*s,e}function y9(e,A){return e[0]=-A[0],e[1]=-A[1],e[2]=-A[2],e[3]=A[3],e}function gb(e,A){var t=A[0]+A[4]+A[8],i;if(t>0)i=Math.sqrt(t+1),e[3]=.5*i,i=.5/i,e[0]=(A[5]-A[7])*i,e[1]=(A[6]-A[2])*i,e[2]=(A[1]-A[3])*i;else{var n=0;A[4]>A[0]&&(n=1),A[8]>A[n*3+n]&&(n=2);var r=(n+1)%3,o=(n+2)%3;i=Math.sqrt(A[n*3+n]-A[r*3+r]-A[o*3+o]+1),e[n]=.5*i,i=.5/i,e[3]=(A[r*3+o]-A[o*3+r])*i,e[r]=(A[r*3+n]+A[n*3+r])*i,e[o]=(A[o*3+n]+A[n*3+o])*i}return e}var m9=i9,w9=zp,v9=s9,S9=a9,D9=n9,R9=r9,Ib=o9,x9=function(){var e=$L(),A=iD(1,0,0),t=iD(0,1,0);return function(i,n,r){var o=Ab(n,r);return o<-.999999?(_C(e,A,n),nb(e)<1e-6&&_C(e,t,n),D6(e,e),ab(i,e,Math.PI),i):o>.999999?(i[0]=0,i[1]=0,i[2]=0,i[3]=1,i):(_C(e,n,r),i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=1+o,Ib(i,i))}}();(function(){var e=sD(),A=sD();return function(t,i,n,r,o,s){return MC(e,i,o,s),MC(A,n,r,s),MC(t,e,A,2*s*(1-s)),t}})();(function(){var e=b6();return function(A,t,i,n){return e[0]=i[0],e[3]=i[1],e[6]=i[2],e[1]=n[0],e[4]=n[1],e[7]=n[2],e[2]=-t[0],e[5]=-t[1],e[8]=-t[2],Ib(A,gb(A,e))}})();const F9=[0,0,0,1];class gD extends Yp{constructor(A=0,t=0,i=0,n=1){super(-0,-0,-0,-0),Array.isArray(A)&&arguments.length===1?this.copy(A):this.set(A,t,i,n)}copy(A){return this[0]=A[0],this[1]=A[1],this[2]=A[2],this[3]=A[3],this.check()}set(A,t,i,n){return this[0]=A,this[1]=t,this[2]=i,this[3]=n,this.check()}fromObject(A){return this[0]=A.x,this[1]=A.y,this[2]=A.z,this[3]=A.w,this.check()}fromMatrix3(A){return gb(this,A),this.check()}fromAxisRotation(A,t){return ab(this,A,t),this.check()}identity(){return u9(this),this.check()}setAxisAngle(A,t){return this.fromAxisRotation(A,t)}get ELEMENTS(){return 4}get x(){return this[0]}set x(A){this[0]=Re(A)}get y(){return this[1]}set y(A){this[1]=Re(A)}get z(){return this[2]}set z(A){this[2]=Re(A)}get w(){return this[3]}set w(A){this[3]=Re(A)}len(){return D9(this)}lengthSquared(){return R9(this)}dot(A){return v9(this,A)}rotationTo(A,t){return x9(this,A,t),this.check()}add(A){return m9(this,this,A),this.check()}calculateW(){return d9(this,this),this.check()}conjugate(){return y9(this,this),this.check()}invert(){return p9(this,this),this.check()}lerp(A,t,i){return i===void 0?this.lerp(this,A,t):(S9(this,A,t,i),this.check())}multiplyRight(A){return aD(this,this,A),this.check()}multiplyLeft(A){return aD(this,A,this),this.check()}normalize(){const A=this.len(),t=A>0?1/A:0;return this[0]=this[0]*t,this[1]=this[1]*t,this[2]=this[2]*t,this[3]=this[3]*t,A===0&&(this[3]=1),this.check()}rotateX(A){return h9(this,this,A),this.check()}rotateY(A){return f9(this,this,A),this.check()}rotateZ(A){return Q9(this,this,A),this.check()}scale(A){return w9(this,this,A),this.check()}slerp(A,t,i){let n,r,o;switch(arguments.length){case 1:({start:n=F9,target:r,ratio:o}=A);break;case 2:n=this,r=A,o=t;break;default:n=A,r=t,o=i}return MC(this,n,r,o),this.check()}transformVector4(A,t=new Vp){return g9(t,A,this),EI(t,4)}lengthSq(){return this.lengthSquared()}setFromAxisAngle(A,t){return this.setAxisAngle(A,t)}premultiply(A){return this.multiplyLeft(A)}multiply(A){return this.multiplyRight(A)}}var lb={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},ID=`#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 -`;const N9={lightSources:{}};function jh(){let{color:e=[0,0,0],intensity:A=1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return e.map(t=>t*A/255)}function L9(e){let{ambientLight:A,pointLights:t=[],directionalLights:i=[]}=e;const n={};return A?n["lighting_uAmbientLight.color"]=jh(A):n["lighting_uAmbientLight.color"]=[0,0,0],t.forEach((r,o)=>{n["lighting_uPointLight[".concat(o,"].color")]=jh(r),n["lighting_uPointLight[".concat(o,"].position")]=r.position,n["lighting_uPointLight[".concat(o,"].attenuation")]=r.attenuation||[1,0,0]}),n.lighting_uPointLightCount=t.length,i.forEach((r,o)=>{n["lighting_uDirectionalLight[".concat(o,"].color")]=jh(r),n["lighting_uDirectionalLight[".concat(o,"].direction")]=r.direction}),n.lighting_uDirectionalLightCount=i.length,n}function cb(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:N9;if("lightSources"in e){const{ambientLight:A,pointLights:t,directionalLights:i}=e.lightSources||{};return A||t&&t.length>0||i&&i.length>0?Object.assign({},L9({ambientLight:A,pointLights:t,directionalLights:i}),{lighting_uEnabled:!0}):{lighting_uEnabled:!1}}if("lights"in e){const A={pointLights:[],directionalLights:[]};for(const t of e.lights||[])switch(t.type){case"ambient":A.ambientLight=t;break;case"directional":A.directionalLights.push(t);break;case"point":A.pointLights.push(t);break}return cb({lightSources:A})}return{}}const b9={name:"lights",vs:ID,fs:ID,getUniforms:cb,defines:{MAX_LIGHTS:3}},G9=new Uint8Array([0,255,255,255]),_9={pickingSelectedColor:null,pickingHighlightColor:G9,pickingActive:!1,pickingAttribute:!1};function M9(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:_9;const A={};if(e.pickingSelectedColor!==void 0)if(!e.pickingSelectedColor)A.picking_uSelectedColorValid=0;else{const t=e.pickingSelectedColor.slice(0,3);A.picking_uSelectedColorValid=1,A.picking_uSelectedColor=t}if(e.pickingHighlightColor){const t=Array.from(e.pickingHighlightColor,i=>i/255);Number.isFinite(t[3])||(t[3]=1),A.picking_uHighlightColor=t}return e.pickingActive!==void 0&&(A.picking_uActive=Boolean(e.pickingActive),A.picking_uAttribute=Boolean(e.pickingAttribute)),A}const k9=`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; - } -} -`,T9=`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); -} - -`,U9={name:"picking",vs:k9,fs:T9,getUniforms:M9};var P9=` -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; -} -`;const H9={};function q9(e){const{ambient:A=.35,diffuse:t=.6,shininess:i=32,specularColor:n=[30,30,30]}=e;return{lighting_uAmbient:A,lighting_uDiffuse:t,lighting_uShininess:i,lighting_uSpecularColor:n.map(r=>r/255)}}function J9(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:H9;if(!("material"in e))return{};const{material:A}=e;return A?q9(A):{lighting_uEnabled:!1}}const O9={name:"gouraud-lighting",dependencies:[b9],vs:P9,defines:{LIGHTING_VERTEX:1},getUniforms:J9},Y9=`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; -} -`,K9={name:"transform",vs:Y9,fs:null};class rs{static getDefaultProgramManager(A){return A.luma=A.luma||{},A.luma.defaultProgramManager=A.luma.defaultProgramManager||new rs(A),A.luma.defaultProgramManager}constructor(A){this.gl=A,this._programCache={},this._getUniforms={},this._registeredModules={},this._hookFunctions=[],this._defaultModules=[],this._hashes={},this._hashCounter=0,this.stateHash=0,this._useCounts={}}addDefaultModule(A){this._defaultModules.find(t=>t.name===A.name)||this._defaultModules.push(A),this.stateHash++}removeDefaultModule(A){const t=typeof A=="string"?A:A.name;this._defaultModules=this._defaultModules.filter(i=>i.name!==t),this.stateHash++}addShaderHook(A,t){t&&(A=Object.assign(t,{hook:A})),this._hookFunctions.push(A),this.stateHash++}get(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{vs:t="",fs:i="",defines:n={},inject:r={},varyings:o=[],bufferMode:s=35981,transpileToGLSL100:a=!1}=A,g=this._getModuleList(A.modules),I=this._getHash(t),l=this._getHash(i),c=g.map(Q=>this._getHash(Q.name)).sort(),C=o.map(Q=>this._getHash(Q)),B=Object.keys(n).sort(),u=Object.keys(r).sort(),E=[],h=[];for(const Q of B)E.push(this._getHash(Q)),E.push(this._getHash(n[Q]));for(const Q of u)h.push(this._getHash(Q)),h.push(this._getHash(r[Q]));const f="".concat(I,"/").concat(l,"D").concat(E.join("/"),"M").concat(c.join("/"),"I").concat(h.join("/"),"V").concat(C.join("/"),"H").concat(this.stateHash,"B").concat(s).concat(a?"T":"");if(!this._programCache[f]){const Q=X5(this.gl,{vs:t,fs:i,modules:g,inject:r,defines:n,hookFunctions:this._hookFunctions,transpileToGLSL100:a});this._programCache[f]=new TL(this.gl,{hash:f,vs:Q.vs,fs:Q.fs,varyings:o,bufferMode:s}),this._getUniforms[f]=Q.getUniforms||(d=>{}),this._useCounts[f]=0}return this._useCounts[f]++,this._programCache[f]}getUniforms(A){return this._getUniforms[A.hash]||null}release(A){const t=A.hash;this._useCounts[t]--,this._useCounts[t]===0&&(this._programCache[t].delete(),delete this._programCache[t],delete this._getUniforms[t],delete this._useCounts[t])}_getHash(A){return this._hashes[A]===void 0&&(this._hashes[A]=this._hashCounter++),this._hashes[A]}_getModuleList(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];const t=new Array(this._defaultModules.length+A.length),i={};let n=0;for(let r=0,o=this._defaultModules.length;r{},$9={};class di{constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{id:i=qr("model")}=t;cA(YE(A)),this.id=i,this.gl=A,this.id=t.id||qr("Model"),this.lastLogTime=0,this.animated=!1,this.initialize(t)}initialize(A){this.props={},this.programManager=A.programManager||rs.getDefaultProgramManager(this.gl),this._programManagerState=-1,this._managedProgram=!1;const{program:t=null,vs:i,fs:n,modules:r,defines:o,inject:s,varyings:a,bufferMode:g,transpileToGLSL100:I}=A;this.programProps={program:t,vs:i,fs:n,modules:r,defines:o,inject:s,varyings:a,bufferMode:g,transpileToGLSL100:I},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(A.moduleSettings))),this.drawMode=A.drawMode!==void 0?A.drawMode:4,this.vertexCount=A.vertexCount||0,this.geometryBuffers={},this.isInstanced=A.isInstanced||A.instanced||A.instanceCount>0,this._setModelProps(A),this.geometry={},cA(this.drawMode!==void 0&&Number.isFinite(this.vertexCount),Z9)}setProps(A){this._setModelProps(A)}delete(){for(const A in this._attributes)this._attributes[A]!==this.attributes[A]&&this._attributes[A].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(A){const{program:t,vs:i,fs:n,modules:r,defines:o,inject:s,varyings:a,bufferMode:g,transpileToGLSL100:I}=A;this.programProps={program:t,vs:i,fs:n,modules:r,defines:o,inject:s,varyings:a,bufferMode:g,transpileToGLSL100:I},this._programDirty=!0}getUniforms(){return this.uniforms}setDrawMode(A){return this.drawMode=A,this}setVertexCount(A){return cA(Number.isFinite(A)),this.vertexCount=A,this}setInstanceCount(A){return cA(Number.isFinite(A)),this.instanceCount=A,this}setGeometry(A){return this.drawMode=A.drawMode,this.vertexCount=A.getVertexCount(),this._deleteGeometryBuffers(),this.geometryBuffers=W9(this.gl,A),this.vertexArray.setAttributes(this.geometryBuffers),this}setAttributes(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(ha(A))return this;const t={};for(const i in A){const n=A[i];t[i]=n.getValue?n.getValue():n}return this.vertexArray.setAttributes(t),this}setUniforms(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Object.assign(this.uniforms,A),this}getModuleUniforms(A){this._checkProgram();const t=this.programManager.getUniforms(this.program);return t?t(A):{}}updateModuleSettings(A){const t=this.getModuleUniforms(A||{});return this.setUniforms(t)}clear(A){return Pp(this.program.gl,A),this}draw(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._checkProgram();const{moduleSettings:t=null,framebuffer:i,uniforms:n={},attributes:r={},transformFeedback:o=this.transformFeedback,parameters:s={},vertexArray:a=this.vertexArray}=A;this.setAttributes(r),this.updateModuleSettings(t),this.setUniforms(n);let g;DA.priority>=Qs&&(g=this._logDrawCallStart(Qs));const I=this.vertexArray.getDrawParams(),{isIndexed:l=I.isIndexed,indexType:c=I.indexType,indexOffset:C=I.indexOffset,vertexArrayInstanced:B=I.isInstanced}=this.props;B&&!this.isInstanced&&DA.warn("Found instanced attributes on non-instanced model",this.id)();const{isInstanced:u,instanceCount:E}=this,{onBeforeRender:h=lD,onAfterRender:f=lD}=this.props;h(),this.program.setUniforms(this.uniforms);const Q=this.program.draw(Object.assign($9,A,{logPriority:g,uniforms:null,framebuffer:i,parameters:s,drawMode:this.getDrawMode(),vertexCount:this.getVertexCount(),vertexArray:a,transformFeedback:o,isIndexed:l,indexType:c,isInstanced:u,instanceCount:E,offset:l?C:0}));return f(),DA.priority>=Qs&&this._logDrawCallEnd(g,a,i),Q}transform(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{discard:t=!0,feedbackBuffers:i,unbindModels:n=[]}=A;let{parameters:r}=A;i&&this._setFeedbackBuffers(i),t&&(r=Object.assign({},r,{[35977]:t})),n.forEach(o=>o.vertexArray.unbindBuffers());try{this.draw(Object.assign({},A,{parameters:r}))}finally{n.forEach(o=>o.vertexArray.bindBuffers())}return this}render(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return DA.warn("Model.render() is deprecated. Use Model.setUniforms() and Model.draw()")(),this.setUniforms(A).draw()}_setModelProps(A){Object.assign(this.props,A),"uniforms"in A&&this.setUniforms(A.uniforms),"pickable"in A&&(this.pickable=A.pickable),"instanceCount"in A&&(this.instanceCount=A.instanceCount),"geometry"in A&&this.setGeometry(A.geometry),"attributes"in A&&this.setAttributes(A.attributes),"_feedbackBuffers"in A&&this._setFeedbackBuffers(A._feedbackBuffers)}_checkProgram(){if(!(this._programDirty||this.programManager.stateHash!==this._programManagerState))return;let{program:t}=this.programProps;if(t)this._managedProgram=!1;else{const{vs:i,fs:n,modules:r,inject:o,defines:s,varyings:a,bufferMode:g,transpileToGLSL100:I}=this.programProps;t=this.programManager.get({vs:i,fs:n,modules:r,inject:o,defines:s,varyings:a,bufferMode:g,transpileToGLSL100:I}),this.program&&this._managedProgram&&this.programManager.release(this.program),this._programManagerState=this.programManager.stateHash,this._managedProgram=!0}cA(t instanceof TL,"Model needs a program"),this._programDirty=!1,t!==this.program&&(this.program=t,this.vertexArray?this.vertexArray.setProps({program:this.program,attributes:this.vertexArray.attributes}):this.vertexArray=new c5(this.gl,{program:this.program}),this.setUniforms(Object.assign({},this.getModuleUniforms())))}_deleteGeometryBuffers(){for(const A in this.geometryBuffers){const t=this.geometryBuffers[A][0]||this.geometryBuffers[A];t instanceof we&&t.delete()}}_setAnimationProps(A){this.animated&&cA(A,"Model.draw(): animated uniforms but no animationProps")}_setFeedbackBuffers(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(ha(A))return this;const{gl:t}=this.program;return this.transformFeedback=this.transformFeedback||new UL(t,{program:this.program}),this.transformFeedback.setBuffers(A),this}_logDrawCallStart(A){const t=A>3?0:X9;if(!(Date.now()-this.lastLogTime>> DRAWING MODEL ".concat(this.id),{collapsed:DA.level<=2})(),A}_logDrawCallEnd(A,t,i,n){if(A===void 0)return;const r=E5({vertexArray:t,header:"".concat(this.id," attributes"),attributes:this._attributes}),{table:o,unusedTable:s,unusedCount:a}=KS({header:"".concat(this.id," uniforms"),program:this.program,uniforms:Object.assign({},this.program.uniforms,i)}),{table:g,count:I}=KS({header:"".concat(this.id," uniforms"),program:this.program,uniforms:Object.assign({},this.program.uniforms,i),undefinedOnly:!0});I>0&&DA.log("MISSING UNIFORMS",Object.keys(g))(),a>0&&DA.log("UNUSED UNIFORMS",Object.keys(s))();const l=h5(this.vertexArray.configuration);DA.table(A,r)(),DA.table(A,o)(),DA.table(A+1,l)(),n&&n.log({logLevel:Qs,message:"Rendered to ".concat(n.id)}),DA.groupEnd(Qs)()}}class AV{constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=A,this.currentIndex=0,this.feedbackMap={},this.varyings=null,this.bindings=[],this.resources={},this._initialize(t),Object.seal(this)}setupResources(A){for(const t of this.bindings)this._setupTransformFeedback(t,A)}updateModelProps(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{varyings:t}=this;return t.length>0&&(A=Object.assign({},A,{varyings:t})),A}getDrawOptions(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const t=this.bindings[this.currentIndex],{sourceBuffers:i,transformFeedback:n}=t;return{attributes:Object.assign({},i,A.attributes),transformFeedback:n}}swap(){return this.feedbackMap?(this.currentIndex=this._getNextIndex(),!0):!1}update(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupBuffers(A)}getBuffer(A){const{feedbackBuffers:t}=this.bindings[this.currentIndex],i=A?t[A]:null;return i?i instanceof we?i:i.buffer:null}getData(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{varyingName:t}=A,i=this.getBuffer(t);return i?i.getData():null}delete(){for(const A in this.resources)this.resources[A].delete()}_initialize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupBuffers(A),this.varyings=A.varyings||Object.keys(this.bindings[this.currentIndex].feedbackBuffers),this.varyings.length>0&&cA(ie(this.gl))}_getFeedbackBuffers(A){const{sourceBuffers:t={}}=A,i={};if(this.bindings[this.currentIndex]&&Object.assign(i,this.bindings[this.currentIndex].feedbackBuffers),this.feedbackMap)for(const n in this.feedbackMap){const r=this.feedbackMap[n];n in t&&(i[r]=n)}Object.assign(i,A.feedbackBuffers);for(const n in i){const r=i[n];if(typeof r=="string"){const o=t[r],{byteLength:s,usage:a,accessor:g}=o;i[n]=this._createNewBuffer(n,{byteLength:s,usage:a,accessor:g})}}return i}_setupBuffers(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{sourceBuffers:t=null}=A;Object.assign(this.feedbackMap,A.feedbackMap);const i=this._getFeedbackBuffers(A);this._updateBindings({sourceBuffers:t,feedbackBuffers:i})}_setupTransformFeedback(A,t){let{model:i}=t;const{program:n}=i;A.transformFeedback=new UL(this.gl,{program:n,buffers:A.feedbackBuffers})}_updateBindings(A){if(this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],A),this.feedbackMap){const{sourceBuffers:t,feedbackBuffers:i}=this._swapBuffers(this.bindings[this.currentIndex]),n=this._getNextIndex();this.bindings[n]=this._updateBinding(this.bindings[n],{sourceBuffers:t,feedbackBuffers:i})}}_updateBinding(A,t){return A?(Object.assign(A.sourceBuffers,t.sourceBuffers),Object.assign(A.feedbackBuffers,t.feedbackBuffers),A.transformFeedback&&A.transformFeedback.setBuffers(A.feedbackBuffers),A):{sourceBuffers:Object.assign({},t.sourceBuffers),feedbackBuffers:Object.assign({},t.feedbackBuffers)}}_swapBuffers(A){if(!this.feedbackMap)return null;const t=Object.assign({},A.sourceBuffers),i=Object.assign({},A.feedbackBuffers);for(const n in this.feedbackMap){const r=this.feedbackMap[n];t[n]=A.feedbackBuffers[r],i[r]=A.sourceBuffers[n],cA(i[r]instanceof we)}return{sourceBuffers:t,feedbackBuffers:i}}_createNewBuffer(A,t){const i=new we(this.gl,t);return this.resources[A]&&this.resources[A].delete(),this.resources[A]=i,i}_getNextIndex(){return(this.currentIndex+1)%2}}const eV="transform_uSampler_",kB="transform_uSize_",cD="transform_position";function tV(e){let{vs:A,sourceTextureMap:t,targetTextureVarying:i,targetTexture:n}=e,o=Object.keys(t).length,s=null;const a={};let g=A,I={};if(o>0||i){const l=g.split(` -`),c=l.slice();if(l.forEach((C,B,u)=>{if(o>0){const E=sV(C,t);if(E){const{updatedLine:h,inject:f}=E;c[B]=h,I=sd([I,f]),Object.assign(a,E.samplerTextureMap),o--}}i&&!s&&(s=oV(C,i))}),i){cA(n);const C="".concat(kB).concat(i),B="uniform vec2 ".concat(C,`; -`),u=" vec2 ".concat(cD," = transform_getPos(").concat(C,`); - gl_Position = vec4(`).concat(cD,`, 0, 1.); -`);I=sd([I,{"vs:#decl":B,"vs:#main-start":u}])}g=c.join(` -`)}return{vs:g,targetTextureType:s,inject:I,samplerTextureMap:a}}function iV(e){let{sourceTextureMap:A,targetTextureVarying:t,targetTexture:i}=e;const n={};let r,o;t&&({width:r,height:o}=i,n["".concat(kB).concat(t)]=[r,o]);for(const s in A)({width:r,height:o}=A[s]),n["".concat(kB).concat(s)]=[r,o];return n}function nV(e){return KL(e,["attribute","in"])}function rV(e){const A="".concat(eV).concat(e),t="".concat(kB).concat(e),i=" uniform sampler2D ".concat(A,`; - uniform vec2 `).concat(t,";");return{samplerName:A,sizeName:t,uniformDeclerations:i}}function oV(e,A){const t=KL(e,["varying","out"]);return t&&t.name===A?t.type:null}function sV(e,A){const t={},i=nV(e);if(!i)return null;const{type:n,name:r}=i;if(r&&A[r]){const o="// ".concat(e," => Replaced by Transform with a sampler"),{samplerName:s,sizeName:a,uniformDeclerations:g}=rV(r),I=o6(n),l=" ".concat(n," ").concat(r," = transform_getInput(").concat(s,", ").concat(a,").").concat(I,`; -`);return t[s]=r,{updatedLine:o,inject:{"vs:#decl":g,"vs:#main-start":l},samplerTextureMap:t}}return null}const aV={[10241]:9728,[10240]:9728,[10242]:33071,[10243]:33071},gV="transform_output";class IV{constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=A,this.id=this.currentIndex=0,this._swapTexture=null,this.targetTextureVarying=null,this.targetTextureType=null,this.samplerTextureMap=null,this.bindings=[],this.resources={},this._initialize(t),Object.seal(this)}updateModelProps(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const t=this._processVertexShader(A);return Object.assign({},A,t)}getDrawOptions(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{sourceBuffers:t,sourceTextures:i,framebuffer:n,targetTexture:r}=this.bindings[this.currentIndex],o=Object.assign({},t,A.attributes),s=Object.assign({},A.uniforms),a=Object.assign({},A.parameters);let g=A.discard;if(this.hasSourceTextures||this.hasTargetTexture){o.transform_elementID=this.elementIDBuffer;for(const l in this.samplerTextureMap){const c=this.samplerTextureMap[l];s[l]=i[c]}this._setSourceTextureParameters();const I=iV({sourceTextureMap:i,targetTextureVarying:this.targetTextureVarying,targetTexture:r});Object.assign(s,I)}return this.hasTargetTexture&&(g=!1,a.viewport=[0,0,n.width,n.height]),{attributes:o,framebuffer:n,uniforms:s,discard:g,parameters:a}}swap(){return this._swapTexture?(this.currentIndex=this._getNextIndex(),!0):!1}update(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this._setupTextures(A)}getTargetTexture(){const{targetTexture:A}=this.bindings[this.currentIndex];return A}getData(){let{packed:A=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{framebuffer:t}=this.bindings[this.currentIndex],i=VE(t);if(!A)return i;const n=i.constructor,r=s6(this.targetTextureType),o=new n(i.length*r/4);let s=0;for(let a=0;a0&&arguments[0]!==void 0?arguments[0]:{};const{_targetTextureVarying:t,_swapTexture:i}=A;this._swapTexture=i,this.targetTextureVarying=t,this.hasTargetTexture=t,this._setupTextures(A)}_createTargetTexture(A){const{sourceTextures:t,textureOrReference:i}=A;if(i instanceof Pt)return i;const n=t[i];return n?(this._targetRefTexName=i,this._createNewTexture(n)):null}_setupTextures(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{sourceBuffers:t,_sourceTextures:i={},_targetTexture:n}=A,r=this._createTargetTexture({sourceTextures:i,textureOrReference:n});this.hasSourceTextures=this.hasSourceTextures||i&&Object.keys(i).length>0,this._updateBindings({sourceBuffers:t,sourceTextures:i,targetTexture:r}),"elementCount"in A&&this._updateElementIDBuffer(A.elementCount)}_updateElementIDBuffer(A){if(typeof A!="number"||this.elementCount>=A)return;const t=new Float32Array(A);t.forEach((i,n,r)=>{r[n]=n}),this.elementIDBuffer?this.elementIDBuffer.setData({data:t}):this.elementIDBuffer=new we(this.gl,{data:t,accessor:{size:1}}),this.elementCount=A}_updateBindings(A){if(this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],A),this._swapTexture){const{sourceTextures:t,targetTexture:i}=this._swapTextures(this.bindings[this.currentIndex]),n=this._getNextIndex();this.bindings[n]=this._updateBinding(this.bindings[n],{sourceTextures:t,targetTexture:i})}}_updateBinding(A,t){const{sourceBuffers:i,sourceTextures:n,targetTexture:r}=t;if(A||(A={sourceBuffers:{},sourceTextures:{},targetTexture:null}),Object.assign(A.sourceTextures,n),Object.assign(A.sourceBuffers,i),r){A.targetTexture=r;const{width:o,height:s}=r,{framebuffer:a}=A;a?(a.update({attachments:{[36064]:r},resizeAttachments:!1}),a.resize({width:o,height:s})):A.framebuffer=new $e(this.gl,{id:"transform-framebuffer",width:o,height:s,attachments:{[36064]:r}})}return A}_setSourceTextureParameters(){const A=this.currentIndex,{sourceTextures:t}=this.bindings[A];for(const i in t)t[i].setParameters(aV)}_swapTextures(A){if(!this._swapTexture)return null;const t=Object.assign({},A.sourceTextures);t[this._swapTexture]=A.targetTexture;const i=A.sourceTextures[this._swapTexture];return{sourceTextures:t,targetTexture:i}}_createNewTexture(A){const t=GL(A,{parameters:{[10241]:9728,[10240]:9728,[10242]:33071,[10243]:33071},pixelStore:{[37440]:!1}});return this.ownTexture&&this.ownTexture.delete(),this.ownTexture=t,t}_getNextIndex(){return(this.currentIndex+1)%2}_processVertexShader(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{sourceTextures:t,targetTexture:i}=this.bindings[this.currentIndex],{vs:n,uniforms:r,targetTextureType:o,inject:s,samplerTextureMap:a}=tV({vs:A.vs,sourceTextureMap:t,targetTextureVarying:this.targetTextureVarying,targetTexture:i}),g=sd([A.inject||{},s]);this.targetTextureType=o,this.samplerTextureMap=a;const I=A._fs||VL({version:ML(n),input:this.targetTextureVarying,inputType:o,output:gV}),l=this.hasSourceTextures||this.targetTextureVarying?[K9].concat(A.modules||[]):A.modules;return{vs:n,fs:I,modules:l,uniforms:r,inject:g}}}class jp{static isSupported(A){return ie(A)}constructor(A){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.gl=A,this.model=null,this.elementCount=0,this.bufferTransform=null,this.textureTransform=null,this.elementIDBuffer=null,this._initialize(t),Object.seal(this)}delete(){const{model:A,bufferTransform:t,textureTransform:i}=this;A&&A.delete(),t&&t.delete(),i&&i.delete()}run(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{clearRenderTarget:t=!0}=A,i=this._updateDrawOptions(A);t&&i.framebuffer&&i.framebuffer.clear({color:!0}),this.model.transform(i)}swap(){let A=!1;const t=[this.bufferTransform,this.textureTransform].filter(Boolean);for(const i of t)A=A||i.swap();cA(A,"Nothing to swap")}getBuffer(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;return this.bufferTransform&&this.bufferTransform.getBuffer(A)}getData(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const t=[this.bufferTransform,this.textureTransform].filter(Boolean);for(const i of t){const n=i.getData(A);if(n)return n}return null}getFramebuffer(){return this.textureTransform&&this.textureTransform.getFramebuffer()}update(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};"elementCount"in A&&this.model.setVertexCount(A.elementCount);const t=[this.bufferTransform,this.textureTransform].filter(Boolean);for(const i of t)i.update(A)}_initialize(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{gl:t}=this;this._buildResourceTransforms(t,A),A=this._updateModelProps(A),this.model=new di(t,Object.assign({},A,{fs:A.fs||VL({version:ML(A.vs)}),id:A.id||"transform-model",drawMode:A.drawMode||0,vertexCount:A.elementCount})),this.bufferTransform&&this.bufferTransform.setupResources({model:this.model})}_updateModelProps(A){let t=Object.assign({},A);const i=[this.bufferTransform,this.textureTransform].filter(Boolean);for(const n of i)t=n.updateModelProps(t);return t}_buildResourceTransforms(A,t){lV(t)&&(this.bufferTransform=new AV(A,t)),cV(t)&&(this.textureTransform=new IV(A,t)),cA(this.bufferTransform||this.textureTransform,"must provide source/feedback buffers or source/target textures")}_updateDrawOptions(A){let t=Object.assign({},A);const i=[this.bufferTransform,this.textureTransform].filter(Boolean);for(const n of i)t=Object.assign(t,n.getDrawOptions(t));return t}}function lV(e){return!!(!ha(e.feedbackBuffers)||!ha(e.feedbackMap)||e.varyings&&e.varyings.length>0)}function cV(e){return!!(!ha(e._sourceTextures)||e._targetTexture||e._targetTextureVarying)}const CD={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6};class En{static get DRAW_MODE(){return CD}constructor(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{id:t=qr("geometry"),drawMode:i=CD.TRIANGLES,attributes:n={},indices:r=null,vertexCount:o=null}=A;this.id=t,this.drawMode=i|0,this.attributes={},this.userData={},this._setAttributes(n,r),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(A){return"Geometry ".concat(this.id," attribute ").concat(A)}_setAttributes(A,t){t&&(this.indices=ArrayBuffer.isView(t)?{value:t,size:1}:t);for(const i in A){let n=A[i];n=ArrayBuffer.isView(n)?{value:n}:n,cA(ArrayBuffer.isView(n.value),"".concat(this._print(i),": must be typed array or object with value as typed array")),(i==="POSITION"||i==="positions")&&!n.size&&(n.size=3),i==="indices"?(cA(!this.indices),this.indices=n):this.attributes[i]=n}return this.indices&&this.indices.isIndexed!==void 0&&(this.indices=Object.assign({},this.indices),delete this.indices.isIndexed),this}_calculateVertexCount(A,t){if(t)return t.value.length;let i=1/0;for(const n in A){const r=A[n],{value:o,size:s,constant:a}=r;!a&&o&&s>=1&&(i=Math.min(i,o.length/s))}return cA(Number.isFinite(i)),i}}let CV=1,BV=1;class Cb{constructor(){this.time=0,this.channels=new Map,this.animations=new Map,this.playing=!1,this.lastEngineTime=-1}addChannel(A){const{delay:t=0,duration:i=Number.POSITIVE_INFINITY,rate:n=1,repeat:r=1}=A,o=CV++,s={time:0,delay:t,duration:i,rate:n,repeat:r};return this._setChannelTime(s,this.time),this.channels.set(o,s),o}removeChannel(A){this.channels.delete(A);for(const[t,i]of this.animations)i.channel===A&&this.detachAnimation(t)}isFinished(A){const t=this.channels.get(A);return t===void 0?!1:this.time>=t.delay+t.duration*t.repeat}getTime(A){if(A===void 0)return this.time;const t=this.channels.get(A);return t===void 0?-1:t.time}setTime(A){this.time=Math.max(0,A);const t=this.channels.values();for(const n of t)this._setChannelTime(n,this.time);const i=this.animations.values();for(const n of i){const{animation:r,channel:o}=n;r.setTime(this.getTime(o))}}play(){this.playing=!0}pause(){this.playing=!1,this.lastEngineTime=-1}reset(){this.setTime(0)}attachAnimation(A,t){const i=BV++;return this.animations.set(i,{animation:A,channel:t}),A.setTime(this.getTime(t)),i}detachAnimation(A){this.animations.delete(A)}update(A){this.playing&&(this.lastEngineTime===-1&&(this.lastEngineTime=A),this.setTime(this.time+(A-this.lastEngineTime)),this.lastEngineTime=A)}_setChannelTime(A,t){const i=t-A.delay,n=A.duration*A.repeat;i>=n?A.time=A.duration*A.rate:(A.time=Math.max(0,i)%A.duration,A.time*=A.rate)}}const Bb="#define SMOOTH_EDGE_RADIUS 0.5",EV=` -`.concat(Bb,` - -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) -); -`),uV=` -`.concat(Bb,` - -struct FragmentGeometry { - vec2 uv; -} geometry; - -float smoothedge(float edge, float x) { - return smoothstep(edge - SMOOTH_EDGE_RADIUS, edge + SMOOTH_EDGE_RADIUS, x); -} -`);var hV={name:"geometry",vs:EV,fs:uV};const HA={DEFAULT:-1,LNGLAT:1,METER_OFFSETS:2,LNGLAT_OFFSETS:3,CARTESIAN:0};Object.defineProperty(HA,"IDENTITY",{get:()=>(Ae.deprecated("COORDINATE_SYSTEM.IDENTITY","COORDINATE_SYSTEM.CARTESIAN")(),0)});const Ni={WEB_MERCATOR:1,GLOBE:2,WEB_MERCATOR_AUTO_OFFSET:4,IDENTITY:0},Jr={common:0,meters:1,pixels:2},BD={click:{handler:"onClick"},panstart:{handler:"onDragStart"},panmove:{handler:"onDrag"},panend:{handler:"onDragEnd"}},Tl={DRAW:"draw",MASK:"mask"},fV=Object.keys(HA).map(e=>"const int COORDINATE_SYSTEM_".concat(e," = ").concat(HA[e],";")).join(""),QV=Object.keys(Ni).map(e=>"const int PROJECTION_MODE_".concat(e," = ").concat(Ni[e],";")).join(""),dV=Object.keys(Jr).map(e=>"const int UNIT_".concat(e.toUpperCase()," = ").concat(Jr[e],";")).join("");var pV="".concat(fV,` -`).concat(QV,` -`).concat(dV,` - -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() { - 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) { - float y = clamp(geometry.worldPosition.y, -89.9, 89.9); - return 1.0 / cos(radians(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; -} -// -// 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(position_world.z), - 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 yV(e,A){if(e===A)return!0;if(Array.isArray(e)){const t=e.length;if(!A||A.length!==t)return!1;for(let i=0;i{for(const n in i)if(!yV(i[n],A[n])){t=e(i),A=i;break}return t}}const ED=[0,0,0,0],mV=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],Eb=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],wV=[0,0,0],ub=[0,0,0],vV=Ul(RV);function hb(e,A,t=ub){t.length<3&&(t=[t[0],t[1],0]);let i=t,n,r=!0;switch(A===HA.LNGLAT_OFFSETS||A===HA.METER_OFFSETS?n=t:n=e.isGeospatial?[Math.fround(e.longitude),Math.fround(e.latitude),0]:null,e.projectionMode){case Ni.WEB_MERCATOR:(A===HA.LNGLAT||A===HA.CARTESIAN)&&(n=[0,0,0],r=!1);break;case Ni.WEB_MERCATOR_AUTO_OFFSET:A===HA.LNGLAT?i=n:A===HA.CARTESIAN&&(i=[Math.fround(e.center[0]),Math.fround(e.center[1]),0],n=e.unprojectPosition(i),i[0]-=t[0],i[1]-=t[1],i[2]-=t[2]);break;case Ni.IDENTITY:i=e.position.map(Math.fround),i[2]=i[2]||0;break;case Ni.GLOBE:r=!1,n=null;break;default:r=!1}return{geospatialOrigin:n,shaderCoordinateOrigin:i,offsetMode:r}}function SV(e,A,t){const{viewMatrixUncentered:i,projectionMatrix:n}=e;let{viewMatrix:r,viewProjectionMatrix:o}=e,s=ED,a=ED,g=e.cameraPosition;const{geospatialOrigin:I,shaderCoordinateOrigin:l,offsetMode:c}=hb(e,A,t);return c&&(a=e.projectPosition(I||l),g=[g[0]-a[0],g[1]-a[1],g[2]-a[2]],a[3]=1,s=Ta([],a,o),r=i||r,o=xo([],n,r),o=xo([],o,mV)),{viewMatrix:r,viewProjectionMatrix:o,projectionCenter:s,originCommon:a,cameraPosCommon:g,shaderCoordinateOrigin:l,geospatialOrigin:I}}function DV({viewport:e,devicePixelRatio:A=1,modelMatrix:t=null,coordinateSystem:i=HA.DEFAULT,coordinateOrigin:n=ub,autoWrapLongitude:r=!1}){i===HA.DEFAULT&&(i=e.isGeospatial?HA.LNGLAT:HA.CARTESIAN);const o=vV({viewport:e,devicePixelRatio:A,coordinateSystem:i,coordinateOrigin:n});return o.project_uWrapLongitude=r,o.project_uModelMatrix=t||Eb,o}function RV({viewport:e,devicePixelRatio:A,coordinateSystem:t,coordinateOrigin:i}){const{projectionCenter:n,viewProjectionMatrix:r,originCommon:o,cameraPosCommon:s,shaderCoordinateOrigin:a,geospatialOrigin:g}=SV(e,t,i),I=e.getDistanceScales(),l=[e.width*A,e.height*A],c=Ta([],[0,0,-e.focalDistance,1],e.projectionMatrix)[3]||1,C={project_uCoordinateSystem:t,project_uProjectionMode:e.projectionMode,project_uCoordinateOrigin:a,project_uCommonOrigin:o.slice(0,3),project_uCenter:n,project_uPseudoMeters:Boolean(e._pseudoMeters),project_uViewportSize:l,project_uDevicePixelRatio:A,project_uFocalDistance:c,project_uCommonUnitsPerMeter:I.unitsPerMeter,project_uCommonUnitsPerWorldUnit:I.unitsPerMeter,project_uCommonUnitsPerWorldUnit2:wV,project_uScale:e.scale,project_uWrapLongitude:!1,project_uViewProjectionMatrix:r,project_uModelMatrix:Eb,project_uCameraPosition:s};if(g){const B=e.getDistanceScales(g);switch(t){case HA.METER_OFFSETS:C.project_uCommonUnitsPerWorldUnit=B.unitsPerMeter,C.project_uCommonUnitsPerWorldUnit2=B.unitsPerMeter2;break;case HA.LNGLAT:case HA.LNGLAT_OFFSETS:e._pseudoMeters||(C.project_uCommonUnitsPerMeter=B.unitsPerMeter),C.project_uCommonUnitsPerWorldUnit=B.unitsPerDegree,C.project_uCommonUnitsPerWorldUnit2=B.unitsPerDegree2;break;case HA.CARTESIAN:C.project_uCommonUnitsPerWorldUnit=[1,1,B.unitsPerMeter[2]],C.project_uCommonUnitsPerWorldUnit2=[0,0,B.unitsPerMeter2[2]];break}}return C}const xV={};function FV(e=xV){return"viewport"in e?DV(e):{}}var Xp={name:"project",dependencies:[I6,hV],vs:pV,getUniforms:FV};const NV=` -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); -} -`;var eo={name:"project32",dependencies:[Xp],vs:NV};function LV(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function na(e,A){const t=Ta([],A,e);return zp(t,t,1/t[3]),t}function uD(e,A){const t=e%A;return t<0?A+t:t}function Cd(e,A,t){return et?t:e}function bV(e){return Math.log(e)*Math.LOG2E}const Zp=Math.log2||bV;function Hn(e,A){if(!e)throw new Error(A||"@math.gl/web-mercator: assertion failed.")}const Li=Math.PI,fb=Li/4,Gi=Li/180,Bd=180/Li,jI=512,Ed=4003e4,Mc=85.051129,GV=1.5;function _V(e){return Zp(e)}function Or(e){const[A,t]=e;Hn(Number.isFinite(A)),Hn(Number.isFinite(t)&&t>=-90&&t<=90,"invalid latitude");const i=A*Gi,n=t*Gi,r=jI*(i+Li)/(2*Li),o=jI*(Li+Math.log(Math.tan(fb+n*.5)))/(2*Li);return[r,o]}function Qa(e){const[A,t]=e,i=A/jI*(2*Li)-Li,n=2*(Math.atan(Math.exp(t/jI*(2*Li)-Li))-fb);return[i*Bd,n*Bd]}function MV(e){const{latitude:A}=e;Hn(Number.isFinite(A));const t=Math.cos(A*Gi);return _V(Ed*t)-9}function ud(e){const{latitude:A,longitude:t,highPrecision:i=!1}=e;Hn(Number.isFinite(A)&&Number.isFinite(t));const n=jI,r=Math.cos(A*Gi),o=n/360,s=o/r,a=n/Ed/r,g={unitsPerMeter:[a,a,a],metersPerUnit:[1/a,1/a,1/a],unitsPerDegree:[o,s,a],degreesPerUnit:[1/o,1/s,1/a]};if(i){const I=Gi*Math.tan(A*Gi)/r,l=o*I/2,c=n/Ed*I,C=c/s*a;g.unitsPerDegree2=[0,l,c],g.unitsPerMeter2=[C,0,C]}return g}function Qb(e,A){const[t,i,n]=e,[r,o,s]=A,{unitsPerMeter:a,unitsPerMeter2:g}=ud({longitude:t,latitude:i,highPrecision:!0}),I=Or(e);I[0]+=r*(a[0]+g[0]*o),I[1]+=o*(a[1]+g[1]*o);const l=Qa(I),c=(n||0)+(s||0);return Number.isFinite(n)||Number.isFinite(s)?[l[0],l[1],c]:l}function kV(e){const{height:A,pitch:t,bearing:i,altitude:n,scale:r,center:o}=e,s=LV();MB(s,s,[0,0,-n]),ob(s,s,-t*Gi),sb(s,s,i*Gi);const a=r/A;return Wp(s,s,[a,a,a]),o&&MB(s,s,S6([],o)),s}function TV(e){const{width:A,height:t,altitude:i,pitch:n=0,offset:r,center:o,scale:s,nearZMultiplier:a=1,farZMultiplier:g=1}=e;let{fovy:I=TB(GV)}=e;i!==void 0&&(I=TB(i));const l=I*Gi,c=n*Gi,C=$p(I);let B=C;o&&(B+=o[2]*s/Math.cos(c)/t);const u=l*(.5+(r?r[1]:0)/t),E=Math.sin(u)*B/Math.sin(Cd(Math.PI/2-c-u,.01,Math.PI-.01)),h=Math.sin(c)*E+B,f=B*10,Q=Math.min(h*g,f);return{fov:l,aspect:A/t,focalDistance:C,near:a,far:Q}}function TB(e){return 2*Math.atan(.5/e)*Bd}function $p(e){return .5/Math.tan(.5*e*Gi)}function db(e,A){const[t,i,n=0]=e;return Hn(Number.isFinite(t)&&Number.isFinite(i)&&Number.isFinite(n)),na(A,[t,i,n,1])}function Pl(e,A,t=0){const[i,n,r]=e;if(Hn(Number.isFinite(i)&&Number.isFinite(n),"invalid pixel coordinate"),Number.isFinite(r))return na(A,[i,n,r,1]);const o=na(A,[i,n,0,1]),s=na(A,[i,n,1,1]),a=o[2],g=s[2],I=a===g?0:((t||0)-a)/(g-a);return jL([],o,s,I)}function pb(e){const{width:A,height:t,bounds:i,minExtent:n=0,maxZoom:r=24,offset:o=[0,0]}=e,[[s,a],[g,I]]=i,l=UV(e.padding),c=Or([s,Cd(I,-Mc,Mc)]),C=Or([g,Cd(a,-Mc,Mc)]),B=[Math.max(Math.abs(C[0]-c[0]),n),Math.max(Math.abs(C[1]-c[1]),n)],u=[A-l.left-l.right-Math.abs(o[0])*2,t-l.top-l.bottom-Math.abs(o[1])*2];Hn(u[0]>0&&u[1]>0);const E=u[0]/B[0],h=u[1]/B[1],f=(l.right-l.left)/2/E,Q=(l.top-l.bottom)/2/h,d=[(C[0]+c[0])/2+f,(C[1]+c[1])/2+Q],w=Qa(d),m=Math.min(r,Zp(Math.abs(Math.min(E,h))));return Hn(Number.isFinite(m)),{longitude:w[0],latitude:w[1],zoom:m}}function UV(e=0){return typeof e=="number"?{top:e,bottom:e,left:e,right:e}:(Hn(Number.isFinite(e.top)&&Number.isFinite(e.bottom)&&Number.isFinite(e.left)&&Number.isFinite(e.right)),e)}const hD=Math.PI/180;function PV(e,A=0){const{width:t,height:i,unproject:n}=e,r={targetZ:A},o=n([0,i],r),s=n([t,i],r);let a,g;const I=e.fovy?.5*e.fovy*hD:Math.atan(.5/e.altitude),l=(90-e.pitch)*hD;return I>l-.01?(a=fD(e,0,A),g=fD(e,t,A)):(a=n([0,0],r),g=n([t,0],r)),[o,s,g,a]}function fD(e,A,t){const{pixelUnprojectionMatrix:i}=e,n=na(i,[A,0,1,1]),r=na(i,[A,e.height,1,1]),s=(t*e.distanceScales.unitsPerMeter[2]-n[2])/(r[2]-n[2]),a=jL([],n,r,s),g=Qa(a);return g.push(t),g}const QD=512;function HV(e){const{width:A,height:t,pitch:i=0}=e;let{longitude:n,latitude:r,zoom:o,bearing:s=0}=e;(n<-180||n>180)&&(n=uD(n+180,360)-180),(s<-180||s>180)&&(s=uD(s+180,360)-180);const a=Zp(t/QD);if(o<=a)o=a,r=0;else{const g=t/2/Math.pow(2,o),I=Qa([0,g])[1];if(rl&&(r=l)}}return{width:A,height:t,longitude:n,latitude:r,zoom:o,pitch:i,bearing:s}}const qV=` -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; -} -`,JV=` -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; -} -`,OV=Ul(zV),YV=Ul(jV),KV=[0,0,0,1],VV=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0];function WV(e,A){const[t,i,n]=e,r=Pl([t,i,n],A);return Number.isFinite(n)?r:[r[0],r[1],0]}function zV({viewport:e,center:A}){return new fe(e.viewProjectionMatrix).invert().transform(A)}function jV({viewport:e,shadowMatrices:A}){const t=[],i=e.pixelUnprojectionMatrix,n=e.isGeospatial?void 0:1,r=[[0,0,n],[e.width,0,n],[0,e.height,n],[e.width,e.height,n],[0,0,-1],[e.width,0,-1],[0,e.height,-1],[e.width,e.height,-1]].map(o=>WV(o,i));for(const o of A){const s=o.clone().translate(new hA(e.center).negate()),a=r.map(I=>s.transform(I)),g=new fe().ortho({left:Math.min(...a.map(I=>I[0])),right:Math.max(...a.map(I=>I[0])),bottom:Math.min(...a.map(I=>I[1])),top:Math.max(...a.map(I=>I[1])),near:Math.min(...a.map(I=>-I[2])),far:Math.max(...a.map(I=>-I[2]))});t.push(g.multiplyRight(o))}return t}function XV(e,A){const{shadowEnabled:t=!0}=e;if(!t||!e.shadowMatrices||!e.shadowMatrices.length)return{shadow_uDrawShadowMap:!1,shadow_uUseShadowMap:!1};const i={shadow_uDrawShadowMap:Boolean(e.drawToShadowMap),shadow_uUseShadowMap:e.shadowMaps?e.shadowMaps.length>0:!1,shadow_uColor:e.shadowColor||KV,shadow_uLightId:e.shadowLightId||0,shadow_uLightCount:e.shadowMatrices.length},n=OV({viewport:e.viewport,center:A.project_uCenter}),r=[],o=YV({shadowMatrices:e.shadowMatrices,viewport:e.viewport}).slice();for(let s=0;s0?i["shadow_uShadowMap".concat(s)]=e.shadowMaps[s]:i["shadow_uShadowMap".concat(s)]=e.dummyShadowMap;return i}var Xh={name:"shadow",dependencies:[Xp],vs:qV,fs:JV,inject:{"vs:DECKGL_FILTER_GL_POSITION":` - position = shadow_setVertexPosition(geometry.position); - `,"fs:DECKGL_FILTER_COLOR":` - color = shadow_filterShadowColor(color); - `},getUniforms:(e={},A={})=>"viewport"in e&&(e.drawToShadowMap||e.shadowMaps&&e.shadowMaps.length>0)?XV(e,A):{}},to={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); - `}},...U9};const ZV=[Xp],$V=["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 AW(e){const A=rs.getDefaultProgramManager(e);for(const t of ZV)A.addDefaultModule(t);for(const t of $V)A.addShaderHook(t);return A}const eW=[255,255,255],tW=1;let iW=0;class nW{constructor(A={}){y(this,"id",void 0),y(this,"color",void 0),y(this,"intensity",void 0),y(this,"type","ambient");const{color:t=eW}=A,{intensity:i=tW}=A;this.id=A.id||"ambient-".concat(iW++),this.color=t,this.intensity=i}}const rW=[255,255,255],oW=1,sW=[0,0,-1];let aW=0;class dD{constructor(A={}){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:t=rW}=A,{intensity:i=oW}=A,{direction:n=sW}=A,{_shadow:r=!1}=A;this.id=A.id||"directional-".concat(aW++),this.color=t,this.intensity=i,this.type="directional",this.direction=new hA(n).normalize().toArray(),this.shadow=r}getProjectedLight(A){return this}}class gW{constructor(A,t={id:"pass"}){y(this,"id",void 0),y(this,"gl",void 0),y(this,"props",void 0);const{id:i}=t;this.id=i,this.gl=A,this.props={...t}}setProps(A){Object.assign(this.props,A)}render(A){}cleanup(){}}class WE extends gW{constructor(...A){super(...A),y(this,"_lastRenderIndex",-1)}render(A){const t=this.gl;return Pn(t,{framebuffer:A.target}),this._drawLayers(A)}_drawLayers(A){const{target:t,moduleParameters:i,viewports:n,views:r,onViewportActive:o,clearStack:s=!0,clearCanvas:a=!0}=A;A.pass=A.pass||"unknown";const g=this.gl;a&&lW(g),s&&(this._lastRenderIndex=-1);const I=[];for(const l of n){const c=r&&r[l.id];o(l);const C=this._getDrawLayerParams(l,A),B=l.subViewports||[l];for(const u of B){const E=this._drawLayersInViewport(g,{target:t,moduleParameters:i,viewport:u,view:c,pass:A.pass,layers:A.layers},C);I.push(E)}}return I}_getDrawLayerParams(A,{layers:t,pass:i,layerFilter:n,cullRect:r,effects:o,moduleParameters:s}){const a=[],g=yb(this._lastRenderIndex+1),I={layer:t[0],viewport:A,isPicking:i.startsWith("picking"),renderPass:i,cullRect:r},l={};for(let c=0;cPp(A,l))}const I={totalCount:t.length,visibleCount:0,compositeCount:0,pickableCount:0};Pn(A,{viewport:g});for(let l=0;l{const o=n.props._offset,s=n.id,a=n.parent&&n.parent.id;let g;if(a&&!(a in A)&&i(n.parent,!1),a in t){const I=t[a]=t[a]||yb(A[a],A);g=I(n,r),t[s]=I}else Number.isFinite(o)?(g=o+(A[a]||0),t[s]=null):g=e;return r&&g>=e&&(e=g+1),A[s]=g,g};return i}function IW(e,{moduleParameters:A,target:t,viewport:i}){const n=t&&t.id!=="default-framebuffer",r=A&&A.devicePixelRatio||ua(e),o=n?t.height:e.drawingBufferHeight,s=i;return[s.x*r,o-(s.y+s.height)*r,s.width*r,s.height*r]}function lW(e){const A=e.drawingBufferWidth,t=e.drawingBufferHeight;Pn(e,{viewport:[0,0,A,t]}),e.clear(16640)}class cW extends WE{constructor(A,t){super(A,t),y(this,"shadowMap",void 0),y(this,"depthBuffer",void 0),y(this,"fbo",void 0),this.shadowMap=new Pt(A,{width:1,height:1,parameters:{[10241]:9729,[10240]:9729,[10242]:33071,[10243]:33071}}),this.depthBuffer=new Ps(A,{format:33189,width:1,height:1}),this.fbo=new $e(A,{id:"shadowmap",width:1,height:1,attachments:{[36064]:this.shadowMap,[36096]:this.depthBuffer}})}render(A){const t=this.fbo;ui(this.gl,{depthRange:[0,1],depthTest:!0,blend:!1,clearColor:[1,1,1,1]},()=>{const i=A.viewports[0],n=ua(this.gl),r=i.width*n,o=i.height*n;(r!==t.width||o!==t.height)&&t.resize({width:r,height:o}),super.render({...A,target:t,pass:"shadow"})})}shouldDrawLayer(A){return A.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 CW={color:[255,255,255],intensity:1},pD=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}],BW=[0,0,0,200/255];class mb{constructor(A={}){y(this,"id","lighting-effect"),y(this,"props",null),y(this,"shadowColor",BW),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 t in A){const i=A[t];switch(i.type){case"ambient":this.ambientLight=i;break;case"directional":this.directionalLights.push(i);break;case"point":this.pointLights.push(i);break}}this._applyDefaultLights(),this.shadow=this.directionalLights.some(t=>t.shadow)}preRender(A,{layers:t,layerFilter:i,viewports:n,onViewportActive:r,views:o}){if(!!this.shadow){this.shadowMatrices=this._calculateMatrices(),this.shadowPasses.length===0&&this._createShadowPasses(A),this.programManager||(this.programManager=rs.getDefaultProgramManager(A),Xh&&this.programManager.addDefaultModule(Xh)),this.dummyShadowMap||(this.dummyShadowMap=new Pt(A,{width:1,height:1}));for(let s=0;si.getProjectedLight({layer:A})),pointLights:this.pointLights.map(i=>i.getProjectedLight({layer:A}))},t}cleanup(){for(const A of this.shadowPasses)A.delete();this.shadowPasses.length=0,this.shadowMaps.length=0,this.dummyShadowMap&&(this.dummyShadowMap.delete(),this.dummyShadowMap=null),this.shadow&&this.programManager&&(this.programManager.removeDefaultModule(Xh),this.programManager=null)}_calculateMatrices(){const A=[];for(const t of this.directionalLights){const i=new fe().lookAt({eye:new hA(t.direction).negate()});A.push(i)}return A}_createShadowPasses(A){for(let t=0;tn&&(r=n);const o=this._pool,s=A.BYTES_PER_ELEMENT*r,a=o.findIndex(g=>g.byteLength>=s);if(a>=0){const g=new A(o.splice(a,1)[0],0,r);return i&&g.fill(0),g}return new A(r)}_release(A){if(!ArrayBuffer.isView(A))return;const t=this._pool,{buffer:i}=A,{byteLength:n}=i,r=t.findIndex(o=>o.byteLength>=n);r<0?t.push(i):(r>0||t.lengththis.opts.poolSize&&t.shift()}}var da=new EW;function Og(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function uW(e,A){const t=e%A;return t<0?A+t:t}function hW(e){return[e[12],e[13],e[14]]}function fW(e){return{left:ds(e[3]+e[0],e[7]+e[4],e[11]+e[8],e[15]+e[12]),right:ds(e[3]-e[0],e[7]-e[4],e[11]-e[8],e[15]-e[12]),bottom:ds(e[3]+e[1],e[7]+e[5],e[11]+e[9],e[15]+e[13]),top:ds(e[3]-e[1],e[7]-e[5],e[11]-e[9],e[15]-e[13]),near:ds(e[3]+e[2],e[7]+e[6],e[11]+e[10],e[15]+e[14]),far:ds(e[3]-e[2],e[7]-e[6],e[11]-e[10],e[15]-e[14])}}const yD=new hA;function ds(e,A,t,i){yD.set(e,A,t);const n=yD.len();return{distance:i/n,normal:new hA(-e/n,-A/n,-t/n)}}function QW(e){return e-Math.fround(e)}let wg;function Zh(e,A){const{size:t=1,startIndex:i=0}=A,n=A.endIndex!==void 0?A.endIndex:e.length,r=(n-i)/t;wg=da.allocate(wg,r,{type:Float32Array,size:t*2});let o=i,s=0;for(;o!0){return Array.isArray(e)?vb(e,A,[]):A(e)?[e]:[]}function vb(e,A,t){let i=-1;for(;++i0}delete(){}getData(){return this.isLoaded?this._error?Promise.reject(this._error):this._content:this._loader.then(()=>this.getData())}setData(A,t){if(A===this._data&&!t)return;this._data=A;const i=++this._loadCount;let n=A;typeof A=="string"&&(n=LB(A)),n instanceof Promise?(this.isLoaded=!1,this._loader=n.then(r=>{this._loadCount===i&&(this.isLoaded=!0,this._error=void 0,this._content=r)}).catch(r=>{this._loadCount===i&&(this.isLoaded=!0,this._error=r||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=A);for(const r of this._subscribers)r.onChange(this.getData())}}class NW{constructor({gl:A,protocol:t}){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=t||"resource://",this._context={gl:A,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(A){return A.startsWith(this.protocol)?!0:A in this._resources}add({resourceId:A,data:t,forceUpdate:i=!1,persistent:n=!0}){let r=this._resources[A];r?r.setData(t,i):(r=new FW(A,t,this._context),this._resources[A]=r),r.persistent=n}remove(A){const t=this._resources[A];t&&(t.delete(),delete this._resources[A])}unsubscribe({consumerId:A}){const t=this._consumers[A];if(t){for(const i in t){const n=t[i],r=this._resources[n.resourceId];r&&r.unsubscribe(n)}delete this._consumers[A],this.prune()}}subscribe({resourceId:A,onChange:t,consumerId:i,requestId:n="default"}){const{_resources:r,protocol:o}=this;A.startsWith(o)&&(A=A.replace(o,""),r[A]||this.add({resourceId:A,data:null,persistent:!1}));const s=r[A];if(this._track(i,n,s,t),s)return s.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(const A in this._resources)this._resources[A].delete()}_track(A,t,i,n){const r=this._consumers,o=r[A]=r[A]||{},s=o[t]||{},a=s.resourceId&&this._resources[s.resourceId];a&&(a.unsubscribe(s),this.prune()),i&&(o[t]=s,s.onChange=n,s.resourceId=i.id,i.subscribe(s))}_prune(){this._pruneRequest=null;for(const A of Object.keys(this._resources)){const t=this._resources[A];!t.persistent&&!t.inUse()&&(t.delete(),delete this._resources[A])}}}const LW="layerManager.setLayers",bW="layerManager.activateViewport";class GW{constructor(A,{deck:t,stats:i,viewport:n,timeline:r}={}){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=>{Rt(bW,this,o),o&&(this.context.viewport=o)}),this.layers=[],this.resourceManager=new NW({gl:A,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,gl:A,deck:t,programManager:A&&AW(A),stats:i||new JE({id:"deck.gl"}),viewport:n||new Vn({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:r||new Cb,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){this.resourceManager.finalize();for(const A of this.layers)this._finalizeLayer(A)}needsRedraw(A={clearRedrawFlags:!1}){let t=this._needsRedraw;A.clearRedrawFlags&&(this._needsRedraw=!1);for(const i of this.layers){const n=i.getNeedsRedraw(A);t=t||n}return t}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?"layers changed":this._needsUpdate}setNeedsRedraw(A){this._needsRedraw=this._needsRedraw||A}setNeedsUpdate(A){this._needsUpdate=this._needsUpdate||A}getLayers({layerIds:A}={}){return A?this.layers.filter(t=>A.find(i=>t.id.indexOf(i)===0)):this.layers}setProps(A){"debug"in A&&(this._debug=A.debug),"userData"in A&&(this.context.userData=A.userData),"layers"in A&&(this._nextLayers=A.layers),"onError"in A&&(this.context.onError=A.onError)}setLayers(A,t){Rt(LW,this,t,A),this._lastRenderedLayers=A;const i=zE(A,Boolean);for(const n of i)n.context=this.context;this._updateLayers(this.layers,i)}updateLayers(){const A=this.needsUpdate();A&&(this.setNeedsRedraw("updating layers: ".concat(A)),this.setLayers(this._nextLayers||this._lastRenderedLayers,A)),this._nextLayers=null}_handleError(A,t,i){i.raiseError(t,"".concat(A," of ").concat(i))}_updateLayers(A,t){const i={};for(const o of A)i[o.id]?Ae.warn("Multiple old layers with same id ".concat(o.id))():i[o.id]=o;const n=[];this._updateSublayersRecursively(t,i,n),this._finalizeOldLayers(i);let r=!1;for(const o of n)if(o.hasUniformTransition()){r="Uniform transition in ".concat(o);break}this._needsUpdate=r,this.layers=n}_updateSublayersRecursively(A,t,i){for(const n of A){n.context=this.context;const r=t[n.id];r===null&&Ae.warn("Multiple new layers with same id ".concat(n.id))(),t[n.id]=null;let o=null;try{this._debug&&r!==n&&n.validateProps(),r?(this._transferLayerState(r,n),this._updateLayer(n)):this._initializeLayer(n),i.push(n),o=n.isComposite?n.getSubLayers():null}catch(s){this._handleError("matching",s,n)}o&&this._updateSublayersRecursively(o,t,i)}}_finalizeOldLayers(A){for(const t in A){const i=A[t];i&&this._finalizeLayer(i)}}_initializeLayer(A){try{A._initialize(),A.lifecycle=Fs.INITIALIZED}catch(t){this._handleError("initialization",t,A)}}_transferLayerState(A,t){t._transferState(A),t.lifecycle=Fs.MATCHED,t!==A&&(A.lifecycle=Fs.AWAITING_GC)}_updateLayer(A){try{A._update()}catch(t){this._handleError("update",t,A)}}_finalizeLayer(A){this._needsRedraw=this._needsRedraw||"finalized ".concat(A),A.lifecycle=Fs.AWAITING_FINALIZATION;try{A._finalize(),A.lifecycle=Fs.FINALIZED}catch(t){this._handleError("finalization",t,A)}}}function os(e,A){if(e===A)return!0;if(!e||!A)return!1;for(const t in e){const i=e[t],n=A[t];if(!(i===n||Array.isArray(i)&&Array.isArray(n)&&os(i,n)))return!1}return!0}class _W{constructor(A){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=A.timeline,this._viewports=[],this._viewportMap={},this._isUpdating=!1,this._needsRedraw="First render",this._needsUpdate="Initialize",this._eventManager=A.eventManager,this._eventCallbacks={onViewStateChange:A.onViewStateChange,onInteractionStateChange:A.onInteractionStateChange},Object.seal(this),this.setProps(A)}finalize(){for(const A in this.controllers){const t=this.controllers[A];t&&t.finalize()}this.controllers={}}needsRedraw(A={clearRedrawFlags:!1}){const t=this._needsRedraw;return A.clearRedrawFlags&&(this._needsRedraw=!1),t}setNeedsUpdate(A){this._needsUpdate=this._needsUpdate||A,this._needsRedraw=this._needsRedraw||A}updateViewStates(){for(const A in this.controllers){const t=this.controllers[A];t&&t.updateTransition()}}getViewports(A){return A?this._viewports.filter(t=>t.containsPixel(A)):this._viewports}getViews(){const A={};return this.views.forEach(t=>{A[t.id]=t}),A}getView(A){return this.views.find(t=>t.id===A)}getViewState(A){const t=typeof A=="string"?this.getView(A):A,i=t&&this.viewState[t.getViewStateId()]||this.viewState;return t?t.filterViewState(i):i}getViewport(A){return this._viewportMap[A]}unproject(A,t){const i=this.getViewports(),n={x:A[0],y:A[1]};for(let r=i.length-1;r>=0;--r){const o=i[r];if(o.containsPixel(n)){const s=A.slice();return s[0]-=o.x,s[1]-=o.y,o.unproject(s,t)}}return null}setProps(A){A.views&&this._setViews(A.views),A.viewState&&this._setViewState(A.viewState),("width"in A||"height"in A)&&this._setSize(A.width,A.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(A,t){(A!==this.width||t!==this.height)&&(this.width=A,this.height=t,this.setNeedsUpdate("Size changed"))}_setViews(A){A=zE(A,Boolean),this._diffViews(A,this.views)&&this.setNeedsUpdate("views changed"),this.views=A}_setViewState(A){A?(!os(A,this.viewState)&&this.setNeedsUpdate("viewState changed"),this.viewState=A):Ae.warn("missing `viewState` or `initialViewState`")()}_onViewStateChange(A,t){this._eventCallbacks.onViewStateChange&&this._eventCallbacks.onViewStateChange({...t,viewId:A})}_createController(A,t){const i=t.type;return new i({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._onViewStateChange.bind(this,t.id),onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:r=>{var o;return(o=this.getView(A.id))===null||o===void 0?void 0:o.makeViewport({viewState:r,width:this.width,height:this.height})}})}_updateController(A,t,i,n){const r=A.controller;if(r){const o={...t,...r,id:A.id,x:i.x,y:i.y,width:i.width,height:i.height};return n||(n=this._createController(A,o)),n&&n.setProps(o),n}return null}_rebuildViewports(){const{views:A}=this,t=this.controllers;this._viewports=[],this.controllers={};let i=!1;for(let n=A.length;n--;){const r=A[n],o=this.getViewState(r),s=r.makeViewport({viewState:o,width:this.width,height:this.height});let a=t[r.id];const g=Boolean(r.controller);g&&!a&&(i=!0),(i||!g)&&a&&(a.finalize(),a=null),this.controllers[r.id]=this._updateController(r,o,s,a),this._viewports.unshift(s)}for(const n in t){const r=t[n];r&&!this.controllers[n]&&r.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(A=>{A.id&&(this._viewportMap[A.id]=this._viewportMap[A.id]||A)})}_diffViews(A,t){return A.length!==t.length?!0:A.some((i,n)=>!A[n].equals(t[n]))}}const MW=/([0-9]+\.?[0-9]*)(%|px)/;function rr(e){switch(typeof e){case"number":return{position:e,relative:!1};case"string":const A=MW.exec(e);if(A&&A.length>=3){const t=A[2]==="%",i=parseFloat(A[1]);return{position:t?i/100:i,relative:t}}default:throw new Error("Could not parse position string ".concat(e))}}function or(e,A){return e.relative?Math.round(e.position*A):e.position}function at(e,A){if(!e)throw new Error(A||"deck.gl: assertion failed.")}class Yr{constructor(A){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:t,x:i=0,y:n=0,width:r="100%",height:o="100%",padding:s=null,viewportInstance:a}=A||{};at(!a||a instanceof Vn),this.viewportInstance=a,this.id=t||this.constructor.displayName||"view",this.props={...A,id:this.id},this._x=rr(i),this._y=rr(n),this._width=rr(r),this._height=rr(o),this._padding=s&&{left:rr(s.left||0),right:rr(s.right||0),top:rr(s.top||0),bottom:rr(s.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(A){return this===A?!0:this.viewportInstance?A.viewportInstance?this.viewportInstance.equals(A.viewportInstance):!1:this.ViewportType===A.ViewportType&&os(this.props,A.props)}makeViewport({width:A,height:t,viewState:i}){if(this.viewportInstance)return this.viewportInstance;i=this.filterViewState(i);const n=this.getDimensions({width:A,height:t});return new this.ViewportType({...i,...this.props,...n})}getViewStateId(){const{viewState:A}=this.props;return typeof A=="string"?A:(A==null?void 0:A.id)||this.id}filterViewState(A){if(this.props.viewState&&typeof this.props.viewState=="object"){if(!this.props.viewState.id)return this.props.viewState;const t={...A};for(const i in this.props.viewState)i!=="id"&&(t[i]=this.props.viewState[i]);return t}return A}getDimensions({width:A,height:t}){const i={x:or(this._x,A),y:or(this._y,t),width:or(this._width,A),height:or(this._height,t)};return this._padding&&(i.padding={left:or(this._padding.left,A),top:or(this._padding.top,t),right:or(this._padding.right,A),bottom:or(this._padding.bottom,t)}),i}get controller(){const A=this.props.controller;return A?A===!0?{type:this.ControllerType}:typeof A=="function"?{type:A}:{type:this.ControllerType,...A}:null}}class Hl{constructor(A){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=A,this.time=0,this.settings={duration:0}}get inProgress(){return this._inProgress}start(A){var t,i;this.cancel(),this.settings=A,this._inProgress=!0,(t=(i=this.settings).onStart)===null||t===void 0||t.call(i,this)}end(){if(this._inProgress){var A,t;this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1,(A=(t=this.settings).onEnd)===null||A===void 0||A.call(t,this)}}cancel(){if(this._inProgress){var A,t;(A=(t=this.settings).onInterrupt)===null||A===void 0||A.call(t,this),this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1}}update(){var A,t;if(!this._inProgress)return!1;if(this._handle===null){const{_timeline:i,settings:n}=this;this._handle=i.addChannel({delay:i.getTime(),duration:n.duration})}return this.time=this._timeline.getTime(this._handle),this._onUpdate(),(A=(t=this.settings).onUpdate)===null||A===void 0||A.call(t,this),this._timeline.isFinished(this._handle)&&this.end(),!0}_onUpdate(){}}const vD=()=>{},hd={BREAK:1,SNAP_TO_END:2,IGNORE:3},kW=e=>e,TW=hd.BREAK;class UW{constructor(A){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",t=>{const{time:i,settings:{interpolator:n,startProps:r,endProps:o,duration:s,easing:a}}=t,g=a(i/s),I=n.interpolateProps(r,o,g);this.propsInTransition=this.getControllerState({...this.props,...I}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})}),this.getControllerState=A.getControllerState,this.propsInTransition=null,this.transition=new Hl(A.timeline),this.onViewStateChange=A.onViewStateChange||vD,this.onStateChange=A.onStateChange||vD}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(A){let t=!1;const i=this.props;if(this.props=A,!i||this._shouldIgnoreViewportChange(i,A))return!1;if(this._isTransitionEnabled(A)){let n=i;if(this.transition.inProgress){const{interruption:r,endProps:o}=this.transition.settings;n={...i,...r===hd.SNAP_TO_END?o:this.propsInTransition||i}}this._triggerTransition(n,A),t=!0}else this.transition.cancel();return t}updateTransition(){this.transition.update()}_isTransitionEnabled(A){const{transitionDuration:t,transitionInterpolator:i}=A;return(t>0||t==="auto")&&Boolean(i)}_isUpdateDueToCurrentTransition(A){return this.transition.inProgress&&this.propsInTransition?this.transition.settings.interpolator.arePropsEqual(A,this.propsInTransition):!1}_shouldIgnoreViewportChange(A,t){return this.transition.inProgress?this.transition.settings.interruption===hd.IGNORE||this._isUpdateDueToCurrentTransition(t):this._isTransitionEnabled(t)?t.transitionInterpolator.arePropsEqual(A,t):!0}_triggerTransition(A,t){const i=this.getControllerState(A),n=this.getControllerState(t).shortestPathFrom(i),r=t.transitionInterpolator,o=r.getDuration?r.getDuration(A,t):t.transitionDuration;if(o===0)return;const s=r.initializeProps(A,n);this.propsInTransition={};const a={duration:o,easing:t.transitionEasing||kW,interpolator:r,interruption:t.transitionInterruption||TW,startProps:s.start,endProps:s.end,onStart:t.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(t.onTransitionInterrupt),onEnd:this._onTransitionEnd(t.onTransitionEnd)};this.transition.start(a),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(A){return t=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),A==null||A(t)}}}class PW{constructor(A){y(this,"_propsToCompare",void 0),y(this,"_propsToExtract",void 0),y(this,"_requiredProps",void 0);const{compare:t,extract:i,required:n}=A;this._propsToCompare=t,this._propsToExtract=i||t,this._requiredProps=n}arePropsEqual(A,t){for(const i of this._propsToCompare)if(!(i in A)||!(i in t)||!ln(A[i],t[i]))return!1;return!0}initializeProps(A,t){const i={},n={};for(const r of this._propsToExtract)(r in A||r in t)&&(i[r]=A[r],n[r]=t[r]);return this._checkRequiredProps(i),this._checkRequiredProps(n),{start:i,end:n}}getDuration(A,t){return t.transitionDuration}_checkRequiredProps(A){!this._requiredProps||this._requiredProps.forEach(t=>{const i=A[t];at(Number.isFinite(i)||Array.isArray(i),"".concat(t," is required for transition"))})}}const HW=["longitude","latitude","zoom","bearing","pitch"],qW=["longitude","latitude","zoom"];class jE extends PW{constructor(A={}){const t=Array.isArray(A)?A:A.transitionProps,i=Array.isArray(A)?{}:A;i.transitionProps=Array.isArray(t)?{compare:t,required:t}:t||{compare:HW,required:qW},super(i.transitionProps),y(this,"opts",void 0),this.opts=i}initializeProps(A,t){const i=super.initializeProps(A,t),{makeViewport:n,around:r}=this.opts;if(n&&r){const o=n(A),s=n(t),a=o.unproject(r);i.start.around=r,Object.assign(i.end,{around:s.project(a),aroundPosition:a,width:t.width,height:t.height})}return i}interpolateProps(A,t,i){const n={};for(const r of this._propsToExtract)n[r]=Ro(A[r]||0,t[r]||0,i);if(t.aroundPosition&&this.opts.makeViewport){const r=this.opts.makeViewport({...t,...n});Object.assign(n,r.panByPosition(t.aroundPosition,Ro(A.around,t.around,i)))}return n}}const sr={transitionDuration:0},JW=300,kc=e=>1-(1-e)*(1-e),ps={WHEEL:["wheel"],PAN:["panstart","panmove","panend"],PINCH:["pinchstart","pinchmove","pinchend"],TRIPLE_PAN:["tripanstart","tripanmove","tripanend"],DOUBLE_TAP:["doubletap"],KEYBOARD:["keydown"]},oo={};class XE{constructor(A){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 UW({...A,getControllerState:t=>new this.ControllerState(t),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=A.eventManager,this.onViewStateChange=A.onViewStateChange||(()=>{}),this.onStateChange=A.onStateChange||(()=>{}),this.makeViewport=A.makeViewport}set events(A){this.toggleEvents(this._customEvents,!1),this.toggleEvents(A,!0),this._customEvents=A,this.props&&this.setProps(this.props)}finalize(){for(const t in this._events)if(this._events[t]){var A;(A=this.eventManager)===null||A===void 0||A.off(t,this.handleEvent)}this.transitionManager.finalize()}handleEvent(A){this._controllerState=void 0;const t=this._eventStartBlocked;switch(A.type){case"panstart":return t?!1:this._onPanStart(A);case"panmove":return this._onPan(A);case"panend":return this._onPanEnd(A);case"pinchstart":return t?!1:this._onPinchStart(A);case"pinchmove":return this._onPinch(A);case"pinchend":return this._onPinchEnd(A);case"tripanstart":return t?!1:this._onTriplePanStart(A);case"tripanmove":return this._onTriplePan(A);case"tripanend":return this._onTriplePanEnd(A);case"doubletap":return this._onDoubleTap(A);case"wheel":return this._onWheel(A);case"keydown":return this._onKeyDown(A);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(A){const{x:t,y:i}=this.props,{offsetCenter:n}=A;return[n.x-t,n.y-i]}isPointInBounds(A,t){const{width:i,height:n}=this.props;if(t&&t.handled)return!1;const r=A[0]>=0&&A[0]<=i&&A[1]>=0&&A[1]<=n;return r&&t&&t.stopPropagation(),r}isFunctionKeyPressed(A){const{srcEvent:t}=A;return Boolean(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(A){const t=setTimeout(()=>{this._eventStartBlocked===t&&(this._eventStartBlocked=null)},A);this._eventStartBlocked=t}setProps(A){A.dragMode&&(this.dragMode=A.dragMode),this.props=A,"transitionInterpolator"in A||(A.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(A);const{inertia:t}=A;this.inertia=Number.isFinite(t)?t:t===!0?JW:0;const{scrollZoom:i=!0,dragPan:n=!0,dragRotate:r=!0,doubleClickZoom:o=!0,touchZoom:s=!0,touchRotate:a=!1,keyboard:g=!0}=A,I=Boolean(this.onViewStateChange);this.toggleEvents(ps.WHEEL,I&&i),this.toggleEvents(ps.PAN,I&&(n||r)),this.toggleEvents(ps.PINCH,I&&(s||a)),this.toggleEvents(ps.TRIPLE_PAN,I&&a),this.toggleEvents(ps.DOUBLE_TAP,I&&o),this.toggleEvents(ps.KEYBOARD,I&&g),this.scrollZoom=i,this.dragPan=n,this.dragRotate=r,this.doubleClickZoom=o,this.touchZoom=s,this.touchRotate=a,this.keyboard=g}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(A,t){this.eventManager&&A.forEach(i=>{this._events[i]!==t&&(this._events[i]=t,t?this.eventManager.on(i,this.handleEvent):this.eventManager.off(i,this.handleEvent))})}updateViewport(A,t=null,i={}){const n={...A.getViewportProps(),...t},r=this.controllerState!==A;if(this.state=A.getState(),this._setInteractionState(i),r){const o=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:n,interactionState:this._interactionState,oldViewState:o})}}_onTransition(A){this.onViewStateChange({...A,interactionState:this._interactionState})}_setInteractionState(A){Object.assign(this._interactionState,A),this.onStateChange(this._interactionState)}_onPanStart(A){const t=this.getCenter(A);if(!this.isPointInBounds(t,A))return!1;let i=this.isFunctionKeyPressed(A)||A.rightButton||!1;(this.invertPan||this.dragMode==="pan")&&(i=!i);const n=this.controllerState[i?"panStart":"rotateStart"]({pos:t});return this._panMove=i,this.updateViewport(n,sr,{isDragging:!0}),!0}_onPan(A){return this.isDragging()?this._panMove?this._onPanMove(A):this._onPanRotate(A):!1}_onPanEnd(A){return this.isDragging()?this._panMove?this._onPanMoveEnd(A):this._onPanRotateEnd(A):!1}_onPanMove(A){if(!this.dragPan)return!1;const t=this.getCenter(A),i=this.controllerState.pan({pos:t});return this.updateViewport(i,sr,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(A){const{inertia:t}=this;if(this.dragPan&&t&&A.velocity){const i=this.getCenter(A),n=[i[0]+A.velocityX*t/2,i[1]+A.velocityY*t/2],r=this.controllerState.pan({pos:n}).panEnd();this.updateViewport(r,{...this._getTransitionProps(),transitionDuration:t,transitionEasing:kc},{isDragging:!1,isPanning:!0})}else{const i=this.controllerState.panEnd();this.updateViewport(i,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(A){if(!this.dragRotate)return!1;const t=this.getCenter(A),i=this.controllerState.rotate({pos:t});return this.updateViewport(i,sr,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(A){const{inertia:t}=this;if(this.dragRotate&&t&&A.velocity){const i=this.getCenter(A),n=[i[0]+A.velocityX*t/2,i[1]+A.velocityY*t/2],r=this.controllerState.rotate({pos:n}).rotateEnd();this.updateViewport(r,{...this._getTransitionProps(),transitionDuration:t,transitionEasing:kc},{isDragging:!1,isRotating:!0})}else{const i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(A){if(!this.scrollZoom)return!1;A.srcEvent.preventDefault();const t=this.getCenter(A);if(!this.isPointInBounds(t,A))return!1;const{speed:i=.01,smooth:n=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:r}=A;let o=2/(1+Math.exp(-Math.abs(r*i)));r<0&&o!==0&&(o=1/o);const s=this.controllerState.zoom({pos:t,scale:o});return this.updateViewport(s,{...this._getTransitionProps({around:t}),transitionDuration:n?250:1},{isZooming:!0,isPanning:!0}),!0}_onTriplePanStart(A){const t=this.getCenter(A);if(!this.isPointInBounds(t,A))return!1;const i=this.controllerState.rotateStart({pos:t});return this.updateViewport(i,sr,{isDragging:!0}),!0}_onTriplePan(A){if(!this.touchRotate||!this.isDragging())return!1;const t=this.getCenter(A);t[0]-=A.deltaX;const i=this.controllerState.rotate({pos:t});return this.updateViewport(i,sr,{isDragging:!0,isRotating:!0}),!0}_onTriplePanEnd(A){if(!this.isDragging())return!1;const{inertia:t}=this;if(this.touchRotate&&t&&A.velocityY){const i=this.getCenter(A),n=[i[0],i[1]+=A.velocityY*t/2],r=this.controllerState.rotate({pos:n});this.updateViewport(r,{...this._getTransitionProps(),transitionDuration:t,transitionEasing:kc},{isDragging:!1,isRotating:!0}),this.blockEvents(t)}else{const i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(A){const t=this.getCenter(A);if(!this.isPointInBounds(t,A))return!1;const i=this.controllerState.zoomStart({pos:t}).rotateStart({pos:t});return oo._startPinchRotation=A.rotation,oo._lastPinchEvent=A,this.updateViewport(i,sr,{isDragging:!0}),!0}_onPinch(A){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let t=this.controllerState;if(this.touchZoom){const{scale:i}=A,n=this.getCenter(A);t=t.zoom({pos:n,scale:i})}if(this.touchRotate){const{rotation:i}=A;t=t.rotate({deltaAngleX:oo._startPinchRotation-i})}return this.updateViewport(t,sr,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),oo._lastPinchEvent=A,!0}_onPinchEnd(A){if(!this.isDragging())return!1;const{inertia:t}=this,{_lastPinchEvent:i}=oo;if(this.touchZoom&&t&&i&&A.scale!==i.scale){const n=this.getCenter(A);let r=this.controllerState.rotateEnd();const o=Math.log2(A.scale),s=(o-Math.log2(i.scale))/(A.deltaTime-i.deltaTime),a=Math.pow(2,o+s*t/2);r=r.zoom({pos:n,scale:a}).zoomEnd(),this.updateViewport(r,{...this._getTransitionProps({around:n}),transitionDuration:t,transitionEasing:kc},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(t)}else{const n=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(n,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return oo._startPinchRotation=null,oo._lastPinchEvent=null,!0}_onDoubleTap(A){if(!this.doubleClickZoom)return!1;const t=this.getCenter(A);if(!this.isPointInBounds(t,A))return!1;const i=this.isFunctionKeyPressed(A),n=this.controllerState.zoom({pos:t,scale:i?.5:2});return this.updateViewport(n,this._getTransitionProps({around:t}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(A){if(!this.keyboard)return!1;const t=this.isFunctionKeyPressed(A),{zoomSpeed:i,moveSpeed:n,rotateSpeedX:r,rotateSpeedY:o}=this.keyboard===!0?{}:this.keyboard,{controllerState:s}=this;let a;const g={};switch(A.srcEvent.code){case"Minus":a=t?s.zoomOut(i).zoomOut(i):s.zoomOut(i),g.isZooming=!0;break;case"Equal":a=t?s.zoomIn(i).zoomIn(i):s.zoomIn(i),g.isZooming=!0;break;case"ArrowLeft":t?(a=s.rotateLeft(r),g.isRotating=!0):(a=s.moveLeft(n),g.isPanning=!0);break;case"ArrowRight":t?(a=s.rotateRight(r),g.isRotating=!0):(a=s.moveRight(n),g.isPanning=!0);break;case"ArrowUp":t?(a=s.rotateUp(o),g.isRotating=!0):(a=s.moveUp(n),g.isPanning=!0);break;case"ArrowDown":t?(a=s.rotateDown(o),g.isRotating=!0):(a=s.moveDown(n),g.isPanning=!0);break;default:return!1}return this.updateViewport(a,this._getTransitionProps(),g),!0}_getTransitionProps(A){const{transition:t}=this;return!t||!t.transitionInterpolator?sr:A?{...t,transitionInterpolator:new jE({...A,...t.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:t}}class Sb{constructor(A,t){y(this,"_viewportProps",void 0),y(this,"_state",void 0),this._viewportProps=this.applyConstraints(A),this._state=t}getViewportProps(){return this._viewportProps}getState(){return this._state}}const SD=5,OW=1.2;class YW extends Sb{constructor(A){const{width:t,height:i,latitude:n,longitude:r,zoom:o,bearing:s=0,pitch:a=0,altitude:g=1.5,position:I=[0,0,0],maxZoom:l=20,minZoom:c=0,maxPitch:C=60,minPitch:B=0,startPanLngLat:u,startZoomLngLat:E,startRotatePos:h,startBearing:f,startPitch:Q,startZoom:d,normalize:w=!0}=A;at(Number.isFinite(r)),at(Number.isFinite(n)),at(Number.isFinite(o)),super({width:t,height:i,latitude:n,longitude:r,zoom:o,bearing:s,pitch:a,altitude:g,maxZoom:l,minZoom:c,maxPitch:C,minPitch:B,normalize:w,position:I},{startPanLngLat:u,startZoomLngLat:E,startRotatePos:h,startBearing:f,startPitch:Q,startZoom:d}),y(this,"makeViewport",void 0),this.makeViewport=A.makeViewport}panStart({pos:A}){return this._getUpdatedState({startPanLngLat:this._unproject(A)})}pan({pos:A,startPos:t}){const i=this.getState().startPanLngLat||this._unproject(t);if(!i)return this;const r=this.makeViewport(this.getViewportProps()).panByPosition(i,A);return this._getUpdatedState(r)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:A}){return this._getUpdatedState({startRotatePos:A,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:A,deltaAngleX:t=0,deltaAngleY:i=0}){const{startRotatePos:n,startBearing:r,startPitch:o}=this.getState();if(!n||r===void 0||o===void 0)return this;let s;return A?s=this._getNewRotation(A,n,o,r):s={bearing:r+t,pitch:o+i},this._getUpdatedState(s)}rotateEnd(){return this._getUpdatedState({startBearing:null,startPitch:null})}zoomStart({pos:A}){return this._getUpdatedState({startZoomLngLat:this._unproject(A),startZoom:this.getViewportProps().zoom})}zoom({pos:A,startPos:t,scale:i}){let{startZoom:n,startZoomLngLat:r}=this.getState();if(r||(n=this.getViewportProps().zoom,r=this._unproject(t)||this._unproject(A)),!r)return this;const{maxZoom:o,minZoom:s}=this.getViewportProps();let a=n+Math.log2(i);a=ft(a,s,o);const g=this.makeViewport({...this.getViewportProps(),zoom:a});return this._getUpdatedState({zoom:a,...g.panByPosition(r,A)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(A=2){return this._zoomFromCenter(A)}zoomOut(A=2){return this._zoomFromCenter(1/A)}moveLeft(A=100){return this._panFromCenter([A,0])}moveRight(A=100){return this._panFromCenter([-A,0])}moveUp(A=100){return this._panFromCenter([0,A])}moveDown(A=100){return this._panFromCenter([0,-A])}rotateLeft(A=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-A})}rotateRight(A=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+A})}rotateUp(A=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+A})}rotateDown(A=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-A})}shortestPathFrom(A){const t=A.getViewportProps(),i={...this.getViewportProps()},{bearing:n,longitude:r}=i;return Math.abs(n-t.bearing)>180&&(i.bearing=n<0?n+360:n-360),Math.abs(r-t.longitude)>180&&(i.longitude=r<0?r+360:r-360),i}applyConstraints(A){const{maxZoom:t,minZoom:i,zoom:n}=A;A.zoom=ft(n,i,t);const{maxPitch:r,minPitch:o,pitch:s}=A;A.pitch=ft(s,o,r);const{normalize:a=!0}=A;return a&&Object.assign(A,HV(A)),A}_zoomFromCenter(A){const{width:t,height:i}=this.getViewportProps();return this.zoom({pos:[t/2,i/2],scale:A})}_panFromCenter(A){const{width:t,height:i}=this.getViewportProps();return this.pan({startPos:[t/2,i/2],pos:[t/2+A[0],i/2+A[1]]})}_getUpdatedState(A){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...A})}_unproject(A){const t=this.makeViewport(this.getViewportProps());return A&&t.unproject(A)}_getNewRotation(A,t,i,n){const r=A[0]-t[0],o=A[1]-t[1],s=A[1],a=t[1],{width:g,height:I}=this.getViewportProps(),l=r/g;let c=0;o>0?Math.abs(I-a)>SD&&(c=o/(a-I)*OW):o<0&&a>SD&&(c=1-s/a),c=ft(c,-1,1);const{minPitch:C,maxPitch:B}=this.getViewportProps(),u=n+180*l;let E=i;return c>0?E=i+c*(B-i):c<0&&(E=i-c*(C-i)),{pitch:E,bearing:u}}}class KW extends XE{constructor(...A){super(...A),y(this,"ControllerState",YW),y(this,"transition",{transitionDuration:300,transitionInterpolator:new jE({transitionProps:{compare:["longitude","latitude","zoom","bearing","pitch","position"],required:["longitude","latitude","zoom"]}})}),y(this,"dragMode","pan")}setProps(A){A.position=A.position||[0,0,0];const t=this.props;super.setProps(A),(!t||t.height!==A.height)&&this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...A,...this.state}))}}class Db extends Yr{get ViewportType(){return Cn}get ControllerType(){return KW}}y(Db,"displayName","MapView");class VW extends WE{constructor(A,t){super(A,t),y(this,"maskMap",void 0),y(this,"fbo",void 0);const{mapSize:i=2048}=t;this.maskMap=new Pt(A,{width:i,height:i,parameters:{[10241]:9729,[10240]:9729,[10242]:33071,[10243]:33071}}),this.fbo=new $e(A,{id:"maskmap",width:i,height:i,attachments:{[36064]:this.maskMap}})}render(A){const t=this.gl,i=[!1,!1,!1,!1];return i[A.channel]=!0,ui(t,{clearColor:[255,255,255,255],blend:!0,blendFunc:[0,1],blendEquation:32778,colorMask:i,depthTest:!1},()=>super.render({...A,target:this.fbo,pass:"mask"}))}shouldDrawLayer(A){return A.props.operation===Tl.MASK}delete(){this.fbo.delete(),this.maskMap.delete()}}const WW=new fe().lookAt({eye:[0,0,1]});function zW({width:e,height:A,near:t,far:i,padding:n}){let r=-e/2,o=e/2,s=-A/2,a=A/2;if(n){const{left:g=0,right:I=0,top:l=0,bottom:c=0}=n,C=ft((g+e-I)/2,0,e)-e/2,B=ft((l+A-c)/2,0,A)-A/2;r-=C,o-=C,s+=B,a+=B}return new fe().ortho({left:r,right:o,bottom:s,top:a,near:t,far:i})}class jW extends Vn{constructor(A){const{width:t,height:i,near:n=.1,far:r=1e3,zoom:o=0,target:s=[0,0,0],padding:a=null,flipY:g=!0}=A,I=Array.isArray(o)?o[0]:o,l=Array.isArray(o)?o[1]:o,c=Math.min(I,l),C=Math.pow(2,c);let B;if(I!==l){const u=Math.pow(2,I),E=Math.pow(2,l);B={unitsPerMeter:[u/C,E/C,1],metersPerUnit:[C/u,C/E,1]}}super({...A,longitude:void 0,position:s,viewMatrix:WW.clone().scale([C,C*(g?-1:1),C]),projectionMatrix:zW({width:t||1,height:i||1,padding:a,near:n,far:r}),zoom:c,distanceScales:B})}projectFlat([A,t]){const{unitsPerMeter:i}=this.distanceScales;return[A*i[0],t*i[1]]}unprojectFlat([A,t]){const{metersPerUnit:i}=this.distanceScales;return[A*i[0],t*i[1]]}panByPosition(A,t){const i=Pl(t,this.pixelUnprojectionMatrix),n=this.projectFlat(A),r=_B([],n,zL([],i)),o=_B([],this.center,r);return{target:this.unprojectFlat(o)}}}class Rb extends Sb{constructor(A){const{width:t,height:i,rotationX:n=0,rotationOrbit:r=0,target:o=[0,0,0],zoom:s=0,minRotationX:a=-90,maxRotationX:g=90,minZoom:I=-1/0,maxZoom:l=1/0,startPanPosition:c,startRotatePos:C,startRotationX:B,startRotationOrbit:u,startZoomPosition:E,startZoom:h}=A;super({width:t,height:i,rotationX:n,rotationOrbit:r,target:o,zoom:s,minRotationX:a,maxRotationX:g,minZoom:I,maxZoom:l},{startPanPosition:c,startRotatePos:C,startRotationX:B,startRotationOrbit:u,startZoomPosition:E,startZoom:h}),y(this,"makeViewport",void 0),this.makeViewport=A.makeViewport}panStart({pos:A}){return this._getUpdatedState({startPanPosition:this._unproject(A)})}pan({pos:A,startPosition:t}){const i=this.getState().startPanPosition||t;if(!i)return this;const r=this.makeViewport(this.getViewportProps()).panByPosition(i,A);return this._getUpdatedState(r)}panEnd(){return this._getUpdatedState({startPanPosition:null})}rotateStart({pos:A}){return this._getUpdatedState({startRotatePos:A,startRotationX:this.getViewportProps().rotationX,startRotationOrbit:this.getViewportProps().rotationOrbit})}rotate({pos:A,deltaAngleX:t=0,deltaAngleY:i=0}){const{startRotatePos:n,startRotationX:r,startRotationOrbit:o}=this.getState(),{width:s,height:a}=this.getViewportProps();if(!n||r===void 0||o===void 0)return this;let g;if(A){let I=(A[0]-n[0])/s;const l=(A[1]-n[1])/a;(r<-90||r>90)&&(I*=-1),g={rotationX:r+l*180,rotationOrbit:o+I*180}}else g={rotationX:r+i,rotationOrbit:o+t};return this._getUpdatedState(g)}rotateEnd(){return this._getUpdatedState({startRotationX:null,startRotationOrbit:null})}shortestPathFrom(A){const t=A.getViewportProps(),i={...this.getViewportProps()},{rotationOrbit:n}=i;return Math.abs(n-t.rotationOrbit)>180&&(i.rotationOrbit=n<0?n+360:n-360),i}zoomStart({pos:A}){return this._getUpdatedState({startZoomPosition:this._unproject(A),startZoom:this.getViewportProps().zoom})}zoom({pos:A,startPos:t,scale:i}){let{startZoom:n,startZoomPosition:r}=this.getState();if(r||(n=this.getViewportProps().zoom,r=this._unproject(t)||this._unproject(A)),!r)return this;const o=this._calculateNewZoom({scale:i,startZoom:n}),s=this.makeViewport({...this.getViewportProps(),zoom:o});return this._getUpdatedState({zoom:o,...s.panByPosition(r,A)})}zoomEnd(){return this._getUpdatedState({startZoomPosition:null,startZoom:null})}zoomIn(A=2){return this._getUpdatedState({zoom:this._calculateNewZoom({scale:A})})}zoomOut(A=2){return this._getUpdatedState({zoom:this._calculateNewZoom({scale:1/A})})}moveLeft(A=50){return this._panFromCenter([-A,0])}moveRight(A=50){return this._panFromCenter([A,0])}moveUp(A=50){return this._panFromCenter([0,-A])}moveDown(A=50){return this._panFromCenter([0,A])}rotateLeft(A=15){return this._getUpdatedState({rotationOrbit:this.getViewportProps().rotationOrbit-A})}rotateRight(A=15){return this._getUpdatedState({rotationOrbit:this.getViewportProps().rotationOrbit+A})}rotateUp(A=10){return this._getUpdatedState({rotationX:this.getViewportProps().rotationX-A})}rotateDown(A=10){return this._getUpdatedState({rotationX:this.getViewportProps().rotationX+A})}_unproject(A){const t=this.makeViewport(this.getViewportProps());return A&&t.unproject(A)}_calculateNewZoom({scale:A,startZoom:t}){const{maxZoom:i,minZoom:n}=this.getViewportProps();t===void 0&&(t=this.getViewportProps().zoom);const r=t+Math.log2(A);return ft(r,n,i)}_panFromCenter(A){const{width:t,height:i,target:n}=this.getViewportProps();return this.pan({startPosition:n,pos:[t/2+A[0],i/2+A[1]]})}_getUpdatedState(A){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...A})}applyConstraints(A){const{maxZoom:t,minZoom:i,zoom:n,maxRotationX:r,minRotationX:o,rotationOrbit:s}=A;return A.zoom=Array.isArray(n)?[ft(n[0],i,t),ft(n[1],i,t)]:ft(n,i,t),A.rotationX=ft(A.rotationX,o,r),(s<-180||s>180)&&(A.rotationOrbit=uW(s+180,360)-180),A}}class XW extends XE{constructor(...A){super(...A),y(this,"ControllerState",Rb),y(this,"transition",{transitionDuration:300,transitionInterpolator:new jE({transitionProps:{compare:["target","zoom","rotationX","rotationOrbit"],required:["target","zoom"]}})})}}class ZW extends Rb{constructor(A){super(A),y(this,"zoomAxis",void 0),this.zoomAxis=A.zoomAxis||"all"}_calculateNewZoom({scale:A,startZoom:t}){const{maxZoom:i,minZoom:n}=this.getViewportProps();t===void 0&&(t=this.getViewportProps().zoom);let r=Math.log2(A);if(Array.isArray(t)){let[o,s]=t;switch(this.zoomAxis){case"X":o=ft(o+r,n,i);break;case"Y":s=ft(s+r,n,i);break;default:let a=Math.min(o+r,s+r);ai&&(r+=i-a),o+=r,s+=r}return[o,s]}return ft(t+r,n,i)}}class $W extends XE{constructor(...A){super(...A),y(this,"ControllerState",ZW),y(this,"transition",{transitionDuration:300,transitionInterpolator:new jE(["target","zoom"])}),y(this,"dragMode","pan")}_onPanRotate(){return!1}}class ql extends Yr{get ViewportType(){return jW}get ControllerType(){return $W}}y(ql,"displayName","OrthographicView");function Az({layers:e,viewport:A}){let t=null;for(const r of e){const o=r.getBounds();o&&(t?(t[0]=Math.min(t[0],o[0][0]),t[1]=Math.min(t[1],o[0][1]),t[2]=Math.max(t[2],o[1][0]),t[3]=Math.max(t[3],o[1][1])):t=[o[0][0],o[0][1],o[1][0],o[1][1]])}const i=A.getBounds();if(!t)return i;const n=tz(i);return t[2]-t[0]l.props.visible&&l.props.operation===Tl.MASK);if(s.length===0){this.masks=null,this.channels.length=0;return}this.masks={},this.maskPass||(this.maskPass=new VW(A,{id:"default-mask"}),this.maskMap=this.maskPass.maskMap);const a=this._sortMaskChannels(s),g=n[0],I=!this.lastViewport||!this.lastViewport.equals(g);for(const l in a)this._renderChannel(a[l],{layerFilter:i,onViewportActive:r,views:o,viewport:g,viewportChanged:I})}_renderChannel(A,{layerFilter:t,onViewportActive:i,views:n,viewport:r,viewportChanged:o}){const s=this.channels[A.index];if(!s)return;const a=A===s||s.layers.length!==A.layers.length||A.layerBounds.some((g,I)=>g!==s.layerBounds[I]);if(A.bounds=s.bounds,A.maskBounds=s.maskBounds,this.channels[A.index]=A,(a||o)&&(this.lastViewport=r,A.bounds=Az({layers:A.layers,viewport:r}),a||!ln(A.bounds,s.bounds))){const{maskPass:g,maskMap:I}=this,l=ez({bounds:A.bounds,viewport:r,width:I.width,height:I.height});A.maskBounds=l?l.getBounds():[0,0,1,1],g.render({pass:"mask",channel:A.index,layers:A.layers,layerFilter:t,viewports:l?[l]:[],onViewportActive:i,views:n,moduleParameters:{devicePixelRatio:1}})}this.masks[A.id]={index:A.index,bounds:A.maskBounds,coordinateOrigin:A.coordinateOrigin,coordinateSystem:A.coordinateSystem}}_sortMaskChannels(A){const t={};let i=0;for(const n of A){const{id:r}=n.root;let o=t[r];if(!o){if(++i>4){Ae.warn("Too many mask layers. The max supported is 4")();continue}o={id:r,index:this.channels.findIndex(s=>(s==null?void 0:s.id)===r),layers:[],layerBounds:[],coordinateOrigin:n.root.props.coordinateOrigin,coordinateSystem:n.root.props.coordinateSystem},t[r]=o}o.layers.push(n),o.layerBounds.push(n.getBounds())}for(let n=0;n<4;n++){const r=this.channels[n];(!r||!(r.id in t))&&(this.channels[n]=null)}for(const n in t){const r=t[n];r.index<0&&(r.index=this.channels.findIndex(o=>!o),this.channels[r.index]=r)}return t}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 nz=new mb;class rz{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(A){"effects"in A&&(A.effects.length!==this.effects.length||!os(A.effects,this.effects))&&(this.setEffects(A.effects),this._needsRedraw="effects changed")}needsRedraw(A={clearRedrawFlags:!1}){const t=this._needsRedraw;return A.clearRedrawFlags&&(this._needsRedraw=!1),t}getEffects(){return this._internalEffects}finalize(){this.cleanup()}setEffects(A=[]){this.cleanup(),this.effects=A,this._internalEffects=A.slice(),this._internalEffects.push(new iz),A.some(t=>t instanceof mb)||this._internalEffects.push(nz)}cleanup(){for(const A of this.effects)A.cleanup();for(const A of this._internalEffects)A.cleanup();this.effects.length=0,this._internalEffects.length=0}}class oz extends WE{shouldDrawLayer(A){return A.props.operation===Tl.DRAW}}const DD={blendFunc:[1,0,32771,0],blendEquation:32774};class xb extends WE{constructor(...A){super(...A),y(this,"pickZ",void 0),y(this,"_colors",null)}render(A){return A.pickingFBO?this._drawPickingBuffer(A):super.render(A)}_drawPickingBuffer({layers:A,layerFilter:t,views:i,viewports:n,onViewportActive:r,pickingFBO:o,deviceRect:{x:s,y:a,width:g,height:I},cullRect:l,effects:c,pass:C="picking",pickZ:B}){const u=this.gl;this.pickZ=B;const E=B?null:{byLayer:new Map,byAlpha:[]};this._colors=E;const h=ui(u,{scissorTest:!0,scissor:[s,a,g,I],clearColor:[0,0,0,0],depthMask:!0,depthTest:!0,depthRange:[0,1],colorMask:[!0,!0,!0,!0],...DD,blend:!B},()=>super.render({target:o,layers:A,layerFilter:t,views:i,viewports:n,onViewportActive:r,cullRect:l,effects:c==null?void 0:c.filter(Q=>Q.useInPicking),pass:C}));return this._colors=null,{decodePickingColor:E&&az.bind(null,E),stats:h}}shouldDrawLayer(A){return A.props.pickable&&A.props.operation===Tl.DRAW}getModuleParameters(){return{pickingActive:1,pickingAttribute:this.pickZ,lightSources:{}}}getLayerParameters(A,t,i){const n={...A.props.parameters};return this._colors?(Object.assign(n,DD),n.blend=!0,n.blendColor=sz(this._colors,A,i)):n.blend=!1,n}}function sz(e,A,t){const{byLayer:i,byAlpha:n}=e;let r,o=i.get(A);return o?(o.viewports.push(t),r=o.a):(r=i.size+1,r<=255?(o={a:r,layer:A,viewports:[t]},i.set(A,o),n[r]=o):(Ae.warn("Too many pickable layers, only picking the first 255")(),r=0)),[0,0,0,r/255]}function az(e,A){const t=e.byAlpha[A[3]];return t&&{pickedLayer:t.layer,pickedViewports:t.viewports,pickedObjectIndex:t.layer.decodePickingColor(A)}}const gz="deckRenderer.renderLayers";class Iz{constructor(A){this.gl=A,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new oz(A),this.pickLayersPass=new xb(A),this.renderCount=0,this._needsRedraw="Initial render",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(A){"layerFilter"in A&&this.layerFilter!==A.layerFilter&&(this.layerFilter=A.layerFilter,this._needsRedraw="layerFilter changed"),"drawPickingColors"in A&&this.drawPickingColors!==A.drawPickingColors&&(this.drawPickingColors=A.drawPickingColors,this._needsRedraw="drawPickingColors changed")}renderLayers(A){const t=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass;A.layerFilter=A.layerFilter||this.layerFilter,A.effects=A.effects||[],A.target=A.target||$e.getDefaultFramebuffer(this.gl),this._preRender(A.effects,A);const i=this.lastPostProcessEffect?this.renderBuffers[0]:A.target,n=t.render({...A,target:i});this._postRender(A.effects,A),this.renderCount++,Rt(gz,this,n,A)}needsRedraw(A={clearRedrawFlags:!1}){const t=this._needsRedraw;return A.clearRedrawFlags&&(this._needsRedraw=!1),t}finalize(){const{renderBuffers:A}=this;for(const t of A)t.delete();A.length=0}_preRender(A,t){let i=null;for(const n of A)n.preRender(this.gl,t),n.postRender&&(i=n);i&&this._resizeRenderBuffers(),this.lastPostProcessEffect=i}_resizeRenderBuffers(){const{renderBuffers:A}=this;A.length===0&&A.push(new $e(this.gl),new $e(this.gl));for(const t of A)t.resize()}_postRender(A,t){const{renderBuffers:i}=this,n={inputBuffer:i[0],swapBuffer:i[1],target:null};for(const r of A)if(r.postRender){if(r===this.lastPostProcessEffect){n.target=t.target,r.postRender(this.gl,n);break}const o=r.postRender(this.gl,n);n.inputBuffer=o,n.swapBuffer=o===i[0]?i[1]:i[0]}}}const lz={pickedColor:null,pickedObjectIndex:-1};function cz({pickedColors:e,decodePickingColor:A,deviceX:t,deviceY:i,deviceRadius:n,deviceRect:r}){const{x:o,y:s,width:a,height:g}=r;let I=n*n,l=-1,c=0;for(let C=0;CI)c+=4*a;else for(let E=0;E=0){const f=E+o-t,Q=f*f+u;Q<=I&&(I=Q,l=c)}c+=4}}if(l>=0){const C=e.slice(l,l+4),B=A(C);if(B){const u=Math.floor(l/4/a),E=l/4-u*a;return{...B,pickedColor:C,pickedX:o+E,pickedY:s+u}}Ae.error("Picked non-existent layer. Is picking buffer corrupt?")()}return lz}function Cz({pickedColors:e,decodePickingColor:A}){const t=new Map;if(e){for(let i=0;i=0){const r=e.slice(i,i+4),o=r.join(",");if(!t.has(o)){const s=A(r);s?t.set(o,{...s,color:r}):Ae.error("Picked non-existent layer. Is picking buffer corrupt?")()}}}return Array.from(t.values())}function Fb({pickInfo:e,viewports:A,pixelRatio:t,x:i,y:n,z:r}){let o=A[0];A.length>1&&(o=Ez((e==null?void 0:e.pickedViewports)||A,{x:i,y:n}));let s;if(o){const a=[i-o.x,n-o.y];r!==void 0&&(a[2]=r),s=o.unproject(a)}return{color:null,layer:null,viewport:o,index:-1,picked:!1,x:i,y:n,pixel:[i,n],coordinate:s,devicePixel:e&&"pickedX"in e?[e.pickedX,e.pickedY]:void 0,pixelRatio:t}}function Bz(e){const{pickInfo:A,lastPickedInfo:t,mode:i,layers:n}=e,{pickedColor:r,pickedLayer:o,pickedObjectIndex:s}=A,a=o?[o]:[];if(i==="hover"){const l=t.index,c=t.layerId,C=o?o.props.id:null;if(C!==c||s!==l){if(C!==c){const B=n.find(u=>u.props.id===c);B&&a.unshift(B)}t.layerId=C,t.index=s,t.info=null}}const g=Fb(e),I=new Map;return I.set(null,g),a.forEach(l=>{let c={...g};l===o&&(c.color=r,c.index=s,c.picked=!0),c=Nb({layer:l,info:c,mode:i});const C=c.layer;l===o&&i==="hover"&&(t.info=c),I.set(C.id,c),i==="hover"&&C.updateAutoHighlight(c)}),I}function Nb({layer:e,info:A,mode:t}){for(;e&&A;){const i=A.layer||null;A.sourceLayer=i,A.layer=e,A=e.getPickingInfo({info:A,mode:t,sourceLayer:i}),e=e.parent}return A}function Ez(e,A){for(let t=e.length-1;t>=0;t--){const i=e[t];if(i.containsPixel(A))return i}return e[0]}class uz{constructor(A){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=A,this.pickLayersPass=new xb(A),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(A){"layerFilter"in A&&(this.layerFilter=A.layerFilter),"_pickable"in A&&(this._pickable=A._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.delete(),this.depthFBO&&(this.depthFBO.color.delete(),this.depthFBO.delete())}pickObject(A){return this._pickClosestObject(A)}pickObjects(A){return this._pickVisibleObjects(A)}getLastPickedObject({x:A,y:t,layers:i,viewports:n},r=this.lastPickedInfo.info){const o=r&&r.layer&&r.layer.id,s=r&&r.viewport&&r.viewport.id,a=o?i.find(c=>c.id===o):null,g=s&&n.find(c=>c.id===s)||n[0],I=g&&g.unproject([A-g.x,t-g.y]);return{...r,...{x:A,y:t,viewport:g,coordinate:I,layer:a}}}_resizeBuffer(){var A,t;const{gl:i}=this;if(!this.pickingFBO&&(this.pickingFBO=new $e(i),$e.isSupported(i,{colorBufferFloat:!0}))){const n=new $e(i);n.attach({[36064]:new Pt(i,{format:ie(i)?34836:6408,type:5126})}),this.depthFBO=n}(A=this.pickingFBO)===null||A===void 0||A.resize({width:i.canvas.width,height:i.canvas.height}),(t=this.depthFBO)===null||t===void 0||t.resize({width:i.canvas.width,height:i.canvas.height})}_getPickable(A){if(this._pickable===!1)return null;const t=A.filter(i=>i.isPickable()&&!i.isComposite);return t.length?t:null}_pickClosestObject({layers:A,views:t,viewports:i,x:n,y:r,radius:o=0,depth:s=1,mode:a="query",unproject3D:g,onViewportActive:I,effects:l}){const c=this._getPickable(A),C=ua(this.gl);if(!c)return{result:[],emptyInfo:Fb({viewports:i,x:n,y:r,pixelRatio:C})};this._resizeBuffer();const B=kh(this.gl,[n,r],!0),u=[B.x+Math.floor(B.width/2),B.y+Math.floor(B.height/2)],E=Math.round(o*C),{width:h,height:f}=this.pickingFBO,Q=this._getPickingRect({deviceX:u[0],deviceY:u[1],deviceRadius:E,deviceWidth:h,deviceHeight:f}),d={x:n-o,y:r-o,width:o*2+1,height:o*2+1};let w;const m=[],v=new Set;for(let x=0;x=g);D++){const F=m[D];let N={color:F.pickedColor,layer:null,index:F.pickedObjectIndex,picked:!0,x:n,y:r,pixelRatio:C};N=Nb({layer:F.pickedLayer,info:N,mode:a}),v.has(N.object)||v.set(N.object,N)}return Array.from(v.values())}_drawAndSample({layers:A,views:t,viewports:i,onViewportActive:n,deviceRect:r,cullRect:o,effects:s,pass:a},g=!1){const I=g?this.depthFBO:this.pickingFBO,{decodePickingColor:l}=this.pickLayersPass.render({layers:A,layerFilter:this.layerFilter,views:t,viewports:i,onViewportActive:n,pickingFBO:I,deviceRect:r,cullRect:o,effects:s,pass:a,pickZ:g}),{x:c,y:C,width:B,height:u}=r,E=new(g?Float32Array:Uint8Array)(B*u*4);return VE(I,{sourceX:c,sourceY:C,sourceWidth:B,sourceHeight:u,target:E}),{pickedColors:E,decodePickingColor:l}}_getPickingRect({deviceX:A,deviceY:t,deviceRadius:i,deviceWidth:n,deviceHeight:r}){const o=Math.max(0,A-i),s=Math.max(0,t-i),a=Math.min(n,A+i+1)-o,g=Math.min(r,t+i+1)-s;return a<=0||g<=0?null:{x:o,y:s,width:a,height:g}}}const hz={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"};class fz{constructor(A){y(this,"el",null),y(this,"isVisible",!1);const t=A.parentElement;t&&(this.el=document.createElement("div"),this.el.className="deck-tooltip",Object.assign(this.el.style,hz),t.appendChild(this.el))}setTooltip(A,t,i){const n=this.el;if(!!n){if(typeof A=="string")n.innerText=A;else if(A)A.text&&(n.innerText=A.text),A.html&&(n.innerHTML=A.html),A.className&&(n.className=A.className),Object.assign(n.style,A.style);else{this.isVisible=!1,n.style.display="none";return}this.isVisible=!0,n.style.display="block",n.style.transform="translate(".concat(t,"px, ").concat(i,"px)")}}remove(){this.el&&(this.el.remove(),this.el=null)}}var Ua={exports:{}};/*! Hammer.JS - v2.0.7 - 2016-04-22 - * http://hammerjs.github.io/ - * - * Copyright (c) 2016 Jorik Tangelder; - * Licensed under the MIT license */(function(e){(function(A,t,i,n){var r=["","webkit","Moz","MS","ms","o"],o=t.createElement("div"),s="function",a=Math.round,g=Math.abs,I=Date.now;function l(S,R,b){return setTimeout(Q(S,b),R)}function c(S,R,b){return Array.isArray(S)?(C(S,b[R],b),!0):!1}function C(S,R,b){var K;if(!!S)if(S.forEach)S.forEach(R,b);else if(S.length!==n)for(K=0;K\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",oe=A.console&&(A.console.warn||A.console.log);return oe&&oe.call(A.console,K,uA),S.apply(this,arguments)}}var u;typeof Object.assign!="function"?u=function(R){if(R===n||R===null)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(R),K=1;K-1}function F(S){return S.trim().split(/\s+/g)}function N(S,R,b){if(S.indexOf&&!b)return S.indexOf(R);for(var K=0;K_t[R]}):K=K.sort()),K}function P(S,R){for(var b,K,nA=R[0].toUpperCase()+R.slice(1),uA=0;uA1&&!b.firstMultiple?b.firstMultiple=_e(R):nA===1&&(b.firstMultiple=!1);var uA=b.firstInput,oe=b.firstMultiple,nt=oe?oe.center:uA.center,ct=R.center=WA(K);R.timeStamp=I(),R.deltaTime=R.timeStamp-uA.timeStamp,R.angle=JA(nt,ct),R.distance=se(nt,ct),re(b,R),R.offsetDirection=xe(R.deltaX,R.deltaY);var _t=qA(R.deltaTime,R.deltaX,R.deltaY);R.overallVelocityX=_t.x,R.overallVelocityY=_t.y,R.overallVelocity=g(_t.x)>g(_t.y)?_t.x:_t.y,R.scale=oe?Be(oe.pointers,K):1,R.rotation=oe?xA(oe.pointers,K):0,R.maxPointers=b.prevInput?R.pointers.length>b.prevInput.maxPointers?R.pointers.length:b.prevInput.maxPointers:R.pointers.length,VA(b,R);var Ji=S.element;x(R.srcEvent.target,Ji)&&(Ji=R.srcEvent.target),R.target=Ji}function re(S,R){var b=R.center,K=S.offsetDelta||{},nA=S.prevDelta||{},uA=S.prevInput||{};(R.eventType===sA||uA.eventType===IA)&&(nA=S.prevDelta={x:uA.deltaX||0,y:uA.deltaY||0},K=S.offsetDelta={x:b.x,y:b.y}),R.deltaX=nA.x+(b.x-K.x),R.deltaY=nA.y+(b.y-K.y)}function VA(S,R){var b=S.lastInterval||R,K=R.timeStamp-b.timeStamp,nA,uA,oe,nt;if(R.eventType!=bA&&(K>gA||b.velocity===n)){var ct=R.deltaX-b.deltaX,_t=R.deltaY-b.deltaY,Ji=qA(K,ct,_t);uA=Ji.x,oe=Ji.y,nA=g(Ji.x)>g(Ji.y)?Ji.x:Ji.y,nt=xe(ct,_t),S.lastInterval=R}else nA=b.velocity,uA=b.velocityX,oe=b.velocityY,nt=b.direction;R.velocity=nA,R.velocityX=uA,R.velocityY=oe,R.direction=nt}function _e(S){for(var R=[],b=0;b=g(R)?S<0?QA:TA:R<0?RA:UA}function se(S,R,b){b||(b=ne);var K=R[b[0]]-S[b[0]],nA=R[b[1]]-S[b[1]];return Math.sqrt(K*K+nA*nA)}function JA(S,R,b){b||(b=ne);var K=R[b[0]]-S[b[0]],nA=R[b[1]]-S[b[1]];return Math.atan2(nA,K)*180/Math.PI}function xA(S,R){return JA(R[1],R[0],Ie)+JA(S[1],S[0],Ie)}function Be(S,R){return se(R[0],R[1],Ie)/se(S[0],S[1],Ie)}var ue={mousedown:sA,mousemove:BA,mouseup:IA},PA="mousedown",rA="mousemove mouseup";function GA(){this.evEl=PA,this.evWin=rA,this.pressed=!1,KA.apply(this,arguments)}f(GA,KA,{handler:function(R){var b=ue[R.type];b&sA&&R.button===0&&(this.pressed=!0),b&BA&&R.which!==1&&(b=IA),this.pressed&&(b&IA&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[R],changedPointers:[R],pointerType:AA,srcEvent:R}))}});var ve={pointerdown:sA,pointermove:BA,pointerup:IA,pointercancel:bA,pointerout:bA},pe={2:q,3:j,4:AA,5:iA},Fe="pointerdown",Ne="pointermove pointerup pointercancel";A.MSPointerEvent&&!A.PointerEvent&&(Fe="MSPointerDown",Ne="MSPointerMove MSPointerUp MSPointerCancel");function Xe(){this.evEl=Fe,this.evWin=Ne,KA.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}f(Xe,KA,{handler:function(R){var b=this.store,K=!1,nA=R.type.toLowerCase().replace("ms",""),uA=ve[nA],oe=pe[R.pointerType]||R.pointerType,nt=oe==q,ct=N(b,R.pointerId,"pointerId");uA&sA&&(R.button===0||nt)?ct<0&&(b.push(R),ct=b.length-1):uA&(IA|bA)&&(K=!0),!(ct<0)&&(b[ct]=R,this.callback(this.manager,uA,{pointers:b,changedPointers:[R],pointerType:oe,srcEvent:R}),K&&b.splice(ct,1))}});var it={touchstart:sA,touchmove:BA,touchend:IA,touchcancel:bA},Ar="touchstart",ls="touchstart touchmove touchend touchcancel";function fn(){this.evTarget=Ar,this.evWin=ls,this.started=!1,KA.apply(this,arguments)}f(fn,KA,{handler:function(R){var b=it[R.type];if(b===sA&&(this.started=!0),!!this.started){var K=rg.call(this,R,b);b&(IA|bA)&&K[0].length-K[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:K[0],changedPointers:K[1],pointerType:q,srcEvent:R})}}});function rg(S,R){var b=M(S.touches),K=M(S.changedTouches);return R&(IA|bA)&&(b=U(b.concat(K),"identifier",!0)),[b,K]}var cs={touchstart:sA,touchmove:BA,touchend:IA,touchcancel:bA},wA="touchstart touchmove touchend touchcancel";function LA(){this.evTarget=wA,this.targetIds={},KA.apply(this,arguments)}f(LA,KA,{handler:function(R){var b=cs[R.type],K=Se.call(this,R,b);!K||this.callback(this.manager,b,{pointers:K[0],changedPointers:K[1],pointerType:q,srcEvent:R})}});function Se(S,R){var b=M(S.touches),K=this.targetIds;if(R&(sA|BA)&&b.length===1)return K[b[0].identifier]=!0,[b,b];var nA,uA,oe=M(S.changedTouches),nt=[],ct=this.target;if(uA=b.filter(function(_t){return x(_t.target,ct)}),R===sA)for(nA=0;nA-1&&K.splice(uA,1)};setTimeout(nA,ye)}}function L(S){for(var R=S.srcEvent.clientX,b=S.srcEvent.clientY,K=0;K-1&&this.requireFail.splice(R,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(S){return!!this.simultaneous[S.id]},emit:function(S){var R=this,b=this.state;function K(nA){R.manager.emit(nA,S)}b=wt&&K(R.options.event+Ym(b))},tryEmit:function(S){if(this.canEmit())return this.emit(S);this.state=qi},canEmit:function(){for(var S=0;SR.threshold&&nA&R.direction},attrTest:function(S){return vi.prototype.attrTest.call(this,S)&&(this.state&kA||!(this.state&kA)&&this.directionTest(S))},emit:function(S){this.pX=S.deltaX,this.pY=S.deltaY;var R=Km(S.direction);R&&(S.additionalEvent=this.options.event+R),this._super.emit.call(this,S)}});function Nu(){vi.apply(this,arguments)}f(Nu,vi,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[dA]},attrTest:function(S){return this._super.attrTest.call(this,S)&&(Math.abs(S.scale-1)>this.options.threshold||this.state&kA)},emit:function(S){if(S.scale!==1){var R=S.scale<1?"in":"out";S.additionalEvent=this.options.event+R}this._super.emit.call(this,S)}});function Lu(){dn.apply(this,arguments),this._timer=null,this._input=null}f(Lu,dn,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[X]},process:function(S){var R=this.options,b=S.pointers.length===R.pointers,K=S.distanceR.time;if(this._input=S,!K||!b||S.eventType&(IA|bA)&&!nA)this.reset();else if(S.eventType&sA)this.reset(),this._timer=l(function(){this.state=vt,this.tryEmit()},R.time,this);else if(S.eventType&IA)return vt;return qi},reset:function(){clearTimeout(this._timer)},emit:function(S){this.state===vt&&(S&&S.eventType&IA?this.manager.emit(this.options.event+"up",S):(this._input.timeStamp=I(),this.manager.emit(this.options.event,this._input)))}});function bu(){vi.apply(this,arguments)}f(bu,vi,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[dA]},attrTest:function(S){return this._super.attrTest.call(this,S)&&(Math.abs(S.rotation)>this.options.threshold||this.state&kA)}});function Gu(){vi.apply(this,arguments)}f(Gu,vi,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:fA|NA,pointers:1},getTouchAction:function(){return sc.prototype.getTouchAction.call(this)},attrTest:function(S){var R=this.options.direction,b;return R&(fA|NA)?b=S.overallVelocity:R&fA?b=S.overallVelocityX:R&NA&&(b=S.overallVelocityY),this._super.attrTest.call(this,S)&&R&S.offsetDirection&&S.distance>this.options.threshold&&S.maxPointers==this.options.pointers&&g(b)>this.options.velocity&&S.eventType&IA},emit:function(S){var R=Km(S.offsetDirection);R&&this.manager.emit(this.options.event+R,S),this.manager.emit(this.options.event,S)}});function ac(){dn.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}f(ac,dn,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[tA]},process:function(S){var R=this.options,b=S.pointers.length===R.pointers,K=S.distance0&&i.type==="pointerdown"&&(pz(n,r=>r.pointerId===i.pointerId)||n.push(i)),A.call(this,i)}}function mz(e){e.prototype.handler=function(t){let i=dz[t.type];i&Lb&&t.button>=0&&(this.pressed=!0),i&bb&&t.which===0&&(i=fd),this.pressed&&(i&fd&&(this.pressed=!1),this.callback(this.manager,i,{pointers:[t],changedPointers:[t],pointerType:"mouse",srcEvent:t}))}}yz(Ua.exports.PointerEventInput);mz(Ua.exports.MouseInput);const wz=Ua.exports.Manager;class ZE{constructor(A,t,i){this.element=A,this.callback=t,this.options={enable:!0,...i}}}const vz=Yi?[[Yi.Pan,{event:"tripan",pointers:3,threshold:0,enable:!1}],[Yi.Rotate,{enable:!1}],[Yi.Pinch,{enable:!1}],[Yi.Swipe,{enable:!1}],[Yi.Pan,{threshold:0,enable:!1}],[Yi.Press,{enable:!1}],[Yi.Tap,{event:"doubletap",taps:2,enable:!1}],[Yi.Tap,{event:"anytap",enable:!1}],[Yi.Tap,{enable:!1}]]:null,RD={tripan:["rotate","pinch","pan"],rotate:["pinch"],pinch:["pan"],pan:["press","doubletap","anytap","tap"],doubletap:["anytap"],anytap:["tap"]},Sz={doubletap:["tap"]},Dz={pointerdown:"pointerdown",pointermove:"pointermove",pointerup:"pointerup",touchstart:"pointerdown",touchmove:"pointermove",touchend:"pointerup",mousedown:"pointerdown",mousemove:"pointermove",mouseup:"pointerup"},Ay={KEY_EVENTS:["keydown","keyup"],MOUSE_EVENTS:["mousedown","mousemove","mouseup","mouseover","mouseout","mouseleave"],WHEEL_EVENTS:["wheel","mousewheel"]},Rz={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"},xD={click:"tap",anyclick:"anytap",dblclick:"doubletap",mousedown:"pointerdown",mousemove:"pointermove",mouseup:"pointerup",mouseover:"pointerover",mouseout:"pointerout",mouseleave:"pointerleave"},xz=typeof navigator!="undefined"&&navigator.userAgent?navigator.userAgent.toLowerCase():"",Hs=typeof window!="undefined"?window:global;let Qd=!1;try{const e={get passive(){return Qd=!0,!0}};Hs.addEventListener("test",null,e),Hs.removeEventListener("test",null)}catch{Qd=!1}const Fz=xz.indexOf("firefox")!==-1,{WHEEL_EVENTS:Nz}=Ay,FD="wheel",ND=4.000244140625,Lz=40,bz=.25;class Gz extends ZE{constructor(A,t,i){super(A,t,i),this.handleEvent=n=>{if(!this.options.enable)return;let r=n.deltaY;Hs.WheelEvent&&(Fz&&n.deltaMode===Hs.WheelEvent.DOM_DELTA_PIXEL&&(r/=Hs.devicePixelRatio),n.deltaMode===Hs.WheelEvent.DOM_DELTA_LINE&&(r*=Lz)),r!==0&&r%ND===0&&(r=Math.floor(r/ND)),n.shiftKey&&r&&(r=r*bz),this.callback({type:FD,center:{x:n.clientX,y:n.clientY},delta:-r,srcEvent:n,pointerType:"mouse",target:n.target})},this.events=(this.options.events||[]).concat(Nz),this.events.forEach(n=>A.addEventListener(n,this.handleEvent,Qd?{passive:!1}:!1))}destroy(){this.events.forEach(A=>this.element.removeEventListener(A,this.handleEvent))}enableEventType(A,t){A===FD&&(this.options.enable=t)}}const{MOUSE_EVENTS:_z}=Ay,LD="pointermove",bD="pointerover",GD="pointerout",_D="pointerenter",MD="pointerleave";class Mz extends ZE{constructor(A,t,i){super(A,t,i),this.handleEvent=r=>{this.handleOverEvent(r),this.handleOutEvent(r),this.handleEnterEvent(r),this.handleLeaveEvent(r),this.handleMoveEvent(r)},this.pressed=!1;const{enable:n}=this.options;this.enableMoveEvent=n,this.enableLeaveEvent=n,this.enableEnterEvent=n,this.enableOutEvent=n,this.enableOverEvent=n,this.events=(this.options.events||[]).concat(_z),this.events.forEach(r=>A.addEventListener(r,this.handleEvent))}destroy(){this.events.forEach(A=>this.element.removeEventListener(A,this.handleEvent))}enableEventType(A,t){A===LD&&(this.enableMoveEvent=t),A===bD&&(this.enableOverEvent=t),A===GD&&(this.enableOutEvent=t),A===_D&&(this.enableEnterEvent=t),A===MD&&(this.enableLeaveEvent=t)}handleOverEvent(A){this.enableOverEvent&&A.type==="mouseover"&&this._emit(bD,A)}handleOutEvent(A){this.enableOutEvent&&A.type==="mouseout"&&this._emit(GD,A)}handleEnterEvent(A){this.enableEnterEvent&&A.type==="mouseenter"&&this._emit(_D,A)}handleLeaveEvent(A){this.enableLeaveEvent&&A.type==="mouseleave"&&this._emit(MD,A)}handleMoveEvent(A){if(this.enableMoveEvent)switch(A.type){case"mousedown":A.button>=0&&(this.pressed=!0);break;case"mousemove":A.which===0&&(this.pressed=!1),this.pressed||this._emit(LD,A);break;case"mouseup":this.pressed=!1;break}}_emit(A,t){this.callback({type:A,center:{x:t.clientX,y:t.clientY},srcEvent:t,pointerType:"mouse",target:t.target})}}const{KEY_EVENTS:kz}=Ay,kD="keydown",TD="keyup";class Tz extends ZE{constructor(A,t,i){super(A,t,i),this.handleEvent=n=>{const r=n.target||n.srcElement;r.tagName==="INPUT"&&r.type==="text"||r.tagName==="TEXTAREA"||(this.enableDownEvent&&n.type==="keydown"&&this.callback({type:kD,srcEvent:n,key:n.key,target:n.target}),this.enableUpEvent&&n.type==="keyup"&&this.callback({type:TD,srcEvent:n,key:n.key,target:n.target}))},this.enableDownEvent=this.options.enable,this.enableUpEvent=this.options.enable,this.events=(this.options.events||[]).concat(kz),A.tabIndex=this.options.tabIndex||0,A.style.outline="none",this.events.forEach(n=>A.addEventListener(n,this.handleEvent))}destroy(){this.events.forEach(A=>this.element.removeEventListener(A,this.handleEvent))}enableEventType(A,t){A===kD&&(this.enableDownEvent=t),A===TD&&(this.enableUpEvent=t)}}const UD="contextmenu";class Uz extends ZE{constructor(A,t,i){super(A,t,i),this.handleEvent=n=>{!this.options.enable||this.callback({type:UD,center:{x:n.clientX,y:n.clientY},srcEvent:n,pointerType:"mouse",target:n.target})},A.addEventListener("contextmenu",this.handleEvent)}destroy(){this.element.removeEventListener("contextmenu",this.handleEvent)}enableEventType(A,t){A===UD&&(this.options.enable=t)}}const dd=1,PB=2,pd=4,Pz={pointerdown:dd,pointermove:PB,pointerup:pd,mousedown:dd,mousemove:PB,mouseup:pd},Hz=1,qz=2,Jz=3,Oz=0,Yz=1,Kz=2,Vz=1,Wz=2,zz=4;function jz(e){const A=Pz[e.srcEvent.type];if(!A)return null;const{buttons:t,button:i,which:n}=e.srcEvent;let r=!1,o=!1,s=!1;return A===pd||A===PB&&!Number.isFinite(t)?(r=n===Hz,o=n===qz,s=n===Jz):A===PB?(r=Boolean(t&Vz),o=Boolean(t&zz),s=Boolean(t&Wz)):A===dd&&(r=i===Oz,o=i===Yz,s=i===Kz),{leftButton:r,middleButton:o,rightButton:s}}function Xz(e,A){const t=e.center;if(!t)return null;const i=A.getBoundingClientRect(),n=i.width/A.offsetWidth||1,r=i.height/A.offsetHeight||1,o={x:(t.x-i.left-A.clientLeft)/n,y:(t.y-i.top-A.clientTop)/r};return{center:t,offsetCenter:o}}const Af={srcElement:"root",priority:0};class Zz{constructor(A){this.handleEvent=t=>{if(this.isEmpty())return;const i=this._normalizeEvent(t);let n=t.srcEvent.target;for(;n&&n!==i.rootElement;){if(this._emit(i,n),i.handled)return;n=n.parentNode}this._emit(i,"root")},this.eventManager=A,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(A,t,i,n=!1,r=!1){const{handlers:o,handlersByElement:s}=this;let a=Af;typeof i=="string"||i&&i.addEventListener?a={...Af,srcElement:i}:i&&(a={...Af,...i});let g=s.get(a.srcElement);g||(g=[],s.set(a.srcElement,g));const I={type:A,handler:t,srcElement:a.srcElement,priority:a.priority};n&&(I.once=!0),r&&(I.passive=!0),o.push(I),this._active=this._active||!I.passive;let l=g.length-1;for(;l>=0&&!(g[l].priority>=I.priority);)l--;g.splice(l+1,0,I)}remove(A,t){const{handlers:i,handlersByElement:n}=this;for(let r=i.length-1;r>=0;r--){const o=i[r];if(o.type===A&&o.handler===t){i.splice(r,1);const s=n.get(o.srcElement);s.splice(s.indexOf(o),1),s.length===0&&n.delete(o.srcElement)}}this._active=i.some(r=>!r.passive)}_emit(A,t){const i=this.handlersByElement.get(t);if(i){let n=!1;const r=()=>{A.handled=!0},o=()=>{A.handled=!0,n=!0},s=[];for(let a=0;a{A.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:t}}}const $z={events:null,recognizers:null,recognizerOptions:{},Manager:wz,touchAction:"none",tabIndex:0};class A7{constructor(A=null,t){this._onBasicInput=n=>{const{srcEvent:r}=n,o=Dz[r.type];o&&this.manager.emit(o,n)},this._onOtherEvent=n=>{this.manager.emit(n.type,n)},this.options={...$z,...t},this.events=new Map,this.setElement(A);const{events:i}=this.options;i&&this.on(i)}getElement(){return this.element}setElement(A){if(this.element&&this.destroy(),this.element=A,!A)return;const{options:t}=this,i=t.Manager;this.manager=new i(A,{touchAction:t.touchAction,recognizers:t.recognizers||vz}).on("hammer.input",this._onBasicInput),t.recognizers||Object.keys(RD).forEach(n=>{const r=this.manager.get(n);r&&RD[n].forEach(o=>{r.recognizeWith(o)})});for(const n in t.recognizerOptions){const r=this.manager.get(n);if(r){const o=t.recognizerOptions[n];delete o.enable,r.set(o)}}this.wheelInput=new Gz(A,this._onOtherEvent,{enable:!1}),this.moveInput=new Mz(A,this._onOtherEvent,{enable:!1}),this.keyInput=new Tz(A,this._onOtherEvent,{enable:!1,tabIndex:t.tabIndex}),this.contextmenuInput=new Uz(A,this._onOtherEvent,{enable:!1});for(const[n,r]of this.events)r.isEmpty()||(this._toggleRecognizer(r.recognizerName,!0),this.manager.on(n,r.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(A,t,i){this._addEventHandler(A,t,i,!1)}once(A,t,i){this._addEventHandler(A,t,i,!0)}watch(A,t,i){this._addEventHandler(A,t,i,!1,!0)}off(A,t){this._removeEventHandler(A,t)}_toggleRecognizer(A,t){const{manager:i}=this;if(!i)return;const n=i.get(A);if(n&&n.options.enable!==t){n.set({enable:t});const r=Sz[A];r&&!this.options.recognizers&&r.forEach(o=>{const s=i.get(o);t?(s.requireFailure(A),n.dropRequireFailure(o)):s.dropRequireFailure(A)})}this.wheelInput.enableEventType(A,t),this.moveInput.enableEventType(A,t),this.keyInput.enableEventType(A,t),this.contextmenuInput.enableEventType(A,t)}_addEventHandler(A,t,i,n,r){if(typeof A!="string"){i=t;for(const I in A)this._addEventHandler(I,A[I],i,n,r);return}const{manager:o,events:s}=this,a=xD[A]||A;let g=s.get(a);g||(g=new Zz(this),s.set(a,g),g.recognizerName=Rz[a]||a,o&&o.on(a,g.handleEvent)),g.add(A,t,i,n,r),g.isEmpty()||this._toggleRecognizer(g.recognizerName,!0)}_removeEventHandler(A,t){if(typeof A!="string"){for(const o in A)this._removeEventHandler(o,A[o]);return}const{events:i}=this,n=xD[A]||A,r=i.get(n);if(!!r&&(r.remove(A,t),r.isEmpty())){const{recognizerName:o}=r;let s=!1;for(const a of i.values())if(a.recognizerName===o&&!a.isEmpty()){s=!0;break}s||this._toggleRecognizer(o,!1)}}}function so(){}const e7=({isDragging:e})=>e?"grabbing":"grab",Gb={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:so,onResize:so,onViewStateChange:so,onInteractionStateChange:so,onBeforeRender:so,onAfterRender:so,onLoad:so,onError:e=>Ae.error(e.message)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:e7,getTooltip:null,debug:!1,drawPickingColors:!1};class $E{constructor(A){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",t=>{const{_pickRequest:i}=this;if(t.type==="pointerleave")i.x=-1,i.y=-1,i.radius=0;else{if(t.leftButton||t.rightButton)return;{const n=t.offsetCenter;if(!n)return;i.x=n.x,i.y=n.y,i.radius=this.props.pickingRadius}}this.layerManager&&(this.layerManager.context.mousePosition={x:i.x,y:i.y}),i.event=t}),y(this,"_onEvent",t=>{const i=BD[t.type],n=t.offsetCenter;if(!i||!n||!this.layerManager)return;const r=this.layerManager.getLayers(),o=this.deckPicker.getLastPickedObject({x:n.x,y:n.y,layers:r,viewports:this.getViewports(n)},this._lastPointerDownInfo),{layer:s}=o,a=s&&(s[i.handler]||s.props[i.handler]),g=this.props[i.handler];let I=!1;a&&(I=a.call(s,o,t)),!I&&g&&g(o,t)}),y(this,"_onPointerDown",t=>{const i=t.offsetCenter,n=this._pick("pickObject","pickObject Time",{x:i.x,y:i.y,radius:this.props.pickingRadius});this._lastPointerDownInfo=n.result[0]||n.emptyInfo}),this.props={...Gb,...A},A=this.props,this._needsRedraw="Initial render",this._pickRequest={mode:"hover",x:-1,y:-1,radius:0,event:null},this.cursorState={isHovering:!1,isDragging:!1},A.viewState&&A.initialViewState&&Ae.warn("View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.")(),tL()==="IE"&&Ae.warn("IE 11 is not supported")(),this.viewState=A.initialViewState,A.gl||typeof document!="undefined"&&(this.canvas=this._createCanvas(A)),this.animationLoop=this._createAnimationLoop(A),this.stats=new JE({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(A),A._typedArrayManagerProps&&da.setOptions(A._typedArrayManagerProps),this.animationLoop.start()}finalize(){var A,t,i,n,r,o,s;if(this.animationLoop.stop(),this.animationLoop=null,this._lastPointerDownInfo=null,(A=this.layerManager)===null||A===void 0||A.finalize(),this.layerManager=null,(t=this.viewManager)===null||t===void 0||t.finalize(),this.viewManager=null,(i=this.effectManager)===null||i===void 0||i.finalize(),this.effectManager=null,(n=this.deckRenderer)===null||n===void 0||n.finalize(),this.deckRenderer=null,(r=this.deckPicker)===null||r===void 0||r.finalize(),this.deckPicker=null,(o=this.eventManager)===null||o===void 0||o.destroy(),this.eventManager=null,(s=this.tooltip)===null||s===void 0||s.remove(),this.tooltip=null,!this.props.canvas&&!this.props.gl&&this.canvas){var a;(a=this.canvas.parentElement)===null||a===void 0||a.removeChild(this.canvas),this.canvas=null}}setProps(A){this.stats.get("setProps Time").timeStart(),"onLayerHover"in A&&Ae.removed("onLayerHover","onHover")(),"onLayerClick"in A&&Ae.removed("onLayerClick","onClick")(),A.initialViewState&&!os(this.props.initialViewState,A.initialViewState)&&(this.viewState=A.initialViewState),Object.assign(this.props,A),this._setCanvasSize(this.props);const t=Object.create(this.props);Object.assign(t,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState()}),this.animationLoop.setProps(t),this.layerManager&&(this.viewManager.setProps(t),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(t),this.effectManager.setProps(t),this.deckRenderer.setProps(t),this.deckPicker.setProps(t)),this.stats.get("setProps Time").timeEnd()}needsRedraw(A={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return"Deck._animate";let t=this._needsRedraw;A.clearRedrawFlags&&(this._needsRedraw=!1);const i=this.viewManager.needsRedraw(A),n=this.layerManager.needsRedraw(A),r=this.effectManager.needsRedraw(A),o=this.deckRenderer.needsRedraw(A);return t=t||i||n||r||o,t}redraw(A){if(!this.layerManager)return;let t=this.needsRedraw({clearRedrawFlags:!0});t=A||t,t&&(this.stats.get("Redraw Count").incrementCount(),this.props._customRender?this.props._customRender(t):this._drawLayers(t))}get isInitialized(){return this.viewManager!==null}getViews(){return at(this.viewManager),this.viewManager.views}getViewports(A){return at(this.viewManager),this.viewManager.getViewports(A)}pickObject(A){const t=this._pick("pickObject","pickObject Time",A).result;return t.length?t[0]:null}pickMultipleObjects(A){return A.depth=A.depth||10,this._pick("pickObject","pickMultipleObjects Time",A).result}pickObjects(A){return this._pick("pickObjects","pickObjects Time",A)}_addResources(A,t=!1){for(const i in A)this.layerManager.resourceManager.add({resourceId:i,data:A[i],forceUpdate:t})}_removeResources(A){for(const t of A)this.layerManager.resourceManager.remove(t)}_pick(A,t,i){at(this.deckPicker);const{stats:n}=this;n.get("Pick Count").incrementCount(),n.get(t).timeStart();const r=this.deckPicker[A]({layers:this.layerManager.getLayers(i),views:this.viewManager.getViews(),viewports:this.getViewports(i),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...i});return n.get(t).timeEnd(),r}_createCanvas(A){let t=A.canvas;return typeof t=="string"&&(t=document.getElementById(t),at(t)),t||(t=document.createElement("canvas"),t.id=A.id||"deckgl-overlay",(A.parent||document.body).appendChild(t)),Object.assign(t.style,A.style),t}_setCanvasSize(A){if(!this.canvas)return;const{width:t,height:i}=A;if(t||t===0){const r=Number.isFinite(t)?"".concat(t,"px"):t;this.canvas.style.width=r}if(i||i===0){var n;const r=Number.isFinite(i)?"".concat(i,"px"):i;this.canvas.style.position=((n=A.style)===null||n===void 0?void 0:n.position)||"absolute",this.canvas.style.height=r}}_updateCanvasSize(){const{canvas:A}=this;if(!A)return;const t=A.clientWidth||A.width,i=A.clientHeight||A.height;if(t!==this.width||i!==this.height){var n;this.width=t,this.height=i,(n=this.viewManager)===null||n===void 0||n.setProps({width:t,height:i}),this.props.onResize({width:t,height:i})}}_createAnimationLoop(A){const{width:t,height:i,gl:n,glOptions:r,debug:o,onError:s,onBeforeRender:a,onAfterRender:g,useDevicePixels:I}=A;return new Q5({width:t,height:i,useDevicePixels:I,autoResizeViewport:!1,gl:n,onCreateContext:l=>yL({...r,...l,canvas:this.canvas,debug:o,onContextLost:()=>this._onContextLost()}),onInitialize:l=>this._setGLContext(l.gl),onRender:this._onRenderFrame.bind(this),onBeforeRender:a,onAfterRender:g,onError:s})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let A=this.props.views||[new Db({id:"default-view"})];return A=Array.isArray(A)?A:[A],A.length&&this.props.controller&&(A[0].props.controller=this.props.controller),A}_onContextLost(){const{onError:A}=this.props;this.animationLoop&&A&&A(new Error("WebGL context is lost"))}_pickAndCallback(){const{_pickRequest:A}=this;if(A.event){const{result:i,emptyInfo:n}=this._pick("pickObject","pickObject Time",A);this.cursorState.isHovering=i.length>0;let r=n,o=!1;for(const s of i){var t;r=s,o=((t=s.layer)===null||t===void 0?void 0:t.onHover(s,A.event))||o}if(!o&&this.props.onHover&&this.props.onHover(r,A.event),this.props.getTooltip&&this.tooltip){const s=this.props.getTooltip(r);this.tooltip.setTooltip(s,r.x,r.y)}A.event=null}}_updateCursor(){const A=this.props.parent||this.canvas;A&&(A.style.cursor=this.props.getCursor(this.cursorState))}_setGLContext(A){if(this.layerManager)return;this.canvas||(this.canvas=A.canvas,Tp(A,{enable:!0,copyState:!0})),this.tooltip=new fz(this.canvas),Pn(A,{blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthTest:!0,depthFunc:515}),this.props.onWebGLInitialized(A);const t=new Cb;t.play(),this.animationLoop.attachTimeline(t),this.eventManager=new A7(this.props.parent||A.canvas,{touchAction:this.props.touchAction,recognizerOptions:this.props.eventRecognizerOptions,events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(const n in BD)this.eventManager.on(n,this._onEvent);this.viewManager=new _W({timeline:t,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 i=this.viewManager.getViewports()[0];this.layerManager=new GW(A,{deck:this,stats:this.stats,viewport:i,timeline:t}),this.effectManager=new rz,this.deckRenderer=new Iz(A),this.deckPicker=new uz(A),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(A,t){const{gl:i}=this.layerManager.context;Pn(i,this.props.parameters),this.props.onBeforeRender({gl:i}),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:A,effects:this.effectManager.getEffects(),...t}),this.props.onAfterRender({gl:i})}_onRenderFrame(A){this._getFrameStats(),this._metricsCounter++%60===0&&(this._getMetrics(),this.stats.reset(),Ae.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(A){const t=this.props.onViewStateChange(A)||A.viewState;this.viewState&&(this.viewState={...this.viewState,[A.viewId]:t},this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(A){this.cursorState.isDragging=A.isDragging||!1,this.props.onInteractionStateChange(A)}_getFrameStats(){const{stats:A}=this;A.get("frameRate").timeEnd(),A.get("frameRate").timeStart();const t=this.animationLoop.stats;A.get("GPU Time").addTime(t.get("GPU Time").lastTiming),A.get("CPU Time").addTime(t.get("CPU Time").lastTiming)}_getMetrics(){const{metrics:A,stats:t}=this;A.fps=t.get("frameRate").getHz(),A.setPropsTime=t.get("setProps Time").time,A.updateAttributesTime=t.get("Update Attributes").time,A.framesRedrawn=t.get("Redraw Count").count,A.pickTime=t.get("pickObject Time").time+t.get("pickMultipleObjects Time").time+t.get("pickObjects Time").time,A.pickCount=t.get("Pick Count").count,A.gpuTime=t.get("GPU Time").time,A.cpuTime=t.get("CPU Time").time,A.gpuTimePerFrame=t.get("GPU Time").getAverageTime(),A.cpuTimePerFrame=t.get("CPU Time").getAverageTime();const i=po.get("Memory Usage");A.bufferMemory=i.get("Buffer Memory").count,A.textureMemory=i.get("Texture Memory").count,A.renderbufferMemory=i.get("Renderbuffer Memory").count,A.gpuMemory=i.get("GPU Memory").count}}y($E,"defaultProps",Gb);y($E,"VERSION",RO.VERSION);class ef{constructor(A,t){y(this,"opts",void 0),y(this,"source",void 0),this.opts=t,this.source=A}get value(){return this.source.value}getValue(){const A=this.source.getBuffer(),t=this.getAccessor();if(A)return[A,t];const{value:i}=this.source,{size:n}=t;let r=i;if(i&&i.length!==n){r=new Float32Array(n);const o=t.elementOffset||0;for(let s=0;s=r){const o=new Array(n).fill(1/0),s=new Array(n).fill(-1/0);for(let a=0;as[g]&&(s[g]=I)}A=[o,s]}}return this.state.bounds=A,A}setData(A){const{state:t}=this;let i;ArrayBuffer.isView(A)?i={value:A}:A instanceof we?i={buffer:A}:i=A;const n={...this.settings,...i};if(t.bufferAccessor=n,t.bounds=null,i.constant){let r=i.value;if(r=this._normalizeValue(r,[],0),this.settings.normalized&&(r=this.normalizeConstant(r)),!(!t.constant||!this._areValuesEqual(r,this.value)))return!1;t.externalBuffer=null,t.constant=!0,this.value=r}else if(i.buffer){const r=i.buffer;t.externalBuffer=r,t.constant=!1,this.value=i.value||null;const o=i.value instanceof Float64Array;n.type=i.type||r.accessor.type,n.bytesPerElement=r.accessor.BYTES_PER_ELEMENT*(o?2:1),n.stride=kC(n)}else if(i.value){this._checkExternalBuffer(i);let r=i.value;t.externalBuffer=null,t.constant=!1,this.value=r,n.bytesPerElement=r.BYTES_PER_ELEMENT,n.stride=kC(n);const{buffer:o,byteOffset:s}=this;this.doublePrecision&&r instanceof Float64Array&&(r=Zh(r,n));const a=r.byteLength+s+n.stride*2;o.byteLength(t+128)/255*2-1);case 5122:return new Float32Array(A).map(t=>(t+32768)/65535*2-1);case 5121:return new Float32Array(A).map(t=>t/255);case 5123:return new Float32Array(A).map(t=>t/65535);default:return A}}_normalizeValue(A,t,i){const{defaultValue:n,size:r}=this.settings;if(Number.isFinite(A))return t[i]=A,t;if(!A)return t[i]=n[0],t;switch(r){case 4:t[i+3]=Number.isFinite(A[3])?A[3]:n[3];case 3:t[i+2]=Number.isFinite(A[2])?A[2]:n[2];case 2:t[i+1]=Number.isFinite(A[1])?A[1]:n[1];case 1:t[i+0]=Number.isFinite(A[0])?A[0]:n[0];break;default:let o=r;for(;--o>=0;)t[i+o]=Number.isFinite(A[o])?A[o]:n[o]}return t}_areValuesEqual(A,t){if(!A||!t)return!1;const{size:i}=this;for(let n=0;n0&&(HD.length=e.length,i=HD):i=PD,(A>0||Number.isFinite(t))&&(i=(Array.isArray(i)?i:Array.from(i)).slice(A,t),n.index=A-1),{iterable:i,objectInfo:n}}function Mb(e){return e&&e[Symbol.asyncIterator]}function kb(e,A){const{size:t,stride:i,offset:n,startIndices:r,nested:o}=A,s=e.BYTES_PER_ELEMENT,a=i?i/s:t,g=n?n/s:0,I=Math.floor((e.length-g)/a);return(l,{index:c,target:C})=>{if(!r){const h=c*a+g;for(let f=0;f=A[1]))return e;const t=[],i=e.length;let n=0;for(let r=0;rA[1]?t.push(o):A=[Math.min(o[0],A[0]),Math.max(o[1],A[1])]}return t.splice(n,0,A),t}function tf(e){const{source:A,target:t,start:i=0,size:n,getData:r}=e,o=e.end||t.length,s=A.length,a=o-i;if(s>a){t.set(A.subarray(0,a),i);return}if(t.set(A,i),!r)return;let g=s;for(;gi(I+s,l)),g=Math.min(n.length,r.length);for(let I=1;Ie},spring:{stiffness:.05,damping:.5}};function Tb(e,A){if(!e)return null;Number.isFinite(e)&&(e={type:"interpolation",duration:e});const t=e.type||"interpolation";return{...a7[t],...A,...e,type:t}}function Ub(e,A){const t=A.getBuffer();return t?[t,{divisor:0,size:A.size,normalized:A.settings.normalized}]:A.value}function Pb(e){switch(e){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(e,'"'))}}function Hb(e){e.push(e.shift())}function ey(e,A){const{doublePrecision:t,settings:i,value:n,size:r}=e,o=t&&n instanceof Float64Array?2:1;return(i.noAlloc?n.length:A*r)*o}function qb({buffer:e,numInstances:A,attribute:t,fromLength:i,fromStartIndices:n,getData:r=o=>o}){const o=t.doublePrecision&&t.value instanceof Float64Array?2:1,s=t.size*o,a=t.byteOffset,g=t.startIndices,I=n&&g,l=ey(t,A),c=t.isConstant;if(!I&&i>=l)return;const C=c?t.value:t.getBuffer().getData({srcByteOffset:a});if(t.settings.normalized&&!c){const h=r;r=(f,Q)=>t.normalizeConstant(h(f,Q))}const B=c?(h,f)=>r(C,f):(h,f)=>r(C.subarray(h,h+s),f),u=e.getData({length:i}),E=new Float32Array(l);s7({source:u,target:E,sourceStartIndices:n,targetStartIndices:g,size:s,getData:B}),e.byteLengthA[r])]:A[t];return Tb(n,i)}setNeedsUpdate(A=this.id,t){if(this.state.needsUpdate=this.state.needsUpdate||A,this.setNeedsRedraw(A),t){const{startRow:i=0,endRow:n=1/0}=t;this.state.updateRanges=o7(this.state.updateRanges,[i,n])}else this.state.updateRanges=TC}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=r7}setNeedsRedraw(A=this.id){this.state.needsRedraw=this.state.needsRedraw||A}allocate(A){const{state:t,settings:i}=this;return i.noAlloc?!1:i.update?(super.allocate(A,t.updateRanges!==TC),!0):!1}updateBuffer({numInstances:A,data:t,props:i,context:n}){if(!this.needsUpdate())return!1;const{state:{updateRanges:r},settings:{update:o,noAlloc:s}}=this;let a=!0;if(o){for(const[g,I]of r)o.call(n,this,{data:t,startRow:g,endRow:I,props:i,numInstances:A});if(this.value)if(this.constant||this.buffer.byteLengthI?g.set(Q,u):(A._normalizeValue(Q,h.target,0),xW({target:g,source:h.target,start:u,count:d}));u+=d*I}else A._normalizeValue(Q,g,u),u+=I}}_validateAttributeUpdaters(){const{settings:A}=this;if(!(A.noAlloc||typeof A.update=="function"))throw new Error("Attribute ".concat(this.id," missing update or accessor"))}_checkAttributeArray(){const{value:A}=this,t=Math.min(4,this.size);if(A&&A.length>=t){let i=!0;switch(t){case 4:i=i&&Number.isFinite(A[3]);case 3:i=i&&Number.isFinite(A[2]);case 2:i=i&&Number.isFinite(A[1]);case 1:i=i&&Number.isFinite(A[0]);break;default:i=!1}if(!i)throw new Error("Illegal attribute generated for ".concat(this.id))}}}class g7{constructor({gl:A,attribute:t,timeline:i}){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=A,this.transition=new Hl(i),this.attribute=t,this.attributeInTransition=new ty(A,t.settings),this.currentStartIndices=t.startIndices,this.currentLength=0,this.transform=l7(A,t);const n={byteLength:0,usage:35050};this.buffers=[new we(A,n),new we(A,n)]}get inProgress(){return this.transition.inProgress}start(A,t){if(A.duration<=0){this.transition.cancel();return}this.settings=A;const{gl:i,buffers:n,attribute:r}=this;Hb(n);const o={numInstances:t,attribute:r,fromLength:this.currentLength,fromStartIndices:this.currentStartIndices,getData:A.enter};for(const s of n)qb({buffer:s,...o});this.currentStartIndices=r.startIndices,this.currentLength=ey(r,t),this.attributeInTransition.setData({buffer:n[1],value:r.value}),this.transition.start(A),this.transform.update({elementCount:Math.floor(this.currentLength/r.size),sourceBuffers:{aFrom:n[0],aTo:Ub(i,r)},feedbackBuffers:{vCurrent:n[1]}})}update(){const A=this.transition.update();if(A){const{duration:t,easing:i}=this.settings,{time:n}=this.transition;let r=n/t;i&&(r=i(r)),this.transform.run({uniforms:{time:r}})}return A}cancel(){this.transition.cancel(),this.transform.delete();for(const A of this.buffers)A.delete();this.buffers.length=0}}const I7=` -#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 l7(e,A){const t=Pb(A.size);return new jp(e,{vs:I7,defines:{ATTRIBUTE_TYPE:t},varyings:["vCurrent"]})}class c7{constructor({gl:A,attribute:t,timeline:i}){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=A,this.type="spring",this.transition=new Hl(i),this.attribute=t,this.attributeInTransition=new ty(A,{...t.settings,normalized:!1}),this.currentStartIndices=t.startIndices,this.currentLength=0,this.texture=B7(A),this.framebuffer=E7(A,this.texture),this.transform=C7(A,t,this.framebuffer);const n={byteLength:0,usage:35050};this.buffers=[new we(A,n),new we(A,n),new we(A,n)]}get inProgress(){return this.transition.inProgress}start(A,t){const{gl:i,buffers:n,attribute:r}=this,o={numInstances:t,attribute:r,fromLength:this.currentLength,fromStartIndices:this.currentStartIndices,getData:A.enter};for(const s of n)qb({buffer:s,...o});this.settings=A,this.currentStartIndices=r.startIndices,this.currentLength=ey(r,t),this.attributeInTransition.setData({buffer:n[1],value:r.value}),this.transition.start({...A,duration:1/0}),this.transform.update({elementCount:Math.floor(this.currentLength/r.size),sourceBuffers:{aTo:Ub(i,r)}})}update(){const{buffers:A,transform:t,framebuffer:i,transition:n}=this;if(!n.update())return!1;const o=this.settings;return t.update({sourceBuffers:{aPrev:A[0],aCur:A[1]},feedbackBuffers:{vNext:A[2]}}),t.run({framebuffer:i,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]}}),Hb(A),this.attributeInTransition.setData({buffer:A[1],value:this.attribute.value}),VE(i)[0]>0||n.end(),!0}cancel(){this.transition.cancel(),this.transform.delete();for(const A of this.buffers)A.delete();this.buffers.length=0,this.texture.delete(),this.framebuffer.delete()}}function C7(e,A,t){const i=Pb(A.size);return new jp(e,{framebuffer:t,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:i},varyings:["vNext"]})}function B7(e){return new Pt(e,{data:new Uint8Array(4),format:6408,type:5121,border:0,mipmaps:!1,dataFormat:6408,width:1,height:1})}function E7(e,A){return new $e(e,{id:"spring-transition-is-transitioning-framebuffer",width:1,height:1,attachments:{[36064]:A}})}const u7={interpolation:g7,spring:c7};class h7{constructor(A,{id:t,timeline:i}){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=t,this.gl=A,this.timeline=i,this.transitions={},this.needsRedraw=!1,this.numInstances=1,this.isSupported=jp.isSupported(A)}finalize(){for(const A in this.transitions)this._removeTransition(A)}update({attributes:A,transitions:t,numInstances:i}){this.numInstances=i||1;for(const n in A){const r=A[n],o=r.getTransitionSetting(t);!o||this._updateAttribute(n,r,o)}for(const n in this.transitions){const r=A[n];(!r||!r.getTransitionSetting(t))&&this._removeTransition(n)}}hasAttribute(A){const t=this.transitions[A];return t&&t.inProgress}getAttributes(){const A={};for(const t in this.transitions){const i=this.transitions[t];i.inProgress&&(A[t]=i.attributeInTransition)}return A}run(){if(!this.isSupported||this.numInstances===0)return!1;for(const t in this.transitions)this.transitions[t].update()&&(this.needsRedraw=!0);const A=this.needsRedraw;return this.needsRedraw=!1,A}_removeTransition(A){this.transitions[A].cancel(),delete this.transitions[A]}_updateAttribute(A,t,i){const n=this.transitions[A];let r=!n||n.type!==i.type;if(r){if(!this.isSupported){Ae.warn("WebGL2 not supported by this browser. Transition for ".concat(A," is disabled."))();return}n&&this._removeTransition(A);const o=u7[i.type];o?this.transitions[A]=new o({attribute:t,timeline:this.timeline,gl:this.gl}):(Ae.error("unsupported transition type '".concat(i.type,"'"))(),r=!1)}(r||t.needsRedraw())&&(this.needsRedraw=!0,this.transitions[A].start(i,this.numInstances))}}const qD="attributeManager.invalidate",f7="attributeManager.updateStart",Q7="attributeManager.updateEnd",d7="attribute.updateStart",p7="attribute.allocate",y7="attribute.updateEnd";class m7{constructor(A,{id:t="attribute-manager",stats:i,timeline:n}={}){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=t,this.gl=A,this.attributes={},this.updateTriggers={},this.needsRedraw=!0,this.userData={},this.stats=i,this.attributeTransitionManager=new h7(A,{id:"".concat(t,"-transitions"),timeline:n}),Object.seal(this)}finalize(){for(const A in this.attributes)this.attributes[A].delete();this.attributeTransitionManager.finalize()}getNeedsRedraw(A={clearRedrawFlags:!1}){const t=this.needsRedraw;return this.needsRedraw=this.needsRedraw&&!A.clearRedrawFlags,t&&this.id}setNeedsRedraw(){this.needsRedraw=!0}add(A){this._add(A)}addInstanced(A){this._add(A,{instanced:1})}remove(A){for(const t of A)this.attributes[t]!==void 0&&(this.attributes[t].delete(),delete this.attributes[t])}invalidate(A,t){const i=this._invalidateTrigger(A,t);Rt(qD,this,A,i)}invalidateAll(A){for(const t in this.attributes)this.attributes[t].setNeedsUpdate(t,A);Rt(qD,this,"all")}update({data:A,numInstances:t,startIndices:i=null,transitions:n,props:r={},buffers:o={},context:s={}}){let a=!1;Rt(f7,this),this.stats&&this.stats.get("Update Attributes").timeStart();for(const g in this.attributes){const I=this.attributes[g],l=I.settings.accessor;I.startIndices=i,I.numInstances=t,r[g]&&Ae.removed("props.".concat(g),"data.attributes.".concat(g))(),I.setExternalBuffer(o[g])||I.setBinaryValue(typeof l=="string"?o[l]:void 0,A.startIndices)||typeof l=="string"&&!o[l]&&I.setConstantValue(r[l])||I.needsUpdate()&&(a=!0,this._updateAttribute({attribute:I,numInstances:t,data:A,props:r,context:s})),this.needsRedraw=this.needsRedraw||I.needsRedraw()}a&&Rt(Q7,this,t),this.stats&&this.stats.get("Update Attributes").timeEnd(),this.attributeTransitionManager.update({attributes:this.attributes,numInstances:t,transitions:n})}updateTransition(){const{attributeTransitionManager:A}=this,t=A.run();return this.needsRedraw=this.needsRedraw||t,t}getAttributes(){return this.attributes}getChangedAttributes(A={clearChangedFlags:!1}){const{attributes:t,attributeTransitionManager:i}=this,n={...i.getAttributes()};for(const r in t){const o=t[r];o.needsRedraw(A)&&!i.hasAttribute(r)&&(n[r]=o)}return n}getShaderAttributes(A,t={}){A||(A=this.getAttributes());const i={};for(const n in A)t[n]||Object.assign(i,A[n].getShaderAttributes());return i}_add(A,t={}){for(const i in A){const n=A[i];this.attributes[i]=this._createAttribute(i,n,t)}this._mapUpdateTriggersToAttributes()}_createAttribute(A,t,i){const n={...t,id:A,size:t.isIndexed&&1||t.size||1,divisor:i.instanced?1:t.divisor||0};return new ty(this.gl,n)}_mapUpdateTriggersToAttributes(){const A={};for(const t in this.attributes)this.attributes[t].getUpdateTriggers().forEach(n=>{A[n]||(A[n]=[]),A[n].push(t)});this.updateTriggers=A}_invalidateTrigger(A,t){const{attributes:i,updateTriggers:n}=this,r=n[A];return r&&r.forEach(o=>{const s=i[o];s&&s.setNeedsUpdate(s.id,t)}),r}_updateAttribute(A){const{attribute:t,numInstances:i}=A;if(Rt(d7,t),t.constant){t.setConstantValue(t.value);return}t.allocate(i)&&Rt(p7,t,i),t.updateBuffer(A)&&(this.needsRedraw=!0,Rt(y7,t,i))}}class w7 extends Hl{get value(){return this._value}_onUpdate(){const{time:A,settings:{fromValue:t,toValue:i,duration:n,easing:r}}=this,o=r(A/n);this._value=Ro(t,i,o)}}const JD=1e-5;function OD(e,A,t,i,n){const r=A-e,s=(t-A)*n,a=-r*i;return s+a+r+A}function v7(e,A,t,i,n){if(Array.isArray(t)){const r=[];for(let o=0;o0}add(A,t,i,n){const{transitions:r}=this;if(r.has(A)){const a=r.get(A),{value:g=a.settings.fromValue}=a;t=g,this.remove(A)}if(n=Tb(n),!n)return;const o=D7[n.type];if(!o){Ae.error("unsupported transition type '".concat(n.type,"'"))();return}const s=new o(this.timeline);s.start({...n,fromValue:t,toValue:i}),r.set(A,s)}remove(A){const{transitions:t}=this;t.has(A)&&(t.get(A).cancel(),t.delete(A))}update(){const A={};for(const[t,i]of this.transitions)i.update(),A[t]=i.value,i.inProgress||this.remove(t);return A}clear(){for(const A of this.transitions.keys())this.remove(A)}}function x7(e){const A=iy(e);for(const t in A){const i=A[t],{validate:n}=i;if(n&&!n(e[t],i))throw new Error("Invalid prop ".concat(t,": ").concat(e[t]))}}function F7(e,A){const t=Jb({newProps:e,oldProps:A,propTypes:iy(e),ignoreProps:{data:null,updateTriggers:null,extensions:null,transitions:null}}),i=L7(e,A);let n=!1;return i||(n=b7(e,A)),{dataChanged:i,propsChanged:t,updateTriggersChanged:n,extensionsChanged:G7(e,A),transitionsChanged:N7(e,A)}}function N7(e,A){if(!e.transitions)return!1;const t={},i=iy(e);let n=!1;for(const r in e.transitions){const o=i[r],s=o&&o.type;(s==="number"||s==="color"||s==="array")&&yd(e[r],A[r],o)&&(t[r]=!0,n=!0)}return n?t:!1}function Jb({newProps:e,oldProps:A,ignoreProps:t={},propTypes:i={},triggerName:n="props"}){if(A===e)return!1;if(typeof e!="object"||e===null||typeof A!="object"||A===null)return"".concat(n," changed shallowly");for(const r of Object.keys(e))if(!(r in t)){if(!(r in A))return"".concat(n,".").concat(r," added");const o=yd(e[r],A[r],i[r]);if(o)return"".concat(n,".").concat(r," ").concat(o)}for(const r of Object.keys(A))if(!(r in t)){if(!(r in e))return"".concat(n,".").concat(r," dropped");if(!Object.hasOwnProperty.call(e,r)){const o=yd(e[r],A[r],i[r]);if(o)return"".concat(n,".").concat(r," ").concat(o)}}return!1}function yd(e,A,t){let i=t&&t.equal;return i&&!i(e,A,t)||!i&&(i=e&&A&&e.equals,i&&!i.call(e,A))?"changed deeply":!i&&A!==e?"changed shallowly":null}function L7(e,A){if(A===null)return"oldProps is null, initial diff";let t=!1;const{dataComparator:i,_dataDiff:n}=e;return i?i(e.data,A.data)||(t="Data comparator detected a change"):e.data!==A.data&&(t="A new data container was supplied"),t&&n&&(t=n(e.data,A.data)||t),t}function b7(e,A){if(A===null)return{all:!0};if("all"in e.updateTriggers&&KD(e,A,"all"))return{all:!0};const t={};let i=!1;for(const n in e.updateTriggers)n!=="all"&&KD(e,A,n)&&(t[n]=!0,i=!0);return i?t:!1}function G7(e,A){if(A===null)return!0;const t=A.extensions,{extensions:i}=e;if(i===t)return!1;if(!t||!i||i.length!==t.length)return!0;for(let n=0;ni.name==="project64"))){const i=t.modules.findIndex(n=>n.name==="project32");i>=0&&t.modules.splice(i,1)}if("inject"in A)if(!e.inject)t.inject=A.inject;else{const i={...e.inject};for(const n in A.inject)i[n]=(i[n]||"")+A.inject[n];t.inject=i}return t}const H7={[10241]:9987,[10240]:9729,[10242]:33071,[10243]:33071},md={};function q7(e,A){const t=e.context&&e.context.gl;if(!t||!A)return null;if(A instanceof Pt)return A;A.constructor&&A.constructor.name!=="Object"&&(A={data:A});let i=null;A.compressed&&(i={[10241]:A.data.length>1?9985:9729});const n=new Pt(t,{...A,parameters:{...H7,...i,...e.props.textureParameters}});return md[n.id]=!0,n}function J7(e){!e||!(e instanceof Pt)||md[e.id]&&(e.delete(),delete md[e.id])}const O7={boolean:{validate(e,A){return!0},equal(e,A,t){return Boolean(e)===Boolean(A)}},number:{validate(e,A){return Number.isFinite(e)&&(!("max"in A)||e<=A.max)&&(!("min"in A)||e>=A.min)}},color:{validate(e,A){return A.optional&&!e||XI(e)&&(e.length===3||e.length===4)},equal(e,A,t){return nf(e,A)}},accessor:{validate(e,A){const t=HB(e);return t==="function"||t===HB(A.value)},equal(e,A,t){return typeof A=="function"?!0:nf(e,A)}},array:{validate(e,A){return A.optional&&!e||XI(e)},equal(e,A,t){return t.compare?nf(e,A):e===A}},object:{equal(e,A,t){return t.compare?os(e,A):e===A}},function:{validate(e,A){return A.optional&&!e||typeof e=="function"},equal(e,A,t){return!t.compare||e===A}},data:{transform:(e,A,t)=>{const{dataTransform:i}=t.props;return i&&e?i(e):e}},image:{transform:(e,A,t)=>q7(t,e),release:e=>{J7(e)}}};function nf(e,A){if(e===A)return!0;if(!XI(e)||!XI(A))return!1;const t=e.length;if(t!==A.length)return!1;for(let i=0;i{},this.oldProps=null,this.oldAsyncProps=null}finalize(){for(const A in this.asyncProps){const t=this.asyncProps[A];t&&t.type&&t.type.release&&t.type.release(t.resolvedValue,t.type,this.component)}}getOldProps(){return this.oldAsyncProps||this.oldProps||ej}resetOldProps(){this.oldAsyncProps=null,this.oldProps=this.component.props}hasAsyncProp(A){return A in this.asyncProps}getAsyncProp(A){const t=this.asyncProps[A];return t&&t.resolvedValue}isAsyncPropLoading(A){if(A){const t=this.asyncProps[A];return Boolean(t&&t.pendingLoadCount>0&&t.pendingLoadCount!==t.resolvedLoadCount)}for(const t in this.asyncProps)if(this.isAsyncPropLoading(t))return!0;return!1}reloadAsyncProp(A,t){this._watchPromise(A,Promise.resolve(t))}setAsyncProps(A){const t=A[fr]||{},i=A[To]||A,n=A[ra]||{};for(const r in t){const o=t[r];this._createAsyncPropData(r,n[r]),this._updateAsyncProp(r,o),t[r]=this.getAsyncProp(r)}for(const r in i){const o=i[r];this._createAsyncPropData(r,n[r]),this._updateAsyncProp(r,o)}}_fetch(A,t){return null}_onResolve(A,t){}_onError(A,t){}_updateAsyncProp(A,t){if(!!this._didAsyncInputValueChange(A,t)){if(typeof t=="string"&&(t=this._fetch(A,t)),t instanceof Promise){this._watchPromise(A,t);return}if(Mb(t)){this._resolveAsyncIterable(A,t);return}this._setPropValue(A,t)}}_freezeAsyncOldProps(){if(!this.oldAsyncProps&&this.oldProps){this.oldAsyncProps=Object.create(this.oldProps);for(const A in this.asyncProps)Object.defineProperty(this.oldAsyncProps,A,{enumerable:!0,value:this.oldProps[A]})}}_didAsyncInputValueChange(A,t){const i=this.asyncProps[A];return t===i.resolvedValue||t===i.lastValue?!1:(i.lastValue=t,!0)}_setPropValue(A,t){this._freezeAsyncOldProps();const i=this.asyncProps[A];i&&(t=this._postProcessValue(i,t),i.resolvedValue=t,i.pendingLoadCount++,i.resolvedLoadCount=i.pendingLoadCount)}_setAsyncPropValue(A,t,i){const n=this.asyncProps[A];n&&i>=n.resolvedLoadCount&&t!==void 0&&(this._freezeAsyncOldProps(),n.resolvedValue=t,n.resolvedLoadCount=i,this.onAsyncPropUpdated(A,t))}_watchPromise(A,t){const i=this.asyncProps[A];if(i){i.pendingLoadCount++;const n=i.pendingLoadCount;t.then(r=>{r=this._postProcessValue(i,r),this._setAsyncPropValue(A,r,n),this._onResolve(A,r)}).catch(r=>{this._onError(A,r)})}}async _resolveAsyncIterable(A,t){if(A!=="data"){this._setPropValue(A,t);return}const i=this.asyncProps[A];if(!i)return;i.pendingLoadCount++;const n=i.pendingLoadCount;let r=[],o=0;for await(const s of t){const{dataTransform:a}=this.component.props;a?r=a(s,r):r=r.concat(s),Object.defineProperty(r,"__diff",{enumerable:!1,value:[{startRow:o,endRow:r.length}]}),o=r.length,this._setAsyncPropValue(A,r,n)}this._onResolve(A,r)}_postProcessValue(A,t){const i=A.type;return i&&(i.release&&i.release(A.resolvedValue,i,this.component),i.transform)?i.transform(t,i,this.component):t}_createAsyncPropData(A,t){if(!this.asyncProps[A]){const n=this.component&&this.component.constructor._propTypes;this.asyncProps[A]={type:n&&n[A],lastValue:null,resolvedValue:t,pendingLoadCount:0,resolvedLoadCount:0}}}}class ij extends tj{constructor({attributeManager:A,layer:t}){super(t),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=A,this.needsRedraw=!0,this.needsUpdate=!0,this.subLayers=null,this.usesPickingColorCache=!1}get layer(){return this.component}set layer(A){this.component=A}_fetch(A,t){const i=this.component.props.fetch;return i?i(t,{propName:A,layer:this.layer}):super._fetch(A,t)}_onResolve(A,t){const i=this.component.props.onDataLoad;A==="data"&&i&&i(t,{propName:A,layer:this.layer})}_onError(A,t){this.layer.raiseError(t,"loading ".concat(A," of ").concat(this.layer))}}const nj="layer.changeFlag",rj="layer.initialize",oj="layer.update",sj="layer.finalize",aj="layer.matched",VD=2**24-1,gj=Object.freeze([]),Ij=Ul(({oldViewport:e,viewport:A})=>e.equals(A));let Ki=new Uint8ClampedArray(0);const lj={data:{type:"data",value:gj,async:!0},dataComparator:{type:"function",value:null,compare:!1,optional:!0},_dataDiff:{type:"function",value:e=>e&&e.__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:(e,{propName:A,layer:t,loaders:i,loadOptions:n,signal:r})=>{const{resourceManager:o}=t.context;if(n=n||t.getLoadOptions(),i=i||t.props.loaders,r){var s;n={...n,fetch:{...(s=n)===null||s===void 0?void 0:s.fetch,signal:r}}}let a=o.contains(e);return!a&&!n&&(o.add({resourceId:e,data:LB(e,i),persistent:!1}),a=!0),a?o.subscribe({resourceId:e,onChange:g=>{var I;return(I=t.internalState)===null||I===void 0?void 0:I.reloadAsyncProp(A,g)},consumerId:t.id,requestId:A}):LB(e,i,n)},compare:!1},updateTriggers:{},visible:!0,pickable:!1,opacity:{type:"number",min:0,max:1,value:1},operation:Tl.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:HA.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:e})=>[0,-e*100],compare:!1},highlightedObjectIndex:null,autoHighlight:!1,highlightColor:{type:"accessor",value:[0,0,128,128]}};class gi extends ny{constructor(...A){super(...A),y(this,"internalState",null),y(this,"lifecycle",Fs.NO_STATE),y(this,"context",void 0),y(this,"state",void 0),y(this,"parent",null)}get root(){let A=this;for(;A.parent;)A=A.parent;return A}toString(){const A=this.constructor.layerName||this.constructor.name;return"".concat(A,"({id: '").concat(this.props.id,"'})")}project(A){at(this.internalState);const t=this.internalState.viewport||this.context.viewport,i=wb(A,{viewport:t,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem}),[n,r,o]=db(i,t.pixelProjectionMatrix);return A.length===2?[n,r]:[n,r,o]}unproject(A){return at(this.internalState),(this.internalState.viewport||this.context.viewport).unproject(A)}projectPosition(A,t){at(this.internalState);const i=this.internalState.viewport||this.context.viewport;return RW(A,{viewport:i,modelMatrix:this.props.modelMatrix,coordinateOrigin:this.props.coordinateOrigin,coordinateSystem:this.props.coordinateSystem,...t})}get isComposite(){return!1}setState(A){this.setChangeFlags({stateChanged:!0}),Object.assign(this.state,A),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(A){for(const t of this.getModels())t.updateModuleSettings(A)}getAttributeManager(){return this.internalState&&this.internalState.attributeManager}getCurrentLayer(){return this.internalState&&this.internalState.layer}getLoadOptions(){return this.props.loadOptions}use64bitPositions(){const{coordinateSystem:A}=this.props;return A===HA.DEFAULT||A===HA.LNGLAT||A===HA.CARTESIAN}onHover(A,t){return this.props.onHover&&this.props.onHover(A,t)||!1}onClick(A,t){return this.props.onClick&&this.props.onClick(A,t)||!1}nullPickingColor(){return[0,0,0]}encodePickingColor(A,t=[]){return t[0]=A+1&255,t[1]=A+1>>8&255,t[2]=A+1>>8>>8&255,t}decodePickingColor(A){at(A instanceof Uint8Array);const[t,i,n]=A;return t+i*256+n*65536-1}getNumInstances(){return Number.isFinite(this.props.numInstances)?this.props.numInstances:this.state&&this.state.numInstances!==void 0?this.state.numInstances:k7(this.props.data)}getStartIndices(){return this.props.startIndices?this.props.startIndices:this.state&&this.state.startIndices?this.state.startIndices:null}getBounds(){var A;const t=this.getAttributeManager();if(!t)return null;const{positions:i,instancePositions:n}=t.attributes;return(A=i||n)===null||A===void 0?void 0:A.getBounds()}getShaders(A){for(const t of this.props.extensions)A=P7(A,t.getShaders.call(this,t));return A}shouldUpdateState(A){return A.changeFlags.propsOrDataChanged}updateState(A){const t=this.getAttributeManager(),{dataChanged:i}=A.changeFlags;if(i&&t)if(Array.isArray(i))for(const a of i)t.invalidateAll(a);else t.invalidateAll();const{props:n,oldProps:r}=A,o=Number.isInteger(r.highlightedObjectIndex)||r.pickable,s=Number.isInteger(n.highlightedObjectIndex)||n.pickable;if(o!==s&&t){const{pickingColors:a,instancePickingColors:g}=t.attributes,I=a||g;I&&(s&&I.constant&&(I.constant=!1,t.invalidate(I.id)),!I.value&&!s&&(I.constant=!0,I.value=[0,0,0]))}}finalizeState(A){for(const i of this.getModels())i.delete();const t=this.getAttributeManager();t&&t.finalize(),this.context&&this.context.resourceManager.unsubscribe({consumerId:this.id}),this.internalState&&(this.internalState.uniformTransitions.clear(),this.internalState.finalize())}draw(A){for(const t of this.getModels())t.draw(A)}getPickingInfo({info:A,mode:t,sourceLayer:i}){const{index:n}=A;return n>=0&&Array.isArray(this.props.data)&&(A.object=this.props.data[n]),A}raiseError(A,t){var i,n;if(t&&(A.message="".concat(t,": ").concat(A.message)),!((i=(n=this.props).onError)!==null&&i!==void 0&&i.call(n,A))){var r,o;(r=this.context)===null||r===void 0||(o=r.onError)===null||o===void 0||o.call(r,A,this)}}getNeedsRedraw(A={clearRedrawFlags:!1}){return this._getNeedsRedraw(A)}needsUpdate(){return this.internalState?this.internalState.needsUpdate||this.hasUniformTransition()||this.shouldUpdateState(this._getUpdateParams()):!1}hasUniformTransition(){var A;return((A=this.internalState)===null||A===void 0?void 0:A.uniformTransitions.active)||!1}activateViewport(A){if(!this.internalState)return;const t=this.internalState.viewport;this.internalState.viewport=A,(!t||!Ij({oldViewport:t,viewport:A}))&&(this.setChangeFlags({viewportChanged:!0}),this.isComposite?this.needsUpdate()&&this.setNeedsUpdate():this._update())}invalidateAttribute(A="all"){const t=this.getAttributeManager();!t||(A==="all"?t.invalidateAll():t.invalidate(A))}updateAttributes(A){for(const t of this.getModels())this._setModelAttributes(t,A)}_updateAttributes(){const A=this.getAttributeManager();if(!A)return;const t=this.props,i=this.getNumInstances(),n=this.getStartIndices();A.update({data:t.data,numInstances:i,startIndices:n,props:t,transitions:t.transitions,buffers:t.data.attributes,context:this});const r=A.getChangedAttributes({clearChangedFlags:!0});this.updateAttributes(r)}_updateAttributeTransition(){const A=this.getAttributeManager();A&&A.updateTransition()}_updateUniformTransition(){const{uniformTransitions:A}=this.internalState;if(A.active){const t=A.update(),i=Object.create(this.props);for(const n in t)Object.defineProperty(i,n,{value:t[n]});return i}return this.props}calculateInstancePickingColors(A,{numInstances:t}){if(A.constant)return;const i=Math.floor(Ki.length/3);if(this.internalState.usesPickingColorCache=!0,iVD&&Ae.warn("Layer has too many data objects. Picking might not be able to distinguish all objects.")(),Ki=da.allocate(Ki,t,{size:3,copy:!0,maxCount:Math.max(t,VD)});const n=Math.floor(Ki.length/3),r=[];for(let o=i;o(Ae.deprecated("layer.state.attributeManager","layer.getAttributeManager()")(),A)}),this.internalState.layer=this,this.internalState.uniformTransitions=new R7(this.context.timeline),this.internalState.onAsyncPropUpdated=this._onAsyncPropUpdated.bind(this),this.internalState.setAsyncProps(this.props),this.initializeState(this.context);for(const t of this.props.extensions)t.initializeState.call(this,this.context,t);this.setChangeFlags({dataChanged:"init",propsChanged:"init",viewportChanged:!0,extensionsChanged:!0}),this._update()}_transferState(A){Rt(aj,this,this===A);const{state:t,internalState:i}=A;this!==A&&(this.internalState=i,this.internalState.layer=this,this.state=t,this.internalState.setAsyncProps(this.props),this._diffProps(this.props,this.internalState.getOldProps()))}_update(){const A=this.needsUpdate();if(Rt(oj,this,A),!A)return;const t=this.props,i=this.context,n=this.internalState,r=i.viewport,o=this._updateUniformTransition();n.propsInTransition=o,i.viewport=n.viewport||r,this.props=o;try{const s=this._getUpdateParams(),a=this.getModels();if(i.gl)this.updateState(s);else try{this.updateState(s)}catch{}for(const I of this.props.extensions)I.updateState.call(this,s,I);const g=this.getModels()[0]!==a[0];this._postUpdate(s,g)}finally{i.viewport=r,this.props=t,this._clearChangeFlags(),n.needsUpdate=!1,n.resetOldProps()}}_finalize(){Rt(sj,this),this.finalizeState(this.context);for(const A of this.props.extensions)A.finalizeState.call(this,A)}_drawLayer({moduleParameters:A=null,uniforms:t={},parameters:i={}}){this._updateAttributeTransition();const n=this.props,r=this.context;this.props=this.internalState.propsInTransition||n;const o=this.props.opacity;t.opacity=Math.pow(o,1/2.2);try{A&&this.setModuleParameters(A);const{getPolygonOffset:s}=this.props,a=s&&s(t)||[0,0];Pn(r.gl,{polygonOffset:a}),ui(r.gl,i,()=>{const g={moduleParameters:A,uniforms:t,parameters:i,context:r};for(const I of this.props.extensions)I.draw.call(this,g,I);this.draw(g)})}finally{this.props=n}}getChangeFlags(){var A;return(A=this.internalState)===null||A===void 0?void 0:A.changeFlags}setChangeFlags(A){if(!this.internalState)return;const{changeFlags:t}=this.internalState;for(const n in A)if(A[n]){let r=!1;switch(n){case"dataChanged":const o=A[n],s=t[n];o&&Array.isArray(s)&&(t.dataChanged=Array.isArray(o)?s.concat(o):o,r=!0);default:t[n]||(t[n]=A[n],r=!0)}r&&Rt(nj,this,n,A)}const i=Boolean(t.dataChanged||t.updateTriggersChanged||t.propsChanged||t.extensionsChanged);t.propsOrDataChanged=i,t.somethingChanged=i||t.viewportChanged||t.stateChanged}_clearChangeFlags(){this.internalState.changeFlags={dataChanged:!1,propsChanged:!1,updateTriggersChanged:!1,viewportChanged:!1,stateChanged:!1,extensionsChanged:!1,propsOrDataChanged:!1,somethingChanged:!1}}_diffProps(A,t){const i=F7(A,t);if(i.updateTriggersChanged)for(const r in i.updateTriggersChanged)i.updateTriggersChanged[r]&&this.invalidateAttribute(r);if(i.transitionsChanged)for(const r in i.transitionsChanged){var n;this.internalState.uniformTransitions.add(r,t[r],A[r],(n=A.transitions)===null||n===void 0?void 0:n[r])}return this.setChangeFlags(i)}validateProps(){x7(this.props)}updateAutoHighlight(A){this.props.autoHighlight&&!Number.isInteger(this.props.highlightedObjectIndex)&&this._updateAutoHighlight(A)}_updateAutoHighlight(A){const t={pickingSelectedColor:A.picked?A.color:null},{highlightColor:i}=this.props;A.picked&&typeof i=="function"&&(t.pickingHighlightColor=i(A)),this.setModuleParameters(t),this.setNeedsRedraw()}_getAttributeManager(){const A=this.context;return new m7(A.gl,{id:this.props.id,stats:A.stats,timeline:A.timeline})}_postUpdate(A,t){const{props:i,oldProps:n}=A;this.setNeedsRedraw(),this._updateAttributes();const{model:r}=this.state;r==null||r.setInstanceCount(this.getNumInstances());const{autoHighlight:o,highlightedObjectIndex:s,highlightColor:a}=i;if(t||n.autoHighlight!==o||n.highlightedObjectIndex!==s||n.highlightColor!==a){const g={};o||(g.pickingSelectedColor=null),Array.isArray(a)&&(g.pickingHighlightColor=a),Number.isInteger(s)&&(g.pickingSelectedColor=Number.isFinite(s)&&s>=0?this.encodePickingColor(s):null),this.setModuleParameters(g)}}_getUpdateParams(){return{props:this.props,oldProps:this.internalState.getOldProps(),context:this.context,changeFlags:this.internalState.changeFlags}}_getNeedsRedraw(A){if(!this.internalState)return!1;let t=!1;t=t||this.internalState.needsRedraw&&this.id,this.internalState.needsRedraw=this.internalState.needsRedraw&&!A.clearRedrawFlags;const i=this.getAttributeManager(),n=i?i.getNeedsRedraw(A):!1;return t=t||n,t}_onAsyncPropUpdated(){this._diffProps(this.props,this.internalState.getOldProps()),this.setNeedsUpdate()}}y(gi,"defaultProps",lj);y(gi,"layerName","Layer");const cj="compositeLayer.renderLayers";class Ui extends gi{get isComposite(){return!0}get isLoaded(){return super.isLoaded&&this.getSubLayers().every(A=>A.isLoaded)}getSubLayers(){return this.internalState&&this.internalState.subLayers||[]}initializeState(A){}setState(A){super.setState(A),this.setNeedsUpdate()}getPickingInfo({info:A}){const{object:t}=A;return t&&t.__source&&t.__source.parent&&t.__source.parent.id===this.id&&(A.object=t.__source.object,A.index=t.__source.index),A}filterSubLayer(A){return!0}shouldRenderSubLayer(A,t){return t&&t.length}getSubLayerClass(A,t){const{_subLayerProps:i}=this.props;return i&&i[A]&&i[A].type||t}getSubLayerRow(A,t,i){return A.__source={parent:this,object:t,index:i},A}getSubLayerAccessor(A){if(typeof A=="function"){const t={index:-1,data:this.props.data,target:[]};return(i,n)=>i&&i.__source?(t.index=i.__source.index,A(i.__source.object,t)):A(i,n)}return A}getSubLayerProps(A={}){var t;const{opacity:i,pickable:n,visible:r,parameters:o,getPolygonOffset:s,highlightedObjectIndex:a,autoHighlight:g,highlightColor:I,coordinateSystem:l,coordinateOrigin:c,wrapLongitude:C,positionFormat:B,modelMatrix:u,extensions:E,fetch:h,operation:f,_subLayerProps:Q}=this.props,d={id:"",updateTriggers:{},opacity:i,pickable:n,visible:r,parameters:o,getPolygonOffset:s,highlightedObjectIndex:a,autoHighlight:g,highlightColor:I,coordinateSystem:l,coordinateOrigin:c,wrapLongitude:C,positionFormat:B,modelMatrix:u,extensions:E,fetch:h,operation:f},w=Q&&A.id&&Q[A.id],m=w&&w.updateTriggers,v=A.id||"sublayer";if(w){const x=this.constructor._propTypes,D=A.type?A.type._propTypes:{};for(const F in w){const N=D[F]||x[F];N&&N.type==="accessor"&&(w[F]=this.getSubLayerAccessor(w[F]))}}Object.assign(d,A,w),d.id="".concat(this.props.id,"-").concat(v),d.updateTriggers={all:(t=this.props.updateTriggers)===null||t===void 0?void 0:t.all,...A.updateTriggers,...m};for(const x of E){const D=x.getSubLayerProps.call(this,x);D&&Object.assign(d,D,{updateTriggers:Object.assign(d.updateTriggers,D.updateTriggers)})}return d}_updateAutoHighlight(A){for(const t of this.getSubLayers())t.updateAutoHighlight(A)}_getAttributeManager(){return null}_postUpdate(A,t){let i=this.internalState.subLayers;const n=!i||this.needsUpdate();if(n){const r=this.renderLayers();i=zE(r,Boolean),this.internalState.subLayers=i}Rt(cj,this,n,i);for(const r of i)r.parent=this}}y(Ui,"layerName","CompositeLayer");const Tc=Math.PI/180,WD=180/Math.PI,UC=6370972,qs=256;function Cj(){const e=qs/UC,A=Math.PI/180*qs;return{unitsPerMeter:[e,e,e],unitsPerMeter2:[0,0,0],metersPerUnit:[1/e,1/e,1/e],unitsPerDegree:[A,A,e],unitsPerDegree2:[0,0,0],degreesPerUnit:[1/A,1/A,1/e]}}class Bj extends Vn{constructor(A={}){const{latitude:t=0,longitude:i=0,zoom:n=0,nearZMultiplier:r=.1,farZMultiplier:o=2,resolution:s=10}=A;let{height:a,altitude:g=1.5}=A;a=a||1,g=Math.max(.75,g);const I=new fe().lookAt({eye:[0,-g,0],up:[0,0,1]}),l=Math.pow(2,n);I.rotateX(t*Tc),I.rotateZ(-i*Tc),I.scale(l/a);const c=Math.atan(.5/g),C=qs*2*l/a;super({...A,height:a,viewMatrix:I,longitude:i,latitude:t,zoom:n,distanceScales:Cj(),fovyRadians:c*2,focalDistance:g,near:r,far:Math.min(2,1/C+1)*g*o}),y(this,"longitude",void 0),y(this,"latitude",void 0),y(this,"resolution",void 0),this.latitude=t,this.longitude=i,this.resolution=s}get projectionMode(){return Ni.GLOBE}getDistanceScales(){return this.distanceScales}getBounds(A={}){const t={targetZ:A.z||0},i=this.unproject([0,this.height/2],t),n=this.unproject([this.width/2,0],t),r=this.unproject([this.width,this.height/2],t),o=this.unproject([this.width/2,this.height],t);return r[0]this.longitude&&(i[0]-=360),[Math.min(i[0],r[0],n[0],o[0]),Math.min(i[1],r[1],n[1],o[1]),Math.max(i[0],r[0],n[0],o[0]),Math.max(i[1],r[1],n[1],o[1])]}unproject(A,{topLeft:t=!0,targetZ:i}={}){const[n,r,o]=A,s=t?r:this.height-r,{pixelUnprojectionMatrix:a}=this;let g;if(Number.isFinite(o))g=rf(a,[n,s,o,1]);else{const C=rf(a,[n,s,-1,1]),B=rf(a,[n,s,1,1]),u=((i||0)/UC+1)*qs,E=Kh(ib([],C,B)),h=Kh(C),f=Kh(B),Q=(4*h*f-(E-h-f)**2)/16,d=4*Q/E,w=Math.sqrt(h-d),m=Math.sqrt(Math.max(0,u*u-d)),v=(w-m)/Math.sqrt(E);g=R6([],C,B,v)}const[I,l,c]=this.unprojectPosition(g);return Number.isFinite(o)?[I,l,c]:Number.isFinite(i)?[I,l,i]:[I,l]}projectPosition(A){const[t,i,n=0]=A,r=t*Tc,o=i*Tc,s=Math.cos(o),a=(n/UC+1)*qs;return[Math.sin(r)*s*a,-Math.cos(r)*s*a,Math.sin(o)*a]}unprojectPosition(A){const[t,i,n]=A,r=nb(A),o=Math.asin(n/r),a=Math.atan2(t,-i)*WD,g=o*WD,I=(r/qs-1)*UC;return[a,g,I]}projectFlat(A){return A}unprojectFlat(A){return A}panByPosition(A,t){const i=this.unproject(t);return{longitude:A[0]-i[0]+this.longitude,latitude:A[1]-i[1]+this.latitude}}}function rf(e,A){const t=Ta([],A,e);return zp(t,t,1/t[3]),t}const of=Math.PI/180;function Ej({height:e,focalDistance:A,orbitAxis:t,rotationX:i,rotationOrbit:n,zoom:r}){const o=t==="Z"?[0,0,1]:[0,1,0],s=t==="Z"?[0,-A,0]:[0,0,A],a=new fe().lookAt({eye:s,up:o});a.rotateX(i*of),t==="Z"?a.rotateZ(n*of):a.rotateY(n*of);const g=Math.pow(2,r)/e;return a.scale(g),a}class uj extends Vn{constructor(A){const{height:t,projectionMatrix:i,fovy:n=50,orbitAxis:r="Z",target:o=[0,0,0],rotationX:s=0,rotationOrbit:a=0,zoom:g=0}=A,I=i?i[5]/2:$p(n);super({...A,longitude:void 0,viewMatrix:Ej({height:t||1,focalDistance:I,orbitAxis:r,rotationX:s,rotationOrbit:a,zoom:g}),fovy:n,focalDistance:I,position:o,zoom:g}),y(this,"projectedCenter",void 0),this.projectedCenter=this.project(this.center)}unproject(A,{topLeft:t=!0}={}){const[i,n,r=this.projectedCenter[2]]=A,o=t?n:this.height-n,[s,a,g]=Pl([i,o,r],this.pixelUnprojectionMatrix);return[s,a,g]}panByPosition(A,t){const i=this.project(A),n=[this.width/2+i[0]-t[0],this.height/2+i[1]-t[1],this.projectedCenter[2]];return{target:this.unproject(n)}}}class Kb extends Yr{constructor(A={}){super(A),this.props.orbitAxis=A.orbitAxis||"Z"}get ViewportType(){return uj}get ControllerType(){return XW}}y(Kb,"displayName","OrbitView");class Pa{constructor(A){y(this,"opts",void 0),A&&(this.opts=A)}equals(A){return this===A?!0:this.constructor===A.constructor&&os(this.opts,A.opts)}getShaders(A){return null}getSubLayerProps(A){const{defaultProps:t}=A.constructor,i={updateTriggers:{}};for(const n in t)if(n in this.props){const r=t[n],o=this.props[n];i[n]=o,r&&r.type==="accessor"&&(i.updateTriggers[n]=this.props.updateTriggers[n],typeof o=="function"&&(i[n]=this.getSubLayerAccessor(o)))}return i}initializeState(A,t){}updateState(A,t){}draw(A,t){}finalizeState(A,t){}}y(Pa,"defaultProps",{});class Vb{constructor(A){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:t={}}=A;this.typedArrayManager=da,this.attributes={},this._attributeDefs=t,this.opts=A,this.updateGeometry(A)}updateGeometry(A){Object.assign(this.opts,A);const{data:t,buffers:i={},getGeometry:n,geometryBuffer:r,positionFormat:o,dataChanged:s,normalize:a=!0}=this.opts;if(this.data=t,this.getGeometry=n,this.positionSize=r&&r.size||(o==="XY"?2:3),this.buffers=i,this.normalize=a,r&&(at(t.startIndices),this.getGeometry=this.getGeometryFromBuffer(r),a||(i.positions=r)),this.geometryBuffer=i.positions,Array.isArray(s))for(const g of s)this._rebuildGeometry(g);else this._rebuildGeometry()}updatePartialGeometry({startRow:A,endRow:t}){this._rebuildGeometry({startRow:A,endRow:t})}getGeometryFromBuffer(A){const t=A.value||A;return ArrayBuffer.isView(t)?kb(t,{size:this.positionSize,offset:A.offset,stride:A.stride,startIndices:this.data.startIndices}):null}_allocate(A,t){const{attributes:i,buffers:n,_attributeDefs:r,typedArrayManager:o}=this;for(const s in r)if(s in n)o.release(i[s]),i[s]=null;else{const a=r[s];a.copy=t,i[s]=o.allocate(i[s],A,a)}}_forEachGeometry(A,t,i){const{data:n,getGeometry:r}=this,{iterable:o,objectInfo:s}=Jl(n,t,i);for(const a of o){s.index++;const g=r?r(a,s):null;A(g,s.index)}}_rebuildGeometry(A){if(!this.data)return;let{indexStarts:t,vertexStarts:i,instanceCount:n}=this;const{data:r,geometryBuffer:o}=this,{startRow:s=0,endRow:a=1/0}=A||{},g={};if(A||(t=[0],i=[0]),this.normalize||!o)this._forEachGeometry((l,c)=>{const C=l&&this.normalizeGeometry(l);g[c]=C,i[c+1]=i[c]+(C?this.getGeometrySize(C):0)},s,a),n=i[i.length-1];else if(i=r.startIndices,n=i[r.length]||0,ArrayBuffer.isView(o))n=n||o.length/this.positionSize;else if(o instanceof we){const l=o.accessor.stride||this.positionSize*4;n=n||o.byteLength/l}else if(o.buffer){const l=o.stride||this.positionSize*4;n=n||o.buffer.byteLength/l}else if(o.value){const l=o.value,c=o.stride/l.BYTES_PER_ELEMENT||this.positionSize;n=n||l.length/c}this._allocate(n,Boolean(A)),this.indexStarts=t,this.vertexStarts=i,this.instanceCount=n;const I={};this._forEachGeometry((l,c)=>{const C=g[c]||l;I.vertexStart=i[c],I.indexStart=t[c];const B=c0&&B>0&&(s[l++]=I-r,s[l++]=I-r-1,s[l++]=I-1,s[l++]=I-r,s[l++]=I-1,s[l++]=I),I++}}return{vertexCount:o,positions:g,indices:s,texCoords:a}}function dj(e){const A=new Float64Array(12);for(let t=0;t 0.5) { - vTexPos = geometry.worldPosition.xy; - } - - vec4 color = vec4(0.0); - DECKGL_FILTER_COLOR(color, geometry); -} -`;const mj=` -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.; -} -`;var wj=` -#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(mj,` - -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); - } -} -`);const vj={image:{type:"image",value:null,async:!0},bounds:{type:"array",value:[1,0,0,1],compare:!0},_imageCoordinateSystem:HA.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]}};class Au extends gi{constructor(...A){super(...A),y(this,"state",void 0)}getShaders(){return super.getShaders({vs:yj,fs:wj,modules:[eo,to]})}initializeState(){const A=this.getAttributeManager();A.remove(["instancePickingColors"]);const t=!0;A.add({indices:{size:1,isIndexed:!0,update:i=>i.value=this.state.mesh.indices,noAlloc:t},positions:{size:3,type:5130,fp64:this.use64bitPositions(),update:i=>i.value=this.state.mesh.positions,noAlloc:t},texCoords:{size:2,update:i=>i.value=this.state.mesh.texCoords,noAlloc:t}})}updateState({props:A,oldProps:t,changeFlags:i}){const n=this.getAttributeManager();if(i.extensionsChanged){var r;const{gl:o}=this.context;(r=this.state.model)===null||r===void 0||r.delete(),this.state.model=this._getModel(o),n.invalidateAll()}if(A.bounds!==t.bounds){const o=this.state.mesh,s=this._createMesh();this.state.model.setVertexCount(s.vertexCount);for(const a in s)o&&o[a]!==s[a]&&n.invalidate(a);this.setState({mesh:s,...this._getCoordinateUniforms()})}else A._imageCoordinateSystem!==t._imageCoordinateSystem&&this.setState(this._getCoordinateUniforms())}getPickingInfo(A){const{image:t}=this.props,i=A.info;if(!i.color||!t)return i.bitmap=null,i;const{width:n,height:r}=t;i.index=0;const o=Sj(i.color),s=[Math.floor(o[0]*n),Math.floor(o[1]*r)];return i.bitmap={size:{width:n,height:r},uv:o,pixel:s},i}disablePickingIndex(){this.setState({disablePicking:!0})}restorePickingColors(){this.setState({disablePicking:!1})}_updateAutoHighlight(A){super._updateAutoHighlight({...A,color:this.encodePickingColor(0)})}_createMesh(){const{bounds:A}=this.props;let t=A;return zD(A)&&(t=[[A[0],A[1]],[A[0],A[3]],[A[2],A[3]],[A[2],A[1]]]),Qj(t,this.context.viewport.resolution)}_getModel(A){return A?new di(A,{...this.getShaders(),id:this.props.id,geometry:new En({drawMode:4,vertexCount:6}),isInstanced:!1}):null}draw(A){const{uniforms:t,moduleParameters:i}=A,{model:n,coordinateConversion:r,bounds:o,disablePicking:s}=this.state,{image:a,desaturate:g,transparentColor:I,tintColor:l}=this.props;i.pickingActive&&s||a&&n&&n.setUniforms(t).setUniforms({bitmapTexture:a,desaturate:g,transparentColor:I.map(c=>c/255),tintColor:l.slice(0,3).map(c=>c/255),coordinateConversion:r,bounds:o}).draw()}_getCoordinateUniforms(){const{LNGLAT:A,CARTESIAN:t,DEFAULT:i}=HA;let{_imageCoordinateSystem:n}=this.props;if(n!==i){const{bounds:r}=this.props;if(!zD(r))throw new Error("_imageCoordinateSystem only supports rectangular bounds");const o=this.context.viewport.resolution?A:t;if(n=n===A?A:t,n===A&&o===t)return{coordinateConversion:-1,bounds:r};if(n===t&&o===A){const s=Or([r[0],r[1]]),a=Or([r[2],r[3]]);return{coordinateConversion:1,bounds:[s[0],s[1],a[0],a[1]]}}}return{coordinateConversion:0,bounds:[0,0,0,0]}}}y(Au,"layerName","BitmapLayer");y(Au,"defaultProps",vj);function Sj(e){const[A,t,i]=e,n=(i&240)/256,r=(i&15)/16;return[(A+r)/256,(t+n)/256]}function zD(e){return Number.isFinite(e[0])}var Dj=`#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; -} -`,Rj=`#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); -} -`;const xj=1024,Fj=4,jD=()=>{},Nj={[10241]:9987,[10240]:9729,[10242]:33071,[10243]:33071};function Lj(e){return Math.pow(2,Math.ceil(Math.log2(e)))}function bj(e,A,t,i){return t===A.width&&i===A.height?A:(e.canvas.height=i,e.canvas.width=t,e.clearRect(0,0,e.canvas.width,e.canvas.height),e.drawImage(A,0,0,A.width,A.height,0,0,t,i),e.canvas)}function ZI(e){return e&&(e.id||e.url)}function Gj(e,A,t){const i=e.width,n=e.height,r=GL(e,{width:A,height:t});return VY(e,r,{targetY:0,width:i,height:n}),e.delete(),r}function XD(e,A,t){for(let i=0;io&&(XD(t,s,n),i=0,n=r+n+A,r=0,s=[]),s.push({icon:g,xOffset:i}),i=i+c+A,r=Math.max(r,l)}}return s.length>0&&XD(t,s,n),{mapping:t,rowHeight:r,xOffset:i,yOffset:n,canvasWidth:o,canvasHeight:Lj(r+n+A)}}function Mj(e,A,t){if(!e||!A)return null;t=t||{};const i={},{iterable:n,objectInfo:r}=Jl(e);for(const o of n){r.index++;const s=A(o,r),a=ZI(s);if(!s)throw new Error("Icon is missing.");if(!s.url)throw new Error("Icon url is missing.");!i[a]&&(!t[a]||s.url!==t[a].url)&&(i[a]={...s,source:o,sourceIndex:r.index})}return i}class kj{constructor(A,{onUpdate:t=jD,onError:i=jD}){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",Fj),y(this,"_canvasWidth",xj),y(this,"_canvasHeight",0),y(this,"_canvas",null),this.gl=A,this.onUpdate=t,this.onError=i}finalize(){var A;(A=this._texture)===null||A===void 0||A.delete()}getTexture(){return this._texture||this._externalTexture}getIconMapping(A){const t=this._autoPacking?ZI(A):A;return this._mapping[t]||{}}setProps({loadOptions:A,autoPacking:t,iconAtlas:i,iconMapping:n,textureParameters:r}){if(A&&(this._loadOptions=A),t!==void 0&&(this._autoPacking=t),n&&(this._mapping=n),i){var o;(o=this._texture)===null||o===void 0||o.delete(),this._texture=null,this._externalTexture=i}r&&(this._textureParameters=r)}get isLoaded(){return this._pendingCount===0}packIcons(A,t){if(!this._autoPacking||typeof document=="undefined")return;const i=Object.values(Mj(A,t,this._mapping)||{});if(i.length>0){const{mapping:n,xOffset:r,yOffset:o,rowHeight:s,canvasHeight:a}=_j({icons:i,buffer:this._buffer,canvasWidth:this._canvasWidth,mapping:this._mapping,rowHeight:this._rowHeight,xOffset:this._xOffset,yOffset:this._yOffset});this._rowHeight=s,this._mapping=n,this._xOffset=r,this._yOffset=o,this._canvasHeight=a,this._texture||(this._texture=new Pt(this.gl,{width:this._canvasWidth,height:this._canvasHeight,parameters:this._textureParameters||Nj})),this._texture.height!==this._canvasHeight&&(this._texture=Gj(this._texture,this._canvasWidth,this._canvasHeight)),this.onUpdate(),this._canvas=this._canvas||document.createElement("canvas"),this._loadIcons(i)}}_loadIcons(A){const t=this._canvas.getContext("2d");for(const i of A)this._pendingCount++,LB(i.url,uL,this._loadOptions).then(n=>{const r=ZI(i),{x:o,y:s,width:a,height:g}=this._mapping[r],I=bj(t,n,a,g);this._texture.setSubImageData({data:I,x:o,y:s,width:a,height:g}),this._texture.generateMipmap(),this.onUpdate()}).catch(n=>{this.onError({url:i.url,source:i.source,sourceIndex:i.sourceIndex,loadOptions:this._loadOptions,error:n})}).finally(()=>{this._pendingCount--})}}const Wb=[0,0,0,255],Tj={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:e=>e.position},getIcon:{type:"accessor",value:e=>e.icon},getColor:{type:"accessor",value:Wb},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 eu extends gi{constructor(...A){super(...A),y(this,"state",void 0)}getShaders(){return super.getShaders({vs:Dj,fs:Rj,modules:[eo,to]})}initializeState(){this.state={iconManager:new kj(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:Wb},instanceAngles:{size:1,transition:!0,accessor:"getAngle"},instancePixelOffset:{size:2,transition:!0,accessor:"getPixelOffset"}})}updateState(A){super.updateState(A);const{props:t,oldProps:i,changeFlags:n}=A,r=this.getAttributeManager(),{iconAtlas:o,iconMapping:s,data:a,getIcon:g,textureParameters:I}=t,{iconManager:l}=this.state,c=o||this.internalState.isAsyncPropLoading("iconAtlas");if(l.setProps({loadOptions:t.loadOptions,autoPacking:!c,iconAtlas:o,iconMapping:c?s:null,textureParameters:I}),c?i.iconMapping!==t.iconMapping&&r.invalidate("getIcon"):(n.dataChanged||n.updateTriggersChanged&&(n.updateTriggersChanged.all||n.updateTriggersChanged.getIcon))&&l.packIcons(a,g),n.extensionsChanged){var C;const{gl:B}=this.context;(C=this.state.model)===null||C===void 0||C.delete(),this.state.model=this._getModel(B),r.invalidateAll()}}get isLoaded(){return super.isLoaded&&this.state.iconManager.isLoaded}finalizeState(A){super.finalizeState(A),this.state.iconManager.finalize()}draw({uniforms:A}){const{sizeScale:t,sizeMinPixels:i,sizeMaxPixels:n,sizeUnits:r,billboard:o,alphaCutoff:s}=this.props,{iconManager:a}=this.state,g=a.getTexture();g&&this.state.model.setUniforms(A).setUniforms({iconsTexture:g,iconsTextureDim:[g.width,g.height],sizeUnits:Jr[r],sizeScale:t,sizeMinPixels:i,sizeMaxPixels:n,billboard:o,alphaCutoff:s}).draw()}_getModel(A){const t=[-1,-1,-1,1,1,1,1,-1];return new di(A,{...this.getShaders(),id:this.props.id,geometry:new En({drawMode:6,attributes:{positions:{size:2,value:new Float32Array(t)}}}),isInstanced:!0})}_onUpdate(){this.setNeedsRedraw()}_onError(A){var t;const i=(t=this.getCurrentLayer())===null||t===void 0?void 0:t.props.onIconError;i?i(A):Ae.error(A.error.message)()}getInstanceOffset(A){const{width:t,height:i,anchorX:n=t/2,anchorY:r=i/2}=this.state.iconManager.getIconMapping(A);return[t/2-n,i/2-r]}getInstanceColorMode(A){return this.state.iconManager.getIconMapping(A).mask?1:0}getInstanceIconFrame(A){const{x:t,y:i,width:n,height:r}=this.state.iconManager.getIconMapping(A);return[t,i,n,r]}}y(eu,"defaultProps",Tj);y(eu,"layerName","IconLayer");var Uj=`#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); -} -`,Pj=`#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); -} -`;const Hj=[0,0,0,255],qj={getSourcePosition:{type:"accessor",value:e=>e.sourcePosition},getTargetPosition:{type:"accessor",value:e=>e.targetPosition},getColor:{type:"accessor",value:Hj},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 hI extends gi{getShaders(){return super.getShaders({vs:Uj,fs:Pj,modules:[eo,to]})}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(A){if(super.updateState(A),A.changeFlags.extensionsChanged){var t;const{gl:i}=this.context;(t=this.state.model)===null||t===void 0||t.delete(),this.state.model=this._getModel(i),this.getAttributeManager().invalidateAll()}}draw({uniforms:A}){const{widthUnits:t,widthScale:i,widthMinPixels:n,widthMaxPixels:r,wrapLongitude:o}=this.props;this.state.model.setUniforms(A).setUniforms({widthUnits:Jr[t],widthScale:i,widthMinPixels:n,widthMaxPixels:r,useShortestPath:o?1:0}).draw(),o&&this.state.model.setUniforms({useShortestPath:-1}).draw()}_getModel(A){const t=[0,-1,0,0,1,0,1,-1,0,1,1,0];return new di(A,{...this.getShaders(),id:this.props.id,geometry:new En({drawMode:5,attributes:{positions:new Float32Array(t)}}),isInstanced:!0})}}y(hI,"layerName","LineLayer");y(hI,"defaultProps",qj);var Jj=`#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); -} -`,Oj=`#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); -} -`;const ZD=[0,0,0,255],Yj={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:e=>e.position},getRadius:{type:"accessor",value:1},getFillColor:{type:"accessor",value:ZD},getLineColor:{type:"accessor",value:ZD},getLineWidth:{type:"accessor",value:1},strokeWidth:{deprecatedFor:"getLineWidth"},outline:{deprecatedFor:"stroked"},getColor:{deprecatedFor:["getFillColor","getLineColor"]}};class ry extends gi{getShaders(){return super.getShaders({vs:Jj,fs:Oj,modules:[eo,to]})}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(A){if(super.updateState(A),A.changeFlags.extensionsChanged){var t;const{gl:i}=this.context;(t=this.state.model)===null||t===void 0||t.delete(),this.state.model=this._getModel(i),this.getAttributeManager().invalidateAll()}}draw({uniforms:A}){const{radiusUnits:t,radiusScale:i,radiusMinPixels:n,radiusMaxPixels:r,stroked:o,filled:s,billboard:a,antialiasing:g,lineWidthUnits:I,lineWidthScale:l,lineWidthMinPixels:c,lineWidthMaxPixels:C}=this.props;this.state.model.setUniforms(A).setUniforms({stroked:o?1:0,filled:s,billboard:a,antialiasing:g,radiusUnits:Jr[t],radiusScale:i,radiusMinPixels:n,radiusMaxPixels:r,lineWidthUnits:Jr[I],lineWidthScale:l,lineWidthMinPixels:c,lineWidthMaxPixels:C}).draw()}_getModel(A){const t=[-1,-1,0,1,-1,0,1,1,0,-1,1,0];return new di(A,{...this.getShaders(),id:this.props.id,geometry:new En({drawMode:6,vertexCount:4,attributes:{positions:{size:3,value:new Float32Array(t)}}}),isInstanced:!0})}}y(ry,"defaultProps",Yj);y(ry,"layerName","ScatterplotLayer");const zb={CLOCKWISE:1,COUNTER_CLOCKWISE:-1};function jb(e,A,t={}){return Kj(e,t)!==A?(Wj(e,t),!0):!1}function Kj(e,A={}){return Math.sign(Vj(e,A))}function Vj(e,A={}){const{start:t=0,end:i=e.length}=A,n=A.size||2;let r=0;for(let o=t,s=i-n;o0){let n=!0;for(let r=0;rA[2]&&(t|=2),e[1]A[3]&&(t|=8),t}function Xb(e,A){const{size:t=2,broken:i=!1,gridResolution:n=10,gridOffset:r=[0,0],startIndex:o=0,endIndex:s=e.length}=A||{},a=(s-o)/t;let g=[];const I=[g],l=$I(e,0,t,o);let c,C;const B=$b(l,n,r,[]),u=[];bi(g,l);for(let E=1;Et&&(g=[],I.push(g),bi(g,l)),C=PC(c,B)}bi(g,c),wd(l,c)}return i?I:I[0]}const $D=0,zj=1;function Uc(e,A){for(let t=0;t=0?(bi(g,C)&&l.push(u),d+=B):l.length&&(l[l.length-1]=$D),wd(E,C),h=B,f=u;return[Q?{pos:a,types:A&&I}:null,d?{pos:g,types:A&&l}:null]}function $b(e,A,t,i){const n=Math.floor((e[0]-t[0])/A)*A+t[0],r=Math.floor((e[1]-t[1])/A)*A+t[1];return i[0]=n,i[1]=r,i[2]=n+A,i[3]=r+A,i}function jj(e,A,t){t&8?(e[1]+=A,e[3]+=A):t&4?(e[1]-=A,e[3]-=A):t&2?(e[0]+=A,e[2]+=A):t&1&&(e[0]-=A,e[2]-=A)}function Xj(e,A,t,i){let n=1/0,r=-1/0,o=1/0,s=-1/0;for(let a=0;ar?g:r,o=Is?I:s}return i[0][0]=n,i[0][1]=o,i[1][0]=r,i[1][1]=s,i}const Zj=85.051129;function $j(e,A){const{size:t=2,startIndex:i=0,endIndex:n=e.length,normalize:r=!0}=A||{},o=e.slice(i,n);AG(o,t,0,n-i);const s=Xb(o,{size:t,broken:!0,gridResolution:360,gridOffset:[-180,-180]});if(r)for(const a of s)eG(a,t);return s}function AX(e,A=null,t){const{size:i=2,normalize:n=!0,edgeTypes:r=!1}=t||{};A=A||[];const o=[],s=[];let a=0,g=0;for(let l=0;l<=A.length;l++){const c=A[l]||e.length,C=g,B=eX(e,i,a,c);for(let u=B;un&&(n=s,r=o-1)}return r}function tX(e,A,t,i,n=Zj){const r=e[t],o=e[i-A];if(Math.abs(r-o)>180){const s=$I(e,0,A,t);s[0]+=Math.round((o-r)/360)*360,bi(e,s),s[1]=Math.sign(s[1])*n,bi(e,s),s[0]=r,bi(e,s)}}function AG(e,A,t,i){let n=e[0],r;for(let o=t;o180||s<-180)&&(r-=Math.round(s/360)*360),e[o]=n=r}}function eG(e,A){let t;const i=e.length/A;for(let r=0;r=A.length&&(t+=1-A.length/n);const r=t*n;return i[0]=A[r],i[1]=A[r+1],i[2]=n===3&&A[r+2]||0,i}isClosed(A){if(!this.normalize)return Boolean(this.opts.loop);const{positionSize:t}=this,i=A.length-t;return A[0]===A[i]&&A[1]===A[i+1]&&(t===2||A[2]===A[i+2])}}function eR(e){return Array.isArray(e[0])}var sX=`#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); -} -`,aX=`#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); -} -`;const tG=[0,0,0,255],gX={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:e=>e.path},getColor:{type:"accessor",value:tG},getWidth:{type:"accessor",value:1},rounded:{deprecatedFor:["jointRounded","capRounded"]}},af={enter:(e,A)=>A.length?A.subarray(A.length-e.length):e};class tu extends gi{constructor(...A){super(...A),y(this,"state",void 0)}getShaders(){return super.getShaders({vs:sX,fs:aX,modules:[eo,to]})}get wrapLongitude(){return!1}initializeState(){this.getAttributeManager().addInstanced({positions:{size:3,vertexOffset:1,type:5130,fp64:this.use64bitPositions(),transition:af,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:af,defaultValue:1},instanceColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,accessor:"getColor",transition:af,defaultValue:tG},instancePickingColors:{size:3,type:5121,accessor:(i,{index:n,target:r})=>this.encodePickingColor(i&&i.__source?i.__source.index:n,r)}}),this.setState({pathTesselator:new oX({fp64:this.use64bitPositions()})})}updateState(A){super.updateState(A);const{props:t,changeFlags:i}=A,n=this.getAttributeManager();if(i.dataChanged||i.updateTriggersChanged&&(i.updateTriggersChanged.all||i.updateTriggersChanged.getPath)){const{pathTesselator:s}=this.state,a=t.data.attributes||{};s.updateGeometry({data:t.data,geometryBuffer:a.getPath,buffers:a,normalize:!t._pathType,loop:t._pathType==="loop",getGeometry:t.getPath,positionFormat:t.positionFormat,wrapLongitude:t.wrapLongitude,resolution:this.context.viewport.resolution,dataChanged:i.dataChanged}),this.setState({numInstances:s.instanceCount,startIndices:s.vertexStarts}),i.dataChanged||n.invalidateAll()}if(i.extensionsChanged){var o;const{gl:s}=this.context;(o=this.state.model)===null||o===void 0||o.delete(),this.state.model=this._getModel(s),n.invalidateAll()}}getPickingInfo(A){const t=super.getPickingInfo(A),{index:i}=t,{data:n}=this.props;return n[0]&&n[0].__source&&(t.object=n.find(r=>r.__source.index===i)),t}disablePickingIndex(A){const{data:t}=this.props;if(t[0]&&t[0].__source)for(let i=0;i80*t){s=g=e[0],a=I=e[1];for(var B=t;Bg&&(g=l),c>I&&(I=c);C=Math.max(g-s,I-a),C=C!==0?32767/C:0}return Al(r,o,t,s,a,C,0),o}function iG(e,A,t,i,n){var r,o;if(n===Rd(e,A,t,i)>0)for(r=A;r=A;r-=i)o=tR(r,e[r],e[r+1],o);return o&&nu(o,o.next)&&(tl(o),o=o.next),o}function Uo(e,A){if(!e)return e;A||(A=e);var t=e,i;do if(i=!1,!t.steiner&&(nu(t,t.next)||Ye(t.prev,t,t.next)===0)){if(tl(t),t=A=t.prev,t===t.next)break;i=!0}else t=t.next;while(i||t!==A);return A}function Al(e,A,t,i,n,r,o){if(!!e){!o&&r&&QX(e,i,n,r);for(var s=e,a,g;e.prev!==e.next;){if(a=e.prev,g=e.next,r?lX(e,i,n,r):IX(e)){A.push(a.i/t|0),A.push(e.i/t|0),A.push(g.i/t|0),tl(e),e=g.next,s=g.next;continue}if(e=g,e===s){o?o===1?(e=cX(Uo(e),A,t),Al(e,A,t,i,n,r,2)):o===2&&CX(e,A,t,i,n,r):Al(Uo(e),A,t,i,n,r,1);break}}}}function IX(e){var A=e.prev,t=e,i=e.next;if(Ye(A,t,i)>=0)return!1;for(var n=A.x,r=t.x,o=i.x,s=A.y,a=t.y,g=i.y,I=nr?n>o?n:o:r>o?r:o,C=s>a?s>g?s:g:a>g?a:g,B=i.next;B!==A;){if(B.x>=I&&B.x<=c&&B.y>=l&&B.y<=C&&Js(n,s,r,a,o,g,B.x,B.y)&&Ye(B.prev,B,B.next)>=0)return!1;B=B.next}return!0}function lX(e,A,t,i){var n=e.prev,r=e,o=e.next;if(Ye(n,r,o)>=0)return!1;for(var s=n.x,a=r.x,g=o.x,I=n.y,l=r.y,c=o.y,C=sa?s>g?s:g:a>g?a:g,E=I>l?I>c?I:c:l>c?l:c,h=Sd(C,B,A,t,i),f=Sd(u,E,A,t,i),Q=e.prevZ,d=e.nextZ;Q&&Q.z>=h&&d&&d.z<=f;){if(Q.x>=C&&Q.x<=u&&Q.y>=B&&Q.y<=E&&Q!==n&&Q!==o&&Js(s,I,a,l,g,c,Q.x,Q.y)&&Ye(Q.prev,Q,Q.next)>=0||(Q=Q.prevZ,d.x>=C&&d.x<=u&&d.y>=B&&d.y<=E&&d!==n&&d!==o&&Js(s,I,a,l,g,c,d.x,d.y)&&Ye(d.prev,d,d.next)>=0))return!1;d=d.nextZ}for(;Q&&Q.z>=h;){if(Q.x>=C&&Q.x<=u&&Q.y>=B&&Q.y<=E&&Q!==n&&Q!==o&&Js(s,I,a,l,g,c,Q.x,Q.y)&&Ye(Q.prev,Q,Q.next)>=0)return!1;Q=Q.prevZ}for(;d&&d.z<=f;){if(d.x>=C&&d.x<=u&&d.y>=B&&d.y<=E&&d!==n&&d!==o&&Js(s,I,a,l,g,c,d.x,d.y)&&Ye(d.prev,d,d.next)>=0)return!1;d=d.nextZ}return!0}function cX(e,A,t){var i=e;do{var n=i.prev,r=i.next.next;!nu(n,r)&&nG(n,i,i.next,r)&&el(n,r)&&el(r,n)&&(A.push(n.i/t|0),A.push(i.i/t|0),A.push(r.i/t|0),tl(i),tl(i.next),i=e=r),i=i.next}while(i!==e);return Uo(i)}function CX(e,A,t,i,n,r){var o=e;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&yX(o,s)){var a=rG(o,s);o=Uo(o,o.next),a=Uo(a,a.next),Al(o,A,t,i,n,r,0),Al(a,A,t,i,n,r,0);return}s=s.next}o=o.next}while(o!==e)}function BX(e,A,t,i){var n=[],r,o,s,a,g;for(r=0,o=A.length;r=t.next.y&&t.next.y!==t.y){var s=t.x+(n-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(s<=i&&s>r&&(r=s,o=t.x=t.x&&t.x>=g&&i!==t.x&&Js(no.x||t.x===o.x&&fX(o,t)))&&(o=t,l=c)),t=t.next;while(t!==a);return o}function fX(e,A){return Ye(e.prev,e,A.prev)<0&&Ye(A.next,e,e.next)<0}function QX(e,A,t,i){var n=e;do n.z===0&&(n.z=Sd(n.x,n.y,A,t,i)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next;while(n!==e);n.prevZ.nextZ=null,n.prevZ=null,dX(n)}function dX(e){var A,t,i,n,r,o,s,a,g=1;do{for(t=e,e=null,r=null,o=0;t;){for(o++,i=t,s=0,A=0;A0||a>0&&i;)s!==0&&(a===0||!i||t.z<=i.z)?(n=t,t=t.nextZ,s--):(n=i,i=i.nextZ,a--),r?r.nextZ=n:e=n,n.prevZ=r,r=n;t=i}r.nextZ=null,g*=2}while(o>1);return e}function Sd(e,A,t,i,n){return e=(e-t)*n|0,A=(A-i)*n|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,e|A<<1}function pX(e){var A=e,t=e;do(A.x=(e-o)*(r-s)&&(e-o)*(i-s)>=(t-o)*(A-s)&&(t-o)*(r-s)>=(n-o)*(i-s)}function yX(e,A){return e.next.i!==A.i&&e.prev.i!==A.i&&!mX(e,A)&&(el(e,A)&&el(A,e)&&wX(e,A)&&(Ye(e.prev,e,A.prev)||Ye(e,A.prev,A))||nu(e,A)&&Ye(e.prev,e,e.next)>0&&Ye(A.prev,A,A.next)>0)}function Ye(e,A,t){return(A.y-e.y)*(t.x-A.x)-(A.x-e.x)*(t.y-A.y)}function nu(e,A){return e.x===A.x&&e.y===A.y}function nG(e,A,t,i){var n=Hc(Ye(e,A,t)),r=Hc(Ye(e,A,i)),o=Hc(Ye(t,i,e)),s=Hc(Ye(t,i,A));return!!(n!==r&&o!==s||n===0&&Pc(e,t,A)||r===0&&Pc(e,i,A)||o===0&&Pc(t,e,i)||s===0&&Pc(t,A,i))}function Pc(e,A,t){return A.x<=Math.max(e.x,t.x)&&A.x>=Math.min(e.x,t.x)&&A.y<=Math.max(e.y,t.y)&&A.y>=Math.min(e.y,t.y)}function Hc(e){return e>0?1:e<0?-1:0}function mX(e,A){var t=e;do{if(t.i!==e.i&&t.next.i!==e.i&&t.i!==A.i&&t.next.i!==A.i&&nG(t,t.next,e,A))return!0;t=t.next}while(t!==e);return!1}function el(e,A){return Ye(e.prev,e,e.next)<0?Ye(e,A,e.next)>=0&&Ye(e,e.prev,A)>=0:Ye(e,A,e.prev)<0||Ye(e,e.next,A)<0}function wX(e,A){var t=e,i=!1,n=(e.x+A.x)/2,r=(e.y+A.y)/2;do t.y>r!=t.next.y>r&&t.next.y!==t.y&&n<(t.next.x-t.x)*(r-t.y)/(t.next.y-t.y)+t.x&&(i=!i),t=t.next;while(t!==e);return i}function rG(e,A){var t=new Dd(e.i,e.x,e.y),i=new Dd(A.i,A.x,A.y),n=e.next,r=A.prev;return e.next=A,A.prev=e,t.next=n,n.prev=t,i.next=t,t.prev=i,r.next=i,i.prev=r,i}function tR(e,A,t,i){var n=new Dd(e,A,t);return i?(n.next=i.next,n.prev=i,i.next.prev=n,i.next=n):(n.prev=n,n.next=n),n}function tl(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Dd(e,A,t){this.i=e,this.x=A,this.y=t,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}iu.deviation=function(e,A,t,i){var n=A&&A.length,r=n?A[0]*t:e.length,o=Math.abs(Rd(e,0,r,t));if(n)for(var s=0,a=A.length;s0&&(i+=e[n-1].length,t.holes.push(i))}return t};var vX=oy.exports;const qc=zb.CLOCKWISE,iR=zb.COUNTER_CLOCKWISE,Qr={isClosed:!0};function SX(e){if(e=e&&e.positions||e,!Array.isArray(e)&&!ArrayBuffer.isView(e))throw new Error("invalid polygon")}function Yg(e){return"positions"in e?e.positions:e}function HC(e){return"holeIndices"in e?e.holeIndices:null}function DX(e){return Array.isArray(e[0])}function RX(e){return e.length>=1&&e[0].length>=2&&Number.isFinite(e[0][0])}function xX(e){const A=e[0],t=e[e.length-1];return A[0]===t[0]&&A[1]===t[1]&&A[2]===t[2]}function FX(e,A,t,i){for(let n=0;nr/A));let n=Yg(e);if(t){const r=n.length;n=n.slice();const o=[];for(let s=0;s2?o[a*r+2]:0;n[s*3]=g,n[s*3+1]=I,n[s*3+2]=l}}_updateVertexValid(A,{vertexStart:t,geometrySize:i}){const{positionSize:n}=this,r=this.attributes.vertexValid,o=A&&HC(A);if(A&&A.edgeTypes?r.set(A.edgeTypes,t):r.fill(1,t,t+i),o)for(let s=0;s0&&!Number.isFinite(e[0])}var sG=` -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); -} -`,bX=`#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(sG,` - -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); -} -`),GX=`#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(sG,` - -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); -} -`),_X=`#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); -} -`;const JB=[0,0,0,255],MX={filled:!0,extruded:!1,wireframe:!1,_normalize:!0,_windingOrder:"CW",elevationScale:{type:"number",min:0,value:1},getPolygon:{type:"accessor",value:e=>e.polygon},getElevation:{type:"accessor",value:1e3},getFillColor:{type:"accessor",value:JB},getLineColor:{type:"accessor",value:JB},material:!0},Jc={enter:(e,A)=>A.length?A.subarray(A.length-e.length):e};class ru extends gi{constructor(...A){super(...A),y(this,"state",void 0)}getShaders(A){return super.getShaders({vs:A==="top"?bX:GX,fs:_X,defines:{RING_WINDING_ORDER_CW:!this.props._normalize&&this.props._windingOrder==="CCW"?0:1},modules:[eo,O9,to]})}get wrapLongitude(){return!1}initializeState(){const{gl:A,viewport:t}=this.context;let{coordinateSystem:i}=this.props;t.isGeospatial&&i===HA.DEFAULT&&(i=HA.LNGLAT),this.setState({numInstances:0,polygonTesselator:new LX({preproject:i===HA.LNGLAT&&t.projectFlat.bind(t),fp64:this.use64bitPositions(),IndexType:!A||Hp(A,De.ELEMENT_INDEX_UINT32)?Uint32Array:Uint16Array})});const n=this.getAttributeManager(),r=!0;n.remove(["instancePickingColors"]),n.add({indices:{size:1,isIndexed:!0,update:this.calculateIndices,noAlloc:r},positions:{size:3,type:5130,fp64:this.use64bitPositions(),transition:Jc,accessor:"getPolygon",update:this.calculatePositions,noAlloc:r,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:r},elevations:{size:1,transition:Jc,accessor:"getElevation",shaderAttributes:{elevations:{divisor:0},instanceElevations:{divisor:1}}},fillColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:Jc,accessor:"getFillColor",defaultValue:JB,shaderAttributes:{fillColors:{divisor:0},instanceFillColors:{divisor:1}}},lineColors:{size:this.props.colorFormat.length,type:5121,normalized:!0,transition:Jc,accessor:"getLineColor",defaultValue:JB,shaderAttributes:{lineColors:{divisor:0},instanceLineColors:{divisor:1}}},pickingColors:{size:3,type:5121,accessor:(o,{index:s,target:a})=>this.encodePickingColor(o&&o.__source?o.__source.index:s,a),shaderAttributes:{pickingColors:{divisor:0},instancePickingColors:{divisor:1}}}})}getPickingInfo(A){const t=super.getPickingInfo(A),{index:i}=t,{data:n}=this.props;return n[0]&&n[0].__source&&(t.object=n.find(r=>r.__source.index===i)),t}disablePickingIndex(A){const{data:t}=this.props;if(t[0]&&t[0].__source)for(let i=0;ia.delete()),this.setState(this._getModels(this.context.gl)),r.invalidateAll()}}updateGeometry({props:A,oldProps:t,changeFlags:i}){if(i.dataChanged||i.updateTriggersChanged&&(i.updateTriggersChanged.all||i.updateTriggersChanged.getPolygon)){const{polygonTesselator:r}=this.state,o=A.data.attributes||{};r.updateGeometry({data:A.data,normalize:A._normalize,geometryBuffer:o.getPolygon,buffers:o,getGeometry:A.getPolygon,positionFormat:A.positionFormat,wrapLongitude:A.wrapLongitude,resolution:this.context.viewport.resolution,fp64:this.use64bitPositions(),dataChanged:i.dataChanged}),this.setState({numInstances:r.instanceCount,startIndices:r.vertexStarts}),i.dataChanged||this.getAttributeManager().invalidateAll()}}_getModels(A){const{id:t,filled:i,extruded:n}=this.props;let r,o;if(i){const s=this.getShaders("top");s.defines.NON_INSTANCED_MODEL=1,r=new di(A,{...s,id:"".concat(t,"-top"),drawMode:4,attributes:{vertexPositions:new Float32Array([0,1])},uniforms:{isWireframe:!1,isSideVertex:!1},vertexCount:0,isIndexed:!0})}return n&&(o=new di(A,{...this.getShaders("side"),id:"".concat(t,"-side"),geometry:new En({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,r].filter(Boolean),topModel:r,sideModel:o}}calculateIndices(A){const{polygonTesselator:t}=this.state;A.startIndices=t.indexStarts,A.value=t.get("indices")}calculatePositions(A){const{polygonTesselator:t}=this.state;A.startIndices=t.vertexStarts,A.value=t.get("positions")}calculateVertexValid(A){A.value=this.state.polygonTesselator.get("vertexValid")}}y(ru,"defaultProps",MX);y(ru,"layerName","SolidPolygonLayer");function aG({data:e,getIndex:A,dataRange:t,replace:i}){const{startRow:n=0,endRow:r=1/0}=t,o=e.length;let s=o,a=o;for(let c=0;cc&&C>=n&&(s=c),C>=r){a=c;break}}let g=s;const l=a-s!==i.length?e.slice(a):void 0;for(let c=0;ce.polygon},getFillColor:{type:"accessor",value:kX},getLineColor:{type:"accessor",value:gG},getLineWidth:{type:"accessor",value:1},getElevation:{type:"accessor",value:1e3},material:!0};class il extends Ui{initializeState(){this.state={paths:[]},this.props.getLineDashArray&&Ae.removed("getLineDashArray","PathStyleExtension")()}updateState({changeFlags:A}){const t=A.dataChanged||A.updateTriggersChanged&&(A.updateTriggersChanged.all||A.updateTriggersChanged.getPolygon);if(t&&Array.isArray(A.dataChanged)){const i=this.state.paths.slice(),n=A.dataChanged.map(r=>aG({data:i,getIndex:o=>o.__source.index,dataRange:r,replace:this._getPaths(r)}));this.setState({paths:i,pathsDiff:n})}else t&&this.setState({paths:this._getPaths(),pathsDiff:null})}_getPaths(A={}){const{data:t,getPolygon:i,positionFormat:n,_normalize:r}=this.props,o=[],s=n==="XY"?2:3,{startRow:a,endRow:g}=A,{iterable:I,objectInfo:l}=Jl(t,a,g);for(const c of I){l.index++;let C=i(c,l);r&&(C=oG(C,s));const{holeIndices:B}=C,u=C.positions||C;if(B)for(let E=0;E<=B.length;E++){const h=u.slice(B[E-1]||0,B[E]||u.length);o.push(this.getSubLayerRow({path:h},c,l.index))}else o.push(this.getSubLayerRow({path:u},c,l.index))}return o}renderLayers(){const{data:A,_dataDiff:t,stroked:i,filled:n,extruded:r,wireframe:o,_normalize:s,_windingOrder:a,elevationScale:g,transitions:I,positionFormat:l}=this.props,{lineWidthUnits:c,lineWidthScale:C,lineWidthMinPixels:B,lineWidthMaxPixels:u,lineJointRounded:E,lineMiterLimit:h,lineDashJustified:f}=this.props,{getFillColor:Q,getLineColor:d,getLineWidth:w,getLineDashArray:m,getElevation:v,getPolygon:x,updateTriggers:D,material:F}=this.props,{paths:N,pathsDiff:M}=this.state,U=this.getSubLayerClass("fill",ru),P=this.getSubLayerClass("stroke",tu),W=this.shouldRenderSubLayer("fill",N)&&new U({_dataDiff:t,extruded:r,elevationScale:g,filled:n,wireframe:o,_normalize:s,_windingOrder:a,getElevation:v,getFillColor:Q,getLineColor:r&&o?d:gG,material:F,transitions:I},this.getSubLayerProps({id:"fill",updateTriggers:D&&{getPolygon:D.getPolygon,getElevation:D.getElevation,getFillColor:D.getFillColor,lineColors:r&&o,getLineColor:D.getLineColor}}),{data:A,positionFormat:l,getPolygon:x}),J=!r&&i&&this.shouldRenderSubLayer("stroke",N)&&new P({_dataDiff:M&&(()=>M),widthUnits:c,widthScale:C,widthMinPixels:B,widthMaxPixels:u,jointRounded:E,miterLimit:h,dashJustified:f,_pathType:"loop",transitions:I&&{getWidth:I.getLineWidth,getColor:I.getLineColor,getPath:I.getPolygon},getColor:this.getSubLayerAccessor(d),getWidth:this.getSubLayerAccessor(w),getDashArray:this.getSubLayerAccessor(m)},this.getSubLayerProps({id:"stroke",updateTriggers:D&&{getWidth:D.getLineWidth,getColor:D.getLineColor,getDashArray:D.getLineDashArray}}),{data:N,positionFormat:l,getPath:Z=>Z.path});return[!r&&W,J,r&&W]}}y(il,"layerName","PolygonLayer");y(il,"defaultProps",TX);function UX(e,A){if(!e)return null;const t="startIndices"in e?e.startIndices[A]:A,i=e.featureIds.value[t];return t!==-1?PX(e,i,t):null}function PX(e,A,t){const i={properties:{...e.properties[A]}};for(const n in e.numericProps)i.properties[n]=e.numericProps[n].value[t];return i}function HX(e,A){const t={points:null,lines:null,polygons:null};for(const i in t){const n=e[i].globalFeatureIds.value;t[i]=new Uint8ClampedArray(n.length*3);const r=[];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); -} -`;const sR=192/256,aR=[],JX={getIconOffsets:{type:"accessor",value:e=>e.offsets},alphaCutoff:.001,smoothing:.1,outlineWidth:0,outlineColor:{type:"color",value:[0,0,0,255]}};class sy extends eu{constructor(...A){super(...A),y(this,"state",void 0)}getShaders(){return{...super.getShaders(),fs:qX}}initializeState(){super.initializeState(),this.getAttributeManager().addInstanced({instanceOffsets:{size:2,accessor:"getIconOffsets"},instancePickingColors:{type:5121,size:3,accessor:(t,{index:i,target:n})=>this.encodePickingColor(i,n)}})}updateState(A){super.updateState(A);const{props:t,oldProps:i}=A;let{outlineColor:n}=t;n!==i.outlineColor&&(n=n.map(r=>r/255),n[3]=Number.isFinite(n[3])?n[3]:1,this.setState({outlineColor:n})),!t.sdf&&t.outlineWidth&&Ae.warn("".concat(this.id,": fontSettings.sdf is required to render outline"))()}draw(A){const{sdf:t,smoothing:i,outlineWidth:n}=this.props,{outlineColor:r}=this.state;A.uniforms={...A.uniforms,buffer:sR,outlineBuffer:n?Math.max(i,sR*(1-n)):-1,gamma:i,sdf:Boolean(t),outlineColor:r},super.draw(A)}getInstanceOffset(A){return A?Array.from(A).flatMap(t=>super.getInstanceOffset(t)):aR}getInstanceColorMode(A){return 1}getInstanceIconFrame(A){return A?Array.from(A).flatMap(t=>super.getInstanceIconFrame(t)):aR}}y(sy,"defaultProps",JX);y(sy,"layerName","MultiIconLayer");var ay={exports:{}};ay.exports=Ol;ay.exports.default=Ol;var oa=1e20;function Ol(e,A,t,i,n,r){this.fontSize=e||24,this.buffer=A===void 0?3:A,this.cutoff=i||.25,this.fontFamily=n||"sans-serif",this.fontWeight=r||"normal",this.radius=t||8;var o=this.size=this.fontSize+this.buffer*2,s=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(s*s),this.gridInner=new Float64Array(s*s),this.f=new Float64Array(s),this.z=new Float64Array(s+1),this.v=new Uint16Array(s),this.useMetrics=this.ctx.measureText("A").actualBoundingBoxLeft!==void 0,this.middle=Math.round(o/2*(navigator.userAgent.indexOf("Gecko/")>=0?1.2:1))}function OX(e,A,t,i,n,r,o){r.fill(oa,0,A*t),o.fill(0,0,A*t);for(var s=(A-i)/2,a=0;a-1);a++,r[a]=s,o[a]=g,o[a+1]=oa}for(s=0,a=0;sn&&(g=0,a++),r[l]={x:g+i,y:s+a*(t+i*2)+i,width:c,height:t},g+=c+i*2}const I=t+i*2;return{mapping:r,xOffset:g,yOffset:s+a*I,canvasHeight:zX(s+(a+1)*I)}}function IG(e,A,t,i){let n=0;for(let o=A;oi&&(os){let l=IG(e,s,a,n);g+l>i&&(oi&&(l=lG(e,s,a,i,n,r),o=r[r.length-1])),s=a,g+=l}return g}function ZX(e,A,t,i,n=0,r){r===void 0&&(r=e.length);const o=[];return A==="break-all"?lG(e,n,r,t,i,o):XX(e,n,r,t,i,o),o}function $X(e,A,t,i,n,r){let o=0,s=0;for(let a=A;a0,l=[0,0],c=[0,0];let C=0,B=0,u=0;for(let E=0;E<=o;E++){const h=r[E];if((h===` -`||E===o)&&(u=E),u>B){const f=I?ZX(r,t,i,n,B,u):WX;for(let Q=0;Q<=f.length;Q++){const d=Q===0?B:f[Q-1],w=Q1||a>0){const C=e.constructor;c=new C(g);for(let B=0;B=0&&this._order.splice(t,1)}_appendOrder(A){this._order.push(A)}}function eZ(){const e=[];for(let A=32;A<128;A++)e.push(String.fromCharCode(A));return e}const fI={fontFamily:"Monaco, monospace",fontWeight:"normal",characterSet:eZ(),fontSize:64,buffer:4,sdf:!1,cutoff:.25,radius:12,smoothing:.1},cR=1024,tZ=.9,CR=1.2,CG=3;let OB=new cG(CG);function iZ(e,A){let t;typeof A=="string"?t=new Set(Array.from(A)):t=new Set(A);const i=OB.get(e);if(!i)return t;for(const n in i.mapping)t.has(n)&&t.delete(n);return t}function nZ(e,A){for(let t=0;t=CG,"Invalid cache limit"),OB=new cG(e)}class oZ{constructor(){y(this,"props",{...fI}),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 CR}setProps(A={}){Object.assign(this.props,A);const t=this._key;this._key=this._getKey();const i=iZ(this._key,this.props.characterSet),n=OB.get(this._key);if(n&&i.size===0){this._key!==t&&(this._atlas=n);return}const r=this._generateFontAtlas(this._key,i,n);this._atlas=r,OB.set(this._key,r)}_generateFontAtlas(A,t,i){const{fontFamily:n,fontWeight:r,fontSize:o,buffer:s,sdf:a,radius:g,cutoff:I}=this.props;let l=i&&i.data;l||(l=document.createElement("canvas"),l.width=cR);const c=l.getContext("2d");BR(c,n,o,r);const{mapping:C,canvasHeight:B,xOffset:u,yOffset:E}=jX({getFontWidth:h=>c.measureText(h).width,fontHeight:o*CR,buffer:s,characterSet:t,maxCanvasWidth:cR,...i&&{mapping:i.mapping,xOffset:i.xOffset,yOffset:i.yOffset}});if(l.height!==B){const h=c.getImageData(0,0,l.width,l.height);l.height=B,c.putImageData(h,0,0)}if(BR(c,n,o,r),a){const h=new KX(o,s,g,I,n,r),f=c.getImageData(0,0,h.size,h.size);for(const Q of t)nZ(h.draw(Q),f),c.putImageData(f,C[Q].x-s,C[Q].y+s)}else for(const h of t)c.fillText(h,C[h].x,C[h].y+o*tZ);return{xOffset:u,yOffset:E,mapping:C,data:l,width:l.width,height:l.height}}_getKey(){const{fontFamily:A,fontWeight:t,fontSize:i,buffer:n,sdf:r,radius:o,cutoff:s}=this.props;return r?"".concat(A," ").concat(t," ").concat(i," ").concat(n," ").concat(o," ").concat(s):"".concat(A," ").concat(t," ").concat(i," ").concat(n)}}var sZ=`#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); -} -`,aZ=`#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); -} -`;const gZ={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:e=>e.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 gy extends gi{constructor(...A){super(...A),y(this,"state",void 0)}getShaders(){return super.getShaders({vs:sZ,fs:aZ,modules:[eo,to]})}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(A){super.updateState(A);const{changeFlags:t}=A;if(t.extensionsChanged){var i;const{gl:n}=this.context;(i=this.state.model)===null||i===void 0||i.delete(),this.state.model=this._getModel(n),this.getAttributeManager().invalidateAll()}}draw({uniforms:A}){const{billboard:t,sizeScale:i,sizeUnits:n,sizeMinPixels:r,sizeMaxPixels:o,getLineWidth:s}=this.props;let{padding:a}=this.props;a.length<4&&(a=[a[0],a[1],a[0],a[1]]),this.state.model.setUniforms(A).setUniforms({billboard:t,stroked:Boolean(s),padding:a,sizeUnits:Jr[n],sizeScale:i,sizeMinPixels:r,sizeMaxPixels:o}).draw()}_getModel(A){const t=[0,0,1,0,1,1,0,1];return new di(A,{...this.getShaders(),id:this.props.id,geometry:new En({drawMode:6,vertexCount:4,attributes:{positions:{size:2,value:new Float32Array(t)}}}),isInstanced:!0})}}y(gy,"defaultProps",gZ);y(gy,"layerName","TextBackgroundLayer");const ER={start:1,middle:0,end:-1},uR={top:1,center:0,bottom:-1},gf=[0,0,0,255],IZ=1,lZ={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:gf},getBorderWidth:{type:"accessor",value:0},backgroundPadding:{type:"array",value:[0,0,0,0]},characterSet:{type:"object",value:fI.characterSet},fontFamily:fI.fontFamily,fontWeight:fI.fontWeight,lineHeight:IZ,outlineWidth:{type:"number",value:0,min:0},outlineColor:{type:"color",value:gf},fontSettings:{},wordBreak:"break-word",maxWidth:{type:"number",value:-1},getText:{type:"accessor",value:e=>e.text},getPosition:{type:"accessor",value:e=>e.position},getColor:{type:"accessor",value:gf},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 Yl extends Ui{constructor(...A){super(...A),y(this,"state",void 0),y(this,"getBoundingRect",(t,i)=>{const n=this.state.fontAtlasManager.mapping,r=this.state.getText,{wordBreak:o,maxWidth:s,lineHeight:a,getTextAnchor:g,getAlignmentBaseline:I}=this.props,l=r(t,i)||"",{size:[c,C]}=lR(l,a,o,s,n),B=ER[typeof g=="function"?g(t,i):g],u=uR[typeof I=="function"?I(t,i):I];return[(B-1)*c/2,(u-1)*C/2,c,C]}),y(this,"getIconOffsets",(t,i)=>{const n=this.state.fontAtlasManager.mapping,r=this.state.getText,{wordBreak:o,maxWidth:s,lineHeight:a,getTextAnchor:g,getAlignmentBaseline:I}=this.props,l=r(t,i)||"",{x:c,y:C,rowWidth:B,size:[u,E]}=lR(l,a,o,s,n),h=ER[typeof g=="function"?g(t,i):g],f=uR[typeof I=="function"?I(t,i):I],Q=c.length,d=new Array(Q*2);let w=0;for(let m=0;m=0?this.props.data[A.index]:null,A}_updateFontAtlas(){const{fontSettings:A,fontFamily:t,fontWeight:i}=this.props,{fontAtlasManager:n,characterSet:r}=this.state,o={...A,characterSet:r,fontFamily:t,fontWeight:i};if(!n.mapping)return n.setProps(o),!0;for(const s in o)if(o[s]!==n.props[s])return n.setProps(o),!0;return!1}_updateText(){var A;const{data:t,characterSet:i}=this.props,n=(A=t.attributes)===null||A===void 0?void 0:A.getText;let{getText:r}=this.props,o=t.startIndices,s;const a=i==="auto"&&new Set;if(n&&o){const{texts:g,characterCount:I}=AZ({...ArrayBuffer.isView(n)?{value:n}:n,length:t.length,startIndices:o,characterSet:a});s=I,r=(l,{index:c})=>g[c]}else{const{iterable:g,objectInfo:I}=Jl(t);o=[0],s=0;for(const l of g){I.index++;const c=Array.from(r(l,I)||"");a&&c.forEach(a.add,a),s+=c.length,o.push(s)}}this.setState({getText:r,startIndices:o,numInstances:s,characterSet:a||i})}renderLayers(){const{startIndices:A,numInstances:t,getText:i,fontAtlasManager:{scale:n,texture:r,mapping:o},styleVersion:s}=this.state,{data:a,_dataDiff:g,getPosition:I,getColor:l,getSize:c,getAngle:C,getPixelOffset:B,getBackgroundColor:u,getBorderColor:E,getBorderWidth:h,backgroundPadding:f,background:Q,billboard:d,fontSettings:w,outlineWidth:m,outlineColor:v,sizeScale:x,sizeUnits:D,sizeMinPixels:F,sizeMaxPixels:N,transitions:M,updateTriggers:U}=this.props,P=this.getSubLayerClass("characters",sy),W=this.getSubLayerClass("background",gy);return[Q&&new W({getFillColor:u,getLineColor:E,getLineWidth:h,padding:f,getPosition:I,getSize:c,getAngle:C,getPixelOffset:B,billboard:d,sizeScale:x/this.state.fontAtlasManager.props.fontSize,sizeUnits:D,sizeMinPixels:F,sizeMaxPixels:N,transitions:M&&{getPosition:M.getPosition,getAngle:M.getAngle,getSize:M.getSize,getFillColor:M.getBackgroundColor,getLineColor:M.getBorderColor,getLineWidth:M.getBorderWidth,getPixelOffset:M.getPixelOffset}},this.getSubLayerProps({id:"background",updateTriggers:{getPosition:U.getPosition,getAngle:U.getAngle,getSize:U.getSize,getFillColor:U.getBackgroundColor,getLineColor:U.getBorderColor,getLineWidth:U.getBorderWidth,getPixelOffset:U.getPixelOffset,getBoundingRect:{getText:U.getText,getTextAnchor:U.getTextAnchor,getAlignmentBaseline:U.getAlignmentBaseline,styleVersion:s}}}),{data:a.attributes&&a.attributes.background?{length:a.length,attributes:a.attributes.background}:a,_dataDiff:g,autoHighlight:!1,getBoundingRect:this.getBoundingRect}),new P({sdf:w.sdf,smoothing:Number.isFinite(w.smoothing)?w.smoothing:fI.smoothing,outlineWidth:m,outlineColor:v,iconAtlas:r,iconMapping:o,getPosition:I,getColor:l,getSize:c,getAngle:C,getPixelOffset:B,billboard:d,sizeScale:x*n,sizeUnits:D,sizeMinPixels:F*n,sizeMaxPixels:N*n,transitions:M&&{getPosition:M.getPosition,getAngle:M.getAngle,getColor:M.getColor,getSize:M.getSize,getPixelOffset:M.getPixelOffset}},this.getSubLayerProps({id:"characters",updateTriggers:{getIcon:U.getText,getPosition:U.getPosition,getAngle:U.getAngle,getColor:U.getColor,getSize:U.getSize,getPixelOffset:U.getPixelOffset,getIconOffsets:{getText:U.getText,getTextAnchor:U.getTextAnchor,getAlignmentBaseline:U.getAlignmentBaseline,styleVersion:s}}}),{data:a,_dataDiff:g,startIndices:A,numInstances:t,getIconOffsets:this.getIconOffsets,getIcon:i})]}static set fontAtlasCacheLimit(A){rZ(A)}}y(Yl,"defaultProps",lZ);y(Yl,"layerName","TextLayer");const qC={circle:{type:ry,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:eu,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:Yl,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"}}},JC={type:tu,props:{lineWidthUnits:"widthUnits",lineWidthScale:"widthScale",lineWidthMinPixels:"widthMinPixels",lineWidthMaxPixels:"widthMaxPixels",lineJointRounded:"jointRounded",lineCapRounded:"capRounded",lineMiterLimit:"miterLimit",lineBillboard:"billboard",getLineColor:"getColor",getLineWidth:"getWidth"}},xd={type:ru,props:{extruded:"extruded",filled:"filled",wireframe:"wireframe",elevationScale:"elevationScale",material:"material",getElevation:"getElevation",getFillColor:"getFillColor",getLineColor:"getLineColor"}};function Sg({type:e,props:A}){const t={};for(const i in A)t[i]=e.defaultProps[A[i]];return t}function If(e,A){const{transitions:t,updateTriggers:i}=e.props,n={updateTriggers:{},transitions:t&&{getPosition:t.geometry}};for(const r in A){const o=A[r];let s=e.props[r];r.startsWith("get")&&(s=e.getSubLayerAccessor(s),n.updateTriggers[o]=i[r],t&&(n.transitions[o]=t[r])),n[o]=s}return n}function cZ(e){if(Array.isArray(e))return e;switch(Ae.assert(e.type,"GeoJSON does not have type"),e.type){case"Feature":return[e];case"FeatureCollection":return Ae.assert(Array.isArray(e.features),"GeoJSON does not have features array"),e.features;default:return[{geometry:e}]}}function hR(e,A,t={}){const i={pointFeatures:[],lineFeatures:[],polygonFeatures:[],polygonOutlineFeatures:[]},{startRow:n=0,endRow:r=e.length}=t;for(let o=n;o{s.push(t({geometry:{type:"Point",coordinates:l}},i,n))});break;case"LineString":a.push(t({geometry:e},i,n));break;case"MultiLineString":o.forEach(l=>{a.push(t({geometry:{type:"LineString",coordinates:l}},i,n))});break;case"Polygon":g.push(t({geometry:e},i,n)),o.forEach(l=>{I.push(t({geometry:{type:"LineString",coordinates:l}},i,n))});break;case"MultiPolygon":o.forEach(l=>{g.push(t({geometry:{type:"Polygon",coordinates:l}},i,n)),l.forEach(c=>{I.push(t({geometry:{type:"LineString",coordinates:c}},i,n))})});break}}const CZ={Point:1,MultiPoint:2,LineString:2,MultiLineString:3,Polygon:3,MultiPolygon:4};function BZ(e,A){let t=CZ[e];for(Ae.assert(t,"Unknown GeoJSON type ".concat(e));A&&--t>0;)A=A[0];return A&&Number.isFinite(A[0])}function BG(){return{points:{},lines:{},polygons:{},polygonsOutline:{}}}function Oc(e){return e.geometry.coordinates}function EZ(e,A){const t=BG(),{pointFeatures:i,lineFeatures:n,polygonFeatures:r,polygonOutlineFeatures:o}=e;return t.points.data=i,t.points._dataDiff=A.pointFeatures&&(()=>A.pointFeatures),t.points.getPosition=Oc,t.lines.data=n,t.lines._dataDiff=A.lineFeatures&&(()=>A.lineFeatures),t.lines.getPath=Oc,t.polygons.data=r,t.polygons._dataDiff=A.polygonFeatures&&(()=>A.polygonFeatures),t.polygons.getPolygon=Oc,t.polygonsOutline.data=o,t.polygonsOutline._dataDiff=A.polygonOutlineFeatures&&(()=>A.polygonOutlineFeatures),t.polygonsOutline.getPath=Oc,t}function uZ(e,A){const t=BG(),{points:i,lines:n,polygons:r}=e,o=HX(e,A);return t.points.data={length:i.positions.value.length/i.positions.size,attributes:{...i.attributes,getPosition:i.positions,instancePickingColors:{size:3,value:o.points}},properties:i.properties,numericProps:i.numericProps,featureIds:i.featureIds},t.lines.data={length:n.pathIndices.value.length-1,startIndices:n.pathIndices.value,attributes:{...n.attributes,getPath:n.positions,instancePickingColors:{size:3,value:o.lines}},properties:n.properties,numericProps:n.numericProps,featureIds:n.featureIds},t.lines._pathType="open",t.polygons.data={length:r.polygonIndices.value.length-1,startIndices:r.polygonIndices.value,attributes:{...r.attributes,getPolygon:r.positions,pickingColors:{size:3,value:o.polygons}},properties:r.properties,numericProps:r.numericProps,featureIds:r.featureIds},t.polygons._normalize=!1,r.triangles&&(t.polygons.data.attributes.indices=r.triangles.value),t.polygonsOutline.data={length:r.primitivePolygonIndices.value.length-1,startIndices:r.primitivePolygonIndices.value,attributes:{...r.attributes,getPath:r.positions,instancePickingColors:{size:3,value:o.polygons}},properties:r.properties,numericProps:r.numericProps,featureIds:r.featureIds},t.polygonsOutline._pathType="open",t}const hZ=["points","linestrings","polygons"],fZ={...Sg(qC.circle),...Sg(qC.icon),...Sg(qC.text),...Sg(JC),...Sg(xd),stroked:!0,filled:!0,extruded:!1,wireframe:!1,iconAtlas:{type:"object",value:null},iconMapping:{type:"object",value:{}},getIcon:{type:"accessor",value:e=>e.properties.icon},getText:{type:"accessor",value:e=>e.properties.text},pointType:"circle",getRadius:{deprecatedFor:"getPointRadius"}};class Iy extends Ui{initializeState(){this.state={layerProps:{},features:{}}}updateState({props:A,changeFlags:t}){if(!t.dataChanged)return;const{data:i}=this.props,n=i&&"points"in i&&"polygons"in i&&"lines"in i;this.setState({binary:n}),n?this._updateStateBinary({props:A,changeFlags:t}):this._updateStateJSON({props:A,changeFlags:t})}_updateStateBinary({props:A,changeFlags:t}){const i=uZ(A.data,this.encodePickingColor);this.setState({layerProps:i})}_updateStateJSON({props:A,changeFlags:t}){const i=cZ(A.data),n=this.getSubLayerRow.bind(this);let r={};const o={};if(Array.isArray(t.dataChanged)){const a=this.state.features;for(const g in a)r[g]=a[g].slice(),o[g]=[];for(const g of t.dataChanged){const I=hR(i,n,g);for(const l in a)o[l].push(aG({data:r[l],getIndex:c=>c.__source.index,dataRange:g,replace:I[l]}))}}else r=hR(i,n);const s=EZ(r,o);this.setState({features:r,featuresDiff:o,layerProps:s})}getPickingInfo(A){const t=super.getPickingInfo(A),{index:i,sourceLayer:n}=t;return t.featureType=hZ.find(r=>n.id.startsWith("".concat(this.id,"-").concat(r,"-"))),i>=0&&n.id.startsWith("".concat(this.id,"-points-text"))&&this.state.binary&&(t.index=this.props.data.points.globalFeatureIds.value[i]),t}_updateAutoHighlight(A){const t="".concat(this.id,"-points-"),i=A.featureType==="points";for(const n of this.getSubLayers())n.id.startsWith(t)===i&&n.updateAutoHighlight(A)}_renderPolygonLayer(){const{extruded:A,wireframe:t}=this.props,{layerProps:i}=this.state,n="polygons-fill",r=this.shouldRenderSubLayer(n,i.polygons.data)&&this.getSubLayerClass(n,xd.type);if(r){const o=If(this,xd.props),s=A&&t;return s||delete o.getLineColor,o.updateTriggers.lineColors=s,new r(o,this.getSubLayerProps({id:n,updateTriggers:o.updateTriggers}),i.polygons)}return null}_renderLineLayers(){const{extruded:A,stroked:t}=this.props,{layerProps:i}=this.state,n="polygons-stroke",r="linestrings",o=!A&&t&&this.shouldRenderSubLayer(n,i.polygonsOutline.data)&&this.getSubLayerClass(n,JC.type),s=this.shouldRenderSubLayer(r,i.lines.data)&&this.getSubLayerClass(r,JC.type);if(o||s){const a=If(this,JC.props);return[o&&new o(a,this.getSubLayerProps({id:n,updateTriggers:a.updateTriggers}),i.polygonsOutline),s&&new s(a,this.getSubLayerProps({id:r,updateTriggers:a.updateTriggers}),i.lines)]}return null}_renderPointLayers(){const{pointType:A}=this.props,{layerProps:t,binary:i}=this.state;let{highlightedObjectIndex:n}=this.props;!i&&Number.isFinite(n)&&(n=t.points.data.findIndex(s=>s.__source.index===n));const r=new Set(A.split("+")),o=[];for(const s of r){const a="points-".concat(s),g=qC[s],I=g&&this.shouldRenderSubLayer(a,t.points.data)&&this.getSubLayerClass(a,g.type);if(I){const l=If(this,g.props);let c=t.points;if(s==="text"&&i){const{instancePickingColors:C,...B}=c.data.attributes;c={...c,data:{...c.data,attributes:B}}}o.push(new I(l,this.getSubLayerProps({id:a,updateTriggers:l.updateTriggers,highlightedObjectIndex:n}),c))}}return o}renderLayers(){const{extruded:A}=this.props,t=this._renderPolygonLayer(),i=this._renderLineLayers(),n=this._renderPointLayers();return[!A&&t,i,n,A&&t]}getSubLayerAccessor(A){const{binary:t}=this.state;return!t||typeof A!="function"?super.getSubLayerAccessor(A):(i,n)=>{const{data:r,index:o}=n,s=UX(r,o);return A(s,n)}}}y(Iy,"layerName","GeoJsonLayer");y(Iy,"defaultProps",fZ);class QZ{constructor(A){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=A,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 Boolean(this._loader)&&!this._isCancelled}get needsReload(){return this._needsReload||this._isCancelled}get byteLength(){const A=this.content?this.content.byteLength:0;return Number.isFinite(A)||Ae.error("byteLength not defined in tile data")(),A}async _loadData({getData:A,requestScheduler:t,onLoad:i,onError:n}){const{index:r,id:o,bbox:s,userData:a,zoom:g}=this,I=this._loaderId;this._abortController=new AbortController;const{signal:l}=this._abortController,c=await t.scheduleRequest(this,u=>u.isSelected?1:-1);if(!c){this._isCancelled=!0;return}if(this._isCancelled){c.done();return}let C=null,B;try{C=await A({index:r,id:o,bbox:s,userData:a,zoom:g,signal:l})}catch(u){B=u||!0}finally{c.done()}if(I===this._loaderId){if(this._loader=void 0,this.content=C,this._isCancelled&&!C){this._isLoaded=!1;return}this._isLoaded=!0,this._isCancelled=!1,B?n(B,this):i(this)}}loadData(A){return this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1,this._loaderId++,this._loader=this._loadData(A),this._loader}setNeedsReload(){this.isLoading&&(this.abort(),this._loader=void 0),this._needsReload=!0}abort(){var A;this.isLoaded||(this._isCancelled=!0,(A=this._abortController)===null||A===void 0||A.abort())}}const xt={OUTSIDE:-1,INTERSECTING:0,INSIDE:1},QR=new hA,dZ=new hA;class ly{constructor(A=[0,0,0],t=[0,0,0],i){y(this,"center",void 0),y(this,"halfDiagonal",void 0),y(this,"minimum",void 0),y(this,"maximum",void 0),i=i||QR.copy(A).add(t).scale(.5),this.center=new hA(i),this.halfDiagonal=new hA(t).subtract(this.center),this.minimum=new hA(A),this.maximum=new hA(t)}clone(){return new ly(this.minimum,this.maximum,this.center)}equals(A){return this===A||Boolean(A)&&this.minimum.equals(A.minimum)&&this.maximum.equals(A.maximum)}transform(A){return this.center.transformAsPoint(A),this.halfDiagonal.transform(A),this.minimum.transform(A),this.maximum.transform(A),this}intersectPlane(A){const{halfDiagonal:t}=this,i=dZ.from(A.normal),n=t.x*Math.abs(i.x)+t.y*Math.abs(i.y)+t.z*Math.abs(i.z),r=this.center.dot(i)+A.distance;return r-n>0?xt.INSIDE:r+n<0?xt.OUTSIDE:xt.INTERSECTING}distanceTo(A){return Math.sqrt(this.distanceSquaredTo(A))}distanceSquaredTo(A){const t=QR.from(A).subtract(this.center),{halfDiagonal:i}=this;let n=0,r;return r=Math.abs(t.x)-i.x,r>0&&(n+=r*r),r=Math.abs(t.y)-i.y,r>0&&(n+=r*r),r=Math.abs(t.z)-i.z,r>0&&(n+=r*r),n}}const Dg=new hA,dR=new hA;class cy{constructor(A=[0,0,0],t=0){y(this,"center",void 0),y(this,"radius",void 0),this.radius=-0,this.center=new hA,this.fromCenterRadius(A,t)}fromCenterRadius(A,t){return this.center.from(A),this.radius=t,this}fromCornerPoints(A,t){return t=Dg.from(t),this.center=new hA().from(A).add(t).scale(.5),this.radius=this.center.distance(t),this}equals(A){return this===A||Boolean(A)&&this.center.equals(A.center)&&this.radius===A.radius}clone(){return new cy(this.center,this.radius)}union(A){const t=this.center,i=this.radius,n=A.center,r=A.radius,o=Dg.copy(n).subtract(t),s=o.magnitude();if(i>=s+r)return this.clone();if(r>=s+i)return A.clone();const a=(i+s+r)*.5;return dR.copy(o).scale((-i+a)/s).add(t),this.center.copy(dR),this.radius=a,this}expand(A){const i=Dg.from(A).subtract(this.center).magnitude();return i>this.radius&&(this.radius=i),this}transform(A){this.center.transform(A);const t=W6(Dg,A);return this.radius=Math.max(t[0],Math.max(t[1],t[2]))*this.radius,this}distanceSquaredTo(A){const t=this.distanceTo(A);return t*t}distanceTo(A){const i=Dg.from(A).subtract(this.center);return Math.max(0,i.len()-this.radius)}intersectPlane(A){const t=this.center,i=this.radius,r=A.normal.dot(t)+A.distance;return r<-i?xt.OUTSIDE:r=a?xt.INSIDE:xt.INTERSECTING}distanceTo(A){return Math.sqrt(this.distanceSquaredTo(A))}distanceSquaredTo(A){const t=yZ.from(A).subtract(this.center),i=this.halfAxes,n=i.getColumn(0,Yc),r=i.getColumn(1,Kc),o=i.getColumn(2,Vc),s=n.magnitude(),a=r.magnitude(),g=o.magnitude();n.normalize(),r.normalize(),o.normalize();let I=0,l;return l=Math.abs(t.dot(n))-s,l>0&&(I+=l*l),l=Math.abs(t.dot(r))-a,l>0&&(I+=l*l),l=Math.abs(t.dot(o))-g,l>0&&(I+=l*l),I}computePlaneDistances(A,t,i=[-0,-0]){let n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;const o=this.center,s=this.halfAxes,a=s.getColumn(0,Yc),g=s.getColumn(1,Kc),I=s.getColumn(2,Vc),l=mZ.copy(a).add(g).add(I).add(o),c=wZ.copy(l).subtract(A);let C=t.dot(c);return n=Math.min(C,n),r=Math.max(C,r),l.copy(o).add(a).add(g).subtract(I),c.copy(l).subtract(A),C=t.dot(c),n=Math.min(C,n),r=Math.max(C,r),l.copy(o).add(a).subtract(g).add(I),c.copy(l).subtract(A),C=t.dot(c),n=Math.min(C,n),r=Math.max(C,r),l.copy(o).add(a).subtract(g).subtract(I),c.copy(l).subtract(A),C=t.dot(c),n=Math.min(C,n),r=Math.max(C,r),o.copy(l).subtract(a).add(g).add(I),c.copy(l).subtract(A),C=t.dot(c),n=Math.min(C,n),r=Math.max(C,r),o.copy(l).subtract(a).add(g).subtract(I),c.copy(l).subtract(A),C=t.dot(c),n=Math.min(C,n),r=Math.max(C,r),o.copy(l).subtract(a).subtract(g).add(I),c.copy(l).subtract(A),C=t.dot(c),n=Math.min(C,n),r=Math.max(C,r),o.copy(l).subtract(a).subtract(g).subtract(I),c.copy(l).subtract(A),C=t.dot(c),n=Math.min(C,n),r=Math.max(C,r),i[0]=n,i[1]=r,i}transform(A){this.center.transformAsPoint(A);const t=this.halfAxes.getColumn(0,Yc);t.transformAsPoint(A);const i=this.halfAxes.getColumn(1,Kc);i.transformAsPoint(A);const n=this.halfAxes.getColumn(2,Vc);return n.transformAsPoint(A),this.halfAxes=new Qt([...t,...i,...n]),this}getTransform(){throw new Error("not implemented")}}const pR=new hA,yR=new hA;class Po{constructor(A=[0,0,1],t=0){y(this,"normal",void 0),y(this,"distance",void 0),this.normal=new hA,this.distance=-0,this.fromNormalDistance(A,t)}fromNormalDistance(A,t){return zI(Number.isFinite(t)),this.normal.from(A).normalize(),this.distance=t,this}fromPointNormal(A,t){A=pR.from(A),this.normal.from(t).normalize();const i=-this.normal.dot(A);return this.distance=i,this}fromCoefficients(A,t,i,n){return this.normal.set(A,t,i),zI(ln(this.normal.len(),1)),this.distance=n,this}clone(){return new Po(this.normal,this.distance)}equals(A){return ln(this.distance,A.distance)&&ln(this.normal,A.normal)}getPointDistance(A){return this.normal.dot(A)+this.distance}transform(A){const t=yR.copy(this.normal).transformAsVector(A).normalize(),i=this.normal.scale(-this.distance).transform(A);return this.fromPointNormal(i,t)}projectPointOntoPlane(A,t=[0,0,0]){A=pR.from(A);const i=this.getPointDistance(A),n=yR.copy(this.normal).scale(i);return A.subtract(n).to(t)}}const mR=[new hA([1,0,0]),new hA([0,1,0]),new hA([0,0,1])],wR=new hA,vZ=new hA;new Po(new hA(1,0,0),0);class Gn{constructor(A=[]){y(this,"planes",void 0),this.planes=A}fromBoundingSphere(A){this.planes.length=2*mR.length;const t=A.center,i=A.radius;let n=0;for(const r of mR){let o=this.planes[n],s=this.planes[n+1];o||(o=this.planes[n]=new Po),s||(s=this.planes[n+1]=new Po);const a=wR.copy(r).scale(-i).add(t);-r.dot(a),o.fromPointNormal(a,r);const g=wR.copy(r).scale(i).add(t),I=vZ.copy(r).negate();-I.dot(g),s.fromPointNormal(g,I),n+=2}return this}computeVisibility(A){let t=xt.INSIDE;for(const i of this.planes)switch(A.intersectPlane(i)){case xt.OUTSIDE:return xt.OUTSIDE;case xt.INTERSECTING:t=xt.INTERSECTING;break}return t}computeVisibilityWithPlaneMask(A,t){if(zI(Number.isFinite(t),"parentPlaneMask is required."),t===Gn.MASK_OUTSIDE||t===Gn.MASK_INSIDE)return t;let i=Gn.MASK_INSIDE;const n=this.planes;for(let r=0;ra;)NZ(s,Wc),vR.copy(Wc).transpose(),s.multiplyRight(Wc),s.multiplyLeft(vR),o.multiplyRight(Wc),++n>2&&(++r,n=0);return A.unitary=o.toTarget(A.unitary),A.diagonal=s.toTarget(A.diagonal),A}function xZ(e){let A=0;for(let t=0;t<9;++t){const i=e[t];A+=i*i}return Math.sqrt(A)}const Fd=[1,0,0],Nd=[2,2,1];function FZ(e){let A=0;for(let t=0;t<3;++t){const i=e[Zi.getElementIndex(Nd[t],Fd[t])];A+=2*i*i}return Math.sqrt(A)}function NZ(e,A){const t=lb.EPSILON15;let i=0,n=1;for(let g=0;g<3;++g){const I=Math.abs(e[Zi.getElementIndex(Nd[g],Fd[g])]);I>i&&(n=g,i=I)}const r=Fd[n],o=Nd[n];let s=1,a=0;if(Math.abs(e[Zi.getElementIndex(o,r)])>t){const g=e[Zi.getElementIndex(o,o)],I=e[Zi.getElementIndex(r,r)],l=e[Zi.getElementIndex(o,r)],c=(g-I)/2/l;let C;c<0?C=-1/(-c+Math.sqrt(1+c*c)):C=1/(c+Math.sqrt(1+c*c)),s=1/Math.sqrt(1+C*C),a=C*s}return Qt.IDENTITY.to(A),A[Zi.getElementIndex(r,r)]=A[Zi.getElementIndex(o,o)]=s,A[Zi.getElementIndex(o,r)]=a,A[Zi.getElementIndex(r,o)]=-a,A}const ar=new hA,LZ=new hA,bZ=new hA,GZ=new hA,_Z=new hA,MZ=new Qt,kZ={diagonal:new Qt,unitary:new Qt};function TZ(e,A=new Cy){if(!e||e.length===0)return A.halfAxes=new Qt([0,0,0,0,0,0,0,0,0]),A.center=new hA,A;const t=e.length,i=new hA(0,0,0);for(const D of e)i.add(D);const n=1/t;i.multiplyByScalar(n);let r=0,o=0,s=0,a=0,g=0,I=0;for(const D of e){const F=ar.copy(D).subtract(i);r+=F.x*F.x,o+=F.x*F.y,s+=F.x*F.z,a+=F.y*F.y,g+=F.y*F.z,I+=F.z*F.z}r*=n,o*=n,s*=n,a*=n,g*=n,I*=n;const l=MZ;l[0]=r,l[1]=o,l[2]=s,l[3]=o,l[4]=a,l[5]=g,l[6]=s,l[7]=g,l[8]=I;const{unitary:c}=RZ(l,kZ),C=A.halfAxes.copy(c);let B=C.getColumn(0,bZ),u=C.getColumn(1,GZ),E=C.getColumn(2,_Z),h=-Number.MAX_VALUE,f=-Number.MAX_VALUE,Q=-Number.MAX_VALUE,d=Number.MAX_VALUE,w=Number.MAX_VALUE,m=Number.MAX_VALUE;for(const D of e)ar.copy(D),h=Math.max(ar.dot(B),h),f=Math.max(ar.dot(u),f),Q=Math.max(ar.dot(E),Q),d=Math.min(ar.dot(B),d),w=Math.min(ar.dot(u),w),m=Math.min(ar.dot(E),m);B=B.multiplyByScalar(.5*(d+h)),u=u.multiplyByScalar(.5*(w+f)),E=E.multiplyByScalar(.5*(m+Q)),A.center.copy(B).add(u).add(E);const v=LZ.set(h-d,f-w,Q-m).multiplyByScalar(.5),x=new Qt([v[0],0,0,0,v[1],0,0,0,v[2]]);return A.halfAxes.multiplyRight(x),A}const Os=512,SR=3,EG=[[.5,.5],[0,0],[0,1],[1,0],[1,1]],uG=EG.concat([[0,.5],[.5,0],[1,.5],[.5,1]]),UZ=uG.concat([[.25,.5],[.75,.5]]);class Ys{constructor(A,t,i){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=A,this.y=t,this.z=i}get children(){if(!this._children){const A=this.x*2,t=this.y*2,i=this.z+1;this._children=[new Ys(A,t,i),new Ys(A,t+1,i),new Ys(A+1,t,i),new Ys(A+1,t+1,i)]}return this._children}update(A){const{viewport:t,cullingVolume:i,elevationBounds:n,minZ:r,maxZ:o,bounds:s,offset:a,project:g}=A,I=this.getBoundingVolume(n,a,g);if(s&&!this.insideBounds(s)||i.computeVisibility(I)<0)return!1;if(!this.childVisible){let{z:c}=this;if(c=r){const C=I.distanceTo(t.cameraPosition)*t.scale/t.height;c+=Math.floor(Math.log2(C))}if(c>=o)return this.selected=!0,!0}this.selected=!1,this.childVisible=!0;for(const c of this.children)c.update(A);return!0}getSelected(A=[]){if(this.selected&&A.push(this),this._children)for(const t of this._children)t.getSelected(A);return A}insideBounds([A,t,i,n]){const r=Math.pow(2,this.z),o=Os/r;return this.x*oA&&(this.y+1)*o>t}getBoundingVolume(A,t,i){if(i){const a=this.z<1?UZ:this.z<2?uG:EG,g=[];for(const I of a){const l=Ld(this.x+I[0],this.y+I[1],this.z);l[2]=A[0],g.push(i(l)),A[0]!==A[1]&&(l[2]=A[1],g.push(i(l)))}return TZ(g)}const n=Math.pow(2,this.z),r=Os/n,o=this.x*r+t*Os,s=Os-(this.y+1)*r;return new ly([o,s,A[0]],[o+r,s+r,A[1]])}}function PZ(e,A,t,i){const n=e instanceof Bj&&e.resolution?e.projectPosition:null,r=Object.values(e.getFrustumPlanes()).map(({normal:C,distance:B})=>new Po(C.clone().negate(),B)),o=new Gn(r),s=e.distanceScales.unitsPerMeter[2],a=t&&t[0]*s||0,g=t&&t[1]*s||0,I=e instanceof Cn&&e.pitch<=60?A:0;if(i){const[C,B,u,E]=i,h=Or([C,E]),f=Or([u,B]);i=[h[0],Os-h[1],f[0],Os-f[1]]}const l=new Ys(0,0,0),c={viewport:e,project:n,cullingVolume:o,elevationBounds:[a,g],minZ:I,maxZ:A,bounds:i,offset:0};if(l.update(c),e instanceof Cn&&e.subViewports&&e.subViewports.length>1){for(c.offset=-1;l.update(c)&&!(--c.offset<-SR););for(c.offset=1;l.update(c)&&!(++c.offset>SR););}return l.getSelected()}const qn=512,HZ=[-1/0,-1/0,1/0,1/0],qZ={type:"url",value:null,validate:(e,A)=>A.optional&&e===null||typeof e=="string"||Array.isArray(e)&&e.every(t=>typeof t=="string"),equals:(e,A)=>{if(e===A)return!0;if(!Array.isArray(e)||!Array.isArray(A))return!1;const t=e.length;if(t!==A.length)return!1;for(let i=0;in[0])),Math.min(...t.map(n=>n[1])),Math.max(...t.map(n=>n[0])),Math.max(...t.map(n=>n[1]))]}function JZ(e){return Math.abs(e.split("").reduce((A,t)=>(A<<5)-A+t.charCodeAt(0)|0,0))}function OZ(e,A){if(!e||!e.length)return null;const{index:t,id:i}=A;if(Array.isArray(e)){const r=JZ(i)%e.length;e=e[r]}let n=e;for(const r of Object.keys(t)){const o=new RegExp("{".concat(r,"}"),"g");n=n.replace(o,String(t[r]))}return Number.isInteger(t.y)&&Number.isInteger(t.z)&&(n=n.replace(/\{-y\}/g,String(Math.pow(2,t.z)-t.y-1))),n}function YZ(e,A,t){let i;if(A&&A.length===2){const[n,r]=A,o=e.getBounds({z:n}),s=e.getBounds({z:r});i=[Math.min(o[0],s[0]),Math.min(o[1],s[1]),Math.max(o[2],s[2]),Math.max(o[3],s[3])]}else i=e.getBounds();return e.isGeospatial?[Math.max(i[0],t[0]),Math.max(i[1],t[1]),Math.min(i[2],t[2]),Math.min(i[3],t[3])]:[Math.max(Math.min(i[0],t[2]),t[0]),Math.max(Math.min(i[1],t[3]),t[1]),Math.min(Math.max(i[2],t[0]),t[2]),Math.min(Math.max(i[3],t[1]),t[3])]}function YB({viewport:e,z:A,cullRect:t}){const i=t.x-e.x,n=t.y-e.y,{width:r,height:o}=t;if(!Array.isArray(A)){const g={targetZ:A||0},I=e.unproject([i,n],g),l=e.unproject([i+r,n],g),c=e.unproject([i,n+o],g),C=e.unproject([i+r,n+o],g);return[Math.min(I[0],l[0],c[0],C[0]),Math.min(I[1],l[1],c[1],C[1]),Math.max(I[0],l[0],c[0],C[0]),Math.max(I[1],l[1],c[1],C[1])]}const s=YB({viewport:e,z:A[0],cullRect:t}),a=YB({viewport:e,z:A[1],cullRect:t});return[Math.min(s[0],a[0]),Math.min(s[1],a[1]),Math.max(s[2],a[2]),Math.max(s[3],a[3])]}function KZ(e,A,t){return t?hG(e,t).map(n=>n*A/qn):e.map(i=>i*A/qn)}function By(e,A){return Math.pow(2,e)*qn/A}function Ld(e,A,t){const i=By(t,qn),n=e/i*360-180,r=Math.PI-2*Math.PI*A/i,o=180/Math.PI*Math.atan(.5*(Math.exp(r)-Math.exp(-r)));return[n,o]}function DR(e,A,t,i){const n=By(t,i);return[e/n*qn,A/n*qn]}function VZ(e,A,t,i,n=qn){if(e.isGeospatial){const[g,I]=Ld(A,t,i),[l,c]=Ld(A+1,t+1,i);return{west:g,north:I,east:l,south:c}}const[r,o]=DR(A,t,i,n),[s,a]=DR(A+1,t+1,i,n);return{left:r,top:o,right:s,bottom:a}}function WZ(e,A,t,i,n){const r=YZ(e,null,i),o=By(A,t),[s,a,g,I]=KZ(r,o,n),l=[];for(let c=Math.floor(s);cA&&(g=A);let I=n;return o&&s&&n&&!e.isGeospatial&&(I=hG(n,o)),e.isGeospatial?PZ(e,g,i,n):WZ(e,g,r,I||HZ,s)}const RR=1,ou=2,jZ="never",XZ="no-overlap",Ey="best-available",ZZ=5,$Z={[Ey]:e$,[XZ]:t$,[jZ]:()=>{}};class A${constructor(A){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",Ul(YB)),this.opts=A,this.onTileLoad=t=>{this.opts.onTileLoad(t),this.opts.maxCacheByteSize&&(this._cacheByteSize+=t.byteLength,this._resizeCache())},this._requestScheduler=new qq({maxRequests:A.maxRequests,throttleRequests:A.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 fe,this._modelMatrixInverse=new fe,this.setOptions(A)}get tiles(){return this._tiles}get selectedTiles(){return this._selectedTiles}get isLoaded(){return this._selectedTiles!==null&&this._selectedTiles.every(A=>A.isLoaded)}get needsReload(){return this._selectedTiles!==null&&this._selectedTiles.some(A=>A.needsReload)}setOptions(A){Object.assign(this.opts,A),Number.isFinite(A.maxZoom)&&(this._maxZoom=Math.floor(A.maxZoom)),Number.isFinite(A.minZoom)&&(this._minZoom=Math.ceil(A.minZoom))}finalize(){for(const A of this._cache.values())A.isLoading&&A.abort();this._cache.clear(),this._tiles=[],this._selectedTiles=null}reloadAll(){for(const A of this._cache.keys()){const t=this._cache.get(A);!this._selectedTiles||!this._selectedTiles.includes(t)?this._cache.delete(A):t.setNeedsReload()}}update(A,{zRange:t,modelMatrix:i}={}){const n=new fe(i),r=!n.equals(this._modelMatrix);if(!this._viewport||!A.equals(this._viewport)||!ln(this._zRange,t)||r){r&&(this._modelMatrixInverse=n.clone().invert(),this._modelMatrix=n),this._viewport=A,this._zRange=t;const s=this.getTileIndices({viewport:A,maxZoom:this._maxZoom,minZoom:this._minZoom,zRange:t,modelMatrix:this._modelMatrix,modelMatrixInverse:this._modelMatrixInverse});this._selectedTiles=s.map(a=>this._getTile(a,!0)),this._dirty&&this._rebuildTree()}else this.needsReload&&(this._selectedTiles=this._selectedTiles.map(s=>this._getTile(s.index,!0)));const o=this.updateTileStates();return this._pruneRequests(),this._dirty&&this._resizeCache(),o&&this._frameNumber++,this._frameNumber}isTileVisible(A,t){if(!A.isVisible)return!1;if(t&&this._viewport){const[i,n,r,o]=YB({viewport:this._viewport,z:this._zRange,cullRect:t}),{bbox:s}=A;if("west"in s)return s.westi&&s.southn;const a=Math.min(s.top,s.bottom),g=Math.max(s.top,s.bottom);return s.lefti&&an}return!0}getTileIndices({viewport:A,maxZoom:t,minZoom:i,zRange:n,modelMatrix:r,modelMatrixInverse:o}){const{tileSize:s,extent:a,zoomOffset:g}=this.opts;return zZ({viewport:A,maxZoom:t,minZoom:i,zRange:n,tileSize:s,extent:a,modelMatrix:r,modelMatrixInverse:o,zoomOffset:g})}getTileId(A){return"".concat(A.x,"-").concat(A.y,"-").concat(A.z)}getTileZoom(A){return A.z}getTileMetadata(A){const{tileSize:t}=this.opts;return{bbox:VZ(this._viewport,A.x,A.y,A.z,t)}}getParentIndex(A){const t=Math.floor(A.x/2),i=Math.floor(A.y/2),n=A.z-1;return{x:t,y:i,z:n}}updateTileStates(){const A=this.opts.refinementStrategy||Ey,t=new Array(this._cache.size);let i=0;for(const n of this._cache.values())t[i++]=n.isVisible,n.isSelected=!1,n.isVisible=!1;for(const n of this._selectedTiles)n.isSelected=!0,n.isVisible=!0;(typeof A=="function"?A:$Z[A])(Array.from(this._cache.values())),i=0;for(const n of this._cache.values())if(t[i++]!==n.isVisible)return!0;return!1}_pruneRequests(){const{maxRequests:A}=this.opts,t=[];let i=0;for(const n of this._cache.values())n.isLoading&&(i++,!n.isSelected&&!n.isVisible&&t.push(n));for(;A>0&&i>A&&t.length>0;)t.shift().abort(),i--}_rebuildTree(){const{_cache:A}=this;for(const t of A.values())t.parent=null,t.children&&(t.children.length=0);for(const t of A.values()){const i=this._getNearestAncestor(t);t.parent=i,i!=null&&i.children&&i.children.push(t)}}_resizeCache(){const{_cache:A,opts:t}=this,i=t.maxCacheSize||(t.maxCacheByteSize?1/0:ZZ*this.selectedTiles.length),n=t.maxCacheByteSize||1/0;if(A.size>i||this._cacheByteSize>n){for(const[o,s]of A)if(s.isVisible||(this._cacheByteSize-=t.maxCacheByteSize?s.byteLength:0,A.delete(o),this.opts.onTileUnload(s)),A.size<=i&&this._cacheByteSize<=n)break;this._rebuildTree(),this._dirty=!0}this._dirty&&(this._tiles=Array.from(this._cache.values()).sort((o,s)=>o.zoom-s.zoom),this._dirty=!1)}_getTile(A,t){const i=this.getTileId(A);let n=this._cache.get(i),r=!1;return!n&&t?(n=new QZ(A),Object.assign(n,this.getTileMetadata(n.index)),Object.assign(n,{id:i,zoom:this.getTileZoom(n.index)}),r=!0,this._cache.set(i,n),this._dirty=!0):n&&n.needsReload&&(r=!0),n&&r&&n.loadData({getData:this.opts.getTileData,requestScheduler:this._requestScheduler,onLoad:this.onTileLoad,onError:this.opts.onTileError}),n}_getNearestAncestor(A){const{_minZoom:t=0}=this;let i=A.index;for(;this.getTileZoom(i)>t;){i=this.getParentIndex(i);const n=this._getTile(i);if(n)return n}return null}}function e$(e){for(const A of e)A.state=0;for(const A of e)A.isSelected&&!fG(A)&&uy(A);for(const A of e)A.isVisible=Boolean(A.state&ou)}function t$(e){for(const t of e)t.state=0;for(const t of e)t.isSelected&&fG(t);const A=Array.from(e).sort((t,i)=>t.zoom-i.zoom);for(const t of A)if(t.isVisible=Boolean(t.state&ou),t.children&&(t.isVisible||t.state&RR))for(const i of t.children)i.state=RR;else t.isSelected&&uy(t)}function fG(e){let A=e;for(;A;){if(A.isLoaded||A.content)return A.state|=ou,!0;A=A.parent}return!1}function uy(e){for(const A of e.children)A.isLoaded||A.content?A.state|=ou:uy(A)}const i$={TilesetClass:A$,data:{type:"data",value:[]},dataComparator:qZ.equals,renderSubLayers:{type:"function",value:e=>new Iy(e),compare:!1},getTileData:{type:"function",optional:!0,value:null,compare:!1},onViewportLoad:{type:"function",optional:!0,value:null,compare:!1},onTileLoad:{type:"function",value:e=>{},compare:!1},onTileUnload:{type:"function",value:e=>{},compare:!1},onTileError:{type:"function",value:e=>console.error(e),compare:!1},extent:{type:"array",optional:!0,value:null,compare:!0},tileSize:512,maxZoom:null,minZoom:0,maxCacheSize:null,maxCacheByteSize:null,refinementStrategy:Ey,zRange:null,maxRequests:6,zoomOffset:0};class hy extends Ui{initializeState(){this.state={tileset:null,isLoaded:!1}}finalizeState(){var A,t;(A=this.state)===null||A===void 0||(t=A.tileset)===null||t===void 0||t.finalize()}get isLoaded(){var A,t;return(A=this.state)===null||A===void 0||(t=A.tileset)===null||t===void 0?void 0:t.selectedTiles.every(i=>i.isLoaded&&i.layers&&i.layers.every(n=>n.isLoaded))}shouldUpdateState({changeFlags:A}){return A.somethingChanged}updateState({changeFlags:A}){let{tileset:t}=this.state;const i=A.propsOrDataChanged||A.updateTriggersChanged,n=A.dataChanged||A.updateTriggersChanged&&(A.updateTriggersChanged.all||A.updateTriggersChanged.getTileData);t?i&&(t.setOptions(this._getTilesetOptions()),n?t.reloadAll():this.state.tileset.tiles.forEach(r=>{r.layers=null})):(t=new this.props.TilesetClass(this._getTilesetOptions()),this.setState({tileset:t})),this._updateTileset()}_getTilesetOptions(){const{tileSize:A,maxCacheSize:t,maxCacheByteSize:i,refinementStrategy:n,extent:r,maxZoom:o,minZoom:s,maxRequests:a,zoomOffset:g}=this.props;return{maxCacheSize:t,maxCacheByteSize:i,maxZoom:o,minZoom:s,tileSize:A,refinementStrategy:n,extent:r,maxRequests:a,zoomOffset:g,getTileData:this.getTileData.bind(this),onTileLoad:this._onTileLoad.bind(this),onTileError:this._onTileError.bind(this),onTileUnload:this._onTileUnload.bind(this)}}_updateTileset(){const{tileset:A}=this.state,{zRange:t,modelMatrix:i}=this.props,n=A.update(this.context.viewport,{zRange:t,modelMatrix:i}),{isLoaded:r}=A,o=this.state.isLoaded!==r,s=this.state.frameNumber!==n;r&&(o||s)&&this._onViewportLoad(),s&&this.setState({frameNumber:n}),this.state.isLoaded=r}_onViewportLoad(){const{tileset:A}=this.state,{onViewportLoad:t}=this.props;t&&t(A.selectedTiles)}_onTileLoad(A){this.props.onTileLoad(A),A.layers=null,this.setNeedsUpdate()}_onTileError(A,t){this.props.onTileError(A),t.layers=null,this.setNeedsUpdate()}_onTileUnload(A){this.props.onTileUnload(A)}getTileData(A){const{data:t,getTileData:i,fetch:n}=this.props,{signal:r}=A;return A.url=typeof t=="string"||Array.isArray(t)?OZ(t,A):null,i?i(A):n&&A.url?n(A.url,{propName:"data",layer:this,signal:r}):null}renderSubLayers(A){return this.props.renderSubLayers(A)}getSubLayerPropsByTile(A){return null}getPickingInfo({info:A,sourceLayer:t}){return A.tile=t.props.tile,A}_updateAutoHighlight(A){A.sourceLayer&&A.sourceLayer.updateAutoHighlight(A)}renderLayers(){return this.state.tileset.tiles.map(A=>{const t=this.getSubLayerPropsByTile(A);if(!(!A.isLoaded&&!A.content))if(A.layers)t&&A.layers[0]&&Object.keys(t).some(i=>A.layers[0].props[i]!==t[i])&&(A.layers=A.layers.map(i=>i.clone(t)));else{const i=this.renderSubLayers({...this.props,id:"".concat(this.id,"-").concat(A.id),data:A.content,_offset:0,tile:A});A.layers=zE(i,Boolean).map(n=>n.clone({tile:A,...t}))}return A.layers})}filterSubLayer({layer:A,cullRect:t}){const{tile:i}=A.props;return this.state.tileset.isTileVisible(i,t)}}y(hy,"defaultProps",i$);y(hy,"layerName","TileLayer");function mt(e){return(A,...t)=>n$(e,A,t)}function Ha(e,A){return mt(QG(e,A).get)}const{apply:n$,construct:huA,defineProperty:fuA,get:QuA,getOwnPropertyDescriptor:QG,getPrototypeOf:fy,has:duA,ownKeys:r$,set:puA,setPrototypeOf:yuA}=Reflect,{iterator:Kl,species:muA,toStringTag:o$,for:wuA}=Symbol,s$=Object,{create:Qy,defineProperty:a$,freeze:vuA,is:SuA}=s$,g$=Array,I$=g$.prototype,dG=I$[Kl],l$=mt(dG),pG=ArrayBuffer,c$=pG.prototype;Ha(c$,"byteLength");const xR=typeof SharedArrayBuffer!="undefined"?SharedArrayBuffer:null;xR&&Ha(xR.prototype,"byteLength");const yG=fy(Uint8Array);yG.from;const qt=yG.prototype;qt[Kl];mt(qt.keys);mt(qt.values);mt(qt.entries);mt(qt.set);mt(qt.reverse);mt(qt.fill);mt(qt.copyWithin);mt(qt.sort);mt(qt.slice);mt(qt.subarray);Ha(qt,"buffer");Ha(qt,"byteOffset");Ha(qt,"length");Ha(qt,o$);const qa=Uint32Array,C$=Float32Array,KB=fy([][Kl]()),B$=mt(KB.next),E$=mt(function*(){}().next),u$=fy(KB),h$=DataView.prototype,f$=mt(h$.getUint16),dy=WeakMap,mG=dy.prototype,wG=mt(mG.get),Q$=mt(mG.set),vG=new dy,d$=Qy(null,{next:{value:function(){const A=wG(vG,this);return B$(A)}},[Kl]:{value:function(){return this}}});function p$(e){if(e[Kl]===dG)return e;const A=Qy(d$);return Q$(vG,A,l$(e)),A}const y$=new dy,m$=Qy(u$,{next:{value:function(){const A=wG(y$,this);return E$(A)},writable:!0,configurable:!0}});for(const e of r$(KB))e!=="next"&&a$(m$,e,QG(KB,e));const SG=new pG(4),w$=new C$(SG),v$=new qa(SG),Vi=new qa(512),Wi=new qa(512);for(let e=0;e<256;++e){const A=e-127;A<-27?(Vi[e]=0,Vi[e|256]=32768,Wi[e]=24,Wi[e|256]=24):A<-14?(Vi[e]=1024>>-A-14,Vi[e|256]=1024>>-A-14|32768,Wi[e]=-A-1,Wi[e|256]=-A-1):A<=15?(Vi[e]=A+15<<10,Vi[e|256]=A+15<<10|32768,Wi[e]=13,Wi[e|256]=13):A<128?(Vi[e]=31744,Vi[e|256]=64512,Wi[e]=24,Wi[e|256]=24):(Vi[e]=31744,Vi[e|256]=64512,Wi[e]=13,Wi[e|256]=13)}const py=new qa(2048),Ja=new qa(64),DG=new qa(64);for(let e=1;e<1024;++e){let A=e<<13,t=0;for(;(A&8388608)===0;)A<<=1,t-=8388608;A&=-8388609,t+=947912704,py[e]=A|t}for(let e=1024;e<2048;++e)py[e]=939524096+(e-1024<<13);for(let e=1;e<31;++e)Ja[e]=e<<23;Ja[31]=1199570944;Ja[32]=2147483648;for(let e=33;e<63;++e)Ja[e]=2147483648+(e-32<<23);Ja[63]=3347054592;for(let e=1;e<64;++e)e!==32&&(DG[e]=1024);function S$(e){const A=e>>10;return v$[0]=py[DG[A]+(e&1023)]+Ja[A],w$[0]}function RG(e,A,...t){return S$(f$(e,A,...p$(t)))}var yy={exports:{}};function xG(e,A,t){const i=t&&t.debug||!1;i&&console.log("getting "+A+" in "+e);const n=typeof e=="object"?e.outer:e,r=`${A}\\="([^"]*)"`;i&&console.log("pattern:",r);const s=new RegExp(r).exec(n);if(i&&console.log("match:",s),s)return s[1]}yy.exports=xG;yy.exports.default=xG;var lf=yy.exports,my={exports:{}},wy={exports:{}},vy={exports:{}};function FG(e,A,t){const n=new RegExp(A).exec(e.slice(t));return n?t+n.index:-1}vy.exports=FG;vy.exports.default=FG;var Sy={exports:{}};function NG(e,A,t){const n=new RegExp(A).exec(e.slice(t));return n?t+n.index+n[0].length-1:-1}Sy.exports=NG;Sy.exports.default=NG;var Dy={exports:{}};function LG(e,A){const t=new RegExp(A,"g"),i=e.match(t);return i?i.length:0}Dy.exports=LG;Dy.exports.default=LG;const D$=vy.exports,cf=Sy.exports,FR=Dy.exports;function bG(e,A,t){const i=t&&t.debug||!1,n=!(t&&typeof t.nested===!1),r=t&&t.startIndex||0;i&&console.log("[xml-utils] starting findTagByName with",A," and ",t);const o=D$(e,`<${A}[ >/]`,r);if(i&&console.log("[xml-utils] start:",o),o===-1)return;const s=e.slice(o+A.length);let a=cf(s,"^[^<]*[ /]>",0);const g=a!==-1&&s[a-1]==="/";if(i&&console.log("[xml-utils] selfClosing:",g),g===!1)if(n){let C=0,B=1,u=0;for(;(a=cf(s,"[ /]"+A+">",C))!==-1;){const E=s.substring(C,a+1);if(B+=FR(E,"<"+A),u+=FR(E,"/"+A+">"),u>=B)break;C=a}}else a=cf(s,"[ /]"+A+">",0);const I=o+A.length+a+1;if(i&&console.log("[xml-utils] end:",I),I===-1)return;const l=e.slice(o,I);let c;return g?c=null:c=l.slice(l.indexOf(">")+1,l.lastIndexOf("<")),{inner:c,outer:l,start:o,end:I}}wy.exports=bG;wy.exports.default=bG;const R$=wy.exports;function GG(e,A,t){const i=[],n=t&&t.debug||!1,r=t&&typeof t.nested=="boolean"?t.nested:!0;let o=t&&t.startIndex||0,s;for(;s=R$(e,A,{debug:n,startIndex:o});)r?o=s.start+1+A.length:o=s.end,i.push(s);return n&&console.log("findTagsByName found",i.length,"tags"),i}my.exports=GG;my.exports.default=GG;var x$=my.exports;const QI={315:"Artist",258:"BitsPerSample",265:"CellLength",264:"CellWidth",320:"ColorMap",259:"Compression",33432:"Copyright",306:"DateTime",338:"ExtraSamples",266:"FillOrder",289:"FreeByteCounts",288:"FreeOffsets",291:"GrayResponseCurve",290:"GrayResponseUnit",316:"HostComputer",270:"ImageDescription",257:"ImageLength",256:"ImageWidth",271:"Make",281:"MaxSampleValue",280:"MinSampleValue",272:"Model",254:"NewSubfileType",274:"Orientation",262:"PhotometricInterpretation",284:"PlanarConfiguration",296:"ResolutionUnit",278:"RowsPerStrip",277:"SamplesPerPixel",305:"Software",279:"StripByteCounts",273:"StripOffsets",255:"SubfileType",263:"Threshholding",282:"XResolution",283:"YResolution",326:"BadFaxLines",327:"CleanFaxData",343:"ClipPath",328:"ConsecutiveBadFaxLines",433:"Decode",434:"DefaultImageColor",269:"DocumentName",336:"DotRange",321:"HalftoneHints",346:"Indexed",347:"JPEGTables",285:"PageName",297:"PageNumber",317:"Predictor",319:"PrimaryChromaticities",532:"ReferenceBlackWhite",339:"SampleFormat",340:"SMinSampleValue",341:"SMaxSampleValue",559:"StripRowCounts",330:"SubIFDs",292:"T4Options",293:"T6Options",325:"TileByteCounts",323:"TileLength",324:"TileOffsets",322:"TileWidth",301:"TransferFunction",318:"WhitePoint",344:"XClipPathUnits",286:"XPosition",529:"YCbCrCoefficients",531:"YCbCrPositioning",530:"YCbCrSubSampling",345:"YClipPathUnits",287:"YPosition",37378:"ApertureValue",40961:"ColorSpace",36868:"DateTimeDigitized",36867:"DateTimeOriginal",34665:"Exif IFD",36864:"ExifVersion",33434:"ExposureTime",41728:"FileSource",37385:"Flash",40960:"FlashpixVersion",33437:"FNumber",42016:"ImageUniqueID",37384:"LightSource",37500:"MakerNote",37377:"ShutterSpeedValue",37510:"UserComment",33723:"IPTC",34675:"ICC Profile",700:"XMP",42112:"GDAL_METADATA",42113:"GDAL_NODATA",34377:"Photoshop",33550:"ModelPixelScale",33922:"ModelTiepoint",34264:"ModelTransformation",34735:"GeoKeyDirectory",34736:"GeoDoubleParams",34737:"GeoAsciiParams",50674:"LercParameters"},$i={};for(const e in QI)QI.hasOwnProperty(e)&&($i[QI[e]]=parseInt(e,10));const F$=[$i.BitsPerSample,$i.ExtraSamples,$i.SampleFormat,$i.StripByteCounts,$i.StripOffsets,$i.StripRowCounts,$i.TileByteCounts,$i.TileOffsets,$i.SubIFDs],Cf={1:"BYTE",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",6:"SBYTE",7:"UNDEFINED",8:"SSHORT",9:"SLONG",10:"SRATIONAL",11:"FLOAT",12:"DOUBLE",13:"IFD",16:"LONG8",17:"SLONG8",18:"IFD8"},jA={};for(const e in Cf)Cf.hasOwnProperty(e)&&(jA[Cf[e]]=parseInt(e,10));const $t={WhiteIsZero:0,BlackIsZero:1,RGB:2,Palette:3,TransparencyMask:4,CMYK:5,YCbCr:6,CIELab:8,ICCLab:9},N$={Unspecified:0,Assocalpha:1,Unassalpha:2},DuA={Version:0,AddCompression:1},RuA={None:0,Deflate:1},L$={1024:"GTModelTypeGeoKey",1025:"GTRasterTypeGeoKey",1026:"GTCitationGeoKey",2048:"GeographicTypeGeoKey",2049:"GeogCitationGeoKey",2050:"GeogGeodeticDatumGeoKey",2051:"GeogPrimeMeridianGeoKey",2052:"GeogLinearUnitsGeoKey",2053:"GeogLinearUnitSizeGeoKey",2054:"GeogAngularUnitsGeoKey",2055:"GeogAngularUnitSizeGeoKey",2056:"GeogEllipsoidGeoKey",2057:"GeogSemiMajorAxisGeoKey",2058:"GeogSemiMinorAxisGeoKey",2059:"GeogInvFlatteningGeoKey",2060:"GeogAzimuthUnitsGeoKey",2061:"GeogPrimeMeridianLongGeoKey",2062:"GeogTOWGS84GeoKey",3072:"ProjectedCSTypeGeoKey",3073:"PCSCitationGeoKey",3074:"ProjectionGeoKey",3075:"ProjCoordTransGeoKey",3076:"ProjLinearUnitsGeoKey",3077:"ProjLinearUnitSizeGeoKey",3078:"ProjStdParallel1GeoKey",3079:"ProjStdParallel2GeoKey",3080:"ProjNatOriginLongGeoKey",3081:"ProjNatOriginLatGeoKey",3082:"ProjFalseEastingGeoKey",3083:"ProjFalseNorthingGeoKey",3084:"ProjFalseOriginLongGeoKey",3085:"ProjFalseOriginLatGeoKey",3086:"ProjFalseOriginEastingGeoKey",3087:"ProjFalseOriginNorthingGeoKey",3088:"ProjCenterLongGeoKey",3089:"ProjCenterLatGeoKey",3090:"ProjCenterEastingGeoKey",3091:"ProjCenterNorthingGeoKey",3092:"ProjScaleAtNatOriginGeoKey",3093:"ProjScaleAtCenterGeoKey",3094:"ProjAzimuthAngleGeoKey",3095:"ProjStraightVertPoleLongGeoKey",3096:"ProjRectifiedGridAngleGeoKey",4096:"VerticalCSTypeGeoKey",4097:"VerticalCitationGeoKey",4098:"VerticalDatumGeoKey",4099:"VerticalUnitsGeoKey"};function b$(e,A){const{width:t,height:i}=e,n=new Uint8Array(t*i*3);let r;for(let o=0,s=0;o>24,a=e[n+2]<<24>>24;let g=(o+16)/116,I=s/500+g,l=g-a/200,c,C,B;I=T$*(I*I*I>.008856?I*I*I:(I-16/116)/7.787),g=U$*(g*g*g>.008856?g*g*g:(g-16/116)/7.787),l=P$*(l*l*l>.008856?l*l*l:(l-16/116)/7.787),c=I*3.2406+g*-1.5372+l*-.4986,C=I*-.9689+g*1.8758+l*.0415,B=I*.0557+g*-.204+l*1.057,c=c>.0031308?1.055*c**(1/2.4)-.055:12.92*c,C=C>.0031308?1.055*C**(1/2.4)-.055:12.92*C,B=B>.0031308?1.055*B**(1/2.4)-.055:12.92*B,i[r]=Math.max(0,Math.min(1,c))*255,i[r+1]=Math.max(0,Math.min(1,C))*255,i[r+2]=Math.max(0,Math.min(1,B))*255}return i}const q$="modulepreload",NR={},J$="/",ss=function(A,t){return!t||t.length===0?A():Promise.all(t.map(i=>{if(i=`${J$}${i}`,i in NR)return;NR[i]=!0;const n=i.endsWith(".css"),r=n?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${i}"]${r}`))return;const o=document.createElement("link");if(o.rel=n?"stylesheet":q$,n||(o.as="script",o.crossOrigin=""),o.href=i,document.head.appendChild(o),n)return new Promise((s,a)=>{o.addEventListener("load",s),o.addEventListener("error",()=>a(new Error(`Unable to preload CSS for ${i}`)))})})).then(()=>A())},_G=new Map;function Wn(e,A){Array.isArray(e)||(e=[e]),e.forEach(t=>_G.set(t,A))}async function O$(e){const A=_G.get(e.Compression);if(!A)throw new Error(`Unknown compression method identifier: ${e.Compression}`);const t=await A();return new t(e)}Wn([void 0,1],()=>ss(()=>import("./raw.db67f73b.js"),[]).then(e=>e.default));Wn(5,()=>ss(()=>import("./lzw.0d287a28.js"),[]).then(e=>e.default));Wn(6,()=>{throw new Error("old style JPEG compression is not supported.")});Wn(7,()=>ss(()=>import("./jpeg.b48bde09.js"),[]).then(e=>e.default));Wn([8,32946],()=>ss(()=>import("./deflate.148275c2.js"),["assets/deflate.148275c2.js","assets/pako.esm.343ed2eb.js"]).then(e=>e.default));Wn(32773,()=>ss(()=>import("./packbits.14d99599.js"),[]).then(e=>e.default));Wn(34887,()=>ss(()=>import("./lerc.b5f6acc6.js"),["assets/lerc.b5f6acc6.js","assets/pako.esm.343ed2eb.js"]).then(e=>e.default));Wn(50001,()=>ss(()=>import("./webimage.dbd54e7c.js"),[]).then(e=>e.default));function su(e,A,t,i=1){return new(Object.getPrototypeOf(e)).constructor(A*t*i)}function Y$(e,A,t,i,n){const r=A/i,o=t/n;return e.map(s=>{const a=su(s,i,n);for(let g=0;g{const a=su(s,i,n);for(let g=0;g>8-n-m&l;else if(m+n<=16)I[d]=s.getUint16(w)>>16-n-m&l;else if(m+n<=24){const v=s.getUint16(w)<<8|s.getUint8(w+2);I[d]=v>>24-n-m&l}else I[d]=s.getUint32(w)>>32-n-m&l}}}}return I.buffer}class AAA{constructor(A,t,i,n,r,o){this.fileDirectory=A,this.geoKeys=t,this.dataView=i,this.littleEndian=n,this.tiles=r?{}:null,this.isTiled=!A.StripOffsets;const s=A.PlanarConfiguration;if(this.planarConfiguration=typeof s=="undefined"?1:s,this.planarConfiguration!==1&&this.planarConfiguration!==2)throw new Error("Invalid planar configuration.");this.source=o}getFileDirectory(){return this.fileDirectory}getGeoKeys(){return this.geoKeys}getWidth(){return this.fileDirectory.ImageWidth}getHeight(){return this.fileDirectory.ImageLength}getSamplesPerPixel(){return typeof this.fileDirectory.SamplesPerPixel!="undefined"?this.fileDirectory.SamplesPerPixel:1}getTileWidth(){return this.isTiled?this.fileDirectory.TileWidth:this.getWidth()}getTileHeight(){return this.isTiled?this.fileDirectory.TileLength:typeof this.fileDirectory.RowsPerStrip!="undefined"?Math.min(this.fileDirectory.RowsPerStrip,this.getHeight()):this.getHeight()}getBlockWidth(){return this.getTileWidth()}getBlockHeight(A){return this.isTiled||(A+1)*this.getTileHeight()<=this.getHeight()?this.getTileHeight():this.getHeight()-A*this.getTileHeight()}getBytesPerPixel(){let A=0;for(let t=0;t=this.fileDirectory.BitsPerSample.length)throw new RangeError(`Sample index ${A} is out of range.`);return Math.ceil(this.fileDirectory.BitsPerSample[A]/8)}getReaderForSample(A){const t=this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[A]:1,i=this.fileDirectory.BitsPerSample[A];switch(t){case 1:if(i<=8)return DataView.prototype.getUint8;if(i<=16)return DataView.prototype.getUint16;if(i<=32)return DataView.prototype.getUint32;break;case 2:if(i<=8)return DataView.prototype.getInt8;if(i<=16)return DataView.prototype.getInt16;if(i<=32)return DataView.prototype.getInt32;break;case 3:switch(i){case 16:return function(n,r){return RG(this,n,r)};case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}break}throw Error("Unsupported data format/bitsPerSample")}getSampleFormat(A=0){return this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[A]:1}getBitsPerSample(A=0){return this.fileDirectory.BitsPerSample[A]}getArrayForSample(A,t){const i=this.getSampleFormat(A),n=this.getBitsPerSample(A);return bd(i,n,t)}async getTileOrStrip(A,t,i,n,r){const o=Math.ceil(this.getWidth()/this.getTileWidth()),s=Math.ceil(this.getHeight()/this.getTileHeight());let a;const{tiles:g}=this;this.planarConfiguration===1?a=t*o+A:this.planarConfiguration===2&&(a=i*o*s+t*o+A);let I,l;this.isTiled?(I=this.fileDirectory.TileOffsets[a],l=this.fileDirectory.TileByteCounts[a]):(I=this.fileDirectory.StripOffsets[a],l=this.fileDirectory.StripByteCounts[a]);const c=(await this.source.fetch([{offset:I,length:l}],r))[0];let C;return g===null||!g[a]?(C=(async()=>{let B=await n.decode(this.fileDirectory,c);const u=this.getSampleFormat(),E=this.getBitsPerSample();return Z$(u,E)&&(B=$$(B,u,this.planarConfiguration,this.getSamplesPerPixel(),E,this.getTileWidth(),this.getBlockHeight(t))),B})(),g!==null&&(g[a]=C)):C=g[a],{x:A,y:t,sample:i,data:await C}}async _readRaster(A,t,i,n,r,o,s,a,g){const I=this.getTileWidth(),l=this.getTileHeight(),c=this.getWidth(),C=this.getHeight(),B=Math.max(Math.floor(A[0]/I),0),u=Math.min(Math.ceil(A[2]/I),Math.ceil(c/I)),E=Math.max(Math.floor(A[1]/l),0),h=Math.min(Math.ceil(A[3]/l),Math.ceil(C/l)),f=A[2]-A[0];let Q=this.getBytesPerPixel();const d=[],w=[];for(let x=0;x{const W=P.data,J=new DataView(W),Z=this.getBlockHeight(P.y),z=P.y*l,O=P.x*I,Y=z+Z,k=(P.x+1)*I,q=w[N],j=Math.min(Z,Z-(Y-A[3]),C-z),AA=Math.min(I,I-(k-A[2]),c-O);for(let iA=Math.max(0,A[1]-z);iAI[2]||I[1]>I[3])throw new Error("Invalid subsets");const l=I[2]-I[0],c=I[3]-I[1],C=l*c,B=this.getSamplesPerPixel();if(!t||!t.length)for(let f=0;f=B)return Promise.reject(new RangeError(`Invalid sample index '${t[f]}'.`));let u;if(i){const f=this.fileDirectory.SampleFormat?Math.max.apply(null,this.fileDirectory.SampleFormat):1,Q=Math.max.apply(null,this.fileDirectory.BitsPerSample);u=bd(f,Q,C*t.length),a&&u.fill(a)}else{u=[];for(let f=0;fg[2]||g[1]>g[3])throw new Error("Invalid subsets");const I=this.fileDirectory.PhotometricInterpretation;if(I===$t.RGB){let h=[0,1,2];if(this.fileDirectory.ExtraSamples!==N$.Unspecified&&s){h=[];for(let f=0;flf(r,"sample")===void 0):n=n.filter(r=>Number(lf(r,"sample"))===A);for(let r=0;r0;let r=!0;for(let o=0;o<8;o++){let s=this._dataView.getUint8(A+(t?o:7-o));n&&(r?s!==0&&(s=~(s-1)&255,r=!1):s=~s&255),i+=s*256**o}return n&&(i=-i),i}getUint8(A,t){return this._dataView.getUint8(A,t)}getInt8(A,t){return this._dataView.getInt8(A,t)}getUint16(A,t){return this._dataView.getUint16(A,t)}getInt16(A,t){return this._dataView.getInt16(A,t)}getUint32(A,t){return this._dataView.getUint32(A,t)}getInt32(A,t){return this._dataView.getInt32(A,t)}getFloat16(A,t){return RG(this._dataView,A,t)}getFloat32(A,t){return this._dataView.getFloat32(A,t)}getFloat64(A,t){return this._dataView.getFloat64(A,t)}}class tAA{constructor(A,t,i,n){this._dataView=new DataView(A),this._sliceOffset=t,this._littleEndian=i,this._bigTiff=n}get sliceOffset(){return this._sliceOffset}get sliceTop(){return this._sliceOffset+this.buffer.byteLength}get littleEndian(){return this._littleEndian}get bigTiff(){return this._bigTiff}get buffer(){return this._dataView.buffer}covers(A,t){return this.sliceOffset<=A&&this.sliceTop>=A+t}readUint8(A){return this._dataView.getUint8(A-this._sliceOffset,this._littleEndian)}readInt8(A){return this._dataView.getInt8(A-this._sliceOffset,this._littleEndian)}readUint16(A){return this._dataView.getUint16(A-this._sliceOffset,this._littleEndian)}readInt16(A){return this._dataView.getInt16(A-this._sliceOffset,this._littleEndian)}readUint32(A){return this._dataView.getUint32(A-this._sliceOffset,this._littleEndian)}readInt32(A){return this._dataView.getInt32(A-this._sliceOffset,this._littleEndian)}readFloat32(A){return this._dataView.getFloat32(A-this._sliceOffset,this._littleEndian)}readFloat64(A){return this._dataView.getFloat64(A-this._sliceOffset,this._littleEndian)}readUint64(A){const t=this.readUint32(A),i=this.readUint32(A+4);let n;if(this._littleEndian){if(n=t+2**32*i,!Number.isSafeInteger(n))throw new Error(`${n} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return n}if(n=2**32*t+i,!Number.isSafeInteger(n))throw new Error(`${n} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return n}readInt64(A){let t=0;const i=(this._dataView.getUint8(A+(this._littleEndian?7:0))&128)>0;let n=!0;for(let r=0;r<8;r++){let o=this._dataView.getUint8(A+(this._littleEndian?r:7-r));i&&(n?o!==0&&(o=~(o-1)&255,n=!1):o=~o&255),t+=o*256**r}return i&&(t=-t),t}readOffset(A){return this._bigTiff?this.readUint64(A):this.readUint32(A)}}const LR=`\r -\r -`;function kG(e){if(typeof Object.fromEntries!="undefined")return Object.fromEntries(e);const A={};for(const[t,i]of e)A[t.toLowerCase()]=i;return A}function iAA(e){const A=e.split(`\r -`).map(t=>{const i=t.split(":").map(n=>n.trim());return i[0]=i[0].toLowerCase(),i});return kG(A)}function nAA(e){const[A,...t]=e.split(";").map(n=>n.trim()),i=t.map(n=>n.split("="));return{type:A,params:kG(i)}}function Gd(e){let A,t,i;return e&&([,A,t,i]=e.match(/bytes (\d+)-(\d+)\/(\d+)/),A=parseInt(A,10),t=parseInt(t,10),i=parseInt(i,10)),{start:A,end:t,total:i}}function rAA(e,A){let t=null;const i=new TextDecoder("ascii"),n=[],r=`--${A}`,o=`${r}--`;for(let s=0;s<10;++s)i.decode(new Uint8Array(e,s,r.length))===r&&(t=s);if(t===null)throw new Error("Could not find initial boundary");for(;tthis.fetchSlice(i,t)))}async fetchSlice(A){throw new Error(`fetching of slice ${A} not possible, not implemented`)}get fileSize(){return null}async close(){}}class oAA extends Map{constructor(A={}){if(super(),!(A.maxSize&&A.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if(typeof A.maxAge=="number"&&A.maxAge===0)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=A.maxSize,this.maxAge=A.maxAge||Number.POSITIVE_INFINITY,this.onEviction=A.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(A){if(typeof this.onEviction=="function")for(const[t,i]of A)this.onEviction(t,i.value)}_deleteIfExpired(A,t){return typeof t.expiry=="number"&&t.expiry<=Date.now()?(typeof this.onEviction=="function"&&this.onEviction(A,t.value),this.delete(A)):!1}_getOrDeleteIfExpired(A,t){if(this._deleteIfExpired(A,t)===!1)return t.value}_getItemValue(A,t){return t.expiry?this._getOrDeleteIfExpired(A,t):t.value}_peek(A,t){const i=t.get(A);return this._getItemValue(A,i)}_set(A,t){this.cache.set(A,t),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(A,t){this.oldCache.delete(A),this._set(A,t)}*_entriesAscending(){for(const A of this.oldCache){const[t,i]=A;this.cache.has(t)||this._deleteIfExpired(t,i)===!1&&(yield A)}for(const A of this.cache){const[t,i]=A;this._deleteIfExpired(t,i)===!1&&(yield A)}}get(A){if(this.cache.has(A)){const t=this.cache.get(A);return this._getItemValue(A,t)}if(this.oldCache.has(A)){const t=this.oldCache.get(A);if(this._deleteIfExpired(A,t)===!1)return this._moveToRecent(A,t),t.value}}set(A,t,{maxAge:i=this.maxAge}={}){const n=typeof i=="number"&&i!==Number.POSITIVE_INFINITY?Date.now()+i:void 0;this.cache.has(A)?this.cache.set(A,{value:t,expiry:n}):this._set(A,{value:t,expiry:n})}has(A){return this.cache.has(A)?!this._deleteIfExpired(A,this.cache.get(A)):this.oldCache.has(A)?!this._deleteIfExpired(A,this.oldCache.get(A)):!1}peek(A){if(this.cache.has(A))return this._peek(A,this.cache);if(this.oldCache.has(A))return this._peek(A,this.oldCache)}delete(A){const t=this.cache.delete(A);return t&&this._size--,this.oldCache.delete(A)||t}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(A){if(!(A&&A>0))throw new TypeError("`maxSize` must be a number greater than 0");const t=[...this._entriesAscending()],i=t.length-A;i<0?(this.cache=new Map(t),this.oldCache=new Map,this._size=t.length):(i>0&&this._emitEvictions(t.slice(0,i)),this.oldCache=new Map(t.slice(i)),this.cache=new Map,this._size=0),this.maxSize=A}*keys(){for(const[A]of this)yield A}*values(){for(const[,A]of this)yield A}*[Symbol.iterator](){for(const A of this.cache){const[t,i]=A;this._deleteIfExpired(t,i)===!1&&(yield[t,i.value])}for(const A of this.oldCache){const[t,i]=A;this.cache.has(t)||this._deleteIfExpired(t,i)===!1&&(yield[t,i.value])}}*entriesDescending(){let A=[...this.cache];for(let t=A.length-1;t>=0;--t){const i=A[t],[n,r]=i;this._deleteIfExpired(n,r)===!1&&(yield[n,r.value])}A=[...this.oldCache];for(let t=A.length-1;t>=0;--t){const i=A[t],[n,r]=i;this.cache.has(n)||this._deleteIfExpired(n,r)===!1&&(yield[n,r.value])}}*entriesAscending(){for(const[A,t]of this._entriesAscending())yield[A,t.value]}get size(){if(!this._size)return this.oldCache.size;let A=0;for(const t of this.oldCache.keys())this.cache.has(t)||A++;return Math.min(this._size+A,this.maxSize)}entries(){return this.entriesAscending()}forEach(A,t=this){for(const[i,n]of this.entriesAscending())A.call(t,n,i,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}}async function sAA(e){return new Promise(A=>setTimeout(A,e))}function aAA(e,A){const t=Array.isArray(e)?e:Array.from(e),i=Array.isArray(A)?A:Array.from(A);return t.map((n,r)=>[n,i[r]])}class pa extends Error{constructor(A){super(A),Error.captureStackTrace&&Error.captureStackTrace(this,pa),this.name="AbortError"}}class gAA extends Error{constructor(A,t){super(t),this.errors=A,this.message=t,this.name="AggregateError"}}const IAA=gAA;class lAA{constructor(A,t,i=null){this.offset=A,this.length=t,this.data=i}get top(){return this.offset+this.length}}class bR{constructor(A,t,i){this.offset=A,this.length=t,this.blockIds=i}}class cAA extends au{constructor(A,{blockSize:t=65536,cacheSize:i=100}={}){super(),this.source=A,this.blockSize=t,this.blockCache=new oAA({maxSize:i}),this.blockRequests=new Map,this.blockIdsToFetch=new Set,this.abortedBlockIds=new Set}get fileSize(){return this.source.fileSize}async fetch(A,t){const i=[],n=[],r=[];for(const{offset:c,length:C}of A){let B=c+C;const{fileSize:u}=this;u!==null&&(B=Math.min(B,u));const E=Math.floor(c/this.blockSize)*this.blockSize;for(let h=E;hthis.abortedBlockIds.has(c)||!this.blockCache.has(c));if(a.forEach(c=>this.blockIdsToFetch.add(c)),a.length>0&&t&&!t.aborted){this.fetchBlocks(null);for(const c of a){const C=this.blockRequests.get(c);if(!C)throw new Error(`Block ${c} is not in the block requests`);s.push(C)}await Promise.allSettled(s)}if(t&&t.aborted)throw new pa("Request was aborted");const g=r.map(c=>this.blockCache.get(c)),I=g.filter(c=>!c);if(I.length)throw new IAA(I,"Request failed");const l=new Map(aAA(r,g));return this.readSliceData(A,l)}fetchBlocks(A){if(this.blockIdsToFetch.size>0){const t=this.groupBlocks(this.blockIdsToFetch),i=this.source.fetch(t,A);for(let n=0;n{try{const s=(await i)[n],a=o*this.blockSize,g=a-s.offset,I=Math.min(g+this.blockSize,s.data.byteLength),l=s.data.slice(g,I),c=new lAA(a,l.byteLength,l,o);this.blockCache.set(o,c),this.abortedBlockIds.delete(o)}catch(s){if(s.name==="AbortError")s.signal=A,this.blockCache.delete(o),this.abortedBlockIds.add(o);else throw s}finally{this.blockRequests.delete(o)}})())}this.blockIdsToFetch.clear()}}groupBlocks(A){const t=Array.from(A).sort((o,s)=>o-s);if(t.length===0)return[];let i=[],n=null;const r=[];for(const o of t)n===null||n+1===o?(i.push(o),n=o):(r.push(new bR(i[0]*this.blockSize,i.length*this.blockSize,i)),i=[o],n=o);return r.push(new bR(i[0]*this.blockSize,i.length*this.blockSize,i)),r}readSliceData(A,t){return A.map(i=>{let n=i.offset+i.length;this.fileSize!==null&&(n=Math.min(this.fileSize,n));const r=Math.floor(i.offset/this.blockSize),o=Math.floor(n/this.blockSize),s=new ArrayBuffer(i.length),a=new Uint8Array(s);for(let g=r;g<=o;++g){const I=t.get(g),l=I.offset-i.offset,c=I.top-n;let C=0,B=0,u;l<0?C=-l:l>0&&(B=l),c<0?u=I.length-C:u=n-I.offset-C;const E=new Uint8Array(I.data,C,u);a.set(E,B)}return s})}}class Ry{get ok(){return this.status>=200&&this.status<=299}get status(){throw new Error("not implemented")}getHeader(A){throw new Error("not implemented")}async getData(){throw new Error("not implemented")}}class xy{constructor(A){this.url=A}async request({headers:A,credentials:t,signal:i}={}){throw new Error("request is not implemented")}}class CAA extends Ry{constructor(A){super(),this.response=A}get status(){return this.response.status}getHeader(A){return this.response.headers.get(A)}async getData(){return this.response.arrayBuffer?await this.response.arrayBuffer():(await this.response.buffer()).buffer}}class BAA extends xy{constructor(A,t){super(A),this.credentials=t}async request({headers:A,credentials:t,signal:i}={}){const n=await fetch(this.url,{headers:A,credentials:t,signal:i});return new CAA(n)}}class EAA extends Ry{constructor(A,t){super(),this.xhr=A,this.data=t}get status(){return this.xhr.status}getHeader(A){return this.xhr.getResponseHeader(A)}async getData(){return this.data}}class uAA extends xy{constructRequest(A,t){return new Promise((i,n)=>{const r=new XMLHttpRequest;r.open("GET",this.url),r.responseType="arraybuffer";for(const[o,s]of Object.entries(A))r.setRequestHeader(o,s);r.onload=()=>{const o=r.response;i(new EAA(r,o))},r.onerror=n,r.onabort=()=>n(new pa("Request aborted")),r.send(),t&&(t.aborted&&r.abort(),t.addEventListener("abort",()=>r.abort()))})}async request({headers:A,signal:t}={}){return await this.constructRequest(A,t)}}class hAA extends Ry{constructor(A,t){super(),this.response=A,this.dataPromise=t}get status(){return this.response.statusCode}getHeader(A){return this.response.headers[A]}async getData(){return await this.dataPromise}}class fAA extends xy{constructor(A){super(A),this.parsedUrl=ia.parse(this.url),this.httpApi=(this.parsedUrl.protocol==="http:",ia)}constructRequest(A,t){return new Promise((i,n)=>{const r=this.httpApi.get({...this.parsedUrl,headers:A},o=>{const s=new Promise(a=>{const g=[];o.on("data",I=>{g.push(I)}),o.on("end",()=>{const I=Buffer.concat(g).buffer;a(I)}),o.on("error",n)});i(new hAA(o,s))});r.on("error",n),t&&(t.aborted&&r.destroy(new pa("Request aborted")),t.addEventListener("abort",()=>r.destroy(new pa("Request aborted"))))})}async request({headers:A,signal:t}={}){return await this.constructRequest(A,t)}}class Fy extends au{constructor(A,t,i,n){super(),this.client=A,this.headers=t,this.maxRanges=i,this.allowFullFile=n,this._fileSize=null}async fetch(A,t){return this.maxRanges>=A.length?this.fetchSlices(A,t):(this.maxRanges>0&&A.length>1,Promise.all(A.map(i=>this.fetchSlice(i,t))))}async fetchSlices(A,t){const i=await this.client.request({headers:{...this.headers,Range:`bytes=${A.map(({offset:n,length:r})=>`${n}-${n+r}`).join(",")}`},signal:t});if(i.ok)if(i.status===206){const{type:n,params:r}=nAA(i.getHeader("content-type"));if(n==="multipart/byteranges"){const l=rAA(await i.getData(),r.boundary);return this._fileSize=l[0].fileSize||null,l}const o=await i.getData(),{start:s,end:a,total:g}=Gd(i.getHeader("content-range"));this._fileSize=g||null;const I=[{data:o,offset:s,length:a-s}];if(A.length>1){const l=await Promise.all(A.slice(1).map(c=>this.fetchSlice(c,t)));return I.concat(l)}return I}else{if(!this.allowFullFile)throw new Error("Server responded with full file");const n=await i.getData();return this._fileSize=n.byteLength,[{data:n,offset:0,length:n.byteLength}]}else throw new Error("Error fetching data.")}async fetchSlice(A,t){const{offset:i,length:n}=A,r=await this.client.request({headers:{...this.headers,Range:`bytes=${i}-${i+n}`},signal:t});if(r.ok)if(r.status===206){const o=await r.getData(),{total:s}=Gd(r.getHeader("content-range"));return this._fileSize=s||null,{data:o,offset:i,length:n}}else{if(!this.allowFullFile)throw new Error("Server responded with full file");const o=await r.getData();return this._fileSize=o.byteLength,{data:o,offset:0,length:o.byteLength}}else throw new Error("Error fetching data.")}get fileSize(){return this._fileSize}}function Ny(e,{blockSize:A,cacheSize:t}){return A===null?e:new cAA(e,{blockSize:A,cacheSize:t})}function QAA(e,{headers:A={},credentials:t,maxRanges:i=0,allowFullFile:n=!1,...r}={}){const o=new BAA(e,t),s=new Fy(o,A,i,n);return Ny(s,r)}function dAA(e,{headers:A={},maxRanges:t=0,allowFullFile:i=!1,...n}={}){const r=new uAA(e),o=new Fy(r,A,t,i);return Ny(o,n)}function pAA(e,{headers:A={},maxRanges:t=0,allowFullFile:i=!1,...n}={}){const r=new fAA(e),o=new Fy(r,A,t,i);return Ny(o,n)}function yAA(e,{forceXHR:A=!1,...t}={}){return typeof fetch=="function"&&!A?QAA(e,t):typeof XMLHttpRequest!="undefined"?dAA(e,t):pAA(e,t)}class mAA extends au{constructor(A){super(),this.file=A}async fetchSlice(A,t){return new Promise((i,n)=>{const r=this.file.slice(A.offset,A.offset+A.length),o=new FileReader;o.onload=s=>i(s.target.result),o.onerror=n,o.onabort=n,o.readAsArrayBuffer(r),t&&t.addEventListener("abort",()=>o.abort())})}}function wAA(e){return new mAA(e)}function vAA(e){return new Promise((A,t)=>{ia.close(e,i=>{i?t(i):A()})})}function SAA(e,A,t=void 0){return new Promise((i,n)=>{ia.open(e,A,t,(r,o)=>{r?n(r):i(o)})})}function DAA(...e){return new Promise((A,t)=>{ia.read(...e,(i,n,r)=>{i?t(i):A({bytesRead:n,buffer:r})})})}class RAA extends au{constructor(A){super(),this.path=A,this.openRequest=SAA(A,"r")}async fetchSlice(A){const t=await this.openRequest,{buffer:i}=await DAA(t,Buffer.alloc(A.length),0,A.length,A.offset);return i.buffer}async close(){const A=await this.openRequest;await vAA(A)}}function xAA(e){return new RAA(e)}function FAA(e,A){let t=e.length-A,i=0;do{for(let n=A;n>0;n--)e[i+A]+=e[i],i++;t-=A}while(t>0)}function NAA(e,A,t){let i=0,n=e.length;const r=n/t;for(;n>A;){for(let s=A;s>0;--s)e[i+A]+=e[i],++i;n-=A}const o=e.slice();for(let s=0;s=e.byteLength);++a){let g;if(A===2){switch(n[0]){case 8:g=new Uint8Array(e,a*s*t*o,s*t*o);break;case 16:g=new Uint16Array(e,a*s*t*o,s*t*o/2);break;case 32:g=new Uint32Array(e,a*s*t*o,s*t*o/4);break;default:throw new Error(`Predictor 2 not allowed with ${n[0]} bits per sample.`)}FAA(g,s)}else A===3&&(g=new Uint8Array(e,a*s*t*o,s*t*o),NAA(g,s,o))}return e}class bAA{async decode(A,t){const i=await this.decodeBlock(t),n=A.Predictor||1;if(n!==1){const r=!A.StripOffsets,o=r?A.TileWidth:A.ImageWidth,s=r?A.TileLength:A.RowsPerStrip||A.ImageLength;return LAA(i,n,o,s,A.BitsPerSample,A.PlanarConfiguration)}return i}}function _d(e){switch(e){case jA.BYTE:case jA.ASCII:case jA.SBYTE:case jA.UNDEFINED:return 1;case jA.SHORT:case jA.SSHORT:return 2;case jA.LONG:case jA.SLONG:case jA.FLOAT:case jA.IFD:return 4;case jA.RATIONAL:case jA.SRATIONAL:case jA.DOUBLE:case jA.LONG8:case jA.SLONG8:case jA.IFD8:return 8;default:throw new RangeError(`Invalid field type: ${e}`)}}function GAA(e){const A=e.GeoKeyDirectory;if(!A)return null;const t={};for(let i=4;i<=A[3]*4;i+=4){const n=L$[A[i]],r=A[i+1]?QI[A[i+1]]:null,o=A[i+2],s=A[i+3];let a=null;if(!r)a=s;else{if(a=e[r],typeof a=="undefined"||a===null)throw new Error(`Could not get value of geoKey '${n}'.`);typeof a=="string"?a=a.substring(s,s+o-1):a.subarray&&(a=a.subarray(s,s+o),o===1&&(a=a[0]))}t[n]=a}return t}function ys(e,A,t,i){let n=null,r=null;const o=_d(A);switch(A){case jA.BYTE:case jA.ASCII:case jA.UNDEFINED:n=new Uint8Array(t),r=e.readUint8;break;case jA.SBYTE:n=new Int8Array(t),r=e.readInt8;break;case jA.SHORT:n=new Uint16Array(t),r=e.readUint16;break;case jA.SSHORT:n=new Int16Array(t),r=e.readInt16;break;case jA.LONG:case jA.IFD:n=new Uint32Array(t),r=e.readUint32;break;case jA.SLONG:n=new Int32Array(t),r=e.readInt32;break;case jA.LONG8:case jA.IFD8:n=new Array(t),r=e.readUint64;break;case jA.SLONG8:n=new Array(t),r=e.readInt64;break;case jA.RATIONAL:n=new Uint32Array(t*2),r=e.readUint32;break;case jA.SRATIONAL:n=new Int32Array(t*2),r=e.readInt32;break;case jA.FLOAT:n=new Float32Array(t),r=e.readFloat32;break;case jA.DOUBLE:n=new Float64Array(t),r=e.readFloat64;break;default:throw new RangeError(`Invalid field type: ${A}`)}if(A===jA.RATIONAL||A===jA.SRATIONAL)for(let s=0;sB.getWidth()-u.getWidth());for(let B=0;BE||o&&o>h)break}}let c=t;if(s){const[C,B]=a.getOrigin(),[u,E]=g.getResolution(a);c=[Math.round((s[0]-C)/u),Math.round((s[1]-B)/E),Math.round((s[2]-C)/u),Math.round((s[3]-B)/E)],c=[Math.min(c[0],c[2]),Math.min(c[1],c[3]),Math.max(c[0],c[2]),Math.max(c[1],c[3])]}return g.readRasters({...A,window:c})}}class Vl extends MAA{constructor(A,t,i,n,r={}){super(),this.source=A,this.littleEndian=t,this.bigTiff=i,this.firstIFDOffset=n,this.cache=r.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(A,t){const i=this.bigTiff?4048:1024;return new tAA((await this.source.fetch([{offset:A,length:typeof t!="undefined"?t:i}]))[0],A,this.littleEndian,this.bigTiff)}async parseFileDirectoryAt(A){const t=this.bigTiff?20:12,i=this.bigTiff?8:2;let n=await this.getSlice(A);const r=this.bigTiff?n.readUint64(A):n.readUint16(A),o=r*t+(this.bigTiff?16:6);n.covers(A,o)||(n=await this.getSlice(A,o));const s={};let a=A+(this.bigTiff?8:2);for(let l=0;l{const t=await this.ifdRequests[A-1];if(t.nextIFDByteOffset===0)throw new zc(A);return this.parseFileDirectoryAt(t.nextIFDByteOffset)})(),this.ifdRequests[A]}async getImage(A=0){const t=await this.requestIFD(A);return new MG(t.fileDirectory,t.geoKeyDirectory,this.dataView,this.littleEndian,this.cache,this.source)}async getImageCount(){let A=0,t=!0;for(;t;)try{await this.requestIFD(A),++A}catch(i){if(i instanceof zc)t=!1;else throw i}return A}async getGhostValues(){const A=this.bigTiff?16:8;if(this.ghostValues)return this.ghostValues;const t="GDAL_STRUCTURAL_METADATA_SIZE=",i=t.length+100;let n=await this.getSlice(A,i);if(t===ys(n,jA.ASCII,t.length,A)){const o=ys(n,jA.ASCII,i,A).split(` -`)[0],s=Number(o.split("=")[1].split(" ")[0])+o.length;s>i&&(n=await this.getSlice(A,s));const a=ys(n,jA.ASCII,s,A);this.ghostValues={},a.split(` -`).filter(g=>g.length>0).map(g=>g.split("=")).forEach(([g,I])=>{this.ghostValues[g]=I})}return this.ghostValues}static async fromSource(A,t,i){const n=(await A.fetch([{offset:0,length:1024}],i))[0],r=new eAA(n),o=r.getUint16(0,0);let s;if(o===18761)s=!0;else if(o===19789)s=!1;else throw new TypeError("Invalid byte order value.");const a=r.getUint16(2,s);let g;if(a===42)g=!1;else if(a===43){if(g=!0,r.getUint16(4,s)!==8)throw new Error("Unsupported offset byte-size.")}else throw new TypeError("Invalid magic number.");const I=g?r.getUint64(8,s):r.getUint32(4,s);return new Vl(A,s,g,I,t)}close(){return typeof this.source.close=="function"?this.source.close():!1}}async function gu(e,A={},t){return Vl.fromSource(yAA(e,A),t)}async function TG(e,A){return Vl.fromSource(xAA(e),A)}async function Iu(e,A){return Vl.fromSource(wAA(e),A)}const kAA="__viv",UG=`${kAA}-offsets`;function TAA(e){UAA(e,UG)||console.warn("GeoTIFF source is missing offsets proxy.")}function UAA(e,A){return e[A]}function PAA(e,A){const t=(i,n)=>n==="getImage"?r=>{if(!(r in i.ifdRequests)&&r in A){const o=A[r];i.ifdRequests[r]=i.parseFileDirectoryAt(o)}return i.getImage(r)}:n===UG?!0:Reflect.get(i,n);return new Proxy(e,{get:t})}let xi,jc=null;function GR(){return jc!==null&&jc.buffer===xi.memory.buffer||(jc=new Uint8Array(xi.memory.buffer)),jc}let _R=0,Xc=null;function MR(){return Xc!==null&&Xc.buffer===xi.memory.buffer||(Xc=new Int32Array(xi.memory.buffer)),Xc}async function Ly(e){e===void 0&&(e="".replace(/\.js$/,"_bg.wasm")),(typeof e=="string"||typeof Request=="function"&&e instanceof Request||typeof URL=="function"&&e instanceof URL)&&(e=fetch(e));const{instance:A,module:t}=await async function(i,n){if(typeof Response=="function"&&i instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(i,n)}catch(o){if(i.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 r=await i.arrayBuffer();return await WebAssembly.instantiate(r,n)}{const r=await WebAssembly.instantiate(i,n);return r instanceof WebAssembly.Instance?{instance:r,module:i}:r}}(await e,{});return xi=A.exports,Ly.__wbindgen_wasm_module=t,xi}var HAA=Object.freeze({__proto__:null,decompress:function(e,A){try{const g=xi.__wbindgen_add_to_stack_pointer(-16);var t=function(I,l){const c=l(1*I.length);return GR().set(I,c/1),_R=I.length,c}(e,xi.__wbindgen_malloc),i=_R;xi.decompress(g,t,i,A);var n=MR()[g/4+0],r=MR()[g/4+1],o=(s=n,a=r,GR().subarray(s/1,s/1+a)).slice();return xi.__wbindgen_free(n,1*r),o}finally{xi.__wbindgen_add_to_stack_pointer(16)}var s,a},default:Ly});const qAA=[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 Zc(e){return qAA[e-43]}const JAA=function(e){let A,t=e.endsWith("==")?2:e.endsWith("=")?1:0,i=e.length,n=new Uint8Array(i/4*3);for(let r=0,o=0;r>16,n[o+1]=A>>8&255,n[o+2]=255&A;return n.subarray(0,n.length-t)}("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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 Bf;async function OAA(e,A){Bf||(Bf=await(async()=>(await Ly(JAA),HAA))());const t=Bf.decompress(e,A);if(t.length===0)throw Error("Failed to decode with LZW decoder.");return t}class YAA extends bAA{constructor(A){super();const t=A.TileWidth||A.ImageWidth,i=A.TileLength||A.ImageLength,n=A.BitsPerSample[0]/8;this.maxUncompressedSize=t*i*n}async decodeBlock(A){const t=new Uint8Array(A);return(await OAA(t,this.maxUncompressedSize)).buffer}}function Rg(e,A,t,i,n){PG(e,A,t||0,i||e.length-1,n||KAA)}function PG(e,A,t,i,n){for(;i>t;){if(i-t>600){var r=i-t+1,o=A-t+1,s=Math.log(r),a=.5*Math.exp(2*s/3),g=.5*Math.sqrt(s*a*(r-a)/r)*(o-r/2<0?-1:1),I=Math.max(t,Math.floor(A-o*a/r+g)),l=Math.min(i,Math.floor(A+(r-o)*a/r+g));PG(e,A,I,l,n)}var c=e[A],C=t,B=i;for(xg(e,t,A),n(e[i],c)>0&&xg(e,t,i);C0;)B--}n(e[t],c)===0?xg(e,t,B):(B++,xg(e,B,i)),B<=A&&(t=B+1),A<=B&&(i=B-1)}}function xg(e,A,t){var i=e[A];e[A]=e[t],e[t]=i}function KAA(e,A){return eA?1:0}const Di={uint8:"Uint8",uint16:"Uint16",uint32:"Uint32",float:"Float32",double:"Float64",int8:"Int8",int16:"Int16",int32:"Int32"};function OC(e){let A=e.length,t=1/0,i=-1/0,n=0;for(;A--;)e[A]i&&(i=e[A]),n+=e[A];const r=n/e.length;A=e.length;let o=0;for(;A--;)o+=(e[A]-r)**2;const s=(o/e.length)**.5,a=Math.floor(e.length/2),g=Math.floor(e.length/4),I=3*Math.floor(e.length/4);Rg(e,a);const l=e[a];Rg(e,g,0,a);const c=e[g];Rg(e,I,a,e.length-1);const C=e[I],B=e.filter(Q=>Q>0),u=5e-4,E=Math.floor(B.length*(1-u)),h=Math.floor(B.length*u);Rg(B,E),Rg(B,h,0,E);const f=[B[h]||0,B[E]||0];return{mean:r,sd:s,q1:c,q3:C,median:l,domain:[t,i],contrastLimits:f}}function kR(e){return Array.isArray(e)?e:[e]}function VAA(e){if(!Number.isInteger(e))throw Error("Not an integer.");const A=new ArrayBuffer(4);new DataView(A).setInt32(0,e,!1);const i=new Uint8Array(A);return Array.from(i)}function Kr(e){const A=e[e.length-1];return A===3||A===4}function VB(e){return e.toLowerCase().split("").reverse()}function HG(e){const A=new Map(e.map((t,i)=>[t,i]));if(A.size!==e.length)throw Error("Labels must be unique, found duplicated label.");return t=>{const i=A.get(t);if(i===void 0)throw Error("Invalid dimension.");return i}}function io(e){const A=Kr(e.shape),[t,i]=e.shape.slice(A?-3:-2);return{height:t,width:i}}function qG(e){return 2**Math.floor(Math.log2(e))}const by="__vivSignalAborted";function JG(e){const A=e.getTileWidth(),t=e.getTileHeight(),i=Math.min(A,t);return qG(i)}function WAA({Pixels:e}){const A=VB(e.DimensionOrder),t=HG(A),i=Array(A.length).fill(0);i[t("t")]=e.SizeT,i[t("c")]=e.SizeC,i[t("z")]=e.SizeZ,e.Interleaved&&(A.push("_c"),i.push(3));const n=o=>{const s=[...i];return s[t("x")]=e.SizeX>>o,s[t("y")]=e.SizeY>>o,s};if(!(e.Type in Di))throw Error(`Pixel type ${e.Type} not supported.`);const r=Di[e.Type];if(e.PhysicalSizeX&&e.PhysicalSizeY){const o={x:{size:e.PhysicalSizeX,unit:e.PhysicalSizeXUnit},y:{size:e.PhysicalSizeY,unit:e.PhysicalSizeYUnit}};return e.PhysicalSizeZ&&(o.z={size:e.PhysicalSizeZ,unit:e.PhysicalSizeZUnit}),{labels:A,getShape:n,physicalSizes:o,dtype:r}}return{labels:A,getShape:n,dtype:r}}function zAA(e){const t=e.fileDirectory.SampleFormat?e.fileDirectory.SampleFormat[0]:1,i=e.fileDirectory.BitsPerSample[0];switch(t){case 1:if(i<=8)return Di.uint8;if(i<=16)return Di.uint16;if(i<=32)return Di.uint32;break;case 2:if(i<=8)return Di.int8;if(i<=16)return Di.int16;if(i<=32)return Di.int32;break;case 3:switch(i){case 16:return Di.float;case 32:return Di.float;case 64:return Di.double}break}throw Error("Unsupported data format/bitsPerSample")}function OG(e){let[A,t,i]=[0,0,0];for(const r of e)A=Math.max(A,r.selection.c),t=Math.max(t,r.selection.z),i=Math.max(i,r.selection.t);const n=e[0].tiff;return{x:n.getWidth(),y:n.getHeight(),z:t+1,c:A+1,t:i+1}}function jAA(e,A){const t=Array(A).fill(0);for(const i of e){const n=i.selection.c,r=i.tiff.getSamplesPerPixel(),o=t[n];if(o&&o!=r)throw Error("Channel samples per pixel mismatch");t[n]=r}return t}function XAA(e,A){const t=A[0].tiff,i=OG(A),n=[];for(const s of e.toLowerCase())n.unshift(i[s]);const r=VB(e),o=zAA(t);return{shape:n,labels:r,dtype:o}}function ZAA(e,A,t,i,n,r,o){const s=[];for(let a=0;a({"Acquisition Date":s,"Dimensions (XY)":`${g.x} x ${g.y}`,PixelsType:n,"Z-sections/Timepoints":`${g.z} x ${g.t}`,Channels:g.c})}}function TR(e){const A={},t=e.split("/").pop(),i=t==null?void 0:t.split(".");return i&&(A.name=i.slice(0,-1).join("."),[,A.extension]=i),A}var YG={},KG={},un={};(function(e){const A=":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",t=A+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",i="["+A+"]["+t+"]*",n=new RegExp("^"+i+"$"),r=function(s,a){const g=[];let I=a.exec(s);for(;I;){const l=[];l.startIndex=a.lastIndex-I[0].length;const c=I.length;for(let C=0;C1){i[o]=[];for(let s in e.child[o])e.child[o].hasOwnProperty(s)&&i[o].push(Md(e.child[o][s],A,o))}else{const s=Md(e.child[o][0],A,o),a=A.arrayMode===!0&&typeof s=="object"||ao.isTagNameInArrayMode(o,A.arrayMode,t);i[o]=a?[s]:s}}return i};KG.convertToJson=Md;var Ho={},AeA=function(e,A,t){this.tagname=e,this.parent=A,this.child={},this.attrsMap={},this.val=t,this.addChild=function(i){Array.isArray(this.child[i.tagname])?this.child[i.tagname].push(i):this.child[i.tagname]=[i]}};const eeA=/^[-+]?0x[a-fA-F0-9]+$/,teA=/^([\-\+])?(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 ieA={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function neA(e,A={}){if(A=Object.assign({},ieA,A),!e||typeof e!="string")return e;let t=e.trim();if(A.skipLike!==void 0&&A.skipLike.test(t))return e;if(A.hex&&eeA.test(t))return Number.parseInt(t,16);{const i=teA.exec(t);if(i){const n=i[1],r=i[2];let o=reA(i[3]);const s=i[4]||i[6];if(!A.leadingZeros&&r.length>0&&n&&t[2]!==".")return e;if(!A.leadingZeros&&r.length>0&&!n&&t[1]!==".")return e;{const a=Number(t),g=""+a;return g.search(/[eE]/)!==-1||s?A.eNotation?a:e:t.indexOf(".")!==-1?g==="0"&&o===""||g===o||n&&g==="-"+o?a:e:r?o===g||n+o===g?a:e:t===g||t===n+g?a:e}}else return e}}function reA(e){return e&&e.indexOf(".")!==-1&&(e=e.replace(/0+$/,""),e==="."?e="0":e[0]==="."?e="0"+e:e[e.length-1]==="."&&(e=e.substr(0,e.length-1))),e}var oeA=neA;const yo=un,seA=un.buildOptions,$c=AeA,aeA=oeA;"<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)".replace(/NAME/g,yo.nameRegexp);!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt);!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const VG={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(e,A){return e},attrValueProcessor:function(e,A){return e},stopNodes:[],alwaysCreateTextNode:!1};Ho.defaultOptions=VG;const WG=["attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","ignoreNameSpace","allowBooleanAttributes","parseNodeValue","parseAttributeValue","arrayMode","trimValues","cdataTagName","cdataPositionChar","tagValueProcessor","attrValueProcessor","parseTrueNumberOnly","numParseOptions","stopNodes","alwaysCreateTextNode"];Ho.props=WG;function AC(e,A,t){return A&&(t.trimValues&&(A=A.trim()),A=t.tagValueProcessor(A,e),A=zG(A,t.parseNodeValue,t.numParseOptions)),A}function geA(e,A){if(A.ignoreNameSpace){const t=e.split(":"),i=e.charAt(0)==="/"?"/":"";if(t[0]==="xmlns")return"";t.length===2&&(e=i+t[1])}return e}function zG(e,A,t){if(A&&typeof e=="string"){const i=e.trim();return i==="true"?!0:i==="false"?!1:aeA(e,t)}else return yo.isExist(e)?e:""}const IeA=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])(.*?)\\3)?`,"g");function UR(e,A){if(!A.ignoreAttributes&&typeof e=="string"){e=e.replace(/\r?\n/g," ");const t=yo.getAllMatches(e,IeA),i=t.length,n={};for(let r=0;r",r,"Closing Tag is not closed.");let a=e.substring(r+2,s).trim();if(A.ignoreNameSpace){const g=a.indexOf(":");g!==-1&&(a=a.substr(g+1))}i&&(i.val?i.val=yo.getValue(i.val)+""+AC(a,n,A):i.val=AC(a,n,A)),A.stopNodes.length&&A.stopNodes.includes(i.tagname)&&(i.child=[],i.attrsMap==null&&(i.attrsMap={}),i.val=e.substr(i.startIndex+1,r-i.startIndex-1)),i=i.parent,n="",r=s}else if(e[r+1]==="?")r=Fg(e,"?>",r,"Pi Tag is not closed.");else if(e.substr(r+1,3)==="!--")r=Fg(e,"-->",r,"Comment is not closed.");else if(e.substr(r+1,2)==="!D"){const s=Fg(e,">",r,"DOCTYPE is not closed.");e.substring(r,s).indexOf("[")>=0?r=e.indexOf("]>",r)+1:r=s}else if(e.substr(r+1,2)==="!["){const s=Fg(e,"]]>",r,"CDATA is not closed.")-2,a=e.substring(r+9,s);if(n&&(i.val=yo.getValue(i.val)+""+AC(i.tagname,n,A),n=""),A.cdataTagName){const g=new $c(A.cdataTagName,i,a);i.addChild(g),i.val=yo.getValue(i.val)+A.cdataPositionChar,a&&(g.val=a)}else i.val=(i.val||"")+(a||"");r=s+2}else{const s=ceA(e,r+1);let a=s.data;const g=s.index,I=a.indexOf(" ");let l=a,c=!0;if(I!==-1&&(l=a.substr(0,I).replace(/\s\s*$/,""),a=a.substr(I+1)),A.ignoreNameSpace){const C=l.indexOf(":");C!==-1&&(l=l.substr(C+1),c=l!==s.data.substr(C+1))}if(i&&n&&i.tagname!=="!xml"&&(i.val=yo.getValue(i.val)+""+AC(i.tagname,n,A)),a.length>0&&a.lastIndexOf("/")===a.length-1){l[l.length-1]==="/"?(l=l.substr(0,l.length-1),a=l):a=a.substr(0,a.length-1);const C=new $c(l,i,"");l!==a&&(C.attrsMap=UR(a,A)),i.addChild(C)}else{const C=new $c(l,i);A.stopNodes.length&&A.stopNodes.includes(C.tagname)&&(C.startIndex=g),l!==a&&c&&(C.attrsMap=UR(a,A)),i.addChild(C),i=C}n="",r=g}else n+=e[r];return t};function ceA(e,A){let t,i="";for(let n=A;n")return{data:i,index:n};r===" "&&(r=" ")}i+=r}}function Fg(e,A,t,i){const n=e.indexOf(A,t);if(n===-1)throw new Error(i);return n+A.length-1}Ho.getTraversalObj=leA;var jG={};const lu=un,CeA={allowBooleanAttributes:!1},BeA=["allowBooleanAttributes"];jG.validate=function(e,A){A=lu.buildOptions(A,CeA,BeA);const t=[];let i=!1,n=!1;e[0]==="\uFEFF"&&(e=e.substr(1));for(let r=0;r"&&e[r]!==" "&&e[r]!==" "&&e[r]!==` -`&&e[r]!=="\r";r++)a+=e[r];if(a=a.trim(),a[a.length-1]==="/"&&(a=a.substring(0,a.length-1),r--),!yeA(a)){let l;return a.trim().length===0?l="Invalid space after '<'.":l="Tag '"+a+"' is an invalid name.",ot("InvalidTag",l,Ai(e,r))}const g=heA(e,r);if(g===!1)return ot("InvalidAttr","Attributes for '"+a+"' have open quote.",Ai(e,r));let I=g.value;if(r=g.index,I[I.length-1]==="/"){const l=r-I.length;I=I.substring(0,I.length-1);const c=qR(I,A);if(c===!0)i=!0;else return ot(c.err.code,c.err.msg,Ai(e,l+c.err.line))}else if(s)if(g.tagClosed){if(I.trim().length>0)return ot("InvalidTag","Closing tag '"+a+"' can't have attributes or invalid starting.",Ai(e,o));{const l=t.pop();if(a!==l.tagName){let c=Ai(e,l.tagStartPos);return ot("InvalidTag","Expected closing tag '"+l.tagName+"' (opened in line "+c.line+", col "+c.col+") instead of closing tag '"+a+"'.",Ai(e,o))}t.length==0&&(n=!0)}}else return ot("InvalidTag","Closing tag '"+a+"' doesn't have proper closing.",Ai(e,r));else{const l=qR(I,A);if(l!==!0)return ot(l.err.code,l.err.msg,Ai(e,r-I.length+l.err.line));if(n===!0)return ot("InvalidXml","Multiple possible root nodes found.",Ai(e,r));t.push({tagName:a,tagStartPos:o}),i=!0}for(r++;r0)return ot("InvalidXml","Invalid '"+JSON.stringify(t.map(r=>r.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1})}else return ot("InvalidXml","Start tag expected.",1);return!0};function PR(e,A){const t=A;for(;A5&&i==="xml")return ot("InvalidXml","XML declaration allowed only at the start of the document.",Ai(e,A));if(e[A]=="?"&&e[A+1]==">"){A++;break}else continue}return A}function HR(e,A){if(e.length>A+5&&e[A+1]==="-"&&e[A+2]==="-"){for(A+=3;A"){A+=2;break}}else if(e.length>A+8&&e[A+1]==="D"&&e[A+2]==="O"&&e[A+3]==="C"&&e[A+4]==="T"&&e[A+5]==="Y"&&e[A+6]==="P"&&e[A+7]==="E"){let t=1;for(A+=8;A"&&(t--,t===0))break}else if(e.length>A+9&&e[A+1]==="["&&e[A+2]==="C"&&e[A+3]==="D"&&e[A+4]==="A"&&e[A+5]==="T"&&e[A+6]==="A"&&e[A+7]==="["){for(A+=8;A"){A+=2;break}}return A}const EeA='"',ueA="'";function heA(e,A){let t="",i="",n=!1;for(;A"&&i===""){n=!0;break}t+=e[A]}return i!==""?!1:{value:t,index:A,tagClosed:n}}const feA=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function qR(e,A){const t=lu.getAllMatches(e,feA),i={};for(let n=0;n1){i+='"'+o+'" : [ ';for(let s in e.child[o])i+=kd(e.child[o][s],A)+" , ";i=i.substr(0,i.length-1)+" ] "}else i+='"'+o+'" : '+kd(e.child[o][0],A)+" ,"}return tC.merge(i,e.attrsMap),tC.isEmptyObject(i)?tC.isExist(e.val)?e.val:"":(tC.isExist(e.val)&&(typeof e.val=="string"&&(e.val===""||e.val===A.cdataPositionChar)||(i+='"'+A.textNodeName+'" : '+xeA(e.val))),i[i.length-1]===","&&(i=i.substr(0,i.length-2)),i+"}")};function xeA(e){return e===!0||e===!1||!isNaN(e)?e:'"'+e+'"'}ZG.convertToJsonString=ReA;const FeA=un.buildOptions,NeA={attributeNamePrefix:"@_",attrNodeName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataTagName:!1,cdataPositionChar:"\\c",format:!1,indentBy:" ",supressEmptyNode:!1,tagValueProcessor:function(e){return e},attrValueProcessor:function(e){return e}},LeA=["attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","cdataTagName","cdataPositionChar","format","indentBy","supressEmptyNode","tagValueProcessor","attrValueProcessor","rootNodeName"];function Gy(e){this.options=FeA(e,NeA,LeA),this.options.ignoreAttributes||this.options.attrNodeName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=UeA),this.options.cdataTagName?this.isCDATA=PeA:this.isCDATA=function(){return!1},this.replaceCDATAstr=GeA,this.replaceCDATAarr=_eA,this.processTextOrObjNode=beA,this.options.format?(this.indentate=TeA,this.tagEndChar=`> -`,this.newLine=` -`):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine=""),this.options.supressEmptyNode?(this.buildTextNode=keA,this.buildObjNode=MeA):(this.buildTextNode=VR,this.buildObjNode=KR),this.buildTextValNode=VR,this.buildObjectNode=KR}Gy.prototype.parse=function(e){return Array.isArray(e)&&this.options.rootNodeName&&this.options.rootNodeName.length>1&&(e={[this.options.rootNodeName]:e}),this.j2x(e,0).val};Gy.prototype.j2x=function(e,A){let t="",i="";for(let n in e)if(typeof e[n]!="undefined")if(e[n]===null)i+=this.indentate(A)+"<"+n+"/"+this.tagEndChar;else if(e[n]instanceof Date)i+=this.buildTextNode(e[n],n,"",A);else if(typeof e[n]!="object"){const r=this.isAttribute(n);r?t+=" "+r+'="'+this.options.attrValueProcessor(""+e[n])+'"':this.isCDATA(n)?e[this.options.textNodeName]?i+=this.replaceCDATAstr(e[this.options.textNodeName],e[n]):i+=this.replaceCDATAstr("",e[n]):n===this.options.textNodeName?e[this.options.cdataTagName]||(i+=this.options.tagValueProcessor(""+e[n])):i+=this.buildTextNode(e[n],n,"",A)}else if(Array.isArray(e[n]))if(this.isCDATA(n))i+=this.indentate(A),e[this.options.textNodeName]?i+=this.replaceCDATAarr(e[this.options.textNodeName],e[n]):i+=this.replaceCDATAarr("",e[n]);else{const r=e[n].length;for(let o=0;o");return e+this.newLine}function KR(e,A,t,i){return t&&e.indexOf("<")===-1?this.indentate(i)+"<"+A+t+">"+e+""+this.options.tagValueProcessor(e)+"YG.parse(e,qeA);function $G(e){const A=JeA(e);if(!A.OME)throw Error("Failed to parse OME-XML metadata.");return kR(A.OME.Image).map(t=>{const i=kR(t.Pixels.Channel).map(s=>"Color"in s.attr?{...s.attr,Color:VAA(s.attr.Color)}:{...s.attr}),{AquisitionDate:n="",Description:r=""}=t,o={...t.attr,AquisitionDate:n,Description:r,Pixels:{...t.Pixels.attr,Channels:i}};return{...o,format(){const{Pixels:s}=o,a=["X","Y","Z"].map(g=>{const I=s[`PhysicalSize${g}`],l=s[`PhysicalSize${g}Unit`];return I&&l?`${I} ${l}`:"-"}).join(" x ");return{"Acquisition Date":o.AquisitionDate,"Dimensions (XY)":`${s.SizeX} x ${s.SizeY}`,"Pixels Type":s.Type,"Pixels Size (XYZ)":a,"Z-sections/Timepoints":`${s.SizeZ} x ${s.SizeT}`,Channels:s.SizeC}}}})}class A_{constructor(A,t,i,n,r,o,s){this.dtype=t,this.tileSize=i,this.shape=n,this.labels=r,this.meta=o,this.pool=s,this._indexer=A}async getRaster({selection:A,signal:t}){const i=await this._indexer(A);return this._readRasters(i,{signal:t})}async getTile({x:A,y:t,selection:i,signal:n}){const{height:r,width:o}=this._getTileExtent(A,t),s=A*this.tileSize,a=t*this.tileSize,g=[s,a,s+o,a+r],I=await this._indexer(i);return this._readRasters(I,{window:g,width:o,height:r,signal:n})}async _readRasters(A,t){var o;const i=Kr(this.shape),n=await A.readRasters({interleave:i,...t,pool:this.pool});if((o=t==null?void 0:t.signal)!=null&&o.aborted)throw by;return{data:i?n:n[0],width:n.width,height:n.height}}_getTileExtent(A,t){const{height:i,width:n}=io(this);let r=this.tileSize,o=this.tileSize;const s=Math.floor(n/this.tileSize),a=Math.floor(i/this.tileSize);return A===s&&(o=n%this.tileSize),t===a&&(r=i%this.tileSize),{height:r,width:o}}onTileError(A){console.error(A)}}function OeA(e,A){const{SizeT:t,SizeC:i,SizeZ:n}=A[0].Pixels,r=e_(A,0);return(o,s)=>{const a=r(o),g=s*n*t*i;return e.getImage(a+g)}}function YeA(e,A,t=0){const i=e_(A,t),n=new Map;return async(r,o)=>{const s=i(r),a=await e.getImage(s);if(o===0)return a;const{SubIFDs:g}=a.fileDirectory;if(!g)throw Error("Indexing Error: OME-TIFF is missing SubIFDs.");const I=`${r.t}-${r.c}-${r.z}-${o}`;if(!n.has(I)){const c=g[o-1];n.set(I,e.parseFileDirectoryAt(c))}const l=await n.get(I);return new MG(l.fileDirectory,l.geoKeyDirectory,a.dataView,e.littleEndian,e.cache,e.source)}}function e_(e,A=0){const{SizeC:t,SizeZ:i,SizeT:n,DimensionOrder:r}=e[A].Pixels;let o=0;if(A>0)for(let s=0;so+s*i*t+a*i+g;case"XYZTC":return({t:s,c:a,z:g})=>o+a*i*n+s*i+g;case"XYCTZ":return({t:s,c:a,z:g})=>o+g*t*n+s*t+a;case"XYCZT":return({t:s,c:a,z:g})=>o+s*t*i+g*t+a;case"XYTCZ":return({t:s,c:a,z:g})=>o+g*n*t+a*n+s;case"XYTZC":return({t:s,c:a,z:g})=>o+a*n*i+g*n+s;default:throw new Error(`Invalid OME-XML DimensionOrder, got ${r}.`)}}function KeA(e){function A({c:i=0,t:n=0,z:r=0}){return`${i}-${n}-${r}`}const t=new Map(e.map(({selection:i,tiff:n})=>[A(i),n]));return async i=>{const n=A(i),r=t.get(n);if(!r)throw new Error(`No image available for selection ${n}`);return r}}function VeA(e,A,t,i){return t?YeA(e,A,i):OeA(e,A)}async function WeA(e,A){const t=await e.getImage(0),{ImageDescription:i,SubIFDs:n,PhotometricInterpretation:r}=t.fileDirectory,o=$G(i);let s=o,a;n?a=n.length+1:(a=o.length,s=[o[0]]);const g=(I,l,c)=>{const{labels:C,getShape:B,physicalSizes:u,dtype:E}=WAA(c),h=JG(t),f={photometricInterpretation:r,physicalSizes:u},Q=B(I),d=m=>l(m,I);return new A_(d,E,h,Q,C,f,A)};return s.map((I,l)=>{const c=VeA(e,o,n,l);return{data:Array.from({length:a}).map((B,u)=>g(u,c,I)),metadata:I}})}function zeA(e){const A=e[0].tiff.getWidth(),t=e[0].tiff.getHeight();for(const i of e)if(i.tiff.getWidth()!==A||i.tiff.getHeight()!==t)throw new Error("All images must have the same width and height")}async function jeA(e,A){for(let t=0;t<=Math.max(...e.map(i=>i.selection.t));t+=1)for(let i=0;i<=Math.max(...e.map(n=>n.selection.c));i+=1)for(let n=0;n<=Math.max(...e.map(r=>r.selection.z));n+=1)await A({t,c:i,z:n})}async function XeA(e,A,t,i){zeA(A);const n=A[0].tiff,{PhotometricInterpretation:r}=n.fileDirectory,o="XYZCT",s=JG(n),a={photometricInterpretation:r},g=KeA(A),{shape:I,labels:l,dtype:c}=XAA(o,A),C=$AA(e,A,t,o,c);return await jeA(A,g),{data:[new A_(g,c,s,I,l,a,i)],metadata:C}}Wn(5,()=>YAA);const WB="file://";async function WR(e,A={}){const{headers:t={},offsets:i,pool:n,images:r="first"}=A;let o;typeof e=="string"?e.startsWith(WB)?o=await TG(e.slice(WB.length)):o=await gu(e,{headers:t,cacheSize:1/0}):o=await Iu(e),i&&(o=PAA(o,i)),TAA(o);const s=await WeA(o,n);return r==="all"?s:s[0]}function zR(e,A,t){return t.length===1?e:e+`_${A.toString()}`}async function ZeA(e,A={}){var s;const{pool:t,headers:i={},name:n="MultiTiff"}=A,r=[],o=[];for(const a of e){const[g,I]=a,l=Array.isArray(g)?g:[g];if(typeof I=="string"){const c=TR(I),C=(s=c.extension)==null?void 0:s.toLowerCase();if(C==="tif"||C==="tiff"){const B=c.name;if(B){let u;I.startsWith(WB)?u=await TG(I.slice(WB.length)):u=await gu(I,{headers:i,cacheSize:1/0});for(let E=0;E0)return XeA(n,r,A.channelNames||o,t);throw new Error("Unable to load image from provided TiffFolder source.")}const Td=new Map;function _y(e,A){Td.set(e,A)}async function $eA(e){if(!Td.has(e.id))throw new Error(`Compression codec ${e.id} is not supported by Zarr.js yet.`);return(await Td.get(e.id)()).fromConfig(e)}function My(e){return new Proxy(e,{set(A,t,i,n){return A.setItem(t,i)},get(A,t,i){return A.getItem(t)},deleteProperty(A,t){return A.deleteItem(t)},has(A,t){return A.containsItem(t)}})}function AtA(e){return typeof e=="object"&&e!==null&&"__zarr__"in e}function hf(e){return AtA(e)&&e.__zarr__==="KeyError"}class Lr extends Error{constructor(A){super(`path ${A} contains an array`),this.__zarr__="ContainsArrayError",Object.setPrototypeOf(this,Lr.prototype)}}class Oa extends Error{constructor(A){super(`path ${A} contains a group`),this.__zarr__="ContainsGroupError",Object.setPrototypeOf(this,Oa.prototype)}}class cu extends Error{constructor(A){super(`group not found at path ${A}`),this.__zarr__="GroupNotFoundError",Object.setPrototypeOf(this,cu.prototype)}}class Mt extends Error{constructor(A){super(A),this.__zarr__="PermissionError",Object.setPrototypeOf(this,Mt.prototype)}}class Ya extends Error{constructor(A){super(`key ${A} not present`),this.__zarr__="KeyError",Object.setPrototypeOf(this,Ya.prototype)}}class ky extends RangeError{constructor(A,t){super(`too many indices for array; expected ${t.length}, got ${A.length}`),this.__zarr__="TooManyIndicesError",Object.setPrototypeOf(this,ky.prototype)}}class nl extends RangeError{constructor(A){super(A),this.__zarr__="BoundsCheckError",Object.setPrototypeOf(this,nl.prototype)}}class zB extends RangeError{constructor(A,t,i,n){super(`slice arguments slice(${A}, ${t}, ${i}) invalid: ${n}`),this.__zarr__="InvalidSliceError",Object.setPrototypeOf(this,zB.prototype)}}class Ty extends Error{constructor(){super("Negative step size is not supported when indexing."),this.__zarr__="NegativeStepError",Object.setPrototypeOf(this,Ty.prototype)}}class oi extends Error{constructor(A){super(A),this.__zarr__="ValueError",Object.setPrototypeOf(this,oi.prototype)}}class Uy extends Error{constructor(A){super(A),this.__zarr__="HTTPError",Object.setPrototypeOf(this,Uy.prototype)}}function qo(e,A=void 0,t=null){if(e===void 0)throw new zB(e,A,t,"The first argument must not be undefined");if(typeof e=="string"&&e!==":"||typeof A=="string"&&A!==":")throw new zB(e,A,t,'Arguments can only be integers, ":" or null');return A===void 0&&(A=e,e=null),{start:e===":"?null:e,stop:A===":"?null:A,step:t,_slice:!0}}function etA(e,A,t,i){if(e<0?(e+=i,e<0&&(e=t<0?-1:0)):e>=i&&(e=t<0?i-1:i),A<0?(A+=i,A<0&&(A=t<0?-1:0)):A>=i&&(A=t<0?i-1:i),t<0){if(AA.length)throw new ky(e,A)}function Jo(e,A){const t=[],i=[];for(let n=0;n1)throw new RangeError("an index can only have a single ellipsis ('...')");if(i===1){const n=t,r=e.length-(n+1),o=e.length-1;if(o>=A.length)e=e.filter(s=>s!=="...");else{const s=A.length-o;let a=e.slice(0,n).concat(new Array(s).fill(null));r>0&&(a=a.concat(e.slice(e.length-r))),e=a}}if(e.length=A||e<0)throw new nl(`index out of bounds for dimension with length ${A}`);return e}function ntA(e){return typeof e=="number"}function n_(e){if(!Array.isArray(e))return!1;for(const A of e)if(typeof A!="number")return!1;return!0}function Hy(e){return e!==null&&e._slice===!0}function rtA(e){return Hy(e)&&(e.step===null||e.step===1)}function otA(e){e=i_(e);for(let A=0;Ai()),t=A.map(i=>i.next());for(let i=0;;){if(t[i].done){if(A[i]=e[i](),t[i]=A[i].next(),++i>=A.length)return}else yield t.map(({value:n})=>n),i=0;t[i]=A[i].next()}}class jR{constructor(A,t){A=Vr(A,t.shape),this.dimIndexers=[];const i=t.shape;for(let n=0;n()=>i.iter()),t=stA(...A);for(const i of t){const n=[],r=[],o=[];for(const s of i)n.push(s.dimChunkIndex),r.push(s.dimChunkSelection),s.dimOutSelection!==null&&o.push(s.dimOutSelection);yield{chunkCoords:n,chunkSelection:r,outSelection:o}}}}class atA{constructor(A,t,i){A=Py(A,t),this.dimSelection=A,this.dimLength=t,this.dimChunkLength=i,this.numItems=1}*iter(){const A=Math.floor(this.dimSelection/this.dimChunkLength),t=A*this.dimChunkLength,i=this.dimSelection-t;yield{dimChunkIndex:A,dimChunkSelection:i,dimOutSelection:null}}}class XR{constructor(A,t,i){const[n,r,o]=t_(A,t);if(this.start=n,this.stop=r,this.step=o,this.step<1)throw new Ty;this.dimLength=t,this.dimChunkLength=i,this.numItems=Math.max(0,Math.ceil((this.stop-this.start)/this.step)),this.numChunks=Math.ceil(this.dimLength/this.dimChunkLength)}*iter(){const A=Math.floor(this.start/this.dimChunkLength),t=Math.ceil(this.stop/this.dimChunkLength);for(let i=A;i0&&(s+=this.step-C),g=Math.ceil((n-this.start)/this.step)}else s=this.start-n,g=0;this.stop>r?a=o:a=this.stop-n;const I=qo(s,a,this.step),l=Math.ceil((a-s)/this.step),c=qo(g,g+l);yield{dimChunkIndex:i,dimChunkSelection:I,dimOutSelection:c}}}}const Ka=typeof process!="undefined"&&process.versions&&process.versions.node;function ZR(){}function _i(e){if(e===null)return"";for(e instanceof String&&(e=e.valueOf()),e=e.replace(/\\/g,"/");e.length>0&&e[0]==="/";)e=e.slice(1);for(;e.length>0&&e[e.length-1]==="/";)e=e.slice(0,e.length-1);e=e.replace(/\/\/+/g,"/");const A=e.split("/");for(const t of A)if(t==="."||t==="..")throw Error("path containing '.' or '..' segment not allowed");return e}function qy(e){return typeof e=="number"&&(e=[e]),e.map(A=>Math.floor(A))}function gtA(e,A){if(e===null||e===!0)throw new Error("Chunk guessing is not supported yet");return e===!1?A:(typeof e=="number"&&(e=[e]),e.lengtht===-1||t===null?A[i]:Math.floor(t)))}function ItA(e){return e=e.toUpperCase(),e}function $R(e,A){if(e===null)return!0;Array.isArray(e)||(e=[e]);for(let t=0;t=0;n--)t[n]=i,i*=e[n];return t}function ff(e,A){const t=typeof e=="string"?new URL(e):e;t.pathname.endsWith("/")||(t.pathname+="/");const i=new URL(A,t);return i.search=t.search,i.href}function r_(e){const A=e.BYTES_PER_ELEMENT;if(A===1)return;if(Ka){const o=Buffer.from(e.buffer,e.byteOffset,e.length*A);A===2&&o.swap16(),A===4&&o.swap32(),A===8&&o.swap64();return}const t=new Uint8Array(e.buffer,e.byteOffset,e.length*A),i=A/2,n=A-1;let r;for(let o=0;os*a),r=t.map((s,a)=>a+1===i?1:t.slice(a+1).reduce((g,I)=>g*I,1)),o=Array(i).fill(0);for(let s=0;s0?e+"/":""}async function s_(e,A,t,i){if(A.length===0)return;const n=A.split("/");let r="";for(const o of n.slice(0,n.length-1))r+=o,await kn(e,r)?await Ud(e,r,i):await cn(e,r)||await Ud(e,r),r+="/"}async function Ud(e,A=null,t=!1){if(A=_i(A),t)throw Error("Group overwriting not implemented yet :(");if(await kn(e,A))throw new Lr(A);if(await cn(e,A))throw new Oa(A);const i={zarr_format:2},n=Wr(A)+Oy;await e.setItem(n,JSON.stringify(i))}async function dI(e,A=null,t=null,i=!1){A=_i(A),await s_(e,A,t,i),await Ud(e,A,i)}async function dtA(e,A,t,i,n,r,o,s,a,g,I,l){if(a)throw Error("Array overwriting not implemented yet :(");if(await kn(e,n))throw new Lr(n);if(await cn(e,n))throw new Oa(n);if(i=i,A=qy(A),t=gtA(t,A),s=ItA(s),o=o,I!==null&&I.length>0)throw Error("Filters are not supported yet");let c=o;typeof o=="number"&&(Number.isNaN(o)&&(c="NaN"),Number.POSITIVE_INFINITY===o&&(c="Infinity"),Number.NEGATIVE_INFINITY===o&&(c="-Infinity")),I=null;const C={zarr_format:2,shape:A,chunks:t,dtype:i,fill_value:c,order:s,compressor:r,filters:I};l&&(C.dimension_separator=l);const B=Wr(n)+jB;await e.setItem(B,JSON.stringify(C))}async function ptA(e,A,t,i,n=null,r=null,o=null,s="C",a=!1,g=null,I=null,l){n=_i(n),await s_(e,n,g,a),await dtA(e,A,t,i,n,r,o,s,a,g,I,l)}function XB(e){if(typeof e!="string"){if(Ka&&Buffer.isBuffer(e))return JSON.parse(e.toString());if(Jy(e)){const A=new TextDecoder,t=new Uint8Array(e);return JSON.parse(A.decode(t))}else return e}return JSON.parse(e)}class a_{constructor(A,t,i,n=!0){this.store=A,this.key=t,this.readOnly=i,this.cache=n,this.cachedValue=null}async asObject(){if(this.cache&&this.cachedValue!==null)return this.cachedValue;const A=await this.getNoSync();return this.cache&&(this.cachedValue=A),A}async getNoSync(){try{const A=await this.store.getItem(this.key);return XB(A)}catch{return{}}}async setNoSync(A,t){const i=await this.getNoSync();return i[A]=t,await this.putNoSync(i),!0}async putNoSync(A){await this.store.setItem(this.key,JSON.stringify(A)),this.cache&&(this.cachedValue=A)}async delNoSync(A){const t=await this.getNoSync();return delete t[A],await this.putNoSync(t),!0}async put(A){if(this.readOnly)throw new Mt("attributes are read-only");return this.putNoSync(A)}async setItem(A,t){if(this.readOnly)throw new Mt("attributes are read-only");return this.setNoSync(A,t)}async getItem(A){return(await this.asObject())[A]}async deleteItem(A){if(this.readOnly)throw new Mt("attributes are read-only");return this.delNoSync(A)}async containsItem(A){return(await this.asObject())[A]!==void 0}proxy(){return My(this)}}const A1=globalThis.Float16Array,ytA={"|b":Int8Array,"|b1":Uint8Array,"|B":Uint8Array,"|u1":Uint8Array,"|i1":Int8Array,"b":Int8Array,">B":Uint8Array,">u1":Uint8Array,">i1":Int8Array,">u2":Uint16Array,">i2":Int16Array,">u4":Uint32Array,">i4":Int32Array,">f4":Float32Array,">f2":A1,">f8":Float64Array};function an(e){const A=ytA[e];if(!A)throw e.slice(1)==="f2"?Error(`'${e}' is not supported natively in zarr.js. In order to access this dataset you must make Float16Array available as a global. See https://github.com/gzuidhof/zarr.js/issues/127`):Error(`Dtype not recognized or not supported in zarr.js, got ${e}.`);return A}function g_(e){if(e instanceof Uint8Array)return"|u1";if(e instanceof Int8Array)return"|i1";if(e instanceof Uint16Array)return"0&&typeof a[0]=="number"&&(a=e[0].constructor.from(a)),a}function wtA(e,A,t,i){const n=Vr(i,t,!0),[r,o]=Jo(n,t);Ky(e,A,t,r)}function vtA(e,A,t,i,n){const r=Vr(n,t,!1),[o,s]=Jo(r,t);if(JSON.stringify(s)!==JSON.stringify(i))throw new oi(`Shape mismatch in target and source NestedArray: ${s} and ${i}`);Hd(e,A,t,o)}function Hd(e,A,t,i){const n=i[0];if(typeof A=="number"){Ky(e,A,t,i.map(g=>typeof g=="number"?[g,g+1,1,1]:g));return}if(typeof n=="number"){Hd(e[n],A,t.slice(1),i.slice(1));return}const[r,o,s,a]=n;if(t.length===1){if(s===1)e.set(A,r);else for(let g=0;gr*o,1),n=new t(i);return I_(e,A,n,0),n}function I_(e,A,t,i){if(A.length===1){t.set(e,i);return}if(A.length===2){for(let o=0;oo*s,1);for(let o=0;oa*g,1);A===null&&(A=new ArrayBuffer(r*parseInt(i[i.length-1],10)));const o=A.byteLength/parseInt(i[i.length-1],10);if(r!==o)throw new Error(`Buffer has ${o} of dtype ${i}, shape is too large or small ${t} (flat=${r})`);const s=an(i);this.data=l_(A,s,t)}else this.data=A}get(A){const[t,i]=mtA(this.data,this.shape,A);return i.length===0?t:new Nn(t,i,this.dtype)}set(A=null,t){A===null&&(A=[qo(null)]),typeof t=="number"?this.shape.length===0?this.data[0]=t:wtA(this.data,t,this.shape,A):vtA(this.data,t.data,this.shape,t.shape,A)}flatten(){return this.shape.length===1?this.data:StA(this.data,this.shape,an(this.dtype))}static arange(A,t="n*r,1),i=new A(t);return i.set([...Array(t).keys()]),i}function l_(e,A,t,i=0){if(t.length===1)return new A(e.slice(i,i+t[0]*A.BYTES_PER_ELEMENT));const n=new Array(t[0]);if(t.length===2){for(let s=0;ss*a,1);for(let s=0;sg*I,1);A===null&&(A=new ArrayBuffer(o*parseInt(i[i.length-1],10)));const s=A.byteLength/parseInt(i[i.length-1],10);if(o!==s)throw new Error(`Buffer has ${s} of dtype ${i}, shape is too large or small ${t} (flat=${o})`);const a=an(i);this.data=new a(A)}else this.data=A}set(A=null,t,i){A===null&&(A=[qo(null)]),typeof t=="number"?this.shape.length===0?this.data[0]=t:RtA(this.data,this.strides,this.shape,A,t):t instanceof Bo&&i?FtA(this.data,this.strides,this.shape,A,t.data,t.strides,t.shape,i):xtA(this.data,this.strides,this.shape,A,t.data,t.strides,t.shape)}}var C_={exports:{}};(function(e){var A=Object.prototype.hasOwnProperty,t="~";function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(t=!1));function n(a,g,I){this.fn=a,this.context=g,this.once=I||!1}function r(a,g,I,l,c){if(typeof I!="function")throw new TypeError("The listener must be a function");var C=new n(I,l||a,c),B=t?t+g:g;return a._events[B]?a._events[B].fn?a._events[B]=[a._events[B],C]:a._events[B].push(C):(a._events[B]=C,a._eventsCount++),a}function o(a,g){--a._eventsCount===0?a._events=new i:delete a._events[g]}function s(){this._events=new i,this._eventsCount=0}s.prototype.eventNames=function(){var g=[],I,l;if(this._eventsCount===0)return g;for(l in I=this._events)A.call(I,l)&&g.push(t?l.slice(1):l);return Object.getOwnPropertySymbols?g.concat(Object.getOwnPropertySymbols(I)):g},s.prototype.listeners=function(g){var I=t?t+g:g,l=this._events[I];if(!l)return[];if(l.fn)return[l.fn];for(var c=0,C=l.length,B=new Array(C);c{if(typeof A!="number"||A<0)throw new TypeError("Expected `milliseconds` to be a positive number");if(A===Number.POSITIVE_INFINITY){o(e);return}i={customTimers:{setTimeout,clearTimeout},...i},n=i.customTimers.setTimeout.call(void 0,()=>{if(typeof t=="function"){try{o(t())}catch(I){s(I)}return}const a=typeof t=="string"?t:`Promise timed out after ${A} milliseconds`,g=t instanceof Error?t:new B_(a);typeof e.cancel=="function"&&e.cancel(),s(g)},A),(async()=>{try{o(await e)}catch(a){s(a)}finally{i.customTimers.clearTimeout.call(void 0,n)}})()});return r.clear=()=>{clearTimeout(n),n=void 0},r}function btA(e,A,t){let i=0,n=e.length;for(;n>0;){const r=Math.trunc(n/2);let o=i+r;t(e[o],A)<=0?(i=++o,n-=r+1):n=r}return i}class GtA{constructor(){Object.defineProperty(this,"_queue",{enumerable:!0,configurable:!0,writable:!0,value:[]})}enqueue(A,t){var i;t={priority:0,...t};const n={priority:t.priority,run:A};if(this.size&&((i=this._queue[this.size-1])===null||i===void 0?void 0:i.priority)>=t.priority){this._queue.push(n);return}const r=btA(this._queue,n,(o,s)=>s.priority-o.priority);this._queue.splice(r,0,n)}dequeue(){const A=this._queue.shift();return A==null?void 0:A.run}filter(A){return this._queue.filter(t=>t.priority===A.priority).map(t=>t.run)}get size(){return this._queue.length}}const iC=()=>{},_tA=new B_;class e1 extends NtA{constructor(A){var t,i,n,r;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:iC}),Object.defineProperty(this,"_resolveIdle",{enumerable:!0,configurable:!0,writable:!0,value:iC}),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}),A={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:GtA,...A},!(typeof A.intervalCap=="number"&&A.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${(i=(t=A.intervalCap)===null||t===void 0?void 0:t.toString())!==null&&i!==void 0?i:""}\` (${typeof A.intervalCap})`);if(A.interval===void 0||!(Number.isFinite(A.interval)&&A.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${(r=(n=A.interval)===null||n===void 0?void 0:n.toString())!==null&&r!==void 0?r:""}\` (${typeof A.interval})`);this._carryoverConcurrencyCount=A.carryoverConcurrencyCount,this._isIntervalIgnored=A.intervalCap===Number.POSITIVE_INFINITY||A.interval===0,this._intervalCap=A.intervalCap,this._interval=A.interval,this._queue=new A.queueClass,this._queueClass=A.queueClass,this.concurrency=A.concurrency,this._timeout=A.timeout,this._throwOnTimeout=A.throwOnTimeout===!0,this._isPaused=A.autoStart===!1}get _doesIntervalAllowAnother(){return this._isIntervalIgnored||this._intervalCount{this._onResumeInterval()},t)),!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 A=!this._isIntervalPaused();if(this._doesIntervalAllowAnother&&this._doesConcurrentAllowAnother){const t=this._queue.dequeue();return t?(this.emit("active"),t(),A&&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(A){if(!(typeof A=="number"&&A>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${A}\` (${typeof A})`);this._concurrency=A,this._processQueue()}async add(A,t={}){return new Promise((i,n)=>{const r=async()=>{this._pendingCount++,this._intervalCount++;try{const s=await(this._timeout===void 0&&t.timeout===void 0?A():LtA(Promise.resolve(A()),t.timeout===void 0?this._timeout:t.timeout,()=>{(t.throwOnTimeout===void 0?this._throwOnTimeout:t.throwOnTimeout)&&n(_tA)}));i(s),this.emit("completed",s)}catch(o){n(o),this.emit("error",o)}this._next()};this._queue.enqueue(r,t),this._tryToStartAnother(),this.emit("add")})}async addAll(A,t){return Promise.all(A.map(async i=>this.add(i,t)))}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(A=>{const t=this._resolveEmpty;this._resolveEmpty=()=>{t(),A()}})}async onSizeLessThan(A){if(!(this._queue.size{const i=()=>{this._queue.size{const t=this._resolveIdle;this._resolveIdle=()=>{t(),A()}})}get size(){return this._queue.size}sizeBy(A){return this._queue.filter(A).length}get pending(){return this._pendingCount}get isPaused(){return this._isPaused}get timeout(){return this._timeout}set timeout(A){this._timeout=A}}class Cu{constructor(A,t=null,i,n=!1,r=null,o=!0,s=!0){this.store=A,this._chunkStore=r,this.path=_i(t),this.keyPrefix=Wr(this.path),this.readOnly=n,this.cacheMetadata=o,this.cacheAttrs=s,this.meta=i,this.meta.compressor!==null?this.compressor=$eA(this.meta.compressor):this.compressor=null;const a=this.keyPrefix+o_;this.attrs=new a_(this.store,a,this.readOnly,s)}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 A=this.name;if(A===null)return null;const t=A.split("/");return t[t.length-1]}get shape(){return this.meta.shape}get chunks(){return this.meta.chunks}get chunkSize(){return this.chunks.reduce((A,t)=>A*t,1)}get dtype(){return this.meta.dtype}get fillValue(){const A=this.meta.fill_value;return A==="NaN"?NaN:A==="Infinity"?1/0:A==="-Infinity"?-1/0:this.meta.fill_value}get nDims(){return this.meta.shape.length}get size(){return this.meta.shape.reduce((A,t)=>A*t,1)}get length(){return this.shape[0]}get _chunkDataShape(){if(this.shape.length===0)return[1];{const A=[];for(let t=0;tA*t,1)}static async create(A,t=null,i=!1,n=null,r=!0,o=!0){const s=await this.loadMetadataForConstructor(A,t);return new Cu(A,t,s,i,n,r,o)}static async loadMetadataForConstructor(A,t){try{t=_i(t);const i=Wr(t),n=await A.getItem(i+jB);return XB(n)}catch(i){throw await cn(A,t)?new Oa(t!=null?t:""):new Error("Failed to load metadata for ZarrArray:"+i.toString())}}async reloadMetadata(){const A=this.keyPrefix+jB,t=this.store.getItem(A);return this.meta=XB(await t),this.meta}async refreshMetadata(){this.cacheMetadata||await this.reloadMetadata()}get(A=null,t={}){return this.getBasicSelection(A,!1,t)}getRaw(A=null,t={}){return this.getBasicSelection(A,!0,t)}async getBasicSelection(A,t=!1,{concurrencyLimit:i=10,progressCallback:n,storeOptions:r}={}){if(this.cacheMetadata||await this.reloadMetadata(),this.shape.length===0)throw new Error("Shape [] indexing is not supported yet");return this.getBasicSelectionND(A,t,i,n,r)}getBasicSelectionND(A,t,i,n,r){const o=new jR(A,this);return this.getSelection(o,t,i,n,r)}async getSelection(A,t,i,n,r){const o=this.dtype,s=A.shape,a=A.shape.reduce((l,c)=>l*c,1);if(t&&a===this.chunkSize){const l=A.iter(),c=l.next();if(c.done===!1&&l.next().done===!0){const C=c.value;return await this.decodeDirectToRawArray(C,s,a)}}const g=t?new Bo(null,s,o):new Nn(null,s,o);if(a===0)return g;const I=new e1({concurrency:i});if(n){let l=0,c=0;for(const C of A.iter())c+=1;n({progress:0,queueSize:c});for(const C of A.iter())(async()=>(await I.add(()=>this.chunkGetItem(C.chunkCoords,C.chunkSelection,g,C.outSelection,A.dropAxes,r)),l+=1,n({progress:l,queueSize:c})))()}else for(const l of A.iter())I.add(()=>this.chunkGetItem(l.chunkCoords,l.chunkSelection,g,l.outSelection,A.dropAxes,r));return await I.onIdle(),g.shape.length===0?g.data[0]:g}async chunkGetItem(A,t,i,n,r,o){if(A.length!==this._chunkDataShape.length)throw new oi(`Inconsistent shapes: chunkCoordsLength: ${A.length}, cDataShapeLength: ${this.chunkDataShape.length}`);const s=this.chunkKey(A);try{const a=await this.chunkStore.getItem(s,o),g=await this.decodeChunk(a);if(i instanceof Nn){if(otA(n)&&$R(t,this.chunks)&&!this.meta.filters){i.set(n,this.toNestedArray(g));return}const l=this.toNestedArray(g).get(t);if(r!==null)throw new Error("Drop axes is not supported yet");i.set(n,l)}else i.set(n,this.chunkBufferToRawArray(g),t)}catch(a){if(hf(a))this.fillValue!==null&&i.set(n,this.fillValue);else throw a}}async getRawChunk(A,t){if(A.length!==this.shape.length)throw new Error(`Chunk coordinates ${A.join(".")} do not correspond to shape ${this.shape}.`);try{for(let s=0;ss!==1);return new Bo(r,o,this.dtype)}chunkKey(A){var t;const i=(t=this.meta.dimension_separator)!==null&&t!==void 0?t:".";return this.keyPrefix+A.join(i)}ensureByteArray(A){return typeof A=="string"?new Uint8Array(Buffer.from(A).buffer):new Uint8Array(A)}toTypedArray(A){return new(an(this.dtype))(A)}toNestedArray(A){const t=this.ensureByteArray(A).buffer;return new Nn(t,this.chunks,this.dtype)}async decodeChunk(A){let t=this.ensureByteArray(A);if(this.compressor!==null&&(t=await(await this.compressor).decode(t)),this.dtype.includes(">")&&r_(this.toTypedArray(t.buffer)),this.meta.order==="F"&&this.nDims>1){const i=this.toTypedArray(t.buffer),n=new(an(this.dtype))(i.length);return QtA(i,n,this.chunks),n.buffer}return t.buffer}chunkBufferToRawArray(A){return new Bo(A,this.chunks,this.dtype)}async decodeDirectToRawArray({chunkCoords:A},t,i){const n=this.chunkKey(A);try{const r=await this.chunkStore.getItem(n);return new Bo(await this.decodeChunk(r),t,this.dtype)}catch(r){if(hf(r)){const o=new(an(this.dtype))(i);return new Bo(o.fill(this.fillValue),t)}else throw r}}async set(A=null,t,i={}){await this.setBasicSelection(A,t,i)}async setBasicSelection(A,t,{concurrencyLimit:i=10,progressCallback:n}={}){if(this.readOnly)throw new Mt("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(A,t,i,n)}async setBasicSelectionND(A,t,i,n){const r=new jR(A,this);await this.setSelection(r,t,i,n)}getChunkValue(A,t,i,n){let r;if(n.length===0)r=i;else if(typeof i=="number")r=i;else if(r=i.get(A.outSelection),t.dropAxes!==null)throw new Error("Handling drop axes not supported yet");return r}async setSelection(A,t,i,n){const r=A.shape;if(r.length!==0){if(typeof t!="number")if(t instanceof Nn){if(!ltA(t.shape,r))throw new oi(`Shape mismatch in source NestedArray and set selection: ${t.shape} and ${r}`)}else throw new Error("Unknown data type for setting :(")}const o=new e1({concurrency:i});if(n){let s=0;for(const g of A.iter())s+=1;let a=0;n({progress:0,queueSize:s});for(const g of A.iter()){const I=this.getChunkValue(g,A,t,r);(async()=>(await o.add(()=>this.chunkSetItem(g.chunkCoords,g.chunkSelection,I)),a+=1,n({progress:a,queueSize:s})))()}}else for(const s of A.iter()){const a=this.getChunkValue(s,A,t,r);o.add(()=>this.chunkSetItem(s.chunkCoords,s.chunkSelection,a))}await o.onIdle()}async chunkSetItem(A,t,i){if(this.meta.order==="F"&&this.nDims>1)throw new Error("Setting content for arrays in F-order is not supported.");const n=this.chunkKey(A);let r=null;const o=an(this.dtype),s=this.chunkSize;if($R(t,this.chunks))typeof i=="number"?(r=new o(s),r.fill(i)):r=i.flatten();else{let g;try{const l=await this.chunkStore.getItem(n),c=await this.decodeChunk(l);g=this.toTypedArray(c)}catch(l){if(hf(l))g=new o(s),this.fillValue!==null&&g.fill(this.fillValue);else throw l}const I=new Nn(g,this.chunks,this.dtype);I.set(t,i),r=I.flatten()}const a=await this.encodeChunk(r);this.chunkStore.setItem(n,a)}async encodeChunk(A){if(this.dtype.includes(">")&&(A=CtA(A)),this.compressor!==null){const t=new Uint8Array(A.buffer);return(await(await this.compressor).encode(t)).buffer}return A.buffer}}class MtA{constructor(A={}){this.root=A}proxy(){return My(this)}getParent(A){let t=this.root;const i=A.split("/");for(const n of i.slice(0,i.length-1))if(t=t[n],!t)throw Error(A);return[t,i[i.length-1]]}requireParent(A){let t=this.root;const i=A.split("/");for(const n of i.slice(0,i.length-1))t[n]===void 0&&(t[n]={}),t=t[n];return[t,i[i.length-1]]}getItem(A){const[t,i]=this.getParent(A),n=t[i];if(n===void 0)throw new Ya(A);return n}setItem(A,t){const[i,n]=this.requireParent(A);return i[n]=t,!0}deleteItem(A){const[t,i]=this.getParent(A);return delete t[i]}containsItem(A){try{return this.getItem(A)!==void 0}catch{return!1}}keys(){throw new Error("Method not implemented.")}}var en;(function(e){e.HEAD="HEAD",e.GET="GET",e.PUT="PUT"})(en||(en={}));const ktA=[en.HEAD,en.GET,en.PUT];class Vy{constructor(A,t={}){this.url=A;const{fetchOptions:i={},supportedMethods:n=ktA}=t;this.fetchOptions=i,this.supportedMethods=new Set(n)}keys(){throw new Error("Method not implemented.")}async getItem(A,t){const i=ff(this.url,A),n=await fetch(i,{...this.fetchOptions,...t});if(n.status===404)throw new Ya(A);if(n.status!==200)throw new Uy(String(n.status));return Ka?Buffer.from(await n.arrayBuffer()):n.arrayBuffer()}async setItem(A,t){if(!this.supportedMethods.has(en.PUT))throw new Error("HTTP PUT no a supported method for store.");const i=ff(this.url,A);return typeof t=="string"&&(t=new TextEncoder().encode(t).buffer),(await fetch(i,{...this.fetchOptions,method:en.PUT,body:t})).status.toString()[0]==="2"}deleteItem(A){throw new Error("Method not implemented.")}async containsItem(A){const t=ff(this.url,A),i=this.supportedMethods.has(en.HEAD)?en.HEAD:en.GET;return(await fetch(t,{...this.fetchOptions,method:i})).status===200}}async function Va({shape:e,chunks:A=!0,dtype:t="0?this.path[0]!=="/"?"/"+this.path:this.path:"/"}get basename(){const A=this.name.split("/");return A[A.length-1]}get chunkStore(){return this._chunkStore?this._chunkStore:this.store}static async create(A,t=null,i=!1,n=null,r=!0){const o=await this.loadMetadataForConstructor(A,t);return new Ks(A,t,o,i,n,r)}static async loadMetadataForConstructor(A,t){t=_i(t);const i=Wr(t);try{const n=await A.getItem(i+Oy);return XB(n)}catch{throw await kn(A,t)?new Lr(t):new cu(t)}}itemPath(A){const t=typeof A=="string"&&A.length>0&&A[0]==="/",i=_i(A);return!t&&this.path.length>0?this.keyPrefix+i:i}async createGroup(A,t=!1){if(this.readOnly)throw new Mt("group is read only");const i=this.itemPath(A);return await dI(this.store,i,this._chunkStore,t),Ks.create(this.store,i,this.readOnly,this._chunkStore,this.attrs.cache)}async requireGroup(A,t=!1){if(this.readOnly)throw new Mt("group is read only");const i=this.itemPath(A);return await cn(this.store,i)||await dI(this.store,i,this._chunkStore,t),Ks.create(this.store,i,this.readOnly,this._chunkStore,this.attrs.cache)}getOptsForArrayCreation(A,t={}){const i=this.itemPath(A);return t.path=i,t.cacheAttrs===void 0&&(t.cacheAttrs=this.attrs.cache),t.store=this.store,t.chunkStore=this.chunkStore,t}array(A,t,i,n){if(this.readOnly)throw new Mt("group is read only");return i=this.getOptsForArrayCreation(A,i),i.overwrite=n===void 0?i.overwrite:n,t1(t,i)}empty(A,t,i={}){if(this.readOnly)throw new Mt("group is read only");return i=this.getOptsForArrayCreation(A,i),TtA(t,i)}zeros(A,t,i={}){if(this.readOnly)throw new Mt("group is read only");return i=this.getOptsForArrayCreation(A,i),UtA(t,i)}ones(A,t,i={}){if(this.readOnly)throw new Mt("group is read only");return i=this.getOptsForArrayCreation(A,i),PtA(t,i)}full(A,t,i,n={}){if(this.readOnly)throw new Mt("group is read only");return n=this.getOptsForArrayCreation(A,n),HtA(t,i,n)}createDataset(A,t,i,n){if(this.readOnly)throw new Mt("group is read only");n=this.getOptsForArrayCreation(A,n);let r;if(i===void 0){if(t===void 0)throw new oi("Shape must be set if no data is passed to CreateDataset");r=Va({shape:t,...n})}else r=t1(i,n);return r}async getItem(A){const t=this.itemPath(A);if(await kn(this.store,t))return Cu.create(this.store,t,this.readOnly,this.chunkStore,void 0,this.attrs.cache);if(await cn(this.store,t))return Ks.create(this.store,t,this.readOnly,this._chunkStore,this.attrs.cache);throw new Ya(A)}async setItem(A,t){return await this.array(A,t,{},!0),!0}async deleteItem(A){throw this.readOnly?new Mt("group is read only"):new Error("Method not implemented.")}async containsItem(A){const t=this.itemPath(A);return await kn(this.store,t)||cn(this.store,t)}proxy(){return My(this)}}async function qtA(e,A=null,t="a",i,n=!0){if(e=Od(e),i!==void 0&&(i=Od(e)),A=_i(A),t==="r"||t==="r+"){if(!await cn(e,A))throw await kn(e,A)?new Lr(A):new cu(A)}else if(t==="w")await dI(e,A,i,!0);else if(t==="a"){if(!await cn(e,A)){if(await kn(e,A))throw new Lr(A);await dI(e,A,i)}}else if(t==="w-"||t==="x"){if(await kn(e,A))throw new Lr(A);if(await cn(e,A))throw new Oa(A);await dI(e,A,i)}else throw new oi(`Invalid mode argument: ${t}`);const r=t==="r";return Ks.create(e,A,r,i,n)}/*! pako 2.0.3 https://github.com/nodeca/pako @license (MIT AND Zlib) */const JtA=4,i1=0,n1=1,OtA=2;function Wa(e){let A=e.length;for(;--A>=0;)e[A]=0}const YtA=0,E_=1,KtA=2,VtA=3,WtA=258,Wy=29,Wl=256,rl=Wl+1+Wy,aa=30,zy=19,u_=2*rl+1,mo=15,Qf=16,ztA=7,jy=256,h_=16,f_=17,Q_=18,Yd=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),YC=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),jtA=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),d_=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),XtA=512,Dn=new Array((rl+2)*2);Wa(Dn);const pI=new Array(aa*2);Wa(pI);const ol=new Array(XtA);Wa(ol);const sl=new Array(WtA-VtA+1);Wa(sl);const Xy=new Array(Wy);Wa(Xy);const ZB=new Array(aa);Wa(ZB);function df(e,A,t,i,n){this.static_tree=e,this.extra_bits=A,this.extra_base=t,this.elems=i,this.max_length=n,this.has_stree=e&&e.length}let p_,y_,m_;function pf(e,A){this.dyn_tree=e,this.max_code=0,this.stat_desc=A}const w_=e=>e<256?ol[e]:ol[256+(e>>>7)],al=(e,A)=>{e.pending_buf[e.pending++]=A&255,e.pending_buf[e.pending++]=A>>>8&255},Vt=(e,A,t)=>{e.bi_valid>Qf-t?(e.bi_buf|=A<>Qf-e.bi_valid,e.bi_valid+=t-Qf):(e.bi_buf|=A<{Vt(e,t[A*2],t[A*2+1])},v_=(e,A)=>{let t=0;do t|=e&1,e>>>=1,t<<=1;while(--A>0);return t>>>1},ZtA=e=>{e.bi_valid===16?(al(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},$tA=(e,A)=>{const t=A.dyn_tree,i=A.max_code,n=A.stat_desc.static_tree,r=A.stat_desc.has_stree,o=A.stat_desc.extra_bits,s=A.stat_desc.extra_base,a=A.stat_desc.max_length;let g,I,l,c,C,B,u=0;for(c=0;c<=mo;c++)e.bl_count[c]=0;for(t[e.heap[e.heap_max]*2+1]=0,g=e.heap_max+1;ga&&(c=a,u++),t[I*2+1]=c,!(I>i)&&(e.bl_count[c]++,C=0,I>=s&&(C=o[I-s]),B=t[I*2],e.opt_len+=B*(c+C),r&&(e.static_len+=B*(n[I*2+1]+C)));if(u!==0){do{for(c=a-1;e.bl_count[c]===0;)c--;e.bl_count[c]--,e.bl_count[c+1]+=2,e.bl_count[a]--,u-=2}while(u>0);for(c=a;c!==0;c--)for(I=e.bl_count[c];I!==0;)l=e.heap[--g],!(l>i)&&(t[l*2+1]!==c&&(e.opt_len+=(c-t[l*2+1])*t[l*2],t[l*2+1]=c),I--)}},S_=(e,A,t)=>{const i=new Array(mo+1);let n=0,r,o;for(r=1;r<=mo;r++)i[r]=n=n+t[r-1]<<1;for(o=0;o<=A;o++){let s=e[o*2+1];s!==0&&(e[o*2]=v_(i[s]++,s))}},AiA=()=>{let e,A,t,i,n;const r=new Array(mo+1);for(t=0,i=0;i>=7;i{let A;for(A=0;A{e.bi_valid>8?al(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},eiA=(e,A,t,i)=>{R_(e),i&&(al(e,t),al(e,~t)),e.pending_buf.set(e.window.subarray(A,A+t),e.pending),e.pending+=t},r1=(e,A,t,i)=>{const n=A*2,r=t*2;return e[n]{const i=e.heap[t];let n=t<<1;for(;n<=e.heap_len&&(n{let i,n,r=0,o,s;if(e.last_lit!==0)do i=e.pending_buf[e.d_buf+r*2]<<8|e.pending_buf[e.d_buf+r*2+1],n=e.pending_buf[e.l_buf+r],r++,i===0?tn(e,n,A):(o=sl[n],tn(e,o+Wl+1,A),s=Yd[o],s!==0&&(n-=Xy[o],Vt(e,n,s)),i--,o=w_(i),tn(e,o,t),s=YC[o],s!==0&&(i-=ZB[o],Vt(e,i,s)));while(r{const t=A.dyn_tree,i=A.stat_desc.static_tree,n=A.stat_desc.has_stree,r=A.stat_desc.elems;let o,s,a=-1,g;for(e.heap_len=0,e.heap_max=u_,o=0;o>1;o>=1;o--)yf(e,t,o);g=r;do o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],yf(e,t,1),s=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=s,t[g*2]=t[o*2]+t[s*2],e.depth[g]=(e.depth[o]>=e.depth[s]?e.depth[o]:e.depth[s])+1,t[o*2+1]=t[s*2+1]=g,e.heap[1]=g++,yf(e,t,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],$tA(e,A),S_(t,a,e.bl_count)},s1=(e,A,t)=>{let i,n=-1,r,o=A[0*2+1],s=0,a=7,g=4;for(o===0&&(a=138,g=3),A[(t+1)*2+1]=65535,i=0;i<=t;i++)r=o,o=A[(i+1)*2+1],!(++s{let i,n=-1,r,o=A[0*2+1],s=0,a=7,g=4;for(o===0&&(a=138,g=3),i=0;i<=t;i++)if(r=o,o=A[(i+1)*2+1],!(++s{let A;for(s1(e,e.dyn_ltree,e.l_desc.max_code),s1(e,e.dyn_dtree,e.d_desc.max_code),Kd(e,e.bl_desc),A=zy-1;A>=3&&e.bl_tree[d_[A]*2+1]===0;A--);return e.opt_len+=3*(A+1)+5+5+4,A},iiA=(e,A,t,i)=>{let n;for(Vt(e,A-257,5),Vt(e,t-1,5),Vt(e,i-4,4),n=0;n{let A=4093624447,t;for(t=0;t<=31;t++,A>>>=1)if(A&1&&e.dyn_ltree[t*2]!==0)return i1;if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0)return n1;for(t=32;t{g1||(AiA(),g1=!0),e.l_desc=new pf(e.dyn_ltree,p_),e.d_desc=new pf(e.dyn_dtree,y_),e.bl_desc=new pf(e.bl_tree,m_),e.bi_buf=0,e.bi_valid=0,D_(e)},x_=(e,A,t,i)=>{Vt(e,(YtA<<1)+(i?1:0),3),eiA(e,A,t,!0)},oiA=e=>{Vt(e,E_<<1,3),tn(e,jy,Dn),ZtA(e)},siA=(e,A,t,i)=>{let n,r,o=0;e.level>0?(e.strm.data_type===OtA&&(e.strm.data_type=niA(e)),Kd(e,e.l_desc),Kd(e,e.d_desc),o=tiA(e),n=e.opt_len+3+7>>>3,r=e.static_len+3+7>>>3,r<=n&&(n=r)):n=r=t+5,t+4<=n&&A!==-1?x_(e,A,t,i):e.strategy===JtA||r===n?(Vt(e,(E_<<1)+(i?1:0),3),o1(e,Dn,pI)):(Vt(e,(KtA<<1)+(i?1:0),3),iiA(e,e.l_desc.max_code+1,e.d_desc.max_code+1,o+1),o1(e,e.dyn_ltree,e.dyn_dtree)),D_(e),i&&R_(e)},aiA=(e,A,t)=>(e.pending_buf[e.d_buf+e.last_lit*2]=A>>>8&255,e.pending_buf[e.d_buf+e.last_lit*2+1]=A&255,e.pending_buf[e.l_buf+e.last_lit]=t&255,e.last_lit++,A===0?e.dyn_ltree[t*2]++:(e.matches++,A--,e.dyn_ltree[(sl[t]+Wl+1)*2]++,e.dyn_dtree[w_(A)*2]++),e.last_lit===e.lit_bufsize-1);var giA=riA,IiA=x_,liA=siA,ciA=aiA,CiA=oiA,BiA={_tr_init:giA,_tr_stored_block:IiA,_tr_flush_block:liA,_tr_tally:ciA,_tr_align:CiA};const EiA=(e,A,t,i)=>{let n=e&65535|0,r=e>>>16&65535|0,o=0;for(;t!==0;){o=t>2e3?2e3:t,t-=o;do n=n+A[i++]|0,r=r+n|0;while(--o);n%=65521,r%=65521}return n|r<<16|0};var gl=EiA;const uiA=()=>{let e,A=[];for(var t=0;t<256;t++){e=t;for(var i=0;i<8;i++)e=e&1?3988292384^e>>>1:e>>>1;A[t]=e}return A},hiA=new Uint32Array(uiA()),fiA=(e,A,t,i)=>{const n=hiA,r=i+t;e^=-1;for(let o=i;o>>8^n[(e^A[o])&255];return e^-1};var st=fiA,Oo={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},as={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:QiA,_tr_stored_block:diA,_tr_flush_block:piA,_tr_tally:br,_tr_align:yiA}=BiA,{Z_NO_FLUSH:gs,Z_PARTIAL_FLUSH:miA,Z_FULL_FLUSH:wiA,Z_FINISH:Gr,Z_BLOCK:I1,Z_OK:nn,Z_STREAM_END:l1,Z_STREAM_ERROR:hi,Z_DATA_ERROR:viA,Z_BUF_ERROR:mf,Z_DEFAULT_COMPRESSION:SiA,Z_FILTERED:DiA,Z_HUFFMAN_ONLY:nC,Z_RLE:RiA,Z_FIXED:xiA,Z_DEFAULT_STRATEGY:FiA,Z_UNKNOWN:NiA,Z_DEFLATED:Bu}=as,LiA=9,biA=15,GiA=8,_iA=29,MiA=256,Vd=MiA+1+_iA,kiA=30,TiA=19,UiA=2*Vd+1,PiA=15,ge=3,dr=258,Mi=dr+ge+1,HiA=32,Eu=42,Wd=69,KC=73,VC=91,WC=103,wo=113,Vg=666,et=1,zl=2,Yo=3,za=4,qiA=3,pr=(e,A)=>(e.msg=Oo[A],A),c1=e=>(e<<1)-(e>4?9:0),Br=e=>{let A=e.length;for(;--A>=0;)e[A]=0};let JiA=(e,A,t)=>(A<{const A=e.state;let t=A.pending;t>e.avail_out&&(t=e.avail_out),t!==0&&(e.output.set(A.pending_buf.subarray(A.pending_out,A.pending_out+t),e.next_out),e.next_out+=t,A.pending_out+=t,e.total_out+=t,e.avail_out-=t,A.pending-=t,A.pending===0&&(A.pending_out=0))},dt=(e,A)=>{piA(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,A),e.block_start=e.strstart,lr(e.strm)},Ce=(e,A)=>{e.pending_buf[e.pending++]=A},Ng=(e,A)=>{e.pending_buf[e.pending++]=A>>>8&255,e.pending_buf[e.pending++]=A&255},OiA=(e,A,t,i)=>{let n=e.avail_in;return n>i&&(n=i),n===0?0:(e.avail_in-=n,A.set(e.input.subarray(e.next_in,e.next_in+n),t),e.state.wrap===1?e.adler=gl(e.adler,A,n,t):e.state.wrap===2&&(e.adler=st(e.adler,A,n,t)),e.next_in+=n,e.total_in+=n,n)},F_=(e,A)=>{let t=e.max_chain_length,i=e.strstart,n,r,o=e.prev_length,s=e.nice_match;const a=e.strstart>e.w_size-Mi?e.strstart-(e.w_size-Mi):0,g=e.window,I=e.w_mask,l=e.prev,c=e.strstart+dr;let C=g[i+o-1],B=g[i+o];e.prev_length>=e.good_match&&(t>>=2),s>e.lookahead&&(s=e.lookahead);do if(n=A,!(g[n+o]!==B||g[n+o-1]!==C||g[n]!==g[i]||g[++n]!==g[i+1])){i+=2,n++;do;while(g[++i]===g[++n]&&g[++i]===g[++n]&&g[++i]===g[++n]&&g[++i]===g[++n]&&g[++i]===g[++n]&&g[++i]===g[++n]&&g[++i]===g[++n]&&g[++i]===g[++n]&&io){if(e.match_start=A,o=r,r>=s)break;C=g[i+o-1],B=g[i+o]}}while((A=l[A&I])>a&&--t!==0);return o<=e.lookahead?o:e.lookahead},Ko=e=>{const A=e.w_size;let t,i,n,r,o;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=A+(A-Mi)){e.window.set(e.window.subarray(A,A+A),0),e.match_start-=A,e.strstart-=A,e.block_start-=A,i=e.hash_size,t=i;do n=e.head[--t],e.head[t]=n>=A?n-A:0;while(--i);i=A,t=i;do n=e.prev[--t],e.prev[t]=n>=A?n-A:0;while(--i);r+=A}if(e.strm.avail_in===0)break;if(i=OiA(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=i,e.lookahead+e.insert>=ge)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=_r(e,e.ins_h,e.window[o+1]);e.insert&&(e.ins_h=_r(e,e.ins_h,e.window[o+ge-1]),e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert{let t=65535;for(t>e.pending_buf_size-5&&(t=e.pending_buf_size-5);;){if(e.lookahead<=1){if(Ko(e),e.lookahead===0&&A===gs)return et;if(e.lookahead===0)break}e.strstart+=e.lookahead,e.lookahead=0;const i=e.block_start+t;if((e.strstart===0||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,dt(e,!1),e.strm.avail_out===0)||e.strstart-e.block_start>=e.w_size-Mi&&(dt(e,!1),e.strm.avail_out===0))return et}return e.insert=0,A===Gr?(dt(e,!0),e.strm.avail_out===0?Yo:za):(e.strstart>e.block_start&&(dt(e,!1),e.strm.avail_out===0),et)},wf=(e,A)=>{let t,i;for(;;){if(e.lookahead=ge&&(e.ins_h=_r(e,e.ins_h,e.window[e.strstart+ge-1]),t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),t!==0&&e.strstart-t<=e.w_size-Mi&&(e.match_length=F_(e,t)),e.match_length>=ge)if(i=br(e,e.strstart-e.match_start,e.match_length-ge),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=ge){e.match_length--;do e.strstart++,e.ins_h=_r(e,e.ins_h,e.window[e.strstart+ge-1]),t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=_r(e,e.ins_h,e.window[e.strstart+1]);else i=br(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(dt(e,!1),e.strm.avail_out===0))return et}return e.insert=e.strstart{let t,i,n;for(;;){if(e.lookahead=ge&&(e.ins_h=_r(e,e.ins_h,e.window[e.strstart+ge-1]),t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=ge-1,t!==0&&e.prev_length4096)&&(e.match_length=ge-1)),e.prev_length>=ge&&e.match_length<=e.prev_length){n=e.strstart+e.lookahead-ge,i=br(e,e.strstart-1-e.prev_match,e.prev_length-ge),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=n&&(e.ins_h=_r(e,e.ins_h,e.window[e.strstart+ge-1]),t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=ge-1,e.strstart++,i&&(dt(e,!1),e.strm.avail_out===0))return et}else if(e.match_available){if(i=br(e,0,e.window[e.strstart-1]),i&&dt(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return et}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=br(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart{let t,i,n,r;const o=e.window;for(;;){if(e.lookahead<=dr){if(Ko(e),e.lookahead<=dr&&A===gs)return et;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=ge&&e.strstart>0&&(n=e.strstart-1,i=o[n],i===o[++n]&&i===o[++n]&&i===o[++n])){r=e.strstart+dr;do;while(i===o[++n]&&i===o[++n]&&i===o[++n]&&i===o[++n]&&i===o[++n]&&i===o[++n]&&i===o[++n]&&i===o[++n]&&ne.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=ge?(t=br(e,1,e.match_length-ge),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(t=br(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),t&&(dt(e,!1),e.strm.avail_out===0))return et}return e.insert=0,A===Gr?(dt(e,!0),e.strm.avail_out===0?Yo:za):e.last_lit&&(dt(e,!1),e.strm.avail_out===0)?et:zl},ViA=(e,A)=>{let t;for(;;){if(e.lookahead===0&&(Ko(e),e.lookahead===0)){if(A===gs)return et;break}if(e.match_length=0,t=br(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,t&&(dt(e,!1),e.strm.avail_out===0))return et}return e.insert=0,A===Gr?(dt(e,!0),e.strm.avail_out===0?Yo:za):e.last_lit&&(dt(e,!1),e.strm.avail_out===0)?et:zl};function ji(e,A,t,i,n){this.good_length=e,this.max_lazy=A,this.nice_length=t,this.max_chain=i,this.func=n}const Wg=[new ji(0,0,0,0,YiA),new ji(4,4,8,4,wf),new ji(4,5,16,8,wf),new ji(4,6,32,32,wf),new ji(4,4,16,16,ms),new ji(8,16,32,32,ms),new ji(8,16,128,128,ms),new ji(8,32,128,256,ms),new ji(32,128,258,1024,ms),new ji(32,258,258,4096,ms)],WiA=e=>{e.window_size=2*e.w_size,Br(e.head),e.max_lazy_match=Wg[e.level].max_lazy,e.good_match=Wg[e.level].good_length,e.nice_match=Wg[e.level].nice_length,e.max_chain_length=Wg[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=ge-1,e.match_available=0,e.ins_h=0};function ziA(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Bu,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(UiA*2),this.dyn_dtree=new Uint16Array((2*kiA+1)*2),this.bl_tree=new Uint16Array((2*TiA+1)*2),Br(this.dyn_ltree),Br(this.dyn_dtree),Br(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(PiA+1),this.heap=new Uint16Array(2*Vd+1),Br(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*Vd+1),Br(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const N_=e=>{if(!e||!e.state)return pr(e,hi);e.total_in=e.total_out=0,e.data_type=NiA;const A=e.state;return A.pending=0,A.pending_out=0,A.wrap<0&&(A.wrap=-A.wrap),A.status=A.wrap?Eu:wo,e.adler=A.wrap===2?0:1,A.last_flush=gs,QiA(A),nn},L_=e=>{const A=N_(e);return A===nn&&WiA(e.state),A},jiA=(e,A)=>!e||!e.state||e.state.wrap!==2?hi:(e.state.gzhead=A,nn),b_=(e,A,t,i,n,r)=>{if(!e)return hi;let o=1;if(A===SiA&&(A=6),i<0?(o=0,i=-i):i>15&&(o=2,i-=16),n<1||n>LiA||t!==Bu||i<8||i>15||A<0||A>9||r<0||r>xiA)return pr(e,hi);i===8&&(i=9);const s=new ziA;return e.state=s,s.strm=e,s.wrap=o,s.gzhead=null,s.w_bits=i,s.w_size=1<b_(e,A,Bu,biA,GiA,FiA),ZiA=(e,A)=>{let t,i;if(!e||!e.state||A>I1||A<0)return e?pr(e,hi):hi;const n=e.state;if(!e.output||!e.input&&e.avail_in!==0||n.status===Vg&&A!==Gr)return pr(e,e.avail_out===0?mf:hi);n.strm=e;const r=n.last_flush;if(n.last_flush=A,n.status===Eu)if(n.wrap===2)e.adler=0,Ce(n,31),Ce(n,139),Ce(n,8),n.gzhead?(Ce(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Ce(n,n.gzhead.time&255),Ce(n,n.gzhead.time>>8&255),Ce(n,n.gzhead.time>>16&255),Ce(n,n.gzhead.time>>24&255),Ce(n,n.level===9?2:n.strategy>=nC||n.level<2?4:0),Ce(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(Ce(n,n.gzhead.extra.length&255),Ce(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=st(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Wd):(Ce(n,0),Ce(n,0),Ce(n,0),Ce(n,0),Ce(n,0),Ce(n,n.level===9?2:n.strategy>=nC||n.level<2?4:0),Ce(n,qiA),n.status=wo);else{let o=Bu+(n.w_bits-8<<4)<<8,s=-1;n.strategy>=nC||n.level<2?s=0:n.level<6?s=1:n.level===6?s=2:s=3,o|=s<<6,n.strstart!==0&&(o|=HiA),o+=31-o%31,n.status=wo,Ng(n,o),n.strstart!==0&&(Ng(n,e.adler>>>16),Ng(n,e.adler&65535)),e.adler=1}if(n.status===Wd)if(n.gzhead.extra){for(t=n.pending;n.gzindex<(n.gzhead.extra.length&65535)&&!(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>t&&(e.adler=st(e.adler,n.pending_buf,n.pending-t,t)),lr(e),t=n.pending,n.pending===n.pending_buf_size));)Ce(n,n.gzhead.extra[n.gzindex]&255),n.gzindex++;n.gzhead.hcrc&&n.pending>t&&(e.adler=st(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=KC)}else n.status=KC;if(n.status===KC)if(n.gzhead.name){t=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>t&&(e.adler=st(e.adler,n.pending_buf,n.pending-t,t)),lr(e),t=n.pending,n.pending===n.pending_buf_size)){i=1;break}n.gzindext&&(e.adler=st(e.adler,n.pending_buf,n.pending-t,t)),i===0&&(n.gzindex=0,n.status=VC)}else n.status=VC;if(n.status===VC)if(n.gzhead.comment){t=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>t&&(e.adler=st(e.adler,n.pending_buf,n.pending-t,t)),lr(e),t=n.pending,n.pending===n.pending_buf_size)){i=1;break}n.gzindext&&(e.adler=st(e.adler,n.pending_buf,n.pending-t,t)),i===0&&(n.status=WC)}else n.status=WC;if(n.status===WC&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&lr(e),n.pending+2<=n.pending_buf_size&&(Ce(n,e.adler&255),Ce(n,e.adler>>8&255),e.adler=0,n.status=wo)):n.status=wo),n.pending!==0){if(lr(e),e.avail_out===0)return n.last_flush=-1,nn}else if(e.avail_in===0&&c1(A)<=c1(r)&&A!==Gr)return pr(e,mf);if(n.status===Vg&&e.avail_in!==0)return pr(e,mf);if(e.avail_in!==0||n.lookahead!==0||A!==gs&&n.status!==Vg){let o=n.strategy===nC?ViA(n,A):n.strategy===RiA?KiA(n,A):Wg[n.level].func(n,A);if((o===Yo||o===za)&&(n.status=Vg),o===et||o===Yo)return e.avail_out===0&&(n.last_flush=-1),nn;if(o===zl&&(A===miA?yiA(n):A!==I1&&(diA(n,0,0,!1),A===wiA&&(Br(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),lr(e),e.avail_out===0))return n.last_flush=-1,nn}return A!==Gr?nn:n.wrap<=0?l1:(n.wrap===2?(Ce(n,e.adler&255),Ce(n,e.adler>>8&255),Ce(n,e.adler>>16&255),Ce(n,e.adler>>24&255),Ce(n,e.total_in&255),Ce(n,e.total_in>>8&255),Ce(n,e.total_in>>16&255),Ce(n,e.total_in>>24&255)):(Ng(n,e.adler>>>16),Ng(n,e.adler&65535)),lr(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?nn:l1)},$iA=e=>{if(!e||!e.state)return hi;const A=e.state.status;return A!==Eu&&A!==Wd&&A!==KC&&A!==VC&&A!==WC&&A!==wo&&A!==Vg?pr(e,hi):(e.state=null,A===wo?pr(e,viA):nn)},AnA=(e,A)=>{let t=A.length;if(!e||!e.state)return hi;const i=e.state,n=i.wrap;if(n===2||n===1&&i.status!==Eu||i.lookahead)return hi;if(n===1&&(e.adler=gl(e.adler,A,t,0)),i.wrap=0,t>=i.w_size){n===0&&(Br(i.head),i.strstart=0,i.block_start=0,i.insert=0);let a=new Uint8Array(i.w_size);a.set(A.subarray(t-i.w_size,t),0),A=a,t=i.w_size}const r=e.avail_in,o=e.next_in,s=e.input;for(e.avail_in=t,e.next_in=0,e.input=A,Ko(i);i.lookahead>=ge;){let a=i.strstart,g=i.lookahead-(ge-1);do i.ins_h=_r(i,i.ins_h,i.window[a+ge-1]),i.prev[a&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=a,a++;while(--g);i.strstart=a,i.lookahead=ge-1,Ko(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=ge-1,i.match_available=0,e.next_in=o,e.input=s,e.avail_in=r,i.wrap=n,nn};var enA=XiA,tnA=b_,inA=L_,nnA=N_,rnA=jiA,onA=ZiA,snA=$iA,anA=AnA,gnA="pako deflate (from Nodeca project)",yI={deflateInit:enA,deflateInit2:tnA,deflateReset:inA,deflateResetKeep:nnA,deflateSetHeader:rnA,deflate:onA,deflateEnd:snA,deflateSetDictionary:anA,deflateInfo:gnA};const InA=(e,A)=>Object.prototype.hasOwnProperty.call(e,A);var lnA=function(e){const A=Array.prototype.slice.call(arguments,1);for(;A.length;){const t=A.shift();if(!!t){if(typeof t!="object")throw new TypeError(t+"must be non-object");for(const i in t)InA(t,i)&&(e[i]=t[i])}}return e},cnA=e=>{let A=0;for(let i=0,n=e.length;i=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Il[254]=Il[254]=1;var CnA=e=>{let A,t,i,n,r,o=e.length,s=0;for(n=0;n>>6,A[r++]=128|t&63):t<65536?(A[r++]=224|t>>>12,A[r++]=128|t>>>6&63,A[r++]=128|t&63):(A[r++]=240|t>>>18,A[r++]=128|t>>>12&63,A[r++]=128|t>>>6&63,A[r++]=128|t&63);return A};const BnA=(e,A)=>{if(A<65534&&e.subarray&&G_)return String.fromCharCode.apply(null,e.length===A?e:e.subarray(0,A));let t="";for(let i=0;i{let t,i;const n=A||e.length,r=new Array(n*2);for(i=0,t=0;t4){r[i++]=65533,t+=s-1;continue}for(o&=s===2?31:s===3?15:7;s>1&&t1){r[i++]=65533;continue}o<65536?r[i++]=o:(o-=65536,r[i++]=55296|o>>10&1023,r[i++]=56320|o&1023)}return BnA(r,i)},unA=(e,A)=>{A=A||e.length,A>e.length&&(A=e.length);let t=A-1;for(;t>=0&&(e[t]&192)===128;)t--;return t<0||t===0?A:t+Il[e[t]]>A?t:A},ll={string2buf:CnA,buf2string:EnA,utf8border:unA};function hnA(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var __=hnA;const M_=Object.prototype.toString,{Z_NO_FLUSH:fnA,Z_SYNC_FLUSH:QnA,Z_FULL_FLUSH:dnA,Z_FINISH:pnA,Z_OK:$B,Z_STREAM_END:ynA,Z_DEFAULT_COMPRESSION:mnA,Z_DEFAULT_STRATEGY:wnA,Z_DEFLATED:vnA}=as;function jl(e){this.options=uu.assign({level:mnA,method:vnA,chunkSize:16384,windowBits:15,memLevel:8,strategy:wnA},e||{});let A=this.options;A.raw&&A.windowBits>0?A.windowBits=-A.windowBits:A.gzip&&A.windowBits>0&&A.windowBits<16&&(A.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new __,this.strm.avail_out=0;let t=yI.deflateInit2(this.strm,A.level,A.method,A.windowBits,A.memLevel,A.strategy);if(t!==$B)throw new Error(Oo[t]);if(A.header&&yI.deflateSetHeader(this.strm,A.header),A.dictionary){let i;if(typeof A.dictionary=="string"?i=ll.string2buf(A.dictionary):M_.call(A.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(A.dictionary):i=A.dictionary,t=yI.deflateSetDictionary(this.strm,i),t!==$B)throw new Error(Oo[t]);this._dict_set=!0}}jl.prototype.push=function(e,A){const t=this.strm,i=this.options.chunkSize;let n,r;if(this.ended)return!1;for(A===~~A?r=A:r=A===!0?pnA:fnA,typeof e=="string"?t.input=ll.string2buf(e):M_.call(e)==="[object ArrayBuffer]"?t.input=new Uint8Array(e):t.input=e,t.next_in=0,t.avail_in=t.input.length;;){if(t.avail_out===0&&(t.output=new Uint8Array(i),t.next_out=0,t.avail_out=i),(r===QnA||r===dnA)&&t.avail_out<=6){this.onData(t.output.subarray(0,t.next_out)),t.avail_out=0;continue}if(n=yI.deflate(t,r),n===ynA)return t.next_out>0&&this.onData(t.output.subarray(0,t.next_out)),n=yI.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===$B;if(t.avail_out===0){this.onData(t.output);continue}if(r>0&&t.next_out>0){this.onData(t.output.subarray(0,t.next_out)),t.avail_out=0;continue}if(t.avail_in===0)break}return!0};jl.prototype.onData=function(e){this.chunks.push(e)};jl.prototype.onEnd=function(e){e===$B&&(this.result=uu.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Zy(e,A){const t=new jl(A);if(t.push(e,!0),t.err)throw t.msg||Oo[t.err];return t.result}function SnA(e,A){return A=A||{},A.raw=!0,Zy(e,A)}function DnA(e,A){return A=A||{},A.gzip=!0,Zy(e,A)}var RnA=jl,xnA=Zy,FnA=SnA,NnA=DnA,LnA=as,bnA={Deflate:RnA,deflate:xnA,deflateRaw:FnA,gzip:NnA,constants:LnA};const rC=30,GnA=12;var _nA=function(A,t){let i,n,r,o,s,a,g,I,l,c,C,B,u,E,h,f,Q,d,w,m,v,x,D,F;const N=A.state;i=A.next_in,D=A.input,n=i+(A.avail_in-5),r=A.next_out,F=A.output,o=r-(t-A.avail_out),s=r+(A.avail_out-257),a=N.dmax,g=N.wsize,I=N.whave,l=N.wnext,c=N.window,C=N.hold,B=N.bits,u=N.lencode,E=N.distcode,h=(1<>>24,C>>>=d,B-=d,d=Q>>>16&255,d===0)F[r++]=Q&65535;else if(d&16){w=Q&65535,d&=15,d&&(B>>=d,B-=d),B<15&&(C+=D[i++]<>>24,C>>>=d,B-=d,d=Q>>>16&255,d&16){if(m=Q&65535,d&=15,Ba){A.msg="invalid distance too far back",N.mode=rC;break A}if(C>>>=d,B-=d,d=r-o,m>d){if(d=m-d,d>I&&N.sane){A.msg="invalid distance too far back",N.mode=rC;break A}if(v=0,x=c,l===0){if(v+=g-d,d2;)F[r++]=x[v++],F[r++]=x[v++],F[r++]=x[v++],w-=3;w&&(F[r++]=x[v++],w>1&&(F[r++]=x[v++]))}else{v=r-m;do F[r++]=F[v++],F[r++]=F[v++],F[r++]=F[v++],w-=3;while(w>2);w&&(F[r++]=F[v++],w>1&&(F[r++]=F[v++]))}}else if((d&64)===0){Q=E[(Q&65535)+(C&(1<>3,i-=w,B-=w<<3,C&=(1<{const a=s.bits;let g=0,I=0,l=0,c=0,C=0,B=0,u=0,E=0,h=0,f=0,Q,d,w,m,v,x=null,D=0,F;const N=new Uint16Array(ws+1),M=new Uint16Array(ws+1);let U=null,P=0,W,J,Z;for(g=0;g<=ws;g++)N[g]=0;for(I=0;I=1&&N[c]===0;c--);if(C>c&&(C=c),c===0)return n[r++]=1<<24|64<<16|0,n[r++]=1<<24|64<<16|0,s.bits=1,0;for(l=1;l0&&(e===E1||c!==1))return-1;for(M[1]=0,g=1;gC1||e===u1&&h>B1)return 1;for(;;){W=g-u,o[I]F?(J=U[P+o[I]],Z=x[D+o[I]]):(J=32+64,Z=0),Q=1<>u)+d]=W<<24|J<<16|Z|0;while(d!==0);for(Q=1<>=1;if(Q!==0?(f&=Q-1,f+=Q):f=0,I++,--N[g]===0){if(g===c)break;g=A[t+o[I]]}if(g>C&&(f&m)!==w){for(u===0&&(u=C),v+=l,B=g-u,E=1<C1||e===u1&&h>B1)return 1;w=f&m,n[w]=C<<24|B<<16|v-r|0}}return f!==0&&(n[v+f]=g-u<<24|64<<16|0),s.bits=C,0};var mI=PnA;const HnA=0,k_=1,T_=2,{Z_FINISH:h1,Z_BLOCK:qnA,Z_TREES:oC,Z_OK:Vo,Z_STREAM_END:JnA,Z_NEED_DICT:OnA,Z_STREAM_ERROR:pi,Z_DATA_ERROR:U_,Z_MEM_ERROR:P_,Z_BUF_ERROR:YnA,Z_DEFLATED:f1}=as,H_=1,Q1=2,d1=3,p1=4,y1=5,m1=6,w1=7,v1=8,S1=9,D1=10,AE=11,wn=12,Sf=13,R1=14,Df=15,x1=16,F1=17,N1=18,L1=19,sC=20,aC=21,b1=22,G1=23,_1=24,M1=25,k1=26,Rf=27,T1=28,U1=29,He=30,q_=31,KnA=32,VnA=852,WnA=592,znA=15,jnA=znA,P1=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function XnA(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const J_=e=>{if(!e||!e.state)return pi;const A=e.state;return e.total_in=e.total_out=A.total=0,e.msg="",A.wrap&&(e.adler=A.wrap&1),A.mode=H_,A.last=0,A.havedict=0,A.dmax=32768,A.head=null,A.hold=0,A.bits=0,A.lencode=A.lendyn=new Int32Array(VnA),A.distcode=A.distdyn=new Int32Array(WnA),A.sane=1,A.back=-1,Vo},O_=e=>{if(!e||!e.state)return pi;const A=e.state;return A.wsize=0,A.whave=0,A.wnext=0,J_(e)},Y_=(e,A)=>{let t;if(!e||!e.state)return pi;const i=e.state;return A<0?(t=0,A=-A):(t=(A>>4)+1,A<48&&(A&=15)),A&&(A<8||A>15)?pi:(i.window!==null&&i.wbits!==A&&(i.window=null),i.wrap=t,i.wbits=A,O_(e))},K_=(e,A)=>{if(!e)return pi;const t=new XnA;e.state=t,t.window=null;const i=Y_(e,A);return i!==Vo&&(e.state=null),i},ZnA=e=>K_(e,jnA);let H1=!0,xf,Ff;const $nA=e=>{if(H1){xf=new Int32Array(512),Ff=new Int32Array(32);let A=0;for(;A<144;)e.lens[A++]=8;for(;A<256;)e.lens[A++]=9;for(;A<280;)e.lens[A++]=7;for(;A<288;)e.lens[A++]=8;for(mI(k_,e.lens,0,288,xf,0,e.work,{bits:9}),A=0;A<32;)e.lens[A++]=5;mI(T_,e.lens,0,32,Ff,0,e.work,{bits:5}),H1=!1}e.lencode=xf,e.lenbits=9,e.distcode=Ff,e.distbits=5},V_=(e,A,t,i)=>{let n;const r=e.state;return r.window===null&&(r.wsize=1<=r.wsize?(r.window.set(A.subarray(t-r.wsize,t),0),r.wnext=0,r.whave=r.wsize):(n=r.wsize-r.wnext,n>i&&(n=i),r.window.set(A.subarray(t-i,t-i+n),r.wnext),i-=n,i?(r.window.set(A.subarray(t-i,t),0),r.wnext=i,r.whave=r.wsize):(r.wnext+=n,r.wnext===r.wsize&&(r.wnext=0),r.whave{let t,i,n,r,o,s,a,g,I,l,c,C,B,u,E=0,h,f,Q,d,w,m,v,x;const D=new Uint8Array(4);let F,N;const M=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0)return pi;t=e.state,t.mode===wn&&(t.mode=Sf),o=e.next_out,n=e.output,a=e.avail_out,r=e.next_in,i=e.input,s=e.avail_in,g=t.hold,I=t.bits,l=s,c=a,x=Vo;A:for(;;)switch(t.mode){case H_:if(t.wrap===0){t.mode=Sf;break}for(;I<16;){if(s===0)break A;s--,g+=i[r++]<>>8&255,t.check=st(t.check,D,2,0),g=0,I=0,t.mode=Q1;break}if(t.flags=0,t.head&&(t.head.done=!1),!(t.wrap&1)||(((g&255)<<8)+(g>>8))%31){e.msg="incorrect header check",t.mode=He;break}if((g&15)!==f1){e.msg="unknown compression method",t.mode=He;break}if(g>>>=4,I-=4,v=(g&15)+8,t.wbits===0)t.wbits=v;else if(v>t.wbits){e.msg="invalid window size",t.mode=He;break}t.dmax=1<>8&1),t.flags&512&&(D[0]=g&255,D[1]=g>>>8&255,t.check=st(t.check,D,2,0)),g=0,I=0,t.mode=d1;case d1:for(;I<32;){if(s===0)break A;s--,g+=i[r++]<>>8&255,D[2]=g>>>16&255,D[3]=g>>>24&255,t.check=st(t.check,D,4,0)),g=0,I=0,t.mode=p1;case p1:for(;I<16;){if(s===0)break A;s--,g+=i[r++]<>8),t.flags&512&&(D[0]=g&255,D[1]=g>>>8&255,t.check=st(t.check,D,2,0)),g=0,I=0,t.mode=y1;case y1:if(t.flags&1024){for(;I<16;){if(s===0)break A;s--,g+=i[r++]<>>8&255,t.check=st(t.check,D,2,0)),g=0,I=0}else t.head&&(t.head.extra=null);t.mode=m1;case m1:if(t.flags&1024&&(C=t.length,C>s&&(C=s),C&&(t.head&&(v=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Uint8Array(t.head.extra_len)),t.head.extra.set(i.subarray(r,r+C),v)),t.flags&512&&(t.check=st(t.check,i,C,r)),s-=C,r+=C,t.length-=C),t.length))break A;t.length=0,t.mode=w1;case w1:if(t.flags&2048){if(s===0)break A;C=0;do v=i[r+C++],t.head&&v&&t.length<65536&&(t.head.name+=String.fromCharCode(v));while(v&&C>9&1,t.head.done=!0),e.adler=t.check=0,t.mode=wn;break;case D1:for(;I<32;){if(s===0)break A;s--,g+=i[r++]<>>=I&7,I-=I&7,t.mode=Rf;break}for(;I<3;){if(s===0)break A;s--,g+=i[r++]<>>=1,I-=1,g&3){case 0:t.mode=R1;break;case 1:if($nA(t),t.mode=sC,A===oC){g>>>=2,I-=2;break A}break;case 2:t.mode=F1;break;case 3:e.msg="invalid block type",t.mode=He}g>>>=2,I-=2;break;case R1:for(g>>>=I&7,I-=I&7;I<32;){if(s===0)break A;s--,g+=i[r++]<>>16^65535)){e.msg="invalid stored block lengths",t.mode=He;break}if(t.length=g&65535,g=0,I=0,t.mode=Df,A===oC)break A;case Df:t.mode=x1;case x1:if(C=t.length,C){if(C>s&&(C=s),C>a&&(C=a),C===0)break A;n.set(i.subarray(r,r+C),o),s-=C,r+=C,a-=C,o+=C,t.length-=C;break}t.mode=wn;break;case F1:for(;I<14;){if(s===0)break A;s--,g+=i[r++]<>>=5,I-=5,t.ndist=(g&31)+1,g>>>=5,I-=5,t.ncode=(g&15)+4,g>>>=4,I-=4,t.nlen>286||t.ndist>30){e.msg="too many length or distance symbols",t.mode=He;break}t.have=0,t.mode=N1;case N1:for(;t.have>>=3,I-=3}for(;t.have<19;)t.lens[M[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,F={bits:t.lenbits},x=mI(HnA,t.lens,0,19,t.lencode,0,t.work,F),t.lenbits=F.bits,x){e.msg="invalid code lengths set",t.mode=He;break}t.have=0,t.mode=L1;case L1:for(;t.have>>24,f=E>>>16&255,Q=E&65535,!(h<=I);){if(s===0)break A;s--,g+=i[r++]<>>=h,I-=h,t.lens[t.have++]=Q;else{if(Q===16){for(N=h+2;I>>=h,I-=h,t.have===0){e.msg="invalid bit length repeat",t.mode=He;break}v=t.lens[t.have-1],C=3+(g&3),g>>>=2,I-=2}else if(Q===17){for(N=h+3;I>>=h,I-=h,v=0,C=3+(g&7),g>>>=3,I-=3}else{for(N=h+7;I>>=h,I-=h,v=0,C=11+(g&127),g>>>=7,I-=7}if(t.have+C>t.nlen+t.ndist){e.msg="invalid bit length repeat",t.mode=He;break}for(;C--;)t.lens[t.have++]=v}}if(t.mode===He)break;if(t.lens[256]===0){e.msg="invalid code -- missing end-of-block",t.mode=He;break}if(t.lenbits=9,F={bits:t.lenbits},x=mI(k_,t.lens,0,t.nlen,t.lencode,0,t.work,F),t.lenbits=F.bits,x){e.msg="invalid literal/lengths set",t.mode=He;break}if(t.distbits=6,t.distcode=t.distdyn,F={bits:t.distbits},x=mI(T_,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,F),t.distbits=F.bits,x){e.msg="invalid distances set",t.mode=He;break}if(t.mode=sC,A===oC)break A;case sC:t.mode=aC;case aC:if(s>=6&&a>=258){e.next_out=o,e.avail_out=a,e.next_in=r,e.avail_in=s,t.hold=g,t.bits=I,_nA(e,c),o=e.next_out,n=e.output,a=e.avail_out,r=e.next_in,i=e.input,s=e.avail_in,g=t.hold,I=t.bits,t.mode===wn&&(t.back=-1);break}for(t.back=0;E=t.lencode[g&(1<>>24,f=E>>>16&255,Q=E&65535,!(h<=I);){if(s===0)break A;s--,g+=i[r++]<>d)],h=E>>>24,f=E>>>16&255,Q=E&65535,!(d+h<=I);){if(s===0)break A;s--,g+=i[r++]<>>=d,I-=d,t.back+=d}if(g>>>=h,I-=h,t.back+=h,t.length=Q,f===0){t.mode=k1;break}if(f&32){t.back=-1,t.mode=wn;break}if(f&64){e.msg="invalid literal/length code",t.mode=He;break}t.extra=f&15,t.mode=b1;case b1:if(t.extra){for(N=t.extra;I>>=t.extra,I-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=G1;case G1:for(;E=t.distcode[g&(1<>>24,f=E>>>16&255,Q=E&65535,!(h<=I);){if(s===0)break A;s--,g+=i[r++]<>d)],h=E>>>24,f=E>>>16&255,Q=E&65535,!(d+h<=I);){if(s===0)break A;s--,g+=i[r++]<>>=d,I-=d,t.back+=d}if(g>>>=h,I-=h,t.back+=h,f&64){e.msg="invalid distance code",t.mode=He;break}t.offset=Q,t.extra=f&15,t.mode=_1;case _1:if(t.extra){for(N=t.extra;I>>=t.extra,I-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){e.msg="invalid distance too far back",t.mode=He;break}t.mode=M1;case M1:if(a===0)break A;if(C=c-a,t.offset>C){if(C=t.offset-C,C>t.whave&&t.sane){e.msg="invalid distance too far back",t.mode=He;break}C>t.wnext?(C-=t.wnext,B=t.wsize-C):B=t.wnext-C,C>t.length&&(C=t.length),u=t.window}else u=n,B=o-t.offset,C=t.length;C>a&&(C=a),a-=C,t.length-=C;do n[o++]=u[B++];while(--C);t.length===0&&(t.mode=aC);break;case k1:if(a===0)break A;n[o++]=t.length,a--,t.mode=aC;break;case Rf:if(t.wrap){for(;I<32;){if(s===0)break A;s--,g|=i[r++]<{if(!e||!e.state)return pi;let A=e.state;return A.window&&(A.window=null),e.state=null,Vo},trA=(e,A)=>{if(!e||!e.state)return pi;const t=e.state;return(t.wrap&2)===0?pi:(t.head=A,A.done=!1,Vo)},irA=(e,A)=>{const t=A.length;let i,n,r;return!e||!e.state||(i=e.state,i.wrap!==0&&i.mode!==AE)?pi:i.mode===AE&&(n=1,n=gl(n,A,t,0),n!==i.check)?U_:(r=V_(e,A,t,t),r?(i.mode=q_,P_):(i.havedict=1,Vo))};var nrA=O_,rrA=Y_,orA=J_,srA=ZnA,arA=K_,grA=ArA,IrA=erA,lrA=trA,crA=irA,CrA="pako inflate (from Nodeca project)",Rn={inflateReset:nrA,inflateReset2:rrA,inflateResetKeep:orA,inflateInit:srA,inflateInit2:arA,inflate:grA,inflateEnd:IrA,inflateGetHeader:lrA,inflateSetDictionary:crA,inflateInfo:CrA};function BrA(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var ErA=BrA;const W_=Object.prototype.toString,{Z_NO_FLUSH:urA,Z_FINISH:hrA,Z_OK:cl,Z_STREAM_END:Nf,Z_NEED_DICT:Lf,Z_STREAM_ERROR:frA,Z_DATA_ERROR:q1,Z_MEM_ERROR:QrA}=as;function Xl(e){this.options=uu.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});const A=this.options;A.raw&&A.windowBits>=0&&A.windowBits<16&&(A.windowBits=-A.windowBits,A.windowBits===0&&(A.windowBits=-15)),A.windowBits>=0&&A.windowBits<16&&!(e&&e.windowBits)&&(A.windowBits+=32),A.windowBits>15&&A.windowBits<48&&(A.windowBits&15)===0&&(A.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new __,this.strm.avail_out=0;let t=Rn.inflateInit2(this.strm,A.windowBits);if(t!==cl)throw new Error(Oo[t]);if(this.header=new ErA,Rn.inflateGetHeader(this.strm,this.header),A.dictionary&&(typeof A.dictionary=="string"?A.dictionary=ll.string2buf(A.dictionary):W_.call(A.dictionary)==="[object ArrayBuffer]"&&(A.dictionary=new Uint8Array(A.dictionary)),A.raw&&(t=Rn.inflateSetDictionary(this.strm,A.dictionary),t!==cl)))throw new Error(Oo[t])}Xl.prototype.push=function(e,A){const t=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let r,o,s;if(this.ended)return!1;for(A===~~A?o=A:o=A===!0?hrA:urA,W_.call(e)==="[object ArrayBuffer]"?t.input=new Uint8Array(e):t.input=e,t.next_in=0,t.avail_in=t.input.length;;){for(t.avail_out===0&&(t.output=new Uint8Array(i),t.next_out=0,t.avail_out=i),r=Rn.inflate(t,o),r===Lf&&n&&(r=Rn.inflateSetDictionary(t,n),r===cl?r=Rn.inflate(t,o):r===q1&&(r=Lf));t.avail_in>0&&r===Nf&&t.state.wrap>0&&e[t.next_in]!==0;)Rn.inflateReset(t),r=Rn.inflate(t,o);switch(r){case frA:case q1:case Lf:case QrA:return this.onEnd(r),this.ended=!0,!1}if(s=t.avail_out,t.next_out&&(t.avail_out===0||r===Nf))if(this.options.to==="string"){let a=ll.utf8border(t.output,t.next_out),g=t.next_out-a,I=ll.buf2string(t.output,a);t.next_out=g,t.avail_out=i-g,g&&t.output.set(t.output.subarray(a,a+g),0),this.onData(I)}else this.onData(t.output.length===t.next_out?t.output:t.output.subarray(0,t.next_out));if(!(r===cl&&s===0)){if(r===Nf)return r=Rn.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,!0;if(t.avail_in===0)break}}return!0};Xl.prototype.onData=function(e){this.chunks.push(e)};Xl.prototype.onEnd=function(e){e===cl&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=uu.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function $y(e,A){const t=new Xl(A);if(t.push(e),t.err)throw t.msg||Oo[t.err];return t.result}function drA(e,A){return A=A||{},A.raw=!0,$y(e,A)}var prA=Xl,yrA=$y,mrA=drA,wrA=$y,vrA=as,SrA={Inflate:prA,inflate:yrA,inflateRaw:mrA,ungzip:wrA,constants:vrA};const{Deflate:DrA,deflate:RrA,deflateRaw:xrA,gzip:FrA}=bnA,{Inflate:NrA,inflate:LrA,inflateRaw:brA,ungzip:GrA}=SrA;var _rA=DrA,MrA=RrA,krA=xrA,TrA=FrA,UrA=NrA,PrA=LrA,HrA=brA,qrA=GrA,JrA=as,eE={Deflate:_rA,deflate:MrA,deflateRaw:krA,gzip:TrA,Inflate:UrA,inflate:PrA,inflateRaw:HrA,ungzip:qrA,constants:JrA},gC;const OrA=(gC=class{constructor(e=1){if(e<0||e>9)throw new Error("Invalid gzip compression level, it should be between 0 and 9");this.level=e}static fromConfig({level:e}){return new gC(e)}encode(e){return eE.gzip(e,{level:this.level})}decode(e,A){const t=eE.ungzip(e);return A!==void 0?(A.set(t),A):t}},gC.codecId="gzip",gC);var J1=OrA,IC;const YrA=(IC=class{constructor(e=1){if(e<-1||e>9)throw new Error("Invalid zlib compression level, it should be between -1 and 9");this.level=e}static fromConfig({level:e}){return new IC(e)}encode(e){return eE.deflate(e,{level:this.level})}decode(e,A){const t=eE.inflate(e);return A!==void 0?(A.set(t),A):t}},IC.codecId="zlib",IC);var O1=YrA,KrA=function(){return typeof document!="undefined"&&document.currentScript&&document.currentScript.src,function(e){e=e||{};var A;A||(A=typeof e!="undefined"?e:{});var t,i;A.ready=new Promise(function(L,G){t=L,i=G});var n={},r;for(r in A)A.hasOwnProperty(r)&&(n[r]=A[r]);var o="./this.program",s=A.print||console.log.bind(console),a=A.printErr||console.warn.bind(console);for(r in n)n.hasOwnProperty(r)&&(A[r]=n[r]);n=null,A.thisProgram&&(o=A.thisProgram);var g;A.wasmBinary&&(g=A.wasmBinary),A.noExitRuntime&&A.noExitRuntime,typeof WebAssembly!="object"&&iA("no native wasm support detected");var I,l=!1,c=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0;function C(L,G,T){var V=G+T;for(T=G;L[T]&&!(T>=V);)++T;if(16X?V+=String.fromCharCode(X):(X-=65536,V+=String.fromCharCode(55296|X>>10,56320|X&1023))}}else V+=String.fromCharCode(X)}return V}function B(L,G,T){var V=x;if(0=tA){var dA=L.charCodeAt(++X);tA=65536+((tA&1023)<<10)|dA&1023}if(127>=tA){if(G>=T)break;V[G++]=tA}else{if(2047>=tA){if(G+1>=T)break;V[G++]=192|tA>>6}else{if(65535>=tA){if(G+2>=T)break;V[G++]=224|tA>>12}else{if(G+3>=T)break;V[G++]=240|tA>>18,V[G++]=128|tA>>12&63}V[G++]=128|tA>>6&63}V[G++]=128|tA&63}}V[G]=0}}var u=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0;function E(L,G){for(var T=L>>1,V=T+G/2;!(T>=V)&&F[T];)++T;if(T<<=1,32>1];if(X==0||T==G/2)return V;++T,V+=String.fromCharCode(X)}}function h(L,G,T){if(T===void 0&&(T=2147483647),2>T)return 0;T-=2;var V=G;T=T<2*L.length?T/2:L.length;for(var X=0;X>1]=L.charCodeAt(X),G+=2;return D[G>>1]=0,G-V}function f(L){return 2*L.length}function Q(L,G){for(var T=0,V="";!(T>=G/4);){var X=N[L+4*T>>2];if(X==0)break;++T,65536<=X?(X-=65536,V+=String.fromCharCode(55296|X>>10,56320|X&1023)):V+=String.fromCharCode(X)}return V}function d(L,G,T){if(T===void 0&&(T=2147483647),4>T)return 0;var V=G;T=V+T-4;for(var X=0;X=tA){var dA=L.charCodeAt(++X);tA=65536+((tA&1023)<<10)|dA&1023}if(N[G>>2]=tA,G+=4,G+4>T)break}return N[G>>2]=0,G-V}function w(L){for(var G=0,T=0;T=V&&++T,G+=4}return G}var m,v,x,D,F,N,M,U,P;function W(L){m=L,A.HEAP8=v=new Int8Array(L),A.HEAP16=D=new Int16Array(L),A.HEAP32=N=new Int32Array(L),A.HEAPU8=x=new Uint8Array(L),A.HEAPU16=F=new Uint16Array(L),A.HEAPU32=M=new Uint32Array(L),A.HEAPF32=U=new Float32Array(L),A.HEAPF64=P=new Float64Array(L)}var J=A.INITIAL_MEMORY||16777216;A.wasmMemory?I=A.wasmMemory:I=new WebAssembly.Memory({initial:J/65536,maximum:32768}),I&&(m=I.buffer),J=m.byteLength,W(m);var Z,z=[],O=[],Y=[],k=[];function q(){var L=A.preRun.shift();z.unshift(L)}var j=0,AA=null;A.preloadedImages={},A.preloadedAudios={};function iA(L){throw A.onAbort&&A.onAbort(L),a(L),l=!0,L=new WebAssembly.RuntimeError("abort("+L+"). Build with -s ASSERTIONS=1 for more info."),i(L),L}function gA(L){var G=BA;return String.prototype.startsWith?G.startsWith(L):G.indexOf(L)===0}function sA(){return gA("data:application/octet-stream;base64,")}var BA="blosc_codec.wasm";if(!sA()){var IA=BA;BA=A.locateFile?A.locateFile(IA,""):""+IA}function bA(){try{if(g)return new Uint8Array(g);throw"both async and sync fetching of the wasm failed"}catch(L){iA(L)}}function EA(L){for(;0>2]=G},this.X=function(G){N[this.N+0>>2]=G},this.Y=function(){N[this.N+4>>2]=0},this.W=function(){v[this.N+12>>0]=0},this.Z=function(){v[this.N+13>>0]=0},this.V=function(G,T){this.$(G),this.X(T),this.Y(),this.W(),this.Z()}}function TA(L){switch(L){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+L)}}var RA=void 0;function UA(L){for(var G="";x[L];)G+=RA[x[L++]];return G}var fA={},NA={},ZA={};function ne(L){if(L===void 0)return"_unknown";L=L.replace(/[^a-zA-Z0-9_]/g,"$");var G=L.charCodeAt(0);return 48<=G&&57>=G?"_"+L:L}function Ie(L,G){return L=ne(L),new Function("body","return function "+L+`() { - "use strict"; return body.apply(this, arguments); -}; -`)(G)}function KA(L){var G=Error,T=Ie(L,function(V){this.name=L,this.message=V,V=Error(V).stack,V!==void 0&&(this.stack=this.toString()+` -`+V.replace(/^Error(:[^\n]*)?\n/,""))});return T.prototype=Object.create(G.prototype),T.prototype.constructor=T,T.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},T}var eA=void 0;function aA(L){throw new eA(L)}var FA=void 0;function re(L,G){function T(lA){if(lA=G(lA),lA.length!==V.length)throw new FA("Mismatched type converter count");for(var MA=0;MA>2])}function JA(L){if(L===null)return"null";var G=typeof L;return G==="object"||G==="array"||G==="function"?L.toString():""+L}function xA(L,G){switch(G){case 2:return function(T){return this.fromWireType(U[T>>2])};case 3:return function(T){return this.fromWireType(P[T>>3])};default:throw new TypeError("Unknown float type: "+L)}}function Be(L){var G=Function;if(!(G instanceof Function))throw new TypeError("new_ called with constructor type "+typeof G+" which is not a function");var T=Ie(G.name||"unknownFunctionName",function(){});return T.prototype=G.prototype,T=new T,L=G.apply(T,L),L instanceof Object?L:T}function ue(L){for(;L.length;){var G=L.pop();L.pop()(G)}}function PA(L,G){var T=A;if(T[L].L===void 0){var V=T[L];T[L]=function(){return T[L].L.hasOwnProperty(arguments.length)||aA("Function '"+G+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+T[L].L+")!"),T[L].L[arguments.length].apply(this,arguments)},T[L].L=[],T[L].L[V.S]=V}}function rA(L,G,T){A.hasOwnProperty(L)?((T===void 0||A[L].L!==void 0&&A[L].L[T]!==void 0)&&aA("Cannot register public name '"+L+"' twice"),PA(L,L),A.hasOwnProperty(T)&&aA("Cannot register multiple overloads of a function with the same number of arguments ("+T+")!"),A[L].L[T]=G):(A[L]=G,T!==void 0&&(A[L].ba=T))}function GA(L,G){for(var T=[],V=0;V>2)+V]);return T}function ve(L,G){0<=L.indexOf("j")||iA("Assertion failed: getDynCaller should only be called with i64 sigs");var T=[];return function(){T.length=arguments.length;for(var V=0;V>1]}:function(V){return F[V>>1]};case 2:return T?function(V){return N[V>>2]}:function(V){return M[V>>2]};default:throw new TypeError("Unknown integer type: "+L)}}var Ar={};function ls(){if(!fn){var L={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",_:o||"./this.program"},G;for(G in Ar)L[G]=Ar[G];var T=[];for(G in L)T.push(G+"="+L[G]);fn=T}return fn}for(var fn,rg=[null,[],[]],cs=Array(256),wA=0;256>wA;++wA)cs[wA]=String.fromCharCode(wA);RA=cs,eA=A.BindingError=KA("BindingError"),FA=A.InternalError=KA("InternalError"),A.count_emval_handles=function(){for(var L=0,G=5;G>tA])},M:null})},y:function(L,G){G=UA(G),VA(L,{name:G,fromWireType:function(T){var V=WA[T].value;return qA(T),V},toWireType:function(T,V){return xe(V)},argPackAdvance:8,readValueFromPointer:se,M:null})},h:function(L,G,T){T=TA(T),G=UA(G),VA(L,{name:G,fromWireType:function(V){return V},toWireType:function(V,X){if(typeof X!="number"&&typeof X!="boolean")throw new TypeError('Cannot convert "'+JA(X)+'" to '+this.name);return X},argPackAdvance:8,readValueFromPointer:xA(G,T),M:null})},e:function(L,G,T,V,X,tA){var dA=GA(G,T);L=UA(L),X=pe(V,X),rA(L,function(){Xe("Cannot call "+L+" due to unbound types",dA)},G-1),re(dA,function(lA){var MA=L,OA=L;lA=[lA[0],null].concat(lA.slice(1));var ae=X,ce=lA.length;2>ce&&aA("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var Ii=lA[1]!==null&&!1,Jt=!1,kA=1;kA>>lA}}var MA=G.indexOf("unsigned")!=-1;VA(L,{name:G,fromWireType:tA,toWireType:function(OA,ae){if(typeof ae!="number"&&typeof ae!="boolean")throw new TypeError('Cannot convert "'+JA(ae)+'" to '+this.name);if(aeX)throw new TypeError('Passing a number "'+JA(ae)+'" from JS side to C/C++ side to an argument of type "'+G+'", which is outside the valid range ['+V+", "+X+"]!");return MA?ae>>>0:ae|0},argPackAdvance:8,readValueFromPointer:it(G,dA,V!==0),M:null})},b:function(L,G,T){function V(tA){tA>>=2;var dA=M;return new X(m,dA[tA+1],dA[tA])}var X=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][G];T=UA(T),VA(L,{name:T,fromWireType:V,argPackAdvance:8,readValueFromPointer:V},{U:!0})},i:function(L,G){G=UA(G);var T=G==="std::string";VA(L,{name:G,fromWireType:function(V){var X=M[V>>2];if(T)for(var tA=V+4,dA=0;dA<=X;++dA){var lA=V+4+dA;if(dA==X||x[lA]==0){if(tA=tA?C(x,tA,lA-tA):"",MA===void 0)var MA=tA;else MA+=String.fromCharCode(0),MA+=tA;tA=lA+1}}else{for(MA=Array(X),dA=0;dA=ce&&(ce=65536+((ce&1023)<<10)|X.charCodeAt(++ae)&1023),127>=ce?++OA:OA=2047>=ce?OA+2:65535>=ce?OA+3:OA+4}return OA}:function(){return X.length})(),lA=ye(4+dA+1);if(M[lA>>2]=dA,T&&tA)B(X,lA+4,dA+1);else if(tA)for(tA=0;tA>2],ae=dA(),ce,Ii=MA+4,Jt=0;Jt<=OA;++Jt){var kA=MA+4+Jt*G;(Jt==OA||ae[kA>>lA]==0)&&(Ii=V(Ii,kA-Ii),ce===void 0?ce=Ii:(ce+=String.fromCharCode(0),ce+=Ii),Ii=kA+G)}return te(MA),ce},toWireType:function(MA,OA){typeof OA!="string"&&aA("Cannot pass non-string to C++ string type "+T);var ae=tA(OA),ce=ye(4+ae+G);return M[ce>>2]=ae>>lA,X(OA,ce+4,ae+G),MA!==null&&MA.push(te,ce),ce},argPackAdvance:8,readValueFromPointer:se,M:function(MA){te(MA)}})},A:function(L,G){G=UA(G),VA(L,{aa:!0,name:G,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},n:qA,x:function(L){4>>=0;var G=x.length;if(2147483648=T;T*=2){var V=G*(1+.2/T);V=Math.min(V,L+100663296),V=Math.max(16777216,L,V),0>>16),W(I.buffer);var X=1;break A}catch{}X=void 0}if(X)return!0}return!1},u:function(L,G){var T=0;return ls().forEach(function(V,X){var tA=G+T;for(X=N[L+4*X>>2]=tA,tA=0;tA>0]=V.charCodeAt(tA);v[X>>0]=0,T+=V.length+1}),0},v:function(L,G){var T=ls();N[L>>2]=T.length;var V=0;return T.forEach(function(X){V+=X.length+1}),N[G>>2]=V,0},w:function(){return 0},q:function(){},g:function(L,G,T,V){for(var X=0,tA=0;tA>2],lA=N[G+(8*tA+4)>>2],MA=0;MA>2]=X,0},a:I,l:function(){return 0},k:function(){return 0},j:function(){},B:function(){return 6},m:function(){},f:function(){}};(function(){function L(X){A.asm=X.exports,Z=A.asm.D,j--,A.monitorRunDependencies&&A.monitorRunDependencies(j),j==0&&AA&&(X=AA,AA=null,X())}function G(X){L(X.instance)}function T(X){return Promise.resolve().then(bA).then(function(tA){return WebAssembly.instantiate(tA,V)}).then(X,function(tA){a("failed to asynchronously prepare wasm: "+tA),iA(tA)})}var V={a:LA};if(j++,A.monitorRunDependencies&&A.monitorRunDependencies(j),A.instantiateWasm)try{return A.instantiateWasm(V,L)}catch(X){return a("Module.instantiateWasm callback failed with error: "+X),!1}return function(){return g||typeof WebAssembly.instantiateStreaming!="function"||sA()||gA("file://")||typeof fetch!="function"?T(G):fetch(BA,{credentials:"same-origin"}).then(function(X){return WebAssembly.instantiateStreaming(X,V).then(G,function(tA){return a("wasm streaming compile failed: "+tA),a("falling back to ArrayBuffer instantiation"),T(G)})})}().catch(i),{}})();var Se=A.___wasm_call_ctors=function(){return(Se=A.___wasm_call_ctors=A.asm.E).apply(null,arguments)},ye=A._malloc=function(){return(ye=A._malloc=A.asm.F).apply(null,arguments)},te=A._free=function(){return(te=A._free=A.asm.G).apply(null,arguments)},lt=A.___getTypeName=function(){return(lt=A.___getTypeName=A.asm.H).apply(null,arguments)};A.___embind_register_native_and_builtin_types=function(){return(A.___embind_register_native_and_builtin_types=A.asm.I).apply(null,arguments)},A.dynCall_jiiiii=function(){return(A.dynCall_jiiiii=A.asm.J).apply(null,arguments)},A.dynCall_jiji=function(){return(A.dynCall_jiji=A.asm.K).apply(null,arguments)};var Ee;AA=function L(){Ee||Hi(),Ee||(AA=L)};function Hi(){function L(){if(!Ee&&(Ee=!0,A.calledRun=!0,!l)){if(EA(O),EA(Y),t(A),A.onRuntimeInitialized&&A.onRuntimeInitialized(),A.postRun)for(typeof A.postRun=="function"&&(A.postRun=[A.postRun]);A.postRun.length;){var G=A.postRun.shift();k.unshift(G)}EA(k)}}if(!(0new Uint8Array(Buffer.from(e,"base64")):(()=>{for(var e=new Uint8Array(128),A=0;A<64;A++)e[A<26?A+65:A<52?A+71:A<62?A-4:A*4-205]=A;return t=>{for(var i=t.length,n=new Uint8Array((i-(t[i-1]=="=")-(t[i-2]=="="))*3/4|0),r=0,o=0;r>4,n[o++]=a<<4|g>>2,n[o++]=g<<6|I}return n}})(),zrA=WrA("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=="),vn,Y1;(function(e){e[e.NOSHUFFLE=0]="NOSHUFFLE",e[e.SHUFFLE=1]="SHUFFLE",e[e.BITSHUFFLE=2]="BITSHUFFLE",e[e.AUTOSHUFFLE=-1]="AUTOSHUFFLE"})(Y1||(Y1={}));const K1=new Set(["blosclz","lz4","lz4hc","snappy","zlib","zstd"]);let vs;const V1=()=>KrA({noInitialRun:!0,wasmBinary:zrA}),jrA=(vn=class{constructor(e=5,A="lz4",t=1,i=0){if(e<0||e>9)throw new Error(`Invalid compression level: '${e}'. It should be between 0 and 9`);if(!K1.has(A))throw new Error(`Invalid compressor '${A}'. Valid compressors include - 'blosclz', 'lz4', 'lz4hc','snappy', 'zlib', 'zstd'.`);if(t<-1||t>2)throw new Error(`Invalid shuffle ${t}. Must be one of 0 (NOSHUFFLE), - 1 (SHUFFLE), 2 (BITSHUFFLE), -1 (AUTOSHUFFLE).`);this.blocksize=i,this.clevel=e,this.cname=A,this.shuffle=t}static fromConfig({blocksize:e,clevel:A,cname:t,shuffle:i}){return new vn(A,t,i,e)}async encode(e){vs||(vs=V1());const A=await vs,t=A.compress(e,this.cname,this.clevel,this.shuffle,this.blocksize),i=new Uint8Array(t);return A.free_result(),i}async decode(e,A){vs||(vs=V1());const t=await vs,i=t.decompress(e),n=new Uint8Array(i);return t.free_result(),A!==void 0?(A.set(n),A):n}},vn.codecId="blosc",vn.COMPRESSORS=[...K1],vn.NOSHUFFLE=0,vn.SHUFFLE=1,vn.BITSHUFFLE=2,vn.AUTOSHUFFLE=-1,vn);var W1=jrA;_y(O1.codecId,()=>O1);_y(J1.codecId,()=>J1);_y(W1.codecId,()=>W1);function XrA(...e){return e.map((A,t)=>t===0?A.trim().replace(/[/]*$/g,""):A.trim().replace(/(^[/]*|[/]*$)/g,"")).filter(A=>A.length).join("/")}class ZrA{async keys(){return[]}async deleteItem(){return!1}async setItem(){return console.warn("Cannot write to read-only store."),!1}}class $rA extends ZrA{constructor(A,t=""){super(),this._map=A,this._rootPrefix=t}_key(A){return XrA(this._rootPrefix,A)}async getItem(A){const t=this._map.get(this._key(A));if(!t)throw new Ya(A);return await t.arrayBuffer()}async containsItem(A){const t=this._key(A);return this._map.has(t)}}function AoA(e,A){const{SizeT:t,SizeC:i,SizeZ:n,SizeY:r,SizeX:o}=A,s=[t,i,n,r,o];return e.every((a,g)=>s[g]===a)}function eoA({shape:e},{Pixels:A}){if(AoA(e,A))return VB("XYZCT");const t=VB(A.DimensionOrder);return t.forEach((i,n)=>{const r=i.toUpperCase(),o=A[`Size${r}`];if(!o)throw Error(`Dimension ${r} is invalid for OME-XML.`);if(e[n]!==o)throw Error("Dimension mismatch between zarr source and OME-XML.")}),t}function toA(e,A){const t=e.find(n=>n.path.indexOf(A)>0);if(!t)throw Error("Could not find root in store.");const i=t.path.indexOf(A)+A.length;return t.path.slice(0,i)}function ioA(e){return typeof e[0]!="string"}async function z_(e,A=""){const t=await qtA(e,A),i=await t.attrs.asObject();let n=["0"],r=["t","c","z","y","x"];if("multiscales"in i){const{datasets:s,axes:a}=i.multiscales[0];n=s.map(g=>g.path),a&&(ioA(a)?r=a.map(g=>g.name):r=a)}const o=n.map(s=>t.getItem(s));return{data:await Promise.all(o),rootAttrs:i,labels:r}}function j_(e){const A=Kr(e.shape),[t,i]=e.chunks.slice(A?-3:-2),n=Math.min(t,i);return qG(n)}function noA(e){const A=e.length,t=HG(e);return i=>{if(Array.isArray(i))return[...i];const n=Array(A).fill(0);for(const[r,o]of Object.entries(i))n[t(r)]=o;return n}}const z1={u1:"Uint8",u2:"Uint16",u4:"Uint32",f4:"Float32",f8:"Float64",i1:"Int8",i2:"Int16",i4:"Int32"};function j1(e,A){return{start:e,stop:A,step:1,_slice:!0}}class bf extends Error{}class X_{constructor(A,t,i){this.labels=t,this.tileSize=i,this._indexer=noA(t),this._data=A}get shape(){return this._data.shape}get dtype(){const A=this._data.dtype.slice(1);if(!(A in z1))throw Error(`Zarr dtype not supported, got ${A}.`);return z1[A]}get _xIndex(){const A=Kr(this._data.shape);return this._data.shape.length-(A?2:1)}_chunkIndex(A,{x:t,y:i}){const n=this._indexer(A);return n[this._xIndex]=t,n[this._xIndex-1]=i,n}_getSlices(A,t){const{height:i,width:n}=io(this),[r,o]=[A*this.tileSize,Math.min((A+1)*this.tileSize,n)],[s,a]=[t*this.tileSize,Math.min((t+1)*this.tileSize,i)];if(r===o||s===a)throw new bf("Tile slice is zero-sized.");if(r<0||s<0||o>n||a>i)throw new bf("Tile slice is out of bounds.");return[j1(r,o),j1(s,a)]}async _getRaw(A,t){const i=await this._data.getRaw(A,t);if(typeof i!="object")throw new Error("Expected object from getRaw");return i}async getRaster({selection:A,signal:t}){const i=this._chunkIndex(A,{x:null,y:null}),n=await this._getRaw(i,{storeOptions:{signal:t}}),{data:r,shape:[o,s]}=n;return{data:r,width:s,height:o}}async getTile(A){const{x:t,y:i,selection:n,signal:r}=A,[o,s]=this._getSlices(t,i),a=this._chunkIndex(n,{x:o,y:s}),g=await this._getRaw(a,{storeOptions:{signal:r}}),{data:I,shape:[l,c]}=g;return{data:I,height:l,width:c}}onTileError(A){if(!(A instanceof bf))throw A}}async function X1(e,A){typeof A!="string"&&(A=await A.text());const t=$G(A)[0],{data:i}=await z_(e,"0"),n=eoA(i[0],t),r=j_(i[0]);return{data:i.map(s=>new X_(s,n,r)),metadata:t}}async function roA(e){const{data:A,rootAttrs:t,labels:i}=await z_(e),n=j_(A[0]);return{data:A.map(o=>new X_(o,i,n)),metadata:t}}async function ooA(e,A={}){const t="METADATA.ome.xml",i="data.zarr";if(typeof e=="string"){const s=e.endsWith("/")?e.slice(0,-1):e,a=new Vy(s+"/"+i,A),g=await fetch(s+"/"+t,A.fetchOptions);return X1(a,g)}const n=new Map;let r;for(const s of e)s.name===t?r=s:n.set(s.path,s);if(!r)throw Error("No OME-XML metadata found for store.");const o=new $rA(n,toA(e,i));return X1(o,r)}async function soA(e,A={}){const t=new Vy(e,A);if((A==null?void 0:A.type)!=="multiscales")throw Error("Only multiscale OME-Zarr is supported.");return roA(t)}const aoA=`float apply_contrast_limits(float intensity, vec2 contrastLimits) { - return max(0., (intensity - contrastLimits[0]) / max(0.0005, (contrastLimits[1] - contrastLimits[0]))); -} -`;var goA={name:"channel-intensity",defines:{SAMPLER_TYPE:"usampler2D",COLORMAP_FUNCTION:""},fs:aoA};const IoA=255,Z1=[0,0,0],Z_=6,loA="-apple-system, 'Helvetica Neue', Arial, sans-serif",zd={Uint8:{format:CA.R8UI,dataFormat:CA.RED_INTEGER,type:CA.UNSIGNED_BYTE,max:2**8-1,sampler:"usampler2D"},Uint16:{format:CA.R16UI,dataFormat:CA.RED_INTEGER,type:CA.UNSIGNED_SHORT,max:2**16-1,sampler:"usampler2D"},Uint32:{format:CA.R32UI,dataFormat:CA.RED_INTEGER,type:CA.UNSIGNED_INT,max:2**32-1,sampler:"usampler2D"},Float32:{format:CA.R32F,dataFormat:CA.RED,type:CA.FLOAT,max:3.4*10**38,sampler:"sampler2D"},Int8:{format:CA.R8I,dataFormat:CA.RED_INTEGER,type:CA.BYTE,max:2**(8-1)-1,sampler:"isampler2D"},Int16:{format:CA.R16I,dataFormat:CA.RED_INTEGER,type:CA.SHORT,max:2**(16-1)-1,sampler:"isampler2D"},Int32:{format:CA.R32I,dataFormat:CA.RED_INTEGER,type:CA.INT,max:2**(32-1)-1,sampler:"isampler2D"},Float64:{format:CA.R32F,dataFormat:CA.RED,type:CA.FLOAT,max:3.4*10**38,sampler:"sampler2D",cast:e=>new Float32Array(e)}};var ga=(e=>(e.MAX_INTENSITY_PROJECTION="Maximum Intensity Projection",e.MIN_INTENSITY_PROJECTION="Minimum Intensity Projection",e.ADDITIVE="Additive",e))(ga||{});function coA(e){return[...Array(e).keys()]}function $_(e,A,t){for(let i=0;iA[g]?a:[n,n]),o=Z_-r.length;if(o<0)throw Error(`${r.lengths} channels passed in, but only 6 are allowed.`);return $_(r,[n,n],o).reduce((a,g)=>a.concat(g),[])}function eM(e){var n,r;const{x:A,y:t,z:i}=(r=(n=e==null?void 0:e.meta)==null?void 0:n.physicalSizes)!=null?r:{};if((A==null?void 0:A.size)&&(t==null?void 0:t.size)&&(i==null?void 0:i.size)){const o=Math.min(i.size,A.size,t.size),s=[A.size/o,t.size/o,i.size/o];return new fe().scale(s)}return new fe().identity()}function em(e){const A=new ql().makeViewport({viewState:e,height:e.height,width:e.width});return[A.unproject([0,0]),A.unproject([A.width,0]),A.unproject([A.width,A.height]),A.unproject([0,A.height])]}const tE=[1,2,3,4,5,10,20,25,50,100,200,250,500,1e3],CoA=tE[0],BoA=tE[tE.length-1],jd=[{symbol:"Y",exponent:24},{symbol:"Z",exponent:21},{symbol:"E",exponent:18},{symbol:"P",exponent:15},{symbol:"T",exponent:12},{symbol:"G",exponent:9},{symbol:"M",exponent:6},{symbol:"k",exponent:3},{symbol:"h",exponent:2},{symbol:"da",exponent:1},{symbol:"",exponent:0},{symbol:"d",exponent:-1},{symbol:"c",exponent:-2},{symbol:"m",exponent:-3},{symbol:"\xB5",exponent:-6},{symbol:"n",exponent:-9},{symbol:"p",exponent:-12},{symbol:"f",exponent:-15},{symbol:"a",exponent:-18},{symbol:"z",exponent:-21},{symbol:"y",exponent:-24}];function EoA(e,A){if(!A||A==="m")return e;if(A.length>1){let t=A.substring(0,A.length-1);t==="u"&&(t="\xB5");const i=jd.find(n=>n.symbol===t);if(i)return e*10**i.exponent}throw new Error("Received unknown unit")}function uoA(e){let A=0;(eBoA)&&(A=Math.floor(Math.log10(e)));let t=jd.find(o=>o.exponent%3===0&&o.exponent<=A),i=e/10**t.exponent;i>500&&i<=1e3&&(t=jd.find(o=>o.exponent%3===0&&o.exponent<=A+3),i=e/10**t.exponent);const n=tE.find(o=>o>i);return[n*10**t.exponent,n,t.symbol]}var hoA=`#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); -} -`,foA=`#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); -} -`;const $1={fs:hoA,vs:foA};function QoA(e,A){const t=rd(e,De.TEXTURE_FLOAT),i=rd(e,De.TEXTURE_FILTER_LINEAR_FLOAT);if(!t)throw new Error("WebGL1 context does not support floating point textures. Unable to display raster data.");return!i&&A===CA.LINEAR?(console.warn("LINEAR filtering not supported in WebGL1 context. Falling back to NEAREST."),CA.NEAREST):A}function Ax(e,A,t){if(!ie(A))return{format:CA.LUMINANCE,dataFormat:CA.LUMINANCE,type:CA.FLOAT,sampler:"sampler2D",shaderModule:$1,filter:QoA(A,t),cast:s=>new Float32Array(s)};const i=t===CA.LINEAR,n={...$1},r=`#version 300 es -`;n.fs=r.concat(n.fs),n.vs=r.concat(n.vs);const o=Am(i?"Float32":e);return{shaderModule:n,filter:t,cast:i?s=>new Float32Array(s):s=>s,...o}}const doA={pickable:{type:"boolean",value:!0,compare:!0},coordinateSystem:HA.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:CA.NEAREST,compare:!0}},hu=class extends gi{getShaders(){const{dtype:e,interpolation:A}=this.props,{shaderModule:t,sampler:i}=Ax(e,this.context.gl,A),n=this._isHookDefinedByExtensions("fs:DECKGL_PROCESS_INTENSITY"),r={...goA,inject:{}};return n||(r.inject["fs:DECKGL_PROCESS_INTENSITY"]=` - intensity = apply_contrast_limits(intensity, contrastLimits); - `),super.getShaders({...t,defines:{SAMPLER_TYPE:i},modules:[eo,to,r]})}_isHookDefinedByExtensions(e){const{extensions:A}=this.props;return A==null?void 0:A.some(t=>{const i=t.getShaders(),{inject:n={},modules:r=[]}=i,o=n[e],s=r.some(a=>a==null?void 0:a.inject[e]);return o||s})}initializeState(){const{gl:e}=this.context;e.pixelStorei(CA.UNPACK_ALIGNMENT,1),e.pixelStorei(CA.PACK_ALIGNMENT,1),this.getAttributeManager().add({positions:{size:3,type:CA.DOUBLE,fp64:this.use64bitPositions(),update:this.calculatePositions,noAlloc:!0}}),this.setState({numInstances:1,positions:new Float64Array(12)});const t=rs.getDefaultProgramManager(e),i="fs:DECKGL_MUTATE_COLOR(inout vec4 rgba, float intensity0, float intensity1, float intensity2, float intensity3, float intensity4, float intensity5, vec2 vTexCoord)",n="fs:DECKGL_PROCESS_INTENSITY(inout float intensity, vec2 contrastLimits, int channelIndex)";t._hookFunctions.includes(i)||t.addShaderHook(i),t._hookFunctions.includes(n)||t.addShaderHook(n)}finalizeState(){super.finalizeState(),this.state.textures&&Object.values(this.state.textures).forEach(e=>e&&e.delete())}updateState({props:e,oldProps:A,changeFlags:t,...i}){var r,o;if(super.updateState({props:e,oldProps:A,changeFlags:t,...i}),t.extensionsChanged||e.interpolation!==A.interpolation){const{gl:s}=this.context;this.state.model&&this.state.model.delete(),this.setState({model:this._getModel(s)}),this.getAttributeManager().invalidateAll()}(e.channelData!==A.channelData&&((r=e.channelData)==null?void 0:r.data)!==((o=A.channelData)==null?void 0:o.data)||e.interpolation!==A.interpolation)&&this.loadChannelTextures(e.channelData);const n=this.getAttributeManager();e.bounds!==A.bounds&&n.invalidate("positions")}_getModel(e){return e?new di(e,{...this.getShaders(),id:this.props.id,geometry:new En({drawMode:CA.TRIANGLE_FAN,vertexCount:4,attributes:{texCoords:new Float32Array([0,1,0,0,1,0,1,1])}}),isInstanced:!1}):null}calculatePositions(e){const{positions:A}=this.state,{bounds:t}=this.props;A[0]=t[0],A[1]=t[1],A[2]=0,A[3]=t[0],A[4]=t[3],A[5]=0,A[6]=t[2],A[7]=t[3],A[8]=0,A[9]=t[2],A[10]=t[1],A[11]=0,e.value=A}draw({uniforms:e}){const{textures:A,model:t}=this.state;if(A&&t){const{contrastLimits:i,domain:n,dtype:r,channelsVisible:o}=this.props,s=Object.values(A).filter(g=>g).length,a=AM({contrastLimits:i.slice(0,s),channelsVisible:o.slice(0,s),domain:n,dtype:r});t.setUniforms({...e,contrastLimits:a,...A}).draw()}}loadChannelTextures(e){const A={channel0:null,channel1:null,channel2:null,channel3:null,channel4:null,channel5:null};this.state.textures&&Object.values(this.state.textures).forEach(t=>t&&t.delete()),e&&Object.keys(e).length>0&&e.data&&(e.data.forEach((t,i)=>{A[`channel${i}`]=this.dataToTexture(t,e.width,e.height)},this),this.setState({textures:A}))}dataToTexture(e,A,t){var r,o;const{interpolation:i}=this.props,n=Ax(this.props.dtype,this.context.gl,i);return new Pt(this.context.gl,{width:A,height:t,data:(o=(r=n.cast)==null?void 0:r.call(n,e))!=null?o:e,mipmaps:!1,parameters:{[CA.TEXTURE_MIN_FILTER]:n.filter,[CA.TEXTURE_MAG_FILTER]:n.filter,[CA.TEXTURE_WRAP_S]:CA.CLAMP_TO_EDGE,[CA.TEXTURE_WRAP_T]:CA.CLAMP_TO_EDGE},format:n.format,dataFormat:n.dataFormat,type:n.type})}};hu.layerName="XRLayer";hu.defaultProps=doA;const _n={WhiteIsZero:0,BlackIsZero:1,RGB:2,Palette:3,TransparencyMask:4,CMYK:5,YCbCr:6,CIELab:8,ICCLab:9},tM={...Au.defaultProps,pickable:{type:"boolean",value:!0,compare:!0},coordinateSystem:HA.CARTESIAN},poA=(e,A)=>{const t=A?"true":"false",i=`vec3(${(A||[0,0,0]).map(n=>String(n/255)).join(",")})`;switch(e){case _n.RGB:return`color[3] = (${t} && (color.rgb == ${i})) ? 0.0 : color.a;`;case _n.WhiteIsZero:return` float value = 1.0 - (color.r / 256.0); - color = vec4(value, value, value, (${t} && vec3(value, value, value) == ${i}) ? 0.0 : color.a); - `;case _n.BlackIsZero:return` float value = (color.r / 256.0); - color = vec4(value, value, value, (${t} && vec3(value, value, value) == ${i}) ? 0.0 : color.a); - `;case _n.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] = (${t} && distance(color.rgb, ${i}) < 0.01) ? 0.0 : color.a; - `;default:return console.error("Unsupported photometric interpretation or none provided. No transformation will be done to image data"),""}},yoA=e=>{switch(e){case _n.RGB:return[0,0,0,0];case _n.WhiteIsZero:return[255,255,255,0];case _n.BlackIsZero:return[0,0,0,0];case _n.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 tm extends Au{_getModel(A){const{photometricInterpretation:t,transparentColorInHook:i}=this.props,n=poA(t,i);return A?new di(A,{...this.getShaders(),id:this.props.id,geometry:new En({drawMode:CA.TRIANGLES,vertexCount:6}),isInstanced:!1,inject:{"fs:DECKGL_FILTER_COLOR":n}}):null}}const Zl=class extends Ui{initializeState(e){const{gl:A}=this.context;A.pixelStorei(CA.UNPACK_ALIGNMENT,1),A.pixelStorei(CA.PACK_ALIGNMENT,1),super.initializeState(e)}renderLayers(){const{photometricInterpretation:e,transparentColor:A}=this.props,t=yoA(e);return new tm(this.props,{transparentColor:t,transparentColorInHook:A,id:`${this.props.id}-wrapped`})}};Zl.layerName="BitmapLayer";Zl.PHOTOMETRIC_INTERPRETATIONS=_n;Zl.defaultProps={...tM,image:{type:"object",value:{},compare:!0},transparentColor:{type:"array",value:[0,0,0],compare:!0},photometricInterpretation:{type:"number",value:2,compare:!0}};tm.defaultProps=tM;tm.layerName="BitmapLayerWrapper";function moA(e){const{bbox:{left:A,top:t,right:i,bottom:n},index:{x:r,y:o,z:s}}=e.tile,{data:a,id:g,loader:I,maxZoom:l}=e;if([A,n,i,t].some(E=>E<0)||!a)return null;const c=I[0],{height:C,width:B}=io(c),u=[A,a.heightex.length)throw new Error("Too many colors");return ex.slice(0,e)}function rm({colors:e,channelsVisible:A}){const t=e.map((r,o)=>A[o]?r.map(s=>s/IoA):Z1),i=Z_-t.length;return QsA(t,Z1,i).reduce((r,o)=>r.concat(o),[])}const jC={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}},ja=class extends Pa{getShaders(){return{...super.getShaders(),modules:[fsA]}}draw(){var s;const{colors:e,channelsVisible:A,opacity:t=jC.opacity.value,transparentColor:i=jC.transparentColor.value,useTransparentColor:n=jC.useTransparentColor.value}=this.props,o={colors:rm({channelsVisible:A||this.selections.map(()=>!0),colors:e||nm(this.props.selections.length)}),opacity:t,transparentColor:(i||[0,0,0]).map(a=>a/255),useTransparentColor:Boolean(n)};(s=this.state.model)==null||s.setUniforms(o)}};ja.extensionName="ColorPaletteExtension";ja.defaultProps=jC;const dsA=`// 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.)); -} -`;var psA={name:"lens-module",fs:dsA,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; - `}};const Ns={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}},nE=class extends Pa{getShaders(){return{...super.getShaders(),modules:[psA]}}initializeState(){const e=this.getCurrentLayer();if(e.isComposite)return;const A=()=>{const{viewportId:t}=e.props,{lensRadius:i=Ns.lensRadius.value}=this.props;if(!t){e.setState({unprojectLensBounds:[0,0,0,0]});return}const{mousePosition:n}=e.context,r=e.context.deck.viewManager.views.filter(a=>a.id===t)[0],o=e.context.deck.viewManager.viewState[t],s=r.makeViewport({...o,viewState:o});if(n&&s.containsPixel(n)){const a={x:n.x-s.x,y:n.y-s.y},I=[[a.x-i,a.y],[a.x,a.y+i],[a.x+i,a.y],[a.x,a.y-i]].map((l,c)=>s.unproject(l)[c%2]);e.setState({unprojectLensBounds:I})}else e.setState({unprojectLensBounds:[0,0,0,0]})};this.context.deck&&this.context.deck.eventManager.on({pointermove:A,pointerleave:A,wheel:A}),this.setState({onMouseMove:A,unprojectLensBounds:[0,0,0,0]})}draw(){var m;const{unprojectLensBounds:e=[0,0,0,0]}=this.state,{bounds:A,lensEnabled:t=Ns.lensEnabled.value,lensSelection:i=Ns.lensSelection.value,lensBorderColor:n=Ns.lensBorderColor.value,lensBorderRadius:r=Ns.lensBorderRadius.value,colors:o,channelsVisible:s}=this.props,[a,g,I,l]=e,[c,C,B,u]=A,E=(a-c)/(B-c),h=(g-u)/(C-u),f=(I-c)/(B-c),Q=(l-u)/(C-u),d=rm({channelsVisible:s||this.selections.map(()=>!0),colors:o||nm(this.props.selections.length)}),w={majorLensAxis:(f-E)/2,minorLensAxis:(h-Q)/2,lensCenter:[(f+E)/2,(h+Q)/2],lensEnabled:t,lensSelection:i,lensBorderColor:n,lensBorderRadius:r,colors:d};(m=this.state.model)==null||m.setUniforms(w)}finalizeState(){var e,A,t;this.context.deck&&this.context.deck.eventManager.off({pointermove:(e=this.state)==null?void 0:e.onMouseMove,pointerleave:(A=this.state)==null?void 0:A.onMouseMove,wheel:(t=this.state)==null?void 0:t.onMouseMove})}};nE.extensionName="LensExtension";nE.defaultProps=Ns;function ysA(e,A){const t=`${A} - -vec4 colormap(float intensity, float opacity) { - return vec4(apply_cmap(min(1.,intensity)).xyz, opacity); -}`;return{name:`additive-colormap-3d-${e}`,fs:t}}const rM={colormap:{type:"string",value:"viridis",compare:!0}},Xa=class extends Pa{constructor(...e){super(e),this.opts=this.opts||{}}getShaders(){var t;const e=((t=this==null?void 0:this.props)==null?void 0:t.colormap)||rM.colormap.value,A=nM[e];return{...super.getShaders(),modules:[ysA(e,A)]}}updateState({props:e,oldProps:A,changeFlags:t,...i}){if(super.updateState({props:e,oldProps:A,changeFlags:t,...i}),e.colormap!==A.colormap){const{gl:n}=this.context;this.state.model&&(this.state.model.delete(),this.setState({model:this._getModel(n)}))}}};Xa.extensionName="BaseExtension";Xa.defaultProps=rM;const msA="",wsA=` 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; -`,vsA="",oM=class extends Xa{constructor(e){super(e),this.rendering={_BEFORE_RENDER:msA,_RENDER:wsA,_AFTER_RENDER:vsA}}};oM.extensionName="AdditiveBlendExtension";const SsA=` float maxVals[6] = float[6](-1.0, -1.0, -1.0, -1.0, -1.0, -1.0); -`,DsA=` 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]; - } - } -`,RsA=` 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); -`,sM=class extends Xa{constructor(e){super(e),this.rendering={_BEFORE_RENDER:SsA,_RENDER:DsA,_AFTER_RENDER:RsA}}};sM.extensionName="MaximumIntensityProjectionExtension";const xsA=` float minVals[6] = float[6](1. / 0., 1. / 0., 1. / 0., 1. / 0., 1. / 0., 1. / 0.); -`,FsA=` 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]; - } - } -`,NsA=` 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); -`,aM=class extends Xa{constructor(e){super(e),this.rendering={_BEFORE_RENDER:xsA,_RENDER:FsA,_AFTER_RENDER:NsA}}};aM.extensionName="MinimumIntensityProjectionExtension";const LsA={BaseExtension:Xa,AdditiveBlendExtension:oM,MaximumIntensityProjectionExtension:sM,MinimumIntensityProjectionExtension:aM},bsA={colors:{type:"array",value:null,compare:!0}},Za=class extends Pa{constructor(...e){super(e),this.opts=this.opts||{}}draw(){var n;const{colors:e,channelsVisible:A}=this.props,i={colors:rm({channelsVisible:A||this.selections.map(()=>!0),colors:e||nm(this.props.selections.length)})};(n=this.state.model)==null||n.setUniforms(i)}};Za.extensionName="BaseExtension";Za.defaultProps=bsA;const GsA="",_sA=` 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; - } -`,MsA="",gM=class extends Za{constructor(e){super(e),this.rendering={_BEFORE_RENDER:GsA,_RENDER:_sA,_AFTER_RENDER:MsA}}};gM.extensionName="AdditiveBlendExtension";const ksA=` float maxVals[6] = float[6](-1.0, -1.0, -1.0, -1.0, -1.0, -1.0); -`,TsA=` 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]; - } - } -`,UsA=` 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); -`,IM=class extends Za{constructor(e){super(e),this.rendering={_BEFORE_RENDER:ksA,_RENDER:TsA,_AFTER_RENDER:UsA}}};IM.extensionName="MaximumIntensityProjectionExtension";const PsA=` float minVals[6] = float[6](1. / 0., 1. / 0., 1. / 0., 1. / 0., 1. / 0., 1. / 0.); -`,HsA=` 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]; - } - } -`,qsA=` 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); -`,lM=class extends Za{constructor(e){super(e),this.rendering={_BEFORE_RENDER:PsA,_RENDER:HsA,_AFTER_RENDER:qsA}}};lM.extensionName="MinimumIntensityProjectionExtension";const fu={BaseExtension:Za,AdditiveBlendExtension:gM,MaximumIntensityProjectionExtension:IM,MinimumIntensityProjectionExtension:lM},JsA={pickable:{type:"boolean",value:!0,compare:!0},coordinateSystem:HA.CARTESIAN,contrastLimits:{type:"array",value:[],compare:!0},channelsVisible:{type:"array",value:[],compare:!0},selections:{type:"array",value:[],compare:!0},domain:{type:"array",value:[],compare:!0},viewportId:{type:"string",value:"",compare:!0},loader:{type:"object",value:{getRaster:async()=>({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:CA.NEAREST,compare:!0},extensions:{type:"array",value:[new ja],compare:!0}},$l=class extends Ui{finalizeState(){this.state.abortController.abort()}updateState({props:e,oldProps:A}){const t=e.loader!==A.loader,i=e.selections!==A.selections;if(t||i){const{loader:n,selections:r=[],onViewportLoad:o}=this.props,s=new AbortController;this.setState({abortController:s});const{signal:a}=s,g=l=>n.getRaster({selection:l,signal:a}),I=r.map(g);Promise.all(I).then(l=>{var C,B;const c={data:l.map(u=>u.data),width:(C=l[0])==null?void 0:C.width,height:(B=l[0])==null?void 0:B.height};Kr(n.shape)&&(c.data=c.data[0],c.data.length===c.width*c.height*3&&(c.format=CA.RGB,c.dataFormat=CA.RGB)),o&&o(c),this.setState({...c})}).catch(l=>{if(l!==by)throw l})}}getPickingInfo({info:e,sourceLayer:A}){return e.sourceLayer=A,e.tile=A.props.tile,e}renderLayers(){const{loader:e,id:A}=this.props,{dtype:t}=e,{width:i,height:n,data:r}=this.state;if(!(i&&n))return null;const o=[0,n,i,0];if(Kr(e.shape)){const{photometricInterpretation:s=2}=e.meta;return new Zl(this.props,{image:this.state,photometricInterpretation:s,bounds:o,id:`image-sub-layer-${o}-${A}`,extensions:[]})}return new hu(this.props,{channelData:{data:r,height:n,width:i},bounds:o,id:`image-sub-layer-${o}-${A}`,dtype:t})}};$l.layerName="ImageLayer";$l.defaultProps=JsA;const OsA={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 ja],compare:!0}},om=class extends Ui{renderLayers(){const{loader:e,selections:A,opacity:t,viewportId:i,onTileError:n,onHover:r,id:o,onClick:s,modelMatrix:a,excludeBackground:g,refinementStrategy:I}=this.props,{tileSize:l,dtype:c}=e[0],C=async({index:{x:m,y:v,z:x},signal:D})=>{if(!A||A.length===0)return null;const F=Math.round(-x),N=M=>{const U={x:m,y:v,selection:M,signal:D};return e[F].getTile(U)};try{const M=await Promise.all(A.map(N)),U={data:M.map(P=>P.data),width:M[0].width,height:M[0].height};return Kr(e[F].shape)&&(U.data=U.data[0],U.data.length===U.width*U.height*3&&(U.format=CA.RGB,U.dataFormat=CA.RGB)),U}catch(M){if(M===by)return null;throw M}},{height:B,width:u}=io(e[0]),E=new im(this.props,{id:`Tiled-Image-${o}`,getTileData:C,dtype:c,tileSize:l,zoomOffset:Math.round(Math.log2(a?a.getScale()[0]:1)),extent:[0,0,u,B],minZoom:Math.round(-(e.length-1)),maxZoom:0,refinementStrategy:I||(t===1?"best-available":"no-overlap"),updateTriggers:{getTileData:[e,A]},onTileError:n||e[0].onTileError}),h=e[e.length-1],f=typeof h.getRaster=="function",Q=a?a.clone():new fe;return[f&&!g&&new $l(this.props,{id:`Background-Image-${o}`,loader:h,modelMatrix:Q.scale(2**(e.length-1)),visible:!i||this.context.viewport.id===i,onHover:r,onClick:s,interpolation:CA.LINEAR,onViewportLoad:null}),E]}};om.layerName="MultiscaleImageLayer";om.defaultProps=OsA;const YsA={pickable:{type:"boolean",value:!0,compare:!0},loader:{type:"object",value:{getRaster:async()=>({data:[],height:0,width:0}),getRasterSize:()=>({height:0,width:0}),dtype:"h,filled:!1,stroked:!0,getLineColor:n,getLineWidth:r*2**t}),u=new il({id:`viewport-outline-${A}`,coordinateSystem:HA.CARTESIAN,data:[[[0,0],[g*a,0],[g*a,I*a],[0,I*a]]],getPolygon:h=>h,filled:!1,stroked:!0,getLineColor:o,getLineWidth:s*2**t});return[C,B,u]}};sm.layerName="OverviewLayer";sm.defaultProps=YsA;function KsA(e,A,t){const i=e[2][0]-e[0][0],n=e[2][1]-e[0][1];switch(A){case"bottom-right":{const r=e[2][1]-n*t,o=e[2][0]-i*t;return[r,o]}case"top-right":{const r=e[0][1]+n*t,o=e[2][0]-i*t;return[r,o]}case"top-left":{const r=e[0][1]+n*t,o=e[0][0]+i*t;return[r,o]}case"bottom-left":{const r=e[2][1]-n*t,o=e[0][0]+i*t;return[r,o]}default:throw new Error(`Position ${A} not found`)}}const VsA={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},snap:{type:"boolean",value:!1,compare:!0}},Qu=class extends Ui{renderLayers(){const{id:e,unit:A,size:t,position:i,viewState:n,length:r,snap:o}=this.props,s=em(n),{zoom:a}=n,I=(s[2][0]-s[0][0])*.05,l=Math.max(2**(-a+1.5),(s[2][1]-s[0][1])*.007);let c=I,C=(I*t).toPrecision(5),B=A;if(o){const v=EoA(t,A),x=I*v,[D,F,N]=uoA(x);c=D/v,C=F,B=`${N}m`}const[u,E]=KsA(s,i,r),h=E+I,f=i.endsWith("-left"),Q=new hI({id:`scale-bar-length-${e}`,coordinateSystem:HA.CARTESIAN,data:[[[f?E:h-c,u],[f?E+c:h,u]]],getSourcePosition:v=>v[0],getTargetPosition:v=>v[1],getWidth:2,getColor:[220,220,220]}),d=new hI({id:`scale-bar-height-left-${e}`,coordinateSystem:HA.CARTESIAN,data:[[[f?E:h-c,u-l],[f?E:h-c,u+l]]],getSourcePosition:v=>v[0],getTargetPosition:v=>v[1],getWidth:2,getColor:[220,220,220]}),w=new hI({id:`scale-bar-height-right-${e}`,coordinateSystem:HA.CARTESIAN,data:[[[f?E+c:h,u-l],[f?E+c:h,u+l]]],getSourcePosition:v=>v[0],getTargetPosition:v=>v[1],getWidth:2,getColor:[220,220,220]}),m=new Yl({id:`units-label-layer-${e}`,coordinateSystem:HA.CARTESIAN,data:[{text:`${C}${B}`,position:[f?E+I*.5:h-I*.5,u+l*4]}],getColor:[220,220,220,255],getSize:12,fontFamily:loA,sizeUnits:"meters",sizeScale:2**-a,characterSet:[...B.split(""),...coA(10).map(v=>String(v)),".","e","+"]});return[Q,d,w,m]}};Qu.layerName="ScaleBarLayer";Qu.defaultProps=VsA;var WsA=`#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; -} -`,zsA=`#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); -} -`;const jsA={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); - } - `},XsA=[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],tx=1,ZsA={pickable:!1,coordinateSystem:HA.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 fe,compare:!0},channelsVisible:{type:"array",value:[],compare:!0},extensions:{type:"array",value:[new fu.AdditiveBlendExtension],compare:!0}};function ix(){const e=Am("Float32");return{...e,sampler:e.sampler.replace("2D","3D"),cast:A=>new Float32Array(A)}}function $sA(e){let A={};if(e.forEach(t=>{A=t.rendering}),!A._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 A}const am=class extends gi{initializeState(){const{gl:e}=this.context;e.pixelStorei(CA.UNPACK_ALIGNMENT,1),e.pixelStorei(CA.PACK_ALIGNMENT,1);const A=rs.getDefaultProgramManager(e),t="fs:DECKGL_PROCESS_INTENSITY(inout float intensity, vec2 contrastLimits, int channelIndex)";A._hookFunctions.includes(t)||A.addShaderHook(t)}_isHookDefinedByExtensions(e){const{extensions:A}=this.props;return A==null?void 0:A.some(t=>{const i=t.getShaders();if(i){const{inject:n={},modules:r=[]}=i,o=n[e],s=r.some(a=>a.inject&&(a==null?void 0:a.inject[e]));return o||s}return!1})}getShaders(){const{clippingPlanes:e,extensions:A}=this.props,{sampler:t}=ix(),{_BEFORE_RENDER:i,_RENDER:n,_AFTER_RENDER:r}=$sA(A),o=this._isHookDefinedByExtensions("fs:DECKGL_PROCESS_INTENSITY"),s={inject:{},...jsA};return o||(s.inject["fs:DECKGL_PROCESS_INTENSITY"]=` - intensity = apply_contrast_limits(intensity, contrastLimits); - `),super.getShaders({vs:WsA,fs:zsA.replace("_BEFORE_RENDER",i).replace("_RENDER",n).replace("_AFTER_RENDER",r),defines:{SAMPLER_TYPE:t,NUM_PLANES:String(e.length||tx)},modules:[s]})}finalizeState(){super.finalizeState(),this.state.textures&&Object.values(this.state.textures).forEach(e=>e&&e.delete())}updateState({props:e,oldProps:A,changeFlags:t}){var i,n;if(t.extensionsChanged||e.colormap!==A.colormap||e.renderingMode!==A.renderingMode||e.clippingPlanes.length!==A.clippingPlanes.length){const{gl:r}=this.context;this.state.model&&this.state.model.delete(),this.setState({model:this._getModel(r)})}e.channelData&&((i=e==null?void 0:e.channelData)==null?void 0:i.data)!==((n=A==null?void 0:A.channelData)==null?void 0:n.data)&&this.loadTexture(e.channelData)}_getModel(e){return e?new di(e,{...this.getShaders(),geometry:new En({drawMode:e.TRIANGLE_STRIP,attributes:{positions:new Float32Array(XsA)}})}):null}draw({uniforms:e}){const{textures:A,model:t,scaleMatrix:i}=this.state,{contrastLimits:n,xSlice:r,ySlice:o,zSlice:s,modelMatrix:a,channelsVisible:g,domain:I,dtype:l,clippingPlanes:c,resolutionMatrix:C}=this.props,{viewMatrix:B,viewMatrixInverse:u,projectionMatrix:E}=this.context.viewport;if(A&&t&&i){const h=AM({contrastLimits:n,channelsVisible:g,domain:I,dtype:l}),f=i.clone().invert(),Q=C.clone().invert(),d=$_(c.map(v=>v.clone().transform(f).transform(Q)),new Po([1,0,0]),c.length||tx),w=d.map(v=>v.normal).flat(),m=d.map(v=>v.distance);t.setUniforms({...e,...A,contrastLimits:h,xSlice:new Float32Array(r?r.map(v=>v/i[0]/C[0]):[0,1]),ySlice:new Float32Array(o?o.map(v=>v/i[5]/C[5]):[0,1]),zSlice:new Float32Array(s?s.map(v=>v/i[10]/C[10]):[0,1]),eye_pos:new Float32Array([u[12],u[13],u[14]]),view:B,proj:E,scale:i,resolution:C,model:a||new fe,normals:w,distances:m}).draw()}}loadTexture(e){const A={volume0:null,volume1:null,volume2:null,volume3:null,volume4:null,volume5:null};if(this.state.textures&&Object.values(this.state.textures).forEach(t=>t&&t.delete()),e&&Object.keys(e).length>0&&e.data){const{height:t,width:i,depth:n}=e;e.data.forEach((r,o)=>{A[`volume${o}`]=this.dataToTexture(r,i,t,n)},this),this.setState({textures:A,scaleMatrix:new fe().scale(this.props.physicalSizeScalingMatrix.transformPoint([i,t,n]))})}}dataToTexture(e,A,t,i){var o,s;const n=ix();return new xL(this.context.gl,{width:A,height:t,depth:i,data:(s=(o=n.cast)==null?void 0:o.call(n,e))!=null?s:e,format:n.dataFormat,dataFormat:n.format,type:n.type,mipmaps:!1,parameters:{[CA.TEXTURE_MIN_FILTER]:CA.LINEAR,[CA.TEXTURE_MAG_FILTER]:CA.LINEAR,[CA.TEXTURE_WRAP_S]:CA.CLAMP_TO_EDGE,[CA.TEXTURE_WRAP_T]:CA.CLAMP_TO_EDGE,[CA.TEXTURE_WRAP_R]:CA.CLAMP_TO_EDGE}})}};am.layerName="XR3DLayer";am.defaultProps=ZsA;async function AaA({source:e,selection:A,onUpdate:t=()=>{},downsampleDepth:i=1,signal:n}){const{shape:r,labels:o,dtype:s}=e,{height:a,width:g}=io(e),I=r[o.indexOf("z")],l=Math.max(1,Math.floor(I/i)),c=a*g,C=`${s}Array`,B=globalThis[C],u=new B(c*l);return await Promise.all(new Array(l).fill(0).map(async(E,h)=>{const f={...A,z:h*i},{data:Q}=await e.getRaster({selection:f,signal:n});let d=0;for(t();dnew Yl({id:`text-${t}`,coordinateSystem:HA.CARTESIAN,data:[{text:e,position:A.position}],getColor:[220,220,220,255],getSize:25,sizeUnits:"meters",sizeScale:2**-A.zoom,fontFamily:"Helvetica"}),eaA={pickable:!1,coordinateSystem:HA.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 fu.AdditiveBlendExtension],compare:!0}},gm=class extends Ui{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:e,props:A}){const t=A.loader!==e.loader,i=A.resolution!==e.resolution,n=A.selections!==e.selections;if(i&&this.clearState(),t||n||i){const{loader:r,selections:o=[],resolution:s,onViewportLoad:a}=this.props,g=r[s];let I=0;const l=(g.shape[g.labels.indexOf("z")]>>s)*o.length,c=()=>{I+=.5/l,this.props.onUpdate&&this.props.onUpdate({progress:I}),this.setState({progress:I})},C=new AbortController;this.setState({abortController:C});const{signal:B}=C,u=o.map(h=>AaA({selection:h,source:g,onUpdate:c,downsampleDepth:2**s,signal:B})),E=eM(r[s]);Promise.all(u).then(h=>{var Q,d,w;a&&a(h);const f={data:h.map(m=>m.data),width:(Q=h[0])==null?void 0:Q.width,height:(d=h[0])==null?void 0:d.height,depth:(w=h[0])==null?void 0:w.depth};this.setState({...f,physicalSizeScalingMatrix:E,resolutionMatrix:new fe().scale(2**s)})})}}renderLayers(){const{loader:e,id:A,resolution:t,useProgressIndicator:i,useWebGL1Warning:n}=this.props,{dtype:r}=e[t],{data:o,width:s,height:a,depth:g,progress:I,physicalSizeScalingMatrix:l,resolutionMatrix:c}=this.state,{gl:C}=this.context;if(!ie(C)&&n){const{viewport:B}=this.context;return nx(["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(` -`),B,A)}if(!(s&&a)&&i){const{viewport:B}=this.context;return nx(`Loading Volume ${String((I||0)*100).slice(0,5)}%...`,B,A)}return new am(this.props,{channelData:{data:o,width:s,height:a,depth:g},id:`XR3DLayer-${0}-${a}-${s}-${0}-${t}-${A}`,physicalSizeScalingMatrix:l,parameters:{[CA.CULL_FACE]:!0,[CA.CULL_FACE_MODE]:CA.FRONT,[CA.DEPTH_TEST]:!1,blendFunc:[CA.SRC_ALPHA,CA.ONE],blend:!0},resolutionMatrix:c,dtype:r})}};gm.layerName="VolumeLayer";gm.defaultProps=eaA;const taA=typeof window!="undefined"?p.exports.useLayoutEffect:p.exports.useEffect;var iaA=taA;function rE(e,A){for(;e;){if(e===A)return!0;e=Object.getPrototypeOf(e)}return!1}const naA={position:"absolute",zIndex:-1};function cM(e,A){if(typeof e=="function")return e(A);if(Array.isArray(e))return e.map(t=>cM(t,A));if(du(e)){if(raA(e))return A.style=naA,p.exports.cloneElement(e,A);if(oaA(e))return p.exports.cloneElement(e,A)}return e}function du(e){return e&&typeof e=="object"&&"type"in e||!1}function raA(e){const A=e.type,t=A&&A.defaultProps;return t&&t.mapStyle}function oaA(e){const A=e.type;return A&&A.deckGLViewProps}function Xd(e){if(typeof e=="function")return p.exports.createElement(Yr,{},e);if(Array.isArray(e))return e.map(Xd);if(du(e)){if(e.type===p.exports.Fragment)return Xd(e.props.children);if(rE(e.type,Yr))return e}return e}function saA({children:e,layers:A=[],views:t=null}){const i=[],n=[],r={};return p.exports.Children.forEach(Xd(e),o=>{if(du(o)){const s=o.type;if(rE(s,gi)){const a=aaA(s,o.props);n.push(a)}else i.push(o);if(rE(s,Yr)&&s!==Yr&&o.props.id){const a=new s(o.props);r[a.id]=a}}else o&&i.push(o)}),Object.keys(r).length>0&&(Array.isArray(t)?t.forEach(o=>{r[o.id]=o}):t&&(r[t.id]=t),t=Object.values(r)),A=n.length>0?[...n,...A]:A,{layers:A,children:i,views:t}}function aaA(e,A){const t={},i=e.defaultProps||{};for(const n in A)i[n]!==A[n]&&(t[n]=A[n]);return new e(t)}function gaA({children:e,deck:A,ContextProvider:t}){const{viewManager:i}=A||{};if(!i||!i.views.length)return[];const n={},r=i.views[0].id;for(const o of e){let s=r,a=o;du(o)&&rE(o.type,Yr)&&(s=o.props.id||r,a=o.props.children);const g=i.getViewport(s),I=i.getViewState(s);if(g){const{x:l,y:c,width:C,height:B}=g;a=cM(a,{x:l,y:c,width:C,height:B,viewport:g,viewState:I}),n[s]||(n[s]={viewport:g,children:[]}),n[s].children.push(a)}}return Object.keys(n).map(o=>{const{viewport:s,children:a}=n[o],{x:g,y:I,width:l,height:c}=s,C={position:"absolute",left:g,top:I,width:l,height:c},B="view-".concat(o),u=p.exports.createElement("div",{key:B,id:B,style:C},...a);if(t){const E={viewport:s,container:A.canvas.offsetParent,eventManager:A.eventManager,onViewStateChange:h=>{h.viewId=o,A._onViewStateChange(h)}};return p.exports.createElement(t,{key:B,value:E},u)}return u})}const IaA={mixBlendMode:null};function laA({width:e,height:A,style:t}){const i={position:"absolute",zIndex:0,left:0,top:0,width:e,height:A},n={left:0,top:0};if(t)for(const r in t)r in IaA?n[r]=t[r]:i[r]=t[r];return{containerStyle:i,canvasStyle:n}}function caA(e){return{get deck(){return e.deck},pickObject:A=>e.deck.pickObject(A),pickMultipleObjects:A=>e.deck.pickMultipleObjects(A),pickObjects:A=>e.deck.pickObjects(A)}}function CM(e){e.redrawReason&&(e.deck._drawLayers(e.redrawReason),e.redrawReason=null)}function CaA(e,A,t){const i=new A({...t,_customRender:n=>{e.redrawReason=n;const r=i.getViewports();e.lastRenderedViewports!==r?e.forceUpdate():CM(e)}});return i}const BM=p.exports.forwardRef((e,A)=>{const[t,i]=p.exports.useState(0),r=p.exports.useRef({control:null,version:t,forceUpdate:()=>i(w=>w+1)}).current,o=p.exports.useRef(null),s=p.exports.useRef(null),a=p.exports.useMemo(()=>saA(e),[e.layers,e.views,e.children]);let g=!0;const I=w=>{var m;return g&&e.viewState?(r.viewStateUpdateRequested=w,null):(r.viewStateUpdateRequested=null,(m=e.onViewStateChange)===null||m===void 0?void 0:m.call(e,w))},l=w=>{if(g)r.interactionStateUpdateRequested=w;else{var m;r.interactionStateUpdateRequested=null,(m=e.onInteractionStateChange)===null||m===void 0||m.call(e,w)}},c=p.exports.useMemo(()=>{const w={...e,style:null,width:"100%",height:"100%",parent:o.current,canvas:s.current,layers:a.layers,views:a.views,onViewStateChange:I,onInteractionStateChange:l};return delete w._customRender,r.deck&&r.deck.setProps(w),w},[e]);p.exports.useEffect(()=>{const w=e.Deck||$E;return r.deck=CaA(r,w,{...c,parent:o.current,canvas:s.current}),()=>{var m;return(m=r.deck)===null||m===void 0?void 0:m.finalize()}},[]),iaA(()=>{CM(r);const{viewStateUpdateRequested:w,interactionStateUpdateRequested:m}=r;w&&I(w),m&&l(m)}),p.exports.useImperativeHandle(A,()=>caA(r),[]);const C=r.deck&&r.deck.isInitialized?r.deck.getViewports():void 0,{ContextProvider:B,width:u,height:E,id:h,style:f}=e,{containerStyle:Q,canvasStyle:d}=p.exports.useMemo(()=>laA({width:u,height:E,style:f}),[u,E,f]);if(!r.viewStateUpdateRequested&&r.lastRenderedViewports===C||r.version!==t){r.lastRenderedViewports=C,r.version=t;const w=gaA({children:a.children,deck:r.deck,ContextProvider:B}),m=p.exports.createElement("canvas",{key:"canvas",id:h||"deckgl-overlay",ref:s,style:d});r.control=p.exports.createElement("div",{id:"".concat(h||"deckgl","-wrapper"),ref:o,style:Q},[m,w])}return g=!1,r.control});BM.defaultProps=$E.defaultProps;var BaA=BM;class pu{constructor({id:A,x:t=0,y:i=0,height:n,width:r}){this.width=r,this.height=n,this.id=A,this.x=t,this.y=i}getDeckGlView(){return new ql({controller:!0,id:this.id,height:this.height,width:this.width,x:this.x,y:this.y})}filterViewState({viewState:A}){const{id:t,height:i,width:n}=this;return A.id===t?{height:i,width:n,...A}:null}getLayers({viewStates:A,props:t}){}}function Wo(e){return`-#${e}#`}function yu(e,A,t=0,i=!1,n){const r=Array.isArray(e)?e[0]:e,{width:o,height:s}=io(r),a=(n||new fe).getScale(),[g,I]=[a[0]*o,a[1]*s],l=r.shape[r.labels.indexOf("z")],c=Math.log2(Math.min(A.width/g,A.height/I))-t,C=eM(r);return{target:(n||new fe).transformPoint((i?C:new fe).transformPoint([o/2,s/2,i?l/2:0])),zoom:c}}function EM(e,A){var o,s;const{loader:t}=A,i=(s=(o=t[0])==null?void 0:o.constructor)==null?void 0:s.name,n=t.length>1?om:$l,r=t.length>1?t:t[0];return new n({...A,id:`${i}${Wo(e)}`,viewportId:e,loader:r})}const XC="overview";class EaA extends XE{constructor(A){super(A),this.events=["click"]}handleEvent(A){if(A.type!=="click")return;let[t,i]=this.getCenter(A);const{width:n,height:r,zoom:o,scale:s}=this.props;if(t<0||i<0||t>n||i>r)return;const a=1/(2**o*s);t*=a,i*=a,this.onViewStateChange&&this.onViewStateChange({viewState:{target:[t,i,0]}})}}class uaA extends pu{constructor({id:A,loader:t,detailHeight:i,detailWidth:n,scale:r=.2,margin:o=25,position:s="bottom-right",minimumWidth:a=150,maximumWidth:g=350,minimumHeight:I=150,maximumHeight:l=350,clickCenter:c=!0}){super({id:A}),this.margin=o,this.loader=t,this.position=s,this.detailHeight=i,this.detailWidth=n,this._setHeightWidthScale({detailWidth:n,detailHeight:i,scale:r,minimumWidth:a,maximumWidth:g,minimumHeight:I,maximumHeight:l}),this._setXY(),this.clickCenter=c}_setHeightWidthScale({detailWidth:A,detailHeight:t,scale:i,minimumWidth:n,maximumWidth:r,minimumHeight:o,maximumHeight:s}){const a=this.loader.length,{width:g,height:I}=io(this.loader[0]);if(this._imageWidth=g,this._imageHeight=I,g>I){const l=I/g;this.width=Math.min(r,Math.max(A*i,n)),this.height=this.width*l,this.scale=2**(a-1)/g*this.width}else{const l=g/I;this.height=Math.min(s,Math.max(t*i,o)),this.width=this.height*l,this.scale=2**(a-1)/I*this.height}}_setXY(){const{height:A,width:t,margin:i,position:n,detailWidth:r,detailHeight:o}=this;switch(n){case"bottom-right":{this.x=r-t-i,this.y=o-A-i;break}case"top-right":{this.x=r-t-i,this.y=i;break}case"top-left":{this.x=i,this.y=i;break}case"bottom-left":{this.x=i,this.y=o-A-i;break}default:throw new Error("overviewLocation prop needs to be one of ['bottom-right', 'top-right', 'top-left', 'bottom-left']")}}getDeckGlView(){const{scale:A,clickCenter:t}=this,i=t&&{type:EaA,scale:A};return new ql({controller:i,id:this.id,height:this.height,width:this.width,x:this.x,y:this.y,clear:!0})}filterViewState({viewState:A}){const{_imageWidth:t,_imageHeight:i,scale:n}=this;return{...A,height:this.height,width:this.width,id:this.id,target:[t*n/2,i*n/2,0],zoom:-(this.loader.length-1)}}getLayers({viewStates:A,props:t}){const{detail:i,overview:n}=A;if(!i)throw new Error("Overview requires a viewState with id detail");const r=em(i).map(s=>s.map(a=>a*this.scale));return[new sm(t,{id:Wo(this.id),boundingBox:r,overviewScale:this.scale,zoom:-n.zoom})]}}const Gf="detail";class haA extends pu{constructor({id:A,x:t=0,y:i=0,height:n,width:r,snapScaleBar:o=!1}){super({id:A,x:t,y:i,height:n,width:r}),this.snapScaleBar=o}getLayers({props:A,viewStates:t}){var g,I,l;const{loader:i}=A,{id:n,height:r,width:o}=this,s=t[n],a=[EM(n,A)];if((l=(I=(g=i[0])==null?void 0:g.meta)==null?void 0:I.physicalSizes)!=null&&l.x){const{size:c,unit:C}=i[0].meta.physicalSizes.x;a.push(new Qu({id:Wo(n),loader:i,unit:C,size:c,snap:this.snapScaleBar,viewState:{...s,height:r,width:o}}))}return a}filterViewState({viewState:A,currentViewState:t}){if(A.id===XC){const{target:i}=A;if(i)return{...t,target:i}}return super.filterViewState({viewState:A})}}class rx extends pu{constructor({id:A,x:t=0,y:i=0,height:n,width:r,linkedIds:o=[],panLock:s=!0,zoomLock:a=!0,viewportOutlineColor:g=[255,255,255],viewportOutlineWidth:I=10,snapScaleBar:l=!1}){super({id:A,x:t,y:i,height:n,width:r}),this.linkedIds=o,this.panLock=s,this.zoomLock=a,this.viewportOutlineColor=g,this.viewportOutlineWidth=I,this.snapScaleBar=l}filterViewState({viewState:A,oldViewState:t,currentViewState:i}){const{id:n}=A,{id:r,linkedIds:o,panLock:s,zoomLock:a}=this;if(t&&o.indexOf(n)!==-1&&(a||s)){const g={height:i.height,width:i.width,target:[],zoom:null},[I,l]=i.target;if(a){const c=A.zoom-t.zoom;g.zoom=i.zoom+c}else g.zoom=i.zoom;if(s){const[c,C]=t.target,[B,u]=A.target,E=B-c,h=u-C;g.target.push(I+E),g.target.push(l+h)}else g.target.push(I),g.target.push(l);return{id:r,target:g.target,zoom:g.zoom,height:g.height,width:g.width}}return A.id===r?{id:r,target:A.target,zoom:A.zoom,height:A.height,width:A.width}:{id:r,target:i.target,zoom:i.zoom,height:i.height,width:i.width}}getLayers({props:A,viewStates:t}){var C,B,u;const{loader:i}=A,{id:n,viewportOutlineColor:r,viewportOutlineWidth:o,height:s,width:a}=this,g=t[n],I=em({...g,height:s,width:a}),l=[EM(n,A)],c=new il({id:`viewport-outline-${Wo(n)}`,coordinateSystem:HA.CARTESIAN,data:[I],getPolygon:E=>E,filled:!1,stroked:!0,getLineColor:r,getLineWidth:o*2**-g.zoom});if(l.push(c),(u=(B=(C=i[0])==null?void 0:C.meta)==null?void 0:B.physicalSizes)!=null&&u.x){const{size:E,unit:h}=i[0].meta.physicalSizes.x;l.push(new Qu({id:Wo(n),loader:i,unit:h,size:E,snap:this.snapScaleBar,viewState:{...g,height:s,width:a}}))}return l}}class faA extends pu{constructor({target:A,useFixedAxis:t,...i}){super(i),this.target=A,this.useFixedAxis=t}getDeckGlView(){const{height:A,width:t,id:i,x:n,y:r}=this;return new Kb({id:i,controller:!0,height:A,width:t,x:n,y:r,orbitAxis:"Y"})}filterViewState({viewState:A}){const{id:t,target:i,useFixedAxis:n}=this;return A.id===t?{...A,target:n?i:A.target}:null}getLayers({props:A}){const{loader:t}=A,{id:i}=this;return[new gm(A,{id:`${t.type}${Wo(i)}`})]}}var QaA=function e(A,t){if(A===t)return!0;if(A&&t&&typeof A=="object"&&typeof t=="object"){if(A.constructor!==t.constructor)return!1;var i,n,r;if(Array.isArray(A)){if(i=A.length,i!=t.length)return!1;for(n=i;n--!==0;)if(!e(A[n],t[n]))return!1;return!0}if(A.constructor===RegExp)return A.source===t.source&&A.flags===t.flags;if(A.valueOf!==Object.prototype.valueOf)return A.valueOf()===t.valueOf();if(A.toString!==Object.prototype.toString)return A.toString()===t.toString();if(r=Object.keys(A),i=r.length,i!==Object.keys(t).length)return!1;for(n=i;n--!==0;)if(!Object.prototype.hasOwnProperty.call(t,r[n]))return!1;for(n=i;n--!==0;){var o=r[n];if(!e(A[o],t[o]))return!1}return!0}return A!==A&&t!==t},mu={exports:{}},Ac={};/** @license React v17.0.2 - * react-jsx-runtime.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 daA=p.exports,uM=60103;Ac.Fragment=60107;if(typeof Symbol=="function"&&Symbol.for){var ox=Symbol.for;uM=ox("react.element"),Ac.Fragment=ox("react.fragment")}var paA=daA.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,yaA=Object.prototype.hasOwnProperty,maA={key:!0,ref:!0,__self:!0,__source:!0};function hM(e,A,t){var i,n={},r=null,o=null;t!==void 0&&(r=""+t),A.key!==void 0&&(r=""+A.key),A.ref!==void 0&&(o=A.ref);for(i in A)yaA.call(A,i)&&!maA.hasOwnProperty(i)&&(n[i]=A[i]);if(e&&e.defaultProps)for(i in A=e.defaultProps,A)n[i]===void 0&&(n[i]=A[i]);return{$$typeof:uM,type:e,key:r,ref:o,props:n,_owner:paA.current}}Ac.jsx=hM;Ac.jsxs=hM;mu.exports=Ac;const H=mu.exports.jsx,XA=mu.exports.jsxs,Pi=mu.exports.Fragment,waA=(e,A)=>A===e||(e==null?void 0:e.zoom)===(A==null?void 0:A.zoom)&&(e==null?void 0:e.rotationX)===(A==null?void 0:A.rotationX)&&(e==null?void 0:e.rotationOrbit)===(A==null?void 0:A.rotationOrbit)&&QaA(e==null?void 0:e.target,A==null?void 0:A.target);class vaA extends p.exports.PureComponent{constructor(A){super(A),this.state={viewStates:{}};const{viewStates:t}=this.state,{views:i,viewStates:n}=this.props;i.forEach(r=>{t[r.id]=r.filterViewState({viewState:n.find(o=>o.id===r.id)})}),this._onViewStateChange=this._onViewStateChange.bind(this),this.layerFilter=this.layerFilter.bind(this),this.onHover=this.onHover.bind(this)}layerFilter({layer:A,viewport:t}){return A.id.includes(Wo(t.id))}_onViewStateChange({viewId:A,viewState:t,interactionState:i,oldViewState:n}){const{views:r,onViewStateChange:o}=this.props;return t=o&&o({viewId:A,viewState:t,interactionState:i,oldViewState:n})||t,this.setState(s=>{const a={};return r.forEach(g=>{const I=s.viewStates[g.id];a[g.id]=g.filterViewState({viewState:{...t,id:A},oldViewState:n,currentViewState:I})}),{viewStates:a}}),t}componentDidUpdate(A){const{props:t}=this,{views:i}=t,n={...this.state.viewStates};let r=!1;i.forEach(o=>{var l,c;const s=(l=t.viewStates)==null?void 0:l.find(C=>C.id===o.id);if(!s)return;const a=(c=A.viewStates)==null?void 0:c.find(C=>C.id===o.id);if(waA(s,a))return;r=!0;const{height:g,width:I}=o;n[o.id]=o.filterViewState({viewState:{...s,height:g,width:I,id:o.id}})}),r&&this.setState({viewStates:n})}static getDerivedStateFromProps(A,t){const{views:i,viewStates:n}=A;if(i.some(r=>!t.viewStates[r.id]||r.height!==t.viewStates[r.id].height||r.width!==t.viewStates[r.id].width)){const r={};return i.forEach(o=>{const{height:s,width:a}=o,g=t.viewStates[o.id];r[o.id]=o.filterViewState({viewState:{...g||n.find(I=>I.id===o.id),height:s,width:a,id:o.id}})}),{viewStates:r}}return t}onHover(A,t){const{tile:i,coordinate:n,sourceLayer:r}=A,{onHover:o,hoverHooks:s}=this.props;if(o&&o(A,t),!s||!n||!r)return null;const{handleValue:a=()=>{},handleCoordnate:g=()=>{}}=s;let I;if(r.id.includes("Tiled")){if(!(i!=null&&i.content))return null;const{content:l,bbox:c,index:{z:C}}=i;if(!l.data||!c)return null;const{data:B,width:u,height:E}=l,{left:h,right:f,top:Q,bottom:d}=c,w=[h,B.heightD[x])}else{const{channelData:l}=r.props;if(!l)return null;const{data:c,width:C,height:B}=l;if(!c||!C||!B)return null;const u=[0,B,C,0],{zoom:E}=r.context.viewport,h=Math.max(1,2**Math.floor(-E)),f=[Math.floor((n[0]-u[0])/h),Math.floor((n[1]-u[3])/h)],Q=f[1]*C+f[0];I=c.map(d=>d[Q])}a(I),g(n)}_renderLayers(){const{onHover:A}=this,{viewStates:t}=this.state,{views:i,layerProps:n}=this.props;return i.map((r,o)=>r.getLayers({viewStates:t,props:{...n[o],onHover:A}}))}render(){const{views:A,randomize:t,useDevicePixels:i=!0,deckProps:n}=this.props,{viewStates:r}=this.state,o=A.map(s=>s.getDeckGlView());if(t){const s=Math.random(),a=o[0],g=s*1.49,I=Math.round(g*(A.length-1));o[0]=o[I],o[I]=a}return H(BaA,{...n!=null?n:{},layerFilter:this.layerFilter,layers:(n==null?void 0:n.layers)===void 0?[...this._renderLayers()]:[...this._renderLayers(),...n.layers],onViewStateChange:this._onViewStateChange,views:o,viewState:r,useDevicePixels:i,getCursor:({isDragging:s})=>s?"grabbing":"crosshair"})}}const Im=e=>H(vaA,{...e}),SaA=e=>{const{loader:A,contrastLimits:t,colors:i,channelsVisible:n,viewStates:r,colormap:o,overview:s,overviewOn:a,selections:g,hoverHooks:I={handleValue:()=>{},handleCoordinate:()=>{}},height:l,width:c,lensEnabled:C=!1,lensSelection:B=0,lensRadius:u=100,lensBorderColor:E=[255,255,255],lensBorderRadius:h=.02,clickCenter:f=!0,transparentColor:Q,snapScaleBar:d=!1,onViewStateChange:w,onHover:m,onViewportLoad:v,extensions:x=[new ja],deckProps:D}=e,F=r==null?void 0:r.find(Z=>Z.id===Gf),N=p.exports.useMemo(()=>F||yu(A,{height:l,width:c},.5),[A,F]),M=new haA({id:Gf,height:l,width:c,snapScaleBar:d}),U={loader:A,contrastLimits:t,colors:i,channelsVisible:n,selections:g,onViewportLoad:v,colormap:o,lensEnabled:C,lensSelection:B,lensRadius:u,lensBorderColor:E,lensBorderRadius:h,extensions:x,transparentColor:Q},P=[M],W=[U],J=[{...N,id:Gf}];if(a&&A){const Z=(r==null?void 0:r.find(O=>O.id===XC))||{...N,id:XC},z=new uaA({id:XC,loader:A,detailHeight:l,detailWidth:c,clickCenter:f,...s});P.push(z),W.push({...U,lensEnabled:!1}),J.push(Z)}return A?H(Im,{layerProps:W,views:P,viewStates:J,hoverHooks:I,onViewStateChange:w,onHover:m,deckProps:D}):null},DaA=e=>{const{loader:A,contrastLimits:t,colors:i,channelsVisible:n,viewStates:r,colormap:o,panLock:s,selections:a,zoomLock:g,height:I,width:l,lensEnabled:c=!1,lensSelection:C=0,lensRadius:B=100,lensBorderColor:u=[255,255,255],lensBorderRadius:E=.02,transparentColor:h,snapScaleBar:f=!1,onViewStateChange:Q,onHover:d,onViewportLoad:w,extensions:m=[new ja],deckProps:v}=e,x=r==null?void 0:r.find(J=>J.id==="left"),D=r==null?void 0:r.find(J=>J.id==="right"),F=p.exports.useMemo(()=>{if(x&&D)return r;const J=yu(A,{height:I,width:l/2},.5);return[x||{...J,id:"left"},D||{...J,id:"right"}]},[A,x,D]),N=new rx({id:"left",linkedIds:["right"],panLock:s,zoomLock:g,height:I,width:l/2,snapScaleBar:f}),M=new rx({id:"right",x:l/2,linkedIds:["left"],panLock:s,zoomLock:g,height:I,width:l/2,snapScaleBar:f}),U={loader:A,contrastLimits:t,colors:i,channelsVisible:n,selections:a,onViewportLoad:w,colormap:o,lensEnabled:c,lensSelection:C,lensRadius:B,lensBorderColor:u,lensBorderRadius:E,extensions:m,transparentColor:h};return A?H(Im,{layerProps:[U,U],views:[M,N],randomize:!0,onViewStateChange:Q,onHover:d,viewStates:F,deckProps:v}):null},RaA=e=>{const{loader:A,contrastLimits:t,colors:i,channelsVisible:n,selections:r,colormap:o,resolution:s=Math.max(0,A.length-1),modelMatrix:a,onViewStateChange:g,xSlice:I=null,ySlice:l=null,zSlice:c=null,onViewportLoad:C,height:B,width:u,viewStates:E,clippingPlanes:h=[],useFixedAxis:f=!0,extensions:Q=[new fu.AdditiveBlendExtension]}=e,d=E==null?void 0:E.find(N=>(N==null?void 0:N.id)==="3d"),w=p.exports.useMemo(()=>d||{...yu(A,{height:B,width:u},1,!0,a),rotationX:0,rotationOrbit:0},[A,s,a]),m=[d||{...w,id:"3d"}],v=new faA({id:"3d",target:m[0].target,useFixedAxis:f});return A?H(Im,{layerProps:[{loader:A,contrastLimits:t,colors:i,channelsVisible:n,selections:r,colormap:o,xSlice:I,ySlice:l,zSlice:c,resolution:s,extensions:Q,modelMatrix:a,onViewportLoad:()=>setTimeout(C,0),clippingPlanes:h}],views:[v],viewStates:m,onViewStateChange:g,useDevicePixels:!1}):null},xaA=e=>e.charAt(0).toUpperCase()+e.slice(1),lm=(e,A)=>{const t={};return Object.entries(e).forEach(([i,n])=>{typeof n=="boolean"&&(t[`toggle${xaA(i)}`]=()=>A(r=>({...r,[i]:!r[i]})))}),t},FaA={channelsVisible:[],contrastLimits:[],colors:[],domains:[],selections:[],ids:[],loader:[{labels:[],shape:[]}],image:0},_f={channelsVisible:!0,contrastLimits:[0,65535],colors:[255,255,255],domains:[0,65535],selections:{z:0,c:0,t:0},ids:""},yi=Fp(e=>({...FaA,...lm(_f,e),toggleIsOn:A=>e(t=>{const i=[...t.channelsVisible];return i[A]=!i[A],{...t,channelsVisible:i}}),setPropertiesForChannel:(A,t)=>e(i=>{const n=Object.entries(t),r={};return n.forEach(([o,s])=>{r[o]=[...i[o]],r[o][A]=s}),{...i,...r}}),removeChannel:A=>e(t=>{const i={},n=Object.keys(_f);return Object.keys(t).forEach(r=>{n.includes(r)&&(i[r]=t[r].filter((o,s)=>s!==A))}),{...t,...i}}),addChannel:A=>e(t=>{const i=Object.entries(A),n={...t};return i.forEach(([r,o])=>{n[r]=[...t[r],o]}),Object.entries(_f).forEach(([r,o])=>{n[r].length{}},he=Fp(e=>({...sx,...lm(sx,e)})),ax={isChannelLoading:[],isViewerLoading:!0,pixelValues:[],isOffsetsSnackbarOn:!1,loaderErrorSnackbar:{on:!1,message:null},isNoImageUrlSnackbarOn:!1,isVolumeRenderingWarningOn:!1,useLinkedView:!1,isControllerOn:!0,use3d:!1,useLens:!1,useColormap:!1,globalSelection:{z:0,t:0},channelOptions:[],metadata:null,viewState:null,source:"",pyramidResolution:0},_A=Fp(e=>({...ax,...lm(ax,e),setIsChannelLoading:(A,t)=>e(i=>{const n=[...i.isChannelLoading];return n[A]=t,{...i,isChannelLoading:n}}),addIsChannelLoading:A=>e(t=>{const i=[...t.isChannelLoading,A];return{...t,isChannelLoading:i}}),removeIsChannelLoading:A=>e(t=>{const i=[...t.isChannelLoading];return i.splice(A,1),{...t,isChannelLoading:i}})})),hn=()=>{const[e,A]=yi(t=>[t.loader,t.image]);return Array.isArray(e[0])?e[A]:e},cm=()=>{const e=yi(t=>t.image),A=_A(t=>t.metadata);return Array.isArray(A)?A[e]:A};function $a(e,A,t,i){function n(r){return r instanceof t?r:new t(function(o){o(r)})}return new(t||(t=Promise))(function(r,o){function s(I){try{g(i.next(I))}catch(l){o(l)}}function a(I){try{g(i.throw(I))}catch(l){o(l)}}function g(I){I.done?r(I.value):n(I.value).then(s,a)}g((i=i.apply(e,A||[])).next())})}function Ag(e,A){var t={label:0,sent:function(){if(r[0]&1)throw r[1];return r[1]},trys:[],ops:[]},i,n,r,o;return o={next:s(0),throw:s(1),return:s(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function s(g){return function(I){return a([g,I])}}function a(g){if(i)throw new TypeError("Generator is already executing.");for(;t;)try{if(i=1,n&&(r=g[0]&2?n.return:g[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,g[1])).done)return r;switch(n=0,r&&(g=[g[0]&2,r.value]),g[0]){case 0:case 1:r=g;break;case 4:return t.label++,{value:g[1],done:!1};case 5:t.label++,n=g[1],g=[0];continue;case 7:g=t.ops.pop(),t.trys.pop();continue;default:if(r=t.trys,!(r=r.length>0&&r[r.length-1])&&(g[0]===6||g[0]===2)){t=0;continue}if(g[0]===3&&(!r||g[1]>r[0]&&g[1]0)&&!(n=i.next()).done;)r.push(n.value)}catch(s){o={error:s}}finally{try{n&&!n.done&&(t=i.return)&&t.call(i)}finally{if(o)throw o.error}}return r}function LaA(){for(var e=[],A=0;A0?i:e.name,writable:!1,configurable:!1,enumerable:!0})}return t}function GaA(e){var A=e.name,t=A&&A.lastIndexOf(".")!==-1;if(t&&!e.type){var i=A.split(".").pop().toLowerCase(),n=baA.get(i);n&&Object.defineProperty(e,"type",{value:n,writable:!1,configurable:!1,enumerable:!0})}return e}var _aA=[".DS_Store","Thumbs.db"];function MaA(e){return $a(this,void 0,void 0,function(){return Ag(this,function(A){return oE(e)&&kaA(e)?[2,HaA(e.dataTransfer,e.type)]:TaA(e)?[2,UaA(e)]:Array.isArray(e)&&e.every(function(t){return"getFile"in t&&typeof t.getFile=="function"})?[2,PaA(e)]:[2,[]]})})}function kaA(e){return oE(e.dataTransfer)}function TaA(e){return oE(e)&&oE(e.target)}function oE(e){return typeof e=="object"&&e!==null}function UaA(e){return Zd(e.target.files).map(function(A){return ec(A)})}function PaA(e){return $a(this,void 0,void 0,function(){var A;return Ag(this,function(t){switch(t.label){case 0:return[4,Promise.all(e.map(function(i){return i.getFile()}))];case 1:return A=t.sent(),[2,A.map(function(i){return ec(i)})]}})})}function HaA(e,A){return $a(this,void 0,void 0,function(){var t,i;return Ag(this,function(n){switch(n.label){case 0:return e===null?[2,[]]:e.items?(t=Zd(e.items).filter(function(r){return r.kind==="file"}),A!=="drop"?[2,t]:[4,Promise.all(t.map(qaA))]):[3,2];case 1:return i=n.sent(),[2,gx(fM(i))];case 2:return[2,gx(Zd(e.files).map(function(r){return ec(r)}))]}})})}function gx(e){return e.filter(function(A){return _aA.indexOf(A.name)===-1})}function Zd(e){if(e===null)return[];for(var A=[],t=0;te.length)&&(A=e.length);for(var t=0,i=new Array(A);tt)return[!1,Ex(t)];if(e.sizet)return[!1,Ex(t)]}return[!0,null]}function Lg(e){return e!=null}function tgA(e){var A=e.files,t=e.accept,i=e.minSize,n=e.maxSize,r=e.multiple,o=e.maxFiles;return!r&&A.length>1||r&&o>=1&&A.length>o?!1:A.every(function(s){var a=pM(s,t),g=Cx(a,1),I=g[0],l=yM(s,i,n),c=Cx(l,1),C=c[0];return I&&C})}function sE(e){return typeof e.isPropagationStopped=="function"?e.isPropagationStopped():typeof e.cancelBubble!="undefined"?e.cancelBubble:!1}function lC(e){return e.dataTransfer?Array.prototype.some.call(e.dataTransfer.types,function(A){return A==="Files"||A==="application/x-moz-file"}):!!e.target&&!!e.target.files}function hx(e){e.preventDefault()}function igA(e){return e.indexOf("MSIE")!==-1||e.indexOf("Trident/")!==-1}function ngA(e){return e.indexOf("Edge/")!==-1}function rgA(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:window.navigator.userAgent;return igA(e)||ngA(e)}function Xi(){for(var e=arguments.length,A=new Array(e),t=0;t1?n-1:0),o=1;oe.length)&&(A=e.length);for(var t=0,i=new Array(A);t=0)&&(!Object.prototype.propertyIsEnumerable.call(e,i)||(t[i]=e[i]))}return t}function fgA(e,A){if(e==null)return{};var t={},i=Object.keys(e),n,r;for(r=0;r=0)&&(t[n]=e[n]);return t}var Cm=p.exports.forwardRef(function(e,A){var t=e.children,i=aE(e,sgA),n=vM(i),r=n.open,o=aE(n,agA);return p.exports.useImperativeHandle(A,function(){return{open:r}},[r]),H(Pi,{children:t(Je(Je({},o),{},{open:r}))})});Cm.displayName="Dropzone";var wM={disabled:!1,getFilesFromEvent:MaA,maxSize:1/0,minSize:0,multiple:!0,maxFiles:0,preventDropOnDocument:!0,noClick:!1,noKeyboard:!1,noDrag:!1,noDragEventsBubbling:!1,validator:null,useFsAccessApi:!1};Cm.defaultProps=wM;Cm.propTypes={children:me.func,accept:me.oneOfType([me.string,me.arrayOf(me.string)]),multiple:me.bool,preventDropOnDocument:me.bool,noClick:me.bool,noKeyboard:me.bool,noDrag:me.bool,noDragEventsBubbling:me.bool,minSize:me.number,maxSize:me.number,maxFiles:me.number,disabled:me.bool,getFilesFromEvent:me.func,onFileDialogCancel:me.func,onFileDialogOpen:me.func,useFsAccessApi:me.bool,onDragEnter:me.func,onDragLeave:me.func,onDragOver:me.func,onDrop:me.func,onDropAccepted:me.func,onDropRejected:me.func,validator:me.func};var e0={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,draggedFiles:[],acceptedFiles:[],fileRejections:[]};function vM(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},A=Je(Je({},wM),e),t=A.accept,i=A.disabled,n=A.getFilesFromEvent,r=A.maxSize,o=A.minSize,s=A.multiple,a=A.maxFiles,g=A.onDragEnter,I=A.onDragLeave,l=A.onDragOver,c=A.onDrop,C=A.onDropAccepted,B=A.onDropRejected,u=A.onFileDialogCancel,E=A.onFileDialogOpen,h=A.useFsAccessApi,f=A.preventDropOnDocument,Q=A.noClick,d=A.noKeyboard,w=A.noDrag,m=A.noDragEventsBubbling,v=A.validator,x=p.exports.useMemo(function(){return typeof E=="function"?E:dx},[E]),D=p.exports.useMemo(function(){return typeof u=="function"?u:dx},[u]),F=p.exports.useRef(null),N=p.exports.useRef(null),M=p.exports.useReducer(QgA,e0),U=Mf(M,2),P=U[0],W=U[1],J=P.isFocused,Z=P.isFileDialogActive,z=P.draggedFiles,O=function(){Z&&setTimeout(function(){if(N.current){var aA=N.current.files;aA.length||(W({type:"closeDialog"}),D())}},300)};p.exports.useEffect(function(){return h&&fx()?function(){}:(window.addEventListener("focus",O,!1),function(){window.removeEventListener("focus",O,!1)})},[N,Z,D,h]);var Y=p.exports.useRef([]),k=function(aA){F.current&&F.current.contains(aA.target)||(aA.preventDefault(),Y.current=[])};p.exports.useEffect(function(){return f&&(document.addEventListener("dragover",hx,!1),document.addEventListener("drop",k,!1)),function(){f&&(document.removeEventListener("dragover",hx),document.removeEventListener("drop",k))}},[F,f]);var q=p.exports.useCallback(function(eA){eA.preventDefault(),eA.persist(),UA(eA),Y.current=[].concat(lgA(Y.current),[eA.target]),lC(eA)&&Promise.resolve(n(eA)).then(function(aA){sE(eA)&&!m||(W({draggedFiles:aA,isDragActive:!0,type:"setDraggedFiles"}),g&&g(eA))})},[n,g,m]),j=p.exports.useCallback(function(eA){eA.preventDefault(),eA.persist(),UA(eA);var aA=lC(eA);if(aA&&eA.dataTransfer)try{eA.dataTransfer.dropEffect="copy"}catch{}return aA&&l&&l(eA),!1},[l,m]),AA=p.exports.useCallback(function(eA){eA.preventDefault(),eA.persist(),UA(eA);var aA=Y.current.filter(function(re){return F.current&&F.current.contains(re)}),FA=aA.indexOf(eA.target);FA!==-1&&aA.splice(FA,1),Y.current=aA,!(aA.length>0)&&(W({isDragActive:!1,type:"setDraggedFiles",draggedFiles:[]}),lC(eA)&&I&&I(eA))},[F,I,m]),iA=p.exports.useCallback(function(eA,aA){var FA=[],re=[];eA.forEach(function(VA){var _e=pM(VA,t),WA=Mf(_e,2),qA=WA[0],xe=WA[1],se=yM(VA,o,r),JA=Mf(se,2),xA=JA[0],Be=JA[1],ue=v?v(VA):null;if(qA&&xA&&!ue)FA.push(VA);else{var PA=[xe,Be];ue&&(PA=PA.concat(ue)),re.push({file:VA,errors:PA.filter(function(rA){return rA})})}}),(!s&&FA.length>1||s&&a>=1&&FA.length>a)&&(FA.forEach(function(VA){re.push({file:VA,errors:[egA]})}),FA.splice(0)),W({acceptedFiles:FA,fileRejections:re,type:"setFiles"}),c&&c(FA,re,aA),re.length>0&&B&&B(re,aA),FA.length>0&&C&&C(FA,aA)},[W,s,t,o,r,a,c,C,B,v]),gA=p.exports.useCallback(function(eA){eA.preventDefault(),eA.persist(),UA(eA),Y.current=[],lC(eA)&&Promise.resolve(n(eA)).then(function(aA){sE(eA)&&!m||iA(aA,eA)}),W({type:"reset"})},[n,iA,m]),sA=p.exports.useCallback(function(){if(h&&fx()){W({type:"openDialog"}),x();var eA={multiple:s,types:ogA(t)};window.showOpenFilePicker(eA).then(function(aA){return n(aA)}).then(function(aA){return iA(aA,null)}).catch(function(aA){return D(aA)}).finally(function(){return W({type:"closeDialog"})});return}N.current&&(W({type:"openDialog"}),x(),N.current.value=null,N.current.click())},[W,x,D,h,iA,t,s]),BA=p.exports.useCallback(function(eA){!F.current||!F.current.isEqualNode(eA.target)||(eA.keyCode===32||eA.keyCode===13)&&(eA.preventDefault(),sA())},[F,N,sA]),IA=p.exports.useCallback(function(){W({type:"focus"})},[]),bA=p.exports.useCallback(function(){W({type:"blur"})},[]),EA=p.exports.useCallback(function(){Q||(rgA()?setTimeout(sA,0):sA())},[N,Q,sA]),QA=function(aA){return i?null:aA},TA=function(aA){return d?null:QA(aA)},RA=function(aA){return w?null:QA(aA)},UA=function(aA){m&&aA.stopPropagation()},fA=p.exports.useMemo(function(){return function(){var eA=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},aA=eA.refKey,FA=aA===void 0?"ref":aA,re=eA.role,VA=eA.onKeyDown,_e=eA.onFocus,WA=eA.onBlur,qA=eA.onClick,xe=eA.onDragEnter,se=eA.onDragOver,JA=eA.onDragLeave,xA=eA.onDrop,Be=aE(eA,ggA);return Je(Je(A0({onKeyDown:TA(Xi(VA,BA)),onFocus:TA(Xi(_e,IA)),onBlur:TA(Xi(WA,bA)),onClick:QA(Xi(qA,EA)),onDragEnter:RA(Xi(xe,q)),onDragOver:RA(Xi(se,j)),onDragLeave:RA(Xi(JA,AA)),onDrop:RA(Xi(xA,gA)),role:typeof re=="string"&&re!==""?re:"button"},FA,F),!i&&!d?{tabIndex:0}:{}),Be)}},[F,BA,IA,bA,EA,q,j,AA,gA,d,w,i]),NA=p.exports.useCallback(function(eA){eA.stopPropagation()},[]),ZA=p.exports.useMemo(function(){return function(){var eA=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},aA=eA.refKey,FA=aA===void 0?"ref":aA,re=eA.onChange,VA=eA.onClick,_e=aE(eA,IgA),WA=A0({accept:t,multiple:s,type:"file",style:{display:"none"},onChange:QA(Xi(re,gA)),onClick:QA(Xi(VA,NA)),autoComplete:"off",tabIndex:-1},FA,N);return Je(Je({},WA),_e)}},[N,t,s,gA,i]),ne=z.length,Ie=ne>0&&tgA({files:z,accept:t,minSize:o,maxSize:r,multiple:s,maxFiles:a}),KA=ne>0&&!Ie;return Je(Je({},P),{},{isDragAccept:Ie,isDragReject:KA,isFocused:J&&!i,getRootProps:fA,getInputProps:ZA,rootRef:F,inputRef:N,open:QA(sA)})}function QgA(e,A){switch(A.type){case"focus":return Je(Je({},e),{},{isFocused:!0});case"blur":return Je(Je({},e),{},{isFocused:!1});case"openDialog":return Je(Je({},e0),{},{isFileDialogActive:!0});case"closeDialog":return Je(Je({},e),{},{isFileDialogActive:!1});case"setDraggedFiles":var t=A.isDragActive,i=A.draggedFiles;return Je(Je({},e),{},{draggedFiles:i,isDragActive:t});case"setFiles":return Je(Je({},e),{},{acceptedFiles:A.acceptedFiles,fileRejections:A.fileRejections});case"reset":return Je({},e0);default:return e}}function dx(){}function Ue(e,A){if(Object.is(e,A))return!0;if(typeof e!="object"||e===null||typeof A!="object"||A===null)return!1;const t=Object.keys(e);if(t.length!==Object.keys(A).length)return!1;for(let i=0;iA.name):e instanceof File?[e.name]:e.split(",")}function SgA(e){const A=vgA(e);for(const t of A){const i=t.toLowerCase();if(!(i.includes(".tiff")||i.includes(".tif")))return!1}return!0}async function DgA(e){return Array.isArray(e)?e:e instanceof File?[e]:e.split(",")}async function RgA(e){return(await(typeof e=="string"?gu:Iu)(e)).getImageCount()}async function xgA(e){const A=await DgA(e),t=[];let i=0;for(const n of A){const r=[],o=await RgA(n);for(let s=0;s{const{Pixels:{SizeC:u,SizeT:E,SizeZ:h}}=B;return u*E*h+C},1);const s=t[0].length,{Pixels:{SizeC:a,SizeT:g,SizeZ:I}}=A[0];return a*g*I*s}async function NgA(e,A,t){try{if(wgA(e)){if(e instanceof File)return await WR(e,{images:"all",pool:!1});const r=await fetch(e.replace(/ome\.tif(f?)/gi,"offsets.json")),o=r.status!==200,s=o?void 0:await r.json(),a=await WR(e,{offsets:s,images:"all",pool:!1}),g=await FgA(e,a.map(I=>I.metadata),a.map(I=>I.data));return o&&g>mgA&&A(!0),a}if(Array.isArray(e)&&typeof e[0].arrayBuffer!="function")throw new px("Cannot upload a local Zarr or flat TIFF files with this browser. Try using Chrome, Firefox, or Microsoft Edge.");if(SgA(e)){const n=await xgA(e);return await ZeA(n,{images:"all",pool:!1})}let i;try{i=await ooA(e)}catch{const n=await soA(e,{type:"multiscales"}),r={Pixels:{Channels:n.metadata.omero.channels.map(o=>({Name:o.label,SamplesPerPixel:1}))}};i={data:n.data,metadata:r}}return i}catch(i){return i instanceof px?t(i.message):(console.error(i),t(null)),{data:null}}}function SM(e){return e.split("?")[0].split("/").slice(-1)[0]}function LgA({labels:e,shape:A}){const t=e.map((n,r)=>[n,r]).filter(n=>Em.includes(n[0])),i={};return t.forEach(([n,r])=>{i[n]=Math.floor((A[r]||0)/2)}),i}function DM(e){const A=e[e.length-1];return A===3||A===4}function bgA(e){let A=[];const t=LgA(e),i=e.labels.map((n,r)=>({name:n,size:e.shape[r]})).find(n=>!Em.includes(n.name)&&n.size);for(let n=0;n{const r=()=>{n(t())};return window.addEventListener("resize",r),()=>{window.removeEventListener("resize",r)}}),i}async function GgA({loader:e,selection:A}){const i=await(Array.isArray(e)?e[e.length-1]:e).getRaster({selection:A}),n=OC(i.data),{domain:r,contrastLimits:o}=n;return{domain:r,contrastLimits:o}}async function _gA({loader:e,selection:A}){const t=e[e.length-1],{shape:i,labels:n}=t,r=i[n.indexOf("z")]>>e.length-1,o=await t.getRaster({selection:{...A,z:0}}),s=await t.getRaster({selection:{...A,z:Math.floor(r/2)}}),a=await t.getRaster({selection:{...A,z:Math.max(0,r-1)}}),g=OC(o.data),I=OC(s.data),l=OC(a.data);return{domain:[Math.min(g.domain[0],I.domain[0],l.domain[0]),Math.max(g.domain[1],I.domain[1],l.domain[1])],contrastLimits:[Math.min(g.contrastLimits[0],I.contrastLimits[0],l.contrastLimits[0]),Math.max(g.contrastLimits[1],I.contrastLimits[1],l.contrastLimits[1])]}}const hm=async({loader:e,selection:A,use3d:t})=>(t?_gA:GgA)({loader:e,selection:A}),gE=async({loader:e,selections:A,use3d:t})=>{const i=await Promise.all(A.map(o=>hm({loader:e,selection:o,use3d:t}))),n=i.map(o=>o.domain),r=i.map(o=>o.contrastLimits);return{domains:n,contrastLimits:r}};function MgA(){let e=!1;return function(A){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(A)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(A.substr(0,4)))&&(e=!0)}(navigator.userAgent||navigator.vendor||window.opera),e}function RM({Pixels:e}){const A=e.Channels.length,{SamplesPerPixel:t}=e.Channels[0],i=A===3&&e.Type==="uint8",n=e.SizeC===3&&A===1&&e.Interleaved;return t===3||i||n}function fm(e,A){if(!e&&e!==0)return"";const t=e.toString();return t.length>A?t.substring(0,A).replace(/\.$/,""):t}function kgA(e){var n,r;const{x:A,y:t,z:i}=(r=(n=e==null?void 0:e.meta)==null?void 0:n.physicalSizes)!=null?r:{};if((A==null?void 0:A.size)&&(t==null?void 0:t.size)&&(i==null?void 0:i.size)){const o=Math.min(i.size,A.size,t.size),s=[A.size/o,t.size/o,i.size/o];return new fe().scale(s)}return new fe().identity()}function Qm(e){const A=Array.isArray(e)?e[0]:e,{shape:t,labels:i}=A,n=kgA(A),r=[0,n[0]*t[i.indexOf("x")]],o=[0,n[5]*t[i.indexOf("y")]],s=[0,n[10]*t[i.indexOf("z")]];return[r,o,s]}function TgA(e,A){const t=e?LsA:fu;if(A===ga.MAX_INTENSITY_PROJECTION)return new t.MaximumIntensityProjectionExtension;if(A===ga.MIN_INTENSITY_PROJECTION)return new t.MinimumIntensityProjectionExtension;if(A===ga.ADDITIVE)return new t.AdditiveBlendExtension;throw new Error(`${A} rendering mode not supported`)}const UgA=(e,A)=>{const[t,i,n]=_A(g=>[g.use3d,g.toggleUse3d,g.toggleIsOffsetsSnackbarOn],Ue),[r,o]=he(g=>[g.lensEnabled,g.toggleLensEnabled],Ue),s=hn(),a=cm();p.exports.useEffect(()=>{async function g(){_A.setState({isChannelLoading:[!0]}),_A.setState({isViewerLoading:!0}),t&&i();const{urlOrFile:I}=e,l=await NgA(I,n,B=>_A.setState({loaderErrorSnackbar:{on:!0,message:B}}));let c,C;Array.isArray(l)?l.length>1?(c=l.map(B=>B.metadata),C=l.map(B=>B.data)):(c=l[0].metadata,C=l[0].data):(c=l.metadata,C=l.data),C&&(console.info("Metadata (in JSON-like form) for current file being viewed: ",c),bt.exports.unstable_batchedUpdates(()=>{yi.setState({loader:C}),_A.setState({metadata:c})}),t&&i(),A==null||A.push(typeof I=="string"?`?image_url=${I}`:""))}e&&g()},[e,A]),p.exports.useEffect(()=>{a&&(async()=>{_A.setState({isChannelLoading:[!0]}),_A.setState({isViewerLoading:!0}),t&&i();const I=bgA(s[0]),{Channels:l}=a.Pixels,c=l.map((d,w)=>{var m;return(m=d.Name)!=null?m:`Channel ${w}`});let C=[],B=[],u=[];if(RM(a))DM(s[0].shape)?(C=[[0,255]],B=[[0,255]],u=[[255,0,0]]):(C=[[0,255],[0,255],[0,255]],B=[[0,255],[0,255],[0,255]],u=[[255,0,0],[0,255,0],[0,0,255]]),r&&o(),_A.setState({useColormap:!1,useLens:!1});else{const d=await gE({loader:s,selections:I,use3d:!1});B=d.domains,C=d.contrastLimits,u=B.length===1?[[255,255,255]]:B.map((w,m)=>{var v;return(v=l[m].Color&&l[m].Color.slice(0,-1))!=null?v:Bm[m]}),_A.setState({useLens:c.length!==1,useColormap:!0})}yi.setState({ids:B.map(()=>String(Math.random())),selections:I,domains:B,contrastLimits:C,colors:u,channelsVisible:u.map(()=>!0)}),_A.setState({isChannelLoading:I.map(d=>!d),isViewerLoading:!1,pixelValues:new Array(I.length).fill(t0),globalSelection:I[0],channelOptions:c});const[h,f,Q]=Qm(s);he.setState({xSlice:h,ySlice:f,zSlice:Q})})()},[s,a])},xM=()=>vM({onDrop:A=>{let t;A.length===1?t={urlOrFile:A[0],description:A[0].name}:t={urlOrFile:A,description:"data.zarr"},_A.setState({source:t})}});function pt(e){return e&&e.ownerDocument||document}function zo(e,A){typeof e=="function"?e(A):e&&(e.current=A)}function ze(e,A){return p.exports.useMemo(function(){return e==null&&A==null?null:function(t){zo(e,t),zo(A,t)}},[e,A])}var PgA=typeof window!="undefined"?p.exports.useLayoutEffect:p.exports.useEffect;function Oe(e){var A=p.exports.useRef(e);return PgA(function(){A.current=e}),p.exports.useCallback(function(){return A.current.apply(void 0,arguments)},[])}function yx(e){return e.substring(2).toLowerCase()}function HgA(e){return document.documentElement.clientWidth-1;else{var w=pt(I.current);d=!w.documentElement.contains(f.target)||I.current.contains(f.target)}!d&&(i||!Q)&&o(f)}}),E=function(Q){return function(d){c.current=!0;var w=A.props[Q];w&&w(d)}},h={ref:B};return a!==!1&&(h[a]=E(a)),p.exports.useEffect(function(){if(a!==!1){var f=yx(a),Q=pt(I.current),d=function(){g.current=!0};return Q.addEventListener(f,u),Q.addEventListener("touchmove",d),function(){Q.removeEventListener(f,u),Q.removeEventListener("touchmove",d)}}},[u,a]),r!==!1&&(h[r]=E(r)),p.exports.useEffect(function(){if(r!==!1){var f=yx(r),Q=pt(I.current);return Q.addEventListener(f,u),function(){Q.removeEventListener(f,u)}}},[u,r]),p.exports.createElement(p.exports.Fragment,null,p.exports.cloneElement(A,h))}function Qe(e){if(typeof e!="string")throw new Error(Ea(7));return e.charAt(0).toUpperCase()+e.slice(1)}function zr(){for(var e=arguments.length,A=new Array(e),t=0;t1&&arguments[1]!==void 0?arguments[1]:166,t;function i(){for(var n=arguments.length,r=new Array(n),o=0;o0&&arguments[0]!==void 0?arguments[0]:{},m=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},v=arguments.length>2?arguments[2]:void 0,x=m.pulsate,D=x===void 0?!1:x,F=m.center,N=F===void 0?n||m.pulsate:F,M=m.fakeElement,U=M===void 0?!1:M;if(w.type==="mousedown"&&C.current){C.current=!1;return}w.type==="touchstart"&&(C.current=!0);var P=U?null:E.current,W=P?P.getBoundingClientRect():{width:0,height:0,left:0,top:0},J,Z,z;if(N||w.clientX===0&&w.clientY===0||!w.clientX&&!w.touches)J=Math.round(W.width/2),Z=Math.round(W.height/2);else{var O=w.touches?w.touches[0]:w,Y=O.clientX,k=O.clientY;J=Math.round(Y-W.left),Z=Math.round(k-W.top)}if(N)z=Math.sqrt((2*Math.pow(W.width,2)+Math.pow(W.height,2))/3),z%2===0&&(z+=1);else{var q=Math.max(Math.abs((P?P.clientWidth:0)-J),J)*2+2,j=Math.max(Math.abs((P?P.clientHeight:0)-Z),Z)*2+2;z=Math.sqrt(Math.pow(q,2)+Math.pow(j,2))}w.touches?u.current===null&&(u.current=function(){h({pulsate:D,rippleX:J,rippleY:Z,rippleSize:z,cb:v})},B.current=setTimeout(function(){u.current&&(u.current(),u.current=null)},vIA)):h({pulsate:D,rippleX:J,rippleY:Z,rippleSize:z,cb:v})},[n,h]),Q=p.exports.useCallback(function(){f({},{pulsate:!0})},[f]),d=p.exports.useCallback(function(w,m){if(clearTimeout(B.current),w.type==="touchend"&&u.current){w.persist(),u.current(),u.current=null,B.current=setTimeout(function(){d(w,m)});return}u.current=null,I(function(v){return v.length>0?v.slice(1):v}),c.current=m},[]);return p.exports.useImperativeHandle(t,function(){return{pulsate:Q,start:f,stop:d}},[Q,f,d]),p.exports.createElement("span",_({className:yA(r.root,o),ref:E},s),p.exports.createElement(jgA,{component:null,exit:!0},g))}),RIA=ee(SIA,{flip:!1,name:"MuiTouchRipple"})(p.exports.memo(DIA)),xIA={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:{}},FIA=p.exports.forwardRef(function(A,t){var i=A.action,n=A.buttonRef,r=A.centerRipple,o=r===void 0?!1:r,s=A.children,a=A.classes,g=A.className,I=A.component,l=I===void 0?"button":I,c=A.disabled,C=c===void 0?!1:c,B=A.disableRipple,u=B===void 0?!1:B,E=A.disableTouchRipple,h=E===void 0?!1:E,f=A.focusRipple,Q=f===void 0?!1:f,d=A.focusVisibleClassName,w=A.onBlur,m=A.onClick,v=A.onFocus,x=A.onFocusVisible,D=A.onKeyDown,F=A.onKeyUp,N=A.onMouseDown,M=A.onMouseLeave,U=A.onMouseUp,P=A.onTouchEnd,W=A.onTouchMove,J=A.onTouchStart,Z=A.onDragLeave,z=A.tabIndex,O=z===void 0?0:z,Y=A.TouchRippleProps,k=A.type,q=k===void 0?"button":k,j=SA(A,["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"]),AA=p.exports.useRef(null);function iA(){return bt.exports.findDOMNode(AA.current)}var gA=p.exports.useRef(null),sA=p.exports.useState(!1),BA=sA[0],IA=sA[1];C&&BA&&IA(!1);var bA=Ru(),EA=bA.isFocusVisible,QA=bA.onBlurVisible,TA=bA.ref;p.exports.useImperativeHandle(i,function(){return{focusVisible:function(){IA(!0),AA.current.focus()}}},[]),p.exports.useEffect(function(){BA&&Q&&!u&&gA.current.pulsate()},[u,Q,BA]);function RA(rA,GA){var ve=arguments.length>2&&arguments[2]!==void 0?arguments[2]:h;return Oe(function(pe){GA&&GA(pe);var Fe=ve;return!Fe&&gA.current&&gA.current[rA](pe),!0})}var UA=RA("start",N),fA=RA("stop",Z),NA=RA("stop",U),ZA=RA("stop",function(rA){BA&&rA.preventDefault(),M&&M(rA)}),ne=RA("start",J),Ie=RA("stop",P),KA=RA("stop",W),eA=RA("stop",function(rA){BA&&(QA(rA),IA(!1)),w&&w(rA)},!1),aA=Oe(function(rA){AA.current||(AA.current=rA.currentTarget),EA(rA)&&(IA(!0),x&&x(rA)),v&&v(rA)}),FA=function(){var GA=iA();return l&&l!=="button"&&!(GA.tagName==="A"&&GA.href)},re=p.exports.useRef(!1),VA=Oe(function(rA){Q&&!re.current&&BA&&gA.current&&rA.key===" "&&(re.current=!0,rA.persist(),gA.current.stop(rA,function(){gA.current.start(rA)})),rA.target===rA.currentTarget&&FA()&&rA.key===" "&&rA.preventDefault(),D&&D(rA),rA.target===rA.currentTarget&&FA()&&rA.key==="Enter"&&!C&&(rA.preventDefault(),m&&m(rA))}),_e=Oe(function(rA){Q&&rA.key===" "&&gA.current&&BA&&!rA.defaultPrevented&&(re.current=!1,rA.persist(),gA.current.stop(rA,function(){gA.current.pulsate(rA)})),F&&F(rA),m&&rA.target===rA.currentTarget&&FA()&&rA.key===" "&&!rA.defaultPrevented&&m(rA)}),WA=l;WA==="button"&&j.href&&(WA="a");var qA={};WA==="button"?(qA.type=q,qA.disabled=C):((WA!=="a"||!j.href)&&(qA.role="button"),qA["aria-disabled"]=C);var xe=ze(n,t),se=ze(TA,AA),JA=ze(xe,se),xA=p.exports.useState(!1),Be=xA[0],ue=xA[1];p.exports.useEffect(function(){ue(!0)},[]);var PA=Be&&!u&&!C;return p.exports.createElement(WA,_({className:yA(a.root,g,BA&&[a.focusVisible,d],C&&a.disabled),onBlur:eA,onClick:m,onFocus:aA,onKeyDown:VA,onKeyUp:_e,onMouseDown:UA,onMouseLeave:ZA,onMouseUp:NA,onDragLeave:fA,onTouchEnd:Ie,onTouchMove:KA,onTouchStart:ne,ref:JA,tabIndex:C?-1:O},qA,j),s,PA?p.exports.createElement(RIA,_({ref:gA,center:o},Y)):null)}),tc=ee(xIA,{name:"MuiButtonBase"})(FIA),NIA=function(A){return{root:{textAlign:"center",flex:"0 0 auto",fontSize:A.typography.pxToRem(24),padding:12,borderRadius:"50%",overflow:"visible",color:A.palette.action.active,transition:A.transitions.create("background-color",{duration:A.transitions.duration.shortest}),"&:hover":{backgroundColor:ut(A.palette.action.active,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"&$disabled":{backgroundColor:"transparent",color:A.palette.action.disabled}},edgeStart:{marginLeft:-12,"$sizeSmall&":{marginLeft:-3}},edgeEnd:{marginRight:-12,"$sizeSmall&":{marginRight:-3}},colorInherit:{color:"inherit"},colorPrimary:{color:A.palette.primary.main,"&:hover":{backgroundColor:ut(A.palette.primary.main,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},colorSecondary:{color:A.palette.secondary.main,"&:hover":{backgroundColor:ut(A.palette.secondary.main,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},disabled:{},sizeSmall:{padding:3,fontSize:A.typography.pxToRem(18)},label:{width:"100%",display:"flex",alignItems:"inherit",justifyContent:"inherit"}}},LIA=p.exports.forwardRef(function(A,t){var i=A.edge,n=i===void 0?!1:i,r=A.children,o=A.classes,s=A.className,a=A.color,g=a===void 0?"default":a,I=A.disabled,l=I===void 0?!1:I,c=A.disableFocusRipple,C=c===void 0?!1:c,B=A.size,u=B===void 0?"medium":B,E=SA(A,["edge","children","classes","className","color","disabled","disableFocusRipple","size"]);return p.exports.createElement(tc,_({className:yA(o.root,s,g!=="default"&&o["color".concat(Qe(g))],l&&o.disabled,u==="small"&&o["size".concat(Qe(u))],{start:o.edgeStart,end:o.edgeEnd}[n]),centerRipple:!0,focusRipple:!C,disabled:l,ref:t},E),p.exports.createElement("span",{className:o.label},r))}),jo=ee(NIA,{name:"MuiIconButton"})(LIA),bIA=function(A){var t=A.palette.type==="light"?qI:JI,i=A.palette.type==="light"?JI:qI;return{root:_({},A.typography.body2,{borderRadius:A.shape.borderRadius,backgroundColor:"transparent",display:"flex",padding:"6px 16px"}),standardSuccess:{color:t(A.palette.success.main,.6),backgroundColor:i(A.palette.success.main,.9),"& $icon":{color:A.palette.success.main}},standardInfo:{color:t(A.palette.info.main,.6),backgroundColor:i(A.palette.info.main,.9),"& $icon":{color:A.palette.info.main}},standardWarning:{color:t(A.palette.warning.main,.6),backgroundColor:i(A.palette.warning.main,.9),"& $icon":{color:A.palette.warning.main}},standardError:{color:t(A.palette.error.main,.6),backgroundColor:i(A.palette.error.main,.9),"& $icon":{color:A.palette.error.main}},outlinedSuccess:{color:t(A.palette.success.main,.6),border:"1px solid ".concat(A.palette.success.main),"& $icon":{color:A.palette.success.main}},outlinedInfo:{color:t(A.palette.info.main,.6),border:"1px solid ".concat(A.palette.info.main),"& $icon":{color:A.palette.info.main}},outlinedWarning:{color:t(A.palette.warning.main,.6),border:"1px solid ".concat(A.palette.warning.main),"& $icon":{color:A.palette.warning.main}},outlinedError:{color:t(A.palette.error.main,.6),border:"1px solid ".concat(A.palette.error.main),"& $icon":{color:A.palette.error.main}},filledSuccess:{color:"#fff",fontWeight:A.typography.fontWeightMedium,backgroundColor:A.palette.success.main},filledInfo:{color:"#fff",fontWeight:A.typography.fontWeightMedium,backgroundColor:A.palette.info.main},filledWarning:{color:"#fff",fontWeight:A.typography.fontWeightMedium,backgroundColor:A.palette.warning.main},filledError:{color:"#fff",fontWeight:A.typography.fontWeightMedium,backgroundColor:A.palette.error.main},icon:{marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9},message:{padding:"8px 0"},action:{display:"flex",alignItems:"center",marginLeft:"auto",paddingLeft:16,marginRight:-8}}},Dx={success:p.exports.createElement(fIA,{fontSize:"inherit"}),warning:p.exports.createElement(QIA,{fontSize:"inherit"}),error:p.exports.createElement(dIA,{fontSize:"inherit"}),info:p.exports.createElement(pIA,{fontSize:"inherit"})},GIA=p.exports.createElement(yIA,{fontSize:"small"}),_IA=p.exports.forwardRef(function(A,t){var i=A.action,n=A.children,r=A.classes,o=A.className,s=A.closeText,a=s===void 0?"Close":s,g=A.color,I=A.icon,l=A.iconMapping,c=l===void 0?Dx:l,C=A.onClose,B=A.role,u=B===void 0?"alert":B,E=A.severity,h=E===void 0?"success":E,f=A.variant,Q=f===void 0?"standard":f,d=SA(A,["action","children","classes","className","closeText","color","icon","iconMapping","onClose","role","severity","variant"]);return p.exports.createElement(no,_({role:u,square:!0,elevation:0,className:yA(r.root,r["".concat(Q).concat(Qe(g||h))],o),ref:t},d),I!==!1?p.exports.createElement("div",{className:r.icon},I||c[h]||Dx[h]):null,p.exports.createElement("div",{className:r.message},n),i!=null?p.exports.createElement("div",{className:r.action},i):null,i==null&&C?p.exports.createElement("div",{className:r.action},p.exports.createElement(jo,{size:"small","aria-label":a,title:a,color:"inherit",onClick:C},GIA)):null)}),CC=ee(bIA,{name:"MuiAlert"})(_IA),MIA=function(A){return{root:{margin:0},body2:A.typography.body2,body1:A.typography.body1,caption:A.typography.caption,button:A.typography.button,h1:A.typography.h1,h2:A.typography.h2,h3:A.typography.h3,h4:A.typography.h4,h5:A.typography.h5,h6:A.typography.h6,subtitle1:A.typography.subtitle1,subtitle2:A.typography.subtitle2,overline:A.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:A.palette.primary.main},colorSecondary:{color:A.palette.secondary.main},colorTextPrimary:{color:A.palette.text.primary},colorTextSecondary:{color:A.palette.text.secondary},colorError:{color:A.palette.error.main},displayInline:{display:"inline"},displayBlock:{display:"block"}}},Rx={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p"},kIA=p.exports.forwardRef(function(A,t){var i=A.align,n=i===void 0?"inherit":i,r=A.classes,o=A.className,s=A.color,a=s===void 0?"initial":s,g=A.component,I=A.display,l=I===void 0?"initial":I,c=A.gutterBottom,C=c===void 0?!1:c,B=A.noWrap,u=B===void 0?!1:B,E=A.paragraph,h=E===void 0?!1:E,f=A.variant,Q=f===void 0?"body1":f,d=A.variantMapping,w=d===void 0?Rx:d,m=SA(A,["align","classes","className","color","component","display","gutterBottom","noWrap","paragraph","variant","variantMapping"]),v=g||(h?"p":w[Q]||Rx[Q])||"span";return p.exports.createElement(v,_({className:yA(r.root,o,Q!=="inherit"&&r[Q],a!=="initial"&&r["color".concat(Qe(a))],u&&r.noWrap,C&&r.gutterBottom,h&&r.paragraph,n!=="inherit"&&r["align".concat(Qe(n))],l!=="initial"&&r["display".concat(Qe(l))]),ref:t},m))}),Xo=ee(MIA,{name:"MuiTypography"})(kIA),TIA={root:{},underlineNone:{textDecoration:"none"},underlineHover:{textDecoration:"none","&:hover":{textDecoration:"underline"}},underlineAlways:{textDecoration:"underline"},button:{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","&::-moz-focus-inner":{borderStyle:"none"},"&$focusVisible":{outline:"auto"}},focusVisible:{}},UIA=p.exports.forwardRef(function(A,t){var i=A.classes,n=A.className,r=A.color,o=r===void 0?"primary":r,s=A.component,a=s===void 0?"a":s,g=A.onBlur,I=A.onFocus,l=A.TypographyClasses,c=A.underline,C=c===void 0?"hover":c,B=A.variant,u=B===void 0?"inherit":B,E=SA(A,["classes","className","color","component","onBlur","onFocus","TypographyClasses","underline","variant"]),h=Ru(),f=h.isFocusVisible,Q=h.onBlurVisible,d=h.ref,w=p.exports.useState(!1),m=w[0],v=w[1],x=ze(t,d),D=function(M){m&&(Q(),v(!1)),g&&g(M)},F=function(M){f(M)&&v(!0),I&&I(M)};return p.exports.createElement(Xo,_({className:yA(i.root,i["underline".concat(Qe(C))],n,m&&i.focusVisible,a==="button"&&i.button),classes:l,color:o,component:a,onBlur:D,onFocus:F,ref:x,variant:u},E))}),xu=ee(TIA,{name:"MuiLink"})(UIA);function PIA(){return XA(Pi,{children:['Avivator could not find an IFD index for the requested OME-TIFF, and therefore longer latencies are expected. Please read our documentation on "Indexed TIFF" to generate an IFD index for your OME-TIFF and improve initial load times.',H(xu,{target:"_blank",rel:"noopener noreferrer",href:"http://viv.gehlenborglab.org/#data-preparation",children:"in this section of our documentation"})," ","and then place the offsets.json adjacent to the OME-TIFF wherever hosted."]})}function HIA({message:e}){return XA(Pi,{children:[e?`The following error was thrown: "${e}". `:"Something has gone wrong loading your image. ","Please refer to the"," ",H(xu,{target:"_blank",rel:"noopener noreferrer",href:"http://viv.gehlenborglab.org",children:"docs"})," ","for information about supported file formats."]})}function qIA(){return XA(Pi,{children:['You are seeing a random demo image because no image URL was provided. To view your own images, enter a URL into the "OME-TIFF/Bioformats-Zarr URL" field. See the'," ",H(xu,{target:"_blank",rel:"noopener noreferrer",href:"http://viv.gehlenborglab.org",children:"docs"})," ","for details on how to prepare your images for viewing with Avivator."]})}function JIA(){return H(Pi,{children:"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."})}const OIA=()=>{const[e,A,t,i,n,r,o]=_A(s=>[s.isOffsetsSnackbarOn,s.loaderErrorSnackbar,s.isNoImageUrlSnackbarOn,s.toggleIsOffsetsSnackbarOn,s.toggleIsNoImageUrlSnackbarOn,s.isVolumeRenderingWarningOn,s.toggleIsVolumeRenderingWarningOn],Ue);return XA(Pi,{children:[H(cC,{open:e,anchorOrigin:{vertical:"top",horizontal:"center"},elevation:6,variant:"filled",children:H(CC,{onClose:i,severity:"warning",children:H(PIA,{})})}),H(cC,{open:A.on,anchorOrigin:{vertical:"top",horizontal:"center"},elevation:6,variant:"filled",children:H(CC,{onClose:()=>_A.setState({loaderErrorSnackbar:{on:!1,message:null}}),severity:"error",children:H(HIA,{message:A.message})})}),H(cC,{open:t,anchorOrigin:{vertical:"top",horizontal:"center"},elevation:6,variant:"filled",children:H(CC,{onClose:n,severity:"info",children:H(qIA,{})})}),H(cC,{open:r,anchorOrigin:{vertical:"top",horizontal:"center"},elevation:6,variant:"filled",children:H(CC,{onClose:o,severity:"warning",children:H(JIA,{})})})]})};function YIA(e){var A=typeof e;return e!=null&&(A=="object"||A=="function")}var bM=YIA,KIA=typeof gc=="object"&&gc&&gc.Object===Object&&gc,VIA=KIA,WIA=VIA,zIA=typeof self=="object"&&self&&self.Object===Object&&self,jIA=WIA||zIA||Function("return this")(),GM=jIA,XIA=GM,ZIA=function(){return XIA.Date.now()},$IA=ZIA,AlA=/\s/;function elA(e){for(var A=e.length;A--&&AlA.test(e.charAt(A)););return A}var tlA=elA,ilA=tlA,nlA=/^\s+/;function rlA(e){return e&&e.slice(0,ilA(e)+1).replace(nlA,"")}var olA=rlA,slA=GM,alA=slA.Symbol,_M=alA,xx=_M,MM=Object.prototype,glA=MM.hasOwnProperty,IlA=MM.toString,bg=xx?xx.toStringTag:void 0;function llA(e){var A=glA.call(e,bg),t=e[bg];try{e[bg]=void 0;var i=!0}catch{}var n=IlA.call(e);return i&&(A?e[bg]=t:delete e[bg]),n}var clA=llA,ClA=Object.prototype,BlA=ClA.toString;function ElA(e){return BlA.call(e)}var ulA=ElA,Fx=_M,hlA=clA,flA=ulA,QlA="[object Null]",dlA="[object Undefined]",Nx=Fx?Fx.toStringTag:void 0;function plA(e){return e==null?e===void 0?dlA:QlA:Nx&&Nx in Object(e)?hlA(e):flA(e)}var ylA=plA;function mlA(e){return e!=null&&typeof e=="object"}var wlA=mlA,vlA=ylA,SlA=wlA,DlA="[object Symbol]";function RlA(e){return typeof e=="symbol"||SlA(e)&&vlA(e)==DlA}var xlA=RlA,FlA=olA,Lx=bM,NlA=xlA,bx=0/0,LlA=/^[-+]0x[0-9a-f]+$/i,blA=/^0b[01]+$/i,GlA=/^0o[0-7]+$/i,_lA=parseInt;function MlA(e){if(typeof e=="number")return e;if(NlA(e))return bx;if(Lx(e)){var A=typeof e.valueOf=="function"?e.valueOf():e;e=Lx(A)?A+"":A}if(typeof e!="string")return e===0?e:+e;e=FlA(e);var t=blA.test(e);return t||GlA.test(e)?_lA(e.slice(2),t?2:8):LlA.test(e)?bx:+e}var klA=MlA,TlA=bM,Tf=$IA,Gx=klA,UlA="Expected a function",PlA=Math.max,HlA=Math.min;function qlA(e,A,t){var i,n,r,o,s,a,g=0,I=!1,l=!1,c=!0;if(typeof e!="function")throw new TypeError(UlA);A=Gx(A)||0,TlA(t)&&(I=!!t.leading,l="maxWait"in t,r=l?PlA(Gx(t.maxWait)||0,A):r,c="trailing"in t?!!t.trailing:c);function C(m){var v=i,x=n;return i=n=void 0,g=m,o=e.apply(x,v),o}function B(m){return g=m,s=setTimeout(h,A),I?C(m):o}function u(m){var v=m-a,x=m-g,D=A-v;return l?HlA(D,r-x):D}function E(m){var v=m-a,x=m-g;return a===void 0||v>=A||v<0||l&&x>=r}function h(){var m=Tf();if(E(m))return f(m);s=setTimeout(h,u(m))}function f(m){return s=void 0,c&&i?C(m):(i=n=void 0,o)}function Q(){s!==void 0&&clearTimeout(s),g=0,i=a=n=s=void 0}function d(){return s===void 0?o:f(Tf())}function w(){var m=Tf(),v=E(m);if(i=arguments,n=this,a=m,v){if(s===void 0)return B(a);if(l)return clearTimeout(s),s=setTimeout(h,A),C(a)}return s===void 0&&(s=setTimeout(h,A)),o}return w.cancel=Q,w.flush=d,w}var kM=qlA;const JlA=()=>{const[e,A,t]=_A(v=>[v.useLinkedView,v.use3d,v.viewState],Ue),[i,n,r,o]=yi(v=>[v.colors,v.contrastLimits,v.channelsVisible,v.selections],Ue),s=hn(),a=um(),[g,I,l,c,C,B,u,E,h,f,Q,d,w]=he(v=>[v.lensSelection,v.colormap,v.renderingMode,v.xSlice,v.ySlice,v.zSlice,v.resolution,v.lensEnabled,v.zoomLock,v.panLock,v.isOverviewOn,v.onViewportLoad,v.useFixedAxis],Ue),m=({viewState:{zoom:v}})=>{const x=Math.min(Math.max(Math.round(-v),0),s.length-1);_A.setState({pyramidResolution:x})};return A?H(RaA,{loader:s,contrastLimits:n,colors:i,channelsVisible:r,selections:o,colormap:I,xSlice:c,ySlice:C,zSlice:B,resolution:u,extensions:[TgA(I,l)],height:a.height,width:a.width,onViewportLoad:d,useFixedAxis:w,viewStates:[t],onViewStateChange:kM(({viewState:v,viewId:x})=>_A.setState({viewState:{...v,id:x}}),250,{trailing:!0})}):e?H(DaA,{loader:s,contrastLimits:n,colors:i,channelsVisible:r,selections:o,height:a.height,width:a.width,zoomLock:h,panLock:f,hoverHooks:{handleValue:v=>_A.setState({pixelValues:v})},lensSelection:g,lensEnabled:E,onViewportLoad:d,extensions:[I?new iE:new nE],colormap:I||"viridis",snapScaleBar:!0}):H(SaA,{loader:s,contrastLimits:n,colors:i,channelsVisible:r,selections:o,height:a.height,width:a.width,overview:pgA,overviewOn:Q,hoverHooks:{handleValue:v=>_A.setState({pixelValues:v})},lensSelection:g,lensEnabled:E,onViewportLoad:d,extensions:[I?new iE:new nE],colormap:I||"viridis",onViewStateChange:m,snapScaleBar:!0})};var gr=44,OlA=function(A){return{root:{display:"inline-block"},static:{transition:A.transitions.create("transform")},indeterminate:{animation:"$circular-rotate 1.4s linear infinite"},determinate:{transition:A.transitions.create("transform")},colorPrimary:{color:A.palette.primary.main},colorSecondary:{color:A.palette.secondary.main},svg:{display:"block"},circle:{stroke:"currentColor"},circleStatic:{transition:A.transitions.create("stroke-dashoffset")},circleIndeterminate:{animation:"$circular-dash 1.4s ease-in-out infinite",strokeDasharray:"80px, 200px",strokeDashoffset:"0px"},circleDeterminate:{transition:A.transitions.create("stroke-dashoffset")},"@keyframes circular-rotate":{"0%":{transformOrigin:"50% 50%"},"100%":{transform:"rotate(360deg)"}},"@keyframes circular-dash":{"0%":{strokeDasharray:"1px, 200px",strokeDashoffset:"0px"},"50%":{strokeDasharray:"100px, 200px",strokeDashoffset:"-15px"},"100%":{strokeDasharray:"100px, 200px",strokeDashoffset:"-125px"}},circleDisableShrink:{animation:"none"}}},YlA=p.exports.forwardRef(function(A,t){var i=A.classes,n=A.className,r=A.color,o=r===void 0?"primary":r,s=A.disableShrink,a=s===void 0?!1:s,g=A.size,I=g===void 0?40:g,l=A.style,c=A.thickness,C=c===void 0?3.6:c,B=A.value,u=B===void 0?0:B,E=A.variant,h=E===void 0?"indeterminate":E,f=SA(A,["classes","className","color","disableShrink","size","style","thickness","value","variant"]),Q={},d={},w={};if(h==="determinate"||h==="static"){var m=2*Math.PI*((gr-C)/2);Q.strokeDasharray=m.toFixed(3),w["aria-valuenow"]=Math.round(u),Q.strokeDashoffset="".concat(((100-u)/100*m).toFixed(3),"px"),d.transform="rotate(-90deg)"}return p.exports.createElement("div",_({className:yA(i.root,n,o!=="inherit"&&i["color".concat(Qe(o))],{determinate:i.determinate,indeterminate:i.indeterminate,static:i.static}[h]),style:_({width:I,height:I},d,l),ref:t,role:"progressbar"},w,f),p.exports.createElement("svg",{className:i.svg,viewBox:"".concat(gr/2," ").concat(gr/2," ").concat(gr," ").concat(gr)},p.exports.createElement("circle",{className:yA(i.circle,a&&i.circleDisableShrink,{determinate:i.circleDeterminate,indeterminate:i.circleIndeterminate,static:i.circleStatic}[h]),style:Q,cx:gr,cy:gr,r:(gr-C)/2,fill:"none",strokeWidth:C})))}),TM=ee(OlA,{name:"MuiCircularProgress",flip:!1})(YlA),KlA=[0,1,2,3,4,5,6,7,8,9,10],VlA=["auto",!0,1,2,3,4,5,6,7,8,9,10,11,12];function WlA(e,A,t){var i={};VlA.forEach(function(n){var r="grid-".concat(t,"-").concat(n);if(n===!0){i[r]={flexBasis:0,flexGrow:1,maxWidth:"100%"};return}if(n==="auto"){i[r]={flexBasis:"auto",flexGrow:0,maxWidth:"none"};return}var o="".concat(Math.round(n/12*1e8)/1e6,"%");i[r]={flexBasis:o,flexGrow:0,maxWidth:o}}),t==="xs"?_(e,i):e[A.breakpoints.up(t)]=i}function Uf(e){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,t=parseFloat(e);return"".concat(t/A).concat(String(e).replace(String(t),"")||"px")}function zlA(e,A){var t={};return KlA.forEach(function(i){var n=e.spacing(i);n!==0&&(t["spacing-".concat(A,"-").concat(i)]={margin:"-".concat(Uf(n,2)),width:"calc(100% + ".concat(Uf(n),")"),"& > $item":{padding:Uf(n,2)}})}),t}var jlA=function(A){return _({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"}},zlA(A,"xs"),A.breakpoints.keys.reduce(function(t,i){return WlA(t,A,i),t},{}))},XlA=p.exports.forwardRef(function(A,t){var i=A.alignContent,n=i===void 0?"stretch":i,r=A.alignItems,o=r===void 0?"stretch":r,s=A.classes,a=A.className,g=A.component,I=g===void 0?"div":g,l=A.container,c=l===void 0?!1:l,C=A.direction,B=C===void 0?"row":C,u=A.item,E=u===void 0?!1:u,h=A.justify,f=A.justifyContent,Q=f===void 0?"flex-start":f,d=A.lg,w=d===void 0?!1:d,m=A.md,v=m===void 0?!1:m,x=A.sm,D=x===void 0?!1:x,F=A.spacing,N=F===void 0?0:F,M=A.wrap,U=M===void 0?"wrap":M,P=A.xl,W=P===void 0?!1:P,J=A.xs,Z=J===void 0?!1:J,z=A.zeroMinWidth,O=z===void 0?!1:z,Y=SA(A,["alignContent","alignItems","classes","className","component","container","direction","item","justify","justifyContent","lg","md","sm","spacing","wrap","xl","xs","zeroMinWidth"]),k=yA(s.root,a,c&&[s.container,N!==0&&s["spacing-xs-".concat(String(N))]],E&&s.item,O&&s.zeroMinWidth,B!=="row"&&s["direction-xs-".concat(String(B))],U!=="wrap"&&s["wrap-xs-".concat(String(U))],o!=="stretch"&&s["align-items-xs-".concat(String(o))],n!=="stretch"&&s["align-content-xs-".concat(String(n))],(h||Q)!=="flex-start"&&s["justify-content-xs-".concat(String(h||Q))],Z!==!1&&s["grid-xs-".concat(String(Z))],D!==!1&&s["grid-sm-".concat(String(D))],v!==!1&&s["grid-md-".concat(String(v))],w!==!1&&s["grid-lg-".concat(String(w))],W!==!1&&s["grid-xl-".concat(String(W))]);return p.exports.createElement(I,_({className:k,ref:t},Y))}),ZlA=ee(jlA,{name:"MuiGrid"})(XlA),$A=ZlA,Ds;function UM(){if(Ds)return Ds;var e=document.createElement("div"),A=document.createElement("div");return A.style.width="10px",A.style.height="1px",e.appendChild(A),e.dir="rtl",e.style.fontSize="14px",e.style.width="4px",e.style.height="1px",e.style.position="absolute",e.style.top="-1000px",e.style.overflow="scroll",document.body.appendChild(e),Ds="reverse",e.scrollLeft>0?Ds="default":(e.scrollLeft=1,e.scrollLeft===0&&(Ds="negative")),document.body.removeChild(e),Ds}function _x(e,A){var t=e.scrollLeft;if(A!=="rtl")return t;var i=UM();switch(i){case"negative":return e.scrollWidth-e.clientWidth+t;case"reverse":return e.scrollWidth-e.clientWidth-t;default:return t}}function $lA(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}function AcA(e,A,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:function(){},r=i.ease,o=r===void 0?$lA:r,s=i.duration,a=s===void 0?300:s,g=null,I=A[e],l=!1,c=function(){l=!0},C=function B(u){if(l){n(new Error("Animation cancelled"));return}g===null&&(g=u);var E=Math.min(1,(u-g)/a);if(A[e]=o(E)*(t-I)+I,E>=1){requestAnimationFrame(function(){n(null)});return}requestAnimationFrame(B)};return I===t?(n(new Error("Element already at target position")),c):(requestAnimationFrame(C),c)}var ecA={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};function tcA(e){var A=e.onChange,t=SA(e,["onChange"]),i=p.exports.useRef(),n=p.exports.useRef(null),r=function(){i.current=n.current.offsetHeight-n.current.clientHeight};return p.exports.useEffect(function(){var o=ya(function(){var s=i.current;r(),s!==i.current&&A(i.current)});return window.addEventListener("resize",o),function(){o.clear(),window.removeEventListener("resize",o)}},[A]),p.exports.useEffect(function(){r(),A(i.current)},[A]),p.exports.createElement("div",_({style:ecA,ref:n},t))}var icA=function(A){return{root:{position:"absolute",height:2,bottom:0,width:"100%",transition:A.transitions.create()},colorPrimary:{backgroundColor:A.palette.primary.main},colorSecondary:{backgroundColor:A.palette.secondary.main},vertical:{height:"100%",width:2,right:0}}},ncA=p.exports.forwardRef(function(A,t){var i=A.classes,n=A.className,r=A.color,o=A.orientation,s=SA(A,["classes","className","color","orientation"]);return p.exports.createElement("span",_({className:yA(i.root,i["color".concat(Qe(r))],n,o==="vertical"&&i.vertical),ref:t},s))}),rcA=ee(icA,{name:"PrivateTabIndicator"})(ncA),ocA=wi(p.exports.createElement("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"})),scA=wi(p.exports.createElement("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"})),acA={root:{width:40,flexShrink:0,opacity:.8,"&$disabled":{opacity:0}},vertical:{width:"100%",height:40,"& svg":{transform:"rotate(90deg)"}},disabled:{}},gcA=p.exports.createElement(ocA,{fontSize:"small"}),IcA=p.exports.createElement(scA,{fontSize:"small"}),lcA=p.exports.forwardRef(function(A,t){var i=A.classes,n=A.className,r=A.direction,o=A.orientation,s=A.disabled,a=SA(A,["classes","className","direction","orientation","disabled"]);return p.exports.createElement(tc,_({component:"div",className:yA(i.root,n,s&&i.disabled,o==="vertical"&&i.vertical),ref:t,role:null,tabIndex:null},a),r==="left"?gcA:IcA)}),ccA=ee(acA,{name:"MuiTabScrollButton"})(lcA),CcA=function(A){return{root:{overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex"},vertical:{flexDirection:"column"},flexContainer:{display:"flex"},flexContainerVertical:{flexDirection:"column"},centered:{justifyContent:"center"},scroller:{position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap"},fixed:{overflowX:"hidden",width:"100%"},scrollable:{overflowX:"scroll",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}},scrollButtons:{},scrollButtonsDesktop:y({},A.breakpoints.down("xs"),{display:"none"}),indicator:{}}},BcA=p.exports.forwardRef(function(A,t){var i=A["aria-label"],n=A["aria-labelledby"],r=A.action,o=A.centered,s=o===void 0?!1:o,a=A.children,g=A.classes,I=A.className,l=A.component,c=l===void 0?"div":l,C=A.indicatorColor,B=C===void 0?"secondary":C,u=A.onChange,E=A.orientation,h=E===void 0?"horizontal":E,f=A.ScrollButtonComponent,Q=f===void 0?ccA:f,d=A.scrollButtons,w=d===void 0?"auto":d,m=A.selectionFollowsFocus,v=A.TabIndicatorProps,x=v===void 0?{}:v,D=A.TabScrollButtonProps,F=A.textColor,N=F===void 0?"inherit":F,M=A.value,U=A.variant,P=U===void 0?"standard":U,W=SA(A,["aria-label","aria-labelledby","action","centered","children","classes","className","component","indicatorColor","onChange","orientation","ScrollButtonComponent","scrollButtons","selectionFollowsFocus","TabIndicatorProps","TabScrollButtonProps","textColor","value","variant"]),J=Ll(),Z=P==="scrollable",z=J.direction==="rtl",O=h==="vertical",Y=O?"scrollTop":"scrollLeft",k=O?"top":"left",q=O?"bottom":"right",j=O?"clientHeight":"clientWidth",AA=O?"height":"width",iA=p.exports.useState(!1),gA=iA[0],sA=iA[1],BA=p.exports.useState({}),IA=BA[0],bA=BA[1],EA=p.exports.useState({start:!1,end:!1}),QA=EA[0],TA=EA[1],RA=p.exports.useState({overflow:"hidden",marginBottom:null}),UA=RA[0],fA=RA[1],NA=new Map,ZA=p.exports.useRef(null),ne=p.exports.useRef(null),Ie=function(){var rA=ZA.current,GA;if(rA){var ve=rA.getBoundingClientRect();GA={clientWidth:rA.clientWidth,scrollLeft:rA.scrollLeft,scrollTop:rA.scrollTop,scrollLeftNormalized:_x(rA,J.direction),scrollWidth:rA.scrollWidth,top:ve.top,bottom:ve.bottom,left:ve.left,right:ve.right}}var pe;if(rA&&M!==!1){var Fe=ne.current.children;if(Fe.length>0){var Ne=Fe[NA.get(M)];pe=Ne?Ne.getBoundingClientRect():null}}return{tabsMeta:GA,tabMeta:pe}},KA=Oe(function(){var PA,rA=Ie(),GA=rA.tabsMeta,ve=rA.tabMeta,pe=0;if(ve&&GA)if(O)pe=ve.top-GA.top+GA.scrollTop;else{var Fe=z?GA.scrollLeftNormalized+GA.clientWidth-GA.scrollWidth:GA.scrollLeft;pe=ve.left-GA.left+Fe}var Ne=(PA={},y(PA,k,pe),y(PA,AA,ve?ve[AA]:0),PA);if(isNaN(IA[k])||isNaN(IA[AA]))bA(Ne);else{var Xe=Math.abs(IA[k]-Ne[k]),it=Math.abs(IA[AA]-Ne[AA]);(Xe>=1||it>=1)&&bA(Ne)}}),eA=function(rA){AcA(Y,ZA.current,rA)},aA=function(rA){var GA=ZA.current[Y];O?GA+=rA:(GA+=rA*(z?-1:1),GA*=z&&UM()==="reverse"?-1:1),eA(GA)},FA=function(){aA(-ZA.current[j])},re=function(){aA(ZA.current[j])},VA=p.exports.useCallback(function(PA){fA({overflow:null,marginBottom:-PA})},[]),_e=function(){var rA={};rA.scrollbarSizeListener=Z?p.exports.createElement(tcA,{className:g.scrollable,onChange:VA}):null;var GA=QA.start||QA.end,ve=Z&&(w==="auto"&&GA||w==="desktop"||w==="on");return rA.scrollButtonStart=ve?p.exports.createElement(Q,_({orientation:h,direction:z?"right":"left",onClick:FA,disabled:!QA.start,className:yA(g.scrollButtons,w!=="on"&&g.scrollButtonsDesktop)},D)):null,rA.scrollButtonEnd=ve?p.exports.createElement(Q,_({orientation:h,direction:z?"left":"right",onClick:re,disabled:!QA.end,className:yA(g.scrollButtons,w!=="on"&&g.scrollButtonsDesktop)},D)):null,rA},WA=Oe(function(){var PA=Ie(),rA=PA.tabsMeta,GA=PA.tabMeta;if(!(!GA||!rA)){if(GA[k]rA[q]){var pe=rA[Y]+(GA[q]-rA[q]);eA(pe)}}}),qA=Oe(function(){if(Z&&w!=="off"){var PA=ZA.current,rA=PA.scrollTop,GA=PA.scrollHeight,ve=PA.clientHeight,pe=PA.scrollWidth,Fe=PA.clientWidth,Ne,Xe;if(O)Ne=rA>1,Xe=rA1,Xe=z?it>1:it *:first-child":{marginBottom:6}},textColorInherit:{color:"inherit",opacity:.7,"&$selected":{opacity:1},"&$disabled":{opacity:.5}},textColorPrimary:{color:A.palette.text.secondary,"&$selected":{color:A.palette.primary.main},"&$disabled":{color:A.palette.text.disabled}},textColorSecondary:{color:A.palette.text.secondary,"&$selected":{color:A.palette.secondary.main},"&$disabled":{color:A.palette.text.disabled}},selected:{},disabled:{},fullWidth:{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"},wrapped:{fontSize:A.typography.pxToRem(12),lineHeight:1.5},wrapper:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"100%",flexDirection:"column"}}},hcA=p.exports.forwardRef(function(A,t){var i=A.classes,n=A.className,r=A.disabled,o=r===void 0?!1:r,s=A.disableFocusRipple,a=s===void 0?!1:s,g=A.fullWidth,I=A.icon,l=A.indicator,c=A.label,C=A.onChange,B=A.onClick,u=A.onFocus,E=A.selected,h=A.selectionFollowsFocus,f=A.textColor,Q=f===void 0?"inherit":f,d=A.value,w=A.wrapped,m=w===void 0?!1:w,v=SA(A,["classes","className","disabled","disableFocusRipple","fullWidth","icon","indicator","label","onChange","onClick","onFocus","selected","selectionFollowsFocus","textColor","value","wrapped"]),x=function(N){C&&C(N,d),B&&B(N)},D=function(N){h&&!E&&C&&C(N,d),u&&u(N)};return p.exports.createElement(tc,_({focusRipple:!a,className:yA(i.root,i["textColor".concat(Qe(Q))],n,o&&i.disabled,E&&i.selected,c&&I&&i.labelIcon,g&&i.fullWidth,m&&i.wrapped),ref:t,role:"tab","aria-selected":E,disabled:o,onClick:x,onFocus:D,tabIndex:E?0:-1},v),p.exports.createElement("span",{className:i.wrapper},I,c),l)}),Mx=ee(ucA,{name:"MuiTab"})(hcA),fcA=function(A){return{root:{height:1,margin:0,border:"none",flexShrink:0,backgroundColor:A.palette.divider},absolute:{position:"absolute",bottom:0,left:0,width:"100%"},inset:{marginLeft:72},light:{backgroundColor:ut(A.palette.divider,.08)},middle:{marginLeft:A.spacing(2),marginRight:A.spacing(2)},vertical:{height:"100%",width:1},flexItem:{alignSelf:"stretch",height:"auto"}}},QcA=p.exports.forwardRef(function(A,t){var i=A.absolute,n=i===void 0?!1:i,r=A.classes,o=A.className,s=A.component,a=s===void 0?"hr":s,g=A.flexItem,I=g===void 0?!1:g,l=A.light,c=l===void 0?!1:l,C=A.orientation,B=C===void 0?"horizontal":C,u=A.role,E=u===void 0?a!=="hr"?"separator":void 0:u,h=A.variant,f=h===void 0?"fullWidth":h,Q=SA(A,["absolute","classes","className","component","flexItem","light","orientation","role","variant"]);return p.exports.createElement(a,_({className:yA(r.root,o,f!=="fullWidth"&&r[f],n&&r.absolute,I&&r.flexItem,c&&r.light,B==="vertical"&&r.vertical),role:E,ref:t},Q))}),s0=ee(fcA,{name:"MuiDivider"})(QcA),PM=p.exports.createContext();function dcA(){return p.exports.useContext(PM)}var ym=PM;function eg(){return p.exports.useContext(ym)}var pcA={root:{padding:9},checked:{},disabled:{},input:{cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}},ycA=p.exports.forwardRef(function(A,t){var i=A.autoFocus,n=A.checked,r=A.checkedIcon,o=A.classes,s=A.className,a=A.defaultChecked,g=A.disabled,I=A.icon,l=A.id,c=A.inputProps,C=A.inputRef,B=A.name,u=A.onBlur,E=A.onChange,h=A.onFocus,f=A.readOnly,Q=A.required,d=A.tabIndex,w=A.type,m=A.value,v=SA(A,["autoFocus","checked","checkedIcon","classes","className","defaultChecked","disabled","icon","id","inputProps","inputRef","name","onBlur","onChange","onFocus","readOnly","required","tabIndex","type","value"]),x=Su({controlled:n,default:Boolean(a),name:"SwitchBase",state:"checked"}),D=Fl(x,2),F=D[0],N=D[1],M=eg(),U=function(O){h&&h(O),M&&M.onFocus&&M.onFocus(O)},P=function(O){u&&u(O),M&&M.onBlur&&M.onBlur(O)},W=function(O){var Y=O.target.checked;N(Y),E&&E(O,Y)},J=g;M&&typeof J=="undefined"&&(J=M.disabled);var Z=w==="checkbox"||w==="radio";return p.exports.createElement(jo,_({component:"span",className:yA(o.root,s,F&&o.checked,J&&o.disabled),disabled:J,tabIndex:null,role:void 0,onFocus:U,onBlur:P,ref:t},v),p.exports.createElement("input",_({autoFocus:i,checked:n,defaultChecked:a,className:o.input,disabled:J,id:Z&&l,name:B,onChange:W,readOnly:f,ref:C,required:Q,tabIndex:d,type:w,value:m},c)),F?r:I)}),mcA=ee(pcA,{name:"PrivateSwitchBase"})(ycA),wcA=wi(p.exports.createElement("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"})),vcA=wi(p.exports.createElement("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"})),ScA=wi(p.exports.createElement("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"})),DcA=function(A){return{root:{color:A.palette.text.secondary},checked:{},disabled:{},indeterminate:{},colorPrimary:{"&$checked":{color:A.palette.primary.main,"&:hover":{backgroundColor:ut(A.palette.primary.main,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"&$disabled":{color:A.palette.action.disabled}},colorSecondary:{"&$checked":{color:A.palette.secondary.main,"&:hover":{backgroundColor:ut(A.palette.secondary.main,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"&$disabled":{color:A.palette.action.disabled}}}},RcA=p.exports.createElement(vcA,null),xcA=p.exports.createElement(wcA,null),FcA=p.exports.createElement(ScA,null),NcA=p.exports.forwardRef(function(A,t){var i=A.checkedIcon,n=i===void 0?RcA:i,r=A.classes,o=A.color,s=o===void 0?"secondary":o,a=A.icon,g=a===void 0?xcA:a,I=A.indeterminate,l=I===void 0?!1:I,c=A.indeterminateIcon,C=c===void 0?FcA:c,B=A.inputProps,u=A.size,E=u===void 0?"medium":u,h=SA(A,["checkedIcon","classes","color","icon","indeterminate","indeterminateIcon","inputProps","size"]),f=l?C:g,Q=l?C:n;return p.exports.createElement(mcA,_({type:"checkbox",classes:{root:yA(r.root,r["color".concat(Qe(s))],l&&r.indeterminate),checked:r.checked,disabled:r.disabled},color:s,inputProps:_({"data-indeterminate":l},B),icon:p.exports.cloneElement(f,{fontSize:f.props.fontSize===void 0&&E==="small"?E:f.props.fontSize}),checkedIcon:p.exports.cloneElement(Q,{fontSize:Q.props.fontSize===void 0&&E==="small"?E:Q.props.fontSize}),ref:t},h))}),mm=ee(DcA,{name:"MuiCheckbox"})(NcA),LcA=function(A){return{thumb:{"&$open":{"& $offset":{transform:"scale(1) translateY(-10px)"}}},open:{},offset:_({zIndex:1},A.typography.body2,{fontSize:A.typography.pxToRem(12),lineHeight:1.2,transition:A.transitions.create(["transform"],{duration:A.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:A.palette.primary.contrastText,transform:"rotate(45deg)"}}};function bcA(e){var A=e.children,t=e.classes,i=e.className,n=e.open,r=e.value,o=e.valueLabelDisplay;return o==="off"?A:p.exports.cloneElement(A,{className:yA(A.props.className,(n||o==="on")&&t.open,t.thumb)},p.exports.createElement("span",{className:yA(t.offset,i)},p.exports.createElement("span",{className:t.circle},p.exports.createElement("span",{className:t.label},r))))}var GcA=ee(LcA,{name:"PrivateValueLabel"})(bcA);function Pf(e,A){return e-A}function Hf(e,A,t){return Math.min(Math.max(A,e),t)}function kx(e,A){var t=e.reduce(function(n,r,o){var s=Math.abs(A-r);return n===null||s0&&aA.some(function(wA){return wA.label})&&o.marked,Y===!1&&o.trackFalse,M==="vertical"&&o.vertical,Y==="inverted"&&o.trackInverted),onMouseDown:ls},BA),p.exports.createElement("span",{className:o.rail}),p.exports.createElement("span",{className:o.track,style:cs}),p.exports.createElement("input",{value:eA.join(","),name:v,type:"hidden"}),aA.map(function(wA,LA){var Se=EC(wA.value,m,d),ye=hC[Fe].offset(Se),te;return Y===!1?te=eA.indexOf(wA.value)!==-1:te=Y==="normal"&&(KA?wA.value>=eA[0]&&wA.value<=eA[eA.length-1]:wA.value<=eA[0])||Y==="inverted"&&(KA?wA.value<=eA[0]||wA.value>=eA[eA.length-1]:wA.value>=eA[0]),p.exports.createElement(p.exports.Fragment,{key:wA.value},p.exports.createElement("span",{style:ye,"data-index":LA,className:yA(o.mark,te&&o.markActive)}),wA.label!=null?p.exports.createElement("span",{"aria-hidden":!0,"data-index":LA,style:ye,className:yA(o.markLabel,te&&o.markLabelActive)},wA.label):null)}),eA.map(function(wA,LA){var Se=EC(wA,m,d),ye=hC[Fe].offset(Se);return p.exports.createElement(j,{key:LA,valueLabelFormat:sA,valueLabelDisplay:iA,className:o.valueLabel,value:typeof sA=="function"?sA(P(wA),LA):sA,index:LA,open:UA===LA||QA===LA||iA==="on",disabled:B},p.exports.createElement(z,{className:yA(o.thumb,o["thumbColor".concat(Qe(g))],QA===LA&&o.active,B&&o.disabled,qA===LA&&o.focusVisible),tabIndex:B?null:0,role:"slider",style:ye,"data-index":LA,"aria-label":u?u(LA):i,"aria-labelledby":n,"aria-orientation":M,"aria-valuemax":P(d),"aria-valuemin":P(m),"aria-valuenow":P(wA),"aria-valuetext":E?E(P(wA),LA):r,onKeyDown:ve,onFocus:Be,onBlur:ue,onMouseOver:PA,onMouseLeave:rA}))}))}),wm=ee(kcA,{name:"MuiSlider"})(TcA);function UcA(e){return e=typeof e=="function"?e():e,bt.exports.findDOMNode(e)}var qf=typeof window!="undefined"?p.exports.useLayoutEffect:p.exports.useEffect,PcA=p.exports.forwardRef(function(A,t){var i=A.children,n=A.container,r=A.disablePortal,o=r===void 0?!1:r,s=A.onRendered,a=p.exports.useState(null),g=a[0],I=a[1],l=ze(p.exports.isValidElement(i)?i.ref:null,t);return qf(function(){o||I(UcA(n)||document.body)},[n,o]),qf(function(){if(g&&!o)return zo(t,g),function(){zo(t,null)}},[t,g,o]),qf(function(){s&&(g||o)&&s()},[s,g,o]),o?p.exports.isValidElement(i)?p.exports.cloneElement(i,{ref:l}):i:g&&bt.exports.createPortal(i,g)}),HM=PcA;function qM(){var e=document.createElement("div");e.style.width="99px",e.style.height="99px",e.style.position="absolute",e.style.top="-9999px",e.style.overflow="scroll",document.body.appendChild(e);var A=e.offsetWidth-e.clientWidth;return document.body.removeChild(e),A}function HcA(e){var A=pt(e);return A.body===e?vu(A).innerWidth>A.documentElement.clientWidth:e.scrollHeight>e.clientHeight}function SI(e,A){A?e.setAttribute("aria-hidden","true"):e.removeAttribute("aria-hidden")}function Hx(e){return parseInt(window.getComputedStyle(e)["padding-right"],10)||0}function qx(e,A,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[],n=arguments.length>4?arguments[4]:void 0,r=[A,t].concat(Rl(i)),o=["TEMPLATE","SCRIPT","STYLE"];[].forEach.call(e.children,function(s){s.nodeType===1&&r.indexOf(s)===-1&&o.indexOf(s.tagName)===-1&&SI(s,n)})}function Jf(e,A){var t=-1;return e.some(function(i,n){return A(i)?(t=n,!0):!1}),t}function qcA(e,A){var t=[],i=[],n=e.container,r;if(!A.disableScrollLock){if(HcA(n)){var o=qM();t.push({value:n.style.paddingRight,key:"padding-right",el:n}),n.style["padding-right"]="".concat(Hx(n)+o,"px"),r=pt(n).querySelectorAll(".mui-fixed"),[].forEach.call(r,function(I){i.push(I.style.paddingRight),I.style.paddingRight="".concat(Hx(I)+o,"px")})}var s=n.parentElement,a=s.nodeName==="HTML"&&window.getComputedStyle(s)["overflow-y"]==="scroll"?s:n;t.push({value:a.style.overflow,key:"overflow",el:a}),a.style.overflow="hidden"}var g=function(){r&&[].forEach.call(r,function(l,c){i[c]?l.style.paddingRight=i[c]:l.style.removeProperty("padding-right")}),t.forEach(function(l){var c=l.value,C=l.el,B=l.key;c?C.style.setProperty(B,c):C.style.removeProperty(B)})};return g}function JcA(e){var A=[];return[].forEach.call(e.children,function(t){t.getAttribute&&t.getAttribute("aria-hidden")==="true"&&A.push(t)}),A}var OcA=function(){function e(){rq(this,e),this.modals=[],this.containers=[]}return mp(e,[{key:"add",value:function(t,i){var n=this.modals.indexOf(t);if(n!==-1)return n;n=this.modals.length,this.modals.push(t),t.modalRef&&SI(t.modalRef,!1);var r=JcA(i);qx(i,t.mountNode,t.modalRef,r,!0);var o=Jf(this.containers,function(s){return s.container===i});return o!==-1?(this.containers[o].modals.push(t),n):(this.containers.push({modals:[t],container:i,restore:null,hiddenSiblingNodes:r}),n)}},{key:"mount",value:function(t,i){var n=Jf(this.containers,function(o){return o.modals.indexOf(t)!==-1}),r=this.containers[n];r.restore||(r.restore=qcA(r,i))}},{key:"remove",value:function(t){var i=this.modals.indexOf(t);if(i===-1)return i;var n=Jf(this.containers,function(s){return s.modals.indexOf(t)!==-1}),r=this.containers[n];if(r.modals.splice(r.modals.indexOf(t),1),this.modals.splice(i,1),r.modals.length===0)r.restore&&r.restore(),t.modalRef&&SI(t.modalRef,!0),qx(r.container,t.mountNode,t.modalRef,r.hiddenSiblingNodes,!1),this.containers.splice(n,1);else{var o=r.modals[r.modals.length-1];o.modalRef&&SI(o.modalRef,!1)}return i}},{key:"isTopModal",value:function(t){return this.modals.length>0&&this.modals[this.modals.length-1]===t}}]),e}();function YcA(e){var A=e.children,t=e.disableAutoFocus,i=t===void 0?!1:t,n=e.disableEnforceFocus,r=n===void 0?!1:n,o=e.disableRestoreFocus,s=o===void 0?!1:o,a=e.getDoc,g=e.isEnabled,I=e.open,l=p.exports.useRef(),c=p.exports.useRef(null),C=p.exports.useRef(null),B=p.exports.useRef(),u=p.exports.useRef(null),E=p.exports.useCallback(function(Q){u.current=bt.exports.findDOMNode(Q)},[]),h=ze(A.ref,E),f=p.exports.useRef();return p.exports.useEffect(function(){f.current=I},[I]),!f.current&&I&&typeof window!="undefined"&&(B.current=a().activeElement),p.exports.useEffect(function(){if(!!I){var Q=pt(u.current);!i&&u.current&&!u.current.contains(Q.activeElement)&&(u.current.hasAttribute("tabIndex")||u.current.setAttribute("tabIndex",-1),u.current.focus());var d=function(){var x=u.current;if(x!==null){if(!Q.hasFocus()||r||!g()||l.current){l.current=!1;return}u.current&&!u.current.contains(Q.activeElement)&&u.current.focus()}},w=function(x){r||!g()||x.keyCode!==9||Q.activeElement===u.current&&(l.current=!0,x.shiftKey?C.current.focus():c.current.focus())};Q.addEventListener("focus",d,!0),Q.addEventListener("keydown",w,!0);var m=setInterval(function(){d()},50);return function(){clearInterval(m),Q.removeEventListener("focus",d,!0),Q.removeEventListener("keydown",w,!0),s||(B.current&&B.current.focus&&B.current.focus(),B.current=null)}}},[i,r,s,g,I]),p.exports.createElement(p.exports.Fragment,null,p.exports.createElement("div",{tabIndex:0,ref:c,"data-test":"sentinelStart"}),p.exports.cloneElement(A,{ref:h}),p.exports.createElement("div",{tabIndex:0,ref:C,"data-test":"sentinelEnd"}))}var Jx={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"}},KcA=p.exports.forwardRef(function(A,t){var i=A.invisible,n=i===void 0?!1:i,r=A.open,o=SA(A,["invisible","open"]);return r?p.exports.createElement("div",_({"aria-hidden":!0,ref:t},o,{style:_({},Jx.root,n?Jx.invisible:{},o.style)})):null}),VcA=KcA;function WcA(e){return e=typeof e=="function"?e():e,bt.exports.findDOMNode(e)}function zcA(e){return e.children?e.children.props.hasOwnProperty("in"):!1}var jcA=new OcA,XcA=function(A){return{root:{position:"fixed",zIndex:A.zIndex.modal,right:0,bottom:0,top:0,left:0},hidden:{visibility:"hidden"}}},ZcA=p.exports.forwardRef(function(A,t){var i=_a(),n=F2({name:"MuiModal",props:_({},A),theme:i}),r=n.BackdropComponent,o=r===void 0?VcA:r,s=n.BackdropProps,a=n.children,g=n.closeAfterTransition,I=g===void 0?!1:g,l=n.container,c=n.disableAutoFocus,C=c===void 0?!1:c,B=n.disableBackdropClick,u=B===void 0?!1:B,E=n.disableEnforceFocus,h=E===void 0?!1:E,f=n.disableEscapeKeyDown,Q=f===void 0?!1:f,d=n.disablePortal,w=d===void 0?!1:d,m=n.disableRestoreFocus,v=m===void 0?!1:m,x=n.disableScrollLock,D=x===void 0?!1:x,F=n.hideBackdrop,N=F===void 0?!1:F,M=n.keepMounted,U=M===void 0?!1:M,P=n.manager,W=P===void 0?jcA:P,J=n.onBackdropClick,Z=n.onClose,z=n.onEscapeKeyDown,O=n.onRendered,Y=n.open,k=SA(n,["BackdropComponent","BackdropProps","children","closeAfterTransition","container","disableAutoFocus","disableBackdropClick","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","manager","onBackdropClick","onClose","onEscapeKeyDown","onRendered","open"]),q=p.exports.useState(!0),j=q[0],AA=q[1],iA=p.exports.useRef({}),gA=p.exports.useRef(null),sA=p.exports.useRef(null),BA=ze(sA,t),IA=zcA(n),bA=function(){return pt(gA.current)},EA=function(){return iA.current.modalRef=sA.current,iA.current.mountNode=gA.current,iA.current},QA=function(){W.mount(EA(),{disableScrollLock:D}),sA.current.scrollTop=0},TA=Oe(function(){var aA=WcA(l)||bA().body;W.add(EA(),aA),sA.current&&QA()}),RA=p.exports.useCallback(function(){return W.isTopModal(EA())},[W]),UA=Oe(function(aA){gA.current=aA,aA&&(O&&O(),Y&&RA()?QA():SI(sA.current,!0))}),fA=p.exports.useCallback(function(){W.remove(EA())},[W]);if(p.exports.useEffect(function(){return function(){fA()}},[fA]),p.exports.useEffect(function(){Y?TA():(!IA||!I)&&fA()},[Y,fA,IA,I,TA]),!U&&!Y&&(!IA||j))return null;var NA=function(){AA(!1)},ZA=function(){AA(!0),I&&fA()},ne=function(FA){FA.target===FA.currentTarget&&(J&&J(FA),!u&&Z&&Z(FA,"backdropClick"))},Ie=function(FA){FA.key!=="Escape"||!RA()||(z&&z(FA),Q||(FA.stopPropagation(),Z&&Z(FA,"escapeKeyDown")))},KA=XcA(i||{zIndex:D2}),eA={};return a.props.tabIndex===void 0&&(eA.tabIndex=a.props.tabIndex||"-1"),IA&&(eA.onEnter=zr(NA,a.props.onEnter),eA.onExited=zr(ZA,a.props.onExited)),p.exports.createElement(HM,{ref:UA,container:l,disablePortal:w},p.exports.createElement("div",_({ref:BA,onKeyDown:Ie,role:"presentation"},k,{style:_({},KA.root,!Y&&j?KA.hidden:{},k.style)}),N?null:p.exports.createElement(o,_({open:Y,onClick:ne},s)),p.exports.createElement(YcA,{disableEnforceFocus:h,disableAutoFocus:C,disableRestoreFocus:v,getDoc:bA,isEnabled:RA,open:Y},p.exports.cloneElement(a,eA))))}),$cA=ZcA;function Ox(e,A){var t=0;return typeof A=="number"?t=A:A==="center"?t=e.height/2:A==="bottom"&&(t=e.height),t}function Yx(e,A){var t=0;return typeof A=="number"?t=A:A==="center"?t=e.width/2:A==="right"&&(t=e.width),t}function Kx(e){return[e.horizontal,e.vertical].map(function(A){return typeof A=="number"?"".concat(A,"px"):A}).join(" ")}function ACA(e,A){for(var t=A,i=0;t&&t!==e;)t=t.parentElement,i+=t.scrollTop;return i}function Of(e){return typeof e=="function"?e():e}var eCA={root:{},paper:{position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}},tCA=p.exports.forwardRef(function(A,t){var i=A.action,n=A.anchorEl,r=A.anchorOrigin,o=r===void 0?{vertical:"top",horizontal:"left"}:r,s=A.anchorPosition,a=A.anchorReference,g=a===void 0?"anchorEl":a,I=A.children,l=A.classes,c=A.className,C=A.container,B=A.elevation,u=B===void 0?8:B,E=A.getContentAnchorEl,h=A.marginThreshold,f=h===void 0?16:h,Q=A.onEnter,d=A.onEntered,w=A.onEntering,m=A.onExit,v=A.onExited,x=A.onExiting,D=A.open,F=A.PaperProps,N=F===void 0?{}:F,M=A.transformOrigin,U=M===void 0?{vertical:"top",horizontal:"left"}:M,P=A.TransitionComponent,W=P===void 0?NM:P,J=A.transitionDuration,Z=J===void 0?"auto":J,z=A.TransitionProps,O=z===void 0?{}:z,Y=SA(A,["action","anchorEl","anchorOrigin","anchorPosition","anchorReference","children","classes","className","container","elevation","getContentAnchorEl","marginThreshold","onEnter","onEntered","onEntering","onExit","onExited","onExiting","open","PaperProps","transformOrigin","TransitionComponent","transitionDuration","TransitionProps"]),k=p.exports.useRef(),q=p.exports.useCallback(function(EA){if(g==="anchorPosition")return s;var QA=Of(n),TA=QA&&QA.nodeType===1?QA:pt(k.current).body,RA=TA.getBoundingClientRect(),UA=EA===0?o.vertical:"center";return{top:RA.top+Ox(RA,UA),left:RA.left+Yx(RA,o.horizontal)}},[n,o.horizontal,o.vertical,s,g]),j=p.exports.useCallback(function(EA){var QA=0;if(E&&g==="anchorEl"){var TA=E(EA);if(TA&&EA.contains(TA)){var RA=ACA(EA,TA);QA=TA.offsetTop+TA.clientHeight/2-RA||0}}return QA},[o.vertical,g,E]),AA=p.exports.useCallback(function(EA){var QA=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return{vertical:Ox(EA,U.vertical)+QA,horizontal:Yx(EA,U.horizontal)}},[U.horizontal,U.vertical]),iA=p.exports.useCallback(function(EA){var QA=j(EA),TA={width:EA.offsetWidth,height:EA.offsetHeight},RA=AA(TA,QA);if(g==="none")return{top:null,left:null,transformOrigin:Kx(RA)};var UA=q(QA),fA=UA.top-RA.vertical,NA=UA.left-RA.horizontal,ZA=fA+TA.height,ne=NA+TA.width,Ie=vu(Of(n)),KA=Ie.innerHeight-f,eA=Ie.innerWidth-f;if(fAKA){var FA=ZA-KA;fA-=FA,RA.vertical+=FA}if(NAeA){var VA=ne-eA;NA-=VA,RA.horizontal+=VA}return{top:"".concat(Math.round(fA),"px"),left:"".concat(Math.round(NA),"px"),transformOrigin:Kx(RA)}},[n,g,q,j,AA,f]),gA=p.exports.useCallback(function(){var EA=k.current;if(!!EA){var QA=iA(EA);QA.top!==null&&(EA.style.top=QA.top),QA.left!==null&&(EA.style.left=QA.left),EA.style.transformOrigin=QA.transformOrigin}},[iA]),sA=function(QA,TA){w&&w(QA,TA),gA()},BA=p.exports.useCallback(function(EA){k.current=bt.exports.findDOMNode(EA)},[]);p.exports.useEffect(function(){D&&gA()}),p.exports.useImperativeHandle(i,function(){return D?{updatePosition:function(){gA()}}:null},[D,gA]),p.exports.useEffect(function(){if(!!D){var EA=ya(function(){gA()});return window.addEventListener("resize",EA),function(){EA.clear(),window.removeEventListener("resize",EA)}}},[D,gA]);var IA=Z;Z==="auto"&&!W.muiSupportAuto&&(IA=void 0);var bA=C||(n?pt(Of(n)).body:void 0);return p.exports.createElement($cA,_({container:bA,open:D,ref:t,BackdropProps:{invisible:!0},className:yA(l.root,c)},Y),p.exports.createElement(W,_({appear:!0,in:D,onEnter:Q,onEntered:d,onExit:m,onExited:v,onExiting:x,timeout:IA},O,{onEntering:zr(sA,O.onEntering)}),p.exports.createElement(no,_({elevation:u,ref:BA},N,{className:yA(l.paper,N.className)}),I)))}),iCA=ee(eCA,{name:"MuiPopover"})(tCA),nCA=p.exports.createContext({}),ZC=nCA,rCA={root:{listStyle:"none",margin:0,padding:0,position:"relative"},padding:{paddingTop:8,paddingBottom:8},dense:{},subheader:{paddingTop:0}},oCA=p.exports.forwardRef(function(A,t){var i=A.children,n=A.classes,r=A.className,o=A.component,s=o===void 0?"ul":o,a=A.dense,g=a===void 0?!1:a,I=A.disablePadding,l=I===void 0?!1:I,c=A.subheader,C=SA(A,["children","classes","className","component","dense","disablePadding","subheader"]),B=p.exports.useMemo(function(){return{dense:g}},[g]);return p.exports.createElement(ZC.Provider,{value:B},p.exports.createElement(s,_({className:yA(n.root,r,g&&n.dense,!l&&n.padding,c&&n.subheader),ref:t},C),c,i))}),sCA=ee(rCA,{name:"MuiList"})(oCA);function Yf(e,A,t){return e===A?e.firstChild:A&&A.nextElementSibling?A.nextElementSibling:t?null:e.firstChild}function Vx(e,A,t){return e===A?t?e.firstChild:e.lastChild:A&&A.previousElementSibling?A.previousElementSibling:t?null:e.lastChild}function JM(e,A){if(A===void 0)return!0;var t=e.innerText;return t===void 0&&(t=e.textContent),t=t.trim().toLowerCase(),t.length===0?!1:A.repeating?t[0]===A.keys[0]:t.indexOf(A.keys.join(""))===0}function Gg(e,A,t,i,n,r){for(var o=!1,s=n(e,A,A?t:!1);s;){if(s===e.firstChild){if(o)return;o=!0}var a=i?!1:s.disabled||s.getAttribute("aria-disabled")==="true";if(!s.hasAttribute("tabindex")||!JM(s,r)||a)s=n(e,s,t);else{s.focus();return}}}var aCA=typeof window=="undefined"?p.exports.useEffect:p.exports.useLayoutEffect,gCA=p.exports.forwardRef(function(A,t){var i=A.actions,n=A.autoFocus,r=n===void 0?!1:n,o=A.autoFocusItem,s=o===void 0?!1:o,a=A.children,g=A.className,I=A.disabledItemsFocusable,l=I===void 0?!1:I,c=A.disableListWrap,C=c===void 0?!1:c,B=A.onKeyDown,u=A.variant,E=u===void 0?"selectedMenu":u,h=SA(A,["actions","autoFocus","autoFocusItem","children","className","disabledItemsFocusable","disableListWrap","onKeyDown","variant"]),f=p.exports.useRef(null),Q=p.exports.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});aCA(function(){r&&f.current.focus()},[r]),p.exports.useImperativeHandle(i,function(){return{adjustStyleForScrollbar:function(F,N){var M=!f.current.style.width;if(F.clientHeight0&&(J-P.lastTime>500?(P.keys=[],P.repeating=!0,P.previousKeyMatched=!0):P.repeating&&W!==P.keys[0]&&(P.repeating=!1)),P.lastTime=J,P.keys.push(W);var Z=U&&!P.repeating&&JM(U,P);P.previousKeyMatched&&(Z||Gg(N,U,!1,l,Yf,P))?F.preventDefault():P.previousKeyMatched=!1}B&&B(F)},w=p.exports.useCallback(function(D){f.current=bt.exports.findDOMNode(D)},[]),m=ze(w,t),v=-1;p.exports.Children.forEach(a,function(D,F){!p.exports.isValidElement(D)||D.props.disabled||(E==="selectedMenu"&&D.props.selected||v===-1)&&(v=F)});var x=p.exports.Children.map(a,function(D,F){if(F===v){var N={};return s&&(N.autoFocus=!0),D.props.tabIndex===void 0&&E==="selectedMenu"&&(N.tabIndex=0),p.exports.cloneElement(D,N)}return D});return p.exports.createElement(sCA,_({role:"menu",ref:m,className:g,onKeyDown:d,tabIndex:r?0:-1},h),x)}),vm=gCA,Wx={vertical:"top",horizontal:"right"},zx={vertical:"top",horizontal:"left"},ICA={paper:{maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"},list:{outline:0}},lCA=p.exports.forwardRef(function(A,t){var i=A.autoFocus,n=i===void 0?!0:i,r=A.children,o=A.classes,s=A.disableAutoFocusItem,a=s===void 0?!1:s,g=A.MenuListProps,I=g===void 0?{}:g,l=A.onClose,c=A.onEntering,C=A.open,B=A.PaperProps,u=B===void 0?{}:B,E=A.PopoverClasses,h=A.transitionDuration,f=h===void 0?"auto":h,Q=A.TransitionProps;Q=Q===void 0?{}:Q;var d=Q.onEntering,w=SA(Q,["onEntering"]),m=A.variant,v=m===void 0?"selectedMenu":m,x=SA(A,["autoFocus","children","classes","disableAutoFocusItem","MenuListProps","onClose","onEntering","open","PaperProps","PopoverClasses","transitionDuration","TransitionProps","variant"]),D=Ll(),F=n&&!a&&C,N=p.exports.useRef(null),M=p.exports.useRef(null),U=function(){return M.current},P=function(O,Y){N.current&&N.current.adjustStyleForScrollbar(O,D),c&&c(O,Y),d&&d(O,Y)},W=function(O){O.key==="Tab"&&(O.preventDefault(),l&&l(O,"tabKeyDown"))},J=-1;p.exports.Children.map(r,function(z,O){!p.exports.isValidElement(z)||z.props.disabled||(v!=="menu"&&z.props.selected||J===-1)&&(J=O)});var Z=p.exports.Children.map(r,function(z,O){return O===J?p.exports.cloneElement(z,{ref:function(k){M.current=bt.exports.findDOMNode(k),zo(z.ref,k)}}):z});return p.exports.createElement(iCA,_({getContentAnchorEl:U,classes:E,onClose:l,TransitionProps:_({onEntering:P},w),anchorOrigin:D.direction==="rtl"?Wx:zx,transformOrigin:D.direction==="rtl"?Wx:zx,PaperProps:_({},u,{classes:_({},u.classes,{root:o.paper})}),open:C,ref:t,transitionDuration:f},x),p.exports.createElement(vm,_({onKeyDown:W,actions:N,autoFocus:n&&(J===-1||a),autoFocusItem:F,variant:v},I,{className:yA(o.list,I.className)}),Z))}),cCA=ee(ICA,{name:"MuiMenu"})(lCA);function jx(e){return e!=null&&!(Array.isArray(e)&&e.length===0)}function Sm(e){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return e&&(jx(e.value)&&e.value!==""||A&&jx(e.defaultValue)&&e.defaultValue!=="")}function CCA(e){return e.startAdornment}function Xx(e,A){return HI(A)==="object"&&A!==null?e===A:String(e)===String(A)}function BCA(e){return e==null||typeof e=="string"&&!e.trim()}var ECA=p.exports.forwardRef(function(A,t){var i=A["aria-label"],n=A.autoFocus,r=A.autoWidth,o=A.children,s=A.classes,a=A.className,g=A.defaultValue,I=A.disabled,l=A.displayEmpty,c=A.IconComponent,C=A.inputRef,B=A.labelId,u=A.MenuProps,E=u===void 0?{}:u,h=A.multiple,f=A.name,Q=A.onBlur,d=A.onChange,w=A.onClose,m=A.onFocus,v=A.onOpen,x=A.open,D=A.readOnly,F=A.renderValue,N=A.SelectDisplayProps,M=N===void 0?{}:N,U=A.tabIndex;A.type;var P=A.value,W=A.variant,J=W===void 0?"standard":W,Z=SA(A,["aria-label","autoFocus","autoWidth","children","classes","className","defaultValue","disabled","displayEmpty","IconComponent","inputRef","labelId","MenuProps","multiple","name","onBlur","onChange","onClose","onFocus","onOpen","open","readOnly","renderValue","SelectDisplayProps","tabIndex","type","value","variant"]),z=Su({controlled:P,default:g,name:"Select"}),O=Fl(z,2),Y=O[0],k=O[1],q=p.exports.useRef(null),j=p.exports.useState(null),AA=j[0],iA=j[1],gA=p.exports.useRef(x!=null),sA=gA.current,BA=p.exports.useState(),IA=BA[0],bA=BA[1],EA=p.exports.useState(!1),QA=EA[0],TA=EA[1],RA=ze(t,C);p.exports.useImperativeHandle(RA,function(){return{focus:function(){AA.focus()},node:q.current,value:Y}},[AA,Y]),p.exports.useEffect(function(){n&&AA&&AA.focus()},[n,AA]),p.exports.useEffect(function(){if(AA){var JA=pt(AA).getElementById(B);if(JA){var xA=function(){getSelection().isCollapsed&&AA.focus()};return JA.addEventListener("click",xA),function(){JA.removeEventListener("click",xA)}}}},[B,AA]);var UA=function(xA,Be){xA?v&&v(Be):w&&w(Be),sA||(bA(r?null:AA.clientWidth),TA(xA))},fA=function(xA){xA.button===0&&(xA.preventDefault(),AA.focus(),UA(!0,xA))},NA=function(xA){UA(!1,xA)},ZA=p.exports.Children.toArray(o),ne=function(xA){var Be=ZA.map(function(PA){return PA.props.value}).indexOf(xA.target.value);if(Be!==-1){var ue=ZA[Be];k(ue.props.value),d&&d(xA,ue)}},Ie=function(xA){return function(Be){h||UA(!1,Be);var ue;if(h){ue=Array.isArray(Y)?Y.slice():[];var PA=Y.indexOf(xA.props.value);PA===-1?ue.push(xA.props.value):ue.splice(PA,1)}else ue=xA.props.value;xA.props.onClick&&xA.props.onClick(Be),Y!==ue&&(k(ue),d&&(Be.persist(),Object.defineProperty(Be,"target",{writable:!0,value:{value:ue,name:f}}),d(Be,xA)))}},KA=function(xA){if(!D){var Be=[" ","ArrowUp","ArrowDown","Enter"];Be.indexOf(xA.key)!==-1&&(xA.preventDefault(),UA(!0,xA))}},eA=AA!==null&&(sA?x:QA),aA=function(xA){!eA&&Q&&(xA.persist(),Object.defineProperty(xA,"target",{writable:!0,value:{value:Y,name:f}}),Q(xA))};delete Z["aria-invalid"];var FA,re,VA=[],_e=!1;(Sm({value:Y})||l)&&(F?FA=F(Y):_e=!0);var WA=ZA.map(function(JA){if(!p.exports.isValidElement(JA))return null;var xA;if(h){if(!Array.isArray(Y))throw new Error(Ea(2));xA=Y.some(function(Be){return Xx(Be,JA.props.value)}),xA&&_e&&VA.push(JA.props.children)}else xA=Xx(Y,JA.props.value),xA&&_e&&(re=JA.props.children);return p.exports.cloneElement(JA,{"aria-selected":xA?"true":void 0,onClick:Ie(JA),onKeyUp:function(ue){ue.key===" "&&ue.preventDefault(),JA.props.onKeyUp&&JA.props.onKeyUp(ue)},role:"option",selected:xA,value:void 0,"data-value":JA.props.value})});_e&&(FA=h?VA.join(", "):re);var qA=IA;!r&&sA&&AA&&(qA=AA.clientWidth);var xe;typeof U!="undefined"?xe=U:xe=I?null:0;var se=M.id||(f?"mui-component-select-".concat(f):void 0);return p.exports.createElement(p.exports.Fragment,null,p.exports.createElement("div",_({className:yA(s.root,s.select,s.selectMenu,s[J],a,I&&s.disabled),ref:iA,tabIndex:xe,role:"button","aria-disabled":I?"true":void 0,"aria-expanded":eA?"true":void 0,"aria-haspopup":"listbox","aria-label":i,"aria-labelledby":[B,se].filter(Boolean).join(" ")||void 0,onKeyDown:KA,onMouseDown:I||D?null:fA,onBlur:aA,onFocus:m},M,{id:se}),BCA(FA)?p.exports.createElement("span",{dangerouslySetInnerHTML:{__html:"​"}}):FA),p.exports.createElement("input",_({value:Array.isArray(Y)?Y.join(","):Y,name:f,ref:q,"aria-hidden":!0,onChange:ne,tabIndex:-1,className:s.nativeInput,autoFocus:n},Z)),p.exports.createElement(c,{className:yA(s.icon,s["icon".concat(Qe(J))],eA&&s.iconOpen,I&&s.disabled)}),p.exports.createElement(cCA,_({id:"menu-".concat(f||""),anchorEl:AA,open:eA,onClose:NA},E,{MenuListProps:_({"aria-labelledby":B,role:"listbox",disableListWrap:!0},E.MenuListProps),PaperProps:_({},E.PaperProps,{style:_({minWidth:qA},E.PaperProps!=null?E.PaperProps.style:null)})}),WA))}),uCA=ECA;function tg(e){var A=e.props,t=e.states,i=e.muiFormControl;return t.reduce(function(n,r){return n[r]=A[r],i&&typeof A[r]=="undefined"&&(n[r]=i[r]),n},{})}var OM=wi(p.exports.createElement("path",{d:"M7 10l5 5 5-5z"}));function fC(e,A){return parseInt(e[A],10)||0}var hCA=typeof window!="undefined"?p.exports.useLayoutEffect:p.exports.useEffect,fCA={shadow:{visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"}},QCA=p.exports.forwardRef(function(A,t){var i=A.onChange,n=A.rows,r=A.rowsMax,o=A.rowsMin,s=A.maxRows,a=A.minRows,g=a===void 0?1:a,I=A.style,l=A.value,c=SA(A,["onChange","rows","rowsMax","rowsMin","maxRows","minRows","style","value"]),C=s||r,B=n||o||g,u=p.exports.useRef(l!=null),E=u.current,h=p.exports.useRef(null),f=ze(t,h),Q=p.exports.useRef(null),d=p.exports.useRef(0),w=p.exports.useState({}),m=w[0],v=w[1],x=p.exports.useCallback(function(){var F=h.current,N=window.getComputedStyle(F),M=Q.current;M.style.width=N.width,M.value=F.value||A.placeholder||"x",M.value.slice(-1)===` -`&&(M.value+=" ");var U=N["box-sizing"],P=fC(N,"padding-bottom")+fC(N,"padding-top"),W=fC(N,"border-bottom-width")+fC(N,"border-top-width"),J=M.scrollHeight-P;M.value="x";var Z=M.scrollHeight-P,z=J;B&&(z=Math.max(Number(B)*Z,z)),C&&(z=Math.min(Number(C)*Z,z)),z=Math.max(z,Z);var O=z+(U==="border-box"?P+W:0),Y=Math.abs(z-J)<=1;v(function(k){return d.current<20&&(O>0&&Math.abs((k.outerHeightStyle||0)-O)>1||k.overflow!==Y)?(d.current+=1,{overflow:Y,outerHeightStyle:O}):k})},[C,B,A.placeholder]);p.exports.useEffect(function(){var F=ya(function(){d.current=0,x()});return window.addEventListener("resize",F),function(){F.clear(),window.removeEventListener("resize",F)}},[x]),hCA(function(){x()}),p.exports.useEffect(function(){d.current=0},[l]);var D=function(N){d.current=0,E||x(),i&&i(N)};return p.exports.createElement(p.exports.Fragment,null,p.exports.createElement("textarea",_({value:l,onChange:D,ref:f,rows:B,style:_({height:m.outerHeightStyle,overflow:m.overflow?"hidden":null},I)},c)),p.exports.createElement("textarea",{"aria-hidden":!0,className:A.className,readOnly:!0,ref:Q,tabIndex:-1,style:_({},fCA.shadow,I)}))}),dCA=QCA,pCA=function(A){var t=A.palette.type==="light",i={color:"currentColor",opacity:t?.42:.5,transition:A.transitions.create("opacity",{duration:A.transitions.duration.shorter})},n={opacity:"0 !important"},r={opacity:t?.42:.5};return{"@global":{"@keyframes mui-auto-fill":{},"@keyframes mui-auto-fill-cancel":{}},root:_({},A.typography.body1,{color:A.palette.text.primary,lineHeight:"1.1876em",boxSizing:"border-box",position:"relative",cursor:"text",display:"inline-flex",alignItems:"center","&$disabled":{color:A.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":i,"&::-moz-placeholder":i,"&:-ms-input-placeholder":i,"&::-ms-input-placeholder":i,"&:focus":{outline:0},"&:invalid":{boxShadow:"none"},"&::-webkit-search-decoration":{"-webkit-appearance":"none"},"label[data-shrink=false] + $formControl &":{"&::-webkit-input-placeholder":n,"&::-moz-placeholder":n,"&:-ms-input-placeholder":n,"&::-ms-input-placeholder":n,"&:focus::-webkit-input-placeholder":r,"&:focus::-moz-placeholder":r,"&:focus:-ms-input-placeholder":r,"&:focus::-ms-input-placeholder":r},"&$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:{}}},yCA=typeof window=="undefined"?p.exports.useEffect:p.exports.useLayoutEffect,mCA=p.exports.forwardRef(function(A,t){var i=A["aria-describedby"],n=A.autoComplete,r=A.autoFocus,o=A.classes,s=A.className;A.color;var a=A.defaultValue,g=A.disabled,I=A.endAdornment;A.error;var l=A.fullWidth,c=l===void 0?!1:l,C=A.id,B=A.inputComponent,u=B===void 0?"input":B,E=A.inputProps,h=E===void 0?{}:E,f=A.inputRef;A.margin;var Q=A.multiline,d=Q===void 0?!1:Q,w=A.name,m=A.onBlur,v=A.onChange,x=A.onClick,D=A.onFocus,F=A.onKeyDown,N=A.onKeyUp,M=A.placeholder,U=A.readOnly,P=A.renderSuffix,W=A.rows,J=A.rowsMax,Z=A.rowsMin,z=A.maxRows,O=A.minRows,Y=A.startAdornment,k=A.type,q=k===void 0?"text":k,j=A.value,AA=SA(A,["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"]),iA=h.value!=null?h.value:j,gA=p.exports.useRef(iA!=null),sA=gA.current,BA=p.exports.useRef(),IA=p.exports.useCallback(function(WA){},[]),bA=ze(h.ref,IA),EA=ze(f,bA),QA=ze(BA,EA),TA=p.exports.useState(!1),RA=TA[0],UA=TA[1],fA=dcA(),NA=tg({props:A,muiFormControl:fA,states:["color","disabled","error","hiddenLabel","margin","required","filled"]});NA.focused=fA?fA.focused:RA,p.exports.useEffect(function(){!fA&&g&&RA&&(UA(!1),m&&m())},[fA,g,RA,m]);var ZA=fA&&fA.onFilled,ne=fA&&fA.onEmpty,Ie=p.exports.useCallback(function(WA){Sm(WA)?ZA&&ZA():ne&&ne()},[ZA,ne]);yCA(function(){sA&&Ie({value:iA})},[iA,Ie,sA]);var KA=function(qA){if(NA.disabled){qA.stopPropagation();return}D&&D(qA),h.onFocus&&h.onFocus(qA),fA&&fA.onFocus?fA.onFocus(qA):UA(!0)},eA=function(qA){m&&m(qA),h.onBlur&&h.onBlur(qA),fA&&fA.onBlur?fA.onBlur(qA):UA(!1)},aA=function(qA){if(!sA){var xe=qA.target||BA.current;if(xe==null)throw new Error(Ea(1));Ie({value:xe.value})}for(var se=arguments.length,JA=new Array(se>1?se-1:0),xA=1;xA span":{paddingLeft:5,paddingRight:5,display:"inline-block"}},legendNotched:{maxWidth:1e3,transition:A.transitions.create("max-width",{duration:100,easing:A.transitions.easing.easeOut,delay:50})}}},xCA=p.exports.forwardRef(function(A,t){A.children;var i=A.classes,n=A.className,r=A.label,o=A.labelWidth,s=A.notched,a=A.style,g=SA(A,["children","classes","className","label","labelWidth","notched","style"]),I=Ll(),l=I.direction==="rtl"?"right":"left";if(r!==void 0)return p.exports.createElement("fieldset",_({"aria-hidden":!0,className:yA(i.root,n),ref:t,style:a},g),p.exports.createElement("legend",{className:yA(i.legendLabelled,s&&i.legendNotched)},r?p.exports.createElement("span",null,r):p.exports.createElement("span",{dangerouslySetInnerHTML:{__html:"​"}})));var c=o>0?o*.75+8:.01;return p.exports.createElement("fieldset",_({"aria-hidden":!0,style:_(y({},"padding".concat(Qe(l)),8),a),className:yA(i.root,n),ref:t},g),p.exports.createElement("legend",{className:i.legend,style:{width:s?c:.01}},p.exports.createElement("span",{dangerouslySetInnerHTML:{__html:"​"}})))}),FCA=ee(RCA,{name:"PrivateNotchedOutline"})(xCA),NCA=function(A){var t=A.palette.type==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{root:{position:"relative",borderRadius:A.shape.borderRadius,"&:hover $notchedOutline":{borderColor:A.palette.text.primary},"@media (hover: none)":{"&:hover $notchedOutline":{borderColor:t}},"&$focused $notchedOutline":{borderColor:A.palette.primary.main,borderWidth:2},"&$error $notchedOutline":{borderColor:A.palette.error.main},"&$disabled $notchedOutline":{borderColor:A.palette.action.disabled}},colorSecondary:{"&$focused $notchedOutline":{borderColor:A.palette.secondary.main}},focused:{},disabled:{},adornedStart:{paddingLeft:14},adornedEnd:{paddingRight:14},error:{},marginDense:{},multiline:{padding:"18.5px 14px","&$marginDense":{paddingTop:10.5,paddingBottom:10.5}},notchedOutline:{borderColor:t},input:{padding:"18.5px 14px","&:-webkit-autofill":{WebkitBoxShadow:A.palette.type==="light"?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:A.palette.type==="light"?null:"#fff",caretColor:A.palette.type==="light"?null:"#fff",borderRadius:"inherit"}},inputMarginDense:{paddingTop:10.5,paddingBottom:10.5},inputMultiline:{padding:0},inputAdornedStart:{paddingLeft:0},inputAdornedEnd:{paddingRight:0}}},XM=p.exports.forwardRef(function(A,t){var i=A.classes,n=A.fullWidth,r=n===void 0?!1:n,o=A.inputComponent,s=o===void 0?"input":o,a=A.label,g=A.labelWidth,I=g===void 0?0:g,l=A.multiline,c=l===void 0?!1:l,C=A.notched,B=A.type,u=B===void 0?"text":B,E=SA(A,["classes","fullWidth","inputComponent","label","labelWidth","multiline","notched","type"]);return p.exports.createElement(Dm,_({renderSuffix:function(f){return p.exports.createElement(FCA,{className:i.notchedOutline,label:a,labelWidth:I,notched:typeof C!="undefined"?C:Boolean(f.startAdornment||f.filled||f.focused)})},classes:_({},i,{root:yA(i.root,i.underline),notchedOutline:null}),fullWidth:r,inputComponent:s,multiline:c,ref:t,type:u},E))});XM.muiName="Input";var ZM=ee(NCA,{name:"MuiOutlinedInput"})(XM),LCA=VM,bCA=p.exports.createElement(Rm,null),GCA=p.exports.createElement(jM,null),$M=p.exports.forwardRef(function e(A,t){var i=A.autoWidth,n=i===void 0?!1:i,r=A.children,o=A.classes,s=A.displayEmpty,a=s===void 0?!1:s,g=A.IconComponent,I=g===void 0?OM:g,l=A.id,c=A.input,C=A.inputProps,B=A.label,u=A.labelId,E=A.labelWidth,h=E===void 0?0:E,f=A.MenuProps,Q=A.multiple,d=Q===void 0?!1:Q,w=A.native,m=w===void 0?!1:w,v=A.onClose,x=A.onOpen,D=A.open,F=A.renderValue,N=A.SelectDisplayProps,M=A.variant,U=M===void 0?"standard":M,P=SA(A,["autoWidth","children","classes","displayEmpty","IconComponent","id","input","inputProps","label","labelId","labelWidth","MenuProps","multiple","native","onClose","onOpen","open","renderValue","SelectDisplayProps","variant"]),W=m?KM:uCA,J=eg(),Z=tg({props:A,muiFormControl:J,states:["variant"]}),z=Z.variant||U,O=c||{standard:bCA,outlined:p.exports.createElement(ZM,{label:B,labelWidth:h}),filled:GCA}[z];return p.exports.cloneElement(O,_({inputComponent:W,inputProps:_({children:r,IconComponent:I,variant:z,type:void 0,multiple:d},m?{id:l}:{autoWidth:n,displayEmpty:a,labelId:u,MenuProps:f,onClose:v,onOpen:x,open:D,renderValue:F,SelectDisplayProps:_({id:l},N)},C,{classes:C?Rp({baseClasses:o,newClasses:C.classes,Component:e}):o},c?c.props.inputProps:{}),ref:t},P))});$M.muiName="Select";var ig=ee(LCA,{name:"MuiSelect"})($M),xm={},jn={exports:{}};(function(e){function A(t){return t&&t.__esModule?t:{default:t}}e.exports=A,e.exports.__esModule=!0,e.exports.default=e.exports})(jn);var Xn={exports:{}},Ak={exports:{}};(function(e){function A(t){return e.exports=A=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(i){return typeof i}:function(i){return i&&typeof Symbol=="function"&&i.constructor===Symbol&&i!==Symbol.prototype?"symbol":typeof i},e.exports.__esModule=!0,e.exports.default=e.exports,A(t)}e.exports=A,e.exports.__esModule=!0,e.exports.default=e.exports})(Ak);(function(e){var A=Ak.exports.default;function t(n){if(typeof WeakMap!="function")return null;var r=new WeakMap,o=new WeakMap;return(t=function(a){return a?o:r})(n)}function i(n,r){if(!r&&n&&n.__esModule)return n;if(n===null||A(n)!=="object"&&typeof n!="function")return{default:n};var o=t(r);if(o&&o.has(n))return o.get(n);var s={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in n)if(g!=="default"&&Object.prototype.hasOwnProperty.call(n,g)){var I=a?Object.getOwnPropertyDescriptor(n,g):null;I&&(I.get||I.set)?Object.defineProperty(s,g,I):s[g]=n[g]}return s.default=n,o&&o.set(n,s),s}e.exports=i,e.exports.__esModule=!0,e.exports.default=e.exports})(Xn);var Zn={},_CA=Nk(hIA);(function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return A.createSvgIcon}});var A=_CA})(Zn);var MCA=jn.exports,kCA=Xn.exports;Object.defineProperty(xm,"__esModule",{value:!0});var ek=xm.default=void 0,TCA=kCA(p.exports),UCA=MCA(Zn),PCA=(0,UCA.default)(TCA.createElement("path",{d:"M14.59 8L12 10.59 9.41 8 8 9.41 10.59 12 8 14.59 9.41 16 12 13.41 14.59 16 16 14.59 13.41 12 16 9.41 14.59 8zM12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"}),"HighlightOff");ek=xm.default=PCA;var Fm={},HCA=jn.exports,qCA=Xn.exports;Object.defineProperty(Fm,"__esModule",{value:!0});var tk=Fm.default=void 0,JCA=qCA(p.exports),OCA=HCA(Zn),YCA=(0,OCA.default)(JCA.createElement("path",{d:"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"}),"MoreVert");tk=Fm.default=YCA;/**! - * @fileOverview Kickass library to create and place poppers near their reference elements. - * @version 1.16.1-lts - * @license - * Copyright (c) 2016 Federico Zivolo and contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */var ic=typeof window!="undefined"&&typeof document!="undefined"&&typeof navigator!="undefined",KCA=function(){for(var e=["Edge","Trident","Firefox"],A=0;A=0)return 1;return 0}();function VCA(e){var A=!1;return function(){A||(A=!0,window.Promise.resolve().then(function(){A=!1,e()}))}}function WCA(e){var A=!1;return function(){A||(A=!0,setTimeout(function(){A=!1,e()},KCA))}}var zCA=ic&&window.Promise,jCA=zCA?VCA:WCA;function ik(e){var A={};return e&&A.toString.call(e)==="[object Function]"}function Is(e,A){if(e.nodeType!==1)return[];var t=e.ownerDocument.defaultView,i=t.getComputedStyle(e,null);return A?i[A]:i}function Nm(e){return e.nodeName==="HTML"?e:e.parentNode||e.host}function nc(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var A=Is(e),t=A.overflow,i=A.overflowX,n=A.overflowY;return/(auto|scroll|overlay)/.test(t+n+i)?e:nc(Nm(e))}function nk(e){return e&&e.referenceNode?e.referenceNode:e}var Zx=ic&&!!(window.MSInputMethodContext&&document.documentMode),$x=ic&&/MSIE 10/.test(navigator.userAgent);function ng(e){return e===11?Zx:e===10?$x:Zx||$x}function ma(e){if(!e)return document.documentElement;for(var A=ng(10)?document.body:null,t=e.offsetParent||null;t===A&&e.nextElementSibling;)t=(e=e.nextElementSibling).offsetParent;var i=t&&t.nodeName;return!i||i==="BODY"||i==="HTML"?e?e.ownerDocument.documentElement:document.documentElement:["TH","TD","TABLE"].indexOf(t.nodeName)!==-1&&Is(t,"position")==="static"?ma(t):t}function XCA(e){var A=e.nodeName;return A==="BODY"?!1:A==="HTML"||ma(e.firstElementChild)===e}function a0(e){return e.parentNode!==null?a0(e.parentNode):e}function lE(e,A){if(!e||!e.nodeType||!A||!A.nodeType)return document.documentElement;var t=e.compareDocumentPosition(A)&Node.DOCUMENT_POSITION_FOLLOWING,i=t?e:A,n=t?A:e,r=document.createRange();r.setStart(i,0),r.setEnd(n,0);var o=r.commonAncestorContainer;if(e!==o&&A!==o||i.contains(n))return XCA(o)?o:ma(o);var s=a0(e);return s.host?lE(s.host,A):lE(e,a0(A).host)}function wa(e){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"top",t=A==="top"?"scrollTop":"scrollLeft",i=e.nodeName;if(i==="BODY"||i==="HTML"){var n=e.ownerDocument.documentElement,r=e.ownerDocument.scrollingElement||n;return r[t]}return e[t]}function ZCA(e,A){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=wa(A,"top"),n=wa(A,"left"),r=t?-1:1;return e.top+=i*r,e.bottom+=i*r,e.left+=n*r,e.right+=n*r,e}function AF(e,A){var t=A==="x"?"Left":"Top",i=t==="Left"?"Right":"Bottom";return parseFloat(e["border"+t+"Width"])+parseFloat(e["border"+i+"Width"])}function eF(e,A,t,i){return Math.max(A["offset"+e],A["scroll"+e],t["client"+e],t["offset"+e],t["scroll"+e],ng(10)?parseInt(t["offset"+e])+parseInt(i["margin"+(e==="Height"?"Top":"Left")])+parseInt(i["margin"+(e==="Height"?"Bottom":"Right")]):0)}function rk(e){var A=e.body,t=e.documentElement,i=ng(10)&&getComputedStyle(t);return{height:eF("Height",A,t,i),width:eF("Width",A,t,i)}}var $CA=function(e,A){if(!(e instanceof A))throw new TypeError("Cannot call a class as a function")},ABA=function(){function e(A,t){for(var i=0;i2&&arguments[2]!==void 0?arguments[2]:!1,i=ng(10),n=A.nodeName==="HTML",r=g0(e),o=g0(A),s=nc(e),a=Is(A),g=parseFloat(a.borderTopWidth),I=parseFloat(a.borderLeftWidth);t&&n&&(o.top=Math.max(o.top,0),o.left=Math.max(o.left,0));var l=jr({top:r.top-o.top-g,left:r.left-o.left-I,width:r.width,height:r.height});if(l.marginTop=0,l.marginLeft=0,!i&&n){var c=parseFloat(a.marginTop),C=parseFloat(a.marginLeft);l.top-=g-c,l.bottom-=g-c,l.left-=I-C,l.right-=I-C,l.marginTop=c,l.marginLeft=C}return(i&&!t?A.contains(s):A===s&&s.nodeName!=="BODY")&&(l=ZCA(l,A)),l}function eBA(e){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=e.ownerDocument.documentElement,i=Lm(e,t),n=Math.max(t.clientWidth,window.innerWidth||0),r=Math.max(t.clientHeight,window.innerHeight||0),o=A?0:wa(t),s=A?0:wa(t,"left"),a={top:o-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:n,height:r};return jr(a)}function ok(e){var A=e.nodeName;if(A==="BODY"||A==="HTML")return!1;if(Is(e,"position")==="fixed")return!0;var t=Nm(e);return t?ok(t):!1}function sk(e){if(!e||!e.parentElement||ng())return document.documentElement;for(var A=e.parentElement;A&&Is(A,"transform")==="none";)A=A.parentElement;return A||document.documentElement}function bm(e,A,t,i){var n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,r={top:0,left:0},o=n?sk(e):lE(e,nk(A));if(i==="viewport")r=eBA(o,n);else{var s=void 0;i==="scrollParent"?(s=nc(Nm(A)),s.nodeName==="BODY"&&(s=e.ownerDocument.documentElement)):i==="window"?s=e.ownerDocument.documentElement:s=i;var a=Lm(s,o,n);if(s.nodeName==="HTML"&&!ok(o)){var g=rk(e.ownerDocument),I=g.height,l=g.width;r.top+=a.top-a.marginTop,r.bottom=I+a.top,r.left+=a.left-a.marginLeft,r.right=l+a.left}else r=a}t=t||0;var c=typeof t=="number";return r.left+=c?t:t.left||0,r.top+=c?t:t.top||0,r.right-=c?t:t.right||0,r.bottom-=c?t:t.bottom||0,r}function tBA(e){var A=e.width,t=e.height;return A*t}function ak(e,A,t,i,n){var r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(e.indexOf("auto")===-1)return e;var o=bm(t,i,r,n),s={top:{width:o.width,height:A.top-o.top},right:{width:o.right-A.right,height:o.height},bottom:{width:o.width,height:o.bottom-A.bottom},left:{width:A.left-o.left,height:o.height}},a=Object.keys(s).map(function(c){return Bi({key:c},s[c],{area:tBA(s[c])})}).sort(function(c,C){return C.area-c.area}),g=a.filter(function(c){var C=c.width,B=c.height;return C>=t.clientWidth&&B>=t.clientHeight}),I=g.length>0?g[0].key:a[0].key,l=e.split("-")[1];return I+(l?"-"+l:"")}function gk(e,A,t){var i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,n=i?sk(A):lE(A,nk(t));return Lm(t,n,i)}function Ik(e){var A=e.ownerDocument.defaultView,t=A.getComputedStyle(e),i=parseFloat(t.marginTop||0)+parseFloat(t.marginBottom||0),n=parseFloat(t.marginLeft||0)+parseFloat(t.marginRight||0),r={width:e.offsetWidth+n,height:e.offsetHeight+i};return r}function cE(e){var A={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(t){return A[t]})}function lk(e,A,t){t=t.split("-")[0];var i=Ik(e),n={width:i.width,height:i.height},r=["right","left"].indexOf(t)!==-1,o=r?"top":"left",s=r?"left":"top",a=r?"height":"width",g=r?"width":"height";return n[o]=A[o]+A[a]/2-i[a]/2,t===s?n[s]=A[s]-i[g]:n[s]=A[cE(s)],n}function rc(e,A){return Array.prototype.find?e.find(A):e.filter(A)[0]}function iBA(e,A,t){if(Array.prototype.findIndex)return e.findIndex(function(n){return n[A]===t});var i=rc(e,function(n){return n[A]===t});return e.indexOf(i)}function ck(e,A,t){var i=t===void 0?e:e.slice(0,iBA(e,"name",t));return i.forEach(function(n){n.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var r=n.function||n.fn;n.enabled&&ik(r)&&(A.offsets.popper=jr(A.offsets.popper),A.offsets.reference=jr(A.offsets.reference),A=r(A,n))}),A}function nBA(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=gk(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=ak(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=lk(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=ck(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function Ck(e,A){return e.some(function(t){var i=t.name,n=t.enabled;return n&&i===A})}function Gm(e){for(var A=[!1,"ms","Webkit","Moz","O"],t=e.charAt(0).toUpperCase()+e.slice(1),i=0;io[C]&&(e.offsets.popper[l]+=s[l]+B-o[C]),e.offsets.popper=jr(e.offsets.popper);var u=s[l]+s[g]/2-B/2,E=Is(e.instance.popper),h=parseFloat(E["margin"+I]),f=parseFloat(E["border"+I+"Width"]),Q=u-e.offsets.popper[l]-h-f;return Q=Math.max(Math.min(o[g]-B,Q),0),e.arrowElement=i,e.offsets.arrow=(t={},va(t,l,Math.round(Q)),va(t,c,""),t),e}function hBA(e){return e==="end"?"start":e==="start"?"end":e}var hk=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],Kf=hk.slice(3);function tF(e){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=Kf.indexOf(e),i=Kf.slice(t+1).concat(Kf.slice(0,t));return A?i.reverse():i}var Vf={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function fBA(e,A){if(Ck(e.instance.modifiers,"inner")||e.flipped&&e.placement===e.originalPlacement)return e;var t=bm(e.instance.popper,e.instance.reference,A.padding,A.boundariesElement,e.positionFixed),i=e.placement.split("-")[0],n=cE(i),r=e.placement.split("-")[1]||"",o=[];switch(A.behavior){case Vf.FLIP:o=[i,n];break;case Vf.CLOCKWISE:o=tF(i);break;case Vf.COUNTERCLOCKWISE:o=tF(i,!0);break;default:o=A.behavior}return o.forEach(function(s,a){if(i!==s||o.length===a+1)return e;i=e.placement.split("-")[0],n=cE(i);var g=e.offsets.popper,I=e.offsets.reference,l=Math.floor,c=i==="left"&&l(g.right)>l(I.left)||i==="right"&&l(g.left)l(I.top)||i==="bottom"&&l(g.top)l(t.right),u=l(g.top)l(t.bottom),h=i==="left"&&C||i==="right"&&B||i==="top"&&u||i==="bottom"&&E,f=["top","bottom"].indexOf(i)!==-1,Q=!!A.flipVariations&&(f&&r==="start"&&C||f&&r==="end"&&B||!f&&r==="start"&&u||!f&&r==="end"&&E),d=!!A.flipVariationsByContent&&(f&&r==="start"&&B||f&&r==="end"&&C||!f&&r==="start"&&E||!f&&r==="end"&&u),w=Q||d;(c||h||w)&&(e.flipped=!0,(c||h)&&(i=o[a+1]),w&&(r=hBA(r)),e.placement=i+(r?"-"+r:""),e.offsets.popper=Bi({},e.offsets.popper,lk(e.instance.popper,e.offsets.reference,e.placement)),e=ck(e.instance.modifiers,e,"flip"))}),e}function QBA(e){var A=e.offsets,t=A.popper,i=A.reference,n=e.placement.split("-")[0],r=Math.floor,o=["top","bottom"].indexOf(n)!==-1,s=o?"right":"bottom",a=o?"left":"top",g=o?"width":"height";return t[s]r(i[s])&&(e.offsets.popper[a]=r(i[s])),e}function dBA(e,A,t,i){var n=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+n[1],o=n[2];if(!r)return e;if(o.indexOf("%")===0){var s=void 0;switch(o){case"%p":s=t;break;case"%":case"%r":default:s=i}var a=jr(s);return a[A]/100*r}else if(o==="vh"||o==="vw"){var g=void 0;return o==="vh"?g=Math.max(document.documentElement.clientHeight,window.innerHeight||0):g=Math.max(document.documentElement.clientWidth,window.innerWidth||0),g/100*r}else return r}function pBA(e,A,t,i){var n=[0,0],r=["right","left"].indexOf(i)!==-1,o=e.split(/(\+|\-)/).map(function(I){return I.trim()}),s=o.indexOf(rc(o,function(I){return I.search(/,|\s/)!==-1}));o[s]&&o[s].indexOf(",")===-1&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var a=/\s*,\s*|\s+/,g=s!==-1?[o.slice(0,s).concat([o[s].split(a)[0]]),[o[s].split(a)[1]].concat(o.slice(s+1))]:[o];return g=g.map(function(I,l){var c=(l===1?!r:r)?"height":"width",C=!1;return I.reduce(function(B,u){return B[B.length-1]===""&&["+","-"].indexOf(u)!==-1?(B[B.length-1]=u,C=!0,B):C?(B[B.length-1]+=u,C=!1,B):B.concat(u)},[]).map(function(B){return dBA(B,c,A,t)})}),g.forEach(function(I,l){I.forEach(function(c,C){_m(c)&&(n[l]+=c*(I[C-1]==="-"?-1:1))})}),n}function yBA(e,A){var t=A.offset,i=e.placement,n=e.offsets,r=n.popper,o=n.reference,s=i.split("-")[0],a=void 0;return _m(+t)?a=[+t,0]:a=pBA(t,r,o,s),s==="left"?(r.top+=a[0],r.left-=a[1]):s==="right"?(r.top+=a[0],r.left+=a[1]):s==="top"?(r.left+=a[0],r.top-=a[1]):s==="bottom"&&(r.left+=a[0],r.top+=a[1]),e.popper=r,e}function mBA(e,A){var t=A.boundariesElement||ma(e.instance.popper);e.instance.reference===t&&(t=ma(t));var i=Gm("transform"),n=e.instance.popper.style,r=n.top,o=n.left,s=n[i];n.top="",n.left="",n[i]="";var a=bm(e.instance.popper,e.instance.reference,A.padding,t,e.positionFixed);n.top=r,n.left=o,n[i]=s,A.boundaries=a;var g=A.priority,I=e.offsets.popper,l={primary:function(C){var B=I[C];return I[C]a[C]&&!A.escapeWithReference&&(u=Math.min(I[B],a[C]-(C==="right"?I.width:I.height))),va({},B,u)}};return g.forEach(function(c){var C=["left","top"].indexOf(c)!==-1?"primary":"secondary";I=Bi({},I,l[C](c))}),e.offsets.popper=I,e}function wBA(e){var A=e.placement,t=A.split("-")[0],i=A.split("-")[1];if(i){var n=e.offsets,r=n.reference,o=n.popper,s=["bottom","top"].indexOf(t)!==-1,a=s?"left":"top",g=s?"width":"height",I={start:va({},a,r[a]),end:va({},a,r[a]+r[g]-o[g])};e.offsets.popper=Bi({},o,I[i])}return e}function vBA(e){if(!uk(e.instance.modifiers,"hide","preventOverflow"))return e;var A=e.offsets.reference,t=rc(e.instance.modifiers,function(i){return i.name==="preventOverflow"}).boundaries;if(A.bottomt.right||A.top>t.bottom||A.right2&&arguments[2]!==void 0?arguments[2]:{};$CA(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=jCA(this.update.bind(this)),this.options=Bi({},e.Defaults,n),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=A&&A.jquery?A[0]:A,this.popper=t&&t.jquery?t[0]:t,this.options.modifiers={},Object.keys(Bi({},e.Defaults.modifiers,n.modifiers)).forEach(function(o){i.options.modifiers[o]=Bi({},e.Defaults.modifiers[o]||{},n.modifiers?n.modifiers[o]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(o){return Bi({name:o},i.options.modifiers[o])}).sort(function(o,s){return o.order-s.order}),this.modifiers.forEach(function(o){o.enabled&&ik(o.onLoad)&&o.onLoad(i.reference,i.popper,i.options,o,i.state)}),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return ABA(e,[{key:"update",value:function(){return nBA.call(this)}},{key:"destroy",value:function(){return rBA.call(this)}},{key:"enableEventListeners",value:function(){return sBA.call(this)}},{key:"disableEventListeners",value:function(){return gBA.call(this)}}]),e}();Fu.Utils=(typeof window!="undefined"?window:global).PopperUtils;Fu.placements=hk;Fu.Defaults=RBA;var xBA=Fu;function FBA(e,A){var t=A&&A.direction||"ltr";if(t==="ltr")return e;switch(e){case"bottom-end":return"bottom-start";case"bottom-start":return"bottom-end";case"top-end":return"top-start";case"top-start":return"top-end";default:return e}}function iF(e){return typeof e=="function"?e():e}var NBA=typeof window!="undefined"?p.exports.useLayoutEffect:p.exports.useEffect,LBA={},bBA=p.exports.forwardRef(function(A,t){var i=A.anchorEl,n=A.children,r=A.container,o=A.disablePortal,s=o===void 0?!1:o,a=A.keepMounted,g=a===void 0?!1:a,I=A.modifiers,l=A.open,c=A.placement,C=c===void 0?"bottom":c,B=A.popperOptions,u=B===void 0?LBA:B,E=A.popperRef,h=A.style,f=A.transition,Q=f===void 0?!1:f,d=SA(A,["anchorEl","children","container","disablePortal","keepMounted","modifiers","open","placement","popperOptions","popperRef","style","transition"]),w=p.exports.useRef(null),m=ze(w,t),v=p.exports.useRef(null),x=ze(v,E),D=p.exports.useRef(x);NBA(function(){D.current=x},[x]),p.exports.useImperativeHandle(E,function(){return v.current},[]);var F=p.exports.useState(!0),N=F[0],M=F[1],U=_a(),P=FBA(C,U),W=p.exports.useState(P),J=W[0],Z=W[1];p.exports.useEffect(function(){v.current&&v.current.update()});var z=p.exports.useCallback(function(){if(!(!w.current||!i||!l)){v.current&&(v.current.destroy(),D.current(null));var AA=function(sA){Z(sA.placement)};iF(i);var iA=new xBA(iF(i),w.current,_({placement:P},u,{modifiers:_({},s?{}:{preventOverflow:{boundariesElement:"window"}},I,u.modifiers),onCreate:zr(AA,u.onCreate),onUpdate:zr(AA,u.onUpdate)}));D.current(iA)}},[i,s,I,l,P,u]),O=p.exports.useCallback(function(AA){zo(m,AA),z()},[m,z]),Y=function(){M(!1)},k=function(){!v.current||(v.current.destroy(),D.current(null))},q=function(){M(!0),k()};if(p.exports.useEffect(function(){return function(){k()}},[]),p.exports.useEffect(function(){!l&&!Q&&k()},[l,Q]),!g&&!l&&(!Q||N))return null;var j={placement:J};return Q&&(j.TransitionProps={in:l,onEnter:Y,onExited:q}),p.exports.createElement(HM,{disablePortal:s,container:r},p.exports.createElement("div",_({ref:O,role:"tooltip"},d,{style:_({position:"fixed",top:0,left:0,display:!l&&g&&!Q?"none":null},h)}),typeof n=="function"?n(j):n))}),Mm=bBA,GBA=function(A){return{root:{display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left",paddingTop:8,paddingBottom:8,"&$focusVisible":{backgroundColor:A.palette.action.selected},"&$selected, &$selected:hover":{backgroundColor:A.palette.action.selected},"&$disabled":{opacity:.5}},container:{position:"relative"},focusVisible:{},dense:{paddingTop:4,paddingBottom:4},alignItemsFlexStart:{alignItems:"flex-start"},disabled:{},divider:{borderBottom:"1px solid ".concat(A.palette.divider),backgroundClip:"padding-box"},gutters:{paddingLeft:16,paddingRight:16},button:{transition:A.transitions.create("background-color",{duration:A.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:A.palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}},secondaryAction:{paddingRight:48},selected:{}}},_BA=typeof window=="undefined"?p.exports.useEffect:p.exports.useLayoutEffect,MBA=p.exports.forwardRef(function(A,t){var i=A.alignItems,n=i===void 0?"center":i,r=A.autoFocus,o=r===void 0?!1:r,s=A.button,a=s===void 0?!1:s,g=A.children,I=A.classes,l=A.className,c=A.component,C=A.ContainerComponent,B=C===void 0?"li":C,u=A.ContainerProps;u=u===void 0?{}:u;var E=u.className,h=SA(u,["className"]),f=A.dense,Q=f===void 0?!1:f,d=A.disabled,w=d===void 0?!1:d,m=A.disableGutters,v=m===void 0?!1:m,x=A.divider,D=x===void 0?!1:x,F=A.focusVisibleClassName,N=A.selected,M=N===void 0?!1:N,U=SA(A,["alignItems","autoFocus","button","children","classes","className","component","ContainerComponent","ContainerProps","dense","disabled","disableGutters","divider","focusVisibleClassName","selected"]),P=p.exports.useContext(ZC),W={dense:Q||P.dense||!1,alignItems:n},J=p.exports.useRef(null);_BA(function(){o&&J.current&&J.current.focus()},[o]);var Z=p.exports.Children.toArray(g),z=Z.length&&vI(Z[Z.length-1],["ListItemSecondaryAction"]),O=p.exports.useCallback(function(j){J.current=bt.exports.findDOMNode(j)},[]),Y=ze(O,t),k=_({className:yA(I.root,l,W.dense&&I.dense,!v&&I.gutters,D&&I.divider,w&&I.disabled,a&&I.button,n!=="center"&&I.alignItemsFlexStart,z&&I.secondaryAction,M&&I.selected),disabled:w},U),q=c||"li";return a&&(k.component=c||"div",k.focusVisibleClassName=yA(I.focusVisible,F),q=tc),z?(q=!k.component&&!c?"div":q,B==="li"&&(q==="li"?q="div":k.component==="li"&&(k.component="div")),p.exports.createElement(ZC.Provider,{value:W},p.exports.createElement(B,_({className:yA(I.container,E),ref:Y},h),p.exports.createElement(q,k,Z),Z.pop()))):p.exports.createElement(ZC.Provider,{value:W},p.exports.createElement(q,_({ref:Y},k),Z))}),kBA=ee(GBA,{name:"MuiListItem"})(MBA),TBA=function(A){return{root:_({},A.typography.body1,y({minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",width:"auto",overflow:"hidden",whiteSpace:"nowrap"},A.breakpoints.up("sm"),{minHeight:"auto"})),gutters:{},selected:{},dense:_({},A.typography.body2,{minHeight:"auto"})}},UBA=p.exports.forwardRef(function(A,t){var i=A.classes,n=A.className,r=A.component,o=r===void 0?"li":r,s=A.disableGutters,a=s===void 0?!1:s,g=A.ListItemClasses,I=A.role,l=I===void 0?"menuitem":I,c=A.selected,C=A.tabIndex,B=SA(A,["classes","className","component","disableGutters","ListItemClasses","role","selected","tabIndex"]),u;return A.disabled||(u=C!==void 0?C:-1),p.exports.createElement(kBA,_({button:!0,role:l,tabIndex:u,component:o,selected:c,disableGutters:a,classes:_({dense:i.dense},g),className:yA(i.root,n,c&&i.selected,!a&&i.gutters),ref:t},B))}),$C=ee(TBA,{name:"MuiMenuItem"})(UBA),km={},PBA=jn.exports,HBA=Xn.exports;Object.defineProperty(km,"__esModule",{value:!0});var fk=km.default=void 0,qBA=HBA(p.exports),JBA=PBA(Zn),OBA=(0,JBA.default)(qBA.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"}),"Lens");fk=km.default=OBA;const YBA=is(()=>({container:{width:"70px",height:"40px",display:"flex",justifyContent:"space-between",alignItems:"center",flexWrap:"wrap"},button:{padding:"3px",width:"16px",height:"16px"},icon:{width:"17px",height:"17px"}})),KBA=({handleColorSelect:e})=>{const A=YBA();return H("div",{className:A.container,"aria-label":"color-swatch",children:Bm.map(t=>H(jo,{className:A.button,onClick:()=>e(t),children:H(fk,{fontSize:"small",style:{color:`rgb(${t})`},className:A.icon})},t))})},VBA=is(()=>({paper:{backgroundColor:"rgba(0, 0, 0, 0.75)"},span:{width:"70px",textAlign:"center",paddingLeft:"2px",paddingRight:"2px"},colors:{"&:hover":{backgroundColor:"transparent"},paddingLeft:"2px",paddingRight:"2px"}}));function WBA({handleColorSelect:e,disabled:A,handleModeSelect:t}){const[i,n]=p.exports.useReducer(a=>!a,!1),r=p.exports.useRef(null),o=VBA();function s(a){const{mode:g}=a.currentTarget.dataset;t(g)}return XA(Pi,{children:[H(jo,{"aria-label":"Remove channel",size:"small",onClick:n,ref:r,disabled:A,children:H(tk,{fontSize:"small"})}),H(Mm,{open:i,anchorEl:r.current,placement:"bottom-end",children:H(no,{className:o.paper,children:H(wu,{onClickAway:n,children:XA(vm,{id:"channel-options",children:[H($C,{dense:!0,disableGutters:!0,className:o.colors,children:H(KBA,{handleColorSelect:e})}),H($C,{"data-mode":"full",dense:!0,disableGutters:!0,onClick:s,children:H("span",{className:o.span,children:"Full"})}),H($C,{"data-mode":"max/min",dense:!0,disableGutters:!0,onClick:s,children:H("span",{className:o.span,children:"Max/Min"})})]})})})})]})}const zBA=[220,220,220],jBA=(e,A)=>`rgb(${e?zBA:A})`,XBA=(e,A,t)=>A?H(TM,{size:"50%"}):t&&(e||typeof e=="number")?fm(e,7):t0;function ZBA({name:e,onSelectionChange:A,channelsVisible:t,pixelValue:i,toggleIsOn:n,handleSliderChange:r,domain:o,slider:s,color:a,handleRemoveChannel:g,handleColorSelect:I,isLoading:l}){const c=hn(),C=he(N=>N.colormap),[B,u,E]=_A(N=>[N.channelOptions,N.useLinkedView,N.use3d],Ue),h=jBA(C,a),f=({domain:N,mode:M,loader:U})=>{switch(M){case"max/min":return N;case"full":{const{dtype:P}=U[0],{max:W}=zd[P];return[P.startsWith("Int")?-W:0,W]}default:throw new Error}},[Q,d]=p.exports.useState("max/min"),[w,m]=f({domain:o,mode:Q,loader:c}),{dtype:v}=c[0],x=v==="Float32"||v==="Float64",D=m-w<500&&x?(m-w)/500:1,F=!u&&!E;return XA($A,{container:!0,direction:"column",m:2,justifyContent:"center",children:[XA($A,{container:!0,direction:"row",justifyContent:"space-between",children:[H($A,{item:!0,xs:10,children:H(ig,{native:!0,value:e,onChange:A,children:B.map(N=>H("option",{disabled:l,value:N,children:N},N))})}),H($A,{item:!0,xs:1,children:H(WBA,{handleColorSelect:I,disabled:l,handleModeSelect:d})}),H($A,{item:!0,xs:1,children:H(jo,{"aria-label":"remove-channel",component:"span",size:"small",onClick:g,children:H(ek,{fontSize:"small"})})})]}),XA($A,{container:!0,direction:"row",justifyContent:"flex-start",alignItems:"center",children:[H($A,{item:!0,xs:2,children:XBA(i,l,F)}),H($A,{item:!0,xs:2,children:H(mm,{onChange:n,disabled:l,checked:t,style:{color:h,"&$checked":{color:h}}})}),H($A,{item:!0,xs:7,children:H(wm,{disabled:l,value:s,onChange:r,valueLabelDisplay:"auto",getAriaLabel:()=>`${e}-${a}-${s}`,valueLabelFormat:N=>fm(N,5),min:w,max:m,step:D,orientation:"horizontal",style:{color:h,marginTop:"7px"}})})]})]})}var $BA=GP(On(bP,HP,t4,u4,D4,d4,x4,T4,yp,t8)),AEA=Cq("div")($BA,{name:"MuiBox"}),l0=AEA,eEA=function(A){return{root:_({color:A.palette.text.secondary},A.typography.body1,{lineHeight:1,padding:0,"&$focused":{color:A.palette.primary.main},"&$disabled":{color:A.palette.text.disabled},"&$error":{color:A.palette.error.main}}),colorSecondary:{"&$focused":{color:A.palette.secondary.main}},focused:{},disabled:{},error:{},filled:{},required:{},asterisk:{"&$error":{color:A.palette.error.main}}}},tEA=p.exports.forwardRef(function(A,t){var i=A.children,n=A.classes,r=A.className;A.color;var o=A.component,s=o===void 0?"label":o;A.disabled,A.error,A.filled,A.focused,A.required;var a=SA(A,["children","classes","className","color","component","disabled","error","filled","focused","required"]),g=eg(),I=tg({props:A,muiFormControl:g,states:["color","required","focused","disabled","error","filled"]});return p.exports.createElement(s,_({className:yA(n.root,n["color".concat(Qe(I.color||"primary"))],r,I.disabled&&n.disabled,I.error&&n.error,I.filled&&n.filled,I.focused&&n.focused,I.required&&n.required),ref:t},a),i,I.required&&p.exports.createElement("span",{"aria-hidden":!0,className:yA(n.asterisk,I.error&&n.error)},"\u2009","*"))}),iEA=ee(eEA,{name:"MuiFormLabel"})(tEA),nEA=function(A){return{root:{display:"block",transformOrigin:"top left"},focused:{},disabled:{},error:{},required:{},asterisk:{},formControl:{position:"absolute",left:0,top:0,transform:"translate(0, 24px) scale(1)"},marginDense:{transform:"translate(0, 21px) scale(1)"},shrink:{transform:"translate(0, 1.5px) scale(0.75)",transformOrigin:"top left"},animated:{transition:A.transitions.create(["color","transform"],{duration:A.transitions.duration.shorter,easing:A.transitions.easing.easeOut})},filled:{zIndex:1,pointerEvents:"none",transform:"translate(12px, 20px) scale(1)","&$marginDense":{transform:"translate(12px, 17px) scale(1)"},"&$shrink":{transform:"translate(12px, 10px) scale(0.75)","&$marginDense":{transform:"translate(12px, 7px) scale(0.75)"}}},outlined:{zIndex:1,pointerEvents:"none",transform:"translate(14px, 20px) scale(1)","&$marginDense":{transform:"translate(14px, 12px) scale(1)"},"&$shrink":{transform:"translate(14px, -6px) scale(0.75)"}}}},rEA=p.exports.forwardRef(function(A,t){var i=A.classes,n=A.className,r=A.disableAnimation,o=r===void 0?!1:r;A.margin;var s=A.shrink;A.variant;var a=SA(A,["classes","className","disableAnimation","margin","shrink","variant"]),g=eg(),I=s;typeof I=="undefined"&&g&&(I=g.filled||g.focused||g.adornedStart);var l=tg({props:A,muiFormControl:g,states:["margin","variant"]});return p.exports.createElement(iEA,_({"data-shrink":I,className:yA(i.root,n,g&&i.formControl,!o&&i.animated,I&&i.shrink,l.margin==="dense"&&i.marginDense,{filled:i.filled,outlined:i.outlined}[l.variant]),classes:{focused:i.focused,disabled:i.disabled,error:i.error,required:i.required,asterisk:i.asterisk},ref:t},a))}),Tm=ee(nEA,{name:"MuiInputLabel"})(rEA),oEA={root:{display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top"},marginNormal:{marginTop:16,marginBottom:8},marginDense:{marginTop:8,marginBottom:4},fullWidth:{width:"100%"}},sEA=p.exports.forwardRef(function(A,t){var i=A.children,n=A.classes,r=A.className,o=A.color,s=o===void 0?"primary":o,a=A.component,g=a===void 0?"div":a,I=A.disabled,l=I===void 0?!1:I,c=A.error,C=c===void 0?!1:c,B=A.fullWidth,u=B===void 0?!1:B,E=A.focused,h=A.hiddenLabel,f=h===void 0?!1:h,Q=A.margin,d=Q===void 0?"none":Q,w=A.required,m=w===void 0?!1:w,v=A.size,x=A.variant,D=x===void 0?"standard":x,F=SA(A,["children","classes","className","color","component","disabled","error","fullWidth","focused","hiddenLabel","margin","required","size","variant"]),N=p.exports.useState(function(){var iA=!1;return i&&p.exports.Children.forEach(i,function(gA){if(!!vI(gA,["Input","Select"])){var sA=vI(gA,["Select"])?gA.props.input:gA;sA&&CCA(sA.props)&&(iA=!0)}}),iA}),M=N[0],U=N[1],P=p.exports.useState(function(){var iA=!1;return i&&p.exports.Children.forEach(i,function(gA){!vI(gA,["Input","Select"])||Sm(gA.props,!0)&&(iA=!0)}),iA}),W=P[0],J=P[1],Z=p.exports.useState(!1),z=Z[0],O=Z[1],Y=E!==void 0?E:z;l&&Y&&O(!1);var k,q=p.exports.useCallback(function(){J(!0)},[]),j=p.exports.useCallback(function(){J(!1)},[]),AA={adornedStart:M,setAdornedStart:U,color:s,disabled:l,error:C,filled:W,focused:Y,fullWidth:u,hiddenLabel:f,margin:(v==="small"?"dense":void 0)||d,onBlur:function(){O(!1)},onEmpty:j,onFilled:q,onFocus:function(){O(!0)},registerEffect:k,required:m,variant:D};return p.exports.createElement(ym.Provider,{value:AA},p.exports.createElement(g,_({className:yA(n.root,r,d!=="none"&&n["margin".concat(Qe(d))],u&&n.fullWidth),ref:t},F),i))}),Um=ee(oEA,{name:"MuiFormControl"})(sEA),aEA=function(A){return{root:_({color:A.palette.text.secondary},A.typography.caption,{textAlign:"left",marginTop:3,margin:0,"&$disabled":{color:A.palette.text.disabled},"&$error":{color:A.palette.error.main}}),error:{},disabled:{},marginDense:{marginTop:4},contained:{marginLeft:14,marginRight:14},focused:{},filled:{},required:{}}},gEA=p.exports.forwardRef(function(A,t){var i=A.children,n=A.classes,r=A.className,o=A.component,s=o===void 0?"p":o;A.disabled,A.error,A.filled,A.focused,A.margin,A.required,A.variant;var a=SA(A,["children","classes","className","component","disabled","error","filled","focused","margin","required","variant"]),g=eg(),I=tg({props:A,muiFormControl:g,states:["variant","margin","disabled","error","filled","focused","required"]});return p.exports.createElement(s,_({className:yA(n.root,(I.variant==="filled"||I.variant==="outlined")&&n.contained,r,I.disabled&&n.disabled,I.error&&n.error,I.filled&&n.filled,I.focused&&n.focused,I.required&&n.required,I.margin==="dense"&&n.marginDense),ref:t},a),i===" "?p.exports.createElement("span",{dangerouslySetInnerHTML:{__html:"​"}}):i)}),IEA=ee(aEA,{name:"MuiFormHelperText"})(gEA),lEA={standard:Rm,filled:jM,outlined:ZM},cEA={root:{}},CEA=p.exports.forwardRef(function(A,t){var i=A.autoComplete,n=A.autoFocus,r=n===void 0?!1:n,o=A.children,s=A.classes,a=A.className,g=A.color,I=g===void 0?"primary":g,l=A.defaultValue,c=A.disabled,C=c===void 0?!1:c,B=A.error,u=B===void 0?!1:B,E=A.FormHelperTextProps,h=A.fullWidth,f=h===void 0?!1:h,Q=A.helperText,d=A.hiddenLabel,w=A.id,m=A.InputLabelProps,v=A.inputProps,x=A.InputProps,D=A.inputRef,F=A.label,N=A.multiline,M=N===void 0?!1:N,U=A.name,P=A.onBlur,W=A.onChange,J=A.onFocus,Z=A.placeholder,z=A.required,O=z===void 0?!1:z,Y=A.rows,k=A.rowsMax,q=A.maxRows,j=A.minRows,AA=A.select,iA=AA===void 0?!1:AA,gA=A.SelectProps,sA=A.type,BA=A.value,IA=A.variant,bA=IA===void 0?"standard":IA,EA=SA(A,["autoComplete","autoFocus","children","classes","className","color","defaultValue","disabled","error","FormHelperTextProps","fullWidth","helperText","hiddenLabel","id","InputLabelProps","inputProps","InputProps","inputRef","label","multiline","name","onBlur","onChange","onFocus","placeholder","required","rows","rowsMax","maxRows","minRows","select","SelectProps","type","value","variant"]),QA={};if(bA==="outlined"&&(m&&typeof m.shrink!="undefined"&&(QA.notched=m.shrink),F)){var TA,RA=(TA=m==null?void 0:m.required)!==null&&TA!==void 0?TA:O;QA.label=p.exports.createElement(p.exports.Fragment,null,F,RA&&"\xA0*")}iA&&((!gA||!gA.native)&&(QA.id=void 0),QA["aria-describedby"]=void 0);var UA=Q&&w?"".concat(w,"-helper-text"):void 0,fA=F&&w?"".concat(w,"-label"):void 0,NA=lEA[bA],ZA=p.exports.createElement(NA,_({"aria-describedby":UA,autoComplete:i,autoFocus:r,defaultValue:l,fullWidth:f,multiline:M,name:U,rows:Y,rowsMax:k,maxRows:q,minRows:j,type:sA,value:BA,id:w,inputRef:D,onBlur:P,onChange:W,onFocus:J,placeholder:Z,inputProps:v},QA,x));return p.exports.createElement(Um,_({className:yA(s.root,a),disabled:C,error:u,fullWidth:f,hiddenLabel:d,ref:t,required:O,color:I,variant:bA},EA),F&&p.exports.createElement(Tm,_({htmlFor:w,id:fA},m),F),iA?p.exports.createElement(ig,_({"aria-describedby":UA,id:w,labelId:fA,value:BA,input:ZA},gA),o):ZA,Q&&p.exports.createElement(IEA,_({id:UA},E),Q))}),BEA=ee(cEA,{name:"MuiTextField"})(CEA),Pm={},EEA=jn.exports,uEA=Xn.exports;Object.defineProperty(Pm,"__esModule",{value:!0});var Qk=Pm.default=void 0,hEA=uEA(p.exports),fEA=EEA(Zn),QEA=(0,fEA.default)(hEA.createElement("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"}),"Info");Qk=Pm.default=QEA;var dEA=function(A){return{root:_({},A.typography.button,{boxSizing:"border-box",minWidth:64,padding:"6px 16px",borderRadius:A.shape.borderRadius,color:A.palette.text.primary,transition:A.transitions.create(["background-color","box-shadow","border"],{duration:A.transitions.duration.short}),"&:hover":{textDecoration:"none",backgroundColor:ut(A.palette.text.primary,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"},"&$disabled":{backgroundColor:"transparent"}},"&$disabled":{color:A.palette.action.disabled}}),label:{width:"100%",display:"inherit",alignItems:"inherit",justifyContent:"inherit"},text:{padding:"6px 8px"},textPrimary:{color:A.palette.primary.main,"&:hover":{backgroundColor:ut(A.palette.primary.main,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},textSecondary:{color:A.palette.secondary.main,"&:hover":{backgroundColor:ut(A.palette.secondary.main,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},outlined:{padding:"5px 15px",border:"1px solid ".concat(A.palette.type==="light"?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"),"&$disabled":{border:"1px solid ".concat(A.palette.action.disabledBackground)}},outlinedPrimary:{color:A.palette.primary.main,border:"1px solid ".concat(ut(A.palette.primary.main,.5)),"&:hover":{border:"1px solid ".concat(A.palette.primary.main),backgroundColor:ut(A.palette.primary.main,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},outlinedSecondary:{color:A.palette.secondary.main,border:"1px solid ".concat(ut(A.palette.secondary.main,.5)),"&:hover":{border:"1px solid ".concat(A.palette.secondary.main),backgroundColor:ut(A.palette.secondary.main,A.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"&$disabled":{border:"1px solid ".concat(A.palette.action.disabled)}},contained:{color:A.palette.getContrastText(A.palette.grey[300]),backgroundColor:A.palette.grey[300],boxShadow:A.shadows[2],"&:hover":{backgroundColor:A.palette.grey.A100,boxShadow:A.shadows[4],"@media (hover: none)":{boxShadow:A.shadows[2],backgroundColor:A.palette.grey[300]},"&$disabled":{backgroundColor:A.palette.action.disabledBackground}},"&$focusVisible":{boxShadow:A.shadows[6]},"&:active":{boxShadow:A.shadows[8]},"&$disabled":{color:A.palette.action.disabled,boxShadow:A.shadows[0],backgroundColor:A.palette.action.disabledBackground}},containedPrimary:{color:A.palette.primary.contrastText,backgroundColor:A.palette.primary.main,"&:hover":{backgroundColor:A.palette.primary.dark,"@media (hover: none)":{backgroundColor:A.palette.primary.main}}},containedSecondary:{color:A.palette.secondary.contrastText,backgroundColor:A.palette.secondary.main,"&:hover":{backgroundColor:A.palette.secondary.dark,"@media (hover: none)":{backgroundColor:A.palette.secondary.main}}},disableElevation:{boxShadow:"none","&:hover":{boxShadow:"none"},"&$focusVisible":{boxShadow:"none"},"&:active":{boxShadow:"none"},"&$disabled":{boxShadow:"none"}},focusVisible:{},disabled:{},colorInherit:{color:"inherit",borderColor:"currentColor"},textSizeSmall:{padding:"4px 5px",fontSize:A.typography.pxToRem(13)},textSizeLarge:{padding:"8px 11px",fontSize:A.typography.pxToRem(15)},outlinedSizeSmall:{padding:"3px 9px",fontSize:A.typography.pxToRem(13)},outlinedSizeLarge:{padding:"7px 21px",fontSize:A.typography.pxToRem(15)},containedSizeSmall:{padding:"4px 10px",fontSize:A.typography.pxToRem(13)},containedSizeLarge:{padding:"8px 22px",fontSize:A.typography.pxToRem(15)},sizeSmall:{},sizeLarge:{},fullWidth:{width:"100%"},startIcon:{display:"inherit",marginRight:8,marginLeft:-4,"&$iconSizeSmall":{marginLeft:-2}},endIcon:{display:"inherit",marginRight:-4,marginLeft:8,"&$iconSizeSmall":{marginRight:-2}},iconSizeSmall:{"& > *:first-child":{fontSize:18}},iconSizeMedium:{"& > *:first-child":{fontSize:20}},iconSizeLarge:{"& > *:first-child":{fontSize:22}}}},pEA=p.exports.forwardRef(function(A,t){var i=A.children,n=A.classes,r=A.className,o=A.color,s=o===void 0?"default":o,a=A.component,g=a===void 0?"button":a,I=A.disabled,l=I===void 0?!1:I,c=A.disableElevation,C=c===void 0?!1:c,B=A.disableFocusRipple,u=B===void 0?!1:B,E=A.endIcon,h=A.focusVisibleClassName,f=A.fullWidth,Q=f===void 0?!1:f,d=A.size,w=d===void 0?"medium":d,m=A.startIcon,v=A.type,x=v===void 0?"button":v,D=A.variant,F=D===void 0?"text":D,N=SA(A,["children","classes","className","color","component","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"]),M=m&&p.exports.createElement("span",{className:yA(n.startIcon,n["iconSize".concat(Qe(w))])},m),U=E&&p.exports.createElement("span",{className:yA(n.endIcon,n["iconSize".concat(Qe(w))])},E);return p.exports.createElement(tc,_({className:yA(n.root,n[F],r,s==="inherit"?n.colorInherit:s!=="default"&&n["".concat(F).concat(Qe(s))],w!=="medium"&&[n["".concat(F,"Size").concat(Qe(w))],n["size".concat(Qe(w))]],C&&n.disableElevation,l&&n.disabled,Q&&n.fullWidth),component:g,disabled:l,focusRipple:!u,focusVisibleClassName:yA(n.focusVisible,h),ref:t,type:x},N),p.exports.createElement("span",{className:n.label},M,i,U))}),$n=ee(dEA,{name:"MuiButton"})(pEA),Hm={},yEA=jn.exports,mEA=Xn.exports;Object.defineProperty(Hm,"__esModule",{value:!0});var dk=Hm.default=void 0,wEA=mEA(p.exports),vEA=yEA(Zn),SEA=(0,vEA.default)(wEA.createElement("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"}),"Settings");dk=Hm.default=SEA;var qm={},DEA=jn.exports,REA=Xn.exports;Object.defineProperty(qm,"__esModule",{value:!0});var pk=qm.default=void 0,xEA=REA(p.exports),FEA=DEA(Zn),NEA=(0,FEA.default)(xEA.createElement("path",{d:"M12 .3a12 12 0 0 0-3.8 23.4c.6.1.8-.3.8-.6v-2c-3.3.7-4-1.6-4-1.6-.6-1.4-1.4-1.8-1.4-1.8-1-.7.1-.7.1-.7 1.2 0 1.9 1.2 1.9 1.2 1 1.8 2.8 1.3 3.5 1 0-.8.4-1.3.7-1.6-2.7-.3-5.5-1.3-5.5-6 0-1.2.5-2.3 1.3-3.1-.2-.4-.6-1.6 0-3.2 0 0 1-.3 3.4 1.2a11.5 11.5 0 0 1 6 0c2.3-1.5 3.3-1.2 3.3-1.2.6 1.6.2 2.8 0 3.2.9.8 1.3 1.9 1.3 3.2 0 4.6-2.8 5.6-5.5 5.9.5.4.9 1 .9 2.2v3.3c0 .3.1.7.8.6A12 12 0 0 0 12 .3"}),"GitHub");pk=qm.default=NEA;var Jm={},LEA=jn.exports,bEA=Xn.exports;Object.defineProperty(Jm,"__esModule",{value:!0});var yk=Jm.default=void 0,GEA=bEA(p.exports),_EA=LEA(Zn),MEA=(0,_EA.default)(GEA.createElement("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close");yk=Jm.default=MEA;const kEA={marginRight:"4.5px",marginTop:"3px"};function TEA(){const e=_A(A=>A.toggleIsControllerOn);return XA($A,{container:!0,direction:"row",justifyContent:"flex-end",alignItems:"center",children:[H($A,{style:{marginRight:"auto"},item:!0,children:H(Xo,{variant:"body1",children:H("strong",{children:"AVIVATOR"})})}),H($A,{item:!0,children:H(jo,{href:"https://github.com/hms-dbmi/viv","aria-label":"GitHub Repository",disableRipple:!0,children:H(pk,{})})}),H($A,{item:!0,children:H(jo,{size:"small",onClick:e,disableRipple:!0,"aria-label":"hide-menu",style:kEA,children:H(yk,{fontSize:"small"})})})]})}function UEA(){const{getRootProps:e,getInputProps:A}=xM();return XA($n,{fullWidth:!0,variant:"outlined",style:{borderStyle:"dashed",backgroundColor:"transparent",height:"2rem"},size:"small",...e(),children:[H("input",{...A({accept:".tif, .tiff"})}),"Choose a file"]})}const mk=is(e=>({root:{maxHeight:A=>`${A.maxHeight-e.spacing(4)}px`,width:"365px",overflowX:"hidden",overflowY:"scroll","&::-webkit-scrollbar":{display:"none",background:"transparent"},scrollbarWidth:"none"},typography:{fontSize:".8rem"},paper:{paddingBottom:e.spacing(2),paddingRight:e.spacing(2),paddingLeft:e.spacing(2),backgroundColor:"rgba(0, 0, 0, 0.75)",borderRadius:2},item:{width:"100%"},divider:{paddingBottom:e.spacing(1),paddingTop:e.spacing(2)}}));function PEA(e){const A=yi(C=>C.image),[t,i]=_A(C=>[C.source,C.metadata]),n=(C,B)=>{C.preventDefault();const u={urlOrFile:B,description:SM(B)};_A.setState({source:u})},r=C=>yi.setState({image:C.target.value}),o=typeof t.urlOrFile=="string"?t.urlOrFile:"",[s,a]=p.exports.useState(o),[g,I]=p.exports.useReducer(C=>!C,!1),l=p.exports.useRef(null),c=mk(e);return p.exports.useEffect(()=>a(o),[o]),XA($A,{container:!0,direction:"column",spacing:0,children:[H($A,{item:!0,xs:12,children:H(TEA,{})}),XA($A,{container:!0,direction:"row",justifyContent:"space-between",alignItems:"center",children:[XA($A,{item:!0,xs:1,children:[H(Qk,{onClick:I,ref:l}),H(Mm,{open:g,anchorEl:l.current,placement:"bottom-start",style:{width:"25%"},children:H(no,{style:{padding:8},children:H(wu,{onClickAway:I,children:XA(Xo,{className:c.typography,children:["Provide a URL to an OME-TIFF file or a Bio-Formats Zarr store to view the image. View the"," ",H(xu,{target:"_blank",rel:"noopener noreferrer",href:"http://viv.gehlenborglab.org",children:"docs"})," ","to learn more about the supported file formats."]})})})})]}),H($A,{item:!0,xs:11,children:H("form",{onSubmit:C=>{n(C,s)},children:H(BEA,{id:"ome-input",label:"OME-TIFF/Bioformats-Zarr URL",variant:"filled",size:"small",fullWidth:!0,value:s,onChange:C=>a(C.target.value)})})})]}),!MgA()&&H($A,{item:!0,xs:12,style:{paddingTop:16},children:H(UEA,{})}),Array.isArray(i)&&H($A,{item:!0,xs:12,children:H(ig,{native:!0,value:A,onChange:r,children:i.map((C,B)=>H("option",{value:B,children:C.Name},C.Name))})}),H($A,{item:!0,xs:12,className:c.divider,children:H(s0,{})})]})}function HEA({children:e,...A}){const t=mk(A),[i,n]=_A(r=>[r.isControllerOn,r.toggleIsControllerOn],Ue);return i?H(l0,{position:"absolute",right:0,top:0,m:1,className:t.root,children:XA(no,{className:t.paper,children:[H(PEA,{}),H($A,{container:!0,direction:"column",justifyContent:"center",alignItems:"center",children:e.map((r,o)=>H($A,{item:!0,className:t.item,children:r},o))})]})}):H(l0,{position:"absolute",right:-8,top:-8,m:2,children:H($n,{variant:"outlined",color:"default",size:"small",endIcon:H(dk,{}),onClick:n,"aria-label":"show-menu",children:"AVIVATOR"})})}function qEA(){const e=he(t=>t.colormap),A=_A(t=>t.isViewerLoading);return XA(Um,{fullWidth:!0,children:[XA(Tm,{htmlFor:"colormap-select",children:["Additive ",e===""?" Blending":"Color Mapping"]}),XA(ig,{native:!0,onChange:t=>he.setState({colormap:t.target.value}),value:e,inputProps:{name:"colormap",id:"colormap-select"},disabled:A,children:[H("option",{"aria-label":"None",value:""}),ygA.map(t=>H("option",{value:t,children:t},t))]})]})}function JEA(e){const{size:A,label:t}=e,[i,n]=yi(a=>[a.selections,a.setPropertiesForChannel],Ue),r=hn(),o=_A(a=>a.globalSelection),s=p.exports.useCallback(kM((a,g)=>{_A.setState({isChannelLoading:i.map(()=>!0)});const I=[...i].map(l=>({...l,[t]:g}));gE({loader:r,selections:I,use3d:!1}).then(({domains:l,contrastLimits:c})=>{bt.exports.unstable_batchedUpdates(()=>{wI(I.length).forEach((C,B)=>n(C,{domains:l[B],contrastLimits:c[B]}))}),bt.exports.unstable_batchedUpdates(()=>{he.setState({onViewportLoad:()=>{he.setState({onViewportLoad:()=>{}}),_A.setState({isChannelLoading:i.map(()=>!1)})}}),wI(I.length).forEach((C,B)=>n(C,{selections:I[B]}))})})},50,{trailing:!0}),[r,i]);return XA($A,{container:!0,direction:"row",justifyContent:"space-between",alignItems:"center",children:[XA($A,{item:!0,xs:1,children:[t,":"]}),H($A,{item:!0,xs:11,children:H(wm,{value:o[t],onChange:(a,g)=>{_A.setState({globalSelection:{...o,[t]:g}}),a.type==="keydown"&&s(a,g)},onChangeCommitted:s,valueLabelDisplay:"auto",getAriaLabel:()=>`${t} slider`,marks:wI(A).map(a=>({value:a})),min:0,max:A,orientation:"horizontal",style:{marginTop:"7px"},step:null})})]})}function OEA(){const e=yi(s=>s.selections),[A,t,i]=he(s=>[s.lensEnabled,s.toggleLensEnabled,s.lensSelection],Ue),n=_A(s=>s.channelOptions),r=e.map(s=>s.c),o=`rgb(${[255,255,255]})`;return XA($A,{container:!0,direction:"row",justifyContent:"flex-start",alignItems:"center",children:[H($A,{item:!0,xs:2,children:"Lens:"}),H($A,{item:!0,xs:2,children:H(mm,{onChange:t,checked:A,style:{color:o,"&$checked":{color:o}}})}),H($A,{item:!0,xs:7,children:H(ig,{native:!0,value:i,onChange:s=>he.setState({lensSelection:s.target.value}),children:r.map((s,a)=>H("option",{value:a,children:n[s]},n[s]+String(a)))})})]})}function YEA(e,A=2){if(e===0)return"0 Bytes";const t=1024,i=A<0?0:A,n=["Bytes","KB","MB","GB"],r=Math.floor(Math.log(e)/Math.log(t));return`${parseFloat((e/Math.pow(t,r)).toFixed(i))} ${n[r]}`}const wk=(e,A)=>{const{shape:t,labels:i}=e[A],n=t[i.indexOf("y")],r=t[i.indexOf("x")],o=t[i.indexOf("z")],s=Math.max(1,o>>A),a=4*n*r*s;return{height:n,width:r,depthDownsampled:s,totalBytes:a}},nF=(e,A)=>{var a,g,I;const{totalBytes:t,height:i,width:n,depthDownsampled:r}=wk(e,A),s=((a=window.performance)==null?void 0:a.memory)&&((I=(g=window.performance)==null?void 0:g.memory)==null?void 0:I.jsHeapSizeLimit)/2||2**31-1;return t1},KEA=is(()=>({paper:{backgroundColor:"rgba(0, 0, 0, 1)"},span:{width:"70px",textAlign:"center",paddingLeft:"2px",paddingRight:"2px"},colors:{"&:hover":{backgroundColor:"transparent"},paddingLeft:"2px",paddingRight:"2px"}}));function VEA(){const[e,A]=yi(B=>[B.selections,B.setPropertiesForChannel],Ue),t=hn(),[i,n,r,o]=_A(B=>[B.use3d,B.toggleUse3d,B.toggleIsVolumeRenderingWarningOn,B.isViewerLoading],Ue),[s,a]=p.exports.useReducer(B=>!B,!1),g=p.exports.useRef(null),I=KEA(),{shape:l,labels:c}=Array.isArray(t)?t[0]:t,C=Array.from({length:t.length}).filter((B,u)=>nF(t,u)).length;return XA(Pi,{children:[XA($n,{variant:"outlined",size:"small",ref:g,disabled:!(l[c.indexOf("z")]>1)||o||!C,onClick:()=>{a(),i&&(n(),_A.setState({isChannelLoading:Array(e.length).fill(!0)}),gE({loader:t,selections:e,use3d:!i}).then(({domains:B,contrastLimits:u})=>{wI(e.length).forEach((E,h)=>A(E,{domains:B[h],contrastLimits:u[h]})),_A.setState({isChannelLoading:Array(e.length).fill(!1)})}))},fullWidth:!0,children:[i?"Hide":"Show"," Volumetric Rendering"]}),H(Mm,{open:s,anchorEl:g.current,placement:"bottom-end",children:H(no,{className:I.paper,children:H(wu,{onClickAway:a,children:H(vm,{id:"resolution-options",children:Array.from({length:t.length}).fill(0).map((B,u)=>{if(t&&nF(t,u)){const{height:E,width:h,depthDownsampled:f,totalBytes:Q}=wk(t,u);return H($C,{dense:!0,disableGutters:!0,onClick:()=>{_A.setState({isChannelLoading:Array(e.length).fill(!0)});const[d,w,m]=Qm(t);he.setState({resolution:u,xSlice:d,ySlice:w,zSlice:m}),a(),gE({loader:t,selections:e,use3d:!0}).then(({domains:v,contrastLimits:x})=>{wI(e.length).forEach((F,N)=>A(F,{domains:v[N],contrastLimits:x[N]})),he.setState({onViewportLoad:()=>{he.setState({onViewportLoad:()=>{}}),_A.setState({isChannelLoading:Array(e.length).fill(!1)})}}),n(),!!document.createElement("canvas").getContext("webgl2")||r()})},children:`${u}x Downsampled, ~${YEA(Q)} per channel, (${E}, ${h}, ${f})`},`(${E}, ${h}, ${f})`)}return null})})})})})]})}const rF=Object.values(ga);function WEA(){const e=he(n=>n.renderingMode),[A,t]=_A(n=>[n.isViewerLoading,n.use3d],Ue),i=t?rF:[...rF,""];return XA(Um,{fullWidth:!0,children:[H(Tm,{htmlFor:"rendering-mode-select",children:"Rendering Mode"}),H(ig,{native:!0,onChange:n=>he.setState({renderingMode:n.target.value}),value:t?e:"",inputProps:{name:"rendering-mode",id:"rendering-mode-select"},disabled:A||!t,children:i.map(n=>H("option",{value:n,children:n},n))})]})}const zEA=is(e=>V2({enabled:{},disabled:{color:e.palette.text.disabled,"& .MuiSlider-thumb":{color:"rgb(100, 100, 100, 1.0)"},"& .MuiSlider-track":{color:"rgb(100, 100, 100, 1.0)"}}})),jEA=()=>{const[e,A,t]=he(l=>[l.xSlice,l.ySlice,l.zSlice],Ue),i=hn(),n=_A(l=>l.use3d),[r,o,s]=Qm(i),a=[[e,l=>he.setState({xSlice:l}),"x",r],[A,l=>he.setState({ySlice:l}),"y",o],[t,l=>he.setState({zSlice:l}),"z",s]],g=zEA(),I=a.map(([l,c,C,[B,u]])=>XA($A,{container:!0,direction:"row",justifyContent:"flex-start",alignItems:"center",children:[H($A,{item:!0,xs:1,style:{marginBottom:8},children:XA(Xo,{className:n?g.enabled:g.disabled,style:{marginTop:4},children:[C,":"]})}),H($A,{item:!0,xs:11,children:H(wm,{disabled:!n,className:n?g.enabled:g.disabled,value:l,onChange:(E,h)=>c(h),valueLabelDisplay:"auto",valueLabelFormat:E=>fm(E,5),getAriaLabel:()=>`${C} slider`,min:B,max:u,step:.005,orientation:"horizontal"})})]},C));return XA(Pi,{children:[XA(Xo,{className:n?g.enabled:g.disabled,style:{marginTop:16},children:["Clipping Planes:"," "]})," ",I]})};var Om={},XEA=jn.exports,ZEA=Xn.exports;Object.defineProperty(Om,"__esModule",{value:!0});var vk=Om.default=void 0,$EA=ZEA(p.exports),AuA=XEA(Zn),euA=(0,AuA.default)($EA.createElement("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"}),"Add");vk=Om.default=euA;const tuA=()=>{const[e,A,t,i,n]=_A(c=>[c.globalSelection,c.isViewerLoading,c.use3d,c.setIsChannelLoading,c.addIsChannelLoading],Ue),[r,o,s]=yi(c=>[c.selections,c.addChannel,c.setPropertiesForChannel],Ue),a=hn(),g=cm(),{labels:I}=a[0],l=p.exports.useCallback(()=>{let c=Object.fromEntries(I.map(B=>[B,0]));c={...c,...e};const C=r.length;hm({loader:a,selection:c,use3d:t}).then(({domain:B,contrastLimits:u})=>{var f;s(C,{domains:B,contrastLimits:u,channelsVisible:!0}),he.setState({onViewportLoad:()=>{he.setState({onViewportLoad:()=>{}}),i(C,!1)}}),n(!0);const{Pixels:{Channels:E}}=g,{c:h}=c;o({selections:c,ids:String(Math.random()),channelsVisible:!1,colors:(f=E[h].Color&&E[h].Color.slice(0,-1))!=null?f:Bm[h]||[255,255,255]})})},[I,a,e,t,o,n,r,i,s,g]);return H($n,{disabled:r.length===dgA||A,onClick:l,fullWidth:!0,variant:"outlined",style:{borderStyle:"dashed"},startIcon:H(vk,{}),size:"small",children:"Add Channel"})},iuA=()=>{const[e,A]=he(i=>[i.togglePanLock,i.panLock],Ue),t=_A(i=>i.isViewerLoading);return XA($n,{disabled:t,onClick:e,variant:"outlined",size:"small",fullWidth:!0,children:[A?"Unlock":"Lock"," Pan"]})},nuA=()=>{const[e,A]=he(i=>[i.toggleZoomLock,i.zoomLock],Ue),t=_A(i=>i.isViewerLoading);return XA($n,{disabled:t,onClick:e,variant:"outlined",size:"small",fullWidth:!0,children:[A?"Unlock":"Lock"," Zoom"]})},ruA=()=>{const e=he(r=>r.isOverviewOn),[A,t,i,n]=_A(r=>[r.isViewerLoading,r.toggleUseLinkedView,r.useLinkedView,r.use3d],Ue);return XA($n,{disabled:A||e||n,onClick:t,variant:"outlined",size:"small",fullWidth:!0,children:[i?"Hide":"Show"," Side-by-Side"]})},ouA=()=>{const[e,A]=he(r=>[r.isOverviewOn,r.toggleIsOverviewOn],Ue),[t,i,n]=_A(r=>[r.isViewerLoading,r.useLinkedView,r.use3d],Ue);return XA($n,{disabled:t||i||n,onClick:A,variant:"outlined",size:"small",fullWidth:!0,children:[e?"Hide":"Show"," Picture-In-Picture"]})},suA=is(e=>V2({enabled:{marginLeft:"4px"},disabled:{color:e.palette.text.disabled,marginLeft:"4px"}})),auA=()=>{const e=hn(),[A,t]=he(I=>[I.useFixedAxis,I.toggleUseFixedAxis],Ue),[i,n]=_A(I=>[I.viewState,I.use3d]),{height:r,width:o}=um(),s=suA(),a=H($A,{item:!0,xs:"auto",children:XA($A,{container:!0,direction:"row",children:[H(mm,{onClick:t,style:{padding:0},disabled:!n,checked:A}),H(Xo,{className:n?s.enabled:s.disabled,children:"Fix Camera Axis"})]})},"toggle-fixed-axis");return H($A,{container:!0,direction:"row",justifyContent:"space-between",alignItems:"center",style:{marginTop:16},children:[a,H($A,{item:!0,xs:"auto",children:H($n,{onClick:()=>_A.setState({viewState:{...i,...yu(e,{height:r,width:o},1,!0),rotationX:0,rotationOrbit:0}}),disabled:!n,style:{padding:0},children:"Re-Center"})},"recenter")]})};function oF(e){const{children:A,value:t,index:i,...n}=e;return H("div",{role:"tabpanel",hidden:t!==i,id:`simple-tabpanel-${i}`,"aria-labelledby":`simple-tab-${i}`,...n,children:t===i&&A})}const guA=()=>{const[e,A,t,i,n,r,o,s,a]=yi(J=>[J.channelsVisible,J.contrastLimits,J.colors,J.domains,J.selections,J.ids,J.setPropertiesForChannel,J.toggleIsOn,J.removeChannel],Ue),g=hn(),I=he(J=>J.colormap),[l,c,C,B,u,E,h,f,Q,d]=_A(J=>[J.channelOptions,J.useLinkedView,J.use3d,J.useColormap,J.useLens,J.isChannelLoading,J.setIsChannelLoading,J.removeIsChannelLoading,J.pixelValues,J.isViewerLoading],Ue),w=cm(),m=um(),v=w&&RM(w),{shape:x,labels:D}=g[0],F=D.filter(J=>Em.includes(J)),N=r.map((J,Z)=>{const z=AA=>{const iA={...n[Z],c:l.indexOf(AA.target.value)};h(Z,!0),hm({loader:g,selection:iA,use3d:C}).then(({domain:gA,contrastLimits:sA})=>{const{Pixels:{Channels:BA}}=w,{c:IA}=iA,bA={contrastLimits:sA,domains:gA};BA[IA].Color&&(bA.colors=BA[IA].Color.slice(0,-1)),o(Z,bA),he.setState({onViewportLoad:()=>{he.setState({onViewportLoad:()=>{}}),h(Z,!1)}}),o(Z,{selections:iA})})},O=()=>s(Z),Y=(AA,iA)=>o(Z,{contrastLimits:iA}),k=()=>{a(Z),f(Z)},q=AA=>{o(Z,{colors:AA})},j=l[n[Z].c];return H($A,{style:{width:"100%"},item:!0,children:H(ZBA,{name:j,onSelectionChange:z,channelsVisible:e[Z],pixelValue:Q[Z],toggleIsOn:O,handleSliderChange:Y,domain:i[Z],slider:A[Z],color:t[Z],handleRemoveChannel:k,handleColorSelect:q,isLoading:E[Z]})},`channel-controller-${j}-${J}`)}),M=F.map(J=>{const Z=x[D.indexOf(J)];return Z>1?H(JEA,{size:Z,label:J},J):null}),[U,P]=p.exports.useState(0),W=(J,Z)=>{P(Z)};return XA(HEA,{maxHeight:m.height,children:[XA(EcA,{value:U,onChange:W,"aria-label":"simple tabs example",style:{height:"24px",minHeight:"24px"},children:[H(Mx,{label:"Channels",style:{fontSize:".75rem",bottom:12}}),H(Mx,{label:"Volume",style:{fontSize:".75rem",bottom:12}})]}),H(s0,{}),XA(oF,{value:U,index:0,children:[B&&H(qEA,{}),u&&!I&&!C&&x[D.indexOf("c")]>1&&H(OEA,{channelOptions:n.map(J=>l[J.c])}),!C&&M,!d&&!v?H($A,{container:!0,children:N}):H($A,{container:!0,justifyContent:"center",children:!v&&H(TM,{})}),!v&&H(tuA,{})]}),XA(oF,{value:U,index:1,children:[H(WEA,{}),H(jEA,{}),H(auA,{})]}),H(s0,{style:{marginTop:"8px",marginBottom:"8px"}}),H(VEA,{}),H(ouA,{}),H(ruA,{}),c&&!C&&XA(Pi,{children:[H(nuA,{}),H(iuA,{})]})]})};function IuA({children:e}){const{getRootProps:A,getInputProps:t}=xM();return XA("div",{...A({onClick:i=>i.stopPropagation()}),children:[H("input",{...t()}),e]})}const luA=is(e=>({typography:{fontSize:".8rem"},paper:{paddingRight:e.spacing(1),paddingLeft:e.spacing(1),backgroundColor:"rgba(0, 0, 0, 0.75)",borderRadius:2}}));function cuA(e,A,t){return`${e}/${A} [${t.join(", ")}]`}function CuA(){const e=luA(),[A,t]=_A(s=>[s.use3d,s.pyramidResolution],Ue),i=hn(),n=he(s=>s.resolution),r=A?n:t,o=i[r];return o?H(l0,{style:{position:"fixed",marginTop:"calc(5% + 60px)",bottom:0},children:H(no,{className:e.paper,children:H(Xo,{className:e.typography,children:cuA(r+1,i.length,o.shape)})})}):null}function sF(e){const{history:A,source:t,isDemoImage:i}=e,n=_A(s=>s.isViewerLoading),r=_A(s=>s.source),o=_A(s=>s.useLinkedView);return p.exports.useEffect(()=>{_A.setState({source:t,isNoImageUrlSnackbarOn:i})},[]),UgA(r,A),XA(Pi,{children:[H(IuA,{children:!n&&H(JlA,{})}),H(guA,{}),H(OIA,{}),!o&&H(CuA,{})]})}const aF=R2({palette:{type:"dark",primary:OI,secondary:OI},props:{MuiButtonBase:{disableRipple:!0}}});function BuA(){return Zv[Math.floor(Math.random()*Zv.length)]}function EuA(){return new URLSearchParams(_3().search)}function uuA(e){const t=EuA().get("image_url"),{routeProps:{history:i}}=e;if(t){const r={urlOrFile:t,description:SM(t)};return H(Xv,{theme:aF,children:H(sF,{source:r,history:i})})}const n=BuA();return H(Xv,{theme:aF,children:H(sF,{source:n,history:i,isDemoImage:!0})})}Pg.render(H(M3,{children:H(b3,{children:H(F3,{path:"/",render:e=>H(uuA,{routeProps:e})})})}),document.getElementById("root"));export{bAA as B,DuA as L,RuA as a}; diff --git a/assets/jpeg.b48bde09.js b/assets/jpeg-29034b1c.js similarity index 72% rename from assets/jpeg.b48bde09.js rename to assets/jpeg-29034b1c.js index 58749fe98..f5203329a 100644 --- a/assets/jpeg.b48bde09.js +++ b/assets/jpeg-29034b1c.js @@ -1 +1 @@ -import{B as re}from"./index.ed0b1304.js";const O=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),Y=4017,Z=799,$=3406,N=2276,Q=1567,W=3784,R=5793,K=2896;function ne(q,l){let o=0;const u=[];let T=16;for(;T>0&&!q[T-1];)--T;u.push({children:[],index:0});let w=u[0],C;for(let t=0;t0;)w=u.pop();for(w.index++,u.push(w);u.length<=t;)u.push(C={children:[],index:0}),w.children[w.index]=C.children,w=C;o++}t+10)return d--,i>>d&1;if(i=q[b++],i===255){const a=q[b++];if(a)throw new Error(`unexpected marker: ${(i<<8|a).toString(16)}`)}return d=7,i>>>7}function x(a){let f=a,p;for(;(p=m())!==null;){if(f=f[p],typeof f=="number")return f;if(typeof f!="object")throw new Error("invalid huffman sequence")}return null}function E(a){let f=a,p=0;for(;f>0;){const L=m();if(L===null)return;p=p<<1|L,--f}return p}function k(a){const f=E(a);return f>=1<>4;if(y===0){if(S<15)break;D+=16}else{D+=S;const I=O[D];f[I]=k(y),D++}}}function v(a,f){const p=x(a.huffmanTableDC),L=p===0?0:k(p)<0){n--;return}let p=w;const L=C;for(;p<=L;){const D=x(a.huffmanTableAC),P=D&15,y=D>>4;if(P===0){if(y<15){n=E(y)+(1<>4,I===0)D<15?(n=E(D)+(1<=65488&&z<=65495)b+=2;else break}return b-r}function ie(q,l){const o=[],{blocksPerLine:u,blocksPerColumn:T}=l,w=u<<3,C=new Int32Array(64),t=new Uint8Array(64);function h(F,c,r){const b=l.quantizationTable;let i,d,m,x,E,k,A,v,s;const n=r;let g;for(g=0;g<64;g++)n[g]=F[g]*b[g];for(g=0;g<8;++g){const e=8*g;if(n[1+e]===0&&n[2+e]===0&&n[3+e]===0&&n[4+e]===0&&n[5+e]===0&&n[6+e]===0&&n[7+e]===0){s=R*n[0+e]+512>>10,n[0+e]=s,n[1+e]=s,n[2+e]=s,n[3+e]=s,n[4+e]=s,n[5+e]=s,n[6+e]=s,n[7+e]=s;continue}i=R*n[0+e]+128>>8,d=R*n[4+e]+128>>8,m=n[2+e],x=n[6+e],E=K*(n[1+e]-n[7+e])+128>>8,v=K*(n[1+e]+n[7+e])+128>>8,k=n[3+e]<<4,A=n[5+e]<<4,s=i-d+1>>1,i=i+d+1>>1,d=s,s=m*W+x*Q+128>>8,m=m*Q-x*W+128>>8,x=s,s=E-A+1>>1,E=E+A+1>>1,A=s,s=v+k+1>>1,k=v-k+1>>1,v=s,s=i-x+1>>1,i=i+x+1>>1,x=s,s=d-m+1>>1,d=d+m+1>>1,m=s,s=E*N+v*$+2048>>12,E=E*$-v*N+2048>>12,v=s,s=k*Z+A*Y+2048>>12,k=k*Y-A*Z+2048>>12,A=s,n[0+e]=i+v,n[7+e]=i-v,n[1+e]=d+A,n[6+e]=d-A,n[2+e]=m+k,n[5+e]=m-k,n[3+e]=x+E,n[4+e]=x-E}for(g=0;g<8;++g){const e=g;if(n[1*8+e]===0&&n[2*8+e]===0&&n[3*8+e]===0&&n[4*8+e]===0&&n[5*8+e]===0&&n[6*8+e]===0&&n[7*8+e]===0){s=R*r[g+0]+8192>>14,n[0*8+e]=s,n[1*8+e]=s,n[2*8+e]=s,n[3*8+e]=s,n[4*8+e]=s,n[5*8+e]=s,n[6*8+e]=s,n[7*8+e]=s;continue}i=R*n[0*8+e]+2048>>12,d=R*n[4*8+e]+2048>>12,m=n[2*8+e],x=n[6*8+e],E=K*(n[1*8+e]-n[7*8+e])+2048>>12,v=K*(n[1*8+e]+n[7*8+e])+2048>>12,k=n[3*8+e],A=n[5*8+e],s=i-d+1>>1,i=i+d+1>>1,d=s,s=m*W+x*Q+2048>>12,m=m*Q-x*W+2048>>12,x=s,s=E-A+1>>1,E=E+A+1>>1,A=s,s=v+k+1>>1,k=v-k+1>>1,v=s,s=i-x+1>>1,i=i+x+1>>1,x=s,s=d-m+1>>1,d=d+m+1>>1,m=s,s=E*N+v*$+2048>>12,E=E*$-v*N+2048>>12,v=s,s=k*Z+A*Y+2048>>12,k=k*Y-A*Z+2048>>12,A=s,n[0*8+e]=i+v,n[7*8+e]=i-v,n[1*8+e]=d+A,n[6*8+e]=d-A,n[2*8+e]=m+k,n[5*8+e]=m-k,n[3*8+e]=x+E,n[4*8+e]=x-E}for(g=0;g<64;++g){const e=128+(n[g]+8>>4);e<0?c[g]=0:e>255?c[g]=255:c[g]=e}}for(let F=0;F>4===0)for(let r=0;r<64;r++){const b=O[r];c[b]=l[o++]}else if(F>>4===1)for(let r=0;r<64;r++){const b=O[r];c[b]=u()}else throw new Error("DQT: invalid table spec");this.quantizationTables[F&15]=c}break}case 65472:case 65473:case 65474:{u();const t={extended:C===65473,progressive:C===65474,precision:l[o++],scanLines:u(),samplesPerLine:u(),components:{},componentsOrder:[]},h=l[o++];let F;for(let c=0;c>4,b=l[o+1]&15,i=l[o+2];t.componentsOrder.push(F),t.components[F]={h:r,v:b,quantizationIdx:i},o+=3}w(t),this.frames.push(t);break}case 65476:{const t=u();for(let h=2;h>4===0?this.huffmanTablesDC[F&15]=ne(c,b):this.huffmanTablesAC[F&15]=ne(c,b)}break}case 65501:u(),this.resetInterval=u();break;case 65498:{u();const t=l[o++],h=[],F=this.frames[0];for(let d=0;d>4],m.huffmanTableAC=this.huffmanTablesAC[x&15],h.push(m)}const c=l[o++],r=l[o++],b=l[o++];o+=ce(l,o,F,h,this.resetInterval,c,r,b>>4,b&15);break}case 65535:l[o]!==255&&o--;break;default:if(l[o-3]===255&&l[o-2]>=192&&l[o-2]<=254){o-=3;break}throw new Error(`unknown JPEG marker ${C.toString(16)}`)}C=u()}}getResult(){const{frames:l}=this;if(this.frames.length===0)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(let c=0;c0&&!q[T-1];)--T;u.push({children:[],index:0});let w=u[0],C;for(let t=0;t0;)w=u.pop();for(w.index++,u.push(w);u.length<=t;)u.push(C={children:[],index:0}),w.children[w.index]=C.children,w=C;o++}t+10)return d--,i>>d&1;if(i=q[b++],i===255){const a=q[b++];if(a)throw new Error(`unexpected marker: ${(i<<8|a).toString(16)}`)}return d=7,i>>>7}function x(a){let f=a,p;for(;(p=m())!==null;){if(f=f[p],typeof f=="number")return f;if(typeof f!="object")throw new Error("invalid huffman sequence")}return null}function E(a){let f=a,p=0;for(;f>0;){const L=m();if(L===null)return;p=p<<1|L,--f}return p}function k(a){const f=E(a);return f>=1<>4;if(y===0){if(S<15)break;D+=16}else{D+=S;const I=O[D];f[I]=k(y),D++}}}function v(a,f){const p=x(a.huffmanTableDC),L=p===0?0:k(p)<0){n--;return}let p=w;const L=C;for(;p<=L;){const D=x(a.huffmanTableAC),P=D&15,y=D>>4;if(P===0){if(y<15){n=E(y)+(1<>4,I===0)D<15?(n=E(D)+(1<=65488&&z<=65495)b+=2;else break}return b-r}function ie(q,l){const o=[],{blocksPerLine:u,blocksPerColumn:T}=l,w=u<<3,C=new Int32Array(64),t=new Uint8Array(64);function h(F,c,r){const b=l.quantizationTable;let i,d,m,x,E,k,A,v,s;const n=r;let g;for(g=0;g<64;g++)n[g]=F[g]*b[g];for(g=0;g<8;++g){const e=8*g;if(n[1+e]===0&&n[2+e]===0&&n[3+e]===0&&n[4+e]===0&&n[5+e]===0&&n[6+e]===0&&n[7+e]===0){s=R*n[0+e]+512>>10,n[0+e]=s,n[1+e]=s,n[2+e]=s,n[3+e]=s,n[4+e]=s,n[5+e]=s,n[6+e]=s,n[7+e]=s;continue}i=R*n[0+e]+128>>8,d=R*n[4+e]+128>>8,m=n[2+e],x=n[6+e],E=K*(n[1+e]-n[7+e])+128>>8,v=K*(n[1+e]+n[7+e])+128>>8,k=n[3+e]<<4,A=n[5+e]<<4,s=i-d+1>>1,i=i+d+1>>1,d=s,s=m*W+x*Q+128>>8,m=m*Q-x*W+128>>8,x=s,s=E-A+1>>1,E=E+A+1>>1,A=s,s=v+k+1>>1,k=v-k+1>>1,v=s,s=i-x+1>>1,i=i+x+1>>1,x=s,s=d-m+1>>1,d=d+m+1>>1,m=s,s=E*N+v*$+2048>>12,E=E*$-v*N+2048>>12,v=s,s=k*Z+A*Y+2048>>12,k=k*Y-A*Z+2048>>12,A=s,n[0+e]=i+v,n[7+e]=i-v,n[1+e]=d+A,n[6+e]=d-A,n[2+e]=m+k,n[5+e]=m-k,n[3+e]=x+E,n[4+e]=x-E}for(g=0;g<8;++g){const e=g;if(n[1*8+e]===0&&n[2*8+e]===0&&n[3*8+e]===0&&n[4*8+e]===0&&n[5*8+e]===0&&n[6*8+e]===0&&n[7*8+e]===0){s=R*r[g+0]+8192>>14,n[0*8+e]=s,n[1*8+e]=s,n[2*8+e]=s,n[3*8+e]=s,n[4*8+e]=s,n[5*8+e]=s,n[6*8+e]=s,n[7*8+e]=s;continue}i=R*n[0*8+e]+2048>>12,d=R*n[4*8+e]+2048>>12,m=n[2*8+e],x=n[6*8+e],E=K*(n[1*8+e]-n[7*8+e])+2048>>12,v=K*(n[1*8+e]+n[7*8+e])+2048>>12,k=n[3*8+e],A=n[5*8+e],s=i-d+1>>1,i=i+d+1>>1,d=s,s=m*W+x*Q+2048>>12,m=m*Q-x*W+2048>>12,x=s,s=E-A+1>>1,E=E+A+1>>1,A=s,s=v+k+1>>1,k=v-k+1>>1,v=s,s=i-x+1>>1,i=i+x+1>>1,x=s,s=d-m+1>>1,d=d+m+1>>1,m=s,s=E*N+v*$+2048>>12,E=E*$-v*N+2048>>12,v=s,s=k*Z+A*Y+2048>>12,k=k*Y-A*Z+2048>>12,A=s,n[0*8+e]=i+v,n[7*8+e]=i-v,n[1*8+e]=d+A,n[6*8+e]=d-A,n[2*8+e]=m+k,n[5*8+e]=m-k,n[3*8+e]=x+E,n[4*8+e]=x-E}for(g=0;g<64;++g){const e=128+(n[g]+8>>4);e<0?c[g]=0:e>255?c[g]=255:c[g]=e}}for(let F=0;F>4)if(F>>4===1)for(let r=0;r<64;r++){const b=O[r];c[b]=u()}else throw new Error("DQT: invalid table spec");else for(let r=0;r<64;r++){const b=O[r];c[b]=l[o++]}this.quantizationTables[F&15]=c}break}case 65472:case 65473:case 65474:{u();const t={extended:C===65473,progressive:C===65474,precision:l[o++],scanLines:u(),samplesPerLine:u(),components:{},componentsOrder:[]},h=l[o++];let F;for(let c=0;c>4,b=l[o+1]&15,i=l[o+2];t.componentsOrder.push(F),t.components[F]={h:r,v:b,quantizationIdx:i},o+=3}w(t),this.frames.push(t);break}case 65476:{const t=u();for(let h=2;h>4?this.huffmanTablesAC[F&15]=ne(c,b):this.huffmanTablesDC[F&15]=ne(c,b)}break}case 65501:u(),this.resetInterval=u();break;case 65498:{u();const t=l[o++],h=[],F=this.frames[0];for(let d=0;d>4],m.huffmanTableAC=this.huffmanTablesAC[x&15],h.push(m)}const c=l[o++],r=l[o++],b=l[o++],i=ce(l,o,F,h,this.resetInterval,c,r,b>>4,b&15);o+=i;break}case 65535:l[o]!==255&&o--;break;default:if(l[o-3]===255&&l[o-2]>=192&&l[o-2]<=254){o-=3;break}throw new Error(`unknown JPEG marker ${C.toString(16)}`)}C=u()}}getResult(){const{frames:l}=this;if(this.frames.length===0)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(let c=0;c>3],B<<=U&7),d=0;d>3]),B&128?(k&&(k[U]=1),s=M.encoding<2?T[V++]:S,l=l>s?s:l,w[U++]=s):(k&&(k[U]=0),w[U++]=i),B<<=1;U+=I}else if(M.encoding<2)for(y=0;ys?s:l,w[U++]=s;U+=I}else for(l=l>S?S:l,y=0;y0){var f=new Uint8Array(Math.ceil(i.width*i.height/8));n=new DataView(r,o,i.mask.numBytes);var v=n.getInt16(0,!0),u=2,h=0;do{if(v>0)for(;v--;)f[h++]=n.getUint8(u++);else{var g=n.getUint8(u++);for(v=-v;v--;)f[h++]=g}v=n.getInt16(u,!0),u+=2}while(u0?1:0),k=s+(i.height%s>0?1:0);i.pixels.blocks=new Array(w*k);for(var D=0,d=0;d3)throw"Invalid block encoding ("+p.encoding+")";if(p.encoding===2){o++;continue}if(c!==0&&c!==2){if(c>>=6,p.offsetType=c,c===2)p.offset=n.getInt8(1),x++;else if(c===1)p.offset=n.getInt16(1,!0),x+=2;else if(c===0)p.offset=n.getFloat32(1,!0),x+=4;else throw"Invalid block offset type";if(p.encoding===1)if(c=n.getUint8(x),x++,p.bitsPerPixel=c&63,c>>=6,p.numValidPixelsType=c,c===2)p.numValidPixels=n.getUint8(x),x++;else if(c===1)p.numValidPixels=n.getUint16(x,!0),x+=2;else if(c===0)p.numValidPixels=n.getUint32(x,!0),x+=4;else throw"Invalid valid pixel count type"}if(o+=x,p.encoding!==3){var U,I;if(p.encoding===0){var M=(i.pixels.numBytes-1)/4;if(M!==Math.floor(M))throw"uncompressed block has invalid length";U=new ArrayBuffer(M*4),I=new Uint8Array(U),I.set(new Uint8Array(r,o,M*4));var T=new Float32Array(U);p.rawData=T,o+=M*4}else if(p.encoding===1){var V=Math.ceil(p.numValidPixels*p.bitsPerPixel/8),S=Math.ceil(V/4);U=new ArrayBuffer(S*4),I=new Uint8Array(U),I.set(new Uint8Array(r,o,V)),p.stuffedData=new Uint32Array(U),o+=V}}}return i.eofOffset=o,i},e=function(r,o,a,i,m,n,f){var v=(1<=o)l=s>>>g-o&v,g-=o;else{var D=o-g;l=(s&v)<>>g}n[h]=l=r?(g=l>>>h-r&f,h-=r):(s=r-h,g=(l&f)<>>h),e[u]=a[g];else for(w=Math.ceil((n-i)/m),u=0;u=r?(g=l>>>h-r&f,h-=r):(s=r-h,g=(l&f)<>>h),e[u]=g=e?(h=g>>>u-e&m,u-=e):(v=e-u,h=(g&m)<>>u),l[f]=h=r?(l=s>>>g&f,h-=r,g+=r):(w=r-h,l=s>>>g&f,s=t[v++],h=32-w,l|=(s&(1<=r?(l=s>>>g&f,h-=r,g+=r):(w=r-h,l=s>>>g&f,s=t[v++],h=32-w,l|=(s&(1<=e?(h=l>>>g&m,u-=e,g+=e):(v=e-u,h=l>>>g&m,l=t[n++],u=32-v,h|=(l&(1<=r?(f=v>>>n-r&a,n-=r):(u=r-n,f=(v&a)<>>n),e[m]=f;return e},originalUnstuff2:function(t,e,r,o){var a=(1<=r?(v=u>>>f&a,n-=r,f+=r):(h=r-n,v=u>>>f&a,u=t[i++],n=32-h,v|=(u&(1<=359?359:a;a-=m;do e+=t[i++]<<8,r+=e+=t[i++];while(--m);e=(e&65535)+(e>>>16),r=(r&65535)+(r>>>16)}return o&1&&(r+=e+=t[i]<<8),e=(e&65535)+(e>>>16),r=(r&65535)+(r>>>16),(r<<16|e)>>>0},readHeaderInfo:function(t,e){var r=e.ptr,o=new Uint8Array(t,r,6),a={};if(a.fileIdentifierString=String.fromCharCode.apply(null,o),a.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+a.fileIdentifierString;r+=6;var i=new DataView(t,r,8),m=i.getInt32(0,!0);a.fileVersion=m,r+=4,m>=3&&(a.checksum=i.getUint32(4,!0),r+=4),i=new DataView(t,r,12),a.height=i.getUint32(0,!0),a.width=i.getUint32(4,!0),r+=8,m>=4?(a.numDims=i.getUint32(8,!0),r+=4):a.numDims=1,i=new DataView(t,r,40),a.numValidPixel=i.getUint32(0,!0),a.microBlockSize=i.getInt32(4,!0),a.blobSize=i.getInt32(8,!0),a.imageType=i.getInt32(12,!0),a.maxZError=i.getFloat64(16,!0),a.zMin=i.getFloat64(24,!0),a.zMax=i.getFloat64(32,!0),r+=40,e.headerInfo=a,e.ptr=r;var n,f;if(m>=3&&(f=m>=4?52:48,n=this.computeChecksumFletcher32(new Uint8Array(t,r-f,a.blobSize-14)),n!==a.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(t,e){var r=e.headerInfo,o=this.getDataTypeArray(r.imageType),a=r.numDims*this.getDataTypeSize(r.imageType),i=this.readSubArray(t,e.ptr,o,a),m=this.readSubArray(t,e.ptr+a,o,a);e.ptr+=2*a;var n,f=!0;for(n=0;n0){f=new Uint8Array(Math.ceil(a/8)),m=new DataView(t,r,n.numBytes);var u=m.getInt16(0,!0),h=2,g=0,l=0;do{if(u>0)for(;u--;)f[g++]=m.getUint8(h++);else for(l=m.getUint8(h++),u=-u;u--;)f[g++]=l;u=m.getInt16(h,!0),h+=2}while(h>3],s<<=w&7):s=f[w>>3],s&128&&(v[w]=1);e.pixels.resultMask=v,n.bitset=f,r+=n.numBytes}return e.ptr=r,e.mask=n,!0},readDataOneSweep:function(t,e,r,o){var a=e.ptr,i=e.headerInfo,m=i.numDims,n=i.width*i.height,f=i.imageType,v=i.numValidPixel*A.getDataTypeSize(f)*m,u,h=e.pixels.resultMask;if(r===Uint8Array)u=new Uint8Array(t,a,v);else{var g=new ArrayBuffer(v),l=new Uint8Array(g);l.set(new Uint8Array(t,a,v)),u=new r(g)}if(u.length===n*m)o?e.pixels.resultPixels=A.swapDimensionOrder(u,n,m,r,!0):e.pixels.resultPixels=u;else{e.pixels.resultPixels=new r(n*m);var s=0,w=0,k=0,D=0;if(m>1){if(o){for(w=0;w=n)return!1;var f=new Uint32Array(n-m);A.decodeBits(t,e,f);var v=[],u,h,g,l;for(u=m;u0&&(v[h].second=x<>>32-l,32-y>=l?(y+=l,y===32&&(y=0,L++,x=d[L])):(y+=l-32,L++,x=d[L],v[h].second|=x>>>32-y));var p=0,c=0,U=new X;for(u=0;u=r?c=r:c=p;var I=[],M,T,V,S,B,C;for(u=m;u0)if(M=[l,h],l<=c)for(T=v[h].second<=0;S--)B=T>>>S&1,B?(C.right||(C.right=new X),C=C.right):(C.left||(C.left=new X),C=C.left),S===0&&!C.val&&(C.val=M[1]);return{decodeLut:I,numBitsLUTQick:c,numBitsLUT:p,tree:U,stuffedData:d,srcPtr:L,bitPos:y}},readHuffman:function(t,e,r,o){var a=e.headerInfo,i=a.numDims,m=e.headerInfo.height,n=e.headerInfo.width,f=n*m,v=this.readHuffmanTree(t,e),u=v.decodeLut,h=v.tree,g=v.stuffedData,l=v.srcPtr,s=v.bitPos,w=v.numBitsLUTQick,k=v.numBitsLUT,D=e.headerInfo.imageType===0?128:0,d,y,x,L=e.pixels.resultMask,p,c,U,I,M,T,V,S=0;s>0&&(l++,s=0);var B=g[l],C=e.encodeMode===1,j=new r(f*i),O=j,b;if(i<2||C){for(b=0;b1&&(O=new r(j.buffer,f*b,f),S=0),e.headerInfo.numValidPixel===n*m)for(T=0,I=0;I>>32-w,c=p,32-s>>64-s-w,c=p),u[c])y=u[c][1],s+=u[c][0];else for(p=B<>>32-k,c=p,32-s>>64-s-k,c=p),d=h,V=0;V>>k-V-1&1,d=U?d.right:d.left,!(d.left||d.right)){y=d.val,s=s+V+1;break}s>=32&&(s-=32,l++,B=g[l]),x=y-D,C?(M>0?x+=S:I>0?x+=O[T-n]:x+=S,x&=255,O[T]=x,S=x):O[T]=x}else for(T=0,I=0;I>>32-w,c=p,32-s>>64-s-w,c=p),u[c])y=u[c][1],s+=u[c][0];else for(p=B<>>32-k,c=p,32-s>>64-s-k,c=p),d=h,V=0;V>>k-V-1&1,d=U?d.right:d.left,!(d.left||d.right)){y=d.val,s=s+V+1;break}s>=32&&(s-=32,l++,B=g[l]),x=y-D,C?(M>0&&L[T-1]?x+=S:I>0&&L[T-n]?x+=O[T-n]:x+=S,x&=255,O[T]=x,S=x):O[T]=x}}else for(T=0,I=0;I>>32-w,c=p,32-s>>64-s-w,c=p),u[c])y=u[c][1],s+=u[c][0];else for(p=B<>>32-k,c=p,32-s>>64-s-k,c=p),d=h,V=0;V>>k-V-1&1,d=U?d.right:d.left,!(d.left||d.right)){y=d.val,s=s+V+1;break}s>=32&&(s-=32,l++,B=g[l]),x=y-D,O[T]=x}e.ptr=e.ptr+(l+1)*4+(s>0?4:0),e.pixels.resultPixels=j,i>1&&!o&&(e.pixels.resultPixels=A.swapDimensionOrder(j,f,i,r))},decodeBits:function(t,e,r,o,a){{var i=e.headerInfo,m=i.fileVersion,n=0,f=t.byteLength-e.ptr>=5?5:t.byteLength-e.ptr,v=new DataView(t,e.ptr,f),u=v.getUint8(0);n++;var h=u>>6,g=h===0?4:3-h,l=(u&32)>0,s=u&31,w=0;if(g===1)w=v.getUint8(n),n++;else if(g===2)w=v.getUint16(n,!0),n+=2;else if(g===4)w=v.getUint32(n,!0),n+=4;else throw"Invalid valid pixel count type";var k=2*i.maxZError,D,d,y,x,L,p,c,U,I,M=i.numDims>1?i.maxValues[a]:i.zMax;if(l){for(e.counter.lut++,U=v.getUint8(n),n++,x=Math.ceil((U-1)*s/8),L=Math.ceil(x/4),d=new ArrayBuffer(L*4),y=new Uint8Array(d),e.ptr+=n,y.set(new Uint8Array(t,e.ptr,x)),c=new Uint32Array(d),e.ptr+=x,I=0;U-1>>>I;)I++;x=Math.ceil(w*I/8),L=Math.ceil(x/4),d=new ArrayBuffer(L*4),y=new Uint8Array(d),y.set(new Uint8Array(t,e.ptr,x)),D=new Uint32Array(d),e.ptr+=x,m>=3?p=F.unstuffLUT2(c,s,U-1,o,k,M):p=F.unstuffLUT(c,s,U-1,o,k,M),m>=3?F.unstuff2(D,r,I,w,p):F.unstuff(D,r,I,w,p)}else e.counter.bitstuffer++,I=s,e.ptr+=n,I>0&&(x=Math.ceil(w*I/8),L=Math.ceil(x/4),d=new ArrayBuffer(L*4),y=new Uint8Array(d),y.set(new Uint8Array(t,e.ptr,x)),D=new Uint32Array(d),e.ptr+=x,m>=3?o==null?F.originalUnstuff2(D,r,I,w):F.unstuff2(D,r,I,w,!1,o,k,M):o==null?F.originalUnstuff(D,r,I,w):F.unstuff(D,r,I,w,!1,o,k,M))}},readTiles:function(t,e,r,o){var a=e.headerInfo,i=a.width,m=a.height,n=i*m,f=a.microBlockSize,v=a.imageType,u=A.getDataTypeSize(v),h=Math.ceil(i/f),g=Math.ceil(m/f);e.pixels.numBlocksY=g,e.pixels.numBlocksX=h,e.pixels.ptr=0;var l=0,s=0,w=0,k=0,D=0,d=0,y=0,x=0,L=0,p=0,c=0,U=0,I=0,M=0,T=0,V=0,S,B,C,j,O,b,Q=new r(f*f),ne=m%f||f,ae=i%f||f,G,H,q=a.numDims,_,E=e.pixels.resultMask,z=e.pixels.resultPixels,fe=a.fileVersion,ee=fe>=5?14:15,Z,J=a.zMax,N;for(w=0;w1?(N=z,c=w*i*f+k*f,z=new r(e.pixels.resultPixels.buffer,n*_*u,n),J=a.maxValues[_]):N=null,y=t.byteLength-e.ptr,S=new DataView(t,e.ptr,Math.min(10,y)),B={},V=0,x=S.getUint8(0),V++,Z=a.fileVersion>=5?x&4:0,L=x>>6&255,p=x>>2&ee,p!==(k*f>>3&ee)||Z&&_===0)throw"integrity issue";if(b=x&3,b>3)throw e.ptr+=V,"Invalid block encoding ("+b+")";if(b===2){if(Z)if(E)for(l=0;l1&&!o&&(e.pixels.resultPixels=A.swapDimensionOrder(e.pixels.resultPixels,n,q,r))},formatFileInfo:function(t){return{fileIdentifierString:t.headerInfo.fileIdentifierString,fileVersion:t.headerInfo.fileVersion,imageType:t.headerInfo.imageType,height:t.headerInfo.height,width:t.headerInfo.width,numValidPixel:t.headerInfo.numValidPixel,microBlockSize:t.headerInfo.microBlockSize,blobSize:t.headerInfo.blobSize,maxZError:t.headerInfo.maxZError,pixelType:A.getPixelType(t.headerInfo.imageType),eofOffset:t.eofOffset,mask:t.mask?{numBytes:t.mask.numBytes}:null,pixels:{numBlocksX:t.pixels.numBlocksX,numBlocksY:t.pixels.numBlocksY,maxValue:t.headerInfo.zMax,minValue:t.headerInfo.zMin,noDataValue:t.noDataValue}}},constructConstantSurface:function(t,e){var r=t.headerInfo.zMax,o=t.headerInfo.zMin,a=t.headerInfo.maxValues,i=t.headerInfo.numDims,m=t.headerInfo.height*t.headerInfo.width,n=0,f=0,v=0,u=t.pixels.resultMask,h=t.pixels.resultPixels;if(u)if(i>1){if(e)for(n=0;n1&&o!==r)if(e)for(n=0;n=-128&&e<=127;break;case 1:r=e>=0&&e<=255;break;case 2:r=e>=-32768&&e<=32767;break;case 3:r=e>=0&&e<=65536;break;case 4:r=e>=-2147483648&&e<=2147483647;break;case 5:r=e>=0&&e<=4294967296;break;case 6:r=e>=-34027999387901484e22&&e<=34027999387901484e22;break;case 7:r=e>=-17976931348623157e292&&e<=17976931348623157e292;break;default:r=!1}return r},getDataTypeSize:function(t){var e=0;switch(t){case 0:case 1:e=1;break;case 2:case 3:e=2;break;case 4:case 5:case 6:e=4;break;case 7:e=8;break;default:e=t}return e},getDataTypeUsed:function(t,e){var r=t;switch(t){case 2:case 4:r=t-e;break;case 3:case 5:r=t-2*e;break;case 6:e===0?r=t:e===1?r=2:r=1;break;case 7:e===0?r=t:r=t-2*e+1;break;default:r=t;break}return r},getOnePixel:function(t,e,r,o){var a=0;switch(r){case 0:a=o.getInt8(e);break;case 1:a=o.getUint8(e);break;case 2:a=o.getInt16(e,!0);break;case 3:a=o.getUint16(e,!0);break;case 4:a=o.getInt32(e,!0);break;case 5:a=o.getUInt32(e,!0);break;case 6:a=o.getFloat32(e,!0);break;case 7:a=o.getFloat64(e,!0);break;default:throw"the decoder does not understand this pixel type"}return a},swapDimensionOrder:function(t,e,r,o,a){var i=0,m=0,n=0,f=0,v=t;if(r>1)if(v=new o(e*r),a)for(i=0;i5)throw"unsupported lerc version 2."+m;A.readMask(t,a),i.numValidPixel!==i.width*i.height&&!a.pixels.resultMask&&(a.pixels.resultMask=e.maskData);var f=i.width*i.height;a.pixels.resultPixels=new n(f*i.numDims),a.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var v=!e.returnPixelInterleavedDims;if(i.numValidPixel!==0)if(i.zMax===i.zMin)A.constructConstantSurface(a,v);else if(m>=4&&A.checkMinMaxRanges(t,a))A.constructConstantSurface(a,v);else{var u=new DataView(t,a.ptr,2),h=u.getUint8(0);if(a.ptr++,h)A.readDataOneSweep(t,a,n,v);else if(m>1&&i.imageType<=1&&Math.abs(i.maxZError-.5)<1e-5){var g=u.getUint8(1);if(a.ptr++,a.encodeMode=g,g>2||m<4&&g>1)throw"Invalid Huffman flag "+g;g?A.readHuffman(t,a,n,v):A.readTiles(t,a,n,v)}else A.readTiles(t,a,n,v)}a.eofOffset=a.ptr;var l;e.inputOffset?(l=a.headerInfo.blobSize+e.inputOffset-a.ptr,Math.abs(l)>=1&&(a.eofOffset=e.inputOffset+a.headerInfo.blobSize)):(l=a.headerInfo.blobSize-a.ptr,Math.abs(l)>=1&&(a.eofOffset=a.headerInfo.blobSize));var s={width:i.width,height:i.height,pixelData:a.pixels.resultPixels,minValue:i.zMin,maxValue:i.zMax,validPixelCount:i.numValidPixel,dimCount:i.numDims,dimStats:{minValues:i.minValues,maxValues:i.maxValues},maskData:a.pixels.resultMask};if(a.pixels.resultMask&&A.isValidPixelValue(i.imageType,r)){var w=a.pixels.resultMask;for(o=0;o1&&(f&&m.push(f),h.fileInfo.mask&&h.fileInfo.mask.numBytes>0&&u++),o++,v.pixels.push(h.pixelData),v.statistics.push({minValue:h.minValue,maxValue:h.maxValue,noDataValue:h.noDataValue,dimStats:h.dimStats})}var g,l,s;if(r>1&&u>1){for(s=v.width*v.height,v.bandMasks=m,f=new Uint8Array(s),f.set(m[0]),g=1;g>3],B<<=U&7),p=0;p>3]),B&128?(k&&(k[U]=1),s=M.encoding<2?T[V++]:S,l=l>s?s:l,w[U++]=s):(k&&(k[U]=0),w[U++]=i),B<<=1;U+=I}else if(M.encoding<2)for(y=0;ys?s:l,w[U++]=s;U+=I}else for(l=l>S?S:l,y=0;y0){var f=new Uint8Array(Math.ceil(i.width*i.height/8));n=new DataView(r,o,i.mask.numBytes);var v=n.getInt16(0,!0),u=2,h=0;do{if(v>0)for(;v--;)f[h++]=n.getUint8(u++);else{var g=n.getUint8(u++);for(v=-v;v--;)f[h++]=g}v=n.getInt16(u,!0),u+=2}while(u0?1:0),k=s+(i.height%s>0?1:0);i.pixels.blocks=new Array(w*k);for(var D=0,p=0;p3)throw"Invalid block encoding ("+d.encoding+")";if(d.encoding===2){o++;continue}if(c!==0&&c!==2){if(c>>=6,d.offsetType=c,c===2)d.offset=n.getInt8(1),x++;else if(c===1)d.offset=n.getInt16(1,!0),x+=2;else if(c===0)d.offset=n.getFloat32(1,!0),x+=4;else throw"Invalid block offset type";if(d.encoding===1)if(c=n.getUint8(x),x++,d.bitsPerPixel=c&63,c>>=6,d.numValidPixelsType=c,c===2)d.numValidPixels=n.getUint8(x),x++;else if(c===1)d.numValidPixels=n.getUint16(x,!0),x+=2;else if(c===0)d.numValidPixels=n.getUint32(x,!0),x+=4;else throw"Invalid valid pixel count type"}if(o+=x,d.encoding!==3){var U,I;if(d.encoding===0){var M=(i.pixels.numBytes-1)/4;if(M!==Math.floor(M))throw"uncompressed block has invalid length";U=new ArrayBuffer(M*4),I=new Uint8Array(U),I.set(new Uint8Array(r,o,M*4));var T=new Float32Array(U);d.rawData=T,o+=M*4}else if(d.encoding===1){var V=Math.ceil(d.numValidPixels*d.bitsPerPixel/8),S=Math.ceil(V/4);U=new ArrayBuffer(S*4),I=new Uint8Array(U),I.set(new Uint8Array(r,o,V)),d.stuffedData=new Uint32Array(U),o+=V}}}return i.eofOffset=o,i},e=function(r,o,a,i,m,n,f){var v=(1<=o)l=s>>>g-o&v,g-=o;else{var D=o-g;l=(s&v)<>>g}n[h]=l=r?(g=l>>>h-r&f,h-=r):(s=r-h,g=(l&f)<>>h),e[u]=a[g];else for(w=Math.ceil((n-i)/m),u=0;u=r?(g=l>>>h-r&f,h-=r):(s=r-h,g=(l&f)<>>h),e[u]=g=e?(h=g>>>u-e&m,u-=e):(v=e-u,h=(g&m)<>>u),l[f]=h=r?(l=s>>>g&f,h-=r,g+=r):(w=r-h,l=s>>>g&f,s=t[v++],h=32-w,l|=(s&(1<=r?(l=s>>>g&f,h-=r,g+=r):(w=r-h,l=s>>>g&f,s=t[v++],h=32-w,l|=(s&(1<=e?(h=l>>>g&m,u-=e,g+=e):(v=e-u,h=l>>>g&m,l=t[n++],u=32-v,h|=(l&(1<=r?(f=v>>>n-r&a,n-=r):(u=r-n,f=(v&a)<>>n),e[m]=f;return e},originalUnstuff2:function(t,e,r,o){var a=(1<=r?(v=u>>>f&a,n-=r,f+=r):(h=r-n,v=u>>>f&a,u=t[i++],n=32-h,v|=(u&(1<=359?359:a;a-=m;do e+=t[i++]<<8,r+=e+=t[i++];while(--m);e=(e&65535)+(e>>>16),r=(r&65535)+(r>>>16)}return o&1&&(r+=e+=t[i]<<8),e=(e&65535)+(e>>>16),r=(r&65535)+(r>>>16),(r<<16|e)>>>0},readHeaderInfo:function(t,e){var r=e.ptr,o=new Uint8Array(t,r,6),a={};if(a.fileIdentifierString=String.fromCharCode.apply(null,o),a.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+a.fileIdentifierString;r+=6;var i=new DataView(t,r,8),m=i.getInt32(0,!0);a.fileVersion=m,r+=4,m>=3&&(a.checksum=i.getUint32(4,!0),r+=4),i=new DataView(t,r,12),a.height=i.getUint32(0,!0),a.width=i.getUint32(4,!0),r+=8,m>=4?(a.numDims=i.getUint32(8,!0),r+=4):a.numDims=1,i=new DataView(t,r,40),a.numValidPixel=i.getUint32(0,!0),a.microBlockSize=i.getInt32(4,!0),a.blobSize=i.getInt32(8,!0),a.imageType=i.getInt32(12,!0),a.maxZError=i.getFloat64(16,!0),a.zMin=i.getFloat64(24,!0),a.zMax=i.getFloat64(32,!0),r+=40,e.headerInfo=a,e.ptr=r;var n,f;if(m>=3&&(f=m>=4?52:48,n=this.computeChecksumFletcher32(new Uint8Array(t,r-f,a.blobSize-14)),n!==a.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(t,e){var r=e.headerInfo,o=this.getDataTypeArray(r.imageType),a=r.numDims*this.getDataTypeSize(r.imageType),i=this.readSubArray(t,e.ptr,o,a),m=this.readSubArray(t,e.ptr+a,o,a);e.ptr+=2*a;var n,f=!0;for(n=0;n0){f=new Uint8Array(Math.ceil(a/8)),m=new DataView(t,r,n.numBytes);var u=m.getInt16(0,!0),h=2,g=0,l=0;do{if(u>0)for(;u--;)f[g++]=m.getUint8(h++);else for(l=m.getUint8(h++),u=-u;u--;)f[g++]=l;u=m.getInt16(h,!0),h+=2}while(h>3],s<<=w&7):s=f[w>>3],s&128&&(v[w]=1);e.pixels.resultMask=v,n.bitset=f,r+=n.numBytes}return e.ptr=r,e.mask=n,!0},readDataOneSweep:function(t,e,r,o){var a=e.ptr,i=e.headerInfo,m=i.numDims,n=i.width*i.height,f=i.imageType,v=i.numValidPixel*A.getDataTypeSize(f)*m,u,h=e.pixels.resultMask;if(r===Uint8Array)u=new Uint8Array(t,a,v);else{var g=new ArrayBuffer(v),l=new Uint8Array(g);l.set(new Uint8Array(t,a,v)),u=new r(g)}if(u.length===n*m)o?e.pixels.resultPixels=A.swapDimensionOrder(u,n,m,r,!0):e.pixels.resultPixels=u;else{e.pixels.resultPixels=new r(n*m);var s=0,w=0,k=0,D=0;if(m>1){if(o){for(w=0;w=n)return!1;var f=new Uint32Array(n-m);A.decodeBits(t,e,f);var v=[],u,h,g,l;for(u=m;u0&&(v[h].second=x<>>32-l,32-y>=l?(y+=l,y===32&&(y=0,L++,x=p[L])):(y+=l-32,L++,x=p[L],v[h].second|=x>>>32-y));var d=0,c=0,U=new X;for(u=0;u=r?c=r:c=d;var I=[],M,T,V,S,B,C;for(u=m;u0)if(M=[l,h],l<=c)for(T=v[h].second<=0;S--)B=T>>>S&1,B?(C.right||(C.right=new X),C=C.right):(C.left||(C.left=new X),C=C.left),S===0&&!C.val&&(C.val=M[1]);return{decodeLut:I,numBitsLUTQick:c,numBitsLUT:d,tree:U,stuffedData:p,srcPtr:L,bitPos:y}},readHuffman:function(t,e,r,o){var a=e.headerInfo,i=a.numDims,m=e.headerInfo.height,n=e.headerInfo.width,f=n*m,v=this.readHuffmanTree(t,e),u=v.decodeLut,h=v.tree,g=v.stuffedData,l=v.srcPtr,s=v.bitPos,w=v.numBitsLUTQick,k=v.numBitsLUT,D=e.headerInfo.imageType===0?128:0,p,y,x,L=e.pixels.resultMask,d,c,U,I,M,T,V,S=0;s>0&&(l++,s=0);var B=g[l],C=e.encodeMode===1,_=new r(f*i),O=_,b;if(i<2||C){for(b=0;b1&&(O=new r(_.buffer,f*b,f),S=0),e.headerInfo.numValidPixel===n*m)for(T=0,I=0;I>>32-w,c=d,32-s>>64-s-w,c=d),u[c])y=u[c][1],s+=u[c][0];else for(d=B<>>32-k,c=d,32-s>>64-s-k,c=d),p=h,V=0;V>>k-V-1&1,p=U?p.right:p.left,!(p.left||p.right)){y=p.val,s=s+V+1;break}s>=32&&(s-=32,l++,B=g[l]),x=y-D,C?(M>0?x+=S:I>0?x+=O[T-n]:x+=S,x&=255,O[T]=x,S=x):O[T]=x}else for(T=0,I=0;I>>32-w,c=d,32-s>>64-s-w,c=d),u[c])y=u[c][1],s+=u[c][0];else for(d=B<>>32-k,c=d,32-s>>64-s-k,c=d),p=h,V=0;V>>k-V-1&1,p=U?p.right:p.left,!(p.left||p.right)){y=p.val,s=s+V+1;break}s>=32&&(s-=32,l++,B=g[l]),x=y-D,C?(M>0&&L[T-1]?x+=S:I>0&&L[T-n]?x+=O[T-n]:x+=S,x&=255,O[T]=x,S=x):O[T]=x}}else for(T=0,I=0;I>>32-w,c=d,32-s>>64-s-w,c=d),u[c])y=u[c][1],s+=u[c][0];else for(d=B<>>32-k,c=d,32-s>>64-s-k,c=d),p=h,V=0;V>>k-V-1&1,p=U?p.right:p.left,!(p.left||p.right)){y=p.val,s=s+V+1;break}s>=32&&(s-=32,l++,B=g[l]),x=y-D,O[T]=x}e.ptr=e.ptr+(l+1)*4+(s>0?4:0),e.pixels.resultPixels=_,i>1&&!o&&(e.pixels.resultPixels=A.swapDimensionOrder(_,f,i,r))},decodeBits:function(t,e,r,o,a){{var i=e.headerInfo,m=i.fileVersion,n=0,f=t.byteLength-e.ptr>=5?5:t.byteLength-e.ptr,v=new DataView(t,e.ptr,f),u=v.getUint8(0);n++;var h=u>>6,g=h===0?4:3-h,l=(u&32)>0,s=u&31,w=0;if(g===1)w=v.getUint8(n),n++;else if(g===2)w=v.getUint16(n,!0),n+=2;else if(g===4)w=v.getUint32(n,!0),n+=4;else throw"Invalid valid pixel count type";var k=2*i.maxZError,D,p,y,x,L,d,c,U,I,M=i.numDims>1?i.maxValues[a]:i.zMax;if(l){for(e.counter.lut++,U=v.getUint8(n),n++,x=Math.ceil((U-1)*s/8),L=Math.ceil(x/4),p=new ArrayBuffer(L*4),y=new Uint8Array(p),e.ptr+=n,y.set(new Uint8Array(t,e.ptr,x)),c=new Uint32Array(p),e.ptr+=x,I=0;U-1>>>I;)I++;x=Math.ceil(w*I/8),L=Math.ceil(x/4),p=new ArrayBuffer(L*4),y=new Uint8Array(p),y.set(new Uint8Array(t,e.ptr,x)),D=new Uint32Array(p),e.ptr+=x,m>=3?d=F.unstuffLUT2(c,s,U-1,o,k,M):d=F.unstuffLUT(c,s,U-1,o,k,M),m>=3?F.unstuff2(D,r,I,w,d):F.unstuff(D,r,I,w,d)}else e.counter.bitstuffer++,I=s,e.ptr+=n,I>0&&(x=Math.ceil(w*I/8),L=Math.ceil(x/4),p=new ArrayBuffer(L*4),y=new Uint8Array(p),y.set(new Uint8Array(t,e.ptr,x)),D=new Uint32Array(p),e.ptr+=x,m>=3?o==null?F.originalUnstuff2(D,r,I,w):F.unstuff2(D,r,I,w,!1,o,k,M):o==null?F.originalUnstuff(D,r,I,w):F.unstuff(D,r,I,w,!1,o,k,M))}},readTiles:function(t,e,r,o){var a=e.headerInfo,i=a.width,m=a.height,n=i*m,f=a.microBlockSize,v=a.imageType,u=A.getDataTypeSize(v),h=Math.ceil(i/f),g=Math.ceil(m/f);e.pixels.numBlocksY=g,e.pixels.numBlocksX=h,e.pixels.ptr=0;var l=0,s=0,w=0,k=0,D=0,p=0,y=0,x=0,L=0,d=0,c=0,U=0,I=0,M=0,T=0,V=0,S,B,C,_,O,b,Q=new r(f*f),ne=m%f||f,ae=i%f||f,G,H,q=a.numDims,j,Z=e.pixels.resultMask,z=e.pixels.resultPixels,fe=a.fileVersion,ee=fe>=5?14:15,E,J=a.zMax,N;for(w=0;w1?(N=z,c=w*i*f+k*f,z=new r(e.pixels.resultPixels.buffer,n*j*u,n),J=a.maxValues[j]):N=null,y=t.byteLength-e.ptr,S=new DataView(t,e.ptr,Math.min(10,y)),B={},V=0,x=S.getUint8(0),V++,E=a.fileVersion>=5?x&4:0,L=x>>6&255,d=x>>2&ee,d!==(k*f>>3&ee)||E&&j===0)throw"integrity issue";if(b=x&3,b>3)throw e.ptr+=V,"Invalid block encoding ("+b+")";if(b===2){if(E)if(Z)for(l=0;l1&&!o&&(e.pixels.resultPixels=A.swapDimensionOrder(e.pixels.resultPixels,n,q,r))},formatFileInfo:function(t){return{fileIdentifierString:t.headerInfo.fileIdentifierString,fileVersion:t.headerInfo.fileVersion,imageType:t.headerInfo.imageType,height:t.headerInfo.height,width:t.headerInfo.width,numValidPixel:t.headerInfo.numValidPixel,microBlockSize:t.headerInfo.microBlockSize,blobSize:t.headerInfo.blobSize,maxZError:t.headerInfo.maxZError,pixelType:A.getPixelType(t.headerInfo.imageType),eofOffset:t.eofOffset,mask:t.mask?{numBytes:t.mask.numBytes}:null,pixels:{numBlocksX:t.pixels.numBlocksX,numBlocksY:t.pixels.numBlocksY,maxValue:t.headerInfo.zMax,minValue:t.headerInfo.zMin,noDataValue:t.noDataValue}}},constructConstantSurface:function(t,e){var r=t.headerInfo.zMax,o=t.headerInfo.zMin,a=t.headerInfo.maxValues,i=t.headerInfo.numDims,m=t.headerInfo.height*t.headerInfo.width,n=0,f=0,v=0,u=t.pixels.resultMask,h=t.pixels.resultPixels;if(u)if(i>1){if(e)for(n=0;n1&&o!==r)if(e)for(n=0;n=-128&&e<=127;break;case 1:r=e>=0&&e<=255;break;case 2:r=e>=-32768&&e<=32767;break;case 3:r=e>=0&&e<=65536;break;case 4:r=e>=-2147483648&&e<=2147483647;break;case 5:r=e>=0&&e<=4294967296;break;case 6:r=e>=-34027999387901484e22&&e<=34027999387901484e22;break;case 7:r=e>=-17976931348623157e292&&e<=17976931348623157e292;break;default:r=!1}return r},getDataTypeSize:function(t){var e=0;switch(t){case 0:case 1:e=1;break;case 2:case 3:e=2;break;case 4:case 5:case 6:e=4;break;case 7:e=8;break;default:e=t}return e},getDataTypeUsed:function(t,e){var r=t;switch(t){case 2:case 4:r=t-e;break;case 3:case 5:r=t-2*e;break;case 6:e===0?r=t:e===1?r=2:r=1;break;case 7:e===0?r=t:r=t-2*e+1;break;default:r=t;break}return r},getOnePixel:function(t,e,r,o){var a=0;switch(r){case 0:a=o.getInt8(e);break;case 1:a=o.getUint8(e);break;case 2:a=o.getInt16(e,!0);break;case 3:a=o.getUint16(e,!0);break;case 4:a=o.getInt32(e,!0);break;case 5:a=o.getUInt32(e,!0);break;case 6:a=o.getFloat32(e,!0);break;case 7:a=o.getFloat64(e,!0);break;default:throw"the decoder does not understand this pixel type"}return a},swapDimensionOrder:function(t,e,r,o,a){var i=0,m=0,n=0,f=0,v=t;if(r>1)if(v=new o(e*r),a)for(i=0;i5)throw"unsupported lerc version 2."+m;A.readMask(t,a),i.numValidPixel!==i.width*i.height&&!a.pixels.resultMask&&(a.pixels.resultMask=e.maskData);var f=i.width*i.height;a.pixels.resultPixels=new n(f*i.numDims),a.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var v=!e.returnPixelInterleavedDims;if(i.numValidPixel!==0)if(i.zMax===i.zMin)A.constructConstantSurface(a,v);else if(m>=4&&A.checkMinMaxRanges(t,a))A.constructConstantSurface(a,v);else{var u=new DataView(t,a.ptr,2),h=u.getUint8(0);if(a.ptr++,h)A.readDataOneSweep(t,a,n,v);else if(m>1&&i.imageType<=1&&Math.abs(i.maxZError-.5)<1e-5){var g=u.getUint8(1);if(a.ptr++,a.encodeMode=g,g>2||m<4&&g>1)throw"Invalid Huffman flag "+g;g?A.readHuffman(t,a,n,v):A.readTiles(t,a,n,v)}else A.readTiles(t,a,n,v)}a.eofOffset=a.ptr;var l;e.inputOffset?(l=a.headerInfo.blobSize+e.inputOffset-a.ptr,Math.abs(l)>=1&&(a.eofOffset=e.inputOffset+a.headerInfo.blobSize)):(l=a.headerInfo.blobSize-a.ptr,Math.abs(l)>=1&&(a.eofOffset=a.headerInfo.blobSize));var s={width:i.width,height:i.height,pixelData:a.pixels.resultPixels,minValue:i.zMin,maxValue:i.zMax,validPixelCount:i.numValidPixel,dimCount:i.numDims,dimStats:{minValues:i.minValues,maxValues:i.maxValues},maskData:a.pixels.resultMask};if(a.pixels.resultMask&&A.isValidPixelValue(i.imageType,r)){var w=a.pixels.resultMask;for(o=0;o1&&(f&&m.push(f),h.fileInfo.mask&&h.fileInfo.mask.numBytes>0&&u++),o++,v.pixels.push(h.pixelData),v.statistics.push({minValue:h.minValue,maxValue:h.maxValue,noDataValue:h.noDataValue,dimStats:h.dimStats})}var g,l,s;if(r>1&&u>1){for(s=v.width*v.height,v.bandMasks=m,f=new Uint8Array(s),f.set(m[0]),g=1;g=c.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),p;let u=c[n]&2**(8-i)-1;u<<=r-h;let s=u;if(n+1>>l;f<<=Math.max(0,r-w),s+=f}if(g>8&&n+2>>f;s+=t}return s}function D(c,o){for(let r=o.length-1;r>=0;r--)c.push(o[r]);return c}function A(c){const o=new Uint16Array(4093),r=new Uint8Array(4093);for(let e=0;e<=257;e++)o[e]=4096,r[e]=e;let i=258,n=B,h=0;function g(){i=258,n=B}function l(e){const a=x(e,h,n);return h+=n,a}function w(e,a){return r[i]=a,o[i]=e,i++,i-1}function u(e){const a=[];for(let y=e;y!==4096;y=o[y])a.push(r[y]);return a}const s=[];g();const f=new Uint8Array(c);let t=l(f),d;for(;t!==p;){if(t===E){for(g(),t=l(f);t===E;)t=l(f);if(t===p)break;if(t>E)throw new Error(`corrupted code at scanline ${t}`);{const e=u(t);D(s,e),d=t}}else if(t=2**n&&(n===k?d=void 0:n++),t=l(f)}return new Uint8Array(s)}class m extends b{decodeBlock(o){return A(o).buffer}}export{m as default}; diff --git a/assets/lzw.0d287a28.js b/assets/lzw.0d287a28.js deleted file mode 100644 index 3fb809b0e..000000000 --- a/assets/lzw.0d287a28.js +++ /dev/null @@ -1 +0,0 @@ -import{B}from"./index.ed0b1304.js";const p=9,E=256,k=257,b=12;function x(c,o,r){const i=o%8,n=Math.floor(o/8),h=8-i,g=o+r-(n+1)*8;let l=8*(n+2)-(o+r);const w=(n+2)*8-o;if(l=Math.max(0,l),n>=c.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),k;let u=c[n]&2**(8-i)-1;u<<=r-h;let s=u;if(n+1>>l;f<<=Math.max(0,r-w),s+=f}if(g>8&&n+2>>f}return s}function D(c,o){for(let r=o.length-1;r>=0;r--)c.push(o[r]);return c}function A(c){const o=new Uint16Array(4093),r=new Uint8Array(4093);for(let e=0;e<=257;e++)o[e]=4096,r[e]=e;let i=258,n=p,h=0;function g(){i=258,n=p}function l(e){const a=x(e,h,n);return h+=n,a}function w(e,a){return r[i]=a,o[i]=e,i++,i-1}function u(e){const a=[];for(let y=e;y!==4096;y=o[y])a.push(r[y]);return a}const s=[];g();const f=new Uint8Array(c);let t=l(f),d;for(;t!==k;){if(t===E){for(g(),t=l(f);t===E;)t=l(f);if(t===k)break;if(t>E)throw new Error(`corrupted code at scanline ${t}`);{const e=u(t);D(s,e),d=t}}else if(t=2**n&&(n===b?d=void 0:n++),t=l(f)}return new Uint8Array(s)}class m extends B{decodeBlock(o){return A(o).buffer}}export{m as default}; diff --git a/assets/packbits.14d99599.js b/assets/packbits-a16817ed.js similarity index 81% rename from assets/packbits.14d99599.js rename to assets/packbits-a16817ed.js index 6106c2aea..1a3134e19 100644 --- a/assets/packbits.14d99599.js +++ b/assets/packbits-a16817ed.js @@ -1 +1 @@ -import{B as c}from"./index.ed0b1304.js";class l extends c{decodeBlock(s){const n=new DataView(s),r=[];for(let e=0;e=0;)e[i]=0}const Ui=0,ii=1,Ci=2,$i=3,Fi=258,ht=29,Se=256,we=Se+1+ht,re=30,dt=19,ni=2*we+1,Q=15,Ye=16,Mi=7,ct=256,ai=16,li=17,ri=18,rt=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Ue=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),Hi=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),fi=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Bi=512,B=new Array((we+2)*2);oe(B);const se=new Array(re*2);oe(se);const ge=new Array(Bi);oe(ge);const pe=new Array(Fi-$i+1);oe(pe);const st=new Array(ht);oe(st);const Me=new Array(re);oe(Me);function Ge(e,i,t,a,n){this.static_tree=e,this.extra_bits=i,this.extra_base=t,this.elems=a,this.max_length=n,this.has_stree=e&&e.length}let oi,_i,hi;function je(e,i){this.dyn_tree=e,this.max_code=0,this.stat_desc=i}const di=e=>e<256?ge[e]:ge[256+(e>>>7)],xe=(e,i)=>{e.pending_buf[e.pending++]=i&255,e.pending_buf[e.pending++]=i>>>8&255},N=(e,i,t)=>{e.bi_valid>Ye-t?(e.bi_buf|=i<>Ye-e.bi_valid,e.bi_valid+=t-Ye):(e.bi_buf|=i<{N(e,t[i*2],t[i*2+1])},ci=(e,i)=>{let t=0;do t|=e&1,e>>>=1,t<<=1;while(--i>0);return t>>>1},Ki=e=>{e.bi_valid===16?(xe(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},Pi=(e,i)=>{const t=i.dyn_tree,a=i.max_code,n=i.stat_desc.static_tree,l=i.stat_desc.has_stree,o=i.stat_desc.extra_bits,f=i.stat_desc.extra_base,s=i.stat_desc.max_length;let r,_,E,c,h,u,m=0;for(c=0;c<=Q;c++)e.bl_count[c]=0;for(t[e.heap[e.heap_max]*2+1]=0,r=e.heap_max+1;rs&&(c=s,m++),t[_*2+1]=c,!(_>a)&&(e.bl_count[c]++,h=0,_>=f&&(h=o[_-f]),u=t[_*2],e.opt_len+=u*(c+h),l&&(e.static_len+=u*(n[_*2+1]+h)));if(m!==0){do{for(c=s-1;e.bl_count[c]===0;)c--;e.bl_count[c]--,e.bl_count[c+1]+=2,e.bl_count[s]--,m-=2}while(m>0);for(c=s;c!==0;c--)for(_=e.bl_count[c];_!==0;)E=e.heap[--r],!(E>a)&&(t[E*2+1]!==c&&(e.opt_len+=(c-t[E*2+1])*t[E*2],t[E*2+1]=c),_--)}},si=(e,i,t)=>{const a=new Array(Q+1);let n=0,l,o;for(l=1;l<=Q;l++)a[l]=n=n+t[l-1]<<1;for(o=0;o<=i;o++){let f=e[o*2+1];f!==0&&(e[o*2]=ci(a[f]++,f))}},Xi=()=>{let e,i,t,a,n;const l=new Array(Q+1);for(t=0,a=0;a>=7;a{let i;for(i=0;i{e.bi_valid>8?xe(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},Yi=(e,i,t,a)=>{bi(e),a&&(xe(e,t),xe(e,~t)),e.pending_buf.set(e.window.subarray(i,i+t),e.pending),e.pending+=t},pt=(e,i,t,a)=>{const n=i*2,l=t*2;return e[n]{const a=e.heap[t];let n=t<<1;for(;n<=e.heap_len&&(n{let a,n,l=0,o,f;if(e.last_lit!==0)do a=e.pending_buf[e.d_buf+l*2]<<8|e.pending_buf[e.d_buf+l*2+1],n=e.pending_buf[e.l_buf+l],l++,a===0?F(e,n,i):(o=pe[n],F(e,o+Se+1,i),f=rt[o],f!==0&&(n-=st[o],N(e,n,f)),a--,o=di(a),F(e,o,t),f=Ue[o],f!==0&&(a-=Me[o],N(e,a,f)));while(l{const t=i.dyn_tree,a=i.stat_desc.static_tree,n=i.stat_desc.has_stree,l=i.stat_desc.elems;let o,f,s=-1,r;for(e.heap_len=0,e.heap_max=ni,o=0;o>1;o>=1;o--)We(e,t,o);r=l;do o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],We(e,t,1),f=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=f,t[r*2]=t[o*2]+t[f*2],e.depth[r]=(e.depth[o]>=e.depth[f]?e.depth[o]:e.depth[f])+1,t[o*2+1]=t[f*2+1]=r,e.heap[1]=r++,We(e,t,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],Pi(e,i),si(t,s,e.bl_count)},kt=(e,i,t)=>{let a,n=-1,l,o=i[0*2+1],f=0,s=7,r=4;for(o===0&&(s=138,r=3),i[(t+1)*2+1]=65535,a=0;a<=t;a++)l=o,o=i[(a+1)*2+1],!(++f{let a,n=-1,l,o=i[0*2+1],f=0,s=7,r=4;for(o===0&&(s=138,r=3),a=0;a<=t;a++)if(l=o,o=i[(a+1)*2+1],!(++f{let i;for(kt(e,e.dyn_ltree,e.l_desc.max_code),kt(e,e.dyn_dtree,e.d_desc.max_code),ft(e,e.bl_desc),i=dt-1;i>=3&&e.bl_tree[fi[i]*2+1]===0;i--);return e.opt_len+=3*(i+1)+5+5+4,i},ji=(e,i,t,a)=>{let n;for(N(e,i-257,5),N(e,t-1,5),N(e,a-4,4),n=0;n{let i=4093624447,t;for(t=0;t<=31;t++,i>>>=1)if(i&1&&e.dyn_ltree[t*2]!==0)return 0;if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0)return 1;for(t=32;t{Et||(Xi(),Et=!0),e.l_desc=new je(e.dyn_ltree,oi),e.d_desc=new je(e.dyn_dtree,_i),e.bl_desc=new je(e.bl_tree,hi),e.bi_buf=0,e.bi_valid=0,ui(e)},wi=(e,i,t,a)=>{N(e,(Ui<<1)+(a?1:0),3),Yi(e,i,t,!0)},Ji=e=>{N(e,ii<<1,3),F(e,ct,B),Ki(e)},Qi=(e,i,t,a)=>{let n,l,o=0;e.level>0?(e.strm.data_type===2&&(e.strm.data_type=Wi(e)),ft(e,e.l_desc),ft(e,e.d_desc),o=Gi(e),n=e.opt_len+3+7>>>3,l=e.static_len+3+7>>>3,l<=n&&(n=l)):n=l=t+5,t+4<=n&&i!==-1?wi(e,i,t,a):e.strategy===4||l===n?(N(e,(ii<<1)+(a?1:0),3),xt(e,B,se)):(N(e,(Ci<<1)+(a?1:0),3),ji(e,e.l_desc.max_code+1,e.d_desc.max_code+1,o+1),xt(e,e.dyn_ltree,e.dyn_dtree)),ui(e),a&&bi(e)},qi=(e,i,t)=>(e.pending_buf[e.d_buf+e.last_lit*2]=i>>>8&255,e.pending_buf[e.d_buf+e.last_lit*2+1]=i&255,e.pending_buf[e.l_buf+e.last_lit]=t&255,e.last_lit++,i===0?e.dyn_ltree[t*2]++:(e.matches++,i--,e.dyn_ltree[(pe[t]+Se+1)*2]++,e.dyn_dtree[di(i)*2]++),e.last_lit===e.lit_bufsize-1);var en=Vi,tn=wi,nn=Qi,an=qi,ln=Ji,rn={_tr_init:en,_tr_stored_block:tn,_tr_flush_block:nn,_tr_tally:an,_tr_align:ln};const fn=(e,i,t,a)=>{let n=e&65535|0,l=e>>>16&65535|0,o=0;for(;t!==0;){o=t>2e3?2e3:t,t-=o;do n=n+i[a++]|0,l=l+n|0;while(--o);n%=65521,l%=65521}return n|l<<16|0};var ke=fn;const on=()=>{let e,i=[];for(var t=0;t<256;t++){e=t;for(var a=0;a<8;a++)e=e&1?3988292384^e>>>1:e>>>1;i[t]=e}return i},_n=new Uint32Array(on()),hn=(e,i,t,a)=>{const n=_n,l=a+t;e^=-1;for(let o=a;o>>8^n[(e^i[o])&255];return e^-1};var I=hn,fe={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Ae={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:dn,_tr_stored_block:cn,_tr_flush_block:sn,_tr_tally:j,_tr_align:un}=rn,{Z_NO_FLUSH:ne,Z_PARTIAL_FLUSH:bn,Z_FULL_FLUSH:wn,Z_FINISH:W,Z_BLOCK:yt,Z_OK:M,Z_STREAM_END:St,Z_STREAM_ERROR:L,Z_DATA_ERROR:gn,Z_BUF_ERROR:Ve,Z_DEFAULT_COMPRESSION:pn,Z_FILTERED:xn,Z_HUFFMAN_ONLY:Ze,Z_RLE:kn,Z_FIXED:vn,Z_DEFAULT_STRATEGY:En,Z_UNKNOWN:yn,Z_DEFLATED:Ke}=Ae,Sn=9,An=15,Tn=8,Rn=29,zn=256,ot=zn+1+Rn,mn=30,Dn=19,Zn=2*ot+1,In=15,k=3,Y=258,C=Y+k+1,On=32,Pe=42,_t=69,Ce=73,$e=91,Fe=103,q=113,de=666,D=1,Te=2,ee=3,_e=4,Nn=3,G=(e,i)=>(e.msg=fe[i],i),At=e=>(e<<1)-(e>4?9:0),X=e=>{let i=e.length;for(;--i>=0;)e[i]=0};let Ln=(e,i,t)=>(i<{const i=e.state;let t=i.pending;t>e.avail_out&&(t=e.avail_out),t!==0&&(e.output.set(i.pending_buf.subarray(i.pending_out,i.pending_out+t),e.next_out),e.next_out+=t,i.pending_out+=t,e.total_out+=t,e.avail_out-=t,i.pending-=t,i.pending===0&&(i.pending_out=0))},O=(e,i)=>{sn(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,i),e.block_start=e.strstart,P(e.strm)},y=(e,i)=>{e.pending_buf[e.pending++]=i},he=(e,i)=>{e.pending_buf[e.pending++]=i>>>8&255,e.pending_buf[e.pending++]=i&255},Un=(e,i,t,a)=>{let n=e.avail_in;return n>a&&(n=a),n===0?0:(e.avail_in-=n,i.set(e.input.subarray(e.next_in,e.next_in+n),t),e.state.wrap===1?e.adler=ke(e.adler,i,n,t):e.state.wrap===2&&(e.adler=I(e.adler,i,n,t)),e.next_in+=n,e.total_in+=n,n)},gi=(e,i)=>{let t=e.max_chain_length,a=e.strstart,n,l,o=e.prev_length,f=e.nice_match;const s=e.strstart>e.w_size-C?e.strstart-(e.w_size-C):0,r=e.window,_=e.w_mask,E=e.prev,c=e.strstart+Y;let h=r[a+o-1],u=r[a+o];e.prev_length>=e.good_match&&(t>>=2),f>e.lookahead&&(f=e.lookahead);do if(n=i,!(r[n+o]!==u||r[n+o-1]!==h||r[n]!==r[a]||r[++n]!==r[a+1])){a+=2,n++;do;while(r[++a]===r[++n]&&r[++a]===r[++n]&&r[++a]===r[++n]&&r[++a]===r[++n]&&r[++a]===r[++n]&&r[++a]===r[++n]&&r[++a]===r[++n]&&r[++a]===r[++n]&&ao){if(e.match_start=i,o=l,l>=f)break;h=r[a+o-1],u=r[a+o]}}while((i=E[i&_])>s&&--t!==0);return o<=e.lookahead?o:e.lookahead},te=e=>{const i=e.w_size;let t,a,n,l,o;do{if(l=e.window_size-e.lookahead-e.strstart,e.strstart>=i+(i-C)){e.window.set(e.window.subarray(i,i+i),0),e.match_start-=i,e.strstart-=i,e.block_start-=i,a=e.hash_size,t=a;do n=e.head[--t],e.head[t]=n>=i?n-i:0;while(--a);a=i,t=a;do n=e.prev[--t],e.prev[t]=n>=i?n-i:0;while(--a);l+=i}if(e.strm.avail_in===0)break;if(a=Un(e.strm,e.window,e.strstart+e.lookahead,l),e.lookahead+=a,e.lookahead+e.insert>=k)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=V(e,e.ins_h,e.window[o+1]);e.insert&&(e.ins_h=V(e,e.ins_h,e.window[o+k-1]),e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert{let t=65535;for(t>e.pending_buf_size-5&&(t=e.pending_buf_size-5);;){if(e.lookahead<=1){if(te(e),e.lookahead===0&&i===ne)return D;if(e.lookahead===0)break}e.strstart+=e.lookahead,e.lookahead=0;const a=e.block_start+t;if((e.strstart===0||e.strstart>=a)&&(e.lookahead=e.strstart-a,e.strstart=a,O(e,!1),e.strm.avail_out===0)||e.strstart-e.block_start>=e.w_size-C&&(O(e,!1),e.strm.avail_out===0))return D}return e.insert=0,i===W?(O(e,!0),e.strm.avail_out===0?ee:_e):(e.strstart>e.block_start&&(O(e,!1),e.strm.avail_out===0),D)},Je=(e,i)=>{let t,a;for(;;){if(e.lookahead=k&&(e.ins_h=V(e,e.ins_h,e.window[e.strstart+k-1]),t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),t!==0&&e.strstart-t<=e.w_size-C&&(e.match_length=gi(e,t)),e.match_length>=k)if(a=j(e,e.strstart-e.match_start,e.match_length-k),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=k){e.match_length--;do e.strstart++,e.ins_h=V(e,e.ins_h,e.window[e.strstart+k-1]),t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=V(e,e.ins_h,e.window[e.strstart+1]);else a=j(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(a&&(O(e,!1),e.strm.avail_out===0))return D}return e.insert=e.strstart{let t,a,n;for(;;){if(e.lookahead=k&&(e.ins_h=V(e,e.ins_h,e.window[e.strstart+k-1]),t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=k-1,t!==0&&e.prev_length4096)&&(e.match_length=k-1)),e.prev_length>=k&&e.match_length<=e.prev_length){n=e.strstart+e.lookahead-k,a=j(e,e.strstart-1-e.prev_match,e.prev_length-k),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=n&&(e.ins_h=V(e,e.ins_h,e.window[e.strstart+k-1]),t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=k-1,e.strstart++,a&&(O(e,!1),e.strm.avail_out===0))return D}else if(e.match_available){if(a=j(e,0,e.window[e.strstart-1]),a&&O(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return D}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(a=j(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart{let t,a,n,l;const o=e.window;for(;;){if(e.lookahead<=Y){if(te(e),e.lookahead<=Y&&i===ne)return D;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=k&&e.strstart>0&&(n=e.strstart-1,a=o[n],a===o[++n]&&a===o[++n]&&a===o[++n])){l=e.strstart+Y;do;while(a===o[++n]&&a===o[++n]&&a===o[++n]&&a===o[++n]&&a===o[++n]&&a===o[++n]&&a===o[++n]&&a===o[++n]&&ne.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=k?(t=j(e,1,e.match_length-k),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(t=j(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),t&&(O(e,!1),e.strm.avail_out===0))return D}return e.insert=0,i===W?(O(e,!0),e.strm.avail_out===0?ee:_e):e.last_lit&&(O(e,!1),e.strm.avail_out===0)?D:Te},Fn=(e,i)=>{let t;for(;;){if(e.lookahead===0&&(te(e),e.lookahead===0)){if(i===ne)return D;break}if(e.match_length=0,t=j(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,t&&(O(e,!1),e.strm.avail_out===0))return D}return e.insert=0,i===W?(O(e,!0),e.strm.avail_out===0?ee:_e):e.last_lit&&(O(e,!1),e.strm.avail_out===0)?D:Te};function $(e,i,t,a,n){this.good_length=e,this.max_lazy=i,this.nice_length=t,this.max_chain=a,this.func=n}const ce=[new $(0,0,0,0,Cn),new $(4,4,8,4,Je),new $(4,5,16,8,Je),new $(4,6,32,32,Je),new $(4,4,16,16,ae),new $(8,16,32,32,ae),new $(8,16,128,128,ae),new $(8,32,128,256,ae),new $(32,128,258,1024,ae),new $(32,258,258,4096,ae)],Mn=e=>{e.window_size=2*e.w_size,X(e.head),e.max_lazy_match=ce[e.level].max_lazy,e.good_match=ce[e.level].good_length,e.nice_match=ce[e.level].nice_length,e.max_chain_length=ce[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=k-1,e.match_available=0,e.ins_h=0};function Hn(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Ke,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(Zn*2),this.dyn_dtree=new Uint16Array((2*mn+1)*2),this.bl_tree=new Uint16Array((2*Dn+1)*2),X(this.dyn_ltree),X(this.dyn_dtree),X(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(In+1),this.heap=new Uint16Array(2*ot+1),X(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*ot+1),X(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const pi=e=>{if(!e||!e.state)return G(e,L);e.total_in=e.total_out=0,e.data_type=yn;const i=e.state;return i.pending=0,i.pending_out=0,i.wrap<0&&(i.wrap=-i.wrap),i.status=i.wrap?Pe:q,e.adler=i.wrap===2?0:1,i.last_flush=ne,dn(i),M},xi=e=>{const i=pi(e);return i===M&&Mn(e.state),i},Bn=(e,i)=>!e||!e.state||e.state.wrap!==2?L:(e.state.gzhead=i,M),ki=(e,i,t,a,n,l)=>{if(!e)return L;let o=1;if(i===pn&&(i=6),a<0?(o=0,a=-a):a>15&&(o=2,a-=16),n<1||n>Sn||t!==Ke||a<8||a>15||i<0||i>9||l<0||l>vn)return G(e,L);a===8&&(a=9);const f=new Hn;return e.state=f,f.strm=e,f.wrap=o,f.gzhead=null,f.w_bits=a,f.w_size=1<ki(e,i,Ke,An,Tn,En),Pn=(e,i)=>{let t,a;if(!e||!e.state||i>yt||i<0)return e?G(e,L):L;const n=e.state;if(!e.output||!e.input&&e.avail_in!==0||n.status===de&&i!==W)return G(e,e.avail_out===0?Ve:L);n.strm=e;const l=n.last_flush;if(n.last_flush=i,n.status===Pe)if(n.wrap===2)e.adler=0,y(n,31),y(n,139),y(n,8),n.gzhead?(y(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),y(n,n.gzhead.time&255),y(n,n.gzhead.time>>8&255),y(n,n.gzhead.time>>16&255),y(n,n.gzhead.time>>24&255),y(n,n.level===9?2:n.strategy>=Ze||n.level<2?4:0),y(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(y(n,n.gzhead.extra.length&255),y(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=I(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=_t):(y(n,0),y(n,0),y(n,0),y(n,0),y(n,0),y(n,n.level===9?2:n.strategy>=Ze||n.level<2?4:0),y(n,Nn),n.status=q);else{let o=Ke+(n.w_bits-8<<4)<<8,f=-1;n.strategy>=Ze||n.level<2?f=0:n.level<6?f=1:n.level===6?f=2:f=3,o|=f<<6,n.strstart!==0&&(o|=On),o+=31-o%31,n.status=q,he(n,o),n.strstart!==0&&(he(n,e.adler>>>16),he(n,e.adler&65535)),e.adler=1}if(n.status===_t)if(n.gzhead.extra){for(t=n.pending;n.gzindex<(n.gzhead.extra.length&65535)&&!(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>t&&(e.adler=I(e.adler,n.pending_buf,n.pending-t,t)),P(e),t=n.pending,n.pending===n.pending_buf_size));)y(n,n.gzhead.extra[n.gzindex]&255),n.gzindex++;n.gzhead.hcrc&&n.pending>t&&(e.adler=I(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=Ce)}else n.status=Ce;if(n.status===Ce)if(n.gzhead.name){t=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>t&&(e.adler=I(e.adler,n.pending_buf,n.pending-t,t)),P(e),t=n.pending,n.pending===n.pending_buf_size)){a=1;break}n.gzindext&&(e.adler=I(e.adler,n.pending_buf,n.pending-t,t)),a===0&&(n.gzindex=0,n.status=$e)}else n.status=$e;if(n.status===$e)if(n.gzhead.comment){t=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>t&&(e.adler=I(e.adler,n.pending_buf,n.pending-t,t)),P(e),t=n.pending,n.pending===n.pending_buf_size)){a=1;break}n.gzindext&&(e.adler=I(e.adler,n.pending_buf,n.pending-t,t)),a===0&&(n.status=Fe)}else n.status=Fe;if(n.status===Fe&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&P(e),n.pending+2<=n.pending_buf_size&&(y(n,e.adler&255),y(n,e.adler>>8&255),e.adler=0,n.status=q)):n.status=q),n.pending!==0){if(P(e),e.avail_out===0)return n.last_flush=-1,M}else if(e.avail_in===0&&At(i)<=At(l)&&i!==W)return G(e,Ve);if(n.status===de&&e.avail_in!==0)return G(e,Ve);if(e.avail_in!==0||n.lookahead!==0||i!==ne&&n.status!==de){let o=n.strategy===Ze?Fn(n,i):n.strategy===kn?$n(n,i):ce[n.level].func(n,i);if((o===ee||o===_e)&&(n.status=de),o===D||o===ee)return e.avail_out===0&&(n.last_flush=-1),M;if(o===Te&&(i===bn?un(n):i!==yt&&(cn(n,0,0,!1),i===wn&&(X(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),P(e),e.avail_out===0))return n.last_flush=-1,M}return i!==W?M:n.wrap<=0?St:(n.wrap===2?(y(n,e.adler&255),y(n,e.adler>>8&255),y(n,e.adler>>16&255),y(n,e.adler>>24&255),y(n,e.total_in&255),y(n,e.total_in>>8&255),y(n,e.total_in>>16&255),y(n,e.total_in>>24&255)):(he(n,e.adler>>>16),he(n,e.adler&65535)),P(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?M:St)},Xn=e=>{if(!e||!e.state)return L;const i=e.state.status;return i!==Pe&&i!==_t&&i!==Ce&&i!==$e&&i!==Fe&&i!==q&&i!==de?G(e,L):(e.state=null,i===q?G(e,gn):M)},Yn=(e,i)=>{let t=i.length;if(!e||!e.state)return L;const a=e.state,n=a.wrap;if(n===2||n===1&&a.status!==Pe||a.lookahead)return L;if(n===1&&(e.adler=ke(e.adler,i,t,0)),a.wrap=0,t>=a.w_size){n===0&&(X(a.head),a.strstart=0,a.block_start=0,a.insert=0);let s=new Uint8Array(a.w_size);s.set(i.subarray(t-a.w_size,t),0),i=s,t=a.w_size}const l=e.avail_in,o=e.next_in,f=e.input;for(e.avail_in=t,e.next_in=0,e.input=i,te(a);a.lookahead>=k;){let s=a.strstart,r=a.lookahead-(k-1);do a.ins_h=V(a,a.ins_h,a.window[s+k-1]),a.prev[s&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=s,s++;while(--r);a.strstart=s,a.lookahead=k-1,te(a)}return a.strstart+=a.lookahead,a.block_start=a.strstart,a.insert=a.lookahead,a.lookahead=0,a.match_length=a.prev_length=k-1,a.match_available=0,e.next_in=o,e.input=f,e.avail_in=l,a.wrap=n,M};var Gn=Kn,jn=ki,Wn=xi,Vn=pi,Jn=Bn,Qn=Pn,qn=Xn,ea=Yn,ta="pako deflate (from Nodeca project)",ue={deflateInit:Gn,deflateInit2:jn,deflateReset:Wn,deflateResetKeep:Vn,deflateSetHeader:Jn,deflate:Qn,deflateEnd:qn,deflateSetDictionary:ea,deflateInfo:ta};const ia=(e,i)=>Object.prototype.hasOwnProperty.call(e,i);var na=function(e){const i=Array.prototype.slice.call(arguments,1);for(;i.length;){const t=i.shift();if(!!t){if(typeof t!="object")throw new TypeError(t+"must be non-object");for(const a in t)ia(t,a)&&(e[a]=t[a])}}return e},aa=e=>{let i=0;for(let a=0,n=e.length;a=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;ve[254]=ve[254]=1;var la=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let i,t,a,n,l,o=e.length,f=0;for(n=0;n>>6,i[l++]=128|t&63):t<65536?(i[l++]=224|t>>>12,i[l++]=128|t>>>6&63,i[l++]=128|t&63):(i[l++]=240|t>>>18,i[l++]=128|t>>>12&63,i[l++]=128|t>>>6&63,i[l++]=128|t&63);return i};const ra=(e,i)=>{if(i<65534&&e.subarray&&vi)return String.fromCharCode.apply(null,e.length===i?e:e.subarray(0,i));let t="";for(let a=0;a{const t=i||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,i));let a,n;const l=new Array(t*2);for(n=0,a=0;a4){l[n++]=65533,a+=f-1;continue}for(o&=f===2?31:f===3?15:7;f>1&&a1){l[n++]=65533;continue}o<65536?l[n++]=o:(o-=65536,l[n++]=55296|o>>10&1023,l[n++]=56320|o&1023)}return ra(l,n)},oa=(e,i)=>{i=i||e.length,i>e.length&&(i=e.length);let t=i-1;for(;t>=0&&(e[t]&192)===128;)t--;return t<0||t===0?i:t+ve[e[t]]>i?t:i},Ee={string2buf:la,buf2string:fa,utf8border:oa};function _a(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var Ei=_a;const yi=Object.prototype.toString,{Z_NO_FLUSH:ha,Z_SYNC_FLUSH:da,Z_FULL_FLUSH:ca,Z_FINISH:sa,Z_OK:He,Z_STREAM_END:ua,Z_DEFAULT_COMPRESSION:ba,Z_DEFAULT_STRATEGY:wa,Z_DEFLATED:ga}=Ae;function ut(e){this.options=Xe.assign({level:ba,method:ga,chunkSize:16384,windowBits:15,memLevel:8,strategy:wa},e||{});let i=this.options;i.raw&&i.windowBits>0?i.windowBits=-i.windowBits:i.gzip&&i.windowBits>0&&i.windowBits<16&&(i.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ei,this.strm.avail_out=0;let t=ue.deflateInit2(this.strm,i.level,i.method,i.windowBits,i.memLevel,i.strategy);if(t!==He)throw new Error(fe[t]);if(i.header&&ue.deflateSetHeader(this.strm,i.header),i.dictionary){let a;if(typeof i.dictionary=="string"?a=Ee.string2buf(i.dictionary):yi.call(i.dictionary)==="[object ArrayBuffer]"?a=new Uint8Array(i.dictionary):a=i.dictionary,t=ue.deflateSetDictionary(this.strm,a),t!==He)throw new Error(fe[t]);this._dict_set=!0}}ut.prototype.push=function(e,i){const t=this.strm,a=this.options.chunkSize;let n,l;if(this.ended)return!1;for(i===~~i?l=i:l=i===!0?sa:ha,typeof e=="string"?t.input=Ee.string2buf(e):yi.call(e)==="[object ArrayBuffer]"?t.input=new Uint8Array(e):t.input=e,t.next_in=0,t.avail_in=t.input.length;;){if(t.avail_out===0&&(t.output=new Uint8Array(a),t.next_out=0,t.avail_out=a),(l===da||l===ca)&&t.avail_out<=6){this.onData(t.output.subarray(0,t.next_out)),t.avail_out=0;continue}if(n=ue.deflate(t,l),n===ua)return t.next_out>0&&this.onData(t.output.subarray(0,t.next_out)),n=ue.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===He;if(t.avail_out===0){this.onData(t.output);continue}if(l>0&&t.next_out>0){this.onData(t.output.subarray(0,t.next_out)),t.avail_out=0;continue}if(t.avail_in===0)break}return!0};ut.prototype.onData=function(e){this.chunks.push(e)};ut.prototype.onEnd=function(e){e===He&&(this.result=Xe.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};const Ie=30,pa=12;var xa=function(i,t){let a,n,l,o,f,s,r,_,E,c,h,u,m,v,w,A,x,d,S,Z,b,R,T,g;const p=i.state;a=i.next_in,T=i.input,n=a+(i.avail_in-5),l=i.next_out,g=i.output,o=l-(t-i.avail_out),f=l+(i.avail_out-257),s=p.dmax,r=p.wsize,_=p.whave,E=p.wnext,c=p.window,h=p.hold,u=p.bits,m=p.lencode,v=p.distcode,w=(1<>>24,h>>>=d,u-=d,d=x>>>16&255,d===0)g[l++]=x&65535;else if(d&16){S=x&65535,d&=15,d&&(u>>=d,u-=d),u<15&&(h+=T[a++]<>>24,h>>>=d,u-=d,d=x>>>16&255,d&16){if(Z=x&65535,d&=15,us){i.msg="invalid distance too far back",p.mode=Ie;break e}if(h>>>=d,u-=d,d=l-o,Z>d){if(d=Z-d,d>_&&p.sane){i.msg="invalid distance too far back",p.mode=Ie;break e}if(b=0,R=c,E===0){if(b+=r-d,d2;)g[l++]=R[b++],g[l++]=R[b++],g[l++]=R[b++],S-=3;S&&(g[l++]=R[b++],S>1&&(g[l++]=R[b++]))}else{b=l-Z;do g[l++]=g[b++],g[l++]=g[b++],g[l++]=g[b++],S-=3;while(S>2);S&&(g[l++]=g[b++],S>1&&(g[l++]=g[b++]))}}else if((d&64)===0){x=v[(x&65535)+(h&(1<>3,a-=S,u-=S<<3,h&=(1<{const s=f.bits;let r=0,_=0,E=0,c=0,h=0,u=0,m=0,v=0,w=0,A=0,x,d,S,Z,b,R=null,T=0,g;const p=new Uint16Array(le+1),J=new Uint16Array(le+1);let ze=null,wt=0,gt,me,De;for(r=0;r<=le;r++)p[r]=0;for(_=0;_=1&&p[c]===0;c--);if(h>c&&(h=c),c===0)return n[l++]=1<<24|64<<16|0,n[l++]=1<<24|64<<16|0,f.bits=1,0;for(E=1;E0&&(e===zt||c!==1))return-1;for(J[1]=0,r=1;rTt||e===mt&&w>Rt)return 1;for(;;){gt=r-m,o[_]g?(me=ze[wt+o[_]],De=R[T+o[_]]):(me=32+64,De=0),x=1<>m)+d]=gt<<24|me<<16|De|0;while(d!==0);for(x=1<>=1;if(x!==0?(A&=x-1,A+=x):A=0,_++,--p[r]===0){if(r===c)break;r=i[t+o[_]]}if(r>h&&(A&Z)!==S){for(m===0&&(m=h),b+=E,u=r-m,v=1<Tt||e===mt&&w>Rt)return 1;S=A&Z,n[S]=h<<24|u<<16|b-l|0}}return A!==0&&(n[b+A]=r-m<<24|64<<16|0),f.bits=h,0};var be=Sa;const Aa=0,Si=1,Ai=2,{Z_FINISH:Dt,Z_BLOCK:Ta,Z_TREES:Oe,Z_OK:ie,Z_STREAM_END:Ra,Z_NEED_DICT:za,Z_STREAM_ERROR:U,Z_DATA_ERROR:Ti,Z_MEM_ERROR:Ri,Z_BUF_ERROR:ma,Z_DEFLATED:Zt}=Ae,zi=1,It=2,Ot=3,Nt=4,Lt=5,Ut=6,Ct=7,$t=8,Ft=9,Mt=10,Be=11,H=12,qe=13,Ht=14,et=15,Bt=16,Kt=17,Pt=18,Xt=19,Ne=20,Le=21,Yt=22,Gt=23,jt=24,Wt=25,Vt=26,tt=27,Jt=28,Qt=29,z=30,mi=31,Da=32,Za=852,Ia=592,Oa=15,Na=Oa,qt=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function La(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Di=e=>{if(!e||!e.state)return U;const i=e.state;return e.total_in=e.total_out=i.total=0,e.msg="",i.wrap&&(e.adler=i.wrap&1),i.mode=zi,i.last=0,i.havedict=0,i.dmax=32768,i.head=null,i.hold=0,i.bits=0,i.lencode=i.lendyn=new Int32Array(Za),i.distcode=i.distdyn=new Int32Array(Ia),i.sane=1,i.back=-1,ie},Zi=e=>{if(!e||!e.state)return U;const i=e.state;return i.wsize=0,i.whave=0,i.wnext=0,Di(e)},Ii=(e,i)=>{let t;if(!e||!e.state)return U;const a=e.state;return i<0?(t=0,i=-i):(t=(i>>4)+1,i<48&&(i&=15)),i&&(i<8||i>15)?U:(a.window!==null&&a.wbits!==i&&(a.window=null),a.wrap=t,a.wbits=i,Zi(e))},Oi=(e,i)=>{if(!e)return U;const t=new La;e.state=t,t.window=null;const a=Ii(e,i);return a!==ie&&(e.state=null),a},Ua=e=>Oi(e,Na);let ei=!0,it,nt;const Ca=e=>{if(ei){it=new Int32Array(512),nt=new Int32Array(32);let i=0;for(;i<144;)e.lens[i++]=8;for(;i<256;)e.lens[i++]=9;for(;i<280;)e.lens[i++]=7;for(;i<288;)e.lens[i++]=8;for(be(Si,e.lens,0,288,it,0,e.work,{bits:9}),i=0;i<32;)e.lens[i++]=5;be(Ai,e.lens,0,32,nt,0,e.work,{bits:5}),ei=!1}e.lencode=it,e.lenbits=9,e.distcode=nt,e.distbits=5},Ni=(e,i,t,a)=>{let n;const l=e.state;return l.window===null&&(l.wsize=1<=l.wsize?(l.window.set(i.subarray(t-l.wsize,t),0),l.wnext=0,l.whave=l.wsize):(n=l.wsize-l.wnext,n>a&&(n=a),l.window.set(i.subarray(t-a,t-a+n),l.wnext),a-=n,a?(l.window.set(i.subarray(t-a,t),0),l.wnext=a,l.whave=l.wsize):(l.wnext+=n,l.wnext===l.wsize&&(l.wnext=0),l.whave{let t,a,n,l,o,f,s,r,_,E,c,h,u,m,v=0,w,A,x,d,S,Z,b,R;const T=new Uint8Array(4);let g,p;const J=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0)return U;t=e.state,t.mode===H&&(t.mode=qe),o=e.next_out,n=e.output,s=e.avail_out,l=e.next_in,a=e.input,f=e.avail_in,r=t.hold,_=t.bits,E=f,c=s,R=ie;e:for(;;)switch(t.mode){case zi:if(t.wrap===0){t.mode=qe;break}for(;_<16;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}if(t.wrap&2&&r===35615){t.check=0,T[0]=r&255,T[1]=r>>>8&255,t.check=I(t.check,T,2,0),r=0,_=0,t.mode=It;break}if(t.flags=0,t.head&&(t.head.done=!1),!(t.wrap&1)||(((r&255)<<8)+(r>>8))%31){e.msg="incorrect header check",t.mode=z;break}if((r&15)!==Zt){e.msg="unknown compression method",t.mode=z;break}if(r>>>=4,_-=4,b=(r&15)+8,t.wbits===0)t.wbits=b;else if(b>t.wbits){e.msg="invalid window size",t.mode=z;break}t.dmax=1<>8&1),t.flags&512&&(T[0]=r&255,T[1]=r>>>8&255,t.check=I(t.check,T,2,0)),r=0,_=0,t.mode=Ot;case Ot:for(;_<32;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}t.head&&(t.head.time=r),t.flags&512&&(T[0]=r&255,T[1]=r>>>8&255,T[2]=r>>>16&255,T[3]=r>>>24&255,t.check=I(t.check,T,4,0)),r=0,_=0,t.mode=Nt;case Nt:for(;_<16;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}t.head&&(t.head.xflags=r&255,t.head.os=r>>8),t.flags&512&&(T[0]=r&255,T[1]=r>>>8&255,t.check=I(t.check,T,2,0)),r=0,_=0,t.mode=Lt;case Lt:if(t.flags&1024){for(;_<16;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}t.length=r,t.head&&(t.head.extra_len=r),t.flags&512&&(T[0]=r&255,T[1]=r>>>8&255,t.check=I(t.check,T,2,0)),r=0,_=0}else t.head&&(t.head.extra=null);t.mode=Ut;case Ut:if(t.flags&1024&&(h=t.length,h>f&&(h=f),h&&(t.head&&(b=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Uint8Array(t.head.extra_len)),t.head.extra.set(a.subarray(l,l+h),b)),t.flags&512&&(t.check=I(t.check,a,h,l)),f-=h,l+=h,t.length-=h),t.length))break e;t.length=0,t.mode=Ct;case Ct:if(t.flags&2048){if(f===0)break e;h=0;do b=a[l+h++],t.head&&b&&t.length<65536&&(t.head.name+=String.fromCharCode(b));while(b&&h>9&1,t.head.done=!0),e.adler=t.check=0,t.mode=H;break;case Mt:for(;_<32;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}e.adler=t.check=qt(r),r=0,_=0,t.mode=Be;case Be:if(t.havedict===0)return e.next_out=o,e.avail_out=s,e.next_in=l,e.avail_in=f,t.hold=r,t.bits=_,za;e.adler=t.check=1,t.mode=H;case H:if(i===Ta||i===Oe)break e;case qe:if(t.last){r>>>=_&7,_-=_&7,t.mode=tt;break}for(;_<3;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}switch(t.last=r&1,r>>>=1,_-=1,r&3){case 0:t.mode=Ht;break;case 1:if(Ca(t),t.mode=Ne,i===Oe){r>>>=2,_-=2;break e}break;case 2:t.mode=Kt;break;case 3:e.msg="invalid block type",t.mode=z}r>>>=2,_-=2;break;case Ht:for(r>>>=_&7,_-=_&7;_<32;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}if((r&65535)!==(r>>>16^65535)){e.msg="invalid stored block lengths",t.mode=z;break}if(t.length=r&65535,r=0,_=0,t.mode=et,i===Oe)break e;case et:t.mode=Bt;case Bt:if(h=t.length,h){if(h>f&&(h=f),h>s&&(h=s),h===0)break e;n.set(a.subarray(l,l+h),o),f-=h,l+=h,s-=h,o+=h,t.length-=h;break}t.mode=H;break;case Kt:for(;_<14;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}if(t.nlen=(r&31)+257,r>>>=5,_-=5,t.ndist=(r&31)+1,r>>>=5,_-=5,t.ncode=(r&15)+4,r>>>=4,_-=4,t.nlen>286||t.ndist>30){e.msg="too many length or distance symbols",t.mode=z;break}t.have=0,t.mode=Pt;case Pt:for(;t.have>>=3,_-=3}for(;t.have<19;)t.lens[J[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,g={bits:t.lenbits},R=be(Aa,t.lens,0,19,t.lencode,0,t.work,g),t.lenbits=g.bits,R){e.msg="invalid code lengths set",t.mode=z;break}t.have=0,t.mode=Xt;case Xt:for(;t.have>>24,A=v>>>16&255,x=v&65535,!(w<=_);){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}if(x<16)r>>>=w,_-=w,t.lens[t.have++]=x;else{if(x===16){for(p=w+2;_>>=w,_-=w,t.have===0){e.msg="invalid bit length repeat",t.mode=z;break}b=t.lens[t.have-1],h=3+(r&3),r>>>=2,_-=2}else if(x===17){for(p=w+3;_>>=w,_-=w,b=0,h=3+(r&7),r>>>=3,_-=3}else{for(p=w+7;_>>=w,_-=w,b=0,h=11+(r&127),r>>>=7,_-=7}if(t.have+h>t.nlen+t.ndist){e.msg="invalid bit length repeat",t.mode=z;break}for(;h--;)t.lens[t.have++]=b}}if(t.mode===z)break;if(t.lens[256]===0){e.msg="invalid code -- missing end-of-block",t.mode=z;break}if(t.lenbits=9,g={bits:t.lenbits},R=be(Si,t.lens,0,t.nlen,t.lencode,0,t.work,g),t.lenbits=g.bits,R){e.msg="invalid literal/lengths set",t.mode=z;break}if(t.distbits=6,t.distcode=t.distdyn,g={bits:t.distbits},R=be(Ai,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,g),t.distbits=g.bits,R){e.msg="invalid distances set",t.mode=z;break}if(t.mode=Ne,i===Oe)break e;case Ne:t.mode=Le;case Le:if(f>=6&&s>=258){e.next_out=o,e.avail_out=s,e.next_in=l,e.avail_in=f,t.hold=r,t.bits=_,xa(e,c),o=e.next_out,n=e.output,s=e.avail_out,l=e.next_in,a=e.input,f=e.avail_in,r=t.hold,_=t.bits,t.mode===H&&(t.back=-1);break}for(t.back=0;v=t.lencode[r&(1<>>24,A=v>>>16&255,x=v&65535,!(w<=_);){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}if(A&&(A&240)===0){for(d=w,S=A,Z=x;v=t.lencode[Z+((r&(1<>d)],w=v>>>24,A=v>>>16&255,x=v&65535,!(d+w<=_);){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}r>>>=d,_-=d,t.back+=d}if(r>>>=w,_-=w,t.back+=w,t.length=x,A===0){t.mode=Vt;break}if(A&32){t.back=-1,t.mode=H;break}if(A&64){e.msg="invalid literal/length code",t.mode=z;break}t.extra=A&15,t.mode=Yt;case Yt:if(t.extra){for(p=t.extra;_>>=t.extra,_-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=Gt;case Gt:for(;v=t.distcode[r&(1<>>24,A=v>>>16&255,x=v&65535,!(w<=_);){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}if((A&240)===0){for(d=w,S=A,Z=x;v=t.distcode[Z+((r&(1<>d)],w=v>>>24,A=v>>>16&255,x=v&65535,!(d+w<=_);){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}r>>>=d,_-=d,t.back+=d}if(r>>>=w,_-=w,t.back+=w,A&64){e.msg="invalid distance code",t.mode=z;break}t.offset=x,t.extra=A&15,t.mode=jt;case jt:if(t.extra){for(p=t.extra;_>>=t.extra,_-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){e.msg="invalid distance too far back",t.mode=z;break}t.mode=Wt;case Wt:if(s===0)break e;if(h=c-s,t.offset>h){if(h=t.offset-h,h>t.whave&&t.sane){e.msg="invalid distance too far back",t.mode=z;break}h>t.wnext?(h-=t.wnext,u=t.wsize-h):u=t.wnext-h,h>t.length&&(h=t.length),m=t.window}else m=n,u=o-t.offset,h=t.length;h>s&&(h=s),s-=h,t.length-=h;do n[o++]=m[u++];while(--h);t.length===0&&(t.mode=Le);break;case Vt:if(s===0)break e;n[o++]=t.length,s--,t.mode=Le;break;case tt:if(t.wrap){for(;_<32;){if(f===0)break e;f--,r|=a[l++]<<_,_+=8}if(c-=s,e.total_out+=c,t.total+=c,c&&(e.adler=t.check=t.flags?I(t.check,n,c,o-c):ke(t.check,n,c,o-c)),c=s,(t.flags?r:qt(r))!==t.check){e.msg="incorrect data check",t.mode=z;break}r=0,_=0}t.mode=Jt;case Jt:if(t.wrap&&t.flags){for(;_<32;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}if(r!==(t.total&4294967295)){e.msg="incorrect length check",t.mode=z;break}r=0,_=0}t.mode=Qt;case Qt:R=Ra;break e;case z:R=Ti;break e;case mi:return Ri;case Da:default:return U}return e.next_out=o,e.avail_out=s,e.next_in=l,e.avail_in=f,t.hold=r,t.bits=_,(t.wsize||c!==e.avail_out&&t.mode{if(!e||!e.state)return U;let i=e.state;return i.window&&(i.window=null),e.state=null,ie},Ma=(e,i)=>{if(!e||!e.state)return U;const t=e.state;return(t.wrap&2)===0?U:(t.head=i,i.done=!1,ie)},Ha=(e,i)=>{const t=i.length;let a,n,l;return!e||!e.state||(a=e.state,a.wrap!==0&&a.mode!==Be)?U:a.mode===Be&&(n=1,n=ke(n,i,t,0),n!==a.check)?Ti:(l=Ni(e,i,t,t),l?(a.mode=mi,Ri):(a.havedict=1,ie))};var Ba=Zi,Ka=Ii,Pa=Di,Xa=Ua,Ya=Oi,Ga=$a,ja=Fa,Wa=Ma,Va=Ha,Ja="pako inflate (from Nodeca project)",K={inflateReset:Ba,inflateReset2:Ka,inflateResetKeep:Pa,inflateInit:Xa,inflateInit2:Ya,inflate:Ga,inflateEnd:ja,inflateGetHeader:Wa,inflateSetDictionary:Va,inflateInfo:Ja};function Qa(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var qa=Qa;const Li=Object.prototype.toString,{Z_NO_FLUSH:el,Z_FINISH:tl,Z_OK:ye,Z_STREAM_END:at,Z_NEED_DICT:lt,Z_STREAM_ERROR:il,Z_DATA_ERROR:ti,Z_MEM_ERROR:nl}=Ae;function Re(e){this.options=Xe.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});const i=this.options;i.raw&&i.windowBits>=0&&i.windowBits<16&&(i.windowBits=-i.windowBits,i.windowBits===0&&(i.windowBits=-15)),i.windowBits>=0&&i.windowBits<16&&!(e&&e.windowBits)&&(i.windowBits+=32),i.windowBits>15&&i.windowBits<48&&(i.windowBits&15)===0&&(i.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ei,this.strm.avail_out=0;let t=K.inflateInit2(this.strm,i.windowBits);if(t!==ye)throw new Error(fe[t]);if(this.header=new qa,K.inflateGetHeader(this.strm,this.header),i.dictionary&&(typeof i.dictionary=="string"?i.dictionary=Ee.string2buf(i.dictionary):Li.call(i.dictionary)==="[object ArrayBuffer]"&&(i.dictionary=new Uint8Array(i.dictionary)),i.raw&&(t=K.inflateSetDictionary(this.strm,i.dictionary),t!==ye)))throw new Error(fe[t])}Re.prototype.push=function(e,i){const t=this.strm,a=this.options.chunkSize,n=this.options.dictionary;let l,o,f;if(this.ended)return!1;for(i===~~i?o=i:o=i===!0?tl:el,Li.call(e)==="[object ArrayBuffer]"?t.input=new Uint8Array(e):t.input=e,t.next_in=0,t.avail_in=t.input.length;;){for(t.avail_out===0&&(t.output=new Uint8Array(a),t.next_out=0,t.avail_out=a),l=K.inflate(t,o),l===lt&&n&&(l=K.inflateSetDictionary(t,n),l===ye?l=K.inflate(t,o):l===ti&&(l=lt));t.avail_in>0&&l===at&&t.state.wrap>0&&e[t.next_in]!==0;)K.inflateReset(t),l=K.inflate(t,o);switch(l){case il:case ti:case lt:case nl:return this.onEnd(l),this.ended=!0,!1}if(f=t.avail_out,t.next_out&&(t.avail_out===0||l===at))if(this.options.to==="string"){let s=Ee.utf8border(t.output,t.next_out),r=t.next_out-s,_=Ee.buf2string(t.output,s);t.next_out=r,t.avail_out=a-r,r&&t.output.set(t.output.subarray(s,s+r),0),this.onData(_)}else this.onData(t.output.length===t.next_out?t.output:t.output.subarray(0,t.next_out));if(!(l===ye&&f===0)){if(l===at)return l=K.inflateEnd(this.strm),this.onEnd(l),this.ended=!0,!0;if(t.avail_in===0)break}}return!0};Re.prototype.onData=function(e){this.chunks.push(e)};Re.prototype.onEnd=function(e){e===ye&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Xe.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function bt(e,i){const t=new Re(i);if(t.push(e),t.err)throw t.msg||fe[t.err];return t.result}function al(e,i){return i=i||{},i.raw=!0,bt(e,i)}var ll=Re,rl=bt,fl=al,ol=bt,_l=Ae,hl={Inflate:ll,inflate:rl,inflateRaw:fl,ungzip:ol,constants:_l};const{Inflate:cl,inflate:dl,inflateRaw:sl,ungzip:ul}=hl;var bl=dl;export{bl as i}; +/*! pako 2.0.4 https://github.com/nodeca/pako @license (MIT AND Zlib) */function oe(e){let i=e.length;for(;--i>=0;)e[i]=0}const Ui=0,ii=1,Ci=2,$i=3,Fi=258,ht=29,Se=256,we=Se+1+ht,re=30,dt=19,ni=2*we+1,Q=15,Ye=16,Mi=7,ct=256,ai=16,li=17,ri=18,rt=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Ue=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),Hi=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),fi=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Bi=512,B=new Array((we+2)*2);oe(B);const se=new Array(re*2);oe(se);const ge=new Array(Bi);oe(ge);const pe=new Array(Fi-$i+1);oe(pe);const st=new Array(ht);oe(st);const Me=new Array(re);oe(Me);function Ge(e,i,t,a,n){this.static_tree=e,this.extra_bits=i,this.extra_base=t,this.elems=a,this.max_length=n,this.has_stree=e&&e.length}let oi,_i,hi;function je(e,i){this.dyn_tree=e,this.max_code=0,this.stat_desc=i}const di=e=>e<256?ge[e]:ge[256+(e>>>7)],xe=(e,i)=>{e.pending_buf[e.pending++]=i&255,e.pending_buf[e.pending++]=i>>>8&255},N=(e,i,t)=>{e.bi_valid>Ye-t?(e.bi_buf|=i<>Ye-e.bi_valid,e.bi_valid+=t-Ye):(e.bi_buf|=i<{N(e,t[i*2],t[i*2+1])},ci=(e,i)=>{let t=0;do t|=e&1,e>>>=1,t<<=1;while(--i>0);return t>>>1},Ki=e=>{e.bi_valid===16?(xe(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},Pi=(e,i)=>{const t=i.dyn_tree,a=i.max_code,n=i.stat_desc.static_tree,l=i.stat_desc.has_stree,o=i.stat_desc.extra_bits,f=i.stat_desc.extra_base,s=i.stat_desc.max_length;let r,_,E,c,h,u,m=0;for(c=0;c<=Q;c++)e.bl_count[c]=0;for(t[e.heap[e.heap_max]*2+1]=0,r=e.heap_max+1;rs&&(c=s,m++),t[_*2+1]=c,!(_>a)&&(e.bl_count[c]++,h=0,_>=f&&(h=o[_-f]),u=t[_*2],e.opt_len+=u*(c+h),l&&(e.static_len+=u*(n[_*2+1]+h)));if(m!==0){do{for(c=s-1;e.bl_count[c]===0;)c--;e.bl_count[c]--,e.bl_count[c+1]+=2,e.bl_count[s]--,m-=2}while(m>0);for(c=s;c!==0;c--)for(_=e.bl_count[c];_!==0;)E=e.heap[--r],!(E>a)&&(t[E*2+1]!==c&&(e.opt_len+=(c-t[E*2+1])*t[E*2],t[E*2+1]=c),_--)}},si=(e,i,t)=>{const a=new Array(Q+1);let n=0,l,o;for(l=1;l<=Q;l++)a[l]=n=n+t[l-1]<<1;for(o=0;o<=i;o++){let f=e[o*2+1];f!==0&&(e[o*2]=ci(a[f]++,f))}},Xi=()=>{let e,i,t,a,n;const l=new Array(Q+1);for(t=0,a=0;a>=7;a{let i;for(i=0;i{e.bi_valid>8?xe(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},Yi=(e,i,t,a)=>{bi(e),a&&(xe(e,t),xe(e,~t)),e.pending_buf.set(e.window.subarray(i,i+t),e.pending),e.pending+=t},pt=(e,i,t,a)=>{const n=i*2,l=t*2;return e[n]{const a=e.heap[t];let n=t<<1;for(;n<=e.heap_len&&(n{let a,n,l=0,o,f;if(e.last_lit!==0)do a=e.pending_buf[e.d_buf+l*2]<<8|e.pending_buf[e.d_buf+l*2+1],n=e.pending_buf[e.l_buf+l],l++,a===0?F(e,n,i):(o=pe[n],F(e,o+Se+1,i),f=rt[o],f!==0&&(n-=st[o],N(e,n,f)),a--,o=di(a),F(e,o,t),f=Ue[o],f!==0&&(a-=Me[o],N(e,a,f)));while(l{const t=i.dyn_tree,a=i.stat_desc.static_tree,n=i.stat_desc.has_stree,l=i.stat_desc.elems;let o,f,s=-1,r;for(e.heap_len=0,e.heap_max=ni,o=0;o>1;o>=1;o--)We(e,t,o);r=l;do o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],We(e,t,1),f=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=f,t[r*2]=t[o*2]+t[f*2],e.depth[r]=(e.depth[o]>=e.depth[f]?e.depth[o]:e.depth[f])+1,t[o*2+1]=t[f*2+1]=r,e.heap[1]=r++,We(e,t,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],Pi(e,i),si(t,s,e.bl_count)},kt=(e,i,t)=>{let a,n=-1,l,o=i[0*2+1],f=0,s=7,r=4;for(o===0&&(s=138,r=3),i[(t+1)*2+1]=65535,a=0;a<=t;a++)l=o,o=i[(a+1)*2+1],!(++f{let a,n=-1,l,o=i[0*2+1],f=0,s=7,r=4;for(o===0&&(s=138,r=3),a=0;a<=t;a++)if(l=o,o=i[(a+1)*2+1],!(++f{let i;for(kt(e,e.dyn_ltree,e.l_desc.max_code),kt(e,e.dyn_dtree,e.d_desc.max_code),ft(e,e.bl_desc),i=dt-1;i>=3&&e.bl_tree[fi[i]*2+1]===0;i--);return e.opt_len+=3*(i+1)+5+5+4,i},ji=(e,i,t,a)=>{let n;for(N(e,i-257,5),N(e,t-1,5),N(e,a-4,4),n=0;n{let i=4093624447,t;for(t=0;t<=31;t++,i>>>=1)if(i&1&&e.dyn_ltree[t*2]!==0)return 0;if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0)return 1;for(t=32;t{Et||(Xi(),Et=!0),e.l_desc=new je(e.dyn_ltree,oi),e.d_desc=new je(e.dyn_dtree,_i),e.bl_desc=new je(e.bl_tree,hi),e.bi_buf=0,e.bi_valid=0,ui(e)},wi=(e,i,t,a)=>{N(e,(Ui<<1)+(a?1:0),3),Yi(e,i,t,!0)},Ji=e=>{N(e,ii<<1,3),F(e,ct,B),Ki(e)},Qi=(e,i,t,a)=>{let n,l,o=0;e.level>0?(e.strm.data_type===2&&(e.strm.data_type=Wi(e)),ft(e,e.l_desc),ft(e,e.d_desc),o=Gi(e),n=e.opt_len+3+7>>>3,l=e.static_len+3+7>>>3,l<=n&&(n=l)):n=l=t+5,t+4<=n&&i!==-1?wi(e,i,t,a):e.strategy===4||l===n?(N(e,(ii<<1)+(a?1:0),3),xt(e,B,se)):(N(e,(Ci<<1)+(a?1:0),3),ji(e,e.l_desc.max_code+1,e.d_desc.max_code+1,o+1),xt(e,e.dyn_ltree,e.dyn_dtree)),ui(e),a&&bi(e)},qi=(e,i,t)=>(e.pending_buf[e.d_buf+e.last_lit*2]=i>>>8&255,e.pending_buf[e.d_buf+e.last_lit*2+1]=i&255,e.pending_buf[e.l_buf+e.last_lit]=t&255,e.last_lit++,i===0?e.dyn_ltree[t*2]++:(e.matches++,i--,e.dyn_ltree[(pe[t]+Se+1)*2]++,e.dyn_dtree[di(i)*2]++),e.last_lit===e.lit_bufsize-1);var en=Vi,tn=wi,nn=Qi,an=qi,ln=Ji,rn={_tr_init:en,_tr_stored_block:tn,_tr_flush_block:nn,_tr_tally:an,_tr_align:ln};const fn=(e,i,t,a)=>{let n=e&65535|0,l=e>>>16&65535|0,o=0;for(;t!==0;){o=t>2e3?2e3:t,t-=o;do n=n+i[a++]|0,l=l+n|0;while(--o);n%=65521,l%=65521}return n|l<<16|0};var ke=fn;const on=()=>{let e,i=[];for(var t=0;t<256;t++){e=t;for(var a=0;a<8;a++)e=e&1?3988292384^e>>>1:e>>>1;i[t]=e}return i},_n=new Uint32Array(on()),hn=(e,i,t,a)=>{const n=_n,l=a+t;e^=-1;for(let o=a;o>>8^n[(e^i[o])&255];return e^-1};var I=hn,fe={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Ae={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:dn,_tr_stored_block:cn,_tr_flush_block:sn,_tr_tally:j,_tr_align:un}=rn,{Z_NO_FLUSH:ne,Z_PARTIAL_FLUSH:bn,Z_FULL_FLUSH:wn,Z_FINISH:W,Z_BLOCK:yt,Z_OK:M,Z_STREAM_END:St,Z_STREAM_ERROR:L,Z_DATA_ERROR:gn,Z_BUF_ERROR:Ve,Z_DEFAULT_COMPRESSION:pn,Z_FILTERED:xn,Z_HUFFMAN_ONLY:Ze,Z_RLE:kn,Z_FIXED:vn,Z_DEFAULT_STRATEGY:En,Z_UNKNOWN:yn,Z_DEFLATED:Ke}=Ae,Sn=9,An=15,Tn=8,Rn=29,zn=256,ot=zn+1+Rn,mn=30,Dn=19,Zn=2*ot+1,In=15,k=3,Y=258,C=Y+k+1,On=32,Pe=42,_t=69,Ce=73,$e=91,Fe=103,q=113,de=666,D=1,Te=2,ee=3,_e=4,Nn=3,G=(e,i)=>(e.msg=fe[i],i),At=e=>(e<<1)-(e>4?9:0),X=e=>{let i=e.length;for(;--i>=0;)e[i]=0};let Ln=(e,i,t)=>(i<{const i=e.state;let t=i.pending;t>e.avail_out&&(t=e.avail_out),t!==0&&(e.output.set(i.pending_buf.subarray(i.pending_out,i.pending_out+t),e.next_out),e.next_out+=t,i.pending_out+=t,e.total_out+=t,e.avail_out-=t,i.pending-=t,i.pending===0&&(i.pending_out=0))},O=(e,i)=>{sn(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,i),e.block_start=e.strstart,P(e.strm)},y=(e,i)=>{e.pending_buf[e.pending++]=i},he=(e,i)=>{e.pending_buf[e.pending++]=i>>>8&255,e.pending_buf[e.pending++]=i&255},Un=(e,i,t,a)=>{let n=e.avail_in;return n>a&&(n=a),n===0?0:(e.avail_in-=n,i.set(e.input.subarray(e.next_in,e.next_in+n),t),e.state.wrap===1?e.adler=ke(e.adler,i,n,t):e.state.wrap===2&&(e.adler=I(e.adler,i,n,t)),e.next_in+=n,e.total_in+=n,n)},gi=(e,i)=>{let t=e.max_chain_length,a=e.strstart,n,l,o=e.prev_length,f=e.nice_match;const s=e.strstart>e.w_size-C?e.strstart-(e.w_size-C):0,r=e.window,_=e.w_mask,E=e.prev,c=e.strstart+Y;let h=r[a+o-1],u=r[a+o];e.prev_length>=e.good_match&&(t>>=2),f>e.lookahead&&(f=e.lookahead);do if(n=i,!(r[n+o]!==u||r[n+o-1]!==h||r[n]!==r[a]||r[++n]!==r[a+1])){a+=2,n++;do;while(r[++a]===r[++n]&&r[++a]===r[++n]&&r[++a]===r[++n]&&r[++a]===r[++n]&&r[++a]===r[++n]&&r[++a]===r[++n]&&r[++a]===r[++n]&&r[++a]===r[++n]&&ao){if(e.match_start=i,o=l,l>=f)break;h=r[a+o-1],u=r[a+o]}}while((i=E[i&_])>s&&--t!==0);return o<=e.lookahead?o:e.lookahead},te=e=>{const i=e.w_size;let t,a,n,l,o;do{if(l=e.window_size-e.lookahead-e.strstart,e.strstart>=i+(i-C)){e.window.set(e.window.subarray(i,i+i),0),e.match_start-=i,e.strstart-=i,e.block_start-=i,a=e.hash_size,t=a;do n=e.head[--t],e.head[t]=n>=i?n-i:0;while(--a);a=i,t=a;do n=e.prev[--t],e.prev[t]=n>=i?n-i:0;while(--a);l+=i}if(e.strm.avail_in===0)break;if(a=Un(e.strm,e.window,e.strstart+e.lookahead,l),e.lookahead+=a,e.lookahead+e.insert>=k)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=V(e,e.ins_h,e.window[o+1]);e.insert&&(e.ins_h=V(e,e.ins_h,e.window[o+k-1]),e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert{let t=65535;for(t>e.pending_buf_size-5&&(t=e.pending_buf_size-5);;){if(e.lookahead<=1){if(te(e),e.lookahead===0&&i===ne)return D;if(e.lookahead===0)break}e.strstart+=e.lookahead,e.lookahead=0;const a=e.block_start+t;if((e.strstart===0||e.strstart>=a)&&(e.lookahead=e.strstart-a,e.strstart=a,O(e,!1),e.strm.avail_out===0)||e.strstart-e.block_start>=e.w_size-C&&(O(e,!1),e.strm.avail_out===0))return D}return e.insert=0,i===W?(O(e,!0),e.strm.avail_out===0?ee:_e):(e.strstart>e.block_start&&(O(e,!1),e.strm.avail_out===0),D)},Je=(e,i)=>{let t,a;for(;;){if(e.lookahead=k&&(e.ins_h=V(e,e.ins_h,e.window[e.strstart+k-1]),t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),t!==0&&e.strstart-t<=e.w_size-C&&(e.match_length=gi(e,t)),e.match_length>=k)if(a=j(e,e.strstart-e.match_start,e.match_length-k),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=k){e.match_length--;do e.strstart++,e.ins_h=V(e,e.ins_h,e.window[e.strstart+k-1]),t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=V(e,e.ins_h,e.window[e.strstart+1]);else a=j(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(a&&(O(e,!1),e.strm.avail_out===0))return D}return e.insert=e.strstart{let t,a,n;for(;;){if(e.lookahead=k&&(e.ins_h=V(e,e.ins_h,e.window[e.strstart+k-1]),t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=k-1,t!==0&&e.prev_length4096)&&(e.match_length=k-1)),e.prev_length>=k&&e.match_length<=e.prev_length){n=e.strstart+e.lookahead-k,a=j(e,e.strstart-1-e.prev_match,e.prev_length-k),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=n&&(e.ins_h=V(e,e.ins_h,e.window[e.strstart+k-1]),t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=k-1,e.strstart++,a&&(O(e,!1),e.strm.avail_out===0))return D}else if(e.match_available){if(a=j(e,0,e.window[e.strstart-1]),a&&O(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return D}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(a=j(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart{let t,a,n,l;const o=e.window;for(;;){if(e.lookahead<=Y){if(te(e),e.lookahead<=Y&&i===ne)return D;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=k&&e.strstart>0&&(n=e.strstart-1,a=o[n],a===o[++n]&&a===o[++n]&&a===o[++n])){l=e.strstart+Y;do;while(a===o[++n]&&a===o[++n]&&a===o[++n]&&a===o[++n]&&a===o[++n]&&a===o[++n]&&a===o[++n]&&a===o[++n]&&ne.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=k?(t=j(e,1,e.match_length-k),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(t=j(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),t&&(O(e,!1),e.strm.avail_out===0))return D}return e.insert=0,i===W?(O(e,!0),e.strm.avail_out===0?ee:_e):e.last_lit&&(O(e,!1),e.strm.avail_out===0)?D:Te},Fn=(e,i)=>{let t;for(;;){if(e.lookahead===0&&(te(e),e.lookahead===0)){if(i===ne)return D;break}if(e.match_length=0,t=j(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,t&&(O(e,!1),e.strm.avail_out===0))return D}return e.insert=0,i===W?(O(e,!0),e.strm.avail_out===0?ee:_e):e.last_lit&&(O(e,!1),e.strm.avail_out===0)?D:Te};function $(e,i,t,a,n){this.good_length=e,this.max_lazy=i,this.nice_length=t,this.max_chain=a,this.func=n}const ce=[new $(0,0,0,0,Cn),new $(4,4,8,4,Je),new $(4,5,16,8,Je),new $(4,6,32,32,Je),new $(4,4,16,16,ae),new $(8,16,32,32,ae),new $(8,16,128,128,ae),new $(8,32,128,256,ae),new $(32,128,258,1024,ae),new $(32,258,258,4096,ae)],Mn=e=>{e.window_size=2*e.w_size,X(e.head),e.max_lazy_match=ce[e.level].max_lazy,e.good_match=ce[e.level].good_length,e.nice_match=ce[e.level].nice_length,e.max_chain_length=ce[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=k-1,e.match_available=0,e.ins_h=0};function Hn(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Ke,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(Zn*2),this.dyn_dtree=new Uint16Array((2*mn+1)*2),this.bl_tree=new Uint16Array((2*Dn+1)*2),X(this.dyn_ltree),X(this.dyn_dtree),X(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(In+1),this.heap=new Uint16Array(2*ot+1),X(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*ot+1),X(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const pi=e=>{if(!e||!e.state)return G(e,L);e.total_in=e.total_out=0,e.data_type=yn;const i=e.state;return i.pending=0,i.pending_out=0,i.wrap<0&&(i.wrap=-i.wrap),i.status=i.wrap?Pe:q,e.adler=i.wrap===2?0:1,i.last_flush=ne,dn(i),M},xi=e=>{const i=pi(e);return i===M&&Mn(e.state),i},Bn=(e,i)=>!e||!e.state||e.state.wrap!==2?L:(e.state.gzhead=i,M),ki=(e,i,t,a,n,l)=>{if(!e)return L;let o=1;if(i===pn&&(i=6),a<0?(o=0,a=-a):a>15&&(o=2,a-=16),n<1||n>Sn||t!==Ke||a<8||a>15||i<0||i>9||l<0||l>vn)return G(e,L);a===8&&(a=9);const f=new Hn;return e.state=f,f.strm=e,f.wrap=o,f.gzhead=null,f.w_bits=a,f.w_size=1<ki(e,i,Ke,An,Tn,En),Pn=(e,i)=>{let t,a;if(!e||!e.state||i>yt||i<0)return e?G(e,L):L;const n=e.state;if(!e.output||!e.input&&e.avail_in!==0||n.status===de&&i!==W)return G(e,e.avail_out===0?Ve:L);n.strm=e;const l=n.last_flush;if(n.last_flush=i,n.status===Pe)if(n.wrap===2)e.adler=0,y(n,31),y(n,139),y(n,8),n.gzhead?(y(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),y(n,n.gzhead.time&255),y(n,n.gzhead.time>>8&255),y(n,n.gzhead.time>>16&255),y(n,n.gzhead.time>>24&255),y(n,n.level===9?2:n.strategy>=Ze||n.level<2?4:0),y(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(y(n,n.gzhead.extra.length&255),y(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=I(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=_t):(y(n,0),y(n,0),y(n,0),y(n,0),y(n,0),y(n,n.level===9?2:n.strategy>=Ze||n.level<2?4:0),y(n,Nn),n.status=q);else{let o=Ke+(n.w_bits-8<<4)<<8,f=-1;n.strategy>=Ze||n.level<2?f=0:n.level<6?f=1:n.level===6?f=2:f=3,o|=f<<6,n.strstart!==0&&(o|=On),o+=31-o%31,n.status=q,he(n,o),n.strstart!==0&&(he(n,e.adler>>>16),he(n,e.adler&65535)),e.adler=1}if(n.status===_t)if(n.gzhead.extra){for(t=n.pending;n.gzindex<(n.gzhead.extra.length&65535)&&!(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>t&&(e.adler=I(e.adler,n.pending_buf,n.pending-t,t)),P(e),t=n.pending,n.pending===n.pending_buf_size));)y(n,n.gzhead.extra[n.gzindex]&255),n.gzindex++;n.gzhead.hcrc&&n.pending>t&&(e.adler=I(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=Ce)}else n.status=Ce;if(n.status===Ce)if(n.gzhead.name){t=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>t&&(e.adler=I(e.adler,n.pending_buf,n.pending-t,t)),P(e),t=n.pending,n.pending===n.pending_buf_size)){a=1;break}n.gzindext&&(e.adler=I(e.adler,n.pending_buf,n.pending-t,t)),a===0&&(n.gzindex=0,n.status=$e)}else n.status=$e;if(n.status===$e)if(n.gzhead.comment){t=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>t&&(e.adler=I(e.adler,n.pending_buf,n.pending-t,t)),P(e),t=n.pending,n.pending===n.pending_buf_size)){a=1;break}n.gzindext&&(e.adler=I(e.adler,n.pending_buf,n.pending-t,t)),a===0&&(n.status=Fe)}else n.status=Fe;if(n.status===Fe&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&P(e),n.pending+2<=n.pending_buf_size&&(y(n,e.adler&255),y(n,e.adler>>8&255),e.adler=0,n.status=q)):n.status=q),n.pending!==0){if(P(e),e.avail_out===0)return n.last_flush=-1,M}else if(e.avail_in===0&&At(i)<=At(l)&&i!==W)return G(e,Ve);if(n.status===de&&e.avail_in!==0)return G(e,Ve);if(e.avail_in!==0||n.lookahead!==0||i!==ne&&n.status!==de){let o=n.strategy===Ze?Fn(n,i):n.strategy===kn?$n(n,i):ce[n.level].func(n,i);if((o===ee||o===_e)&&(n.status=de),o===D||o===ee)return e.avail_out===0&&(n.last_flush=-1),M;if(o===Te&&(i===bn?un(n):i!==yt&&(cn(n,0,0,!1),i===wn&&(X(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),P(e),e.avail_out===0))return n.last_flush=-1,M}return i!==W?M:n.wrap<=0?St:(n.wrap===2?(y(n,e.adler&255),y(n,e.adler>>8&255),y(n,e.adler>>16&255),y(n,e.adler>>24&255),y(n,e.total_in&255),y(n,e.total_in>>8&255),y(n,e.total_in>>16&255),y(n,e.total_in>>24&255)):(he(n,e.adler>>>16),he(n,e.adler&65535)),P(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?M:St)},Xn=e=>{if(!e||!e.state)return L;const i=e.state.status;return i!==Pe&&i!==_t&&i!==Ce&&i!==$e&&i!==Fe&&i!==q&&i!==de?G(e,L):(e.state=null,i===q?G(e,gn):M)},Yn=(e,i)=>{let t=i.length;if(!e||!e.state)return L;const a=e.state,n=a.wrap;if(n===2||n===1&&a.status!==Pe||a.lookahead)return L;if(n===1&&(e.adler=ke(e.adler,i,t,0)),a.wrap=0,t>=a.w_size){n===0&&(X(a.head),a.strstart=0,a.block_start=0,a.insert=0);let s=new Uint8Array(a.w_size);s.set(i.subarray(t-a.w_size,t),0),i=s,t=a.w_size}const l=e.avail_in,o=e.next_in,f=e.input;for(e.avail_in=t,e.next_in=0,e.input=i,te(a);a.lookahead>=k;){let s=a.strstart,r=a.lookahead-(k-1);do a.ins_h=V(a,a.ins_h,a.window[s+k-1]),a.prev[s&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=s,s++;while(--r);a.strstart=s,a.lookahead=k-1,te(a)}return a.strstart+=a.lookahead,a.block_start=a.strstart,a.insert=a.lookahead,a.lookahead=0,a.match_length=a.prev_length=k-1,a.match_available=0,e.next_in=o,e.input=f,e.avail_in=l,a.wrap=n,M};var Gn=Kn,jn=ki,Wn=xi,Vn=pi,Jn=Bn,Qn=Pn,qn=Xn,ea=Yn,ta="pako deflate (from Nodeca project)",ue={deflateInit:Gn,deflateInit2:jn,deflateReset:Wn,deflateResetKeep:Vn,deflateSetHeader:Jn,deflate:Qn,deflateEnd:qn,deflateSetDictionary:ea,deflateInfo:ta};const ia=(e,i)=>Object.prototype.hasOwnProperty.call(e,i);var na=function(e){const i=Array.prototype.slice.call(arguments,1);for(;i.length;){const t=i.shift();if(t){if(typeof t!="object")throw new TypeError(t+"must be non-object");for(const a in t)ia(t,a)&&(e[a]=t[a])}}return e},aa=e=>{let i=0;for(let a=0,n=e.length;a=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;ve[254]=ve[254]=1;var la=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let i,t,a,n,l,o=e.length,f=0;for(n=0;n>>6,i[l++]=128|t&63):t<65536?(i[l++]=224|t>>>12,i[l++]=128|t>>>6&63,i[l++]=128|t&63):(i[l++]=240|t>>>18,i[l++]=128|t>>>12&63,i[l++]=128|t>>>6&63,i[l++]=128|t&63);return i};const ra=(e,i)=>{if(i<65534&&e.subarray&&vi)return String.fromCharCode.apply(null,e.length===i?e:e.subarray(0,i));let t="";for(let a=0;a{const t=i||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,i));let a,n;const l=new Array(t*2);for(n=0,a=0;a4){l[n++]=65533,a+=f-1;continue}for(o&=f===2?31:f===3?15:7;f>1&&a1){l[n++]=65533;continue}o<65536?l[n++]=o:(o-=65536,l[n++]=55296|o>>10&1023,l[n++]=56320|o&1023)}return ra(l,n)},oa=(e,i)=>{i=i||e.length,i>e.length&&(i=e.length);let t=i-1;for(;t>=0&&(e[t]&192)===128;)t--;return t<0||t===0?i:t+ve[e[t]]>i?t:i},Ee={string2buf:la,buf2string:fa,utf8border:oa};function _a(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var Ei=_a;const yi=Object.prototype.toString,{Z_NO_FLUSH:ha,Z_SYNC_FLUSH:da,Z_FULL_FLUSH:ca,Z_FINISH:sa,Z_OK:He,Z_STREAM_END:ua,Z_DEFAULT_COMPRESSION:ba,Z_DEFAULT_STRATEGY:wa,Z_DEFLATED:ga}=Ae;function ut(e){this.options=Xe.assign({level:ba,method:ga,chunkSize:16384,windowBits:15,memLevel:8,strategy:wa},e||{});let i=this.options;i.raw&&i.windowBits>0?i.windowBits=-i.windowBits:i.gzip&&i.windowBits>0&&i.windowBits<16&&(i.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ei,this.strm.avail_out=0;let t=ue.deflateInit2(this.strm,i.level,i.method,i.windowBits,i.memLevel,i.strategy);if(t!==He)throw new Error(fe[t]);if(i.header&&ue.deflateSetHeader(this.strm,i.header),i.dictionary){let a;if(typeof i.dictionary=="string"?a=Ee.string2buf(i.dictionary):yi.call(i.dictionary)==="[object ArrayBuffer]"?a=new Uint8Array(i.dictionary):a=i.dictionary,t=ue.deflateSetDictionary(this.strm,a),t!==He)throw new Error(fe[t]);this._dict_set=!0}}ut.prototype.push=function(e,i){const t=this.strm,a=this.options.chunkSize;let n,l;if(this.ended)return!1;for(i===~~i?l=i:l=i===!0?sa:ha,typeof e=="string"?t.input=Ee.string2buf(e):yi.call(e)==="[object ArrayBuffer]"?t.input=new Uint8Array(e):t.input=e,t.next_in=0,t.avail_in=t.input.length;;){if(t.avail_out===0&&(t.output=new Uint8Array(a),t.next_out=0,t.avail_out=a),(l===da||l===ca)&&t.avail_out<=6){this.onData(t.output.subarray(0,t.next_out)),t.avail_out=0;continue}if(n=ue.deflate(t,l),n===ua)return t.next_out>0&&this.onData(t.output.subarray(0,t.next_out)),n=ue.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===He;if(t.avail_out===0){this.onData(t.output);continue}if(l>0&&t.next_out>0){this.onData(t.output.subarray(0,t.next_out)),t.avail_out=0;continue}if(t.avail_in===0)break}return!0};ut.prototype.onData=function(e){this.chunks.push(e)};ut.prototype.onEnd=function(e){e===He&&(this.result=Xe.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};const Ie=30,pa=12;var xa=function(i,t){let a,n,l,o,f,s,r,_,E,c,h,u,m,v,w,A,x,d,S,Z,b,R,T,g;const p=i.state;a=i.next_in,T=i.input,n=a+(i.avail_in-5),l=i.next_out,g=i.output,o=l-(t-i.avail_out),f=l+(i.avail_out-257),s=p.dmax,r=p.wsize,_=p.whave,E=p.wnext,c=p.window,h=p.hold,u=p.bits,m=p.lencode,v=p.distcode,w=(1<>>24,h>>>=d,u-=d,d=x>>>16&255,d===0)g[l++]=x&65535;else if(d&16){S=x&65535,d&=15,d&&(u>>=d,u-=d),u<15&&(h+=T[a++]<>>24,h>>>=d,u-=d,d=x>>>16&255,d&16){if(Z=x&65535,d&=15,us){i.msg="invalid distance too far back",p.mode=Ie;break e}if(h>>>=d,u-=d,d=l-o,Z>d){if(d=Z-d,d>_&&p.sane){i.msg="invalid distance too far back",p.mode=Ie;break e}if(b=0,R=c,E===0){if(b+=r-d,d2;)g[l++]=R[b++],g[l++]=R[b++],g[l++]=R[b++],S-=3;S&&(g[l++]=R[b++],S>1&&(g[l++]=R[b++]))}else{b=l-Z;do g[l++]=g[b++],g[l++]=g[b++],g[l++]=g[b++],S-=3;while(S>2);S&&(g[l++]=g[b++],S>1&&(g[l++]=g[b++]))}}else if(d&64){i.msg="invalid distance code",p.mode=Ie;break e}else{x=v[(x&65535)+(h&(1<>3,a-=S,u-=S<<3,h&=(1<{const s=f.bits;let r=0,_=0,E=0,c=0,h=0,u=0,m=0,v=0,w=0,A=0,x,d,S,Z,b,R=null,T=0,g;const p=new Uint16Array(le+1),J=new Uint16Array(le+1);let ze=null,wt=0,gt,me,De;for(r=0;r<=le;r++)p[r]=0;for(_=0;_=1&&p[c]===0;c--);if(h>c&&(h=c),c===0)return n[l++]=1<<24|64<<16|0,n[l++]=1<<24|64<<16|0,f.bits=1,0;for(E=1;E0&&(e===zt||c!==1))return-1;for(J[1]=0,r=1;rTt||e===mt&&w>Rt)return 1;for(;;){gt=r-m,o[_]g?(me=ze[wt+o[_]],De=R[T+o[_]]):(me=32+64,De=0),x=1<>m)+d]=gt<<24|me<<16|De|0;while(d!==0);for(x=1<>=1;if(x!==0?(A&=x-1,A+=x):A=0,_++,--p[r]===0){if(r===c)break;r=i[t+o[_]]}if(r>h&&(A&Z)!==S){for(m===0&&(m=h),b+=E,u=r-m,v=1<Tt||e===mt&&w>Rt)return 1;S=A&Z,n[S]=h<<24|u<<16|b-l|0}}return A!==0&&(n[b+A]=r-m<<24|64<<16|0),f.bits=h,0};var be=Sa;const Aa=0,Si=1,Ai=2,{Z_FINISH:Dt,Z_BLOCK:Ta,Z_TREES:Oe,Z_OK:ie,Z_STREAM_END:Ra,Z_NEED_DICT:za,Z_STREAM_ERROR:U,Z_DATA_ERROR:Ti,Z_MEM_ERROR:Ri,Z_BUF_ERROR:ma,Z_DEFLATED:Zt}=Ae,zi=1,It=2,Ot=3,Nt=4,Lt=5,Ut=6,Ct=7,$t=8,Ft=9,Mt=10,Be=11,H=12,qe=13,Ht=14,et=15,Bt=16,Kt=17,Pt=18,Xt=19,Ne=20,Le=21,Yt=22,Gt=23,jt=24,Wt=25,Vt=26,tt=27,Jt=28,Qt=29,z=30,mi=31,Da=32,Za=852,Ia=592,Oa=15,Na=Oa,qt=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function La(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Di=e=>{if(!e||!e.state)return U;const i=e.state;return e.total_in=e.total_out=i.total=0,e.msg="",i.wrap&&(e.adler=i.wrap&1),i.mode=zi,i.last=0,i.havedict=0,i.dmax=32768,i.head=null,i.hold=0,i.bits=0,i.lencode=i.lendyn=new Int32Array(Za),i.distcode=i.distdyn=new Int32Array(Ia),i.sane=1,i.back=-1,ie},Zi=e=>{if(!e||!e.state)return U;const i=e.state;return i.wsize=0,i.whave=0,i.wnext=0,Di(e)},Ii=(e,i)=>{let t;if(!e||!e.state)return U;const a=e.state;return i<0?(t=0,i=-i):(t=(i>>4)+1,i<48&&(i&=15)),i&&(i<8||i>15)?U:(a.window!==null&&a.wbits!==i&&(a.window=null),a.wrap=t,a.wbits=i,Zi(e))},Oi=(e,i)=>{if(!e)return U;const t=new La;e.state=t,t.window=null;const a=Ii(e,i);return a!==ie&&(e.state=null),a},Ua=e=>Oi(e,Na);let ei=!0,it,nt;const Ca=e=>{if(ei){it=new Int32Array(512),nt=new Int32Array(32);let i=0;for(;i<144;)e.lens[i++]=8;for(;i<256;)e.lens[i++]=9;for(;i<280;)e.lens[i++]=7;for(;i<288;)e.lens[i++]=8;for(be(Si,e.lens,0,288,it,0,e.work,{bits:9}),i=0;i<32;)e.lens[i++]=5;be(Ai,e.lens,0,32,nt,0,e.work,{bits:5}),ei=!1}e.lencode=it,e.lenbits=9,e.distcode=nt,e.distbits=5},Ni=(e,i,t,a)=>{let n;const l=e.state;return l.window===null&&(l.wsize=1<=l.wsize?(l.window.set(i.subarray(t-l.wsize,t),0),l.wnext=0,l.whave=l.wsize):(n=l.wsize-l.wnext,n>a&&(n=a),l.window.set(i.subarray(t-a,t-a+n),l.wnext),a-=n,a?(l.window.set(i.subarray(t-a,t),0),l.wnext=a,l.whave=l.wsize):(l.wnext+=n,l.wnext===l.wsize&&(l.wnext=0),l.whave{let t,a,n,l,o,f,s,r,_,E,c,h,u,m,v=0,w,A,x,d,S,Z,b,R;const T=new Uint8Array(4);let g,p;const J=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0)return U;t=e.state,t.mode===H&&(t.mode=qe),o=e.next_out,n=e.output,s=e.avail_out,l=e.next_in,a=e.input,f=e.avail_in,r=t.hold,_=t.bits,E=f,c=s,R=ie;e:for(;;)switch(t.mode){case zi:if(t.wrap===0){t.mode=qe;break}for(;_<16;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}if(t.wrap&2&&r===35615){t.check=0,T[0]=r&255,T[1]=r>>>8&255,t.check=I(t.check,T,2,0),r=0,_=0,t.mode=It;break}if(t.flags=0,t.head&&(t.head.done=!1),!(t.wrap&1)||(((r&255)<<8)+(r>>8))%31){e.msg="incorrect header check",t.mode=z;break}if((r&15)!==Zt){e.msg="unknown compression method",t.mode=z;break}if(r>>>=4,_-=4,b=(r&15)+8,t.wbits===0)t.wbits=b;else if(b>t.wbits){e.msg="invalid window size",t.mode=z;break}t.dmax=1<>8&1),t.flags&512&&(T[0]=r&255,T[1]=r>>>8&255,t.check=I(t.check,T,2,0)),r=0,_=0,t.mode=Ot;case Ot:for(;_<32;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}t.head&&(t.head.time=r),t.flags&512&&(T[0]=r&255,T[1]=r>>>8&255,T[2]=r>>>16&255,T[3]=r>>>24&255,t.check=I(t.check,T,4,0)),r=0,_=0,t.mode=Nt;case Nt:for(;_<16;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}t.head&&(t.head.xflags=r&255,t.head.os=r>>8),t.flags&512&&(T[0]=r&255,T[1]=r>>>8&255,t.check=I(t.check,T,2,0)),r=0,_=0,t.mode=Lt;case Lt:if(t.flags&1024){for(;_<16;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}t.length=r,t.head&&(t.head.extra_len=r),t.flags&512&&(T[0]=r&255,T[1]=r>>>8&255,t.check=I(t.check,T,2,0)),r=0,_=0}else t.head&&(t.head.extra=null);t.mode=Ut;case Ut:if(t.flags&1024&&(h=t.length,h>f&&(h=f),h&&(t.head&&(b=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Uint8Array(t.head.extra_len)),t.head.extra.set(a.subarray(l,l+h),b)),t.flags&512&&(t.check=I(t.check,a,h,l)),f-=h,l+=h,t.length-=h),t.length))break e;t.length=0,t.mode=Ct;case Ct:if(t.flags&2048){if(f===0)break e;h=0;do b=a[l+h++],t.head&&b&&t.length<65536&&(t.head.name+=String.fromCharCode(b));while(b&&h>9&1,t.head.done=!0),e.adler=t.check=0,t.mode=H;break;case Mt:for(;_<32;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}e.adler=t.check=qt(r),r=0,_=0,t.mode=Be;case Be:if(t.havedict===0)return e.next_out=o,e.avail_out=s,e.next_in=l,e.avail_in=f,t.hold=r,t.bits=_,za;e.adler=t.check=1,t.mode=H;case H:if(i===Ta||i===Oe)break e;case qe:if(t.last){r>>>=_&7,_-=_&7,t.mode=tt;break}for(;_<3;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}switch(t.last=r&1,r>>>=1,_-=1,r&3){case 0:t.mode=Ht;break;case 1:if(Ca(t),t.mode=Ne,i===Oe){r>>>=2,_-=2;break e}break;case 2:t.mode=Kt;break;case 3:e.msg="invalid block type",t.mode=z}r>>>=2,_-=2;break;case Ht:for(r>>>=_&7,_-=_&7;_<32;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}if((r&65535)!==(r>>>16^65535)){e.msg="invalid stored block lengths",t.mode=z;break}if(t.length=r&65535,r=0,_=0,t.mode=et,i===Oe)break e;case et:t.mode=Bt;case Bt:if(h=t.length,h){if(h>f&&(h=f),h>s&&(h=s),h===0)break e;n.set(a.subarray(l,l+h),o),f-=h,l+=h,s-=h,o+=h,t.length-=h;break}t.mode=H;break;case Kt:for(;_<14;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}if(t.nlen=(r&31)+257,r>>>=5,_-=5,t.ndist=(r&31)+1,r>>>=5,_-=5,t.ncode=(r&15)+4,r>>>=4,_-=4,t.nlen>286||t.ndist>30){e.msg="too many length or distance symbols",t.mode=z;break}t.have=0,t.mode=Pt;case Pt:for(;t.have>>=3,_-=3}for(;t.have<19;)t.lens[J[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,g={bits:t.lenbits},R=be(Aa,t.lens,0,19,t.lencode,0,t.work,g),t.lenbits=g.bits,R){e.msg="invalid code lengths set",t.mode=z;break}t.have=0,t.mode=Xt;case Xt:for(;t.have>>24,A=v>>>16&255,x=v&65535,!(w<=_);){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}if(x<16)r>>>=w,_-=w,t.lens[t.have++]=x;else{if(x===16){for(p=w+2;_>>=w,_-=w,t.have===0){e.msg="invalid bit length repeat",t.mode=z;break}b=t.lens[t.have-1],h=3+(r&3),r>>>=2,_-=2}else if(x===17){for(p=w+3;_>>=w,_-=w,b=0,h=3+(r&7),r>>>=3,_-=3}else{for(p=w+7;_>>=w,_-=w,b=0,h=11+(r&127),r>>>=7,_-=7}if(t.have+h>t.nlen+t.ndist){e.msg="invalid bit length repeat",t.mode=z;break}for(;h--;)t.lens[t.have++]=b}}if(t.mode===z)break;if(t.lens[256]===0){e.msg="invalid code -- missing end-of-block",t.mode=z;break}if(t.lenbits=9,g={bits:t.lenbits},R=be(Si,t.lens,0,t.nlen,t.lencode,0,t.work,g),t.lenbits=g.bits,R){e.msg="invalid literal/lengths set",t.mode=z;break}if(t.distbits=6,t.distcode=t.distdyn,g={bits:t.distbits},R=be(Ai,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,g),t.distbits=g.bits,R){e.msg="invalid distances set",t.mode=z;break}if(t.mode=Ne,i===Oe)break e;case Ne:t.mode=Le;case Le:if(f>=6&&s>=258){e.next_out=o,e.avail_out=s,e.next_in=l,e.avail_in=f,t.hold=r,t.bits=_,xa(e,c),o=e.next_out,n=e.output,s=e.avail_out,l=e.next_in,a=e.input,f=e.avail_in,r=t.hold,_=t.bits,t.mode===H&&(t.back=-1);break}for(t.back=0;v=t.lencode[r&(1<>>24,A=v>>>16&255,x=v&65535,!(w<=_);){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}if(A&&!(A&240)){for(d=w,S=A,Z=x;v=t.lencode[Z+((r&(1<>d)],w=v>>>24,A=v>>>16&255,x=v&65535,!(d+w<=_);){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}r>>>=d,_-=d,t.back+=d}if(r>>>=w,_-=w,t.back+=w,t.length=x,A===0){t.mode=Vt;break}if(A&32){t.back=-1,t.mode=H;break}if(A&64){e.msg="invalid literal/length code",t.mode=z;break}t.extra=A&15,t.mode=Yt;case Yt:if(t.extra){for(p=t.extra;_>>=t.extra,_-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=Gt;case Gt:for(;v=t.distcode[r&(1<>>24,A=v>>>16&255,x=v&65535,!(w<=_);){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}if(!(A&240)){for(d=w,S=A,Z=x;v=t.distcode[Z+((r&(1<>d)],w=v>>>24,A=v>>>16&255,x=v&65535,!(d+w<=_);){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}r>>>=d,_-=d,t.back+=d}if(r>>>=w,_-=w,t.back+=w,A&64){e.msg="invalid distance code",t.mode=z;break}t.offset=x,t.extra=A&15,t.mode=jt;case jt:if(t.extra){for(p=t.extra;_>>=t.extra,_-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){e.msg="invalid distance too far back",t.mode=z;break}t.mode=Wt;case Wt:if(s===0)break e;if(h=c-s,t.offset>h){if(h=t.offset-h,h>t.whave&&t.sane){e.msg="invalid distance too far back",t.mode=z;break}h>t.wnext?(h-=t.wnext,u=t.wsize-h):u=t.wnext-h,h>t.length&&(h=t.length),m=t.window}else m=n,u=o-t.offset,h=t.length;h>s&&(h=s),s-=h,t.length-=h;do n[o++]=m[u++];while(--h);t.length===0&&(t.mode=Le);break;case Vt:if(s===0)break e;n[o++]=t.length,s--,t.mode=Le;break;case tt:if(t.wrap){for(;_<32;){if(f===0)break e;f--,r|=a[l++]<<_,_+=8}if(c-=s,e.total_out+=c,t.total+=c,c&&(e.adler=t.check=t.flags?I(t.check,n,c,o-c):ke(t.check,n,c,o-c)),c=s,(t.flags?r:qt(r))!==t.check){e.msg="incorrect data check",t.mode=z;break}r=0,_=0}t.mode=Jt;case Jt:if(t.wrap&&t.flags){for(;_<32;){if(f===0)break e;f--,r+=a[l++]<<_,_+=8}if(r!==(t.total&4294967295)){e.msg="incorrect length check",t.mode=z;break}r=0,_=0}t.mode=Qt;case Qt:R=Ra;break e;case z:R=Ti;break e;case mi:return Ri;case Da:default:return U}return e.next_out=o,e.avail_out=s,e.next_in=l,e.avail_in=f,t.hold=r,t.bits=_,(t.wsize||c!==e.avail_out&&t.mode{if(!e||!e.state)return U;let i=e.state;return i.window&&(i.window=null),e.state=null,ie},Ma=(e,i)=>{if(!e||!e.state)return U;const t=e.state;return t.wrap&2?(t.head=i,i.done=!1,ie):U},Ha=(e,i)=>{const t=i.length;let a,n,l;return!e||!e.state||(a=e.state,a.wrap!==0&&a.mode!==Be)?U:a.mode===Be&&(n=1,n=ke(n,i,t,0),n!==a.check)?Ti:(l=Ni(e,i,t,t),l?(a.mode=mi,Ri):(a.havedict=1,ie))};var Ba=Zi,Ka=Ii,Pa=Di,Xa=Ua,Ya=Oi,Ga=$a,ja=Fa,Wa=Ma,Va=Ha,Ja="pako inflate (from Nodeca project)",K={inflateReset:Ba,inflateReset2:Ka,inflateResetKeep:Pa,inflateInit:Xa,inflateInit2:Ya,inflate:Ga,inflateEnd:ja,inflateGetHeader:Wa,inflateSetDictionary:Va,inflateInfo:Ja};function Qa(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var qa=Qa;const Li=Object.prototype.toString,{Z_NO_FLUSH:el,Z_FINISH:tl,Z_OK:ye,Z_STREAM_END:at,Z_NEED_DICT:lt,Z_STREAM_ERROR:il,Z_DATA_ERROR:ti,Z_MEM_ERROR:nl}=Ae;function Re(e){this.options=Xe.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});const i=this.options;i.raw&&i.windowBits>=0&&i.windowBits<16&&(i.windowBits=-i.windowBits,i.windowBits===0&&(i.windowBits=-15)),i.windowBits>=0&&i.windowBits<16&&!(e&&e.windowBits)&&(i.windowBits+=32),i.windowBits>15&&i.windowBits<48&&(i.windowBits&15||(i.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ei,this.strm.avail_out=0;let t=K.inflateInit2(this.strm,i.windowBits);if(t!==ye)throw new Error(fe[t]);if(this.header=new qa,K.inflateGetHeader(this.strm,this.header),i.dictionary&&(typeof i.dictionary=="string"?i.dictionary=Ee.string2buf(i.dictionary):Li.call(i.dictionary)==="[object ArrayBuffer]"&&(i.dictionary=new Uint8Array(i.dictionary)),i.raw&&(t=K.inflateSetDictionary(this.strm,i.dictionary),t!==ye)))throw new Error(fe[t])}Re.prototype.push=function(e,i){const t=this.strm,a=this.options.chunkSize,n=this.options.dictionary;let l,o,f;if(this.ended)return!1;for(i===~~i?o=i:o=i===!0?tl:el,Li.call(e)==="[object ArrayBuffer]"?t.input=new Uint8Array(e):t.input=e,t.next_in=0,t.avail_in=t.input.length;;){for(t.avail_out===0&&(t.output=new Uint8Array(a),t.next_out=0,t.avail_out=a),l=K.inflate(t,o),l===lt&&n&&(l=K.inflateSetDictionary(t,n),l===ye?l=K.inflate(t,o):l===ti&&(l=lt));t.avail_in>0&&l===at&&t.state.wrap>0&&e[t.next_in]!==0;)K.inflateReset(t),l=K.inflate(t,o);switch(l){case il:case ti:case lt:case nl:return this.onEnd(l),this.ended=!0,!1}if(f=t.avail_out,t.next_out&&(t.avail_out===0||l===at))if(this.options.to==="string"){let s=Ee.utf8border(t.output,t.next_out),r=t.next_out-s,_=Ee.buf2string(t.output,s);t.next_out=r,t.avail_out=a-r,r&&t.output.set(t.output.subarray(s,s+r),0),this.onData(_)}else this.onData(t.output.length===t.next_out?t.output:t.output.subarray(0,t.next_out));if(!(l===ye&&f===0)){if(l===at)return l=K.inflateEnd(this.strm),this.onEnd(l),this.ended=!0,!0;if(t.avail_in===0)break}}return!0};Re.prototype.onData=function(e){this.chunks.push(e)};Re.prototype.onEnd=function(e){e===ye&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Xe.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function bt(e,i){const t=new Re(i);if(t.push(e),t.err)throw t.msg||fe[t.err];return t.result}function al(e,i){return i=i||{},i.raw=!0,bt(e,i)}var ll=Re,rl=bt,fl=al,ol=bt,_l=Ae,hl={Inflate:ll,inflate:rl,inflateRaw:fl,ungzip:ol,constants:_l};const{Inflate:cl,inflate:dl,inflateRaw:sl,ungzip:ul}=hl;var bl=dl;export{bl as i}; diff --git a/assets/raw-ea95a25e.js b/assets/raw-ea95a25e.js new file mode 100644 index 000000000..55d4edec2 --- /dev/null +++ b/assets/raw-ea95a25e.js @@ -0,0 +1 @@ +import{B as o}from"./index-1328ccd8.js";class d extends o{decodeBlock(e){return e}}export{d as default}; diff --git a/assets/raw.db67f73b.js b/assets/raw.db67f73b.js deleted file mode 100644 index 5854d70bb..000000000 --- a/assets/raw.db67f73b.js +++ /dev/null @@ -1 +0,0 @@ -import{B as o}from"./index.ed0b1304.js";class d extends o{decodeBlock(e){return e}}export{d as default}; diff --git a/assets/webimage-7b855e8d.js b/assets/webimage-7b855e8d.js new file mode 100644 index 000000000..d3f8e7503 --- /dev/null +++ b/assets/webimage-7b855e8d.js @@ -0,0 +1 @@ +import{B as r}from"./index-1328ccd8.js";class s extends r{constructor(){if(super(),typeof createImageBitmap>"u")throw new Error("Cannot decode WebImage as `createImageBitmap` is not available");if(typeof document>"u"&&typeof OffscreenCanvas>"u")throw new Error("Cannot decode WebImage as neither `document` nor `OffscreenCanvas` is not available")}async decode(i,n){const o=new Blob([n]),e=await createImageBitmap(o);let t;typeof document<"u"?(t=document.createElement("canvas"),t.width=e.width,t.height=e.height):t=new OffscreenCanvas(e.width,e.height);const a=t.getContext("2d");return a.drawImage(e,0,0),a.getImageData(0,0,e.width,e.height).data.buffer}}export{s as default}; diff --git a/assets/webimage.dbd54e7c.js b/assets/webimage.dbd54e7c.js deleted file mode 100644 index d30b2007a..000000000 --- a/assets/webimage.dbd54e7c.js +++ /dev/null @@ -1 +0,0 @@ -import{B as r}from"./index.ed0b1304.js";class s extends r{constructor(){if(super(),typeof createImageBitmap=="undefined")throw new Error("Cannot decode WebImage as `createImageBitmap` is not available");if(typeof document=="undefined"&&typeof OffscreenCanvas=="undefined")throw new Error("Cannot decode WebImage as neither `document` nor `OffscreenCanvas` is not available")}async decode(i,n){const o=new Blob([n]),e=await createImageBitmap(o);let t;typeof document!="undefined"?(t=document.createElement("canvas"),t.width=e.width,t.height=e.height):t=new OffscreenCanvas(e.width,e.height);const a=t.getContext("2d");return a.drawImage(e,0,0),a.getImageData(0,0,e.width,e.height).data.buffer}}export{s as default}; diff --git a/index.html b/index.html index 7955e8ea7..b0c83a3e9 100644 --- a/index.html +++ b/index.html @@ -9,8 +9,8 @@ content="A viewer for high bit depth, high resolution, multi-channel images" /> AVIVATOR - - + +