orbidicom 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/bin/orbidicom.mjs +28 -0
- package/dist/args.d.ts +11 -0
- package/dist/args.js +40 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.js +15 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/serve.d.ts +15 -0
- package/dist/serve.js +58 -0
- package/package.json +47 -0
- package/public/assets/charlswasm_decode-484ovEoR.wasm +0 -0
- package/public/assets/computeWorker-Dd8a7Dqd.js +5 -0
- package/public/assets/decodeImageFrameWorker-wYf2-PFJ.js +90 -0
- package/public/assets/index-6485mdZB.css +1 -0
- package/public/assets/index-C3ZK2mXe.js +54 -0
- package/public/assets/index-CkA8WclG.js +4231 -0
- package/public/assets/index-DlHE1E-n.js +1 -0
- package/public/assets/index-GWuN1VuF.js +1 -0
- package/public/assets/jpeg-BQEpTZHd.js +1 -0
- package/public/assets/libjpegturbowasm_decode-daqMmuVl.wasm +0 -0
- package/public/assets/lossless-BIYWXcdg.js +1 -0
- package/public/assets/openjpegwasm_decode-B3gWTHpv.wasm +0 -0
- package/public/assets/openjphjs-C-BUUy4a.wasm +0 -0
- package/public/config.js +13 -0
- package/public/index.html +15 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2019 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/const Nr=Symbol("Comlink.proxy"),oa=Symbol("Comlink.endpoint"),ca=Symbol("Comlink.releaseProxy"),$e=Symbol("Comlink.finalizer"),ae=Symbol("Comlink.thrown"),Ir=e=>typeof e=="object"&&e!==null||typeof e=="function",fa={canHandle:e=>Ir(e)&&e[Nr],serialize(e){const{port1:t,port2:n}=new MessageChannel;return rn(e,t),[n,[n]]},deserialize(e){return e.start(),ha(e)}},ua={canHandle:e=>Ir(e)&&ae in e,serialize({value:e}){let t;return e instanceof Error?t={isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:t={isError:!1,value:e},[t,[]]},deserialize(e){throw e.isError?Object.assign(new Error(e.value.message),e.value):e.value}},Rr=new Map([["proxy",fa],["throw",ua]]);function la(e,t){for(const n of e)if(t===n||n==="*"||n instanceof RegExp&&n.test(t))return!0;return!1}function rn(e,t=globalThis,n=["*"]){t.addEventListener("message",function r(s){if(!s||!s.data)return;if(!la(n,s.origin)){console.warn(`Invalid origin '${s.origin}' for comlink proxy`);return}const{id:i,type:a,path:c}=Object.assign({path:[]},s.data),o=(s.data.argumentList||[]).map(Ct);let f;try{const u=c.slice(0,-1).reduce((g,h)=>g[h],e),l=c.reduce((g,h)=>g[h],e);switch(a){case"GET":f=l;break;case"SET":u[c.slice(-1)[0]]=Ct(s.data.value),f=!0;break;case"APPLY":f=l.apply(u,o);break;case"CONSTRUCT":{const g=new l(...o);f=ma(g)}break;case"ENDPOINT":{const{port1:g,port2:h}=new MessageChannel;rn(e,h),f=Ca(g,[g])}break;case"RELEASE":f=void 0;break;default:return}}catch(u){f={value:u,[ae]:0}}Promise.resolve(f).catch(u=>({value:u,[ae]:0})).then(u=>{const[l,g]=me(u);t.postMessage(Object.assign(Object.assign({},l),{id:i}),g),a==="RELEASE"&&(t.removeEventListener("message",r),kr(t),$e in e&&typeof e[$e]=="function"&&e[$e]())}).catch(u=>{const[l,g]=me({value:new TypeError("Unserializable return value"),[ae]:0});t.postMessage(Object.assign(Object.assign({},l),{id:i}),g)})}),t.start&&t.start()}function ga(e){return e.constructor.name==="MessagePort"}function kr(e){ga(e)&&e.close()}function ha(e,t){const n=new Map;return e.addEventListener("message",function(s){const{data:i}=s;if(!i||!i.id)return;const a=n.get(i.id);if(a)try{a(i)}finally{n.delete(i.id)}}),Fe(e,n,[],t)}function Zt(e){if(e)throw new Error("Proxy has been released and is not useable")}function Vr(e){return Nt(e,new Map,{type:"RELEASE"}).then(()=>{kr(e)})}const pe=new WeakMap,Ce="FinalizationRegistry"in globalThis&&new FinalizationRegistry(e=>{const t=(pe.get(e)||0)-1;pe.set(e,t),t===0&&Vr(e)});function ya(e,t){const n=(pe.get(t)||0)+1;pe.set(t,n),Ce&&Ce.register(e,t,e)}function Ea(e){Ce&&Ce.unregister(e)}function Fe(e,t,n=[],r=function(){}){let s=!1;const i=new Proxy(r,{get(a,c){if(Zt(s),c===ca)return()=>{Ea(i),Vr(e),t.clear(),s=!0};if(c==="then"){if(n.length===0)return{then:()=>i};const o=Nt(e,t,{type:"GET",path:n.map(f=>f.toString())}).then(Ct);return o.then.bind(o)}return Fe(e,t,[...n,c])},set(a,c,o){Zt(s);const[f,u]=me(o);return Nt(e,t,{type:"SET",path:[...n,c].map(l=>l.toString()),value:f},u).then(Ct)},apply(a,c,o){Zt(s);const f=n[n.length-1];if(f===oa)return Nt(e,t,{type:"ENDPOINT"}).then(Ct);if(f==="bind")return Fe(e,t,n.slice(0,-1));const[u,l]=Fn(o);return Nt(e,t,{type:"APPLY",path:n.map(g=>g.toString()),argumentList:u},l).then(Ct)},construct(a,c){Zt(s);const[o,f]=Fn(c);return Nt(e,t,{type:"CONSTRUCT",path:n.map(u=>u.toString()),argumentList:o},f).then(Ct)}});return ya(i,e),i}function pa(e){return Array.prototype.concat.apply([],e)}function Fn(e){const t=e.map(me);return[t.map(n=>n[0]),pa(t.map(n=>n[1]))]}const _r=new WeakMap;function Ca(e,t){return _r.set(e,t),e}function ma(e){return Object.assign(e,{[Nr]:!0})}function me(e){for(const[t,n]of Rr)if(n.canHandle(e)){const[r,s]=n.serialize(e);return[{type:"HANDLER",name:t,value:r},s]}return[{type:"RAW",value:e},_r.get(e)||[]]}function Ct(e){switch(e.type){case"HANDLER":return Rr.get(e.name).deserialize(e.value);case"RAW":return e.value}}function Nt(e,t,n,r){return new Promise(s=>{const i=Ma();t.set(i,s),e.start&&e.start(),e.postMessage(Object.assign({id:i},n),r)})}function Ma(){return new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var b;(function(e){e.ERROR_EVENT="CORNERSTONE_ERROR",e.CACHE_SIZE_EXCEEDED="CACHE_SIZE_EXCEEDED",e.IMAGE_LOAD_ERROR="IMAGE_LOAD_ERROR",e.CAMERA_MODIFIED="CORNERSTONE_CAMERA_MODIFIED",e.CAMERA_RESET="CORNERSTONE_CAMERA_RESET",e.VOI_MODIFIED="CORNERSTONE_VOI_MODIFIED",e.PRESET_MODIFIED="CORNERSTONE_VIEWPORT_RENDERING_PRESET_MODIFIED",e.DISPLAY_AREA_MODIFIED="CORNERSTONE_DISPLAY_AREA_MODIFIED",e.ELEMENT_DISABLED="CORNERSTONE_ELEMENT_DISABLED",e.ELEMENT_ENABLED="CORNERSTONE_ELEMENT_ENABLED",e.IMAGE_RENDERED="CORNERSTONE_IMAGE_RENDERED",e.IMAGE_VOLUME_MODIFIED="CORNERSTONE_IMAGE_VOLUME_MODIFIED",e.IMAGE_VOLUME_LOADING_COMPLETED="CORNERSTONE_IMAGE_VOLUME_LOADING_COMPLETED",e.IMAGE_LOADED="CORNERSTONE_IMAGE_LOADED",e.IMAGE_RETRIEVAL_STAGE="CORNERSTONE_IMAGE_RETRIEVAL_STAGE",e.IMAGE_LOAD_FAILED="CORNERSTONE_IMAGE_LOAD_FAILED",e.VOLUME_VIEWPORT_NEW_VOLUME="CORNERSTONE_VOLUME_VIEWPORT_NEW_VOLUME",e.VOLUME_LOADED="CORNERSTONE_VOLUME_LOADED",e.VOLUME_LOADED_FAILED="CORNERSTONE_VOLUME_LOADED_FAILED",e.IMAGE_CACHE_IMAGE_ADDED="CORNERSTONE_IMAGE_CACHE_IMAGE_ADDED",e.IMAGE_CACHE_IMAGE_REMOVED="CORNERSTONE_IMAGE_CACHE_IMAGE_REMOVED",e.VOLUME_CACHE_VOLUME_ADDED="CORNERSTONE_VOLUME_CACHE_VOLUME_ADDED",e.VOLUME_CACHE_VOLUME_REMOVED="CORNERSTONE_VOLUME_CACHE_VOLUME_REMOVED",e.STACK_NEW_IMAGE="CORNERSTONE_STACK_NEW_IMAGE",e.VOLUME_NEW_IMAGE="CORNERSTONE_VOLUME_NEW_IMAGE",e.PRE_STACK_NEW_IMAGE="CORNERSTONE_PRE_STACK_NEW_IMAGE",e.IMAGE_SPACING_CALIBRATED="CORNERSTONE_IMAGE_SPACING_CALIBRATED",e.VIEWPORT_NEW_IMAGE_SET="CORNERSTONE_VIEWPORT_NEW_IMAGE_SET",e.STACK_VIEWPORT_SCROLL="CORNERSTONE_STACK_VIEWPORT_SCROLL",e.STACK_SCROLL_OUT_OF_BOUNDS="STACK_SCROLL_OUT_OF_BOUNDS",e.GEOMETRY_CACHE_GEOMETRY_ADDED="CORNERSTONE_GEOMETRY_CACHE_GEOMETRY_ADDED",e.GEOMETRY_CACHE_GEOMETRY_REMOVED="CORNERSTONE_GEOMETRY_CACHE_GEOMETRY_REMOVED",e.VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS="VOLUME_VIEWPORT_SCROLL_OUT_OF_BOUNDS",e.VOLUME_VIEWPORT_SCROLL="VOLUME_VIEWPORT_SCROLL",e.CLIPPING_PLANES_UPDATED="CORNERSTONE_CLIPPING_PLANES_UPDATED",e.WEB_WORKER_PROGRESS="CORNERSTONE_WEB_WORKER_PROGRESS",e.COLORMAP_MODIFIED="CORNERSTONE_COLORMAP_MODIFIED",e.DYNAMIC_VOLUME_DIMENSION_GROUP_CHANGED="DYNAMIC_VOLUME_DIMENSION_GROUP_CHANGED",e.DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED="DYNAMIC_VOLUME_TIME_POINT_INDEX_CHANGED",e.DYNAMIC_VOLUME_DIMENSION_GROUP_LOADED="DYNAMIC_VOLUME_DIMENSION_GROUP_LOADED",e.DYNAMIC_VOLUME_TIME_POINT_LOADED="DYNAMIC_VOLUME_TIME_POINT_LOADED",e.GEOMETRY_LOADED="GEOMETRY_LOADED",e.GEOMETRY_LOAD_PROGRESS="GEOMETRY_LOAD_PROGRESS",e.GEOMETRY_LOADED_FAILED="GEOMETRY_LOADED_FAILED",e.ACTORS_CHANGED="CORNERSTONE_ACTORS_CHANGED"})(b||(b={}));var ze;(function(e){e.STACK="stack",e.ORTHOGRAPHIC="orthographic",e.PERSPECTIVE="perspective",e.VOLUME_3D="volume3d",e.VOLUME_3D_NEXT="volume3dNext",e.PLANAR_NEXT="planarNext",e.VIDEO="video",e.VIDEO_NEXT="videoNext",e.WHOLE_SLIDE="wholeSlide",e.WHOLE_SLIDE_NEXT="wholeSlideNext",e.ECG="ecg",e.ECG_NEXT="ecgNext"})(ze||(ze={}));var St;(function(e){e[e.NEAREST=0]="NEAREST",e[e.LINEAR=1]="LINEAR",e[e.FAST_LINEAR=2]="FAST_LINEAR"})(St||(St={}));var Be;(function(e){e.NOT_APPLICABLE="",e.ERMF="ERMF",e.USER="User",e.PROJECTION="Proj",e.REGION="Region",e.ERROR="Error",e.UNCALIBRATED="Uncalibrated",e.CALIBRATED="Calibrated",e.UNKNOWN="Unknown"})(Be||(Be={}));const xr=1e-5;function Ar(e,t,n){return Math.abs(e-t)<=n}function Sa(e,t,n=xr){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!Ar(e[r],t[r],n))return!1;return!0}function zn(e){return typeof e=="number"}function Bn(e){return e&&typeof e=="object"&&"length"in e&&typeof e.length=="number"&&e.length>0&&typeof e[0]=="number"}function Ke(e,t,n=xr){return typeof e!=typeof t||e===null||t===null?!1:zn(e)&&zn(t)?Ar(e,t,n):Bn(e)&&Bn(t)?Sa(e,t,n):!1}const Kn=/^[a-zA-Z]+:/;function Ta(e){if(!e)return"";const t=e.match(Kn);if(!t)return e;const n=e.substring(t[0].length);return Kn.test(n)?n:e}var da=1e-6,rt=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});function Da(){var e=new rt(9);return rt!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function Oa(e,t,n,r,s,i,a,c,o){var f=new rt(9);return f[0]=e,f[1]=t,f[2]=n,f[3]=r,f[4]=s,f[5]=i,f[6]=a,f[7]=c,f[8]=o,f}function $r(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}function wa(e,t){var n=t[0],r=t[1],s=t[2],i=t[3],a=t[4],c=t[5],o=t[6],f=t[7],u=t[8],l=t[9],g=t[10],h=t[11],y=t[12],E=t[13],p=t[14],m=t[15],M=n*c-r*a,S=n*o-s*a,C=n*f-i*a,T=r*o-s*c,d=r*f-i*c,D=s*f-i*o,O=u*E-l*y,w=u*p-g*y,L=u*m-h*y,N=l*p-g*E,I=l*m-h*E,k=g*m-h*p,V=M*k-S*I+C*N+T*L-d*w+D*O;return V?(V=1/V,e[0]=(c*k-o*I+f*N)*V,e[1]=(s*I-r*k-i*N)*V,e[2]=(E*D-p*d+m*T)*V,e[3]=(g*d-l*D-h*T)*V,e[4]=(o*L-a*k-f*w)*V,e[5]=(n*k-s*L+i*w)*V,e[6]=(p*C-y*D-m*S)*V,e[7]=(u*D-g*C+h*S)*V,e[8]=(a*I-c*L+f*O)*V,e[9]=(r*L-n*I-i*O)*V,e[10]=(y*d-E*C+m*M)*V,e[11]=(l*C-u*d-h*M)*V,e[12]=(c*w-a*N-o*O)*V,e[13]=(n*N-r*w+s*O)*V,e[14]=(E*S-y*T-p*M)*V,e[15]=(u*T-l*S+g*M)*V,e):null}function La(e,t,n){var r=n[0],s=n[1],i=n[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*s,e[5]=t[5]*s,e[6]=t[6]*s,e[7]=t[7]*s,e[8]=t[8]*i,e[9]=t[9]*i,e[10]=t[10]*i,e[11]=t[11]*i,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function va(e,t){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]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function nt(){var e=new rt(3);return rt!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Na(e){var t=e[0],n=e[1],r=e[2];return Math.hypot(t,n,r)}function Gt(e,t,n){var r=new rt(3);return r[0]=e,r[1]=t,r[2]=n,r}function Ia(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Ur(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Ra(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function jt(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function ka(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e}function Va(e,t){var n=t[0]-e[0],r=t[1]-e[1],s=t[2]-e[2];return Math.hypot(n,r,s)}function _a(e,t){var n=t[0]-e[0],r=t[1]-e[1],s=t[2]-e[2];return n*n+r*r+s*s}function xa(e,t){var n=t[0],r=t[1],s=t[2],i=n*n+r*r+s*s;return i>0&&(i=1/Math.sqrt(i)),e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e}function Gr(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Ue(e,t,n){var r=t[0],s=t[1],i=t[2],a=n[0],c=n[1],o=n[2];return e[0]=s*o-i*c,e[1]=i*a-r*o,e[2]=r*c-s*a,e}function be(e,t,n){var r=t[0],s=t[1],i=t[2],a=n[3]*r+n[7]*s+n[11]*i+n[15];return a=a||1,e[0]=(n[0]*r+n[4]*s+n[8]*i+n[12])/a,e[1]=(n[1]*r+n[5]*s+n[9]*i+n[13])/a,e[2]=(n[2]*r+n[6]*s+n[10]*i+n[14])/a,e}function bn(e,t,n){var r=t[0],s=t[1],i=t[2];return e[0]=r*n[0]+s*n[3]+i*n[6],e[1]=r*n[1]+s*n[4]+i*n[7],e[2]=r*n[2]+s*n[5]+i*n[8],e}var We=Ra,Aa=Va,Wn=_a,$a=Na;(function(){var e=nt();return function(t,n,r,s,i,a){var c,o;for(n||(n=3),r||(r=0),s?o=Math.min(s*n+r,t.length):o=t.length,c=r;c<o;c+=n)e[0]=t[c],e[1]=t[c+1],e[2]=t[c+2],i(e,e,a),t[c]=e[0],t[c+1]=e[1],t[c+2]=e[2];return t}})();function Ua(){var e=new rt(4);return rt!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function Ga(e,t){var n=t[0],r=t[1],s=t[2],i=t[3],a=n*n+r*r+s*s+i*i;return a>0&&(a=1/Math.sqrt(a)),e[0]=n*a,e[1]=r*a,e[2]=s*a,e[3]=i*a,e}(function(){var e=Ua();return function(t,n,r,s,i,a){var c,o;for(n||(n=4),r||(r=0),s?o=Math.min(s*n+r,t.length):o=t.length,c=r;c<o;c+=n)e[0]=t[c],e[1]=t[c+1],e[2]=t[c+2],e[3]=t[c+3],i(e,e,a),t[c]=e[0],t[c+1]=e[1],t[c+2]=e[2],t[c+3]=e[3];return t}})();function Pn(){var e=new rt(4);return rt!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function ja(e,t,n){n=n*.5;var r=Math.sin(n);return e[0]=r*t[0],e[1]=r*t[1],e[2]=r*t[2],e[3]=Math.cos(n),e}function oe(e,t,n,r){var s=t[0],i=t[1],a=t[2],c=t[3],o=n[0],f=n[1],u=n[2],l=n[3],g,h,y,E,p;return h=s*o+i*f+a*u+c*l,h<0&&(h=-h,o=-o,f=-f,u=-u,l=-l),1-h>da?(g=Math.acos(h),y=Math.sin(g),E=Math.sin((1-r)*g)/y,p=Math.sin(r*g)/y):(E=1-r,p=r),e[0]=E*s+p*o,e[1]=E*i+p*f,e[2]=E*a+p*u,e[3]=E*c+p*l,e}function Fa(e,t){var n=t[0]+t[4]+t[8],r;if(n>0)r=Math.sqrt(n+1),e[3]=.5*r,r=.5/r,e[0]=(t[5]-t[7])*r,e[1]=(t[6]-t[2])*r,e[2]=(t[1]-t[3])*r;else{var s=0;t[4]>t[0]&&(s=1),t[8]>t[s*3+s]&&(s=2);var i=(s+1)%3,a=(s+2)%3;r=Math.sqrt(t[s*3+s]-t[i*3+i]-t[a*3+a]+1),e[s]=.5*r,r=.5/r,e[3]=(t[i*3+a]-t[a*3+i])*r,e[i]=(t[i*3+s]+t[s*3+i])*r,e[a]=(t[a*3+s]+t[s*3+a])*r}return e}var jr=Ga;(function(){var e=nt(),t=Gt(1,0,0),n=Gt(0,1,0);return function(r,s,i){var a=Gr(s,i);return a<-.999999?(Ue(e,t,s),$a(e)<1e-6&&Ue(e,n,s),xa(e,e),ja(r,e,Math.PI),r):a>.999999?(r[0]=0,r[1]=0,r[2]=0,r[3]=1,r):(Ue(e,s,i),r[0]=e[0],r[1]=e[1],r[2]=e[2],r[3]=1+a,jr(r,r))}})();(function(){var e=Pn(),t=Pn();return function(n,r,s,i,a,c){return oe(e,r,a,c),oe(t,s,i,c),oe(n,e,t,2*c*(1-c)),n}})();(function(){var e=Da();return function(t,n,r,s){return e[0]=r[0],e[3]=r[1],e[6]=r[2],e[1]=s[0],e[4]=s[1],e[7]=s[2],e[2]=-n[0],e[5]=-n[1],e[8]=-n[2],jr(t,Fa(t,e))}})();var za=Be,Bt;(function(e){e[e.FAR_REPLICATE=1]="FAR_REPLICATE",e[e.ADJACENT_REPLICATE=3]="ADJACENT_REPLICATE",e[e.SUBRESOLUTION=6]="SUBRESOLUTION",e[e.LOSSY=7]="LOSSY",e[e.FULL_RESOLUTION=8]="FULL_RESOLUTION"})(Bt||(Bt={}));var Ba=Object.freeze({__proto__:null,CalibrationTypes:za,Events:b,ImageQualityStatus:Bt,InterpolationType:St,ViewportType:ze});class Ka{constructor(){this.listeners={},this.debouncedListeners={}}reset(){this.listeners={},this.debouncedListeners={}}addEventListenerOnce(t,n){const r=s=>{this.removeEventListener(t,r),n.call(this,s)};this.addEventListener(t,r)}addEventListener(t,n){this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].indexOf(n)===-1&&this.listeners[t].push(n)}addEventListenerDebounced(t,n,r){this.debouncedListeners[t]=this.debouncedListeners[t]||{};const s=this.debouncedListeners[t];if(!s[n]){const i=a=>{s[n]&&clearTimeout(s[n].timeoutId),s[n].timeoutId=setTimeout(()=>{n.call(this,a)},r)};s[n]={original:n,handle:i,timeoutId:null},this.addEventListener(t,i)}}removeEventListenerDebounced(t,n){var r;if((r=this.debouncedListeners[t])!=null&&r[n]){const s=this.debouncedListeners[t][n];this.removeEventListener(t,s.handle),clearTimeout(s.timeoutId),delete this.debouncedListeners[t][n]}}removeEventListener(t,n){if(!this.listeners[t])return;const r=this.listeners[t],s=r.length;for(let i=0;i<s;i++)if(r[i]===n){r.splice(i,1);return}}dispatchEvent(t){if(!this.listeners[t.type])return!t.defaultPrevented;const n=this.listeners[t.type].slice(),r=n.length;for(let s=0;s<r;s++)try{n[s].call(this,t)}catch(i){console.error(`error in event listener of type: ${t.type}`,i)}return!t.defaultPrevented}}const Z=new Ka;function q(e=Z,t,n=null){if(!t)throw new Error("Event type was not defined");const r=new CustomEvent(t,{detail:n,cancelable:!0});return e==null?void 0:e.dispatchEvent(r)}var X=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function sn(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function ba(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,s.get?s:{enumerable:!0,get:function(){return e[r]}})}),n}var Wa=function e(t,n){if(t===n)return!0;if(t&&n&&typeof t=="object"&&typeof n=="object"){if(t.constructor!==n.constructor)return!1;var r,s,i;if(Array.isArray(t)){if(r=t.length,r!=n.length)return!1;for(s=r;s--!==0;)if(!e(t[s],n[s]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if(i=Object.keys(t),r=i.length,r!==Object.keys(n).length)return!1;for(s=r;s--!==0;)if(!Object.prototype.hasOwnProperty.call(n,i[s]))return!1;for(s=r;s--!==0;){var a=i[s];if(!e(t[a],n[a]))return!1}return!0}return t!==t&&n!==n},Pa=sn(Wa),Hn=Object.prototype.toString,Fr=function(t){var n=Hn.call(t),r=n==="[object Arguments]";return r||(r=n!=="[object Array]"&&t!==null&&typeof t=="object"&&typeof t.length=="number"&&t.length>=0&&Hn.call(t.callee)==="[object Function]"),r},Ge,Yn;function Ha(){if(Yn)return Ge;Yn=1;var e;if(!Object.keys){var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=Fr,s=Object.prototype.propertyIsEnumerable,i=!s.call({toString:null},"toString"),a=s.call(function(){},"prototype"),c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],o=function(g){var h=g.constructor;return h&&h.prototype===g},f={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},u=function(){if(typeof window>"u")return!1;for(var g in window)try{if(!f["$"+g]&&t.call(window,g)&&window[g]!==null&&typeof window[g]=="object")try{o(window[g])}catch{return!0}}catch{return!0}return!1}(),l=function(g){if(typeof window>"u"||!u)return o(g);try{return o(g)}catch{return!1}};e=function(h){var y=h!==null&&typeof h=="object",E=n.call(h)==="[object Function]",p=r(h),m=y&&n.call(h)==="[object String]",M=[];if(!y&&!E&&!p)throw new TypeError("Object.keys called on a non-object");var S=a&&E;if(m&&h.length>0&&!t.call(h,0))for(var C=0;C<h.length;++C)M.push(String(C));if(p&&h.length>0)for(var T=0;T<h.length;++T)M.push(String(T));else for(var d in h)!(S&&d==="prototype")&&t.call(h,d)&&M.push(String(d));if(i)for(var D=l(h),O=0;O<c.length;++O)!(D&&c[O]==="constructor")&&t.call(h,c[O])&&M.push(c[O]);return M}}return Ge=e,Ge}var Ya=Array.prototype.slice,Xa=Fr,Xn=Object.keys,ce=Xn?function(t){return Xn(t)}:Ha(),Jn=Object.keys;ce.shim=function(){if(Object.keys){var t=function(){var n=Object.keys(arguments);return n&&n.length===arguments.length}(1,2);t||(Object.keys=function(r){return Xa(r)?Jn(Ya.call(r)):Jn(r)})}else Object.keys=ce;return Object.keys||ce};var Ja=ce,fe=Object.defineProperty||!1;if(fe)try{fe({},"a",{value:1})}catch{fe=!1}var zr=fe,Qa=SyntaxError,Za=TypeError,qa=Object.getOwnPropertyDescriptor,ue=qa;if(ue)try{ue([],"length")}catch{ue=null}var to=ue,Qn=zr,eo=Qa,Lt=Za,Zn=to,no=function(t,n,r){if(!t||typeof t!="object"&&typeof t!="function")throw new Lt("`obj` must be an object or a function`");if(typeof n!="string"&&typeof n!="symbol")throw new Lt("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new Lt("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new Lt("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new Lt("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new Lt("`loose`, if provided, must be a boolean");var s=arguments.length>3?arguments[3]:null,i=arguments.length>4?arguments[4]:null,a=arguments.length>5?arguments[5]:null,c=arguments.length>6?arguments[6]:!1,o=!!Zn&&Zn(t,n);if(Qn)Qn(t,n,{configurable:a===null&&o?o.configurable:!a,enumerable:s===null&&o?o.enumerable:!s,value:r,writable:i===null&&o?o.writable:!i});else if(c||!s&&!i&&!a)t[n]=r;else throw new eo("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},Pe=zr,Br=function(){return!!Pe};Br.hasArrayLengthDefineBug=function(){if(!Pe)return null;try{return Pe([],"length",{value:1}).length!==1}catch{return!0}};var ro=Br,so=Ja,io=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",ao=Object.prototype.toString,oo=Array.prototype.concat,qn=no,co=function(e){return typeof e=="function"&&ao.call(e)==="[object Function]"},Kr=ro(),fo=function(e,t,n,r){if(t in e){if(r===!0){if(e[t]===n)return}else if(!co(r)||!r())return}Kr?qn(e,t,n,!0):qn(e,t,n)},br=function(e,t){var n=arguments.length>2?arguments[2]:{},r=so(t);io&&(r=oo.call(r,Object.getOwnPropertySymbols(t)));for(var s=0;s<r.length;s+=1)fo(e,r[s],t[r[s]],n[r[s]])};br.supportsDescriptors=!!Kr;var Wr=br,le={exports:{}};typeof self<"u"?le.exports=self:typeof window<"u"?le.exports=window:le.exports=Function("return this")();var Pr=le.exports,uo=Pr,Hr=function(){return typeof X!="object"||!X||X.Math!==Math||X.Array!==Array?uo:X},lo=Wr,go=Hr,ho=function(){var t=go();if(lo.supportsDescriptors){var n=Object.getOwnPropertyDescriptor(t,"globalThis");(!n||n.configurable&&(n.enumerable||!n.writable||globalThis!==t))&&Object.defineProperty(t,"globalThis",{configurable:!0,enumerable:!1,value:t,writable:!0})}else(typeof globalThis!="object"||globalThis!==t)&&(t.globalThis=t);return t},yo=Wr,Eo=Pr,Yr=Hr,po=ho,Co=Yr(),Xr=function(){return Co};yo(Xr,{getPolyfill:Yr,implementation:Eo,shim:po});var mo=Xr,Mo=sn(mo);const tt=Mo(),Jr={vtkObject:()=>null};function et(e){if(e==null||e.isA)return e;if(!e.vtkClass)return tt.console&&tt.console.error&&tt.console.error("Invalid VTK object"),null;const t=Jr[e.vtkClass];if(!t)return tt.console&&tt.console.error&&tt.console.error(`No vtk class found for Object of type ${e.vtkClass}`),null;const n={...e};Object.keys(n).forEach(s=>{n[s]&&typeof n[s]=="object"&&n[s].vtkClass&&(n[s]=et(n[s]))});const r=t(n);return r&&r.modified&&r.modified(),r}function So(e,t){Jr[e]=t}et.register=So;class je extends Array{push(){for(let t=0;t<arguments.length;t++)this.includes(arguments[t])||super.push(arguments[t]);return this.length}}let He=0;const Qr=e=>{throw new Error(`Named parameter '${e}' is missing`)},Zr=Symbol("void");function To(){return He}const qr={};function mt(){}const Do=["log","debug","info","warn","error","time","timeEnd","group","groupEnd"];Do.forEach(e=>{qr[e]=mt});tt.console=console.hasOwnProperty("log")?console:qr;const lt={debug:mt,error:tt.console.error||mt,info:tt.console.info||mt,log:tt.console.log||mt,warn:tt.console.warn||mt};function ts(e,t){lt[e]&&(lt[e]=t||mt)}function es(...e){lt.log(...e)}function ns(...e){lt.info(...e)}function Me(...e){lt.debug(...e)}function F(...e){lt.error(...e)}function Le(...e){lt.warn(...e)}const tr={};function rs(e){tr[e]||(lt.error(e),tr[e]=!0)}const B=Object.create(null);B.Float32Array=Float32Array;B.Float64Array=Float64Array;B.Uint8Array=Uint8Array;B.Int8Array=Int8Array;B.Uint16Array=Uint16Array;B.Int16Array=Int16Array;B.Uint32Array=Uint32Array;B.Int32Array=Int32Array;B.Uint8ClampedArray=Uint8ClampedArray;try{B.BigInt64Array=BigInt64Array,B.BigUint64Array=BigUint64Array}catch{}function ve(e,...t){return new(B[e]||Float64Array)(...t)}function an(e,...t){return(B[e]||Float64Array).from(...t)}function Ne(e){return e.charAt(0).toUpperCase()+e.slice(1)}function G(e){return Ne(e[0]==="_"?e.slice(1):e)}function ss(e){return e.charAt(0).toLowerCase()+e.slice(1)}function is(e,t=2,n=1e3){const r=["TB","GB","MB","KB"];let s=Number(e),i="B";for(;s>n;)s/=n,i=r.pop();return`${s.toFixed(t)} ${i}`}function as(e,t=" "){const n=[];let r=e;for(;r>1e3;)n.push(`000${r%1e3}`.slice(-3)),r=Math.floor(r/1e3);return r>0&&n.push(r),n.reverse(),n.join(t)}function os(e){Object.keys(e).forEach(t=>{Array.isArray(e[t])&&(e[t]=[].concat(e[t]))})}function Oo(e){return Object.values(B).some(t=>e instanceof t)}function wo(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}return!1}function Lo(e,t){return Object.keys(e).find(n=>e[n]===t)}function cs(e){return e&&e.isA?e.getState():e}function on(e){setTimeout(e,0)}function fs(e,t){const n=performance.now();e.finally(()=>{const r=performance.now()-n;t(r)})}function cn(e={},t={}){os(t);const n=[];if(Number.isInteger(t.mtime)||(t.mtime=++He),!("classHierarchy"in t))t.classHierarchy=new je("vtkObject");else if(!(t.classHierarchy instanceof je)){const i=new je;for(let a=0;a<t.classHierarchy.length;a++)i.push(t.classHierarchy[a]);t.classHierarchy=i}function r(i){n[i]=null}function s(i){function a(){r(i)}return Object.freeze({unsubscribe:a})}return e.isDeleted=()=>!!t.deleted,e.modified=i=>{if(t.deleted){F("instance deleted - cannot call any method");return}i&&i<e.getMTime()||(t.mtime=++He,n.forEach(a=>a&&a(e)))},e.onModified=i=>{if(t.deleted)return F("instance deleted - cannot call any method"),null;const a=n.length;return n.push(i),s(a)},e.getMTime=()=>t.mtime,e.isA=i=>{let a=t.classHierarchy.length;for(;a--;)if(t.classHierarchy[a]===i)return!0;return!1},e.getClassName=(i=0)=>t.classHierarchy[t.classHierarchy.length-1-i],e.set=(i={},a=!1,c=!1)=>{let o=!1;return Object.keys(i).forEach(f=>{const u=c?null:e[`set${Ne(f)}`];u&&Array.isArray(i[f])&&u.length>1?o=u(...i[f])||o:u?o=u(i[f])||o:(["mtime"].indexOf(f)===-1&&!a&&Le(`Warning: Set value to model directly ${f}, ${i[f]}`),o=t[f]!==i[f]||o,t[f]=i[f])}),o},e.get=(...i)=>{if(!i.length)return t;const a={};return i.forEach(c=>{a[c]=t[c]}),a},e.getReferenceByName=i=>t[i],e.delete=()=>{Object.keys(t).forEach(i=>delete t[i]),n.forEach((i,a)=>r(a)),t.deleted=!0},e.getState=()=>{if(t.deleted)return null;const i={...t,vtkClass:e.getClassName()};Object.keys(i).forEach(c=>{i[c]===null||i[c]===void 0||c[0]==="_"?delete i[c]:i[c].isA?i[c]=i[c].getState():Array.isArray(i[c])?i[c]=i[c].map(cs):Oo(i[c])&&(i[c]=Array.from(i[c]))});const a={};return Object.keys(i).sort().forEach(c=>{a[c]=i[c]}),a.mtime&&delete a.mtime,a},e.shallowCopy=(i,a=!1)=>{if(i.getClassName()!==e.getClassName())throw new Error(`Cannot ShallowCopy ${i.getClassName()} into ${e.getClassName()}`);const c=i.get(),o=Object.keys(t).sort();Object.keys(c).sort().forEach(u=>{const l=o.indexOf(u);l===-1?a&&Me(`add ${u} in shallowCopy`):o.splice(l,1),t[u]=c[u]}),o.length&&a&&Me(`Untouched keys: ${o.join(", ")}`),e.modified()},e.toJSON=function(){return e.getState()},e}const vo={object(e,t,n){return function(){return{...t[n.name]}}}};function Wt(e,t,n){n.forEach(r=>{if(typeof r=="object"){const s=vo[r.type];s?e[`get${G(r.name)}`]=s(e,t,r):e[`get${G(r.name)}`]=()=>t[r.name]}else e[`get${G(r)}`]=()=>t[r]})}const us={enum(e,t,n){const r=`_on${G(n.name)}Changed`;return s=>{var i;if(typeof s=="string"){if(n.enum[s]!==void 0)return t[n.name]!==n.enum[s]?(t[n.name]=n.enum[s],e.modified(),!0):!1;throw F(`Set Enum with invalid argument ${n}, ${s}`),new RangeError("Set Enum with invalid string argument")}if(typeof s=="number"){if(t[n.name]!==s){if(Object.keys(n.enum).map(a=>n.enum[a]).indexOf(s)!==-1){const a=t[n.name];return t[n.name]=s,(i=t[r])==null||i.call(t,e,t,s,a),e.modified(),!0}throw F(`Set Enum outside numeric range ${n}, ${s}`),new RangeError("Set Enum outside numeric range")}return!1}throw F(`Set Enum with invalid argument (String/Number) ${n}, ${s}`),new TypeError("Set Enum with invalid argument (String/Number)")}},object(e,t,n){var s;((s=n.params)==null?void 0:s.length)===1&&Le('Setter of type "object" with a single "param" field is not supported');const r=`_on${G(n.name)}Changed`;return(...i)=>{var c,o;let a;if(i.length>1&&((c=n.params)!=null&&c.length)?a=n.params.reduce((f,u,l)=>Object.assign(f,{[u]:i[l]}),{}):a=i[0],!Pa(t[n.name],a)){const f=t[n.name];return t[n.name]=a,(o=t[r])==null||o.call(t,e,t,a,f),e.modified(),!0}return!1}}};function er(e){if(typeof e=="object"){const t=us[e.type];if(t)return(n,r)=>t(n,r,e);throw F(`No setter for field ${e}`),new TypeError("No setter for field")}return function(n,r){const s=`_on${G(e)}Changed`;return function(a){var c;if(r.deleted)return F("instance deleted - cannot call any method"),!1;if(r[e]!==a){const o=r[e.name];return r[e]=a,(c=r[s])==null||c.call(r,n,r,a,o),n.modified(),!0}return!1}}}function Ie(e,t,n){n.forEach(r=>{typeof r=="object"?e[`set${G(r.name)}`]=er(r)(e,t):e[`set${G(r)}`]=er(r)(e,t)})}function fn(e,t,n){Wt(e,t,n),Ie(e,t,n)}function un(e,t,n){n.forEach(r=>{e[`get${G(r)}`]=()=>t[r]?Array.from(t[r]):t[r],e[`get${G(r)}ByReference`]=()=>t[r]})}function ln(e,t,n,r,s=void 0){n.forEach(i=>{if(t[i]&&r&&t[i].length!==r)throw new RangeError(`Invalid initial number of values for array (${i})`);const a=`_on${G(i)}Changed`;e[`set${G(i)}`]=(...c)=>{var l;if(t.deleted)return F("instance deleted - cannot call any method"),!1;let o=c,f,u=!1;if(o.length===1&&(o[0]==null||o[0].length>=0)&&(o=o[0],u=!0),o==null)f=t[i]!==o;else{if(r&&o.length!==r)if(o.length<r&&s!==void 0)for(o=Array.from(o),u=!1;o.length<r;)o.push(s);else throw new RangeError(`Invalid number of values for array setter (${i})`);f=t[i]==null||t[i].length!==o.length;for(let g=0;!f&&g<o.length;++g)f=t[i][g]!==o[g];f&&u&&(o=Array.from(o))}if(f){const g=t[i.name];t[i]=o,(l=t[a])==null||l.call(t,e,t,o,g),e.modified()}return f},e[`set${G(i)}From`]=c=>{const o=t[i];c.forEach((f,u)=>{o[u]=f})}})}function ls(e,t,n,r,s=void 0){un(e,t,n),ln(e,t,n,r,s)}function gs(e,t,n){for(let r=0;r<n.length;r++){const s=n[r];t[s]!==void 0&&(t[`_${s}`]=t[s],delete t[s])}}function hs(e,t,n,r){t.inputData?t.inputData=t.inputData.map(et):t.inputData=[],t.inputConnection?t.inputConnection=t.inputConnection.map(et):t.inputConnection=[],t.output?t.output=t.output.map(et):t.output=[],t.inputArrayToProcess?t.inputArrayToProcess=t.inputArrayToProcess.map(et):t.inputArrayToProcess=[],t.numberOfInputs=n;function s(h,y=0){if(t.deleted){F("instance deleted - cannot call any method");return}if(y>=t.numberOfInputs){F(`algorithm ${e.getClassName()} only has ${t.numberOfInputs} input ports. To add more input ports, use addInputData()`);return}(t.inputData[y]!==h||t.inputConnection[y])&&(t.inputData[y]=h,t.inputConnection[y]=null,e.modified&&e.modified())}function i(h=0){return t.inputConnection[h]&&(t.inputData[h]=t.inputConnection[h]()),t.inputData[h]}function a(h,y=0){if(t.deleted){F("instance deleted - cannot call any method");return}if(y>=t.numberOfInputs){let E=`algorithm ${e.getClassName()} only has `;E+=`${t.numberOfInputs}`,E+=" input ports. To add more input ports, use addInputConnection()",F(E);return}t.inputData[y]=null,t.inputConnection[y]=h}function c(h=0){return t.inputConnection[h]}function o(){let h=t.numberOfInputs;for(;h&&!t.inputData[h-1]&&!t.inputConnection[h-1];)h--;return h===t.numberOfInputs&&t.numberOfInputs++,h}function f(h){if(t.deleted){F("instance deleted - cannot call any method");return}a(h,o())}function u(h){if(t.deleted){F("instance deleted - cannot call any method");return}s(h,o())}function l(h=0){return t.deleted?(F("instance deleted - cannot call any method"),null):(e.shouldUpdate()&&e.update(),t.output[h])}e.shouldUpdate=()=>{var p,m;const h=e.getMTime();let y=1/0,E=r;for(;E--;){if(!t.output[E]||t.output[E].isDeleted())return!0;const M=t.output[E].getMTime();if(M<h)return!0;M<y&&(y=M)}for(E=t.numberOfInputs;E--;)if((p=t.inputConnection[E])!=null&&p.filter.shouldUpdate()||((m=e.getInputData(E))==null?void 0:m.getMTime())>y)return!0;return!1};function g(h=0){const y=()=>l(h);return y.filter=e,y}if(t.numberOfInputs){let h=t.numberOfInputs;for(;h--;)t.inputData.push(null),t.inputConnection.push(null);e.setInputData=s,e.setInputConnection=a,e.addInputData=u,e.addInputConnection=f,e.getInputData=i,e.getInputConnection=c}r&&(e.getOutputData=l,e.getOutputPort=g),e.update=()=>{const h=[];if(t.numberOfInputs){let y=0;for(;y<t.numberOfInputs;)h[y]=e.getInputData(y),y++}e.requestData&&!e.isDeleted()&&e.shouldUpdate()&&e.requestData(h,t.output)},e.getNumberOfInputPorts=()=>t.numberOfInputs,e.getNumberOfOutputPorts=()=>r||t.output.length,e.getInputArrayToProcess=h=>{const y=t.inputArrayToProcess[h],E=t.inputData[h];return y&&E?E[`get${y.fieldAssociation}`]().getArray(y.arrayName):null},e.setInputArrayToProcess=(h,y,E,p="Scalars")=>{for(;t.inputArrayToProcess.length<h;)t.inputArrayToProcess.push(null);t.inputArrayToProcess[h]={arrayName:y,fieldAssociation:E,attributeType:p}}}const gn=Symbol("Event abort");function ys(e,t,n){const r=[],s=e.delete;let i=1;function a(f){for(let u=0;u<r.length;++u){const[l]=r[u];if(l===f){r.splice(u,1);return}}}function c(f){function u(){a(f)}return Object.freeze({unsubscribe:u})}function o(){if(t.deleted){F("instance deleted - cannot call any method");return}const f=r.slice();for(let u=0;u<f.length;++u){const[,l,g]=f[u];if(l){if(g<0)setTimeout(()=>l.apply(e,arguments),1-g);else if(l.apply(e,arguments)===gn)break}}}e[`invoke${G(n)}`]=o,e[`on${G(n)}`]=(f,u=0)=>{if(!f.apply)return console.error(`Invalid callback for event ${n}`),null;if(t.deleted)return F("instance deleted - cannot call any method"),null;const l=i++;return r.push([l,f,u]),r.sort((g,h)=>h[2]-g[2]),c(l)},e.delete=()=>{s(),r.forEach(([f])=>a(f))}}function hn(e,t){const n=(r={})=>{const s={},i={};return e(i,s,r),Object.freeze(i)};return t&&et.register(t,n),n}function Es(...e){return(...t)=>e.filter(n=>!!n).map(n=>n(...t))}function yn(e){return e&&e.isA&&e.isA("vtkObject")}function Se(e,t,n=[],r=[]){if(yn(e)){if(r.indexOf(e)>=0)return n;r.push(e);const s=t(e);s!==void 0&&n.push(s);const i=e.get();Object.keys(i).forEach(a=>{const c=i[a];Array.isArray(c)?c.forEach(o=>{Se(o,t,n,r)}):Se(c,t,n,r)})}return n}function ps(e,t,n){let r;const s=(...i)=>{const a=this,c=()=>{r=null,n||e.apply(a,i)},o=n&&!r;clearTimeout(r),r=setTimeout(c,t),o&&e.apply(a,i)};return s.cancel=()=>clearTimeout(r),s}function Cs(e,t){let n=!1,r=null;function s(){n=!1,r!==null&&(i(...r),r=null)}function i(...a){if(n){r=a;return}n=!0,e(...a),setTimeout(s,t)}return i}function En(e,t,n={}){t.keystore=Object.assign(t.keystore||{},n),e.setKey=(r,s)=>{t.keystore[r]=s},e.getKey=r=>t.keystore[r],e.getAllKeys=()=>Object.keys(t.keystore),e.deleteKey=r=>delete t.keystore[r],e.clearKeystore=()=>e.getAllKeys().forEach(r=>delete t.keystore[r])}let No=1;const qt="__root__";function ms(e,t){En(e,t);const n=e.delete;t.proxyId=`${No++}`,t.ui=JSON.parse(JSON.stringify(t.ui||[])),Wt(e,t,["proxyId","proxyGroup","proxyName"]),fn(e,t,["proxyManager"]);const r={},s={};function i(f,u){s[u]||(s[u]=[]);const l=s[u];for(let g=0;g<f.length;g++)l.push(f[g].name),r[f[g].name]=f[g],f[g].children&&f[g].children.length&&i(f[g].children,f[g].name)}i(t.ui,qt),e.updateUI=f=>{t.ui=JSON.parse(JSON.stringify(f||[])),Object.keys(r).forEach(u=>delete r[u]),Object.keys(s).forEach(u=>delete s[u]),i(t.ui,qt),e.modified()};function a(f=qt){return s[f]}e.updateProxyProperty=(f,u)=>{const l=r[f];l?Object.assign(l,u):r[f]={...u}},e.activate=()=>{if(t.proxyManager){const f=`setActive${G(e.getProxyGroup().slice(0,-1))}`;t.proxyManager[f]&&t.proxyManager[f](e)}},t.propertyLinkSubscribers={},e.registerPropertyLinkForGC=(f,u)=>{u in t.propertyLinkSubscribers||(t.propertyLinkSubscribers[u]=[]),t.propertyLinkSubscribers[u].push(f)},e.gcPropertyLinks=f=>{const u=t.propertyLinkSubscribers[f]||[];for(;u.length;)u.pop().unbind(e)},t.propertyLinkMap={},e.getPropertyLink=(f,u=!1)=>{if(t.propertyLinkMap[f])return t.propertyLinkMap[f];let l=null;const g=[];let h=0,y=!1;function E(C,T=!1){if(y)return null;const d=[];let D=null;for(h=g.length;h--;){const w=g[h];w.instance===C?D=w:d.push(w)}if(!D)return null;const O=D.instance[`get${G(D.propertyName)}`]();if(!wo(O,l)||T){for(l=O,y=!0;d.length;){const w=d.pop();w.instance.set({[w.propertyName]:l})}y=!1}return t.propertyLinkMap[f].persistent&&(t.propertyLinkMap[f].value=O),O}function p(C,T){const d=[];for(h=g.length;h--;){const D=g[h];D.instance===C&&(D.propertyName===T||T===void 0)&&(D.subscription.unsubscribe(),d.push(h))}for(;d.length;)g.splice(d.pop(),1)}function m(C,T,d=!1){const D=C.onModified(E),O=g[0];return g.push({instance:C,propertyName:T,subscription:D}),d&&(t.propertyLinkMap[f].persistent&&t.propertyLinkMap[f].value!==void 0?C.set({[T]:t.propertyLinkMap[f].value}):O&&E(O.instance,!0)),{unsubscribe:()=>p(C,T)}}function M(){for(;g.length;)g.pop().subscription.unsubscribe()}const S={bind:m,unbind:p,unsubscribe:M,persistent:u};return t.propertyLinkMap[f]=S,S};function c(f=qt){const u=[],l=t.proxyId,g=a(f)||[];for(let h=0;h<g.length;h++){const y=g[h],E=e[`get${G(y)}`],p=E?E():void 0,m={id:l,name:y,value:p},M=c(y);M.length&&(m.children=M),u.push(m)}return u}e.listPropertyNames=()=>c().map(f=>f.name),e.getPropertyByName=f=>c().find(u=>u.name===f),e.getPropertyDomainByName=f=>(r[f]||{}).domain,e.getProxySection=()=>({id:t.proxyId,name:t.proxyGroup,ui:t.ui,properties:c()}),e.delete=()=>{const f=Object.keys(t.propertyLinkMap);let u=f.length;for(;u--;)t.propertyLinkMap[f[u]].unsubscribe();Object.keys(t.propertyLinkSubscribers).forEach(e.gcPropertyLinks),n()},e.getState=()=>null;function o(){if(t.links)for(let f=0;f<t.links.length;f++){const{link:u,property:l,persistent:g,updateOnBind:h,type:y}=t.links[f];if(y==="application"){const E=t.proxyManager.getPropertyLink(u,g);e.registerPropertyLinkForGC(E,"application"),E.bind(e,l,h)}}}on(o)}function Ms(e,t,n){const r=e.delete,s=[],i=Object.keys(n);let a=i.length;for(;a--;){const c=i[a],{modelKey:o,property:f,modified:u=!0}=n[c],l=G(f),g=G(c);e[`get${g}`]=t[o][`get${l}`],e[`set${g}`]=t[o][`set${l}`],u&&s.push(t[o].onModified(e.modified))}e.delete=()=>{for(;s.length;)s.pop().unsubscribe();r()}}function Ss(e,t,n={},r={}){t.this=e;function s(c){const o=Object.keys(c);let f=o.length;for(;f--;){const u=o[f];t[u].set(c[u])}}const i=Object.keys(r);let a=i.length;for(;a--;){const c=i[a];t[c]=r[c];const o=n[c];e[`set${G(c)}`]=f=>{if(f!==t[c]){t[c]=f;const u=o[f];s(u),e.modified()}}}i.length&&Wt(e,t,i)}const nr=10,rr=40,sr=800;function Ts(e){let t=0,n=0,r=0,s=0;return"detail"in e&&(n=e.detail),"wheelDelta"in e&&(n=-e.wheelDelta/120),"wheelDeltaY"in e&&(n=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),r=t*nr,s=n*nr,"deltaY"in e&&(s=e.deltaY),"deltaX"in e&&(r=e.deltaX),(r||s)&&e.deltaMode&&(e.deltaMode===1?(r*=rr,s*=rr):(r*=sr,s*=sr)),r&&!t&&(t=r<1?-1:1),s&&!n&&(n=s<1?-1:1),{spinX:t,spinY:n||t,pixelX:r,pixelY:s||r}}var v={algo:hs,capitalize:Ne,chain:Es,debounce:ps,enumToString:Lo,event:ys,EVENT_ABORT:gn,formatBytesToProperUnit:is,formatNumbersWithThousandSeparator:as,get:Wt,getArray:un,getCurrentGlobalMTime:To,getStateArrayMapFunc:cs,isVtkObject:yn,keystore:En,measurePromiseExecution:fs,moveToProtected:gs,newInstance:hn,newTypedArray:ve,newTypedArrayFrom:an,normalizeWheel:Ts,obj:cn,proxy:ms,proxyPropertyMapping:Ms,proxyPropertyState:Ss,safeArrays:os,set:Ie,setArray:ln,setGet:fn,setGetArray:ls,setImmediate:on,setLoggerFunction:ts,throttle:Cs,traverseInstanceTree:Se,TYPED_ARRAYS:B,uncapitalize:ss,VOID:Zr,vtkDebugMacro:Me,vtkErrorMacro:F,vtkInfoMacro:ns,vtkLogMacro:es,vtkOnceErrorMacro:rs,vtkWarningMacro:Le,objectSetterMap:us,requiredParam:Qr},Io=Object.freeze({__proto__:null,requiredParam:Qr,VOID:Zr,setLoggerFunction:ts,vtkLogMacro:es,vtkInfoMacro:ns,vtkDebugMacro:Me,vtkErrorMacro:F,vtkWarningMacro:Le,vtkOnceErrorMacro:rs,TYPED_ARRAYS:B,newTypedArray:ve,newTypedArrayFrom:an,capitalize:Ne,_capitalize:G,uncapitalize:ss,formatBytesToProperUnit:is,formatNumbersWithThousandSeparator:as,setImmediateVTK:on,measurePromiseExecution:fs,obj:cn,get:Wt,set:Ie,setGet:fn,getArray:un,setArray:ln,setGetArray:ls,moveToProtected:gs,algo:hs,EVENT_ABORT:gn,event:ys,newInstance:hn,chain:Es,isVtkObject:yn,traverseInstanceTree:Se,debounce:ps,throttle:Cs,keystore:En,proxy:ms,proxyPropertyMapping:Ms,proxyPropertyState:Ss,normalizeWheel:Ts,default:v}),pn={exports:{}};pn.exports;(function(e){(function(t,n,r){function s(o){var f=this,u=c();f.next=function(){var l=2091639*f.s0+f.c*23283064365386963e-26;return f.s0=f.s1,f.s1=f.s2,f.s2=l-(f.c=l|0)},f.c=1,f.s0=u(" "),f.s1=u(" "),f.s2=u(" "),f.s0-=u(o),f.s0<0&&(f.s0+=1),f.s1-=u(o),f.s1<0&&(f.s1+=1),f.s2-=u(o),f.s2<0&&(f.s2+=1),u=null}function i(o,f){return f.c=o.c,f.s0=o.s0,f.s1=o.s1,f.s2=o.s2,f}function a(o,f){var u=new s(o),l=f&&f.state,g=u.next;return g.int32=function(){return u.next()*4294967296|0},g.double=function(){return g()+(g()*2097152|0)*11102230246251565e-32},g.quick=g,l&&(typeof l=="object"&&i(l,u),g.state=function(){return i(u,{})}),g}function c(){var o=4022871197,f=function(u){u=String(u);for(var l=0;l<u.length;l++){o+=u.charCodeAt(l);var g=.02519603282416938*o;o=g>>>0,g-=o,g*=o,o=g>>>0,g-=o,o+=g*4294967296}return(o>>>0)*23283064365386963e-26};return f}n&&n.exports?n.exports=a:this.alea=a})(X,e)})(pn);var Ro=pn.exports,Cn={exports:{}};Cn.exports;(function(e){(function(t,n,r){function s(c){var o=this,f="";o.x=0,o.y=0,o.z=0,o.w=0,o.next=function(){var l=o.x^o.x<<11;return o.x=o.y,o.y=o.z,o.z=o.w,o.w^=o.w>>>19^l^l>>>8},c===(c|0)?o.x=c:f+=c;for(var u=0;u<f.length+64;u++)o.x^=f.charCodeAt(u)|0,o.next()}function i(c,o){return o.x=c.x,o.y=c.y,o.z=c.z,o.w=c.w,o}function a(c,o){var f=new s(c),u=o&&o.state,l=function(){return(f.next()>>>0)/4294967296};return l.double=function(){do var g=f.next()>>>11,h=(f.next()>>>0)/4294967296,y=(g+h)/(1<<21);while(y===0);return y},l.int32=f.next,l.quick=l,u&&(typeof u=="object"&&i(u,f),l.state=function(){return i(f,{})}),l}n&&n.exports?n.exports=a:this.xor128=a})(X,e)})(Cn);var ko=Cn.exports,mn={exports:{}};mn.exports;(function(e){(function(t,n,r){function s(c){var o=this,f="";o.next=function(){var l=o.x^o.x>>>2;return o.x=o.y,o.y=o.z,o.z=o.w,o.w=o.v,(o.d=o.d+362437|0)+(o.v=o.v^o.v<<4^(l^l<<1))|0},o.x=0,o.y=0,o.z=0,o.w=0,o.v=0,c===(c|0)?o.x=c:f+=c;for(var u=0;u<f.length+64;u++)o.x^=f.charCodeAt(u)|0,u==f.length&&(o.d=o.x<<10^o.x>>>4),o.next()}function i(c,o){return o.x=c.x,o.y=c.y,o.z=c.z,o.w=c.w,o.v=c.v,o.d=c.d,o}function a(c,o){var f=new s(c),u=o&&o.state,l=function(){return(f.next()>>>0)/4294967296};return l.double=function(){do var g=f.next()>>>11,h=(f.next()>>>0)/4294967296,y=(g+h)/(1<<21);while(y===0);return y},l.int32=f.next,l.quick=l,u&&(typeof u=="object"&&i(u,f),l.state=function(){return i(f,{})}),l}n&&n.exports?n.exports=a:this.xorwow=a})(X,e)})(mn);var Vo=mn.exports,Mn={exports:{}};Mn.exports;(function(e){(function(t,n,r){function s(c){var o=this;o.next=function(){var u=o.x,l=o.i,g,h;return g=u[l],g^=g>>>7,h=g^g<<24,g=u[l+1&7],h^=g^g>>>10,g=u[l+3&7],h^=g^g>>>3,g=u[l+4&7],h^=g^g<<7,g=u[l+7&7],g=g^g<<13,h^=g^g<<9,u[l]=h,o.i=l+1&7,h};function f(u,l){var g,h=[];if(l===(l|0))h[0]=l;else for(l=""+l,g=0;g<l.length;++g)h[g&7]=h[g&7]<<15^l.charCodeAt(g)+h[g+1&7]<<13;for(;h.length<8;)h.push(0);for(g=0;g<8&&h[g]===0;++g);for(g==8?h[7]=-1:h[g],u.x=h,u.i=0,g=256;g>0;--g)u.next()}f(o,c)}function i(c,o){return o.x=c.x.slice(),o.i=c.i,o}function a(c,o){c==null&&(c=+new Date);var f=new s(c),u=o&&o.state,l=function(){return(f.next()>>>0)/4294967296};return l.double=function(){do var g=f.next()>>>11,h=(f.next()>>>0)/4294967296,y=(g+h)/(1<<21);while(y===0);return y},l.int32=f.next,l.quick=l,u&&(u.x&&i(u,f),l.state=function(){return i(f,{})}),l}n&&n.exports?n.exports=a:this.xorshift7=a})(X,e)})(Mn);var _o=Mn.exports,Sn={exports:{}};Sn.exports;(function(e){(function(t,n,r){function s(c){var o=this;o.next=function(){var u=o.w,l=o.X,g=o.i,h,y;return o.w=u=u+1640531527|0,y=l[g+34&127],h=l[g=g+1&127],y^=y<<13,h^=h<<17,y^=y>>>15,h^=h>>>12,y=l[g]=y^h,o.i=g,y+(u^u>>>16)|0};function f(u,l){var g,h,y,E,p,m=[],M=128;for(l===(l|0)?(h=l,l=null):(l=l+"\0",h=0,M=Math.max(M,l.length)),y=0,E=-32;E<M;++E)l&&(h^=l.charCodeAt((E+32)%l.length)),E===0&&(p=h),h^=h<<10,h^=h>>>15,h^=h<<4,h^=h>>>13,E>=0&&(p=p+1640531527|0,g=m[E&127]^=h+p,y=g==0?y+1:0);for(y>=128&&(m[(l&&l.length||0)&127]=-1),y=127,E=4*128;E>0;--E)h=m[y+34&127],g=m[y=y+1&127],h^=h<<13,g^=g<<17,h^=h>>>15,g^=g>>>12,m[y]=h^g;u.w=p,u.X=m,u.i=y}f(o,c)}function i(c,o){return o.i=c.i,o.w=c.w,o.X=c.X.slice(),o}function a(c,o){c==null&&(c=+new Date);var f=new s(c),u=o&&o.state,l=function(){return(f.next()>>>0)/4294967296};return l.double=function(){do var g=f.next()>>>11,h=(f.next()>>>0)/4294967296,y=(g+h)/(1<<21);while(y===0);return y},l.int32=f.next,l.quick=l,u&&(u.X&&i(u,f),l.state=function(){return i(f,{})}),l}n&&n.exports?n.exports=a:this.xor4096=a})(X,e)})(Sn);var xo=Sn.exports,Tn={exports:{}};Tn.exports;(function(e){(function(t,n,r){function s(c){var o=this,f="";o.next=function(){var l=o.b,g=o.c,h=o.d,y=o.a;return l=l<<25^l>>>7^g,g=g-h|0,h=h<<24^h>>>8^y,y=y-l|0,o.b=l=l<<20^l>>>12^g,o.c=g=g-h|0,o.d=h<<16^g>>>16^y,o.a=y-l|0},o.a=0,o.b=0,o.c=-1640531527,o.d=1367130551,c===Math.floor(c)?(o.a=c/4294967296|0,o.b=c|0):f+=c;for(var u=0;u<f.length+20;u++)o.b^=f.charCodeAt(u)|0,o.next()}function i(c,o){return o.a=c.a,o.b=c.b,o.c=c.c,o.d=c.d,o}function a(c,o){var f=new s(c),u=o&&o.state,l=function(){return(f.next()>>>0)/4294967296};return l.double=function(){do var g=f.next()>>>11,h=(f.next()>>>0)/4294967296,y=(g+h)/(1<<21);while(y===0);return y},l.int32=f.next,l.quick=l,u&&(typeof u=="object"&&i(u,f),l.state=function(){return i(f,{})}),l}n&&n.exports?n.exports=a:this.tychei=a})(X,e)})(Tn);var Ao=Tn.exports,ds={exports:{}},$o={},Uo=Object.freeze({__proto__:null,default:$o}),Go=ba(Uo);(function(e){(function(t,n,r){var s=256,i=6,a=52,c="random",o=r.pow(s,i),f=r.pow(2,a),u=f*2,l=s-1,g;function h(C,T,d){var D=[];T=T==!0?{entropy:!0}:T||{};var O=m(p(T.entropy?[C,S(n)]:C??M(),3),D),w=new y(D),L=function(){for(var N=w.g(i),I=o,k=0;N<f;)N=(N+k)*s,I*=s,k=w.g(1);for(;N>=u;)N/=2,I/=2,k>>>=1;return(N+k)/I};return L.int32=function(){return w.g(4)|0},L.quick=function(){return w.g(4)/4294967296},L.double=L,m(S(w.S),n),(T.pass||d||function(N,I,k,V){return V&&(V.S&&E(V,w),N.state=function(){return E(w,{})}),k?(r[c]=N,I):N})(L,O,"global"in T?T.global:this==r,T.state)}function y(C){var T,d=C.length,D=this,O=0,w=D.i=D.j=0,L=D.S=[];for(d||(C=[d++]);O<s;)L[O]=O++;for(O=0;O<s;O++)L[O]=L[w=l&w+C[O%d]+(T=L[O])],L[w]=T;(D.g=function(N){for(var I,k=0,V=D.i,P=D.j,j=D.S;N--;)I=j[V=l&V+1],k=k*s+j[l&(j[V]=j[P=l&P+I])+(j[P]=I)];return D.i=V,D.j=P,k})(s)}function E(C,T){return T.i=C.i,T.j=C.j,T.S=C.S.slice(),T}function p(C,T){var d=[],D=typeof C,O;if(T&&D=="object")for(O in C)try{d.push(p(C[O],T-1))}catch{}return d.length?d:D=="string"?C:C+"\0"}function m(C,T){for(var d=C+"",D,O=0;O<d.length;)T[l&O]=l&(D^=T[l&O]*19)+d.charCodeAt(O++);return S(T)}function M(){try{var C;return g&&(C=g.randomBytes)?C=C(s):(C=new Uint8Array(s),(t.crypto||t.msCrypto).getRandomValues(C)),S(C)}catch{var T=t.navigator,d=T&&T.plugins;return[+new Date,t,d,t.screen,S(n)]}}function S(C){return String.fromCharCode.apply(0,C)}if(m(r.random(),n),e.exports){e.exports=h;try{g=Go}catch{}}else r["seed"+c]=h})(typeof self<"u"?self:X,[],Math)})(ds);var jo=ds.exports,Fo=Ro,zo=ko,Bo=Vo,Ko=_o,bo=xo,Wo=Ao,Dt=jo;Dt.alea=Fo;Dt.xor128=zo;Dt.xorwow=Bo;Dt.xorshift7=Ko;Dt.xor4096=bo;Dt.tychei=Wo;var Po=Dt,Ho=sn(Po);const Yo=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],Xo=[1,0,0,0,1,0,0,0,1],dn=1e-6,Dn=1e-12,{vtkErrorMacro:Ds,vtkWarningMacro:Tt}=v;let Os=0;const ir=20;function Pt(e){return()=>Ds(`vtkMath::${e} - NOT IMPLEMENTED`)}function Ft(e,t,n,r){let s;for(let i=0;i<t;i++)s=e[n*t+i],e[n*t+i]=e[r*t+i],e[r*t+i]=s}function xt(e,t,n,r){let s;for(let i=0;i<t;i++)s=e[i*t+n],e[i*t+n]=e[i*t+r],e[i*t+r]=s}function $(e=3){const t=Array(e);for(let n=0;n<e;++n)t[n]=0;return t}const Jo=()=>Math.PI;function Qo(e,t){return t>1023?e*2**1023*2**(t-1023):t<-1074?e*2**-1074*2**(t+1074):e*2**t}function Zo(e){return e/180*Math.PI}function qo(e){return e*180/Math.PI}const{round:tc,floor:ec,ceil:nc,min:rc,max:sc}=Math;function ic(e,t=0,n=1){let r=1/0;for(let s=t,i=e.length;s<i;s+=n)e[s]<r&&(r=e[s]);return r}function ac(e,t=0,n=1){let r=-1/0;for(let s=t,i=e.length;s<i;s+=n)r<e[s]&&(r=e[s]);return r}function oc(e,t=0,n=1){let r=1/0,s=-1/0;for(let i=t,a=e.length;i<a;i+=n)e[i]<r&&(r=e[i]),s<e[i]&&(s=e[i]);return[r,s]}const cc=Pt("ceilLog2"),fc=Pt("factorial");function ws(e){let t=1;for(;t<e;)t*=2;return t}function uc(e){return e===ws(e)}function lc(e,t){let n=1;for(let r=1;r<=t;++r)n*=(e-r+1)/r;return Math.floor(n)}function gc(e,t){if(e<t)return 0;const n=$(t);for(let r=0;r<t;++r)n[r]=r;return n}function hc(e,t,n){let r=0;for(let s=t-1;s>=0;--s)if(n[s]<e-t+s){let i=n[s]+1;for(;s<t;)n[s++]=i++;r=1;break}return r}function yc(e){Ho(`${e}`,{global:!0}),Os=e}function Ec(){return Os}function pc(e=0,t=1){const n=t-e;return e+n*Math.random()}const Cc=Pt("gaussian");function Re(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n}function z(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n}function Ls(e,t){return e[0]*=t,e[1]*=t,e[2]*=t,e}function vs(e,t){return e[0]*=t,e[1]*=t,e}function Ye(e,t,n,r){return r[0]=e[0]+t[0]*n,r[1]=e[1]+t[1]*n,r[2]=e[2]+t[2]*n,r}function mc(e,t,n,r){return r[0]=e[0]+t[0]*n,r[1]=e[1]+t[1]*n,r}function R(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Mc(e,t,n){n[0]=e[0]*t[0],n[1]=e[0]*t[1],n[2]=e[0]*t[2],n[3]=e[1]*t[0],n[4]=e[1]*t[1],n[5]=e[1]*t[2],n[6]=e[2]*t[0],n[7]=e[2]*t[1],n[8]=e[2]*t[2]}function Q(e,t,n){const r=e[1]*t[2]-e[2]*t[1],s=e[2]*t[0]-e[0]*t[2],i=e[0]*t[1]-e[1]*t[0];return n[0]=r,n[1]=s,n[2]=i,n}function J(e,t=3){switch(t){case 1:return Math.abs(e);case 2:return Math.sqrt(e[0]*e[0]+e[1]*e[1]);case 3:return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);default:{let n=0;for(let r=0;r<t;r++)n+=e[r]*e[r];return Math.sqrt(n)}}}function it(e){const t=J(e);return t!==0&&(e[0]/=t,e[1]/=t,e[2]/=t),t}function Sc(e,t,n,r){const s=e[0]*e[0],i=e[1]*e[1],a=e[2]*e[2],c=Math.sqrt(s+i+a);let o,f,u;s>i&&s>a?(o=0,f=1,u=2):i>a?(o=1,f=2,u=0):(o=2,f=0,u=1);const l=e[o]/c,g=e[f]/c,h=e[u]/c,y=Math.sqrt(l*l+h*h);if(r!==0){const E=Math.sin(r),p=Math.cos(r);t&&(t[o]=(h*p-l*g*E)/y,t[f]=E*y,t[u]=(-(l*p)-g*h*E)/y),n&&(n[o]=(-(h*E)-l*g*p)/y,n[f]=p*y,n[u]=(l*E-g*h*p)/y)}else t&&(t[o]=h/y,t[f]=0,t[u]=-l/y),n&&(n[o]=-l*g/y,n[f]=y,n[u]=-g*h/y)}function Tc(e,t,n){const r=R(t,t);if(r===0)return n[0]=0,n[1]=0,n[2]=0,!1;const s=R(e,t)/r;for(let i=0;i<3;i++)n[i]=t[i];return Ls(n,s),!0}function Xe(e,t){return e[0]*t[0]+e[1]*t[1]}function dc(e,t,n){const r=Xe(t,t);if(r===0)return n[0]=0,n[1]=0,!1;const s=Xe(e,t)/r;for(let i=0;i<2;i++)n[i]=t[i];return vs(n,s),!0}function W(e,t){return(e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])+(e[2]-t[2])*(e[2]-t[2])}function Dc(e,t){const n=[0,0,0];return Q(e,t,n),Math.atan2(J(n),R(e,t))}function Oc(e,t,n){const r=Math.abs(e-n);return 1/Math.sqrt(2*Math.PI*t)*Math.exp(-(r**2)/(2*t))}function wc(e,t,n){const r=Math.abs(e-n);return Math.exp(-(r**2)/(2*t))}function Lc(e,t,n){n[0]=e[0]*t[0],n[1]=e[0]*t[1],n[2]=e[1]*t[0],n[3]=e[1]*t[1]}function Ns(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1])}function vc(e){const t=Ns(e);return t!==0&&(e[0]/=t,e[1]/=t),t}function U(...e){return e.length===2?e[0][0]*e[1][1]-e[1][0]*e[0][1]:e.length===4?e[0]*e[3]-e[1]*e[2]:Number.NaN}function Nc(e,t){let n,r,s;const i=[0,0,0];for(let a=0;a<3;a++)s=Math.abs(e[a*3]),(r=Math.abs(e[a*3+1]))>s&&(s=r),(r=Math.abs(e[a*3+2]))>s&&(s=r),i[a]=1/s;s=i[0]*Math.abs(e[0]),n=0,(r=i[1]*Math.abs(e[3]))>=s&&(s=r,n=1),(r=i[2]*Math.abs(e[6]))>=s&&(n=2),n!==0&&(Ft(e,3,n,0),i[n]=i[0]),t[0]=n,e[3]/=e[0],e[6]/=e[0],e[4]-=e[3]*e[1],e[7]-=e[6]*e[1],s=i[1]*Math.abs(e[4]),n=1,(r=i[2]*Math.abs(e[7]))>=s&&(n=2,Ft(e,3,1,2),i[2]=i[1]),t[1]=n,e[7]/=e[4],e[5]-=e[3]*e[2],e[8]-=e[6]*e[2]+e[7]*e[5],t[2]=2}function Ic(e,t,n){let r=n[t[0]];n[t[0]]=n[0],n[0]=r,r=n[t[1]],n[t[1]]=n[1],n[1]=r-e[3]*n[0],r=n[t[2]],n[t[2]]=n[2],n[2]=r-e[6]*n[0]-e[7]*n[1],n[2]/=e[8],n[1]=(n[1]-e[5]*n[2])/e[4],n[0]=(n[0]-e[1]*n[1]-e[2]*n[2])/e[0]}function Rc(e,t,n){const r=e[0],s=e[1],i=e[2],a=e[3],c=e[4],o=e[5],f=e[6],u=e[7],l=e[8],g=+U(c,u,o,l),h=-U(a,f,o,l),y=+U(a,f,c,u),E=-U(s,u,i,l),p=+U(r,f,i,l),m=-U(r,f,s,u),M=+U(s,c,i,o),S=-U(r,a,i,o),C=+U(r,a,s,c),T=r*g+s*h+i*y,d=g*t[0]+E*t[1]+M*t[2],D=h*t[0]+p*t[1]+S*t[2],O=y*t[0]+m*t[1]+C*t[2];n[0]=d/T,n[1]=D/T,n[2]=O/T}function kc(e,t,n){const r=e[0]*t[0]+e[1]*t[1]+e[2]*t[2],s=e[3]*t[0]+e[4]*t[1]+e[5]*t[2],i=e[6]*t[0]+e[7]*t[1]+e[8]*t[2];n[0]=r,n[1]=s,n[2]=i}function Je(e,t,n){const r=[...e],s=[...t];for(let i=0;i<3;i++)n[i]=r[0]*s[i]+r[1]*s[i+3]+r[2]*s[i+6],n[i+3]=r[3]*s[i]+r[4]*s[i+3]+r[5]*s[i+6],n[i+6]=r[6]*s[i]+r[7]*s[i+3]+r[8]*s[i+6]}function Vc(e,t,n,r,s,i,a){r!==s&&Ds("Number of columns of A must match number of rows of B.");const c=[...e],o=[...t];for(let f=0;f<n;f++)for(let u=0;u<i;u++){a[f*i+u]=0;for(let l=0;l<r;l++)a[f*i+u]+=c[f*r+l]*o[u+i*l]}}function kt(e,t){let n;n=e[3],t[3]=e[1],t[1]=n,n=e[6],t[6]=e[2],t[2]=n,n=e[7],t[7]=e[5],t[5]=n,t[0]=e[0],t[4]=e[4],t[8]=e[8]}function _c(e,t){const n=e[0],r=e[1],s=e[2],i=e[3],a=e[4],c=e[5],o=e[6],f=e[7],u=e[8],l=+U(a,f,c,u),g=-U(i,o,c,u),h=+U(i,o,a,f),y=-U(r,f,s,u),E=+U(n,o,s,u),p=-U(n,o,r,f),m=+U(r,a,s,c),M=-U(n,i,s,c),S=+U(n,i,r,a),C=n*l+r*g+s*h;C===0&&Tt("Matrix has 0 determinant"),t[0]=l/C,t[3]=g/C,t[6]=h/C,t[1]=y/C,t[4]=E/C,t[7]=p/C,t[2]=m/C,t[5]=M/C,t[8]=S/C}function ke(e){return e[0]*e[4]*e[8]+e[3]*e[7]*e[2]+e[6]*e[1]*e[5]-e[0]*e[7]*e[5]-e[3]*e[1]*e[8]-e[6]*e[4]*e[2]}function Is(e,t,n=dn){if(e.length!==t.length)return!1;function r(s,i){return Math.abs(s-t[i])<=n}return e.every(r)}const On=Is;function Rs(e){for(let t=0;t<3;t++)e[t*3]=e[t*3+1]=e[t*3+2]=0,e[t*3+t]=1}function ks(e,t){for(let n=0;n<e;n++){for(let r=0;r<e;r++)t[n*e+r]=0;t[n*e+n]=1}return t}function xc(e,t=dn){return On(e,Yo,t)}function Ac(e,t=dn){return On(e,Xo,t)}function Vs(e,t){const n=e[0]*e[0],r=e[0]*e[1],s=e[0]*e[2],i=e[0]*e[3],a=e[1]*e[1],c=e[2]*e[2],o=e[3]*e[3],f=e[1]*e[2],u=e[1]*e[3],l=e[2]*e[3],g=a+c+o;let h=1/(n+g);const y=(n-g)*h;h*=2,t[0]=a*h+y,t[3]=(f+i)*h,t[6]=(u-s)*h,t[1]=(f-i)*h,t[4]=c*h+y,t[7]=(l+r)*h,t[2]=(u+s)*h,t[5]=(l-r)*h,t[8]=o*h+y}function ge(e,t=0){if(!`${e}`.includes("e"))return+`${Math.round(`${e}e+${t}`)}e-${t}`;const n=`${e}`.split("e");let r="";return+n[1]+t>0&&(r="+"),+`${Math.round(`${+n[0]}e${r}${+n[1]+t}`)}e-${t}`}function Qe(e,t=[0,0,0],n=0){return t[0]=ge(e[0],n),t[1]=ge(e[1],n),t[2]=ge(e[2],n),t}function Ht(e,t,n,r){let s,i,a,c,o,f,u,l,g,h,y,E,p,m,M,S;const C=$(t),T=$(t),d=(O,w,L)=>{m=O[w],p=O[L],O[w]=m-E*(p+m*h),O[L]=p+E*(m-p*h)};for(ks(t,r),o=0;o<t;o++)C[o]=n[o]=e[o+o*t],T[o]=0;for(s=0;s<ir;s++){for(y=0,o=0;o<t-1;o++)for(c=o+1;c<t;c++)y+=Math.abs(e[o*t+c]);if(y===0)break;for(s<3?u=.2*y/(t*t):u=0,o=0;o<t-1;o++)for(c=o+1;c<t;c++)if(m=100*Math.abs(e[o*t+c]),s>3&&Math.abs(n[o])+m===Math.abs(n[o])&&Math.abs(n[c])+m===Math.abs(n[c]))e[o*t+c]=0;else if(Math.abs(e[o*t+c])>u){for(p=n[c]-n[o],Math.abs(p)+m===Math.abs(p)?g=e[o*t+c]/p:(l=.5*p/e[o*t+c],g=1/(Math.abs(l)+Math.sqrt(1+l*l)),l<0&&(g=-g)),M=1/Math.sqrt(1+g*g),E=g*M,h=E/(1+M),p=g*e[o*t+c],T[o]-=p,T[c]+=p,n[o]-=p,n[c]+=p,e[o*t+c]=0,i=0;i<=o-1;i++)d(e,i*t+o,i*t+c);for(i=o+1;i<=c-1;i++)d(e,o*t+i,i*t+c);for(i=c+1;i<t;i++)d(e,o*t+i,c*t+i);for(i=0;i<t;i++)d(r,i*t+o,i*t+c)}for(o=0;o<t;o++)C[o]+=T[o],n[o]=C[o],T[o]=0}if(s>=ir)return Tt("vtkMath::Jacobi: Error extracting eigenfunctions"),0;for(i=0;i<t-1;i++){for(a=i,S=n[a],s=i+1;s<t;s++)(n[s]>=S||Math.abs(n[s]-S)<Dn)&&(a=s,S=n[a]);a!==i&&(n[a]=n[i],n[i]=S,xt(r,t,i,a))}const D=(t>>1)+(t&1);for(f=0,s=0;s<t*t;s++)r[s]>=0&&f++;if(f<D)for(s=0;s<t;s++)r[s*t+i]*=-1;return 1}function _s(e,t){const n=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];n[0]=e[0]+e[4]+e[8],n[5]=e[0]-e[4]-e[8],n[10]=-e[0]+e[4]-e[8],n[15]=-e[0]-e[4]+e[8],n[1]=n[4]=e[7]-e[5],n[2]=n[8]=e[2]-e[6],n[3]=n[12]=e[3]-e[1],n[6]=n[9]=e[3]+e[1],n[7]=n[13]=e[2]+e[6],n[11]=n[14]=e[7]+e[5];const r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],s=[0,0,0,0],i=[...n];Ht(i,4,s,r),t[0]=r[0],t[1]=r[4],t[2]=r[8],t[3]=r[12]}function $c(e,t,n){const r=e[0]*t[0],s=e[0]*t[1],i=e[0]*t[2],a=e[0]*t[3],c=e[1]*t[0],o=e[1]*t[1],f=e[1]*t[2],u=e[1]*t[3],l=e[2]*t[0],g=e[2]*t[1],h=e[2]*t[2],y=e[2]*t[3],E=e[3]*t[0],p=e[3]*t[1],m=e[3]*t[2],M=e[3]*t[3];n[0]=r-o-h-M,n[1]=s+c+y-m,n[2]=i-u+l+p,n[3]=a+f-g+E}function xs(e,t){for(let g=0;g<9;g++)t[g]=e[g];const n=$(3),r=$(3);let s;for(let g=0;g<3;g++){const h=Math.abs(t[g*3]),y=Math.abs(t[g*3+1]),E=Math.abs(t[g*3+2]);s=y>h?y:h,s=E>s?E:s,n[g]=1,s!==0&&(n[g]/=s)}const i=Math.abs(t[0])*n[0],a=Math.abs(t[3])*n[1],c=Math.abs(t[6])*n[2];r[0]=0,s=i,a>=s&&(s=a,r[0]=1),c>=s&&(r[0]=2),r[0]!==0&&(xt(t,3,r[0],0),n[r[0]]=n[0]);const o=Math.abs(t[4])*n[1],f=Math.abs(t[7])*n[2];r[1]=1,s=o,f>=s&&(r[1]=2,xt(t,3,1,2)),r[2]=2;let u=0;if(ke(t)<0){u=1;for(let g=0;g<9;g++)t[g]=-t[g]}const l=$(4);if(_s(t,l),Vs(l,t),u)for(let g=0;g<9;g++)t[g]=-t[g];r[1]!==1&&xt(t,3,r[1],1),r[0]!==0&&xt(t,3,r[0],0)}function As(e,t,n){let r,s,i,a,c,o;const f=[...e];if(Ht(f,3,t,n),t[0]===t[1]&&t[0]===t[2]){Rs(n);return}for(kt(n,n),r=0;r<3;r++)if(t[(r+1)%3]===t[(r+2)%3]){for(o=Math.abs(n[r*3]),a=0,s=1;s<3;s++)o<(c=Math.abs(n[r*3+s]))&&(o=c,a=s);a!==r&&(c=t[a],t[a]=t[r],t[r]=c,Ft(n,3,r,a)),n[a*3+a]<0&&(n[a*3]=-n[a*3],n[a*3+1]=-n[a*3+1],n[a*3+2]=-n[a*3+2]),s=(a+1)%3,i=(a+2)%3,n[s*3]=0,n[s*3+1]=0,n[s*3+2]=0,n[s*3+s]=1;const u=Q([n[a*3],n[a*3+1],n[a*3+2]],[n[s*3],n[s*3+1],n[s*3+2]],[]);it(u);const l=Q(u,[n[a*3],n[a*3+1],n[a*3+2]],[]);for(let g=0;g<3;g++)n[i*3+g]=u[g],n[s*3+g]=l[g];kt(n,n);return}for(o=Math.abs(n[0]),a=0,r=1;r<3;r++)o<(c=Math.abs(n[r*3]))&&(o=c,a=r);if(a!==0){const u=t[a];t[a]=t[0],t[0]=u,Ft(n,3,a,0)}if(Math.abs(n[4])<Math.abs(n[7])){const u=t[2];t[2]=t[1],t[1]=u,Ft(n,3,1,2)}for(r=0;r<2;r++)n[r*3+r]<0&&(n[r*3]=-n[r*3],n[r*3+1]=-n[r*3+1],n[r*3+2]=-n[r*3+2]);ke(n)<0&&(n[6]=-n[6],n[7]=-n[7],n[8]=-n[8]),kt(n,n)}function Uc(e,t,n,r){let s;const i=[...e],a=ke(i);if(a<0)for(s=0;s<9;s++)i[s]=-i[s];xs(i,t),kt(i,i),Je(i,t,r),As(r,n,r),Je(t,r,t),kt(r,r),a<0&&(n[0]=-n[0],n[1]=-n[1],n[2]=-n[2])}function wn(e,t,n){let r,s,i,a,c=0,o,f,u;const l=$(n);for(r=0;r<n;r++){for(a=0,s=0;s<n;s++)(u=Math.abs(e[r*n+s]))>a&&(a=u);if(a===0)return Tt("Unable to factor linear system"),0;l[r]=1/a}for(s=0;s<n;s++){for(r=0;r<s;r++){for(o=e[r*n+s],i=0;i<r;i++)o-=e[r*n+i]*e[i*n+s];e[r*n+s]=o}for(a=0,r=s;r<n;r++){for(o=e[r*n+s],i=0;i<s;i++)o-=e[r*n+i]*e[i*n+s];e[r*n+s]=o,(f=l[r]*Math.abs(o))>=a&&(a=f,c=r)}if(s!==c){for(i=0;i<n;i++)f=e[c*n+i],e[c*n+i]=e[s*n+i],e[s*n+i]=f;l[c]=l[s]}if(t[s]=c,Math.abs(e[s*n+s])<=Dn)return Tt("Unable to factor linear system"),0;if(s!==n-1)for(f=1/e[s*n+s],r=s+1;r<n;r++)e[r*n+s]*=f}return 1}function Ln(e,t,n,r){let s,i,a,c,o;for(a=-1,s=0;s<r;s++){if(c=t[s],o=n[c],n[c]=n[s],a>=0)for(i=a;i<=s-1;i++)o-=e[s*r+i]*n[i];else o!==0&&(a=s);n[s]=o}for(s=r-1;s>=0;s--){for(o=n[s],i=s+1;i<r;i++)o-=e[s*r+i]*n[i];n[s]=o/e[s*r+s]}}function $s(e,t,n){if(n===2){const s=$(2),i=U(e[0],e[1],e[2],e[3]);return i===0?0:(s[0]=(e[3]*t[0]-e[1]*t[1])/i,s[1]=(-(e[2]*t[0])+e[0]*t[1])/i,t[0]=s[0],t[1]=s[1],1)}if(n===1)return e[0]===0?0:(t[0]/=e[0],1);const r=$(n);return wn(e,r,n)===0?0:(Ln(e,r,t,n),1)}function vn(e,t,n,r=null,s=null){const i=r||$(n),a=s||$(n);if(wn(e,i,n)===0)return null;for(let c=0;c<n;c++){for(let o=0;o<n;o++)a[o]=0;a[c]=1,Ln(e,i,a,n);for(let o=0;o<n;o++)t[o*n+c]=a[o]}return t}function Gc(e,t){let n=+Number.MAX_VALUE,r=-Number.MAX_VALUE;for(let s=0;s<t;s++)for(let i=s;i<t;i++)Math.abs(e[s*t+i])>r&&(r=Math.abs(e[s*t+i]));for(let s=0;s<t;s++)Math.abs(e[s*t+s])<n&&(n=Math.abs(e[s*t+s]));return n===0?Number.MAX_VALUE:r/n}function jc(e,t,n){return Ht(e,3,t,n)}function Ze(e,t,n,r){if(e<n)return Tt("Insufficient number of samples. Underdetermined."),0;let s,i,a;const c=$(n*n),o=$(n),f=$(n*n);for(a=0;a<e;a++)for(s=0;s<n;s++)for(i=s;i<n;i++)c[s*n+i]+=t[a*n+s]*t[a*n+i];for(s=0;s<n;s++)for(i=0;i<s;i++)c[s*n+i]=c[i*n+s];for(Ht(c,n,o,f),s=0;s<n;s++)r[s]=f[s*n+n-1];return 1}function Fc(e,t,n,r,s,i,a=!0){if(e<n||e<s)return Tt("Insufficient number of samples. Underdetermined."),0;const c=$(s);let o=1,f,u=0,l,g,h,y=0;if(a){for(g=0;g<s;g++)c[g]=1;for(l=0;l<e;l++)for(g=0;g<s;g++)Math.abs(r[l*s+g])>Dn&&(o=0,c[g]=0);if(o&&s===1)return Tt("Detected homogeneous system (Y=0), calling SolveHomogeneousLeastSquares()"),Ze(e,t,n,i);if(o)y=1;else for(g=0;g<s;g++)c[g]&&(y=1)}y&&(f=$(n),u=Ze(e,t,n,f));const E=$(n*n),p=$(n*n),m=$(n*s);for(h=0;h<e;h++)for(l=0;l<n;l++){for(g=l;g<n;g++)E[l*n+g]+=t[h*n+l]*t[h*n+g];for(g=0;g<s;g++)m[l*s+g]+=t[h*n+l]*r[h*s+g]}for(l=0;l<n;l++)for(g=0;g<l;g++)E[l*n+g]=E[g*n+l];const M=vn(E,p,n);if(M)for(l=0;l<n;l++)for(g=0;g<s;g++)for(i[l*s+g]=0,h=0;h<n;h++)i[l*s+g]+=p[l*n+h]*m[h*s+g];if(y){for(g=0;g<s;g++)if(c[g])for(l=0;l<n;l++)i[l*s+g]=f[l*s]}return y?u&&M:M}function zc(e,t=[0,.5,1]){switch(e.length){case 3:return t[0]=parseInt(e[0],16)*17/255,t[1]=parseInt(e[1],16)*17/255,t[2]=parseInt(e[2],16)*17/255,t;case 4:return t[0]=parseInt(e[1],16)*17/255,t[1]=parseInt(e[2],16)*17/255,t[2]=parseInt(e[3],16)*17/255,t;case 6:return t[0]=parseInt(e.substr(0,2),16)/255,t[1]=parseInt(e.substr(2,2),16)/255,t[2]=parseInt(e.substr(4,2),16)/255,t;case 7:return t[0]=parseInt(e.substr(1,2),16)/255,t[1]=parseInt(e.substr(3,2),16)/255,t[2]=parseInt(e.substr(5,2),16)/255,t;case 9:return t[0]=parseInt(e.substr(1,2),16)/255,t[1]=parseInt(e.substr(3,2),16)/255,t[2]=parseInt(e.substr(5,2),16)/255,t[3]=parseInt(e.substr(7,2),16)/255,t;default:return t}}function Bc(e,t){let n,r;const[s,i,a]=e,c=1/3,o=1/6,f=2/3;let u=s,l=s;i>u?u=i:i<l&&(l=i),a>u?u=a:a<l&&(l=a);const g=u;g>0?r=(u-l)/u:r=0,r>0?(s===u?n=o*(i-a)/(u-l):i===u?n=c+o*(a-s)/(u-l):n=f+o*(s-i)/(u-l),n<0&&(n+=1)):n=0,t[0]=n,t[1]=r,t[2]=g}function Kc(e,t){const[n,r,s]=e,i=1/3,a=1/6,c=2/3,o=5/6;let f,u,l;n>a&&n<=i?(u=1,f=(i-n)/a,l=0):n>i&&n<=.5?(u=1,l=(n-i)/a,f=0):n>.5&&n<=c?(l=1,u=(c-n)/a,f=0):n>c&&n<=o?(l=1,f=(n-c)/a,u=0):n>o&&n<=1?(f=1,l=(1-n)/a,u=0):(f=1,u=n/a,l=0),f=r*f+(1-r),u=r*u+(1-r),l=r*l+(1-r),f*=s,u*=s,l*=s,t[0]=f,t[1]=u,t[2]=l}function Us(e,t){const[n,r,s]=e;let i=(n+16)/116,a=r/500+i,c=i-s/200;i**3>.008856?i**=3:i=(i-16/116)/7.787,a**3>.008856?a**=3:a=(a-16/116)/7.787,c**3>.008856?c**=3:c=(c-16/116)/7.787;const o=.9505,f=1,u=1.089;t[0]=o*a,t[1]=f*i,t[2]=u*c}function Gs(e,t){const[n,r,s]=e,i=.9505,a=1,c=1.089;let o=n/i,f=r/a,u=s/c;o>.008856?o**=1/3:o=7.787*o+16/116,f>.008856?f**=1/3:f=7.787*f+16/116,u>.008856?u**=1/3:u=7.787*u+16/116,t[0]=116*f-16,t[1]=500*(o-f),t[2]=200*(f-u)}function js(e,t){const[n,r,s]=e;let i=n*3.2406+r*-1.5372+s*-.4986,a=n*-.9689+r*1.8758+s*.0415,c=n*.0557+r*-.204+s*1.057;i>.0031308?i=1.055*i**(1/2.4)-.055:i*=12.92,a>.0031308?a=1.055*a**(1/2.4)-.055:a*=12.92,c>.0031308?c=1.055*c**(1/2.4)-.055:c*=12.92;let o=i;o<a&&(o=a),o<c&&(o=c),o>1&&(i/=o,a/=o,c/=o),i<0&&(i=0),a<0&&(a=0),c<0&&(c=0),t[0]=i,t[1]=a,t[2]=c}function Fs(e,t){let[n,r,s]=e;n>.04045?n=((n+.055)/1.055)**2.4:n/=12.92,r>.04045?r=((r+.055)/1.055)**2.4:r/=12.92,s>.04045?s=((s+.055)/1.055)**2.4:s/=12.92,t[0]=n*.4124+r*.3576+s*.1805,t[1]=n*.2126+r*.7152+s*.0722,t[2]=n*.0193+r*.1192+s*.9505}function bc(e,t){const n=[0,0,0];Fs(e,n),Gs(n,t)}function Wc(e,t){const n=[0,0,0];Us(e,n),js(n,t)}function zs(e){return e[0]=1,e[1]=-1,e[2]=1,e[3]=-1,e[4]=1,e[5]=-1,e}function Pc(e){return!(e[1]-e[0]<0)}function Hc(e,t,n){return n[0]=Math.min(e[0],t[0]),n[1]=Math.max(e[0],t[0]),n[2]=Math.min(e[1],t[1]),n[3]=Math.max(e[1],t[1]),n[4]=Math.min(e[2],t[2]),n[5]=Math.max(e[2],t[2]),n}function he(e,t,n){return e<t?t:e>n?n:e}function qe(e,t,n,r=[0,0,0]){return r[0]=he(e[0],t[0],n[0]),r[1]=he(e[1],t[1],n[1]),r[2]=he(e[2],t[2],n[2]),r}function Yc(e,t){let n=0;return t[0]!==t[1]&&(e<t[0]?n=t[0]:e>t[1]?n=t[1]:n=e,n=(n-t[0])/(t[1]-t[0])),n}const Xc=Pt("GetScalarTypeFittingRange"),Jc=Pt("GetAdjustedScalarRange");function Qc(e,t){if(!e||!t)return 0;for(let n=0;n<6;n+=2)if(e[n]<t[n]||e[n]>t[n+1]||e[n+1]<t[n]||e[n+1]>t[n+1])return 0;return 1}function Zc(e,t,n){if(!e||!t)return 0;for(let r=0;r<6;r+=2)if(e[r]+n[r/2]<t[r]||e[r]-n[r/2]>t[r+1]||e[r+1]+n[r/2]<t[r]||e[r+1]-n[r/2]>t[r+1])return 0;return 1}function qc(e,t,n){if(!e||!t||!n)return 0;for(let r=0;r<3;r++)if(e[r]+n[r]<t[2*r]||e[r]-n[r]>t[2*r+1])return 0;return 1}function tf(e,t,n,r){const s=$(3),i=$(3),a=$(3),c=$(3),o=$(3),f=$(3);for(let C=0;C<3;++C)s[C]=e[C]-t[C],i[C]=t[C]-n[C],a[C]=n[C]-e[C],c[C]=-s[C],o[C]=-i[C],f[C]=-a[C];const u=J(c),l=J(o),g=J(a),h=$(3);Q(s,i,h);const y=J(h),E=u*l*g/(2*y),p=2*y*y,m=l*l*R(s,f)/p,M=g*g*R(c,i)/p,S=u*u*R(a,o)/p;for(let C=0;C<3;++C)r[C]=m*e[C]+M*t[C]+S*n[C];return E}const ef=1/0,nf=-1/0,rf=e=>!Number.isFinite(e),{isFinite:sf,isNaN:ar}=Number;function af(){return[].concat([Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE])}function of(e){let t=-1,n=-1;for(let r=0;r<e.length;r++){const s=Math.abs(e[r]);s>t&&(n=r,t=s)}return n}function cf(e){let t=1/0,n=-1;for(let r=0;r<e.length;r++){const s=Math.abs(e[r]);s<t&&(n=r,t=s)}return n}function ff(e,t=3){const n=new Array(t),r=new Array(t);for(let i=0;i<t;++i)n[i]=i,r[i]=i;for(let i=t-1;i>0;i--){let a=-1/0,c=0,o=0;for(let f=0;f<=i;++f){const u=n[f];for(let l=0;l<=i;++l){const g=r[l],h=Math.abs(e[u+t*g]);h>a&&(a=h,c=f,o=l)}}[n[i],n[c]]=[n[c],n[i]],[r[i],r[o]]=[r[o],r[i]]}const s=new Array(t*t).fill(0);for(let i=0;i<t;++i){const a=n[i]+t*r[i];s[a]=e[a]<0?-1:1}return s}function Bs(e){const t=Math.floor(e*255);return t>15?t.toString(16):`0${t.toString(16)}`}function uf(e,t="#"){return`${t}${e.map(Bs).join("")}`}function te(e){return Math.round(e*255)}function lf(e){return e.length===3?`rgb(${e.map(te).join(", ")})`:`rgba(${te(e[0]||0)}, ${te(e[1]||0)}, ${te(e[2]||0)}, ${e[3]||0})`}var or={Pi:Jo,ldexp:Qo,radiansFromDegrees:Zo,degreesFromRadians:qo,round:tc,floor:ec,ceil:nc,ceilLog2:cc,min:rc,max:sc,arrayMin:ic,arrayMax:ac,arrayRange:oc,isPowerOfTwo:uc,nearestPowerOfTwo:ws,factorial:fc,binomial:lc,beginCombination:gc,nextCombination:hc,randomSeed:yc,getSeed:Ec,random:pc,gaussian:Cc,add:Re,subtract:z,multiplyScalar:Ls,multiplyScalar2D:vs,multiplyAccumulate:Ye,multiplyAccumulate2D:mc,dot:R,outer:Mc,cross:Q,norm:J,normalize:it,perpendiculars:Sc,projectVector:Tc,projectVector2D:dc,distance2BetweenPoints:W,angleBetweenVectors:Dc,gaussianAmplitude:Oc,gaussianWeight:wc,dot2D:Xe,outer2D:Lc,norm2D:Ns,normalize2D:vc,determinant2x2:U,LUFactor3x3:Nc,LUSolve3x3:Ic,linearSolve3x3:Rc,multiply3x3_vect3:kc,multiply3x3_mat3:Je,multiplyMatrix:Vc,transpose3x3:kt,invert3x3:_c,identity3x3:Rs,identity:ks,isIdentity:xc,isIdentity3x3:Ac,determinant3x3:ke,quaternionToMatrix3x3:Vs,areEquals:Is,areMatricesEqual:On,roundNumber:ge,roundVector:Qe,matrix3x3ToQuaternion:_s,multiplyQuaternion:$c,orthogonalize3x3:xs,diagonalize3x3:As,singularValueDecomposition3x3:Uc,solveLinearSystem:$s,invertMatrix:vn,luFactorLinearSystem:wn,luSolveLinearSystem:Ln,estimateMatrixCondition:Gc,jacobi:jc,jacobiN:Ht,solveHomogeneousLeastSquares:Ze,solveLeastSquares:Fc,hex2float:zc,rgb2hsv:Bc,hsv2rgb:Kc,lab2xyz:Us,xyz2lab:Gs,xyz2rgb:js,rgb2xyz:Fs,rgb2lab:bc,lab2rgb:Wc,uninitializeBounds:zs,areBoundsInitialized:Pc,computeBoundsFromPoints:Hc,clampValue:he,clampVector:qe,clampAndNormalizeValue:Yc,getScalarTypeFittingRange:Xc,getAdjustedScalarRange:Jc,extentIsWithinOtherExtent:Qc,boundsIsWithinOtherBounds:Zc,pointIsWithinBounds:qc,solve3PointCircle:tf,inf:ef,negInf:nf,isInf:rf,isNan:ar,isNaN:ar,isFinite:sf,createUninitializedBounds:af,getMajorAxisIndex:of,getMinorAxisIndex:cf,getSparseOrthogonalMatrix:ff,floatToHex2:Bs,floatRGB2HexCode:uf,float2CssRGBA:lf};function gf(e,t){t.classHierarchy.push("vtkImplicitFunction"),e.functionValue=n=>{if(!t.transform)return e.evaluateFunction(n);const r=[];return t.transform.transformPoint(n,r),e.evaluateFunction(r)},e.evaluateFunction=n=>{v.vtkErrorMacro("not implemented")}}const hf={};function Ks(e,t,n={}){Object.assign(t,hf,n),v.obj(e,t),v.setGet(e,t,["transform"]),gf(e,t)}const yf=v.newInstance(Ks,"vtkImplicitFunction");var Ef={newInstance:yf,extend:Ks};const tn=1e-6,bs="coincide",Ws="disjoint";function pf(e,t,n){return e[0]*(n[0]-t[0])+e[1]*(n[1]-t[1])+e[2]*(n[2]-t[2])}function Ps(e,t,n){const r=n[0]*(e[0]-t[0])+n[1]*(e[1]-t[1])+n[2]*(e[2]-t[2]);return Math.abs(r)}function Hs(e,t,n,r){const s=[];z(e,t,s);const i=R(n,s);r[0]=e[0]-i*n[0],r[1]=e[1]-i*n[1],r[2]=e[2]-i*n[2]}function Ys(e,t,n){const r=R(e,t);let s=R(t,t);return s===0&&(s=1),n[0]=e[0]-r*t[0]/s,n[1]=e[1]-r*t[1]/s,n[2]=e[2]-r*t[2]/s,n}function Xs(e,t,n,r){const s=[];z(e,t,s);const i=R(n,s),a=R(n,n);a!==0?(r[0]=e[0]-i*n[0]/a,r[1]=e[1]-i*n[1]/a,r[2]=e[2]-i*n[2]/a):(r[0]=e[0],r[1]=e[1],r[2]=e[2])}function Js(e,t,n,r){const s={intersection:!1,betweenPoints:!1,t:Number.MAX_VALUE,x:[]},i=[],a=[];z(t,e,i),z(n,e,a);const c=R(r,a),o=R(r,i);let f,u;return o<0?f=-o:f=o,c<0?u=-c*tn:u=c*tn,f<=u||(s.t=c/o,s.x[0]=e[0]+s.t*i[0],s.x[1]=e[1]+s.t*i[1],s.x[2]=e[2]+s.t*i[2],s.intersection=!0,s.betweenPoints=s.t>=0&&s.t<=1),s}function Qs(e,t,n,r){const s={intersection:!1,l0:[],l1:[],error:null},i=[];Q(t,r,i);const a=i.map(l=>Math.abs(l));if(a[0]+a[1]+a[2]<tn){const l=[];return z(e,n,l),R(t,l)===0?s.error=bs:s.error=Ws,s}let c;a[0]>a[1]&&a[0]>a[2]?c="x":a[1]>a[2]?c="y":c="z";const o=[],f=-R(t,e),u=-R(r,n);switch(c){case"x":o[0]=0,o[1]=(u*t[2]-f*r[2])/i[0],o[2]=(f*r[1]-u*t[1])/i[0];break;case"y":o[0]=(f*r[2]-u*t[2])/i[1],o[1]=0,o[2]=(u*t[0]-f*r[0])/i[1];break;case"z":o[0]=(u*t[1]-f*r[1])/i[2],o[1]=(f*r[0]-u*t[0])/i[2],o[2]=0;break}return s.l0=o,Re(o,i,s.l1),s.intersection=!0,s}const Cf={evaluate:pf,distanceToPlane:Ps,projectPoint:Hs,projectVector:Ys,generalizedProjectPoint:Xs,intersectWithLine:Js,intersectWithPlane:Qs,DISJOINT:Ws,COINCIDE:bs};function mf(e,t){t.classHierarchy.push("vtkPlane"),e.distanceToPlane=n=>Ps(n,t.origin,t.normal),e.projectPoint=(n,r)=>{Hs(n,t.origin,t.normal,r)},e.projectVector=(n,r)=>Ys(n,t.normal,r),e.push=n=>{if(n!==0)for(let r=0;r<3;r++)t.origin[r]+=n*t.normal[r]},e.generalizedProjectPoint=(n,r)=>{Xs(n,t.origin,t.normal,r)},e.evaluateFunction=(n,r,s)=>Array.isArray(n)?t.normal[0]*(n[0]-t.origin[0])+t.normal[1]*(n[1]-t.origin[1])+t.normal[2]*(n[2]-t.origin[2]):t.normal[0]*(n-t.origin[0])+t.normal[1]*(r-t.origin[1])+t.normal[2]*(s-t.origin[2]),e.evaluateGradient=n=>[t.normal[0],t.normal[1],t.normal[2]],e.intersectWithLine=(n,r)=>Js(n,r,t.origin,t.normal),e.intersectWithPlane=(n,r)=>Qs(n,r,t.origin,t.normal)}const Mf={normal:[0,0,1],origin:[0,0,0]};function Zs(e,t,n={}){Object.assign(t,Mf,n),Ef.extend(e,t,n),v.setGetArray(e,t,["normal","origin"],3),mf(e,t)}const Sf=v.newInstance(Zs,"vtkPlane");var gt={newInstance:Sf,extend:Zs,...Cf};const Ve=[Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE];function qs(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]}function at(e){return(e==null?void 0:e.length)>=6&&e[0]<=e[1]&&e[2]<=e[3]&&e[4]<=e[5]}function Nn(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e}function In(e){return Nn(e,Ve)}function Te(e,t,n,r){const[s,i,a,c,o,f]=e;return typeof t=="number"?(e[0]=s<t?s:t,e[1]=i>t?i:t,e[2]=a<n?a:n,e[3]=c>n?c:n,e[4]=o<r?o:r,e[5]=f>r?f:r):(e[0]=s<t[0]?s:t[0],e[1]=i>t[0]?i:t[0],e[2]=a<t[1]?a:t[1],e[3]=c>t[1]?c:t[1],e[4]=o<t[2]?o:t[2],e[5]=f>t[2]?f:t[2]),e}function Rn(e,t){if(t.length===0)return e;if(Array.isArray(t[0]))for(let n=0;n<t.length;++n)Te(e,...t[n]);else for(let n=0;n<t.length;n+=3)Te(e,...t.slice(n,n+3));return e}function ti(e,t,n,r,s,i,a){const[c,o,f,u,l,g]=e;return a===void 0?(e[0]=Math.min(t[0],c),e[1]=Math.max(t[1],o),e[2]=Math.min(t[2],f),e[3]=Math.max(t[3],u),e[4]=Math.min(t[4],l),e[5]=Math.max(t[5],g)):(e[0]=Math.min(t,c),e[1]=Math.max(n,o),e[2]=Math.min(r,f),e[3]=Math.max(s,u),e[4]=Math.min(i,l),e[5]=Math.max(a,g)),e}function ei(e,t,n,r){const[s,i,a,c,o,f]=e;return e[0]=t,e[1]=t>i?t:i,e[2]=n,e[3]=n>c?n:c,e[4]=r,e[5]=r>f?r:f,s!==t||a!==n||o!==r}function ni(e,t,n,r){const[s,i,a,c,o,f]=e;return e[0]=t<s?t:s,e[1]=t,e[2]=n<a?n:a,e[3]=n,e[4]=r<o?r:o,e[5]=r,i!==t||c!==n||f!==r}function kn(e,t){return t==null?Tf(e):(e[0]-=t,e[1]+=t,e[2]-=t,e[3]+=t,e[4]-=t,e[5]+=t,e)}function Tf(e){const t=[0,0,0];let n=-1,r=0,s=0;for(let i=0;i<3;++i)s=e[i*2+1]-e[i*2],s>r&&(r=s,n=i),t[i]=s>0?1:0;if(n<0)return kn(e,.5);for(let i=0;i<3;++i)if(!t[i]){const a=.005*r;e[i*2]-=a,e[i*2+1]+=a}return e}function Vn(e,t,n,r){return at(e)?(t>=0?(e[0]*=t,e[1]*=t):(e[0]=t*e[1],e[1]=t*e[0]),n>=0?(e[2]*=n,e[3]*=n):(e[2]=n*e[3],e[3]=n*e[2]),r>=0?(e[4]*=r,e[5]*=r):(e[4]=r*e[5],e[5]=r*e[4]),!0):!1}function _n(e){return[.5*(e[0]+e[1]),.5*(e[2]+e[3]),.5*(e[4]+e[5])]}function df(e,t,n,r){if(!at(e))return!1;const s=_n(e);return e[0]-=s[0],e[1]-=s[0],e[2]-=s[1],e[3]-=s[1],e[4]-=s[2],e[5]-=s[2],Vn(e,t,n,r),e[0]+=s[0],e[1]+=s[0],e[2]+=s[1],e[3]+=s[1],e[4]+=s[2],e[5]+=s[2],!0}function zt(e,t){return e[t*2+1]-e[t*2]}function Yt(e){return[zt(e,0),zt(e,1),zt(e,2)]}function ri(e){return e.slice(0,2)}function si(e){return e.slice(2,4)}function ii(e){return e.slice(4,6)}function ai(e){const t=Yt(e);return t[0]>t[1]?t[0]>t[2]?t[0]:t[2]:t[1]>t[2]?t[1]:t[2]}function xn(e){if(at(e)){const t=Yt(e);return t[0]*t[0]+t[1]*t[1]+t[2]*t[2]}return null}function oi(e){const t=xn(e);return t!==null?Math.sqrt(t):null}function _e(e){return[e[0],e[2],e[4]]}function xe(e){return[e[1],e[3],e[5]]}function ee(e,t){return e<=0&&t>=0||e>=0&&t<=0}function An(e,t){return t[0]=[e[0],e[2],e[4]],t[1]=[e[0],e[2],e[5]],t[2]=[e[0],e[3],e[4]],t[3]=[e[0],e[3],e[5]],t[4]=[e[1],e[2],e[4]],t[5]=[e[1],e[2],e[5]],t[6]=[e[1],e[3],e[4]],t[7]=[e[1],e[3],e[5]],t}function ci(e,t,n){return t[0]=e[0],t[1]=e[2],t[2]=e[4],n[0]=e[1],n[1]=e[3],n[2]=e[5],t}function fi(e,t,n=[]){const r=An(e,[]);for(let s=0;s<r.length;++s)be(r[s],r[s],t);return In(n),Rn(n,r)}function ui(e,t=[]){return t[0]=.5*(e[1]-e[0]),t[1]=.5*(e[3]-e[2]),t[2]=.5*(e[5]-e[4]),t}function li(e,t,n,r){const s=[].concat(Ve),i=e.getData();for(let a=0;a<i.length;a+=3){const c=[i[a],i[a+1],i[a+2]],o=R(c,t);s[0]=Math.min(o,s[0]),s[1]=Math.max(o,s[1]);const f=R(c,n);s[2]=Math.min(f,s[2]),s[3]=Math.max(f,s[3]);const u=R(c,r);s[4]=Math.min(u,s[4]),s[5]=Math.max(u,s[5])}return s}function gi(e,t,n,r,s){let i=!0;const a=[];let c=0;const o=[],f=[0,0,0],u=0,l=1,g=2;for(let h=0;h<3;h++)t[h]<e[2*h]?(a[h]=l,f[h]=e[2*h],i=!1):t[h]>e[2*h+1]?(a[h]=u,f[h]=e[2*h+1],i=!1):a[h]=g;if(i)return r[0]=t[0],r[1]=t[1],r[2]=t[2],s[0]=0,1;for(let h=0;h<3;h++)a[h]!==g&&n[h]!==0?o[h]=(f[h]-t[h])/n[h]:o[h]=-1;for(let h=0;h<3;h++)o[c]<o[h]&&(c=h);if(o[c]>1||o[c]<0)return 0;s[0]=o[c];for(let h=0;h<3;h++)if(c!==h){if(r[h]=t[h]+o[c]*n[h],r[h]<e[2*h]||r[h]>e[2*h+1])return 0}else r[h]=f[h];return 1}function hi(e,t,n){const r=[];let s=0,i=1,a=1;for(let c=4;c<=5;++c){r[2]=e[c];for(let o=2;o<=3;++o){r[1]=e[o];for(let f=0;f<=1;++f)if(r[0]=e[f],s=gt.evaluate(n,t,r),a&&(i=s>=0?1:-1,a=0),s===0||i>0&&s<0||i<0&&s>0)return 1}}return 0}function yi(e,t){if(!(at(e)&&at(t)))return!1;const n=[0,0,0,0,0,0];let r;for(let s=0;s<3;s++)if(r=!1,t[s*2]>=e[s*2]&&t[s*2]<=e[s*2+1]?(r=!0,n[s*2]=t[s*2]):e[s*2]>=t[s*2]&&e[s*2]<=t[s*2+1]&&(r=!0,n[s*2]=e[s*2]),t[s*2+1]>=e[s*2]&&t[s*2+1]<=e[s*2+1]?(r=!0,n[s*2+1]=t[2*s+1]):e[s*2+1]>=t[s*2]&&e[s*2+1]<=t[s*2+1]&&(r=!0,n[s*2+1]=e[s*2+1]),!r)return!1;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],!0}function de(e,t){if(!(at(e)&&at(t)))return!1;for(let n=0;n<3;n++)if(!(t[n*2]>=e[n*2]&&t[n*2]<=e[n*2+1])&&!(e[n*2]>=t[n*2]&&e[n*2]<=t[n*2+1])&&!(t[n*2+1]>=e[n*2]&&t[n*2+1]<=e[n*2+1])&&!(e[n*2+1]>=t[n*2]&&e[n*2+1]<=t[n*2+1]))return!1;return!0}function De(e,t,n,r){return!(t<e[0]||t>e[1]||n<e[2]||n>e[3]||r<e[4]||r>e[5])}function Df(e,t){return!(!de(e,t)||!De(e,..._e(t))||!De(e,...xe(t)))}function Ei(e,t,n){const r=[[0,1,2,3,4,5,6,7],[0,1,4,5,2,3,6,7],[0,2,4,6,1,3,5,7]],s=[0,0,0,0,0,0,0,0];let i=0;for(let l=0;l<2;l++)for(let g=2;g<4;g++)for(let h=4;h<6;h++){const y=[e[l],e[g],e[h]];s[i++]=gt.evaluate(n,t,y)}let a=2;for(;a--&&!(ee(s[r[a][0]],s[r[a][4]])&&ee(s[r[a][1]],s[r[a][5]])&&ee(s[r[a][2]],s[r[a][6]])&&ee(s[r[a][3]],s[r[a][7]])););if(a<0)return!1;const c=Math.sign(n[a]),o=Math.abs((e[a*2+1]-e[a*2])*n[a]);let f=c>0?1:0;for(let l=0;l<4;l++){if(o===0)continue;const g=Math.abs(s[r[a][l]])/o;c>0&&g<f&&(f=g),c<0&&g>f&&(f=g)}const u=(1-f)*e[a*2]+f*e[a*2+1];return c>0?e[a*2]=u:e[a*2+1]=u,!0}function pi(e,t){for(let r=0;r<3;++r)t[r]=t[r]<1?1:t[r];let n=t[0]*t[1]*t[2];for(;n>e;){for(let r=0;r<3;++r)t[r]=t[r]>1?t[r]-1:1;n=t[0]*t[1]*t[2]}}function Ci(e,t,n,r=[]){t=t<=0?1:t;let s=0;const i=[0,0,0];let a=-1,c=0;const o=Yt(e),f=o[0]+o[1]+o[2],u=f*(.001/3);for(let E=0;E<3;++E)o[E]>c&&(a=E,c=o[E]),o[E]>u?(i[E]=1,s++):i[E]=0;const l=_e(e),g=xe(e);if(s<1)return n[0]=1,n[1]=1,n[2]=1,r[0]=l[0]-.5,r[1]=g[0]+.5,r[2]=l[1]-.5,r[3]=g[1]+.5,r[4]=l[2]-.5,r[5]=g[2]+.5,1;let h=t;h/=i[0]?o[0]/f:1,h/=i[1]?o[1]/f:1,h/=i[2]?o[2]/f:1,h**=1/s;for(let E=0;E<3;++E)n[E]=i[E]?Math.floor(h*o[E]/f):1,n[E]=n[E]<1?1:n[E];pi(t,n);const y=.5*o[a]/n[a];for(let E=0;E<3;++E)i[E]?(r[2*E]=l[E],r[2*E+1]=g[E]):(r[2*E]=l[E]-y,r[2*E+1]=g[E]+y);return n[0]*n[1]*n[2]}function mi(e,t){if(e[0]>=t[0]&&e[0]<=t[1]&&e[1]>=t[2]&&e[1]<=t[3]&&e[2]>=t[4]&&e[2]<=t[5])return 0;const n=[0,0,0];return e[0]<t[0]?n[0]=t[0]-e[0]:e[0]>t[1]&&(n[0]=e[0]-t[1]),e[1]<t[2]?n[1]=t[2]-e[1]:e[1]>t[3]&&(n[1]=e[1]-t[3]),e[2]<t[4]?n[2]=t[4]-e[2]:e[2]>t[5]&&(n[2]=e[2]-t[5]),R(n,n)}class Of{constructor(t){this.bounds=t,this.bounds||(this.bounds=new Float64Array(Ve))}getBounds(){return this.bounds}equals(t){return qs(this.bounds,t)}isValid(){return at(this.bounds)}setBounds(t){return Nn(this.bounds,t)}reset(){return In(this.bounds)}addPoint(...t){return Te(this.bounds,...t)}addPoints(t){return Rn(this.bounds,t)}addBounds(t,n,r,s,i,a){return ti(this.bounds,t,n,r,s,i,a)}setMinPoint(t,n,r){return ei(this.bounds,t,n,r)}setMaxPoint(t,n,r){return ni(this.bounds,t,n,r)}inflate(t){return kn(this.bounds,t)}scale(t,n,r){return Vn(this.bounds,t,n,r)}getCenter(){return _n(this.bounds)}getLength(t){return zt(this.bounds,t)}getLengths(){return Yt(this.bounds)}getMaxLength(){return ai(this.bounds)}getDiagonalLength(){return oi(this.bounds)}getDiagonalLength2(){return xn(this.bounds)}getMinPoint(){return _e(this.bounds)}getMaxPoint(){return xe(this.bounds)}getXRange(){return ri(this.bounds)}getYRange(){return si(this.bounds)}getZRange(){return ii(this.bounds)}getCorners(t){return An(this.bounds,t)}computeCornerPoints(t,n){return ci(this.bounds,t,n)}computeLocalBounds(t,n,r){return li(this.bounds,t,n,r)}transformBounds(t,n=[]){return fi(this.bounds,t,n)}computeScale3(t){return ui(this.bounds,t)}cutWithPlane(t,n){return Ei(this.bounds,t,n)}intersectBox(t,n,r,s){return gi(this.bounds,t,n,r,s)}intersectPlane(t,n){return hi(this.bounds,t,n)}intersect(t){return yi(this.bounds,t)}intersects(t){return de(this.bounds,t)}containsPoint(t,n,r){return De(this.bounds,t,n,r)}contains(t){return de(this.bounds,t)}computeDivisions(t,n,r=[]){return Ci(this.bounds,t,n,r)}distance2ToBounds(t){return mi(t,this.bounds)}}function wf(e){const t=e&&e.bounds;return new Of(t)}const Lf={equals:qs,isValid:at,setBounds:Nn,reset:In,addPoint:Te,addPoints:Rn,addBounds:ti,setMinPoint:ei,setMaxPoint:ni,inflate:kn,scale:Vn,scaleAboutCenter:df,getCenter:_n,getLength:zt,getLengths:Yt,getMaxLength:ai,getDiagonalLength:oi,getDiagonalLength2:xn,getMinPoint:_e,getMaxPoint:xe,getXRange:ri,getYRange:si,getZRange:ii,getCorners:An,computeCornerPoints:ci,computeLocalBounds:li,transformBounds:fi,computeScale3:ui,cutWithPlane:Ei,intersectBox:gi,intersectPlane:hi,intersect:yi,intersects:de,containsPoint:De,contains:Df,computeDivisions:Ci,clampDivisions:pi,distance2ToBounds:mi,INIT_BOUNDS:Ve};var Y={newInstance:wf,...Lf};const vf={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},Ae={VOID:"",CHAR:"Int8Array",SIGNED_CHAR:"Int8Array",UNSIGNED_CHAR:"Uint8Array",UNSIGNED_CHAR_CLAMPED:"Uint8ClampedArray",SHORT:"Int16Array",UNSIGNED_SHORT:"Uint16Array",INT:"Int32Array",UNSIGNED_INT:"Uint32Array",FLOAT:"Float32Array",DOUBLE:"Float64Array"},Nf=Ae.FLOAT;var Mi={DefaultDataType:Nf,DataTypeByteSize:vf,VtkDataTypes:Ae};const{vtkErrorMacro:If}=Io,{DefaultDataType:Rf}=Mi,kf=1e-6;function en(e,t,n){const r=e.length;let s=Number.MAX_VALUE,i=-Number.MAX_VALUE,a,c;for(c=t;c<r;c+=n)if(!Number.isNaN(e[c])){s=e[c],i=s;break}for(;c<r;c+=n)a=e[c],a<s?s=a:a>i&&(i=a);return{min:s,max:i}}function Vf(){let e=Number.MAX_VALUE,t=-Number.MAX_VALUE,n=0,r=0;return{add(s){e>s&&(e=s),t<s&&(t=s),n++,r+=s},get(){return{min:e,max:t,count:n,sum:r,mean:r/n}},getRange(){return{min:e,max:t}}}}function Si(e,t=0,n=1){if(t<0&&n>1){const s=e.length/n,i=new Float64Array(s);for(let a=0,c=0;a<s;++a){for(let o=c+n;c<o;++c)i[a]+=e[c]*e[c];i[a]**=.5}return en(i,0,1)}return en(e,t<0?0:t,n)}function cr(e,t=0){const n=e||[];for(;n.length<=t;)n.push(null);return n}function $n(e){return Object.prototype.toString.call(e).slice(8,-1)}function _f(e){const t=e.getNumberOfComponents();let n=0;const r=new Array(t);for(let s=0;s<e.getNumberOfTuples();++s){e.getTuple(s,r);const i=J(r,t);i>n&&(n=i)}return n}const xf={computeRange:Si,createRangeHelper:Vf,fastComputeRange:en,getDataType:$n,getMaxNorm:_f};function Af(e,t){t.classHierarchy.push("vtkDataArray");function n(r){if(r<0)return!1;const s=e.getNumberOfComponents(),i=t.values.length/(s>0?s:1);if(r===i)return!0;if(r>i){const a=t.values;return t.values=ve(t.dataType,(r+i)*s),t.values.set(a),!0}return t.size>r*s&&(t.size=r*s,e.dataChange()),!0}e.dataChange=()=>{t.ranges=null,e.modified()},e.allocate=r=>{n(e.getNumberOfTuples()+r)},e.resize=r=>{n(r);const s=r*e.getNumberOfComponents();return t.size!==s?(t.size=s,e.dataChange(),!0):!1},e.initialize=()=>(e.resize(0),e),e.getElementComponentSize=()=>t.values.BYTES_PER_ELEMENT,e.getComponent=(r,s=0)=>t.values[r*t.numberOfComponents+s],e.setComponent=(r,s,i)=>{i!==t.values[r*t.numberOfComponents+s]&&(t.values[r*t.numberOfComponents+s]=i,e.dataChange())},e.getValue=r=>{const s=r/t.numberOfComponents,i=r%t.numberOfComponents;return e.getComponent(s,i)},e.setValue=(r,s)=>{const i=r/t.numberOfComponents,a=r%t.numberOfComponents;e.setComponent(i,a,s)},e.getData=()=>t.size===t.values.length?t.values:t.values.subarray(0,t.size),e.getRange=(r=-1)=>{let s=r;s<0&&(s=t.numberOfComponents===1?0:t.numberOfComponents);let i=null;return t.ranges||(t.ranges=cr(t.ranges,t.numberOfComponents)),i=t.ranges[s],i?(t.rangeTuple[0]=i.min,t.rangeTuple[1]=i.max,t.rangeTuple):(i=Si(e.getData(),r,t.numberOfComponents),t.ranges[s]=i,t.rangeTuple[0]=i.min,t.rangeTuple[1]=i.max,t.rangeTuple)},e.setRange=(r,s)=>{t.ranges||(t.ranges=cr(t.ranges,t.numberOfComponents));const i={min:r.min,max:r.max};return t.ranges[s]=i,t.rangeTuple[0]=i.min,t.rangeTuple[1]=i.max,t.rangeTuple},e.getRanges=(r=!0)=>{if(!r)return structuredClone(t.ranges);const s=[];for(let i=0;i<t.numberOfComponents;i++){const[a,c]=e.getRange(i),o={min:a,max:c};s.push(o)}if(t.numberOfComponents>1){const[i,a]=e.getRange(-1),c={min:i,max:a};s.push(c)}return s},e.setTuple=(r,s)=>{const i=r*t.numberOfComponents;for(let a=0;a<t.numberOfComponents;a++)t.values[i+a]=s[a]},e.setTuples=(r,s)=>{let i=r*t.numberOfComponents;const a=Math.min(s.length,t.size-i);for(let c=0;c<a;)t.values[i++]=s[c++]},e.insertTuple=(r,s)=>(t.size<=r*t.numberOfComponents&&(t.size=(r+1)*t.numberOfComponents,n(r+1)),e.setTuple(r,s),r),e.insertTuples=(r,s)=>{const i=r+s.length/t.numberOfComponents;return t.size<i*t.numberOfComponents&&(t.size=i*t.numberOfComponents,n(i)),e.setTuples(r,s),i},e.insertNextTuple=r=>{const s=t.size/t.numberOfComponents;return e.insertTuple(s,r)},e.insertNextTuples=r=>{const s=t.size/t.numberOfComponents;return e.insertTuples(s,r)},e.findTuple=(r,s=kf)=>{for(let i=0;i<t.size;i+=t.numberOfComponents)if(Math.abs(r[0]-t.values[i])<=s){let a=!0;for(let c=1;c<t.numberOfComponents;++c)if(Math.abs(r[c]-t.values[i+c])>s){a=!1;break}if(a)return i/t.numberOfComponents}return-1},e.getTuple=(r,s=[])=>{const i=t.numberOfComponents||1,a=r*i;switch(i){case 4:s[3]=t.values[a+3];case 3:s[2]=t.values[a+2];case 2:s[1]=t.values[a+1];case 1:s[0]=t.values[a];break;default:for(let c=i-1;c>=0;--c)s[c]=t.values[a+c]}return s},e.getTuples=(r,s)=>{const i=(r??0)*t.numberOfComponents,a=(s??e.getNumberOfTuples())*t.numberOfComponents,c=e.getData().subarray(i,a);return c.length>0?c:null},e.getTupleLocation=(r=1)=>r*t.numberOfComponents,e.getNumberOfComponents=()=>t.numberOfComponents,e.getNumberOfValues=()=>t.size,e.getNumberOfTuples=()=>t.size/t.numberOfComponents,e.getDataType=()=>t.dataType,e.newClone=()=>di({empty:!0,name:t.name,dataType:t.dataType,numberOfComponents:t.numberOfComponents}),e.getName=()=>(t.name||(e.modified(),t.name=`vtkDataArray${e.getMTime()}`),t.name),e.setData=(r,s)=>{t.values=r,t.size=r.length,t.dataType=$n(r),s&&(t.numberOfComponents=s),t.size%t.numberOfComponents!==0&&(t.numberOfComponents=1),e.dataChange()},e.getState=()=>{if(t.deleted)return null;const r={...t,vtkClass:e.getClassName()};r.values=Array.from(r.values),delete r.buffer,Object.keys(r).forEach(i=>{r[i]||delete r[i]});const s={};return Object.keys(r).sort().forEach(i=>{s[i]=r[i]}),s.mtime&&delete s.mtime,s},e.deepCopy=r=>{const s=e.getDataType(),i=t.values;e.shallowCopy(r),t.ranges=structuredClone(r.getRanges()),(i==null?void 0:i.length)>=r.getNumberOfValues()&&s===r.getDataType()?(i.set(r.getData()),t.values=i,e.dataChange()):e.setData(r.getData().slice())},e.interpolateTuple=(r,s,i,a,c,o)=>{const f=t.numberOfComponents||1;(f!==s.getNumberOfComponents()||f!==a.getNumberOfComponents())&&If("numberOfComponents must match");const u=s.getTuple(i),l=a.getTuple(c),g=[];switch(g.length=f,f){case 4:g[3]=u[3]+(l[3]-u[3])*o;case 3:g[2]=u[2]+(l[2]-u[2])*o;case 2:g[1]=u[1]+(l[1]-u[1])*o;case 1:g[0]=u[0]+(l[0]-u[0])*o;break;default:for(let h=0;h<f;h++)g[h]=u[h]+(l[h]-u[h])*o}return e.insertTuple(r,g)}}const $f={name:"",numberOfComponents:1,dataType:Rf,rangeTuple:[0,0]};function Ti(e,t,n={}){if(Object.assign(t,$f,n),Array.isArray(n.values)&&n.dataType===void 0&&console.warn("vtkDataArray.newInstance: no dataType provided, converting to Float32Array"),!t.empty&&!t.values&&!t.size)throw new TypeError("Cannot create vtkDataArray object without: size > 0, values");if(t.values?Array.isArray(t.values)&&(t.values=an(t.dataType,t.values)):t.values=ve(t.dataType,t.size),t.values&&(t.size=t.size??t.values.length,t.dataType=$n(t.values)),cn(e,t),Ie(e,t,["name","numberOfComponents"]),t.size%t.numberOfComponents!==0)throw new RangeError("model.size is not a multiple of model.numberOfComponents");Af(e,t)}const di=hn(Ti,"vtkDataArray");var ut={newInstance:di,extend:Ti,...xf,...Mi};const{vtkErrorMacro:fr,vtkWarningMacro:Uf}=v;function Gf(e,t){t.classHierarchy.push("vtkFieldData");const n=e.getState;t.arrays&&(t.arrays=t.arrays.map(r=>({data:et(r.data)}))),e.initialize=()=>{e.initializeFields(),e.copyAllOn(),e.clearFieldFlags()},e.initializeFields=()=>{t.arrays=[],t.copyFieldFlags={},e.modified()},e.copyStructure=r=>{e.initializeFields(),t.copyFieldFlags=r.getCopyFieldFlags().map(s=>s),t.arrays=r.getArrays().map(s=>({data:s}))},e.getNumberOfArrays=()=>t.arrays.length,e.getNumberOfActiveArrays=()=>t.arrays.length,e.addArray=r=>{const s=r.getName(),{array:i,index:a}=e.getArrayWithIndex(s);return i!=null?(t.arrays[a]={data:r},a):(t.arrays=[].concat(t.arrays,{data:r}),t.arrays.length-1)},e.removeAllArrays=()=>{t.arrays=[]},e.removeArray=r=>{const s=t.arrays.findIndex(i=>i.data.getName()===r);return e.removeArrayByIndex(s)},e.removeArrayByIndex=r=>r!==-1&&r<t.arrays.length?(t.arrays.splice(r,1),!0):!1,e.getArrays=()=>t.arrays.map(r=>r.data),e.getArray=r=>typeof r=="number"?e.getArrayByIndex(r):e.getArrayByName(r),e.getArrayByName=r=>t.arrays.reduce((s,i,a)=>i.data.getName()===r?i.data:s,null),e.getArrayWithIndex=r=>{const s=t.arrays.findIndex(i=>i.data.getName()===r);return{array:s!==-1?t.arrays[s].data:null,index:s}},e.getArrayByIndex=r=>r>=0&&r<t.arrays.length?t.arrays[r].data:null,e.hasArray=r=>e.getArrayWithIndex(r).index>=0,e.getArrayName=r=>{const s=t.arrays[r];return s?s.data.getName():""},e.getCopyFieldFlags=()=>t.copyFieldFlags,e.getFlag=r=>t.copyFieldFlags[r],e.passData=(r,s=-1,i=-1)=>{r.getArrays().forEach(a=>{const c=e.getFlag(a.getName());if(c!==!1&&!(t.doCopyAllOff&&c!==!0)&&a){let o=e.getArrayByName(a.getName());if(o)if(a.getNumberOfComponents()===o.getNumberOfComponents())if(s>-1&&s<a.getNumberOfTuples()){const f=i>-1?i:s;o.insertTuple(f,a.getTuple(s))}else o.insertTuples(0,a.getTuples());else fr("Unhandled case in passData");else if(s<0||s>a.getNumberOfTuples())e.addArray(a),r.getAttributes(a).forEach(f=>{e.setAttribute(a,f)});else{const f=a.getNumberOfComponents();let u=a.getNumberOfValues();const l=i>-1?i:s;u<=l*f&&(u=(l+1)*f),o=ut.newInstance({name:a.getName(),dataType:a.getDataType(),numberOfComponents:f,values:v.newTypedArray(a.getDataType(),u),size:0}),o.insertTuple(l,a.getTuple(s)),e.addArray(o),r.getAttributes(a).forEach(g=>{e.setAttribute(o,g)})}}})},e.interpolateData=(r,s=-1,i=-1,a=-1,c=.5)=>{r.getArrays().forEach(o=>{const f=e.getFlag(o.getName());if(f!==!1&&!(t.doCopyAllOff&&f!==!0)&&o){let u=e.getArrayByName(o.getName());if(u)if(o.getNumberOfComponents()===u.getNumberOfComponents())if(s>-1&&s<o.getNumberOfTuples()){const l=a>-1?a:s;u.interpolateTuple(l,o,s,o,i,c),Uf("Unexpected case in interpolateData")}else u.insertTuples(o.getTuples());else fr("Unhandled case in interpolateData");else if(s<0||i<0||s>o.getNumberOfTuples())e.addArray(o),r.getAttributes(o).forEach(l=>{e.setAttribute(o,l)});else{const l=o.getNumberOfComponents();let g=o.getNumberOfValues();const h=a>-1?a:s;g<=h*l&&(g=(h+1)*l),u=ut.newInstance({name:o.getName(),dataType:o.getDataType(),numberOfComponents:l,values:v.newTypedArray(o.getDataType(),g),size:0}),u.interpolateTuple(h,o,s,o,i,c),e.addArray(u),r.getAttributes(o).forEach(y=>{e.setAttribute(u,y)})}}})},e.copyFieldOn=r=>{t.copyFieldFlags[r]=!0},e.copyFieldOff=r=>{t.copyFieldFlags[r]=!1},e.copyAllOn=()=>{(!t.doCopyAllOn||t.doCopyAllOff)&&(t.doCopyAllOn=!0,t.doCopyAllOff=!1,e.modified())},e.copyAllOff=()=>{(t.doCopyAllOn||!t.doCopyAllOff)&&(t.doCopyAllOn=!1,t.doCopyAllOff=!0,e.modified())},e.clearFieldFlags=()=>{t.copyFieldFlags={}},e.deepCopy=r=>{t.arrays=r.getArrays().map(s=>{const i=s.newClone();return i.deepCopy(s),{data:i}})},e.copyFlags=r=>r.getCopyFieldFlags().map(s=>s),e.reset=()=>t.arrays.forEach(r=>r.data.reset()),e.getMTime=()=>t.arrays.reduce((r,s)=>s.data.getMTime()>r?s.data.getMTime():r,t.mtime),e.getNumberOfComponents=()=>t.arrays.reduce((r,s)=>r+s.data.getNumberOfComponents(),0),e.getNumberOfTuples=()=>t.arrays.length>0?t.arrays[0].getNumberOfTuples():0,e.getState=()=>{const r=n();return r&&(r.arrays=t.arrays.map(s=>({data:s.data.getState()}))),r}}const jf={arrays:[],copyFieldFlags:[],doCopyAllOn:!0,doCopyAllOff:!1};function Di(e,t,n={}){Object.assign(t,jf,n),v.obj(e,t),Gf(e,t)}const Ff=v.newInstance(Di,"vtkFieldData");var zf={newInstance:Ff,extend:Di};const Bf={SCALARS:0,VECTORS:1,NORMALS:2,TCOORDS:3,TENSORS:4,GLOBALIDS:5,PEDIGREEIDS:6,EDGEFLAG:7,NUM_ATTRIBUTES:8},Kf={MAX:0,EXACT:1,NOLIMIT:2},bf={DUPLICATECELL:1,HIGHCONNECTIVITYCELL:2,LOWCONNECTIVITYCELL:4,REFINEDCELL:8,EXTERIORCELL:16,HIDDENCELL:32},Wf={DUPLICATEPOINT:1,HIDDENPOINT:2},Pf={COPYTUPLE:0,INTERPOLATE:1,PASSDATA:2,ALLCOPY:3},Hf="vtkGhostType",Yf={DEFAULT:0,SINGLE:1,DOUBLE:2};var Oi={AttributeCopyOperations:Pf,AttributeLimitTypes:Kf,AttributeTypes:Bf,CellGhostTypes:bf,DesiredOutputPrecision:Yf,PointGhostTypes:Wf,ghostArrayName:Hf};const{AttributeTypes:ot,AttributeCopyOperations:ht}=Oi,{vtkWarningMacro:ne}=v;function Xf(e,t){const n=["Scalars","Vectors","Normals","TCoords","Tensors","GlobalIds","PedigreeIds"];function r(a){let c=n.find(o=>ot[o.toUpperCase()]===a||typeof a!="number"&&o.toLowerCase()===a.toLowerCase());return typeof c>"u"&&(c=null),c}t.classHierarchy.push("vtkDataSetAttributes");const s={...e};e.checkNumberOfComponents=a=>!0,e.setAttribute=(a,c)=>{const o=r(c);if(a&&o.toUpperCase()==="PEDIGREEIDS"&&!a.isA("vtkDataArray"))return ne(`Cannot set attribute ${o}. The attribute must be a vtkDataArray.`),-1;if(a&&!e.checkNumberOfComponents(a,o))return ne(`Cannot set attribute ${o}. Incorrect number of components.`),-1;if(a){const f=e.addArray(a);t[`active${o}`]=f}else t[`active${o}`]=-1;return e.modified(),t[`active${o}`]},e.getAttributes=a=>n.filter(c=>e[`get${c}`]()===a),e.setActiveAttributeByName=(a,c)=>e.setActiveAttributeByIndex(e.getArrayWithIndex(a).index,c),e.setActiveAttributeByIndex=(a,c)=>{const o=r(c);if(a>=0&&a<t.arrays.length){if(o.toUpperCase()!=="PEDIGREEIDS"){const f=e.getArrayByIndex(a);if(!f.isA("vtkDataArray"))return ne(`Cannot set attribute ${o}. Only vtkDataArray subclasses can be set as active attributes.`),-1;if(!e.checkNumberOfComponents(f,o))return ne(`Cannot set attribute ${o}. Incorrect number of components.`),-1}return t[`active${o}`]=a,e.modified(),a}return a===-1&&(t[`active${o}`]=a,e.modified()),-1},e.getActiveAttribute=a=>{const c=r(a);return e[`get${c}`]()},e.removeAllArrays=()=>{n.forEach(a=>{t[`active${a}`]=-1}),s.removeAllArrays()},e.removeArrayByIndex=a=>(a!==-1&&n.forEach(c=>{a===t[`active${c}`]?t[`active${c}`]=-1:a<t[`active${c}`]&&(t[`active${c}`]-=1)}),s.removeArrayByIndex(a)),n.forEach(a=>{const c=`active${a}`;e[`get${a}`]=()=>e.getArrayByIndex(t[c]),e[`set${a}`]=o=>e.setAttribute(o,a),e[`setActive${a}`]=o=>e.setActiveAttributeByIndex(e.getArrayWithIndex(o).index,a),e[`copy${a}Off`]=()=>{const o=a.toUpperCase();t.copyAttributeFlags[ht.PASSDATA][ot[o]]=!1},e[`copy${a}On`]=()=>{const o=a.toUpperCase();t.copyAttributeFlags[ht.PASSDATA][ot[o]]=!0}}),e.initializeAttributeCopyFlags=()=>{t.copyAttributeFlags=[],Object.keys(ht).filter(a=>a!=="ALLCOPY").forEach(a=>{t.copyAttributeFlags[ht[a]]=Object.keys(ot).filter(c=>c!=="NUM_ATTRIBUTES").reduce((c,o)=>(c[ot[o]]=!0,c),[])}),t.copyAttributeFlags[ht.COPYTUPLE][ot.GLOBALIDS]=!1,t.copyAttributeFlags[ht.INTERPOLATE][ot.GLOBALIDS]=!1,t.copyAttributeFlags[ht.COPYTUPLE][ot.PEDIGREEIDS]=!1},e.initialize=v.chain(e.initialize,e.initializeAttributeCopyFlags),t.dataArrays&&Object.keys(t.dataArrays).length&&Object.keys(t.dataArrays).forEach(a=>{!t.dataArrays[a].ref&&t.dataArrays[a].type==="vtkDataArray"&&e.addArray(ut.newInstance(t.dataArrays[a]))});const i=e.shallowCopy;e.shallowCopy=(a,c)=>{i(a,c),t.arrays=a.getArrays().map(o=>{const f=o.newClone();return f.shallowCopy(o,c),{data:f}})},e.initializeAttributeCopyFlags()}const Jf={activeScalars:-1,activeVectors:-1,activeTensors:-1,activeNormals:-1,activeTCoords:-1,activeGlobalIds:-1,activePedigreeIds:-1};function wi(e,t,n={}){Object.assign(t,Jf,n),zf.extend(e,t,n),v.setGet(e,t,["activeScalars","activeNormals","activeTCoords","activeVectors","activeTensors","activeGlobalIds","activePedigreeIds"]),t.arrays||(t.arrays={}),Xf(e,t)}const Qf=v.newInstance(wi,"vtkDataSetAttributes");var ur={newInstance:Qf,extend:wi,...Oi};const Zf={UNIFORM:0,DATA_OBJECT_FIELD:0,COORDINATE:1,POINT_DATA:1,POINT:2,POINT_FIELD_DATA:2,CELL:3,CELL_FIELD_DATA:3,VERTEX:4,VERTEX_FIELD_DATA:4,EDGE:5,EDGE_FIELD_DATA:5,ROW:6,ROW_DATA:6},qf={FIELD_ASSOCIATION_POINTS:0,FIELD_ASSOCIATION_CELLS:1,FIELD_ASSOCIATION_NONE:2,FIELD_ASSOCIATION_POINTS_THEN_CELLS:3,FIELD_ASSOCIATION_VERTICES:4,FIELD_ASSOCIATION_EDGES:5,FIELD_ASSOCIATION_ROWS:6,NUMBER_OF_ASSOCIATIONS:7};var tu={FieldDataTypes:Zf,FieldAssociations:qf};const At=["pointData","cellData","fieldData"];function eu(e,t){t.classHierarchy.push("vtkDataSet"),At.forEach(s=>{t[s]?t[s]=et(t[s]):t[s]=ur.newInstance()}),e.computeBounds=()=>{if(t.modifiedTime&&t.computeTime&&t.modifiedTime>t.computeTime||!t.computeTime){const s=e.getPoints();s!=null&&s.getNumberOfPoints()?Y.setBounds(t.bounds,s.getBoundsByReference()):t.bounds=or.createUninitializedBounds(),t.computeTime=v.getCurrentGlobalMTime()}},e.getLength2=()=>{const s=e.getBoundsByReference();return!s||s.length!==6?0:Y.getDiagonalLength2(s)},e.getLength=()=>Math.sqrt(e.getLength2()),e.getCenter=()=>{const s=e.getBoundsByReference();return!s||s.length!==6?[0,0,0]:Y.getCenter(s)},e.getCellBounds=s=>{const i=e.getCell(s);return i?i.getBounds():or.createUninitializedBounds()},e.getBounds=v.chain(()=>e.computeBounds,e.getBounds),e.getBoundsByReference=v.chain(()=>e.computeBounds,e.getBoundsByReference);const n=e.shallowCopy;e.shallowCopy=(s,i=!1)=>{n(s,i),At.forEach(a=>{t[a]=ur.newInstance(),t[a].shallowCopy(s.getReferenceByName(a))})};const r=e.getMTime;e.getMTime=()=>At.reduce((s,i)=>{var a;return Math.max(s,((a=t[i])==null?void 0:a.getMTime())??s)},r()),e.initialize=()=>(At.forEach(s=>{var i;return(i=t[s])==null?void 0:i.initialize()}),e)}const nu={};function Li(e,t,n={}){Object.assign(t,nu,n),v.obj(e,t),v.setGet(e,t,At),v.getArray(e,t,["bounds"],6),eu(e,t)}const ru=v.newInstance(Li,"vtkDataSet");var vi={newInstance:ru,extend:Li,...tu};const H={UNCHANGED:0,SINGLE_POINT:1,X_LINE:2,Y_LINE:3,Z_LINE:4,XY_PLANE:5,YZ_PLANE:6,XZ_PLANE:7,XYZ_GRID:8,EMPTY:9};var Ni={StructuredType:H};const{StructuredType:st}=Ni;function su(e){let t=0;for(let n=0;n<3;++n)e[n*2]<e[n*2+1]&&t++;return e[0]>e[1]||e[2]>e[3]||e[4]>e[5]?st.EMPTY:t===3?st.XYZ_GRID:t===2?e[0]===e[1]?st.YZ_PLANE:e[2]===e[3]?st.XZ_PLANE:st.XY_PLANE:t===1?e[0]<e[1]?st.X_LINE:e[2]<e[3]?st.Y_LINE:st.Z_LINE:st.SINGLE_POINT}var iu={getDataDescriptionFromExtent:su,...Ni};const{vtkErrorMacro:yt}=v;function au(e,t){t.classHierarchy.push("vtkImageData"),e.setExtent=(...r)=>{if(t.deleted)return yt("instance deleted - cannot call any method"),!1;const s=r.length===1?r[0]:r;if(s.length!==6)return!1;const i=t.extent.some((a,c)=>a!==s[c]);return i&&(t.extent=s.slice(),t.dataDescription=iu.getDataDescriptionFromExtent(t.extent),e.modified()),i},e.setDimensions=(...r)=>{let s,i,a;if(t.deleted){yt("instance deleted - cannot call any method");return}if(r.length===1){const c=r[0];s=c[0],i=c[1],a=c[2]}else if(r.length===3)s=r[0],i=r[1],a=r[2];else{yt("Bad dimension specification");return}e.setExtent(0,s-1,0,i-1,0,a-1)},e.getDimensions=()=>[t.extent[1]-t.extent[0]+1,t.extent[3]-t.extent[2]+1,t.extent[5]-t.extent[4]+1],e.getNumberOfCells=()=>{const r=e.getDimensions();let s=1;for(let i=0;i<3;i++){if(r[i]===0)return 0;r[i]>1&&(s*=r[i]-1)}return s},e.getNumberOfPoints=()=>{const r=e.getDimensions();return r[0]*r[1]*r[2]},e.getPoint=r=>{const s=e.getDimensions();if(s[0]===0||s[1]===0||s[2]===0)return yt("Requesting a point from an empty image."),null;const i=new Float64Array(3);switch(t.dataDescription){case H.EMPTY:return null;case H.SINGLE_POINT:break;case H.X_LINE:i[0]=r;break;case H.Y_LINE:i[1]=r;break;case H.Z_LINE:i[2]=r;break;case H.XY_PLANE:i[0]=r%s[0],i[1]=r/s[0];break;case H.YZ_PLANE:i[1]=r%s[1],i[2]=r/s[1];break;case H.XZ_PLANE:i[0]=r%s[0],i[2]=r/s[0];break;case H.XYZ_GRID:i[0]=r%s[0],i[1]=r/s[0]%s[1],i[2]=r/(s[0]*s[1]);break;default:yt("Invalid dataDescription");break}const a=[0,0,0];return e.indexToWorld(i,a),a},e.getBounds=()=>e.extentToBounds(e.getSpatialExtent()),e.extentToBounds=r=>Y.transformBounds(r,t.indexToWorld),e.getSpatialExtent=()=>Y.inflate([...t.extent],.5),e.computeTransforms=()=>{va(t.indexToWorld,t.origin),t.indexToWorld[0]=t.direction[0],t.indexToWorld[1]=t.direction[1],t.indexToWorld[2]=t.direction[2],t.indexToWorld[4]=t.direction[3],t.indexToWorld[5]=t.direction[4],t.indexToWorld[6]=t.direction[5],t.indexToWorld[8]=t.direction[6],t.indexToWorld[9]=t.direction[7],t.indexToWorld[10]=t.direction[8],La(t.indexToWorld,t.indexToWorld,t.spacing),wa(t.worldToIndex,t.indexToWorld)},e.indexToWorld=(r,s=[])=>(be(s,r,t.indexToWorld),s),e.indexToWorldVec3=e.indexToWorld,e.worldToIndex=(r,s=[])=>(be(s,r,t.worldToIndex),s),e.worldToIndexVec3=e.worldToIndex,e.indexToWorldBounds=(r,s=[])=>Y.transformBounds(r,t.indexToWorld,s),e.worldToIndexBounds=(r,s=[])=>Y.transformBounds(r,t.worldToIndex,s),t._onOriginChanged=e.computeTransforms,t._onDirectionChanged=e.computeTransforms,t._onSpacingChanged=e.computeTransforms,e.computeTransforms(),e.getCenter=()=>Y.getCenter(e.getBounds()),e.computeHistogram=(r,s=null)=>{const i=[0,0,0,0,0,0];e.worldToIndexBounds(r,i);const a=[0,0,0],c=[0,0,0];Y.computeCornerPoints(i,a,c),Qe(a,a),Qe(c,c);const o=e.getDimensions();qe(a,[0,0,0],[o[0]-1,o[1]-1,o[2]-1],a),qe(c,[0,0,0],[o[0]-1,o[1]-1,o[2]-1],c);const f=o[0],u=o[0]*o[1],l=e.getPointData().getScalars().getData();let g=-1/0,h=1/0,y=0,E=0,p=0;for(let C=a[2];C<=c[2];C++)for(let T=a[1];T<=c[1];T++){let d=a[0]+T*f+C*u;for(let D=a[0];D<=c[0];D++){if(!s||s([D,T,C],i)){const O=l[d];O>g&&(g=O),O<h&&(h=O),y+=O*O,E+=O,p+=1}++d}}const m=p>0?E/p:0,M=p?Math.abs(y/p-m*m):0,S=Math.sqrt(M);return{minimum:h,maximum:g,average:m,variance:M,sigma:S,count:p}},e.computeIncrements=(r,s=1)=>{const i=[];let a=s;for(let c=0;c<3;++c)i[c]=a,a*=r[c*2+1]-r[c*2]+1;return i},e.computeOffsetIndex=([r,s,i])=>{const a=e.getExtent(),c=e.getPointData().getScalars().getNumberOfComponents(),o=e.computeIncrements(a,c);return Math.floor((Math.round(r)-a[0])*o[0]+(Math.round(s)-a[2])*o[1]+(Math.round(i)-a[4])*o[2])},e.getOffsetIndexFromWorld=r=>{const s=e.getExtent(),i=e.worldToIndex(r);for(let a=0;a<3;++a)if(i[a]<s[a*2]||i[a]>s[a*2+1])return yt(`GetScalarPointer: Pixel ${i} is not in memory. Current extent = ${s}`),NaN;return e.computeOffsetIndex(i)},e.getScalarValueFromWorld=(r,s=0)=>{const i=e.getPointData().getScalars().getNumberOfComponents();if(s<0||s>=i)return yt(`GetScalarPointer: Scalar Component ${s} is not within bounds. Current Scalar numberOfComponents: ${i}`),NaN;const a=e.getOffsetIndexFromWorld(r);return Number.isNaN(a)?a:e.getPointData().getScalars().getComponent(a,s)};const n=e.initialize;e.initialize=()=>(e.set({direction:$r(t.direction),spacing:[1,1,1],origin:[0,0,0],extent:[0,-1,0,-1,0,-1],dataDescription:H.EMPTY}),n())}const ou={direction:null,indexToWorld:null,worldToIndex:null,spacing:[1,1,1],origin:[0,0,0],extent:[0,-1,0,-1,0,-1],dataDescription:H.EMPTY};function Ii(e,t,n={}){Object.assign(t,ou,n),vi.extend(e,t,n),t.direction?Array.isArray(t.direction)&&(t.direction=new Float64Array(t.direction.slice(0,9))):t.direction=$r(new Float64Array(9)),t.indexToWorld=new Float64Array(16),t.worldToIndex=new Float64Array(16),v.get(e,t,["indexToWorld","worldToIndex"]),v.setGetArray(e,t,["origin","spacing"],3),v.setGetArray(e,t,["direction"],9),v.getArray(e,t,["extent"],6),au(e,t)}const cu=v.newInstance(Ii,"vtkImageData");var lr={newInstance:cu,extend:Ii},$t=Ta;function Ri(e){if(typeof structuredClone=="function")try{return structuredClone(e)}catch{}return It(e,new WeakMap)}function It(e,t){if(e===null||typeof e!="object")return e;const n=t.get(e);if(n)return n;if(e instanceof Date)return new Date(e.getTime());if(e instanceof Map){const s=new Map;return t.set(e,s),e.forEach((i,a)=>{s.set(It(a,t),It(i,t))}),s}if(e instanceof Set){const s=new Set;return t.set(e,s),e.forEach(i=>{s.add(It(i,t))}),s}if(Array.isArray(e)){const s=[];return t.set(e,s),e.forEach((i,a)=>{s[a]=It(i,t)}),s}const r={};return t.set(e,r),Reflect.ownKeys(e).forEach(s=>{r[s]=It(e[s],t)}),r}function ki(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return(t>>>0).toString(36)}const fu=1073741824;class uu{constructor(){this._imageCache=new Map,this._volumeCache=new Map,this._imageIdsToVolumeIdCache=new Map,this._referencedImageIdToImageIdCache=new Map,this._geometryCache=new Map,this._imageCacheSize=0,this._maxCacheSize=3*fu,this._geometryCacheSize=0,this.setMaxCacheSize=t=>{if(!t||typeof t!="number"){const n=`New max cacheSize ${this._maxCacheSize} should be defined and should be a number.`;throw new Error(n)}this._maxCacheSize=t},this.isCacheable=t=>{const n=this.getBytesAvailable(),r=Array.from(this._imageCache.values()).reduce((i,a)=>a.sharedCacheKey?i:i+a.sizeInBytes,0);return n+r>=t},this.getMaxCacheSize=()=>this._maxCacheSize,this.getCacheSize=()=>this._imageCacheSize,this._decacheImage=(t,n=!1)=>{var i;const r=this._imageCache.get(t);if(!r)return;if(r.sharedCacheKey&&!n)throw new Error("Cannot decache an image with a shared cache key. You need to manually decache the volume first.");const{imageLoadObject:s}=r;(i=r.image)!=null&&i.referencedImageId&&this._referencedImageIdToImageIdCache.delete(r.image.referencedImageId),s!=null&&s.cancelFn&&s.cancelFn(),s!=null&&s.decache&&s.decache(),this._imageCache.delete(t)},this._decacheVolume=t=>{const n=this._volumeCache.get(t);if(!n)return;const{volumeLoadObject:r,volume:s}=n;s&&(s.cancelLoading&&s.cancelLoading(),s.imageData&&s.imageData.delete(),r.cancelFn&&r.cancelFn(),s.imageIds&&s.imageIds.forEach(i=>{const a=this._imageCache.get(i);a&&a.sharedCacheKey===t&&(a.sharedCacheKey=void 0)}),this._volumeCache.delete(t))},this.purgeCache=()=>{const t=this._imageCache.keys();for(this.purgeVolumeCache();;){const{value:n,done:r}=t.next();if(r)break;this.removeImageLoadObject(n,{force:!0}),q(Z,b.IMAGE_CACHE_IMAGE_REMOVED,{imageId:n})}},this.purgeVolumeCache=()=>{const t=this._volumeCache.keys();for(;;){const{value:n,done:r}=t.next();if(r)break;this.removeVolumeLoadObject(n),q(Z,b.VOLUME_CACHE_VOLUME_REMOVED,{volumeId:n})}},this.getVolumeLoadObject=t=>{if(t===void 0)throw new Error("getVolumeLoadObject: volumeId must not be undefined");const n=this._volumeCache.get(t);if(n)return n.timeStamp=Date.now(),n.volumeLoadObject},this.putGeometryLoadObject=(t,n)=>{if(t===void 0)throw new Error("putGeometryLoadObject: geometryId must not be undefined");if(n.promise===void 0)throw new Error("putGeometryLoadObject: geometryLoadObject.promise must not be undefined");if(this._geometryCache.has(t))throw new Error("putGeometryLoadObject: geometryId already present in geometryCache");if(n.cancelFn&&typeof n.cancelFn!="function")throw new Error("putGeometryLoadObject: geometryLoadObject.cancel must be a function");const r={loaded:!1,geometryId:t,geometryLoadObject:n,timeStamp:Date.now(),sizeInBytes:0};return this._geometryCache.set(t,r),n.promise.then(s=>{try{this._putGeometryCommon(t,s,r)}catch(i){throw console.debug(`Error in _putGeometryCommon for geometry ${t}:`,i),i}}).catch(s=>{throw console.debug(`Error caching geometry ${t}:`,s),this._geometryCache.delete(t),s})},this.getGeometry=t=>{if(t===void 0)throw new Error("getGeometry: geometryId must not be undefined");const n=this._geometryCache.get(t);if(n)return n.timeStamp=Date.now(),n.geometry},this.removeGeometryLoadObject=t=>{if(t===void 0)throw new Error("removeGeometryLoadObject: geometryId must not be undefined");const n=this._geometryCache.get(t);if(!n)throw new Error("removeGeometryLoadObject: geometryId was not present in geometryCache");this.decrementGeometryCacheSize(n.sizeInBytes);const r={geometry:n,geometryId:t};q(Z,b.GEOMETRY_CACHE_GEOMETRY_REMOVED,r),this._decacheGeometry(t)},this._decacheGeometry=t=>{const n=this._geometryCache.get(t);if(!n)return;const{geometryLoadObject:r}=n;r.cancelFn&&r.cancelFn(),r.decache&&r.decache(),this._geometryCache.delete(t)},this.incrementGeometryCacheSize=t=>{this._geometryCacheSize+=t},this.decrementGeometryCacheSize=t=>{this._geometryCacheSize-=t},this.getImageByReferencedImageId=t=>{var r;const n=this._referencedImageIdToImageIdCache.get(t);if(n)return(r=this._imageCache.get(n))==null?void 0:r.image},this.getImage=(t,n=Bt.FAR_REPLICATE)=>{var s;if(t===void 0)throw new Error("getImage: imageId must not be undefined");const r=this._imageCache.get(t);if(r&&(r.timeStamp=Date.now(),!(((s=r.image)==null?void 0:s.imageQualityStatus)<n)))return r.image},this.getVolume=(t,n=!1)=>{var s;if(t===void 0)throw new Error("getVolume: volumeId must not be undefined");const r=this._volumeCache.get(t);return r?(r.timeStamp=Date.now(),r.volume):n?(s=[...this._volumeCache.values()].find(i=>i.volumeId.includes(t)))==null?void 0:s.volume:void 0},this.getVolumes=()=>Array.from(this._volumeCache.values()).map(n=>n.volume),this.filterVolumesByReferenceId=t=>this.getVolumes().filter(r=>r.referencedVolumeId===t),this.removeImageLoadObject=(t,{force:n=!1}={})=>{if(t===void 0)throw new Error("removeImageLoadObject: imageId must not be undefined");const r=this._imageCache.get(t);if(!r)throw new Error("removeImageLoadObject: imageId was not present in imageCache");this._decacheImage(t,n),this.incrementImageCacheSize(-r.sizeInBytes);const s={image:r,imageId:t};q(Z,b.IMAGE_CACHE_IMAGE_REMOVED,s)},this.removeVolumeLoadObject=t=>{if(t===void 0)throw new Error("removeVolumeLoadObject: volumeId must not be undefined");const n=this._volumeCache.get(t);if(!n)throw new Error("removeVolumeLoadObject: volumeId was not present in volumeCache");const r={volume:n,volumeId:t};q(Z,b.VOLUME_CACHE_VOLUME_REMOVED,r),this._decacheVolume(t)},this.incrementImageCacheSize=t=>{this._imageCacheSize+=t},this.decrementImageCacheSize=t=>{this._imageCacheSize-=t},this.getGeometryLoadObject=t=>{if(t===void 0)throw new Error("getGeometryLoadObject: geometryId must not be undefined");const n=this._geometryCache.get(t);if(n)return n.timeStamp=Date.now(),n.geometryLoadObject}}generateVolumeId(t){const n=t.map($t).sort();let r=2166136261;for(const s of n){const i=ki(s);for(let a=0;a<i.length;a++)r^=i.charCodeAt(a),r+=(r<<1)+(r<<4)+(r<<7)+(r<<8)+(r<<24)}return`volume-${(r>>>0).toString(36)}`}getImageIdsForVolumeId(t){return Array.from(this._imageIdsToVolumeIdCache.entries()).filter(([n,r])=>r===t).map(([n])=>n)}getBytesAvailable(){return this.getMaxCacheSize()-this.getCacheSize()}decacheIfNecessaryUntilBytesAvailable(t,n){let r=this.getBytesAvailable();if(r>=t)return r;const s=Array.from(this._imageCache.values()).filter(o=>!o.sharedCacheKey);function i(o,f){return o.timeStamp>f.timeStamp?1:o.timeStamp<f.timeStamp?-1:0}s.sort(i);const a=s.map(o=>o.imageId);let c=a;n&&(c=a.filter(o=>!n.includes(o)));for(const o of c)if(this.removeImageLoadObject(o),q(Z,b.IMAGE_CACHE_IMAGE_REMOVED,{imageId:o}),r=this.getBytesAvailable(),r>=t)return r;for(const o of a)if(this.removeImageLoadObject(o),q(Z,b.IMAGE_CACHE_IMAGE_REMOVED,{imageId:o}),r=this.getBytesAvailable(),r>=t)return r}_putImageCommon(t,n,r){if(!this._imageCache.has(t)){console.warn("The image was purged from the cache before it completed loading.");return}if(!n){console.warn("Image is undefined");return}if(n.sizeInBytes===void 0||Number.isNaN(n.sizeInBytes))throw new Error("_putImageCommon: image.sizeInBytes must not be undefined");if(n.sizeInBytes.toFixed===void 0)throw new Error("_putImageCommon: image.sizeInBytes is not a number");if(!this.isCacheable(n.sizeInBytes))throw new Error(b.CACHE_SIZE_EXCEEDED);this.decacheIfNecessaryUntilBytesAvailable(n.sizeInBytes),r.loaded=!0,r.image=n,r.sizeInBytes=n.sizeInBytes,this.incrementImageCacheSize(r.sizeInBytes);const s={image:r};n.referencedImageId&&this._referencedImageIdToImageIdCache.set(n.referencedImageId,t),q(Z,b.IMAGE_CACHE_IMAGE_ADDED,s),r.sharedCacheKey=n.sharedCacheKey}async putImageLoadObject(t,n){if(t===void 0)throw console.error("putImageLoadObject: imageId must not be undefined"),new Error("putImageLoadObject: imageId must not be undefined");if(n.promise===void 0)throw console.error("putImageLoadObject: imageLoadObject.promise must not be undefined"),new Error("putImageLoadObject: imageLoadObject.promise must not be undefined");const r=this._imageCache.get(t);if(r!=null&&r.imageLoadObject)throw console.warn(`putImageLoadObject: imageId ${t} already in cache`),new Error("putImageLoadObject: imageId already in cache");if(n.cancelFn&&typeof n.cancelFn!="function")throw console.error("putImageLoadObject: imageLoadObject.cancel must be a function"),new Error("putImageLoadObject: imageLoadObject.cancel must be a function");const s={...r,loaded:!1,imageId:t,sharedCacheKey:void 0,imageLoadObject:n,timeStamp:Date.now(),sizeInBytes:0};return this._imageCache.set(t,s),n.promise.then(i=>{try{this._putImageCommon(t,i,s)}catch(a){throw console.debug(`Error in _putImageCommon for image ${t}:`,a),a}}).catch(i=>{throw console.debug(`Error caching image ${t}:`,i),this._imageCache.delete(t),i})}putImageSync(t,n){if(t===void 0)throw new Error("putImageSync: imageId must not be undefined");if(this._imageCache.has(t))throw new Error("putImageSync: imageId already in cache");const r={loaded:!1,imageId:t,sharedCacheKey:void 0,imageLoadObject:{promise:Promise.resolve(n)},timeStamp:Date.now(),sizeInBytes:0};this._imageCache.set(t,r);try{this._putImageCommon(t,n,r)}catch(s){throw this._imageCache.delete(t),s}}getImageLoadObject(t){if(t===void 0)throw new Error("getImageLoadObject: imageId must not be undefined");const n=this._imageCache.get(t);if(n)return n.timeStamp=Date.now(),n.imageLoadObject}isLoaded(t){const n=this._imageCache.get(t);return n?n.loaded:!1}getVolumeContainingImageId(t){const n=Array.from(this._volumeCache.keys()),r=$t(t);for(const s of n){const i=this._volumeCache.get(s);if(!i)return;const{volume:a}=i;if(!a.imageIds.length)return;const c=a.getImageURIIndex(r);if(c>-1)return{volume:a,imageIdIndex:c}}}getCachedImageBasedOnImageURI(t){const n=$t(t),s=Array.from(this._imageCache.keys()).find(i=>$t(i)===n);if(s)return this._imageCache.get(s)}_putVolumeCommon(t,n,r){var i;if(!this._volumeCache.get(t)){console.warn("The volume was purged from the cache before it completed loading.");return}r.loaded=!0,r.volume=n,(i=n.imageIds)==null||i.forEach(a=>{const c=this._imageCache.get(a);c&&(c.sharedCacheKey=t)});const s={volume:r};q(Z,b.VOLUME_CACHE_VOLUME_ADDED,s)}putVolumeSync(t,n){if(t===void 0)throw new Error("putVolumeSync: volumeId must not be undefined");if(this._volumeCache.has(t))throw new Error("putVolumeSync: volumeId already in cache");const r={loaded:!1,volumeId:t,volumeLoadObject:{promise:Promise.resolve(n)},timeStamp:Date.now(),sizeInBytes:0};this._volumeCache.set(t,r);try{this._putVolumeCommon(t,n,r)}catch(s){throw this._volumeCache.delete(t),s}}async putVolumeLoadObject(t,n){if(t===void 0)throw new Error("putVolumeLoadObject: volumeId must not be undefined");if(n.promise===void 0)throw new Error("putVolumeLoadObject: volumeLoadObject.promise must not be undefined");if(this._volumeCache.has(t))throw new Error(`putVolumeLoadObject: volumeId:${t} already in cache`);if(n.cancelFn&&typeof n.cancelFn!="function")throw new Error("putVolumeLoadObject: volumeLoadObject.cancel must be a function");const r={loaded:!1,volumeId:t,volumeLoadObject:n,timeStamp:Date.now(),sizeInBytes:0};return this._volumeCache.set(t,r),n.promise.then(s=>{try{this._putVolumeCommon(t,s,r)}catch(i){throw console.error(`Error in _putVolumeCommon for volume ${t}:`,i),this._volumeCache.delete(t),i}}).catch(s=>{throw this._volumeCache.delete(t),s})}_putGeometryCommon(t,n,r){if(!this._geometryCache.get(t)){console.warn("The geometry was purged from the cache before it completed loading.");return}if(!n){console.warn("Geometry is undefined");return}if(n.sizeInBytes===void 0||Number.isNaN(n.sizeInBytes))throw new Error("_putGeometryCommon: geometry.sizeInBytes must not be undefined");if(n.sizeInBytes.toFixed===void 0)throw new Error("_putGeometryCommon: geometry.sizeInBytes is not a number");if(!this.isCacheable(n.sizeInBytes))throw new Error(b.CACHE_SIZE_EXCEEDED);this.decacheIfNecessaryUntilBytesAvailable(n.sizeInBytes),r.loaded=!0,r.geometry=n,r.sizeInBytes=n.sizeInBytes,this.incrementGeometryCacheSize(r.sizeInBytes);const s={geometry:r};q(Z,b.GEOMETRY_CACHE_GEOMETRY_ADDED,s)}putGeometrySync(t,n){if(t===void 0)throw new Error("putGeometrySync: geometryId must not be undefined");if(this._geometryCache.has(t))throw new Error("putGeometrySync: geometryId already in cache");const r={loaded:!1,geometryId:t,geometryLoadObject:{promise:Promise.resolve(n)},timeStamp:Date.now(),sizeInBytes:0};this._geometryCache.set(t,r);try{this._putGeometryCommon(t,n,r)}catch(s){throw this._geometryCache.delete(t),s}}setPartialImage(t,n,r=!1){const s=this._imageCache.get(t);if(!s){n&&this._imageCache.set(t,{image:n,imageId:t,loaded:!1,timeStamp:Date.now(),sizeInBytes:0});return}s.loaded?(s.loaded=!1,s.imageLoadObject=null,this.incrementImageCacheSize(-s.sizeInBytes),s.sizeInBytes=0,s.image=n||s.image):(r&&(s.imageLoadObject=null),s.image=n||s.image)}getImageQuality(t){var r;const n=(r=this._imageCache.get(t))==null?void 0:r.image;return n?n.imageQualityStatus||Bt.FULL_RESOLUTION:void 0}}const Vt=new uu,gr=[[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]],hr=[[0,-1,0],[0,1,0]],lu=[[0,-1,0],[0,1,0],[0,0,-1]],gu=[[0,-1,0],[0,1,0],[0,0,1]];class Mt{static copyMap(t,n){for(const[r,s]of n.rows)t.rows.set(r,Ri(s))}constructor(t,n,r=1){this.rows=new Map,this.height=1,this.width=1,this.depth=1,this.jMultiple=1,this.kMultiple=1,this.numComps=1,this.pixelDataConstructor=Uint8Array,this.updateScalarData=function(s){s.fill(0);const i=(a,c,o)=>{const{start:f,end:u,value:l}=c;for(let g=f;g<u;g++)s[a+g]=l};this.forEach(i)},this.get=s=>{const i=s%this.jMultiple,a=(s-i)/this.jMultiple,c=this.getRLE(i,a);return(c==null?void 0:c.value)??this.defaultValue},this.getRun=(s,i)=>{const a=s+i*this.height;return this.rows.get(a)},this.set=(s,i)=>{if(i===void 0)return;const a=s%this.width,c=(s-a)/this.width,o=this.rows.get(c);if(!o){this.rows.set(c,[{start:a,end:a+1,value:i}]);return}const f=this.findIndex(o,a),u=o[f],l=o[f-1];if(!u){if(!l||l.value!==i||l.end!==a){o[f]={start:a,end:a+1,value:i};return}l.end++;return}const{start:g,end:h,value:y}=u;if(i===y&&a>=g)return;const E={start:a,end:a+1,value:i},p=a>g,m=p?f+1:f,M=p?u:l;let S=p?o[f+1]:u;if((M==null?void 0:M.value)===i&&(M==null?void 0:M.end)===a){M.end++,(S==null?void 0:S.value)===i&&S.start===a+1?(M.end=S.end,o.splice(f,1)):(S==null?void 0:S.start)===a&&(S.start++,S.start===S.end&&(o.splice(f,1),S=o[f],(S==null?void 0:S.start)===a+1&&S.value===i&&(M.end=S.end,o.splice(f,1))));return}if((S==null?void 0:S.value)===i&&S.start===a+1){S.start--,(M==null?void 0:M.end)>a&&(M.end=a,M.end===M.start&&o.splice(f,1));return}if((S==null?void 0:S.start)===a&&S.end===a+1){S.value=i;const C=o[f+1];(C==null?void 0:C.start)==a+1&&C.value===i&&(o.splice(f+1,1),S.end=C.end);return}a===(S==null?void 0:S.start)&&S.start++,p&&h>a+1?o.splice(m,0,E,{start:a+1,end:M.end,value:M.value}):o.splice(m,0,E),(M==null?void 0:M.end)>a&&(M.end=a)},this.width=t,this.height=n,this.depth=r,this.jMultiple=t,this.kMultiple=this.jMultiple*n}toIJK(t){const n=t%this.jMultiple,r=(t-n)/this.jMultiple%this.height,s=Math.floor(t/this.kMultiple);return[n,r,s]}toIndex([t,n,r]){return t+r*this.kMultiple+n*this.jMultiple}getRLE(t,n,r=0){const s=this.rows.get(n+r*this.height);if(!s)return;const i=this.findIndex(s,t),a=s[i];return t>=(a==null?void 0:a.start)?a:void 0}has(t){const n=t%this.jMultiple,r=(t-n)/this.jMultiple,s=this.getRLE(n,r);return(s==null?void 0:s.value)!==void 0}delete(t){const n=t%this.width,r=(t-n)/this.width,s=this.rows.get(r);if(!s)return;const i=this.findIndex(s,n),a=s[i];if(!a||a.start>n)return;if(a.end===n+1){a.end--,a.start>=a.end&&(s.splice(i,1),s.length||this.rows.delete(r));return}if(a.start===n){a.start++;return}const c={value:a.value,start:n+1,end:a.end};a.end=n,s.splice(i+1,0,c)}findIndex(t,n){for(let r=0;r<t.length;r++){const{end:s}=t[r];if(n<s)return r}return t.length}forEach(t,n){const r=n==null?void 0:n.rowModified;for(const[s,i]of this.rows){const a=r?[...i]:i;for(const c of a)t(s*this.width,c,i)}}forEachRow(t){for(const[n,r]of this.rows)t(n*this.width,r)}clear(){this.rows.clear()}keys(){return[...this.rows.keys()]}getPixelData(t=0,n){n?n.fill(0):n=new this.pixelDataConstructor(this.width*this.height*this.numComps);const{width:r,height:s,numComps:i}=this;for(let a=0;a<s;a++){const c=this.getRun(a,t);if(c)if(i===1)for(const o of c){const f=a*r,{start:u,end:l,value:g}=o;for(let h=u;h<l;h++)n[f+h]=g}else for(const o of c){const f=a*r*i,{start:u,end:l,value:g}=o;for(let h=u;h<l;h+=i)for(let y=0;y<i;y++)n[f+h+y]=g[y]}}return n}floodFill(t,n,r,s,i){const a=this.getRLE(t,n,r);if(!a)throw new Error(`Initial point ${t},${n},${r} isn't in the RLE`);const c=[[a,n,r]],o=a.value;if(o===s)throw new Error(`source (${o}) and destination (${s}) are identical`);return this.flood(c,o,s,i)}flood(t,n,r,s){let i=0;const{planar:a=!0,diagonals:c=!0,singlePlane:o=!1}=s||{},f={planar:a,diagonals:c,singlePlane:o};for(;t.length;){const u=t.pop(),[l]=u;if(l.value!==n)continue;l.value=r,i+=l.end-l.start;const g=this.findAdjacents(u,f).filter(h=>h&&h[0].value===n);t.push(...g)}return i}fillFrom(t,n){for(let r=n[2][0];r<=n[2][1];r++)for(let s=n[1][0];s<=n[1][1];s++){let i,a;for(let c=n[0][0];c<=n[0][1];c++){const o=t(c,s,r);if(o===void 0){i=void 0;continue}a||(a=[],this.rows.set(s+r*this.height,a)),i&&i.value!==o&&(i=void 0),i||(i={start:c,end:c,value:o},a.push(i)),i.end++}}}findAdjacents(t,{diagonals:n=!0,planar:r=!0,singlePlane:s=!1}){const[i,a,c,o]=t,{start:f,end:u}=i,l=f>0&&this.getRLE(f-1,a,c),g=u<this.width&&this.getRLE(u,a,c),h=n?[f>0?f-1:f,u<this.width?u+1:u]:[f,u],y=[];l&&y.push([l,a,c]),g&&y.push([g,a,c]);for(const E of o||(s?hr:gr)){const[,p,m]=E,M=p+a,S=m+c;if(M<0||M>=this.height||S<0||S>=this.depth)continue;const C=this.getRun(M,S);if(C)for(const T of C){const d=o||s&&hr||r&&m>0&&gu||r&&m<0&&lu||gr;T.end<=h[0]||T.start>=h[1]||y.push([T,M,S,d])}}return y}}Mt.getScalarData=function(e=Uint8ClampedArray){const t=new e(this.frameSize);return this.map.updateScalarData(t),t};let ye=class Ut{constructor(t={}){this._dimensions=3,this._length=0,this._byteSize=4,this.growSize=128;const{initialSize:n=1024,dimensions:r=3,growSize:s=128}=t,i=n*r;this.growSize=s,this.array=new ArrayBuffer(i*this._byteSize),this.data=new Float32Array(this.array),this._dimensions=r}forEach(t){for(let n=0;n<this._length;n++)t(this.getPoint(n),n)}get length(){return this._length}get dimensions(){return this._dimensions}get dimensionLength(){return this._length*this._dimensions}getPoint(t){if(t<0&&(t+=this._length),t<0||t>=this._length)return;const n=this._dimensions*t;return this.data.subarray(n,n+this._dimensions)}getPointArray(t){const n=[];if(t<0&&(t+=this._length),t<0||t>=this._length)return;const r=this._dimensions*t;for(let s=0;s<this._dimensions;s++)n.push(this.data[s+r]);return n}grow(t=1,n=this.growSize){if(this.dimensionLength+t*this._dimensions<=this.data.length)return;const r=this.data.length+n,s=new ArrayBuffer(r*this._dimensions*this._byteSize),i=new Float32Array(s);i.set(this.data),this.data=i,this.array=s}reverse(){const t=Math.floor(this._length/2);for(let n=0;n<t;n++){const r=n*this._dimensions,s=(this._length-1-n)*this._dimensions;for(let i=0;i<this._dimensions;i++){const a=this.data[r+i];this.data[r+i]=this.data[s+i],this.data[s+i]=a}}}getTypedArray(){return this.data}push(t){this.grow(1);const n=this.length*this._dimensions;for(let r=0;r<this._dimensions;r++)this.data[r+n]=t[r];this._length++}map(t){const n=[];for(let r=0;r<this._length;r++)n.push(t(this.getPoint(r),r));return n}get points(){return this.map(t=>t)}toXYZ(){const t={x:[],y:[]};this._dimensions>=3&&(t.z=[]);const{x:n,y:r,z:s}=t;return this.forEach(i=>{n.push(i[0]),r.push(i[1]),s&&s.push(i[2])}),t}static fromXYZ({x:t,y:n,z:r}){const s=Ut.create3(t.length);let i=0;for(let a=0;a<t.length;a++)s.data[i++]=t[a],s.data[i++]=n[a],s.data[i++]=r?r[a]:0;return s._length=t.length,s}subselect(t=10,n=0){const r=new Ut({initialSize:t,dimensions:this._dimensions});for(let s=0;s<t;s++){const i=(n+Math.floor(this.length*s/t))%this.length;r.push(this.getPoint(i))}return r}static create3(t=128,n){t=Math.max(t,(n==null?void 0:n.length)||0);const r=new Ut({initialSize:t,dimensions:3});return n&&n.forEach(s=>r.push(s)),r}static create2(t=128){return new Ut({initialSize:t,dimensions:2})}};function hu(e){const t=nt(),n=e.getDimensions(),r=ye.create3(n[0]),s=ye.create3(n[1]),i=ye.create3(n[2]),a=e.getDirection(),c=a.slice(0,3),o=a.slice(3,6),f=a.slice(6,9),u=e.getSpacing(),[l,g,h]=u,y=e.indexToWorld([0,0,0]),E=Gt(c[0]*l,c[1]*l,c[2]*l),p=Gt(o[0]*g,o[1]*g,o[2]*g),m=Gt(f[0]*h,f[1]*h,f[2]*h),M=nt();for(let d=0;d<n[0];d++)r.push(Ur(M,y,jt(M,E,d)));for(let d=0;d<n[1];d++)s.push(jt(M,p,d));for(let d=0;d<n[2];d++)i.push(jt(M,m,d));const S=r.getTypedArray(),C=s.getTypedArray(),T=i.getTypedArray();return(d,D=t)=>{const[O,w,L]=d,N=O*3,I=w*3,k=L*3;return D[0]=S[N]+C[I]+T[k],D[1]=S[N+1]+C[I+1]+T[k+1],D[2]=S[N+2]+C[I+2]+T[k+2],D}}function yu({voxelManager:e,bounds:t,imageData:n,pointInShapeFn:r,callback:s,returnPoints:i}){const[[a,c],[o,f],[u,l]]=t,g=hu(n),h=[0,0,0],y=[];for(let E=u;E<=l;E++){h[2]=E;for(let p=o;p<=f;p++){h[1]=p;for(let m=a;m<=c;m++){h[0]=m;const M=g(h);if(r(M,h)){const S=e.toIndex(h),C=e.getAtIndex(S);i&&y.push({value:C,index:S,pointIJK:[...h],pointLPS:M.slice()}),s==null||s({value:C,index:S,pointIJK:h,pointLPS:M})}}}}return y}const Eu=5*1024,ct=[0,0,0],yr=[0,0,0],Er=new WeakMap;let pu=class A{get id(){return this._id}constructor(t,n){this.modifiedSlices=new Set,this.boundsIJK=[[1/0,-1/0],[1/0,-1/0],[1/0,-1/0]],this.scalarData=null,this._sliceDataCache=null,this.getAtIJK=(r,s,i)=>this._get(r+s*this.width+i*this.frameSize),this.setAtIJK=(r,s,i,a)=>{const c=r+s*this.width+i*this.frameSize,o=this._set(c,a);return o!==!1&&(this.modifiedSlices.add(i),A.addBounds(this.boundsIJK,[r,s,i])),o},this.getAtIJKPoint=([r,s,i])=>this.getAtIJK(r,s,i),this.setAtIJKPoint=([r,s,i],a)=>{this.setAtIJK(r,s,i,a)},this.getAtIndex=r=>this._get(r),this.setAtIndex=(r,s)=>{const i=this._set(r,s);if(i!==!1){const a=this.toIJK(r);this.modifiedSlices.add(a[2]),A.addBounds(this.boundsIJK,a)}return i},this.getMiddleSliceData=()=>{const r=Math.floor(this.dimensions[2]/2);return this.getSliceData({sliceIndex:r,slicePlane:2})},this.forEach=(r,s={})=>{const i=s.boundsIJK||this.getBoundsIJK(),a=s.isInObject||this.isInObject||(()=>!0),c=s.returnPoints||!1,o=s.imageData,f=Math.min(i[0][0],i[0][1]),u=Math.max(i[0][0],i[0][1]),l=Math.min(i[1][0],i[1][1]),g=Math.max(i[1][0],i[1][1]),h=Math.min(i[2][0],i[2][1]),y=Math.max(i[2][0],i[2][1]),E=[];if(o)return yu({voxelManager:this,imageData:s.imageData,bounds:[[f,u],[l,g],[h,y]],pointInShapeFn:a,callback:r,returnPoints:c});if(this.map){if(this.map instanceof Mt)return this.rleForEach(r,s);for(const p of this.map.keys()){const m=this.toIJK(p);if(!a(null,m))continue;const M=this._get(p);c&&E.push({value:M,index:p,pointIJK:m,pointLPS:null}),r({value:M,index:p,pointIJK:m,pointLPS:null})}return E}else{for(let p=h;p<=y;p++){const m=p*this.frameSize;for(let M=l;M<=g;M++){const S=m+M*this.width;for(let C=f,T=S+C;C<=u;C++,T++){const d=this.getAtIndex(T),D=[C,M,p];a(null,D)&&(c&&E.push({value:d,index:T,pointIJK:D,pointLPS:null}),r({value:d,index:T,pointIJK:[C,M,p],pointLPS:null}))}}}return E}},this.getSliceData=({sliceIndex:r,slicePlane:s})=>{const[i,a,c]=this.dimensions,o=i*a,f=r*o;let u;const l=this.getConstructor();function g(y){return typeof y=="function"}if(!g(l))return new Uint8Array(0);let h;switch(s){case 0:u=a*c,h=new l(u);for(let y=0;y<a;y++)for(let E=0;E<c;E++){const p=r+y*i+E*o;this.setSliceDataValue(h,y*c+E,this._get(p))}break;case 1:u=i*c,h=new l(u);for(let y=0;y<i;y++)for(let E=0;E<c;E++){const p=y+r*i+E*o;this.setSliceDataValue(h,y+E*i,this._get(p))}break;case 2:u=i*a,h=new l(u);for(let y=0;y<u;y++)this.setSliceDataValue(h,y,this._get(f+y));break;default:throw new Error("Oblique plane - todo - implement as ortho normal vector")}return h},this.dimensions=t,this.width=t[0],this.frameSize=this.width*t[1],this._get=n._get,this._set=n._set,this._id=n._id||"",this._getConstructor=n._getConstructor,this.numberOfComponents=n.numberOfComponents||1,this.scalarData=n.scalarData,this._getScalarData=n._getScalarData,this._updateScalarData=n._updateScalarData}getMinMax(){let t,n;const r=({value:s})=>{const i=Array.isArray(s);if(t===void 0&&(t=i?[...s]:s,n=i?[...s]:s),i)for(let a=0;a<s.length;a++)t[a]=Math.min(t[a],s[a]),n[a]=Math.max(n[a],s[a]);else t=Math.min(t,s),n=Math.max(n,s)};return this.forEach(r,{boundsIJK:this.getDefaultBounds()}),{min:t,max:n}}toIJK(t){return[t%this.width,Math.floor(t%this.frameSize/this.width),Math.floor(t/this.frameSize)]}toIndex(t){return t[0]+t[1]*this.width+t[2]*this.frameSize}getDefaultBounds(){return this.dimensions.map(t=>[0,t-1])}getBoundsIJK(){return this.boundsIJK[0][0]<this.dimensions[0]?this.boundsIJK:this.getDefaultBounds()}rleForEach(t,n){const r=(n==null?void 0:n.boundsIJK)||this.getBoundsIJK(),{isWithinObject:s}=n||{},i=this.map;if(!i){console.warn("No map found, you need to use a map voxel manager to use rleForEach");return}i.defaultValue=void 0;for(let a=r[2][0];a<=r[2][1];a++)for(let c=r[1][0];c<=r[1][1];c++){const o=i.getRun(c,a);if(o)for(const f of o){const{start:u,end:l,value:g}=f,h=this.toIndex([0,c,a]);for(let y=u;y<l;y++){const E={value:g,index:h+y,pointIJK:[y,c,a]};(s==null?void 0:s(E))!==!1&&t(E)}}}}getScalarData(t=!1){var n;if(this.scalarData)return(n=this._updateScalarData)==null||n.call(this,this.scalarData),this.scalarData;if(this._getScalarData){const r=this._getScalarData();return t&&console.log("Not transient, should store value",r),r}throw new Error("No scalar data available")}setScalarData(t){this.scalarData=t}getScalarDataLength(){if(this.scalarData)return this.scalarData.length;if(this._getScalarDataLength)return this._getScalarDataLength();throw new Error("No scalar data available")}get sizeInBytes(){return this.getScalarDataLength()*this.bytePerVoxel}get bytePerVoxel(){return this.scalarData?this.scalarData.BYTES_PER_ELEMENT:this._get(0).BYTES_PER_ELEMENT}clearBounds(){this.boundsIJK.map(t=>{t[0]=1/0,t[1]=-1/0})}clear(){var t,n;(t=this.map)==null||t.clear(),this.clearBounds(),this.modifiedSlices.clear(),(n=this.points)==null||n.clear()}getConstructor(){return this.scalarData?this.scalarData.constructor:this._getConstructor?this._getConstructor():(console.warn("No scalar data available or can be used to get the constructor"),Float32Array)}getArrayOfModifiedSlices(){return Array.from(this.modifiedSlices)}resetModifiedSlices(){this.modifiedSlices.clear()}setBounds(t){this.boundsIJK=t}static addBounds(t,n){t||(t=[[1/0,-1/0],[1/0,-1/0],[1/0,-1/0]]),t[0][0]=Math.min(n[0],t[0][0]),t[0][1]=Math.max(n[0],t[0][1]),t[1][0]=Math.min(n[1],t[1][0]),t[1][1]=Math.max(n[1],t[1][1]),t[2][0]=Math.min(n[2],t[2][0]),t[2][1]=Math.max(n[2],t[2][1])}static getWorldToIndexTransform(t){const n=Er.get(t);if(n)return n;const r=t.direction,s=t.spacing,i=Oa(r[0]/s[0],r[3]/s[1],r[6]/s[2],r[1]/s[0],r[4]/s[1],r[7]/s[2],r[2]/s[0],r[5]/s[1],r[8]/s[2]);return Er.set(t,i),i}static worldToIndexContinuous(t,n){const r=t.origin;ct[0]=n[0]-r[0],ct[1]=n[1]-r[1],ct[2]=n[2]-r[2];const s=bn(yr,ct,A.getWorldToIndexTransform(t));return[s[0],s[1],s[2]]}static sampleAtWorldCoordinates(t,n,r,s,i=St.LINEAR){if(!t.voxelManager)return NaN;const a=t.origin;ct[0]=n-a[0],ct[1]=r-a[1],ct[2]=s-a[2];const c=bn(yr,ct,A.getWorldToIndexTransform(t));return A.sampleAtContinuousCoordinates(t.voxelManager,t.dimensions,c[0],c[1],c[2],i)}static sampleAtWorld(t,n,r=St.LINEAR){return A.sampleAtWorldCoordinates(t,n[0],n[1],n[2],r)}static sampleAtContinuousIndex(t,n,r,s=St.LINEAR){return A.sampleAtContinuousCoordinates(t,n,r[0],r[1],r[2],s)}static sampleAtContinuousCoordinates(t,n,r,s,i,a){return a===St.NEAREST?A.sampleNearestAtContinuousCoordinates(t,n,r,s,i):A.sampleLinearAtContinuousCoordinates(t,n,r,s,i)}static sampleNearestAtContinuousCoordinates(t,n,r,s,i){const a=Math.floor(r+.5-1e-6),c=Math.floor(s+.5-1e-6),o=Math.floor(i+.5-1e-6),f=n[0],u=n[1],l=n[2];return a<0||a>=f||c<0||c>=u||o<0||o>=l?NaN:Number(t.getAtIJK(a,c,o))}static sampleLinearAtContinuousCoordinates(t,n,r,s,i){const a=n[0],c=n[1],o=n[2];if(r<0||r>a-1||s<0||s>c-1||i<0||i>o-1)return NaN;const f=Math.floor(r),u=Math.floor(s),l=Math.floor(i),g=Math.min(f+1,a-1),h=Math.min(u+1,c-1),y=Math.min(l+1,o-1),E=r-f,p=s-u,m=i-l,M=1-E,S=1-p,C=1-m,T=Number(t.getAtIJK(f,u,l)),d=Number(t.getAtIJK(g,u,l)),D=Number(t.getAtIJK(f,h,l)),O=Number(t.getAtIJK(g,h,l)),w=Number(t.getAtIJK(f,u,y)),L=Number(t.getAtIJK(g,u,y)),N=Number(t.getAtIJK(f,h,y)),I=Number(t.getAtIJK(g,h,y)),k=T*M+d*E,V=D*M+O*E,P=w*M+L*E,j=N*M+I*E,Jt=k*S+V*p,Qt=P*S+j*p;return Jt*C+Qt*m}addPoint(t){const n=Array.isArray(t)?t[0]+this.width*t[1]+this.frameSize*t[2]:t;this.points||(this.points=new Set),this.points.add(n)}getPoints(){return this.points?[...this.points].map(t=>this.toIJK(t)):[]}setSliceDataValue(t,n,r){if(Array.isArray(r))for(let s=0;s<r.length;s++)t[n*r.length+s]=this.toNumber(r[s]);else t[n]=this.toNumber(r)}toNumber(t){return typeof t=="number"?t:Array.isArray(t)&&t[0]||0}static _createRGBScalarVolumeVoxelManager({dimensions:t,scalarData:n,numberOfComponents:r=3,id:s}){const i=new A(t,{_get:a=>(a*=r,[n[a++],n[a++],n[a++]]),_id:s||"_createRGBScalarVolumeVoxelManager",_set:(a,c)=>{a*=3;const o=!Ke(n[a],c);return n[a++]=c[0],n[a++]=c[1],n[a++]=c[2],o},numberOfComponents:r,scalarData:n});return i.clear=()=>{n.fill(0)},i}static createImageVolumeVoxelManager({dimensions:t,imageIds:n,numberOfComponents:r=1,id:s}){const i=t[0]*t[1],a=t[2],c=new Array(a);let o=-1,f=null;const u=new Set,l=new Set,g=m=>{if(m<0||m>=a)return null;const M=c[m];if(M!==void 0)return M;const S=n[m];if(!S)return u.has(m)||(u.add(m),console.warn(`ImageId not found for sliceIndex: ${m}`)),c[m]=null,null;const C=Vt.getImage(S);if(!(C!=null&&C.voxelManager))return l.has(S)||(l.add(S),console.warn(`Image not found for imageId: ${S}`)),null;const T=C.voxelManager;return c[m]=T,T};function h(m){const M=Math.floor(m/i);if(M<0||M>=a)return null;const S=M===o?f:g(M);if(!S)return null;M!==o&&(o=M,f=S);const C=m-M*i;return S.getAtIndex(C)}function y(m,M){const S=Math.floor(m/i);if(S<0||S>=a)return!1;const C=S===o?f:g(S);if(!C)return!1;S!==o&&(o=S,f=C);const T=m-S*i,d=C.getAtIndex(T),D=!Ke(M,d);return D&&(C.setAtIndex(T,M),!0)}const E=()=>{const m=g(0);return m?m.getConstructor():null},p=new A(t,{_get:h,_set:y,numberOfComponents:r,_getConstructor:E,_id:s||"createImageVolumeVoxelManager"});return p.invalidateCache=()=>{c.fill(void 0),o=-1,f=null},p.getMiddleSliceData=()=>{const m=Math.floor(t[2]/2);return p.getSliceData({sliceIndex:m,slicePlane:2})},p.clear=()=>{for(const m of n)Vt.getImage(m).voxelManager.clear()},p.getRange=()=>{let m=1/0,M=-1/0;for(const S of n){const C=Vt.getImage(S);C&&(C.minPixelValue<m&&(m=C.minPixelValue),C.maxPixelValue>M&&(M=C.maxPixelValue))}return m===1/0&&M===-1/0?[0,0]:[m,M]},p._getScalarDataLength=()=>{const m=g(0);return m?m.getScalarDataLength()*t[2]:0},p.getCompleteScalarDataArray=()=>{const m=p._getConstructor();if(!m)return new Uint8Array(0);const M=p.getScalarDataLength(),S=new m(M),C=t[0]*t[1]*r;for(let T=0;T<t[2];T++){const d=g(T);if(d){const D=T*C,O=d.getScalarData();if(r===1)S.set(O,D);else for(let w=0;w<O.length;w+=r)for(let L=0;L<r;L++)S[D+w+L]=O[w+L]}}return S},p.setCompleteScalarDataArray=m=>{const M=t[0]*t[1]*r,S=p._getConstructor();let C=1/0,T=-1/0;for(let d=0;d<t[2];d++){const D=g(d);if(D&&S){const O=d*M,w=O+M,L=new S(M);if(L.set(m.subarray(O,w)),D.scalarData)D.scalarData.set(L),D.modifiedSlices.add(d);else for(let k=0;k<M;k++)D.setAtIndex(k,L[k]);for(let k=0;k<L.length;k++){const V=L[k];C=Math.min(C,V),T=Math.max(T,V)}const N=n[d],I=Vt.getImage(N);I&&(I.minPixelValue=C,I.maxPixelValue=T)}}for(let d=0;d<t[2];d++)p.modifiedSlices.add(d);p.boundsIJK=[[0,t[0]-1],[0,t[1]-1],[0,t[2]-1]]},p}static createScalarVolumeVoxelManager({dimensions:t,scalarData:n,numberOfComponents:r,id:s}){if(t.length!==3)throw new Error("Dimensions must be provided as [number, number, number] for [width, height, depth]");if(!r&&(r=n.length/t[0]/t[1]/t[2],r>4||r<1||r===2))throw new Error(`Number of components ${r} must be 1, 3 or 4`);return r>1?A._createRGBScalarVolumeVoxelManager({dimensions:t,scalarData:n,numberOfComponents:r,id:s}):A._createNumberVolumeVoxelManager({dimensions:t,scalarData:n,id:s})}static createScalarDynamicVolumeVoxelManager({imageIdGroups:t,dimensions:n,dimensionGroupNumber:r=1,timePoint:s=0,numberOfComponents:i=1,id:a}){let c=0;if(r!==void 0?c=r-1:s!==void 0&&(console.warn("Warning: timePoint parameter is deprecated. Please use dimensionGroupNumber instead. timePoint is zero-based while dimensionGroupNumber starts at 1."),c=s),!i){const u=Vt.getImage(t[0][0]);if(!u)throw new Error("Unable to determine number of components: No image found");if(i=u.getPixelData().length/(n[0]*n[1]),i>4||i<1||i===2)throw new Error(`Number of components ${i} must be 1, 3 or 4`)}const o=t.map(u=>A.createImageVolumeVoxelManager({dimensions:n,imageIds:u,numberOfComponents:i,id:a})),f=new A(n,{_get:u=>o[c]._get(u),_set:(u,l)=>o[c]._set(u,l),numberOfComponents:i,_id:a||"createScalarDynamicVolumeVoxelManager"});return f.getScalarDataLength=()=>o[c].getScalarDataLength(),f.getConstructor=()=>o[c].getConstructor(),f.getRange=()=>o[c].getRange(),f.getMiddleSliceData=()=>o[c].getMiddleSliceData(),f.setTimePoint=u=>{console.warn("Warning: setTimePoint is deprecated. Please use setDimensionGroupNumber instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),f.setDimensionGroupNumber(u+1)},f.setDimensionGroupNumber=u=>{c=u-1,f._get=l=>o[c]._get(l),f._set=(l,g)=>o[c]._set(l,g)},f.getAtIndexAndTimePoint=(u,l)=>(console.warn("Warning: getAtIndexAndTimePoint is deprecated. Please use getAtIndexAndDimensionGroup instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),f.getAtIndexAndDimensionGroup(u,l+1)),f.getAtIndexAndDimensionGroup=(u,l)=>o[l-1]._get(u),f.getTimePointScalarData=u=>(console.warn("Warning: getTimePointScalarData is deprecated. Please use getDimensionGroupScalarData instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),f.getDimensionGroupScalarData(u+1)),f.getDimensionGroupScalarData=u=>o[u-1].getCompleteScalarDataArray(),f.getCurrentTimePointScalarData=()=>(console.warn("Warning: getCurrentTimePointScalarData is deprecated. Please use getCurrentDimensionGroupScalarData instead."),f.getCurrentDimensionGroupScalarData()),f.getCurrentDimensionGroupScalarData=()=>o[c].getCompleteScalarDataArray(),f.getCurrentTimePoint=()=>(console.warn("Warning: getCurrentTimePoint is deprecated. Please use getCurrentDimensionGroupNumber instead. Note that timePoint is zero-based while dimensionGroupNumber starts at 1."),c),f.getCurrentDimensionGroupNumber=()=>c+1,f}static createImageVoxelManager({width:t,height:n,scalarData:r,numberOfComponents:s=1,id:i}){const a=[t,n,1];if(!s&&(s=r.length/t/n,s>4||s<1||s===2))throw new Error(`Number of components ${s} must be 1, 3 or 4`);return s>1?A._createRGBScalarVolumeVoxelManager({dimensions:a,scalarData:r,numberOfComponents:s,id:i}):A._createNumberVolumeVoxelManager({dimensions:a,scalarData:r,id:i})}static _createNumberVolumeVoxelManager({dimensions:t,scalarData:n,id:r}){const s=new A(t,{_get:i=>n[i],_set:(i,a)=>{const c=n[i]!==a;return n[i]=a,c},_getConstructor:()=>n.constructor,_id:r||"_createNumberVolumeVoxelManager"});return s.scalarData=n,s.clear=()=>{s.scalarData.fill(0)},s.getMiddleSliceData=()=>{const i=Math.floor(t[2]/2);return s.getSliceData({sliceIndex:i,slicePlane:2})},s}static createMapVoxelManager({dimension:t,id:n}){const r=new Map,s=new A(t,{_get:r.get.bind(r),_set:(i,a)=>r.set(i,a)&&!0,_id:n||"createMapVoxelManager"});return s.map=r,s}static createHistoryVoxelManager(t,n){const r=new Map,{dimensions:s}=t,i=new A(s,{_get:a=>r.get(a),_set:function(a,c){if(r.has(a))c===r.get(a)&&r.delete(a);else{const o=this.sourceVoxelManager.getAtIndex(a);if(o===c)return!1;r.set(a,o)}this.sourceVoxelManager.setAtIndex(a,c)},_id:n||"createHistoryVoxelManager"});return i.map=r,i.scalarData=t.scalarData,i.sourceVoxelManager=t,i}static createRLEHistoryVoxelManager(t,n){const{dimensions:r}=t,s=new Mt(r[0],r[1],r[2]),i=new A(r,{_get:a=>s.get(a),_set:function(a,c){const o=s.get(a);if(o===void 0){const f=this.sourceVoxelManager.getAtIndex(a);if(f===c||f===void 0&&c===0||c===null)return!1;s.set(a,f??0)}else(c===o||c===null)&&(s.delete(a),c=o);this.sourceVoxelManager.setAtIndex(a,c)},_getScalarData:Mt.getScalarData,_updateScalarData:a=>(s.updateScalarData(a),a),_id:n||"createRLEHistoryVoxelManager"});return i.map=s,i.sourceVoxelManager=t,i}static createLazyVoxelManager({dimensions:t,planeFactory:n,id:r}){const s=new Map,[i,a]=t,c=i*a,o=new A(t,{_get:f=>s.get(Math.floor(f/c))[f%c],_set:(f,u)=>{const l=Math.floor(f/c);let g=s.get(l);return g||(g=n(i,a),s.set(l,g)),g[f%c]=u,!0},_id:r||"createLazyVoxelManager"});return o.map=s,o}static createRLEVolumeVoxelManager({dimensions:t,id:n}){const[r,s,i]=t,a=new Mt(r,s,i),c=new A(t,{_get:o=>a.get(o),_set:(o,f)=>(a.set(o,f),!0),_getScalarData:Mt.getScalarData,_updateScalarData:o=>(a.updateScalarData(o),o),_id:n||"createRLEVolumeVoxelManager"});return c.map=a,c.getPixelData=a.getPixelData.bind(a),c}static createRLEImageVoxelManager({dimensions:t,id:n}){const[r,s]=t;return A.createRLEVolumeVoxelManager({dimensions:[r,s,1],id:n})}static addInstanceToImage(t){const{width:n,height:r}=t,s=t.voxelManager.getScalarData();if(s.length>=n*r){t.voxelManager=A.createScalarVolumeVoxelManager({dimensions:[n,r,1],scalarData:s});return}t.voxelManager=A.createRLEVolumeVoxelManager({dimensions:[n,r,1]}),t.getPixelData=t.voxelManager.getPixelData,t.sizeInBytes=Eu}};const{isVtkObject:Cu}=v;function Vi(e){const t=[];for(let n=0;n<e.length;n+=e[n]+1)t.push(e[n]);return t}function _i(e){let t=0;for(let n=0;n<e.length;)n+=e[n]+1,t++;return t}const mu={extractCellSizes:Vi,getNumberOfCells:_i};function Mu(e,t){t.classHierarchy.push("vtkCellArray");const n={...e};e.getNumberOfCells=r=>(t.numberOfCells!==void 0&&!r||(t.cellSizes?t.numberOfCells=t.cellSizes.length:t.numberOfCells=_i(e.getData())),t.numberOfCells),e.getCellSizes=r=>(t.cellSizes!==void 0&&!r||(t.cellSizes=Vi(e.getData())),t.cellSizes),e.resize=r=>{const s=e.getNumberOfTuples();n.resize(r);const i=e.getNumberOfTuples();i<s&&(i===0?(t.numberOfCells=0,t.cellSizes=[]):(t.numberOfCells=void 0,t.cellSizes=void 0))},e.setData=r=>{n.setData(r,1),t.numberOfCells=void 0,t.cellSizes=void 0},e.getCell=r=>{let s=r;const i=t.values[s++];return t.values.subarray(s,s+i)},e.insertNextCell=r=>{let s;Cu(r)?s=r.getPointsIds():s=r;const i=e.getNumberOfCells();return e.insertNextTuples([s.length,...s]),++t.numberOfCells,t.cellSizes!=null&&t.cellSizes.push(s.length),i},e.getMaxCellSize=()=>e.getCellSizes().reduce((r,s)=>Math.max(r,s),0)}function Su(e){return{empty:!0,numberOfComponents:1,dataType:Ae.UNSIGNED_INT,...e}}function xi(e,t,n={}){ut.extend(e,t,Su(n)),Mu(e,t)}const Tu=v.newInstance(xi,"vtkCellArray");var pr={newInstance:Tu,extend:xi,...mu};const{vtkErrorMacro:du}=v;function Du(e,t){let n=0;t.classHierarchy.push("vtkPoints"),e.getNumberOfPoints=e.getNumberOfTuples,e.setNumberOfPoints=(i,a=3)=>{e.getNumberOfPoints()!==i&&(t.size=i*a,t.values=v.newTypedArray(t.dataType,t.size),e.setNumberOfComponents(a),e.modified())},e.setPoint=(i,...a)=>{e.setTuple(i,a)},e.getPoint=e.getTuple,e.findPoint=e.findTuple,e.insertNextPoint=(i,a,c)=>e.insertNextTuple([i,a,c]),e.insertPoint=(i,a)=>e.insertTuple(i,a);const r=e.getBounds;e.getBounds=()=>(n<t.mtime&&e.computeBounds(),r());const s=e.getBoundsByReference;e.getBoundsByReference=()=>(n<t.mtime&&e.computeBounds(),s()),e.computeBounds=()=>{if(e.getNumberOfComponents()===3){const i=e.getRange(0);t.bounds[0]=i[0],t.bounds[1]=i[1];const a=e.getRange(1);t.bounds[2]=a[0],t.bounds[3]=a[1];const c=e.getRange(2);t.bounds[4]=c[0],t.bounds[5]=c[1]}else if(e.getNumberOfComponents()===2){const i=e.getRange(0);t.bounds[0]=i[0],t.bounds[1]=i[1];const a=e.getRange(1);t.bounds[2]=a[0],t.bounds[3]=a[1],t.bounds[4]=0,t.bounds[5]=0}else du(`getBounds called on an array with components of ${e.getNumberOfComponents()}`),zs(t.bounds);n=v.getCurrentGlobalMTime()},e.setNumberOfComponents(t.numberOfComponents<2?3:t.numberOfComponents)}const Ou={empty:!0,numberOfComponents:3,dataType:Ae.FLOAT,bounds:[1,-1,1,-1,1,-1]};function Ai(e,t,n={}){Object.assign(t,Ou,n),ut.extend(e,t,n),v.getArray(e,t,["bounds"],6),Du(e,t)}const wu=v.newInstance(Ai,"vtkPoints");var Oe={newInstance:wu,extend:Ai};function Lu(e,t){t.classHierarchy.push("vtkCell"),e.initialize=(n,r=null)=>{if(r){t.pointsIds=r;let s=t.points.getData();s.length!==3*t.pointsIds.length&&(s=v.newTypedArray(n.getDataType(),3*t.pointsIds.length));const i=n.getData();t.pointsIds.forEach((a,c)=>{let o=3*a,f=3*c;s[f]=i[o],s[++f]=i[++o],s[++f]=i[++o]}),t.points.setData(s)}else{t.points=n,t.pointsIds=new Array(n.getNumberOfPoints());for(let s=n.getNumberOfPoints()-1;s>=0;--s)t.pointsIds[s]=s}},e.getBounds=()=>t.points.getBounds(),e.getLength2=()=>{const n=Y.getLengths(e.getBounds());return n[0]*n[0]+n[1]*n[1]+n[2]*n[2]},e.getParametricDistance=n=>{let r,s=0;for(let i=0;i<3;i++)n[i]<0?r=-n[i]:n[i]>1?r=n[i]-1:r=0,r>s&&(s=r);return s},e.getNumberOfPoints=()=>t.points.getNumberOfPoints(),e.deepCopy=n=>{n.initialize(t.points,t.pointsIds)},e.getCellDimension=()=>{},e.intersectWithLine=(n,r,s,i,a,c,o)=>{},e.evaluatePosition=(n,r,s,i,a,c)=>{v.vtkErrorMacro("vtkCell.evaluatePosition is not implemented.")}}const vu={bounds:[-1,-1,-1,-1,-1,-1],pointsIds:[]};function $i(e,t,n={}){Object.assign(t,vu,n),v.obj(e,t),t.points||(t.points=Oe.newInstance()),v.get(e,t,["points","pointsIds"]),Lu(e,t)}const Nu=v.newInstance($i,"vtkCell");var dt={newInstance:Nu,extend:$i};function Iu(e,t){let n=t;for(t>=e.array.length&&(n+=e.array.length);n>e.array.length;)e.array.push({ncells:0,cells:null});e.array.length=n}function Ru(e,t){t.classHierarchy.push("vtkCellLinks"),e.buildLinks=n=>{const r=n.getPoints().getNumberOfPoints(),s=n.getNumberOfCells(),i=new Uint32Array(r);if(n.isA("vtkPolyData")){for(let a=0;a<s;++a){const{cellPointIds:c}=n.getCellPoints(a);c.forEach(o=>{e.incrementLinkCount(o)})}e.allocateLinks(r),t.maxId=r-1;for(let a=0;a<s;++a){const{cellPointIds:c}=n.getCellPoints(a);c.forEach(o=>{e.insertCellReference(o,i[o]++,a)})}}else{for(let a=0;a<s;a++)dt.newInstance().getPointsIds().forEach(o=>{e.incrementLinkCount(o)});e.allocateLinks(r),t.maxId=r-1;for(let a=0;a<s;++a)dt.newInstance().getPointsIds().forEach(o=>{e.insertCellReference(o,i[o]++,a)})}},e.allocate=(n,r=1e3)=>{t.array=Array(n).fill().map(()=>({ncells:0,cells:null})),t.extend=r,t.maxId=-1},e.initialize=()=>{t.array=null},e.getLink=n=>t.array[n],e.getNcells=n=>t.array[n].ncells,e.getCells=n=>t.array[n].cells,e.insertNextPoint=n=>{t.array.push({ncells:n,cells:Array(n)}),++t.maxId},e.insertNextCellReference=(n,r)=>{t.array[n].cells[t.array[n].ncells++]=r},e.deletePoint=n=>{t.array[n].ncells=0,t.array[n].cells=null},e.removeCellReference=(n,r)=>{t.array[r].cells=t.array[r].cells.filter(s=>s!==n),t.array[r].ncells=t.array[r].cells.length},e.addCellReference=(n,r)=>{t.array[r].cells[t.array[r].ncells++]=n},e.resizeCellList=(n,r)=>{t.array[n].cells.length=r},e.squeeze=()=>{Iu(t,t.maxId+1)},e.reset=()=>{t.maxId=-1},e.deepCopy=n=>{t.array=[...n.array],t.extend=n.extend,t.maxId=n.maxId},e.incrementLinkCount=n=>{++t.array[n].ncells},e.allocateLinks=n=>{for(let r=0;r<n;++r)t.array[r].cells=new Array(t.array[r].ncells)},e.insertCellReference=(n,r,s)=>{t.array[n].cells[r]=s}}const ku={array:null,maxId:0,extend:0};function Ui(e,t,n={}){Object.assign(t,ku,n),v.obj(e,t),Ru(e,t)}const Vu=v.newInstance(Ui,"vtkCellLinks");var _u={newInstance:Vu,extend:Ui};const x={VTK_EMPTY_CELL:0,VTK_VERTEX:1,VTK_POLY_VERTEX:2,VTK_LINE:3,VTK_POLY_LINE:4,VTK_TRIANGLE:5,VTK_TRIANGLE_STRIP:6,VTK_POLYGON:7,VTK_QUAD:9,VTK_QUADRATIC_EDGE:21,VTK_CONVEX_POINT_SET:41,VTK_POLYHEDRON:42},nn=["vtkEmptyCell","vtkVertex","vtkPolyVertex","vtkLine","vtkPolyLine","vtkTriangle","vtkTriangleStrip","vtkPolygon","vtkPixel","vtkQuad","vtkTetra","vtkVoxel","vtkHexahedron","vtkWedge","vtkPyramid","vtkPentagonalPrism","vtkHexagonalPrism","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkQuadraticEdge","vtkQuadraticTriangle","vtkQuadraticQuad","vtkQuadraticTetra","vtkQuadraticHexahedron","vtkQuadraticWedge","vtkQuadraticPyramid","vtkBiQuadraticQuad","vtkTriQuadraticHexahedron","vtkQuadraticLinearQuad","vtkQuadraticLinearWedge","vtkBiQuadraticQuadraticWedge","vtkBiQuadraticQuadraticHexahedron","vtkBiQuadraticTriangle","vtkCubicLine","vtkQuadraticPolygon","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkConvexPointSet","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkParametricCurve","vtkParametricSurface","vtkParametricTriSurface","vtkParametricQuadSurface","vtkParametricTetraRegion","vtkParametricHexRegion","UnknownClass","UnknownClass","UnknownClass","vtkHigherOrderEdge","vtkHigherOrderTriangle","vtkHigherOrderQuad","vtkHigherOrderPolygon","vtkHigherOrderTetrahedron","vtkHigherOrderWedge","vtkHigherOrderPyramid","vtkHigherOrderHexahedron"];function xu(e){return e<nn.length?nn[e]:"UnknownClass"}function Au(e){return nn.findIndex(e)}function $u(e){return e<x.VTK_QUADRATIC_EDGE||e===x.VTK_CONVEX_POINT_SET||e===x.VTK_POLYHEDRON}function Uu(e){return e===x.VTK_TRIANGLE_STRIP||e===x.VTK_POLY_LINE||e===x.VTK_POLY_VERTEX}const Gu={getClassNameFromTypeId:xu,getTypeIdFromClassName:Au,isLinear:$u,hasSubCells:Uu};function ju(e,t){t.classHierarchy.push("vtkCellTypes"),e.allocate=(n=512,r=1e3)=>{t.size=n>0?n:1,t.extend=r>0?r:1,t.maxId=-1,t.typeArray=new Uint8Array(n),t.locationArray=new Uint32Array(n)},e.insertCell=(n,r,s)=>{t.typeArray[n]=r,t.locationArray[n]=s,n>t.maxId&&(t.maxId=n)},e.insertNextCell=(n,r)=>(e.insertCell(++t.maxId,n,r),t.maxId),e.setCellTypes=(n,r,s)=>{t.size=n,t.typeArray=r,t.locationArray=s,t.maxId=n-1},e.getCellLocation=n=>t.locationArray[n],e.deleteCell=n=>{t.typeArray[n]=x.VTK_EMPTY_CELL},e.getNumberOfTypes=()=>t.maxId+1,e.isType=n=>{const r=e.getNumberOfTypes();for(let s=0;s<r;++s)if(n===e.getCellType(s))return!0;return!1},e.insertNextType=n=>e.insertNextCell(n,-1),e.getCellType=n=>t.typeArray[n],e.reset=()=>{t.maxId=-1},e.deepCopy=n=>{e.allocate(n.getSize(),n.getExtend()),t.typeArray.set(n.getTypeArray()),t.locationArray.set(n.getLocationArray()),t.maxId=n.getMaxId()}}const Fu={size:0,maxId:-1,extend:1e3};function Gi(e,t,n={}){Object.assign(t,Fu,n),v.obj(e,t),v.get(e,t,["size","maxId","extend"]),v.getArray(e,t,["typeArray","locationArray"]),ju(e,t)}const zu=v.newInstance(Gi,"vtkCellTypes");var Bu={newInstance:zu,extend:Gi,...Gu};const ji={NO_INTERSECTION:0,YES_INTERSECTION:1,ON_LINE:2};var Fi={IntersectionState:ji};const{IntersectionState:Ee}=Fi;function Rt(e,t,n,r=null){const s={t:Number.MIN_VALUE,distance:0},i=[];let a;i[0]=n[0]-t[0],i[1]=n[1]-t[1],i[2]=n[2]-t[2];const c=i[0]*(e[0]-t[0])+i[1]*(e[1]-t[1])+i[2]*(e[2]-t[2]),o=R(i,i);let f=1e-5*c;return o!==0&&(s.t=c/o),f<0&&(f=-f),-f<o&&o<f||o<=0||s.t<0?a=t:s.t>1?a=n:(a=i,i[0]=t[0]+s.t*i[0],i[1]=t[1]+s.t*i[1],i[2]=t[2]+s.t*i[2]),r&&(r[0]=a[0],r[1]=a[1],r[2]=a[2]),s.distance=W(a,e),s}function zi(e,t,n,r,s,i){const a=[],c=[],o=[];s[0]=0,i[0]=0,z(t,e,a),z(r,n,c),z(n,e,o);const f=[R(a,a),-R(a,c),-R(a,c),R(c,c)],u=[];if(u[0]=R(a,o),u[1]=-R(c,o),$s(f,u,2)===0){let l=Number.MAX_VALUE;const g=[e,t,n,r],h=[n,n,e,e],y=[r,r,t,t];i[0],i[0],s[0],s[0],s[0],s[0],i[0],i[0];let E;for(let p=0;p<4;p++)E=Rt(g[p],h[p],y[p]),E.distance<l&&(l=E.distance,E.t);return Ee.ON_LINE}return s[0]=u[0],i[0]=u[1],s[0]>=0&&s[0]<=1&&i[0]>=0&&i[0]<=1?Ee.YES_INTERSECTION:Ee.NO_INTERSECTION}const Ku={distanceToLine:Rt,intersection:zi};function bu(e,t){t.classHierarchy.push("vtkLine");function n(r){return r>=0&&r<=1}e.getCellDimension=()=>1,e.intersectWithLine=(r,s,i,a,c)=>{const o={intersect:0,t:Number.MAX_VALUE,subId:0,betweenPoints:null};c[1]=0,c[2]=0;const f=[],u=[],l=[];t.points.getPoint(0,u),t.points.getPoint(1,l);const g=[],h=[],y=zi(r,s,u,l,g,h);if(o.t=g[0],o.betweenPoints=n(o.t),c[0]=h[0],y===Ee.YES_INTERSECTION){for(let E=0;E<3;E++)a[E]=u[E]+c[0]*(l[E]-u[E]),f[E]=r[E]+o.t*(s[E]-r[E]);if(W(a,f)<=i*i)return o.intersect=1,o}else{let E;if(o.t<0)return E=Rt(r,u,l,a),E.distance<=i*i&&(o.t=0,o.intersect=1,o.betweenPoints=!0),o;if(o.t>1)return E=Rt(s,u,l,a),E.distance<=i*i&&(o.t=1,o.intersect=1,o.betweenPoints=!0),o;if(c[0]<0)return c[0]=0,E=Rt(u,r,s,a),o.t=E.t,E.distance<=i*i&&(o.intersect=1),o;if(c[0]>1)return c[0]=1,E=Rt(l,r,s,a),o.t=E.t,E.distance<=i*i&&(o.intersect=1),o}return o},e.evaluateLocation=(r,s,i)=>{const a=[],c=[];t.points.getPoint(0,a),t.points.getPoint(1,c);for(let o=0;o<3;o++)s[o]=a[o]+r[0]*(c[o]-a[o]);i[0]=1-r[0],i[1]=r[0]},e.evaluateOrientation=(r,s,i)=>t.orientations?(oe(s,t.orientations[0],t.orientations[1],r[0]),i[0]=1-r[0],i[1]=r[0],!0):!1}const Wu={orientations:null};function Bi(e,t,n={}){Object.assign(t,Wu,n),dt.extend(e,t,n),v.setGet(e,t,["orientations"]),bu(e,t)}const Pu=v.newInstance(Bi,"vtkLine");var K={newInstance:Pu,extend:Bi,...Ku,...Fi};function Hu(e,t){t.classHierarchy.push("vtkPointSet"),t.points?t.points=et(t.points):t.points=Oe.newInstance(),e.getNumberOfPoints=()=>t.points.getNumberOfPoints(),e.getBounds=()=>{var i;return(i=t.points)==null?void 0:i.getBounds()},e.computeBounds=()=>{var i;(i=t.points)==null||i.computeBounds()};const n=e.shallowCopy;e.shallowCopy=(i,a=!1)=>{n(i,a),t.points=Oe.newInstance(),t.points.shallowCopy(i.getPoints())};const r=e.getMTime;e.getMTime=()=>{var a;const i=r();return Math.max(i,((a=t.points)==null?void 0:a.getMTime())??i)};const s=e.initialize;e.initialize=()=>{var i;return(i=t.points)==null||i.initialize(),s()}}const Yu={};function Ki(e,t,n={}){Object.assign(t,Yu,n),vi.extend(e,t,n),v.setGet(e,t,["points"]),Hu(e,t)}const Xu=v.newInstance(Ki,"vtkPointSet");var Ju={newInstance:Xu,extend:Ki};function Qu(e,t){t.classHierarchy.push("vtkPolyLine");const n=K.newInstance();n.getPoints().setNumberOfPoints(2),e.getCellDimension=()=>1,e.intersectWithLine=(r,s,i,a,c,o,f)=>{const u={intersect:0,t:Number.MAX_VALUE,subId:0,betweenPoints:null},l=e.getNumberOfPoints()-1;let g=Number.MAX_VALUE;for(let h=0;h<l;h++){const y=[0,0,0];n.getPoints().getData().set(t.points.getData().subarray(3*h,3*(h+2)));const E=n.intersectWithLine(i,a,c,o,f);if(E.intersect===1&&E.t<=u.t+c&&E.t>=r&&E.t<=s){u.intersect=1;const p=n.getParametricDistance(y);if(p<g||p===g&&E.t<u.t){u.subId=h,u.t=E.t,g=p;for(let m=0;m<3;m++)o[m],y[m]}}}return u},e.evaluateLocation=(r,s,i,a)=>(n.getPoints().getData().set(t.points.getData().subarray(3*r,3*(r+2))),n.evaluateLocation(s,i,a)),e.evaluateOrientation=(r,s,i,a)=>(t.orientations?n.setOrientations([t.orientations[r],t.orientations[r+1]]):n.setOrientations(null),n.evaluateOrientation(s,i,a)),e.getDistancesToFirstPoint=()=>{const r=t.distancesTime.getMTime();if(r<t.points.getMTime()||r<e.getMTime()){const s=e.getNumberOfPoints();if(t.distances?t.distances.length=s:t.distances=new Array(s),s>0){const i=new Array(3),a=new Array(3);let c=0;t.distances[0]=c,t.points.getPoint(0,i);for(let o=1;o<s;++o)t.points.getPoint(o,a),c+=t.distanceFunction(i,a),t.distances[o]=c,Ia(i,a)}t.distancesTime.modified()}return t.distances},e.findPointIdAtDistanceFromFirstPoint=r=>{const s=e.getDistancesToFirstPoint();if(s.length<2)return-1;let i=0,a=s.length-1;if(r<s[i]||r>s[a]||s[a]===0)return-1;for(;a-i>1;){const c=Math.floor((i+a)/2);s[c]<=r?i=c:a=c}return i}}const Zu={orientations:null,distanceFunction:Aa};function bi(e,t,n={}){Object.assign(t,Zu,n),dt.extend(e,t,n),v.setGet(e,t,["orientations","distanceFunction"]),t.distancesTime={},v.obj(t.distancesTime,{mtime:0}),Qu(e,t)}const qu=v.newInstance(bi,"vtkPolyLine");var t0={newInstance:qu,extend:bi};function e0(e,t){t.classHierarchy.push("vtkPriorityQueue"),e.push=(n,r)=>{const s=t.elements.findIndex(i=>i.priority>n);t.elements.splice(s,0,{priority:n,element:r})},e.pop=()=>t.elements.length>0?t.elements.shift().element:null,e.deleteById=n=>{t.elements=t.elements.filter(({element:r})=>r.id!==n)},e.length=()=>t.elements.length}const n0={elements:[]};function Wi(e,t,n={}){Object.assign(t,n0,n),v.obj(e,t),e0(e,t)}const r0=v.newInstance(Wi,"vtkPriorityQueue");var s0={newInstance:r0,extend:Wi};const re=1e-6,Cr=11920929e-14,i0=1e-8,Et={FAILURE:-1,OUTSIDE:0,INSIDE:1,INTERSECTION:2,ON_LINE:3};function mr(e,t,n,r,s){return(r[e]-n[e])*(s[t]-n[t])-(s[e]-n[e])*(r[t]-n[t])}function a0(e,t,n,r){if(e[0]<n[0]||e[0]>n[1]||e[1]<n[2]||e[1]>n[3]||e[2]<n[4]||e[2]>n[5])return Et.OUTSIDE;if(it(r)<=Cr)return Et.FAILURE;let s=i0*((n[1]-n[0])*(n[1]-n[0])+(n[3]-n[2])*(n[3]-n[2])+(n[5]-n[4])*(n[5]-n[4]));s*=s,s=s===0?Cr:s;const i=[],a=[];for(let u=0;u<t.length;){if(i[0]=t[u++],i[1]=t[u++],i[2]=t[u++],W(e,i)<=s)return Et.INSIDE;const{distance:l,t:g}=K.distanceToLine(e,i,a);if(l<=s&&g>0&&g<1)return Et.INSIDE}let c,o;Math.abs(r[0])>Math.abs(r[1])?Math.abs(r[0])>Math.abs(r[2])?(c=1,o=2):(c=0,o=1):Math.abs(r[1])>Math.abs(r[2])?(c=0,o=2):(c=0,o=1);let f=0;for(let u=0;u<t.length;)i[0]=t[u++],i[1]=t[u++],i[2]=t[u++],u<t.length?(a[0]=t[u],a[1]=t[u+1],a[2]=t[u+2]):(a[0]=t[0],a[1]=t[1],a[2]=t[2]),i[o]<=e[o]?a[o]>e[o]&&mr(c,o,i,a,e)>0&&++f:a[o]<=e[o]&&mr(c,o,i,a,e)<0&&--f;return f===0?Et.OUTSIDE:Et.INSIDE}function o0(e,t,n){const r=e.length,s=[];t.getPoint(e[0],s),n[0]=s[0],n[1]=s[0],n[2]=s[1],n[3]=s[1],n[4]=s[2],n[5]=s[2];for(let a=1;a<r;a++)t.getPoint(e[a],s),Y.addPoint(n,...s);const i=Y.getLengths(n);return R(i,i)}function c0(e,t,n){n.length=3,n[0]=0,n[1]=0,n[2]=0;const r=[];let s=[],i=[];const a=[],c=[];t.getPoint(e[0],r),t.getPoint(e[1],s);for(let o=2;o<e.length;o++){t.getPoint(e[o],i),z(i,s,a),z(r,s,c);const f=[0,0,0];Q(a,c,f),Re(n,f,n),[s,i]=[i,s]}return it(n)}function f0(e,t,n=[0,0,0]){n[0]=0,n[1]=0,n[2]=0;const r=e.length,s=[];for(let i=0;i<r;i++)t.getPoint(e[i],s),n[0]+=s[0],n[1]+=s[1],n[2]+=s[2];return n[0]/=r,n[1]/=r,n[2]/=r,n}const u0={PolygonWithPointIntersectionState:Et,pointInPolygon:a0,getBounds:o0,getNormal:c0,computeCentroid:f0};function l0(e,t){t.classHierarchy.push("vtkPolygon");function n(){const c=[0,0,0],o=[0,0,0];t.normal=[0,0,0];const f=[...t.firstPoint.point];let u=t.firstPoint;for(let l=0;l<t.pointCount;l++){z(u.point,f,c),z(u.next.point,f,o);const g=[0,0,0];Q(c,o,g),Re(t.normal,g,t.normal),u=u.next}return it(t.normal)}function r(c){const o=[0,0,0],f=[0,0,0],u=[0,0,0],l=[0,0,0];z(c.point,c.previous.point,o),z(c.next.point,c.point,f),z(c.previous.point,c.next.point,u),Q(o,f,l);const g=R(l,t.normal);if(g<=0)return-1;const h=J(o)+J(f)+J(u);return h*h/g}function s(c){if(t.pointCount<=3)return!0;const o=c.previous,f=c.next,u=[0,0,0];z(f.point,o.point,u);const l=[0,0,0];if(Q(u,t.normal,l),it(l),J(l)===0)return!1;let g=gt.evaluate(l,o.point,f.next.point),h=g>re?1:g<-re?-1:0,y=h<0?1:0;for(let E=f.next.next;E.id!==o.id;E=E.next){const p=E.previous;g=gt.evaluate(l,o.point,E.point);const m=g>re?1:g<-re?-1:0;if(m!==h){if(y||(y=m<=0?1:0),K.intersection(o.point,f.point,E.point,p.point,[0],[0])===ji.YES_INTERSECTION)return!1;h=m}}return y===1}function i(c,o){t.pointCount-=1;const f=c.previous,u=c.next;t.tris=t.tris.concat(c.point),t.tris=t.tris.concat(u.point),t.tris=t.tris.concat(f.point),f.next=u,u.previous=f,o.deleteById(f.id),o.deleteById(u.id);const l=r(f);l>0&&o.push(l,f);const g=r(u);g>0&&o.push(g,u),c.id===t.firstPoint.id&&(t.firstPoint=u)}function a(){n();const c=s0.newInstance();let o=t.firstPoint;for(let f=0;f<t.pointCount;f++){const u=r(o);u>0&&c.push(u,o),o=o.next}for(;t.pointCount>2&&c.length()>0;)if(t.pointCount===c.length()){const f=c.pop();i(f,c)}else{const f=c.pop();s(f)&&i(f,c)}return t.pointCount<=2}e.triangulate=()=>t.firstPoint?a():null,e.setPoints=c=>{t.pointCount=c.length,t.firstPoint={id:0,point:c[0],next:null,previous:null};let o=t.firstPoint;for(let f=1;f<t.pointCount;f++)o.next={id:f,point:c[f],next:null,previous:o},o=o.next;t.firstPoint.previous=o,o.next=t.firstPoint},e.getPointArray=()=>t.tris}const g0={firstPoint:null,pointCount:0,tris:[]};function Pi(e,t,n={}){Object.assign(t,g0,n),v.obj(e,t),l0(e,t)}const h0=v.newInstance(Pi,"vtkPolygon");var y0={newInstance:h0,extend:Pi,...u0};function Un(e,t,n,r){const s=n[0]-t[0],i=n[1]-t[1],a=n[2]-t[2],c=e[0]-t[0],o=e[1]-t[1],f=e[2]-t[2];r[0]=i*f-a*o,r[1]=a*c-s*f,r[2]=s*o-i*c}function Kt(e,t,n,r){Un(e,t,n,r);const s=Math.sqrt(r[0]*r[0]+r[1]*r[1]+r[2]*r[2]);s!==0&&(r[0]/=s,r[1]/=s,r[2]/=s)}function Hi(e){e[0]=-1,e[1]=1,e[2]=0,e[3]=-1,e[4]=0,e[5]=1}function E0(e,t,n,r,s,i,a=1e-6){let c=!1;const o=[],f=[],u=[],l=[],g=[];Kt(e,t,n,l),Kt(r,s,i,g);const h=-R(l,e),y=-R(g,r),E=[R(g,e)+y,R(g,t)+y,R(g,n)+y];if(E[0]*E[1]>a&&E[0]*E[2]>a)return{intersect:!1,coplanar:c,pt1:o,pt2:f,surfaceId:u};const p=[R(l,r)+h,R(l,s)+h,R(l,i)+h];if(p[0]*p[1]>a&&p[0]*p[2]>a)return{intersect:!1,coplanar:c,pt1:o,pt2:f,surfaceId:u};if(Math.abs(l[0]-g[0])<1e-9&&Math.abs(l[1]-g[1])<1e-9&&Math.abs(l[2]-g[2])<1e-9&&Math.abs(h-y)<1e-9)return c=!0,{intersect:!1,coplanar:c,pt1:o,pt2:f,surfaceId:u};const m=[e,t,n],M=[r,s,i],S=R(l,g),C=(h-y*S)/(S*S-1),T=(y-h*S)/(S*S-1),d=[C*l[0]+T*g[0],C*l[1]+T*g[1],C*l[2]+T*g[2]],D=Q(l,g,[]);it(D);let O=0,w=0;const L=[],N=[];let I=50,k=50;for(let j=0;j<3;j++){const Jt=j,Qt=(j+1)%3,Ot=gt.intersectWithLine(m[Jt],m[Qt],r,g);Ot.intersection&&Ot.t>0-a&&Ot.t<1+a&&(Ot.t<1+a&&Ot.t>1-a&&(I=O),L[O++]=R(Ot.x,D)-R(d,D));const wt=gt.intersectWithLine(M[Jt],M[Qt],e,l);wt.intersection&&wt.t>0-a&&wt.t<1+a&&(wt.t<1+a&&wt.t>1-a&&(k=w),N[w++]=R(wt.x,D)-R(d,D))}if(O>2){O--;const j=L[2];L[2]=L[I],L[I]=j}if(w>2){w--;const j=N[2];N[2]=N[k],N[k]=j}if(O!==2||w!==2)return{intersect:!1,coplanar:c,pt1:o,pt2:f,surfaceId:u};if(Number.isNaN(L[0])||Number.isNaN(L[1])||Number.isNaN(N[0])||Number.isNaN(N[1]))return{intersect:!1,coplanar:c,pt1:o,pt2:f,surfaceId:u};if(L[0]>L[1]){const j=L[1];L[1]=L[0],L[0]=j}if(N[0]>N[1]){const j=N[1];N[1]=N[0],N[0]=j}let V,P;return L[1]<N[0]||N[1]<L[0]?{intersect:!1,coplanar:c,pt1:o,pt2:f,surfaceId:u}:(L[0]<N[0]?L[1]<N[1]?(u[0]=2,u[1]=1,V=N[0],P=L[1]):(u[0]=2,u[1]=2,V=N[0],P=N[1]):L[1]<N[1]?(u[0]=1,u[1]=1,V=L[0],P=L[1]):(u[0]=1,u[1]=2,V=L[0],P=N[1]),Ye(d,D,V,o),Ye(d,D,P,f),{intersect:!0,coplanar:c,pt1:o,pt2:f,surfaceId:u})}const p0=[[0,1],[1,2],[2,0]],C0=[1,2,4],m0=[[-1,-1,-1,-1,-1,-1,-1],[0,2,100,-1,-1,-1,-1],[1,0,101,-1,-1,-1,-1],[1,2,100,1,100,101,-1],[2,1,102,-1,-1,-1,-1],[0,1,102,102,100,0,-1],[0,101,2,2,101,102,-1],[100,101,102,-1,-1,-1,-1]],M0={computeNormalDirection:Un,computeNormal:Kt,interpolationDerivs:Hi,intersectWithTriangle:E0};function S0(e,t){t.classHierarchy.push("vtkTriangle"),e.getCellDimension=()=>2,e.intersectWithLine=(n,r,s,i,a)=>{const c={subId:0,t:Number.MAX_VALUE,intersect:0,betweenPoints:!1};a[2]=0;const o=[],f=s*s,u=[],l=[],g=[];t.points.getPoint(0,u),t.points.getPoint(1,l),t.points.getPoint(2,g);const h=[],y=[];if(Kt(u,l,g,h),h[0]!==0||h[1]!==0||h[2]!==0){const S=gt.intersectWithLine(n,r,u,h);if(c.betweenPoints=S.betweenPoints,c.t=S.t,i[0]=S.x[0],i[1]=S.x[1],i[2]=S.x[2],!S.intersection)return a[0]=0,a[1]=0,c.intersect=0,c;const C=e.evaluatePosition(i,o,a,y);if(C.evaluation>=0)return C.dist2<=f?(c.intersect=1,c):(c.intersect=C.evaluation,c)}const E=W(u,l),p=W(l,g),m=W(g,u);t.line||(t.line=K.newInstance()),E>p&&E>m?(t.line.getPoints().setPoint(0,u),t.line.getPoints().setPoint(1,l)):p>m&&p>E?(t.line.getPoints().setPoint(0,l),t.line.getPoints().setPoint(1,g)):(t.line.getPoints().setPoint(0,g),t.line.getPoints().setPoint(1,u));const M=t.line.intersectWithLine(n,r,s,i,a);if(c.betweenPoints=M.betweenPoints,c.t=M.t,M.intersect){const S=[],C=[],T=[];for(let d=0;d<3;d++)S[d]=u[d]-g[d],C[d]=l[d]-g[d],T[d]=i[d]-g[d];return a[0]=R(T,S)/m,a[1]=R(T,C)/p,c.intersect=1,c}return a[0]=0,a[1]=0,c.intersect=0,c},e.evaluatePosition=(n,r,s,i)=>{const a={subId:0,dist2:0,evaluation:-1};let c,o;const f=[],u=[],l=[],g=[];let h;const y=[],E=[],p=[];let m=0,M=0;const S=[];let C,T,d,D=[];const O=[],w=[],L=[];a.subId=0,s[2]=0,t.points.getPoint(1,f),t.points.getPoint(2,u),t.points.getPoint(0,l),Un(f,u,l,g),gt.generalizedProjectPoint(n,f,g,L);let N=0;for(c=0;c<3;c++)g[c]<0?h=-g[c]:h=g[c],h>N&&(N=h,M=c);for(o=0,c=0;c<3;c++)c!==M&&(S[o++]=c);for(c=0;c<2;c++)y[c]=L[S[c]]-l[S[c]],E[c]=f[S[c]]-l[S[c]],p[c]=u[S[c]]-l[S[c]];if(m=U(E,p),m===0)return s[0]=0,s[1]=0,a.evaluation=-1,a;if(s[0]=U(y,p)/m,s[1]=U(E,y)/m,i[0]=1-(s[0]+s[1]),i[1]=s[0],i[2]=s[1],i[0]>=0&&i[0]<=1&&i[1]>=0&&i[1]<=1&&i[2]>=0&&i[2]<=1)r&&(a.dist2=W(L,n),r[0]=L[0],r[1]=L[1],r[2]=L[2]),a.evaluation=1;else{let I;if(r){if(i[1]<0&&i[2]<0)for(C=W(n,l),T=K.distanceToLine(n,f,l,I,O),d=K.distanceToLine(n,l,u,I,w),C<T?(a.dist2=C,D=l):(a.dist2=T,D=O),d<a.dist2&&(a.dist2=d,D=w),c=0;c<3;c++)r[c]=D[c];else if(i[2]<0&&i[0]<0)for(C=W(n,f),T=K.distanceToLine(n,f,l,I,O),d=K.distanceToLine(n,f,u,I,w),C<T?(a.dist2=C,D=f):(a.dist2=T,D=O),d<a.dist2&&(a.dist2=d,D=w),c=0;c<3;c++)r[c]=D[c];else if(i[1]<0&&i[0]<0)for(C=W(n,u),T=K.distanceToLine(n,u,l,I,O),d=K.distanceToLine(n,f,u,I,w),C<T?(a.dist2=C,D=u):(a.dist2=T,D=O),d<a.dist2&&(a.dist2=d,D=w),c=0;c<3;c++)r[c]=D[c];else if(i[0]<0){const k=K.distanceToLine(n,f,u,r);a.dist2=k.distance}else if(i[1]<0){const k=K.distanceToLine(n,u,l,r);a.dist2=k.distance}else if(i[2]<0){const k=K.distanceToLine(n,f,l,r);a.dist2=k.distance}}a.evaluation=0}return a},e.evaluateLocation=(n,r,s)=>{const i=[],a=[],c=[];t.points.getPoint(0,i),t.points.getPoint(1,a),t.points.getPoint(2,c);const o=1-n[0]-n[1];for(let f=0;f<3;f++)r[f]=i[f]*o+a[f]*n[0]+c[f]*n[1];s[0]=o,s[1]=n[0],s[2]=n[1]},e.getParametricDistance=n=>{let r,s=0;const i=[];i[0]=n[0],i[1]=n[1],i[2]=1-n[0]-n[1];for(let a=0;a<3;a++)i[a]<0?r=-i[a]:i[a]>1?r=i[a]-1:r=0,r>s&&(s=r);return s},e.derivatives=(n,r,s,i,a)=>{const c=t.points.getPoint(0),o=t.points.getPoint(1),f=t.points.getPoint(2),u=[],l=[],g=[],h=[];Kt(c,o,f,u),z(o,c,l),z(f,c,h),Q(u,l,g);const y=it(l);if(y<=0||it(g)<=0){for(let T=0;T<i;T++)for(let d=0;d<3;d++)a[T*i+d]=0;return}const E=[0,0],p=[y,0],m=[R(h,l),R(h,g)],M=new Array(6);Hi(M);const S=[p[0]-E[0],p[1]-E[1],m[0]-E[0],m[1]-E[1]],C=v.newTypedArray(B.Float64Array,4);vn(S,C,2);for(let T=0;T<i;T++){let d=0,D=0;for(let L=0;L<3;L++)d+=M[L]*s[i*L+T],D+=M[3+L]*s[i*L+T];const O=d*C[0]+D*C[1],w=d*C[2]+D*C[3];a[3*T]=O*l[0]+w*g[0],a[3*T+1]=O*l[1]+w*g[1],a[3*T+2]=O*l[2]+w*g[2]}},e.cellBoundary=(n,r,s)=>{const i=r[0]-r[1],a=.5*(1-r[0])-r[1],c=2*r[0]+r[1]-1;return i>=0&&a>=0?(s[0]=t.pointsIds[0],s[1]=t.pointsIds[1]):a<0&&c>=0?(s[0]=t.pointsIds[1],s[1]=t.pointsIds[2]):(s[0]=t.pointsIds[2],s[1]=t.pointsIds[0]),!(r[0]<0||r[1]<0||r[0]>1||r[1]>1||1-r[0]-r[1]<0)},e.clip=(n,r,s,i,a,c,o,f,u,l)=>{let g=0;for(let M=0;M<3;M++){const S=r.getComponent(M,0);(l&&S<=n||!l&&S>n)&&(g+=C0[M])}const h=m0[g],y=[0,0,0],E=[0,0,0],p=[0,0,0],m=[0,0,0];for(let M=0;h[M]>-1;M+=3){m[0]=0,m[1]=0,m[2]=0;for(let S=0;S<3;S++){const C=h[M+S];if(C>=100){const T=C-100;t.points.getPoint(T,y);const{inserted:d,id:D}=s.insertUniquePoint(y);m[S]=D,d&&c.passData(a,t.pointsIds[T],D)}else{const T=p0[C];let d=T[0],D=T[1],O=r.getComponent(T[1],0)-r.getComponent(T[0],0);O<=0&&(d=T[1],D=T[0],O=-O);const w=O===0?0:(n-r.getComponent(d,0))/O;t.points.getPoint(d,E),t.points.getPoint(D,p);for(let I=0;I<3;I++)y[I]=E[I]+w*(p[I]-E[I]);const{inserted:L,id:N}=s.insertUniquePoint(y);m[S]=N,L&&c.interpolateData(a,t.pointsIds[d],t.pointsIds[D],N,w)}}if(!(m[0]===m[1]||m[0]===m[2]||m[1]===m[2])){const S=i.insertNextCell(m);u.passData(o,f,S)}}}}const T0={};function Yi(e,t,n={}){Object.assign(t,T0,n),dt.extend(e,t,n),S0(e,t)}const d0=v.newInstance(Yi,"vtkTriangle");var Gn={newInstance:d0,extend:Yi,...M0};function Mr(){return{intersected:!1,subId:-1,x:[0,0,0],pCoords:[0,0,0],t:-1}}function D0(e,t){t.classHierarchy.push("vtkQuad"),e.getCellDimension=()=>2,e.getCellType=()=>x.VTK_QUAD,e.getNumberOfEdges=()=>4,e.getNumberOfFaces=()=>0,e.intersectWithLine=(n,r,s,i,a)=>{let c={subId:0,t:Number.MAX_VALUE,intersect:0,betweenPoints:!1},o;const f=t.points.getPoint(0,[]),u=t.points.getPoint(1,[]),l=t.points.getPoint(2,[]),g=t.points.getPoint(3,[]),h=W(f,l),y=W(u,g);if(h===y){let d,D=0,O=0;for(let w=0;w<4;w++)d=t.pointsIds[w],d>D&&(D=d,O=w);O===0||O===2?o=0:o=1}else h<y?o=0:o=1;let E=null;t.triangle?E=t.triangle.getPoints():(t.triangle=Gn.newInstance(),E=Oe.newInstance(),E.setNumberOfPoints(3),t.triangle.initialize(E));let p;const m=Mr();let M;const S=Mr();let C,T;switch(o){case 0:E.setPoint(0,...f),E.setPoint(1,...u),E.setPoint(2,...l),p=t.triangle.intersectWithLine(n,r,s,m.x,m.pCoords),E.setPoint(0,...l),E.setPoint(1,...g),E.setPoint(2,...f),M=t.triangle.intersectWithLine(n,r,s,S.x,S.pCoords),C=p.intersect&&M.intersect?p.t<=M.t:p.intersect,T=p.intersect&&M.intersect?M.t<p.t:M.intersect,C?(c=p,i[0]=m.x[0],i[1]=m.x[1],i[2]=m.x[2],a[0]=m.pCoords[0]+m.pCoords[1],a[1]=m.pCoords[1],a[2]=m.pCoords[2]):T&&(c=M,i[0]=S.x[0],i[1]=S.x[1],i[2]=S.x[2],a[0]=1-(S.pCoords[0]+S.pCoords[1]),a[1]=1-S.pCoords[1],a[2]=S.pCoords[2]);break;case 1:E.setPoint(0,...f),E.setPoint(1,...u),E.setPoint(2,...g),p=t.triangle.intersectWithLine(n,r,s,m.x,m.pCoords),E.setPoint(0,...l),E.setPoint(1,...g),E.setPoint(2,...u),M=t.triangle.intersectWithLine(n,r,s,S.x,S.pCoords),C=p.intersect&&M.intersect?p.t<=M.t:p.intersect,T=p.intersect&&M.intersect?M.t<p.t:M.intersect,C?(c=p,i[0]=m.x[0],i[1]=m.x[1],i[2]=m.x[2],a[0]=m.pCoords[0],a[1]=m.pCoords[1],a[2]=m.pCoords[2]):T&&(c=M,i[0]=S.x[0],i[1]=S.x[1],i[2]=S.x[2],a[0]=1-S.pCoords[0],a[1]=1-S.pCoords[1],a[2]=S.pCoords[2]);break}return c},e.interpolationFunctions=(n,r)=>{const s=1-n[0],i=1-n[1];r[0]=s*i,r[1]=n[0]*i,r[2]=n[0]*n[1],r[3]=s*n[1]},e.evaluateLocation=(n,r,s)=>{const i=[];e.interpolationFunctions(n,s),r[0]=0,r[1]=0,r[2]=0;for(let a=0;a<4;a++){t.points.getPoint(a,i);for(let c=0;c<3;c++)r[c]+=i[c]*s[a]}}}const O0={};function Xi(e,t,n={}){Object.assign(t,O0,n),dt.extend(e,t,n),D0(e,t)}const w0=v.newInstance(Xi,"vtkQuad");var L0={newInstance:w0,extend:Xi};const{vtkErrorMacro:Ji}=v;function v0(e){return()=>Ji(`vtkTriangleStrip.${e} - NOT IMPLEMENTED`)}function N0(e,t){if(!Array.isArray(e)||e.length<3){Ji("decomposeStrip - Invalid points array");return}let n=e[0],r=e[1];for(let s=0;s<e.length-2;s++){const i=e[s+2];s%2?t.insertNextCell([r,n,i]):t.insertNextCell([n,r,i]),n=r,r=i}}const I0={decomposeStrip:N0};function R0(e,t){t.classHierarchy.push("vtkTriangleStrip");const n=e.initialize;e.initialize=(r,s)=>{t.triangle.initialize(r,s),n(r,s)},e.getCellType=()=>x.VTK_TRIANGLE_STRIP,e.getCellDimension=()=>2,e.getNumberOfEdges=()=>t.pointsIds.length,e.getNumberOfFaces=()=>0,e.evaluatePosition=(r,s,i,a,c)=>{const o=[0,0,0];let f=Number.MAX_VALUE,u=0;const l=[],g=[],h=[];i[2]=0,g[0]=0,g[1]=0,g[2]=0;const y=t.triangle.getPoints();y.setNumberOfPoints(3);const p=t.triangle.getPointsIds().length;for(let m=0;m<p;m++)c[m]=0;for(let m=0;m<p-2;m++){const M=[];y.getPoint(m,M);const S=[];y.getPoint(m+1,S);const C=[];y.getPoint(m+2,C),y.setData(Float32Array.from([...M,...S,...C]),3);const T=t.triangle.evaluatePosition(r,h,o,l),d=T.dist2;T.evaluation>=0&&(d<f||d===f&&u===0)&&(u=T,s&&(s[0]=h[0],s[1]=h[1],s[2]=h[2]),i[0]=o[0],i[1]=o[1],f=d,g[0]=l[0],g[1]=l[1],g[2]=l[2])}return a[0]=f,c[0]=g[0],c[1]=g[1],c[2]=g[2],u},e.evaluateLocation=(r,s,i,a)=>{const c=[[0,1,2],[1,0,2]],o=r%2,f=t.pointsIds.length;for(let y=0;y<f;y++)a[y]=0;const u=1-s[0]-s[1];a[r]=u,a[r+1]=s[0],a[r+2]=s[1];const l=[];t.points.getPoint(r+c[o][0],l);const g=[];t.points.getPoint(r+c[o][1],g);const h=[];t.points.getPoint(r+c[o][2],h);for(let y=0;y<3;y++)i[y]=l[y]*a[r]+g[y]*a[r+1]+h[y]*a[r+2]},e.cellBoundary=(r,s,i)=>{const a=[[0,1,2],[1,0,2]],c=r%2,o=t.triangle.getPointsIds();return o[0]=t.pointsIds[a[c][0]],o[1]=t.pointsIds[a[c][1]],o[2]=t.pointsIds[a[c][2]],t.triangle.cellBoundary(0,s,i)},e.getEdge=r=>{let s,i;const a=t.pointsIds.length;return r===0?(s=0,i=1):r===a-1?(s=r-1,i=r):(s=r-1,i=r+1),t.line.getPointsIds()[0]=t.pointsIds[s],t.line.getPointsIds()[1]=t.pointsIds[i],t.line.getPoints().setPoint(0,t.points.getPoint(s)),t.line.getPoints().setPoint(1,t.points.getPoint(i)),t.line},e.intersectWithLine=(r,s,i,a,c)=>{const o=t.pointsIds.length-2,f=t.triangle.getPoints();f.setNumberOfPoints(3);for(let u=0;u<o;u++){const l=[];t.points.getPoint(t.pointsIds[u],l);const g=[];t.points.getPoint(t.pointsIds[u+1],g);const h=[];t.points.getPoint(t.pointsIds[u+2],h),f.setData(Float32Array.from([...l,...g,...h]),3);const y=t.triangle.intersectWithLine(r,s,i,a,c);if(y.intersect)return y}return!1},e.triangulate=()=>{const r=t.points.getNumberOfPoints()-2;t.tris=new Array(3*r);const s=[[0,1,2],[1,0,2]];for(let i=0;i<r;i++){const a=i%2;for(let c=0;c<3;c++)t.tris[i*3+c]=i+s[a][c]}return!0},e.getPointArray=()=>t.tris,e.derivatives=(r,s,i,a,c)=>{const o=[];t.points.getPoint(r,o);const f=[];t.points.getPoint(r+1,f);const u=[];t.points.getPoint(r+2,u);const l=t.triangle.getPoints();l.setPoint(0,...o),l.setPoint(1,...f),l.setPoint(2,...u),t.triangle.derivatives(0,s,i,a,c)},e.getParametricCenter=r=>(r[0]=.333333,r[1]=.333333,r[2]=0,Math.floor((t.pointsIds.length-2)/2)),e.contour=(r,s,i,a,c,o,f,u,l,g,h)=>v0("contour")(),e.clip=(r,s,i,a,c,o,f,u,l,g)=>{const h=t.points.getNumberOfPoints()-2,y=new Float32Array(3),E=s.newClone();E.setNumberOfComponents(s.getNumberOfComponents()),E.setData(y,s.getNumberOfComponents());const p=t.triangle.getPoints();p.setNumberOfPoints(3);const m=t.triangle.getPointsIds(),M=[0,0,0];for(let S=0;S<h;S++){let C=S,T=S+1,d=S+2;S%2&&(C=S+2,T=S+1,d=S),p.setPoint(0,...t.points.getPoint(C,M)),p.setPoint(1,...t.points.getPoint(T,M)),p.setPoint(2,...t.points.getPoint(d,M)),m[0]=t.pointsIds[C],m[1]=t.pointsIds[T],m[2]=t.pointsIds[d],y[0]=s.getComponent(C,0),y[1]=s.getComponent(T,0),y[2]=s.getComponent(d,0),t.triangle.clip(r,E,i,a,c,o,f,u,l,g)}}}const k0={line:null,triangle:null,tris:null};function Qi(e,t,n={}){Object.assign(t,k0,n),dt.extend(e,t,n),t.line||(t.line=K.newInstance()),t.triangle||(t.triangle=Gn.newInstance()),R0(e,t)}const V0=v.newInstance(Qi,"vtkTriangleStrip");var _0={newInstance:V0,extend:Qi,...I0};const vt=["verts","lines","polys","strips"],{vtkWarningMacro:Sr}=v,x0={[x.VTK_LINE]:K,[x.VTK_QUAD]:L0,[x.VTK_POLY_LINE]:K,[x.VTK_TRIANGLE]:Gn,[x.VTK_TRIANGLE_STRIP]:_0,[x.VTK_POLY_LINE]:t0,[x.VTK_POLYGON]:y0};function A0(e,t){t.classHierarchy.push("vtkPolyData");function n(c){return c.replace(/(?:^\w|[A-Z]|\b\w)/g,o=>o.toUpperCase()).replace(/\s+/g,"")}function r(){t.cells=void 0,t.links=void 0}vt.forEach(c=>{e[`getNumberOf${n(c)}`]=()=>t[c].getNumberOfCells(),t[c]?t[c]=et(t[c]):t[c]=pr.newInstance(),t[`_on${n(c)}Changed`]=r}),e.getNumberOfCells=()=>vt.reduce((c,o)=>c+t[o].getNumberOfCells(),0);const s=e.shallowCopy;e.shallowCopy=(c,o=!1)=>{s(c,o),vt.forEach(f=>{t[f]=pr.newInstance(),t[f].shallowCopy(c.getReferenceByName(f))})};const i=e.getMTime;e.getMTime=()=>vt.reduce((c,o)=>{var f;return Math.max(c,((f=t[o])==null?void 0:f.getMTime())??c)},i());const a=e.initialize;e.initialize=()=>(vt.forEach(c=>{var o;return(o=t[c])==null?void 0:o.initialize()}),r(),a()),e.buildCells=()=>{const c=e.getNumberOfVerts(),o=e.getNumberOfLines(),f=e.getNumberOfPolys(),u=e.getNumberOfStrips(),l=c+o+f+u,g=new Uint8Array(l);let h=g;const y=new Uint32Array(l);let E=y;if(c){let p=0;t.verts.getCellSizes().forEach((m,M)=>{E[M]=p,h[M]=m>1?x.VTK_POLY_VERTEX:x.VTK_VERTEX,p+=m+1}),E=E.subarray(c),h=h.subarray(c)}if(o){let p=0;t.lines.getCellSizes().forEach((m,M)=>{E[M]=p,h[M]=m>2?x.VTK_POLY_LINE:x.VTK_LINE,m===1&&Sr("Building VTK_LINE ",M," with only one point, but VTK_LINE needs at least two points. Check the input."),p+=m+1}),E=E.subarray(o),h=h.subarray(o)}if(f){let p=0;t.polys.getCellSizes().forEach((m,M)=>{switch(E[M]=p,m){case 3:h[M]=x.VTK_TRIANGLE;break;case 4:h[M]=x.VTK_QUAD;break;default:h[M]=x.VTK_POLYGON;break}m<3&&Sr("Building VTK_TRIANGLE ",M," with less than three points, but VTK_TRIANGLE needs at least three points. Check the input."),p+=m+1}),E+=E.subarray(f),h+=h.subarray(f)}if(u){let p=0;h.fill(x.VTK_TRIANGLE_STRIP,0,u),t.strips.getCellSizes().forEach((m,M)=>{E[M]=p,p+=m+1})}t.cells=Bu.newInstance(),t.cells.setCellTypes(l,g,y)},e.buildLinks=(c=0)=>{t.cells==null&&e.buildCells(),t.links=_u.newInstance(),c>0?t.links.allocate(c):t.links.allocate(e.getPoints().getNumberOfPoints()),t.links.buildLinks(e)},e.getCellType=c=>t.cells.getCellType(c),e.getCellPoints=c=>{const o=e.getCellType(c);let f=null;switch(o){case x.VTK_VERTEX:case x.VTK_POLY_VERTEX:f=t.verts;break;case x.VTK_LINE:case x.VTK_POLY_LINE:f=t.lines;break;case x.VTK_TRIANGLE:case x.VTK_QUAD:case x.VTK_POLYGON:f=t.polys;break;case x.VTK_TRIANGLE_STRIP:f=t.strips;break;default:return f=null,{type:0,cellPointIds:null}}const u=t.cells.getCellLocation(c),l=f.getCell(u);return{cellType:o,cellPointIds:l}},e.getPointCells=c=>t.links.getCells(c),e.getCellEdgeNeighbors=(c,o,f)=>{const u=t.links.getLink(o),l=t.links.getLink(f);return u.cells.filter(g=>g!==c&&l.cells.indexOf(g)!==-1)},e.getCell=(c,o=null)=>{const f=e.getCellPoints(c),u=o||x0[f.cellType].newInstance();return u.initialize(e.getPoints(),f.cellPointIds),u},e.getMaxCellSize=()=>vt.reduce((c,o)=>{var f,u;return Math.max(c,((u=(f=t[o])==null?void 0:f.getMaxCellSize)==null?void 0:u.call(f))??0)},0)}const $0={};function Zi(e,t,n={}){Object.assign(t,$0,n),Ju.extend(e,t,n),v.get(e,t,["cells","links"]),v.setGet(e,t,["verts","lines","polys","strips"]),A0(e,t)}const U0=v.newInstance(Zi,"vtkPolyData");var G0={newInstance:U0,extend:Zi},qi=Object.freeze({__proto__:null,PointsManager:ye,RLEVoxelMap:Mt,VoxelManager:pu,deepClone:Ri,fnv1aHash:ki,imageIdToURI:$t,isEqual:Ke,triggerEvent:q});class j0{}class F0{constructor(t){this.storePointData=t.storePointData}getStatistics(){console.debug("InstanceCalculator getStatistics called")}}var jn;const{PointsManager:z0}=qi;function bt(e){return{max:[-1/0],min:[1/0],sum:[0],count:0,maxIJK:null,maxLPS:null,minIJK:null,minLPS:null,runMean:[0],m2:[0],m3:[0],m4:[0],allValues:[[]],pointsInShape:e?z0.create3(1024):null,sumLPS:[0,0,0]}}function ta(e,t,n=null,r=null){Array.isArray(t)&&t.length>1&&e.max.length===1&&(e.max.push(e.max[0],e.max[0]),e.min.push(e.min[0],e.min[0]),e.sum.push(e.sum[0],e.sum[0]),e.runMean.push(0,0),e.m2.push(e.m2[0],e.m2[0]),e.m3.push(e.m3[0],e.m3[0]),e.m4.push(e.m4[0],e.m4[0]),e.allValues.push([],[])),e!=null&&e.pointsInShape&&n&&e.pointsInShape.push(n);const s=Array.isArray(t)?t:[t];e.count+=1,n&&(e.sumLPS[0]+=n[0],e.sumLPS[1]+=n[1],e.sumLPS[2]+=n[2]),e.max.forEach((i,a)=>{const c=s[a];e.allValues[a].push(c);const o=e.count,f=c-e.runMean[a],u=f/o,l=f*u*(o-1);e.sum[a]+=c,e.runMean[a]+=u,e.m4[a]+=l*u*u*(o*o-3*o+3)+6*u*u*e.m2[a]-4*u*e.m3[a],e.m3[a]+=l*u*(o-2)-3*u*e.m2[a],e.m2[a]+=l,c<e.min[a]&&(e.min[a]=c,a===0&&(e.minIJK=r?[...r]:null,e.minLPS=n?[...n]:null)),c>e.max[a]&&(e.max[a]=c,a===0&&(e.maxIJK=r?[...r]:null,e.maxLPS=n?[...n]:null))})}function B0(e){if(e.length===0)return 0;const t=[...e].sort((r,s)=>r-s),n=Math.floor(t.length/2);return t.length%2===0?(t[n-1]+t[n])/2:t[n]}function ea(e,t){const n=e.sum.map(l=>l/e.count),r=e.m2.map(l=>Math.sqrt(l/e.count)),s=e.sumLPS.map(l=>l/e.count),i=e.m3.map((l,g)=>{const h=e.m2[g]/e.count;return h===0?0:l/(e.count*Math.pow(h,1.5))}),a=e.m4.map((l,g)=>{const h=e.m2[g]/e.count;return h===0?0:l/(e.count*h*h)-3}),c=e.allValues.map(l=>B0(l)),o={max:{name:"max",label:"Max Pixel",value:e.max.length===1?e.max[0]:e.max,unit:t,pointIJK:e.maxIJK?[...e.maxIJK]:null,pointLPS:e.maxLPS?[...e.maxLPS]:null},min:{name:"min",label:"Min Pixel",value:e.min.length===1?e.min[0]:e.min,unit:t,pointIJK:e.minIJK?[...e.minIJK]:null,pointLPS:e.minLPS?[...e.minLPS]:null},mean:{name:"mean",label:"Mean Pixel",value:n.length===1?n[0]:n,unit:t},stdDev:{name:"stdDev",label:"Standard Deviation",value:r.length===1?r[0]:r,unit:t},count:{name:"count",label:"Voxel Count",value:e.count,unit:null},median:{name:"median",label:"Median",value:c.length===1?c[0]:c,unit:t},skewness:{name:"skewness",label:"Skewness",value:i.length===1?i[0]:i,unit:null},kurtosis:{name:"kurtosis",label:"Kurtosis",value:a.length===1?a[0]:a,unit:null},maxLPS:{name:"maxLPS",label:"Max LPS",value:e.maxLPS?Array.from(e.maxLPS):null,unit:null},minLPS:{name:"minLPS",label:"Min LPS",value:e.minLPS?Array.from(e.minLPS):null,unit:null},pointsInShape:e.pointsInShape,center:{name:"center",label:"Center",value:s?[...s]:null,unit:null},array:[]};o.array.push(o.min,o.max,o.mean,o.stdDev,o.median,o.skewness,o.kurtosis,o.count,o.maxLPS,o.minLPS),o.center.value&&o.array.push(o.center);const f=e.pointsInShape!==null,u=bt(f);return e.max=u.max,e.min=u.min,e.sum=u.sum,e.count=u.count,e.maxIJK=u.maxIJK,e.maxLPS=u.maxLPS,e.minIJK=u.minIJK,e.minLPS=u.minLPS,e.runMean=u.runMean,e.m2=u.m2,e.m3=u.m3,e.m4=u.m4,e.allValues=u.allValues,e.pointsInShape=u.pointsInShape,e.sumLPS=u.sumLPS,o}class Xt extends j0{static statsInit(t){t.storePointData||(this.state.pointsInShape=null),this.state=bt(t.storePointData)}}jn=Xt;Xt.state=bt(!0);Xt.statsCallback=({value:e,pointLPS:t=null,pointIJK:n=null})=>{ta(jn.state,e,t,n)};Xt.getStatistics=e=>ea(jn.state,e==null?void 0:e.unit);class K0 extends F0{constructor(t){super(t),this.state=bt(t.storePointData)}statsInit(t){this.state=bt(t.storePointData)}statsCallback(t){ta(this.state,t.value,t.pointLPS,t.pointIJK)}getStatistics(t){return ea(this.state,t==null?void 0:t.unit)}}const{CalibrationTypes:pt}=Ba,Tr="px",b0="voxels",W0=[1,2,3,4],P0=["4,3","4,7","4,-1"],se={0:"px",1:"percent",2:"dB",3:"cm",4:"seconds",5:"hertz",6:"dB/seconds",7:"cm/sec",8:"cm²",9:"cm²/s",12:"degrees",[-1]:"mV"},ie="²",H0=[pt.ERMF,pt.USER,pt.ERROR,pt.PROJECTION,pt.CALIBRATED,pt.UNKNOWN],Y0=(e,t)=>{const{calibration:n,spacing:r=[1,1,1]}=e;let s="mm";const i="mm³";let a=s+ie;const c=(n==null?void 0:n.scale)||1;let o=c/((n==null?void 0:n.columnPixelSpacing)||r[0]),f=c/((n==null?void 0:n.rowPixelSpacing)||r[1]),u=c/r[2],l="";if(!n||!n.type&&!n.sequenceOfUltrasoundRegions)return{unit:s,areaUnit:a,scale:o,scaleY:f,scaleZ:u,volumeUnit:i};if(H0.includes(n==null?void 0:n.type)&&(l=n.type),n.type===pt.UNCALIBRATED)return{unit:Tr,areaUnit:Tr+ie,scale:o,scaleY:f,scaleZ:u,volumeUnit:b0};if(n.sequenceOfUltrasoundRegions){const g=n.sequenceOfUltrasoundRegions.find(h=>t.every(y=>y[0]>=h.regionLocationMinX0&&y[0]<=h.regionLocationMaxX1&&y[1]>=h.regionLocationMinY0&&y[1]<=h.regionLocationMaxY1)&&(W0.includes(h.regionDataType)||P0.includes(`${h.physicalUnitsXDirection},${h.physicalUnitsYDirection}`)));if(g&&g.physicalUnitsXDirection===g.physicalUnitsYDirection){const h=Math.abs(g.physicalDeltaX),y=Math.abs(g.physicalDeltaY);o=1/h,f=1/y,l="US Region",s=se[g.physicalUnitsXDirection]||"unknown",a=s+ie}else if(g&&g.physicalUnitsYDirection===-1){const h=Math.abs(g.physicalDeltaX),y=Math.abs(g.physicalDeltaY);o=1/h,f=1/y,l="ECG Region",s=se[g.physicalUnitsXDirection]||se[g.physicalUnitsYDirection]||"unknown",a=(se[g.physicalUnitsYDirection]||"px")+ie}}else n.scale&&(o=n.scale);return{unit:s+(l?` ${l}`:""),areaUnit:a+(l?` ${l}`:""),volumeUnit:i+(l?` ${l}`:""),scale:o,scaleY:f,scaleZ:u}},dr=10;function we(){return{maxIJKs:[]}}function na(e,t){const{value:n}=t,{maxIJKs:r}=e,s=r.length;if(typeof n!="number"||s>=dr&&n<r[0].value)return;const i={value:t.value,pointLPS:t.pointLPS?[t.pointLPS[0],t.pointLPS[1],t.pointLPS[2]]:void 0,pointIJK:t.pointIJK?[t.pointIJK[0],t.pointIJK[1],t.pointIJK[2]]:void 0};if(!s||n>=r[s-1].value)r.push(i);else for(let a=0;a<s;a++)if(n<=r[a].value){r.splice(a,0,i);break}s>=dr&&r.splice(0,1)}function ra(e,t,n){const{spacing:r,calibration:s}=n,{volumeUnit:i}=Y0({calibration:s},[]),a=r?r[0]*r[1]*r[2]:1;return t.volume={value:Array.isArray(t.count.value)?t.count.value.map(c=>c*a):t.count.value*a,unit:i,name:"volume",label:"Volume"},t.maxIJKs=e.maxIJKs.filter(c=>c.pointIJK!==void 0),t.array.push(t.volume),e.maxIJKs=[],t}class X0 extends Xt{static statsInit(t){super.statsInit(t),this.volumetricState=we()}static statsCallback(t){super.statsCallback(t),na(this.volumetricState,t)}static getStatistics(t){const n={...t,unit:(t==null?void 0:t.unit)||"none",calibration:t==null?void 0:t.calibration,hasPixelSpacing:t==null?void 0:t.hasPixelSpacing},r=super.getStatistics(n);return ra(this.volumetricState,r,n)}}X0.volumetricState=we();class Dr extends K0{constructor(t){super(t),this.volumetricState=we()}statsInit(t){super.statsInit(t),this.volumetricState=we()}statsCallback(t){super.statsCallback(t),na(this.volumetricState,t)}getStatistics(t){const n={...t,unit:(t==null?void 0:t.unit)||"none",calibration:t==null?void 0:t.calibration,hasPixelSpacing:t==null?void 0:t.hasPixelSpacing},r=super.getStatistics(n);return ra(this.volumetricState,r,n)}}class ft{static statsInit(t){const{storePointData:n,indices:r,mode:s}=t;this.mode=s,this.indices=r,this.calculators.clear(),this.mode==="individual"?r.forEach(i=>{this.calculators.set(i,new Dr({storePointData:n}))}):this.calculators.set(r,new Dr({storePointData:n}))}static statsCallback(t){const{segmentIndex:n,...r}=t;if(!n)throw new Error("Segment index is required for stats calculation");const s=this.mode==="individual"?this.calculators.get(n):this.calculators.get(this.indices);if(!s)throw new Error(`No calculator found for segment ${n}`);s.statsCallback(r)}static getStatistics(t){if(this.mode==="individual"){const r={};return this.calculators.forEach((s,i)=>{r[i]=s.getStatistics(t)}),r}return this.calculators.get(this.indices).getStatistics(t)}}ft.calculators=new Map;ft.indices=[];ft.mode="collective";function sa(e,t,n){let r=-1;if(t.forEach((s,i)=>{r>=0||s.a==e.b&&(r=i)}),r>=0){const s=t[r];return t.splice(r,1),n.push(s.b),n[0]==s.b?{remainingLines:t,contourPoints:n,type:"CLOSED_PLANAR"}:sa(s,t,n)}return{remainingLines:t,contourPoints:n,type:"OPEN_PLANAR"}}function ia(e){if(e.length==0)return[];const t=[],n=e.shift();t.push(n.a),t.push(n.b);const r=sa(n,e,t);if(r.remainingLines.length==0)return[{type:r.type,contourPoints:r.contourPoints}];{const s=ia(r.remainingLines);return s.push({type:r.type,contourPoints:r.contourPoints}),s}}function J0(e){return ia(e)}function Q0(e,t=!1){const n=e.getPoints(),r=e.getLines(),s=new Array(n.getNumberOfPoints()).fill(0).map((o,f)=>n.getPoint(f).slice()),i=new Array(r.getNumberOfCells()).fill(0).map((o,f)=>{const u=r.getCell(f*3).slice();return{a:u[0],b:u[1]}});if(t)return{points:s,lines:i};const a=[];for(const[o,f]of s.entries()){const u=a.findIndex(l=>l[0]===f[0]&&l[1]===f[1]&&l[2]===f[2]);if(u>=0)i.map(l=>(l.a===o&&(l.a=u),l.b===o&&(l.b=u),l));else{const l=a.length;a.push(f),i.map(g=>(g.a===o&&(g.a=l),g.b===o&&(g.b=l),g))}}const c=i.filter(o=>o.a!==o.b);return{points:a,lines:c}}function Or(e,t,n){const r=n.toIJK(e),s=n.toIJK(t),i=nt(),{testIJK:a}=n,c=We(nt(),r,s),o=Math.round(Math.max(...c.map(Math.abs)));if(o<2)return!0;const f=jt(nt(),c,1/o);for(let u=1;u<o;u++)if(ka(i,s,f,u),!a(i))return!1;return!0}function wr({dimensions:e,imageData:t,voxelManager:n,segmentIndex:r,containedSegmentIndices:s}){const i=e[0],a=i*e[1];return{testCenter:(c,o)=>{const f=Ur(nt(),c,o).map(p=>p/2),u=t.worldToIndex(f).map(Math.round),[l,g,h]=u,y=l+g*i+h*a,E=n.getAtIndex(y);return E===r||(s==null?void 0:s.has(E))},toIJK:c=>t.worldToIndex(c),testIJK:c=>{const[o,f,u]=c,l=Math.round(o)+Math.round(f)*i+Math.round(u)*a,g=n.getAtIndex(l);return g===r||(s==null?void 0:s.has(g))}}}const _t=.01;function Z0(e,t,n={maxMajor:0,maxMinor:0}){const{points:r}=e.polyData,{maxMinor:s,maxMajor:i}=n;let a=i*i,c=s*s,o;for(let p=0;p<r.length;p++)for(let m=p+1;m<r.length;m++){const M=r[p],S=r[m],C=Wn(M,S);C<a||C-_t<a+_t&&o||t.testCenter(M,S)&&Or(M,S,t)&&(a=C-_t,o=[p,m],c=0)}if(!o)return;a=Math.sqrt(a+_t);const f=r[o[0]],u=r[o[1]],l=We(nt(),f,u);jt(l,l,1/a);let g;for(let p=0;p<r.length;p++)for(let m=p+1;m<r.length;m++){const M=r[p],S=r[m],C=Wn(M,S);if(C<=c)continue;const T=We(nt(),M,S);Math.abs(Gr(T,l))/Math.sqrt(C)>_t||t.testCenter(M,S)&&Or(M,S,t)&&(c=C,g=[p,m])}if(!g)return;c=Math.sqrt(c);const h=r[g[0]],y=r[g[1]];return{majorAxis:[f,u],minorAxis:[h,y],maxMajor:a,maxMinor:c,...e}}class q0{constructor(t=!1){this.oriented=t,this.edgeMap=new Map}initialize(){this.edgeMap.clear()}computeEdgeKey(t,n){return this.oriented||t<n?.5*(t*n)*(t*n+1)+n:.5*(n*t)*(n*t+1)+t}insertUniqueEdge(t,n,r){const s=this.computeEdgeKey(t,n);let i=this.edgeMap.get(s);return i||(i={key:s,edgeId:this.edgeMap.size,value:r},this.edgeMap.set(s,i)),i}insertEdge(t,n,r){const s=this.computeEdgeKey(t,n),i={key:s,edgeId:this.edgeMap.size,value:r};return this.edgeMap.set(s,i),i}isInsertedEdge(t,n){const r=this.computeEdgeKey(t,n);return this.edgeMap.get(r)}static getEdgePointIds(t){const n=.5*(-1+Math.sqrt(8*t.key+1)),r=t.key-.5*(n+1)*n,s=n-r;return[r,s]}}function tl(e={}){return new q0(e.oriented)}var el={newInstance:tl};const nl=[[-1,-1,-1,-1,-1],[0,3,-1,-1,-1],[1,0,-1,-1,-1],[1,3,-1,-1,-1],[2,1,-1,-1,-1],[0,3,2,1,-1],[2,0,-1,-1,-1],[2,3,-1,-1,-1],[3,2,-1,-1,-1],[0,2,-1,-1,-1],[1,0,3,2,-1],[1,2,-1,-1,-1],[3,1,-1,-1,-1],[0,1,-1,-1,-1],[3,0,-1,-1,-1],[-1,-1,-1,-1,-1]],rl=[[0,1],[1,3],[2,3],[0,2]];function sl(e){return nl[e]}function il(e){return rl[e]}var Lr={getCase:sl,getEdge:il};const{vtkErrorMacro:vr,vtkDebugMacro:al}=v;function ol(e,t){function n(){let c=0,o=1;return t.slicingMode===1?(c=0,o=2):t.slicingMode===0&&(c=1,o=2),[c,o]}t.classHierarchy.push("vtkImageMarchingSquares"),e.getContourValues=()=>t.contourValues,e.setContourValues=c=>{t.contourValues=c,e.modified()};const r=[],s=[],i=[],a=el.newInstance();e.getPixelScalars=(c,o,f,u,l,g)=>{const[h,y,E]=c;r[0]=E*o[1]*o[0]+y*o[0]+h,r[1]=r[0]+u[l],r[2]=r[0]+u[g],r[3]=r[2]+u[l];for(let p=0;p<4;++p)s[p]=f[r[p]]},e.getPixelPoints=(c,o,f,u)=>{const l=[...c];u(l,i),l[o]+=1;const g=u(l,[]);i[3]=g[0],i[4]=g[1],i[5]=g[2],l[f]+=1,u(l,g),i[9]=g[0],i[10]=g[1],i[11]=g[2],l[o]-=1,u(l,g),i[6]=g[0],i[7]=g[1],i[8]=g[2]},e.produceLines=(c,o,f,u,l,g,h,y,E,p)=>{var d;const m=[1,2,8,4],M=[];let S;e.getPixelScalars(o,f,u,h,y,E);let C=0;for(let D=0;D<4;D++)s[D]>=c&&(C|=m[D]);const T=Lr.getCase(C);if(!(T[0]<0)){e.getPixelPoints(o,y,E,p);for(let D=0;T[D]>=0;D+=2){g.push(2);for(let O=0;O<2;O++){const w=Lr.getEdge(T[D+O]);if(S=void 0,t.mergePoints&&(S=(d=a.isInsertedEdge(r[w[0]],r[w[1]]))==null?void 0:d.value),S===void 0){const L=(c-s[w[0]])/(s[w[1]]-s[w[0]]),N=i.slice(w[0]*3,(w[0]+1)*3),I=i.slice(w[1]*3,(w[1]+1)*3);M[0]=N[0]+L*(I[0]-N[0]),M[1]=N[1]+L*(I[1]-N[1]),M[2]=N[2]+L*(I[2]-N[2]),S=l.length/3,l.push(M[0],M[1],M[2]),t.mergePoints&&a.insertEdge(r[w[0]],r[w[1]],S)}g.push(S)}}}},e.requestData=(c,o)=>{var d;const f=c[0];if(!f){vr("Invalid or missing input");return}if(t.slicingMode==null||t.slicingMode<0||t.slicingMode>2){vr("Invalid or missing slicing mode");return}console.time("msquares");const u=f.getDimensions(),l=f.getExtent(),g=f.computeIncrements(l),h=f.getPointData().getScalars().getData(),[y,E]=n(),p=f.indexToWorld,m=[],M=[];let S=Math.round(t.slice);S>=u[t.slicingMode]&&(S=0);const C=[0,0,0];C[t.slicingMode]=S;for(let D=0;D<t.contourValues.length;++D){for(let O=0;O<u[E]-1;++O){C[E]=O;for(let w=0;w<u[y]-1;++w)C[y]=w,e.produceLines(t.contourValues[D],C,u,h,m,M,g,y,E,p)}a.initialize()}const T=((d=o[0])==null?void 0:d.initialize())||G0.newInstance();T.getPoints().setData(new Float32Array(m),3),T.getLines().setData(new Uint32Array(M)),o[0]=T,al("Produced output"),console.timeEnd("msquares")}}const cl={contourValues:[],slicingMode:2,slice:0,mergePoints:!1};function aa(e,t,n={}){Object.assign(t,cl,n),v.obj(e,t),v.algo(e,t,1,1),v.setGet(e,t,["slicingMode","slice","mergePoints"]),v.algo(e,t,1,1),ol(e,t)}const fl=v.newInstance(aa,"vtkImageMarchingSquares");var ul={newInstance:fl,extend:aa};const{VoxelManager:ll}=qi,_={createVoxelManager:(e,t)=>ll.createScalarVolumeVoxelManager({dimensions:e,scalarData:t}),createDataStructure:e=>{const{scalarData:t,dimensions:n,spacing:r,origin:s,direction:i}=e;return{voxelManager:_.createVoxelManager(n,t),dimensions:n,spacing:r,origin:s,direction:i,scalarData:t}},createVTKImageData:(e,t,n,r,s)=>{const i=lr.newInstance();if(i.setDimensions(e),i.setOrigin(t),i.setDirection(n),i.setSpacing(r),!s)return i;const a=ut.newInstance({name:"Scalars",numberOfComponents:1,values:s});return i.getPointData().setScalars(a),i},processSegmentStatistics:({segVoxelManager:e,imageVoxelManager:t,indices:n,bounds:r,imageData:s})=>{e.forEach(({value:i,pointIJK:a,pointLPS:c,index:o})=>{if(n.indexOf(i)===-1)return;const f=t.getAtIndex(o);ft.statsCallback({segmentIndex:i,value:f,pointIJK:a,pointLPS:c})},{boundsIJK:r||t.getDefaultBounds(),imageData:s})},performMarchingSquares:(e,t=null,n=null)=>{const r={};t!==null&&(r.slice=t),n!==null&&(r.slicingMode=n);const s=ul.newInstance(r);return s.setInputData(e),s.setContourValues([1]),s.setMergePoints(!1),s.getOutputData()},createContoursFromPolyData:(e,t=null)=>{var r;const n=Q0(e);return(r=n.points)!=null&&r.length?{contours:J0(n.lines),polyData:n}:null},createSegmentsFromIndices:e=>[null,...e.map(t=>({segmentIndex:t}))],getArgsFromInfo:e=>{const{segmentationInfo:t,imageInfo:n}=e,r=()=>_.createDataStructure(t),s=()=>_.createDataStructure(n);return{segmentation:t&&r(),image:n&&s()}},calculateSegmentsStatisticsVolume:e=>{const{mode:t,indices:n,unit:r}=e,{segmentation:s,image:i}=_.getArgsFromInfo(e),{voxelManager:a,spacing:c}=s,{voxelManager:o}=i,f=_.createVTKImageData(s.dimensions,s.origin,s.direction,s.spacing);return ft.statsInit({storePointData:!1,indices:n,mode:t}),_.processSegmentStatistics({segVoxelManager:a,imageVoxelManager:o,indices:n,imageData:f}),ft.getStatistics({spacing:c,mode:t,unit:r})},computeMetabolicStats({segmentationInfo:e,imageInfo:t}){const{scalarData:n,dimensions:r,spacing:s,origin:i,direction:a}=e,{spacing:c,dimensions:o,direction:f,origin:u,scalarData:l}=t,g=_.createVoxelManager(e.dimensions,e.scalarData),h=_.createVoxelManager(o,l);let y=0,E=0;const p=g.getScalarDataLength();for(let C=0;C<p;C++)g.getAtIndex(C)!==0&&(y+=h.getAtIndex(C),E++);const m=.001*E*s[0]*s[1]*s[2],S=(E>0?y/E:0)*E*c[0]*c[1]*c[2]*.001;return{tmtv:m,tlg:S}},calculateSegmentsStatisticsStack:e=>{const{segmentationInfo:t,imageInfo:n,indices:r,mode:s}=e;ft.statsInit({storePointData:!0,indices:r,mode:s});for(let c=0;c<t.length;c++){const o=t[c],f=n[c],u=[o.dimensions[0],o.dimensions[1],1],l=_.createVoxelManager(u,o.scalarData),g=_.createVoxelManager(u,f.scalarData),h=_.createVTKImageData(u,o.origin,o.direction,o.spacing);_.processSegmentStatistics({segVoxelManager:l,imageVoxelManager:g,indices:r,imageData:h})}const i=t[0].spacing;return ft.getStatistics({spacing:i,mode:s})},getSegmentLargestBidirectionalInternal:e=>{const{segmentationInfo:t,imageInfo:n,indices:r,mode:s,isStack:i}=e;let a;return i?{segmentation:a}=_.getArgsFromInfo({segmentationInfo:t[0]}):{segmentation:a}=_.getArgsFromInfo(e),i?_.calculateBidirectionalStack({segmentationInfo:t,indices:r,mode:s}):_.calculateVolumetricBidirectional({segmentation:a,indices:r,mode:s})},findLargestBidirectionalFromContours:(e,t,n)=>{let r;for(const s of e){const i=Z0(s,t,r);i&&(r=i)}return r?{segmentIndex:n,majorAxis:r.majorAxis,minorAxis:r.minorAxis,maxMajor:r.maxMajor,maxMinor:r.maxMinor}:null},calculateBidirectionalStack:({segmentationInfo:e,indices:t,mode:n})=>{const r=_.createSegmentsFromIndices(t);let s=[];for(let i=0;i<e.length;i++){const a=e[i],c=a.dimensions,o=a.scalarData,{spacing:f,direction:u,origin:l}=a,g=_.createVoxelManager(c,o),h=c[0]*c[1];for(let y=1;y<r.length;y++){const E=r[y];if(!E)continue;const p=E.segmentIndex;if(_.isSliceEmptyForSegmentVolume(0,o,h,p))continue;const m=[],M=new Uint8Array(o.length);for(let D=0;D<o.length;D++)M[D]=o[D]===p?1:0;const S=ut.newInstance({name:"Pixels",numberOfComponents:1,values:M}),C=_.createVTKImageData(c,l,u,[f[0],f[1],1]);C.getPointData().setScalars(S);try{const D=_.performMarchingSquares(C,null,2),O=_.createContoursFromPolyData(D);O&&m.push(O)}catch(D){console.warn(D)}const T=wr({dimensions:c,imageData:C,voxelManager:g,segmentIndex:p}),d=_.findLargestBidirectionalFromContours(m,T,p);d&&s.push(d)}}return s},calculateVolumetricBidirectional:({segmentation:e,indices:t,mode:n})=>{const{voxelManager:r,dimensions:s,origin:i,direction:a,spacing:c}=e,o=_.createVTKImageData(s,i,a,c),f=_.generateContourSetsFromLabelmapVolume({segmentation:e,indices:t,imageData:o,mode:n}),u=[];for(let l=0;l<f.length;l++){const g=f[l],{segmentIndex:h}=g.segment,y=g.sliceContours,E=wr({dimensions:s,imageData:o,voxelManager:r,segmentIndex:h}),p=_.findLargestBidirectionalFromContours(y,E,h);p&&u.push(p)}return u},generateContourSetsFromLabelmapVolume:e=>{const{segmentation:t,indices:n}=e,{dimensions:r,scalarData:s,origin:i,direction:a,spacing:c}=t;let o=e.imageData;o||(o=_.createVTKImageData(r,i,a,c));const f=r[2],u=r[0]*r[1],l=_.createSegmentsFromIndices(n);for(let y=0;y<f;y++)for(let E=0;E<r[1];E++){const p=E*r[0]+y*u;s[p]=0,s[p+r[0]-1]=0}const g=[],h=l.length;for(let y=0;y<h;y++){const E=l[y];if(!E)continue;const p=E.segmentIndex,m=[],M=ut.newInstance({name:"Scalars",numberOfComponents:1,size:u*f,dataType:"Uint8Array"});for(let C=0;C<f;C++){if(_.isSliceEmptyForSegmentVolume(C,s,u,p))continue;const T=C*u;try{for(let w=0;w<u;w++)s[w+T]===p?M.setValue(w+T,1):M.setValue(w,0);const d=lr.newInstance();d.shallowCopy(o),d.getPointData().setScalars(M);const D=_.performMarchingSquares(d,C),O=_.createContoursFromPolyData(D,C);O&&m.push(O)}catch(d){console.warn(C),console.warn(d)}}const S={sliceContours:m,segment:E};g.push(S)}return g},isSliceEmptyForSegmentVolume:(e,t,n,r)=>{const s=e*n,i=s+n;for(let a=s;a<i;a++)if(t[a]===r)return!1;return!0}};rn(_);
|