dicomweb-pacs
Version:
A self contained easy to use PACS with DICOMWEB and DIMSE service support
3 lines • 90.6 kB
JavaScript
/*! For license information please see 3166.bundle.d6de67b5c48861d87b61.js.LICENSE.txt */
(self.webpackChunk=self.webpackChunk||[]).push([[3166],{59874:(e,t,n)=>{"use strict";n.d(t,{fX:()=>s,X6:()=>ta,f_:()=>na,ql:()=>ea,QX:()=>Zn,_$:()=>c});var a={};n.r(a),n.d(a,{fillSegmentation:()=>et,generateSegmentation:()=>Je,generateToolState:()=>Ze});var r={};n.r(r),n.d(r,{createFromDICOMSegBuffer:()=>xn,generateLabelMaps2DFrom3D:()=>cn,generateSegmentation:()=>sn,generateToolState:()=>Mn});var i={};n.r(i),n.d(i,{generateToolState:()=>vn});var o={};n.r(o),n.d(o,{generateContourSetsFromLabelmap:()=>kn,generateRTSSFromAnnotations:()=>Ln,generateRTSSFromSegmentations:()=>Vn});var s={};n.r(s),n.d(s,{s:()=>Ee});var c={};n.r(c),n.d(c,{vk:()=>ra});var u=n(5842);const d=e=>Array.isArray(e)?e:[e],l=e=>t=>t.ConceptNameCodeSequence.CodeMeaning===e;var m=n(81429);const{TID1500:g,addAccessors:f}=u.BF,{StructuredReport:p}=u.h4,{Normalizer:h}=u.z8,{TID1500MeasurementReport:S,TID1501MeasurementGroup:I}=g,{DicomMetaDictionary:T}=u.p,O={CodingSchemeDesignator:"DCM",CodeValue:"121071"},D={CodingSchemeDesignator:"SCT",CodeValue:"363698007"},y={CodingSchemeDesignator:"SRT",CodeValue:"G-C0E3"},R=(e,t,n)=>{const{ConceptNameCodeSequence:a}=e;if(!a)return;const{CodingSchemeDesignator:r,CodeValue:i}=a;return r==t.CodingSchemeDesignator&&i==t.CodeValue||n&&r==n.CodingSchemeDesignator&&i==n.CodeValue};function C(e,t,n){const a=t[e],r=E.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[e];if(!(a&&a.data&&a.data.length&&r))return;const i=a.data.map((e=>function(e,t,n){const a=n.getTID300RepresentationArguments(e);return a.ReferencedSOPSequence=t,new n.TID300Representation(a)}(e,n,r)));return new I(i)}class E{static getSetupMeasurementData(e){const{ContentSequence:t}=e,n=d(t),a=n.find((e=>R(e,O))),r=n.filter((e=>R(e,D,y)))||[],i=n.find((e=>"NUM"===e.ValueType)),o=d(i.ContentSequence).find((e=>"SCOORD"===e.ValueType)),{ReferencedSOPSequence:s}=o.ContentSequence,{ReferencedSOPInstanceUID:c,ReferencedFrameNumber:u}=s,l={sopInstanceUid:c,frameIndex:u||1,complete:!0,finding:a?f(a.ConceptCodeSequence):void 0,findingSites:r.map((e=>f(e.ConceptCodeSequence)))};l.finding&&(l.description=l.finding.CodeMeaning);const m=l.findingSites&&l.findingSites[0];return m&&(l.location=m[0]&&m[0].CodeMeaning||m.CodeMeaning),{defaultState:l,findingGroup:a,findingSiteGroups:r,NUMGroup:i,SCOORDGroup:o,ReferencedSOPSequence:s,ReferencedSOPInstanceUID:c,ReferencedFrameNumber:u}}static generateReport(e,t,n){let a=[];const r=Object.keys(e)[0];if(!r)throw new Error("No measurements provided.");const i=t.get("generalSeriesModule",r),{studyInstanceUID:o,seriesInstanceUID:s}=i;Object.keys(e).forEach((n=>{const r=t.get("sopCommonModule",n),i=t.get("frameNumber",n),o=e[n],s=Object.keys(o),c={ReferencedSOPClassUID:r.sopClassUID,ReferencedSOPInstanceUID:r.sopInstanceUID};h.isMultiframeSOPClassUID(r.sopClassUID)&&(c.ReferencedFrameNumber=i);const u=[];s.forEach((e=>{const t=C(e,o,c);t&&u.push(t)})),a=a.concat(u)}));const c=new S({TID1501MeasurementGroups:a},n),u=new Uint8Array(2);u[1]=1;const d={StudyInstanceUID:o,SeriesInstanceUID:s},l={FileMetaInformationVersion:{Value:[u.buffer],vr:"OB"},TransferSyntaxUID:{Value:["1.2.840.10008.1.2.1"],vr:"UI"},ImplementationClassUID:{Value:[T.uid()],vr:"UI"},ImplementationVersionName:{Value:["dcmjs"],vr:"SH"}};d._meta=l,d._vrMap={PixelData:"OW"};const m=new p([d]),g=c.contentItem(d);return m.dataset=Object.assign(m.dataset,g),m.dataset._meta=l,m.dataset.SpecificCharacterSet="ISO_IR 192",m}static generateToolState(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("1500"!==e.ContentTemplateSequence.TemplateIdentifier)throw new Error("This package can currently only interpret DICOM SR TID 1500");const n=d(e.ContentSequence).find(l("Imaging Measurements")),a=d(n.ContentSequence).filter(l("Measurement Group")),r={},i=E.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE,o=[];return Object.keys(i).forEach((e=>{o.push(i[e]),r[e]=[]})),a.forEach((n=>{const a=d(n.ContentSequence).find((e=>"Tracking Identifier"===e.ConceptNameCodeSequence.CodeMeaning)).TextValue,i=t.getToolClass?t.getToolClass(n,e,o):o.find((e=>e.isValidCornerstoneTrackingIdentifier(a)));if(i){const e=i.getMeasurementData(n);console.log(`=== ${i.toolType} ===`),console.log(e),r[i.toolType].push(e)}})),r}static registerTool(e){E.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE[e.utilityToolType]=e,E.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[e.toolType]=e,E.MEASUREMENT_BY_TOOLTYPE[e.toolType]=e.utilityToolType}}E.MEASUREMENT_BY_TOOLTYPE={},E.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE={},E.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE={};var N="cornerstoneTools@^4.0.0";const{Length:A}=u.BF.TID300,M="Length";class x{static getMeasurementData(e){const{defaultState:t,NUMGroup:n,SCOORDGroup:a}=E.getSetupMeasurementData(e),r={...t,length:n.MeasuredValueSequence.NumericValue,toolType:x.toolType,handles:{start:{},end:{},textBox:{hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};return[r.handles.start.x,r.handles.start.y,r.handles.end.x,r.handles.end.y]=a.GraphicData,r}static getTID300RepresentationArguments(e){const{handles:t,finding:n,findingSites:a}=e;return{point1:t.start,point2:t.end,distance:e.length,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:Length",finding:n,findingSites:a||[]}}}x.toolType=M,x.utilityToolType=M,x.TID300Representation=A,x.isValidCornerstoneTrackingIdentifier=e=>{if(!e.includes(":"))return!1;const[t,n]=e.split(":");return t===N&&n===M},E.registerTool(x);const{Polyline:P}=u.BF.TID300;class _{static getMeasurementData(e){const{defaultState:t,SCOORDGroup:n,NUMGroup:a}=E.getSetupMeasurementData(e),r={...t,toolType:_.toolType,handles:{points:[],textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}},cachedStats:{area:a?a.MeasuredValueSequence.NumericValue:0},color:void 0,invalidated:!0},{GraphicData:i}=n;for(let e=0;e<i.length;e+=2)r.handles.points.push({x:i[e],y:i[e+1]});return r}static getTID300RepresentationArguments(e){const{handles:t,finding:n,findingSites:a,cachedStats:r={}}=e,{points:i}=t,{area:o=0,perimeter:s=0}=r;return{points:i,area:o,perimeter:s,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:FreehandRoi",finding:n,findingSites:a||[]}}}_.toolType="FreehandRoi",_.utilityToolType="FreehandRoi",_.TID300Representation=P,_.isValidCornerstoneTrackingIdentifier=e=>{if(!e.includes(":"))return!1;const[t,n]=e.split(":");return t===N&&n===_.toolType},E.registerTool(_);const{Bidirectional:v}=u.BF.TID300,w="Bidirectional";class b{static getMeasurementData(e){const{ContentSequence:t}=e,n=d(t).find((e=>"121071"===e.ConceptNameCodeSequence.CodeValue)),a=d(t).filter((e=>"G-C0E3"===e.ConceptNameCodeSequence.CodeValue)),r=d(t).find((e=>"Long Axis"===e.ConceptNameCodeSequence.CodeMeaning)),i=d(r.ContentSequence).find((e=>"SCOORD"===e.ValueType)),o=d(t).find((e=>"Short Axis"===e.ConceptNameCodeSequence.CodeMeaning)),s=d(o.ContentSequence).find((e=>"SCOORD"===e.ValueType)),{ReferencedSOPSequence:c}=i.ContentSequence,{ReferencedSOPInstanceUID:u,ReferencedFrameNumber:l}=c,m=String(r.MeasuredValueSequence.NumericValue),g=String(o.MeasuredValueSequence.NumericValue),f=Math.max(i.GraphicData[0],i.GraphicData[2],s.GraphicData[0],s.GraphicData[2]),p=Math.max(i.GraphicData[1],i.GraphicData[3],s.GraphicData[1],s.GraphicData[3]);return{sopInstanceUid:u,frameIndex:l||1,toolType:b.toolType,active:!1,handles:{start:{x:i.GraphicData[0],y:i.GraphicData[1],drawnIndependently:!1,allowedOutsideImage:!1,active:!1,highlight:!1,index:0},end:{x:i.GraphicData[2],y:i.GraphicData[3],drawnIndependently:!1,allowedOutsideImage:!1,active:!1,highlight:!1,index:1},perpendicularStart:{x:s.GraphicData[0],y:s.GraphicData[1],drawnIndependently:!1,allowedOutsideImage:!1,active:!1,highlight:!1,index:2},perpendicularEnd:{x:s.GraphicData[2],y:s.GraphicData[3],drawnIndependently:!1,allowedOutsideImage:!1,active:!1,highlight:!1,index:3},textBox:{highlight:!1,hasMoved:!0,active:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0,x:f+10,y:p+10}},invalidated:!1,isCreating:!1,longestDiameter:m,shortestDiameter:g,toolName:"Bidirectional",visible:!0,finding:n?n.ConceptCodeSequence:void 0,findingSites:a.map((e=>e.ConceptCodeSequence))}}static getTID300RepresentationArguments(e){const{start:t,end:n,perpendicularStart:a,perpendicularEnd:r}=e.handles,{shortestDiameter:i,longestDiameter:o,finding:s,findingSites:c}=e;return{longAxis:{point1:t,point2:n},shortAxis:{point1:a,point2:r},longAxisLength:o,shortAxisLength:i,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:Bidirectional",finding:s,findingSites:c||[]}}}b.toolType=w,b.utilityToolType=w,b.TID300Representation=v,b.isValidCornerstoneTrackingIdentifier=e=>{if(!e.includes(":"))return!1;const[t,n]=e.split(":");return t===N&&n===w},E.registerTool(b);const{Ellipse:U}=u.BF.TID300,F="EllipticalRoi";class q{static getMeasurementData(e){const{defaultState:t,NUMGroup:n,SCOORDGroup:a}=E.getSetupMeasurementData(e),{GraphicData:r}=a,i=[{x:r[0],y:r[1]},{x:r[2],y:r[3]}],o=[{x:r[4],y:r[5]},{x:r[6],y:r[7]}],s=Math.sqrt(Math.pow(o[0].x-o[1].x,2)+Math.pow(o[0].y-o[1].y,2)),c=(o[1].x-o[0].x)/s,u=(o[1].y-o[0].y)/s,d=s/2,l={x:i[0].x+c*d,y:i[0].y+u*d},m={x:i[1].x-c*d,y:i[1].y-u*d};return{...t,toolType:q.toolType,active:!1,cachedStats:{area:n?n.MeasuredValueSequence.NumericValue:0},handles:{end:{x:l.x,y:l.y,highlight:!1,active:!1},initialRotation:0,start:{x:m.x,y:m.y,highlight:!1,active:!1},textBox:{hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}},invalidated:!0,visible:!0}}static getTID300RepresentationArguments(e){const{cachedStats:t={},handles:n,finding:a,findingSites:r}=e,{start:i,end:o}=n,{area:s}=t,c=Math.abs(i.x-o.x)/2,u=Math.abs(i.y-o.y)/2,d=[],l={x:(i.x+o.x)/2,y:(i.y+o.y)/2};c>u?(d.push({x:l.x-c,y:l.y}),d.push({x:l.x+c,y:l.y}),d.push({x:l.x,y:l.y-u}),d.push({x:l.x,y:l.y+u})):(d.push({x:l.x,y:l.y-u}),d.push({x:l.x,y:l.y+u}),d.push({x:l.x-c,y:l.y}),d.push({x:l.x+c,y:l.y}));return{area:s,points:d,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:EllipticalRoi",finding:a,findingSites:r||[]}}}q.toolType=F,q.utilityToolType=F,q.TID300Representation=U,q.isValidCornerstoneTrackingIdentifier=e=>{if(!e.includes(":"))return!1;const[t,n]=e.split(":");return t===N&&n===F},E.registerTool(q);const{Circle:G}=u.BF.TID300,V="CircleRoi";class L{static getMeasurementData(e){const{defaultState:t,NUMGroup:n,SCOORDGroup:a}=E.getSetupMeasurementData(e),{GraphicData:r}=a,i={x:r[0],y:r[1]},o={x:r[2],y:r[3]};return{...t,toolType:L.toolType,active:!1,cachedStats:{area:n?n.MeasuredValueSequence.NumericValue:0,radius:0,perimeter:0},handles:{end:{...o,highlight:!1,active:!1},initialRotation:0,start:{...i,highlight:!1,active:!1},textBox:{hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}},invalidated:!0,visible:!0}}static getTID300RepresentationArguments(e){const{cachedStats:t={},handles:n,finding:a,findingSites:r}=e,{start:i,end:o}=n,{area:s,radius:c}=t,u=2*Math.PI*c,d=[];d.push(i),d.push(o);return{area:s,perimeter:u,radius:c,points:d,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:CircleRoi",finding:a,findingSites:r||[]}}}L.toolType=V,L.utilityToolType=V,L.TID300Representation=G,L.isValidCornerstoneTrackingIdentifier=e=>{if(!e.includes(":"))return!1;const[t,n]=e.split(":");return t===N&&n===V},E.registerTool(L);const{Point:B}=u.BF.TID300,k="ArrowAnnotate",j="CORNERSTONEFREETEXT";class H{static getMeasurementData(e){const{defaultState:t,SCOORDGroup:n,findingGroup:a}=E.getSetupMeasurementData(e),r=a.ConceptCodeSequence.CodeMeaning,{GraphicData:i}=n;return{...t,toolType:H.toolType,active:!1,handles:{start:{x:i[0],y:i[1],highlight:!0,active:!1},end:{x:4==i.length?i[2]:i[0]+20,y:4==i.length?i[3]:i[1]+20,highlight:!0,active:!1},textBox:{hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}},invalidated:!0,text:r,visible:!0}}static getTID300RepresentationArguments(e){const t=[e.handles.start,e.handles.end],{findingSites:n}=e;let{finding:a}=e;const r={points:t,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:ArrowAnnotate",findingSites:n||[]};return a&&a.CodeValue===j||(a={CodeValue:j,CodingSchemeDesignator:"CST4",CodeMeaning:e.text}),r.finding=a,r}}H.toolType=k,H.utilityToolType=k,H.TID300Representation=B,H.isValidCornerstoneTrackingIdentifier=e=>{if(!e.includes(":"))return!1;const[t,n]=e.split(":");return t===N&&n===k},E.registerTool(H);const{CobbAngle:z}=u.BF.TID300,$="CobbAngle";class Y{static getMeasurementData(e){const{defaultState:t,NUMGroup:n,SCOORDGroup:a}=E.getSetupMeasurementData(e),r={...t,rAngle:n.MeasuredValueSequence.NumericValue,toolType:Y.toolType,handles:{start:{},end:{},start2:{highlight:!0,drawnIndependently:!0},end2:{highlight:!0,drawnIndependently:!0},textBox:{hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};return[r.handles.start.x,r.handles.start.y,r.handles.end.x,r.handles.end.y,r.handles.start2.x,r.handles.start2.y,r.handles.end2.x,r.handles.end2.y]=a.GraphicData,r}static getTID300RepresentationArguments(e){const{handles:t,finding:n,findingSites:a}=e;return{point1:t.start,point2:t.end,point3:t.start2,point4:t.end2,rAngle:e.rAngle,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:CobbAngle",finding:n,findingSites:a||[]}}}Y.toolType=$,Y.utilityToolType=$,Y.TID300Representation=z,Y.isValidCornerstoneTrackingIdentifier=e=>{if(!e.includes(":"))return!1;const[t,n]=e.split(":");return t===N&&n===$},E.registerTool(Y);const{Angle:W}=u.BF.TID300,K="Angle";class X{static getMeasurementData(e){const{defaultState:t,NUMGroup:n,SCOORDGroup:a}=E.getSetupMeasurementData(e),r={...t,rAngle:n.MeasuredValueSequence.NumericValue,toolType:X.toolType,handles:{start:{},middle:{},end:{},textBox:{hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};return[r.handles.start.x,r.handles.start.y,r.handles.middle.x,r.handles.middle.y,r.handles.middle.x,r.handles.middle.y,r.handles.end.x,r.handles.end.y]=a.GraphicData,r}static getTID300RepresentationArguments(e){const{handles:t,finding:n,findingSites:a}=e;return{point1:t.start,point2:t.middle,point3:t.middle,point4:t.end,rAngle:e.rAngle,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:Angle",finding:n,findingSites:a||[]}}}X.toolType=K,X.utilityToolType=K,X.TID300Representation=W,X.isValidCornerstoneTrackingIdentifier=e=>{if(!e.includes(":"))return!1;const[t,n]=e.split(":");return t===N&&n===K},E.registerTool(X);const{Polyline:Q}=u.BF.TID300;class J{static getMeasurementData(e){const{defaultState:t,SCOORDGroup:n,NUMGroup:a}=E.getSetupMeasurementData(e),r={...t,toolType:J.toolType,handles:{start:{},end:{},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0},initialRotation:0},cachedStats:{area:a?a.MeasuredValueSequence.NumericValue:0},color:void 0,invalidated:!0},i={};return[r.handles.start.x,r.handles.start.y,i.x,i.y,r.handles.end.x,r.handles.end.y]=n.GraphicData,r}static getTID300RepresentationArguments(e){const{finding:t,findingSites:n,cachedStats:a={},handles:r}=e,{start:i,end:o}=r,s=[i,{x:i.x,y:o.y},o,{x:o.x,y:i.y}],{area:c,perimeter:u}=a;return{points:s,area:c,perimeter:u,trackingIdentifierTextValue:"cornerstoneTools@^4.0.0:RectangleRoi",finding:t,findingSites:n||[]}}}J.toolType="RectangleRoi",J.utilityToolType="RectangleRoi",J.TID300Representation=Q,J.isValidCornerstoneTrackingIdentifier=e=>{if(!e.includes(":"))return!1;const[t,n]=e.split(":");return t===N&&n===J.toolType},E.registerTool(J);var Z=n(3293),ee=n.n(Z);const{DicomMessage:te,DicomMetaDictionary:ne}=u.p,{Normalizer:ae}=u.z8;function re(e,t,n){const a=[];if(t){const t=e[0].data.byteArray.buffer,n=te.readFile(t),r=ne.naturalizeDataset(n.dict);r._meta=ne.namifyDataset(n.meta),a.push(r)}else for(let t=0;t<e.length;t++){const n=e[t].data.byteArray.buffer,r=te.readFile(n),i=ne.naturalizeDataset(r.dict);i._meta=ne.namifyDataset(r.meta),a.push(i)}return n?.SpecificCharacterSet&&a.forEach((e=>e.SpecificCharacterSet=n.SpecificCharacterSet)),ae.normalizeToDataset(a)}const{rotateDirectionCosinesInPlane:ie,flipImageOrientationPatient:oe,flipMatrix2D:se,rotateMatrix902D:ce}=u.BF.orientation,{datasetToBlob:ue,BitArray:de,DicomMessage:le,DicomMetaDictionary:me}=u.BF,{Normalizer:ge}=u.z8,{Segmentation:fe}=u.h4,pe={generateSegmentation:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{includeSliceSpacing:!0};const{toolState:a,segments:r}=t,i=e[0],o={x:i.columns,y:i.rows,z:e.length};o.xy=o.x*o.y;if(!function(e,t){let n=0;for(let e=0;e<t.length;e++)t[e]&&n++;return n}(0,r))throw new Error("No segments to export!");const s=i.imageId.includes("?frame"),c=function(e,t,n){const a=re(e,t);return new fe([a],n)}(e,s,n),{referencedFramesPerSegment:u,segmentIndicies:d}=function(e,t,n){const a=[],r=[];for(let e=0;e<n.length;e++)n[e]&&(a.push(e),r.push([]));for(let n=0;n<t.length;n++){const i=e[t[n].imageId];for(let e=0;e<a.length;e++){const t=a[e];i&&i.brush&&i.brush.data&&i.brush.data[t]&&i.brush.data[t].pixelData&&r[e].push(n)}}return{referencedFramesPerSegment:r,segmentIndicies:a}}(a,e,r);let l=0;for(let e=0;e<u.length;e++)l+=u[e].length;c.setNumberOfFrames(l);for(let t=0;t<d.length;t++){const n=d[t],i=u[t],s=i.map((e=>e+1)),l=r[n];c.addSegment(l,he(n,i,a,e,o),s)}c.bitPackPixelData();return ue(c.dataset)},generateToolState:function(e,t,n){const a=le.readFile(t),r=me.naturalizeDataset(a.dict);r._meta=me.namifyDataset(a.meta);const i=ge.normalizeToDataset([r]),o=n.get("imagePlaneModule",e[0]);o||console.warn("Insufficient metadata, imagePlaneModule missing.");const s=function(e){const t=[];t[0]=e,t[1]=oe.h(e),t[2]=oe.v(e);const n=ie(e,Math.PI/2);return t[3]=n,t[4]=oe.h(n),t[5]=oe.v(n),t[6]=ie(e,Math.PI),t[7]=ie(e,1.5*Math.PI),t}(Array.isArray(o.rowCosines)?[...o.rowCosines,...o.columnCosines]:[o.rowCosines.x,o.rowCosines.y,o.rowCosines.z,o.columnCosines.x,o.columnCosines.y,o.columnCosines.z]),c=i.SharedFunctionalGroupsSequence,d=c.PlaneOrientationSequence?c.PlaneOrientationSequence.ImageOrientationPatient:void 0,l=i.Columns*i.Rows,m=function(e){const t=[],n=e.SegmentSequence;if(Array.isArray(n))for(let e=0;e<n.length;e++)t.push(n[e]);else t.push(n);return{seriesInstanceUid:e.ReferencedSeriesSequence.SeriesInstanceUID,data:t}}(i),g=function(e){const t=e.SegmentationType;if("BINARY"===t)return de.unpack(e.PixelData);const n=new Uint8Array(e.PixelData),a=e.MaximumFractionalValue,r=void 0===n.find((e=>0!==e&&e!==a));if(!r)return void u.Rm.warn("This is a fractional segmentation, which is not currently supported.");return u.Rm.warn("This segmentation object is actually binary... processing as such."),n}(i),f=i.PerFrameFunctionalGroupsSequence,p={};let h=!0;for(let t=0;t<f.length;t++){const a=f[t],r=d||a.PlaneOrientationSequence.ImageOrientationPatient,o=Te(ee()(new Uint8Array(g.buffer,t*l,l),[i.Rows,i.Columns]),r,s);if(!o){console.warn("This segmentation object is not in-plane with the source data. Bailing out of IO. It'd be better to render this with vtkjs. "),h=!1;break}const u=a.SegmentIdentificationSequence.ReferencedSegmentNumber-1;let m;m=c.DerivationImageSequence&&c.DerivationImageSequence.SourceImageSequence?c.DerivationImageSequence.SourceImageSequence[t]:a.DerivationImageSequence.SourceImageSequence;Se(p,Ie(m,e,n),u,o)}if(!h)return;return{toolState:p,segMetadata:m}}};function he(e,t,n,a,r){const i=new Uint8Array(r.xy*t.length);let o=0;for(let r=0;r<t.length;r++){const s=n[a[t[r]].imageId].brush.data[e].pixelData;for(let e=0;e<s.length;e++)i[o]=s[e],o++}return i}function Se(e,t,n,a){e[t]?e[t].brush?e[t].brush.data||(e[t].brush.data=[]):(e[t].brush={},e[t].brush.data=[]):(e[t]={},e[t].brush={},e[t].brush.data=[]),e[t].brush.data[n]={};const r=e[t].brush.data[n];r.pixelData=new Uint8Array(a.data.length);const i=r.pixelData;for(let e=0;e<i.length;e++)a.data[e]?i[e]=1:i[e]=0}function Ie(e,t,n){const{ReferencedSOPInstanceUID:a,ReferencedFrameNumber:r}=e;return r?function(e,t,n,a){const r=n.find((n=>{const r=a.get("sopCommonModule",n);if(!r)return;const i=Number(n.split("frame=")[1]);return r.sopInstanceUID===e&&i===t-1}));return r}(a,r,t,n):function(e,t,n){return t.find((t=>{const a=n.get("sopCommonModule",t);if(a)return a.sopInstanceUID===e}))}(a,t,n)}function Te(e,t,n){return De(t,n[0])?e:De(t,n[1])?se.v(e):De(t,n[2])?se.h(e):De(t,n[3])?ce(e):De(t,n[4])?se.h(ce(e)):De(t,n[5])?se.v(ce(e)):De(t,n[6])?ce(ce(e)):De(t,n[7])?ce(ce(ce(e))):void 0}const Oe=1e-5;function De(e,t){return Math.abs(e[0]-t[0])<Oe&&Math.abs(e[1]-t[1])<Oe&&Math.abs(e[2]-t[2])<Oe&&Math.abs(e[3]-t[3])<Oe&&Math.abs(e[4]-t[4])<Oe&&Math.abs(e[5]-t[5])<Oe}const{nearlyEqual:ye}=u.BF.orientation;function Re(e,t,n){if(e.length!==t.length)return!1;for(let a=0;a<e.length;++a)if(!ye(e[a],t[a],n))return!1;return!0}function Ce(e,t,n,a){const{SharedFunctionalGroupsSequence:r,PerFrameFunctionalGroupsSequence:i}=e,o=r.PlaneOrientationSequence?r.PlaneOrientationSequence.ImageOrientationPatient:void 0,s=i[0],c=o||s.PlaneOrientationSequence.ImageOrientationPatient;return t.some((e=>Re(c,e,a)))?"Planar":function(e,t,n){const a=Math.abs(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]),r=Math.abs(e[3]*t[3]+e[4]*t[4]+e[5]*t[5]);return(a<n||Math.abs(a-1)<n)&&(r<n||Math.abs(r-1)<n)}(c,t[0],a)&&n.includes(e.Rows)&&n.includes(e.Columns)?"Perpendicular":"Oblique"}var Ee;!function(e){e.SEGMENTATION_LOAD_PROGRESS="CORNERSTONE_ADAPTER_SEGMENTATION_LOAD_PROGRESS"}(Ee||(Ee={}));const{rotateDirectionCosinesInPlane:Ne,flipImageOrientationPatient:Ae,flipMatrix2D:Me,rotateMatrix902D:xe}=u.BF.orientation,{BitArray:Pe,DicomMessage:_e,DicomMetaDictionary:ve}=u.p,{Normalizer:we}=u.z8,{Segmentation:be}=u.h4,{encode:Ue,decode:Fe}=u.BF.compression,qe={includeSliceSpacing:!0,rleEncode:!1};function Ge(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const a=Object.assign({},qe,n),r=Array.isArray(t)?t:[t];let i=0;const o=[];for(let e=0;e<r.length;e++){const t=r[e],{labelmaps2D:n,metadata:a}=t,s=[];for(let e=1;e<a.length;e++)a[e]&&(s[e]=[]);for(let e=0;e<n.length;e++){const t=n[e];if(n[e]){const{segmentsOnLabelmap:n}=t;n.forEach((t=>{0!==t&&(s[t].push(e),i++)}))}}o[e]=s}e.setNumberOfFrames(i);for(let t=0;t<r.length;t++){const n=o[t],a=r[t],{metadata:i}=a;for(let t=1;t<n.length;t++){const r=n[t];if(r){const n=r.map((e=>e+1)),o=i[t],s=Ve(a,r);e.addSegmentFromLabelmap(o,s,t,n)}}}if(a.rleEncode){const t=Ue(e.dataset.PixelData,i,e.dataset.Rows,e.dataset.Columns);e.assignToDataset({BitsAllocated:"8",BitsStored:"8",HighBit:"7",SegmentationType:"FRACTIONAL",SegmentationFractionalType:"PROBABILITY",MaximumFractionalValue:"255"}),e.dataset._meta.TransferSyntaxUID={Value:["1.2.840.10008.1.2.5"],vr:"UI"},e.dataset.SpecificCharacterSet="ISO_IR 192",e.dataset._vrMap.PixelData="OB",e.dataset.PixelData=t}else e.bitPackPixelData();return e}function Ve(e,t){const{labelmaps2D:n}=e,a=[];for(let e=0;e<t.length;e++){const r=t[e];a.push(n[r].pixelData)}return a}function Le(e,t,n,a,r,i){let o;if(!e)return o;const{FrameOfReferenceUID:s,PerFrameFunctionalGroupsSequence:c,SourceImageSequence:u,ReferencedSeriesSequence:d}=e;if(!c||0===c.length)return o;const l=c[t];if(!l)return o;let m;if(l.DerivationImageSequence){let e=l.DerivationImageSequence;Array.isArray(e)&&(e=0!==e.length?e[0]:void 0),e&&(m=e.SourceImageSequence,Array.isArray(m)&&(m=0!==m.length?m[0]:void 0))}else u&&0!==u.length&&(console.warn("DerivationImageSequence not present, using SourceImageSequence assuming SEG has the same geometry as the source image."),m=u[t]);if(m&&(o=function(e,t){const{ReferencedSOPInstanceUID:n,ReferencedFrameNumber:a}=e,r=t[n];if(!r)return void console.warn(`No imageId found for SOPInstanceUID: ${n}`);if(void 0!==a)return r.includes("frames/")?r.replace(/frames\/\d+/,`frames/${a}`):r.includes("frame=")?r.replace(/frame=\d+/,"frame="+(a-1)):r.includes("wadors:")?`${r}/frames/${a}`:`${r}?frame=${a-1}`;return r}(m,i)),void 0===o&&d){o=function(e,t,n,a,r,i){if(!e||!n.PlanePositionSequence?.[0]?.ImagePositionPatient)return;const o=n.PlanePositionSequence[0].ImagePositionPatient;for(let n of a){const a=r.get("instance",n);if(!a)continue;const s=ze(a);if(a.ImagePositionPatient&&a.FrameOfReferenceUID===t&&a.SeriesInstanceUID===e)if(s){const e=r.get("imagePlaneModule",n)?.imagePositionPatient;if(e&&Re(o,e,i))return n}else if(Re(o,a.ImagePositionPatient,i))return n}return}((Array.isArray(d)?d[0]:d).SeriesInstanceUID,s,l,n,a,r)}return o}function Be(e,t,n,a,r,i,o,s,c,u,d,l){const{SharedFunctionalGroupsSequence:m,PerFrameFunctionalGroupsSequence:g,Rows:f,Columns:p}=r,h=m.PlaneOrientationSequence?m.PlaneOrientationSequence.ImageOrientationPatient:void 0,S=p*f,I=S*i.length*u.BYTES_PER_ELEMENT;let T=1,O=0,D=n[O].slice(0),y=structuredClone(t[O]),R=r.SegmentSequence.length;for(let d=1;d<=R;++d){for(let m=0,R=g.length;m<R;++m){const R=g[m],C=ke(r,m);if(void 0===C)throw new Error("Could not retrieve the segment index. Aborting segmentation loading.");if(C!==d)continue;const E=h||R.PlaneOrientationSequence.ImageOrientationPatient,N=Ke(a,m*S,S),A=Ye(ee()(N,[f,p]),E,o,c);if(!A)throw new Error("Individual SEG frames are out of plane with respect to the first SEG frame. This is not yet supported. Aborting segmentation loading.");const M=Le(r,m,i,s,c,l);if(!M){console.warn("Image not present in stack, can't import frame : "+m+".");continue}const x=s.get("instance",M);if(f!==x.Rows||p!==x.Columns)throw new Error("Individual SEG frames have different geometry dimensions (Rows and Columns) respect to the source image reference frame. This is not yet supported. Aborting segmentation loading. ");const P=i.findIndex((e=>e===M)),_=new u(D,S*P*u.BYTES_PER_ELEMENT,S),v=A.data;let w=!1;for(let e=0,a=A.data.length;e<a;++e)if(v[e]){if(0!==_[e]){O++,O>=T&&(n[O]=new ArrayBuffer(I),t[O]=[],T++),D=n[O].slice(0),y=structuredClone(t[O]),m=0;break}_[e]=C,w=!0}w&&(y[P]||(y[P]=[]),y[P].push(C),e[P]||(e[P]=[]),e[P].push(C))}n[O]=D.slice(0),t[O]=structuredClone(y),O=0,D=n[O].slice(0),y=structuredClone(t[O])}}const ke=(e,t)=>{const{PerFrameFunctionalGroupsSequence:n,SharedFunctionalGroupsSequence:a}=e,r=n[t];return r&&r.SegmentIdentificationSequence?r.SegmentIdentificationSequence.ReferencedSegmentNumber:a.SegmentIdentificationSequence?a.SegmentIdentificationSequence.ReferencedSegmentNumber:void 0};function je(e,t,n,a,r,i,o,s,c,u,d,l,m,g,f){const{SharedFunctionalGroupsSequence:p,PerFrameFunctionalGroupsSequence:h,Rows:S,Columns:I}=r,T=p.PlaneOrientationSequence?p.PlaneOrientationSequence.ImageOrientationPatient:void 0,O=I*S;let D=0;const y=h.length,R=Math.ceil(y/10),C=f&&g;let E=!1;return new Promise((t=>{!function p(){for(let t=Math.min(D+R,y);D<t;++D){const t=h[D],g=T||t.PlaneOrientationSequence.ImageOrientationPatient,f=Ke(a,D*O,O),p=Ye(ee()(f,[S,I]),g,o,c);if(!p)throw new Error("Individual SEG frames are out of plane with respect to the first SEG frame. This is not yet supported. Aborting segmentation loading.");const y=ke(r,D);if(void 0===y)throw new Error("Could not retrieve the segment index. Aborting segmentation loading.");d.has(y)||d.set(y,{});const R=Le(r,D,i,s,c,l);if(!R){console.warn("Image not present in stack, can't import frame : "+D+".");continue}const C=m.metadata[R];if(S!==C.Rows||I!==C.Columns)throw new Error("Individual SEG frames have different geometry dimensions (Rows and Columns) respect to the source image reference frame. This is not yet supported. Aborting segmentation loading. ");const N=m.indices[R],A=O*N*u.BYTES_PER_ELEMENT,M=new u(n[0],A,O),x=p.data,P=[];for(let t=0,n=p.data.length;t<n;++t)if(x[t]){for(let e=t;e<n;++e)x[e]&&(E||0===M[e]||(E=!0),M[e]=y,P.push(e));e[N]||(e[N]=[]),e[N].push(y);break}const _=d.get(y);_[N]=P,d.set(y,_)}if(C){const e=Math.round(D/y*100);f(g,Ee.SEGMENTATION_LOAD_PROGRESS,{percentComplete:e})}D<y?setTimeout(p,0):t(E)}()}))}function He(e,t){const n=e.SegmentationType;let a;if(a=Array.isArray(e.PixelData)?e.PixelData[0]:e.PixelData,void 0===a&&u.Rm.error("This segmentation pixelData is undefined."),"BINARY"===n)return function(e,t){for(var n=new Uint8Array(e),a=[],r=8*t,i=Math.ceil(8*n.length/r),o=0;o<i;o++){var s=o*r,c=Math.min(s+r,8*n.length),u=Math.floor(s/8),d=Math.ceil(c/8),l=n.slice(u,d),m=Pe.unpack(l);a.push(m)}return a}(a,t.maxBytesPerChunk);const r=new Uint8Array(a),i=e.MaximumFractionalValue;return void 0===r.find((e=>0!==e&&e!==i))?(u.Rm.warn("This segmentation object is actually binary... processing as such."),r):void 0}function ze(e){return e&&e.NumberOfFrames>1}function $e(e){const t=[];t[0]=e,t[1]=Ae.h(e),t[2]=Ae.v(e);const n=Ne(e,Math.PI/2);return t[3]=n,t[4]=Ae.h(n),t[5]=Ae.v(n),t[6]=Ne(e,Math.PI),t[7]=Ne(e,1.5*Math.PI),t}function Ye(e,t,n,a){return Re(t,n[0],a)?e:Re(t,n[1],a)?Me.v(e):Re(t,n[2],a)?Me.h(e):Re(t,n[3],a)?xe(e):Re(t,n[4],a)?xe(Me.h(e)):Re(t,n[5],a)?xe(Me.v(e)):Re(t,n[6],a)?xe(xe(e)):Re(t,n[7],a)?xe(xe(xe(e))):void 0}function We(e,t){const n=e.SegmentSequence;let a=[];return a=Array.isArray(n)?[void 0,...n]:[void 0,n],{seriesInstanceUid:t,data:a}}function Ke(e,t,n){const a=function(e,t,n){var a=e.reduce(((e,t)=>e+t.length),0);if(t<0||t+n>a)throw new Error("Offset and length out of bounds");var r=0,i=t;for(;i>=e[r].length;)i-=e[r].length,r++;var o=r,s=i+n;for(;s>e[o].length;)s-=e[o].length,o++;return{start:{chunkIndex:r,offset:i},end:{chunkIndex:o,offset:s}}}(e,t,n);if(a.start.chunkIndex===a.end.chunkIndex)return new Uint8Array(e[a.start.chunkIndex].buffer,a.start.offset,n);{let t=new Uint8Array(n),r=0;for(let n=a.start.chunkIndex;n<=a.end.chunkIndex;n++){let i=n===a.start.chunkIndex?a.start.offset:0,o=n===a.end.chunkIndex?a.end.offset:e[n].length;t.set(new Uint8Array(e[n].buffer,i,o-i),r),r+=o-i}return t}}function Xe(e,t,n,a){let r=0,i=0,o=0,s=0,c=0,u=0,d=0;for(const[l,m]of Object.entries(e)){const e=Number(l);if(!m||0===m.length)continue;const g=a[e],f=n.get("imagePlaneModule",g);if(!f){console.debug("Missing imagePlaneModule metadata for centroid calculation");continue}const{imagePositionPatient:p,rowCosines:h,columnCosines:S,rowPixelSpacing:I,columnPixelSpacing:T}=f;for(const n of m){const a=Math.floor(n/t.Rows),l=n%t.Rows;r+=l,i+=a,o+=e;s+=p[0]+l*h[0]*T+a*S[0]*I,c+=p[1]+l*h[1]*T+a*S[1]*I,u+=p[2]+l*h[2]*T+a*S[2]*I,d++}}return{image:{x:Math.floor(r/d),y:Math.floor(i/d),z:Math.floor(o/d)},world:{x:s/d,y:c/d,z:u/d},count:d}}const Qe={generateSegmentation:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Ge(function(e,t,n){const a=re(e,t);return new be([a],n)}(e,ze(e[0]),n),t,n)},generateToolState:async function(e,t,n,a){const{skipOverlapping:r=!1,tolerance:i=.001,TypedArrayConstructor:o=Uint8Array,maxBytesPerChunk:s=199e6,eventTarget:c=null,triggerEvent:u=null}=a,d=_e.readFile(t),l=ve.naturalizeDataset(d.dict);l._meta=ve.namifyDataset(d.meta);const m=we.normalizeToDataset([l]),g=n.get("imagePlaneModule",e[0]),f=n.get("generalSeriesModule",e[0]).seriesInstanceUID;g||console.warn("Insufficient metadata, imagePlaneModule missing.");const p=$e(Array.isArray(g.rowCosines)?[...g.rowCosines,...g.columnCosines]:[g.rowCosines.x,g.rowCosines.y,g.rowCosines.z,g.columnCosines.x,g.columnCosines.y,g.columnCosines.z]),h=m.Columns*m.Rows,S=We(m,f);let I,T;if("1.2.840.10008.1.2.5"===m._meta.TransferSyntaxUID.Value[0]){const e=Array.isArray(m.PixelData)?m.PixelData:[m.PixelData];if(I=Fe(e,m.Rows,m.Columns),1===m.BitsStored)return void console.warn("No implementation for rle + bitbacking.");T=[I]}else if(T=He(m,{maxBytesPerChunk:s}),!T)throw new Error("Fractional segmentations are not yet supported");const O=Ce(m,p,[g.rows,g.columns,e.length],i),D=e.reduce(((e,t)=>{const{sopInstanceUID:a}=n.get("generalImageModule",t);return e[a]=t,e}),{});let y,R=!1;switch(r||(R=function(e,t,n,a,r,i,o,s){const{SharedFunctionalGroupsSequence:c,PerFrameFunctionalGroupsSequence:u,SegmentSequence:d,Rows:l,Columns:m}=t;if(d.length<2)return!1;const g=c.PlaneOrientationSequence?c.PlaneOrientationSequence.ImageOrientationPatient:void 0,f=m*l,p=u.length;let h=new Map;for(let e=0;e<p;++e){if(void 0===ke(t,e)){console.warn("Could not retrieve the segment index for frame segment "+e+", skipping this frame.");continue}const a=Le(t,e,n,r,i,s);if(!a){console.warn("Image not present in stack, can't import frame : "+e+".");continue}const o=n.findIndex((e=>e===a));if(h.has(o)){let t=h.get(o);t.includes(e)||(t.push(e),h.set(o,t))}else h.set(o,[e])}for(let[,t]of h.entries()){let n=new o(f).fill(0);for(let r=0;r<t.length;++r){const o=t[r],s=u[o],c=g||s.PlaneOrientationSequence.ImageOrientationPatient,d=Ke(e,o*f,f),p=Ye(ee()(d,[l,m]),c,a,i);if(!p){console.warn("Individual SEG frames are out of plane with respect to the first SEG frame, this is not yet supported, skipping this frame.");continue}const h=p.data;for(let e=0,t=h.length;e<t;++e)if(0!==h[e]&&(n[e]++,n[e]>1))return!0}}return!1}(T,m,e,p,n,i,o,D)),O){case"Planar":y=R?Be:je;break;case"Perpendicular":throw new Error("Segmentations orthogonal to the acquisition plane of the source data are not yet supported.");case"Oblique":throw new Error("Segmentations oblique to the acquisition plane of the source data are not yet supported.")}const C=[];C[0]=[];const E=[],N=h*e.length*o.BYTES_PER_ELEMENT,A=[];A[0]=new ArrayBuffer(N);const M=e.reduce(((e,t,a)=>(e.indices[t]=a,e.metadata[t]=n.get("instance",t),e)),{indices:{},metadata:{}}),x=new Map,P=await y(E,C,A,T,m,e,p,n,i,o,x,D,M,c,u),_=new Map;return x.forEach(((t,a)=>{const r=Xe(t,m,n,e);_.set(a,r)})),{labelmapBufferArray:A,segMetadata:S,segmentsOnFrame:E,segmentsOnFrameArray:C,centroids:_,overlappingSegments:P}},fillSegmentation:Ge};function Je(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{includeSliceSpacing:!0},a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:4;return 4===a?Qe.generateSegmentation(e,t,n):3===a?pe.generateSegmentation(e,t,n):void console.warn(`No generateSegmentation adapter for cornerstone version ${a}, exiting.`)}function Ze(e,t,n){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:.001,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:4;return 4===i?Qe.generateToolState(e,t,n,a,r):3===i?pe.generateToolState(e,t,n):void console.warn(`No generateToolState adapter for cornerstone version ${i}, exiting.`)}function et(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{includeSliceSpacing:!0},a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:4;if(4===a)return Qe.fillSegmentation(e,t,n);console.warn(`No generateSegmentation adapter for cornerstone version ${a}, exiting.`)}const{DicomMessage:tt,DicomMetaDictionary:nt}=u.p,{Normalizer:at}=u.z8;function rt(e,t,n,a,r,i){let o;if(!e)return o;const{FrameOfReferenceUID:s,PerFrameFunctionalGroupsSequence:c,SourceImageSequence:u,ReferencedSeriesSequence:d}=e;if(!c||0===c.length)return o;const l=c[t];if(!l)return o;let m;if(l.DerivationImageSequence){let e=l.DerivationImageSequence;Array.isArray(e)&&(e=0!==e.length?e[0]:void 0),e&&(m=e.SourceImageSequence,Array.isArray(m)&&(m=0!==m.length?m[0]:void 0))}else u&&0!==u.length&&(console.warn("DerivationImageSequence not present, using SourceImageSequence assuming SEG has the same geometry as the source image."),m=u[t]);if(m&&(o=function(e,t){const{ReferencedSOPInstanceUID:n,ReferencedFrameNumber:a}=e;return a?function(e,t,n){const a=n[e];if(!a)return;const r=Number(a.split("frame=")[1]);return r===t-1?a:void 0}(n,a,t):t[n]}(m,i)),void 0===o&&d){o=function(e,t,n,a,r,i){if(void 0===e||void 0===n.PlanePositionSequence||void 0===n.PlanePositionSequence[0]||void 0===n.PlanePositionSequence[0].ImagePositionPatient)return;for(let o=0;o<a.length;++o){const s=r.get("instance",a[o]);if(void 0!==s&&void 0!==s.ImagePositionPatient&&s.FrameOfReferenceUID===t&&s.SeriesInstanceUID===e&&Re(n.PlanePositionSequence[0].ImagePositionPatient,s.ImagePositionPatient,i))return a[o]}}((Array.isArray(d)?d[0]:d).SeriesInstanceUID,s,l,n,a,r)}return o}const it={Length:x,FreehandRoi:_,Bidirectional:b,EllipticalRoi:q,CircleRoi:L,ArrowAnnotate:H,MeasurementReport:E,CobbAngle:Y,Angle:X,RectangleRoi:J},ot={Segmentation:a},st={ParametricMap:{generateToolState:async function(e,t,n){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.001;const r=tt.readFile(t),i=nt.naturalizeDataset(r.dict);i._meta=nt.namifyDataset(r.meta);const o=at.normalizeToDataset([i]),s=n.get("imagePlaneModule",e[0]);s||console.warn("Insufficient metadata, imagePlaneModule missing.");const c=[Array.isArray(s.rowCosines)?[...s.rowCosines,...s.columnCosines]:[s.rowCosines.x,s.rowCosines.y,s.rowCosines.z,s.columnCosines.x,s.columnCosines.y,s.columnCosines.z]],d=function(e){let t,n;if(e.PixelData){t=(16===e.BitsAllocated?[Uint16Array,Int16Array]:[Uint32Array,Int32Array])[e.PixelRepresentation??0],n=e.PixelData}else e.FloatPixelData?(t=Float32Array,n=e.FloatPixelData):e.DoubleFloatPixelData&&(t=Float64Array,n=e.DoubleFloatPixelData);void 0===n&&u.Rm.error("This parametric map pixel data is undefined.");Array.isArray(n)&&(n=n[0]);return new t(n)}(o),l=Ce(o,c,[s.rows,s.columns,e.length],a),m=e.reduce(((e,t)=>{const{sopInstanceUID:a}=n.get("generalImageModule",t);return e[a]=t,e}),{});if("Planar"!==l){throw new Error(`Parametric maps ${{Perpendicular:"orthogonal",Oblique:"oblique"}[l]} to the acquisition plane of the source data are not yet supported.`)}const g=e.reduce(((e,t,a)=>(e.indices[t]=a,e.metadata[t]=n.get("instance",t),e)),{indices:{},metadata:{}});return await function(e,t,n,a,r,i,o){const s=new e.constructor(e.length),{PerFrameFunctionalGroupsSequence:c,Rows:u,Columns:d}=t,l=d*u,m=c.length;for(let c=0;c<m;c++){const m=new e.constructor(e.buffer,c*l,l),g=rt(t,c,n,a,r,i);if(!g){console.warn("Image not present in stack, can't import frame : "+c+".");continue}const f=o.metadata[g];if(u!==f.Rows||d!==f.Columns)throw new Error("Parametric map have different geometry dimensions (Rows and Columns) respect to the source image reference frame. This is not yet supported.");const p=l*o.indices[g]*s.BYTES_PER_ELEMENT;new s.constructor(s.buffer,p,l).set(m)}return s}(d,o,e,n,a,m,g),{pixelData:d}}}};var ct="Cornerstone3DTools@^0.1.0";const ut=["PatientName","PatientID","PatientBirthDate","PatientBirthTime","PatientID","IssuerOfPatientID","OtherPatientIDs","OtherPatientIDsSequence","PatientSex","PatientIdentityRemoved","DeidentificationMethodCodeSequence","StudyDate","StudyTime","StudyStatusID","StudyPriorityID","StudyInstanceUID","StudyDescription","AccessionNumber","StudyID","ReferringPhysicianName","BodyPartExamined","TimezoneOffsetFromUTC"];const dt={CodingSchemeDesignator:"CORNERSTONEJS",codeValues:{CORNERSTONEFREETEXT:"CORNERSTONEFREETEXT"}};var lt;const{TID1500:mt,addAccessors:gt}=u.BF,{StructuredReport:ft}=u.h4,{Normalizer:pt}=u.z8,{TID1500MeasurementReport:ht,TID1501MeasurementGroup:St}=mt,{DicomMetaDictionary:It}=u.p,Tt={CodingSchemeDesignator:"DCM",CodeValue:"121071"},Ot={CodingSchemeDesignator:"SCT",CodeValue:"363698007"},Dt={CodingSchemeDesignator:"SRT",CodeValue:"G-C0E3"};class yt{static getTID300ContentItem(e,t,n,a){const r=n.getTID300RepresentationArguments(e,a);r.ReferencedSOPSequence=t;return new n.TID300Representation(r)}static getMeasurementGroup(e,t,n,a){const r=t[e],i=this.measurementAdapterByToolType.get(e);if(!(r&&r.data&&r.data.length&&i))return;const o=r.data.map((e=>this.getTID300ContentItem(e,n,i,a)));return new St(o)}static getCornerstoneLabelFromDefaultState(e){const{findingSites:t=[],finding:n}=e,a=dt.codeValues.CORNERSTONEFREETEXT,r=t.find((e=>e.CodeValue===a));return r?r.CodeMeaning:n&&n.CodeValue===a?n.CodeMeaning:void 0}static generateDatasetMeta(){const e=new Uint8Array(2);e[1]=1;return{FileMetaInformationVersion:{Value:[e.buffer],vr:"OB"},TransferSyntaxUID:{Value:["1.2.840.10008.1.2.1"],vr:"UI"},ImplementationClassUID:{Value:[It.uid()],vr:"UI"},ImplementationVersionName:{Value:["dcmjs"],vr:"SH"}}}static getSetupMeasurementData(e,t,n,a){const{ContentSequence:r}=e,i=d(r),o=i.find((e=>this.codeValueMatch(e,Tt))),s=i.filter((e=>this.codeValueMatch(e,Ot,Dt)))||[],c=i.find((e=>"NUM"===e.ValueType)),u=d(c.ContentSequence).find((e=>"SCOORD"===e.ValueType)),{ReferencedSOPSequence:l}=u.ContentSequence,{ReferencedSOPInstanceUID:m,ReferencedFrameNumber:g}=l,f=t[m],p=n.get("imagePlaneModule",f),h=o?gt(o.ConceptCodeSequence):void 0,S=s.map((e=>gt(e.ConceptCodeSequence))),I={description:void 0,sopInstanceUid:m,annotation:{annotationUID:It.uid(),metadata:{toolName:a,referencedImageId:f,FrameOfReferenceUID:p.frameOfReferenceUID,label:""},data:void 0},finding:h,findingSites:S};return I.finding&&(I.description=I.finding.CodeMeaning),I.annotation.metadata.label=yt.getCornerstoneLabelFromDefaultState(I),{defaultState:I,NUMGroup:c,SCOORDGroup:u,ReferencedSOPSequence:l,ReferencedSOPInstanceUID:m,ReferencedFrameNumber:g}}static generateReport(e,t,n,a){let r=[];const i={},o=[],s=yt.generateDatasetMeta();Object.keys(e).forEach((a=>{const s=t.get("sopCommonModule",a),c=t.get("instance",a),{sopInstanceUID:u,sopClassUID:d}=s,{SeriesInstanceUID:l}=c;if(i[u]=l,!o.find((e=>e.SeriesInstanceUID===l))){const e=yt.generateDerivationSourceDataset(c);o.push(e)}const m=t.get("frameNumber",a),g=e[a],f=Object.keys(g),p={ReferencedSOPClassUID:d,ReferencedSOPInstanceUID:u,ReferencedFrameNumber:void 0};(c&&c.NumberOfFrames&&c.NumberOfFrames>1||pt.isMultiframeSOPClassUID(d))&&(p.ReferencedFrameNumber=m);const h=[];f.forEach((e=>{const t=this.getMeasurementGroup(e,g,p,n);t&&h.push(t)})),r=r.concat(h)}));const c=new ht({TID1501MeasurementGroups:r},a),u=new ft(o,a),d=c.contentItem(o,{...a,sopInstanceUIDsToSeriesInstanceUIDMap:i});return u.dataset=Object.assign(u.dataset,d),u.dataset._meta=s,u.SpecificCharacterSet="ISO_IR 192",u}static generateToolState(e,t,n,a,r){if("1500"!==e.ContentTemplateSequence.TemplateIdentifier)throw new Error("This package can currently only interpret DICOM SR TID 1500");const i=d(e.ContentSequence).find(l("Imaging Measurements")),o=d(i.ContentSequence).filter(l("Measurement Group")),s={};return o.forEach((i=>{try{const o=d(i.ContentSequence),c=o.find((e=>"Tracking Identifier"===e.ConceptNameCodeSequence.CodeMeaning)),{TextValue:u}=c,l=o.find((e=>"Tracking Unique Identifier"===e.ConceptNameCodeSequence.CodeMeaning)),m=l?.UID,g=r?.getToolClass?.(i,e,this.measurementAdapterByToolType)||this.getAdapterForTrackingIdentifier(u);if(g){const e=g.getMeasurementData(i,t,n,a,u);e.TrackingUniqueIdentifier=m,console.log(`=== ${g.toolType} ===`),console.log(e),s[g.toolType]||=[],s[g.toolType].push(e)}}catch(e){console.warn("Unable to generate tool state for",i,e)}})),s}static registerTool(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=e.toolType;if(this.measurementAdapterByToolType.has(n)){if(!t)throw new Error(`The registered tool name ${n} already exists in adapters, use a different toolType or use replace`);"function"==typeof t&&t(this.measurementAdapterByToolType.get(n))}this.measurementAdapterByToolType.set(e.toolType,e),this.measurementAdapterByTrackingIdentifier.set(e.trackingIdentifierTextValue,e)}static registerTrackingIdentifier(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a<t;a++)n[a-1]=arguments[a];for(const t of n)this.measurementAdapterByTrackingIdentifier.set(t,e)}static getAdapterForTrackingIdentifier(e){const t=this.measurementAdapterByTrackingIdentifier.get(e);if(t)return t;for(const t of[...this.measurementAdapterByToolType.values()])if(t.isValidCornerstoneTrackingIdentifier(e))return this.measurementAdapterByTrackingIdentifier.set(e,t),t}}(lt=yt).CORNERSTONE_3D_TAG=ct,lt.measurementAdapterByToolType=new Map,lt.measurementAdapterByTrackingIdentifier=new Map,lt.codeValueMatch=(e,t,n)=>{const{ConceptNameCodeSequence:a}=e;if(!a)return;const{CodingSchemeDesignator:r,CodeValue:i}=a;return r==t.CodingSchemeDesignator&&i==t.CodeValue||n&&r==n.CodingSchemeDesignator&&i==n.CodeValue},lt.generateDerivationSourceDataset=e=>{lt.generateDatasetMeta();return function(e){const t={_meta:e._meta,_vrMap:e._vrMap};for(const n of ut){const a=e[n];void 0!==a&&(t[n]=a)}return t}(e)};class Rt{static init(e,t,n){if(this.toolType=e,Rt.toolType)throw new Error(`Base adapter tool type set to ${this.toolType} while setting ${e}`);if(this.parentType=n?.parentType,this.trackingIdentifiers=new Set,this.TID300Representation=t,this.parentType){this.trackingIdentifierTextValue=`${ct}:${this.parentType}:${this.toolType}`;const e=`${ct}:${this.toolType}`;this.trackingIdentifiers.add(e)}else this.trackingIdentifierTextValue=`${ct}:${e}`;this.trackingIdentifiers.add(this.trackingIdentifierTextValue),yt.registerTool(this)}static registerLegacy(){this.trackingIdentifiers.add(`cornerstoneTools@^4.0.0:${this.toolType}`)}static registerSubType(e,t,n){const a=Object.create(e);return a.init(t,e.TID300Representation,{parentType:e.parentType||e.toolType,replace:n}),a}static isValidCornerstoneTrackingIdentifier(e){return!!this.trackingIdentifiers.has(e)||!!e.includes(":")&&e.startsWith(this.trackingIdentifierTextValue)}static getMeasurementData(e,t,n,a,r){const{defaultState:i,ReferencedFrameNumber:o}=yt.getSetupMeasurementData(e,t,a,this.toolType);return i.annotation.data={cachedStats:{},frameNumber:o,seriesLevel:r?.indexOf(":Series")>0},i}static getTID300RepresentationArguments(e,t){const{data:n,metadata:a}=e,{finding:r,findingSites:i}=e,{referencedImageId:o}=a;if(!o)throw new Error("Probe.getTID300RepresentationArguments: referencedImageId is not defined");const{handles:{points:s=[]}}=n;return{points:s.map((e=>{const n=t(o,e);return{x:n[0],y:n[1]}})),trackingIdentifierTextValue:this.trackingIdentifierTextValue,findingSites:i||[],finding:r}}}var Ct;const{Point:Et}=u.BF.TID300,{codeValues:Nt}=dt;class At extends Rt{static getMeasurementData(e,t,n,a,r){const{defaultState:i,SCOORDGroup:o,ReferencedFrameNumber:s}=yt.getSetupMeasurementData(e,t,a,At.toolType),c=i.annotation.metadata.referencedImageId,u=i.annotation.metadata.label,{GraphicData:d}=o,l=[];for(let e=0;e<d.length;e+=2){const t=n(c,[d[e],d[e+1]]);l.push(t)}if(1===l.length){const e=a.get("imagePixelModule",c);let t=10,r=10;if(e){const{columns:n,rows:a}=e;t=n/10,r=a/10}const i=n(c,[d[0]+t,d[1]+r]);l.push(i)}const m=i;return m.annotation.data={text:u,handles:{arrowFirst:!0,points:[l[0],l[1]],activeHandleIndex:0,textBox:{hasMoved:!1}},frameNumber:s},m}static getTID300RepresentationArguments(e,t){const{data:n,metadata:a,findingSites:r}=e;let{finding:i}=e;const{referencedImageId:o}=a;if(!o)throw new Error("ArrowAnnotate.getTID300RepresentationArguments: referencedImageId is not defined");const{points:s,arrowFirst:c}=n.handles;let u,d;c?(u=s[0],d=s[1]):(u=s[1],d=s[0]);const l=t(o,u),m=t(o,d),g={points:[{x:l[0],y:l[1]},{x:m[0],y:m[1]}],trackingIdentifierTextValue:this.trackingIdentifierTextValue,findingSites:r||[],finding:i};return i&&i.CodeValue===Nt.CORNERSTONEFREETEXT||(i={CodeValue:Nt.CORNERSTONEFREETEXT,CodingSchemeDesignator:dt.CodingSchemeDesignator,CodeMeaning:n.text}),g}}var Mt;(Ct=At).init("ArrowAnnotate",Et),Ct.registerLegacy();const{Bidirectional:xt}=u.BF.TID300;class Pt extends Rt{static getMeasurementData(e,t,n,a){const{defaultState:r,ReferencedFrameNumber:i}=yt.getSetupMeasurementData(e,t,a,Pt.toolType),o=r.annotation.metadata.referencedImageId,{ContentSequence:s}=e,c=d(s).find((e=>"Long Axis"===e.ConceptNameCodeSequence.CodeMeaning)),u=d(c.ContentSequence).find((e=>"SCOORD"===e.ValueType)),l=d(s).find((e=>"Short Axis"===e.ConceptNameCodeSequence.CodeMeaning)),m=d(l.ContentSequence).find((e=>"SCOORD"===e.ValueType)),g=[];[u,m].forEach((e=>{const{GraphicData:t}=e;for(let e=0;e<t.length;e+=2){const a=n(o,[t[e],t[e+1]]);g.push(a)}}));const f=r;return f.annotation.data={handles:{points:[g[0],g[1],g[2],g[3]],activeHandleIndex:0,textBox:{hasMoved:!1}},cachedStats:{[`imageId:${o}`]:{length:c.MeasuredValueSequence.NumericValue,width:l.MeasuredValueSequence.NumericValue}},frameNumber:i},f}static getTID300RepresentationArguments(e,t){const{data:n,finding:a,findingSites:r,metadata:i}=e,{cachedStats:o={},handles:s}=n,{referencedImageId:c}=i;if(!c)throw new Error("Bidirectional.getTID300RepresentationArguments: referencedImageId is not defined");const{length:u,width:d}=o[`imageId:${c}`]||{},{points:l}=s,m=[l[0],l[1]],g=[l[2],l[3]];let f,p;Math.sqrt(Math.pow(m[0][0]-m[1][0],2)+Math.pow(m[0][1]-m[1][1],2)+Math.pow(m[0][2]-m[1][2],2))>Math.sqrt(Math.pow(g[0][0]-g[1][0],2)+Math.pow(g[0][1]-g[1][1],2)+Math.pow(g[0][2]-g[1][2],2))?(f=m,p=g):(f=g,p=m);const h=t(c,f[0]),S=t(c,f[1]),I=t(c,p[0]),T=t(c,p[1]);return{longAxis:{point1:{x:h[0],y:h[1]},point2:{x:S[0],y:S[1]}},shortAxis:{point1:{x:I[0],y:I[1]},point2:{x:T[0],y:T[1]}},longAxisLength:u,shortAxisLength:d,trackingIdentifierTextValue:this.trackingIdentifierTextValue,finding:a,findingSites:r||[]}}}var _t;(Mt=Pt).init("Bidirectional",xt),Mt.registerLegacy();const{CobbAngle:vt}=u.BF.TID300;class wt extends Rt{static getMeasurementData(e,t,n,a){const{defaultState:r,NUMGroup:i,SCOORDGroup:o,ReferencedFrameNumber:s}=yt.getSetupMeasurementData(e,t,a,wt.toolType),c=r.annotation.metadata.referencedImageId,{GraphicData:u}=o,d=[];for(let e=0;e<u.length;e+=2){const t=n(c,[u[e],u[e+1]]);d.push(t)}const l=r;return l.annotation.data={handles:{points:[d[0],d[1],d[3]],activeHandleIndex:0,textBox:{hasMoved:!1}},cachedStats:{[`imageId:${c}`]:{angle:i?i.MeasuredValueSequence.NumericValue:null}},frameNumber:s},l}static getTID300RepresentationArguments(e,t){const{data:n,finding:a,findingSites:r,metadata:i}=e,{cachedStats:o={},handles:s}=n,{referencedImageId:c}=i;if(!c)throw new Error("Angle.getTID300RepresentationArguments: referencedImageId is not defined");const u=t(c,s.points[0]),d=t(c,s.points[1]),l=t(c,s.points[2]),m={x:u[0],y:u[1]},g={x:d[0],y:d[1]},f=g,p={x:l[0],y:l[1]},{angle:h}=o[`imageId:${c}`]||{};return{point1:m,point2:g,point3:f,point4:p,rAngle:h,trackingIdentifierTextValue:this.trackingIdentifierTextValue,finding:a,findingSites:r||[]}}}var bt;(_t=wt).init("Angle",vt),_t.registerLegacy();const{CobbAngle:Ut}=u.BF.TID300;class Ft extends Rt{static getMeasurementData(e,t,n,a){const{defaultState:r,NUMGroup:i,SCOORDGroup:o,ReferencedFrameNumber:s}=yt.getSetupMeasurementData(e,t,a,Ft.toolType),c=r.annotation.metadata.referencedImageId,{GraphicData:u}=o,d=[];for(let e=0;e<u.length;e+=2){const t=n(c,[u[e],u[e+1]]);d.push(t)}const l=r;return l.annotation.data={handles:{points:[d[0],d[1],d[2],d[3]],activeHandleIndex:0,textBox:{hasMoved:!1}},cachedStats:{[`imageId:${c}`]:{angle:i?i.MeasuredValueSequence.NumericValue:null}},frameNumber:s},l}static getTID300RepresentationArguments(e,t){const{data:n,finding:a,findingSites:r,metadata:i}=e,{cachedStats:o={},handles:s}=n,{referencedImageId:c}=i;if(!c)throw new Error("CobbAngle.getTID300RepresentationArguments: referencedImageId is not defined");const u=t(c,s.points[0]),d=t(c,s.points[1]),l=t(c,s.points[2]),m=t(c,s.points[3]),g={x:u[0],y:u[1]},f={x:d[0],y:d[1]},p={x:l[0],y:l[1]},h={x:m[0],y:m[1]},{angle:S}=o[`imageId:${c}`]||{};return{point1:g,point2:f,point3:p,point4:h,rAngle:S,trackingIdentifierTextValue:this.trackingIdentifierTextValue,finding:a,findingSites:r||[]}}}var qt;(bt=Ft).init("CobbAngle",Ut),bt.registerLegacy();const{Circle:Gt}=u.BF.TID300;class Vt extends Rt{static getMeasurementData(e,t,n,a){const{defaultState:r,NUMGroup:i,SCOORDGroup:o,ReferencedFrameNumber:s}=yt.getSetupMeasurementData(e,t,a,Vt.toolType),c=r.annotation.metadata.referencedImageId,{GraphicData:u}=o,d=[];for(let e=0;e<u.length;e+=2){const t=n(c,[u[e],u[e+1]]);d.push(t)}const l=r;return l.annotation.data={handles:{points:[...d],activeHandleIndex:0,textBox:{hasMoved:!1}},cachedStats:{[`imageId:${c}`]:{area:i?i.MeasuredValueSequence.NumericValue:0,radius:0,perimeter:0}},frameNumber:s},l}static getTID300RepresentationArguments(e,t){const{data:n,finding:a,findingSites:r,metadata:i}=e,{cachedStats:o={},handles:s}=n,{referencedImageId:c}=i;if(!c)throw new Error("CircleROI.getTID300RepresentationArguments: referencedImageId is not defined");const u=t(c,s.points[0]),d=t(c,s.points[1]),l=[];l.push({x:u[0],y:u[1]}),l.push({x:d[0],y:d[1]});const{area:m,radius:g}=o[`imageId:${c}`]||{};return{area:m,perimeter:2*Math.PI*g,radius:g,points:l,trackingIdentifierTextValue:this.trackingIdentifierTextValue,finding:a,findingSites:r||[]}}}(qt=Vt).init("CircleROI",Gt),qt.registerLegacy();var Lt=n(3823);const{Ellipse:Bt}=u.BF.TID300,kt=1e-4;class jt extends Rt{static getMeasurementData(e,t,n,a){const{defaultState:r,NUMGroup:i,SCOORDGroup:o,ReferencedFrameNumber:s}=yt.getSetupMeasurementData(e,t,a,jt.toolType),c=r.annotation.metadata.referencedImageId,{GraphicData:u}=o,d=[];for(let e=0;e<u.length;e+=2){const t=n(c,[u[e],u[e+1]]);d.push(t)}const l=Lt.eR.fromValues(...d[0]),m=Lt.eR.fromValues(...d[1]),g=Lt.eR.fromValues(...d[2]),f=Lt.eR.fromValues(...d[3]),p=Lt.eR.create();Lt.eR.sub(p,m,l),Lt.eR.normalize(p,p);const h=Lt.eR.create();Lt.eR.sub(h,f,g),Lt.eR.normalize(h,h);const S=a.get("imagePlaneModule",c);if(!S)throw new Error("imageId does not have imagePlaneModule metadata");const{columnCosines:I}=S,T=Lt.eR.fromValues(I[0],I[1],I[2]),O=Lt.eR.dot(T,p),D=Lt.eR.dot(T,h),y=Math.abs(O),R=Math.abs(D);let C=[];Math.abs(y-1)<kt?C=[d[0],d[1],d[2],d[3]]:Math.abs(R-1)<kt?C=[d[2],d[3],d[0],d[1]]:console.warn("OBLIQUE ELLIPSE NOT YET SUPPORTED");const E=r;return E.annotation.data={handles:{points:[...C],activeHandleIndex:0,textBox:{hasMoved:!1}},cachedStats:{[`imageId:${c}`]:{area:i?i.MeasuredValueSequence.NumericValue:0}},frameNumber:s},E}static getTID300RepresentationArguments(e,t){const{data:n,finding:a,findingSites:r,metadata:i}=e,{cachedStats:o={},handles:s}=n,c=n.initialRotation||0,{referencedImageId:u}=i;if(!u)throw new Error("EllipticalROI.getTID300RepresentationArguments: referencedImageId is not defined");let d,l,m,g;90==c||270==c?(l=t(u,s.points[2]),d=t(u,s.points[3]),m=t(u,s.points[0]),g=t(u,s.points[1])):(d=t(u,s.points[0]),l=t(u,s.points[1]),m=t(u,s.points[2]),g=t(u,s.points[3]));const f=[];Math.abs(d[1]-l[1])>Math.abs(m[0]-g[0])?(f.push({x:d[0],y:d[1]}),f.push({x:l[0],y:l[1]}),f.push({x:m[0],y:m[1]}),f.push({x:g[0],y:g[1]})):(f.push({x:m[0],y:m[1]}),f.push({x:g[0],y:g[1]}),f.push({x:d[0],y:d[1]}),f.push({x:l[0],y:l[1]}));const{area:p}=o[`imageId:${u}`]||{};return{area:p,points:f,trackingIdentifierTextValue:this.trackingIdentifierTextValue,finding:a,findingSites:r||[]}}}var Ht;jt.init("EllipticalROI",Bt);const{Polyline:zt}=u.BF.TID300;class $t extends Rt{static getMeasurementData(e,t,n,a){const{defaultState:r,NUMGroup:i,SCOORDGroup:o,ReferencedFrameNumber:s}=yt.getSetupMeasurementData(e,t,a,$t.toolType),c=r.annotation.metadata.referencedImageId,{GraphicData:u}=o,d=[];for(let e=0;e<u.length;e+=2){const t=n(c,[u[e],u[e+1]]);d.push(t)}const l=r;return l.annotation.data={handles:{points:[d[0],d[1],d[3],d[2]],activeHandleIndex:0,textBox:{hasMoved:!1}},cachedStats:{[`imageId:${c}`]:{area:i?i.MeasuredValueSequence.NumericValue:null}},frameNumber:s},l}static getTID300RepresentationArguments(e,t){const{data:n,finding:a,findingSites:r,metadata:i}=e,{cachedStats:o={},handles:s}=n,{referencedImageId:c}=i;if(!c)throw new Error("CobbAngle.getTID300RepresentationArguments: referencedImageId is not defined");const u=s.points.map((e=>t(c,e))),{area:d,perimeter:l}=o;return{points:[u[0],u[1],u[3],u[2],u[0]],area:d,perimeter:l,trackingIdentifierTextValue:this.trackingIdentifierTextValue,finding:a,findingSites:r||[]}}}var Yt;(Ht=$t).init("RectangleROI",zt),Ht.registerLegacy();const{Length:Wt}=u.BF.TID300;class Kt extends Rt{static getMeasurementData(e,t,n,a){const{defaultState:r,NUMGroup:i,SCOORDGroup:o,ReferencedFrameNumber:s}=yt.getSetupMeasurementData(e,t,a,this.toolType),c=r.annotation.metadata.referencedImageId,{GraphicData:u}=o,d=[];for(let e=0;e<u.length;e+=2){const t=n(c,[u[e],u[e+1]]);d.push(t)}const l=r;return l.annotation.data={handles:{points:[d[0],d[1]],activeHandleIndex:0,textBox:{hasMoved:!1}},cachedStats:{[`imageId:${c}`]:{length:i?i.MeasuredValueSequence.NumericValue:0}},frameNumber:s},l}static getTID300RepresentationArguments(e,t){const{data:n,finding:a,findingSites:r,metadata:i}=e,{cachedStats:o={},handles:s}=n,{referencedImageId:c}=i;if(!c)throw new Error("Length.getTID300RepresentationArguments: referencedImageId is not defined");const u=t(c,s.points[0]),d=t(c,s.points[1]),l={x:u[0],y:u[1]},m={x:d[0],y:d[1]},{length:g}=o[`imageId:${c}`]||{};return{point1:l,point2:m,distance:g,trackingIdentifierTextValue:this.trackingIdentifierTextValue,finding:a,findingSites:r||[]}}}var Xt;(Yt=Kt).init("Length",Wt),Yt.registerLegacy();const{Polyline:Qt}=u.BF.TID300;class Jt extends Rt{static getMeasurementData(e,t,n,a){const{defaultState:r,NUMGroup:i,SCOORDGroup:o,ReferencedFrameNumber:s}=yt.getSetupMeasurementData(e,t,a,Jt.toolType),c=r.annotation.metadata.referencedImageId,{GraphicData:u}=o,d=[];for(let e=0;e<u.length;e+=2){const t=n(c,[u[e],u[e+1]]);d.push(t)}let l=!0;Lt.eR.distance(d[d.length-1],d[0])<this.closedContourThreshold&&(d.pop(),l=!1);const m=[];l&&m.push(d[0],d[d.length-1]);const g=r;return g.annotation.data={contour:{polyline:d,closed:!l},handles:{points:m,activeHandleIndex:null,textBox:{hasMoved:!1}},cachedStats:{[`imageId:${c}`]:{area:i?i.MeasuredValueSequence.NumericValue:null}},frameNumber:s},g}static getTID300RepresentationArguments(e,t){const{data:n,finding:a,findingSites:r,metadata:i}=e,{polyline:o,closed:s}=n.contour,c=!0!==s,{referencedImageId:u}=i;if(!u)throw new Error("PlanarFreehandROI.getTID300RepresentationArguments: referencedImageId is not defined");const d=o.map((e=>t(u,e)));if(!c){const e=d[0];d.push([e[0],e[1]])}const{area:l,areaUnit:m,modalityUnit:g,perimeter:f,mean:p,max:h,stdDev:S}=n.cachedStats[`imageId:${u}`]||{};return{points:d,area:l,areaUnit:m,perimeter:f,modalityUnit:g,mean:p,max:h,stdDev:S,trackingIdentifierTextValue:this.trackingIdentifierTextValue,finding:a,findingSites:r||[]}}}var Zt;(Xt=Jt).closedContourThreshold=1e-5,Xt.init("PlanarFreehandROI",Qt);const{Point:en}=u.BF.TID300;class tn extends Rt{static getMeasurementData(e,t,n,a,r){const i=super.getMeasurementData(e,t,n,a,r),{defaultState:o,SCOORDGroup:s}=yt.getSetupMeasurementData(e,t,a,tn.toolType),c=o.annotation.metadata.referencedImageId,{GraphicData:u}=s,d=[];for(let e=0;e<u.length;e+=2){const t=n(c,[u[e],u[e+1]]);d.push(t)}return i.annotation.data={...i.annotation.data,handles:{points:d,activeHandleIndex:null,textBox:{hasMoved:!1}}},i}}(Zt=tn).init("Probe",en),Zt.registerLegacy();const{Length:nn}=u.BF.TID300;class an extends Rt{static getMeasurementData(e,t,n,a){const{defaultState:r,SCOORDGroup:i,ReferencedFrameNumber:o}=yt.getSetupMeasurementData(e,t,a,an.toolType),s=r.annotation.metadata.referencedImageId,{GraphicData:c}=i,u=[];for(let e=0;e<c.length;e+=2){const t=n(s,[c[e],c[e+1]]);u.push(t)}const d=r;return d.annotation.data={handles:{points:[u[0],u[1]],activeHandleIndex:0,textBox:{hasMoved:!1}},cachedStats:{},frameNumber:o},d}static getTID300RepresentationArguments(e,t){const{data:n,finding:a,findingSites:r,metadata:i}=e,{handles:o}=n,{referencedImageId:s}=i;if(!s)throw new Error("UltrasoundDirectionalTool.getTID300RepresentationArguments: referencedImageId is not defined");const c=t(s,o.points[0]),u=t(s,o.points[1]);return{point1:{x:c[0],y:c[1]},point2:{x:u[0],y:u[1]},trackingIdentifierTextValue:this.trackingIdentifierTextValue,finding:a,findingSites:r||[]}}}an.init("UltrasoundDirectionalTool",nn);const{Normalizer:rn}=u.z8,{Segmentation:on}=u.h4;function sn(e,t,n){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const r=function(e,t,n){const a=e.map((e=>{const n=t.get("instance",e.imageId);return{...e,...n,SOPClassUID:n.SopClassUID||n.SOPClassUID,SOPInstanceUID:n.SopInstanceUID||n.SOPInstanceUID,PixelData:e.voxelManager.getScalarData(),_vrMap:{PixelData:"OW"},_meta:{}}})),r=rn.normalizeToDataset(a);if(!r)throw new Error("Failed to normalize the multiframe dataset, the data is not multi-frame.");return new on([r],n)}(e,n,a);return Ge(r,t,a)}function cn(e){const{scalarData:t,dimensions:n}=e,a=[],r=new Set;for(let e=0;e<n[2];e++){const i=t.slice(e*n[0]*n[1],(e+1)*n[0]*n[1]),o=[];for(let e=0;e<i.length;e++){const t=i[e];o.includes(t)||0===t||o.push(t)}const s={segmentsOnLabelmap:o,pixelData:i,rows:n[1],columns:n[0]};0!==o.length&&(o.forEach((e=>{r.add(e)})),a[n[2]-1-e]=s)}return e.segmentsOnLabelmap=Array.from(r),e.labelmaps2D=a,e}var un=n(15327),dn=n(4667);const ln=e=>{let{largerArray:t,currentTestedArray:n,newArray:a}=e;return t.some(((e,t)=>{const r=n[t],i=a[t];return!(!r||!i)&&r.some(((e,t)=>{const n=i[t];return e&&n}))}))},mn=e=>{let{arrayOfSegmentData:t,newSegmentData:n}=e;if(0!==t.length){for(let e=0;e<t.length;e++){const a=t[e],r=a.length>n.length?a:n;if(!ln({currentTestedArray:a,largerArray:r,newArray:n}))return void r.forEach(((e,t)=>{const r=a[t],i=n[t];if(!r&&!i||!i)return;if(!r)return void(a[t]=i);const o=r.map(((e,t)=>{const n=i[t];return e||n}));a[t]=o}))}t.push(n)}else t.push(n)},{DicomMessage:gn,DicomMetaDictionary:fn}=u.p,{Normalizer:pn}=u.z8,{decode:hn}=u.BF.compression,Sn=e=>{let{segmentsOnFrame:t,imageIdIndex:n,segmentIndex:a}=e;t[n]||(t[n]=[]),t[n].push(a)},In=e=>{let{segmentsPixelIndices:t,segmentIndex:n,imageIdIndex:a,indexCache:r}=e;t.has(n)||t.set(n,{});const i=t.get(n);i[a]=r,t.set(n,i)},Tn=e=>{let{PerFrameFunctionalGroups:t,sequenceIndex:n,sopUIDImageIdIndexMap:a,multiframe:r}=e;const i=t.DerivationImageSequence[0].SourceImageSequence[0].ReferencedSOPInstanceUID;return{referencedSOPInstanceUid:i,referencedImageId:a[i],segmentIndex:ke(r,n)}};const On=dn.utilities.throttle((e=>{(0,un.triggerEvent)(un.eventTarget,Ee.SEGMENTATION_LOAD_PROGRESS,{percentComplete:e})}),200);function Dn(e){let{segmentsOnFrame:t,labelMapImages:n,pixelDataChunks:a,multiframe:r,referencedImageIds:i,validOrientations:o,metadataProvider:s,tolerance:c,segmentsPixelIndices:u,sopUIDImageIdIndexMap:d,imageIdMaps:l}=e;const{SharedFunctionalGroupsSequence:m,PerFrameFunctionalGroupsSequence:g,Rows:f,Columns:p}=r,h=m.PlaneOrientationSequence?m.PlaneOrientationSequence.ImageOrientationPatient:void 0,S=p*f,I=g.length;let T=!1;return new Promise((e=>{const m=Math.ceil(.1*I),O=D=>{for(let O=D;O<D+m&&O<I;O++){const m=g[O],I=h||m.PlaneOrientationSequence.ImageOrientationPatient,D=Ke(a,O*S,S),y=Ye(ee()(D,[f,p]),I,o,c);if(!y)throw new Error("Individual SEG frames are out of plane with respect to the first SEG frame. This is not yet supported. Aborting segmentation loading.");const R=ke(r,O);if(void 0===R)throw new Error("Could not retrieve the segment index. Aborting segmentation loading.");u.has(R)||u.set(R,{});const C=Le(r,O,i,s,c,d);if(!C)return void console.warn("Image not present in stack, can't import frame : "+O+".");const E=l.metadata[C];if(f!==E.Rows||p!==E.Columns)throw new Error("Individual SEG frames have different geometry dimensions (Rows and Columns) respect to the source image reference frame. This is not yet supported. Aborting segmentation loading. ");const N=l.indices[C],A=n[N].getPixelData(),M=y.data,x=[];for(let m=0,g=y.data.length;m<g;++m)if(M[m]){for(let f=m;f<g;++f)if(M[f]){if(!T&&0!==A[f])return T=!0,e(En({segmentsOnFrame:t,labelMapImages:n,pixelDataChunks:a,multiframe:r,referencedImageIds:i,validOrientations:o,metadataProvider:s,tolerance:c,segmentsPixelIndices:u,sopUIDImageIdIndexMap:d,imageIdMaps:l}));A[f]=R,x.push(f)}t[N]||(t[N]=[]),t[N].push(R);break}const P=u.get(R);P[N]=x,u.set(R,P)}const y=Math.round(D/I*100);On(y),D<I?setTimeout((()=>O(D+m)),0):e({hasOverlappingSegments:!1,arrayOfLabelMapImages:[n]})};O(0)}))}const yn=e=>{let{sharedImageOrientationPatient:t,PerFrameFunctionalGroups:n,pixelDataChunks:a,sequenceIndex:r,sliceLength:i,Rows:o,Columns:s,validOrientations:c,tolerance:u}=e;const d=t||n.PlaneOrientationSequence.ImageOrientationPatient,l=Ke(a,r*i,i),m=Ye(ee()(l,[o,s]),d,c,u);if(!m)throw new Error("Individual SEG frames are out of plane with respect to the first SEG frame. This is not yet supported. Aborting segmentation loading.");return m},Rn=e=>{let{metadataProvider:t,imageId:n,Rows:a,Columns:r}=e;const i=t.get("instance",n);if(a!==i.Rows||r!==i.Columns)throw new Error("Individual SEG frames have different geometry dimensions (Rows and Columns) respect to the source image reference frame. This is not yet supported. Aborting segmentation loading. ")},Cn=e=>{let{arrayOfSegmentData:t,referencedImageIds:n}=e,a=[];for(let e=0;e<t.length;e++){const n=t[e];n.length>a.length&&(a=n)}return t.map((e=>n.map(((t,n)=>{const a=!e[n],r=un.imageLoader.createAndCacheDerivedLabelmapImage(t),i=r.getPixelData();if(!a)for(let t=0;t<i.length;t++)i[t]=e[n][t];return r})).filter(Boolean)))};function En(e){let{segmentsOnFrame:t,labelMapImages:n,pixelDataChunks:a,multiframe:r,referencedImageIds:i,validOrientations:o,metadataProvider:s,tolerance:c,segmentsPixelIndices:u,sopUIDImageIdIndexMap:d,imageIdMaps:l}=e;const{SharedFunctionalGroupsSequence:m,PerFrameFunctionalGroupsSequence:g,Rows:f,Columns:p}=r,h=m.PlaneOrientationSequence?m.PlaneOrientationSequence.ImageOrientationPatient:void 0,S=Nn({sliceLength:p*f,Rows:f,Columns:p,validOrientations:o,metadataProvider:s,imageIdMaps:l,segmentsOnFrame:t,tolerance:c,pixelDataChunks:a,PerFrameFunctionalGroupsSequence:g,labelMapImages:n,sopUIDImageIdIndexMap:d,multiframe:r,sharedImageOrientationPatient:h,segmentsPixelIndices:u});return{arrayOfLabelMapImages:Cn({arrayOfSegmentData:S,referencedImageIds:i}),hasOverlappingSegments:!0}}const Nn=e=>{let{sliceLength:t,Rows:n,Columns:a,validOrientations:r,metadataProvider:i,imageIdMaps:o,segmentsOnFrame:s,tolerance:c,pixelDataChunks:u,PerFrameFunctionalGroupsSequence:d,labelMapImages:l,sopUIDImageIdIndexMap:m,multiframe:g,sharedImageOrientationPatient:f,segmentsPixelIndices:p}=e;const h=[],S=g.SegmentSequence.length;for(let e=1;e<=S;++e){const S=An({PerFrameFunctionalGroupsSequence:d,labelMapImages:l,sopUIDImageIdIndexMap:m,multiframe:g,segmentIndex:e,sliceLength:t,Rows:n,Columns:a,validOrientations:r,tolerance:c,pixelDataChunks:u,sharedImageOrientationPatient:f,metadataProvider:i,imageIdMaps:o,segmentsOnFrame:s,segmentsPixelIndices:p});mn({arrayOfSegmentData:h,newSegmentData:S})}return h},An=e=>{let{PerFrameFunctionalGroupsSequence:t,labelMapImages:n,sopUIDImageIdIndexMap:a,multiframe:r,segmentIndex:i,sliceLength:o,Rows:s,Columns:c,validOrientations:u,tolerance:d,pixelDataChunks:l,sharedImageOrientationPatient:m,metadataProvider:g,imageIdMaps:f,segmentsOnFrame:p,segmentsPixelIndices:h}=e;const S=[];for(let e=0;e<n.length;e++){const I=n[e],T=I.referencedImageId,O=t.findIndex(((e,t)=>{const{segmentIndex:n,referencedImageId:o}=Tn({PerFrameFunctionalGroups:e,sequenceIndex:t,sopUIDImageIdIndexMap:a,multiframe:r});return n===i&&o===I.referencedImageId}));if(-1===O)continue;const D=t[O],y=yn({sharedImageOrientationPatient:m,PerFrameFunctionalGroups:D,pixelDataChunks:l,sequenceIndex:O,sliceLength:o,Rows:s,Columns:c,validOrientations:u,tolerance:d});Rn({metadataProvider:g,Rows:s,Columns:c,imageId:T});const R=[],C=y.data.map(((e,t)=>((e?i:0)&&R.push(t),e?i:0)));R.length>0&&(S[e]=C);const E=f.indices[T];Sn({imageIdIndex:E,segmentIndex:i,segmentsOnFrame:p}),In({imageIdIndex:E,segmentIndex:i,segmentsPixelIndices:h,indexCache:R})}return S};function Mn(e,t,n){return Ze(e,t,n,arguments.length>3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:.001,arguments.length>5&&void 0!==arguments[5]?arguments[5]:4)}function xn(e,t,n){let{metadataProvider:a,tolerance:r=.001}=n;return async function(e,t,n,a){const{tolerance:r=.001,TypedArrayConstructor:i=Uint8Array,maxBytesPerChunk:o=199e6}=a,s=gn.readFile(t),c=fn.naturalizeDataset(s.dict);c._meta=fn.namifyDataset(s.meta);const u=pn.normalizeToDataset([c]),d=n.get("imagePlaneModule",e[0]),l=n.get("generalSeriesModule",e[0]).seriesInstanceUID;d||console.warn("Insufficient metadata, imagePlaneModule missing.");const m=$e(Array.isArray(d.rowCosines)?[...d.rowCosines,...d.columnCosines]:[d.rowCosines.x,d.rowCosines.y,d.rowCosines.z,d.columnCosines.x,d.columnCosines.y,d.columnCosines.z]),g=We(u,l);let f,p;if("1.2.840.10008.1.2.5"===u._meta.TransferSyntaxUID.Value[0]){const e=Array.isArray(u.PixelData)?u.PixelData:[u.PixelData];if(f=hn(e,u.Rows,u.Columns),1===u.BitsStored)return void console.warn("No implementation for rle + bit packing.");p=[f]}else if(p=He(u,{maxBytesPerChunk:o}),!p)throw new Error("Fractional segmentations are not yet supported");const h=Ce(u,m,[d.rows,d.columns,e.length],r),S=e.reduce(((e,t)=>{const{sopInstanceUID:a}=n.get("generalImageModule",t);return e[a]=t,e}),{});let I;switch(h){case"Planar":I=Dn;break;case"Perpendicular":throw new Error("Segmentations orthogonal to the acquisition plane of the source data are not yet supported.");case"Oblique":throw new Error("Segmentations oblique to the acquisition plane of the source data are not yet supported.")}const T=[],O={indices:{},metadata:{}},D=[];for(let t=0;t<e.length;t++){const a=e[t];O.indices[a]=t,O.metadata[a]=n.get("instance",a);const r=un.imageLoader.createAndCacheDerivedLabelmapImage(a);D.push(r)}const y=new Map,{hasOverlappingSegments:R,arrayOfLabelMapImages:C}=await I({segmentsOnFrame:T,labelMapImages:D,pixelDataChunks:p,multiframe:u,referencedImageIds:e,validOrientations:m,metadataProvider:n,tolerance:r,segmentsPixelIndices:y,sopUIDImageIdIndexMap:S,imageIdMaps:O,TypedArrayConstructor:i}),E=new Map;return y.forEach(((t,a)=>{const r=Xe(t,u,n,e);E.set(a,r)})),{labelMapImages:C,segMetadata:g,segmentsOnFrame:T,centroids:E,overlappingSegments:R}}(e,t,a,{tolerance:r})}const{ParametricMap:Pn}=st,{generateToolState:_n}=Pn;function vn(e,t,n){return _n(e,t,n,arguments.length>3&&void 0!==arguments[3]&&arguments[3],arguments.length>4&&void 0!==arguments[4]?arguments[4]:.001)}function wn(e,t,n){const{referencedImageId:a,FrameOfReferenceUID:r}=e,i=t.get("instance",a),{SeriesInstanceUID:o}=i,{ReferencedSeriesSequence:s}=n;return[{FrameOfReferenceUID:r,RTReferencedStudySequence:[{ReferencedSOPClassUID:n.SOPClassUID,ReferencedSOPInstanceUID:n.SOPInstanceUID,RTReferencedSeriesSequence:[{SeriesInstanceUID:o,ContourImageSequence:[...s[0].ReferencedInstanceSequence]}]}]}]}function bn(e,t,n,a){const{referencedImageId:r}=e,i=n.get("instance",r),{SeriesInstanceUID:o,StudyInstanceUID:s}=i,c=[];if(o){const e=a.getSeries(s,o),t={SeriesInstanceUID:o,ReferencedInstanceSequence:[]};e.instances.forEach((e=>{const{SOPInstanceUID:n,SOPClassUID:a}=e;t.ReferencedInstanceSequence.push({ReferencedSOPClassUID:a,ReferencedSOPInstanceUID:n})})),c.push(t)}return c}function Un(e,t){const{FrameOfReferenceUID:n}=e.metadata;return{ROINumber:t+1,ROIName:e.name||`Todo: name ${t+1}`,ROIDescription:`Todo: description ${t+1}`,ROIGenerationAlgorithm:"Todo: algorithm",ReferencedFrameOfReferenceUID:n}}const{generateContourSetsFromLabelmap:Fn,AnnotationToPointData:qn}=dn.utilities.contours,{DicomMetaDictionary:Gn}=u.Ay.data;async function Vn(e,t,n){const a=[];(await Fn({segmentations:e})).forEach(((e,n)=>{if(e){const r=[];e.sliceContours.forEach((e=>{const n=t.get("sopCommonModule",e.referencedImageId),a=[{ReferencedSOPClassUID:n.sopClassUID,ReferencedSOPInstanceUID:n.sopInstanceUID}],i=e.polyData;e.contours.forEach(((e,t)=>{const n=e.type,o=e.contourPoints.length,s=[];e.contourPoints.forEach((e=>{const t=i.points[e];t[0]=+t[0].toFixed(2),t[1]=+t[1].toFixed(2),t[2]=+t[2].toFixed(2),s.push(t[0]),s.push(t[1]),s.push(t[2])})),r.push({ContourImageSequence:a,ContourGeometricType:n,NumberOfContourPoints:o,ContourNumber:t+1,ContourData:s})}))}));const i=e.label||`Segment ${n+1}`,o={name:i,description:i,contourSequence:r,color:e.color,metadata:e.metadata};a.push(o)}}));const r=Bn({name:e.label,label:e.label},a[0].metadata,t);a.forEach(((e,a)=>{const i={ROIDisplayColor:e.color||[255,0,0],ContourSequence:e.contourSequence,ReferencedROINumber:a+1};r.StructureSetROISequence.push(Un(e,a)),r.ROIContourSequence.push(i),r.ReferencedSeriesSequence=bn(e.metadata,0,t,n),r.ReferencedFrameOfReferenceSequence=wn(e.metadata,t,r)}));const i=new Uint8Array(2);i[1]=1;const o={FileMetaInformationVersion:{Value:[i.buffer],vr:"OB"},TransferSyntaxUID:{Value:["1.2.840.10008.1.2.1"],vr:"UI"},ImplementationClassUID:{Value:[Gn.uid()],vr:"UI"},ImplementationVersionName:{Value:["dcmjs"],vr:"SH"}};return r._meta=o,r.SpecificCharacterSet="ISO_IR 192",r}function Ln(e,t,n){const a=Bn({name:"RTSS from Annotations",label:"RTSS from Annotations"},e[0].metadata,t);e.forEach(((e,r)=>{const i=qn.convert(e,r,t);a.StructureSetROISequence.push(Un(e,r)),a.ROIContourSequence.push(i),a.RTROIObservationsSequence.push(function(e,t){return{ObservationNumber:t+1,ReferencedROINumber:t+1,RTROIInterpretedType:"Todo: type",ROIInterpreter:"Todo: interpreter"}}(0,r)),a.ReferencedSeriesSequence=bn(e.metadata,0,t,n),a.ReferencedFrameOfReferenceSequence=wn(e.metadata,t,a)}));const r=new Uint8Array(2);r[1]=1;const i={FileMetaInformationVersion:{Value:[r.buffer],vr:"OB"},TransferSyntaxUID:{Value:["1.2.840.10008.1.2.1"],vr:"UI"},ImplementationClassUID:{Value:[Gn.uid()],vr:"UI"},ImplementationVersionName:{Value:["dcmjs"],vr:"SH"}};return a._meta=i,a.SpecificCharacterSet="ISO_IR 192",a}function Bn(e,t,n){const a=Gn.uid(),{referencedImageId:r,FrameOfReferenceUID:i}=t,{studyInstanceUID:o}=n.get("generalSeriesModule",r),s=function(e,t){const n=t.get("generalSeriesModule",e),a=t.get("generalStudyModule",e),r=t.get("patientStudyModule",e),i=t.get("patientModule",e),o=t.get("patientDemographicModule",e);return{Modality:n.modality,PatientID:i.patientId,PatientName:i.patientName,PatientBirthDate:"",PatientAge:r.patientAge,PatientSex:o.patientSex,PatientWeight:r.patientWeight,StudyDate:a.studyDate,StudyTime:a.studyTime,StudyID:"ToDo",AccessionNumber:a.accessionNumber}}(r,n),c=function(e){return{SeriesInstanceUID:e.uid(),SeriesNumber:"99"}}(Gn);return{StructureSetROISequence:[],ROIContourSequence:[],RTROIObservationsSequence:[],ReferencedSeriesSequence:[],ReferencedFrameOfReferenceSequence:[],...s,...c,StudyInstanceUID:o,SOPClassUID:"1.2.840.10008.5.1.4.1.1.481.3",SOPInstanceUID:a,Manufacturer:"dcmjs",Modality:"RTSTRUCT",FrameOfReferenceUID:i,PositionReferenceIndicator:"",StructureSetLabel:e.label||"",StructureSetName:e.name||"",ReferringPhysicianName:"",OperatorsName:"",StructureSetDate:Gn.date(),StructureSetTime:Gn.time(),_meta:null}}const{generateContourSetsFromLabelmap:kn}=dn.utilities.contours;var jn;const{Point:Hn}=u.BF.TID300;class zn extends tn{static getMeasurementData(e,t,n,a,r){const i=super.getMeasurementData(e,t,n,a,r),{data:o}=i.annotation;return o.isPoint=-1!==r.indexOf("Point"),i}static getTID300RepresentationArguments(e,t){const n=super.getTID300RepresentationArguments(e,t),{data:a}=e;return a.isPoint&&(a.seriesLevel?n.trackingIdentifierTextValue=this.trackingSeriesPointIdentifier:n.trackingIdentifierTextValue=this.trackingPointIdentifier),a.seriesLevel&&(n.trackingIdentifierTextValue=this.trackingSeriesIdentifier),n.points.length||n.points.push({x:0,y:0}),n}}(jn=zn).init("KeyImage",Hn,{parentType:tn.toolType}),jn.trackingSeriesIdentifier=`${jn.trackingIdentifierTextValue}:Series`,jn.trackingPointIdentifier=`${jn.trackingIdentifierTextValue}:Point`,jn.trackingSeriesPointIdentifier=`${jn.trackingIdentifierTextValue}:SeriesPoint`;const $n={BaseAdapter3D:Rt,Bidirectional:Pt,CobbAngle:Ft,Angle:wt,Length:Kt,CircleROI:Vt,EllipticalROI:jt,RectangleROI:$t,ArrowAnnotate:At,Probe:tn,PlanarFreehandROI:Jt,UltrasoundDirectional:an,KeyImage:zn,MeasurementReport:yt,CodeScheme:dt,CORNERSTONE_3D_TAG:ct},Yn={Segmentation:r},Wn={ParametricMap:i},Kn={RTSS:o},{Colors:Xn,BitArray:Qn}=u.p;function Jn(e){const t=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]: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 a=0;a<t;a++)n+=e[a]*e[a];return Math.sqrt(n)}}}(e);return 0!==t&&(e[0]/=t,e[1]/=t,e[2]/=t),t}const Zn={Cornerstone:it,Cornerstone3D:$n},ea={Cornerstone:ot,Cornerstone3D:Yn,VTKjs:{Segmentation:class{constructor(){}static generateSegments(e){"Array"!==e.SegmentSequence.constructor.name&&(e.SegmentSequence=[e.SegmentSequence]),e.SegmentSequence.forEach((e=>{const t=function(e){const t=Xn.dicomlab2RGB(e).map((e=>Math.round(255*e)));return t.push(255),t}(e.RecommendedDisplayCIELabValue);segments[e.SegmentNumber]={color:t,functionalGroups:[],offset:null,size:null,pixelData:null}})),e.PerFrameFunctionalGroupsSequence.forEach((e=>{const t=e.SegmentIdentificationSequence.ReferencedSegmentNumber;segments[t].functionalGroups.push(e)}));const t=Math.ceil(e.Rows*e.Columns/8);let n=0;return Object.keys(segments).forEach((a=>{const r=segments[a];r.numberOfFrames=r.functionalGroups.length,r.size=r.numberOfFrames*t,r.offset=n,n=r.offset+r.size;const i=e.PixelData.slice(r.offset,n);r.pixelData=Qn.unpack(i);const o=function(e,t){const n={},a=e.SharedFunctionalGroupsSequence.PixelMeasuresSequence,r=e.SharedFunctionalGroupsSequence.PlaneOrientationSequence,i=t[0],o=t[t.length-1],s=i.PlanePositionSequence.ImagePositionPatient.map(Number),c=o.PlanePositionSequence.ImagePositionPatient.map(Number);n.origin=s,n.spacing=[a.PixelSpacing[1],a.PixelSpacing[0],a.SpacingBetweenSlices].map(Number),n.dimensions=[e.Columns,e.Rows,t.length].map(Number);const u=r.ImageOrientationPatient.map(Number),d=u.slice(0,3),l=u.slice(3,6);var m,g,f;return n.planeNormal=[],function(e,t,n){const a=e[1]*t[2]-e[2]*t[1],r=e[2]*t[0]-e[0]*t[2],i=e[0]*t[1]-e[1]*t[0];n[0]=a,n[1]=r,n[2]=i}(d,l,n.planeNormal),n.sliceStep=[],m=c,g=s,(f=n.sliceStep)[0]=m[0]-g[0],f[1]=m[1]-g[1],f[2]=m[2]-g[2],Jn(n.sliceStep),n.direction=d.concat(l).concat(n.sliceStep),n}(e,r.functionalGroups);r.geometry=o})),segments}}}},ta={Cornerstone:st,Cornerstone3D:Wn},na={Cornerstone3D:Kn},{datasetToDict:aa}=u.p;function ra(e,t){let n;if(e instanceof ArrayBuffer)n=new Blob([e],{type:"application/dicom"});else{if(!e._meta)throw new Error("Dataset must have a _meta property");const t=m.hp.from(aa(e).write());n=new Blob([t],{type:"application/dicom"})}const a=document.createElement("a");a.href=window.URL.createObjectURL(n),a.download=t,a.click()}},75183:(e,t,n)=>{"use strict";var a;n.d(t,{A:()=>r}),function(e){e.Interaction="Interaction",e.HandlesUpdated="HandlesUpdated",e.StatsUpdated="StatsUpdated",e.InitialSetup="InitialSetup",e.Completed="Completed",e.InterpolationUpdated="InterpolationUpdated",e.History="History",e.MetadataReferenceModified="MetadataReferenceModified",e.LabelChange="LabelChange"}(a||(a={}));const r=a},94021:(e,t,n)=>{"use strict";var a;n.d(t,{A:()=>r}),function(e){e.TOOL_ACTIVATED="CORNERSTONE_TOOLS_TOOL_ACTIVATED",e.TOOLGROUP_VIEWPORT_ADDED="CORNERSTONE_TOOLS_TOOLGROUP_VIEWPORT_ADDED",e.TOOLGROUP_VIEWPORT_REMOVED="CORNERSTONE_TOOLS_TOOLGROUP_VIEWPORT_REMOVED",e.TOOL_MODE_CHANGED="CORNERSTONE_TOOLS_TOOL_MODE_CHANGED",e.CROSSHAIR_TOOL_CENTER_CHANGED="CORNERSTONE_TOOLS_CROSSHAIR_TOOL_CENTER_CHANGED",e.ANNOTATION_ADDED="CORNERSTONE_TOOLS_ANNOTATION_ADDED",e.ANNOTATION_COMPLETED="CORNERSTONE_TOOLS_ANNOTATION_COMPLETED",e.ANNOTATION_MODIFIED="CORNERSTONE_TOOLS_ANNOTATION_MODIFIED",e.ANNOTATION_REMOVED="CORNERSTONE_TOOLS_ANNOTATION_REMOVED",e.ANNOTATION_SELECTION_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_SELECTION_CHANGE",e.ANNOTATION_LOCK_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_LOCK_CHANGE",e.ANNOTATION_VISIBILITY_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_VISIBILITY_CHANGE",e.ANNOTATION_RENDERED="CORNERSTONE_TOOLS_ANNOTATION_RENDERED",e.ANNOTATION_INTERPOLATION_PROCESS_COMPLETED="CORNERSTONE_TOOLS_ANNOTATION_INTERPOLATION_PROCESS_COMPLETED",e.INTERPOLATED_ANNOTATIONS_REMOVED="CORNERSTONE_TOOLS_INTERPOLATED_ANNOTATIONS_REMOVED",e.SEGMENTATION_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_MODIFIED",e.SEGMENTATION_RENDERED="CORNERSTONE_TOOLS_SEGMENTATION_RENDERED",e.SEGMENTATION_REPRESENTATION_ADDED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_ADDED",e.SEGMENTATION_ADDED="CORNERSTONE_TOOLS_SEGMENTATION_ADDED",e.SEGMENTATION_REPRESENTATION_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_MODIFIED",e.SEGMENTATION_REMOVED="CORNERSTONE_TOOLS_SEGMENTATION_REMOVED",e.SEGMENTATION_REPRESENTATION_REMOVED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_REMOVED",e.SEGMENTATION_DATA_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_DATA_MODIFIED",e.HISTORY_UNDO="CORNERSTONE_TOOLS_HISTORY_UNDO",e.HISTORY_REDO="CORNERSTONE_TOOLS_HISTORY_REDO",e.KEY_DOWN="CORNERSTONE_TOOLS_KEY_DOWN",e.KEY_UP="CORNERSTONE_TOOLS_KEY_UP",e.MOUSE_DOWN="CORNERSTONE_TOOLS_MOUSE_DOWN",e.MOUSE_UP="CORNERSTONE_TOOLS_MOUSE_UP",e.MOUSE_DOWN_ACTIVATE="CORNERSTONE_TOOLS_MOUSE_DOWN_ACTIVATE",e.MOUSE_DRAG="CORNERSTONE_TOOLS_MOUSE_DRAG",e.MOUSE_MOVE="CORNERSTONE_TOOLS_MOUSE_MOVE",e.MOUSE_CLICK="CORNERSTONE_TOOLS_MOUSE_CLICK",e.MOUSE_DOUBLE_CLICK="CORNERSTONE_TOOLS_MOUSE_DOUBLE_CLICK",e.MOUSE_WHEEL="CORNERSTONE_TOOLS_MOUSE_WHEEL",e.TOUCH_START="CORNERSTONE_TOOLS_TOUCH_START",e.TOUCH_START_ACTIVATE="CORNERSTONE_TOOLS_TOUCH_START_ACTIVATE",e.TOUCH_PRESS="CORNERSTONE_TOOLS_TOUCH_PRESS",e.TOUCH_DRAG="CORNERSTONE_TOOLS_TOUCH_DRAG",e.TOUCH_END="CORNERSTONE_TOOLS_TOUCH_END",e.TOUCH_TAP="CORNERSTONE_TOOLS_TAP",e.TOUCH_SWIPE="CORNERSTONE_TOOLS_SWIPE"}(a||(a={}));const r=a},18682:(e,t,n)=>{"use strict";var a;n.d(t,{A:()=>r}),function(e){e.Labelmap="Labelmap",e.Contour="Contour",e.Surface="Surface"}(a||(a={}));const r=a},84093:(e,t,n)=>{"use strict";var a;n.d(t,{A:()=>r}),function(e){e.OnInteractionStart="onInteractionStart",e.OnInteractionEnd="onInteractionEnd",e.Preview="preview",e.RejectPreview="rejectPreview",e.AcceptPreview="acceptPreview",e.Fill="fill",e.Interpolate="interpolate",e.StrategyFunction="strategyFunction",e.CreateIsInThreshold="createIsInThreshold",e.Initialize="initialize",e.INTERNAL_setValue="setValue",e.AddPreview="addPreview",e.ComputeInnerCircleRadius="computeInnerCircleRadius",e.GetStatistics="getStatistics",e.EnsureImageVolumeFor3DManipulation="ensureImageVolumeFor3DManipulation",e.EnsureSegmentationVolumeFor3DManipulation="ensureSegmentationVolumeFor3DManipulation"}(a||(a={}));const r=a},66452:(e,t,n)=>{"use strict";var a,r;n.d(t,{i:()=>a,q:()=>r}),function(e){e[e.Primary=1]="Primary",e[e.Secondary=2]="Secondary",e[e.Primary_And_Secondary=3]="Primary_And_Secondary",e[e.Auxiliary=4]="Auxiliary",e[e.Primary_And_Auxiliary=5]="Primary_And_Auxiliary",e[e.Secondary_And_Auxiliary=6]="Secondary_And_Auxiliary",e[e.Primary_And_Secondary_And_Auxiliary=7]="Primary_And_Secondary_And_Auxiliary",e[e.Fourth_Button=8]="Fourth_Button",e[e.Fifth_Button=16]="Fifth_Button",e[e.Wheel=524288]="Wheel",e[e.Wheel_Primary=524289]="Wheel_Primary"}(a||(a={})),function(e){e[e.Shift=16]="Shift",e[e.Ctrl=17]="Ctrl",e[e.Alt=18]="Alt",e[e.Meta=91]="Meta",e[e.ShiftCtrl=1617]="ShiftCtrl",e[e.ShiftAlt=1618]="ShiftAlt",e[e.ShiftMeta=1691]="ShiftMeta",e[e.CtrlAlt=1718]="CtrlAlt",e[e.CtrlMeta=1791]="CtrlMeta",e[e.AltMeta=1891]="AltMeta"}(r||(r={}))},49892:(e,t,n)=>{"use strict";var a;n.d(t,{A:()=>r}),function(e){e.Active="Active",e.Passive="Passive",e.Enabled="Enabled",e.Disabled="Disabled"}(a||(a={}));const r=a},10401:(e,t,n)=>{"use strict";var a;n.d(t,{H:()=>a}),function(e){e.UP="UP",e.DOWN="DOWN",e.LEFT="LEFT",e.RIGHT="RIGHT"}(a||(a={}))},99737:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AnnotationStyleStates:()=>o,ChangeTypes:()=>m.A,Events:()=>c.A,KeyboardBindings:()=>r.q,MouseBindings:()=>r.i,SegmentationRepresentations:()=>u.A,StrategyCallbacks:()=>l.A,Swipe:()=>d.H,ToolModes:()=>i.A,WorkerTypes:()=>g});var a,r=n(66452),i=n(49892);!function(e){e.Default="",e.Highlighted="Highlighted",e.Selected="Selected",e.Locked="Locked",e.AutoGenerated="AutoGenerated"}(a||(a={}));const o=a;var s,c=n(94021),u=n(18682),d=n(10401),l=n(84093),m=n(75183);!function(e){e.POLYSEG_CONTOUR_TO_LABELMAP="Converting Contour to Labelmap",e.POLYSEG_SURFACE_TO_LABELMAP="Converting Surfaces to Labelmap",e.POLYSEG_CONTOUR_TO_SURFACE="Converting Contour to Surface",e.POLYSEG_LABELMAP_TO_SURFACE="Converting Labelmap to Surface",e.SURFACE_CLIPPING="Clipping Surfaces",e.COMPUTE_STATISTICS="Computing Statistics",e.INTERPOLATE_LABELMAP="Interpolating Labelmap",e.COMPUTE_LARGEST_BIDIRECTIONAL="Computing Largest Bidirectional",e.GENERATE_CONTOUR_SETS="Generating Contour Sets"}(s||(s={}));const g=s},26337:e=>{"use strict";e.exports=function(e){for(var t=new Array(e),n=0;n<e;++n)t[n]=n;return t}},11604:e=>{e.exports=function(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}},3293:(e,t,n)=>{var a=n(26337),r=n(11604),i="undefined"!=typeof Float64Array;function o(e,t){return e[0]-t[0]}function s(){var e,t=this.stride,n=new Array(t.length);for(e=0;e<n.length;++e)n[e]=[Math.abs(t[e]),e];n.sort(o);var a=new Array(n.length);for(e=0;e<a.length;++e)a[e]=n[e][1];return a}function c(e,t){var n=["View",t,"d",e].join("");t<0&&(n="View_Nil"+e);var r="generic"===e;if(-1===t){var i="function "+n+"(a){this.data=a;};var proto="+n+".prototype;proto.dtype='"+e+"';proto.index=function(){return -1};proto.size=0;proto.dimension=-1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function(){return new "+n+"(this.data);};proto.get=proto.set=function(){};proto.pick=function(){return null};return function construct_"+n+"(a){return new "+n+"(a);}";return new Function(i)()}if(0===t){i="function "+n+"(a,d) {this.data = a;this.offset = d};var proto="+n+".prototype;proto.dtype='"+e+"';proto.index=function(){return this.offset};proto.dimension=0;proto.size=1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function "+n+"_copy() {return new "+n+"(this.data,this.offset)};proto.pick=function "+n+"_pick(){return TrivialArray(this.data);};proto.valueOf=proto.get=function "+n+"_get(){return "+(r?"this.data.get(this.offset)":"this.data[this.offset]")+"};proto.set=function "+n+"_set(v){return "+(r?"this.data.set(this.offset,v)":"this.data[this.offset]=v")+"};return function construct_"+n+"(a,b,c,d){return new "+n+"(a,d)}";return new Function("TrivialArray",i)(u[e][0])}i=["'use strict'"];var o=a(t),c=o.map((function(e){return"i"+e})),d="this.offset+"+o.map((function(e){return"this.stride["+e+"]*i"+e})).join("+"),l=o.map((function(e){return"b"+e})).join(","),m=o.map((function(e){return"c"+e})).join(",");i.push("function "+n+"(a,"+l+","+m+",d){this.data=a","this.shape=["+l+"]","this.stride=["+m+"]","this.offset=d|0}","var proto="+n+".prototype","proto.dtype='"+e+"'","proto.dimension="+t),i.push("Object.defineProperty(proto,'size',{get:function "+n+"_size(){return "+o.map((function(e){return"this.shape["+e+"]"})).join("*"),"}})"),1===t?i.push("proto.order=[0]"):(i.push("Object.defineProperty(proto,'order',{get:"),t<4?(i.push("function "+n+"_order(){"),2===t?i.push("return (Math.abs(this.stride[0])>Math.abs(this.stride[1]))?[1,0]:[0,1]}})"):3===t&&i.push("var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);if(s0>s1){if(s1>s2){return [2,1,0];}else if(s0>s2){return [1,2,0];}else{return [1,0,2];}}else if(s0>s2){return [2,0,1];}else if(s2>s1){return [0,1,2];}else{return [0,2,1];}}})")):i.push("ORDER})")),i.push("proto.set=function "+n+"_set("+c.join(",")+",v){"),r?i.push("return this.data.set("+d+",v)}"):i.push("return this.data["+d+"]=v}"),i.push("proto.get=function "+n+"_get("+c.join(",")+"){"),r?i.push("return this.data.get("+d+")}"):i.push("return this.data["+d+"]}"),i.push("proto.index=function "+n+"_index(",c.join(),"){return "+d+"}"),i.push("proto.hi=function "+n+"_hi("+c.join(",")+"){return new "+n+"(this.data,"+o.map((function(e){return["(typeof i",e,"!=='number'||i",e,"<0)?this.shape[",e,"]:i",e,"|0"].join("")})).join(",")+","+o.map((function(e){return"this.stride["+e+"]"})).join(",")+",this.offset)}");var g=o.map((function(e){return"a"+e+"=this.shape["+e+"]"})),f=o.map((function(e){return"c"+e+"=this.stride["+e+"]"}));i.push("proto.lo=function "+n+"_lo("+c.join(",")+"){var b=this.offset,d=0,"+g.join(",")+","+f.join(","));for(var p=0;p<t;++p)i.push("if(typeof i"+p+"==='number'&&i"+p+">=0){d=i"+p+"|0;b+=c"+p+"*d;a"+p+"-=d}");i.push("return new "+n+"(this.data,"+o.map((function(e){return"a"+e})).join(",")+","+o.map((function(e){return"c"+e})).join(",")+",b)}"),i.push("proto.step=function "+n+"_step("+c.join(",")+"){var "+o.map((function(e){return"a"+e+"=this.shape["+e+"]"})).join(",")+","+o.map((function(e){return"b"+e+"=this.stride["+e+"]"})).join(",")+",c=this.offset,d=0,ceil=Math.ceil");for(p=0;p<t;++p)i.push("if(typeof i"+p+"==='number'){d=i"+p+"|0;if(d<0){c+=b"+p+"*(a"+p+"-1);a"+p+"=ceil(-a"+p+"/d)}else{a"+p+"=ceil(a"+p+"/d)}b"+p+"*=d}");i.push("return new "+n+"(this.data,"+o.map((function(e){return"a"+e})).join(",")+","+o.map((function(e){return"b"+e})).join(",")+",c)}");var h=new Array(t),S=new Array(t);for(p=0;p<t;++p)h[p]="a[i"+p+"]",S[p]="b[i"+p+"]";i.push("proto.transpose=function "+n+"_transpose("+c+"){"+c.map((function(e,t){return e+"=("+e+"===undefined?"+t+":"+e+"|0)"})).join(";"),"var a=this.shape,b=this.stride;return new "+n+"(this.data,"+h.join(",")+","+S.join(",")+",this.offset)}"),i.push("proto.pick=function "+n+"_pick("+c+"){var a=[],b=[],c=this.offset");for(p=0;p<t;++p)i.push("if(typeof i"+p+"==='number'&&i"+p+">=0){c=(c+this.stride["+p+"]*i"+p+")|0}else{a.push(this.shape["+p+"]);b.push(this.stride["+p+"])}");return i.push("var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}"),i.push("return function construct_"+n+"(data,shape,stride,offset){return new "+n+"(data,"+o.map((function(e){return"shape["+e+"]"})).join(",")+","+o.map((function(e){return"stride["+e+"]"})).join(",")+",offset)}"),new Function("CTOR_LIST","ORDER",i.join("\n"))(u[e],s)}var u={float32:[],float64:[],int8:[],int16:[],int32:[],uint8:[],uint16:[],uint32:[],array:[],uint8_clamped:[],bigint64:[],biguint64:[],buffer:[],generic:[]};e.exports=function(e,t,n,a){if(void 0===e)return(0,u.array[0])([]);"number"==typeof e&&(e=[e]),void 0===t&&(t=[e.length]);var o=t.length;if(void 0===n){n=new Array(o);for(var s=o-1,d=1;s>=0;--s)n[s]=d,d*=t[s]}if(void 0===a){a=0;for(s=0;s<o;++s)n[s]<0&&(a-=(t[s]-1)*n[s])}for(var l=function(e){if(r(e))return"buffer";if(i)switch(Object.prototype.toString.call(e)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object Uint8ClampedArray]":return"uint8_clamped";case"[object BigInt64Array]":return"bigint64";case"[object BigUint64Array]":return"biguint64"}return Array.isArray(e)?"array":"generic"}(e),m=u[l];m.length<=o+1;)m.push(c(l,m.length-1));return(0,m[o+1])(e,t,n,a)}}}]);
//# sourceMappingURL=3166.bundle.d6de67b5c48861d87b61.js.map