@cornerstonejs/core 1.71.4 → 1.71.6

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.
Files changed (57) hide show
  1. package/dist/cjs/RenderingEngine/BaseVolumeViewport.d.ts +5 -5
  2. package/dist/cjs/RenderingEngine/BaseVolumeViewport.js +83 -10
  3. package/dist/cjs/RenderingEngine/BaseVolumeViewport.js.map +1 -1
  4. package/dist/cjs/RenderingEngine/StackViewport.d.ts +5 -5
  5. package/dist/cjs/RenderingEngine/StackViewport.js +71 -50
  6. package/dist/cjs/RenderingEngine/StackViewport.js.map +1 -1
  7. package/dist/cjs/RenderingEngine/Viewport.d.ts +2 -1
  8. package/dist/cjs/RenderingEngine/Viewport.js +21 -16
  9. package/dist/cjs/RenderingEngine/Viewport.js.map +1 -1
  10. package/dist/cjs/RenderingEngine/VolumeViewport.d.ts +3 -2
  11. package/dist/cjs/RenderingEngine/VolumeViewport.js +13 -14
  12. package/dist/cjs/RenderingEngine/VolumeViewport.js.map +1 -1
  13. package/dist/cjs/types/IViewport.d.ts +5 -1
  14. package/dist/cjs/utilities/index.d.ts +3 -2
  15. package/dist/cjs/utilities/index.js +8 -4
  16. package/dist/cjs/utilities/index.js.map +1 -1
  17. package/dist/cjs/utilities/isEqual.d.ts +3 -0
  18. package/dist/cjs/utilities/isEqual.js +8 -0
  19. package/dist/cjs/utilities/isEqual.js.map +1 -1
  20. package/dist/esm/RenderingEngine/BaseVolumeViewport.js +83 -13
  21. package/dist/esm/RenderingEngine/BaseVolumeViewport.js.map +1 -1
  22. package/dist/esm/RenderingEngine/StackViewport.js +53 -34
  23. package/dist/esm/RenderingEngine/StackViewport.js.map +1 -1
  24. package/dist/esm/RenderingEngine/Viewport.js +20 -16
  25. package/dist/esm/RenderingEngine/Viewport.js.map +1 -1
  26. package/dist/esm/RenderingEngine/VolumeViewport.js +13 -14
  27. package/dist/esm/RenderingEngine/VolumeViewport.js.map +1 -1
  28. package/dist/esm/utilities/index.js +3 -2
  29. package/dist/esm/utilities/index.js.map +1 -1
  30. package/dist/esm/utilities/isEqual.js +5 -0
  31. package/dist/esm/utilities/isEqual.js.map +1 -1
  32. package/dist/types/RenderingEngine/BaseVolumeViewport.d.ts +5 -5
  33. package/dist/types/RenderingEngine/BaseVolumeViewport.d.ts.map +1 -1
  34. package/dist/types/RenderingEngine/StackViewport.d.ts +5 -5
  35. package/dist/types/RenderingEngine/StackViewport.d.ts.map +1 -1
  36. package/dist/types/RenderingEngine/Viewport.d.ts +2 -1
  37. package/dist/types/RenderingEngine/Viewport.d.ts.map +1 -1
  38. package/dist/types/RenderingEngine/VolumeViewport.d.ts +3 -2
  39. package/dist/types/RenderingEngine/VolumeViewport.d.ts.map +1 -1
  40. package/dist/types/types/IViewport.d.ts +5 -1
  41. package/dist/types/types/IViewport.d.ts.map +1 -1
  42. package/dist/types/types/displayArea.d.ts.map +1 -1
  43. package/dist/types/utilities/index.d.ts +3 -2
  44. package/dist/types/utilities/index.d.ts.map +1 -1
  45. package/dist/types/utilities/isEqual.d.ts +3 -0
  46. package/dist/types/utilities/isEqual.d.ts.map +1 -1
  47. package/dist/umd/index.js +1 -1
  48. package/dist/umd/index.js.map +1 -1
  49. package/package.json +2 -2
  50. package/src/RenderingEngine/BaseVolumeViewport.ts +182 -19
  51. package/src/RenderingEngine/StackViewport.ts +81 -50
  52. package/src/RenderingEngine/Viewport.ts +37 -24
  53. package/src/RenderingEngine/VolumeViewport.ts +40 -25
  54. package/src/types/IViewport.ts +64 -18
  55. package/src/types/displayArea.ts +27 -0
  56. package/src/utilities/index.ts +6 -2
  57. package/src/utilities/isEqual.ts +27 -0
@@ -1,9 +1,7 @@
1
1
  import { BlendModes, InterpolationType, OrientationAxis } from '../enums';
2
- import type { FlipDirection, IImageData, IVolumeInput, OrientationVectors, Point2, Point3, VolumeViewportProperties, ViewReferenceSpecifier, ReferenceCompatibleOptions } from '../types';
2
+ import type { FlipDirection, IImageData, IVolumeInput, OrientationVectors, Point2, Point3, VolumeViewportProperties, ViewReferenceSpecifier, ReferenceCompatibleOptions, ViewReference, IVolumeViewport } from '../types';
3
3
  import { VoiModifiedEventDetail } from '../types/EventTypes';
4
4
  import type { ViewportInput } from '../types/IViewport';
5
- import type IVolumeViewport from '../types/IVolumeViewport';
6
- import type { ViewReference } from '../types/IViewport';
7
5
  import Viewport from './Viewport';
