@plait/draw 0.76.0 → 0.77.1
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/constants/default.d.ts +4 -0
- package/constants/index.d.ts +1 -0
- package/esm2022/constants/default.mjs +6 -1
- package/esm2022/constants/index.mjs +2 -1
- package/esm2022/geometry.component.mjs +2 -3
- package/esm2022/image.component.mjs +2 -4
- package/esm2022/plugins/with-arrow-line-text.mjs +20 -8
- package/esm2022/plugins/with-draw-resize.mjs +23 -18
- package/esm2022/plugins/with-geometry-create.mjs +7 -7
- package/esm2022/plugins/with-table-resize.mjs +11 -7
- package/esm2022/plugins/with-table.mjs +8 -5
- package/esm2022/table.component.mjs +2 -3
- package/esm2022/utils/common.mjs +6 -3
- package/esm2022/utils/geometry.mjs +5 -62
- package/esm2022/utils/table-selected.mjs +1 -5
- package/esm2022/utils/table.mjs +3 -3
- package/esm2022/utils/uml.mjs +7 -5
- package/fesm2022/plait-draw.mjs +1380 -1413
- package/fesm2022/plait-draw.mjs.map +1 -1
- package/package.json +1 -1
- package/plugins/with-arrow-line-text.d.ts +1 -0
- package/plugins/with-draw-resize.d.ts +1 -0
- package/utils/common.d.ts +1 -0
- package/utils/geometry.d.ts +2 -3
- package/utils/table-selected.d.ts +0 -1
package/constants/default.d.ts
CHANGED
package/constants/index.d.ts
CHANGED
|
@@ -1,2 +1,7 @@
|
|
|
1
1
|
export const WithDrawPluginKey = 'plait-draw-plugin-key';
|
|
2
|
-
|
|
2
|
+
export var DrawI18nKey;
|
|
3
|
+
(function (DrawI18nKey) {
|
|
4
|
+
DrawI18nKey["lineText"] = "line-text";
|
|
5
|
+
DrawI18nKey["geometryText"] = "geometry-text";
|
|
6
|
+
})(DrawI18nKey || (DrawI18nKey = {}));
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL2NvbnN0YW50cy9kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDO0FBRXpELE1BQU0sQ0FBTixJQUFZLFdBR1g7QUFIRCxXQUFZLFdBQVc7SUFDbkIscUNBQXNCLENBQUE7SUFDdEIsNkNBQThCLENBQUE7QUFDbEMsQ0FBQyxFQUhXLFdBQVcsS0FBWCxXQUFXLFFBR3RCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFdpdGhEcmF3UGx1Z2luS2V5ID0gJ3BsYWl0LWRyYXctcGx1Z2luLWtleSc7XG5cbmV4cG9ydCBlbnVtIERyYXdJMThuS2V5IHtcbiAgICBsaW5lVGV4dCA9ICdsaW5lLXRleHQnLFxuICAgIGdlb21ldHJ5VGV4dCA9ICdnZW9tZXRyeS10ZXh0J1xufSJdfQ==
|
|
@@ -5,4 +5,5 @@ export * from './image';
|
|
|
5
5
|
export * from './theme';
|
|
6
6
|
export * from './swimlane';
|
|
7
7
|
export * from './text';
|
|
8
|
-
|
|
8
|
+
export * from './line';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9jb25zdGFudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RlZmF1bHQnO1xuZXhwb3J0ICogZnJvbSAnLi9nZW9tZXRyeSc7XG5leHBvcnQgKiBmcm9tICcuL3BvaW50ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9pbWFnZSc7XG5leHBvcnQgKiBmcm9tICcuL3RoZW1lJztcbmV4cG9ydCAqIGZyb20gJy4vc3dpbWxhbmUnO1xuZXhwb3J0ICogZnJvbSAnLi90ZXh0JztcbmV4cG9ydCAqIGZyb20gJy4vbGluZSc7Il19
|
|
@@ -78,8 +78,7 @@ export class GeometryComponent extends CommonElementFlavour {
|
|
|
78
78
|
}
|
|
79
79
|
else {
|
|
80
80
|
const hasSameSelected = value.selected === previous.selected;
|
|
81
|
-
|
|
82
|
-
if (!hasSameSelected || !hasSameHandleState || value.selected) {
|
|
81
|
+
if (!hasSameSelected || value.selected) {
|
|
83
82
|
this.activeGenerator.processDrawing(this.element, PlaitBoard.getActiveHost(this.board), {
|
|
84
83
|
selected: this.selected
|
|
85
84
|
});
|
|
@@ -143,4 +142,4 @@ export class GeometryComponent extends CommonElementFlavour {
|
|
|
143
142
|
this.textGenerator?.destroy();
|
|
144
143
|
}
|
|
145
144
|
}
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VvbWV0cnkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBR1YsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNsQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQXdCLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUcsT0FBTyxFQUFnQixhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxNQUFNLE9BQU8saUJBQ1QsU0FBUSxvQkFBcUQ7SUFXN0Q7UUFDSSxLQUFLLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxtQkFBbUI7UUFDZixJQUFJLENBQUMsZUFBZSxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDckQsY0FBYyxFQUFFLEdBQUcsRUFBRTtnQkFDakIsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJ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RSxZQUFZO2FBQ3pCLENBQ0osQ0FBQztRQUNOLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQXdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7Z0JBQ3ZHLFFBQVEsRUFBRSxZQUFZO2dCQUN0QixXQUFXLEVBQUUsR0FBRyxFQUFFO29CQUNkLElBQUksS0FBSyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQ2pELE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixDQUFDO29CQUNwRSxJQUFJLFlBQVksRUFBRSxDQUFDO3dCQUNmLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQXdCLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQzlELENBQUM7b0JBQ0QsT0FBUSxJQUFJLENBQUMsT0FBcUIsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ2pHLENBQUM7YUFDSixDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsT0FBTztRQUNILEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0LFxuICAgIE9uQ29udGV4dENoYW5nZWQsXG4gICAgaXNTZWxlY3Rpb25Nb3ZpbmcsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICBBQ1RJVkVfU1RST0tFX1dJRFRILFxuICAgIFJlY3RhbmdsZUNsaWVudFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBQbGFpdENvbW1vbkdlb21ldHJ5LCBQbGFpdEdlb21ldHJ5LCBQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5IH0gZnJvbSAnLi9pbnRlcmZhY2VzL2dlb21ldHJ5JztcbmltcG9ydCB7IEdlb21ldHJ5U2hhcGVHZW5lcmF0b3IgfSBmcm9tICcuL2dlbmVyYXRvcnMvZ2VvbWV0cnktc2hhcGUuZ2VuZXJhdG9yJztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2ZUdlbmVyYXRvciwgQ29tbW9uRWxlbWVudEZsYXZvdXIsIFRleHRNYW5hZ2VDaGFuZ2VEYXRhLCBjcmVhdGVBY3RpdmVHZW5lcmF0b3IsIGhhc1Jlc2l6ZUhhbmRsZSB9IGZyb20gJ0BwbGFpdC9jb21tb24nO1xuaW1wb3J0IHsgQXJyb3dMaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yIH0gZnJvbSAnLi9nZW5lcmF0b3JzL2Fycm93LWxpbmUtYXV0by1jb21wbGV0ZS5nZW5lcmF0b3InO1xuaW1wb3J0IHsgZ2V0VGV4dFJlY3RhbmdsZSwgaXNHZW9tZXRyeUluY2x1ZGVUZXh0LCBpc011bHRpcGxlVGV4dEdlb21ldHJ5LCBtZW1vcml6ZUxhdGVzdFRleHQgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IERyYXdUZXh0SW5mbywgVGV4dEdlbmVyYXRvciB9IGZyb20gJy4vZ2VuZXJhdG9ycy90ZXh0LmdlbmVyYXRvcic7XG5pbXBvcnQgeyBTaW5nbGVUZXh0R2VuZXJhdG9yIH0gZnJvbSAnLi9nZW5lcmF0b3JzL3NpbmdsZS10ZXh0LmdlbmVyYXRvcic7XG5pbXBvcnQgeyBQbGFpdFRleHQgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgR2VvbWV0cnlUaHJlc2hvbGQgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXRFbmdpbmUgfSBmcm9tICcuL2VuZ2luZXMnO1xuXG5leHBvcnQgY2xhc3MgR2VvbWV0cnlDb21wb25lbnRcbiAgICBleHRlbmRzIENvbW1vbkVsZW1lbnRGbGF2b3VyPFBsYWl0Q29tbW9uR2VvbWV0cnksIFBsYWl0Qm9hcmQ+XG4gICAgaW1wbGVtZW50cyBPbkNvbnRleHRDaGFuZ2VkPFBsYWl0Q29tbW9uR2VvbWV0cnksIFBsYWl0Qm9hcmQ+XG57XG4gICAgYWN0aXZlR2VuZXJhdG9yITogQWN0aXZlR2VuZXJhdG9yPFBsYWl0Q29tbW9uR2VvbWV0cnk+O1xuXG4gICAgbGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvciE6IEFycm93TGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvcjtcblxuICAgIHNoYXBlR2VuZXJhdG9yITogR2VvbWV0cnlTaGFwZUdlbmVyYXRvcjtcblxuICAgIHRleHRHZW5lcmF0b3IhOiBUZXh0R2VuZXJhdG9yPFBsYWl0TXVsdGlwbGVUZXh0R2VvbWV0cnk+IHwgU2luZ2xlVGV4dEdlbmVyYXRvcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIGluaXRpYWxpemVHZW5lcmF0b3IoKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yID0gY3JlYXRlQWN0aXZlR2VuZXJhdG9yKHRoaXMuYm9hcmQsIHtcbiAgICAgICAgICAgIGdldFN0cm9rZVdpZHRoOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHModGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmICFpc1NlbGVjdGlvbk1vdmluZyh0aGlzLmJvYXJkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQUNUSVZFX1NUUk9LRV9XSURUSDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQUNUSVZFX1NUUk9LRV9XSURUSDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0U3Ryb2tlT3BhY2l0eTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKHRoaXMuYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAhaXNTZWxlY3Rpb25Nb3ZpbmcodGhpcy5ib2FyZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAuNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0UmVjdGFuZ2xlOiAoZWxlbWVudDogUGxhaXRDb21tb25HZW9tZXRyeSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoZWxlbWVudC5wb2ludHMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhc1Jlc2l6ZUhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBoYXNSZXNpemVIYW5kbGUodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvciA9IG5ldyBBcnJvd0xpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IodGhpcy5ib2FyZCk7XG4gICAgICAgIHRoaXMuc2hhcGVHZW5lcmF0b3IgPSBuZXcgR2VvbWV0cnlTaGFwZUdlbmVyYXRvcih0aGlzLmJvYXJkKTtcbiAgICAgICAgaWYgKGlzR2VvbWV0cnlJbmNsdWRlVGV4dCh0aGlzLmVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVUZXh0TWFuYWdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZXRSZWYoKS5hZGRHZW5lcmF0b3IoQXJyb3dMaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yLmtleSwgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yKTtcbiAgICAgICAgdGhpcy5nZXRSZWYoKS5hZGRHZW5lcmF0b3IoQWN0aXZlR2VuZXJhdG9yLmtleSwgdGhpcy5hY3RpdmVHZW5lcmF0b3IpO1xuICAgICAgICB0aGlzLmdldFJlZigpLnVwZGF0ZUFjdGl2ZVNlY3Rpb24gPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQgYXMgUGxhaXRHZW9tZXRyeSwgUGxhaXRCb2FyZC5nZXRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVHZW5lcmF0b3IoKTtcbiAgICAgICAgdGhpcy5zaGFwZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQgYXMgUGxhaXRHZW9tZXRyeSwgdGhpcy5nZXRFbGVtZW50RygpKTtcbiAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50IGFzIFBsYWl0R2VvbWV0cnksIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudFRvcEhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRleHRHZW5lcmF0b3IgJiYgdGhpcy50ZXh0R2VuZXJhdG9yLmRyYXcodGhpcy5nZXRFbGVtZW50RygpKTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2VkKFxuICAgICAgICB2YWx1ZTogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxQbGFpdENvbW1vbkdlb21ldHJ5LCBQbGFpdEJvYXJkPixcbiAgICAgICAgcHJldmlvdXM6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQ8UGxhaXRDb21tb25HZW9tZXRyeSwgUGxhaXRCb2FyZD5cbiAgICApIHtcbiAgICAgICAgaWYgKHZhbHVlLmVsZW1lbnQgIT09IHByZXZpb3VzLmVsZW1lbnQgfHwgdmFsdWUuaGFzVGhlbWVDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNoYXBlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCBhcyBQbGFpdEdlb21ldHJ5LCB0aGlzLmdldEVsZW1lbnRHKCkpO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQgfSk7XG4gICAgICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50IGFzIFBsYWl0R2VvbWV0cnksIFBsYWl0Qm9hcmQuZ2V0QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMudGV4dEdlbmVyYXRvciAmJiB0aGlzLnVwZGF0ZVRleHQocHJldmlvdXMuZWxlbWVudCwgdmFsdWUuZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBoYXNTYW1lU2VsZWN0ZWQgPSB2YWx1ZS5zZWxlY3RlZCA9PT0gcHJldmlvdXMuc2VsZWN0ZWQ7XG4gICAgICAgICAgICBjb25zdCBoYXNTYW1lSGFuZGxlU3RhdGUgPSB0aGlzLmFjdGl2ZUdlbmVyYXRvci5vcHRpb25zLmhhc1Jlc2l6ZUhhbmRsZSgpID09PSB0aGlzLmFjdGl2ZUdlbmVyYXRvci5oYXNSZXNpemVIYW5kbGU7XG4gICAgICAgICAgICBpZiAoIWhhc1NhbWVTZWxlY3RlZCB8fCAhaGFzU2FtZUhhbmRsZVN0YXRlIHx8IHZhbHVlLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50IGFzIFBsYWl0R2VvbWV0cnksIFBsYWl0Qm9hcmQuZ2V0QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlVGV4dChwcmV2aW91c0VsZW1lbnQ6IFBsYWl0Q29tbW9uR2VvbWV0cnksIGN1cnJlbnRFbGVtZW50OiBQbGFpdENvbW1vbkdlb21ldHJ5KSB7XG4gICAgICAgIGlmIChpc011bHRpcGxlVGV4dEdlb21ldHJ5KHRoaXMuZWxlbWVudCkpIHtcbiAgICAgICAgICAgICh0aGlzLnRleHRHZW5lcmF0b3IgYXMgVGV4dEdlbmVyYXRvcjxQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5PikudXBkYXRlKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudCxcbiAgICAgICAgICAgICAgICBwcmV2aW91c0VsZW1lbnQudGV4dHMsXG4gICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQudGV4dHMsXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRFbGVtZW50RygpXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgKHRoaXMudGV4dEdlbmVyYXRvciBhcyBTaW5nbGVUZXh0R2VuZXJhdG9yKS51cGRhdGUoXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50IGFzIFBsYWl0R2VvbWV0cnksXG4gICAgICAgICAgICAgICAgcHJldmlvdXNFbGVtZW50LnRleHQsXG4gICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQudGV4dCxcbiAgICAgICAgICAgICAgICB0aGlzLmdldEVsZW1lbnRHKClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0aWFsaXplVGV4dE1hbmFnZSgpIHtcbiAgICAgICAgY29uc3Qgb25UZXh0Q2hhbmdlID0gKGVsZW1lbnQ6IFBsYWl0Q29tbW9uR2VvbWV0cnksIHRleHRNYW5hZ2VDaGFuZ2VEYXRhOiBUZXh0TWFuYWdlQ2hhbmdlRGF0YSwgdGV4dDogRHJhd1RleHRJbmZvKSA9PiB7XG4gICAgICAgICAgICBpZiAodGV4dE1hbmFnZUNoYW5nZURhdGEubmV3VGV4dCkge1xuICAgICAgICAgICAgICAgIGlmIChpc011bHRpcGxlVGV4dEdlb21ldHJ5KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIERyYXdUcmFuc2Zvcm1zLnNldERyYXdUZXh0cyh0aGlzLmJvYXJkLCBlbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdGV4dC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHRleHRNYW5hZ2VDaGFuZ2VEYXRhLm5ld1RleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0SGVpZ2h0OiB0ZXh0TWFuYWdlQ2hhbmdlRGF0YS5oZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMuc2V0VGV4dChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50IGFzIFBsYWl0R2VvbWV0cnksXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0TWFuYWdlQ2hhbmdlRGF0YS5uZXdUZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dE1hbmFnZUNoYW5nZURhdGEud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0TWFuYWdlQ2hhbmdlRGF0YS5oZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIERyYXdUcmFuc2Zvcm1zLnNldFRleHRTaXplKHRoaXMuYm9hcmQsIGVsZW1lbnQgYXMgUGxhaXRHZW9tZXRyeSwgdGV4dE1hbmFnZUNoYW5nZURhdGEud2lkdGgsIHRleHRNYW5hZ2VDaGFuZ2VEYXRhLmhlaWdodCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ZXh0TWFuYWdlQ2hhbmdlRGF0YS5vcGVyYXRpb25zICYmIG1lbW9yaXplTGF0ZXN0VGV4dChlbGVtZW50LCB0ZXh0TWFuYWdlQ2hhbmdlRGF0YS5vcGVyYXRpb25zKTtcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoaXNNdWx0aXBsZVRleHRHZW9tZXRyeSh0aGlzLmVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLnRleHRHZW5lcmF0b3IgPSBuZXcgVGV4dEdlbmVyYXRvcjxQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5PihcbiAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudCBhcyBQbGFpdE11bHRpcGxlVGV4dEdlb21ldHJ5LFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC50ZXh0cyEsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25UZXh0Q2hhbmdlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGV4dEdlbmVyYXRvciA9IG5ldyBTaW5nbGVUZXh0R2VuZXJhdG9yKHRoaXMuYm9hcmQsIHRoaXMuZWxlbWVudCBhcyBQbGFpdEdlb21ldHJ5LCB0aGlzLmVsZW1lbnQudGV4dCwge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBvblRleHRDaGFuZ2UsXG4gICAgICAgICAgICAgICAgZ2V0TWF4V2lkdGg6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHdpZHRoID0gZ2V0VGV4dFJlY3RhbmdsZSh0aGlzLmVsZW1lbnQpLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBnZXRSZWN0YW5nbGUgPSBnZXRFbmdpbmUodGhpcy5lbGVtZW50LnNoYXBlKS5nZXRUZXh0UmVjdGFuZ2xlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0UmVjdGFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGdldFJlY3RhbmdsZSh0aGlzLmVsZW1lbnQgYXMgUGxhaXRHZW9tZXRyeSkud2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLmVsZW1lbnQgYXMgUGxhaXRUZXh0KT8uYXV0b1NpemUgPyBHZW9tZXRyeVRocmVzaG9sZC5kZWZhdWx0VGV4dE1heFdpZHRoIDogd2lkdGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50ZXh0R2VuZXJhdG9yLmluaXRpYWxpemUoKTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy50ZXh0R2VuZXJhdG9yPy5kZXN0cm95KCk7XG4gICAgfVxufVxuIl19
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbWV0cnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvZ2VvbWV0cnkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBR1YsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNsQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQXdCLHFCQUFxQixFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUcsT0FBTyxFQUFnQixhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxNQUFNLE9BQU8saUJBQ1QsU0FBUSxvQkFBcUQ7SUFXN0Q7UUFDSSxLQUFLLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxtQkFBbUI7UUFDZixJQUFJLENBQUMsZUFBZSxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDckQsY0FBYyxFQUFFLEdBQUcsRUFBRTtnQkFDakIsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJ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T0FBd0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtnQkFDdkcsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLFdBQVcsRUFBRSxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFDakQsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7b0JBQ3BFLElBQUksWUFBWSxFQUFFLENBQUM7d0JBQ2YsS0FBSyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBd0IsQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFDOUQsQ0FBQztvQkFDRCxPQUFRLElBQUksQ0FBQyxPQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDakcsQ0FBQzthQUNKLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxPQUFPO1FBQ0gsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDbEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQsXG4gICAgT25Db250ZXh0Q2hhbmdlZCxcbiAgICBpc1NlbGVjdGlvbk1vdmluZyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIEFDVElWRV9TVFJPS0VfV0lEVEgsXG4gICAgUmVjdGFuZ2xlQ2xpZW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0Q29tbW9uR2VvbWV0cnksIFBsYWl0R2VvbWV0cnksIFBsYWl0TXVsdGlwbGVUZXh0R2VvbWV0cnkgfSBmcm9tICcuL2ludGVyZmFjZXMvZ2VvbWV0cnknO1xuaW1wb3J0IHsgR2VvbWV0cnlTaGFwZUdlbmVyYXRvciB9IGZyb20gJy4vZ2VuZXJhdG9ycy9nZW9tZXRyeS1zaGFwZS5nZW5lcmF0b3InO1xuaW1wb3J0IHsgRHJhd1RyYW5zZm9ybXMgfSBmcm9tICcuL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZlR2VuZXJhdG9yLCBDb21tb25FbGVtZW50Rmxhdm91ciwgVGV4dE1hbmFnZUNoYW5nZURhdGEsIGNyZWF0ZUFjdGl2ZUdlbmVyYXRvciwgaGFzUmVzaXplSGFuZGxlIH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBBcnJvd0xpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IgfSBmcm9tICcuL2dlbmVyYXRvcnMvYXJyb3ctbGluZS1hdXRvLWNvbXBsZXRlLmdlbmVyYXRvcic7XG5pbXBvcnQgeyBnZXRUZXh0UmVjdGFuZ2xlLCBpc0dlb21ldHJ5SW5jbHVkZVRleHQsIGlzTXVsdGlwbGVUZXh0R2VvbWV0cnksIG1lbW9yaXplTGF0ZXN0VGV4dCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRHJhd1RleHRJbmZvLCBUZXh0R2VuZXJhdG9yIH0gZnJvbSAnLi9nZW5lcmF0b3JzL3RleHQuZ2VuZXJhdG9yJztcbmltcG9ydCB7IFNpbmdsZVRleHRHZW5lcmF0b3IgfSBmcm9tICcuL2dlbmVyYXRvcnMvc2luZ2xlLXRleHQuZ2VuZXJhdG9yJztcbmltcG9ydCB7IFBsYWl0VGV4dCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBHZW9tZXRyeVRocmVzaG9sZCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldEVuZ2luZSB9IGZyb20gJy4vZW5naW5lcyc7XG5cbmV4cG9ydCBjbGFzcyBHZW9tZXRyeUNvbXBvbmVudFxuICAgIGV4dGVuZHMgQ29tbW9uRWxlbWVudEZsYXZvdXI8UGxhaXRDb21tb25HZW9tZXRyeSwgUGxhaXRCb2FyZD5cbiAgICBpbXBsZW1lbnRzIE9uQ29udGV4dENoYW5nZWQ8UGxhaXRDb21tb25HZW9tZXRyeSwgUGxhaXRCb2FyZD5cbntcbiAgICBhY3RpdmVHZW5lcmF0b3IhOiBBY3RpdmVHZW5lcmF0b3I8UGxhaXRDb21tb25HZW9tZXRyeT47XG5cbiAgICBsaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yITogQXJyb3dMaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yO1xuXG4gICAgc2hhcGVHZW5lcmF0b3IhOiBHZW9tZXRyeVNoYXBlR2VuZXJhdG9yO1xuXG4gICAgdGV4dEdlbmVyYXRvciE6IFRleHRHZW5lcmF0b3I8UGxhaXRNdWx0aXBsZVRleHRHZW9tZXRyeT4gfCBTaW5nbGVUZXh0R2VuZXJhdG9yO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZUdlbmVyYXRvcigpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IgPSBjcmVhdGVBY3RpdmVHZW5lcmF0b3IodGhpcy5ib2FyZCwge1xuICAgICAgICAgICAgZ2V0U3Ryb2tlV2lkdGg6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyh0aGlzLmJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDEgJiYgIWlzU2VsZWN0aW9uTW92aW5nKHRoaXMuYm9hcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBBQ1RJVkVfU1RST0tFX1dJRFRIO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBBQ1RJVkVfU1RST0tFX1dJRFRIO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRTdHJva2VPcGFjaXR5OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHModGhpcy5ib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxICYmICFpc1NlbGVjdGlvbk1vdmluZyh0aGlzLmJvYXJkKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMC41O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRSZWN0YW5nbGU6IChlbGVtZW50OiBQbGFpdENvbW1vbkdlb21ldHJ5KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhlbGVtZW50LnBvaW50cyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaGFzUmVzaXplSGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc1Jlc2l6ZUhhbmRsZSh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yID0gbmV3IEFycm93TGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvcih0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5zaGFwZUdlbmVyYXRvciA9IG5ldyBHZW9tZXRyeVNoYXBlR2VuZXJhdG9yKHRoaXMuYm9hcmQpO1xuICAgICAgICBpZiAoaXNHZW9tZXRyeUluY2x1ZGVUZXh0KHRoaXMuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVRleHRNYW5hZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdldFJlZigpLmFkZEdlbmVyYXRvcihBcnJvd0xpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3Iua2V5LCB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IpO1xuICAgICAgICB0aGlzLmdldFJlZigpLmFkZEdlbmVyYXRvcihBY3RpdmVHZW5lcmF0b3Iua2V5LCB0aGlzLmFjdGl2ZUdlbmVyYXRvcik7XG4gICAgICAgIHRoaXMuZ2V0UmVmKCkudXBkYXRlQWN0aXZlU2VjdGlvbiA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCBhcyBQbGFpdEdlb21ldHJ5LCBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVHZW5lcmF0b3IoKTtcbiAgICAgICAgdGhpcy5zaGFwZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQgYXMgUGxhaXRHZW9tZXRyeSwgdGhpcy5nZXRFbGVtZW50RygpKTtcbiAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50IGFzIFBsYWl0R2VvbWV0cnksIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudFRvcEhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRleHRHZW5lcmF0b3IgJiYgdGhpcy50ZXh0R2VuZXJhdG9yLmRyYXcodGhpcy5nZXRFbGVtZW50RygpKTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2VkKFxuICAgICAgICB2YWx1ZTogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxQbGFpdENvbW1vbkdlb21ldHJ5LCBQbGFpdEJvYXJkPixcbiAgICAgICAgcHJldmlvdXM6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQ8UGxhaXRDb21tb25HZW9tZXRyeSwgUGxhaXRCb2FyZD5cbiAgICApIHtcbiAgICAgICAgaWYgKHZhbHVlLmVsZW1lbnQgIT09IHByZXZpb3VzLmVsZW1lbnQgfHwgdmFsdWUuaGFzVGhlbWVDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNoYXBlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCBhcyBQbGFpdEdlb21ldHJ5LCB0aGlzLmdldEVsZW1lbnRHKCkpO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHsgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQgfSk7XG4gICAgICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50IGFzIFBsYWl0R2VvbWV0cnksIFBsYWl0Qm9hcmQuZ2V0QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMudGV4dEdlbmVyYXRvciAmJiB0aGlzLnVwZGF0ZVRleHQocHJldmlvdXMuZWxlbWVudCwgdmFsdWUuZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBoYXNTYW1lU2VsZWN0ZWQgPSB2YWx1ZS5zZWxlY3RlZCA9PT0gcHJldmlvdXMuc2VsZWN0ZWQ7XG4gICAgICAgICAgICBpZiAoIWhhc1NhbWVTZWxlY3RlZCB8fCB2YWx1ZS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCwgUGxhaXRCb2FyZC5nZXRBY3RpdmVIb3N0KHRoaXMuYm9hcmQpLCB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yLnByb2Nlc3NEcmF3aW5nKHRoaXMuZWxlbWVudCBhcyBQbGFpdEdlb21ldHJ5LCBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVRleHQocHJldmlvdXNFbGVtZW50OiBQbGFpdENvbW1vbkdlb21ldHJ5LCBjdXJyZW50RWxlbWVudDogUGxhaXRDb21tb25HZW9tZXRyeSkge1xuICAgICAgICBpZiAoaXNNdWx0aXBsZVRleHRHZW9tZXRyeSh0aGlzLmVsZW1lbnQpKSB7XG4gICAgICAgICAgICAodGhpcy50ZXh0R2VuZXJhdG9yIGFzIFRleHRHZW5lcmF0b3I8UGxhaXRNdWx0aXBsZVRleHRHZW9tZXRyeT4pLnVwZGF0ZShcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQsXG4gICAgICAgICAgICAgICAgcHJldmlvdXNFbGVtZW50LnRleHRzLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LnRleHRzLFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RWxlbWVudEcoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICh0aGlzLnRleHRHZW5lcmF0b3IgYXMgU2luZ2xlVGV4dEdlbmVyYXRvcikudXBkYXRlKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudCBhcyBQbGFpdEdlb21ldHJ5LFxuICAgICAgICAgICAgICAgIHByZXZpb3VzRWxlbWVudC50ZXh0LFxuICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LnRleHQsXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRFbGVtZW50RygpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZVRleHRNYW5hZ2UoKSB7XG4gICAgICAgIGNvbnN0IG9uVGV4dENoYW5nZSA9IChlbGVtZW50OiBQbGFpdENvbW1vbkdlb21ldHJ5LCB0ZXh0TWFuYWdlQ2hhbmdlRGF0YTogVGV4dE1hbmFnZUNoYW5nZURhdGEsIHRleHQ6IERyYXdUZXh0SW5mbykgPT4ge1xuICAgICAgICAgICAgaWYgKHRleHRNYW5hZ2VDaGFuZ2VEYXRhLm5ld1RleHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNNdWx0aXBsZVRleHRHZW9tZXRyeShlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5zZXREcmF3VGV4dHModGhpcy5ib2FyZCwgZWxlbWVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRleHQuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiB0ZXh0TWFuYWdlQ2hhbmdlRGF0YS5uZXdUZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEhlaWdodDogdGV4dE1hbmFnZUNoYW5nZURhdGEuaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIERyYXdUcmFuc2Zvcm1zLnNldFRleHQoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCBhcyBQbGFpdEdlb21ldHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dE1hbmFnZUNoYW5nZURhdGEubmV3VGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRNYW5hZ2VDaGFuZ2VEYXRhLndpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dE1hbmFnZUNoYW5nZURhdGEuaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5zZXRUZXh0U2l6ZSh0aGlzLmJvYXJkLCBlbGVtZW50IGFzIFBsYWl0R2VvbWV0cnksIHRleHRNYW5hZ2VDaGFuZ2VEYXRhLndpZHRoLCB0ZXh0TWFuYWdlQ2hhbmdlRGF0YS5oZWlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGV4dE1hbmFnZUNoYW5nZURhdGEub3BlcmF0aW9ucyAmJiBtZW1vcml6ZUxhdGVzdFRleHQoZWxlbWVudCwgdGV4dE1hbmFnZUNoYW5nZURhdGEub3BlcmF0aW9ucyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGlzTXVsdGlwbGVUZXh0R2VvbWV0cnkodGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy50ZXh0R2VuZXJhdG9yID0gbmV3IFRleHRHZW5lcmF0b3I8UGxhaXRNdWx0aXBsZVRleHRHZW9tZXRyeT4oXG4gICAgICAgICAgICAgICAgdGhpcy5ib2FyZCxcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQgYXMgUGxhaXRNdWx0aXBsZVRleHRHZW9tZXRyeSxcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQudGV4dHMhLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IG9uVGV4dENoYW5nZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRleHRHZW5lcmF0b3IgPSBuZXcgU2luZ2xlVGV4dEdlbmVyYXRvcih0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQgYXMgUGxhaXRHZW9tZXRyeSwgdGhpcy5lbGVtZW50LnRleHQsIHtcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogb25UZXh0Q2hhbmdlLFxuICAgICAgICAgICAgICAgIGdldE1heFdpZHRoOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9IGdldFRleHRSZWN0YW5nbGUodGhpcy5lbGVtZW50KS53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2V0UmVjdGFuZ2xlID0gZ2V0RW5naW5lKHRoaXMuZWxlbWVudC5zaGFwZSkuZ2V0VGV4dFJlY3RhbmdsZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldFJlY3RhbmdsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBnZXRSZWN0YW5nbGUodGhpcy5lbGVtZW50IGFzIFBsYWl0R2VvbWV0cnkpLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5lbGVtZW50IGFzIFBsYWl0VGV4dCk/LmF1dG9TaXplID8gR2VvbWV0cnlUaHJlc2hvbGQuZGVmYXVsdFRleHRNYXhXaWR0aCA6IHdpZHRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGV4dEdlbmVyYXRvci5pbml0aWFsaXplKCk7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmFjdGl2ZUdlbmVyYXRvci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMudGV4dEdlbmVyYXRvcj8uZGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -50,9 +50,7 @@ export class ImageComponent extends CommonElementFlavour {
|
|
|
50
50
|
}
|
|
51
51
|
else {
|
|
52
52
|
const hasSameSelected = value.selected === previous.selected;
|
|
53
|
-
|
|
54
|
-
this.imageGenerator.activeGenerator.options.hasResizeHandle() === this.imageGenerator.activeGenerator.hasResizeHandle;
|
|
55
|
-
if (!hasSameSelected || !hasSameHandleState || value.selected) {
|
|
53
|
+
if (!hasSameSelected || value.selected) {
|
|
56
54
|
this.imageGenerator.setFocus(this.element, this.selected);
|
|
57
55
|
this.lineAutoCompleteGenerator.processDrawing(this.element, PlaitBoard.getActiveHost(this.board), {
|
|
58
56
|
selected: this.selected
|
|
@@ -66,4 +64,4 @@ export class ImageComponent extends CommonElementFlavour {
|
|
|
66
64
|
this.lineAutoCompleteGenerator.destroy();
|
|
67
65
|
}
|
|
68
66
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvZHJhdy9zcmMvaW1hZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQStDLE1BQU0sYUFBYSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFakcsTUFBTSxPQUFPLGNBQWUsU0FBUSxvQkFBNEM7SUFLNUU7UUFDSSxLQUFLLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxtQkFBbUI7UUFDZixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFhLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDN0QsWUFBWSxFQUFFLENBQUMsT0FBbUIsRUFBRSxFQUFFO2dCQUNsQyxPQUFPO29CQUNILENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDdkIsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN2QixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDbEQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3RELENBQUM7WUFDTixDQUFDO1lBQ0QsWUFBWSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ3RCLE9BQU87b0JBQ0gsR0FBRyxFQUFF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LENBQUMsRUFBRTtvQkFDOUYsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2lCQUMxQixDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0gsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzdDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQsIE9uQ29udGV4dENoYW5nZWQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBDb21tb25FbGVtZW50Rmxhdm91ciwgSW1hZ2VHZW5lcmF0b3IgfSBmcm9tICdAcGxhaXQvY29tbW9uJztcbmltcG9ydCB7IFBsYWl0SW1hZ2UgfSBmcm9tICcuL2ludGVyZmFjZXMvaW1hZ2UnO1xuaW1wb3J0IHsgQXJyb3dMaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yIH0gZnJvbSAnLi9nZW5lcmF0b3JzL2Fycm93LWxpbmUtYXV0by1jb21wbGV0ZS5nZW5lcmF0b3InO1xuXG5leHBvcnQgY2xhc3MgSW1hZ2VDb21wb25lbnQgZXh0ZW5kcyBDb21tb25FbGVtZW50Rmxhdm91cjxQbGFpdEltYWdlLCBQbGFpdEJvYXJkPiBpbXBsZW1lbnRzIE9uQ29udGV4dENoYW5nZWQ8UGxhaXRJbWFnZSwgUGxhaXRCb2FyZD4ge1xuICAgIGltYWdlR2VuZXJhdG9yITogSW1hZ2VHZW5lcmF0b3I8UGxhaXRJbWFnZT47XG5cbiAgICBsaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yITogQXJyb3dMaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yPFBsYWl0SW1hZ2U+O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZUdlbmVyYXRvcigpIHtcbiAgICAgICAgdGhpcy5pbWFnZUdlbmVyYXRvciA9IG5ldyBJbWFnZUdlbmVyYXRvcjxQbGFpdEltYWdlPih0aGlzLmJvYXJkLCB7XG4gICAgICAgICAgICBnZXRSZWN0YW5nbGU6IChlbGVtZW50OiBQbGFpdEltYWdlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgeDogZWxlbWVudC5wb2ludHNbMF1bMF0sXG4gICAgICAgICAgICAgICAgICAgIHk6IGVsZW1lbnQucG9pbnRzWzBdWzFdLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogZWxlbWVudC5wb2ludHNbMV1bMF0gLSBlbGVtZW50LnBvaW50c1swXVswXSxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBlbGVtZW50LnBvaW50c1sxXVsxXSAtIGVsZW1lbnQucG9pbnRzWzBdWzFdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRJbWFnZUl0ZW06IChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBlbGVtZW50LnVybCxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGVsZW1lbnQucG9pbnRzWzFdWzBdIC0gZWxlbWVudC5wb2ludHNbMF1bMF0sXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogZWxlbWVudC5wb2ludHNbMV1bMV0gLSBlbGVtZW50LnBvaW50c1swXVsxXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IgPSBuZXcgQXJyb3dMaW5lQXV0b0NvbXBsZXRlR2VuZXJhdG9yKHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLmdldFJlZigpLmFkZEdlbmVyYXRvcihBcnJvd0xpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3Iua2V5LCB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IpO1xuICAgICAgICB0aGlzLmdldFJlZigpLnVwZGF0ZUFjdGl2ZVNlY3Rpb24gPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmltYWdlR2VuZXJhdG9yLnNldEZvY3VzKHRoaXMuZWxlbWVudCwgdGhpcy5zZWxlY3RlZCk7XG4gICAgICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSgpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVHZW5lcmF0b3IoKTtcbiAgICAgICAgdGhpcy5pbWFnZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIHRoaXMuZ2V0RWxlbWVudEcoKSk7XG4gICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvci5wcm9jZXNzRHJhd2luZyh0aGlzLmVsZW1lbnQsIFBsYWl0Qm9hcmQuZ2V0QWN0aXZlSG9zdCh0aGlzLmJvYXJkKSwge1xuICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlZChcbiAgICAgICAgdmFsdWU6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQ8UGxhaXRJbWFnZSwgUGxhaXRCb2FyZD4sXG4gICAgICAgIHByZXZpb3VzOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0PFBsYWl0SW1hZ2UsIFBsYWl0Qm9hcmQ+XG4gICAgKSB7XG4gICAgICAgIGlmICh2YWx1ZS5lbGVtZW50ICE9PSBwcmV2aW91cy5lbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlR2VuZXJhdG9yLnVwZGF0ZUltYWdlKHRoaXMuZ2V0RWxlbWVudEcoKSwgcHJldmlvdXMuZWxlbWVudCwgdmFsdWUuZWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLmltYWdlR2VuZXJhdG9yLnNldEZvY3VzKHRoaXMuZWxlbWVudCwgdGhpcy5zZWxlY3RlZCk7XG4gICAgICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBoYXNTYW1lU2VsZWN0ZWQgPSB2YWx1ZS5zZWxlY3RlZCA9PT0gcHJldmlvdXMuc2VsZWN0ZWQ7XG4gICAgICAgICAgICBpZiAoIWhhc1NhbWVTZWxlY3RlZCB8fCB2YWx1ZS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VHZW5lcmF0b3Iuc2V0Rm9jdXModGhpcy5lbGVtZW50LCB0aGlzLnNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmVBdXRvQ29tcGxldGVHZW5lcmF0b3IucHJvY2Vzc0RyYXdpbmcodGhpcy5lbGVtZW50LCBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QodGhpcy5ib2FyZCksIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5pbWFnZUdlbmVyYXRvci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMubGluZUF1dG9Db21wbGV0ZUdlbmVyYXRvci5kZXN0cm95KCk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import { PlaitBoard, PlaitNode, getHitElementByPoint, getNearestPointBetweenPointAndSegments, toHostPoint, toViewBoxPoint } from '@plait/core';
|
|
1
|
+
import { PlaitBoard, PlaitNode, getHitElementByPoint, getI18nValue, getNearestPointBetweenPointAndSegments, toHostPoint, toViewBoxPoint } from '@plait/core';
|
|
2
2
|
import { PlaitDrawElement } from '../interfaces';
|
|
3
3
|
import { Node } from 'slate';
|
|
4
|
-
import { buildText, getMemorizedLatest, getRatioByPoint, getTextManages } from '@plait/common';
|
|
4
|
+
import { buildText, DEFAULT_FONT_FAMILY, getMemorizedLatest, getRatioByPoint, getTextManages, measureElement } from '@plait/common';
|
|
5
5
|
import { DrawTransforms } from '../transforms';
|
|
6
6
|
import { getArrowLinePoints } from '../utils/arrow-line/arrow-line-basic';
|
|
7
7
|
import { getHitArrowLineTextIndex } from '../utils/position/arrow-line';
|
|
8
8
|
import { isHitArrowLineText } from '../utils/hit';
|
|
9
9
|
import { LINE_TEXT } from '../constants/line';
|
|
10
|
+
import { DEFAULT_FONT_SIZE } from '@plait/text-plugins';
|
|
11
|
+
import { DrawI18nKey } from '../constants/default';
|
|
12
|
+
export const getDefaultLineText = (board) => {
|
|
13
|
+
return getI18nValue(board, DrawI18nKey.lineText, LINE_TEXT);
|
|
14
|
+
};
|
|
10
15
|
export const withArrowLineText = (board) => {
|
|
11
16
|
const { dblClick } = board;
|
|
12
17
|
board.dblClick = (event) => {
|
|
@@ -24,13 +29,19 @@ export const withArrowLineText = (board) => {
|
|
|
24
29
|
editHandle(board, hitTarget, textIndex);
|
|
25
30
|
}
|
|
26
31
|
else {
|
|
27
|
-
const
|
|
32
|
+
const defaultLineText = getDefaultLineText(board);
|
|
28
33
|
const textMemory = getMemorizedLatest('arrow-line')?.text || {};
|
|
34
|
+
const textElement = buildText(defaultLineText, undefined, textMemory);
|
|
35
|
+
const { width, height } = measureElement(textElement, {
|
|
36
|
+
fontSize: DEFAULT_FONT_SIZE,
|
|
37
|
+
fontFamily: DEFAULT_FONT_FAMILY
|
|
38
|
+
});
|
|
39
|
+
const ratio = getRatioByPoint(points, point);
|
|
29
40
|
texts.push({
|
|
30
|
-
text:
|
|
41
|
+
text: textElement,
|
|
31
42
|
position: ratio,
|
|
32
|
-
width
|
|
33
|
-
height
|
|
43
|
+
width,
|
|
44
|
+
height
|
|
34
45
|
});
|
|
35
46
|
DrawTransforms.setArrowLineTexts(board, hitTarget, texts);
|
|
36
47
|
setTimeout(() => {
|
|
@@ -52,10 +63,11 @@ function editHandle(board, element, manageIndex, isFirstEdit = false) {
|
|
|
52
63
|
const textManage = textManages[manageIndex];
|
|
53
64
|
textManage.edit(() => {
|
|
54
65
|
const text = Node.string(textManage.getText());
|
|
55
|
-
const
|
|
66
|
+
const defaultLineText = getDefaultLineText(board);
|
|
67
|
+
const shouldRemove = !text || (isFirstEdit && text === defaultLineText);
|
|
56
68
|
if (shouldRemove) {
|
|
57
69
|
DrawTransforms.removeArrowLineText(board, element, manageIndex);
|
|
58
70
|
}
|
|
59
71
|
});
|
|
60
72
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hcnJvdy1saW5lLXRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9kcmF3L3NyYy9wbHVnaW5zL3dpdGgtYXJyb3ctbGluZS10ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBQ1YsU0FBUyxFQUNULG9CQUFvQixFQUNwQixZQUFZLEVBQ1osc0NBQXNDLEVBQ3RDLFdBQVcsRUFDWCxjQUFjLEVBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM3QixPQUFPLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BJLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDcEQsT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxD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QztZQUNMLENBQUM7UUFDTCxDQUFDO1FBQ0QsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGLFNBQVMsVUFBVSxDQUFDLEtBQWlCLEVBQUUsT0FBdUIsRUFBRSxXQUFtQixFQUFFLGNBQXVCLEtBQUs7SUFDN0csTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xELE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksS0FBSyxlQUFlLENBQUMsQ0FBQztRQUN4RSxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2YsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDcEUsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdE5vZGUsXG4gICAgZ2V0SGl0RWxlbWVudEJ5UG9pbnQsXG4gICAgZ2V0STE4blZhbHVlLFxuICAgIGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzLFxuICAgIHRvSG9zdFBvaW50LFxuICAgIHRvVmlld0JveFBvaW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0QXJyb3dMaW5lLCBQbGFpdERyYXdFbGVtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBOb2RlIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgYnVpbGRUZXh0LCBERUZBVUxUX0ZPTlRfRkFNSUxZLCBnZXRNZW1vcml6ZWRMYXRlc3QsIGdldFJhdGlvQnlQb2ludCwgZ2V0VGV4dE1hbmFnZXMsIG1lYXN1cmVFbGVtZW50IH0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQgeyBEcmF3VHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgZ2V0QXJyb3dMaW5lUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMvYXJyb3ctbGluZS9hcnJvdy1saW5lLWJhc2ljJztcbmltcG9ydCB7IGdldEhpdEFycm93TGluZVRleHRJbmRleCB9IGZyb20gJy4uL3V0aWxzL3Bvc2l0aW9uL2Fycm93LWxpbmUnO1xuaW1wb3J0IHsgaXNIaXRBcnJvd0xpbmVUZXh0IH0gZnJvbSAnLi4vdXRpbHMvaGl0JztcbmltcG9ydCB7IExJTkVfVEVYVCB9IGZyb20gJy4uL2NvbnN0YW50cy9saW5lJztcbmltcG9ydCB7IERFRkFVTFRfRk9OVF9TSVpFIH0gZnJvbSAnQHBsYWl0L3RleHQtcGx1Z2lucyc7XG5pbXBvcnQgeyBEcmF3STE4bktleSB9IGZyb20gJy4uL2NvbnN0YW50cy9kZWZhdWx0JztcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRMaW5lVGV4dCA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIHJldHVybiBnZXRJMThuVmFsdWUoYm9hcmQsIERyYXdJMThuS2V5LmxpbmVUZXh0LCBMSU5FX1RFWFQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHdpdGhBcnJvd0xpbmVUZXh0ID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgY29uc3QgeyBkYmxDbGljayB9ID0gYm9hcmQ7XG5cbiAgICBib2FyZC5kYmxDbGljayA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIVBsYWl0Qm9hcmQuaXNSZWFkb25seShib2FyZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsaWNrUG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgICAgIGNvbnN0IGhpdFRhcmdldCA9IGdldEhpdEVsZW1lbnRCeVBvaW50KGJvYXJkLCBjbGlja1BvaW50KSBhcyB1bmRlZmluZWQgfCBQbGFpdEFycm93TGluZTtcbiAgICAgICAgICAgIGlmIChoaXRUYXJnZXQgJiYgUGxhaXREcmF3RWxlbWVudC5pc0Fycm93TGluZShoaXRUYXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGl0VGFyZ2V0UGF0aCA9IGhpdFRhcmdldCAmJiBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBoaXRUYXJnZXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50cyA9IGdldEFycm93TGluZVBvaW50cyhib2FyZCwgaGl0VGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBjb25zdCBwb2ludCA9IGdldE5lYXJlc3RQb2ludEJldHdlZW5Qb2ludEFuZFNlZ21lbnRzKGNsaWNrUG9pbnQsIHBvaW50cyk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGV4dHMgPSBoaXRUYXJnZXQudGV4dHM/Lmxlbmd0aCA/IFsuLi5oaXRUYXJnZXQudGV4dHNdIDogW107XG4gICAgICAgICAgICAgICAgY29uc3QgdGV4dEluZGV4ID0gZ2V0SGl0QXJyb3dMaW5lVGV4dEluZGV4KGJvYXJkLCBoaXRUYXJnZXQsIGNsaWNrUG9pbnQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzSGl0VGV4dCA9IGlzSGl0QXJyb3dMaW5lVGV4dChib2FyZCwgaGl0VGFyZ2V0LCBjbGlja1BvaW50KTtcbiAgICAgICAgICAgICAgICBpZiAoaXNIaXRUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGVkaXRIYW5kbGUoYm9hcmQsIGhpdFRhcmdldCwgdGV4dEluZGV4KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0TGluZVRleHQgPSBnZXREZWZhdWx0TGluZVRleHQoYm9hcmQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXh0TWVtb3J5ID0gZ2V0TWVtb3JpemVkTGF0ZXN0KCdhcnJvdy1saW5lJyk/LnRleHQgfHwge307XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRFbGVtZW50ID0gYnVpbGRUZXh0KGRlZmF1bHRMaW5lVGV4dCwgdW5kZWZpbmVkLCB0ZXh0TWVtb3J5KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBtZWFzdXJlRWxlbWVudCh0ZXh0RWxlbWVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IERFRkFVTFRfRk9OVF9TSVpFLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogREVGQVVMVF9GT05UX0ZBTUlMWVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF0aW8gPSBnZXRSYXRpb0J5UG9pbnQocG9pbnRzLCBwb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIHRleHRzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogdGV4dEVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmF0aW8sXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgRHJhd1RyYW5zZm9ybXMuc2V0QXJyb3dMaW5lVGV4dHMoYm9hcmQsIGhpdFRhcmdldCwgdGV4dHMpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoaXRUYXJnZXRQYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3SGl0VGFyZ2V0ID0gUGxhaXROb2RlLmdldChib2FyZCwgaGl0VGFyZ2V0UGF0aCkgYXMgUGxhaXRBcnJvd0xpbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGV4dE1hbmFnZXMgPSBnZXRUZXh0TWFuYWdlcyhuZXdIaXRUYXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRIYW5kbGUoYm9hcmQsIG5ld0hpdFRhcmdldCwgdGV4dE1hbmFnZXMubGVuZ3RoIC0gMSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkYmxDbGljayhldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn07XG5cbmZ1bmN0aW9uIGVkaXRIYW5kbGUoYm9hcmQ6IFBsYWl0Qm9hcmQsIGVsZW1lbnQ6IFBsYWl0QXJyb3dMaW5lLCBtYW5hZ2VJbmRleDogbnVtYmVyLCBpc0ZpcnN0RWRpdDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgY29uc3QgdGV4dE1hbmFnZXMgPSBnZXRUZXh0TWFuYWdlcyhlbGVtZW50KTtcbiAgICBjb25zdCB0ZXh0TWFuYWdlID0gdGV4dE1hbmFnZXNbbWFuYWdlSW5kZXhdO1xuICAgIHRleHRNYW5hZ2UuZWRpdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBOb2RlLnN0cmluZyh0ZXh0TWFuYWdlLmdldFRleHQoKSk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRMaW5lVGV4dCA9IGdldERlZmF1bHRMaW5lVGV4dChib2FyZCk7XG4gICAgICAgIGNvbnN0IHNob3VsZFJlbW92ZSA9ICF0ZXh0IHx8IChpc0ZpcnN0RWRpdCAmJiB0ZXh0ID09PSBkZWZhdWx0TGluZVRleHQpO1xuICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlKSB7XG4gICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5yZW1vdmVBcnJvd0xpbmVUZXh0KGJvYXJkLCBlbGVtZW50LCBtYW5hZ2VJbmRleCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbiJdfQ==
|
|
@@ -159,23 +159,9 @@ export function withDrawResize(board) {
|
|
|
159
159
|
handleG.remove();
|
|
160
160
|
handleG = null;
|
|
161
161
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
const boundingRectangle = needCustomActiveRectangle
|
|
166
|
-
? RectangleClient.getRectangleByPoints(resizeActivePoints)
|
|
167
|
-
: getRectangleByElements(board, elements, false);
|
|
168
|
-
const boundingActiveRectangle = toActiveRectangleFromViewBoxRectangle(board, boundingRectangle);
|
|
169
|
-
let corners = RectangleClient.getCornerPoints(boundingActiveRectangle);
|
|
170
|
-
const angle = getSelectionAngle(elements);
|
|
171
|
-
if (angle) {
|
|
172
|
-
const centerPoint = RectangleClient.getCenterPoint(boundingActiveRectangle);
|
|
173
|
-
corners = rotatePoints(corners, centerPoint, angle);
|
|
174
|
-
}
|
|
175
|
-
corners.forEach((corner) => {
|
|
176
|
-
const g = drawHandle(board, corner);
|
|
177
|
-
handleG && handleG.append(g);
|
|
178
|
-
});
|
|
162
|
+
const selectedElements = getSelectedElements(board);
|
|
163
|
+
if (canResize() && !isSelectionMoving(board) && selectedElements.length > 1) {
|
|
164
|
+
handleG = generatorResizeHandles(board, resizeActivePoints, needCustomActiveRectangle);
|
|
179
165
|
PlaitBoard.getActiveHost(board).append(handleG);
|
|
180
166
|
}
|
|
181
167
|
};
|
|
@@ -261,4 +247,23 @@ export const getResizePointsByOtherwiseAxis = (board, points, resizeOriginPoint,
|
|
|
261
247
|
const newRectangle = RectangleClient.getRectangleByPoints(resultPoints);
|
|
262
248
|
return rotatePoints(resultPoints, RectangleClient.getCenterPoint(newRectangle), -(1 / 2) * Math.PI);
|
|
263
249
|
};
|
|
264
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kcmF3LXJlc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1kcmF3LXJlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUgsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QixjQUFjLEVBQ2QsVUFBVSxFQUNWLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFVBQVUsRUFDVixLQUFLLEVBQ0wsZUFBZSxFQUNmLFVBQVUsRUFDVixPQUFPLEVBQ1Asc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixzQkFBc0IsRUFFdEIscUNBQXFDLEVBQ3hDLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU3RixNQUFNLFFBQVEsR0FBRyxpQ0FBaUMsQ0FBQztBQUNuRCxNQUFNLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQVN0RCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWlCO0lB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aUJBQWlCLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdFLENBQUMsQ0FBQyxDQUFDO0lBQ0gsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzlFLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RSxPQUFPLFlBQVksQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4RyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFJlc2l6ZVJlZixcbiAgICBSZXNpemVTdGF0ZSxcbiAgICBXaXRoUmVzaXplT3B0aW9ucyxcbiAgICBkcmF3SGFuZGxlLFxuICAgIGdldEZpcnN0VGV4dE1hbmFnZSxcbiAgICBnZXRJbmRleEJ5UmVzaXplSGFuZGxlLFxuICAgIGdldFJlc2l6ZUhhbmRsZVBvaW50QnlJbmRleCxcbiAgICBnZXRTeW1tZXRyaWNIYW5kbGVJbmRleCxcbiAgICBpc0Nvcm5lckhhbmRsZSxcbiAgICB3aXRoUmVzaXplLFxuICAgIHJlc2V0UG9pbnRzQWZ0ZXJSZXNpemUsXG4gICAgbm9ybWFsaXplU2hhcGVQb2ludHNcbn0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgY3JlYXRlRyxcbiAgICBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzLFxuICAgIGdldFNlbGVjdGVkRWxlbWVudHMsXG4gICAgaXNTZWxlY3Rpb25Nb3ZpbmcsXG4gICAgZ2V0U2VsZWN0aW9uQW5nbGUsXG4gICAgcm90YXRlUG9pbnRzLFxuICAgIHJvdGF0ZWREYXRhUG9pbnRzLFxuICAgIGNyZWF0ZURlYnVnR2VuZXJhdG9yLFxuICAgIGhhc1ZhbGlkQW5nbGUsXG4gICAgaXNBeGlzQ2hhbmdlZEJ5QW5nbGUsXG4gICAgZHJhd1JlY3RhbmdsZSxcbiAgICBBQ1RJVkVfU1RST0tFX1dJRFRILFxuICAgIFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgUGF0aCxcbiAgICB0b0FjdGl2ZVJlY3RhbmdsZUZyb21WaWV3Qm94UmVjdGFuZ2xlXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBnZXRIaXRSZWN0YW5nbGVSZXNpemVIYW5kbGVSZWYgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBnZXRTbmFwUmVzaXppbmdSZWZPcHRpb25zLCBnZXRTbmFwUmVzaXppbmdSZWYgfSBmcm9tICcuLi91dGlscy9zbmFwLXJlc2l6aW5nJztcbmltcG9ydCB7IGlzR2VvbWV0cnlJbmNsdWRlVGV4dCwgaXNTaW5nbGVTZWxlY3RMaW5lLCBpc1NpbmdsZVNlbGVjdFN3aW1sYW5lIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jb25zdCBkZWJ1Z0tleSA9ICdkZWJ1ZzpwbGFpdDpyZXNpemUtZm9yLXJvdGF0aW9uJztcbmNvbnN0IGRlYnVnR2VuZXJhdG9yID0gY3JlYXRlRGVidWdHZW5lcmF0b3IoZGVidWdLZXkpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1bGtSb3RhdGlvblJlZiB7XG4gICAgYW5nbGU6IG51bWJlcjtcbiAgICBvZmZzZXRYOiBudW1iZXI7XG4gICAgb2Zmc2V0WTogbnVtYmVyO1xuICAgIG5ld0NlbnRlclBvaW50OiBQb2ludDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhEcmF3UmVzaXplKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBhZnRlckNoYW5nZSwgZHJhd1NlbGVjdGlvblJlY3RhbmdsZSB9ID0gYm9hcmQ7XG4gICAgbGV0IHNuYXBHOiBTVkdHRWxlbWVudCB8IG51bGw7XG4gICAgbGV0IGhhbmRsZUc6IFNWR0dFbGVtZW50IHwgbnVsbDtcbiAgICBsZXQgbmVlZEN1c3RvbUFjdGl2ZVJlY3RhbmdsZSA9IGZhbHNlO1xuICAgIGxldCByZXNpemVBY3RpdmVQb2ludHM6IFBvaW50W10gfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0IGNhblJlc2l6ZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGVsZW1lbnRzLmxlbmd0aCA+PSAxICYmXG4gICAgICAgICAgICBlbGVtZW50cy5ldmVyeShcbiAgICAgICAgICAgICAgICAoZWwpID0+XG4gICAgICAgICAgICAgICAgICAgIChQbGFpdERyYXdFbGVtZW50LmlzRHJhd0VsZW1lbnQoZWwpIHx8IChQbGFpdERyYXdFbGVtZW50LmlzQ3VzdG9tR2VvbWV0cnlFbGVtZW50KGJvYXJkLCBlbCkgJiYgZWwucG9pbnRzLmxlbmd0aCA+IDEpKSAmJlxuICAgICAgICAgICAgICAgICAgICAhaXNTaW5nbGVTZWxlY3RMaW5lKGJvYXJkKSAmJlxuICAgICAgICAgICAgICAgICAgICAhaXNTaW5nbGVTZWxlY3RTd2ltbGFuZShib2FyZClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb3B0aW9uczogV2l0aFJlc2l6ZU9wdGlvbnM8UGxhaXREcmF3RWxlbWVudFtdPiA9IHtcbiAgICAgICAga2V5OiAnZHJhdy1lbGVtZW50cycsXG4gICAgICAgIGNhblJlc2l6ZSxcbiAgICAgICAgaGl0VGVzdDogKHBvaW50OiBQb2ludCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKSBhcyBQbGFpdERyYXdFbGVtZW50W107XG4gICAgICAgICAgICBjb25zdCBib3VuZGluZ1JlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzLCBmYWxzZSk7XG4gICAgICAgICAgICBjb25zdCBhbmdsZSA9IGdldFNlbGVjdGlvbkFuZ2xlKGVsZW1lbnRzKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVJlZiA9IGdldEhpdFJlY3RhbmdsZVJlc2l6ZUhhbmRsZVJlZihib2FyZCwgYm91bmRpbmdSZWN0YW5nbGUsIHBvaW50LCBhbmdsZSk7XG4gICAgICAgICAgICBpZiAoaGFuZGxlUmVmKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogWy4uLmVsZW1lbnRzXSxcbiAgICAgICAgICAgICAgICAgICAgcmVjdGFuZ2xlOiBib3VuZGluZ1JlY3RhbmdsZSxcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlOiBoYW5kbGVSZWYuaGFuZGxlLFxuICAgICAgICAgICAgICAgICAgICBjdXJzb3JDbGFzczogaGFuZGxlUmVmLmN1cnNvckNsYXNzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9LFxuICAgICAgICBvblJlc2l6ZTogKHJlc2l6ZVJlZjogUmVzaXplUmVmPFBsYWl0RHJhd0VsZW1lbnRbXT4sIHJlc2l6ZVN0YXRlOiBSZXNpemVTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgc25hcEc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgZGVidWdHZW5lcmF0b3IuaXNEZWJ1ZygpICYmIGRlYnVnR2VuZXJhdG9yLmNsZWFyKCk7XG4gICAgICAgICAgICBjb25zdCBpc0Zyb21Db3JuZXIgPSBpc0Nvcm5lckhhbmRsZShib2FyZCwgcmVzaXplUmVmLmhhbmRsZSk7XG4gICAgICAgICAgICBjb25zdCBpc0FzcGVjdFJhdGlvID0gcmVzaXplU3RhdGUuaXNTaGlmdCB8fCAocmVzaXplUmVmLmVsZW1lbnQubGVuZ3RoID09PSAxICYmIFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZShyZXNpemVSZWYuZWxlbWVudFswXSkpO1xuICAgICAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVzaXplUmVmLnJlY3RhbmdsZSEpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlSW5kZXggPSBnZXRJbmRleEJ5UmVzaXplSGFuZGxlKHJlc2l6ZVJlZi5oYW5kbGUpO1xuICAgICAgICAgICAgY29uc3QgeyBvcmlnaW5Qb2ludCwgaGFuZGxlUG9pbnQgfSA9IGdldFJlc2l6ZU9yaWdpblBvaW50QW5kSGFuZGxlUG9pbnQoYm9hcmQsIGhhbmRsZUluZGV4LCByZXNpemVSZWYucmVjdGFuZ2xlISk7XG4gICAgICAgICAgICBjb25zdCBhbmdsZSA9IGdldFNlbGVjdGlvbkFuZ2xlKHJlc2l6ZVJlZi5lbGVtZW50KTtcbiAgICAgICAgICAgIGxldCBidWxrUm90YXRpb25SZWY6IEJ1bGtSb3RhdGlvblJlZiB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChhbmdsZSkge1xuICAgICAgICAgICAgICAgIGJ1bGtSb3RhdGlvblJlZiA9IHtcbiAgICAgICAgICAgICAgICAgICAgYW5nbGU6IGFuZ2xlLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAwLFxuICAgICAgICAgICAgICAgICAgICBuZXdDZW50ZXJQb2ludDogWzAsIDBdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBbcm90YXRlZFN0YXJ0UG9pbnQsIHJvdGF0ZUVuZFBvaW50XSA9IHJvdGF0ZVBvaW50cyhcbiAgICAgICAgICAgICAgICAgICAgW3Jlc2l6ZVN0YXRlLnN0YXJ0UG9pbnQsIHJlc2l6ZVN0YXRlLmVuZFBvaW50XSxcbiAgICAgICAgICAgICAgICAgICAgY2VudGVyUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgIC1idWxrUm90YXRpb25SZWYuYW5nbGVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJlc2l6ZVN0YXRlLnN0YXJ0UG9pbnQgPSByb3RhdGVkU3RhcnRQb2ludDtcbiAgICAgICAgICAgICAgICByZXNpemVTdGF0ZS5lbmRQb2ludCA9IHJvdGF0ZUVuZFBvaW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVzaXplU25hcFJlZk9wdGlvbnMgPSBnZXRTbmFwUmVzaXppbmdSZWZPcHRpb25zKFxuICAgICAgICAgICAgICAgIGJvYXJkLFxuICAgICAgICAgICAgICAgIHJlc2l6ZVJlZixcbiAgICAgICAgICAgICAgICByZXNpemVTdGF0ZSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblBvaW50LFxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVQb2ludFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaXNBc3BlY3RSYXRpbyxcbiAgICAgICAgICAgICAgICBpc0Zyb21Db3JuZXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCByZXNpemVTbmFwUmVmID0gZ2V0U25hcFJlc2l6aW5nUmVmKGJvYXJkLCByZXNpemVSZWYuZWxlbWVudCwgcmVzaXplU25hcFJlZk9wdGlvbnMpO1xuICAgICAgICAgICAgcmVzaXplQWN0aXZlUG9pbnRzID0gcmVzaXplU25hcFJlZi5hY3RpdmVQb2ludHM7XG4gICAgICAgICAgICBzbmFwRyA9IHJlc2l6ZVNuYXBSZWYuc25hcEc7XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRUb3BIb3N0KGJvYXJkKS5hcHBlbmQoc25hcEcpO1xuXG4gICAgICAgICAgICBpZiAoYnVsa1JvdGF0aW9uUmVmKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYm91bmRpbmdCb3hDb3JuZXJQb2ludHMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKHJlc2l6ZVJlZi5yZWN0YW5nbGUhKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNpemVkQm91bmRpbmdCb3hDb3JuZXJQb2ludHMgPSBib3VuZGluZ0JveENvcm5lclBvaW50cy5tYXAoKHApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50KHAsIG9yaWdpblBvaW50LCByZXNpemVTbmFwUmVmLnhab29tLCByZXNpemVTbmFwUmVmLnlab29tKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdCb3VuZGluZ0JveCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhyZXNpemVkQm91bmRpbmdCb3hDb3JuZXJQb2ludHMpO1xuXG4gICAgICAgICAgICAgICAgZGVidWdHZW5lcmF0b3IuaXNEZWJ1ZygpICYmIGRlYnVnR2VuZXJhdG9yLmRyYXdSZWN0YW5nbGUoYm9hcmQsIG5ld0JvdW5kaW5nQm94LCB7IHN0cm9rZTogJ2JsdWUnIH0pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3Qm91bmRpbmdCb3hDZW50ZXIgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQobmV3Qm91bmRpbmdCb3gpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkanVzdGVkTmV3Qm91bmRpbmdCb3hQb2ludHMgPSByZXNldFBvaW50c0FmdGVyUmVzaXplKFxuICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoYm91bmRpbmdCb3hDb3JuZXJQb2ludHMpLFxuICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocmVzaXplZEJvdW5kaW5nQm94Q29ybmVyUG9pbnRzKSxcbiAgICAgICAgICAgICAgICAgICAgY2VudGVyUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgIG5ld0JvdW5kaW5nQm94Q2VudGVyLFxuICAgICAgICAgICAgICAgICAgICBidWxrUm90YXRpb25SZWYuYW5nbGVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NlbnRlciA9IFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoYWRqdXN0ZWROZXdCb3VuZGluZ0JveFBvaW50cykpO1xuICAgICAgICAgICAgICAgIGJ1bGtSb3RhdGlvblJlZiA9IE9iamVjdC5hc3NpZ24oYnVsa1JvdGF0aW9uUmVmLCB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IG5ld0NlbnRlclswXSAtIG5ld0JvdW5kaW5nQm94Q2VudGVyWzBdLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiBuZXdDZW50ZXJbMV0gLSBuZXdCb3VuZGluZ0JveENlbnRlclsxXSxcbiAgICAgICAgICAgICAgICAgICAgbmV3Q2VudGVyUG9pbnQ6IG5ld0NlbnRlclxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgZGVidWdHZW5lcmF0b3IuaXNEZWJ1ZygpICYmIGRlYnVnR2VuZXJhdG9yLmRyYXdSZWN0YW5nbGUoYm9hcmQsIGFkanVzdGVkTmV3Qm91bmRpbmdCb3hQb2ludHMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXNpemVSZWYuZWxlbWVudC5mb3JFYWNoKCh0YXJnZXQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBsZXQgcG9pbnRzO1xuICAgICAgICAgICAgICAgIGlmIChidWxrUm90YXRpb25SZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZWRQb2ludHMgPSByb3RhdGVkRGF0YVBvaW50cyh0YXJnZXQucG9pbnRzLCBjZW50ZXJQb2ludCwgLWJ1bGtSb3RhdGlvblJlZi5hbmdsZSk7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IHJldmVyc2VkUG9pbnRzLm1hcCgocDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtb3ZlUG9pbnRCeVpvb21BbmRPcmlnaW5Qb2ludChwLCBvcmlnaW5Qb2ludCwgcmVzaXplU25hcFJlZi54Wm9vbSwgcmVzaXplU25hcFJlZi55Wm9vbSk7XG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGp1c3RUYXJnZXRQb2ludHMgPSBwb2ludHMubWFwKChwKSA9PiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBwWzBdICsgYnVsa1JvdGF0aW9uUmVmIS5vZmZzZXRYLFxuICAgICAgICAgICAgICAgICAgICAgICAgcFsxXSArIGJ1bGtSb3RhdGlvblJlZiEub2Zmc2V0WVxuICAgICAgICAgICAgICAgICAgICBdKSBhcyBQb2ludFtdO1xuICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSByb3RhdGVkRGF0YVBvaW50cyhhZGp1c3RUYXJnZXRQb2ludHMsIGJ1bGtSb3RhdGlvblJlZi5uZXdDZW50ZXJQb2ludCwgYnVsa1JvdGF0aW9uUmVmLmFuZ2xlKSBhcyBbUG9pbnQsIFBvaW50XTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzVmFsaWRBbmdsZSh0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkQ3VzdG9tQWN0aXZlUmVjdGFuZ2xlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzVmFsaWRBbmdsZSh0YXJnZXQpICYmIGlzQXhpc0NoYW5nZWRCeUFuZ2xlKHRhcmdldC5hbmdsZSEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBnZXRSZXNpemVQb2ludHNCeU90aGVyd2lzZUF4aXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnBvaW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5Qb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVTbmFwUmVmLnhab29tLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZVNuYXBSZWYueVpvb21cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSB0YXJnZXQucG9pbnRzLm1hcCgocCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtb3ZlUG9pbnRCeVpvb21BbmRPcmlnaW5Qb2ludChwLCBvcmlnaW5Qb2ludCwgcmVzaXplU25hcFJlZi54Wm9vbSwgcmVzaXplU25hcFJlZi55Wm9vbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkodGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KHRhcmdldCkgJiYgaXNHZW9tZXRyeUluY2x1ZGVUZXh0KHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgaGVpZ2h0OiB0ZXh0SGVpZ2h0IH0gPSBnZXRGaXJzdFRleHRNYW5hZ2UodGFyZ2V0KS5nZXRTaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5yZXNpemVHZW9tZXRyeShib2FyZCwgcG9pbnRzIGFzIFtQb2ludCwgUG9pbnRdLCB0ZXh0SGVpZ2h0LCBwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IG5vcm1hbGl6ZVNoYXBlUG9pbnRzKHBvaW50cyBhcyBbUG9pbnQsIFBvaW50XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcG9pbnRzIH0sIHBhdGgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgUGxhaXREcmF3RWxlbWVudC5pc0xpbmUodGFyZ2V0KSB8fFxuICAgICAgICAgICAgICAgICAgICBQbGFpdERyYXdFbGVtZW50LmlzQ3VzdG9tR2VvbWV0cnlFbGVtZW50KGJvYXJkLCB0YXJnZXQpIHx8XG4gICAgICAgICAgICAgICAgICAgIFBsYWl0RHJhd0VsZW1lbnQuaXNWZWN0b3JMaW5lKHRhcmdldClcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHBvaW50cyB9LCBwYXRoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZSh0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FzcGVjdFJhdGlvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcG9pbnRzIH0sIHBhdGgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGltYWdlIGVsZW1lbnQgZG9lcyBub3QgZm9sbG93IHRoZSByZXNpemUsIGJ1dCBtb3ZlcyBiYXNlZCBvbiB0aGUgY2VudGVyIHBvaW50LlxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHRhcmdldC5wb2ludHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQodGFyZ2V0UmVjdGFuZ2xlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NlbnRlclBvaW50ID0gbW92ZVBvaW50Qnlab29tQW5kT3JpZ2luUG9pbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplU25hcFJlZi54Wm9vbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVTbmFwUmVmLnlab29tXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VGFyZ2V0UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5Q2VudGVyUG9pbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q2VudGVyUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UmVjdGFuZ2xlLndpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFJlY3RhbmdsZS5oZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcG9pbnRzOiBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKG5ld1RhcmdldFJlY3RhbmdsZSkgfSwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgYWZ0ZXJSZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdERyYXdFbGVtZW50W10+KSA9PiB7XG4gICAgICAgICAgICBzbmFwRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBzbmFwRyA9IG51bGw7XG4gICAgICAgICAgICBpZiAobmVlZEN1c3RvbUFjdGl2ZVJlY3RhbmdsZSkge1xuICAgICAgICAgICAgICAgIG5lZWRDdXN0b21BY3RpdmVSZWN0YW5nbGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXNpemVBY3RpdmVQb2ludHMgPSBudWxsO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLmFkZFNlbGVjdGlvbldpdGhUZW1wb3JhcnlFbGVtZW50cyhib2FyZCwgc2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgd2l0aFJlc2l6ZTxQbGFpdERyYXdFbGVtZW50W10+KGJvYXJkLCBvcHRpb25zKTtcblxuICAgIGJvYXJkLmFmdGVyQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBhZnRlckNoYW5nZSgpO1xuICAgICAgICBpZiAoaGFuZGxlRykge1xuICAgICAgICAgICAgaGFuZGxlRy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGhhbmRsZUcgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYW5SZXNpemUoKSAmJiAhaXNTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpKSB7XG4gICAgICAgICAgICBoYW5kbGVHID0gY3JlYXRlRygpO1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKSBhcyBQbGFpdERyYXdFbGVtZW50W107XG4gICAgICAgICAgICBjb25zdCBib3VuZGluZ1JlY3RhbmdsZSA9IG5lZWRDdXN0b21BY3RpdmVSZWN0YW5nbGVcbiAgICAgICAgICAgICAgICA/IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhyZXNpemVBY3RpdmVQb2ludHMhKVxuICAgICAgICAgICAgICAgIDogZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgZWxlbWVudHMsIGZhbHNlKTtcbiAgICAgICAgICAgIGNvbnN0IGJvdW5kaW5nQWN0aXZlUmVjdGFuZ2xlID0gdG9BY3RpdmVSZWN0YW5nbGVGcm9tVmlld0JveFJlY3RhbmdsZShib2FyZCwgYm91bmRpbmdSZWN0YW5nbGUpO1xuICAgICAgICAgICAgbGV0IGNvcm5lcnMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKGJvdW5kaW5nQWN0aXZlUmVjdGFuZ2xlKTtcbiAgICAgICAgICAgIGNvbnN0IGFuZ2xlID0gZ2V0U2VsZWN0aW9uQW5nbGUoZWxlbWVudHMpO1xuICAgICAgICAgICAgaWYgKGFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQoYm91bmRpbmdBY3RpdmVSZWN0YW5nbGUpO1xuICAgICAgICAgICAgICAgIGNvcm5lcnMgPSByb3RhdGVQb2ludHMoY29ybmVycywgY2VudGVyUG9pbnQsIGFuZ2xlKSBhcyBbUG9pbnQsIFBvaW50LCBQb2ludCwgUG9pbnRdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29ybmVycy5mb3JFYWNoKChjb3JuZXIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBnID0gZHJhd0hhbmRsZShib2FyZCwgY29ybmVyKTtcbiAgICAgICAgICAgICAgICBoYW5kbGVHICYmIGhhbmRsZUcuYXBwZW5kKGcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChoYW5kbGVHKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBib2FyZC5kcmF3U2VsZWN0aW9uUmVjdGFuZ2xlID0gKCkgPT4ge1xuICAgICAgICBpZiAobmVlZEN1c3RvbUFjdGl2ZVJlY3RhbmdsZSkge1xuICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHJlc2l6ZUFjdGl2ZVBvaW50cyEpO1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlUmVjdGFuZ2xlID0gdG9BY3RpdmVSZWN0YW5nbGVGcm9tVmlld0JveFJlY3RhbmdsZShib2FyZCwgcmVjdGFuZ2xlKTtcbiAgICAgICAgICAgIHJldHVybiBkcmF3UmVjdGFuZ2xlKGJvYXJkLCBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShhY3RpdmVSZWN0YW5nbGUsIEFDVElWRV9TVFJPS0VfV0lEVEgpLCB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBBQ1RJVkVfU1RST0tFX1dJRFRIXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZHJhd1NlbGVjdGlvblJlY3RhbmdsZSgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRSZXNpemVPcmlnaW5Qb2ludEFuZEhhbmRsZVBvaW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBoYW5kbGVJbmRleDogbnVtYmVyLCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkgPT4ge1xuICAgIGNvbnN0IHN5bW1ldHJpY0hhbmRsZUluZGV4ID0gZ2V0U3ltbWV0cmljSGFuZGxlSW5kZXgoYm9hcmQsIGhhbmRsZUluZGV4KTtcbiAgICBjb25zdCBvcmlnaW5Qb2ludCA9IGdldFJlc2l6ZUhhbmRsZVBvaW50QnlJbmRleChyZWN0YW5nbGUgYXMgUmVjdGFuZ2xlQ2xpZW50LCBzeW1tZXRyaWNIYW5kbGVJbmRleCk7XG4gICAgY29uc3QgaGFuZGxlUG9pbnQgPSBnZXRSZXNpemVIYW5kbGVQb2ludEJ5SW5kZXgocmVjdGFuZ2xlIGFzIFJlY3RhbmdsZUNsaWVudCwgaGFuZGxlSW5kZXgpO1xuICAgIHJldHVybiB7XG4gICAgICAgIG9yaWdpblBvaW50LFxuICAgICAgICBoYW5kbGVQb2ludFxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVzaXplWm9vbSA9IChcbiAgICByZXNpemVTdGFydEFuZEVuZDogW1BvaW50LCBQb2ludF0sXG4gICAgcmVzaXplT3JpZ2luUG9pbnQ6IFBvaW50LFxuICAgIHJlc2l6ZUhhbmRsZVBvaW50OiBQb2ludCxcbiAgICBpc0Zyb21Db3JuZXI6IGJvb2xlYW4sXG4gICAgaXNBc3BlY3RSYXRpbzogYm9vbGVhblxuKSA9PiB7XG4gICAgY29uc3QgW3N0YXJ0UG9pbnQsIGVuZFBvaW50XSA9IHJlc2l6ZVN0YXJ0QW5kRW5kO1xuICAgIGxldCB4Wm9vbSA9IDA7XG4gICAgbGV0IHlab29tID0gMDtcbiAgICBpZiAoaXNGcm9tQ29ybmVyKSB7XG4gICAgICAgIGlmIChpc0FzcGVjdFJhdGlvKSB7XG4gICAgICAgICAgICBsZXQgbm9ybWFsaXplZE9mZnNldFggPSBQb2ludC5nZXRPZmZzZXRYKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTtcbiAgICAgICAgICAgIHhab29tID0gbm9ybWFsaXplZE9mZnNldFggLyAocmVzaXplSGFuZGxlUG9pbnRbMF0gLSByZXNpemVPcmlnaW5Qb2ludFswXSk7XG4gICAgICAgICAgICB5Wm9vbSA9IHhab29tO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWRPZmZzZXRYID0gUG9pbnQuZ2V0T2Zmc2V0WChzdGFydFBvaW50LCBlbmRQb2ludCk7XG4gICAgICAgICAgICBsZXQgbm9ybWFsaXplZE9mZnNldFkgPSBQb2ludC5nZXRPZmZzZXRZKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTtcbiAgICAgICAgICAgIHhab29tID0gbm9ybWFsaXplZE9mZnNldFggLyAocmVzaXplSGFuZGxlUG9pbnRbMF0gLSByZXNpemVPcmlnaW5Qb2ludFswXSk7XG4gICAgICAgICAgICB5Wm9vbSA9IG5vcm1hbGl6ZWRPZmZzZXRZIC8gKHJlc2l6ZUhhbmRsZVBvaW50WzFdIC0gcmVzaXplT3JpZ2luUG9pbnRbMV0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gUG9pbnQuaXNIb3Jpem9udGFsKHJlc2l6ZU9yaWdpblBvaW50LCByZXNpemVIYW5kbGVQb2ludCwgMC4xKSB8fCBmYWxzZTtcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWRPZmZzZXQgPSBpc0hvcml6b250YWwgPyBQb2ludC5nZXRPZmZzZXRYKHN0YXJ0UG9pbnQsIGVuZFBvaW50KSA6IFBvaW50LmdldE9mZnNldFkoc3RhcnRQb2ludCwgZW5kUG9pbnQpO1xuICAgICAgICBsZXQgYmVuY2htYXJrT2Zmc2V0ID0gaXNIb3Jpem9udGFsID8gcmVzaXplSGFuZGxlUG9pbnRbMF0gLSByZXNpemVPcmlnaW5Qb2ludFswXSA6IHJlc2l6ZUhhbmRsZVBvaW50WzFdIC0gcmVzaXplT3JpZ2luUG9pbnRbMV07XG4gICAgICAgIGNvbnN0IHpvb20gPSBub3JtYWxpemVkT2Zmc2V0IC8gYmVuY2htYXJrT2Zmc2V0O1xuICAgICAgICBpZiAoaXNBc3BlY3RSYXRpbykge1xuICAgICAgICAgICAgeFpvb20gPSB6b29tO1xuICAgICAgICAgICAgeVpvb20gPSB6b29tO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgICAgIHhab29tID0gem9vbTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgeVpvb20gPSB6b29tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHhab29tLCB5Wm9vbSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50ID0gKHA6IFBvaW50LCByZXNpemVPcmlnaW5Qb2ludDogUG9pbnQsIHhab29tOiBudW1iZXIsIHlab29tOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBvZmZzZXRYID0gKHBbMF0gLSByZXNpemVPcmlnaW5Qb2ludFswXSkgKiB4Wm9vbTtcbiAgICBjb25zdCBvZmZzZXRZID0gKHBbMV0gLSByZXNpemVPcmlnaW5Qb2ludFsxXSkgKiB5Wm9vbTtcbiAgICByZXR1cm4gW3BbMF0gKyBvZmZzZXRYLCBwWzFdICsgb2Zmc2V0WV0gYXMgUG9pbnQ7XG59O1xuXG4vKipcbiAqIDEuIFJvdGF0ZSA5MMKwXG4gKiAyLiBTY2FsZSBiYXNlZCBvbiB0aGUgcm90YXRlZCBwb2ludHNcbiAqIDMuIFJldmVyc2Ugcm90YXRlIHRoZSBzY2FsZWQgcG9pbnRzIGJ5IDkwwrBcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFJlc2l6ZVBvaW50c0J5T3RoZXJ3aXNlQXhpcyA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBwb2ludHM6IFBvaW50W10sXG4gICAgcmVzaXplT3JpZ2luUG9pbnQ6IFBvaW50LFxuICAgIHhab29tOiBudW1iZXIsXG4gICAgeVpvb206IG51bWJlclxuKSA9PiB7XG4gICAgY29uc3QgY3VycmVudFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhwb2ludHMpO1xuICAgIGRlYnVnR2VuZXJhdG9yLmlzRGVidWcoKSAmJiBkZWJ1Z0dlbmVyYXRvci5kcmF3UmVjdGFuZ2xlKGJvYXJkLCBjdXJyZW50UmVjdGFuZ2xlLCB7IHN0cm9rZTogJ2JsYWNrJyB9KTtcbiAgICBsZXQgcmVzdWx0UG9pbnRzID0gcG9pbnRzO1xuICAgIHJlc3VsdFBvaW50cyA9IHJvdGF0ZVBvaW50cyhyZXN1bHRQb2ludHMsIFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChjdXJyZW50UmVjdGFuZ2xlKSwgKDEgLyAyKSAqIE1hdGguUEkpO1xuICAgIGRlYnVnR2VuZXJhdG9yLmlzRGVidWcoKSAmJiBkZWJ1Z0dlbmVyYXRvci5kcmF3UmVjdGFuZ2xlKGJvYXJkLCByZXN1bHRQb2ludHMsIHsgc3Ryb2tlOiAnYmx1ZScgfSk7XG4gICAgcmVzdWx0UG9pbnRzID0gcmVzdWx0UG9pbnRzLm1hcCgocCkgPT4ge1xuICAgICAgICByZXR1cm4gbW92ZVBvaW50Qnlab29tQW5kT3JpZ2luUG9pbnQocCwgcmVzaXplT3JpZ2luUG9pbnQsIHhab29tLCB5Wm9vbSk7XG4gICAgfSk7XG4gICAgZGVidWdHZW5lcmF0b3IuaXNEZWJ1ZygpICYmIGRlYnVnR2VuZXJhdG9yLmRyYXdSZWN0YW5nbGUoYm9hcmQsIHJlc3VsdFBvaW50cyk7XG4gICAgY29uc3QgbmV3UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHJlc3VsdFBvaW50cyk7XG4gICAgcmV0dXJuIHJvdGF0ZVBvaW50cyhyZXN1bHRQb2ludHMsIFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChuZXdSZWN0YW5nbGUpLCAtKDEgLyAyKSAqIE1hdGguUEkpO1xufTtcbiJdfQ==
|
|
250
|
+
export const generatorResizeHandles = (board, resizeActivePoints, needCustomActiveRectangle) => {
|
|
251
|
+
const handleG = createG();
|
|
252
|
+
const elements = getSelectedElements(board);
|
|
253
|
+
const boundingRectangle = needCustomActiveRectangle
|
|
254
|
+
? RectangleClient.getRectangleByPoints(resizeActivePoints)
|
|
255
|
+
: getRectangleByElements(board, elements, false);
|
|
256
|
+
const boundingActiveRectangle = toActiveRectangleFromViewBoxRectangle(board, boundingRectangle);
|
|
257
|
+
let corners = RectangleClient.getCornerPoints(boundingActiveRectangle);
|
|
258
|
+
const angle = getSelectionAngle(elements);
|
|
259
|
+
if (angle) {
|
|
260
|
+
const centerPoint = RectangleClient.getCenterPoint(boundingActiveRectangle);
|
|
261
|
+
corners = rotatePoints(corners, centerPoint, angle);
|
|
262
|
+
}
|
|
263
|
+
corners.forEach((corner) => {
|
|
264
|
+
const g = drawHandle(board, corner);
|
|
265
|
+
handleG.append(g);
|
|
266
|
+
});
|
|
267
|
+
return handleG;
|
|
268
|
+
};
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kcmF3LXJlc2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2RyYXcvc3JjL3BsdWdpbnMvd2l0aC1kcmF3LXJlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUgsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QixjQUFjLEVBQ2QsVUFBVSxFQUNWLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILFVBQVUsRUFDVixLQUFLLEVBQ0wsZUFBZSxFQUNmLFVBQVUsRUFDVixPQUFPLEVBQ1Asc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixzQkFBc0IsRUFFdEIscUNBQXFDLEVBQ3hDLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU3RixNQUFNLFFBQVEsR0FBRyxpQ0FBaUMsQ0FBQztBQUNuRCxNQUFNLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQVN0RCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWlCO0lB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QUMzRCxDQUFDLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRCxNQUFNLHVCQUF1QixHQUFHLHFDQUFxQyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2hHLElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN2RSxNQUFNLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1IsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzVFLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQWlDLENBQUM7SUFDeEYsQ0FBQztJQUNELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUN2QixNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIFJlc2l6ZVJlZixcbiAgICBSZXNpemVTdGF0ZSxcbiAgICBXaXRoUmVzaXplT3B0aW9ucyxcbiAgICBkcmF3SGFuZGxlLFxuICAgIGdldEZpcnN0VGV4dE1hbmFnZSxcbiAgICBnZXRJbmRleEJ5UmVzaXplSGFuZGxlLFxuICAgIGdldFJlc2l6ZUhhbmRsZVBvaW50QnlJbmRleCxcbiAgICBnZXRTeW1tZXRyaWNIYW5kbGVJbmRleCxcbiAgICBpc0Nvcm5lckhhbmRsZSxcbiAgICB3aXRoUmVzaXplLFxuICAgIHJlc2V0UG9pbnRzQWZ0ZXJSZXNpemUsXG4gICAgbm9ybWFsaXplU2hhcGVQb2ludHNcbn0gZnJvbSAnQHBsYWl0L2NvbW1vbic7XG5pbXBvcnQge1xuICAgIFBsYWl0Qm9hcmQsXG4gICAgUG9pbnQsXG4gICAgUmVjdGFuZ2xlQ2xpZW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgY3JlYXRlRyxcbiAgICBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzLFxuICAgIGdldFNlbGVjdGVkRWxlbWVudHMsXG4gICAgaXNTZWxlY3Rpb25Nb3ZpbmcsXG4gICAgZ2V0U2VsZWN0aW9uQW5nbGUsXG4gICAgcm90YXRlUG9pbnRzLFxuICAgIHJvdGF0ZWREYXRhUG9pbnRzLFxuICAgIGNyZWF0ZURlYnVnR2VuZXJhdG9yLFxuICAgIGhhc1ZhbGlkQW5nbGUsXG4gICAgaXNBeGlzQ2hhbmdlZEJ5QW5nbGUsXG4gICAgZHJhd1JlY3RhbmdsZSxcbiAgICBBQ1RJVkVfU1RST0tFX1dJRFRILFxuICAgIFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgUGF0aCxcbiAgICB0b0FjdGl2ZVJlY3RhbmdsZUZyb21WaWV3Qm94UmVjdGFuZ2xlXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IFBsYWl0RHJhd0VsZW1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERyYXdUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBnZXRIaXRSZWN0YW5nbGVSZXNpemVIYW5kbGVSZWYgfSBmcm9tICcuLi91dGlscy9wb3NpdGlvbi9nZW9tZXRyeSc7XG5pbXBvcnQgeyBnZXRTbmFwUmVzaXppbmdSZWZPcHRpb25zLCBnZXRTbmFwUmVzaXppbmdSZWYgfSBmcm9tICcuLi91dGlscy9zbmFwLXJlc2l6aW5nJztcbmltcG9ydCB7IGlzR2VvbWV0cnlJbmNsdWRlVGV4dCwgaXNTaW5nbGVTZWxlY3RMaW5lLCBpc1NpbmdsZVNlbGVjdFN3aW1sYW5lIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jb25zdCBkZWJ1Z0tleSA9ICdkZWJ1ZzpwbGFpdDpyZXNpemUtZm9yLXJvdGF0aW9uJztcbmNvbnN0IGRlYnVnR2VuZXJhdG9yID0gY3JlYXRlRGVidWdHZW5lcmF0b3IoZGVidWdLZXkpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1bGtSb3RhdGlvblJlZiB7XG4gICAgYW5nbGU6IG51bWJlcjtcbiAgICBvZmZzZXRYOiBudW1iZXI7XG4gICAgb2Zmc2V0WTogbnVtYmVyO1xuICAgIG5ld0NlbnRlclBvaW50OiBQb2ludDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhEcmF3UmVzaXplKGJvYXJkOiBQbGFpdEJvYXJkKSB7XG4gICAgY29uc3QgeyBhZnRlckNoYW5nZSwgZHJhd1NlbGVjdGlvblJlY3RhbmdsZSB9ID0gYm9hcmQ7XG4gICAgbGV0IHNuYXBHOiBTVkdHRWxlbWVudCB8IG51bGw7XG4gICAgbGV0IGhhbmRsZUc6IFNWR0dFbGVtZW50IHwgbnVsbDtcbiAgICBsZXQgbmVlZEN1c3RvbUFjdGl2ZVJlY3RhbmdsZSA9IGZhbHNlO1xuICAgIGxldCByZXNpemVBY3RpdmVQb2ludHM6IFBvaW50W10gfCBudWxsID0gbnVsbDtcblxuICAgIGNvbnN0IGNhblJlc2l6ZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGVsZW1lbnRzLmxlbmd0aCA+PSAxICYmXG4gICAgICAgICAgICBlbGVtZW50cy5ldmVyeShcbiAgICAgICAgICAgICAgICAoZWwpID0+XG4gICAgICAgICAgICAgICAgICAgIChQbGFpdERyYXdFbGVtZW50LmlzRHJhd0VsZW1lbnQoZWwpIHx8IChQbGFpdERyYXdFbGVtZW50LmlzQ3VzdG9tR2VvbWV0cnlFbGVtZW50KGJvYXJkLCBlbCkgJiYgZWwucG9pbnRzLmxlbmd0aCA+IDEpKSAmJlxuICAgICAgICAgICAgICAgICAgICAhaXNTaW5nbGVTZWxlY3RMaW5lKGJvYXJkKSAmJlxuICAgICAgICAgICAgICAgICAgICAhaXNTaW5nbGVTZWxlY3RTd2ltbGFuZShib2FyZClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb3B0aW9uczogV2l0aFJlc2l6ZU9wdGlvbnM8UGxhaXREcmF3RWxlbWVudFtdPiA9IHtcbiAgICAgICAga2V5OiAnZHJhdy1lbGVtZW50cycsXG4gICAgICAgIGNhblJlc2l6ZSxcbiAgICAgICAgaGl0VGVzdDogKHBvaW50OiBQb2ludCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKSBhcyBQbGFpdERyYXdFbGVtZW50W107XG4gICAgICAgICAgICBjb25zdCBib3VuZGluZ1JlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGVsZW1lbnRzLCBmYWxzZSk7XG4gICAgICAgICAgICBjb25zdCBhbmdsZSA9IGdldFNlbGVjdGlvbkFuZ2xlKGVsZW1lbnRzKTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVJlZiA9IGdldEhpdFJlY3RhbmdsZVJlc2l6ZUhhbmRsZVJlZihib2FyZCwgYm91bmRpbmdSZWN0YW5nbGUsIHBvaW50LCBhbmdsZSk7XG4gICAgICAgICAgICBpZiAoaGFuZGxlUmVmKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogWy4uLmVsZW1lbnRzXSxcbiAgICAgICAgICAgICAgICAgICAgcmVjdGFuZ2xlOiBib3VuZGluZ1JlY3RhbmdsZSxcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlOiBoYW5kbGVSZWYuaGFuZGxlLFxuICAgICAgICAgICAgICAgICAgICBjdXJzb3JDbGFzczogaGFuZGxlUmVmLmN1cnNvckNsYXNzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9LFxuICAgICAgICBvblJlc2l6ZTogKHJlc2l6ZVJlZjogUmVzaXplUmVmPFBsYWl0RHJhd0VsZW1lbnRbXT4sIHJlc2l6ZVN0YXRlOiBSZXNpemVTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgc25hcEc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgZGVidWdHZW5lcmF0b3IuaXNEZWJ1ZygpICYmIGRlYnVnR2VuZXJhdG9yLmNsZWFyKCk7XG4gICAgICAgICAgICBjb25zdCBpc0Zyb21Db3JuZXIgPSBpc0Nvcm5lckhhbmRsZShib2FyZCwgcmVzaXplUmVmLmhhbmRsZSk7XG4gICAgICAgICAgICBjb25zdCBpc0FzcGVjdFJhdGlvID0gcmVzaXplU3RhdGUuaXNTaGlmdCB8fCAocmVzaXplUmVmLmVsZW1lbnQubGVuZ3RoID09PSAxICYmIFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZShyZXNpemVSZWYuZWxlbWVudFswXSkpO1xuICAgICAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQocmVzaXplUmVmLnJlY3RhbmdsZSEpO1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlSW5kZXggPSBnZXRJbmRleEJ5UmVzaXplSGFuZGxlKHJlc2l6ZVJlZi5oYW5kbGUpO1xuICAgICAgICAgICAgY29uc3QgeyBvcmlnaW5Qb2ludCwgaGFuZGxlUG9pbnQgfSA9IGdldFJlc2l6ZU9yaWdpblBvaW50QW5kSGFuZGxlUG9pbnQoYm9hcmQsIGhhbmRsZUluZGV4LCByZXNpemVSZWYucmVjdGFuZ2xlISk7XG4gICAgICAgICAgICBjb25zdCBhbmdsZSA9IGdldFNlbGVjdGlvbkFuZ2xlKHJlc2l6ZVJlZi5lbGVtZW50KTtcbiAgICAgICAgICAgIGxldCBidWxrUm90YXRpb25SZWY6IEJ1bGtSb3RhdGlvblJlZiB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChhbmdsZSkge1xuICAgICAgICAgICAgICAgIGJ1bGtSb3RhdGlvblJlZiA9IHtcbiAgICAgICAgICAgICAgICAgICAgYW5nbGU6IGFuZ2xlLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAwLFxuICAgICAgICAgICAgICAgICAgICBuZXdDZW50ZXJQb2ludDogWzAsIDBdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBbcm90YXRlZFN0YXJ0UG9pbnQsIHJvdGF0ZUVuZFBvaW50XSA9IHJvdGF0ZVBvaW50cyhcbiAgICAgICAgICAgICAgICAgICAgW3Jlc2l6ZVN0YXRlLnN0YXJ0UG9pbnQsIHJlc2l6ZVN0YXRlLmVuZFBvaW50XSxcbiAgICAgICAgICAgICAgICAgICAgY2VudGVyUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgIC1idWxrUm90YXRpb25SZWYuYW5nbGVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJlc2l6ZVN0YXRlLnN0YXJ0UG9pbnQgPSByb3RhdGVkU3RhcnRQb2ludDtcbiAgICAgICAgICAgICAgICByZXNpemVTdGF0ZS5lbmRQb2ludCA9IHJvdGF0ZUVuZFBvaW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVzaXplU25hcFJlZk9wdGlvbnMgPSBnZXRTbmFwUmVzaXppbmdSZWZPcHRpb25zKFxuICAgICAgICAgICAgICAgIGJvYXJkLFxuICAgICAgICAgICAgICAgIHJlc2l6ZVJlZixcbiAgICAgICAgICAgICAgICByZXNpemVTdGF0ZSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblBvaW50LFxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVQb2ludFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaXNBc3BlY3RSYXRpbyxcbiAgICAgICAgICAgICAgICBpc0Zyb21Db3JuZXJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCByZXNpemVTbmFwUmVmID0gZ2V0U25hcFJlc2l6aW5nUmVmKGJvYXJkLCByZXNpemVSZWYuZWxlbWVudCwgcmVzaXplU25hcFJlZk9wdGlvbnMpO1xuICAgICAgICAgICAgcmVzaXplQWN0aXZlUG9pbnRzID0gcmVzaXplU25hcFJlZi5hY3RpdmVQb2ludHM7XG4gICAgICAgICAgICBzbmFwRyA9IHJlc2l6ZVNuYXBSZWYuc25hcEc7XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRUb3BIb3N0KGJvYXJkKS5hcHBlbmQoc25hcEcpO1xuXG4gICAgICAgICAgICBpZiAoYnVsa1JvdGF0aW9uUmVmKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYm91bmRpbmdCb3hDb3JuZXJQb2ludHMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKHJlc2l6ZVJlZi5yZWN0YW5nbGUhKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNpemVkQm91bmRpbmdCb3hDb3JuZXJQb2ludHMgPSBib3VuZGluZ0JveENvcm5lclBvaW50cy5tYXAoKHApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50KHAsIG9yaWdpblBvaW50LCByZXNpemVTbmFwUmVmLnhab29tLCByZXNpemVTbmFwUmVmLnlab29tKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdCb3VuZGluZ0JveCA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhyZXNpemVkQm91bmRpbmdCb3hDb3JuZXJQb2ludHMpO1xuXG4gICAgICAgICAgICAgICAgZGVidWdHZW5lcmF0b3IuaXNEZWJ1ZygpICYmIGRlYnVnR2VuZXJhdG9yLmRyYXdSZWN0YW5nbGUoYm9hcmQsIG5ld0JvdW5kaW5nQm94LCB7IHN0cm9rZTogJ2JsdWUnIH0pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3Qm91bmRpbmdCb3hDZW50ZXIgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQobmV3Qm91bmRpbmdCb3gpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkanVzdGVkTmV3Qm91bmRpbmdCb3hQb2ludHMgPSByZXNldFBvaW50c0FmdGVyUmVzaXplKFxuICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoYm91bmRpbmdCb3hDb3JuZXJQb2ludHMpLFxuICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocmVzaXplZEJvdW5kaW5nQm94Q29ybmVyUG9pbnRzKSxcbiAgICAgICAgICAgICAgICAgICAgY2VudGVyUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgIG5ld0JvdW5kaW5nQm94Q2VudGVyLFxuICAgICAgICAgICAgICAgICAgICBidWxrUm90YXRpb25SZWYuYW5nbGVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NlbnRlciA9IFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoYWRqdXN0ZWROZXdCb3VuZGluZ0JveFBvaW50cykpO1xuICAgICAgICAgICAgICAgIGJ1bGtSb3RhdGlvblJlZiA9IE9iamVjdC5hc3NpZ24oYnVsa1JvdGF0aW9uUmVmLCB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IG5ld0NlbnRlclswXSAtIG5ld0JvdW5kaW5nQm94Q2VudGVyWzBdLFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiBuZXdDZW50ZXJbMV0gLSBuZXdCb3VuZGluZ0JveENlbnRlclsxXSxcbiAgICAgICAgICAgICAgICAgICAgbmV3Q2VudGVyUG9pbnQ6IG5ld0NlbnRlclxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgZGVidWdHZW5lcmF0b3IuaXNEZWJ1ZygpICYmIGRlYnVnR2VuZXJhdG9yLmRyYXdSZWN0YW5nbGUoYm9hcmQsIGFkanVzdGVkTmV3Qm91bmRpbmdCb3hQb2ludHMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXNpemVSZWYuZWxlbWVudC5mb3JFYWNoKCh0YXJnZXQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgdGFyZ2V0KTtcbiAgICAgICAgICAgICAgICBsZXQgcG9pbnRzO1xuICAgICAgICAgICAgICAgIGlmIChidWxrUm90YXRpb25SZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmV2ZXJzZWRQb2ludHMgPSByb3RhdGVkRGF0YVBvaW50cyh0YXJnZXQucG9pbnRzLCBjZW50ZXJQb2ludCwgLWJ1bGtSb3RhdGlvblJlZi5hbmdsZSk7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IHJldmVyc2VkUG9pbnRzLm1hcCgocDogUG9pbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtb3ZlUG9pbnRCeVpvb21BbmRPcmlnaW5Qb2ludChwLCBvcmlnaW5Qb2ludCwgcmVzaXplU25hcFJlZi54Wm9vbSwgcmVzaXplU25hcFJlZi55Wm9vbSk7XG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIFtQb2ludCwgUG9pbnRdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGp1c3RUYXJnZXRQb2ludHMgPSBwb2ludHMubWFwKChwKSA9PiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBwWzBdICsgYnVsa1JvdGF0aW9uUmVmIS5vZmZzZXRYLFxuICAgICAgICAgICAgICAgICAgICAgICAgcFsxXSArIGJ1bGtSb3RhdGlvblJlZiEub2Zmc2V0WVxuICAgICAgICAgICAgICAgICAgICBdKSBhcyBQb2ludFtdO1xuICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSByb3RhdGVkRGF0YVBvaW50cyhhZGp1c3RUYXJnZXRQb2ludHMsIGJ1bGtSb3RhdGlvblJlZi5uZXdDZW50ZXJQb2ludCwgYnVsa1JvdGF0aW9uUmVmLmFuZ2xlKSBhcyBbUG9pbnQsIFBvaW50XTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzVmFsaWRBbmdsZSh0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZWVkQ3VzdG9tQWN0aXZlUmVjdGFuZ2xlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzVmFsaWRBbmdsZSh0YXJnZXQpICYmIGlzQXhpc0NoYW5nZWRCeUFuZ2xlKHRhcmdldC5hbmdsZSEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBnZXRSZXNpemVQb2ludHNCeU90aGVyd2lzZUF4aXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnBvaW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5Qb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVTbmFwUmVmLnhab29tLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZVNuYXBSZWYueVpvb21cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSB0YXJnZXQucG9pbnRzLm1hcCgocCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtb3ZlUG9pbnRCeVpvb21BbmRPcmlnaW5Qb2ludChwLCBvcmlnaW5Qb2ludCwgcmVzaXplU25hcFJlZi54Wm9vbSwgcmVzaXplU25hcFJlZi55Wm9vbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChQbGFpdERyYXdFbGVtZW50LmlzR2VvbWV0cnkodGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoUGxhaXREcmF3RWxlbWVudC5pc0dlb21ldHJ5KHRhcmdldCkgJiYgaXNHZW9tZXRyeUluY2x1ZGVUZXh0KHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgaGVpZ2h0OiB0ZXh0SGVpZ2h0IH0gPSBnZXRGaXJzdFRleHRNYW5hZ2UodGFyZ2V0KS5nZXRTaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBEcmF3VHJhbnNmb3Jtcy5yZXNpemVHZW9tZXRyeShib2FyZCwgcG9pbnRzIGFzIFtQb2ludCwgUG9pbnRdLCB0ZXh0SGVpZ2h0LCBwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IG5vcm1hbGl6ZVNoYXBlUG9pbnRzKHBvaW50cyBhcyBbUG9pbnQsIFBvaW50XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcG9pbnRzIH0sIHBhdGgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgUGxhaXREcmF3RWxlbWVudC5pc0xpbmUodGFyZ2V0KSB8fFxuICAgICAgICAgICAgICAgICAgICBQbGFpdERyYXdFbGVtZW50LmlzQ3VzdG9tR2VvbWV0cnlFbGVtZW50KGJvYXJkLCB0YXJnZXQpIHx8XG4gICAgICAgICAgICAgICAgICAgIFBsYWl0RHJhd0VsZW1lbnQuaXNWZWN0b3JMaW5lKHRhcmdldClcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCB7IHBvaW50cyB9LCBwYXRoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFBsYWl0RHJhd0VsZW1lbnQuaXNJbWFnZSh0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FzcGVjdFJhdGlvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcG9pbnRzIH0sIHBhdGgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGltYWdlIGVsZW1lbnQgZG9lcyBub3QgZm9sbG93IHRoZSByZXNpemUsIGJ1dCBtb3ZlcyBiYXNlZCBvbiB0aGUgY2VudGVyIHBvaW50LlxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHRhcmdldC5wb2ludHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQodGFyZ2V0UmVjdGFuZ2xlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NlbnRlclBvaW50ID0gbW92ZVBvaW50Qnlab29tQW5kT3JpZ2luUG9pbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudGVyUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplU25hcFJlZi54Wm9vbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVTbmFwUmVmLnlab29tXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3VGFyZ2V0UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5Q2VudGVyUG9pbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3Q2VudGVyUG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UmVjdGFuZ2xlLndpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFJlY3RhbmdsZS5oZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUoYm9hcmQsIHsgcG9pbnRzOiBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKG5ld1RhcmdldFJlY3RhbmdsZSkgfSwgcGF0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgYWZ0ZXJSZXNpemU6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxQbGFpdERyYXdFbGVtZW50W10+KSA9PiB7XG4gICAgICAgICAgICBzbmFwRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBzbmFwRyA9IG51bGw7XG4gICAgICAgICAgICBpZiAobmVlZEN1c3RvbUFjdGl2ZVJlY3RhbmdsZSkge1xuICAgICAgICAgICAgICAgIG5lZWRDdXN0b21BY3RpdmVSZWN0YW5nbGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXNpemVBY3RpdmVQb2ludHMgPSBudWxsO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLmFkZFNlbGVjdGlvbldpdGhUZW1wb3JhcnlFbGVtZW50cyhib2FyZCwgc2VsZWN0ZWRFbGVtZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgd2l0aFJlc2l6ZTxQbGFpdERyYXdFbGVtZW50W10+KGJvYXJkLCBvcHRpb25zKTtcblxuICAgIGJvYXJkLmFmdGVyQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBhZnRlckNoYW5nZSgpO1xuICAgICAgICBpZiAoaGFuZGxlRykge1xuICAgICAgICAgICAgaGFuZGxlRy5yZW1vdmUoKTtcbiAgICAgICAgICAgIGhhbmRsZUcgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgaWYgKGNhblJlc2l6ZSgpICYmICFpc1NlbGVjdGlvbk1vdmluZyhib2FyZCkgJiYgc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBoYW5kbGVHID0gZ2VuZXJhdG9yUmVzaXplSGFuZGxlcyhib2FyZCwgcmVzaXplQWN0aXZlUG9pbnRzISwgbmVlZEN1c3RvbUFjdGl2ZVJlY3RhbmdsZSk7XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChoYW5kbGVHKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBib2FyZC5kcmF3U2VsZWN0aW9uUmVjdGFuZ2xlID0gKCkgPT4ge1xuICAgICAgICBpZiAobmVlZEN1c3RvbUFjdGl2ZVJlY3RhbmdsZSkge1xuICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHJlc2l6ZUFjdGl2ZVBvaW50cyEpO1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlUmVjdGFuZ2xlID0gdG9BY3RpdmVSZWN0YW5nbGVGcm9tVmlld0JveFJlY3RhbmdsZShib2FyZCwgcmVjdGFuZ2xlKTtcbiAgICAgICAgICAgIHJldHVybiBkcmF3UmVjdGFuZ2xlKGJvYXJkLCBSZWN0YW5nbGVDbGllbnQuaW5mbGF0ZShhY3RpdmVSZWN0YW5nbGUsIEFDVElWRV9TVFJPS0VfV0lEVEgpLCB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiBBQ1RJVkVfU1RST0tFX1dJRFRIXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZHJhd1NlbGVjdGlvblJlY3RhbmdsZSgpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRSZXNpemVPcmlnaW5Qb2ludEFuZEhhbmRsZVBvaW50ID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBoYW5kbGVJbmRleDogbnVtYmVyLCByZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkgPT4ge1xuICAgIGNvbnN0IHN5bW1ldHJpY0hhbmRsZUluZGV4ID0gZ2V0U3ltbWV0cmljSGFuZGxlSW5kZXgoYm9hcmQsIGhhbmRsZUluZGV4KTtcbiAgICBjb25zdCBvcmlnaW5Qb2ludCA9IGdldFJlc2l6ZUhhbmRsZVBvaW50QnlJbmRleChyZWN0YW5nbGUgYXMgUmVjdGFuZ2xlQ2xpZW50LCBzeW1tZXRyaWNIYW5kbGVJbmRleCk7XG4gICAgY29uc3QgaGFuZGxlUG9pbnQgPSBnZXRSZXNpemVIYW5kbGVQb2ludEJ5SW5kZXgocmVjdGFuZ2xlIGFzIFJlY3RhbmdsZUNsaWVudCwgaGFuZGxlSW5kZXgpO1xuICAgIHJldHVybiB7XG4gICAgICAgIG9yaWdpblBvaW50LFxuICAgICAgICBoYW5kbGVQb2ludFxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVzaXplWm9vbSA9IChcbiAgICByZXNpemVTdGFydEFuZEVuZDogW1BvaW50LCBQb2ludF0sXG4gICAgcmVzaXplT3JpZ2luUG9pbnQ6IFBvaW50LFxuICAgIHJlc2l6ZUhhbmRsZVBvaW50OiBQb2ludCxcbiAgICBpc0Zyb21Db3JuZXI6IGJvb2xlYW4sXG4gICAgaXNBc3BlY3RSYXRpbzogYm9vbGVhblxuKSA9PiB7XG4gICAgY29uc3QgW3N0YXJ0UG9pbnQsIGVuZFBvaW50XSA9IHJlc2l6ZVN0YXJ0QW5kRW5kO1xuICAgIGxldCB4Wm9vbSA9IDA7XG4gICAgbGV0IHlab29tID0gMDtcbiAgICBpZiAoaXNGcm9tQ29ybmVyKSB7XG4gICAgICAgIGlmIChpc0FzcGVjdFJhdGlvKSB7XG4gICAgICAgICAgICBsZXQgbm9ybWFsaXplZE9mZnNldFggPSBQb2ludC5nZXRPZmZzZXRYKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTtcbiAgICAgICAgICAgIHhab29tID0gbm9ybWFsaXplZE9mZnNldFggLyAocmVzaXplSGFuZGxlUG9pbnRbMF0gLSByZXNpemVPcmlnaW5Qb2ludFswXSk7XG4gICAgICAgICAgICB5Wm9vbSA9IHhab29tO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWRPZmZzZXRYID0gUG9pbnQuZ2V0T2Zmc2V0WChzdGFydFBvaW50LCBlbmRQb2ludCk7XG4gICAgICAgICAgICBsZXQgbm9ybWFsaXplZE9mZnNldFkgPSBQb2ludC5nZXRPZmZzZXRZKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTtcbiAgICAgICAgICAgIHhab29tID0gbm9ybWFsaXplZE9mZnNldFggLyAocmVzaXplSGFuZGxlUG9pbnRbMF0gLSByZXNpemVPcmlnaW5Qb2ludFswXSk7XG4gICAgICAgICAgICB5Wm9vbSA9IG5vcm1hbGl6ZWRPZmZzZXRZIC8gKHJlc2l6ZUhhbmRsZVBvaW50WzFdIC0gcmVzaXplT3JpZ2luUG9pbnRbMV0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gUG9pbnQuaXNIb3Jpem9udGFsKHJlc2l6ZU9yaWdpblBvaW50LCByZXNpemVIYW5kbGVQb2ludCwgMC4xKSB8fCBmYWxzZTtcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWRPZmZzZXQgPSBpc0hvcml6b250YWwgPyBQb2ludC5nZXRPZmZzZXRYKHN0YXJ0UG9pbnQsIGVuZFBvaW50KSA6IFBvaW50LmdldE9mZnNldFkoc3RhcnRQb2ludCwgZW5kUG9pbnQpO1xuICAgICAgICBsZXQgYmVuY2htYXJrT2Zmc2V0ID0gaXNIb3Jpem9udGFsID8gcmVzaXplSGFuZGxlUG9pbnRbMF0gLSByZXNpemVPcmlnaW5Qb2ludFswXSA6IHJlc2l6ZUhhbmRsZVBvaW50WzFdIC0gcmVzaXplT3JpZ2luUG9pbnRbMV07XG4gICAgICAgIGNvbnN0IHpvb20gPSBub3JtYWxpemVkT2Zmc2V0IC8gYmVuY2htYXJrT2Zmc2V0O1xuICAgICAgICBpZiAoaXNBc3BlY3RSYXRpbykge1xuICAgICAgICAgICAgeFpvb20gPSB6b29tO1xuICAgICAgICAgICAgeVpvb20gPSB6b29tO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgICAgIHhab29tID0gem9vbTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgeVpvb20gPSB6b29tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHhab29tLCB5Wm9vbSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG1vdmVQb2ludEJ5Wm9vbUFuZE9yaWdpblBvaW50ID0gKHA6IFBvaW50LCByZXNpemVPcmlnaW5Qb2ludDogUG9pbnQsIHhab29tOiBudW1iZXIsIHlab29tOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBvZmZzZXRYID0gKHBbMF0gLSByZXNpemVPcmlnaW5Qb2ludFswXSkgKiB4Wm9vbTtcbiAgICBjb25zdCBvZmZzZXRZID0gKHBbMV0gLSByZXNpemVPcmlnaW5Qb2ludFsxXSkgKiB5Wm9vbTtcbiAgICByZXR1cm4gW3BbMF0gKyBvZmZzZXRYLCBwWzFdICsgb2Zmc2V0WV0gYXMgUG9pbnQ7XG59O1xuXG4vKipcbiAqIDEuIFJvdGF0ZSA5MMKwXG4gKiAyLiBTY2FsZSBiYXNlZCBvbiB0aGUgcm90YXRlZCBwb2ludHNcbiAqIDMuIFJldmVyc2Ugcm90YXRlIHRoZSBzY2FsZWQgcG9pbnRzIGJ5IDkwwrBcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFJlc2l6ZVBvaW50c0J5T3RoZXJ3aXNlQXhpcyA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBwb2ludHM6IFBvaW50W10sXG4gICAgcmVzaXplT3JpZ2luUG9pbnQ6IFBvaW50LFxuICAgIHhab29tOiBudW1iZXIsXG4gICAgeVpvb206IG51bWJlclxuKSA9PiB7XG4gICAgY29uc3QgY3VycmVudFJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5nZXRSZWN0YW5nbGVCeVBvaW50cyhwb2ludHMpO1xuICAgIGRlYnVnR2VuZXJhdG9yLmlzRGVidWcoKSAmJiBkZWJ1Z0dlbmVyYXRvci5kcmF3UmVjdGFuZ2xlKGJvYXJkLCBjdXJyZW50UmVjdGFuZ2xlLCB7IHN0cm9rZTogJ2JsYWNrJyB9KTtcbiAgICBsZXQgcmVzdWx0UG9pbnRzID0gcG9pbnRzO1xuICAgIHJlc3VsdFBvaW50cyA9IHJvdGF0ZVBvaW50cyhyZXN1bHRQb2ludHMsIFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChjdXJyZW50UmVjdGFuZ2xlKSwgKDEgLyAyKSAqIE1hdGguUEkpO1xuICAgIGRlYnVnR2VuZXJhdG9yLmlzRGVidWcoKSAmJiBkZWJ1Z0dlbmVyYXRvci5kcmF3UmVjdGFuZ2xlKGJvYXJkLCByZXN1bHRQb2ludHMsIHsgc3Ryb2tlOiAnYmx1ZScgfSk7XG4gICAgcmVzdWx0UG9pbnRzID0gcmVzdWx0UG9pbnRzLm1hcCgocCkgPT4ge1xuICAgICAgICByZXR1cm4gbW92ZVBvaW50Qnlab29tQW5kT3JpZ2luUG9pbnQocCwgcmVzaXplT3JpZ2luUG9pbnQsIHhab29tLCB5Wm9vbSk7XG4gICAgfSk7XG4gICAgZGVidWdHZW5lcmF0b3IuaXNEZWJ1ZygpICYmIGRlYnVnR2VuZXJhdG9yLmRyYXdSZWN0YW5nbGUoYm9hcmQsIHJlc3VsdFBvaW50cyk7XG4gICAgY29uc3QgbmV3UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHJlc3VsdFBvaW50cyk7XG4gICAgcmV0dXJuIHJvdGF0ZVBvaW50cyhyZXN1bHRQb2ludHMsIFJlY3RhbmdsZUNsaWVudC5nZXRDZW50ZXJQb2ludChuZXdSZWN0YW5nbGUpLCAtKDEgLyAyKSAqIE1hdGguUEkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRvclJlc2l6ZUhhbmRsZXMgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHJlc2l6ZUFjdGl2ZVBvaW50cz86IFBvaW50W10sIG5lZWRDdXN0b21BY3RpdmVSZWN0YW5nbGU/OiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlRyA9IGNyZWF0ZUcoKTtcbiAgICBjb25zdCBlbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpIGFzIFBsYWl0RHJhd0VsZW1lbnRbXTtcbiAgICBjb25zdCBib3VuZGluZ1JlY3RhbmdsZSA9IG5lZWRDdXN0b21BY3RpdmVSZWN0YW5nbGVcbiAgICAgICAgPyBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMocmVzaXplQWN0aXZlUG9pbnRzISlcbiAgICAgICAgOiBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBlbGVtZW50cywgZmFsc2UpO1xuICAgIGNvbnN0IGJvdW5kaW5nQWN0aXZlUmVjdGFuZ2xlID0gdG9BY3RpdmVSZWN0YW5nbGVGcm9tVmlld0JveFJlY3RhbmdsZShib2FyZCwgYm91bmRpbmdSZWN0YW5nbGUpO1xuICAgIGxldCBjb3JuZXJzID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyhib3VuZGluZ0FjdGl2ZVJlY3RhbmdsZSk7XG4gICAgY29uc3QgYW5nbGUgPSBnZXRTZWxlY3Rpb25BbmdsZShlbGVtZW50cyk7XG4gICAgaWYgKGFuZ2xlKSB7XG4gICAgICAgIGNvbnN0IGNlbnRlclBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KGJvdW5kaW5nQWN0aXZlUmVjdGFuZ2xlKTtcbiAgICAgICAgY29ybmVycyA9IHJvdGF0ZVBvaW50cyhjb3JuZXJzLCBjZW50ZXJQb2ludCwgYW5nbGUpIGFzIFtQb2ludCwgUG9pbnQsIFBvaW50LCBQb2ludF07XG4gICAgfVxuICAgIGNvcm5lcnMuZm9yRWFjaCgoY29ybmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGcgPSBkcmF3SGFuZGxlKGJvYXJkLCBjb3JuZXIpO1xuICAgICAgICBoYW5kbGVHLmFwcGVuZChnKTtcbiAgICB9KTtcbiAgICByZXR1cm4gaGFuZGxlRztcbn07XG4iXX0=
|