copper3d 3.4.3 → 3.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Utils/segmentation/RenderingUtils.d.ts +17 -0
- package/dist/Utils/segmentation/RenderingUtils.js +40 -7
- package/dist/Utils/segmentation/RenderingUtils.js.map +1 -1
- package/dist/Utils/segmentation/core/MarchingSquares.d.ts +9 -1
- package/dist/Utils/segmentation/core/MarchingSquares.js +42 -1
- package/dist/Utils/segmentation/core/MarchingSquares.js.map +1 -1
- package/dist/Utils/segmentation/core/MaskVolume.d.ts +18 -0
- package/dist/Utils/segmentation/core/MaskVolume.js +27 -0
- package/dist/Utils/segmentation/core/MaskVolume.js.map +1 -1
- package/dist/Utils/segmentation/tools/ZoomTool.js +48 -23
- package/dist/Utils/segmentation/tools/ZoomTool.js.map +1 -1
- package/dist/bundle.esm.js +158 -32
- package/dist/bundle.umd.js +158 -32
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/types/Utils/segmentation/RenderingUtils.d.ts +17 -0
- package/dist/types/Utils/segmentation/core/MarchingSquares.d.ts +9 -1
- package/dist/types/Utils/segmentation/core/MaskVolume.d.ts +18 -0
- package/dist/types/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -18,6 +18,23 @@ export declare class RenderingUtils {
|
|
|
18
18
|
private _reusableSliceBuffer;
|
|
19
19
|
private _reusableBufferWidth;
|
|
20
20
|
private _reusableBufferHeight;
|
|
21
|
+
/**
|
|
22
|
+
* Per-layer contour cache.
|
|
23
|
+
*
|
|
24
|
+
* Caches the *expensive* part of slice rendering — `getSliceUint8` +
|
|
25
|
+
* `findLabelsInSlice` + `extractLabelContours` (Path2D build) — keyed by
|
|
26
|
+
* `${axis}:${sliceIndex}:${volume.version}`. The contours live in voxel
|
|
27
|
+
* coordinates; zoom only changes the `ctx.scale` transform, so on zoom /
|
|
28
|
+
* recomposite we reuse the cached Path2D and just re-fill, skipping
|
|
29
|
+
* marching-squares entirely. A volume edit bumps its version → cache miss
|
|
30
|
+
* → recompute (correct, automatic). Colors and channel visibility are
|
|
31
|
+
* applied at fill time and intentionally *not* cached, so toggling them
|
|
32
|
+
* needs no recompute.
|
|
33
|
+
*
|
|
34
|
+
* One entry per layer (the current slice). Switching slice/axis or
|
|
35
|
+
* editing overwrites it.
|
|
36
|
+
*/
|
|
37
|
+
private _contourCache;
|
|
21
38
|
constructor(state: CanvasState);
|
|
22
39
|
/**
|
|
23
40
|
* Get MaskVolume for a specific layer
|
|
@@ -17,6 +17,23 @@ export class RenderingUtils {
|
|
|
17
17
|
this._reusableSliceBuffer = null;
|
|
18
18
|
this._reusableBufferWidth = 0;
|
|
19
19
|
this._reusableBufferHeight = 0;
|
|
20
|
+
/**
|
|
21
|
+
* Per-layer contour cache.
|
|
22
|
+
*
|
|
23
|
+
* Caches the *expensive* part of slice rendering — `getSliceUint8` +
|
|
24
|
+
* `findLabelsInSlice` + `extractLabelContours` (Path2D build) — keyed by
|
|
25
|
+
* `${axis}:${sliceIndex}:${volume.version}`. The contours live in voxel
|
|
26
|
+
* coordinates; zoom only changes the `ctx.scale` transform, so on zoom /
|
|
27
|
+
* recomposite we reuse the cached Path2D and just re-fill, skipping
|
|
28
|
+
* marching-squares entirely. A volume edit bumps its version → cache miss
|
|
29
|
+
* → recompute (correct, automatic). Colors and channel visibility are
|
|
30
|
+
* applied at fill time and intentionally *not* cached, so toggling them
|
|
31
|
+
* needs no recompute.
|
|
32
|
+
*
|
|
33
|
+
* One entry per layer (the current slice). Switching slice/axis or
|
|
34
|
+
* editing overwrites it.
|
|
35
|
+
*/
|
|
36
|
+
this._contourCache = new Map();
|
|
20
37
|
this.state = state;
|
|
21
38
|
}
|
|
22
39
|
// ── Volume Accessor Helpers ──────────────────────────────────────
|
|
@@ -115,14 +132,27 @@ export class RenderingUtils {
|
|
|
115
132
|
const volume = this.getVolumeForLayer(layer);
|
|
116
133
|
if (!volume)
|
|
117
134
|
return;
|
|
118
|
-
const channelVis = this.state.gui_states.layerChannel.channelVisibility[layer];
|
|
119
|
-
const slice = volume.getSliceUint8(sliceIndex, axis);
|
|
120
|
-
const W = slice.width;
|
|
121
|
-
const H = slice.height;
|
|
122
135
|
const stride = volume.getChannels();
|
|
123
|
-
const
|
|
124
|
-
|
|
136
|
+
const cacheKey = `${axis}:${sliceIndex}:${volume.getVersion()}`;
|
|
137
|
+
// Cache miss → run the expensive extraction once. Hits (zoom,
|
|
138
|
+
// recomposite, contrast toggle) skip straight to the fill below.
|
|
139
|
+
let entry = this._contourCache.get(layer);
|
|
140
|
+
if (!entry || entry.key !== cacheKey) {
|
|
141
|
+
const slice = volume.getSliceUint8(sliceIndex, axis);
|
|
142
|
+
const W = slice.width;
|
|
143
|
+
const H = slice.height;
|
|
144
|
+
const labels = findLabelsInSlice(slice.data, W, H, stride, 0);
|
|
145
|
+
const paths = new Map();
|
|
146
|
+
for (const lbl of labels) {
|
|
147
|
+
paths.set(lbl, extractLabelContours(slice.data, W, H, lbl, stride, 0));
|
|
148
|
+
}
|
|
149
|
+
entry = { key: cacheKey, W, H, labels, paths };
|
|
150
|
+
this._contourCache.set(layer, entry);
|
|
151
|
+
}
|
|
152
|
+
if (entry.labels.length === 0)
|
|
125
153
|
return;
|
|
154
|
+
const { W, H, labels, paths } = entry;
|
|
155
|
+
const channelVis = this.state.gui_states.layerChannel.channelVisibility[layer];
|
|
126
156
|
targetCtx.save();
|
|
127
157
|
// Vector fill — imageSmoothingEnabled is irrelevant here, but keep
|
|
128
158
|
// it off to match the rest of the pipeline.
|
|
@@ -139,8 +169,10 @@ export class RenderingUtils {
|
|
|
139
169
|
for (const lbl of labels) {
|
|
140
170
|
if (channelVis && channelVis[lbl] === false)
|
|
141
171
|
continue;
|
|
172
|
+
const path = paths.get(lbl);
|
|
173
|
+
if (!path)
|
|
174
|
+
continue;
|
|
142
175
|
const color = volume.getChannelColor(lbl);
|
|
143
|
-
const path = extractLabelContours(slice.data, W, H, lbl, stride, 0);
|
|
144
176
|
targetCtx.fillStyle =
|
|
145
177
|
`rgba(${color.r}, ${color.g}, ${color.b}, ${color.a / 255})`;
|
|
146
178
|
targetCtx.fill(path, 'nonzero');
|
|
@@ -158,6 +190,7 @@ export class RenderingUtils {
|
|
|
158
190
|
this._reusableSliceBuffer = null;
|
|
159
191
|
this._reusableBufferWidth = 0;
|
|
160
192
|
this._reusableBufferHeight = 0;
|
|
193
|
+
this._contourCache.clear();
|
|
161
194
|
}
|
|
162
195
|
/**
|
|
163
196
|
* Apply the same flip transform used by flipDisplayImageByAxis() to any
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderingUtils.js","sourceRoot":"","sources":["../../../src/Utils/segmentation/RenderingUtils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEjF;;;;;;;;;GASG;AACH,MAAM,OAAO,cAAc;
|
|
1
|
+
{"version":3,"file":"RenderingUtils.js","sourceRoot":"","sources":["../../../src/Utils/segmentation/RenderingUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,10 +35,18 @@ export interface ContourBBox {
|
|
|
35
35
|
/** A single polygon's vertices in voxel-space coordinates. */
|
|
36
36
|
export type ContourPolygon = ReadonlyArray<readonly [number, number]>;
|
|
37
37
|
/**
|
|
38
|
-
* Emit
|
|
38
|
+
* Emit polygons covering the voxels where `labels === targetLabel`.
|
|
39
39
|
* Pure geometry function — no Canvas dependency. Consumers can build a Path2D
|
|
40
40
|
* (see {@link extractLabelContours}) or walk the vertex arrays directly
|
|
41
41
|
* (tests, export, stroke rendering).
|
|
42
|
+
*
|
|
43
|
+
* Boundary cells (marching-squares cases 1–14) emit their cut polygon as
|
|
44
|
+
* usual. Solid interior (case 15) is **coalesced into horizontal run-length
|
|
45
|
+
* rectangles** instead of one unit square per cell, collapsing the subpath
|
|
46
|
+
* count from O(area) to ≈ O(perimeter + rows). The filled region is
|
|
47
|
+
* pixel-identical (contiguous full-cell squares tile exactly into a rectangle
|
|
48
|
+
* with the same TL→TR→BR→BL winding), which is what keeps slice-scrubbing
|
|
49
|
+
* fast on large masks without changing the rendered silhouette.
|
|
42
50
|
*/
|
|
43
51
|
export declare function extractLabelPolygons(labels: Uint8Array, width: number, height: number, targetLabel: number, stride?: number, channelOffset?: number, bbox?: ContourBBox): ContourPolygon[];
|
|
44
52
|
/**
|
|
@@ -60,10 +60,18 @@ const CELL_POLYGONS = [
|
|
|
60
60
|
/* 15 (full) */ [[[0, 0], [1, 0], [1, 1], [0, 1]]],
|
|
61
61
|
];
|
|
62
62
|
/**
|
|
63
|
-
* Emit
|
|
63
|
+
* Emit polygons covering the voxels where `labels === targetLabel`.
|
|
64
64
|
* Pure geometry function — no Canvas dependency. Consumers can build a Path2D
|
|
65
65
|
* (see {@link extractLabelContours}) or walk the vertex arrays directly
|
|
66
66
|
* (tests, export, stroke rendering).
|
|
67
|
+
*
|
|
68
|
+
* Boundary cells (marching-squares cases 1–14) emit their cut polygon as
|
|
69
|
+
* usual. Solid interior (case 15) is **coalesced into horizontal run-length
|
|
70
|
+
* rectangles** instead of one unit square per cell, collapsing the subpath
|
|
71
|
+
* count from O(area) to ≈ O(perimeter + rows). The filled region is
|
|
72
|
+
* pixel-identical (contiguous full-cell squares tile exactly into a rectangle
|
|
73
|
+
* with the same TL→TR→BR→BL winding), which is what keeps slice-scrubbing
|
|
74
|
+
* fast on large masks without changing the rendered silhouette.
|
|
67
75
|
*/
|
|
68
76
|
export function extractLabelPolygons(labels, width, height, targetLabel, stride = 1, channelOffset = 0, bbox) {
|
|
69
77
|
var _a, _b, _c, _d;
|
|
@@ -85,7 +93,25 @@ export function extractLabelPolygons(labels, width, height, targetLabel, stride
|
|
|
85
93
|
// map to voxel-square CENTERS in render space. Voxel (i, j) occupies
|
|
86
94
|
// render square [i, i+1] × [j, j+1]; its center is (i+0.5, j+0.5).
|
|
87
95
|
const SHIFT = 0.5;
|
|
96
|
+
// Emit a single rectangle covering a contiguous run of full (code 15)
|
|
97
|
+
// cells [runStart .. runEnd] on row j. A full cell i covers render square
|
|
98
|
+
// [i+0.5, i+1.5] × [j+0.5, j+1.5]; consecutive full cells tile perfectly,
|
|
99
|
+
// so the run is pixel-identical to the per-cell squares it replaces.
|
|
100
|
+
// Vertices use the same TL→TR→BR→BL (CCW screen-space) winding as the
|
|
101
|
+
// case-15 unit square, so the nonzero fill matches at shared edges.
|
|
102
|
+
const pushFullRun = (runStart, runEnd, j) => {
|
|
103
|
+
const x0 = runStart + SHIFT;
|
|
104
|
+
const x1 = runEnd + 1 + SHIFT;
|
|
105
|
+
const y0 = j + SHIFT;
|
|
106
|
+
const y1 = j + 1 + SHIFT;
|
|
107
|
+
out.push([[x0, y0], [x1, y0], [x1, y1], [x0, y1]]);
|
|
108
|
+
};
|
|
88
109
|
for (let j = j0; j < j1; j++) {
|
|
110
|
+
// Index where the current contiguous run of full (code 15) cells began,
|
|
111
|
+
// or -1 when no run is open. Coalescing the solid interior into row runs
|
|
112
|
+
// drops the per-cell square count from O(area) to O(rows + perimeter),
|
|
113
|
+
// which is what keeps fast slice-scrubbing smooth on large masks.
|
|
114
|
+
let runStart = -1;
|
|
89
115
|
for (let i = i0; i < i1; i++) {
|
|
90
116
|
const tl = sample(i, j);
|
|
91
117
|
const tr = sample(i + 1, j);
|
|
@@ -95,6 +121,17 @@ export function extractLabelPolygons(labels, width, height, targetLabel, stride
|
|
|
95
121
|
(tr ? 4 : 0) |
|
|
96
122
|
(br ? 2 : 0) |
|
|
97
123
|
(bl ? 1 : 0);
|
|
124
|
+
if (code === 15) {
|
|
125
|
+
// Extend (or open) the current full-cell run; defer emission.
|
|
126
|
+
if (runStart === -1)
|
|
127
|
+
runStart = i;
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
// Non-full cell ends any open run — flush it as one rectangle.
|
|
131
|
+
if (runStart !== -1) {
|
|
132
|
+
pushFullRun(runStart, i - 1, j);
|
|
133
|
+
runStart = -1;
|
|
134
|
+
}
|
|
98
135
|
if (code === 0)
|
|
99
136
|
continue;
|
|
100
137
|
const polygons = CELL_POLYGONS[code];
|
|
@@ -107,6 +144,10 @@ export function extractLabelPolygons(labels, width, height, targetLabel, stride
|
|
|
107
144
|
out.push(abs);
|
|
108
145
|
}
|
|
109
146
|
}
|
|
147
|
+
// Flush a run that reached the end of the row (last visited cell is i1-1).
|
|
148
|
+
if (runStart !== -1) {
|
|
149
|
+
pushFullRun(runStart, i1 - 1, j);
|
|
150
|
+
}
|
|
110
151
|
}
|
|
111
152
|
return out;
|
|
112
153
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarchingSquares.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/core/MarchingSquares.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"MarchingSquares.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/core/MarchingSquares.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,17 @@ export declare class MaskVolume {
|
|
|
45
45
|
private readonly bytesPerSlice;
|
|
46
46
|
/** Per-channel color map used for colored rendering modes. */
|
|
47
47
|
private colorMap;
|
|
48
|
+
/**
|
|
49
|
+
* Monotonic data-mutation counter.
|
|
50
|
+
*
|
|
51
|
+
* Incremented by every method that mutates voxel data (not color).
|
|
52
|
+
* Consumers (e.g. the contour cache in RenderingUtils) key cached
|
|
53
|
+
* derivations on this value so an edit automatically invalidates them —
|
|
54
|
+
* it is impossible to forget an invalidation point because every write
|
|
55
|
+
* bumps the version. Color-map changes do **not** bump it (colors are
|
|
56
|
+
* applied at fill time, never cached).
|
|
57
|
+
*/
|
|
58
|
+
private version;
|
|
48
59
|
/**
|
|
49
60
|
* Create a new MaskVolume.
|
|
50
61
|
*
|
|
@@ -105,6 +116,13 @@ export declare class MaskVolume {
|
|
|
105
116
|
* @throws {RangeError} If any coordinate is out of bounds.
|
|
106
117
|
*/
|
|
107
118
|
setVoxel(x: number, y: number, z: number, value: number, channel?: number): void;
|
|
119
|
+
/**
|
|
120
|
+
* Return the current data-mutation version.
|
|
121
|
+
*
|
|
122
|
+
* Increments on every voxel write. Use as a cache key so derived data
|
|
123
|
+
* (e.g. extracted contours) is invalidated whenever the volume changes.
|
|
124
|
+
*/
|
|
125
|
+
getVersion(): number;
|
|
108
126
|
/**
|
|
109
127
|
* Update the color for a specific label/channel in the color map.
|
|
110
128
|
*
|
|
@@ -47,6 +47,17 @@ export class MaskVolume {
|
|
|
47
47
|
* @throws {RangeError} If any dimension or the channel count is < 1.
|
|
48
48
|
*/
|
|
49
49
|
constructor(width, height, depth, channels = 1, customColorMap) {
|
|
50
|
+
/**
|
|
51
|
+
* Monotonic data-mutation counter.
|
|
52
|
+
*
|
|
53
|
+
* Incremented by every method that mutates voxel data (not color).
|
|
54
|
+
* Consumers (e.g. the contour cache in RenderingUtils) key cached
|
|
55
|
+
* derivations on this value so an edit automatically invalidates them —
|
|
56
|
+
* it is impossible to forget an invalidation point because every write
|
|
57
|
+
* bumps the version. Color-map changes do **not** bump it (colors are
|
|
58
|
+
* applied at fill time, never cached).
|
|
59
|
+
*/
|
|
60
|
+
this.version = 0;
|
|
50
61
|
if (width < 1 || height < 1 || depth < 1) {
|
|
51
62
|
throw new RangeError(`Dimensions must be ≥ 1, got (${width}, ${height}, ${depth})`);
|
|
52
63
|
}
|
|
@@ -136,6 +147,16 @@ export class MaskVolume {
|
|
|
136
147
|
*/
|
|
137
148
|
setVoxel(x, y, z, value, channel = 0) {
|
|
138
149
|
this.data[this.getIndex(x, y, z, channel)] = value;
|
|
150
|
+
this.version++;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Return the current data-mutation version.
|
|
154
|
+
*
|
|
155
|
+
* Increments on every voxel write. Use as a cache key so derived data
|
|
156
|
+
* (e.g. extracted contours) is invalidated whenever the volume changes.
|
|
157
|
+
*/
|
|
158
|
+
getVersion() {
|
|
159
|
+
return this.version;
|
|
139
160
|
}
|
|
140
161
|
// ── Color map management ──────────────────────────────────────────
|
|
141
162
|
/**
|
|
@@ -292,6 +313,7 @@ export class MaskVolume {
|
|
|
292
313
|
throw new Error(`ImageData size mismatch: expected ${expectedW}×${expectedH}, ` +
|
|
293
314
|
`got ${imageData.width}×${imageData.height}`);
|
|
294
315
|
}
|
|
316
|
+
this.version++;
|
|
295
317
|
const pixels = imageData.data;
|
|
296
318
|
const { width, height } = this.dims;
|
|
297
319
|
const ch = this.numChannels;
|
|
@@ -393,6 +415,7 @@ export class MaskVolume {
|
|
|
393
415
|
throw new Error(`ImageData size mismatch: expected ${expectedW}×${expectedH}, ` +
|
|
394
416
|
`got ${imageData.width}×${imageData.height}`);
|
|
395
417
|
}
|
|
418
|
+
this.version++;
|
|
396
419
|
// Build RGB→channel lookup map for O(1) reverse lookup
|
|
397
420
|
const rgbToChannel = this.buildRgbToChannelMap();
|
|
398
421
|
const pixels = imageData.data;
|
|
@@ -657,6 +680,7 @@ export class MaskVolume {
|
|
|
657
680
|
throw new Error(`Data length mismatch: expected ${this.data.length}, got ${newData.length}`);
|
|
658
681
|
}
|
|
659
682
|
this.data = newData;
|
|
683
|
+
this.version++;
|
|
660
684
|
}
|
|
661
685
|
/**
|
|
662
686
|
* Create an independent deep copy of this volume.
|
|
@@ -696,6 +720,7 @@ export class MaskVolume {
|
|
|
696
720
|
*/
|
|
697
721
|
clear() {
|
|
698
722
|
this.data.fill(0);
|
|
723
|
+
this.version++;
|
|
699
724
|
}
|
|
700
725
|
/**
|
|
701
726
|
* Check if the volume contains any non-zero voxel data.
|
|
@@ -748,6 +773,7 @@ export class MaskVolume {
|
|
|
748
773
|
*/
|
|
749
774
|
clearSlice(sliceIndex, axis = 'z', channel) {
|
|
750
775
|
this.validateSliceIndex(sliceIndex, axis);
|
|
776
|
+
this.version++;
|
|
751
777
|
const [sliceW, sliceH] = this.getSliceDimensions(axis);
|
|
752
778
|
const volData = this.data;
|
|
753
779
|
const nch = this.numChannels;
|
|
@@ -859,6 +885,7 @@ export class MaskVolume {
|
|
|
859
885
|
*/
|
|
860
886
|
setSliceUint8(sliceIndex, data, axis = 'z') {
|
|
861
887
|
this.validateSliceIndex(sliceIndex, axis);
|
|
888
|
+
this.version++;
|
|
862
889
|
const [sliceW, sliceH] = this.getSliceDimensions(axis);
|
|
863
890
|
const nch = this.numChannels;
|
|
864
891
|
const rowStride = this.dims.width * nch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MaskVolume.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/core/MaskVolume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAQH,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,OAAO,UAAU;IAqBrB,sEAAsE;IAEtE;;;;;;;;;;;;OAYG;IACH,YACE,KAAa,EACb,MAAc,EACd,KAAa,EACb,QAAQ,GAAG,CAAC,EACZ,cAAgC;QAEhC,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;YACxC,MAAM,IAAI,UAAU,CAClB,gCAAgC,KAAK,KAAK,MAAM,KAAK,KAAK,GAAG,CAC9D,CAAC;SACH;QACD,IAAI,QAAQ,GAAG,CAAC,EAAE;YAChB,MAAM,IAAI,UAAU,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;SAC/D;QAED,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;QAE/C,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,2BAA2B;QAEnE,yDAAyD;QACzD,IAAI,CAAC,QAAQ,GAAG,EAAqB,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;YAClD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,MAAM,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvD;QACD,IAAI,cAAc,EAAE;YAClB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;gBAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtB,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvD;SACF;IACH,CAAC;IAED,sEAAsE;IAEtE;;;;;;;;;;;;;;;;;;OAkBG;IACK,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,OAAO,GAAG,CAAC;QAC3D,IACE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;YAC7B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM;YAC9B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;YAC7B,OAAO,GAAG,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC,WAAW,EAC1C;YACA,MAAM,IAAI,UAAU,CAClB,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,OAAO,IAAI;gBACzD,eAAe,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,GAAG,CAC7F,CAAC;SACH;QAED,OAAO,CACL,CAAC,GAAG,IAAI,CAAC,aAAa;YACtB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW;YACtC,CAAC,GAAG,IAAI,CAAC,WAAW;YACpB,OAAO,CACR,CAAC;IACJ,CAAC;IAED,sEAAsE;IAEtE;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,OAAO,GAAG,CAAC;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,OAAO,GAAG,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;IACrD,CAAC;IAED,qEAAqE;IAErE;;;;;;;;;;OAUG;IACH,eAAe,CAAC,OAAe,EAAE,KAAgB;QAC/C,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE;YAC9B,MAAM,IAAI,UAAU,CAClB,0BAA0B,OAAO,qBAAqB,CACvD,CAAC;SACH;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;IAC9E,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAC,OAAe;;QAC7B,MAAM,CAAC,GAAG,MAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mCAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,OAAgB;QACjC,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,MAAM,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC;gBAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpE;aAAM;YACL,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;gBAClD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtB,MAAM,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvD;SACF;IACH,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,MAAM,IAAI,GAAoB,EAAE,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qEAAqE;IAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,iBAAiB,CACf,UAAkB,EAClB,OAAwB,GAAG,EAC3B,UAA8B,EAAE;QAEhC,yDAAyD;QACzD,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1C,MAAM,EACJ,IAAI,GAAG,UAAU,CAAC,SAAS,EAC3B,OAAO,GAAG,CAAC,EACX,QAAQ,GAAG,IAAI,CAAC,QAAQ,EACxB,eAAe,EACf,OAAO,GAAG,GAAG,GACd,GAAG,OAAO,CAAC;QAEZ,gDAAgD;QAChD,MAAM,KAAK,GAAG,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAc,CAAC;QAErF,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,2BAA2B;QAE1D,QAAQ,IAAI,EAAE;YACZ,KAAK,UAAU,CAAC,SAAS;gBACvB,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBACjF,MAAM;YACR,KAAK,UAAU,CAAC,cAAc;gBAC5B,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACxG,MAAM;YACR,KAAK,UAAU,CAAC,aAAa;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBACrG,MAAM;YACR,KAAK,UAAU,CAAC,OAAO;gBACrB,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAChG,MAAM;SACT;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,qEAAqE;IAErE;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,qBAAqB,CACnB,UAAkB,EAClB,SAAoB,EACpB,OAAwB,GAAG,EAC3B,OAAO,GAAG,CAAC;QAEX,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1C,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE;YACnE,MAAM,IAAI,KAAK,CACb,qCAAqC,SAAS,IAAI,SAAS,IAAI;gBAC/D,OAAO,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,CAC7C,CAAC;SACH;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;QAC9B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAE1B,IAAI,EAAE,IAAI,CAAC,EAAE;YACX,uEAAuE;YACvE,IAAI,IAAI,KAAK,GAAG,EAAE;gBAChB,sDAAsD;gBACtD,MAAM,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;aAC7D;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE;gBACvB,+DAA+D;gBAC/D,MAAM,QAAQ,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC5B,IAAI,EAAE,GAAG,CAAC,CAAC;gBACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;oBAClC,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,UAAU,GAAG,KAAK,GAAG,EAAE,CAAC;oBACnE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAC1D,EAAE,IAAI,QAAQ,CAAC;iBAChB;aACF;iBAAM;gBACL,gCAAgC;gBAChC,qEAAqE;gBACrE,gCAAgC;gBAChC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;oBAClC,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;oBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;wBAClC,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,OAAO,GAAG,UAAU,GAAG,EAAE,CAAC;wBACpE,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;wBAC9B,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;wBACtC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;wBACtC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;wBACtC,EAAE,IAAI,CAAC,CAAC;qBACT;iBACF;aACF;SACF;aAAM;YACL,oDAAoD;YACpD,MAAM,SAAS,GAAG,KAAK,GAAG,EAAE,CAAC;YAC7B,IAAI,SAAiB,CAAC;YACtB,IAAI,OAAe,CAAC;YACpB,IAAI,OAAe,CAAC;YACpB,QAAQ,IAAI,EAAE;gBACZ,KAAK,GAAG;oBACN,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;oBACtD,OAAO,GAAG,SAAS,CAAC;oBACpB,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM;gBACR,KAAK,GAAG;oBACN,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;oBAC7C,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;oBAC7B,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM;gBACR,kEAAkE;gBAClE,KAAK,GAAG;oBACN,SAAS,GAAG,UAAU,GAAG,EAAE,GAAG,OAAO,CAAC;oBACtC,OAAO,GAAG,SAAS,CAAC,CAAW,QAAQ;oBACvC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAE,QAAQ;oBACvC,MAAM;aACT;YAED,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;gBAClC,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;gBAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;oBAClC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC1B,GAAG,IAAI,OAAO,CAAC;oBACf,EAAE,IAAI,CAAC,CAAC;iBACT;aACF;SACF;IACH,CAAC;IAGD,sEAAsE;IAEtE;;;;;;;;;;;;;;;;;OAiBG;IACH,2BAA2B,CACzB,UAAkB,EAClB,SAAoB,EACpB,OAAwB,GAAG,EAC3B,gBAAwB,CAAC,EACzB,cAAwC;;QAExC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1C,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE;YACnE,MAAM,IAAI,KAAK,CACb,qCAAqC,SAAS,IAAI,SAAS,IAAI;gBAC/D,OAAO,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,CAC7C,CAAC;SACH;QAED,uDAAuD;QACvD,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAEjD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;QAE9B,yEAAyE;QACzE,4EAA4E;QAC5E,yEAAyE;QACzE,2DAA2D;QAC3D,MAAM,eAAe,GAAG,GAAG,CAAC;QAE5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAE1B,4EAA4E;QAC5E,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACxC,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QACpB,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC5C,OAAO,GAAG,SAAS,CAAC;gBACpB,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;gBACnC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7B,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,kEAAkE;YAClE,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,GAAG,CAAC;gBAC7B,OAAO,GAAG,SAAS,CAAC,CAAW,QAAQ;gBACvC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAE,QAAQ;gBACvC,MAAM;SACT;QAED,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;gBAClC,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAE7B,IAAI,KAAK,GAAG,eAAe,EAAE;oBAC3B,yCAAyC;oBACzC,IAAI,cAAc,EAAE;wBAClB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;wBACnC,IAAI,aAAa,KAAK,CAAC,IAAI,cAAc,CAAC,aAAa,CAAC,KAAK,KAAK,EAAE;4BAClE,GAAG,IAAI,OAAO,CAAC;4BACf,EAAE,IAAI,CAAC,CAAC;4BACR,SAAS;yBACV;qBACF;oBACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAClB;qBAAM;oBACL,yCAAyC;oBACzC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;oBACrB,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBACzB,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBACzB,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBACrC,IAAI,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAE3C,gFAAgF;oBAChF,IAAI,cAAc,KAAK,SAAS,EAAE;wBAChC,IAAI,OAAO,GAAG,QAAQ,CAAC;wBACvB,IAAI,WAAW,GAAG,aAAa,CAAC;wBAEhC,iFAAiF;wBACjF,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE;4BAC9B,MAAM,CAAC,GAAG,MAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,mCAAI,mBAAmB,CAAC,EAAE,CAAC,CAAC;4BACvD,IAAI,CAAC,CAAC;gCAAE,SAAS;4BAEjB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;4BACnB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;4BACnB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;4BACnB,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;4BAEzC,IAAI,IAAI,GAAG,OAAO,EAAE;gCAClB,OAAO,GAAG,IAAI,CAAC;gCACf,WAAW,GAAG,EAAE,CAAC;6BAClB;yBACF;wBACD,cAAc,GAAG,WAAW,CAAC;qBAC9B;oBAED,OAAO,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;iBAC/B;gBAED,GAAG,IAAI,OAAO,CAAC;gBACf,EAAE,IAAI,CAAC,CAAC;aACT;SACF;IACH,CAAC;IAED;;;;;OAKG;IACK,oBAAoB;;QAC1B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;QACtC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,mCAAI,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAC3D,IAAI,KAAK,EAAE;gBACT,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;gBACvD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;aAClB;SACF;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,qEAAqE;IAErE;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAClB,UAAkB,EAClB,OAAwB,GAAG,EAC3B,MAAiB,EACjB,cAAwC,EACxC,UAAkB,GAAG;;QAErB,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1C,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE;YAChE,MAAM,IAAI,KAAK,CACb,kCAAkC,UAAU,IAAI,WAAW,IAAI;gBAC/D,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CACvC,CAAC;SACH;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE/B,qEAAqE;QACrE,0CAA0C;QAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACvC,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QACpB,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC5C,OAAO,GAAG,SAAS,CAAC;gBACpB,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM;YACR,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;gBACnC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7B,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM;YACR,kEAAkE;YAClE,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,EAAE,CAAC;gBAC5B,OAAO,GAAG,SAAS,CAAC,CAAW,QAAQ;gBACvC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAE,QAAQ;gBACvC,MAAM;SACT;QAED,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;gBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBAExB,IAAI,KAAK,KAAK,CAAC,EAAE;oBACf,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBACf,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACnB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACnB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;iBACpB;qBAAM,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBACnD,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBACf,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACnB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACnB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;iBACpB;qBAAM;oBACL,MAAM,KAAK,GAAG,MAAA,MAAA,QAAQ,CAAC,KAAK,CAAC,mCAAI,mBAAmB,CAAC,KAAK,CAAC,mCAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;oBACtF,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;oBACrB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;oBACzB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;oBACzB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;iBAChD;gBAED,GAAG,IAAI,OAAO,CAAC;gBACf,EAAE,IAAI,CAAC,CAAC;aACT;SACF;IACH,CAAC;IAED,sEAAsE;IAEtE;;;;OAIG;IACH,aAAa;QACX,yBAAY,IAAI,CAAC,IAAI,EAAG;IAC1B,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;;;;;OAOG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;OAUG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IAC9B,CAAC;IAED,uEAAuE;IAEvE;;;;;;;;;;;;;;OAcG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,OAAmB;QAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACvC,MAAM,IAAI,KAAK,CACb,kCAAkC,IAAI,CAAC,IAAI,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,EAAE,CAC5E,CAAC;SACH;QACD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;IACtB,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,UAAU,CACzB,IAAI,CAAC,IAAI,CAAC,KAAK,EACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,IAAI,CAAC,IAAI,CAAC,KAAK,EACf,IAAI,CAAC,WAAW,CACjB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,0BAA0B;QAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvD;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO;QACL,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;gBACtB,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,UAAU,CACR,UAAkB,EAClB,OAAwB,GAAG,EAC3B,OAAgB;QAEhB,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACxC,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QACpB,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC5C,OAAO,GAAG,SAAS,CAAC;gBACpB,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;gBACnC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7B,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,kEAAkE;YAClE,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,GAAG,CAAC;gBAC7B,OAAO,GAAG,SAAS,CAAC,CAAW,QAAQ;gBACvC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAE,QAAQ;gBACvC,MAAM;SACT;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/B,IAAI,OAAO,KAAK,SAAS,EAAE;oBACzB,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;iBAC5B;qBAAM;oBACL,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;wBAC/B,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;qBACvB;iBACF;gBACD,GAAG,IAAI,OAAO,CAAC;aAChB;SACF;IACH,CAAC;IAED,oEAAoE;IAEpE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,aAAa,CACX,UAAkB,EAClB,OAAwB,GAAG;QAE3B,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QAExC,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,yBAAyB;YACzB,MAAM,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;YAC/C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;SAC1D;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE;YACvB,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/B,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,UAAU,GAAG,SAAS,CAAC;gBACvF,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC9E,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;aAC9B;SACF;aAAM;YACL,qDAAqD;YACrD,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/B,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;gBAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC/B,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,OAAO,GAAG,UAAU,GAAG,GAAG,CAAC;oBAC1F,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;wBAC/B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;qBACvC;iBACF;aACF;SACF;QAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACzD,CAAC;IAED;;;;;;;;;;;OAWG;IACH,aAAa,CACX,UAAkB,EAClB,IAAgB,EAChB,OAAwB,GAAG;QAE3B,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAE1B,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,yBAAyB;YACzB,MAAM,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;SAC9D;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE;YACvB,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/B,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,UAAU,GAAG,SAAS,CAAC;gBACvF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACvE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;aAC9B;SACF;aAAM;YACL,qDAAqD;YACrD,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/B,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;gBAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC/B,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,OAAO,GAAG,UAAU,GAAG,GAAG,CAAC;oBAC1F,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;wBAC/B,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;qBACrC;iBACF;aACF;SACF;IACH,CAAC;IAED,qEAAqE;IAErE;;;;OAIG;IACK,kBAAkB,CAAC,IAAqB;QAC9C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3C,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACjC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAChC,iEAAiE;YACjE,mEAAmE;YACnE,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAClC;IACH,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,UAAkB,EAAE,IAAqB;QAClE,MAAM,GAAG,GACP,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAEtB,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,IAAI,GAAG,EAAE;YACvC,MAAM,IAAI,UAAU,CAClB,eAAe,UAAU,4BAA4B,IAAI,UAAU,GAAG,GAAG,CAAC,GAAG,CAC9E,CAAC;SACH;IACH,CAAC;IAED,qEAAqE;IAErE;;;;;OAKG;IACK,eAAe,CACrB,MAAyB,EACzB,KAAa,EACb,MAAc,EACd,UAAkB,EAClB,IAAqB,EACrB,OAAe;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACxC,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QACpB,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;gBACtD,OAAO,GAAG,SAAS,CAAC;gBACpB,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;gBAC7C,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7B,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,kEAAkE;YAClE,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,GAAG,GAAG,OAAO,CAAC;gBACvC,OAAO,GAAG,SAAS,CAAC,CAAW,QAAQ;gBACvC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAE,QAAQ;gBACvC,MAAM;SACT;QAED,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;gBACnB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;gBACvB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;gBACvB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrC,GAAG,IAAI,OAAO,CAAC;gBACf,EAAE,IAAI,CAAC,CAAC;aACT;SACF;IACH,CAAC;IAED;;;;OAIG;IACK,mBAAmB,CACzB,MAAyB,EACzB,KAAa,EACb,MAAc,EACd,UAAkB,EAClB,IAAqB,EACrB,OAAe,EACf,QAAyB,EACzB,OAAe;;QAEf,MAAM,KAAK,GAAG,MAAA,QAAQ,CAAC,OAAO,CAAC,mCAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACxC,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QACpB,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;gBACtD,OAAO,GAAG,SAAS,CAAC;gBACpB,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;gBAC7C,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7B,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,kEAAkE;YAClE,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,GAAG,GAAG,OAAO,CAAC;gBACvC,OAAO,GAAG,SAAS,CAAC,CAAW,QAAQ;gBACvC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAE,QAAQ;gBACvC,MAAM;SACT;QAED,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,IAAI,KAAK,GAAG,CAAC,EAAE;oBACb,MAAM,SAAS,GAAG,KAAK,GAAG,GAAG,CAAC;oBAC9B,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;oBACrB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;oBACzB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;oBACzB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC;iBAC5D;qBAAM;oBACL,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;iBACpB;gBACD,GAAG,IAAI,OAAO,CAAC;gBACf,EAAE,IAAI,CAAC,CAAC;aACT;SACF;IACH,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CACxB,MAAyB,EACzB,KAAa,EACb,MAAc,EACd,UAAkB,EAClB,IAAqB,EACrB,QAAyB,EACzB,eAA0B,EAC1B,OAAe;;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACxC,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QACpB,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC5C,OAAO,GAAG,SAAS,CAAC;gBACpB,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;gBACnC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7B,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,kEAAkE;YAClE,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,GAAG,CAAC;gBAC7B,OAAO,GAAG,SAAS,CAAC,CAAW,QAAQ;gBACvC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAE,QAAQ;gBACvC,MAAM;SACT;QAED,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC9B,IAAI,KAAK,GAAG,KAAK,CAAC;gBAElB,yDAAyD;gBACzD,KAAK,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE;oBACpC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;wBAAE,SAAS;oBAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;oBAC7B,IAAI,KAAK,GAAG,CAAC,EAAE;wBACb,MAAM,KAAK,GAAG,MAAA,MAAA,QAAQ,CAAC,EAAE,CAAC,mCAAI,mBAAmB,CAAC,EAAE,CAAC,mCAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;wBAChF,MAAM,SAAS,GAAG,KAAK,GAAG,GAAG,CAAC;wBAC9B,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;wBACrB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;wBACzB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;wBACzB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC;wBAC3D,KAAK,GAAG,IAAI,CAAC;wBACb,MAAM;qBACP;iBACF;gBAED,IAAI,CAAC,KAAK,EAAE;oBACV,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;iBACpB;gBAED,GAAG,IAAI,OAAO,CAAC;gBACf,EAAE,IAAI,CAAC,CAAC;aACT;SACF;IACH,CAAC;IAED;;;;;OAKG;IACK,aAAa,CACnB,MAAyB,EACzB,KAAa,EACb,MAAc,EACd,UAAkB,EAClB,IAAqB,EACrB,QAAyB,EACzB,eAA0B,EAC1B,OAAe;;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACxC,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QACpB,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC5C,OAAO,GAAG,SAAS,CAAC;gBACpB,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;gBACnC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7B,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,kEAAkE;YAClE,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,GAAG,CAAC;gBAC7B,OAAO,GAAG,SAAS,CAAC,CAAW,QAAQ;gBACvC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAE,QAAQ;gBACvC,MAAM;SACT;QAED,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC9B,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,IAAI,MAAM,GAAG,CAAC,CAAC;gBAEf,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;oBAC/B,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;wBAAE,SAAS;oBAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;oBAC7B,IAAI,KAAK,GAAG,CAAC,EAAE;wBACb,MAAM,KAAK,GAAG,MAAA,MAAA,QAAQ,CAAC,EAAE,CAAC,mCAAI,mBAAmB,CAAC,EAAE,CAAC,mCAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;wBAChF,MAAM,SAAS,GAAG,KAAK,GAAG,GAAG,CAAC;wBAC9B,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC;wBAEpD,MAAM,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;wBAC1B,MAAM,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;wBAC1B,MAAM,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;wBAC1B,MAAM,IAAI,KAAK,CAAC;qBACjB;iBACF;gBAED,IAAI,MAAM,GAAG,CAAC,EAAE;oBACd,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC/C,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;oBACnD,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;oBACnD,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;iBAC1D;qBAAM;oBACL,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;iBACpB;gBAED,GAAG,IAAI,OAAO,CAAC;gBACf,EAAE,IAAI,CAAC,CAAC;aACT;SACF;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"MaskVolume.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/core/MaskVolume.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,30 @@ export class ZoomTool extends BaseTool {
|
|
|
14
14
|
}
|
|
15
15
|
// ===== Zoom Wheel =====
|
|
16
16
|
configMouseZoomWheel() {
|
|
17
|
-
|
|
17
|
+
// Coalesce multiple wheel events fired within one frame into a single
|
|
18
|
+
// resizePaintArea() call via requestAnimationFrame. Each resize triggers
|
|
19
|
+
// a full display redraw (+ mask recomposite), so without coalescing a
|
|
20
|
+
// fast scroll fires dozens of these per frame. The accumulation is done
|
|
21
|
+
// on the logical zoom (sizeFactor) — not the DOM offsetWidth — so deltas
|
|
22
|
+
// still compound correctly even though the DOM size hasn't updated yet.
|
|
23
|
+
let rafId = null;
|
|
24
|
+
let pending = null;
|
|
25
|
+
const flush = () => {
|
|
26
|
+
rafId = null;
|
|
27
|
+
if (!pending)
|
|
28
|
+
return;
|
|
29
|
+
const p = pending;
|
|
30
|
+
pending = null;
|
|
31
|
+
if (p.recenter) {
|
|
32
|
+
this.callbacks.resetPaintAreaUIPosition();
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
this.callbacks.resetPaintAreaUIPosition(p.l, p.t);
|
|
36
|
+
}
|
|
37
|
+
this.callbacks.resizePaintArea(p.moveDistance);
|
|
38
|
+
this.callbacks.setIsDrawFalse(1000);
|
|
39
|
+
this.ctx.nrrd_states.view.sizeFactor = p.moveDistance;
|
|
40
|
+
};
|
|
18
41
|
return (e) => {
|
|
19
42
|
var _a, _b;
|
|
20
43
|
if ((_a = this.ctx.eventRouter) === null || _a === void 0 ? void 0 : _a.isShiftHeld()) {
|
|
@@ -29,36 +52,38 @@ export class ZoomTool extends BaseTool {
|
|
|
29
52
|
const delta = e.detail ? e.detail > 0 : e.wheelDelta < 0;
|
|
30
53
|
this.ctx.protectedData.isDrawing = true;
|
|
31
54
|
const rect = this.container.getBoundingClientRect();
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const ratioT = (e.clientY -
|
|
38
|
-
rect.top -
|
|
39
|
-
this.mainAreaContainer.offsetTop -
|
|
40
|
-
this.ctx.protectedData.canvases.drawingCanvas.offsetTop) /
|
|
41
|
-
this.ctx.protectedData.canvases.drawingCanvas.offsetHeight;
|
|
55
|
+
const drawingCanvas = this.ctx.protectedData.canvases.drawingCanvas;
|
|
56
|
+
const ratioL = (e.clientX - rect.left - this.mainAreaContainer.offsetLeft - drawingCanvas.offsetLeft) /
|
|
57
|
+
drawingCanvas.offsetWidth;
|
|
58
|
+
const ratioT = (e.clientY - rect.top - this.mainAreaContainer.offsetTop - drawingCanvas.offsetTop) /
|
|
59
|
+
drawingCanvas.offsetHeight;
|
|
42
60
|
const ratioDelta = !delta ? 1 + 0.1 : 1 - 0.1;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
moveDistance = w / this.ctx.nrrd_states.image.originWidth;
|
|
61
|
+
// Compound from the latest pending target (this frame) or the current
|
|
62
|
+
// committed sizeFactor.
|
|
63
|
+
const base = pending ? pending.moveDistance : this.ctx.nrrd_states.view.sizeFactor;
|
|
64
|
+
let moveDistance = base * ratioDelta;
|
|
48
65
|
if (moveDistance > 8) {
|
|
66
|
+
// Max zoom: original behaviour clamps without re-laying out.
|
|
49
67
|
moveDistance = 8;
|
|
68
|
+
this.ctx.nrrd_states.view.sizeFactor = moveDistance;
|
|
69
|
+
this.callbacks.setIsDrawFalse(1000);
|
|
70
|
+
return;
|
|
50
71
|
}
|
|
51
|
-
|
|
72
|
+
if (moveDistance < 1) {
|
|
52
73
|
moveDistance = 1;
|
|
53
|
-
|
|
54
|
-
this.callbacks.resizePaintArea(moveDistance);
|
|
74
|
+
pending = { moveDistance, l: 0, t: 0, recenter: true };
|
|
55
75
|
}
|
|
56
76
|
else {
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
77
|
+
// Target displayed size for this zoom level → keep cursor anchored.
|
|
78
|
+
const w = this.ctx.nrrd_states.image.originWidth * moveDistance;
|
|
79
|
+
const h = this.ctx.nrrd_states.image.originHeight * moveDistance;
|
|
80
|
+
const l = Math.round(e.clientX - this.mainAreaContainer.offsetLeft - w * ratioL - rect.left);
|
|
81
|
+
const t = Math.round(e.clientY - this.mainAreaContainer.offsetTop - h * ratioT - rect.top);
|
|
82
|
+
pending = { moveDistance, l, t, recenter: false };
|
|
83
|
+
}
|
|
84
|
+
if (rafId === null) {
|
|
85
|
+
rafId = requestAnimationFrame(flush);
|
|
59
86
|
}
|
|
60
|
-
this.callbacks.setIsDrawFalse(1000);
|
|
61
|
-
this.ctx.nrrd_states.view.sizeFactor = moveDistance;
|
|
62
87
|
};
|
|
63
88
|
}
|
|
64
89
|
}
|