@jax-data-science/sci-image-visualizer 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/index.mjs +7 -1
- package/esm2022/lib/contracts/image.contract.mjs +1 -1
- package/esm2022/lib/contracts/region-editor-api.contract.mjs +1 -1
- package/esm2022/lib/contracts/region-store.contract.mjs +1 -1
- package/esm2022/lib/contracts/section-view.contract.mjs +2 -0
- package/esm2022/lib/contracts/visualizer.contract.mjs +1 -1
- package/esm2022/lib/contracts/viz-config.mjs +1 -1
- package/esm2022/lib/geometry/loft.mjs +128 -0
- package/esm2022/lib/geometry/polylabel.mjs +156 -0
- package/esm2022/lib/geometry/reconstruct.mjs +315 -0
- package/esm2022/lib/geometry/reslice-image.mjs +57 -0
- package/esm2022/lib/geometry/section.mjs +215 -0
- package/esm2022/lib/implementations/napari-js/napari-loading-badge.mjs +11 -7
- package/esm2022/lib/implementations/napari-js/napari-loading-state.mjs +20 -3
- package/esm2022/lib/implementations/napari-js/napari-region-mesh-pointer.mjs +100 -0
- package/esm2022/lib/implementations/napari-js/napari-region-overlay.mjs +28 -5
- package/esm2022/lib/implementations/napari-js/napari-scene.mjs +1 -1
- package/esm2022/lib/implementations/napari-js/napari-spatial-hover.mjs +9 -2
- package/esm2022/lib/implementations/napari-js/napari-tool-bridge.mjs +5 -2
- package/esm2022/lib/implementations/napari-js/napari-visualizer.service.mjs +81 -1
- package/esm2022/lib/implementations/napari-js/napari-volume-region-meshes.mjs +129 -0
- package/esm2022/lib/implementations/napari-js/napari-volume-scene.mjs +115 -4
- package/esm2022/lib/implementations/napari-js/napari-volume-slice-planes.mjs +103 -0
- package/esm2022/lib/implementations/napari-js/region-overlay/region-svg-renderer.mjs +15 -3
- package/esm2022/lib/implementations/osd/osd-region-overlay-draw.mjs +18 -7
- package/esm2022/lib/implementations/osd/osd-region-overlay.mjs +38 -8
- package/esm2022/lib/implementations/tile-server/tile-protocol.mjs +1 -1
- package/esm2022/lib/models/class-preset.mjs +1 -1
- package/esm2022/lib/models/polygon-factory.mjs +17 -1
- package/esm2022/lib/models/region-geojson.mjs +44 -6
- package/esm2022/lib/models/region.mjs +1 -1
- package/esm2022/lib/region-editor/class-tree/class-tree.component.mjs +156 -0
- package/esm2022/lib/region-editor/class-tree/class-tree.mjs +108 -0
- package/esm2022/lib/region-editor/classes-panel/classes-panel.component.mjs +77 -13
- package/esm2022/lib/region-editor/region-editor.component.mjs +527 -42
- package/esm2022/lib/region-editor/region-metrics.mjs +20 -2
- package/esm2022/lib/region-editor/region-persistence.service.mjs +36 -10
- package/esm2022/lib/region-editor/region-table/region-table.component.mjs +24 -8
- package/esm2022/lib/region-overlay/region-geometry.mjs +3 -3
- package/esm2022/lib/region-overlay/region-source-layer.mjs +378 -0
- package/esm2022/lib/region-overlay/region-style.mjs +97 -0
- package/esm2022/lib/region-source/http-region-source.mjs +104 -0
- package/esm2022/lib/region-source/region-source-ops.mjs +53 -0
- package/esm2022/lib/region-source/region-source-worker.mjs +10 -0
- package/esm2022/lib/region-source/region-source.mjs +67 -0
- package/esm2022/lib/region-source/region-tiles.mjs +708 -0
- package/esm2022/lib/region-source/worker-region-source.mjs +229 -0
- package/esm2022/lib/routing-visualizer.service.mjs +418 -22
- package/esm2022/lib/section-pane/section-pane.component.mjs +299 -0
- package/esm2022/lib/store/class-color.util.mjs +10 -5
- package/esm2022/lib/store/class-signatures.mjs +63 -0
- package/esm2022/lib/store/region-scope-cache.mjs +5 -1
- package/esm2022/lib/store/region-source-scope.mjs +171 -0
- package/esm2022/lib/store/region-store.service.mjs +724 -12
- package/esm2022/lib/store/visualizer-store.service.mjs +33 -6
- package/esm2022/lib/toolbar/region-tools/region-tools.component.mjs +8 -2
- package/esm2022/lib/toolbar/stack-controls/stack-controls.component.mjs +55 -15
- package/esm2022/lib/toolbar/toolbar.component.mjs +19 -5
- package/esm2022/lib/visualizer/region-load.mjs +67 -4
- package/esm2022/lib/visualizer/volume-sections.mjs +175 -0
- package/esm2022/lib/visualizer.component.mjs +128 -6
- package/fesm2022/{jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-Csxlnq7I.mjs → jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-BKQhpbHv.mjs} +7239 -1153
- package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-BKQhpbHv.mjs.map +1 -0
- package/fesm2022/{jax-data-science-sci-image-visualizer-onnx-sam-session-Bkujqg7m.mjs → jax-data-science-sci-image-visualizer-onnx-sam-session-z1IN-F7w.mjs} +4 -4
- package/fesm2022/{jax-data-science-sci-image-visualizer-onnx-sam-session-Bkujqg7m.mjs.map → jax-data-science-sci-image-visualizer-onnx-sam-session-z1IN-F7w.mjs.map} +1 -1
- package/fesm2022/jax-data-science-sci-image-visualizer-region-source-worker-CAqBjM5L.mjs +12 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-region-source-worker-CAqBjM5L.mjs.map +1 -0
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs +3 -3
- package/fesm2022/region-source.worker.js +1067 -0
- package/index.d.ts +6 -0
- package/lib/contracts/image.contract.d.ts +4 -0
- package/lib/contracts/region-editor-api.contract.d.ts +84 -0
- package/lib/contracts/region-store.contract.d.ts +22 -0
- package/lib/contracts/section-view.contract.d.ts +44 -0
- package/lib/contracts/visualizer.contract.d.ts +10 -0
- package/lib/contracts/viz-config.d.ts +8 -0
- package/lib/geometry/loft.d.ts +22 -0
- package/lib/geometry/polylabel.d.ts +23 -0
- package/lib/geometry/reconstruct.d.ts +54 -0
- package/lib/geometry/reslice-image.d.ts +33 -0
- package/lib/geometry/section.d.ts +52 -0
- package/lib/implementations/napari-js/napari-loading-badge.d.ts +4 -2
- package/lib/implementations/napari-js/napari-loading-state.d.ts +8 -1
- package/lib/implementations/napari-js/napari-region-mesh-pointer.d.ts +32 -0
- package/lib/implementations/napari-js/napari-region-overlay.d.ts +6 -1
- package/lib/implementations/napari-js/napari-scene.d.ts +33 -0
- package/lib/implementations/napari-js/napari-spatial-hover.d.ts +3 -1
- package/lib/implementations/napari-js/napari-visualizer.service.d.ts +48 -0
- package/lib/implementations/napari-js/napari-volume-region-meshes.d.ts +66 -0
- package/lib/implementations/napari-js/napari-volume-scene.d.ts +45 -1
- package/lib/implementations/napari-js/napari-volume-slice-planes.d.ts +43 -0
- package/lib/implementations/osd/osd-region-overlay-draw.d.ts +4 -3
- package/lib/implementations/osd/osd-region-overlay.d.ts +10 -3
- package/lib/implementations/tile-server/tile-protocol.d.ts +3 -0
- package/lib/models/class-preset.d.ts +7 -0
- package/lib/models/polygon-factory.d.ts +5 -0
- package/lib/models/region-geojson.d.ts +40 -0
- package/lib/models/region.d.ts +19 -0
- package/lib/region-editor/class-tree/class-tree.component.d.ts +78 -0
- package/lib/region-editor/class-tree/class-tree.d.ts +31 -0
- package/lib/region-editor/classes-panel/classes-panel.component.d.ts +36 -6
- package/lib/region-editor/region-editor.component.d.ts +133 -17
- package/lib/region-editor/region-metrics.d.ts +8 -0
- package/lib/region-editor/region-persistence.service.d.ts +12 -4
- package/lib/region-editor/region-table/region-table.component.d.ts +10 -4
- package/lib/region-overlay/region-geometry.d.ts +4 -3
- package/lib/region-overlay/region-source-layer.d.ts +96 -0
- package/lib/region-overlay/region-style.d.ts +52 -0
- package/lib/region-source/http-region-source.d.ts +45 -0
- package/lib/region-source/region-source-ops.d.ts +89 -0
- package/lib/region-source/region-source-worker.d.ts +7 -0
- package/lib/region-source/region-source.d.ts +82 -0
- package/lib/region-source/region-tiles.d.ts +289 -0
- package/lib/region-source/worker-region-source.d.ts +65 -0
- package/lib/routing-visualizer.service.d.ts +138 -1
- package/lib/section-pane/section-pane.component.d.ts +47 -0
- package/lib/store/class-color.util.d.ts +6 -3
- package/lib/store/class-signatures.d.ts +11 -0
- package/lib/store/region-scope-cache.d.ts +2 -0
- package/lib/store/region-source-scope.d.ts +68 -0
- package/lib/store/region-store.service.d.ts +206 -2
- package/lib/store/visualizer-store.service.d.ts +10 -0
- package/lib/toolbar/region-tools/region-tools.component.d.ts +3 -1
- package/lib/toolbar/stack-controls/stack-controls.component.d.ts +20 -9
- package/lib/toolbar/toolbar.component.d.ts +9 -2
- package/lib/visualizer/region-load.d.ts +23 -4
- package/lib/visualizer/volume-sections.d.ts +64 -0
- package/lib/visualizer.component.d.ts +31 -0
- package/package.json +2 -2
- package/src/lib/assets/slice.svg +23 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-Csxlnq7I.mjs.map +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Polygon, Rectangle } from '../../../models/region';
|
|
2
2
|
import { regionBBox, ringHandles, ringOf } from '../../../region-overlay/region-geometry';
|
|
3
3
|
import { SvgRegionRenderer, svgEl } from '../../../region-overlay/svg-region-renderer';
|
|
4
|
+
import { applyPaint, isFilled, placeInsideLabel, regionLabelSpots, shapePaint, } from '../../../region-overlay/region-style';
|
|
4
5
|
const SVG_NS = 'http://www.w3.org/2000/svg';
|
|
5
6
|
/** Rendered handle size (screen px). */
|
|
6
7
|
export const HANDLE_SIZE = 7;
|
|
@@ -20,7 +21,7 @@ export class NapariRegionSvgRenderer {
|
|
|
20
21
|
rectElement: 'rect',
|
|
21
22
|
styleShape: (el, region, selected) => this.style(el, this.strokeOf(region), selected),
|
|
22
23
|
decorate: (region, _i, _selected, layer) => this.drawLabel(region, layer),
|
|
23
|
-
skip: (region) => !!region.isProfile?.(),
|
|
24
|
+
skip: (region) => !!region.isProfile?.() || store.isClassHidden(region.label),
|
|
24
25
|
});
|
|
25
26
|
}
|
|
26
27
|
/** Follow the camera: one transform attribute plus the screen-space elements. */
|
|
@@ -71,9 +72,15 @@ export class NapariRegionSvgRenderer {
|
|
|
71
72
|
}
|
|
72
73
|
/** Draw a region's classification label at its top-left, when labels are enabled (matches OSD). */
|
|
73
74
|
drawLabel(region, layer) {
|
|
74
|
-
if (!this.store.getShowShapeLabel() || region.isProfile?.())
|
|
75
|
+
if (!this.store.getShowShapeLabel() || region.isProfile?.() || this.store.isLabelCovered(region.label))
|
|
75
76
|
return;
|
|
76
77
|
const label = region.label;
|
|
78
|
+
// The filled (atlas) look labels each part inside it, where it fits.
|
|
79
|
+
if (label && isFilled(this.store.getRegionStyle())) {
|
|
80
|
+
for (const spot of regionLabelSpots(region))
|
|
81
|
+
placeInsideLabel(layer, label, spot);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
77
84
|
const bb = label ? regionBBox(region) : null;
|
|
78
85
|
if (!label || !bb)
|
|
79
86
|
return;
|
|
@@ -147,6 +154,11 @@ export class NapariRegionSvgRenderer {
|
|
|
147
154
|
layer.at(dot, handle[0], handle[1], { x: 'cx', y: 'cy' });
|
|
148
155
|
}
|
|
149
156
|
style(el, stroke, isSelected) {
|
|
157
|
+
const style = this.store.getRegionStyle();
|
|
158
|
+
if (isFilled(style)) {
|
|
159
|
+
applyPaint(el, shapePaint(stroke, isSelected, style));
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
150
162
|
el.setAttribute('stroke', stroke);
|
|
151
163
|
el.setAttribute('stroke-width', isSelected ? '4' : '2');
|
|
152
164
|
el.setAttribute('fill', isSelected ? stroke : 'none');
|
|
@@ -179,4 +191,4 @@ export class NapariRegionSvgRenderer {
|
|
|
179
191
|
el.setAttribute('vector-effect', 'non-scaling-stroke');
|
|
180
192
|
}
|
|
181
193
|
}
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaW9uLXN2Zy1yZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvaW1wbGVtZW50YXRpb25zL25hcGFyaS1qcy9yZWdpb24tb3ZlcmxheS9yZWdpb24tc3ZnLXJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUYsT0FBTyxFQUF1QixpQkFBaUIsRUFBRSxLQUFLLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUU1RyxNQUFNLE1BQU0sR0FBRyw0QkFBNEIsQ0FBQztBQUM1Qyx3Q0FBd0M7QUFDeEMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQztBQWdCN0I7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sdUJBQXVCO0lBS2xDLFlBQ21CLEdBQWtCLEVBQ2xCLEtBQWtCO1FBRGxCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDbEIsVUFBSyxHQUFMLEtBQUssQ0FBYTtRQUxyQyxnR0FBZ0c7UUFDeEYsY0FBUyxHQUEwQixJQUFJLENBQUM7UUFNOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUN6QyxXQUFXLEVBQUUsTUFBTTtZQUNuQixVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUM7WUFDckYsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7WUFDekUsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFO1NBQ3pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpRkFBaUY7SUFDakYsU0FBUyxDQUFDLE1BQWM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxNQUFNLENBQUMsT0FBMEIsRUFBRSxRQUEyQjtRQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELDBGQUEwRjtJQUMxRixhQUFhLENBQUMsT0FBMEIsRUFBRSxRQUEyQixFQUFFLEtBQWtCO1FBQ3ZGLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDcEMsS0FBSyxNQUFNLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixJQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRTtvQkFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2RSxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsK0ZBQStGO0lBQy9GLFdBQVcsQ0FBQyxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQVUsRUFBRSxFQUFVO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVO1lBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0RixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQsaUNBQWlDO0lBQ3pCLFFBQVEsQ0FBQyxNQUFjO1FBQzdCLE9BQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxJQUFJLFNBQVMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsbUdBQW1HO0lBQzNGLFNBQVMsQ0FBQyxNQUFjLEVBQUUsS0FBa0I7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFBRSxPQUFPO1FBQ3BFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDM0IsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM3QyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRTtZQUFFLE9BQU87UUFDMUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxzRkFBc0Y7SUFDOUUsV0FBVyxDQUFDLE1BQWMsRUFBRSxLQUFrQjtRQUNwRCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTztRQUNmLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFZLEVBQUUsSUFBWSxFQUFRLEVBQUU7WUFDbEQsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pCLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEdBQUcsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUMzQyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDNUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDaEMsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbEMsRUFBRSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdkMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0UsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksU0FBUyxFQUFFLENBQUM7WUFDM0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEMsQ0FBQzthQUFNLElBQUksQ0FBQyxZQUFZLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtnQkFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkUsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQUUsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUk7b0JBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM5RSx5RkFBeUY7WUFDekYsMEZBQTBGO1lBQzFGLGlFQUFpRTtZQUNqRSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDYixLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7b0JBQzFELE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDbkMsV0FBVyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3BDLElBQUksQ0FBQyxDQUFDLE1BQU07NEJBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7d0JBQ3hFLElBQUksQ0FBQyxDQUFDLEtBQUs7NEJBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ3hFLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs0RUFDd0U7SUFDaEUsZ0JBQWdCLENBQ3RCLEVBQVUsRUFDVixFQUFVLEVBQ1YsTUFBd0IsRUFDeEIsTUFBYyxFQUNkLEtBQWtCO1FBRWxCLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtZQUFFLE9BQU87UUFDakQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLEdBQUcsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTyxLQUFLLENBQUMsRUFBYyxFQUFFLE1BQWMsRUFBRSxVQUFtQjtRQUMvRCxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsQyxFQUFFLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEQsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELEVBQUUsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQscURBQXFEO0lBQzdDLFNBQVMsQ0FBQyxLQUFrQixFQUFFLEtBQWtCO1FBQ3RELElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDdEMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pCLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFO2dCQUM3QixNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzdCLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2hELENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FDYixLQUFLLENBQUMsSUFBSSxDQUNSLFVBQVUsRUFDVixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDdkMsQ0FDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFTyxVQUFVLENBQUMsRUFBYztRQUMvQixFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBQ25FLEVBQUUsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLEVBQUUsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0MsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEMsRUFBRSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb2x5Z29uLCBSZWN0YW5nbGUsIFJlZ2lvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yZWdpb24nO1xuaW1wb3J0IHR5cGUgeyBSZWdpb25TdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3JlZ2lvbi1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IHJlZ2lvbkJCb3gsIHJpbmdIYW5kbGVzLCByaW5nT2YgfSBmcm9tICcuLi8uLi8uLi9yZWdpb24tb3ZlcmxheS9yZWdpb24tZ2VvbWV0cnknO1xuaW1wb3J0IHsgQWZmaW5lLCBTY3JlZW5MYXllciwgU3ZnUmVnaW9uUmVuZGVyZXIsIHN2Z0VsIH0gZnJvbSAnLi4vLi4vLi4vcmVnaW9uLW92ZXJsYXkvc3ZnLXJlZ2lvbi1yZW5kZXJlcic7XG5cbmNvbnN0IFNWR19OUyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG4vKiogUmVuZGVyZWQgaGFuZGxlIHNpemUgKHNjcmVlbiBweCkuICovXG5leHBvcnQgY29uc3QgSEFORExFX1NJWkUgPSA3O1xuXG4vKiogQW4gYXhpcy1hbGlnbmVkIGJveCBmcm9tIGEgZHJhZydzIHN0YXJ0IHRvIGl0cyBjdXJyZW50IHBvaW50IChhbnkgb3JkZXIpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEcmFnQm94IHtcbiAgeDA6IG51bWJlcjtcbiAgeTA6IG51bWJlcjtcbiAgeDE6IG51bWJlcjtcbiAgeTE6IG51bWJlcjtcbn1cblxuLyoqIEEgcmVnaW9uIGJlaW5nIGRyYXduOiBhIHJlY3RhbmdsZSBkcmFnLCBvciBhIGZyZWVoYW5kIC8gY2xpY2stcGxhY2VkIHBhdGguICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lvbkRyYWZ0IHtcbiAgcmVjdDogRHJhZ0JveCB8IG51bGw7XG4gIHBhdGg6IEFycmF5PFtudW1iZXIsIG51bWJlcl0+IHwgbnVsbDtcbn1cblxuLyoqXG4gKiBXaGF0IHRoZSBuYXBhcmkgcmVnaW9uIG92ZXJsYXkgZHJhd3MsIG92ZXIgdGhlIHNoYXJlZCB7QGxpbmsgU3ZnUmVnaW9uUmVuZGVyZXJ9OiB0aGUgcmVnaW9uc1xuICogaW4gd29ybGQgY29vcmRpbmF0ZXMgKHN0eWxlZCBmcm9tIHRoZSBzdG9yZSdzIGNvbG91cnMsIGxhYmVsbGVkIHdoZW4gbGFiZWxzIGFyZSBvbiksIGFuZCBpblxuICogc2NyZWVuIHNwYWNlIHRoZSBzZWxlY3RlZCByZWdpb25zJyBncmFiIGhhbmRsZXMgKGNvcm5lcnMsIHZlcnRpY2VzLCBiw6l6aWVyIGNvbnRyb2wgcG9pbnRzKSxcbiAqIHRoZSBkcmFmdCBiZWluZyBkcmF3biBhbmQgdGhlIHJ1YmJlci1iYW5kIG1hcnF1ZWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBOYXBhcmlSZWdpb25TdmdSZW5kZXJlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFN2Z1JlZ2lvblJlbmRlcmVyO1xuICAvKiogRGVkaWNhdGVkIG1hcnF1ZWUgcmVjdCBlbGVtZW50LCB1cGRhdGVkIGRpcmVjdGx5IGR1cmluZyB0aGUgZHJhZyAobm8gZnVsbCByZWdpb24gcmVkcmF3KS4gKi9cbiAgcHJpdmF0ZSBtYXJxdWVlRWw6IFNWR1JlY3RFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdmc6IFNWR1NWR0VsZW1lbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZTogUmVnaW9uU3RvcmUsXG4gICkge1xuICAgIHRoaXMucmVuZGVyZXIgPSBuZXcgU3ZnUmVnaW9uUmVuZGVyZXIoc3ZnLCB7XG4gICAgICByZWN0RWxlbWVudDogJ3JlY3QnLFxuICAgICAgc3R5bGVTaGFwZTogKGVsLCByZWdpb24sIHNlbGVjdGVkKSA9PiB0aGlzLnN0eWxlKGVsLCB0aGlzLnN0cm9rZU9mKHJlZ2lvbiksIHNlbGVjdGVkKSxcbiAgICAgIGRlY29yYXRlOiAocmVnaW9uLCBfaSwgX3NlbGVjdGVkLCBsYXllcikgPT4gdGhpcy5kcmF3TGFiZWwocmVnaW9uLCBsYXllciksXG4gICAgICBza2lwOiAocmVnaW9uKSA9PiAhIXJlZ2lvbi5pc1Byb2ZpbGU/LigpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIEZvbGxvdyB0aGUgY2FtZXJhOiBvbmUgdHJhbnNmb3JtIGF0dHJpYnV0ZSBwbHVzIHRoZSBzY3JlZW4tc3BhY2UgZWxlbWVudHMuICovXG4gIHNldENhbWVyYShhZmZpbmU6IEFmZmluZSk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIuc2V0Q2FtZXJhKGFmZmluZSk7XG4gIH1cblxuICAvKiogUmVidWlsZCB0aGUgcmVnaW9ucyAod29ybGQgc3BhY2UpIGFuZCB0aGVpciBsYWJlbHMuICovXG4gIHJlbmRlcihyZWdpb25zOiByZWFkb25seSBSZWdpb25bXSwgc2VsZWN0ZWQ6IHJlYWRvbmx5IG51bWJlcltdKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW5kZXIocmVnaW9ucywgc2VsZWN0ZWQpO1xuICB9XG5cbiAgLyoqIFJlYnVpbGQgdGhlIHNjcmVlbi1zcGFjZSBvdmVybGF5IG9ubHk6IHRoZSBzZWxlY3RlZCByZWdpb25zJyBoYW5kbGVzIGFuZCB0aGUgZHJhZnQuICovXG4gIHJlbmRlck92ZXJsYXkocmVnaW9uczogcmVhZG9ubHkgUmVnaW9uW10sIHNlbGVjdGVkOiByZWFkb25seSBudW1iZXJbXSwgZHJhZnQ6IFJlZ2lvbkRyYWZ0KTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJlci5yZW5kZXJPdmVybGF5KChsYXllcikgPT4ge1xuICAgICAgZm9yIChjb25zdCBpIG9mIHNlbGVjdGVkKSB7XG4gICAgICAgIGNvbnN0IHJlZ2lvbiA9IHJlZ2lvbnNbaV07XG4gICAgICAgIGlmIChyZWdpb24gJiYgIXJlZ2lvbi5pc1Byb2ZpbGU/LigpKSB0aGlzLmRyYXdIYW5kbGVzKHJlZ2lvbiwgbGF5ZXIpO1xuICAgICAgfVxuICAgICAgdGhpcy5kcmF3RHJhZnQoZHJhZnQsIGxheWVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBTaG93IHRoZSBtYXJxdWVlIG92ZXIgc3ZnLWxvY2FsIGNvcm5lcnMgYChseCwgbHkpYOKAk2AocngsIHJ5KWAsIGNyZWF0aW5nIGl0IG9uIGZpcnN0IHVzZS4gKi9cbiAgc2hvd01hcnF1ZWUobHg6IG51bWJlciwgbHk6IG51bWJlciwgcng6IG51bWJlciwgcnk6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5tYXJxdWVlRWwgfHwgIXRoaXMubWFycXVlZUVsLnBhcmVudE5vZGUpIHtcbiAgICAgIHRoaXMubWFycXVlZUVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgJ3JlY3QnKTtcbiAgICAgIHRoaXMubWFycXVlZUVsLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgJyM0ZGEzZmYnKTtcbiAgICAgIHRoaXMubWFycXVlZUVsLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgJzEnKTtcbiAgICAgIHRoaXMubWFycXVlZUVsLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWRhc2hhcnJheScsICc0IDMnKTtcbiAgICAgIHRoaXMubWFycXVlZUVsLnNldEF0dHJpYnV0ZSgnZmlsbCcsICcjNGRhM2ZmJyk7XG4gICAgICB0aGlzLm1hcnF1ZWVFbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwtb3BhY2l0eScsICcwLjEyJyk7XG4gICAgICB0aGlzLm1hcnF1ZWVFbC5zZXRBdHRyaWJ1dGUoJ3ZlY3Rvci1lZmZlY3QnLCAnbm9uLXNjYWxpbmctc3Ryb2tlJyk7XG4gICAgICB0aGlzLnN2Zy5hcHBlbmRDaGlsZCh0aGlzLm1hcnF1ZWVFbCk7XG4gICAgfVxuICAgIHRoaXMubWFycXVlZUVsLnNldEF0dHJpYnV0ZSgneCcsIGAke2x4fWApO1xuICAgIHRoaXMubWFycXVlZUVsLnNldEF0dHJpYnV0ZSgneScsIGAke2x5fWApO1xuICAgIHRoaXMubWFycXVlZUVsLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBgJHtNYXRoLmFicyhyeCAtIGx4KX1gKTtcbiAgICB0aGlzLm1hcnF1ZWVFbC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIGAke01hdGguYWJzKHJ5IC0gbHkpfWApO1xuICB9XG5cbiAgLyoqIFJlbW92ZSB0aGUgbWFycXVlZSBlbGVtZW50IGZyb20gdGhlIFNWRy4gKi9cbiAgY2xlYXJNYXJxdWVlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1hcnF1ZWVFbD8ucGFyZW50Tm9kZSkgdGhpcy5tYXJxdWVlRWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLm1hcnF1ZWVFbCk7XG4gICAgdGhpcy5tYXJxdWVlRWwgPSBudWxsO1xuICB9XG5cbiAgLyoqIEEgcmVnaW9uJ3Mgb3V0bGluZSBjb2xvdXIuICovXG4gIHByaXZhdGUgc3Ryb2tlT2YocmVnaW9uOiBSZWdpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiByZWdpb24uY29sb3IgfHwgdGhpcy5zdG9yZS5nZXRTaGFwZUNvbG9yKCkgfHwgJyMwMGZmZmYnO1xuICB9XG5cbiAgLyoqIERyYXcgYSByZWdpb24ncyBjbGFzc2lmaWNhdGlvbiBsYWJlbCBhdCBpdHMgdG9wLWxlZnQsIHdoZW4gbGFiZWxzIGFyZSBlbmFibGVkIChtYXRjaGVzIE9TRCkuICovXG4gIHByaXZhdGUgZHJhd0xhYmVsKHJlZ2lvbjogUmVnaW9uLCBsYXllcjogU2NyZWVuTGF5ZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3RvcmUuZ2V0U2hvd1NoYXBlTGFiZWwoKSB8fCByZWdpb24uaXNQcm9maWxlPy4oKSkgcmV0dXJuO1xuICAgIGNvbnN0IGxhYmVsID0gcmVnaW9uLmxhYmVsO1xuICAgIGNvbnN0IGJiID0gbGFiZWwgPyByZWdpb25CQm94KHJlZ2lvbikgOiBudWxsO1xuICAgIGlmICghbGFiZWwgfHwgIWJiKSByZXR1cm47XG4gICAgY29uc3QgdGV4dCA9IHN2Z0VsKCd0ZXh0Jyk7XG4gICAgdGV4dC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAnI2ZmZicpO1xuICAgIHRleHQuc2V0QXR0cmlidXRlKCdzdHJva2UnLCAnIzAwMCcpO1xuICAgIHRleHQuc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCAnMycpO1xuICAgIHRleHQuc2V0QXR0cmlidXRlKCdwYWludC1vcmRlcicsICdzdHJva2UnKTtcbiAgICB0ZXh0LnNldEF0dHJpYnV0ZSgnZm9udCcsICcxMnB4IHNhbnMtc2VyaWYnKTtcbiAgICB0ZXh0LnNldEF0dHJpYnV0ZSgncG9pbnRlci1ldmVudHMnLCAnbm9uZScpO1xuICAgIHRleHQudGV4dENvbnRlbnQgPSBsYWJlbDtcbiAgICBsYXllci5hdCh0ZXh0LCBiYi54MCwgYmIueTAsIHsgZHk6IC00IH0pO1xuICB9XG5cbiAgLyoqIERyYXcgZ3JhYiBoYW5kbGVzIGZvciBhIHNlbGVjdGVkIHJlZ2lvbjogcmVjdGFuZ2xlIGNvcm5lcnMgb3IgcG9seWdvbiB2ZXJ0aWNlcy4gKi9cbiAgcHJpdmF0ZSBkcmF3SGFuZGxlcyhyZWdpb246IFJlZ2lvbiwgbGF5ZXI6IFNjcmVlbkxheWVyKTogdm9pZCB7XG4gICAgY29uc3QgYiA9IHJlZ2lvbi5ib3VuZHM7XG4gICAgaWYgKCFiKSByZXR1cm47XG4gICAgY29uc3Qgc3Ryb2tlID0gdGhpcy5zdHJva2VPZihyZWdpb24pO1xuICAgIGNvbnN0IGhhbmRsZSA9IChpbWdYOiBudW1iZXIsIGltZ1k6IG51bWJlcik6IHZvaWQgPT4ge1xuICAgICAgY29uc3QgZWwgPSBzdmdFbCgncmVjdCcpO1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCd3aWR0aCcsIGAke0hBTkRMRV9TSVpFfWApO1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHtIQU5ETEVfU0laRX1gKTtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZSgnZmlsbCcsICcjZmZmJyk7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHN0cm9rZSk7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsICcxLjUnKTtcbiAgICAgIGxheWVyLmF0KGVsLCBpbWdYLCBpbWdZLCB7IGR4OiAtSEFORExFX1NJWkUgLyAyLCBkeTogLUhBTkRMRV9TSVpFIC8gMiB9KTtcbiAgICB9O1xuICAgIGlmIChiIGluc3RhbmNlb2YgUmVjdGFuZ2xlKSB7XG4gICAgICBoYW5kbGUoYi54LCBiLnkpO1xuICAgICAgaGFuZGxlKGIueCArIGIud2lkdGgsIGIueSk7XG4gICAgICBoYW5kbGUoYi54LCBiLnkgKyBiLmhlaWdodCk7XG4gICAgICBoYW5kbGUoYi54ICsgYi53aWR0aCwgYi55ICsgYi5oZWlnaHQpO1xuICAgIH0gZWxzZSBpZiAoYiBpbnN0YW5jZW9mIFBvbHlnb24pIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYi5ucG9pbnRzOyBpKyspIGhhbmRsZShiLnhwb2ludHNbaV0sIGIueXBvaW50c1tpXSk7XG4gICAgICBmb3IgKGNvbnN0IHJpbmcgb2YgYi5ob2xlcyA/PyBbXSkgZm9yIChjb25zdCBbaHgsIGh5XSBvZiByaW5nKSBoYW5kbGUoaHgsIGh5KTtcbiAgICAgIC8vIEJlemllciByZWdpb25zIGFsc28gZXhwb3NlIHRoZWlyIHRhbmdlbnQgY29udHJvbCBwb2ludHMgKGNpcmNsZXMpIGpvaW5lZCB0byB0aGUgYW5jaG9yXG4gICAgICAvLyBieSBhIHRoaW4gbGluZSwgbWF0Y2hpbmcgdGhlIE9TRCBvdmVybGF5J3MgZWRpdGFibGUgYmV6aWVyIGhhbmRsZXMuIFN0b3JlZCBoYW5kbGVzIHdoZW5cbiAgICAgIC8vIHByZXNlbnQsIGVsc2UgdGhlIENhdG11bGwtUm9tIGRlZmF1bHQgdGhlIGN1cnZlIGlzIGRyYXduIHdpdGguXG4gICAgICBpZiAoYi5iZXppZXIpIHtcbiAgICAgICAgZm9yIChsZXQgcmluZyA9IC0xOyByaW5nIDwgKGIuaG9sZXM/Lmxlbmd0aCA/PyAwKTsgcmluZysrKSB7XG4gICAgICAgICAgY29uc3QgeyB4cywgeXMgfSA9IHJpbmdPZihiLCByaW5nKTtcbiAgICAgICAgICByaW5nSGFuZGxlcyhiLCByaW5nKS5mb3JFYWNoKChoLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAoaC5oYXNPdXQpIHRoaXMuZHJhd0JlemllckhhbmRsZSh4c1tpXSwgeXNbaV0sIGgub3V0LCBzdHJva2UsIGxheWVyKTtcbiAgICAgICAgICAgIGlmIChoLmhhc0luKSB0aGlzLmRyYXdCZXppZXJIYW5kbGUoeHNbaV0sIHlzW2ldLCBoLmluLCBzdHJva2UsIGxheWVyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBEcmF3IG9uZSBiZXppZXIgY29udHJvbCBwb2ludCBhcyBhIHNtYWxsIGNpcmNsZSBjb25uZWN0ZWQgdG8gaXRzIGFuY2hvciBieSBhIHRhbmdlbnQgbGluZS5cbiAgICogIGBoYW5kbGVgIGlzIHRoZSBjb250cm9sIHBvaW50J3MgYWJzb2x1dGUgcG9zaXRpb24gaW4gaW1hZ2Ugc3BhY2UuICovXG4gIHByaXZhdGUgZHJhd0JlemllckhhbmRsZShcbiAgICBheDogbnVtYmVyLFxuICAgIGF5OiBudW1iZXIsXG4gICAgaGFuZGxlOiBbbnVtYmVyLCBudW1iZXJdLFxuICAgIHN0cm9rZTogc3RyaW5nLFxuICAgIGxheWVyOiBTY3JlZW5MYXllcixcbiAgKTogdm9pZCB7XG4gICAgaWYgKGhhbmRsZVswXSA9PT0gYXggJiYgaGFuZGxlWzFdID09PSBheSkgcmV0dXJuO1xuICAgIGNvbnN0IGxpbmUgPSBsYXllci5saW5lKGF4LCBheSwgaGFuZGxlWzBdLCBoYW5kbGVbMV0pO1xuICAgIGxpbmUuc2V0QXR0cmlidXRlKCdzdHJva2UnLCBzdHJva2UpO1xuICAgIGxpbmUuc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCAnMScpO1xuICAgIGxpbmUuc2V0QXR0cmlidXRlKCdzdHJva2Utb3BhY2l0eScsICcwLjcnKTtcbiAgICBjb25zdCBkb3QgPSBzdmdFbCgnY2lyY2xlJyk7XG4gICAgZG90LnNldEF0dHJpYnV0ZSgncicsIGAke0hBTkRMRV9TSVpFIC8gMn1gKTtcbiAgICBkb3Quc2V0QXR0cmlidXRlKCdmaWxsJywgc3Ryb2tlKTtcbiAgICBkb3Quc2V0QXR0cmlidXRlKCdzdHJva2UnLCAnI2ZmZicpO1xuICAgIGRvdC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsICcxJyk7XG4gICAgbGF5ZXIuYXQoZG90LCBoYW5kbGVbMF0sIGhhbmRsZVsxXSwgeyB4OiAnY3gnLCB5OiAnY3knIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHlsZShlbDogU1ZHRWxlbWVudCwgc3Ryb2tlOiBzdHJpbmcsIGlzU2VsZWN0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHN0cm9rZSk7XG4gICAgZWwuc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCBpc1NlbGVjdGVkID8gJzQnIDogJzInKTtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBpc1NlbGVjdGVkID8gc3Ryb2tlIDogJ25vbmUnKTtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwtb3BhY2l0eScsIGlzU2VsZWN0ZWQgPyAnMC4zNScgOiAnMCcpO1xuICB9XG5cbiAgLyoqIERyYXcgdGhlIGluLXByb2dyZXNzIHJlY3RhbmdsZSAvIHBhdGggcHJldmlldy4gKi9cbiAgcHJpdmF0ZSBkcmF3RHJhZnQoZHJhZnQ6IFJlZ2lvbkRyYWZ0LCBsYXllcjogU2NyZWVuTGF5ZXIpOiB2b2lkIHtcbiAgICBpZiAoZHJhZnQucmVjdCkge1xuICAgICAgY29uc3QgeyB4MCwgeTAsIHgxLCB5MSB9ID0gZHJhZnQucmVjdDtcbiAgICAgIGNvbnN0IGVsID0gc3ZnRWwoJ3JlY3QnKTtcbiAgICAgIGxheWVyLnBsYWNlKGVsLCAoZSwgcHJvamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBbbHgsIGx5XSA9IHByb2plY3QoTWF0aC5taW4oeDAsIHgxKSwgTWF0aC5taW4oeTAsIHkxKSk7XG4gICAgICAgIGNvbnN0IFtyeCwgcnldID0gcHJvamVjdChNYXRoLm1heCh4MCwgeDEpLCBNYXRoLm1heCh5MCwgeTEpKTtcbiAgICAgICAgZS5zZXRBdHRyaWJ1dGUoJ3gnLCBgJHtseH1gKTtcbiAgICAgICAgZS5zZXRBdHRyaWJ1dGUoJ3knLCBgJHtseX1gKTtcbiAgICAgICAgZS5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYCR7TWF0aC5hYnMocnggLSBseCl9YCk7XG4gICAgICAgIGUuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHtNYXRoLmFicyhyeSAtIGx5KX1gKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zdHlsZURyYWZ0KGVsKTtcbiAgICB9XG4gICAgaWYgKGRyYWZ0LnBhdGggJiYgZHJhZnQucGF0aC5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3R5bGVEcmFmdChcbiAgICAgICAgbGF5ZXIucG9seShcbiAgICAgICAgICAncG9seWxpbmUnLFxuICAgICAgICAgIGRyYWZ0LnBhdGgubWFwKChbeCwgeV0pID0+ICh7IHgsIHkgfSkpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0eWxlRHJhZnQoZWw6IFNWR0VsZW1lbnQpOiB2b2lkIHtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHRoaXMuc3RvcmUuZ2V0U2hhcGVDb2xvcigpIHx8ICcjMDBmZmZmJyk7XG4gICAgZWwuc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCAnMicpO1xuICAgIGVsLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWRhc2hhcnJheScsICc0IDMnKTtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAnbm9uZScpO1xuICAgIGVsLnNldEF0dHJpYnV0ZSgndmVjdG9yLWVmZmVjdCcsICdub24tc2NhbGluZy1zdHJva2UnKTtcbiAgfVxufVxuIl19
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaW9uLXN2Zy1yZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvaW1wbGVtZW50YXRpb25zL25hcGFyaS1qcy9yZWdpb24tb3ZlcmxheS9yZWdpb24tc3ZnLXJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUYsT0FBTyxFQUF1QixpQkFBaUIsRUFBRSxLQUFLLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM1RyxPQUFPLEVBQ0wsVUFBVSxFQUNWLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLFVBQVUsR0FDWCxNQUFNLHNDQUFzQyxDQUFDO0FBRTlDLE1BQU0sTUFBTSxHQUFHLDRCQUE0QixDQUFDO0FBQzVDLHdDQUF3QztBQUN4QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBZ0I3Qjs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyx1QkFBdUI7SUFLbEMsWUFDbUIsR0FBa0IsRUFDbEIsS0FBa0I7UUFEbEIsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQUNsQixVQUFLLEdBQUwsS0FBSyxDQUFhO1FBTHJDLGdHQUFnRztRQUN4RixjQUFTLEdBQTBCLElBQUksQ0FBQztRQU05QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ3pDLFdBQVcsRUFBRSxNQUFNO1lBQ25CLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEs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Q0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsSUFBSSxTQUFTLENBQUMsQ0FBQztRQUNuRSxFQUFFLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyQyxFQUFFLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLEVBQUUsQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDekQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9seWdvbiwgUmVjdGFuZ2xlLCBSZWdpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcmVnaW9uJztcbmltcG9ydCB0eXBlIHsgUmVnaW9uU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9yZWdpb24tc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyByZWdpb25CQm94LCByaW5nSGFuZGxlcywgcmluZ09mIH0gZnJvbSAnLi4vLi4vLi4vcmVnaW9uLW92ZXJsYXkvcmVnaW9uLWdlb21ldHJ5JztcbmltcG9ydCB7IEFmZmluZSwgU2NyZWVuTGF5ZXIsIFN2Z1JlZ2lvblJlbmRlcmVyLCBzdmdFbCB9IGZyb20gJy4uLy4uLy4uL3JlZ2lvbi1vdmVybGF5L3N2Zy1yZWdpb24tcmVuZGVyZXInO1xuaW1wb3J0IHtcbiAgYXBwbHlQYWludCxcbiAgaXNGaWxsZWQsXG4gIHBsYWNlSW5zaWRlTGFiZWwsXG4gIHJlZ2lvbkxhYmVsU3BvdHMsXG4gIHNoYXBlUGFpbnQsXG59IGZyb20gJy4uLy4uLy4uL3JlZ2lvbi1vdmVybGF5L3JlZ2lvbi1zdHlsZSc7XG5cbmNvbnN0IFNWR19OUyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG4vKiogUmVuZGVyZWQgaGFuZGxlIHNpemUgKHNjcmVlbiBweCkuICovXG5leHBvcnQgY29uc3QgSEFORExFX1NJWkUgPSA3O1xuXG4vKiogQW4gYXhpcy1hbGlnbmVkIGJveCBmcm9tIGEgZHJhZydzIHN0YXJ0IHRvIGl0cyBjdXJyZW50IHBvaW50IChhbnkgb3JkZXIpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEcmFnQm94IHtcbiAgeDA6IG51bWJlcjtcbiAgeTA6IG51bWJlcjtcbiAgeDE6IG51bWJlcjtcbiAgeTE6IG51bWJlcjtcbn1cblxuLyoqIEEgcmVnaW9uIGJlaW5nIGRyYXduOiBhIHJlY3RhbmdsZSBkcmFnLCBvciBhIGZyZWVoYW5kIC8gY2xpY2stcGxhY2VkIHBhdGguICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lvbkRyYWZ0IHtcbiAgcmVjdDogRHJhZ0JveCB8IG51bGw7XG4gIHBhdGg6IEFycmF5PFtudW1iZXIsIG51bWJlcl0+IHwgbnVsbDtcbn1cblxuLyoqXG4gKiBXaGF0IHRoZSBuYXBhcmkgcmVnaW9uIG92ZXJsYXkgZHJhd3MsIG92ZXIgdGhlIHNoYXJlZCB7QGxpbmsgU3ZnUmVnaW9uUmVuZGVyZXJ9OiB0aGUgcmVnaW9uc1xuICogaW4gd29ybGQgY29vcmRpbmF0ZXMgKHN0eWxlZCBmcm9tIHRoZSBzdG9yZSdzIGNvbG91cnMsIGxhYmVsbGVkIHdoZW4gbGFiZWxzIGFyZSBvbiksIGFuZCBpblxuICogc2NyZWVuIHNwYWNlIHRoZSBzZWxlY3RlZCByZWdpb25zJyBncmFiIGhhbmRsZXMgKGNvcm5lcnMsIHZlcnRpY2VzLCBiw6l6aWVyIGNvbnRyb2wgcG9pbnRzKSxcbiAqIHRoZSBkcmFmdCBiZWluZyBkcmF3biBhbmQgdGhlIHJ1YmJlci1iYW5kIG1hcnF1ZWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBOYXBhcmlSZWdpb25TdmdSZW5kZXJlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFN2Z1JlZ2lvblJlbmRlcmVyO1xuICAvKiogRGVkaWNhdGVkIG1hcnF1ZWUgcmVjdCBlbGVtZW50LCB1cGRhdGVkIGRpcmVjdGx5IGR1cmluZyB0aGUgZHJhZyAobm8gZnVsbCByZWdpb24gcmVkcmF3KS4gKi9cbiAgcHJpdmF0ZSBtYXJxdWVlRWw6IFNWR1JlY3RFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdmc6IFNWR1NWR0VsZW1lbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZTogUmVnaW9uU3RvcmUsXG4gICkge1xuICAgIHRoaXMucmVuZGVyZXIgPSBuZXcgU3ZnUmVnaW9uUmVuZGVyZXIoc3ZnLCB7XG4gICAgICByZWN0RWxlbWVudDogJ3JlY3QnLFxuICAgICAgc3R5bGVTaGFwZTogKGVsLCByZWdpb24sIHNlbGVjdGVkKSA9PiB0aGlzLnN0eWxlKGVsLCB0aGlzLnN0cm9rZU9mKHJlZ2lvbiksIHNlbGVjdGVkKSxcbiAgICAgIGRlY29yYXRlOiAocmVnaW9uLCBfaSwgX3NlbGVjdGVkLCBsYXllcikgPT4gdGhpcy5kcmF3TGFiZWwocmVnaW9uLCBsYXllciksXG4gICAgICBza2lwOiAocmVnaW9uKSA9PiAhIXJlZ2lvbi5pc1Byb2ZpbGU/LigpIHx8IHN0b3JlLmlzQ2xhc3NIaWRkZW4ocmVnaW9uLmxhYmVsKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBGb2xsb3cgdGhlIGNhbWVyYTogb25lIHRyYW5zZm9ybSBhdHRyaWJ1dGUgcGx1cyB0aGUgc2NyZWVuLXNwYWNlIGVsZW1lbnRzLiAqL1xuICBzZXRDYW1lcmEoYWZmaW5lOiBBZmZpbmUpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLnNldENhbWVyYShhZmZpbmUpO1xuICB9XG5cbiAgLyoqIFJlYnVpbGQgdGhlIHJlZ2lvbnMgKHdvcmxkIHNwYWNlKSBhbmQgdGhlaXIgbGFiZWxzLiAqL1xuICByZW5kZXIocmVnaW9uczogcmVhZG9ubHkgUmVnaW9uW10sIHNlbGVjdGVkOiByZWFkb25seSBudW1iZXJbXSk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIucmVuZGVyKHJlZ2lvbnMsIHNlbGVjdGVkKTtcbiAgfVxuXG4gIC8qKiBSZWJ1aWxkIHRoZSBzY3JlZW4tc3BhY2Ugb3ZlcmxheSBvbmx5OiB0aGUgc2VsZWN0ZWQgcmVnaW9ucycgaGFuZGxlcyBhbmQgdGhlIGRyYWZ0LiAqL1xuICByZW5kZXJPdmVybGF5KHJlZ2lvbnM6IHJlYWRvbmx5IFJlZ2lvbltdLCBzZWxlY3RlZDogcmVhZG9ubHkgbnVtYmVyW10sIGRyYWZ0OiBSZWdpb25EcmFmdCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIucmVuZGVyT3ZlcmxheSgobGF5ZXIpID0+IHtcbiAgICAgIGZvciAoY29uc3QgaSBvZiBzZWxlY3RlZCkge1xuICAgICAgICBjb25zdCByZWdpb24gPSByZWdpb25zW2ldO1xuICAgICAgICBpZiAocmVnaW9uICYmICFyZWdpb24uaXNQcm9maWxlPy4oKSkgdGhpcy5kcmF3SGFuZGxlcyhyZWdpb24sIGxheWVyKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZHJhd0RyYWZ0KGRyYWZ0LCBsYXllcik7XG4gICAgfSk7XG4gIH1cblxuICAvKiogU2hvdyB0aGUgbWFycXVlZSBvdmVyIHN2Zy1sb2NhbCBjb3JuZXJzIGAobHgsIGx5KWDigJNgKHJ4LCByeSlgLCBjcmVhdGluZyBpdCBvbiBmaXJzdCB1c2UuICovXG4gIHNob3dNYXJxdWVlKGx4OiBudW1iZXIsIGx5OiBudW1iZXIsIHJ4OiBudW1iZXIsIHJ5OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubWFycXVlZUVsIHx8ICF0aGlzLm1hcnF1ZWVFbC5wYXJlbnROb2RlKSB7XG4gICAgICB0aGlzLm1hcnF1ZWVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsICdyZWN0Jyk7XG4gICAgICB0aGlzLm1hcnF1ZWVFbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsICcjNGRhM2ZmJyk7XG4gICAgICB0aGlzLm1hcnF1ZWVFbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsICcxJyk7XG4gICAgICB0aGlzLm1hcnF1ZWVFbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS1kYXNoYXJyYXknLCAnNCAzJyk7XG4gICAgICB0aGlzLm1hcnF1ZWVFbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAnIzRkYTNmZicpO1xuICAgICAgdGhpcy5tYXJxdWVlRWwuc2V0QXR0cmlidXRlKCdmaWxsLW9wYWNpdHknLCAnMC4xMicpO1xuICAgICAgdGhpcy5tYXJxdWVlRWwuc2V0QXR0cmlidXRlKCd2ZWN0b3ItZWZmZWN0JywgJ25vbi1zY2FsaW5nLXN0cm9rZScpO1xuICAgICAgdGhpcy5zdmcuYXBwZW5kQ2hpbGQodGhpcy5tYXJxdWVlRWwpO1xuICAgIH1cbiAgICB0aGlzLm1hcnF1ZWVFbC5zZXRBdHRyaWJ1dGUoJ3gnLCBgJHtseH1gKTtcbiAgICB0aGlzLm1hcnF1ZWVFbC5zZXRBdHRyaWJ1dGUoJ3knLCBgJHtseX1gKTtcbiAgICB0aGlzLm1hcnF1ZWVFbC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYCR7TWF0aC5hYnMocnggLSBseCl9YCk7XG4gICAgdGhpcy5tYXJxdWVlRWwuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHtNYXRoLmFicyhyeSAtIGx5KX1gKTtcbiAgfVxuXG4gIC8qKiBSZW1vdmUgdGhlIG1hcnF1ZWUgZWxlbWVudCBmcm9tIHRoZSBTVkcuICovXG4gIGNsZWFyTWFycXVlZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tYXJxdWVlRWw/LnBhcmVudE5vZGUpIHRoaXMubWFycXVlZUVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5tYXJxdWVlRWwpO1xuICAgIHRoaXMubWFycXVlZUVsID0gbnVsbDtcbiAgfVxuXG4gIC8qKiBBIHJlZ2lvbidzIG91dGxpbmUgY29sb3VyLiAqL1xuICBwcml2YXRlIHN0cm9rZU9mKHJlZ2lvbjogUmVnaW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVnaW9uLmNvbG9yIHx8IHRoaXMuc3RvcmUuZ2V0U2hhcGVDb2xvcigpIHx8ICcjMDBmZmZmJztcbiAgfVxuXG4gIC8qKiBEcmF3IGEgcmVnaW9uJ3MgY2xhc3NpZmljYXRpb24gbGFiZWwgYXQgaXRzIHRvcC1sZWZ0LCB3aGVuIGxhYmVscyBhcmUgZW5hYmxlZCAobWF0Y2hlcyBPU0QpLiAqL1xuICBwcml2YXRlIGRyYXdMYWJlbChyZWdpb246IFJlZ2lvbiwgbGF5ZXI6IFNjcmVlbkxheWVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0b3JlLmdldFNob3dTaGFwZUxhYmVsKCkgfHwgcmVnaW9uLmlzUHJvZmlsZT8uKCkgfHwgdGhpcy5zdG9yZS5pc0xhYmVsQ292ZXJlZChyZWdpb24ubGFiZWwpKSByZXR1cm47XG4gICAgY29uc3QgbGFiZWwgPSByZWdpb24ubGFiZWw7XG4gICAgLy8gVGhlIGZpbGxlZCAoYXRsYXMpIGxvb2sgbGFiZWxzIGVhY2ggcGFydCBpbnNpZGUgaXQsIHdoZXJlIGl0IGZpdHMuXG4gICAgaWYgKGxhYmVsICYmIGlzRmlsbGVkKHRoaXMuc3RvcmUuZ2V0UmVnaW9uU3R5bGUoKSkpIHtcbiAgICAgIGZvciAoY29uc3Qgc3BvdCBvZiByZWdpb25MYWJlbFNwb3RzKHJlZ2lvbikpIHBsYWNlSW5zaWRlTGFiZWwobGF5ZXIsIGxhYmVsLCBzcG90KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYmIgPSBsYWJlbCA/IHJlZ2lvbkJCb3gocmVnaW9uKSA6IG51bGw7XG4gICAgaWYgKCFsYWJlbCB8fCAhYmIpIHJldHVybjtcbiAgICBjb25zdCB0ZXh0ID0gc3ZnRWwoJ3RleHQnKTtcbiAgICB0ZXh0LnNldEF0dHJpYnV0ZSgnZmlsbCcsICcjZmZmJyk7XG4gICAgdGV4dC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsICcjMDAwJyk7XG4gICAgdGV4dC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsICczJyk7XG4gICAgdGV4dC5zZXRBdHRyaWJ1dGUoJ3BhaW50LW9yZGVyJywgJ3N0cm9rZScpO1xuICAgIHRleHQuc2V0QXR0cmlidXRlKCdmb250JywgJzEycHggc2Fucy1zZXJpZicpO1xuICAgIHRleHQuc2V0QXR0cmlidXRlKCdwb2ludGVyLWV2ZW50cycsICdub25lJyk7XG4gICAgdGV4dC50ZXh0Q29udGVudCA9IGxhYmVsO1xuICAgIGxheWVyLmF0KHRleHQsIGJiLngwLCBiYi55MCwgeyBkeTogLTQgfSk7XG4gIH1cblxuICAvKiogRHJhdyBncmFiIGhhbmRsZXMgZm9yIGEgc2VsZWN0ZWQgcmVnaW9uOiByZWN0YW5nbGUgY29ybmVycyBvciBwb2x5Z29uIHZlcnRpY2VzLiAqL1xuICBwcml2YXRlIGRyYXdIYW5kbGVzKHJlZ2lvbjogUmVnaW9uLCBsYXllcjogU2NyZWVuTGF5ZXIpOiB2b2lkIHtcbiAgICBjb25zdCBiID0gcmVnaW9uLmJvdW5kcztcbiAgICBpZiAoIWIpIHJldHVybjtcbiAgICBjb25zdCBzdHJva2UgPSB0aGlzLnN0cm9rZU9mKHJlZ2lvbik7XG4gICAgY29uc3QgaGFuZGxlID0gKGltZ1g6IG51bWJlciwgaW1nWTogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCBlbCA9IHN2Z0VsKCdyZWN0Jyk7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYCR7SEFORExFX1NJWkV9YCk7XG4gICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIGAke0hBTkRMRV9TSVpFfWApO1xuICAgICAgZWwuc2V0QXR0cmlidXRlKCdmaWxsJywgJyNmZmYnKTtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgc3Ryb2tlKTtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgJzEuNScpO1xuICAgICAgbGF5ZXIuYXQoZWwsIGltZ1gsIGltZ1ksIHsgZHg6IC1IQU5ETEVfU0laRSAvIDIsIGR5OiAtSEFORExFX1NJWkUgLyAyIH0pO1xuICAgIH07XG4gICAgaWYgKGIgaW5zdGFuY2VvZiBSZWN0YW5nbGUpIHtcbiAgICAgIGhhbmRsZShiLngsIGIueSk7XG4gICAgICBoYW5kbGUoYi54ICsgYi53aWR0aCwgYi55KTtcbiAgICAgIGhhbmRsZShiLngsIGIueSArIGIuaGVpZ2h0KTtcbiAgICAgIGhhbmRsZShiLnggKyBiLndpZHRoLCBiLnkgKyBiLmhlaWdodCk7XG4gICAgfSBlbHNlIGlmIChiIGluc3RhbmNlb2YgUG9seWdvbikge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBiLm5wb2ludHM7IGkrKykgaGFuZGxlKGIueHBvaW50c1tpXSwgYi55cG9pbnRzW2ldKTtcbiAgICAgIGZvciAoY29uc3QgcmluZyBvZiBiLmhvbGVzID8/IFtdKSBmb3IgKGNvbnN0IFtoeCwgaHldIG9mIHJpbmcpIGhhbmRsZShoeCwgaHkpO1xuICAgICAgLy8gQmV6aWVyIHJlZ2lvbnMgYWxzbyBleHBvc2UgdGhlaXIgdGFuZ2VudCBjb250cm9sIHBvaW50cyAoY2lyY2xlcykgam9pbmVkIHRvIHRoZSBhbmNob3JcbiAgICAgIC8vIGJ5IGEgdGhpbiBsaW5lLCBtYXRjaGluZyB0aGUgT1NEIG92ZXJsYXkncyBlZGl0YWJsZSBiZXppZXIgaGFuZGxlcy4gU3RvcmVkIGhhbmRsZXMgd2hlblxuICAgICAgLy8gcHJlc2VudCwgZWxzZSB0aGUgQ2F0bXVsbC1Sb20gZGVmYXVsdCB0aGUgY3VydmUgaXMgZHJhd24gd2l0aC5cbiAgICAgIGlmIChiLmJlemllcikge1xuICAgICAgICBmb3IgKGxldCByaW5nID0gLTE7IHJpbmcgPCAoYi5ob2xlcz8ubGVuZ3RoID8/IDApOyByaW5nKyspIHtcbiAgICAgICAgICBjb25zdCB7IHhzLCB5cyB9ID0gcmluZ09mKGIsIHJpbmcpO1xuICAgICAgICAgIHJpbmdIYW5kbGVzKGIsIHJpbmcpLmZvckVhY2goKGgsIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChoLmhhc091dCkgdGhpcy5kcmF3QmV6aWVySGFuZGxlKHhzW2ldLCB5c1tpXSwgaC5vdXQsIHN0cm9rZSwgbGF5ZXIpO1xuICAgICAgICAgICAgaWYgKGguaGFzSW4pIHRoaXMuZHJhd0JlemllckhhbmRsZSh4c1tpXSwgeXNbaV0sIGguaW4sIHN0cm9rZSwgbGF5ZXIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIERyYXcgb25lIGJlemllciBjb250cm9sIHBvaW50IGFzIGEgc21hbGwgY2lyY2xlIGNvbm5lY3RlZCB0byBpdHMgYW5jaG9yIGJ5IGEgdGFuZ2VudCBsaW5lLlxuICAgKiAgYGhhbmRsZWAgaXMgdGhlIGNvbnRyb2wgcG9pbnQncyBhYnNvbHV0ZSBwb3NpdGlvbiBpbiBpbWFnZSBzcGFjZS4gKi9cbiAgcHJpdmF0ZSBkcmF3QmV6aWVySGFuZGxlKFxuICAgIGF4OiBudW1iZXIsXG4gICAgYXk6IG51bWJlcixcbiAgICBoYW5kbGU6IFtudW1iZXIsIG51bWJlcl0sXG4gICAgc3Ryb2tlOiBzdHJpbmcsXG4gICAgbGF5ZXI6IFNjcmVlbkxheWVyLFxuICApOiB2b2lkIHtcbiAgICBpZiAoaGFuZGxlWzBdID09PSBheCAmJiBoYW5kbGVbMV0gPT09IGF5KSByZXR1cm47XG4gICAgY29uc3QgbGluZSA9IGxheWVyLmxpbmUoYXgsIGF5LCBoYW5kbGVbMF0sIGhhbmRsZVsxXSk7XG4gICAgbGluZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHN0cm9rZSk7XG4gICAgbGluZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsICcxJyk7XG4gICAgbGluZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS1vcGFjaXR5JywgJzAuNycpO1xuICAgIGNvbnN0IGRvdCA9IHN2Z0VsKCdjaXJjbGUnKTtcbiAgICBkb3Quc2V0QXR0cmlidXRlKCdyJywgYCR7SEFORExFX1NJWkUgLyAyfWApO1xuICAgIGRvdC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBzdHJva2UpO1xuICAgIGRvdC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsICcjZmZmJyk7XG4gICAgZG90LnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgJzEnKTtcbiAgICBsYXllci5hdChkb3QsIGhhbmRsZVswXSwgaGFuZGxlWzFdLCB7IHg6ICdjeCcsIHk6ICdjeScgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0eWxlKGVsOiBTVkdFbGVtZW50LCBzdHJva2U6IHN0cmluZywgaXNTZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IHN0eWxlID0gdGhpcy5zdG9yZS5nZXRSZWdpb25TdHlsZSgpO1xuICAgIGlmIChpc0ZpbGxlZChzdHlsZSkpIHtcbiAgICAgIGFwcGx5UGFpbnQoZWwsIHNoYXBlUGFpbnQoc3Ryb2tlLCBpc1NlbGVjdGVkLCBzdHlsZSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHN0cm9rZSk7XG4gICAgZWwuc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCBpc1NlbGVjdGVkID8gJzQnIDogJzInKTtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBpc1NlbGVjdGVkID8gc3Ryb2tlIDogJ25vbmUnKTtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwtb3BhY2l0eScsIGlzU2VsZWN0ZWQgPyAnMC4zNScgOiAnMCcpO1xuICB9XG5cbiAgLyoqIERyYXcgdGhlIGluLXByb2dyZXNzIHJlY3RhbmdsZSAvIHBhdGggcHJldmlldy4gKi9cbiAgcHJpdmF0ZSBkcmF3RHJhZnQoZHJhZnQ6IFJlZ2lvbkRyYWZ0LCBsYXllcjogU2NyZWVuTGF5ZXIpOiB2b2lkIHtcbiAgICBpZiAoZHJhZnQucmVjdCkge1xuICAgICAgY29uc3QgeyB4MCwgeTAsIHgxLCB5MSB9ID0gZHJhZnQucmVjdDtcbiAgICAgIGNvbnN0IGVsID0gc3ZnRWwoJ3JlY3QnKTtcbiAgICAgIGxheWVyLnBsYWNlKGVsLCAoZSwgcHJvamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBbbHgsIGx5XSA9IHByb2plY3QoTWF0aC5taW4oeDAsIHgxKSwgTWF0aC5taW4oeTAsIHkxKSk7XG4gICAgICAgIGNvbnN0IFtyeCwgcnldID0gcHJvamVjdChNYXRoLm1heCh4MCwgeDEpLCBNYXRoLm1heCh5MCwgeTEpKTtcbiAgICAgICAgZS5zZXRBdHRyaWJ1dGUoJ3gnLCBgJHtseH1gKTtcbiAgICAgICAgZS5zZXRBdHRyaWJ1dGUoJ3knLCBgJHtseX1gKTtcbiAgICAgICAgZS5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYCR7TWF0aC5hYnMocnggLSBseCl9YCk7XG4gICAgICAgIGUuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHtNYXRoLmFicyhyeSAtIGx5KX1gKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zdHlsZURyYWZ0KGVsKTtcbiAgICB9XG4gICAgaWYgKGRyYWZ0LnBhdGggJiYgZHJhZnQucGF0aC5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3R5bGVEcmFmdChcbiAgICAgICAgbGF5ZXIucG9seShcbiAgICAgICAgICAncG9seWxpbmUnLFxuICAgICAgICAgIGRyYWZ0LnBhdGgubWFwKChbeCwgeV0pID0+ICh7IHgsIHkgfSkpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0eWxlRHJhZnQoZWw6IFNWR0VsZW1lbnQpOiB2b2lkIHtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHRoaXMuc3RvcmUuZ2V0U2hhcGVDb2xvcigpIHx8ICcjMDBmZmZmJyk7XG4gICAgZWwuc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCAnMicpO1xuICAgIGVsLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWRhc2hhcnJheScsICc0IDMnKTtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAnbm9uZScpO1xuICAgIGVsLnNldEF0dHJpYnV0ZSgndmVjdG9yLWVmZmVjdCcsICdub24tc2NhbGluZy1zdHJva2UnKTtcbiAgfVxufVxuIl19
|
|
@@ -2,27 +2,38 @@ import { Rectangle, Polygon } from '../../models/region';
|
|
|
2
2
|
import { parseCssColor } from '../../contracts/color';
|
|
3
3
|
import { regionBBox, ringHandles, ringOf } from '../../region-overlay/region-geometry';
|
|
4
4
|
import { svgEl } from '../../region-overlay/svg-region-renderer';
|
|
5
|
+
import { DEFAULT_REGION_STYLE, applyPaint, isFilled, placeInsideLabel, regionLabelSpots, shapePaint, } from '../../region-overlay/region-style';
|
|
5
6
|
/** `color` with `alpha`; a colour that doesn't parse (a named one) is used as-is. */
|
|
6
7
|
export function rgba(color, alpha) {
|
|
7
8
|
const rgb = parseCssColor(color);
|
|
8
9
|
return rgb ? `rgba(${rgb[0]},${rgb[1]},${rgb[2]},${alpha})` : color;
|
|
9
10
|
}
|
|
10
|
-
/** Stroke/fill for a region shape (drawn in image coordinates by the renderer)
|
|
11
|
-
export function styleRegionShape(el, region, selected, shapeColor) {
|
|
11
|
+
/** Stroke/fill for a region shape (drawn in image coordinates by the renderer), in `style`. */
|
|
12
|
+
export function styleRegionShape(el, region, selected, shapeColor, style = DEFAULT_REGION_STYLE) {
|
|
12
13
|
const color = region.color || shapeColor;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
if (!isFilled(style)) {
|
|
15
|
+
el.setAttribute('fill', selected ? rgba(color, 0.35) : 'none');
|
|
16
|
+
el.setAttribute('stroke', color);
|
|
17
|
+
el.setAttribute('stroke-width', selected ? '4' : '2');
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
applyPaint(el, shapePaint(color, selected, style));
|
|
16
21
|
}
|
|
17
22
|
/**
|
|
18
23
|
* The class label (legend) just above the region's top-left — mirrors Plotly's
|
|
19
24
|
* per-shape label, drawn in the region's colour. region.label is restored from
|
|
20
25
|
* the shape's legend in getRegion().
|
|
21
26
|
*/
|
|
22
|
-
export function drawRegionLabel(layer, region, shapeColor) {
|
|
27
|
+
export function drawRegionLabel(layer, region, shapeColor, style = DEFAULT_REGION_STYLE) {
|
|
23
28
|
const label = region.label;
|
|
24
29
|
if (label == null || `${label}`.length === 0)
|
|
25
30
|
return;
|
|
31
|
+
// The filled (atlas) look labels each part inside it, where it fits.
|
|
32
|
+
if (isFilled(style)) {
|
|
33
|
+
for (const spot of regionLabelSpots(region))
|
|
34
|
+
placeInsideLabel(layer, `${label}`, spot);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
26
37
|
// The loop-based bbox, not Math.min(...spread): spreading a large imported
|
|
27
38
|
// annotation's vertices as arguments throws RangeError (OSD-PLOTLY-34).
|
|
28
39
|
const bb = regionBBox(region);
|
|
@@ -150,4 +161,4 @@ function styleDraft(el, color) {
|
|
|
150
161
|
el.setAttribute('stroke-dasharray', '4 3');
|
|
151
162
|
el.setAttribute('stroke-width', '2');
|
|
152
163
|
}
|
|
153
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3NkLXJlZ2lvbi1vdmVybGF5LWRyYXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ltcGxlbWVudGF0aW9ucy9vc2Qvb3NkLXJlZ2lvbi1vdmVybGF5LWRyYXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkYsT0FBTyxFQUFlLEtBQUssRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBVzlFLHFGQUFxRjtBQUNyRixNQUFNLFVBQVUsSUFBSSxDQUFDLEtBQWEsRUFBRSxLQUFhO0lBQy9DLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3RFLENBQUM7QUFFRCxtRkFBbUY7QUFDbkYsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEVBQWMsRUFBRSxNQUFjLEVBQUUsUUFBaUIsRUFBRSxVQUFrQjtJQUNwRyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQztJQUN6QyxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9ELEVBQUUsQ0FBQyxZQUFZLENBQUMs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RSxVQUFVLENBQ1IsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7UUFDcEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNsQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ2xCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDbEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtLQUNuQixDQUFDLEVBQ0YsS0FBSyxDQUNOLENBQUM7QUFDSixDQUFDO0FBRUQscUZBQXFGO0FBQ3JGLE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBa0IsRUFBRSxHQUFTLEVBQUUsS0FBYTtJQUN4RSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLEVBQWMsRUFBRSxLQUFhO0lBQy9DLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLEVBQUUsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0MsRUFBRSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZ2lvbiwgUmVjdGFuZ2xlLCBQb2x5Z29uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3JlZ2lvbic7XG5pbXBvcnQgeyBwYXJzZUNzc0NvbG9yIH0gZnJvbSAnLi4vLi4vY29udHJhY3RzL2NvbG9yJztcbmltcG9ydCB7IHJlZ2lvbkJCb3gsIHJpbmdIYW5kbGVzLCByaW5nT2YgfSBmcm9tICcuLi8uLi9yZWdpb24tb3ZlcmxheS9yZWdpb24tZ2VvbWV0cnknO1xuaW1wb3J0IHsgU2NyZWVuTGF5ZXIsIHN2Z0VsIH0gZnJvbSAnLi4vLi4vcmVnaW9uLW92ZXJsYXkvc3ZnLXJlZ2lvbi1yZW5kZXJlcic7XG5cbi8qKlxuICogVGhlIE9wZW5TZWFkcmFnb24gcmVnaW9uIG92ZXJsYXkncyBsb29rOiByZWdpb24gc3Ryb2tlL2ZpbGwsIGxhYmVscywgdGhlXG4gKiBzZWxlY3RlZCByZWdpb24ncyBoYW5kbGVzLCB0aGUgbWFycXVlZSBhbmQgdGhlIGluLXByb2dyZXNzIGRyYXdpbmcuIFB1cmUgU1ZHXG4gKiBidWlsZGVycyBvdmVyIHRoZSBzaGFyZWQge0BsaW5rIFNjcmVlbkxheWVyfSAoaW1hZ2UgcG9pbnRzIGluLCBzY3JlZW4tc3BhY2VcbiAqIGVsZW1lbnRzIG91dCksIHNvIHRoZSBvdmVybGF5IGl0c2VsZiBrZWVwcyBvbmx5IGxpZmVjeWNsZSBhbmQgZ2VzdHVyZXMuXG4gKi9cblxudHlwZSBQdCA9IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTtcblxuLyoqIGBjb2xvcmAgd2l0aCBgYWxwaGFgOyBhIGNvbG91ciB0aGF0IGRvZXNuJ3QgcGFyc2UgKGEgbmFtZWQgb25lKSBpcyB1c2VkIGFzLWlzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJnYmEoY29sb3I6IHN0cmluZywgYWxwaGE6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IHJnYiA9IHBhcnNlQ3NzQ29sb3IoY29sb3IpO1xuICByZXR1cm4gcmdiID8gYHJnYmEoJHtyZ2JbMF19LCR7cmdiWzFdfSwke3JnYlsyXX0sJHthbHBoYX0pYCA6IGNvbG9yO1xufVxuXG4vKiogU3Ryb2tlL2ZpbGwgZm9yIGEgcmVnaW9uIHNoYXBlIChkcmF3biBpbiBpbWFnZSBjb29yZGluYXRlcyBieSB0aGUgcmVuZGVyZXIpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlUmVnaW9uU2hhcGUoZWw6IFNWR0VsZW1lbnQsIHJlZ2lvbjogUmVnaW9uLCBzZWxlY3RlZDogYm9vbGVhbiwgc2hhcGVDb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGNvbG9yID0gcmVnaW9uLmNvbG9yIHx8IHNoYXBlQ29sb3I7XG4gIGVsLnNldEF0dHJpYnV0ZSgnZmlsbCcsIHNlbGVjdGVkID8gcmdiYShjb2xvciwgMC4zNSkgOiAnbm9uZScpO1xuICBlbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIGNvbG9yKTtcbiAgZWwuc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCBzZWxlY3RlZCA/ICc0JyA6ICcyJyk7XG59XG5cbi8qKlxuICogVGhlIGNsYXNzIGxhYmVsIChsZWdlbmQpIGp1c3QgYWJvdmUgdGhlIHJlZ2lvbidzIHRvcC1sZWZ0IOKAlCBtaXJyb3JzIFBsb3RseSdzXG4gKiBwZXItc2hhcGUgbGFiZWwsIGRyYXduIGluIHRoZSByZWdpb24ncyBjb2xvdXIuIHJlZ2lvbi5sYWJlbCBpcyByZXN0b3JlZCBmcm9tXG4gKiB0aGUgc2hhcGUncyBsZWdlbmQgaW4gZ2V0UmVnaW9uKCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkcmF3UmVnaW9uTGFiZWwobGF5ZXI6IFNjcmVlbkxheWVyLCByZWdpb246IFJlZ2lvbiwgc2hhcGVDb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGxhYmVsID0gcmVnaW9uLmxhYmVsO1xuICBpZiAobGFiZWwgPT0gbnVsbCB8fCBgJHtsYWJlbH1gLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAvLyBUaGUgbG9vcC1iYXNlZCBiYm94LCBub3QgTWF0aC5taW4oLi4uc3ByZWFkKTogc3ByZWFkaW5nIGEgbGFyZ2UgaW1wb3J0ZWRcbiAgLy8gYW5ub3RhdGlvbidzIHZlcnRpY2VzIGFzIGFyZ3VtZW50cyB0aHJvd3MgUmFuZ2VFcnJvciAoT1NELVBMT1RMWS0zNCkuXG4gIGNvbnN0IGJiID0gcmVnaW9uQkJveChyZWdpb24pO1xuICBpZiAoIWJiKSByZXR1cm47XG4gIGNvbnN0IHRleHQgPSBzdmdFbCgndGV4dCcpO1xuICB0ZXh0LnNldEF0dHJpYnV0ZSgnZmlsbCcsIHJlZ2lvbi5jb2xvciB8fCBzaGFwZUNvbG9yKTtcbiAgdGV4dC5zZXRBdHRyaWJ1dGUoJ2ZvbnQtc2l6ZScsICcxMycpO1xuICB0ZXh0LnNldEF0dHJpYnV0ZSgnZm9udC1mYW1pbHknLCAnc2Fucy1zZXJpZicpO1xuICAvLyBEYXJrIGhhbG8gc28gdGhlIGxhYmVsIHN0YXlzIGxlZ2libGUgb3ZlciBib3RoIGJyaWdodCBhbmQgZGFyayB0aWxlcy5cbiAgdGV4dC5zZXRBdHRyaWJ1dGUoJ3BhaW50LW9yZGVyJywgJ3N0cm9rZScpO1xuICB0ZXh0LnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgJ3JnYmEoMCwwLDAsMC42NSknKTtcbiAgdGV4dC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsICcyJyk7XG4gIHRleHQudGV4dENvbnRlbnQgPSBgJHtsYWJlbH1gO1xuICBsYXllci5hdCh0ZXh0LCBiYi54MCwgYmIueTAsIHsgZHk6IC00IH0pO1xufVxuXG4vKiogQSBzbWFsbCB2ZXJ0ZXggaGFuZGxlIChmaWxsZWQgd2hlbiBlbXBoYXNpc2VkLCBob2xsb3cgb3RoZXJ3aXNlKSBhdCBhbiBpbWFnZSBwb2ludC4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJ0ZXhNYXJrZXIobGF5ZXI6IFNjcmVlbkxheWVyLCB4OiBudW1iZXIsIHk6IG51bWJlciwgZW1waGFzaXNlZDogYm9vbGVhbiwgY29sb3I6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBjID0gc3ZnRWwoJ2NpcmNsZScpO1xuICBjLnNldEF0dHJpYnV0ZSgncicsIGVtcGhhc2lzZWQgPyAnNScgOiAnNCcpO1xuICBjLnNldEF0dHJpYnV0ZSgnZmlsbCcsIGVtcGhhc2lzZWQgPyBjb2xvciA6ICcjZmZmZmZmJyk7XG4gIGMuc2V0QXR0cmlidXRlKCdzdHJva2UnLCBjb2xvcik7XG4gIGMuc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCAnMicpO1xuICBsYXllci5hdChjLCB4LCB5LCB7IHg6ICdjeCcsIHk6ICdjeScgfSk7XG59XG5cbi8qKlxuICogVGhlIHNlbGVjdGVkIHJlZ2lvbidzIGhhbmRsZXMsIGluIGl0cyBvd24gY29sb3VyOiBldmVyeSB2ZXJ0ZXggb2YgZXZlcnkgcmluZ1xuICogb2YgYSBwb2x5Z29uIChzbyBhIGRvbnV0J3MgaW5uZXIgb3V0bGluZSBzaG93cyBpdHMgdmVydGljZXMg4oCUIGppdC11aSM4NSksIHRoZVxuICogYmV6aWVyIGFuY2hvcnMgYW5kIGNvbnRyb2wgaGFuZGxlcyBvZiBhIGN1cnZlZCBvbmUsIG9yIGEgcmVjdGFuZ2xlJ3MgY29ybmVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRyYXdTZWxlY3Rpb25IYW5kbGVzKGxheWVyOiBTY3JlZW5MYXllciwgcmVnaW9uOiBSZWdpb24sIGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgYiA9IHJlZ2lvbi5ib3VuZHM7XG4gIGlmIChiIGluc3RhbmNlb2YgUG9seWdvbikge1xuICAgIGlmIChiLmJlemllcikge1xuICAgICAgZHJhd0JlemllckhhbmRsZXMobGF5ZXIsIGIsIGNvbG9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChsZXQgcmluZyA9IC0xOyByaW5nIDwgKGIuaG9sZXM/Lmxlbmd0aCA/PyAwKTsgcmluZysrKSB7XG4gICAgICBjb25zdCB7IHhzLCB5cyB9ID0gcmluZ09mKGIsIHJpbmcpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykgdmVydGV4TWFya2VyKGxheWVyLCB4c1tpXSwgeXNbaV0sIGZhbHNlLCBjb2xvcik7XG4gICAgfVxuICB9IGVsc2UgaWYgKGIgaW5zdGFuY2VvZiBSZWN0YW5nbGUpIHtcbiAgICAvLyBUaGUgZm91ciBjb3JuZXJzIGFzIGdyYWIvcmVzaXplIGhhbmRsZXMuXG4gICAgY29uc3QgY29ybmVyczogW251bWJlciwgbnVtYmVyXVtdID0gW1xuICAgICAgW2IueCwgYi55XSxcbiAgICAgIFtiLnggKyBiLndpZHRoLCBiLnldLFxuICAgICAgW2IueCArIGIud2lkdGgsIGIueSArIGIuaGVpZ2h0XSxcbiAgICAgIFtiLngsIGIueSArIGIuaGVpZ2h0XSxcbiAgICBdO1xuICAgIGZvciAoY29uc3QgW2N4LCBjeV0gb2YgY29ybmVycykgdmVydGV4TWFya2VyKGxheWVyLCBjeCwgY3ksIGZhbHNlLCBjb2xvcik7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgYmV6aWVyIGVkaXRpbmcgaGFuZGxlcywgcGFwZXIuanMtc3R5bGU6IGVhY2ggYW5jaG9yIGFzIGEgc21hbGwgc3F1YXJlLFxuICogd2l0aCB0YW5nZW50IGxpbmVzIG91dCB0byBpdHMgdHdvIGNvbnRyb2wgcG9pbnRzIChkcmF3biBhcyBzbWFsbCBjaXJjbGVzKS5cbiAqIFRoZSBleHRlcmlvciwgdGhlbiBlYWNoIGRvbnV0IGhvbGUgcmluZyAoaml0LXVpIzEwMik6IHN0b3JlZCBoYW5kbGVzLCBvciB0aGVcbiAqIENhdG11bGwtUm9tIGRlZmF1bHQgdGhlIGN1cnZlIGlzIGRyYXduIHdpdGgg4oCUIHRoZSBvbmVzIGhpdEhhbmRsZSBncmFicy5cbiAqL1xuZnVuY3Rpb24gZHJhd0JlemllckhhbmRsZXMobGF5ZXI6IFNjcmVlbkxheWVyLCBwb2x5OiBQb2x5Z29uLCBjb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gIGZvciAobGV0IHJpbmcgPSAtMTsgcmluZyA8IChwb2x5LmhvbGVzPy5sZW5ndGggPz8gMCk7IHJpbmcrKykge1xuICAgIGNvbnN0IHsgeHMsIHlzIH0gPSByaW5nT2YocG9seSwgcmluZyk7XG4gICAgY29uc3QgaCA9IHJpbmdIYW5kbGVzKHBvbHksIHJpbmcpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChoW2ldLmhhc0luKSBkcmF3SGFuZGxlKGxheWVyLCB4c1tpXSwgeXNbaV0sIGhbaV0uaW4sIGNvbG9yKTtcbiAgICAgIGlmIChoW2ldLmhhc091dCkgZHJhd0hhbmRsZShsYXllciwgeHNbaV0sIHlzW2ldLCBoW2ldLm91dCwgY29sb3IpO1xuICAgICAgYW5jaG9yU3F1YXJlKGxheWVyLCB4c1tpXSwgeXNbaV0sIGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqIEEgdGFuZ2VudCBsaW5lIGZyb20gYW4gYW5jaG9yIHRvIGEgY29udHJvbCBwb2ludCwgd2l0aCBhIGNpcmNsZSBhdCB0aGUgZW5kLiAqL1xuZnVuY3Rpb24gZHJhd0hhbmRsZShsYXllcjogU2NyZWVuTGF5ZXIsIGF4OiBudW1iZXIsIGF5OiBudW1iZXIsIGN0cmw6IFtudW1iZXIsIG51bWJlcl0sIGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgbGluZSA9IGxheWVyLmxpbmUoYXgsIGF5LCBjdHJsWzBdLCBjdHJsWzFdKTtcbiAgbGluZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIGNvbG9yKTtcbiAgbGluZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsICcxJyk7XG4gIGNvbnN0IGMgPSBzdmdFbCgnY2lyY2xlJyk7XG4gIGMuc2V0QXR0cmlidXRlKCdyJywgJzMnKTtcbiAgYy5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBjb2xvcik7XG4gIGxheWVyLmF0KGMsIGN0cmxbMF0sIGN0cmxbMV0sIHsgeDogJ2N4JywgeTogJ2N5JyB9KTtcbn1cblxuLyoqIEEgZmlsbGVkLXdoaXRlIGFuY2hvciBzcXVhcmUgKHRoZSBlZGl0YWJsZSB2ZXJ0ZXgpLiAqL1xuZnVuY3Rpb24gYW5jaG9yU3F1YXJlKGxheWVyOiBTY3JlZW5MYXllciwgeDogbnVtYmVyLCB5OiBudW1iZXIsIGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgciA9IDMuNTtcbiAgY29uc3QgcmVjdCA9IHN2Z0VsKCdyZWN0Jyk7XG4gIHJlY3Quc2V0QXR0cmlidXRlKCd3aWR0aCcsIGAkezIgKiByfWApO1xuICByZWN0LnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7MiAqIHJ9YCk7XG4gIHJlY3Quc2V0QXR0cmlidXRlKCdmaWxsJywgJyNmZmZmZmYnKTtcbiAgcmVjdC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIGNvbG9yKTtcbiAgcmVjdC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsICcyJyk7XG4gIGxheWVyLmF0KHJlY3QsIHgsIHksIHsgZHg6IC1yLCBkeTogLXIgfSk7XG59XG5cbi8qKiBNYXJxdWVlIHJlY3RhbmdsZSBmb3IgcnViYmVyLWJhbmQgbXVsdGktc2VsZWN0IChkYXNoZWQgb3V0bGluZSArIGZhaW50IGZpbGwpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRyYXdTZWxlY3Rpb25CYW5kKGxheWVyOiBTY3JlZW5MYXllciwgYTogUHQsIGI6IFB0KTogdm9pZCB7XG4gIGNvbnN0IGVsID0gbGF5ZXIucG9seSgncG9seWdvbicsIFtcbiAgICB7IHg6IGEueCwgeTogYS55IH0sXG4gICAgeyB4OiBiLngsIHk6IGEueSB9LFxuICAgIHsgeDogYi54LCB5OiBiLnkgfSxcbiAgICB7IHg6IGEueCwgeTogYi55IH0sXG4gIF0pO1xuICBlbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAncmdiYSgxMjAsMTcwLDI1NSwwLjE1KScpO1xuICBlbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsICcjNGE5MGUyJyk7XG4gIGVsLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWRhc2hhcnJheScsICc0IDMnKTtcbiAgZWwuc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLCAnMScpO1xufVxuXG4vKiogVGhlIHJlY3RhbmdsZSBiZWluZyBkcmFnZ2VkIG91dCAoJ2RyYXdyZWN0JykuICovXG5leHBvcnQgZnVuY3Rpb24gZHJhd0RyYWZ0UmVjdChsYXllcjogU2NyZWVuTGF5ZXIsIGE6IFB0LCBiOiBQdCwgY29sb3I6IHN0cmluZyk6IHZvaWQge1xuICBzdHlsZURyYWZ0KFxuICAgIGxheWVyLnBvbHkoJ3BvbHlnb24nLCBbXG4gICAgICB7IHg6IGEueCwgeTogYS55IH0sXG4gICAgICB7IHg6IGIueCwgeTogYS55IH0sXG4gICAgICB7IHg6IGIueCwgeTogYi55IH0sXG4gICAgICB7IHg6IGEueCwgeTogYi55IH0sXG4gICAgXSksXG4gICAgY29sb3IsXG4gICk7XG59XG5cbi8qKiBUaGUgcGF0aCB0cmFjZWQgb3IgcGxhY2VkIHNvIGZhciAoZnJlZWhhbmQsIHBvbHlsaW5lLCBjbGljay10by1wbGFjZSBwb2x5Z29uKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkcmF3RHJhZnRQYXRoKGxheWVyOiBTY3JlZW5MYXllciwgcHRzOiBQdFtdLCBjb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gIHN0eWxlRHJhZnQobGF5ZXIucG9seSgncG9seWxpbmUnLCBwdHMuc2xpY2UoKSksIGNvbG9yKTtcbn1cblxuZnVuY3Rpb24gc3R5bGVEcmFmdChlbDogU1ZHRWxlbWVudCwgY29sb3I6IHN0cmluZyk6IHZvaWQge1xuICBlbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAnbm9uZScpO1xuICBlbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIGNvbG9yKTtcbiAgZWwuc2V0QXR0cmlidXRlKCdzdHJva2UtZGFzaGFycmF5JywgJzQgMycpO1xuICBlbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsICcyJyk7XG59XG4iXX0=
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3NkLXJlZ2lvbi1vdmVybGF5LWRyYXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ltcGxlbWVudGF0aW9ucy9vc2Qvb3NkLXJlZ2lvbi1vdmVybGF5LWRyYXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkYsT0FBTyxFQUFlLEtBQUssRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzlFLE9BQU8sRUFDTCxvQkFBb0IsRUFFcEIsVUFBVSxFQUNWLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLFVBQVUsR0FDWCxNQUFNLG1DQUFtQyxDQUFDO0FBVzNDLHFGQUFxRjtBQUNyRixNQUFNLFVBQVUsSUFBSSxDQUFDLEtBQWEsRUFBRSxLQUFhO0lBQy9DLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3RFLENBQUM7QUFFRCwrRkFBK0Y7QUFDL0YsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixFQUFjLEVBQ2QsTUFBYyxFQUNkLFFBQWlCLEVBQ2pCLFVBQWtCLEVBQ2xCLFFBQXFCLG9CQUFvQjtJQUV6QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQztJQUN6QyxJQUFJLENBQUMsUUFB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O0lBQ3hFLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsRUFBYyxFQUFFLEtBQWE7SUFDL0MsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsRUFBRSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzQyxFQUFFLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVnaW9uLCBSZWN0YW5nbGUsIFBvbHlnb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvcmVnaW9uJztcbmltcG9ydCB7IHBhcnNlQ3NzQ29sb3IgfSBmcm9tICcuLi8uLi9jb250cmFjdHMvY29sb3InO1xuaW1wb3J0IHsgcmVnaW9uQkJveCwgcmluZ0hhbmRsZXMsIHJpbmdPZiB9IGZyb20gJy4uLy4uL3JlZ2lvbi1vdmVybGF5L3JlZ2lvbi1nZW9tZXRyeSc7XG5pbXBvcnQgeyBTY3JlZW5MYXllciwgc3ZnRWwgfSBmcm9tICcuLi8uLi9yZWdpb24tb3ZlcmxheS9zdmctcmVnaW9uLXJlbmRlcmVyJztcbmltcG9ydCB7XG4gIERFRkFVTFRfUkVHSU9OX1NUWUxFLFxuICBSZWdpb25TdHlsZSxcbiAgYXBwbHlQYWludCxcbiAgaXNGaWxsZWQsXG4gIHBsYWNlSW5zaWRlTGFiZWwsXG4gIHJlZ2lvbkxhYmVsU3BvdHMsXG4gIHNoYXBlUGFpbnQsXG59IGZyb20gJy4uLy4uL3JlZ2lvbi1vdmVybGF5L3JlZ2lvbi1zdHlsZSc7XG5cbi8qKlxuICogVGhlIE9wZW5TZWFkcmFnb24gcmVnaW9uIG92ZXJsYXkncyBsb29rOiByZWdpb24gc3Ryb2tlL2ZpbGwsIGxhYmVscywgdGhlXG4gKiBzZWxlY3RlZCByZWdpb24ncyBoYW5kbGVzLCB0aGUgbWFycXVlZSBhbmQgdGhlIGluLXByb2dyZXNzIGRyYXdpbmcuIFB1cmUgU1ZHXG4gKiBidWlsZGVycyBvdmVyIHRoZSBzaGFyZWQge0BsaW5rIFNjcmVlbkxheWVyfSAoaW1hZ2UgcG9pbnRzIGluLCBzY3JlZW4tc3BhY2VcbiAqIGVsZW1lbnRzIG91dCksIHNvIHRoZSBvdmVybGF5IGl0c2VsZiBrZWVwcyBvbmx5IGxpZmVjeWNsZSBhbmQgZ2VzdHVyZXMuXG4gKi9cblxudHlwZSBQdCA9IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTtcblxuLyoqIGBjb2xvcmAgd2l0aCBgYWxwaGFgOyBhIGNvbG91ciB0aGF0IGRvZXNuJ3QgcGFyc2UgKGEgbmFtZWQgb25lKSBpcyB1c2VkIGFzLWlzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJnYmEoY29sb3I6IHN0cmluZywgYWxwaGE6IG51bWJlcik6IHN0cmluZyB7XG4gIGNvbnN0IHJnYiA9IHBhcnNlQ3NzQ29sb3IoY29sb3IpO1xuICByZXR1cm4gcmdiID8gYHJnYmEoJHtyZ2JbMF19LCR7cmdiWzFdfSwke3JnYlsyXX0sJHthbHBoYX0pYCA6IGNvbG9yO1xufVxuXG4vKiogU3Ryb2tlL2ZpbGwgZm9yIGEgcmVnaW9uIHNoYXBlIChkcmF3biBpbiBpbWFnZSBjb29yZGluYXRlcyBieSB0aGUgcmVuZGVyZXIpLCBpbiBgc3R5bGVgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlUmVnaW9uU2hhcGUoXG4gIGVsOiBTVkdFbGVtZW50LFxuICByZWdpb246IFJlZ2lvbixcbiAgc2VsZWN0ZWQ6IGJvb2xlYW4sXG4gIHNoYXBlQ29sb3I6IHN0cmluZyxcbiAgc3R5bGU6IFJlZ2lvblN0eWxlID0gREVGQVVMVF9SRUdJT05fU1RZTEUsXG4pOiB2b2lkIHtcbiAgY29uc3QgY29sb3IgPSByZWdpb24uY29sb3IgfHwgc2hhcGVDb2xvcjtcbiAgaWYgKCFpc0ZpbGxlZChzdHlsZSkpIHtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBzZWxlY3RlZCA/IHJnYmEoY29sb3IsIDAuMzUpIDogJ25vbmUnKTtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIGNvbG9yKTtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsIHNlbGVjdGVkID8gJzQnIDogJzInKTtcbiAgICByZXR1cm47XG4gIH1cbiAgYXBwbHlQYWludChlbCwgc2hhcGVQYWludChjb2xvciwgc2VsZWN0ZWQsIHN0eWxlKSk7XG59XG5cbi8qKlxuICogVGhlIGNsYXNzIGxhYmVsIChsZWdlbmQpIGp1c3QgYWJvdmUgdGhlIHJlZ2lvbidzIHRvcC1sZWZ0IOKAlCBtaXJyb3JzIFBsb3RseSdzXG4gKiBwZXItc2hhcGUgbGFiZWwsIGRyYXduIGluIHRoZSByZWdpb24ncyBjb2xvdXIuIHJlZ2lvbi5sYWJlbCBpcyByZXN0b3JlZCBmcm9tXG4gKiB0aGUgc2hhcGUncyBsZWdlbmQgaW4gZ2V0UmVnaW9uKCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkcmF3UmVnaW9uTGFiZWwoXG4gIGxheWVyOiBTY3JlZW5MYXllcixcbiAgcmVnaW9uOiBSZWdpb24sXG4gIHNoYXBlQ29sb3I6IHN0cmluZyxcbiAgc3R5bGU6IFJlZ2lvblN0eWxlID0gREVGQVVMVF9SRUdJT05fU1RZTEUsXG4pOiB2b2lkIHtcbiAgY29uc3QgbGFiZWwgPSByZWdpb24ubGFiZWw7XG4gIGlmIChsYWJlbCA9PSBudWxsIHx8IGAke2xhYmVsfWAubGVuZ3RoID09PSAwKSByZXR1cm47XG4gIC8vIFRoZSBmaWxsZWQgKGF0bGFzKSBsb29rIGxhYmVscyBlYWNoIHBhcnQgaW5zaWRlIGl0LCB3aGVyZSBpdCBmaXRzLlxuICBpZiAoaXNGaWxsZWQoc3R5bGUpKSB7XG4gICAgZm9yIChjb25zdCBzcG90IG9mIHJlZ2lvbkxhYmVsU3BvdHMocmVnaW9uKSkgcGxhY2VJbnNpZGVMYWJlbChsYXllciwgYCR7bGFiZWx9YCwgc3BvdCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIFRoZSBsb29wLWJhc2VkIGJib3gsIG5vdCBNYXRoLm1pbiguLi5zcHJlYWQpOiBzcHJlYWRpbmcgYSBsYXJnZSBpbXBvcnRlZFxuICAvLyBhbm5vdGF0aW9uJ3MgdmVydGljZXMgYXMgYXJndW1lbnRzIHRocm93cyBSYW5nZUVycm9yIChPU0QtUExPVExZLTM0KS5cbiAgY29uc3QgYmIgPSByZWdpb25CQm94KHJlZ2lvbik7XG4gIGlmICghYmIpIHJldHVybjtcbiAgY29uc3QgdGV4dCA9IHN2Z0VsKCd0ZXh0Jyk7XG4gIHRleHQuc2V0QXR0cmlidXRlKCdmaWxsJywgcmVnaW9uLmNvbG9yIHx8IHNoYXBlQ29sb3IpO1xuICB0ZXh0LnNldEF0dHJpYnV0ZSgnZm9udC1zaXplJywgJzEzJyk7XG4gIHRleHQuc2V0QXR0cmlidXRlKCdmb250LWZhbWlseScsICdzYW5zLXNlcmlmJyk7XG4gIC8vIERhcmsgaGFsbyBzbyB0aGUgbGFiZWwgc3RheXMgbGVnaWJsZSBvdmVyIGJvdGggYnJpZ2h0IGFuZCBkYXJrIHRpbGVzLlxuICB0ZXh0LnNldEF0dHJpYnV0ZSgncGFpbnQtb3JkZXInLCAnc3Ryb2tlJyk7XG4gIHRleHQuc2V0QXR0cmlidXRlKCdzdHJva2UnLCAncmdiYSgwLDAsMCwwLjY1KScpO1xuICB0ZXh0LnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgJzInKTtcbiAgdGV4dC50ZXh0Q29udGVudCA9IGAke2xhYmVsfWA7XG4gIGxheWVyLmF0KHRleHQsIGJiLngwLCBiYi55MCwgeyBkeTogLTQgfSk7XG59XG5cbi8qKiBBIHNtYWxsIHZlcnRleCBoYW5kbGUgKGZpbGxlZCB3aGVuIGVtcGhhc2lzZWQsIGhvbGxvdyBvdGhlcndpc2UpIGF0IGFuIGltYWdlIHBvaW50LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlcnRleE1hcmtlcihsYXllcjogU2NyZWVuTGF5ZXIsIHg6IG51bWJlciwgeTogbnVtYmVyLCBlbXBoYXNpc2VkOiBib29sZWFuLCBjb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGMgPSBzdmdFbCgnY2lyY2xlJyk7XG4gIGMuc2V0QXR0cmlidXRlKCdyJywgZW1waGFzaXNlZCA/ICc1JyA6ICc0Jyk7XG4gIGMuc2V0QXR0cmlidXRlKCdmaWxsJywgZW1waGFzaXNlZCA/IGNvbG9yIDogJyNmZmZmZmYnKTtcbiAgYy5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIGNvbG9yKTtcbiAgYy5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsICcyJyk7XG4gIGxheWVyLmF0KGMsIHgsIHksIHsgeDogJ2N4JywgeTogJ2N5JyB9KTtcbn1cblxuLyoqXG4gKiBUaGUgc2VsZWN0ZWQgcmVnaW9uJ3MgaGFuZGxlcywgaW4gaXRzIG93biBjb2xvdXI6IGV2ZXJ5IHZlcnRleCBvZiBldmVyeSByaW5nXG4gKiBvZiBhIHBvbHlnb24gKHNvIGEgZG9udXQncyBpbm5lciBvdXRsaW5lIHNob3dzIGl0cyB2ZXJ0aWNlcyDigJQgaml0LXVpIzg1KSwgdGhlXG4gKiBiZXppZXIgYW5jaG9ycyBhbmQgY29udHJvbCBoYW5kbGVzIG9mIGEgY3VydmVkIG9uZSwgb3IgYSByZWN0YW5nbGUncyBjb3JuZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZHJhd1NlbGVjdGlvbkhhbmRsZXMobGF5ZXI6IFNjcmVlbkxheWVyLCByZWdpb246IFJlZ2lvbiwgY29sb3I6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBiID0gcmVnaW9uLmJvdW5kcztcbiAgaWYgKGIgaW5zdGFuY2VvZiBQb2x5Z29uKSB7XG4gICAgaWYgKGIuYmV6aWVyKSB7XG4gICAgICBkcmF3QmV6aWVySGFuZGxlcyhsYXllciwgYiwgY29sb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGxldCByaW5nID0gLTE7IHJpbmcgPCAoYi5ob2xlcz8ubGVuZ3RoID8/IDApOyByaW5nKyspIHtcbiAgICAgIGNvbnN0IHsgeHMsIHlzIH0gPSByaW5nT2YoYiwgcmluZyk7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB2ZXJ0ZXhNYXJrZXIobGF5ZXIsIHhzW2ldLCB5c1tpXSwgZmFsc2UsIGNvbG9yKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYiBpbnN0YW5jZW9mIFJlY3RhbmdsZSkge1xuICAgIC8vIFRoZSBmb3VyIGNvcm5lcnMgYXMgZ3JhYi9yZXNpemUgaGFuZGxlcy5cbiAgICBjb25zdCBjb3JuZXJzOiBbbnVtYmVyLCBudW1iZXJdW10gPSBbXG4gICAgICBbYi54LCBiLnldLFxuICAgICAgW2IueCArIGIud2lkdGgsIGIueV0sXG4gICAgICBbYi54ICsgYi53aWR0aCwgYi55ICsgYi5oZWlnaHRdLFxuICAgICAgW2IueCwgYi55ICsgYi5oZWlnaHRdLFxuICAgIF07XG4gICAgZm9yIChjb25zdCBbY3gsIGN5XSBvZiBjb3JuZXJzKSB2ZXJ0ZXhNYXJrZXIobGF5ZXIsIGN4LCBjeSwgZmFsc2UsIGNvbG9yKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBiZXppZXIgZWRpdGluZyBoYW5kbGVzLCBwYXBlci5qcy1zdHlsZTogZWFjaCBhbmNob3IgYXMgYSBzbWFsbCBzcXVhcmUsXG4gKiB3aXRoIHRhbmdlbnQgbGluZXMgb3V0IHRvIGl0cyB0d28gY29udHJvbCBwb2ludHMgKGRyYXduIGFzIHNtYWxsIGNpcmNsZXMpLlxuICogVGhlIGV4dGVyaW9yLCB0aGVuIGVhY2ggZG9udXQgaG9sZSByaW5nIChqaXQtdWkjMTAyKTogc3RvcmVkIGhhbmRsZXMsIG9yIHRoZVxuICogQ2F0bXVsbC1Sb20gZGVmYXVsdCB0aGUgY3VydmUgaXMgZHJhd24gd2l0aCDigJQgdGhlIG9uZXMgaGl0SGFuZGxlIGdyYWJzLlxuICovXG5mdW5jdGlvbiBkcmF3QmV6aWVySGFuZGxlcyhsYXllcjogU2NyZWVuTGF5ZXIsIHBvbHk6IFBvbHlnb24sIGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgZm9yIChsZXQgcmluZyA9IC0xOyByaW5nIDwgKHBvbHkuaG9sZXM/Lmxlbmd0aCA/PyAwKTsgcmluZysrKSB7XG4gICAgY29uc3QgeyB4cywgeXMgfSA9IHJpbmdPZihwb2x5LCByaW5nKTtcbiAgICBjb25zdCBoID0gcmluZ0hhbmRsZXMocG9seSwgcmluZyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGhbaV0uaGFzSW4pIGRyYXdIYW5kbGUobGF5ZXIsIHhzW2ldLCB5c1tpXSwgaFtpXS5pbiwgY29sb3IpO1xuICAgICAgaWYgKGhbaV0uaGFzT3V0KSBkcmF3SGFuZGxlKGxheWVyLCB4c1tpXSwgeXNbaV0sIGhbaV0ub3V0LCBjb2xvcik7XG4gICAgICBhbmNob3JTcXVhcmUobGF5ZXIsIHhzW2ldLCB5c1tpXSwgY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG4vKiogQSB0YW5nZW50IGxpbmUgZnJvbSBhbiBhbmNob3IgdG8gYSBjb250cm9sIHBvaW50LCB3aXRoIGEgY2lyY2xlIGF0IHRoZSBlbmQuICovXG5mdW5jdGlvbiBkcmF3SGFuZGxlKGxheWVyOiBTY3JlZW5MYXllciwgYXg6IG51bWJlciwgYXk6IG51bWJlciwgY3RybDogW251bWJlciwgbnVtYmVyXSwgY29sb3I6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBsaW5lID0gbGF5ZXIubGluZShheCwgYXksIGN0cmxbMF0sIGN0cmxbMV0pO1xuICBsaW5lLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgY29sb3IpO1xuICBsaW5lLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgJzEnKTtcbiAgY29uc3QgYyA9IHN2Z0VsKCdjaXJjbGUnKTtcbiAgYy5zZXRBdHRyaWJ1dGUoJ3InLCAnMycpO1xuICBjLnNldEF0dHJpYnV0ZSgnZmlsbCcsIGNvbG9yKTtcbiAgbGF5ZXIuYXQoYywgY3RybFswXSwgY3RybFsxXSwgeyB4OiAnY3gnLCB5OiAnY3knIH0pO1xufVxuXG4vKiogQSBmaWxsZWQtd2hpdGUgYW5jaG9yIHNxdWFyZSAodGhlIGVkaXRhYmxlIHZlcnRleCkuICovXG5mdW5jdGlvbiBhbmNob3JTcXVhcmUobGF5ZXI6IFNjcmVlbkxheWVyLCB4OiBudW1iZXIsIHk6IG51bWJlciwgY29sb3I6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCByID0gMy41O1xuICBjb25zdCByZWN0ID0gc3ZnRWwoJ3JlY3QnKTtcbiAgcmVjdC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYCR7MiAqIHJ9YCk7XG4gIHJlY3Quc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHsyICogcn1gKTtcbiAgcmVjdC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAnI2ZmZmZmZicpO1xuICByZWN0LnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgY29sb3IpO1xuICByZWN0LnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgJzInKTtcbiAgbGF5ZXIuYXQocmVjdCwgeCwgeSwgeyBkeDogLXIsIGR5OiAtciB9KTtcbn1cblxuLyoqIE1hcnF1ZWUgcmVjdGFuZ2xlIGZvciBydWJiZXItYmFuZCBtdWx0aS1zZWxlY3QgKGRhc2hlZCBvdXRsaW5lICsgZmFpbnQgZmlsbCkuICovXG5leHBvcnQgZnVuY3Rpb24gZHJhd1NlbGVjdGlvbkJhbmQobGF5ZXI6IFNjcmVlbkxheWVyLCBhOiBQdCwgYjogUHQpOiB2b2lkIHtcbiAgY29uc3QgZWwgPSBsYXllci5wb2x5KCdwb2x5Z29uJywgW1xuICAgIHsgeDogYS54LCB5OiBhLnkgfSxcbiAgICB7IHg6IGIueCwgeTogYS55IH0sXG4gICAgeyB4OiBiLngsIHk6IGIueSB9LFxuICAgIHsgeDogYS54LCB5OiBiLnkgfSxcbiAgXSk7XG4gIGVsLnNldEF0dHJpYnV0ZSgnZmlsbCcsICdyZ2JhKDEyMCwxNzAsMjU1LDAuMTUpJyk7XG4gIGVsLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgJyM0YTkwZTInKTtcbiAgZWwuc2V0QXR0cmlidXRlKCdzdHJva2UtZGFzaGFycmF5JywgJzQgMycpO1xuICBlbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsICcxJyk7XG59XG5cbi8qKiBUaGUgcmVjdGFuZ2xlIGJlaW5nIGRyYWdnZWQgb3V0ICgnZHJhd3JlY3QnKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkcmF3RHJhZnRSZWN0KGxheWVyOiBTY3JlZW5MYXllciwgYTogUHQsIGI6IFB0LCBjb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gIHN0eWxlRHJhZnQoXG4gICAgbGF5ZXIucG9seSgncG9seWdvbicsIFtcbiAgICAgIHsgeDogYS54LCB5OiBhLnkgfSxcbiAgICAgIHsgeDogYi54LCB5OiBhLnkgfSxcbiAgICAgIHsgeDogYi54LCB5OiBiLnkgfSxcbiAgICAgIHsgeDogYS54LCB5OiBiLnkgfSxcbiAgICBdKSxcbiAgICBjb2xvcixcbiAgKTtcbn1cblxuLyoqIFRoZSBwYXRoIHRyYWNlZCBvciBwbGFjZWQgc28gZmFyIChmcmVlaGFuZCwgcG9seWxpbmUsIGNsaWNrLXRvLXBsYWNlIHBvbHlnb24pLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRyYXdEcmFmdFBhdGgobGF5ZXI6IFNjcmVlbkxheWVyLCBwdHM6IFB0W10sIGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgc3R5bGVEcmFmdChsYXllci5wb2x5KCdwb2x5bGluZScsIHB0cy5zbGljZSgpKSwgY29sb3IpO1xufVxuXG5mdW5jdGlvbiBzdHlsZURyYWZ0KGVsOiBTVkdFbGVtZW50LCBjb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gIGVsLnNldEF0dHJpYnV0ZSgnZmlsbCcsICdub25lJyk7XG4gIGVsLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgY29sb3IpO1xuICBlbC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS1kYXNoYXJyYXknLCAnNCAzJyk7XG4gIGVsLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgJzInKTtcbn1cbiJdfQ==
|