8
6
  declare abstract class BaseVolumeViewport extends Viewport implements IVolumeViewport {
9
7
  useCPURendering: boolean;
@@ -33,6 +31,8 @@ declare abstract class BaseVolumeViewport extends Viewport implements IVolumeVie
33
31
  clearDefaultProperties(volumeId?: string): void;
34
32
  getViewReference(viewRefSpecifier?: ViewReferenceSpecifier): ViewReference;
35
33
  isReferenceViewable(viewRef: ViewReference, options?: ReferenceCompatibleOptions): boolean;
34
+ scroll(delta?: number): void;
35
+ setViewReference(viewRef: ViewReference): void;
36
36
  setProperties({ voiRange, VOILUTFunction, invert, colormap, preset, interpolationType, slabThickness, rotation, }?: VolumeViewportProperties, volumeId?: string, suppressEvents?: boolean): void;
37
37
  resetToDefaultProperties(volumeId: string): void;
38
38
  private setPreset;
@@ -42,7 +42,7 @@ declare abstract class BaseVolumeViewport extends Viewport implements IVolumeVie
42
42
  setVolumes(volumeInputArray: Array<IVolumeInput>, immediate?: boolean, suppressEvents?: boolean): Promise<void>;
43
43
  addVolumes(volumeInputArray: Array<IVolumeInput>, immediate?: boolean, suppressEvents?: boolean): Promise<void>;
44
44
  removeVolumeActors(actorUIDs: Array<string>, immediate?: boolean): void;
45
- setOrientation(orientation: OrientationAxis, immediate?: boolean): void;
45
+ setOrientation(_orientation: OrientationAxis | OrientationVectors, _immediate?: boolean): void;
46
46
  private initializeColorTransferFunction;
47
47
  private _getApplicableVolumeActor;
48
48
  private _isValidVolumeInputArray;
@@ -61,7 +61,7 @@ declare abstract class BaseVolumeViewport extends Viewport implements IVolumeVie
61
61
  getIntensityFromWorld(point: Point3): number;
62
62
  getImageIds: (volumeId?: string) => Array<string>;
63
63
  abstract getCurrentImageId(): string;
64
- protected getVolumeId(specifier: ViewReferenceSpecifier): string;
64
+ protected getVolumeId(specifier?: ViewReferenceSpecifier): string;
65
65
  getReferenceId(specifier?: ViewReferenceSpecifier): string;
66
66
  abstract setBlendMode(blendMode: BlendModes, filterActorUIDs?: Array<string>, immediate?: boolean): void;
67
67
  abstract setSlabThickness(slabThickness: number, filterActorUIDs?: Array<string>): void;
@@ -503,12 +503,26 @@ class BaseVolumeViewport extends Viewport_1.default {
503
503
  }
504
504
  getViewReference(viewRefSpecifier = {}) {
505
505
  const target = super.getViewReference(viewRefSpecifier);
506
+ const volumeId = this.getVolumeId(viewRefSpecifier);
506
507
  if ((viewRefSpecifier === null || viewRefSpecifier === void 0 ? void 0 : viewRefSpecifier.forFrameOfReference) !== false) {
507
- target.volumeId = this.getVolumeId(viewRefSpecifier);
508
+ target.volumeId = volumeId;
508
509
  }
509
- return Object.assign(Object.assign({}, target), { sliceIndex: this.getCurrentImageIdIndex() });
510
+ if (typeof (viewRefSpecifier === null || viewRefSpecifier === void 0 ? void 0 : viewRefSpecifier.sliceIndex) !== 'number') {
511
+ return target;
512
+ }
513
+ const { viewPlaneNormal } = target;
514
+ const delta = viewRefSpecifier.sliceIndex - this.getCurrentImageIdIndex();
515
+ const { sliceRangeInfo } = (0, utilities_1.getVolumeViewportScrollInfo)(this, volumeId, true);
516
+ const { sliceRange, spacingInNormalDirection, camera } = sliceRangeInfo;
517
+ const { focalPoint, position } = camera;
518
+ const { newFocalPoint } = (0, utilities_1.snapFocalPointToSlice)(focalPoint, position, sliceRange, viewPlaneNormal, spacingInNormalDirection, delta);
519
+ target.cameraFocalPoint = newFocalPoint;
520
+ return target;
510
521
  }
511
522
  isReferenceViewable(viewRef, options) {
523
+ if (!viewRef.FrameOfReferenceUID) {
524
+ return false;
525
+ }
512
526
  if (!super.isReferenceViewable(viewRef, options)) {
513
527
  return false;
514
528
  }
@@ -522,6 +536,63 @@ class BaseVolumeViewport extends Viewport_1.default {
522
536
  }
523
537
  return sliceIndex === undefined || sliceIndex === currentSliceIndex;
524
538
  }
539
+ scroll(delta = 1) {
540
+ const volumeId = this.getVolumeId();
541
+ const { sliceRangeInfo } = (0, utilities_1.getVolumeViewportScrollInfo)(this, volumeId, true);
542
+ if (!sliceRangeInfo) {
543
+ return;
544
+ }
545
+ const { sliceRange, spacingInNormalDirection, camera } = sliceRangeInfo;
546
+ const { focalPoint, viewPlaneNormal, position } = camera;
547
+ const { newFocalPoint, newPosition } = (0, utilities_1.snapFocalPointToSlice)(focalPoint, position, sliceRange, viewPlaneNormal, spacingInNormalDirection, delta);
548
+ this.setCamera({
549
+ focalPoint: newFocalPoint,
550
+ position: newPosition,
551
+ });
552
+ }
553
+ setViewReference(viewRef) {
554
+ if (!viewRef) {
555
+ return;
556
+ }
557
+ const volumeId = this.getVolumeId();
558
+ const { viewPlaneNormal: refViewPlaneNormal, FrameOfReferenceUID: refFrameOfReference, cameraFocalPoint, viewUp, } = viewRef;
559
+ let { sliceIndex } = viewRef;
560
+ const { focalPoint, viewPlaneNormal, position } = this.getCamera();
561
+ const isNegativeNormal = (0, utilities_1.isEqualNegative)(viewPlaneNormal, refViewPlaneNormal);
562
+ const isSameNormal = (0, utilities_1.isEqual)(viewPlaneNormal, refViewPlaneNormal);
563
+ if (typeof sliceIndex === 'number' &&
564
+ viewRef.volumeId === volumeId &&
565
+ (isNegativeNormal || isSameNormal)) {
566
+ const { currentStepIndex, sliceRangeInfo, numScrollSteps } = (0, utilities_1.getVolumeViewportScrollInfo)(this, volumeId, true);
567
+ const { sliceRange, spacingInNormalDirection } = sliceRangeInfo;
568
+ if (isNegativeNormal) {
569
+ sliceIndex = numScrollSteps - sliceIndex - 1;
570
+ }
571
+ const delta = sliceIndex - currentStepIndex;
572
+ const { newFocalPoint, newPosition } = (0, utilities_1.snapFocalPointToSlice)(focalPoint, position, sliceRange, viewPlaneNormal, spacingInNormalDirection, delta);
573
+ this.setCamera({ focalPoint: newFocalPoint, position: newPosition });
574
+ }
575
+ else if (refFrameOfReference === this.getFrameOfReferenceUID()) {
576
+ if (refViewPlaneNormal && !isNegativeNormal && !isSameNormal) {
577
+ this.setOrientation({ viewPlaneNormal: refViewPlaneNormal, viewUp });
578
+ return this.setViewReference(viewRef);
579
+ }
580
+ if (cameraFocalPoint) {
581
+ const focalDelta = gl_matrix_1.vec3.subtract([0, 0, 0], cameraFocalPoint, focalPoint);
582
+ const useNormal = refViewPlaneNormal !== null && refViewPlaneNormal !== void 0 ? refViewPlaneNormal : viewPlaneNormal;
583
+ const normalDot = gl_matrix_1.vec3.dot(focalDelta, useNormal);
584
+ if (!(0, utilities_1.isEqual)(normalDot, 0)) {
585
+ gl_matrix_1.vec3.scale(focalDelta, useNormal, normalDot);
586
+ }
587
+ const newFocal = gl_matrix_1.vec3.add([0, 0, 0], focalPoint, focalDelta);
588
+ const newPosition = gl_matrix_1.vec3.add([0, 0, 0], position, focalDelta);
589
+ this.setCamera({ focalPoint: newFocal, position: newPosition });
590
+ }
591
+ }
592
+ else {
593
+ throw new Error(`Incompatible view refs: ${refFrameOfReference}!==${this.getFrameOfReferenceUID()}`);
594
+ }
595
+ }
525
596
  setProperties({ voiRange, VOILUTFunction, invert, colormap, preset, interpolationType, slabThickness, rotation, } = {}, volumeId, suppressEvents = false) {
526
597
  if (this.globalDefaultProperties == null) {
527
598
  this.setDefaultProperties({
@@ -685,7 +756,7 @@ class BaseVolumeViewport extends Viewport_1.default {
685
756
  this.render();
686
757
  }
687
758
  }
688
- setOrientation(orientation, immediate = true) {
759
+ setOrientation(_orientation, _immediate = true) {
689
760
  console.warn('Method "setOrientation" needs implementation');
690
761
  }
691
762
  initializeColorTransferFunction(volumeInputArray) {
@@ -825,15 +896,16 @@ class BaseVolumeViewport extends Viewport_1.default {
825
896
  return volume.getScalarData()[voxelIndex];
826
897
  }
827
898
  getVolumeId(specifier) {
828
- var _a;
899
+ var _a, _b;
900
+ const actorEntries = this.getActors();
901
+ if (!actorEntries) {
902
+ return;
903
+ }
829
904
  if (!(specifier === null || specifier === void 0 ? void 0 : specifier.volumeId)) {
830
- const actorEntries = this.getActors();
831
- if (!actorEntries) {
832
- return;
833
- }
834
905
  return (_a = actorEntries.find((actorEntry) => actorEntry.actor.getClassName() === 'vtkVolume')) === null || _a === void 0 ? void 0 : _a.uid;
835
906
  }
836
- return specifier.volumeId;
907
+ return (_b = actorEntries.find((actorEntry) => actorEntry.actor.getClassName() === 'vtkVolume' &&
908
+ actorEntry.uid === specifier.volumeId)) === null || _b === void 0 ? void 0 : _b.uid;
837
909
  }
838
910
  getReferenceId(specifier = {}) {
839
911
  var _a;
@@ -845,7 +917,8 @@ class BaseVolumeViewport extends Viewport_1.default {
845
917
  }
846
918
  volumeId = (_a = actorEntries.find((actorEntry) => actorEntry.actor.getClassName() === 'vtkVolume')) === null || _a === void 0 ? void 0 : _a.uid;
847
919
  }
848
- sliceIndex !== null && sliceIndex !== void 0 ? sliceIndex : (sliceIndex = this.getCurrentImageIdIndex());
920
+ const currentIndex = this.getCurrentImageIdIndex();
921
+ sliceIndex !== null && sliceIndex !== void 0 ? sliceIndex : (sliceIndex = currentIndex);
849
922
  const { viewPlaneNormal, focalPoint } = this.getCamera();
850
923
  const querySeparator = volumeId.indexOf('?') > -1 ? '&' : '?';
851
924
  return `volumeId:${volumeId}${querySeparator}sliceIndex=${sliceIndex}&viewPlaneNormal=${viewPlaneNormal.join(',')}&focalPoint=${focalPoint.join(',')}`;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseVolumeViewport.js","sourceRoot":"","sources":["../../../src/RenderingEngine/BaseVolumeViewport.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iHAA4F;AAC5F,+GAA0F;AAC1F,2GAAsF;AAEtF,yCAAuC;AAEvC,qDAA6B;AAC7B,4CAIsB;AACtB,oCAOkB;AAClB,yEAAiD;AACjD,iEAAyC;AACzC,kCAAmD;AACnD,0DAAqD;AAoBrD,4CASsB;AACtB,uCAA8C;AAC9C,yGAEiD;AACjD,0DAAkC;AAElC,+EAAuD;AACvD,+FAAuE;AACvE,oDAA6D;AAC7D,8EAA8E;AAU9E,MAAe,kBAAmB,SAAQ,kBAAQ;IAgBhD,YAAY,KAAoB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QAhBf,oBAAe,GAAG,KAAK,CAAC;QACxB,sBAAiB,GAAG,KAAK,CAAC;QAMlB,iCAA4B,GAAG,IAAI,GAAG,EAG3C,CAAC;QAGM,uBAAkB,GAA6B,EAAE,CAAC;QAyalD,gBAAW,GAAG,CAAC,QAAgB,EAAE,EAAE;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACnD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,gBAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAW,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3B,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAG1C,MAAM,aAAa,GAAG,YAAY;gBAChC,CAAC,CAAC,gBAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC;gBAC5C,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;YAEvB,IAAI,CAAC,gBAAgB,CAAC;gBACpB,MAAM,EAAE,aAAuB;aAChC,CAAC,CAAC;YAGH,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACxD,MAAM,SAAS,GAAG,gBAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,gBAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAW,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAE9B,IAAI,IAAI,CAAC,6BAA6B,EAAE;gBACtC,OAAO;aACR;YAGD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAEhC,MAAM,WAAW,GAAyC;gBACxD,cAAc;gBACd,MAAM;gBACN,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,UAAU,EAAE,IAAI,CAAC,EAAE;gBACnB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,QAAQ;aACT,CAAC;YAEF,IAAA,wBAAY,EAAC,IAAI,CAAC,OAAO,EAAE,cAAM,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;YAChE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC9C,CAAC,CAAC;QAgQK,yBAAoB,GAAG,CAC5B,QAAiB,EACS,EAAE;YAC5B,IAAI,gBAAgB,CAAC;YACrB,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC1B,gBAAgB,GAAG,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;aACpE;YAED,IAAI,gBAAgB,KAAK,SAAS,EAAE;gBAClC,OAAO,gBAAgB,CAAC;aACzB;YAED,yBACK,IAAI,CAAC,uBAAuB,EAC/B;QACJ,CAAC,CAAC;QAOK,kBAAa,GAAG,CAAC,QAAiB,EAA4B,EAAE;;YACrE,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;YAC3E,IAAI,CAAC,yBAAyB,EAAE;gBAC9B,OAAO;aACR;YAED,MAAM,EACJ,QAAQ,EAAE,cAAc,EACxB,cAAc,EACd,iBAAiB,EACjB,MAAM,EACN,aAAa,EACb,QAAQ,EACR,MAAM,GACP,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;iBAC/B,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;;gBAClB,MAAM,WAAW,GAAG,UAAU,CAAC,KAAkB,CAAC;gBAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC;gBAChC,MAAM,MAAM,GAAG,eAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACzC,IAAI,CAAC,MAAM,EAAE;oBACX,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBACjE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAClB,CAAA,MAAA,IAAI,CAAC,kBAAkB,0CAAE,cAAc,MAAK,SAAS;oBACnD,CAAC,CAAC,IAAA,gDAAoC,EAAC,IAAI,CAAC;oBAC5C,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;YAClD,CAAC,CAAC;iBACD,MAAM,CAAC,OAAO,CAAC,CAAC;YAEnB,MAAM,QAAQ,GAAG,QAAQ;gBACvB,CAAC,CAAC,MAAA,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,0CAAE,QAAQ;gBAClE,CAAC,CAAC,MAAA,SAAS,CAAC,CAAC,CAAC,0CAAE,QAAQ,CAAC;YAE3B,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAElD,MAAM,QAAQ,GACZ,QAAQ,IAAI,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC;YAE/D,OAAO;gBACL,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,QAAQ;gBAClB,cAAc,EAAE,cAAc;gBAC9B,iBAAiB,EAAE,iBAAiB;gBACpC,MAAM,EAAE,MAAM;gBACd,aAAa,EAAE,aAAa;gBAC5B,QAAQ,EAAE,QAAQ;gBAClB,MAAM;aACP,CAAC;QACJ,CAAC,CAAC;QAeM,gBAAW,GAAG,CAAC,QAAQ,EAAE,EAAE;YACjC,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;YAE3E,IAAI,CAAC,yBAAyB,EAAE;gBAC9B,OAAO;aACR;YAED,MAAM,EAAE,WAAW,EAAE,GAAG,yBAAyB,CAAC;YAClD,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACjE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBAC3C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;gBACzC,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC,CAAC;YAEP,MAAM,eAAe,GAAG,IAAA,+BAAoB,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAErE,OAAO,eAAe,CAAC;QACzB,CAAC,CAAC;QA+PK,gBAAW,GAAG,GAAW,EAAE;YAChC,MAAM,EACJ,MAAM,EAAE,aAAa,EACrB,eAAe,EACf,YAAY,GACb,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAGrB,MAAM,aAAa,GAAG,YAAY;gBAChC,CAAC,CAAC,gBAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC;gBAC5C,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;YAEvB,IAAI,CAAC,aAAa,EAAE;gBAClB,OAAO,CAAC,CAAC;aACV;YAID,MAAM,2BAA2B,GAC/B,CAAC,gBAAI,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;YAM7D,MAAM,2BAA2B,GAAG,gBAAI,CAAC,KAAK,CAC5C,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACT,aAAa,EACb,aAAa,CACd,CAAC;YAIF,MAAM,SAAS,GAAG,gBAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,eAAe,CAAC,CAAC;YAEzE,MAAM,KAAK,GACT,SAAS,IAAI,CAAC;gBACZ,CAAC,CAAC,2BAA2B;gBAC7B,CAAC,CAAC,CAAC,GAAG,GAAG,2BAA2B,CAAC,GAAG,GAAG,CAAC;YAEhD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAmBK,2BAAsB,GAAG,GAAW,EAAE;YAC3C,OAAO,IAAI,CAAC,oBAAoB,CAAC;QACnC,CAAC,CAAC;QAuFK,kBAAa,GAAG,CAAC,SAAiB,EAAU,EAAE;;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAuB,CAAC;YAwBjE,MAAA,SAAS,CAAC,uCAAuC,0DAAG,IAAI,CAAC,CAAC;YAE1D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,0BAA0B,GAC9B,IAAI,CAAC,kBAAkB,EAAE,CAAC,0BAA0B,CAAC;YACvD,MAAM,kBAAkB,GACtB,0BAA0B,CAAC,qBAAqB,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,EAAE,CAAC;YAC1C,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC;YACtD,MAAM,gBAAgB,GAAG;gBACvB,SAAS,CAAC,CAAC,CAAC,GAAG,gBAAgB;gBAC/B,SAAS,CAAC,CAAC,CAAC,GAAG,gBAAgB;aAChC,CAAC;YACF,MAAM,YAAY,GAAG;gBACnB,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE;gBAC7B,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE;aAC9B,CAAC;YAGF,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAE5C,MAAM,UAAU,GAAG,kBAAkB,CAAC,cAAc,CAClD,YAAY,CAAC,CAAC,CAAC,EACf,YAAY,CAAC,CAAC,CAAC,EACf,CAAC,EACD,QAAQ,CACT,CAAC;YAEF,MAAA,SAAS,CAAC,uCAAuC,0DAAG,KAAK,CAAC,CAAC;YAE3D,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC;QAUK,kBAAa,GAAG,CAAC,QAAgB,EAAU,EAAE;;YAClD,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAuB,CAAC;YAwBjE,MAAA,SAAS,CAAC,uCAAuC,0DAAG,IAAI,CAAC,CAAC;YAE1D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,0BAA0B,GAC9B,IAAI,CAAC,kBAAkB,EAAE,CAAC,0BAA0B,CAAC;YACvD,MAAM,kBAAkB,GACtB,0BAA0B,CAAC,qBAAqB,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,EAAE,CAAC;YAC1C,MAAM,YAAY,GAAG,kBAAkB,CAAC,cAAc,CACpD,GAAG,QAAQ,EACX,QAAQ,CACT,CAAC;YAGF,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAE5C,MAAM,WAAW,GAAW;gBAC1B,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE;gBACzB,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE;aAC1B,CAAC;YAEF,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC;YACtD,MAAM,kBAAkB,GAAW;gBACjC,WAAW,CAAC,CAAC,CAAC,GAAG,gBAAgB;gBACjC,WAAW,CAAC,CAAC,CAAC,GAAG,gBAAgB;aAClC,CAAC;YAEF,MAAA,SAAS,CAAC,uCAAuC,0DAAG,KAAK,CAAC,CAAC;YAE3D,OAAO,kBAAkB,CAAC;QAC5B,CAAC,CAAC;QAYK,gBAAW,GAAG,CAAC,QAAgB,EAAW,EAAE;YACjD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAC1D,IAAA,oBAAQ,EAAC,UAAU,EAAE,WAAW,CAAC,CAClC,CAAC;YAEF,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;gBACnC,MAAM,MAAM,GAAG,eAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAEpC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;gBAED,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,wBAAY,CAAC,CAAC;gBAE1D,OAAO,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QA6EK,gBAAW,GAAG,CAAC,QAAiB,EAAiB,EAAE;YACxD,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;YAE3E,IAAI,CAAC,yBAAyB,EAAE;gBAC9B,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,EAAE,CAAC,CAAC;aACvE;YAED,MAAM,aAAa,GAAG,yBAAyB,CAAC,QAAQ,CAAC;YAEzD,MAAM,WAAW,GAAG,eAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,EAAE;gBAChB,MAAM,IAAI,KAAK,CACb,wBAAwB,aAAa,0BAA0B,CAChE,CAAC;aACH;YAED,OAAO,WAAW,CAAC,QAAQ,CAAC;QAC9B,CAAC,CAAC;QAj8CA,IAAI,CAAC,eAAe,GAAG,IAAA,+BAAwB,GAAE,CAAC;QAClD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEzD,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAC;SACH;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpC,MAAM,MAAM,GAAG,uBAAa,CAAC,WAAW,EAAE,CAAC;QAC3C,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAEjC,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,sBAAY,CAAC,YAAY;gBAC5B,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,sBAAY,CAAC,SAAS;gBACzB,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,sBAAY,CAAC,WAAW;gBAC3B,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBACpC,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SAC/D;QAED,IAAI,CAAC,uCAAuC,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,0BAA0B;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAES,oBAAoB,CAC5B,WAAiD,EACjD,WAAW,GAAG,IAAI;QAElB,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAC/B,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACzC,MAAM,CAAC,wBAAwB,CAC7B,CAAC,eAAe,CAAC,CAAC,CAAC,EACnB,CAAC,eAAe,CAAC,CAAC,CAAC,EACnB,CAAC,eAAe,CAAC,CAAC,CAAC,CACpB,CAAC;QACF,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAE5B,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC;IAEO,uCAAuC;QAC7C,MAAM,0BAA0B,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,0BAA0B,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpE,SAAS,qBAAqB,CAAC,WAAW;YACxC,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC;YAE1C,IAAI,UAAU,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;gBAC7C,OAAO;aACR;YAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAE9C,IAAI,CAAC,iBAAiB,EAAE;gBACtB,OAAO;aACR;YAED,IAAA,uCAA6B,EAAC,WAAW,CAAC,CAAC;QAC7C,CAAC;QAED,SAAS,qBAAqB,CAAC,GAAG;YAChC,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAElC,IAAI,UAAU,KAAK,IAAI,CAAC,EAAE,EAAE;gBAC1B,OAAO;aACR;YAED,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAC9B,cAAM,CAAC,eAAe,EACtB,0BAA0B,CAC3B,CAAC;YAEF,qBAAW,CAAC,mBAAmB,CAC7B,cAAM,CAAC,gBAAgB,EACvB,0BAA0B,CAC3B,CAAC;YAEF,IAAA,wDAAwB,EAAC,UAAU,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAC9B,cAAM,CAAC,eAAe,EACtB,0BAA0B,CAC3B,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAC3B,cAAM,CAAC,eAAe,EACtB,0BAA0B,CAC3B,CAAC;QAEF,qBAAW,CAAC,gBAAgB,CAC1B,cAAM,CAAC,gBAAgB,EACvB,0BAA0B,CAC3B,CAAC;IACJ,CAAC;IAES,gCAAgC;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE/C,IAAI,YAAY,CAAC,qBAAqB,EAAE,EAAE;YACxC,YAAY,CAAC,gBAAgB,CAC3B,CAAC,8BAAkB,CAAC,oBAAoB,EACxC,8BAAkB,CAAC,oBAAoB,CACxC,CAAC;SACH;aAAM;YACL,YAAY,CAAC,gBAAgB,CAC3B,8BAAkB,CAAC,sBAAsB,EACzC,8BAAkB,CAAC,oBAAoB,CACxC,CAAC;SACH;IACH,CAAC;IAUO,iBAAiB,CACvB,cAAkC,EAClC,QAAiB,EACjB,cAAwB;QAGxB,IAAI,MAAM,CAAC,MAAM,CAAC,0BAAkB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE;YACpE,cAAc,GAAG,0BAAkB,CAAC,MAAM,CAAC;SAC5C;QACD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QAChD,IAAI,CAAC,kBAAkB,CAAC,cAAc,GAAG,cAAc,CAAC;IAC1D,CAAC;IAWO,WAAW,CACjB,QAAwB,EACxB,QAAgB,EAChB,cAAwB;QAExB,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAC3E,IAAI,CAAC,yBAAyB,EAAE;YAC9B,OAAO;SACR;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,yBAAyB,CAAC;QAElD,MAAM,IAAI,GAAG,+BAAwB,CAAC,WAAW,EAAE,CAAC;QACpD,IAAI,WAAW,GAAG,oBAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE3D,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;QAE1B,IAAI,CAAC,WAAW,EAAE;YAChB,WAAW,GAAG,mBAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SAClD;QAED,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,YAAY,CAAC,CAAC;SACnD;QAED,MAAM,KAAK,GAAG,WAAW;aACtB,WAAW,EAAE;aACb,sBAAsB,CAAC,CAAC,CAAC;aACzB,QAAQ,EAAE,CAAC;QAEd,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,WAAW,CAAC,WAAW,EAAE,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAK1D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAE5C,IAAI,CAAC,cAAc,EAAE;YACnB,MAAM,WAAW,GAAG;gBAClB,UAAU,EAAE,IAAI,CAAC,EAAE;gBACnB,QAAQ;gBACR,QAAQ;aACT,CAAC;YACF,IAAA,wBAAY,EAAC,IAAI,CAAC,OAAO,EAAE,cAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;SACnE;IACH,CAAC;IAUO,UAAU,CAAC,QAAwB,EAAE,QAAgB;QAC3D,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAC3E,IAAI,CAAC,yBAAyB,EAAE;YAC9B,OAAO;SACR;QACD,MAAM,EAAE,WAAW,EAAE,GAAG,yBAAyB,CAAC;QAElD,MAAM,IAAI,GAAG,2BAAoB,CAAC,WAAW,EAAE,CAAC;QAChD,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE;YACxC,MAAM,KAAK,GAAG,WAAW;iBACtB,WAAW,EAAE;iBACb,sBAAsB,CAAC,CAAC,CAAC;iBACzB,QAAQ,EAAE,CAAC;YAEd,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;SAC3C;aAAM;YACL,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;gBAC9C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;SACJ;QACD,WAAW,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAEpD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;YACrC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,EAAE,CAAC;SACvC;QAED,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC9D,CAAC;IAWO,SAAS,CACf,QAAiB,EACjB,QAAiB,EACjB,cAAwB;QAExB,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAE3E,IAAI,CAAC,yBAAyB,EAAE;YAC9B,OAAO;SACR;QAED,MAAM,aAAa,GAAG,yBAAyB,CAAC,QAAQ,CAAC;QAEzD,MAAM,IAAI,GAAG,IAAI,CAAC,iCAAiC,CAAC,aAAa,CAAC,CAAC;QACnE,IAAA,qCAAyB,EAAC,IAAI,CAAC,CAAC;QAEhC,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,QAAQ,CAAC;QAE1C,IAAI,CAAC,cAAc,EAAE;YACnB,MAAM,WAAW,mCACZ,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,KAChD,kBAAkB,EAAE,IAAI,GACzB,CAAC;YAEF,IAAA,wBAAY,EAAC,IAAI,CAAC,OAAO,EAAE,cAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;SAC9D;IACH,CAAC;IAES,yBAAyB,CACjC,QAAgB;QAEhB,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAE3E,IAAI,CAAC,yBAAyB,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,EAAE,CAAC,CAAC;SACvE;QAED,MAAM,WAAW,GAAG,yBAAyB,CAAC,WAAW,CAAC;QAE1D,MAAM,gBAAgB,GAAG,WAAW;aACjC,WAAW,EAAE;aACb,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAE7B,MAAM,KAAK,GAAG,gBAAgB,CAAC,eAAe,EAAE,CAAC;QAEjD,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAEhE,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,EAAE;YACnB,KAAK,EAAE;gBACL,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;gBACf,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;aAChB;YACD,QAAQ,EAAE,yBAAyB,CAAC,QAAQ;YAC5C,cAAc,EAAE,cAAc;YAC9B,QAAQ,EAAE,eAAe;YACzB,MAAM;SACP,CAAC;IACJ,CAAC;IAEO,iCAAiC,CACvC,QAAgB;QAEhB,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAE3E,IAAI,CAAC,yBAAyB,EAAE;YAC9B,OAAO,IAAI,CAAC;SACb;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,yBAAyB,CAAC;QAElD,MAAM,mBAAmB,GAAG,WAAW;aACpC,WAAW,EAAE;aACb,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAE7B,IAAI,mBAAmB,EAAE;YACvB,OAAO,mBAAmB,CAAC;SAC5B;QAED,MAAM,sBAAsB,GAAG,+BAAwB,CAAC,WAAW,EAAE,CAAC;QACtE,WAAW,CAAC,WAAW,EAAE,CAAC,sBAAsB,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAE5E,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAES,oBAAoB,CAC5B,iBAAoC,EACpC,QAAiB;QAEjB,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAE3E,IAAI,CAAC,yBAAyB,EAAE;YAC9B,OAAO;SACR;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,yBAAyB,CAAC;QAClD,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;QAGjD,cAAc,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QACvD,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAChE,CAAC;IAUO,MAAM,CACZ,QAAkB,EAClB,QAAiB,EACjB,cAAc,GAAG,KAAK;QAEtB,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAE3E,IAAI,CAAC,yBAAyB,EAAE;YAC9B,OAAO;SACR;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,yBAAyB,CAAC;QAClD,MAAM,aAAa,GAAG,yBAAyB,CAAC,QAAQ,CAAC;QAEzD,IAAI,aAAa,GAAG,QAAQ,CAAC;QAC7B,IAAI,OAAO,aAAa,KAAK,WAAW,EAAE;YACxC,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC/D,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,aAAa,GAAG,WAAW,CAAC;SAC7B;QAED,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAI7D,IAAI,cAAc,KAAK,0BAAkB,CAAC,eAAe,EAAE;YACzD,MAAM,IAAI,GAAG,IAAA,4CAAgC,EAAC,aAAa,CAAC,CAAC;YAC7D,WAAW,CAAC,WAAW,EAAE,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SAC3D;aAAM;YAQL,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC;YACvC,WAAW;iBACR,WAAW,EAAE;iBACb,sBAAsB,CAAC,CAAC,CAAC;iBACzB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAC3B;QAED,IAAI,CAAC,cAAc,EAAE;YACnB,MAAM,WAAW,qBACZ,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CACjD,CAAC;YAEF,IAAA,wBAAY,EAAC,IAAI,CAAC,OAAO,EAAE,cAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;SAC9D;QAED,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,aAAa,CAAC;IACnD,CAAC;IA+CO,YAAY,CAAC,QAAgB;QACnC,MAAM,eAAe,GAAG,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEtD,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;IACnD,CAAC;IAOM,oBAAoB,CACzB,kBAA4C,EAC5C,QAAiB;QAEjB,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,IAAI,CAAC,uBAAuB,GAAG,kBAAkB,CAAC;SACnD;aAAM;YACL,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;SACrE;IACH,CAAC;IAOM,sBAAsB,CAAC,QAAiB;QAC7C,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;YAClC,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;aAAM;YACL,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;SACzC;IACH,CAAC;IAMM,gBAAgB,CACrB,mBAA2C,EAAE;QAE7C,MAAM,MAAM,GAAG,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QACxD,IAAI,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,mBAAmB,MAAK,KAAK,EAAE;YACnD,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;SACtD;QAGD,uCACK,MAAM,KACT,UAAU,EAAE,IAAI,CAAC,sBAAsB,EAAE,IACzC;IACJ,CAAC;IASM,mBAAmB,CACxB,OAAsB,EACtB,OAAoC;QAEpC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;YAChD,OAAO,KAAK,CAAC;SACd;QACD,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,EAAE;YAC3B,OAAO,IAAI,CAAC;SACb;QACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACxD,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC7B,OAAO,CACL,UAAU,CAAC,CAAC,CAAC,IAAI,iBAAiB,IAAI,iBAAiB,IAAI,UAAU,CAAC,CAAC,CAAC,CACzE,CAAC;SACH;QACD,OAAO,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,iBAAiB,CAAC;IACtE,CAAC;IAgBM,aAAa,CAClB,EACE,QAAQ,EACR,cAAc,EACd,MAAM,EACN,QAAQ,EACR,MAAM,EACN,iBAAiB,EACjB,aAAa,EACb,QAAQ,MACoB,EAAE,EAChC,QAAiB,EACjB,cAAc,GAAG,KAAK;QAGtB,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,EAAE;YACxC,IAAI,CAAC,oBAAoB,CAAC;gBACxB,QAAQ;gBACR,cAAc;gBACd,MAAM;gBACN,QAAQ;gBACR,MAAM;gBACN,aAAa;gBACb,QAAQ;aACT,CAAC,CAAC;SACJ;QAKD,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;SACtD;QACD,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,KAAI,IAAI,EAAE;YAC7B,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;SACrC;QAED,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;SACjD;QAED,IAAI,OAAO,iBAAiB,KAAK,WAAW,EAAE;YAC5C,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;SAC9C;QAED,IAAI,cAAc,KAAK,SAAS,EAAE;YAChC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;SAClE;QAED,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,KAAK,MAAM,EAAE;YACrE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;SAClD;QAED,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;SAClD;QAED,IAAI,aAAa,KAAK,SAAS,EAAE;YAC/B,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YAErC,IAAI,CAAC,kBAAkB,CAAC,aAAa,GAAG,aAAa,CAAC;SACvD;QAED,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SAC5B;IACH,CAAC;IAKM,wBAAwB,CAAC,QAAgB;;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC;QAEhD,IAAI,MAAA,UAAU,CAAC,QAAQ,0CAAE,IAAI,EAAE;YAC7B,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;SACjD;QACD,IAAI,CAAA,MAAA,UAAU,CAAC,QAAQ,0CAAE,OAAO,KAAI,IAAI,EAAE;YACxC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;SAChD;QAED,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE;YACrC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;SAC5C;QAED,IAAI,UAAU,CAAC,cAAc,KAAK,SAAS,EAAE;YAC3C,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;SAC7D;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE;YACnC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;SAC7C;QAED,IAAI,UAAU,CAAC,aAAa,KAAK,SAAS,EAAE;YAC1C,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAEhD,IAAI,CAAC,kBAAkB,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;SAClE;QAED,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE;YACrC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SACvC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAWO,SAAS,CAAC,eAAe,EAAE,QAAQ,EAAE,cAAc;QACzD,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAE3E,IAAI,CAAC,yBAAyB,EAAE;YAC9B,OAAO;SACR;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,yBAAyB,CAAC;QAElD,IAAI,MAAM,GAAG,eAAe,CAAC;QAE7B,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,MAAM,GAAG,4BAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACxC,OAAO,MAAM,CAAC,IAAI,KAAK,eAAe,CAAC;YACzC,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QAED,IAAA,uBAAW,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAEjC,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,MAAM,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,CAAC,cAAc,EAAE;YACnB,IAAA,wBAAY,EAAC,IAAI,CAAC,OAAO,EAAE,cAAM,CAAC,eAAe,EAAE;gBACjD,UAAU,EAAE,IAAI,CAAC,EAAE;gBACnB,QAAQ,EAAE,yBAAyB,CAAC,QAAQ;gBAC5C,KAAK,EAAE,WAAW;gBAClB,UAAU,EAAE,MAAM,CAAC,IAAI;aACxB,CAAC,CAAC;SACJ;IACH,CAAC;IA8HY,UAAU,CACrB,gBAAqC,EACrC,SAAS,GAAG,KAAK,EACjB,cAAc,GAAG,KAAK;;YAEtB,MAAM,gBAAgB,GAAG,eAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAEvE,IAAI,CAAC,gBAAgB,EAAE;gBACrB,MAAM,IAAI,KAAK,CACb,wBAAwB,gBAAgB,CAAC,QAAQ,iBAAiB,CACnE,CAAC;aACH;YAED,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YAE1E,MAAM,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;YAE3E,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;YAEhD,MAAM,YAAY,GAAG,EAAE,CAAC;YAGxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAElE,MAAM,KAAK,GAAG,MAAM,IAAA,2BAAiB,EACnC,gBAAgB,CAAC,CAAC,CAAC,EACnB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,EAAE,EACP,cAAc,EACd,IAAI,CAAC,iBAAiB,CACvB,CAAC;gBAOF,MAAM,GAAG,GAAG,QAAQ,IAAI,QAAQ,CAAC;gBACjC,YAAY,CAAC,IAAI,CAAC;oBAChB,GAAG;oBACH,KAAK;oBACL,aAAa;oBACb,WAAW,EAAE,QAAQ;iBACtB,CAAC,CAAC;aACJ;YAED,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACpC,IAAI,CAAC,cAAc,GAAG,sBAAc,CAAC,UAAU,CAAC;YAEhD,IAAI,CAAC,+BAA+B,CAAC,gBAAgB,CAAC,CAAC;YAEvD,IAAA,wBAAY,EAAC,IAAI,CAAC,OAAO,EAAE,cAAM,CAAC,0BAA0B,EAAE;gBAC5D,UAAU,EAAE,IAAI,CAAC,EAAE;gBACnB,YAAY;aACb,CAAC,CAAC;YAEH,IAAI,SAAS,EAAE;gBACb,IAAI,CAAC,MAAM,EAAE,CAAC;aACf;QACH,CAAC;KAAA;IASY,UAAU,CACrB,gBAAqC,EACrC,SAAS,GAAG,KAAK,EACjB,cAAc,GAAG,KAAK;;YAEtB,MAAM,gBAAgB,GAAG,eAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAEvE,IAAI,CAAC,gBAAgB,EAAE;gBACrB,MAAM,IAAI,KAAK,CACb,wBAAwB,gBAAgB,CAAC,QAAQ,iBAAiB,CACnE,CAAC;aACH;YACD,MAAM,YAAY,GAAG,EAAE,CAAC;YAExB,MAAM,IAAI,CAAC,wBAAwB,CACjC,gBAAgB,EAChB,IAAI,CAAC,oBAAoB,CAC1B,CAAC;YAGF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAChD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,GACrD,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAEtB,MAAM,KAAK,GAAG,MAAM,IAAA,2BAAiB,EACnC,gBAAgB,CAAC,CAAC,CAAC,EACnB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,EAAE,EACP,cAAc,EACd,IAAI,CAAC,iBAAiB,CACvB,CAAC;gBAEF,IAAI,UAAU,KAAK,KAAK,EAAE;oBACxB,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBAC5B;gBAOD,MAAM,GAAG,GAAG,QAAQ,IAAI,QAAQ,CAAC;gBACjC,YAAY,CAAC,IAAI,CAAC;oBAChB,GAAG;oBACH,KAAK;oBACL,aAAa;oBAMb,WAAW,EAAE,QAAQ;iBACtB,CAAC,CAAC;aACJ;YAED,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAE7B,IAAI,CAAC,+BAA+B,CAAC,gBAAgB,CAAC,CAAC;YAEvD,IAAI,SAAS,EAAE;gBAEb,IAAI,CAAC,MAAM,EAAE,CAAC;aACf;QACH,CAAC;KAAA;IAUM,kBAAkB,CAAC,SAAwB,EAAE,SAAS,GAAG,KAAK;QAEnE,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAE7B,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;IACH,CAAC;IAWM,cAAc,CAAC,WAA4B,EAAE,SAAS,GAAG,IAAI;QAClE,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC/D,CAAC;IASO,+BAA+B,CAAC,gBAAgB;QACtD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtD,MAAM,qBAAqB,GACzB,IAAI,CAAC,iCAAiC,CAAC,gBAAgB,CAAC,CAAC;QAE3D,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACtC,IAAI,CAAC,4BAA4B,GAAG,IAAA,gDAAwB,EAC1D,qBAAqB,CACtB,CAAC;SACH;IACH,CAAC;IAEO,yBAAyB,CAAC,QAAiB;;QACjD,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACtD,OAAO;SACR;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEtC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACxB,OAAO;SACR;QAED,IAAI,WAAW,CAAC;QAEhB,IAAI,QAAQ,EAAE;YACZ,WAAW,GAAG,MAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,0CAAE,KAAkB,CAAC;SAC3D;QAGD,IAAI,CAAC,WAAW,EAAE;YAChB,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,KAAkB,CAAC;YACjD,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;SAChC;QAED,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IACnC,CAAC;IAEa,wBAAwB,CACpC,gBAAqC,EACrC,mBAA2B;;YAE3B,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC;YAG3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;gBACnC,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAExC,MAAM,WAAW,GAAG,MAAM,IAAA,yBAAU,EAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAE3D,IAAI,CAAC,WAAW,EAAE;oBAChB,MAAM,IAAI,KAAK,CACb,wBAAwB,WAAW,CAAC,QAAQ,iBAAiB,CAC9D,CAAC;iBACH;gBAED,IAAI,mBAAmB,KAAK,WAAW,CAAC,QAAQ,CAAC,mBAAmB,EAAE;oBACpE,MAAM,IAAI,KAAK,CACb,mCAAmC,IAAI,CAAC,EAAE,uEAAuE,CAClH,CAAC;iBACH;aACF;YAED,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAuDM,SAAS;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,wBAAwB,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC;IAChB,CAAC;IAMM,IAAI,CAAC,aAA4B;QACtC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5B,CAAC;IAWM,WAAW,CAAC,QAAgB;QAGjC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;YACtC,OAAO,UAAU,CAAC,GAAG,KAAK,QAAQ,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAaM,YAAY,CAAC,QAAiB;;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO;SACR;QAED,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,YAAY,CAAC;QAC9C,QAAQ,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,eAAe,CAAC;QAEvC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE3C,IAAI,CAAC,IAAA,oBAAQ,EAAC,UAAU,EAAE,WAAW,CAAC,EAAE;YACtC,OAAO;SACR;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC/B,MAAM,MAAM,GAAG,eAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEzC,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC;QACtD,OAAO;YACL,UAAU,EAAE,YAAY,CAAC,aAAa,EAAE;YACxC,OAAO,EAAE,YAAY,CAAC,UAAU,EAAE;YAClC,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE;YAChC,SAAS,EAAE,YAAY,CAAC,YAAY,EAAE;YACtC,UAAU,EAAE,YAAY,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE;gBAC9D,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE;YACtD,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE;YAC3C,QAAQ,EAAE;gBACR,QAAQ,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,0CAAE,QAAQ;aACrC;YACD,OAAO,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO;YACxB,eAAe,EAAE,IAAI;SACtB,CAAC;IACJ,CAAC;IAQO,gBAAgB,CAAC,kBAAqC;QAG5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClD,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,KAAK,CAAC;SACxC;QACD,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACrC,CAAC;IAkKS,sBAAsB,CAC9B,WAAiD;QAEjD,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;YACnC,IAAI,WAAW,CAAC,eAAe,IAAI,WAAW,CAAC,MAAM,EAAE;gBACrD,OAAO,WAAW,CAAC;aACpB;iBAAM;gBACL,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;aACH;SACF;aAAM,IACL,OAAO,WAAW,KAAK,QAAQ;YAC/B,6BAAiB,CAAC,WAAW,CAAC,EAC9B;YACA,IAAI,CAAC,kBAAkB,CAAC,WAAW,GAAG,WAAW,CAAC;YAClD,OAAO,6BAAiB,CAAC,WAAW,CAAC,CAAC;SACvC;aAAM;YACL,MAAM,IAAI,KAAK,CACb,wBAAwB,WAAW,6BAA6B,MAAM,CAAC,IAAI,CACzE,6BAAiB,CAClB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACf,CAAC;SACH;IACH,CAAC;IAMM,gBAAgB;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,aAAa,GAAG,8BAAkB,CAAC,sBAAsB,CAAC;QAC9D,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,KAAK,CAAC,aAAa,GAAG,aAAa,EAAE;gBACvC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;aACrC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,aAAa,CAAC;IACvB,CAAC;IAOM,qBAAqB,CAAC,KAAa;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,IAAI,CAAC,IAAA,oBAAQ,EAAC,UAAU,EAAE,WAAW,CAAC,EAAE;YACtC,OAAO;SACR;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC;QAEnD,MAAM,MAAM,GAAG,eAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAE9B,MAAM,KAAK,GAAG,IAAA,+BAAqB,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAEtD,MAAM,UAAU,GACd,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;YACxC,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;YACxB,KAAK,CAAC,CAAC,CAAC,CAAC;QAEX,OAAO,MAAM,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IA8BS,WAAW,CAAC,SAAiC;;QACrD,IAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,CAAA,EAAE;YACxB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,EAAE;gBACjB,OAAO;aACR;YAED,OAAO,MAAA,YAAY,CAAC,IAAI,CACtB,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,WAAW,CAChE,0CAAE,GAAG,CAAC;SACR;QACD,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAEM,cAAc,CAAC,YAAoC,EAAE;;QAC1D,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;QACrD,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,EAAE;gBACjB,OAAO;aACR;YAED,QAAQ,GAAG,MAAA,YAAY,CAAC,IAAI,CAC1B,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,WAAW,CAChE,0CAAE,GAAG,CAAC;SACR;QAED,UAAU,aAAV,UAAU,cAAV,UAAU,IAAV,UAAU,GAAK,IAAI,CAAC,sBAAsB,EAAE,EAAC;QAC7C,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACzD,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9D,OAAO,YAAY,QAAQ,GAAG,cAAc,cAAc,UAAU,oBAAoB,eAAe,CAAC,IAAI,CAC1G,GAAG,CACJ,eAAe,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACzC,CAAC;CAgBF;AAED,kBAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"BaseVolumeViewport.js","sourceRoot":"","sources":["../../../src/RenderingEngine/BaseVolumeViewport.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { vtkImageData as vtkImageDataType } from '@kitware/vtk.js/Common/DataModel/ImageData';
2
- import type { ActorEntry, CPUIImageData, ICamera, IImage, IImageData, IImagesLoader, IStackInput, IStackViewport, ImageLoadListener, Mat3, Point2, Point3, Scaling, StackViewportProperties, ViewReference, ViewPresentation } from '../types';
2
+ import type { ActorEntry, CPUIImageData, ICamera, IImage, IImageData, IImagesLoader, IStackInput, IStackViewport, ImageLoadListener, Mat3, Point2, Point3, Scaling, StackViewportProperties, ViewReference } from '../types';
3
3
  import { ViewReferenceSpecifier, ReferenceCompatibleOptions, ViewportInput } from '../types/IViewport';
4
4
  import Viewport from './Viewport';
5
5
  import { InterpolationType, RequestType, ViewportStatus } from '../enums';
@@ -78,7 +78,7 @@ declare class StackViewport extends Viewport implements IStackViewport, IImagesL
78
78
  private _resizeCPU;
79
79
  private getImageDataGPU;
80
80
  private getImageDataCPU;
81
- getFrameOfReferenceUID: () => string | undefined;
81
+ getFrameOfReferenceUID: (sliceIndex?: number) => string;
82
82
  getCornerstoneImage: () => IImage;
83
83
  private createActorMapper;
84
84
  getNumberOfSlices: () => number;
@@ -116,6 +116,7 @@ declare class StackViewport extends Viewport implements IStackViewport, IImagesL
116
116
  private _addScalingToViewport;
117
117
  private _getNumCompsFromPhotometricInterpretation;
118
118
  getImageDataMetadata(image: IImage): ImageDataMetaData;
119
+ getImagePlaneReferenceData(sliceIndex?: number): ViewReference;
119
120
  private _getCameraOrientation;
120
121
  createVTKImageData({ origin, direction, dimensions, spacing, numComps, pixelArray, }: {
121
122
  origin: any;
@@ -156,7 +157,7 @@ declare class StackViewport extends Viewport implements IStackViewport, IImagesL
156
157
  renderImageObject: (image: any) => void;
157
158
  private _setCSImage;
158
159
  private _updateToDisplayImageCPU;
159
- addImages(stackInputs: Array<IStackInput>): Promise<void>;
160
+ addImages(stackInputs: Array<IStackInput>): void;
160
161
  private _updateActorToDisplayImageId;
161
162
  private _getInitialVOIRange;
162
163
  private _getPTPreScaledRange;
@@ -179,10 +180,9 @@ declare class StackViewport extends Viewport implements IStackViewport, IImagesL
179
180
  private _getVOIRangeForCurrentImage;
180
181
  private _getValidVOILUTFunction;
181
182
  getCurrentImageIdIndex: () => number;
182
- getSliceIndex: () => number;
183
183
  isReferenceViewable(viewRef: ViewReference, options?: ReferenceCompatibleOptions): boolean;
184
184
  getViewReference(viewRefSpecifier?: ViewReferenceSpecifier): ViewReference;
185
- setView(viewRef?: ViewReference, viewPres?: ViewPresentation): void;
185
+ setViewReference(viewRef: ViewReference): void;
186
186
  getReferenceId(specifier?: ViewReferenceSpecifier): string;
187
187
  getTargetImageIdIndex: () => number;
188
188
  getImageIds: () => Array<string>;
@@ -93,20 +93,8 @@ class StackViewport extends Viewport_1.default {
93
93
  (0, resize_1.default)(this._cpuFallbackEnabledElement);
94
94
  }
95
95
  };
96
- this.getFrameOfReferenceUID = () => {
97
- const imageId = this.getCurrentImageId();
98
- if (!imageId) {
99
- return;
100
- }
101
- const imagePlaneModule = metaData.get('imagePlaneModule', imageId);
102
- if (!imagePlaneModule) {
103
- return;
104
- }
105
- return imagePlaneModule.frameOfReferenceUID;
106
- };
107
- this.getCornerstoneImage = () => {
108
- return this.csImage;
109
- };
96
+ this.getFrameOfReferenceUID = (sliceIndex) => { var _a; return (_a = this.getImagePlaneReferenceData(sliceIndex)) === null || _a === void 0 ? void 0 : _a.FrameOfReferenceUID; };
97
+ this.getCornerstoneImage = () => this.csImage;
110
98
  this.createActorMapper = (imageData) => {
111
99
  const mapper = ImageMapper_1.default.newInstance();
112
100
  mapper.setInputData(imageData);
@@ -267,9 +255,6 @@ class StackViewport extends Viewport_1.default {
267
255
  this.getCurrentImageIdIndex = () => {
268
256
  return this.currentImageIdIndex;
269
257
  };
270
- this.getSliceIndex = () => {
271
- return this.currentImageIdIndex;
272
- };
273
258
  this.getTargetImageIdIndex = () => {
274
259
  return this.targetImageIdIndex;
275
260
  };
@@ -1075,6 +1060,25 @@ class StackViewport extends Viewport_1.default {
1075
1060
  imagePixelModule,
1076
1061
  };
1077
1062
  }
1063
+ getImagePlaneReferenceData(sliceIndex = this.getCurrentImageIdIndex()) {
1064
+ const imageId = this.imageIds[sliceIndex];
1065
+ if (!imageId) {
1066
+ return;
1067
+ }
1068
+ const imagePlaneModule = metaData.get(enums_1.MetadataModules.IMAGE_PLANE, imageId);
1069
+ const { imagePositionPatient, frameOfReferenceUID: FrameOfReferenceUID } = imagePlaneModule;
1070
+ let { rowCosines, columnCosines } = imagePlaneModule;
1071
+ rowCosines || (rowCosines = [1, 0, 0]);
1072
+ columnCosines || (columnCosines = [0, 1, 0]);
1073
+ const viewPlaneNormal = (gl_matrix_1.vec3.cross([0, 0, 0], columnCosines, rowCosines));
1074
+ return {
1075
+ FrameOfReferenceUID,
1076
+ viewPlaneNormal,
1077
+ cameraFocalPoint: imagePositionPatient,
1078
+ referencedImageId: imageId,
1079
+ sliceIndex,
1080
+ };
1081
+ }
1078
1082
  _getCameraOrientation(imageDataDirection) {
1079
1083
  const viewPlaneNormal = imageDataDirection.slice(6, 9).map((x) => -x);
1080
1084
  const viewUp = imageDataDirection.slice(3, 6).map((x) => -x);
@@ -1391,29 +1395,27 @@ class StackViewport extends Viewport_1.default {
1391
1395
  this._cpuFallbackEnabledElement.transform = (0, calculateTransform_1.default)(this._cpuFallbackEnabledElement);
1392
1396
  }
1393
1397
  addImages(stackInputs) {
1394
- return __awaiter(this, void 0, void 0, function* () {
1395
- const actors = this.getActors();
1396
- stackInputs.forEach((stackInput) => {
1397
- const image = cache_1.default.getImage(stackInput.imageId);
1398
- const { origin, dimensions, direction, spacing, numComps } = this.getImageDataMetadata(image);
1399
- const imagedata = this.createVTKImageData({
1400
- origin,
1401
- dimensions,
1402
- direction,
1403
- spacing,
1404
- numComps,
1405
- pixelArray: image.getPixelData(),
1406
- });
1407
- const imageActor = this.createActorMapper(imagedata);
1408
- if (imageActor) {
1409
- actors.push({ uid: stackInput.actorUID, actor: imageActor });
1410
- if (stackInput.callback) {
1411
- stackInput.callback({ imageActor, imageId: stackInput.imageId });
1412
- }
1413
- }
1398
+ const actors = this.getActors();
1399
+ stackInputs.forEach((stackInput) => {
1400
+ const image = cache_1.default.getImage(stackInput.imageId);
1401
+ const { origin, dimensions, direction, spacing, numComps } = this.getImageDataMetadata(image);
1402
+ const imagedata = this.createVTKImageData({
1403
+ origin,
1404
+ dimensions,
1405
+ direction,
1406
+ spacing,
1407
+ numComps,
1408
+ pixelArray: image.getPixelData(),
1414
1409
  });
1415
- this.setActors(actors);
1410
+ const imageActor = this.createActorMapper(imagedata);
1411
+ if (imageActor) {
1412
+ actors.push({ uid: stackInput.actorUID, actor: imageActor });
1413
+ if (stackInput.callback) {
1414
+ stackInput.callback({ imageActor, imageId: stackInput.imageId });
1415
+ }
1416
+ }
1416
1417
  });
1418
+ this.setActors(actors);
1417
1419
  }
1418
1420
  _updateActorToDisplayImageId(image) {
1419
1421
  const sameImageData = this._checkVTKImageDataMatchesCornerstoneImage(image, this._imageData);
@@ -1682,20 +1684,39 @@ class StackViewport extends Viewport_1.default {
1682
1684
  return referencedImageId === null || referencedImageId === void 0 ? void 0 : referencedImageId.endsWith(imageURI);
1683
1685
  }
1684
1686
  getViewReference(viewRefSpecifier = {}) {
1685
- const { sliceIndex: sliceIndex = this.currentImageIdIndex } = viewRefSpecifier;
1686
- return Object.assign(Object.assign({}, super.getViewReference(viewRefSpecifier)), { referencedImageId: `${this.imageIds[sliceIndex]}`, sliceIndex: sliceIndex });
1687
- }
1688
- setView(viewRef, viewPres) {
1689
- const camera = this.getCamera();
1690
- super.setView(viewRef, viewPres);
1691
- if (viewRef) {
1692
- const { viewPlaneNormal, sliceIndex } = viewRef;
1693
- if (viewPlaneNormal &&
1694
- !(0, utilities_1.isEqual)(viewPlaneNormal, camera.viewPlaneNormal)) {
1687
+ const { sliceIndex = this.getCurrentImageIdIndex() } = viewRefSpecifier;
1688
+ const reference = super.getViewReference(viewRefSpecifier);
1689
+ const referencedImageId = this.imageIds[sliceIndex];
1690
+ if (!referencedImageId) {
1691
+ return;
1692
+ }
1693
+ reference.referencedImageId = referencedImageId;
1694
+ if (this.getCurrentImageIdIndex() !== sliceIndex) {
1695
+ const referenceData = this.getImagePlaneReferenceData(sliceIndex);
1696
+ if (!referenceData) {
1695
1697
  return;
1696
1698
  }
1697
- if (sliceIndex || sliceIndex === 0) {
1698
- this.setImageIdIndex(sliceIndex);
1699
+ Object.assign(reference, referenceData);
1700
+ }
1701
+ return reference;
1702
+ }
1703
+ setViewReference(viewRef) {
1704
+ if (!viewRef) {
1705
+ return;
1706
+ }
1707
+ const { referencedImageId, sliceIndex, volumeId } = viewRef;
1708
+ if (typeof sliceIndex === 'number' &&
1709
+ referencedImageId &&
1710
+ referencedImageId === this.imageIds[sliceIndex]) {
1711
+ this.setImageIdIndex(sliceIndex);
1712
+ }
1713
+ else {
1714
+ const foundIndex = this.imageIds.indexOf(referencedImageId);
1715
+ if (foundIndex !== -1) {
1716
+ this.setImageIdIndex(foundIndex);
1717
+ }
1718
+ else {
1719
+ throw new Error('Unsupported - referenced image id not found');
1699
1720
  }
1700
1721
  }
1701
1722
  }