@plait/common 0.53.0 → 0.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/constants/default.d.ts +2 -0
- package/core/group.component.d.ts +2 -3
- package/esm2022/constants/default.mjs +3 -1
- package/esm2022/core/group.component.mjs +5 -6
- package/esm2022/generators/active.generator.mjs +3 -2
- package/esm2022/generators/generator.mjs +13 -4
- package/esm2022/plugins/with-group.mjs +25 -22
- package/esm2022/public-api.mjs +2 -2
- package/esm2022/transforms/index.mjs +1 -1
- package/esm2022/types/index.mjs +3 -0
- package/esm2022/types/rotate.mjs +2 -0
- package/esm2022/utils/drawing/index.mjs +2 -1
- package/esm2022/utils/drawing/resize-handle.mjs +5 -3
- package/esm2022/utils/drawing/rotate-handle.mjs +22 -0
- package/esm2022/utils/elbow-line-route.mjs +21 -10
- package/esm2022/utils/index.mjs +2 -1
- package/esm2022/utils/resize.mjs +4 -4
- package/esm2022/utils/rotate.mjs +16 -0
- package/fesm2022/plait-common.mjs +103 -41
- package/fesm2022/plait-common.mjs.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/types/index.d.ts +2 -0
- package/types/rotate.d.ts +6 -0
- package/utils/drawing/index.d.ts +1 -0
- package/utils/drawing/rotate-handle.d.ts +2 -0
- package/utils/elbow-line-route.d.ts +3 -3
- package/utils/index.d.ts +1 -0
- package/utils/resize.d.ts +1 -1
- package/utils/rotate.d.ts +6 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { Direction, Point, RectangleClient } from '@plait/core';
|
|
1
|
+
import { Direction, Point, RectangleClient, createDebugGenerator } from '@plait/core';
|
|
2
2
|
import { removeDuplicatePoints, simplifyOrthogonalPoints } from '../utils';
|
|
3
3
|
import { DEFAULT_ROUTE_MARGIN } from '../constants';
|
|
4
4
|
import { AStar, PointGraph } from '../algorithms';
|
|
5
|
-
|
|
5
|
+
const debugGenerator = createDebugGenerator('debug:plait:elbow-line-routing');
|
|
6
|
+
export const generateElbowLineRoute = (options, board) => {
|
|
6
7
|
const { nextSourcePoint, nextTargetPoint } = options;
|
|
7
8
|
const points = getGraphPoints(options);
|
|
8
9
|
const graph = createGraph(points);
|
|
@@ -20,15 +21,18 @@ export const generateElbowLineRoute = (options) => {
|
|
|
20
21
|
const isHitY = RectangleClient.isHitY(options.sourceOuterRectangle, options.targetOuterRectangle);
|
|
21
22
|
const centerX = isHitX ? undefined : RectangleClient.getGapCenter(options.sourceOuterRectangle, options.targetOuterRectangle, true);
|
|
22
23
|
const centerY = isHitY ? undefined : RectangleClient.getGapCenter(options.sourceOuterRectangle, options.targetOuterRectangle, false);
|
|
23
|
-
route = routeAdjust(route, { centerX, centerY, sourceRectangle: options.sourceRectangle, targetRectangle: options.targetRectangle });
|
|
24
|
+
route = routeAdjust(route, { centerX, centerY, sourceRectangle: options.sourceRectangle, targetRectangle: options.targetRectangle }, board);
|
|
24
25
|
return route;
|
|
25
26
|
};
|
|
26
|
-
export const routeAdjust = (path, options) => {
|
|
27
|
+
export const routeAdjust = (path, options, board) => {
|
|
27
28
|
const { sourceRectangle, targetRectangle, centerX, centerY } = options;
|
|
29
|
+
if (board) {
|
|
30
|
+
debugGenerator.clear();
|
|
31
|
+
}
|
|
28
32
|
if (centerX !== undefined) {
|
|
29
33
|
const optionsX = getAdjustOptions(path, centerX, true);
|
|
30
34
|
const resultX = optionsX.pointOfHit &&
|
|
31
|
-
adjust(path, { parallelPaths: optionsX.parallelPaths, pointOfHit: optionsX.pointOfHit, sourceRectangle, targetRectangle });
|
|
35
|
+
adjust(path, { parallelPaths: optionsX.parallelPaths, pointOfHit: optionsX.pointOfHit, sourceRectangle, targetRectangle }, board);
|
|
32
36
|
if (resultX) {
|
|
33
37
|
path = resultX;
|
|
34
38
|
}
|
|
@@ -36,14 +40,14 @@ export const routeAdjust = (path, options) => {
|
|
|
36
40
|
if (centerY !== undefined) {
|
|
37
41
|
const optionsY = getAdjustOptions(path, centerY, false);
|
|
38
42
|
const resultY = optionsY.pointOfHit &&
|
|
39
|
-
adjust(path, { parallelPaths: optionsY.parallelPaths, pointOfHit: optionsY.pointOfHit, sourceRectangle, targetRectangle });
|
|
43
|
+
adjust(path, { parallelPaths: optionsY.parallelPaths, pointOfHit: optionsY.pointOfHit, sourceRectangle, targetRectangle }, board);
|
|
40
44
|
if (resultY) {
|
|
41
45
|
path = resultY;
|
|
42
46
|
}
|
|
43
47
|
}
|
|
44
48
|
return path;
|
|
45
49
|
};
|
|
46
|
-
const adjust = (route, options) => {
|
|
50
|
+
const adjust = (route, options, board) => {
|
|
47
51
|
const { parallelPaths, pointOfHit, sourceRectangle, targetRectangle } = options;
|
|
48
52
|
let result = null;
|
|
49
53
|
parallelPaths.forEach(parallelPath => {
|
|
@@ -52,7 +56,10 @@ const adjust = (route, options) => {
|
|
|
52
56
|
// directly use getCornerPoints will bring the precision issue (eg: 263.6923375175286 - 57.130859375)
|
|
53
57
|
const tempRect = RectangleClient.getRectangleByPoints(tempRectPoints);
|
|
54
58
|
if (!RectangleClient.isHit(tempRect, sourceRectangle) && !RectangleClient.isHit(tempRect, targetRectangle)) {
|
|
55
|
-
const tempCorners = RectangleClient.
|
|
59
|
+
const tempCorners = RectangleClient.getCornerPointsByPoints(tempRectPoints);
|
|
60
|
+
if (board) {
|
|
61
|
+
debugGenerator.drawRectangle(board, tempRect);
|
|
62
|
+
}
|
|
56
63
|
const indexRangeInPath = [];
|
|
57
64
|
const indexRangeInCorner = [];
|
|
58
65
|
route.forEach((point, index) => {
|
|
@@ -67,7 +74,11 @@ const adjust = (route, options) => {
|
|
|
67
74
|
const removeLength = Math.abs(indexRangeInPath[0] - indexRangeInPath[indexRangeInPath.length - 1]) + 1;
|
|
68
75
|
newPath.splice(indexRangeInPath[0] + 1, removeLength - 2, missCorner);
|
|
69
76
|
const turnCount = simplifyOrthogonalPoints([...route]).length - 1;
|
|
70
|
-
const
|
|
77
|
+
const simplifyPoints = simplifyOrthogonalPoints([...newPath]);
|
|
78
|
+
// if (board) {
|
|
79
|
+
// debugGenerator.drawLine(board, simplifyPoints);
|
|
80
|
+
// }
|
|
81
|
+
const newTurnCount = simplifyPoints.length - 1;
|
|
71
82
|
if (newTurnCount <= turnCount) {
|
|
72
83
|
result = newPath;
|
|
73
84
|
}
|
|
@@ -242,4 +253,4 @@ export const isSourceAndTargetIntersect = (options) => {
|
|
|
242
253
|
RectangleClient.isPointInRectangle(sourceOuterRectangle, nextTargetPoint) ||
|
|
243
254
|
RectangleClient.isPointInRectangle(sourceRectangle, targetPoint));
|
|
244
255
|
};
|
|
245
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxib3ctbGluZS1yb3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvdXRpbHMvZWxib3ctbGluZS1yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQTJCbEQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxPQUE4QixFQUFFLEVBQUU7SUFDckUsTUFBTSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDckQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixLQUFLLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BFLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzdELEtBQUssR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5RSxnSEFBZ0g7SUFDaEgsOEVBQThFO0lBQzlFLDZIQUE2SDtJQUM3SCwyR0FBMkc7SUFDM0csbUxB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QUFXLEVBQ1gsZUFBZSxFQUNmLGVBQWUsRUFDZixvQkFBb0IsRUFDdkIsR0FBRyxPQUFPLENBQUM7SUFFWixPQUFPLENBQ0gsZUFBZSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUM7UUFDaEUsZUFBZSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLGVBQWUsQ0FBQztRQUN6RSxlQUFlLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsZUFBZSxDQUFDO1FBQ3pFLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQ25FLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb24sIFBvaW50LCBSZWN0YW5nbGVDbGllbnQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyByZW1vdmVEdXBsaWNhdGVQb2ludHMsIHNpbXBsaWZ5T3J0aG9nb25hbFBvaW50cyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IERFRkFVTFRfUk9VVEVfTUFSR0lOIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEFTdGFyLCBQb2ludEdyYXBoIH0gZnJvbSAnLi4vYWxnb3JpdGhtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxib3dMaW5lUm91dGVPcHRpb25zIHtcbiAgICBzb3VyY2VQb2ludDogUG9pbnQ7XG4gICAgbmV4dFNvdXJjZVBvaW50OiBQb2ludDtcbiAgICBzb3VyY2VSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudDtcbiAgICBzb3VyY2VPdXRlclJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50O1xuICAgIHRhcmdldFBvaW50OiBQb2ludDtcbiAgICBuZXh0VGFyZ2V0UG9pbnQ6IFBvaW50O1xuICAgIHRhcmdldE91dGVyUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQ7XG4gICAgdGFyZ2V0UmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVBZGp1c3RPcHRpb25zIHtcbiAgICBjZW50ZXJYPzogbnVtYmVyO1xuICAgIGNlbnRlclk/OiBudW1iZXI7XG4gICAgc291cmNlUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQ7XG4gICAgdGFyZ2V0UmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRqdXN0T3B0aW9ucyB7XG4gICAgcGFyYWxsZWxQYXRoczogW1BvaW50LCBQb2ludF1bXTtcbiAgICBwb2ludE9mSGl0OiBQb2ludDtcbiAgICBzb3VyY2VSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudDtcbiAgICB0YXJnZXRSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudDtcbn1cblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlRWxib3dMaW5lUm91dGUgPSAob3B0aW9uczogRWxib3dMaW5lUm91dGVPcHRpb25zKSA9PiB7XG4gICAgY29uc3QgeyBuZXh0U291cmNlUG9pbnQsIG5leHRUYXJnZXRQb2ludCB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBwb2ludHMgPSBnZXRHcmFwaFBvaW50cyhvcHRpb25zKTtcbiAgICBjb25zdCBncmFwaCA9IGNyZWF0ZUdyYXBoKHBvaW50cyk7XG4gICAgY29uc3QgYVN0YXIgPSBuZXcgQVN0YXIoZ3JhcGgpO1xuICAgIGFTdGFyLnNlYXJjaChuZXh0U291cmNlUG9pbnQsIG5leHRUYXJnZXRQb2ludCwgb3B0aW9ucy5zb3VyY2VQb2ludCk7XG4gICAgbGV0IHJvdXRlID0gYVN0YXIuZ2V0Um91dGUobmV4dFNvdXJjZVBvaW50LCBuZXh0VGFyZ2V0UG9pbnQpO1xuICAgIHJvdXRlID0gW29wdGlvbnMuc291cmNlUG9pbnQsIC4uLnJvdXRlLCBuZXh0VGFyZ2V0UG9pbnQsIG9wdGlvbnMudGFyZ2V0UG9pbnRdO1xuICAgIC8vIENlbnRlcmxpbmUgY29ycmVjdGlvbjogQ29ycmVjdCB0aGUgc2hvcnRlc3QgcGF0aCByb3V0ZSBiYXNlZCBvbiB0aGUgaG9yaXpvbnRhbCBjZW50ZXJsaW5lL3ZlcnRpY2FsIGNlbnRlcmxpbmVcbiAgICAvLyAxLiBGaW5kIHRoZSBob3Jpem9udGFsIGNlbnRlciBsaW5lIChjZW50ZXJYKS92ZXJ0aWNhbCBjZW50ZXIgbGluZSAoY2VudGVyWSlcbiAgICAvLyAyLiBGaW5kIHRoZSBwb2ludCB0aGF0IGludGVyc2VjdHMgY2VudGVyWC9jZW50ZXJZIGluIHJvdXRlLCBhbmQgZmluZCB0aGUgbGluZSBzZWdtZW50IHBhcmFsbGVsIHRvIGNlbnRlclgvY2VudGVyWSBpbiByb3V0ZVxuICAgIC8vIDMuIENvbnN0cnVjdCBhIHJlY3RhbmdsZSBiYXNlZCBvbiB0aGUgaW50ZXJzZWN0aW9uIHBvaW50cyBhbmQgcGFyYWxsZWwgbGluZXMgZm91bmQgaW4gdGhlIHByZXZpb3VzIHN0ZXAuXG4gICAgLy8gNC4gRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHJlY3RhbmdsZSBpbnRlcnNlY3RzIHdpdGggdGhlIGVsZW1lbnQuIElmIGl0IGRvZXMgbm90IGludGVyc2VjdCwgdGhlIGNlbnRlciBsaW5lIGNhbiBiZSBtYXBwZWQgYmFzZWQgb24gdGhlIHJlY3RhbmdsZSBjb25zdHJ1Y3RlZCBpbiB0aGUgcHJldmlvdXMgc3RlcC5cbiAgICAvLyA1LiBEZXRlcm1pbmUgd2hldGhlciB0aGUgcGF0aCBhZnRlciBtYXBwaW5nIHRoZSBjZW50ZXIgbGluZSBtZWV0cyB0aGUgY29uc3RyYWludHMgKGluZmxlY3Rpb24gcG9pbnQgY2Fubm90IGJlIGluY3JlYXNlZClcbiAgICBjb25zdCBpc0hpdFggPSBSZWN0YW5nbGVDbGllbnQuaXNIaXRYKG9wdGlvbnMuc291cmNlT3V0ZXJSZWN0YW5nbGUsIG9wdGlvbnMudGFyZ2V0T3V0ZXJSZWN0YW5nbGUpO1xuICAgIGNvbnN0IGlzSGl0WSA9IFJlY3RhbmdsZUNsaWVudC5pc0hpdFkob3B0aW9ucy5zb3VyY2VPdXRlclJlY3RhbmdsZSwgb3B0aW9ucy50YXJnZXRPdXRlclJlY3RhbmdsZSk7XG4gICAgY29uc3QgY2VudGVyWCA9IGlzSGl0WCA/IHVuZGVmaW5lZCA6IFJlY3RhbmdsZUNsaWVudC5nZXRHYXBDZW50ZXIob3B0aW9ucy5zb3VyY2VPdXRlclJlY3RhbmdsZSwgb3B0aW9ucy50YXJnZXRPdXRlclJlY3RhbmdsZSwgdHJ1ZSk7XG4gICAgY29uc3QgY2VudGVyWSA9IGlzSGl0WSA/IHVuZGVmaW5lZCA6IFJlY3RhbmdsZUNsaWVudC5nZXRHYXBDZW50ZXIob3B0aW9ucy5zb3VyY2VPdXRlclJlY3RhbmdsZSwgb3B0aW9ucy50YXJnZXRPdXRlclJlY3RhbmdsZSwgZmFsc2UpO1xuICAgIHJvdXRlID0gcm91dGVBZGp1c3Qocm91dGUsIHsgY2VudGVyWCwgY2VudGVyWSwgc291cmNlUmVjdGFuZ2xlOiBvcHRpb25zLnNvdXJjZVJlY3RhbmdsZSwgdGFyZ2V0UmVjdGFuZ2xlOiBvcHRpb25zLnRhcmdldFJlY3RhbmdsZSB9KTtcbiAgICByZXR1cm4gcm91dGU7XG59O1xuXG5leHBvcnQgY29uc3Qgcm91dGVBZGp1c3QgPSAocGF0aDogUG9pbnRbXSwgb3B0aW9uczogUm91dGVBZGp1c3RPcHRpb25zKSA9PiB7XG4gICAgY29uc3QgeyBzb3VyY2VSZWN0YW5nbGUsIHRhcmdldFJlY3RhbmdsZSwgY2VudGVyWCwgY2VudGVyWSB9ID0gb3B0aW9ucztcbiAgICBpZiAoY2VudGVyWCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnNYID0gZ2V0QWRqdXN0T3B0aW9ucyhwYXRoLCBjZW50ZXJYLCB0cnVlKTtcbiAgICAgICAgY29uc3QgcmVzdWx0WCA9XG4gICAgICAgICAgICBvcHRpb25zWC5wb2ludE9mSGl0ICYmXG4gICAgICAgICAgICBhZGp1c3QocGF0aCwgeyBwYXJhbGxlbFBhdGhzOiBvcHRpb25zWC5wYXJhbGxlbFBhdGhzLCBwb2ludE9mSGl0OiBvcHRpb25zWC5wb2ludE9mSGl0LCBzb3VyY2VSZWN0YW5nbGUsIHRhcmdldFJlY3RhbmdsZSB9KTtcbiAgICAgICAgaWYgKHJlc3VsdFgpIHtcbiAgICAgICAgICAgIHBhdGggPSByZXN1bHRYO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChjZW50ZXJZICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uc1kgPSBnZXRBZGp1c3RPcHRpb25zKHBhdGgsIGNlbnRlclksIGZhbHNlKTtcbiAgICAgICAgY29uc3QgcmVzdWx0WSA9XG4gICAgICAgICAgICBvcHRpb25zWS5wb2ludE9mSGl0ICYmXG4gICAgICAgICAgICBhZGp1c3QocGF0aCwgeyBwYXJhbGxlbFBhdGhzOiBvcHRpb25zWS5wYXJhbGxlbFBhdGhzLCBwb2ludE9mSGl0OiBvcHRpb25zWS5wb2ludE9mSGl0LCBzb3VyY2VSZWN0YW5nbGUsIHRhcmdldFJlY3RhbmdsZSB9KTtcbiAgICAgICAgaWYgKHJlc3VsdFkpIHtcbiAgICAgICAgICAgIHBhdGggPSByZXN1bHRZO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXRoO1xufTtcblxuY29uc3QgYWRqdXN0ID0gKHJvdXRlOiBQb2ludFtdLCBvcHRpb25zOiBBZGp1c3RPcHRpb25zKTogbnVsbCB8IFBvaW50W10gPT4ge1xuICAgIGNvbnN0IHsgcGFyYWxsZWxQYXRocywgcG9pbnRPZkhpdCwgc291cmNlUmVjdGFuZ2xlLCB0YXJnZXRSZWN0YW5nbGUgfSA9IG9wdGlvbnM7XG4gICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgcGFyYWxsZWxQYXRocy5mb3JFYWNoKHBhcmFsbGVsUGF0aCA9PiB7XG4gICAgICAgIC8vIENvbnN0cnVjdCBhIHJlY3RhbmdsZVxuICAgICAgICBjb25zdCB0ZW1wUmVjdFBvaW50cyA9IFtwb2ludE9mSGl0LCBwYXJhbGxlbFBhdGhbMF0sIHBhcmFsbGVsUGF0aFsxXV07XG4gICAgICAgIC8vIGRpcmVjdGx5IHVzZSBnZXRDb3JuZXJQb2ludHMgd2lsbCBicmluZyB0aGUgcHJlY2lzaW9uIGlzc3VlIChlZzogMjYzLjY5MjMzNzUxNzUyODYgLSA1Ny4xMzA4NTkzNzUpXG4gICAgICAgIGNvbnN0IHRlbXBSZWN0ID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKHRlbXBSZWN0UG9pbnRzKTtcbiAgICAgICAgaWYgKCFSZWN0YW5nbGVDbGllbnQuaXNIaXQodGVtcFJlY3QsIHNvdXJjZVJlY3RhbmdsZSkgJiYgIVJlY3RhbmdsZUNsaWVudC5pc0hpdCh0ZW1wUmVjdCwgdGFyZ2V0UmVjdGFuZ2xlKSkge1xuICAgICAgICAgICAgY29uc3QgdGVtcENvcm5lcnMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHRlbXBSZWN0KTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4UmFuZ2VJblBhdGg6IG51bWJlcltdID0gW107XG4gICAgICAgICAgICBjb25zdCBpbmRleFJhbmdlSW5Db3JuZXI6IG51bWJlcltdID0gW107XG4gICAgICAgICAgICByb3V0ZS5mb3JFYWNoKChwb2ludCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb3JuZXJSZXN1bHQgPSB0ZW1wQ29ybmVycy5maW5kSW5kZXgoY29ybmVyID0+IFBvaW50LmlzRXF1YWxzKHBvaW50LCBjb3JuZXIpKTtcbiAgICAgICAgICAgICAgICBpZiAoY29ybmVyUmVzdWx0ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleFJhbmdlSW5QYXRoLnB1c2goaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBpbmRleFJhbmdlSW5Db3JuZXIucHVzaChjb3JuZXJSZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgbmV3UGF0aCA9IFsuLi5yb3V0ZV07XG4gICAgICAgICAgICBjb25zdCBtaXNzQ29ybmVyID0gdGVtcENvcm5lcnMuZmluZCgoYywgaW5kZXgpID0+ICFpbmRleFJhbmdlSW5Db3JuZXIuaW5jbHVkZXMoaW5kZXgpKSBhcyBQb2ludDtcbiAgICAgICAgICAgIGNvbnN0IHJlbW92ZUxlbmd0aCA9IE1hdGguYWJzKGluZGV4UmFuZ2VJblBhdGhbMF0gLSBpbmRleFJhbmdlSW5QYXRoW2luZGV4UmFuZ2VJblBhdGgubGVuZ3RoIC0gMV0pICsgMTtcbiAgICAgICAgICAgIG5ld1BhdGguc3BsaWNlKGluZGV4UmFuZ2VJblBhdGhbMF0gKyAxLCByZW1vdmVMZW5ndGggLSAyLCBtaXNzQ29ybmVyKTtcbiAgICAgICAgICAgIGNvbnN0IHR1cm5Db3VudCA9IHNpbXBsaWZ5T3J0aG9nb25hbFBvaW50cyhbLi4ucm91dGVdKS5sZW5ndGggLSAxO1xuICAgICAgICAgICAgY29uc3QgbmV3VHVybkNvdW50ID0gc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzKFsuLi5uZXdQYXRoXSkubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGlmIChuZXdUdXJuQ291bnQgPD0gdHVybkNvdW50KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3UGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgZ2V0QWRqdXN0T3B0aW9ucyA9IChwYXRoOiBQb2ludFtdLCBjZW50ZXJPZkF4aXM6IG51bWJlciwgaXNIb3Jpem9udGFsOiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgcGFyYWxsZWxQYXRoczogW1BvaW50LCBQb2ludF1bXSA9IFtdO1xuICAgIGxldCBzdGFydDogbnVsbCB8IFBvaW50ID0gbnVsbDtcbiAgICBsZXQgcG9pbnRPZkhpdDogbnVsbCB8IFBvaW50ID0gbnVsbDtcbiAgICBjb25zdCBheGlzID0gaXNIb3Jpem9udGFsID8gMCA6IDE7XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcGF0aC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSBwYXRoW2luZGV4IC0gMV07XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBwYXRoW2luZGV4XTtcbiAgICAgICAgaWYgKHN0YXJ0ID09PSBudWxsICYmIHByZXZpb3VzICYmIHByZXZpb3VzW2F4aXNdID09PSBjdXJyZW50W2F4aXNdKSB7XG4gICAgICAgICAgICBzdGFydCA9IHByZXZpb3VzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHByZXZpb3VzW2F4aXNdICE9PSBjdXJyZW50W2F4aXNdKSB7XG4gICAgICAgICAgICAgICAgcGFyYWxsZWxQYXRocy5wdXNoKFtzdGFydCwgcHJldmlvdXNdKTtcbiAgICAgICAgICAgICAgICBzdGFydCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnJlbnRbYXhpc10gPT09IGNlbnRlck9mQXhpcykge1xuICAgICAgICAgICAgcG9pbnRPZkhpdCA9IGN1cnJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICAgIHBhcmFsbGVsUGF0aHMucHVzaChbc3RhcnQsIHBhdGhbcGF0aC5sZW5ndGggLSAxXV0pO1xuICAgIH1cbiAgICByZXR1cm4geyBwb2ludE9mSGl0LCBwYXJhbGxlbFBhdGhzIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R3JhcGhQb2ludHMgPSAob3B0aW9uczogRWxib3dMaW5lUm91dGVPcHRpb25zKSA9PiB7XG4gICAgY29uc3QgeyBuZXh0U291cmNlUG9pbnQsIG5leHRUYXJnZXRQb2ludCwgc291cmNlT3V0ZXJSZWN0YW5nbGUsIHRhcmdldE91dGVyUmVjdGFuZ2xlIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHg6IG51bWJlcltdID0gW107XG4gICAgY29uc3QgeTogbnVtYmVyW10gPSBbXTtcbiAgICBsZXQgcmVzdWx0OiBQb2ludFtdID0gW107XG5cbiAgICBbc291cmNlT3V0ZXJSZWN0YW5nbGUsIHRhcmdldE91dGVyUmVjdGFuZ2xlXS5mb3JFYWNoKHJlY3RhbmdsZSA9PiB7XG4gICAgICAgIHgucHVzaChyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAyLCByZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCk7XG4gICAgICAgIHkucHVzaChyZWN0YW5nbGUueSwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMiwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0KTtcbiAgICB9KTtcbiAgICBjb25zdCByZWN0YW5nbGVzWCA9IFtcbiAgICAgICAgc291cmNlT3V0ZXJSZWN0YW5nbGUueCxcbiAgICAgICAgc291cmNlT3V0ZXJSZWN0YW5nbGUueCArIHNvdXJjZU91dGVyUmVjdGFuZ2xlLndpZHRoLFxuICAgICAgICB0YXJnZXRPdXRlclJlY3RhbmdsZS54LFxuICAgICAgICB0YXJnZXRPdXRlclJlY3RhbmdsZS54ICsgdGFyZ2V0T3V0ZXJSZWN0YW5nbGUud2lkdGhcbiAgICBdLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICB4LnB1c2goKHJlY3RhbmdsZXNYWzFdICsgcmVjdGFuZ2xlc1hbMl0pIC8gMiwgbmV4dFNvdXJjZVBvaW50WzBdLCBuZXh0VGFyZ2V0UG9pbnRbMF0pO1xuICAgIGNvbnN0IHJlY3RhbmdsZXNZID0gW1xuICAgICAgICBzb3VyY2VPdXRlclJlY3RhbmdsZS55LFxuICAgICAgICBzb3VyY2VPdXRlclJlY3RhbmdsZS55ICsgc291cmNlT3V0ZXJSZWN0YW5nbGUuaGVpZ2h0LFxuICAgICAgICB0YXJnZXRPdXRlclJlY3RhbmdsZS55LFxuICAgICAgICB0YXJnZXRPdXRlclJlY3RhbmdsZS55ICsgdGFyZ2V0T3V0ZXJSZWN0YW5nbGUuaGVpZ2h0XG4gICAgXS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgeS5wdXNoKChyZWN0YW5nbGVzWVsxXSArIHJlY3RhbmdsZXNZWzJdKSAvIDIsIG5leHRTb3VyY2VQb2ludFsxXSwgbmV4dFRhcmdldFBvaW50WzFdKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB5Lmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludDogUG9pbnQgPSBbeFtpXSwgeVtqXV07XG4gICAgICAgICAgICBjb25zdCBpc0luU291cmNlID0gUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZShzb3VyY2VPdXRlclJlY3RhbmdsZSwgcG9pbnQpO1xuICAgICAgICAgICAgY29uc3QgaXNJblRhcmdldCA9IFJlY3RhbmdsZUNsaWVudC5pc1BvaW50SW5SZWN0YW5nbGUodGFyZ2V0T3V0ZXJSZWN0YW5nbGUsIHBvaW50KTtcbiAgICAgICAgICAgIGlmICghaXNJblNvdXJjZSAmJiAhaXNJblRhcmdldCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBvaW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQgPSByZW1vdmVEdXBsaWNhdGVQb2ludHMocmVzdWx0KS5maWx0ZXIocG9pbnQgPT4ge1xuICAgICAgICBjb25zdCBpc0luU291cmNlID0gUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZShzb3VyY2VPdXRlclJlY3RhbmdsZSwgcG9pbnQpO1xuICAgICAgICBjb25zdCBpc0luVGFyZ2V0ID0gUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZSh0YXJnZXRPdXRlclJlY3RhbmdsZSwgcG9pbnQpO1xuICAgICAgICByZXR1cm4gIWlzSW5Tb3VyY2UgJiYgIWlzSW5UYXJnZXQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVHcmFwaCA9IChwb2ludHM6IFBvaW50W10pID0+IHtcbiAgICBjb25zdCBncmFwaCA9IG5ldyBQb2ludEdyYXBoKCk7XG4gICAgY29uc3QgWHM6IG51bWJlcltdID0gW107XG4gICAgY29uc3QgWXM6IG51bWJlcltdID0gW107XG4gICAgcG9pbnRzLmZvckVhY2gocCA9PiB7XG4gICAgICAgIGNvbnN0IHggPSBwWzBdLFxuICAgICAgICAgICAgeSA9IHBbMV07XG4gICAgICAgIGlmIChYcy5pbmRleE9mKHgpIDwgMCkgWHMucHVzaCh4KTtcbiAgICAgICAgaWYgKFlzLmluZGV4T2YoeSkgPCAwKSBZcy5wdXNoKHkpO1xuICAgICAgICBncmFwaC5hZGQocCk7XG4gICAgfSk7XG4gICAgWHMuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgIFlzLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICBjb25zdCBpbkhvdEluZGV4ID0gKHA6IFBvaW50KTogYm9vbGVhbiA9PiBncmFwaC5oYXMocCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBYcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IFlzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludDogUG9pbnQgPSBbWHNbaV0sIFlzW2pdXTtcbiAgICAgICAgICAgIGlmICghaW5Ib3RJbmRleChwb2ludCkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3RoZXJQb2ludDogUG9pbnQgPSBbWHNbaSAtIDFdLCBZc1tqXV07XG4gICAgICAgICAgICAgICAgaWYgKGluSG90SW5kZXgob3RoZXJQb2ludCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JhcGguY29ubmVjdChvdGhlclBvaW50LCBwb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIGdyYXBoLmNvbm5lY3QocG9pbnQsIG90aGVyUG9pbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG90aGVyUG9pbnQ6IFBvaW50ID0gW1hzW2ldLCBZc1tqIC0gMV1dO1xuICAgICAgICAgICAgICAgIGlmIChpbkhvdEluZGV4KG90aGVyUG9pbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyYXBoLmNvbm5lY3Qob3RoZXJQb2ludCwgcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICBncmFwaC5jb25uZWN0KHBvaW50LCBvdGhlclBvaW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGdyYXBoO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZHVjZVJvdXRlTWFyZ2luID0gKHNvdXJjZVJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCB0YXJnZXRSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRPZmZzZXQgPSBERUZBVUxUX1JPVVRFX01BUkdJTjtcbiAgICBsZXQgc291cmNlT2Zmc2V0OiBudW1iZXJbXSA9IG5ldyBBcnJheSg0KS5maWxsKGRlZmF1bHRPZmZzZXQpO1xuICAgIGxldCB0YXJnZXRPZmZzZXQ6IG51bWJlcltdID0gbmV3IEFycmF5KDQpLmZpbGwoZGVmYXVsdE9mZnNldCk7XG4gICAgY29uc3QgbGVmdFRvUmlnaHQgPSBzb3VyY2VSZWN0YW5nbGUueCAtICh0YXJnZXRSZWN0YW5nbGUueCArIHRhcmdldFJlY3RhbmdsZS53aWR0aCk7XG4gICAgY29uc3QgcmlnaHRUb0xlZnQgPSB0YXJnZXRSZWN0YW5nbGUueCAtIChzb3VyY2VSZWN0YW5nbGUueCArIHNvdXJjZVJlY3RhbmdsZS53aWR0aCk7XG4gICAgaWYgKGxlZnRUb1JpZ2h0ID4gMCAmJiBsZWZ0VG9SaWdodCA8IGRlZmF1bHRPZmZzZXQgKiAyKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGxlZnRUb1JpZ2h0IC8gMjtcbiAgICAgICAgc291cmNlT2Zmc2V0WzNdID0gb2Zmc2V0O1xuICAgICAgICB0YXJnZXRPZmZzZXRbMV0gPSBvZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0VG9MZWZ0ID4gMCAmJiByaWdodFRvTGVmdCA8IGRlZmF1bHRPZmZzZXQgKiAyKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHJpZ2h0VG9MZWZ0IC8gMjtcbiAgICAgICAgdGFyZ2V0T2Zmc2V0WzNdID0gb2Zmc2V0O1xuICAgICAgICBzb3VyY2VPZmZzZXRbMV0gPSBvZmZzZXQ7XG4gICAgfVxuXG4gICAgY29uc3QgdG9wVG9Cb3R0b20gPSBzb3VyY2VSZWN0YW5nbGUueSAtICh0YXJnZXRSZWN0YW5nbGUueSArIHRhcmdldFJlY3RhbmdsZS5oZWlnaHQpO1xuICAgIGNvbnN0IGJvdHRvbVRvVG9wID0gdGFyZ2V0UmVjdGFuZ2xlLnkgLSAoc291cmNlUmVjdGFuZ2xlLnkgKyBzb3VyY2VSZWN0YW5nbGUuaGVpZ2h0KTtcbiAgICBpZiAodG9wVG9Cb3R0b20gPiAwICYmIHRvcFRvQm90dG9tIDwgZGVmYXVsdE9mZnNldCAqIDIpIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdG9wVG9Cb3R0b20gLyAyO1xuICAgICAgICBzb3VyY2VPZmZzZXRbMF0gPSBvZmZzZXQ7XG4gICAgICAgIHRhcmdldE9mZnNldFsyXSA9IG9mZnNldDtcbiAgICB9XG4gICAgaWYgKGJvdHRvbVRvVG9wID4gMCAmJiBib3R0b21Ub1RvcCA8IGRlZmF1bHRPZmZzZXQgKiAyKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGJvdHRvbVRvVG9wIC8gMjtcbiAgICAgICAgc291cmNlT2Zmc2V0WzJdID0gb2Zmc2V0O1xuICAgICAgICB0YXJnZXRPZmZzZXRbMF0gPSBvZmZzZXQ7XG4gICAgfVxuICAgIHJldHVybiB7IHNvdXJjZU9mZnNldCwgdGFyZ2V0T2Zmc2V0IH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TmV4dFBvaW50ID0gKHBvaW50OiBQb2ludCwgb3V0ZXJSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgZGlyZWN0aW9uOiBEaXJlY3Rpb24pOiBQb2ludCA9PiB7XG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgICAgY2FzZSBEaXJlY3Rpb24udG9wOiB7XG4gICAgICAgICAgICByZXR1cm4gW3BvaW50WzBdLCBvdXRlclJlY3RhbmdsZS55XTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIERpcmVjdGlvbi5ib3R0b206IHtcbiAgICAgICAgICAgIHJldHVybiBbcG9pbnRbMF0sIG91dGVyUmVjdGFuZ2xlLnkgKyBvdXRlclJlY3RhbmdsZS5oZWlnaHRdO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgRGlyZWN0aW9uLnJpZ2h0OiB7XG4gICAgICAgICAgICByZXR1cm4gW291dGVyUmVjdGFuZ2xlLnggKyBvdXRlclJlY3RhbmdsZS53aWR0aCwgcG9pbnRbMV1dO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHJldHVybiBbb3V0ZXJSZWN0YW5nbGUueCwgcG9pbnRbMV1dO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFNvdXJjZUFuZFRhcmdldE91dGVyUmVjdGFuZ2xlID0gKHNvdXJjZVJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCB0YXJnZXRSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkgPT4ge1xuICAgIGNvbnN0IHsgc291cmNlT2Zmc2V0LCB0YXJnZXRPZmZzZXQgfSA9IHJlZHVjZVJvdXRlTWFyZ2luKHNvdXJjZVJlY3RhbmdsZSwgdGFyZ2V0UmVjdGFuZ2xlKTtcbiAgICBjb25zdCBzb3VyY2VPdXRlclJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5leHBhbmQoXG4gICAgICAgIHNvdXJjZVJlY3RhbmdsZSxcbiAgICAgICAgc291cmNlT2Zmc2V0WzNdLFxuICAgICAgICBzb3VyY2VPZmZzZXRbMF0sXG4gICAgICAgIHNvdXJjZU9mZnNldFsxXSxcbiAgICAgICAgc291cmNlT2Zmc2V0WzJdXG4gICAgKTtcbiAgICBjb25zdCB0YXJnZXRPdXRlclJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5leHBhbmQoXG4gICAgICAgIHRhcmdldFJlY3RhbmdsZSxcbiAgICAgICAgdGFyZ2V0T2Zmc2V0WzNdLFxuICAgICAgICB0YXJnZXRPZmZzZXRbMF0sXG4gICAgICAgIHRhcmdldE9mZnNldFsxXSxcbiAgICAgICAgdGFyZ2V0T2Zmc2V0WzJdXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBzb3VyY2VPdXRlclJlY3RhbmdsZSxcbiAgICAgICAgdGFyZ2V0T3V0ZXJSZWN0YW5nbGVcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU291cmNlQW5kVGFyZ2V0SW50ZXJzZWN0ID0gKG9wdGlvbnM6IEVsYm93TGluZVJvdXRlT3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgICAgc291cmNlUG9pbnQsXG4gICAgICAgIG5leHRTb3VyY2VQb2ludCxcbiAgICAgICAgc291cmNlUmVjdGFuZ2xlLFxuICAgICAgICBzb3VyY2VPdXRlclJlY3RhbmdsZSxcbiAgICAgICAgdGFyZ2V0UG9pbnQsXG4gICAgICAgIG5leHRUYXJnZXRQb2ludCxcbiAgICAgICAgdGFyZ2V0UmVjdGFuZ2xlLFxuICAgICAgICB0YXJnZXRPdXRlclJlY3RhbmdsZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZSh0YXJnZXRSZWN0YW5nbGUsIHNvdXJjZVBvaW50KSB8fFxuICAgICAgICBSZWN0YW5nbGVDbGllbnQuaXNQb2ludEluUmVjdGFuZ2xlKHRhcmdldE91dGVyUmVjdGFuZ2xlLCBuZXh0U291cmNlUG9pbnQpIHx8XG4gICAgICAgIFJlY3RhbmdsZUNsaWVudC5pc1BvaW50SW5SZWN0YW5nbGUoc291cmNlT3V0ZXJSZWN0YW5nbGUsIG5leHRUYXJnZXRQb2ludCkgfHxcbiAgICAgICAgUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUsIHRhcmdldFBvaW50KVxuICAgICk7XG59O1xuIl19
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxib3ctbGluZS1yb3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbW1vbi9zcmMvdXRpbHMvZWxib3ctbGluZS1yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQWtCLE1BQU0sYUFBYSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEQsTUFBTSxjQUFjLEdBQUcsb0JBQW9CLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztBQTJCOUUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxPQUE4QixFQUFFLEtBQWtCLEVBQUUsRUFBRTtJQUN6RixNQUFNLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUNyRCxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLEtBQUssQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEUsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDN0QsS0FBSyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxHQUFHLEtBQUssRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLFdB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LENBQ2xCLENBQUM7SUFDRixNQUFNLG9CQUFvQixHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQy9DLGVBQWUsRUFDZixZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQ2YsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUNmLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDZixZQUFZLENBQUMsQ0FBQyxDQUFDLENBQ2xCLENBQUM7SUFDRixPQUFPO1FBQ0gsb0JBQW9CO1FBQ3BCLG9CQUFvQjtLQUN2QixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxPQUE4QixFQUFFLEVBQUU7SUFDekUsTUFBTSxFQUNGLFdBQVcsRUFDWCxlQUFlLEVBQ2YsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixXQUFXLEVBQ1gsZUFBZSxFQUNmLGVBQWUsRUFDZixvQkFBb0IsRUFDdkIsR0FBRyxPQUFPLENBQUM7SUFFWixPQUFPLENBQ0gsZUFBZSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUM7UUFDaEUsZUFBZSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLGVBQWUsQ0FBQztRQUN6RSxlQUFlLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsZUFBZSxDQUFDO1FBQ3pFLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQ25FLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb24sIFBsYWl0Qm9hcmQsIFBvaW50LCBSZWN0YW5nbGVDbGllbnQsIGNyZWF0ZURlYnVnR2VuZXJhdG9yLCBEZWJ1Z0dlbmVyYXRvciB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IHJlbW92ZUR1cGxpY2F0ZVBvaW50cywgc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgREVGQVVMVF9ST1VURV9NQVJHSU4gfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQVN0YXIsIFBvaW50R3JhcGggfSBmcm9tICcuLi9hbGdvcml0aG1zJztcblxuY29uc3QgZGVidWdHZW5lcmF0b3IgPSBjcmVhdGVEZWJ1Z0dlbmVyYXRvcignZGVidWc6cGxhaXQ6ZWxib3ctbGluZS1yb3V0aW5nJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxib3dMaW5lUm91dGVPcHRpb25zIHtcbiAgICBzb3VyY2VQb2ludDogUG9pbnQ7XG4gICAgbmV4dFNvdXJjZVBvaW50OiBQb2ludDtcbiAgICBzb3VyY2VSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudDtcbiAgICBzb3VyY2VPdXRlclJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50O1xuICAgIHRhcmdldFBvaW50OiBQb2ludDtcbiAgICBuZXh0VGFyZ2V0UG9pbnQ6IFBvaW50O1xuICAgIHRhcmdldE91dGVyUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQ7XG4gICAgdGFyZ2V0UmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVBZGp1c3RPcHRpb25zIHtcbiAgICBjZW50ZXJYPzogbnVtYmVyO1xuICAgIGNlbnRlclk/OiBudW1iZXI7XG4gICAgc291cmNlUmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQ7XG4gICAgdGFyZ2V0UmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRqdXN0T3B0aW9ucyB7XG4gICAgcGFyYWxsZWxQYXRoczogW1BvaW50LCBQb2ludF1bXTtcbiAgICBwb2ludE9mSGl0OiBQb2ludDtcbiAgICBzb3VyY2VSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudDtcbiAgICB0YXJnZXRSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudDtcbn1cblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlRWxib3dMaW5lUm91dGUgPSAob3B0aW9uczogRWxib3dMaW5lUm91dGVPcHRpb25zLCBib2FyZD86IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCB7IG5leHRTb3VyY2VQb2ludCwgbmV4dFRhcmdldFBvaW50IH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHBvaW50cyA9IGdldEdyYXBoUG9pbnRzKG9wdGlvbnMpO1xuICAgIGNvbnN0IGdyYXBoID0gY3JlYXRlR3JhcGgocG9pbnRzKTtcbiAgICBjb25zdCBhU3RhciA9IG5ldyBBU3RhcihncmFwaCk7XG4gICAgYVN0YXIuc2VhcmNoKG5leHRTb3VyY2VQb2ludCwgbmV4dFRhcmdldFBvaW50LCBvcHRpb25zLnNvdXJjZVBvaW50KTtcbiAgICBsZXQgcm91dGUgPSBhU3Rhci5nZXRSb3V0ZShuZXh0U291cmNlUG9pbnQsIG5leHRUYXJnZXRQb2ludCk7XG4gICAgcm91dGUgPSBbb3B0aW9ucy5zb3VyY2VQb2ludCwgLi4ucm91dGUsIG5leHRUYXJnZXRQb2ludCwgb3B0aW9ucy50YXJnZXRQb2ludF07XG4gICAgLy8gQ2VudGVybGluZSBjb3JyZWN0aW9uOiBDb3JyZWN0IHRoZSBzaG9ydGVzdCBwYXRoIHJvdXRlIGJhc2VkIG9uIHRoZSBob3Jpem9udGFsIGNlbnRlcmxpbmUvdmVydGljYWwgY2VudGVybGluZVxuICAgIC8vIDEuIEZpbmQgdGhlIGhvcml6b250YWwgY2VudGVyIGxpbmUgKGNlbnRlclgpL3ZlcnRpY2FsIGNlbnRlciBsaW5lIChjZW50ZXJZKVxuICAgIC8vIDIuIEZpbmQgdGhlIHBvaW50IHRoYXQgaW50ZXJzZWN0cyBjZW50ZXJYL2NlbnRlclkgaW4gcm91dGUsIGFuZCBmaW5kIHRoZSBsaW5lIHNlZ21lbnQgcGFyYWxsZWwgdG8gY2VudGVyWC9jZW50ZXJZIGluIHJvdXRlXG4gICAgLy8gMy4gQ29uc3RydWN0IGEgcmVjdGFuZ2xlIGJhc2VkIG9uIHRoZSBpbnRlcnNlY3Rpb24gcG9pbnRzIGFuZCBwYXJhbGxlbCBsaW5lcyBmb3VuZCBpbiB0aGUgcHJldmlvdXMgc3RlcC5cbiAgICAvLyA0LiBEZXRlcm1pbmUgd2hldGhlciB0aGUgcmVjdGFuZ2xlIGludGVyc2VjdHMgd2l0aCB0aGUgZWxlbWVudC4gSWYgaXQgZG9lcyBub3QgaW50ZXJzZWN0LCB0aGUgY2VudGVyIGxpbmUgY2FuIGJlIG1hcHBlZCBiYXNlZCBvbiB0aGUgcmVjdGFuZ2xlIGNvbnN0cnVjdGVkIGluIHRoZSBwcmV2aW91cyBzdGVwLlxuICAgIC8vIDUuIERldGVybWluZSB3aGV0aGVyIHRoZSBwYXRoIGFmdGVyIG1hcHBpbmcgdGhlIGNlbnRlciBsaW5lIG1lZXRzIHRoZSBjb25zdHJhaW50cyAoaW5mbGVjdGlvbiBwb2ludCBjYW5ub3QgYmUgaW5jcmVhc2VkKVxuICAgIGNvbnN0IGlzSGl0WCA9IFJlY3RhbmdsZUNsaWVudC5pc0hpdFgob3B0aW9ucy5zb3VyY2VPdXRlclJlY3RhbmdsZSwgb3B0aW9ucy50YXJnZXRPdXRlclJlY3RhbmdsZSk7XG4gICAgY29uc3QgaXNIaXRZID0gUmVjdGFuZ2xlQ2xpZW50LmlzSGl0WShvcHRpb25zLnNvdXJjZU91dGVyUmVjdGFuZ2xlLCBvcHRpb25zLnRhcmdldE91dGVyUmVjdGFuZ2xlKTtcbiAgICBjb25zdCBjZW50ZXJYID0gaXNIaXRYID8gdW5kZWZpbmVkIDogUmVjdGFuZ2xlQ2xpZW50LmdldEdhcENlbnRlcihvcHRpb25zLnNvdXJjZU91dGVyUmVjdGFuZ2xlLCBvcHRpb25zLnRhcmdldE91dGVyUmVjdGFuZ2xlLCB0cnVlKTtcbiAgICBjb25zdCBjZW50ZXJZID0gaXNIaXRZID8gdW5kZWZpbmVkIDogUmVjdGFuZ2xlQ2xpZW50LmdldEdhcENlbnRlcihvcHRpb25zLnNvdXJjZU91dGVyUmVjdGFuZ2xlLCBvcHRpb25zLnRhcmdldE91dGVyUmVjdGFuZ2xlLCBmYWxzZSk7XG4gICAgcm91dGUgPSByb3V0ZUFkanVzdChyb3V0ZSwgeyBjZW50ZXJYLCBjZW50ZXJZLCBzb3VyY2VSZWN0YW5nbGU6IG9wdGlvbnMuc291cmNlUmVjdGFuZ2xlLCB0YXJnZXRSZWN0YW5nbGU6IG9wdGlvbnMudGFyZ2V0UmVjdGFuZ2xlIH0sIGJvYXJkKTtcbiAgICByZXR1cm4gcm91dGU7XG59O1xuXG5leHBvcnQgY29uc3Qgcm91dGVBZGp1c3QgPSAocGF0aDogUG9pbnRbXSwgb3B0aW9uczogUm91dGVBZGp1c3RPcHRpb25zLCBib2FyZD86IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCB7IHNvdXJjZVJlY3RhbmdsZSwgdGFyZ2V0UmVjdGFuZ2xlLCBjZW50ZXJYLCBjZW50ZXJZIH0gPSBvcHRpb25zO1xuICAgIGlmIChib2FyZCkge1xuICAgICAgICBkZWJ1Z0dlbmVyYXRvci5jbGVhcigpO1xuICAgIH1cbiAgICBpZiAoY2VudGVyWCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnNYID0gZ2V0QWRqdXN0T3B0aW9ucyhwYXRoLCBjZW50ZXJYLCB0cnVlKTtcbiAgICAgICAgY29uc3QgcmVzdWx0WCA9XG4gICAgICAgICAgICBvcHRpb25zWC5wb2ludE9mSGl0ICYmXG4gICAgICAgICAgICBhZGp1c3QocGF0aCwgeyBwYXJhbGxlbFBhdGhzOiBvcHRpb25zWC5wYXJhbGxlbFBhdGhzLCBwb2ludE9mSGl0OiBvcHRpb25zWC5wb2ludE9mSGl0LCBzb3VyY2VSZWN0YW5nbGUsIHRhcmdldFJlY3RhbmdsZSB9LCBib2FyZCk7XG4gICAgICAgIGlmIChyZXN1bHRYKSB7XG4gICAgICAgICAgICBwYXRoID0gcmVzdWx0WDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2VudGVyWSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnNZID0gZ2V0QWRqdXN0T3B0aW9ucyhwYXRoLCBjZW50ZXJZLCBmYWxzZSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdFkgPVxuICAgICAgICAgICAgb3B0aW9uc1kucG9pbnRPZkhpdCAmJlxuICAgICAgICAgICAgYWRqdXN0KHBhdGgsIHsgcGFyYWxsZWxQYXRoczogb3B0aW9uc1kucGFyYWxsZWxQYXRocywgcG9pbnRPZkhpdDogb3B0aW9uc1kucG9pbnRPZkhpdCwgc291cmNlUmVjdGFuZ2xlLCB0YXJnZXRSZWN0YW5nbGUgfSwgIGJvYXJkKTtcbiAgICAgICAgaWYgKHJlc3VsdFkpIHtcbiAgICAgICAgICAgIHBhdGggPSByZXN1bHRZO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYXRoO1xufTtcblxuY29uc3QgYWRqdXN0ID0gKHJvdXRlOiBQb2ludFtdLCBvcHRpb25zOiBBZGp1c3RPcHRpb25zLCBib2FyZD86IFBsYWl0Qm9hcmQpOiBudWxsIHwgUG9pbnRbXSA9PiB7XG4gICAgY29uc3QgeyBwYXJhbGxlbFBhdGhzLCBwb2ludE9mSGl0LCBzb3VyY2VSZWN0YW5nbGUsIHRhcmdldFJlY3RhbmdsZSB9ID0gb3B0aW9ucztcbiAgICBsZXQgcmVzdWx0ID0gbnVsbDtcbiAgICBwYXJhbGxlbFBhdGhzLmZvckVhY2gocGFyYWxsZWxQYXRoID0+IHtcbiAgICAgICAgLy8gQ29uc3RydWN0IGEgcmVjdGFuZ2xlXG4gICAgICAgIGNvbnN0IHRlbXBSZWN0UG9pbnRzID0gW3BvaW50T2ZIaXQsIHBhcmFsbGVsUGF0aFswXSwgcGFyYWxsZWxQYXRoWzFdXTtcbiAgICAgICAgLy8gZGlyZWN0bHkgdXNlIGdldENvcm5lclBvaW50cyB3aWxsIGJyaW5nIHRoZSBwcmVjaXNpb24gaXNzdWUgKGVnOiAyNjMuNjkyMzM3NTE3NTI4NiAtIDU3LjEzMDg1OTM3NSlcbiAgICAgICAgY29uc3QgdGVtcFJlY3QgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHModGVtcFJlY3RQb2ludHMpO1xuICAgICAgICBpZiAoIVJlY3RhbmdsZUNsaWVudC5pc0hpdCh0ZW1wUmVjdCwgc291cmNlUmVjdGFuZ2xlKSAmJiAhUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHRlbXBSZWN0LCB0YXJnZXRSZWN0YW5nbGUpKSB7XG4gICAgICAgICAgICBjb25zdCB0ZW1wQ29ybmVycyA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHNCeVBvaW50cyh0ZW1wUmVjdFBvaW50cyk7XG4gICAgICAgICAgICBpZiAoYm9hcmQpIHtcbiAgICAgICAgICAgICAgICBkZWJ1Z0dlbmVyYXRvci5kcmF3UmVjdGFuZ2xlKGJvYXJkLCB0ZW1wUmVjdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBpbmRleFJhbmdlSW5QYXRoOiBudW1iZXJbXSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgaW5kZXhSYW5nZUluQ29ybmVyOiBudW1iZXJbXSA9IFtdO1xuICAgICAgICAgICAgcm91dGUuZm9yRWFjaCgocG9pbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29ybmVyUmVzdWx0ID0gdGVtcENvcm5lcnMuZmluZEluZGV4KGNvcm5lciA9PiBQb2ludC5pc0VxdWFscyhwb2ludCwgY29ybmVyKSk7XG4gICAgICAgICAgICAgICAgaWYgKGNvcm5lclJlc3VsdCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXhSYW5nZUluUGF0aC5wdXNoKGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXhSYW5nZUluQ29ybmVyLnB1c2goY29ybmVyUmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1BhdGggPSBbLi4ucm91dGVdO1xuICAgICAgICAgICAgY29uc3QgbWlzc0Nvcm5lciA9IHRlbXBDb3JuZXJzLmZpbmQoKGMsIGluZGV4KSA9PiAhaW5kZXhSYW5nZUluQ29ybmVyLmluY2x1ZGVzKGluZGV4KSkgYXMgUG9pbnQ7XG4gICAgICAgICAgICBjb25zdCByZW1vdmVMZW5ndGggPSBNYXRoLmFicyhpbmRleFJhbmdlSW5QYXRoWzBdIC0gaW5kZXhSYW5nZUluUGF0aFtpbmRleFJhbmdlSW5QYXRoLmxlbmd0aCAtIDFdKSArIDE7XG4gICAgICAgICAgICBuZXdQYXRoLnNwbGljZShpbmRleFJhbmdlSW5QYXRoWzBdICsgMSwgcmVtb3ZlTGVuZ3RoIC0gMiwgbWlzc0Nvcm5lcik7XG4gICAgICAgICAgICBjb25zdCB0dXJuQ291bnQgPSBzaW1wbGlmeU9ydGhvZ29uYWxQb2ludHMoWy4uLnJvdXRlXSkubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGNvbnN0IHNpbXBsaWZ5UG9pbnRzID0gc2ltcGxpZnlPcnRob2dvbmFsUG9pbnRzKFsuLi5uZXdQYXRoXSk7XG4gICAgICAgICAgICAvLyBpZiAoYm9hcmQpIHtcbiAgICAgICAgICAgIC8vICAgICBkZWJ1Z0dlbmVyYXRvci5kcmF3TGluZShib2FyZCwgc2ltcGxpZnlQb2ludHMpO1xuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgY29uc3QgbmV3VHVybkNvdW50ID0gc2ltcGxpZnlQb2ludHMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGlmIChuZXdUdXJuQ291bnQgPD0gdHVybkNvdW50KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3UGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgZ2V0QWRqdXN0T3B0aW9ucyA9IChwYXRoOiBQb2ludFtdLCBjZW50ZXJPZkF4aXM6IG51bWJlciwgaXNIb3Jpem9udGFsOiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgcGFyYWxsZWxQYXRoczogW1BvaW50LCBQb2ludF1bXSA9IFtdO1xuICAgIGxldCBzdGFydDogbnVsbCB8IFBvaW50ID0gbnVsbDtcbiAgICBsZXQgcG9pbnRPZkhpdDogbnVsbCB8IFBvaW50ID0gbnVsbDtcbiAgICBjb25zdCBheGlzID0gaXNIb3Jpem9udGFsID8gMCA6IDE7XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcGF0aC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXMgPSBwYXRoW2luZGV4IC0gMV07XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBwYXRoW2luZGV4XTtcbiAgICAgICAgaWYgKHN0YXJ0ID09PSBudWxsICYmIHByZXZpb3VzICYmIHByZXZpb3VzW2F4aXNdID09PSBjdXJyZW50W2F4aXNdKSB7XG4gICAgICAgICAgICBzdGFydCA9IHByZXZpb3VzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHByZXZpb3VzW2F4aXNdICE9PSBjdXJyZW50W2F4aXNdKSB7XG4gICAgICAgICAgICAgICAgcGFyYWxsZWxQYXRocy5wdXNoKFtzdGFydCwgcHJldmlvdXNdKTtcbiAgICAgICAgICAgICAgICBzdGFydCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnJlbnRbYXhpc10gPT09IGNlbnRlck9mQXhpcykge1xuICAgICAgICAgICAgcG9pbnRPZkhpdCA9IGN1cnJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICAgIHBhcmFsbGVsUGF0aHMucHVzaChbc3RhcnQsIHBhdGhbcGF0aC5sZW5ndGggLSAxXV0pO1xuICAgIH1cbiAgICByZXR1cm4geyBwb2ludE9mSGl0LCBwYXJhbGxlbFBhdGhzIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R3JhcGhQb2ludHMgPSAob3B0aW9uczogRWxib3dMaW5lUm91dGVPcHRpb25zKSA9PiB7XG4gICAgY29uc3QgeyBuZXh0U291cmNlUG9pbnQsIG5leHRUYXJnZXRQb2ludCwgc291cmNlT3V0ZXJSZWN0YW5nbGUsIHRhcmdldE91dGVyUmVjdGFuZ2xlIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHg6IG51bWJlcltdID0gW107XG4gICAgY29uc3QgeTogbnVtYmVyW10gPSBbXTtcbiAgICBsZXQgcmVzdWx0OiBQb2ludFtdID0gW107XG5cbiAgICBbc291cmNlT3V0ZXJSZWN0YW5nbGUsIHRhcmdldE91dGVyUmVjdGFuZ2xlXS5mb3JFYWNoKHJlY3RhbmdsZSA9PiB7XG4gICAgICAgIHgucHVzaChyZWN0YW5nbGUueCwgcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGggLyAyLCByZWN0YW5nbGUueCArIHJlY3RhbmdsZS53aWR0aCk7XG4gICAgICAgIHkucHVzaChyZWN0YW5nbGUueSwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IC8gMiwgcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0KTtcbiAgICB9KTtcbiAgICBjb25zdCByZWN0YW5nbGVzWCA9IFtcbiAgICAgICAgc291cmNlT3V0ZXJSZWN0YW5nbGUueCxcbiAgICAgICAgc291cmNlT3V0ZXJSZWN0YW5nbGUueCArIHNvdXJjZU91dGVyUmVjdGFuZ2xlLndpZHRoLFxuICAgICAgICB0YXJnZXRPdXRlclJlY3RhbmdsZS54LFxuICAgICAgICB0YXJnZXRPdXRlclJlY3RhbmdsZS54ICsgdGFyZ2V0T3V0ZXJSZWN0YW5nbGUud2lkdGhcbiAgICBdLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICB4LnB1c2goKHJlY3RhbmdsZXNYWzFdICsgcmVjdGFuZ2xlc1hbMl0pIC8gMiwgbmV4dFNvdXJjZVBvaW50WzBdLCBuZXh0VGFyZ2V0UG9pbnRbMF0pO1xuICAgIGNvbnN0IHJlY3RhbmdsZXNZID0gW1xuICAgICAgICBzb3VyY2VPdXRlclJlY3RhbmdsZS55LFxuICAgICAgICBzb3VyY2VPdXRlclJlY3RhbmdsZS55ICsgc291cmNlT3V0ZXJSZWN0YW5nbGUuaGVpZ2h0LFxuICAgICAgICB0YXJnZXRPdXRlclJlY3RhbmdsZS55LFxuICAgICAgICB0YXJnZXRPdXRlclJlY3RhbmdsZS55ICsgdGFyZ2V0T3V0ZXJSZWN0YW5nbGUuaGVpZ2h0XG4gICAgXS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgeS5wdXNoKChyZWN0YW5nbGVzWVsxXSArIHJlY3RhbmdsZXNZWzJdKSAvIDIsIG5leHRTb3VyY2VQb2ludFsxXSwgbmV4dFRhcmdldFBvaW50WzFdKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB5Lmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludDogUG9pbnQgPSBbeFtpXSwgeVtqXV07XG4gICAgICAgICAgICBjb25zdCBpc0luU291cmNlID0gUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZShzb3VyY2VPdXRlclJlY3RhbmdsZSwgcG9pbnQpO1xuICAgICAgICAgICAgY29uc3QgaXNJblRhcmdldCA9IFJlY3RhbmdsZUNsaWVudC5pc1BvaW50SW5SZWN0YW5nbGUodGFyZ2V0T3V0ZXJSZWN0YW5nbGUsIHBvaW50KTtcbiAgICAgICAgICAgIGlmICghaXNJblNvdXJjZSAmJiAhaXNJblRhcmdldCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBvaW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQgPSByZW1vdmVEdXBsaWNhdGVQb2ludHMocmVzdWx0KS5maWx0ZXIocG9pbnQgPT4ge1xuICAgICAgICBjb25zdCBpc0luU291cmNlID0gUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZShzb3VyY2VPdXRlclJlY3RhbmdsZSwgcG9pbnQpO1xuICAgICAgICBjb25zdCBpc0luVGFyZ2V0ID0gUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZSh0YXJnZXRPdXRlclJlY3RhbmdsZSwgcG9pbnQpO1xuICAgICAgICByZXR1cm4gIWlzSW5Tb3VyY2UgJiYgIWlzSW5UYXJnZXQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVHcmFwaCA9IChwb2ludHM6IFBvaW50W10pID0+IHtcbiAgICBjb25zdCBncmFwaCA9IG5ldyBQb2ludEdyYXBoKCk7XG4gICAgY29uc3QgWHM6IG51bWJlcltdID0gW107XG4gICAgY29uc3QgWXM6IG51bWJlcltdID0gW107XG4gICAgcG9pbnRzLmZvckVhY2gocCA9PiB7XG4gICAgICAgIGNvbnN0IHggPSBwWzBdLFxuICAgICAgICAgICAgeSA9IHBbMV07XG4gICAgICAgIGlmIChYcy5pbmRleE9mKHgpIDwgMCkgWHMucHVzaCh4KTtcbiAgICAgICAgaWYgKFlzLmluZGV4T2YoeSkgPCAwKSBZcy5wdXNoKHkpO1xuICAgICAgICBncmFwaC5hZGQocCk7XG4gICAgfSk7XG4gICAgWHMuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgIFlzLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICBjb25zdCBpbkhvdEluZGV4ID0gKHA6IFBvaW50KTogYm9vbGVhbiA9PiBncmFwaC5oYXMocCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBYcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IFlzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBjb25zdCBwb2ludDogUG9pbnQgPSBbWHNbaV0sIFlzW2pdXTtcbiAgICAgICAgICAgIGlmICghaW5Ib3RJbmRleChwb2ludCkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3RoZXJQb2ludDogUG9pbnQgPSBbWHNbaSAtIDFdLCBZc1tqXV07XG4gICAgICAgICAgICAgICAgaWYgKGluSG90SW5kZXgob3RoZXJQb2ludCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JhcGguY29ubmVjdChvdGhlclBvaW50LCBwb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIGdyYXBoLmNvbm5lY3QocG9pbnQsIG90aGVyUG9pbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG90aGVyUG9pbnQ6IFBvaW50ID0gW1hzW2ldLCBZc1tqIC0gMV1dO1xuICAgICAgICAgICAgICAgIGlmIChpbkhvdEluZGV4KG90aGVyUG9pbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyYXBoLmNvbm5lY3Qob3RoZXJQb2ludCwgcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICBncmFwaC5jb25uZWN0KHBvaW50LCBvdGhlclBvaW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGdyYXBoO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZHVjZVJvdXRlTWFyZ2luID0gKHNvdXJjZVJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCB0YXJnZXRSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRPZmZzZXQgPSBERUZBVUxUX1JPVVRFX01BUkdJTjtcbiAgICBsZXQgc291cmNlT2Zmc2V0OiBudW1iZXJbXSA9IG5ldyBBcnJheSg0KS5maWxsKGRlZmF1bHRPZmZzZXQpO1xuICAgIGxldCB0YXJnZXRPZmZzZXQ6IG51bWJlcltdID0gbmV3IEFycmF5KDQpLmZpbGwoZGVmYXVsdE9mZnNldCk7XG4gICAgY29uc3QgbGVmdFRvUmlnaHQgPSBzb3VyY2VSZWN0YW5nbGUueCAtICh0YXJnZXRSZWN0YW5nbGUueCArIHRhcmdldFJlY3RhbmdsZS53aWR0aCk7XG4gICAgY29uc3QgcmlnaHRUb0xlZnQgPSB0YXJnZXRSZWN0YW5nbGUueCAtIChzb3VyY2VSZWN0YW5nbGUueCArIHNvdXJjZVJlY3RhbmdsZS53aWR0aCk7XG4gICAgaWYgKGxlZnRUb1JpZ2h0ID4gMCAmJiBsZWZ0VG9SaWdodCA8IGRlZmF1bHRPZmZzZXQgKiAyKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGxlZnRUb1JpZ2h0IC8gMjtcbiAgICAgICAgc291cmNlT2Zmc2V0WzNdID0gb2Zmc2V0O1xuICAgICAgICB0YXJnZXRPZmZzZXRbMV0gPSBvZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKHJpZ2h0VG9MZWZ0ID4gMCAmJiByaWdodFRvTGVmdCA8IGRlZmF1bHRPZmZzZXQgKiAyKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHJpZ2h0VG9MZWZ0IC8gMjtcbiAgICAgICAgdGFyZ2V0T2Zmc2V0WzNdID0gb2Zmc2V0O1xuICAgICAgICBzb3VyY2VPZmZzZXRbMV0gPSBvZmZzZXQ7XG4gICAgfVxuXG4gICAgY29uc3QgdG9wVG9Cb3R0b20gPSBzb3VyY2VSZWN0YW5nbGUueSAtICh0YXJnZXRSZWN0YW5nbGUueSArIHRhcmdldFJlY3RhbmdsZS5oZWlnaHQpO1xuICAgIGNvbnN0IGJvdHRvbVRvVG9wID0gdGFyZ2V0UmVjdGFuZ2xlLnkgLSAoc291cmNlUmVjdGFuZ2xlLnkgKyBzb3VyY2VSZWN0YW5nbGUuaGVpZ2h0KTtcbiAgICBpZiAodG9wVG9Cb3R0b20gPiAwICYmIHRvcFRvQm90dG9tIDwgZGVmYXVsdE9mZnNldCAqIDIpIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdG9wVG9Cb3R0b20gLyAyO1xuICAgICAgICBzb3VyY2VPZmZzZXRbMF0gPSBvZmZzZXQ7XG4gICAgICAgIHRhcmdldE9mZnNldFsyXSA9IG9mZnNldDtcbiAgICB9XG4gICAgaWYgKGJvdHRvbVRvVG9wID4gMCAmJiBib3R0b21Ub1RvcCA8IGRlZmF1bHRPZmZzZXQgKiAyKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IGJvdHRvbVRvVG9wIC8gMjtcbiAgICAgICAgc291cmNlT2Zmc2V0WzJdID0gb2Zmc2V0O1xuICAgICAgICB0YXJnZXRPZmZzZXRbMF0gPSBvZmZzZXQ7XG4gICAgfVxuICAgIHJldHVybiB7IHNvdXJjZU9mZnNldCwgdGFyZ2V0T2Zmc2V0IH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TmV4dFBvaW50ID0gKHBvaW50OiBQb2ludCwgb3V0ZXJSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgZGlyZWN0aW9uOiBEaXJlY3Rpb24pOiBQb2ludCA9PiB7XG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgICAgY2FzZSBEaXJlY3Rpb24udG9wOiB7XG4gICAgICAgICAgICByZXR1cm4gW3BvaW50WzBdLCBvdXRlclJlY3RhbmdsZS55XTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIERpcmVjdGlvbi5ib3R0b206IHtcbiAgICAgICAgICAgIHJldHVybiBbcG9pbnRbMF0sIG91dGVyUmVjdGFuZ2xlLnkgKyBvdXRlclJlY3RhbmdsZS5oZWlnaHRdO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgRGlyZWN0aW9uLnJpZ2h0OiB7XG4gICAgICAgICAgICByZXR1cm4gW291dGVyUmVjdGFuZ2xlLnggKyBvdXRlclJlY3RhbmdsZS53aWR0aCwgcG9pbnRbMV1dO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHJldHVybiBbb3V0ZXJSZWN0YW5nbGUueCwgcG9pbnRbMV1dO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFNvdXJjZUFuZFRhcmdldE91dGVyUmVjdGFuZ2xlID0gKHNvdXJjZVJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCB0YXJnZXRSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCkgPT4ge1xuICAgIGNvbnN0IHsgc291cmNlT2Zmc2V0LCB0YXJnZXRPZmZzZXQgfSA9IHJlZHVjZVJvdXRlTWFyZ2luKHNvdXJjZVJlY3RhbmdsZSwgdGFyZ2V0UmVjdGFuZ2xlKTtcbiAgICBjb25zdCBzb3VyY2VPdXRlclJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5leHBhbmQoXG4gICAgICAgIHNvdXJjZVJlY3RhbmdsZSxcbiAgICAgICAgc291cmNlT2Zmc2V0WzNdLFxuICAgICAgICBzb3VyY2VPZmZzZXRbMF0sXG4gICAgICAgIHNvdXJjZU9mZnNldFsxXSxcbiAgICAgICAgc291cmNlT2Zmc2V0WzJdXG4gICAgKTtcbiAgICBjb25zdCB0YXJnZXRPdXRlclJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5leHBhbmQoXG4gICAgICAgIHRhcmdldFJlY3RhbmdsZSxcbiAgICAgICAgdGFyZ2V0T2Zmc2V0WzNdLFxuICAgICAgICB0YXJnZXRPZmZzZXRbMF0sXG4gICAgICAgIHRhcmdldE9mZnNldFsxXSxcbiAgICAgICAgdGFyZ2V0T2Zmc2V0WzJdXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBzb3VyY2VPdXRlclJlY3RhbmdsZSxcbiAgICAgICAgdGFyZ2V0T3V0ZXJSZWN0YW5nbGVcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU291cmNlQW5kVGFyZ2V0SW50ZXJzZWN0ID0gKG9wdGlvbnM6IEVsYm93TGluZVJvdXRlT3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgICAgc291cmNlUG9pbnQsXG4gICAgICAgIG5leHRTb3VyY2VQb2ludCxcbiAgICAgICAgc291cmNlUmVjdGFuZ2xlLFxuICAgICAgICBzb3VyY2VPdXRlclJlY3RhbmdsZSxcbiAgICAgICAgdGFyZ2V0UG9pbnQsXG4gICAgICAgIG5leHRUYXJnZXRQb2ludCxcbiAgICAgICAgdGFyZ2V0UmVjdGFuZ2xlLFxuICAgICAgICB0YXJnZXRPdXRlclJlY3RhbmdsZVxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZSh0YXJnZXRSZWN0YW5nbGUsIHNvdXJjZVBvaW50KSB8fFxuICAgICAgICBSZWN0YW5nbGVDbGllbnQuaXNQb2ludEluUmVjdGFuZ2xlKHRhcmdldE91dGVyUmVjdGFuZ2xlLCBuZXh0U291cmNlUG9pbnQpIHx8XG4gICAgICAgIFJlY3RhbmdsZUNsaWVudC5pc1BvaW50SW5SZWN0YW5nbGUoc291cmNlT3V0ZXJSZWN0YW5nbGUsIG5leHRUYXJnZXRQb2ludCkgfHxcbiAgICAgICAgUmVjdGFuZ2xlQ2xpZW50LmlzUG9pbnRJblJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUsIHRhcmdldFBvaW50KVxuICAgICk7XG59O1xuIl19
|
package/esm2022/utils/index.mjs
CHANGED
|
@@ -11,4 +11,5 @@ export * from './memorize';
|
|
|
11
11
|
export * from './vector';
|
|
12
12
|
export * from './math';
|
|
13
13
|
export * from './drawing';
|
|
14
|
-
|
|
14
|
+
export * from './rotate';
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yZXNpemUnO1xuZXhwb3J0ICogZnJvbSAnLi9saW5lLXBhdGgnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWZhdWx0LW9ydGhvZ29uYWwtcm91dGluZyc7XG5leHBvcnQgKiBmcm9tICcuL2hvdC1rZXknO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGlvbi1tb2RlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vdGV4dCc7XG5leHBvcnQgKiBmcm9tICcuL2ltYWdlJztcbmV4cG9ydCAqIGZyb20gJy4vZWxib3ctbGluZS1yb3V0ZSc7XG5leHBvcnQgKiBmcm9tICcuL21lbW9yaXplJztcbmV4cG9ydCAqIGZyb20gJy4vdmVjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbWF0aCc7XG5leHBvcnQgKiBmcm9tICcuL2RyYXdpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3RhdGUnO1xuIl19
|
package/esm2022/utils/resize.mjs
CHANGED
|
@@ -39,7 +39,7 @@ export const getRotatedResizeCursorClassByAngle = (cursor, angle) => {
|
|
|
39
39
|
}
|
|
40
40
|
return cursor;
|
|
41
41
|
};
|
|
42
|
-
export const getRectangleResizeHandleRefs = (rectangle, diameter
|
|
42
|
+
export const getRectangleResizeHandleRefs = (rectangle, diameter) => {
|
|
43
43
|
const corners = RectangleClient.getCornerPoints(rectangle);
|
|
44
44
|
const refs = corners.map((corner, index) => {
|
|
45
45
|
return {
|
|
@@ -50,7 +50,7 @@ export const getRectangleResizeHandleRefs = (rectangle, diameter, angle = 0) =>
|
|
|
50
50
|
height: diameter
|
|
51
51
|
},
|
|
52
52
|
handle: getResizeHandleByIndex(index),
|
|
53
|
-
cursorClass:
|
|
53
|
+
cursorClass: getResizeCursorClassByIndex(index)
|
|
54
54
|
};
|
|
55
55
|
});
|
|
56
56
|
const rectangles = getResizeSideRectangles(corners, diameter / 2);
|
|
@@ -58,7 +58,7 @@ export const getRectangleResizeHandleRefs = (rectangle, diameter, angle = 0) =>
|
|
|
58
58
|
return {
|
|
59
59
|
rectangle,
|
|
60
60
|
handle: getResizeHandleByIndex(index + 4),
|
|
61
|
-
cursorClass:
|
|
61
|
+
cursorClass: getResizeCursorClassByIndex(index + 4)
|
|
62
62
|
};
|
|
63
63
|
}));
|
|
64
64
|
return refs;
|
|
@@ -123,4 +123,4 @@ export const resetPointsAfterResize = (originRectangle, currentRectangle, origin
|
|
|
123
123
|
const rotatedPoints = rotatePoints(currentPoints, originRectangleCenterPoint, angle);
|
|
124
124
|
return rotatePoints(rotatedPoints, correctElementCenterPoint, -angle);
|
|
125
125
|
};
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy91dGlscy9yZXNpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBUyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJL0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtJQUNwRCxPQUFPLEdBQUcsS0FBSyxFQUFrQixDQUFDO0FBQ3RDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsWUFBMEIsRUFBRSxFQUFFO0lBQ2pFLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsS0FBaUIsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUN4RSxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMzRixJQUFJLDBCQUEwQixHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDakQsSUFBSSwwQkFBMEIsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsQywwQkFBMEIsR0FBRywwQkFBMEIsR0FBRyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNELE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRSxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDO0FBQzVILENBQUMsQ0FBQztBQUVGLE1BQU0sMkJBQTJCLEdB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LFlBQVksQ0FBQyxhQUFhLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyxLQUFLLENBQW1CLENBQUM7QUFDNUYsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCwgUmVzaXplQ3Vyc29yQ2xhc3MsIHNldERyYWdnaW5nLCBSRVNJWkVfQ1VSU09SUywgcm90YXRlUG9pbnRzIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgUmVzaXplSGFuZGxlIH0gZnJvbSAnLi4vY29uc3RhbnRzL3Jlc2l6ZSc7XG5pbXBvcnQgeyBQbGFpdEVsZW1lbnRPckFycmF5LCBSZXNpemVSZWYgfSBmcm9tICcuLi90eXBlcy9yZXNpemUnO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVzaXplSGFuZGxlQnlJbmRleCA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgcmV0dXJuIGAke2luZGV4fWAgYXMgUmVzaXplSGFuZGxlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEluZGV4QnlSZXNpemVIYW5kbGUgPSAocmVzaXplSGFuZGxlOiBSZXNpemVIYW5kbGUpID0+IHtcbiAgICByZXR1cm4gTnVtYmVyKHJlc2l6ZUhhbmRsZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3ltbWV0cmljSGFuZGxlSW5kZXggPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBvcmlnaW5JbmRleCA9IGlzRWRnZUhhbmRsZShib2FyZCwgZ2V0UmVzaXplSGFuZGxlQnlJbmRleChpbmRleCkpID8gaW5kZXggLSA0IDogaW5kZXg7XG4gICAgbGV0IG9yaWdpblN5bW1ldHJpY0hhbmRsZUluZGV4ID0gb3JpZ2luSW5kZXggKyAyO1xuICAgIGlmIChvcmlnaW5TeW1tZXRyaWNIYW5kbGVJbmRleCA+PSA0KSB7XG4gICAgICAgIG9yaWdpblN5bW1ldHJpY0hhbmRsZUluZGV4ID0gb3JpZ2luU3ltbWV0cmljSGFuZGxlSW5kZXggLSA0O1xuICAgIH1cbiAgICByZXR1cm4gaXNFZGdlSGFuZGxlKGJvYXJkLCBnZXRSZXNpemVIYW5kbGVCeUluZGV4KGluZGV4KSkgPyBvcmlnaW5TeW1tZXRyaWNIYW5kbGVJbmRleCArIDQgOiBvcmlnaW5TeW1tZXRyaWNIYW5kbGVJbmRleDtcbn07XG5cbmNvbnN0IGdldFJlc2l6ZUN1cnNvckNsYXNzQnlJbmRleCA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgc3dpdGNoIChpbmRleCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHJldHVybiBSZXNpemVDdXJzb3JDbGFzcy5ud3NlO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIHJldHVybiBSZXNpemVDdXJzb3JDbGFzcy5uZXN3O1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIHJldHVybiBSZXNpemVDdXJzb3JDbGFzcy5ucztcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICByZXR1cm4gUmVzaXplQ3Vyc29yQ2xhc3MuZXc7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Um90YXRlZFJlc2l6ZUN1cnNvckNsYXNzQnlBbmdsZSA9IChjdXJzb3I6IFJlc2l6ZUN1cnNvckNsYXNzLCBhbmdsZTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBSRVNJWkVfQ1VSU09SUy5pbmRleE9mKGN1cnNvcik7XG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgdGVtcCA9IE1hdGgucm91bmQoYW5nbGUgLyAoTWF0aC5QSSAvIDQpKTtcbiAgICAgICAgY3Vyc29yID0gUkVTSVpFX0NVUlNPUlNbKGluZGV4ICsgdGVtcCkgJSBSRVNJWkVfQ1VSU09SUy5sZW5ndGhdIGFzIFJlc2l6ZUN1cnNvckNsYXNzO1xuICAgIH1cbiAgICByZXR1cm4gY3Vyc29yO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlY3RhbmdsZVJlc2l6ZUhhbmRsZVJlZnMgPSAocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIGRpYW1ldGVyOiBudW1iZXIsIGFuZ2xlOiBudW1iZXIgPSAwKSA9PiB7XG4gICAgY29uc3QgY29ybmVycyA9IFJlY3RhbmdsZUNsaWVudC5nZXRDb3JuZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICBjb25zdCByZWZzID0gY29ybmVycy5tYXAoKGNvcm5lciwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVjdGFuZ2xlOiB7XG4gICAgICAgICAgICAgICAgeDogY29ybmVyWzBdIC0gZGlhbWV0ZXIgLyAyLFxuICAgICAgICAgICAgICAgIHk6IGNvcm5lclsxXSAtIGRpYW1ldGVyIC8gMixcbiAgICAgICAgICAgICAgICB3aWR0aDogZGlhbWV0ZXIsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBkaWFtZXRlclxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhbmRsZTogZ2V0UmVzaXplSGFuZGxlQnlJbmRleChpbmRleCkgYXMgUmVzaXplSGFuZGxlLFxuICAgICAgICAgICAgY3Vyc29yQ2xhc3M6IGdldFJvdGF0ZWRSZXNpemVDdXJzb3JDbGFzc0J5QW5nbGUoZ2V0UmVzaXplQ3Vyc29yQ2xhc3NCeUluZGV4KGluZGV4KSBhcyBSZXNpemVDdXJzb3JDbGFzcywgYW5nbGUpXG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgY29uc3QgcmVjdGFuZ2xlcyA9IGdldFJlc2l6ZVNpZGVSZWN0YW5nbGVzKGNvcm5lcnMsIGRpYW1ldGVyIC8gMik7XG4gICAgcmVmcy5wdXNoKFxuICAgICAgICAuLi5yZWN0YW5nbGVzLm1hcCgocmVjdGFuZ2xlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZWN0YW5nbGUsXG4gICAgICAgICAgICAgICAgaGFuZGxlOiBnZXRSZXNpemVIYW5kbGVCeUluZGV4KGluZGV4ICsgNCkgYXMgUmVzaXplSGFuZGxlLFxuICAgICAgICAgICAgICAgIGN1cnNvckNsYXNzOiBnZXRSb3RhdGVkUmVzaXplQ3Vyc29yQ2xhc3NCeUFuZ2xlKGdldFJlc2l6ZUN1cnNvckNsYXNzQnlJbmRleChpbmRleCArIDQpIGFzIFJlc2l6ZUN1cnNvckNsYXNzLCBhbmdsZSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4gcmVmcztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZXNpemVIYW5kbGVQb2ludEJ5SW5kZXggPSAocmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBpZiAoaW5kZXggPD0gMykge1xuICAgICAgICBjb25zdCBjb3JuZXJzID0gUmVjdGFuZ2xlQ2xpZW50LmdldENvcm5lclBvaW50cyhyZWN0YW5nbGUpO1xuICAgICAgICByZXR1cm4gY29ybmVyc1tpbmRleF07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZWRnZUNlbnRlclBvaW50cyA9IFJlY3RhbmdsZUNsaWVudC5nZXRFZGdlQ2VudGVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgICAgIHJldHVybiBlZGdlQ2VudGVyUG9pbnRzW2luZGV4IC0gNF07XG4gICAgfVxufTtcblxuY29uc3QgZ2V0UmVzaXplU2lkZVJlY3RhbmdsZXMgPSAoY29ybmVyUG9pbnRzOiBQb2ludFtdLCBvZmZzZXQ6IG51bWJlcik6IFJlY3RhbmdsZUNsaWVudFtdID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvcm5lclBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtjb3JuZXJQb2ludHNbaV0sIGNvcm5lclBvaW50c1soaSArIDEpICUgNF1dKTtcbiAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KDIpLmZpbGwoMCk7XG4gICAgICAgIGFyclsoaSArIDEpICUgMl0gPSBvZmZzZXQgLyAyO1xuICAgICAgICByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZXhwYW5kKHJlY3RhbmdsZSwgYXJyWzBdLCBhcnJbMV0pO1xuICAgICAgICByZXN1bHQucHVzaChyZWN0YW5nbGUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IElTX1JFU0laSU5HID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgUmVzaXplUmVmPGFueSwgYW55Pj4oKTtcblxuZXhwb3J0IGNvbnN0IGlzUmVzaXppbmcgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICByZXR1cm4gISFJU19SRVNJWklORy5nZXQoYm9hcmQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUmVzaXppbmdCeUNvbmRpdGlvbiA9IDxUIGV4dGVuZHMgUGxhaXRFbGVtZW50T3JBcnJheSwgSz4oXG4gICAgYm9hcmQ6IFBsYWl0Qm9hcmQsXG4gICAgbWF0Y2g6IChyZXNpemVSZWY6IFJlc2l6ZVJlZjxULCBLPikgPT4gYm9vbGVhblxuKSA9PiB7XG4gICAgcmV0dXJuIGlzUmVzaXppbmcoYm9hcmQpICYmIG1hdGNoKElTX1JFU0laSU5HLmdldChib2FyZCkhKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRSZXNpemluZyA9IDxUIGV4dGVuZHMgUGxhaXRFbGVtZW50T3JBcnJheSwgSz4oYm9hcmQ6IFBsYWl0Qm9hcmQsIHJlc2l6ZVJlZjogUmVzaXplUmVmPFQsIEs+LCBrZXk6IHN0cmluZykgPT4ge1xuICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5hZGQoYCR7a2V5fS1yZXNpemluZ2ApO1xuICAgIElTX1JFU0laSU5HLnNldChib2FyZCwgcmVzaXplUmVmKTtcbiAgICBzZXREcmFnZ2luZyhib2FyZCwgdHJ1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlUmVzaXppbmcgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LnJlbW92ZShgJHtrZXl9LXJlc2l6aW5nYCk7XG4gICAgSVNfUkVTSVpJTkcuZGVsZXRlKGJvYXJkKTtcbiAgICBzZXREcmFnZ2luZyhib2FyZCwgZmFsc2UpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRWRnZUhhbmRsZSA9IChib2FyZDogUGxhaXRCb2FyZCwgaGFuZGxlOiBSZXNpemVIYW5kbGUpID0+IHtcbiAgICBjb25zdCBpbmRleCA9IGdldEluZGV4QnlSZXNpemVIYW5kbGUoaGFuZGxlKTtcbiAgICBpZiAoaW5kZXggPj0gNCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGlzQ29ybmVySGFuZGxlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBoYW5kbGU6IFJlc2l6ZUhhbmRsZSkgPT4ge1xuICAgIHJldHVybiAhaXNFZGdlSGFuZGxlKGJvYXJkLCBoYW5kbGUpO1xufTtcblxuLy8g5aSE55CG5YWD57Sg5YWI5peL6L2s5ZCOcmVzaXpl5a+86Ie055qE5L2N572u5YGP56e7XG5leHBvcnQgY29uc3QgcmVzZXRQb2ludHNBZnRlclJlc2l6ZSA9IChcbiAgICBvcmlnaW5SZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCxcbiAgICBjdXJyZW50UmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsXG4gICAgb3JpZ2luU2VsZWN0aW9uQ2VudGVyUG9pbnQ6IFBvaW50LFxuICAgIGN1cnJlbnRTZWxlY3Rpb25DZW50ZXJQb2ludDogUG9pbnQsXG4gICAgYW5nbGU6IG51bWJlclxuKTogW1BvaW50LCBQb2ludF0gPT4ge1xuICAgIGNvbnN0IGNvcnJlY3RTZWxlY3Rpb25DZW50ZXJQb2ludCA9IHJvdGF0ZVBvaW50cyhbY3VycmVudFNlbGVjdGlvbkNlbnRlclBvaW50XSwgb3JpZ2luU2VsZWN0aW9uQ2VudGVyUG9pbnQsIGFuZ2xlKVswXTtcbiAgICBjb25zdCByb3RhdGVkRWxlbWVudENlbnRlclBvaW50ID0gcm90YXRlUG9pbnRzKFxuICAgICAgICBbUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KGN1cnJlbnRSZWN0YW5nbGUpIGFzIFBvaW50XSxcbiAgICAgICAgb3JpZ2luU2VsZWN0aW9uQ2VudGVyUG9pbnQsXG4gICAgICAgIGFuZ2xlXG4gICAgKVswXTtcblxuICAgIGNvbnN0IGN1cnJlbnRQb2ludHMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UG9pbnRzKGN1cnJlbnRSZWN0YW5nbGUpO1xuICAgIGNvbnN0IG9yaWdpblJlY3RhbmdsZUNlbnRlclBvaW50ID0gUmVjdGFuZ2xlQ2xpZW50LmdldENlbnRlclBvaW50KG9yaWdpblJlY3RhbmdsZSk7XG5cbiAgICBjb25zdCBjb3JyZWN0RWxlbWVudENlbnRlclBvaW50ID0gcm90YXRlUG9pbnRzKFtyb3RhdGVkRWxlbWVudENlbnRlclBvaW50XSwgY29ycmVjdFNlbGVjdGlvbkNlbnRlclBvaW50LCAtYW5nbGUpWzBdO1xuXG4gICAgY29uc3Qgcm90YXRlZFBvaW50cyA9IHJvdGF0ZVBvaW50cyhjdXJyZW50UG9pbnRzLCBvcmlnaW5SZWN0YW5nbGVDZW50ZXJQb2ludCwgYW5nbGUpO1xuICAgIHJldHVybiByb3RhdGVQb2ludHMocm90YXRlZFBvaW50cywgY29ycmVjdEVsZW1lbnRDZW50ZXJQb2ludCwgLWFuZ2xlKSBhcyBbUG9pbnQsIFBvaW50XTtcbn07XG4iXX0=
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy91dGlscy9yZXNpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBUyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJL0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtJQUNwRCxPQUFPLEdBQUcsS0FBSyxFQUFrQixDQUFDO0FBQ3RDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsWUFBMEIsRUFBRSxFQUFFO0lBQ2pFLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsS0FBaUIsRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUN4RSxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUMzRixJQUFJLDBCQUEwQixHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDakQsSUFBSSwwQkFBMEIsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsQywwQkFBMEIsR0FBRywwQkFBMEIsR0FBRyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNELE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRSxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDO0FBQzVILENBQUMsQ0FBQztBQUVGLE1BQU0sMkJBQTJCLEdB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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkLCBQb2ludCwgUmVjdGFuZ2xlQ2xpZW50LCBSZXNpemVDdXJzb3JDbGFzcywgc2V0RHJhZ2dpbmcsIFJFU0laRV9DVVJTT1JTLCByb3RhdGVQb2ludHMgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBSZXNpemVIYW5kbGUgfSBmcm9tICcuLi9jb25zdGFudHMvcmVzaXplJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudE9yQXJyYXksIFJlc2l6ZVJlZiB9IGZyb20gJy4uL3R5cGVzL3Jlc2l6ZSc7XG5cbmV4cG9ydCBjb25zdCBnZXRSZXNpemVIYW5kbGVCeUluZGV4ID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gYCR7aW5kZXh9YCBhcyBSZXNpemVIYW5kbGU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW5kZXhCeVJlc2l6ZUhhbmRsZSA9IChyZXNpemVIYW5kbGU6IFJlc2l6ZUhhbmRsZSkgPT4ge1xuICAgIHJldHVybiBOdW1iZXIocmVzaXplSGFuZGxlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTeW1tZXRyaWNIYW5kbGVJbmRleCA9IChib2FyZDogUGxhaXRCb2FyZCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG9yaWdpbkluZGV4ID0gaXNFZGdlSGFuZGxlKGJvYXJkLCBnZXRSZXNpemVIYW5kbGVCeUluZGV4KGluZGV4KSkgPyBpbmRleCAtIDQgOiBpbmRleDtcbiAgICBsZXQgb3JpZ2luU3ltbWV0cmljSGFuZGxlSW5kZXggPSBvcmlnaW5JbmRleCArIDI7XG4gICAgaWYgKG9yaWdpblN5bW1ldHJpY0hhbmRsZUluZGV4ID49IDQpIHtcbiAgICAgICAgb3JpZ2luU3ltbWV0cmljSGFuZGxlSW5kZXggPSBvcmlnaW5TeW1tZXRyaWNIYW5kbGVJbmRleCAtIDQ7XG4gICAgfVxuICAgIHJldHVybiBpc0VkZ2VIYW5kbGUoYm9hcmQsIGdldFJlc2l6ZUhhbmRsZUJ5SW5kZXgoaW5kZXgpKSA/IG9yaWdpblN5bW1ldHJpY0hhbmRsZUluZGV4ICsgNCA6IG9yaWdpblN5bW1ldHJpY0hhbmRsZUluZGV4O1xufTtcblxuY29uc3QgZ2V0UmVzaXplQ3Vyc29yQ2xhc3NCeUluZGV4ID0gKGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBzd2l0Y2ggKGluZGV4KSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgcmV0dXJuIFJlc2l6ZUN1cnNvckNsYXNzLm53c2U7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgcmV0dXJuIFJlc2l6ZUN1cnNvckNsYXNzLm5lc3c7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgcmV0dXJuIFJlc2l6ZUN1cnNvckNsYXNzLm5zO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIHJldHVybiBSZXNpemVDdXJzb3JDbGFzcy5ldztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSb3RhdGVkUmVzaXplQ3Vyc29yQ2xhc3NCeUFuZ2xlID0gKGN1cnNvcjogUmVzaXplQ3Vyc29yQ2xhc3MsIGFuZ2xlOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBpbmRleCA9IFJFU0laRV9DVVJTT1JTLmluZGV4T2YoY3Vyc29yKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCB0ZW1wID0gTWF0aC5yb3VuZChhbmdsZSAvIChNYXRoLlBJIC8gNCkpO1xuICAgICAgICBjdXJzb3IgPSBSRVNJWkVfQ1VSU09SU1soaW5kZXggKyB0ZW1wKSAlIFJFU0laRV9DVVJTT1JTLmxlbmd0aF0gYXMgUmVzaXplQ3Vyc29yQ2xhc3M7XG4gICAgfVxuICAgIHJldHVybiBjdXJzb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVjdGFuZ2xlUmVzaXplSGFuZGxlUmVmcyA9IChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgZGlhbWV0ZXI6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGNvcm5lcnMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgY29uc3QgcmVmcyA9IGNvcm5lcnMubWFwKChjb3JuZXIsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlY3RhbmdsZToge1xuICAgICAgICAgICAgICAgIHg6IGNvcm5lclswXSAtIGRpYW1ldGVyIC8gMixcbiAgICAgICAgICAgICAgICB5OiBjb3JuZXJbMV0gLSBkaWFtZXRlciAvIDIsXG4gICAgICAgICAgICAgICAgd2lkdGg6IGRpYW1ldGVyLFxuICAgICAgICAgICAgICAgIGhlaWdodDogZGlhbWV0ZXJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBoYW5kbGU6IGdldFJlc2l6ZUhhbmRsZUJ5SW5kZXgoaW5kZXgpIGFzIFJlc2l6ZUhhbmRsZSxcbiAgICAgICAgICAgIGN1cnNvckNsYXNzOiBnZXRSZXNpemVDdXJzb3JDbGFzc0J5SW5kZXgoaW5kZXgpIGFzIFJlc2l6ZUN1cnNvckNsYXNzXG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgY29uc3QgcmVjdGFuZ2xlcyA9IGdldFJlc2l6ZVNpZGVSZWN0YW5nbGVzKGNvcm5lcnMsIGRpYW1ldGVyIC8gMik7XG4gICAgcmVmcy5wdXNoKFxuICAgICAgICAuLi5yZWN0YW5nbGVzLm1hcCgocmVjdGFuZ2xlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZWN0YW5nbGUsXG4gICAgICAgICAgICAgICAgaGFuZGxlOiBnZXRSZXNpemVIYW5kbGVCeUluZGV4KGluZGV4ICsgNCkgYXMgUmVzaXplSGFuZGxlLFxuICAgICAgICAgICAgICAgIGN1cnNvckNsYXNzOiBnZXRSZXNpemVDdXJzb3JDbGFzc0J5SW5kZXgoaW5kZXggKyA0KSBhcyBSZXNpemVDdXJzb3JDbGFzc1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICApO1xuICAgIHJldHVybiByZWZzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlc2l6ZUhhbmRsZVBvaW50QnlJbmRleCA9IChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGlmIChpbmRleCA8PSAzKSB7XG4gICAgICAgIGNvbnN0IGNvcm5lcnMgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q29ybmVyUG9pbnRzKHJlY3RhbmdsZSk7XG4gICAgICAgIHJldHVybiBjb3JuZXJzW2luZGV4XTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBlZGdlQ2VudGVyUG9pbnRzID0gUmVjdGFuZ2xlQ2xpZW50LmdldEVkZ2VDZW50ZXJQb2ludHMocmVjdGFuZ2xlKTtcbiAgICAgICAgcmV0dXJuIGVkZ2VDZW50ZXJQb2ludHNbaW5kZXggLSA0XTtcbiAgICB9XG59O1xuXG5jb25zdCBnZXRSZXNpemVTaWRlUmVjdGFuZ2xlcyA9IChjb3JuZXJQb2ludHM6IFBvaW50W10sIG9mZnNldDogbnVtYmVyKTogUmVjdGFuZ2xlQ2xpZW50W10gPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29ybmVyUG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW2Nvcm5lclBvaW50c1tpXSwgY29ybmVyUG9pbnRzWyhpICsgMSkgJSA0XV0pO1xuICAgICAgICBjb25zdCBhcnIgPSBuZXcgQXJyYXkoMikuZmlsbCgwKTtcbiAgICAgICAgYXJyWyhpICsgMSkgJSAyXSA9IG9mZnNldCAvIDI7XG4gICAgICAgIHJlY3RhbmdsZSA9IFJlY3RhbmdsZUNsaWVudC5leHBhbmQocmVjdGFuZ2xlLCBhcnJbMF0sIGFyclsxXSk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHJlY3RhbmdsZSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgSVNfUkVTSVpJTkcgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBSZXNpemVSZWY8YW55LCBhbnk+PigpO1xuXG5leHBvcnQgY29uc3QgaXNSZXNpemluZyA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIHJldHVybiAhIUlTX1JFU0laSU5HLmdldChib2FyZCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNSZXNpemluZ0J5Q29uZGl0aW9uID0gPFQgZXh0ZW5kcyBQbGFpdEVsZW1lbnRPckFycmF5LCBLPihcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBtYXRjaDogKHJlc2l6ZVJlZjogUmVzaXplUmVmPFQsIEs+KSA9PiBib29sZWFuXG4pID0+IHtcbiAgICByZXR1cm4gaXNSZXNpemluZyhib2FyZCkgJiYgbWF0Y2goSVNfUkVTSVpJTkcuZ2V0KGJvYXJkKSEpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFJlc2l6aW5nID0gPFQgZXh0ZW5kcyBQbGFpdEVsZW1lbnRPckFycmF5LCBLPihib2FyZDogUGxhaXRCb2FyZCwgcmVzaXplUmVmOiBSZXNpemVSZWY8VCwgSz4sIGtleTogc3RyaW5nKSA9PiB7XG4gICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LmFkZChgJHtrZXl9LXJlc2l6aW5nYCk7XG4gICAgSVNfUkVTSVpJTkcuc2V0KGJvYXJkLCByZXNpemVSZWYpO1xuICAgIHNldERyYWdnaW5nKGJvYXJkLCB0cnVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVSZXNpemluZyA9IChib2FyZDogUGxhaXRCb2FyZCwga2V5OiBzdHJpbmcpID0+IHtcbiAgICBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jbGFzc0xpc3QucmVtb3ZlKGAke2tleX0tcmVzaXppbmdgKTtcbiAgICBJU19SRVNJWklORy5kZWxldGUoYm9hcmQpO1xuICAgIHNldERyYWdnaW5nKGJvYXJkLCBmYWxzZSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNFZGdlSGFuZGxlID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBoYW5kbGU6IFJlc2l6ZUhhbmRsZSkgPT4ge1xuICAgIGNvbnN0IGluZGV4ID0gZ2V0SW5kZXhCeVJlc2l6ZUhhbmRsZShoYW5kbGUpO1xuICAgIGlmIChpbmRleCA+PSA0KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgaXNDb3JuZXJIYW5kbGUgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIGhhbmRsZTogUmVzaXplSGFuZGxlKSA9PiB7XG4gICAgcmV0dXJuICFpc0VkZ2VIYW5kbGUoYm9hcmQsIGhhbmRsZSk7XG59O1xuXG4vLyDlpITnkIblhYPntKDlhYjml4vovazlkI5yZXNpemXlr7zoh7TnmoTkvY3nva7lgY/np7tcbmV4cG9ydCBjb25zdCByZXNldFBvaW50c0FmdGVyUmVzaXplID0gKFxuICAgIG9yaWdpblJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LFxuICAgIGN1cnJlbnRSZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCxcbiAgICBvcmlnaW5TZWxlY3Rpb25DZW50ZXJQb2ludDogUG9pbnQsXG4gICAgY3VycmVudFNlbGVjdGlvbkNlbnRlclBvaW50OiBQb2ludCxcbiAgICBhbmdsZTogbnVtYmVyXG4pOiBbUG9pbnQsIFBvaW50XSA9PiB7XG4gICAgY29uc3QgY29ycmVjdFNlbGVjdGlvbkNlbnRlclBvaW50ID0gcm90YXRlUG9pbnRzKFtjdXJyZW50U2VsZWN0aW9uQ2VudGVyUG9pbnRdLCBvcmlnaW5TZWxlY3Rpb25DZW50ZXJQb2ludCwgYW5nbGUpWzBdO1xuICAgIGNvbnN0IHJvdGF0ZWRFbGVtZW50Q2VudGVyUG9pbnQgPSByb3RhdGVQb2ludHMoXG4gICAgICAgIFtSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQoY3VycmVudFJlY3RhbmdsZSkgYXMgUG9pbnRdLFxuICAgICAgICBvcmlnaW5TZWxlY3Rpb25DZW50ZXJQb2ludCxcbiAgICAgICAgYW5nbGVcbiAgICApWzBdO1xuXG4gICAgY29uc3QgY3VycmVudFBvaW50cyA9IFJlY3RhbmdsZUNsaWVudC5nZXRQb2ludHMoY3VycmVudFJlY3RhbmdsZSk7XG4gICAgY29uc3Qgb3JpZ2luUmVjdGFuZ2xlQ2VudGVyUG9pbnQgPSBSZWN0YW5nbGVDbGllbnQuZ2V0Q2VudGVyUG9pbnQob3JpZ2luUmVjdGFuZ2xlKTtcblxuICAgIGNvbnN0IGNvcnJlY3RFbGVtZW50Q2VudGVyUG9pbnQgPSByb3RhdGVQb2ludHMoW3JvdGF0ZWRFbGVtZW50Q2VudGVyUG9pbnRdLCBjb3JyZWN0U2VsZWN0aW9uQ2VudGVyUG9pbnQsIC1hbmdsZSlbMF07XG5cbiAgICBjb25zdCByb3RhdGVkUG9pbnRzID0gcm90YXRlUG9pbnRzKGN1cnJlbnRQb2ludHMsIG9yaWdpblJlY3RhbmdsZUNlbnRlclBvaW50LCBhbmdsZSk7XG4gICAgcmV0dXJuIHJvdGF0ZVBvaW50cyhyb3RhdGVkUG9pbnRzLCBjb3JyZWN0RWxlbWVudENlbnRlclBvaW50LCAtYW5nbGUpIGFzIFtQb2ludCwgUG9pbnRdO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PlaitBoard, setDragging } from '@plait/core';
|
|
2
|
+
export const IS_ROTATING = new WeakMap();
|
|
3
|
+
export const isRotating = (board) => {
|
|
4
|
+
return !!IS_ROTATING.get(board);
|
|
5
|
+
};
|
|
6
|
+
export const addRotating = (board, rotateRef) => {
|
|
7
|
+
PlaitBoard.getBoardContainer(board).classList.add(`draw-elements-rotating`);
|
|
8
|
+
IS_ROTATING.set(board, rotateRef);
|
|
9
|
+
setDragging(board, true);
|
|
10
|
+
};
|
|
11
|
+
export const removeRotating = (board) => {
|
|
12
|
+
PlaitBoard.getBoardContainer(board).classList.remove(`draw-elements-rotating`);
|
|
13
|
+
IS_ROTATING.delete(board);
|
|
14
|
+
setDragging(board, false);
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm90YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL3NyYy91dGlscy9yb3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHdEQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksT0FBTyxFQUF5QixDQUFDO0FBRWhFLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUM1QyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWlCLEVBQUUsU0FBb0IsRUFBRSxFQUFFO0lBQ25FLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbEMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM3QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDaEQsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUMvRSxXQUFXLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGxhaXRCb2FyZCwgc2V0RHJhZ2dpbmcgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBSb3RhdGVSZWYgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBJU19ST1RBVElORyA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIFJvdGF0ZVJlZj4oKTtcblxuZXhwb3J0IGNvbnN0IGlzUm90YXRpbmcgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICByZXR1cm4gISFJU19ST1RBVElORy5nZXQoYm9hcmQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFJvdGF0aW5nID0gKGJvYXJkOiBQbGFpdEJvYXJkLCByb3RhdGVSZWY6IFJvdGF0ZVJlZikgPT4ge1xuICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5hZGQoYGRyYXctZWxlbWVudHMtcm90YXRpbmdgKTtcbiAgICBJU19ST1RBVElORy5zZXQoYm9hcmQsIHJvdGF0ZVJlZik7XG4gICAgc2V0RHJhZ2dpbmcoYm9hcmQsIHRydWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVJvdGF0aW5nID0gKGJvYXJkOiBQbGFpdEJvYXJkKSA9PiB7XG4gICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LnJlbW92ZShgZHJhdy1lbGVtZW50cy1yb3RhdGluZ2ApO1xuICAgIElTX1JPVEFUSU5HLmRlbGV0ZShib2FyZCk7XG4gICAgc2V0RHJhZ2dpbmcoYm9hcmQsIGZhbHNlKTtcbn07XG4iXX0=
|