@plait/core 0.75.0-next.1 → 0.75.0-next.3
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PRESS_AND_MOVE_BUFFER } from '../constants';
|
|
2
2
|
import { PlaitPointerType, PlaitBoard, PlaitPluginKey } from '../interfaces';
|
|
3
3
|
import { BoardTransforms } from '../transforms';
|
|
4
|
-
import { distanceBetweenPointAndPoint, isMovingElements, isSelectionMoving } from '../utils';
|
|
4
|
+
import { distanceBetweenPointAndPoint, isHitElement, isMovingElements, isSelectionMoving, toHostPoint, toViewBoxPoint } from '../utils';
|
|
5
5
|
import { isMainPointer } from '../utils/dom/common';
|
|
6
6
|
import { isSmartHand } from '../utils/mobile';
|
|
7
7
|
import { updateViewportContainerScroll } from '../utils/viewport';
|
|
@@ -12,7 +12,9 @@ export function withHandPointer(board) {
|
|
|
12
12
|
let pointerDownEvent = null;
|
|
13
13
|
board.pointerDown = (event) => {
|
|
14
14
|
const options = board.getPluginOptions(PlaitPluginKey.withHand);
|
|
15
|
-
|
|
15
|
+
const point = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
16
|
+
const isHitTarget = isHitElement(board, point);
|
|
17
|
+
if ((options?.isHandMode(board, event) || (isSmartHand(board, event) && !isHitTarget)) && isMainPointer(event)) {
|
|
16
18
|
movingPoint = {
|
|
17
19
|
x: event.x,
|
|
18
20
|
y: event.y
|
|
@@ -29,7 +31,7 @@ export function withHandPointer(board) {
|
|
|
29
31
|
// Must exceed the PRESS_AND_MOVE_BUFFER threshold defined in withSelection's pointerMove.
|
|
30
32
|
// The system first checks for drag selection state eligibility
|
|
31
33
|
// withHand behavior is only triggered if drag selection state is not initiated.
|
|
32
|
-
const triggerDistance = PRESS_AND_MOVE_BUFFER
|
|
34
|
+
const triggerDistance = PRESS_AND_MOVE_BUFFER * 2;
|
|
33
35
|
if (movingPoint &&
|
|
34
36
|
!isMoving &&
|
|
35
37
|
!isSelectionMoving(board) &&
|
|
@@ -39,7 +41,11 @@ export function withHandPointer(board) {
|
|
|
39
41
|
isMoving = true;
|
|
40
42
|
PlaitBoard.getBoardContainer(board).classList.add('viewport-moving');
|
|
41
43
|
}
|
|
42
|
-
if ((options?.isHandMode(board, event) || isSmartHand(board, event)) &&
|
|
44
|
+
if ((options?.isHandMode(board, event) || isSmartHand(board, event)) &&
|
|
45
|
+
isMoving &&
|
|
46
|
+
movingPoint &&
|
|
47
|
+
!isSelectionMoving(board) &&
|
|
48
|
+
!isMovingElements(board)) {
|
|
43
49
|
const viewportContainer = PlaitBoard.getViewportContainer(board);
|
|
44
50
|
const left = viewportContainer.scrollLeft - (event.x - movingPoint.x);
|
|
45
51
|
const top = viewportContainer.scrollTop - (event.y - movingPoint.y);
|
|
@@ -82,4 +88,4 @@ export function withHandPointer(board) {
|
|
|
82
88
|
};
|
|
83
89
|
return board;
|
|
84
90
|
}
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1oYW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvcGx1Z2lucy93aXRoLWhhbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQXlDLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM3RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2xFLE1BQU0sVUFBVSxlQUFlLENBQXVCLEtBQVE7SUFDMUQsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ3ZGLElBQUksUUFBUSxHQUFZLEtBQUssQ0FBQztJQUM5QixJQUFJLFdBQVcsR0FBMEIsSUFBSSxDQUFDO0lBQzlDLElBQUksZ0JBQWdCLEdBQXdCLElBQUksQ0FBQztJQUVqRCxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsS0FBbUIsRUFBRSxFQUFFO1FBQ3hDLE1BQU0sT0FBTyxHQUFJLEtBQXNDLENBQUMsZ0JBQWdCLENBQXdCLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6SCxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNGLFdBQVcsR0FBRztnQkFDVixDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ1YsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ2IsQ0FBQztRQUNOLENBQUM7UUFDRCxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEVBQUU7UUFDeEMsTUFBTSxPQUFPLEdBQUksS0FBc0MsQ0FBQyxnQkFBZ0IsQ0FBd0IsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pILDhEQUE4RDtRQUM5RCx1QkFBdUI7UUFDdkIsbUNBQW1DO1FBQ25DLDBGQUEwRjtRQUMxRiwrREFBK0Q7UUFDL0QsZ0ZBQWdGO1FBQ2hGLE1BQU0sZUFBZSxHQUFHLHFCQUFxQixHQUFHLENBQUMsQ0FBQztRQUNsRCxJQUNJLFdBQVc7WUFDWCxDQUFDLFFBQVE7WUFDVCxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQztZQUN6QixnQkFBZ0I7WUFDaEIsNEJBQTRCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxlQUFlO1lBQ3hHLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQzFCLENBQUM7WUFDQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ2hCLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksUUFBUSxJQUFJLFdBQVcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0gsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakUsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEUsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEUsNkJBQTZCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdkQsV0FBVyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLFdBQVcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQ0QsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEVBQUU7UUFDdEMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNYLE9BQU87UUFDWCxDQUFDO1FBQ0QsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxlQUFlLEdBQUcsQ0FBQyxLQUFtQixFQUFFLEVBQUU7UUFDNUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNkLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELElBQUksUUFBUSxFQUFFLENBQUM7WUFDWCxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ2pCLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUNELGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDLENBQUM7SUFFRixLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1FBQ3JDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDdEQsZUFBZSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwRSxDQUFDO1lBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtRQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNwRCxlQUFlLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFDRCxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBSRVNTX0FORF9NT1ZFX0JVRkZFUiB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQbGFpdFBvaW50ZXJUeXBlLCBQbGFpdEJvYXJkLCBQbGFpdEJvYXJkTW92ZSwgV2l0aEhhbmRQbHVnaW5PcHRpb25zLCBQbGFpdFBsdWdpbktleSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQm9hcmRUcmFuc2Zvcm1zIH0gZnJvbSAnLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50LCBpc01vdmluZ0VsZW1lbnRzLCBpc1NlbGVjdGlvbk1vdmluZyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGlzTWFpblBvaW50ZXIgfSBmcm9tICcuLi91dGlscy9kb20vY29tbW9uJztcbmltcG9ydCB7IGlzU21hcnRIYW5kIH0gZnJvbSAnLi4vdXRpbHMvbW9iaWxlJztcbmltcG9ydCB7IHVwZGF0ZVZpZXdwb3J0Q29udGFpbmVyU2Nyb2xsIH0gZnJvbSAnLi4vdXRpbHMvdmlld3BvcnQnO1xuaW1wb3J0IHsgUGxhaXRPcHRpb25zQm9hcmQgfSBmcm9tICcuL3dpdGgtb3B0aW9ucyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoSGFuZFBvaW50ZXI8VCBleHRlbmRzIFBsYWl0Qm9hcmQ+KGJvYXJkOiBUKSB7XG4gICAgY29uc3QgeyBwb2ludGVyRG93biwgcG9pbnRlck1vdmUsIGdsb2JhbFBvaW50ZXJVcCwga2V5RG93biwga2V5VXAsIHBvaW50ZXJVcCB9ID0gYm9hcmQ7XG4gICAgbGV0IGlzTW92aW5nOiBib29sZWFuID0gZmFsc2U7XG4gICAgbGV0IG1vdmluZ1BvaW50OiBQbGFpdEJvYXJkTW92ZSB8IG51bGwgPSBudWxsO1xuICAgIGxldCBwb2ludGVyRG93bkV2ZW50OiBQb2ludGVyRXZlbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IChib2FyZCBhcyB1bmtub3duIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPFdpdGhIYW5kUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aEhhbmQpO1xuICAgICAgICBpZiAoKG9wdGlvbnM/LmlzSGFuZE1vZGUoYm9hcmQsIGV2ZW50KSB8fCBpc1NtYXJ0SGFuZChib2FyZCwgZXZlbnQpKSAmJiBpc01haW5Qb2ludGVyKGV2ZW50KSkge1xuICAgICAgICAgICAgbW92aW5nUG9pbnQgPSB7XG4gICAgICAgICAgICAgICAgeDogZXZlbnQueCxcbiAgICAgICAgICAgICAgICB5OiBldmVudC55XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJEb3duRXZlbnQgPSBldmVudDtcbiAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSAoYm9hcmQgYXMgdW5rbm93biBhcyBQbGFpdE9wdGlvbnNCb2FyZCkuZ2V0UGx1Z2luT3B0aW9uczxXaXRoSGFuZFBsdWdpbk9wdGlvbnM+KFBsYWl0UGx1Z2luS2V5LndpdGhIYW5kKTtcbiAgICAgICAgLy8g6ZiI5YC85b+F6aG75aSn5LqOIHdpdGhTZWxlY3Rpb24g5LitIHBvaW50ZXJNb3ZlIOeahCBQUkVTU19BTkRfTU9WRV9CVUZGRVLvvJpcbiAgICAgICAgLy8gMS4g6aaW5YWI5qOA5rWL5piv5ZCm5ruh6Laz6L+b5YWl5ouW6YCJ54q25oCB55qE5p2h5Lu2XG4gICAgICAgIC8vIDIuIOS7heW9k+S4jea7oei2s+aLlumAieadoeS7tuaXtu+8jOaJjeS8muiAg+iZkeinpuWPkSB3aXRoSGFuZCDooYzkuLpcbiAgICAgICAgLy8gTXVzdCBleGNlZWQgdGhlIFBSRVNTX0FORF9NT1ZFX0JVRkZFUiB0aHJlc2hvbGQgZGVmaW5lZCBpbiB3aXRoU2VsZWN0aW9uJ3MgcG9pbnRlck1vdmUuXG4gICAgICAgIC8vIFRoZSBzeXN0ZW0gZmlyc3QgY2hlY2tzIGZvciBkcmFnIHNlbGVjdGlvbiBzdGF0ZSBlbGlnaWJpbGl0eVxuICAgICAgICAvLyB3aXRoSGFuZCBiZWhhdmlvciBpcyBvbmx5IHRyaWdnZXJlZCBpZiBkcmFnIHNlbGVjdGlvbiBzdGF0ZSBpcyBub3QgaW5pdGlhdGVkLlxuICAgICAgICBjb25zdCB0cmlnZ2VyRGlzdGFuY2UgPSBQUkVTU19BTkRfTU9WRV9CVUZGRVIgKyAzO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBtb3ZpbmdQb2ludCAmJlxuICAgICAgICAgICAgIWlzTW92aW5nICYmXG4gICAgICAgICAgICAhaXNTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpICYmXG4gICAgICAgICAgICBwb2ludGVyRG93bkV2ZW50ICYmXG4gICAgICAgICAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KHBvaW50ZXJEb3duRXZlbnQueCwgcG9pbnRlckRvd25FdmVudC55LCBldmVudC54LCBldmVudC55KSA+IHRyaWdnZXJEaXN0YW5jZSAmJlxuICAgICAgICAgICAgIWlzTW92aW5nRWxlbWVudHMoYm9hcmQpXG4gICAgICAgICkge1xuICAgICAgICAgICAgaXNNb3ZpbmcgPSB0cnVlO1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LmFkZCgndmlld3BvcnQtbW92aW5nJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChvcHRpb25zPy5pc0hhbmRNb2RlKGJvYXJkLCBldmVudCkgfHwgaXNTbWFydEhhbmQoYm9hcmQsIGV2ZW50KSkgJiYgaXNNb3ZpbmcgJiYgbW92aW5nUG9pbnQgJiYgIWlzU2VsZWN0aW9uTW92aW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnRDb250YWluZXIgPSBQbGFpdEJvYXJkLmdldFZpZXdwb3J0Q29udGFpbmVyKGJvYXJkKTtcbiAgICAgICAgICAgIGNvbnN0IGxlZnQgPSB2aWV3cG9ydENvbnRhaW5lci5zY3JvbGxMZWZ0IC0gKGV2ZW50LnggLSBtb3ZpbmdQb2ludC54KTtcbiAgICAgICAgICAgIGNvbnN0IHRvcCA9IHZpZXdwb3J0Q29udGFpbmVyLnNjcm9sbFRvcCAtIChldmVudC55IC0gbW92aW5nUG9pbnQueSk7XG4gICAgICAgICAgICB1cGRhdGVWaWV3cG9ydENvbnRhaW5lclNjcm9sbChib2FyZCwgbGVmdCwgdG9wLCBmYWxzZSk7XG4gICAgICAgICAgICBtb3ZpbmdQb2ludC54ID0gZXZlbnQueDtcbiAgICAgICAgICAgIG1vdmluZ1BvaW50LnkgPSBldmVudC55O1xuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJNb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQucG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGlzTW92aW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsUG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKG1vdmluZ1BvaW50KSB7XG4gICAgICAgICAgICBtb3ZpbmdQb2ludCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTW92aW5nKSB7XG4gICAgICAgICAgICBpc01vdmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY2xhc3NMaXN0LnJlbW92ZSgndmlld3BvcnQtbW92aW5nJyk7XG4gICAgICAgIH1cbiAgICAgICAgZ2xvYmFsUG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQua2V5RG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ1NwYWNlJykge1xuICAgICAgICAgICAgaWYgKCFQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5oYW5kKSkge1xuICAgICAgICAgICAgICAgIEJvYXJkVHJhbnNmb3Jtcy51cGRhdGVQb2ludGVyVHlwZShib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5oYW5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAga2V5RG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmtleVVwID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghYm9hcmQub3B0aW9ucy5yZWFkb25seSAmJiBldmVudC5jb2RlID09PSAnU3BhY2UnKSB7XG4gICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBrZXlVcChldmVudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBib2FyZDtcbn1cbiJdfQ==
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1oYW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvcGx1Z2lucy93aXRoLWhhbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQXlDLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4SSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2xFLE1BQU0sVUFBVSxlQUFlLENBQXVCLEtBQVE7SUFDMUQsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ3ZGLElBQUksUUFBUSxHQUFZLEtBQUssQ0FBQztJQUM5QixJQUFJLFdBQVcsR0FBMEIsSUFBSSxDQUFDO0lBQzlDLElBQUksZ0JBQWdCLEdBQXdCLElBQUksQ0FBQztJQUVqRCxLQUFLLENBQUMsV0FBVyxHQUFHLENBQUMsS0FBbUIsRUFBRSxFQUFFO1FBQ3hDLE1BQU0sT0FBTyxHQUFJLEtBQXNDLENBQUMsZ0JBQWdCLENBQXdCLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6SCxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FB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LE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQUkVTU19BTkRfTU9WRV9CVUZGRVIgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUGxhaXRQb2ludGVyVHlwZSwgUGxhaXRCb2FyZCwgUGxhaXRCb2FyZE1vdmUsIFdpdGhIYW5kUGx1Z2luT3B0aW9ucywgUGxhaXRQbHVnaW5LZXkgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJvYXJkVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgZGlzdGFuY2VCZXR3ZWVuUG9pbnRBbmRQb2ludCwgaXNIaXRFbGVtZW50LCBpc01vdmluZ0VsZW1lbnRzLCBpc1NlbGVjdGlvbk1vdmluZywgdG9Ib3N0UG9pbnQsIHRvVmlld0JveFBvaW50IH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgaXNNYWluUG9pbnRlciB9IGZyb20gJy4uL3V0aWxzL2RvbS9jb21tb24nO1xuaW1wb3J0IHsgaXNTbWFydEhhbmQgfSBmcm9tICcuLi91dGlscy9tb2JpbGUnO1xuaW1wb3J0IHsgdXBkYXRlVmlld3BvcnRDb250YWluZXJTY3JvbGwgfSBmcm9tICcuLi91dGlscy92aWV3cG9ydCc7XG5pbXBvcnQgeyBQbGFpdE9wdGlvbnNCb2FyZCB9IGZyb20gJy4vd2l0aC1vcHRpb25zJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhIYW5kUG9pbnRlcjxUIGV4dGVuZHMgUGxhaXRCb2FyZD4oYm9hcmQ6IFQpIHtcbiAgICBjb25zdCB7IHBvaW50ZXJEb3duLCBwb2ludGVyTW92ZSwgZ2xvYmFsUG9pbnRlclVwLCBrZXlEb3duLCBrZXlVcCwgcG9pbnRlclVwIH0gPSBib2FyZDtcbiAgICBsZXQgaXNNb3Zpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBsZXQgbW92aW5nUG9pbnQ6IFBsYWl0Qm9hcmRNb3ZlIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHBvaW50ZXJEb3duRXZlbnQ6IFBvaW50ZXJFdmVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgYm9hcmQucG9pbnRlckRvd24gPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gKGJvYXJkIGFzIHVua25vd24gYXMgUGxhaXRPcHRpb25zQm9hcmQpLmdldFBsdWdpbk9wdGlvbnM8V2l0aEhhbmRQbHVnaW5PcHRpb25zPihQbGFpdFBsdWdpbktleS53aXRoSGFuZCk7XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgIGNvbnN0IGlzSGl0VGFyZ2V0ID0gaXNIaXRFbGVtZW50KGJvYXJkLCBwb2ludCk7XG4gICAgICAgIGlmICgob3B0aW9ucz8uaXNIYW5kTW9kZShib2FyZCwgZXZlbnQpIHx8IChpc1NtYXJ0SGFuZChib2FyZCwgZXZlbnQpICYmICFpc0hpdFRhcmdldCkpICYmIGlzTWFpblBvaW50ZXIoZXZlbnQpKSB7XG4gICAgICAgICAgICBtb3ZpbmdQb2ludCA9IHtcbiAgICAgICAgICAgICAgICB4OiBldmVudC54LFxuICAgICAgICAgICAgICAgIHk6IGV2ZW50LnlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlckRvd25FdmVudCA9IGV2ZW50O1xuICAgICAgICBwb2ludGVyRG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJNb3ZlID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IChib2FyZCBhcyB1bmtub3duIGFzIFBsYWl0T3B0aW9uc0JvYXJkKS5nZXRQbHVnaW5PcHRpb25zPFdpdGhIYW5kUGx1Z2luT3B0aW9ucz4oUGxhaXRQbHVnaW5LZXkud2l0aEhhbmQpO1xuICAgICAgICAvLyDpmIjlgLzlv4XpobvlpKfkuo4gd2l0aFNlbGVjdGlvbiDkuK0gcG9pbnRlck1vdmUg55qEIFBSRVNTX0FORF9NT1ZFX0JVRkZFUu+8mlxuICAgICAgICAvLyAxLiDpppblhYjmo4DmtYvmmK/lkKbmu6HotrPov5vlhaXmi5bpgInnirbmgIHnmoTmnaHku7ZcbiAgICAgICAgLy8gMi4g5LuF5b2T5LiN5ruh6Laz5ouW6YCJ5p2h5Lu25pe277yM5omN5Lya6ICD6JmR6Kem5Y+RIHdpdGhIYW5kIOihjOS4ulxuICAgICAgICAvLyBNdXN0IGV4Y2VlZCB0aGUgUFJFU1NfQU5EX01PVkVfQlVGRkVSIHRocmVzaG9sZCBkZWZpbmVkIGluIHdpdGhTZWxlY3Rpb24ncyBwb2ludGVyTW92ZS5cbiAgICAgICAgLy8gVGhlIHN5c3RlbSBmaXJzdCBjaGVja3MgZm9yIGRyYWcgc2VsZWN0aW9uIHN0YXRlIGVsaWdpYmlsaXR5XG4gICAgICAgIC8vIHdpdGhIYW5kIGJlaGF2aW9yIGlzIG9ubHkgdHJpZ2dlcmVkIGlmIGRyYWcgc2VsZWN0aW9uIHN0YXRlIGlzIG5vdCBpbml0aWF0ZWQuXG4gICAgICAgIGNvbnN0IHRyaWdnZXJEaXN0YW5jZSA9IFBSRVNTX0FORF9NT1ZFX0JVRkZFUiAqIDI7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIG1vdmluZ1BvaW50ICYmXG4gICAgICAgICAgICAhaXNNb3ZpbmcgJiZcbiAgICAgICAgICAgICFpc1NlbGVjdGlvbk1vdmluZyhib2FyZCkgJiZcbiAgICAgICAgICAgIHBvaW50ZXJEb3duRXZlbnQgJiZcbiAgICAgICAgICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQocG9pbnRlckRvd25FdmVudC54LCBwb2ludGVyRG93bkV2ZW50LnksIGV2ZW50LngsIGV2ZW50LnkpID4gdHJpZ2dlckRpc3RhbmNlICYmXG4gICAgICAgICAgICAhaXNNb3ZpbmdFbGVtZW50cyhib2FyZClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBpc01vdmluZyA9IHRydWU7XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldEJvYXJkQ29udGFpbmVyKGJvYXJkKS5jbGFzc0xpc3QuYWRkKCd2aWV3cG9ydC1tb3ZpbmcnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAob3B0aW9ucz8uaXNIYW5kTW9kZShib2FyZCwgZXZlbnQpIHx8IGlzU21hcnRIYW5kKGJvYXJkLCBldmVudCkpICYmXG4gICAgICAgICAgICBpc01vdmluZyAmJlxuICAgICAgICAgICAgbW92aW5nUG9pbnQgJiZcbiAgICAgICAgICAgICFpc1NlbGVjdGlvbk1vdmluZyhib2FyZCkgJiZcbiAgICAgICAgICAgICFpc01vdmluZ0VsZW1lbnRzKGJvYXJkKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0Q29udGFpbmVyID0gUGxhaXRCb2FyZC5nZXRWaWV3cG9ydENvbnRhaW5lcihib2FyZCk7XG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gdmlld3BvcnRDb250YWluZXIuc2Nyb2xsTGVmdCAtIChldmVudC54IC0gbW92aW5nUG9pbnQueCk7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSB2aWV3cG9ydENvbnRhaW5lci5zY3JvbGxUb3AgLSAoZXZlbnQueSAtIG1vdmluZ1BvaW50LnkpO1xuICAgICAgICAgICAgdXBkYXRlVmlld3BvcnRDb250YWluZXJTY3JvbGwoYm9hcmQsIGxlZnQsIHRvcCwgZmFsc2UpO1xuICAgICAgICAgICAgbW92aW5nUG9pbnQueCA9IGV2ZW50Lng7XG4gICAgICAgICAgICBtb3ZpbmdQb2ludC55ID0gZXZlbnQueTtcbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyTW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLnBvaW50ZXJVcCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChpc01vdmluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdsb2JhbFBvaW50ZXJVcCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChtb3ZpbmdQb2ludCkge1xuICAgICAgICAgICAgbW92aW5nUG9pbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc01vdmluZykge1xuICAgICAgICAgICAgaXNNb3ZpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNsYXNzTGlzdC5yZW1vdmUoJ3ZpZXdwb3J0LW1vdmluZycpO1xuICAgICAgICB9XG4gICAgICAgIGdsb2JhbFBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmNvZGUgPT09ICdTcGFjZScpIHtcbiAgICAgICAgICAgIGlmICghUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuaGFuZCkpIHtcbiAgICAgICAgICAgICAgICBCb2FyZFRyYW5zZm9ybXMudXBkYXRlUG9pbnRlclR5cGUoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuaGFuZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGtleURvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5rZXlVcCA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoIWJvYXJkLm9wdGlvbnMucmVhZG9ubHkgJiYgZXZlbnQuY29kZSA9PT0gJ1NwYWNlJykge1xuICAgICAgICAgICAgQm9hcmRUcmFuc2Zvcm1zLnVwZGF0ZVBvaW50ZXJUeXBlKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAga2V5VXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59XG4iXX0=
|
|
@@ -5,7 +5,7 @@ import { RectangleClient } from '../interfaces/rectangle-client';
|
|
|
5
5
|
import { cacheSelectedElements, clearSelectedElement, getHitElementsBySelection, getSelectedElements, isHitElement, removeSelectedElement } from '../utils/selected-element';
|
|
6
6
|
import { PlaitPointerType, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR } from '../interfaces';
|
|
7
7
|
import { ATTACHED_ELEMENT_CLASS_NAME } from '../constants/selection';
|
|
8
|
-
import { clearSelectionMoving, deleteTemporaryElements, drawRectangle, getTemporaryElements, isDragging, isHandleSelection, isSelectionMoving, setSelectionMoving, throttleRAF, toHostPoint, toViewBoxPoint, setSelectedElementsWithGroup, hasSetSelectionOperation, getSelectionOptions, setSelectionOptions, distanceBetweenPointAndPoint } from '../utils';
|
|
8
|
+
import { clearSelectionMoving, deleteTemporaryElements, drawRectangle, getTemporaryElements, isDragging, isHandleSelection, isSelectionMoving, setSelectionMoving, throttleRAF, toHostPoint, toViewBoxPoint, setSelectedElementsWithGroup, hasSetSelectionOperation, getSelectionOptions, setSelectionOptions, distanceBetweenPointAndPoint, isMobileDeviceEvent } from '../utils';
|
|
9
9
|
import { Selection } from '../interfaces/selection';
|
|
10
10
|
import { PRESS_AND_MOVE_BUFFER } from '../constants';
|
|
11
11
|
export function withSelection(board) {
|
|
@@ -32,11 +32,17 @@ export function withSelection(board) {
|
|
|
32
32
|
!isHitTarget &&
|
|
33
33
|
options.isMultipleSelection &&
|
|
34
34
|
!options.isDisabledSelection) {
|
|
35
|
-
// start
|
|
36
|
-
|
|
35
|
+
// start drag selection
|
|
36
|
+
if (isMobileDeviceEvent(event)) {
|
|
37
|
+
timerId = setTimeout(() => {
|
|
38
|
+
start = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
39
|
+
timerId = null;
|
|
40
|
+
console.log('enter selection');
|
|
41
|
+
}, 500);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
37
44
|
start = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
38
|
-
|
|
39
|
-
}, 500);
|
|
45
|
+
}
|
|
40
46
|
}
|
|
41
47
|
pointerDownEvent = event;
|
|
42
48
|
pointerDown(event);
|
|
@@ -52,22 +58,20 @@ export function withSelection(board) {
|
|
|
52
58
|
const movedTarget = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
53
59
|
const rectangle = RectangleClient.getRectangleByPoints([start, movedTarget]);
|
|
54
60
|
selectionMovingG?.remove();
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
PlaitBoard.getElementActiveHost(board).append(selectionMovingG);
|
|
70
|
-
}
|
|
61
|
+
end = movedTarget;
|
|
62
|
+
throttleRAF(board, 'with-selection', () => {
|
|
63
|
+
if (start && end) {
|
|
64
|
+
Transforms.setSelection(board, { anchor: start, focus: end });
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
setSelectionMoving(board);
|
|
68
|
+
selectionMovingG = drawRectangle(board, rectangle, {
|
|
69
|
+
stroke: SELECTION_BORDER_COLOR,
|
|
70
|
+
strokeWidth: 1,
|
|
71
|
+
fill: SELECTION_FILL_COLOR,
|
|
72
|
+
fillStyle: 'solid'
|
|
73
|
+
});
|
|
74
|
+
PlaitBoard.getElementActiveHost(board).append(selectionMovingG);
|
|
71
75
|
}
|
|
72
76
|
pointerMove(event);
|
|
73
77
|
};
|
|
@@ -103,6 +107,11 @@ export function withSelection(board) {
|
|
|
103
107
|
}
|
|
104
108
|
start = null;
|
|
105
109
|
end = null;
|
|
110
|
+
if (timerId) {
|
|
111
|
+
clearTimeout(timerId);
|
|
112
|
+
timerId = null;
|
|
113
|
+
}
|
|
114
|
+
pointerDownEvent = null;
|
|
106
115
|
globalPointerUp(event);
|
|
107
116
|
};
|
|
108
117
|
board.onChange = () => {
|
|
@@ -217,4 +226,4 @@ export function withSelection(board) {
|
|
|
217
226
|
});
|
|
218
227
|
return board;
|
|
219
228
|
}
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUNILHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1oscUJBQXFCLEVBQ3hCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFnQixnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsV0FBVyxFQUNYLGNBQWMsRUFDZCw0QkFBNEIsRUFDNUIsd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsNEJBQTRCLEVBQy9CLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFckQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFpQjtJQUMzQyxNQUFNLEVBQUUsV0FB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LENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUN4RixDQUFDO3dCQUNDLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxDQUFDO3dCQUM5QixtQkFBbUIsR0FBRyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzt3QkFDckQsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxtQkFBb0IsQ0FBQyxDQUFDO3dCQUNwRSx3QkFBd0IsR0FBRyxDQUFDLEdBQUcsdUJBQXVCLENBQUMsQ0FBQztvQkFDNUQsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osbUJBQW1CLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ2xDLENBQUM7WUFDTCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLENBQUM7UUFDTCxDQUFDO1FBQ0QsV0FBVyxFQUFFLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBRUYsbUJBQW1CLENBQUMsS0FBSyxFQUFFO1FBQ3ZCLG1CQUFtQixFQUFFLElBQUk7UUFDekIsbUJBQW1CLEVBQUUsS0FBSztRQUMxQix1QkFBdUIsRUFBRSxLQUFLO0tBQ2pDLENBQUMsQ0FBQztJQUVILE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuaW1wb3J0IHsgVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgaXNNYWluUG9pbnRlciB9IGZyb20gJy4uL3V0aWxzL2RvbS9jb21tb24nO1xuaW1wb3J0IHsgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZWN0YW5nbGUtY2xpZW50JztcbmltcG9ydCB7XG4gICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50LFxuICAgIGdldEhpdEVsZW1lbnRzQnlTZWxlY3Rpb24sXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICBpc0hpdEVsZW1lbnQsXG4gICAgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50XG59IGZyb20gJy4uL3V0aWxzL3NlbGVjdGVkLWVsZW1lbnQnO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50LCBQbGFpdFBvaW50ZXJUeXBlLCBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLCBTRUxFQ1RJT05fRklMTF9DT0xPUiB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQVRUQUNIRURfRUxFTUVOVF9DTEFTU19OQU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzL3NlbGVjdGlvbic7XG5pbXBvcnQge1xuICAgIGNsZWFyU2VsZWN0aW9uTW92aW5nLFxuICAgIGRlbGV0ZVRlbXBvcmFyeUVsZW1lbnRzLFxuICAgIGRyYXdSZWN0YW5nbGUsXG4gICAgZ2V0VGVtcG9yYXJ5RWxlbWVudHMsXG4gICAgaXNEcmFnZ2luZyxcbiAgICBpc0hhbmRsZVNlbGVjdGlvbixcbiAgICBpc1NlbGVjdGlvbk1vdmluZyxcbiAgICBzZXRTZWxlY3Rpb25Nb3ZpbmcsXG4gICAgdGhyb3R0bGVSQUYsXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgdG9WaWV3Qm94UG9pbnQsXG4gICAgc2V0U2VsZWN0ZWRFbGVtZW50c1dpdGhHcm91cCxcbiAgICBoYXNTZXRTZWxlY3Rpb25PcGVyYXRpb24sXG4gICAgZ2V0U2VsZWN0aW9uT3B0aW9ucyxcbiAgICBzZXRTZWxlY3Rpb25PcHRpb25zLFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnRcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgU2VsZWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgUFJFU1NfQU5EX01PVkVfQlVGRkVSIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTZWxlY3Rpb24oYm9hcmQ6IFBsYWl0Qm9hcmQpIHtcbiAgICBjb25zdCB7IHBvaW50ZXJEb3duLCBwb2ludGVyVXAsIHBvaW50ZXJNb3ZlLCBnbG9iYWxQb2ludGVyVXAsIG9uQ2hhbmdlLCBhZnRlckNoYW5nZSwgZHJhd1NlbGVjdGlvblJlY3RhbmdsZSB9ID0gYm9hcmQ7XG4gICAgbGV0IHN0YXJ0OiBQb2ludCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBlbmQ6IFBvaW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHNlbGVjdGlvbk1vdmluZ0c6IFNWR0dFbGVtZW50O1xuICAgIGxldCBzZWxlY3Rpb25SZWN0YW5nbGVHOiBTVkdHRWxlbWVudCB8IG51bGw7XG4gICAgbGV0IHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50czogUGxhaXRFbGVtZW50W107XG4gICAgbGV0IGlzU2hpZnQgPSBmYWxzZTtcbiAgICBsZXQgdGltZXJJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcbiAgICBsZXQgcG9pbnRlckRvd25FdmVudDogUG9pbnRlckV2ZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBib2FyZC5wb2ludGVyRG93biA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghaXNTaGlmdCAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgaXNTaGlmdCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzU2hpZnQgJiYgIWV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICBpc1NoaWZ0ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgY29uc3QgaXNIaXRUYXJnZXQgPSBpc0hpdEVsZW1lbnQoYm9hcmQsIHBvaW50KTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGdldFNlbGVjdGlvbk9wdGlvbnMoYm9hcmQpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pICYmXG4gICAgICAgICAgICAhaXNIaXRUYXJnZXQgJiZcbiAgICAgICAgICAgIG9wdGlvbnMuaXNNdWx0aXBsZVNlbGVjdGlvbiAmJlxuICAgICAgICAgICAgIW9wdGlvbnMuaXNEaXNhYmxlZFNlbGVjdGlvblxuICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIHN0YXJ0IHJlY3RhbmdsZSBzZWxlY3Rpb25cbiAgICAgICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBzdGFydCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgICAgIHRpbWVySWQgPSBudWxsO1xuICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyRG93bkV2ZW50ID0gZXZlbnQ7XG4gICAgICAgIHBvaW50ZXJEb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQucG9pbnRlck1vdmUgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aW1lcklkICYmXG4gICAgICAgICAgICBwb2ludGVyRG93bkV2ZW50ICYmXG4gICAgICAgICAgICBkaXN0YW5jZUJldHdlZW5Qb2ludEFuZFBvaW50KHBvaW50ZXJEb3duRXZlbnQueCwgcG9pbnRlckRvd25FdmVudC55LCBldmVudC54LCBldmVudC55KSA+IFBSRVNTX0FORF9NT1ZFX0JVRkZFUlxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgICAgIHRpbWVySWQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pICYmIHN0YXJ0KSB7XG4gICAgICAgICAgICBjb25zdCBtb3ZlZFRhcmdldCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgY29uc3QgcmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldFJlY3RhbmdsZUJ5UG9pbnRzKFtzdGFydCwgbW92ZWRUYXJnZXRdKTtcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vdmluZ0c/LnJlbW92ZSgpO1xuICAgICAgICAgICAgaWYgKE1hdGguaHlwb3QocmVjdGFuZ2xlLndpZHRoLCByZWN0YW5nbGUuaGVpZ2h0KSA+IFBSRVNTX0FORF9NT1ZFX0JVRkZFUiB8fCBpc1NlbGVjdGlvbk1vdmluZyhib2FyZCkpIHtcbiAgICAgICAgICAgICAgICBlbmQgPSBtb3ZlZFRhcmdldDtcbiAgICAgICAgICAgICAgICB0aHJvdHRsZVJBRihib2FyZCwgJ3dpdGgtc2VsZWN0aW9uJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgJiYgZW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgeyBhbmNob3I6IHN0YXJ0LCBmb2N1czogZW5kIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc2V0U2VsZWN0aW9uTW92aW5nKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25Nb3ZpbmdHID0gZHJhd1JlY3RhbmdsZShib2FyZCwgcmVjdGFuZ2xlLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZTogU0VMRUNUSU9OX0JPUkRFUl9DT0xPUixcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgICAgICAgICAgICAgIGZpbGw6IFNFTEVDVElPTl9GSUxMX0NPTE9SLFxuICAgICAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KGJvYXJkKS5hcHBlbmQoc2VsZWN0aW9uTW92aW5nRyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRlck1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICAvLyBoYW5kbGUgdGhlIGVuZCBvZiBjbGljayBzZWxlY3RcbiAgICBib2FyZC5wb2ludGVyVXAgPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBpc1NldFNlbGVjdGlvblBvaW50ZXIgPVxuICAgICAgICAgICAgUGxhaXRCb2FyZC5pc1BvaW50ZXIoYm9hcmQsIFBsYWl0UG9pbnRlclR5cGUuc2VsZWN0aW9uKSB8fCBQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5oYW5kKTtcbiAgICAgICAgY29uc3QgaXNTa2lwID0gIWlzTWFpblBvaW50ZXIoZXZlbnQpIHx8IGlzRHJhZ2dpbmcoYm9hcmQpIHx8ICFpc1NldFNlbGVjdGlvblBvaW50ZXI7XG4gICAgICAgIGlmIChpc1NraXApIHtcbiAgICAgICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9pbnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0geyBhbmNob3I6IHBvaW50LCBmb2N1czogcG9pbnQgfTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIHNlbGVjdGlvbik7XG4gICAgICAgIHBvaW50ZXJVcChldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmdsb2JhbFBvaW50ZXJVcCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChzdGFydCAmJiBlbmQpIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vdmluZ0c/LnJlbW92ZSgpO1xuICAgICAgICAgICAgY2xlYXJTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXRTZWxlY3Rpb24oYm9hcmQsIHsgYW5jaG9yOiBzdGFydCwgZm9jdXM6IGVuZCB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHRpb25zID0gZ2V0U2VsZWN0aW9uT3B0aW9ucyhib2FyZCk7XG4gICAgICAgIGlmIChQbGFpdEJvYXJkLmlzRm9jdXMoYm9hcmQpICYmICFvcHRpb25zLmlzUHJldmVudENsZWFyU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBpc0luQm9hcmQgPSBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBOb2RlICYmIFBsYWl0Qm9hcmQuZ2V0Qm9hcmRDb250YWluZXIoYm9hcmQpLmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG4gICAgICAgICAgICBjb25zdCBpc0luRG9jdW1lbnQgPSBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBOb2RlICYmIGRvY3VtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG4gICAgICAgICAgICBjb25zdCBpc0F0dGFjaGVkRWxlbWVudCA9IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgZXZlbnQudGFyZ2V0LmNsb3Nlc3QoYC4ke0FUVEFDSEVEX0VMRU1FTlRfQ0xBU1NfTkFNRX1gKTtcbiAgICAgICAgICAgIC8vIENsZWFyIHNlbGVjdGlvbiB3aGVuIG1vdXNlIGJvYXJkIG91dHNpZGUgYXJlYVxuICAgICAgICAgICAgLy8gVGhlIGZyYW1ld29yayBuZWVkcyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgYm9hcmQgaXMgZm9jdXNlZCB0aHJvdWdoIHNlbGVjdGlvblxuICAgICAgICAgICAgaWYgKCFpc0luQm9hcmQgJiYgIXN0YXJ0ICYmICFpc0F0dGFjaGVkRWxlbWVudCAmJiBpc0luRG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3RhcnQgPSBudWxsO1xuICAgICAgICBlbmQgPSBudWxsO1xuICAgICAgICBnbG9iYWxQb2ludGVyVXAoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGdldFNlbGVjdGlvbk9wdGlvbnMoYm9hcmQpO1xuICAgICAgICBpZiAob3B0aW9ucy5pc0Rpc2FibGVkU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBjbGVhclNlbGVjdGVkRWxlbWVudChib2FyZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVtb3ZlIHNlbGVjdGVkIGVsZW1lbnQgaWYgaW5jbHVkZVxuICAgICAgICBib2FyZC5vcGVyYXRpb25zLmZvckVhY2goKG9wKSA9PiB7XG4gICAgICAgICAgICBpZiAob3AudHlwZSA9PT0gJ3JlbW92ZV9ub2RlJykge1xuICAgICAgICAgICAgICAgIHJlbW92ZVNlbGVjdGVkRWxlbWVudChib2FyZCwgb3Aubm9kZSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaXNIYW5kbGVTZWxlY3Rpb24oYm9hcmQpICYmIGhhc1NldFNlbGVjdGlvbk9wZXJhdGlvbihib2FyZCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1NoaWZ0KSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB0ZW1wb3JhcnlFbGVtZW50cyA9IGdldFRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAodGVtcG9yYXJ5RWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBbLi4udGVtcG9yYXJ5RWxlbWVudHNdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudHMgPSBnZXRIaXRFbGVtZW50c0J5U2VsZWN0aW9uKGJvYXJkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLmlzTXVsdGlwbGVTZWxlY3Rpb24gJiYgZWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBbZWxlbWVudHNbMF1dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzSGl0RWxlbWVudFdpdGhHcm91cCA9IGVsZW1lbnRzLnNvbWUoKGl0ZW0pID0+IGl0ZW0uZ3JvdXBJZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzSGl0RWxlbWVudFdpdGhHcm91cCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2VsZWN0ZWRFbGVtZW50c1dpdGhHcm91cChib2FyZCwgZWxlbWVudHMsIGlzU2hpZnQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvYXJkLnNlbGVjdGlvbiAmJiBTZWxlY3Rpb24uaXNDb2xsYXBzZWQoYm9hcmQuc2VsZWN0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBib2FyZC5nZXRPbmVIaXRFbGVtZW50KGVsZW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyA9IFtlbGVtZW50XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTaGlmdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnRzID0gWy4uLnNlbGVjdGVkRWxlbWVudHNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2FyZC5zZWxlY3Rpb24gJiYgU2VsZWN0aW9uLmlzQ29sbGFwc2VkKGJvYXJkLnNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0VsZW1lbnRzLmluY2x1ZGVzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudHMuc3BsaWNlKG5ld0VsZW1lbnRzLmluZGV4T2YoZWxlbWVudCksIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBuZXdFbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFuZXdFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0VsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVNlbGVjdGVkRWxlbWVudHMoYm9hcmQsIFsuLi5uZXdFbGVtZW50c10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBbLi4uZWxlbWVudHNdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBuZXdFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50cyA9IFsuLi5uZXdFbGVtZW50c107XG4gICAgICAgICAgICAgICAgZGVsZXRlVGVtcG9yYXJ5RWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmICghaXNTZWxlY3Rpb25Nb3ZpbmcoYm9hcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3RWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRyA9IGJvYXJkLmRyYXdTZWxlY3Rpb25SZWN0YW5nbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25SZWN0YW5nbGVHISk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlKCk7XG4gICAgfTtcblxuICAgIGJvYXJkLmFmdGVyQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBpZiAoaXNIYW5kbGVTZWxlY3Rpb24oYm9hcmQpICYmICFoYXNTZXRTZWxlY3Rpb25PcGVyYXRpb24oYm9hcmQpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCAmJiBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50cyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCAhPT0gcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzLmxlbmd0aCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzLnNvbWUoKGMsIGluZGV4KSA9PiBjICE9PSBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHNbaW5kZXhdKSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUcgPSBib2FyZC5kcmF3U2VsZWN0aW9uUmVjdGFuZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KGJvYXJkKS5hcHBlbmQoc2VsZWN0aW9uUmVjdGFuZ2xlRyEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzID0gWy4uLmN1cnJlbnRTZWxlY3RlZEVsZW1lbnRzXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUc/LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYWZ0ZXJDaGFuZ2UoKTtcbiAgICB9O1xuXG4gICAgc2V0U2VsZWN0aW9uT3B0aW9ucyhib2FyZCwge1xuICAgICAgICBpc011bHRpcGxlU2VsZWN0aW9uOiB0cnVlLFxuICAgICAgICBpc0Rpc2FibGVkU2VsZWN0aW9uOiBmYWxzZSxcbiAgICAgICAgaXNQcmV2ZW50Q2xlYXJTZWxlY3Rpb246IGZhbHNlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYm9hcmQ7XG59XG4iXX0=
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9wbHVnaW5zL3dpdGgtc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUNILHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQixZQUFZLEVBQ1oscUJBQXFCLEVBQ3hCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFnQixnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLHVCQUF1QixFQUN2QixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsV0FBVyxFQUNYLGNBQWMsRUFDZCw0QkFBNEIsRUFDNUIsd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsNEJBQTRCLEVBQzVCLG1CQUFtQixFQUN0QixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXJELE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBaUI7SUFDM0Ms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O2dCQUMzRCxJQUFJLHVCQUF1QixDQUFDLE1BQU0sSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3ZFLElBQ0ksd0JBQXdCO3dCQUN4QixDQUFDLHVCQUF1QixDQUFDLE1BQU0sS0FBSyx3QkFBd0IsQ0FBQyxNQUFNOzRCQUMvRCx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUN4RixDQUFDO3dCQUNDLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxDQUFDO3dCQUM5QixtQkFBbUIsR0FBRyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsQ0FBQzt3QkFDckQsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxtQkFBb0IsQ0FBQyxDQUFDO3dCQUNwRSx3QkFBd0IsR0FBRyxDQUFDLEdBQUcsdUJBQXVCLENBQUMsQ0FBQztvQkFDNUQsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osbUJBQW1CLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ2xDLENBQUM7WUFDTCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLENBQUM7UUFDTCxDQUFDO1FBQ0QsV0FBVyxFQUFFLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBRUYsbUJBQW1CLENBQUMsS0FBSyxFQUFFO1FBQ3ZCLG1CQUFtQixFQUFFLElBQUk7UUFDekIsbUJBQW1CLEVBQUUsS0FBSztRQUMxQix1QkFBdUIsRUFBRSxLQUFLO0tBQ2pDLENBQUMsQ0FBQztJQUVILE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuaW1wb3J0IHsgVHJhbnNmb3JtcyB9IGZyb20gJy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgaXNNYWluUG9pbnRlciB9IGZyb20gJy4uL3V0aWxzL2RvbS9jb21tb24nO1xuaW1wb3J0IHsgUmVjdGFuZ2xlQ2xpZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZWN0YW5nbGUtY2xpZW50JztcbmltcG9ydCB7XG4gICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzLFxuICAgIGNsZWFyU2VsZWN0ZWRFbGVtZW50LFxuICAgIGdldEhpdEVsZW1lbnRzQnlTZWxlY3Rpb24sXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICBpc0hpdEVsZW1lbnQsXG4gICAgcmVtb3ZlU2VsZWN0ZWRFbGVtZW50XG59IGZyb20gJy4uL3V0aWxzL3NlbGVjdGVkLWVsZW1lbnQnO1xuaW1wb3J0IHsgUGxhaXRFbGVtZW50LCBQbGFpdFBvaW50ZXJUeXBlLCBTRUxFQ1RJT05fQk9SREVSX0NPTE9SLCBTRUxFQ1RJT05fRklMTF9DT0xPUiB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQVRUQUNIRURfRUxFTUVOVF9DTEFTU19OQU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzL3NlbGVjdGlvbic7XG5pbXBvcnQge1xuICAgIGNsZWFyU2VsZWN0aW9uTW92aW5nLFxuICAgIGRlbGV0ZVRlbXBvcmFyeUVsZW1lbnRzLFxuICAgIGRyYXdSZWN0YW5nbGUsXG4gICAgZ2V0VGVtcG9yYXJ5RWxlbWVudHMsXG4gICAgaXNEcmFnZ2luZyxcbiAgICBpc0hhbmRsZVNlbGVjdGlvbixcbiAgICBpc1NlbGVjdGlvbk1vdmluZyxcbiAgICBzZXRTZWxlY3Rpb25Nb3ZpbmcsXG4gICAgdGhyb3R0bGVSQUYsXG4gICAgdG9Ib3N0UG9pbnQsXG4gICAgdG9WaWV3Qm94UG9pbnQsXG4gICAgc2V0U2VsZWN0ZWRFbGVtZW50c1dpdGhHcm91cCxcbiAgICBoYXNTZXRTZWxlY3Rpb25PcGVyYXRpb24sXG4gICAgZ2V0U2VsZWN0aW9uT3B0aW9ucyxcbiAgICBzZXRTZWxlY3Rpb25PcHRpb25zLFxuICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQsXG4gICAgaXNNb2JpbGVEZXZpY2VFdmVudFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBTZWxlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBQUkVTU19BTkRfTU9WRV9CVUZGRVIgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFNlbGVjdGlvbihib2FyZDogUGxhaXRCb2FyZCkge1xuICAgIGNvbnN0IHsgcG9pbnRlckRvd24sIHBvaW50ZXJVcCwgcG9pbnRlck1vdmUsIGdsb2JhbFBvaW50ZXJVcCwgb25DaGFuZ2UsIGFmdGVyQ2hhbmdlLCBkcmF3U2VsZWN0aW9uUmVjdGFuZ2xlIH0gPSBib2FyZDtcbiAgICBsZXQgc3RhcnQ6IFBvaW50IHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGVuZDogUG9pbnQgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgc2VsZWN0aW9uTW92aW5nRzogU1ZHR0VsZW1lbnQ7XG4gICAgbGV0IHNlbGVjdGlvblJlY3RhbmdsZUc6IFNWR0dFbGVtZW50IHwgbnVsbDtcbiAgICBsZXQgcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzOiBQbGFpdEVsZW1lbnRbXTtcbiAgICBsZXQgaXNTaGlmdCA9IGZhbHNlO1xuICAgIGxldCB0aW1lcklkOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuICAgIGxldCBwb2ludGVyRG93bkV2ZW50OiBQb2ludGVyRXZlbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGJvYXJkLnBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFpc1NoaWZ0ICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICBpc1NoaWZ0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNTaGlmdCAmJiAhZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIGlzU2hpZnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICBjb25zdCBpc0hpdFRhcmdldCA9IGlzSGl0RWxlbWVudChib2FyZCwgcG9pbnQpO1xuICAgICAgICBjb25zdCBvcHRpb25zID0gZ2V0U2VsZWN0aW9uT3B0aW9ucyhib2FyZCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbikgJiZcbiAgICAgICAgICAgICFpc0hpdFRhcmdldCAmJlxuICAgICAgICAgICAgb3B0aW9ucy5pc011bHRpcGxlU2VsZWN0aW9uICYmXG4gICAgICAgICAgICAhb3B0aW9ucy5pc0Rpc2FibGVkU2VsZWN0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgICAgLy8gc3RhcnQgZHJhZyBzZWxlY3Rpb25cbiAgICAgICAgICAgIGlmIChpc01vYmlsZURldmljZUV2ZW50KGV2ZW50KSkge1xuICAgICAgICAgICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSB0b1ZpZXdCb3hQb2ludChib2FyZCwgdG9Ib3N0UG9pbnQoYm9hcmQsIGV2ZW50LngsIGV2ZW50LnkpKTtcbiAgICAgICAgICAgICAgICAgICAgdGltZXJJZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlbnRlciBzZWxlY3Rpb24nKTtcbiAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdGFydCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBvaW50ZXJEb3duRXZlbnQgPSBldmVudDtcbiAgICAgICAgcG9pbnRlckRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5wb2ludGVyTW92ZSA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRpbWVySWQgJiZcbiAgICAgICAgICAgIHBvaW50ZXJEb3duRXZlbnQgJiZcbiAgICAgICAgICAgIGRpc3RhbmNlQmV0d2VlblBvaW50QW5kUG9pbnQocG9pbnRlckRvd25FdmVudC54LCBwb2ludGVyRG93bkV2ZW50LnksIGV2ZW50LngsIGV2ZW50LnkpID4gUFJFU1NfQU5EX01PVkVfQlVGRkVSXG4gICAgICAgICkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICAgICAgdGltZXJJZCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLnNlbGVjdGlvbikgJiYgc3RhcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1vdmVkVGFyZ2V0ID0gdG9WaWV3Qm94UG9pbnQoYm9hcmQsIHRvSG9zdFBvaW50KGJvYXJkLCBldmVudC54LCBldmVudC55KSk7XG4gICAgICAgICAgICBjb25zdCByZWN0YW5nbGUgPSBSZWN0YW5nbGVDbGllbnQuZ2V0UmVjdGFuZ2xlQnlQb2ludHMoW3N0YXJ0LCBtb3ZlZFRhcmdldF0pO1xuICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBlbmQgPSBtb3ZlZFRhcmdldDtcbiAgICAgICAgICAgIHRocm90dGxlUkFGKGJvYXJkLCAnd2l0aC1zZWxlY3Rpb24nLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgeyBhbmNob3I6IHN0YXJ0LCBmb2N1czogZW5kIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc2V0U2VsZWN0aW9uTW92aW5nKGJvYXJkKTtcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vdmluZ0cgPSBkcmF3UmVjdGFuZ2xlKGJvYXJkLCByZWN0YW5nbGUsIHtcbiAgICAgICAgICAgICAgICBzdHJva2U6IFNFTEVDVElPTl9CT1JERVJfQ09MT1IsXG4gICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDEsXG4gICAgICAgICAgICAgICAgZmlsbDogU0VMRUNUSU9OX0ZJTExfQ09MT1IsXG4gICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIFBsYWl0Qm9hcmQuZ2V0RWxlbWVudEFjdGl2ZUhvc3QoYm9hcmQpLmFwcGVuZChzZWxlY3Rpb25Nb3ZpbmdHKTtcbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyTW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIC8vIGhhbmRsZSB0aGUgZW5kIG9mIGNsaWNrIHNlbGVjdFxuICAgIGJvYXJkLnBvaW50ZXJVcCA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzU2V0U2VsZWN0aW9uUG9pbnRlciA9XG4gICAgICAgICAgICBQbGFpdEJvYXJkLmlzUG9pbnRlcihib2FyZCwgUGxhaXRQb2ludGVyVHlwZS5zZWxlY3Rpb24pIHx8IFBsYWl0Qm9hcmQuaXNQb2ludGVyKGJvYXJkLCBQbGFpdFBvaW50ZXJUeXBlLmhhbmQpO1xuICAgICAgICBjb25zdCBpc1NraXAgPSAhaXNNYWluUG9pbnRlcihldmVudCkgfHwgaXNEcmFnZ2luZyhib2FyZCkgfHwgIWlzU2V0U2VsZWN0aW9uUG9pbnRlcjtcbiAgICAgICAgaWYgKGlzU2tpcCkge1xuICAgICAgICAgICAgcG9pbnRlclVwKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb2ludCA9IHRvVmlld0JveFBvaW50KGJvYXJkLCB0b0hvc3RQb2ludChib2FyZCwgZXZlbnQueCwgZXZlbnQueSkpO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB7IGFuY2hvcjogcG9pbnQsIGZvY3VzOiBwb2ludCB9O1xuICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgc2VsZWN0aW9uKTtcbiAgICAgICAgcG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQuZ2xvYmFsUG9pbnRlclVwID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgICAgICAgc2VsZWN0aW9uTW92aW5nRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICBjbGVhclNlbGVjdGlvbk1vdmluZyhib2FyZCk7XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbihib2FyZCwgeyBhbmNob3I6IHN0YXJ0LCBmb2N1czogZW5kIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRTZWxlY3Rpb25PcHRpb25zKGJvYXJkKTtcbiAgICAgICAgaWYgKFBsYWl0Qm9hcmQuaXNGb2N1cyhib2FyZCkgJiYgIW9wdGlvbnMuaXNQcmV2ZW50Q2xlYXJTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGlzSW5Cb2FyZCA9IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIE5vZGUgJiYgUGxhaXRCb2FyZC5nZXRCb2FyZENvbnRhaW5lcihib2FyZCkuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgICAgIGNvbnN0IGlzSW5Eb2N1bWVudCA9IGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIE5vZGUgJiYgZG9jdW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgICAgIGNvbnN0IGlzQXR0YWNoZWRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCAmJiBldmVudC50YXJnZXQuY2xvc2VzdChgLiR7QVRUQUNIRURfRUxFTUVOVF9DTEFTU19OQU1FfWApO1xuICAgICAgICAgICAgLy8gQ2xlYXIgc2VsZWN0aW9uIHdoZW4gbW91c2UgYm9hcmQgb3V0c2lkZSBhcmVhXG4gICAgICAgICAgICAvLyBUaGUgZnJhbWV3b3JrIG5lZWRzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBib2FyZCBpcyBmb2N1c2VkIHRocm91Z2ggc2VsZWN0aW9uXG4gICAgICAgICAgICBpZiAoIWlzSW5Cb2FyZCAmJiAhc3RhcnQgJiYgIWlzQXR0YWNoZWRFbGVtZW50ICYmIGlzSW5Eb2N1bWVudCkge1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0U2VsZWN0aW9uKGJvYXJkLCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdGFydCA9IG51bGw7XG4gICAgICAgIGVuZCA9IG51bGw7XG4gICAgICAgIGlmICh0aW1lcklkKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgICAgICAgICB0aW1lcklkID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBwb2ludGVyRG93bkV2ZW50ID0gbnVsbDtcbiAgICAgICAgZ2xvYmFsUG9pbnRlclVwKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQub25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBnZXRTZWxlY3Rpb25PcHRpb25zKGJvYXJkKTtcbiAgICAgICAgaWYgKG9wdGlvbnMuaXNEaXNhYmxlZFNlbGVjdGlvbikge1xuICAgICAgICAgICAgY2xlYXJTZWxlY3RlZEVsZW1lbnQoYm9hcmQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlbW92ZSBzZWxlY3RlZCBlbGVtZW50IGlmIGluY2x1ZGVcbiAgICAgICAgYm9hcmQub3BlcmF0aW9ucy5mb3JFYWNoKChvcCkgPT4ge1xuICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT09ICdyZW1vdmVfbm9kZScpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVTZWxlY3RlZEVsZW1lbnQoYm9hcmQsIG9wLm5vZGUsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlzSGFuZGxlU2VsZWN0aW9uKGJvYXJkKSAmJiBoYXNTZXRTZWxlY3Rpb25PcGVyYXRpb24oYm9hcmQpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmICghaXNTaGlmdCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgdGVtcG9yYXJ5RWxlbWVudHMgPSBnZXRUZW1wb3JhcnlFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgaWYgKHRlbXBvcmFyeUVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgWy4uLnRlbXBvcmFyeUVsZW1lbnRzXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRzID0gZ2V0SGl0RWxlbWVudHNCeVNlbGVjdGlvbihib2FyZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9ucy5pc011bHRpcGxlU2VsZWN0aW9uICYmIGVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gW2VsZW1lbnRzWzBdXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0hpdEVsZW1lbnRXaXRoR3JvdXAgPSBlbGVtZW50cy5zb21lKChpdGVtKSA9PiBpdGVtLmdyb3VwSWQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0hpdEVsZW1lbnRXaXRoR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkRWxlbWVudHNXaXRoR3JvdXAoYm9hcmQsIGVsZW1lbnRzLCBpc1NoaWZ0KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2FyZC5zZWxlY3Rpb24gJiYgU2VsZWN0aW9uLmlzQ29sbGFwc2VkKGJvYXJkLnNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gYm9hcmQuZ2V0T25lSGl0RWxlbWVudChlbGVtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSBbZWxlbWVudF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2hpZnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdFbGVtZW50cyA9IFsuLi5zZWxlY3RlZEVsZW1lbnRzXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYm9hcmQuc2VsZWN0aW9uICYmIFNlbGVjdGlvbi5pc0NvbGxhcHNlZChib2FyZC5zZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdFbGVtZW50cy5pbmNsdWRlcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0VsZW1lbnRzLnNwbGljZShuZXdFbGVtZW50cy5pbmRleE9mKGVsZW1lbnQpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgbmV3RWxlbWVudHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbmV3RWxlbWVudHMuaW5jbHVkZXMoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTZWxlY3RlZEVsZW1lbnRzKGJvYXJkLCBbLi4ubmV3RWxlbWVudHNdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU2VsZWN0ZWRFbGVtZW50cyhib2FyZCwgWy4uLmVsZW1lbnRzXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHMgPSBbLi4ubmV3RWxlbWVudHNdO1xuICAgICAgICAgICAgICAgIGRlbGV0ZVRlbXBvcmFyeUVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzU2VsZWN0aW9uTW92aW5nKGJvYXJkKSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0VsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvblJlY3RhbmdsZUcgPSBib2FyZC5kcmF3U2VsZWN0aW9uUmVjdGFuZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBQbGFpdEJvYXJkLmdldEVsZW1lbnRBY3RpdmVIb3N0KGJvYXJkKS5hcHBlbmQoc2VsZWN0aW9uUmVjdGFuZ2xlRyEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZSgpO1xuICAgIH07XG5cbiAgICBib2FyZC5hZnRlckNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKGlzSGFuZGxlU2VsZWN0aW9uKGJvYXJkKSAmJiAhaGFzU2V0U2VsZWN0aW9uT3BlcmF0aW9uKGJvYXJkKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggJiYgY3VycmVudFNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1NlbGVjdGVkRWxlbWVudHMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggIT09IHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VsZWN0ZWRFbGVtZW50cy5zb21lKChjLCBpbmRleCkgPT4gYyAhPT0gcHJldmlvdXNTZWxlY3RlZEVsZW1lbnRzW2luZGV4XSkpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVjdGFuZ2xlRz8ucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHID0gYm9hcmQuZHJhd1NlbGVjdGlvblJlY3RhbmdsZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgUGxhaXRCb2FyZC5nZXRFbGVtZW50QWN0aXZlSG9zdChib2FyZCkuYXBwZW5kKHNlbGVjdGlvblJlY3RhbmdsZUchKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzU2VsZWN0ZWRFbGVtZW50cyA9IFsuLi5jdXJyZW50U2VsZWN0ZWRFbGVtZW50c107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0YW5nbGVHPy5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFmdGVyQ2hhbmdlKCk7XG4gICAgfTtcblxuICAgIHNldFNlbGVjdGlvbk9wdGlvbnMoYm9hcmQsIHtcbiAgICAgICAgaXNNdWx0aXBsZVNlbGVjdGlvbjogdHJ1ZSxcbiAgICAgICAgaXNEaXNhYmxlZFNlbGVjdGlvbjogZmFsc2UsXG4gICAgICAgIGlzUHJldmVudENsZWFyU2VsZWN0aW9uOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJvYXJkO1xufVxuIl19
|
package/fesm2022/plait-core.mjs
CHANGED
|
@@ -5525,7 +5525,9 @@ function withHandPointer(board) {
|
|
|
5525
5525
|
let pointerDownEvent = null;
|
|
5526
5526
|
board.pointerDown = (event) => {
|
|
5527
5527
|
const options = board.getPluginOptions(PlaitPluginKey.withHand);
|
|
5528
|
-
|
|
5528
|
+
const point = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
5529
|
+
const isHitTarget = isHitElement(board, point);
|
|
5530
|
+
if ((options?.isHandMode(board, event) || (isSmartHand(board, event) && !isHitTarget)) && isMainPointer(event)) {
|
|
5529
5531
|
movingPoint = {
|
|
5530
5532
|
x: event.x,
|
|
5531
5533
|
y: event.y
|
|
@@ -5542,7 +5544,7 @@ function withHandPointer(board) {
|
|
|
5542
5544
|
// Must exceed the PRESS_AND_MOVE_BUFFER threshold defined in withSelection's pointerMove.
|
|
5543
5545
|
// The system first checks for drag selection state eligibility
|
|
5544
5546
|
// withHand behavior is only triggered if drag selection state is not initiated.
|
|
5545
|
-
const triggerDistance = PRESS_AND_MOVE_BUFFER
|
|
5547
|
+
const triggerDistance = PRESS_AND_MOVE_BUFFER * 2;
|
|
5546
5548
|
if (movingPoint &&
|
|
5547
5549
|
!isMoving &&
|
|
5548
5550
|
!isSelectionMoving(board) &&
|
|
@@ -5552,7 +5554,11 @@ function withHandPointer(board) {
|
|
|
5552
5554
|
isMoving = true;
|
|
5553
5555
|
PlaitBoard.getBoardContainer(board).classList.add('viewport-moving');
|
|
5554
5556
|
}
|
|
5555
|
-
if ((options?.isHandMode(board, event) || isSmartHand(board, event)) &&
|
|
5557
|
+
if ((options?.isHandMode(board, event) || isSmartHand(board, event)) &&
|
|
5558
|
+
isMoving &&
|
|
5559
|
+
movingPoint &&
|
|
5560
|
+
!isSelectionMoving(board) &&
|
|
5561
|
+
!isMovingElements(board)) {
|
|
5556
5562
|
const viewportContainer = PlaitBoard.getViewportContainer(board);
|
|
5557
5563
|
const left = viewportContainer.scrollLeft - (event.x - movingPoint.x);
|
|
5558
5564
|
const top = viewportContainer.scrollTop - (event.y - movingPoint.y);
|
|
@@ -6297,11 +6303,17 @@ function withSelection(board) {
|
|
|
6297
6303
|
!isHitTarget &&
|
|
6298
6304
|
options.isMultipleSelection &&
|
|
6299
6305
|
!options.isDisabledSelection) {
|
|
6300
|
-
// start
|
|
6301
|
-
|
|
6306
|
+
// start drag selection
|
|
6307
|
+
if (isMobileDeviceEvent(event)) {
|
|
6308
|
+
timerId = setTimeout(() => {
|
|
6309
|
+
start = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
6310
|
+
timerId = null;
|
|
6311
|
+
console.log('enter selection');
|
|
6312
|
+
}, 500);
|
|
6313
|
+
}
|
|
6314
|
+
else {
|
|
6302
6315
|
start = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
6303
|
-
|
|
6304
|
-
}, 500);
|
|
6316
|
+
}
|
|
6305
6317
|
}
|
|
6306
6318
|
pointerDownEvent = event;
|
|
6307
6319
|
pointerDown(event);
|
|
@@ -6317,22 +6329,20 @@ function withSelection(board) {
|
|
|
6317
6329
|
const movedTarget = toViewBoxPoint(board, toHostPoint(board, event.x, event.y));
|
|
6318
6330
|
const rectangle = RectangleClient.getRectangleByPoints([start, movedTarget]);
|
|
6319
6331
|
selectionMovingG?.remove();
|
|
6320
|
-
|
|
6321
|
-
|
|
6322
|
-
|
|
6323
|
-
|
|
6324
|
-
|
|
6325
|
-
|
|
6326
|
-
|
|
6327
|
-
|
|
6328
|
-
|
|
6329
|
-
|
|
6330
|
-
|
|
6331
|
-
|
|
6332
|
-
|
|
6333
|
-
|
|
6334
|
-
PlaitBoard.getElementActiveHost(board).append(selectionMovingG);
|
|
6335
|
-
}
|
|
6332
|
+
end = movedTarget;
|
|
6333
|
+
throttleRAF(board, 'with-selection', () => {
|
|
6334
|
+
if (start && end) {
|
|
6335
|
+
Transforms.setSelection(board, { anchor: start, focus: end });
|
|
6336
|
+
}
|
|
6337
|
+
});
|
|
6338
|
+
setSelectionMoving(board);
|
|
6339
|
+
selectionMovingG = drawRectangle(board, rectangle, {
|
|
6340
|
+
stroke: SELECTION_BORDER_COLOR,
|
|
6341
|
+
strokeWidth: 1,
|
|
6342
|
+
fill: SELECTION_FILL_COLOR,
|
|
6343
|
+
fillStyle: 'solid'
|
|
6344
|
+
});
|
|
6345
|
+
PlaitBoard.getElementActiveHost(board).append(selectionMovingG);
|
|
6336
6346
|
}
|
|
6337
6347
|
pointerMove(event);
|
|
6338
6348
|
};
|
|
@@ -6368,6 +6378,11 @@ function withSelection(board) {
|
|
|
6368
6378
|
}
|
|
6369
6379
|
start = null;
|
|
6370
6380
|
end = null;
|
|
6381
|
+
if (timerId) {
|
|
6382
|
+
clearTimeout(timerId);
|
|
6383
|
+
timerId = null;
|
|
6384
|
+
}
|
|
6385
|
+
pointerDownEvent = null;
|
|
6371
6386
|
globalPointerUp(event);
|
|
6372
6387
|
};
|
|
6373
6388
|
board.onChange = () => {
|