@plait/mind 0.2.0-next.3 → 0.2.0-next.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/draw/indented-link.d.ts +2 -2
  2. package/draw/link/logic-link.d.ts +2 -2
  3. package/draw/link.d.ts +2 -2
  4. package/esm2020/draw/indented-link.mjs +7 -6
  5. package/esm2020/draw/link/logic-link.mjs +7 -6
  6. package/esm2020/draw/link.mjs +8 -7
  7. package/esm2020/draw/shape.mjs +3 -3
  8. package/esm2020/drawer/quick-insert.drawer.mjs +9 -8
  9. package/esm2020/interfaces/element.mjs +13 -2
  10. package/esm2020/node.component.mjs +6 -6
  11. package/esm2020/plugins/emoji/emoji-base.component.mjs +4 -2
  12. package/esm2020/plugins/emoji/emoji.drawer.mjs +2 -1
  13. package/esm2020/plugins/with-abstract.mjs +2 -2
  14. package/esm2020/plugins/with-dnd.mjs +2 -2
  15. package/esm2020/plugins/with-mind.mjs +3 -2
  16. package/esm2020/transforms/layout.mjs +8 -2
  17. package/esm2020/utils/abstract/common.mjs +49 -15
  18. package/esm2020/utils/abstract/resize.mjs +2 -2
  19. package/esm2020/utils/clipboard.mjs +10 -3
  20. package/esm2020/utils/draw-placeholder.mjs +20 -20
  21. package/esm2020/utils/index.mjs +2 -2
  22. package/esm2020/utils/mind.mjs +30 -21
  23. package/esm2020/utils/node-style/branch.mjs +28 -0
  24. package/esm2020/utils/node-style/index.mjs +3 -0
  25. package/esm2020/utils/node-style/node.mjs +22 -0
  26. package/esm2020/utils/path.mjs +3 -3
  27. package/fesm2015/plait-mind.mjs +1449 -1377
  28. package/fesm2015/plait-mind.mjs.map +1 -1
  29. package/fesm2020/plait-mind.mjs +1451 -1379
  30. package/fesm2020/plait-mind.mjs.map +1 -1
  31. package/interfaces/element.d.ts +3 -2
  32. package/package.json +1 -1
  33. package/plugins/emoji/emoji-base.component.d.ts +3 -1
  34. package/utils/abstract/common.d.ts +6 -1
  35. package/utils/abstract/resize.d.ts +1 -1
  36. package/utils/draw-placeholder.d.ts +8 -8
  37. package/utils/index.d.ts +1 -1
  38. package/utils/mind.d.ts +2 -1
  39. package/utils/node-style/branch.d.ts +7 -0
  40. package/utils/node-style/index.d.ts +2 -0
  41. package/utils/node-style/node.d.ts +3 -0
  42. package/esm2020/utils/colors.mjs +0 -41
  43. package/utils/colors.d.ts +0 -4
@@ -117,7 +117,7 @@ export const getHitAbstractHandle = (board, element, point) => {
117
117
  return AbstractHandlePosition.start;
118
118
  if (RectangleClient.isHit(pointRec, endHandleRec))
119
119
  return AbstractHandlePosition.end;
120
- return null;
120
+ return undefined;
121
121
  };
122
122
  export const getAbstractHandleRectangle = (rectangle, isHorizontal, position) => {
123
123
  let result;
@@ -189,4 +189,4 @@ export function handleTouchedAbstract(board, touchedAbstract, endPoint) {
189
189
  }
190
190
  return touchedAbstract;
191
191
  }
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvYWJzdHJhY3QvcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxZQUFZLEVBQVMsZUFBZSxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUE4QixrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEQsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FDMUMsaUJBQWtDLEVBQ2xDLFFBQWdCLEVBQ2hCLG9CQUE0QyxFQUM1QyxZQUFxQixFQUN2QixFQUFFO0lBQ0EsSUFBSSxZQUFZLEVBQUU7UUFDZCxJQUFJLG9CQUFvQixLQUFLLHNCQUFzQixDQUFDLEtBQUssRUFBRTtZQUN2RCxPQUFPO2dCQUNILEdBQUcsaUJBQWlCO2dCQUNwQixDQUFDLEVBQUUsUUFBUTtnQkFDWCxNQUFNLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxHQUFHLGlCQUFpQixDQUFDLENBQUMsR0FBRyxRQUFRO2FBQ3BFLENBQUM7U0FDTDthQUFNO1lBQ0gsT0FBTztnQkFDSCxHQUFHLGlCQUFpQjtnQkFDcEIsTUFBTSxFQUFFLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDO2FBQ3pDLENBQUM7U0FDTDtLQUNKO1NBQU07UUFDSCxJQUFJLG9CQUFvQixLQUFLLHNCQUFzQixDQUFDLEtB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QUFpQixFQUFFLGVBQXlDLEVBQUUsUUFBZTtJQUMvRyxJQUFJLGFBQWEsQ0FBQztJQUNsQixNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7U0FDdEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDWixhQUFhLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxFQUFFLE9BQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUUsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7SUFFUCxJQUFJLGVBQWUsS0FBSyxRQUFRLEVBQUU7UUFDOUIsT0FBTyxlQUFlLENBQUM7S0FDMUI7SUFFRCxJQUFJLGVBQWUsRUFBRTtRQUNqQixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLGVBQWdCLENBQXNCLENBQUM7UUFDbkYsU0FBUyxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDMUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztLQUMvQjtJQUVELElBQUksUUFBUSxFQUFFO1FBQ1YsZUFBZSxHQUFHLFFBQVEsQ0FBQztRQUMzQixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLGVBQWdCLENBQXNCLENBQUM7UUFDbkYsU0FBUyxDQUFDLDZCQUE2QixDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQzFEO0lBRUQsT0FBTyxlQUFlLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCwgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cywgZ2V0U2VsZWN0ZWRFbGVtZW50cyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0SGFuZGxlUG9zaXRpb24sIE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUsIExheW91dE5vZGUsIE1pbmRMYXlvdXRUeXBlLCBpc0hvcml6b250YWxMYXlvdXQgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBBQlNUUkFDVF9IQU5ETEVfTUFTS19XSURUSCwgQUJTVFJBQ1RfSU5DTFVERURfT1VUTElORV9PRkZTRVQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IGdldENvcnJlY3RTdGFydEVuZCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IE1pbmROb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbm9kZS5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVjdGFuZ2xlQnlSZXNpemluZ0xvY2F0aW9uID0gKFxuICAgIGFic3RyYWN0UmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsXG4gICAgbG9jYXRpb246IG51bWJlcixcbiAgICBhY3RpdmVIYW5kbGVQb3NpdGlvbjogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbixcbiAgICBpc0hvcml6b250YWw6IGJvb2xlYW5cbikgPT4ge1xuICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgaWYgKGFjdGl2ZUhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmFic3RyYWN0UmVjdGFuZ2xlLFxuICAgICAgICAgICAgICAgIHk6IGxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIGhlaWdodDogYWJzdHJhY3RSZWN0YW5nbGUuaGVpZ2h0ICsgYWJzdHJhY3RSZWN0YW5nbGUueSAtIGxvY2F0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5hYnN0cmFjdFJlY3RhbmdsZSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGxvY2F0aW9uIC0gYWJzdHJhY3RSZWN0YW5nbGUueVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhY3RpdmVIYW5kbGVQb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5zdGFydCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5hYnN0cmFjdFJlY3RhbmdsZSxcbiAgICAgICAgICAgICAgICB4OiBsb2NhdGlvbixcbiAgICAgICAgICAgICAgICB3aWR0aDogYWJzdHJhY3RSZWN0YW5nbGUud2lkdGggKyBhYnN0cmFjdFJlY3RhbmdsZS54IC0gbG9jYXRpb25cbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmFic3RyYWN0UmVjdGFuZ2xlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBsb2NhdGlvbiAtIGFic3RyYWN0UmVjdGFuZ2xlLnhcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TG9jYXRpb25TY29wZSA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBoYW5kbGVQb3NpdGlvbjogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbixcbiAgICBwYXJlbnRDaGlsZHJlbjogTWluZEVsZW1lbnRbXSxcbiAgICBlbGVtZW50OiBNaW5kRWxlbWVudCxcbiAgICBwYXJlbnQ6IExheW91dE5vZGUsXG4gICAgaXNIb3Jpem9udGFsOiBib29sZWFuXG4pID0+IHtcbiAgICBjb25zdCBub2RlID0gKE1pbmRFbGVtZW50LmdldE5vZGUoZWxlbWVudCkgYXMgdW5rbm93bikgYXMgTGF5b3V0Tm9kZTtcbiAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IGdldENvcnJlY3RTdGFydEVuZChub2RlLm9yaWdpbiBhcyBBYnN0cmFjdE5vZGUsIHBhcmVudCk7XG5cbiAgICBjb25zdCBzdGFydE5vZGUgPSBwYXJlbnRDaGlsZHJlbltzdGFydF07XG4gICAgY29uc3QgZW5kTm9kZSA9IHBhcmVudENoaWxkcmVuW2VuZF07XG5cbiAgICBpZiAoaGFuZGxlUG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQpIHtcbiAgICAgICAgY29uc3QgYWJzdHJhY3ROb2RlID0gcGFyZW50Q2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSAmJiBjaGlsZC5lbmQgPCBlbGVtZW50LnN0YXJ0ISk7XG4gICAgICAgIGxldCBtaW5Ob2RlO1xuXG4gICAgICAgIGlmIChhYnN0cmFjdE5vZGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IGFic3RyYWN0Tm9kZVxuICAgICAgICAgICAgICAgIC5tYXAobm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZW5kIH0gPSBnZXRDb3JyZWN0U3RhcnRFbmQobm9kZSBhcyBBYnN0cmFjdE5vZGUsIHBhcmVudCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbmQ7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYiAtIGEpWzBdO1xuICAgICAgICAgICAgbWluTm9kZSA9IHBhcmVudENoaWxkcmVuW2luZGV4ICsgMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtaW5Ob2RlID0gcGFyZW50Q2hpbGRyZW5bMF07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtaW5Ob2RlUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgW21pbk5vZGVdLCB0cnVlKTtcbiAgICAgICAgY29uc3QgZW5kTm9kZVJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIFtlbmROb2RlXSwgZmFsc2UpO1xuXG4gICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbWF4OiBlbmROb2RlUmVjdGFuZ2xlLnkgLSBBQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVCxcbiAgICAgICAgICAgICAgICBtaW46IG1pbk5vZGVSZWN0YW5nbGUueSAtIEFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VUXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBtYXg6IGVuZE5vZGVSZWN0YW5nbGUueCAtIEFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VULFxuICAgICAgICAgICAgICAgIG1pbjogbWluTm9kZVJlY3RhbmdsZS54IC0gQUJTVFJBQ1RfSU5DTFVERURfT1VUTElORV9PRkZTRVRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhYnN0cmFjdE5vZGUgPSBwYXJlbnRDaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4gQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpICYmIGNoaWxkLnN0YXJ0ID4gZWxlbWVudC5lbmQhKTtcbiAgICAgICAgbGV0IG1heE5vZGU7XG5cbiAgICAgICAgaWYgKGFic3RyYWN0Tm9kZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gYWJzdHJhY3ROb2RlXG4gICAgICAgICAgICAgICAgLm1hcChub2RlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBzdGFydCB9ID0gZ2V0Q29ycmVjdFN0YXJ0RW5kKG5vZGUgYXMgQWJzdHJhY3ROb2RlLCBwYXJlbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnQ7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYSAtIGIpWzBdO1xuICAgICAgICAgICAgbWF4Tm9kZSA9IHBhcmVudENoaWxkcmVuW2luZGV4IC0gMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudENoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpKTtcbiAgICAgICAgICAgIG1heE5vZGUgPSBwYXJlbnRDaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1heE5vZGVSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBbbWF4Tm9kZV0sIHRydWUpO1xuICAgICAgICBjb25zdCBzdGFydE5vZGVSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBbc3RhcnROb2RlXSwgZmFsc2UpO1xuXG4gICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbWF4OiBtYXhOb2RlUmVjdGFuZ2xlLnkgKyBtYXhOb2RlUmVjdGFuZ2xlLmhlaWdodCArIEFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VULFxuICAgICAgICAgICAgICAgIG1pbjogc3RhcnROb2RlUmVjdGFuZ2xlLnkgKyBzdGFydE5vZGVSZWN0YW5nbGUuaGVpZ2h0ICsgQUJTVFJBQ1RfSU5DTFVERURfT1VUTElORV9PRkZTRVRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG1heDogbWF4Tm9kZVJlY3RhbmdsZS54ICsgbWF4Tm9kZVJlY3RhbmdsZS53aWR0aCArIEFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VULFxuICAgICAgICAgICAgICAgIG1pbjogc3RhcnROb2RlUmVjdGFuZ2xlLnggKyBzdGFydE5vZGVSZWN0YW5nbGUud2lkdGggKyBBQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRBYnN0cmFjdEhhbmRsZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IG5vZGVMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGVsZW1lbnQpIGFzIE1pbmRMYXlvdXRUeXBlO1xuICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IGlzSG9yaXpvbnRhbExheW91dChub2RlTGF5b3V0KTtcblxuICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBNaW5kRWxlbWVudC5nZXRQYXJlbnQoZWxlbWVudCk7XG4gICAgY29uc3QgaW5jbHVkZWRFbGVtZW50cyA9IHBhcmVudEVsZW1lbnQuY2hpbGRyZW4uc2xpY2UoZWxlbWVudC5zdGFydCEsIGVsZW1lbnQuZW5kISArIDEpO1xuICAgIGxldCBhYnN0cmFjdFJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGluY2x1ZGVkRWxlbWVudHMsIHRydWUpO1xuICAgIGFic3RyYWN0UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldE91dGxpbmVSZWN0YW5nbGUoYWJzdHJhY3RSZWN0YW5nbGUsIC1BQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVCk7XG5cbiAgICBjb25zdCBzdGFydEhhbmRsZVJlYyA9IGdldEFic3RyYWN0SGFuZGxlUmVjdGFuZ2xlKGFic3RyYWN0UmVjdGFuZ2xlLCBpc0hvcml6b250YWwsIEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQpO1xuICAgIGNvbnN0IGVuZEhhbmRsZVJlYyA9IGdldEFic3RyYWN0SGFuZGxlUmVjdGFuZ2xlKGFic3RyYWN0UmVjdGFuZ2xlLCBpc0hvcml6b250YWwsIEFic3RyYWN0SGFuZGxlUG9zaXRpb24uZW5kKTtcblxuICAgIGNvbnN0IHBvaW50UmVjID0gUmVjdGFuZ2xlQ2xpZW50LnRvUmVjdGFuZ2xlQ2xpZW50KFtwb2ludCwgcG9pbnRdKTtcbiAgICBpZiAoUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHBvaW50UmVjLCBzdGFydEhhbmRsZVJlYykpIHJldHVybiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0O1xuICAgIGlmIChSZWN0YW5nbGVDbGllbnQuaXNIaXQocG9pbnRSZWMsIGVuZEhhbmRsZVJlYykpIHJldHVybiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLmVuZDtcbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBYnN0cmFjdEhhbmRsZVJlY3RhbmdsZSA9IChyZWN0YW5nbGU6IFJlY3RhbmdsZUNsaWVudCwgaXNIb3Jpem9udGFsOiBib29sZWFuLCBwb3NpdGlvbjogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbikgPT4ge1xuICAgIGxldCByZXN1bHQ7XG4gICAgaWYgKHBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0KSB7XG4gICAgICAgIGNvbnN0IGxvY2F0aW9uID0gaXNIb3Jpem9udGFsID8gcmVjdGFuZ2xlLnkgOiByZWN0YW5nbGUueDtcblxuICAgICAgICByZXN1bHQgPSBnZXRSZWN0YW5nbGVCeVJlc2l6aW5nTG9jYXRpb24oXG4gICAgICAgICAgICByZWN0YW5nbGUsXG4gICAgICAgICAgICBsb2NhdGlvbiArIEFCU1RSQUNUX0hBTkRMRV9NQVNLX1dJRFRIIC8gMixcbiAgICAgICAgICAgIEFic3RyYWN0SGFuZGxlUG9zaXRpb24uZW5kLFxuICAgICAgICAgICAgaXNIb3Jpem9udGFsXG4gICAgICAgICk7XG4gICAgICAgIHJlc3VsdCA9IGdldFJlY3RhbmdsZUJ5UmVzaXppbmdMb2NhdGlvbihyZXN1bHQsIGxvY2F0aW9uIC0gQUJTVFJBQ1RfSEFORExFX01BU0tfV0lEVEggLyAyLCBwb3NpdGlvbiwgaXNIb3Jpem9udGFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IGlzSG9yaXpvbnRhbCA/IHJlY3RhbmdsZS55ICsgcmVjdGFuZ2xlLmhlaWdodCA6IHJlY3RhbmdsZS54ICsgcmVjdGFuZ2xlLndpZHRoO1xuXG4gICAgICAgIHJlc3VsdCA9IGdldFJlY3RhbmdsZUJ5UmVzaXppbmdMb2NhdGlvbihcbiAgICAgICAgICAgIHJlY3RhbmdsZSxcbiAgICAgICAgICAgIGxvY2F0aW9uIC0gQUJTVFJBQ1RfSEFORExFX01BU0tfV0lEVEggLyAyLFxuICAgICAgICAgICAgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5zdGFydCxcbiAgICAgICAgICAgIGlzSG9yaXpvbnRhbFxuICAgICAgICApO1xuICAgICAgICByZXN1bHQgPSBnZXRSZWN0YW5nbGVCeVJlc2l6aW5nTG9jYXRpb24ocmVzdWx0LCBsb2NhdGlvbiArIEFCU1RSQUNUX0hBTkRMRV9NQVNLX1dJRFRIIC8gMiwgcG9zaXRpb24sIGlzSG9yaXpvbnRhbCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZmluZExvY2F0aW9uTGVmdEluZGV4KGJvYXJkOiBQbGFpdEJvYXJkLCBwYXJlbnRDaGlsZHJlbjogTWluZEVsZW1lbnRbXSwgbG9jYXRpb246IG51bWJlciwgaXNIb3Jpem9udGFsOiBib29sZWFuKSB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBwYXJlbnRDaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4ge1xuICAgICAgICByZXR1cm4gIUFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKTtcbiAgICB9KTtcbiAgICBjb25zdCByZWNBcnJheSA9IGNoaWxkcmVuLm1hcChjaGlsZCA9PiB7XG4gICAgICAgIHJldHVybiBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBbY2hpbGRdLCBmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBmaXJzdFJlYyA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIFtjaGlsZHJlblswXV0sIHRydWUpO1xuICAgIGNvbnN0IGZha2VMZWZ0UmVjID0ge1xuICAgICAgICB4OiBmaXJzdFJlYy54IC0gZmlyc3RSZWMud2lkdGgsXG4gICAgICAgIHk6IGZpcnN0UmVjLnkgLSBmaXJzdFJlYy5oZWlnaHQsXG4gICAgICAgIHdpZHRoOiBmaXJzdFJlYy53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBmaXJzdFJlYy5oZWlnaHRcbiAgICB9O1xuICAgIGNvbnN0IGxhc3RSZWMgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBbY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV1dLCB0cnVlKTtcbiAgICBjb25zdCBmYWtlUmlnaHRSZWMgPSB7XG4gICAgICAgIHg6IGxhc3RSZWMueCArIGxhc3RSZWMud2lkdGgsXG4gICAgICAgIHk6IGxhc3RSZWMueSArIGxhc3RSZWMuaGVpZ2h0LFxuICAgICAgICB3aWR0aDogbGFzdFJlYy53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBsYXN0UmVjLmhlaWdodFxuICAgIH07XG5cbiAgICByZWNBcnJheS5wdXNoKGZha2VSaWdodFJlYyk7XG4gICAgcmVjQXJyYXkudW5zaGlmdChmYWtlTGVmdFJlYyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlY0FycmF5Lmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICBjb25zdCByZWNYT3JZID0gaXNIb3Jpem9udGFsID8gcmVjQXJyYXlbaV0ueSA6IHJlY0FycmF5W2ldLng7XG4gICAgICAgIGNvbnN0IHJlY1dpZHRoT3JIZWlnaHQgPSBpc0hvcml6b250YWwgPyByZWNBcnJheVtpXS5oZWlnaHQgOiByZWNBcnJheVtpXS53aWR0aDtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBsb2NhdGlvbiA+PSByZWNYT3JZICsgcmVjV2lkdGhPckhlaWdodCAvIDIgJiZcbiAgICAgICAgICAgIGxvY2F0aW9uIDw9IHJlY0FycmF5W2kgKyAxXVtpc0hvcml6b250YWwgPyAneScgOiAneCddICsgcmVjQXJyYXlbaSArIDFdW2lzSG9yaXpvbnRhbCA/ICdoZWlnaHQnIDogJ3dpZHRoJ10gLyAyXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIGkgLSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlVG91Y2hlZEFic3RyYWN0KGJvYXJkOiBQbGFpdEJvYXJkLCB0b3VjaGVkQWJzdHJhY3Q6IFBsYWl0RWxlbWVudCB8IHVuZGVmaW5lZCwgZW5kUG9pbnQ6IFBvaW50KSB7XG4gICAgbGV0IHRvdWNoZWRIYW5kbGU7XG4gICAgY29uc3QgYWJzdHJhY3QgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKVxuICAgICAgICAuZmlsdGVyKGVsZW1lbnQgPT4gQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoZWxlbWVudCkpXG4gICAgICAgIC5maW5kKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgdG91Y2hlZEhhbmRsZSA9IGdldEhpdEFic3RyYWN0SGFuZGxlKGJvYXJkLCBlbGVtZW50IGFzIE1pbmRFbGVtZW50LCBlbmRQb2ludCk7XG4gICAgICAgICAgICByZXR1cm4gdG91Y2hlZEhhbmRsZTtcbiAgICAgICAgfSk7XG5cbiAgICBpZiAodG91Y2hlZEFic3RyYWN0ID09PSBhYnN0cmFjdCkge1xuICAgICAgICByZXR1cm4gdG91Y2hlZEFic3RyYWN0O1xuICAgIH1cblxuICAgIGlmICh0b3VjaGVkQWJzdHJhY3QpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudCh0b3VjaGVkQWJzdHJhY3QhKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgY29tcG9uZW50LnVwZGF0ZUFic3RyYWN0SW5jbHVkZWRPdXRsaW5lKCk7XG4gICAgICAgIHRvdWNoZWRBYnN0cmFjdCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoYWJzdHJhY3QpIHtcbiAgICAgICAgdG91Y2hlZEFic3RyYWN0ID0gYWJzdHJhY3Q7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQodG91Y2hlZEFic3RyYWN0ISkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgIGNvbXBvbmVudC51cGRhdGVBYnN0cmFjdEluY2x1ZGVkT3V0bGluZSh0b3VjaGVkSGFuZGxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG91Y2hlZEFic3RyYWN0O1xufVxuIl19
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvYWJzdHJhY3QvcmVzaXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxZQUFZLEVBQVMsZUFBZSxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUE4QixrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEQsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FDMUMsaUJBQWtDLEVBQ2xDLFFBQWdCLEVBQ2hCLG9CQUE0QyxFQUM1QyxZQUFxQixFQUN2QixFQUFFO0lBQ0EsSUFBSSxZQUFZLEVBQUU7UUFDZCxJQUFJLG9CQUFvQixLQUFLLHNCQUFzQixDQUFDLEtBQUssRUFBRTtZQUN2RCxPQUFPO2dCQUNILEdBQUcsaUJBQWlCO2dCQUNwQixDQUFDLEVBQUUsUUFBUTtnQkFDWCxNQUFNLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxHQUFHLGlCQUFpQixDQUFDLENBQUMsR0FBRyxRQUFRO2FBQ3BFLENBQUM7U0FDTDthQUFNO1lBQ0gsT0FBTztnQkFDSCxHQUFHLGlCQUFpQjtnQkFDcEIsTUFBTSxFQUFFLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDO2FBQ3pDLENBQUM7U0FDTDtLQUNKO1NBQU07UUFDSCxJQUFJLG9CQUFvQixLQUFLLHNCQUFzQixDQUFDLEtB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QUFpQixFQUFFLGVBQXlDLEVBQUUsUUFBZTtJQUMvRyxJQUFJLGFBQWEsQ0FBQztJQUNsQixNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7U0FDdEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDWixhQUFhLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxFQUFFLE9BQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUUsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7SUFFUCxJQUFJLGVBQWUsS0FBSyxRQUFRLEVBQUU7UUFDOUIsT0FBTyxlQUFlLENBQUM7S0FDMUI7SUFFRCxJQUFJLGVBQWUsRUFBRTtRQUNqQixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLGVBQWdCLENBQXNCLENBQUM7UUFDbkYsU0FBUyxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDMUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztLQUMvQjtJQUVELElBQUksUUFBUSxFQUFFO1FBQ1YsZUFBZSxHQUFHLFFBQVEsQ0FBQztRQUMzQixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLGVBQWdCLENBQXNCLENBQUM7UUFDbkYsU0FBUyxDQUFDLDZCQUE2QixDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQzFEO0lBRUQsT0FBTyxlQUFlLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUG9pbnQsIFJlY3RhbmdsZUNsaWVudCwgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cywgZ2V0U2VsZWN0ZWRFbGVtZW50cyB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0SGFuZGxlUG9zaXRpb24sIE1pbmRFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUsIExheW91dE5vZGUsIE1pbmRMYXlvdXRUeXBlLCBpc0hvcml6b250YWxMYXlvdXQgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBBQlNUUkFDVF9IQU5ETEVfTUFTS19XSURUSCwgQUJTVFJBQ1RfSU5DTFVERURfT1VUTElORV9PRkZTRVQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IGdldENvcnJlY3RTdGFydEVuZCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IE1pbmROb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbm9kZS5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVjdGFuZ2xlQnlSZXNpemluZ0xvY2F0aW9uID0gKFxuICAgIGFic3RyYWN0UmVjdGFuZ2xlOiBSZWN0YW5nbGVDbGllbnQsXG4gICAgbG9jYXRpb246IG51bWJlcixcbiAgICBhY3RpdmVIYW5kbGVQb3NpdGlvbjogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbixcbiAgICBpc0hvcml6b250YWw6IGJvb2xlYW5cbikgPT4ge1xuICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgaWYgKGFjdGl2ZUhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmFic3RyYWN0UmVjdGFuZ2xlLFxuICAgICAgICAgICAgICAgIHk6IGxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIGhlaWdodDogYWJzdHJhY3RSZWN0YW5nbGUuaGVpZ2h0ICsgYWJzdHJhY3RSZWN0YW5nbGUueSAtIGxvY2F0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5hYnN0cmFjdFJlY3RhbmdsZSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGxvY2F0aW9uIC0gYWJzdHJhY3RSZWN0YW5nbGUueVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhY3RpdmVIYW5kbGVQb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5zdGFydCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5hYnN0cmFjdFJlY3RhbmdsZSxcbiAgICAgICAgICAgICAgICB4OiBsb2NhdGlvbixcbiAgICAgICAgICAgICAgICB3aWR0aDogYWJzdHJhY3RSZWN0YW5nbGUud2lkdGggKyBhYnN0cmFjdFJlY3RhbmdsZS54IC0gbG9jYXRpb25cbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmFic3RyYWN0UmVjdGFuZ2xlLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBsb2NhdGlvbiAtIGFic3RyYWN0UmVjdGFuZ2xlLnhcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TG9jYXRpb25TY29wZSA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBoYW5kbGVQb3NpdGlvbjogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbixcbiAgICBwYXJlbnRDaGlsZHJlbjogTWluZEVsZW1lbnRbXSxcbiAgICBlbGVtZW50OiBNaW5kRWxlbWVudCxcbiAgICBwYXJlbnQ6IExheW91dE5vZGUsXG4gICAgaXNIb3Jpem9udGFsOiBib29sZWFuXG4pID0+IHtcbiAgICBjb25zdCBub2RlID0gKE1pbmRFbGVtZW50LmdldE5vZGUoZWxlbWVudCkgYXMgdW5rbm93bikgYXMgTGF5b3V0Tm9kZTtcbiAgICBjb25zdCB7IHN0YXJ0LCBlbmQgfSA9IGdldENvcnJlY3RTdGFydEVuZChub2RlLm9yaWdpbiBhcyBBYnN0cmFjdE5vZGUsIHBhcmVudCk7XG5cbiAgICBjb25zdCBzdGFydE5vZGUgPSBwYXJlbnRDaGlsZHJlbltzdGFydF07XG4gICAgY29uc3QgZW5kTm9kZSA9IHBhcmVudENoaWxkcmVuW2VuZF07XG5cbiAgICBpZiAoaGFuZGxlUG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQpIHtcbiAgICAgICAgY29uc3QgYWJzdHJhY3ROb2RlID0gcGFyZW50Q2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGNoaWxkKSAmJiBjaGlsZC5lbmQgPCBlbGVtZW50LnN0YXJ0ISk7XG4gICAgICAgIGxldCBtaW5Ob2RlO1xuXG4gICAgICAgIGlmIChhYnN0cmFjdE5vZGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IGFic3RyYWN0Tm9kZVxuICAgICAgICAgICAgICAgIC5tYXAobm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZW5kIH0gPSBnZXRDb3JyZWN0U3RhcnRFbmQobm9kZSBhcyBBYnN0cmFjdE5vZGUsIHBhcmVudCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbmQ7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYiAtIGEpWzBdO1xuICAgICAgICAgICAgbWluTm9kZSA9IHBhcmVudENoaWxkcmVuW2luZGV4ICsgMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtaW5Ob2RlID0gcGFyZW50Q2hpbGRyZW5bMF07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtaW5Ob2RlUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgW21pbk5vZGVdLCB0cnVlKTtcbiAgICAgICAgY29uc3QgZW5kTm9kZVJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIFtlbmROb2RlXSwgZmFsc2UpO1xuXG4gICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbWF4OiBlbmROb2RlUmVjdGFuZ2xlLnkgLSBBQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVCxcbiAgICAgICAgICAgICAgICBtaW46IG1pbk5vZGVSZWN0YW5nbGUueSAtIEFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VUXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBtYXg6IGVuZE5vZGVSZWN0YW5nbGUueCAtIEFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VULFxuICAgICAgICAgICAgICAgIG1pbjogbWluTm9kZVJlY3RhbmdsZS54IC0gQUJTVFJBQ1RfSU5DTFVERURfT1VUTElORV9PRkZTRVRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhYnN0cmFjdE5vZGUgPSBwYXJlbnRDaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4gQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpICYmIGNoaWxkLnN0YXJ0ID4gZWxlbWVudC5lbmQhKTtcbiAgICAgICAgbGV0IG1heE5vZGU7XG5cbiAgICAgICAgaWYgKGFic3RyYWN0Tm9kZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gYWJzdHJhY3ROb2RlXG4gICAgICAgICAgICAgICAgLm1hcChub2RlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBzdGFydCB9ID0gZ2V0Q29ycmVjdFN0YXJ0RW5kKG5vZGUgYXMgQWJzdHJhY3ROb2RlLCBwYXJlbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnQ7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYSAtIGIpWzBdO1xuICAgICAgICAgICAgbWF4Tm9kZSA9IHBhcmVudENoaWxkcmVuW2luZGV4IC0gMV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudENoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpKTtcbiAgICAgICAgICAgIG1heE5vZGUgPSBwYXJlbnRDaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1heE5vZGVSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBbbWF4Tm9kZV0sIHRydWUpO1xuICAgICAgICBjb25zdCBzdGFydE5vZGVSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBbc3RhcnROb2RlXSwgZmFsc2UpO1xuXG4gICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbWF4OiBtYXhOb2RlUmVjdGFuZ2xlLnkgKyBtYXhOb2RlUmVjdGFuZ2xlLmhlaWdodCArIEFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VULFxuICAgICAgICAgICAgICAgIG1pbjogc3RhcnROb2RlUmVjdGFuZ2xlLnkgKyBzdGFydE5vZGVSZWN0YW5nbGUuaGVpZ2h0ICsgQUJTVFJBQ1RfSU5DTFVERURfT1VUTElORV9PRkZTRVRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG1heDogbWF4Tm9kZVJlY3RhbmdsZS54ICsgbWF4Tm9kZVJlY3RhbmdsZS53aWR0aCArIEFCU1RSQUNUX0lOQ0xVREVEX09VVExJTkVfT0ZGU0VULFxuICAgICAgICAgICAgICAgIG1pbjogc3RhcnROb2RlUmVjdGFuZ2xlLnggKyBzdGFydE5vZGVSZWN0YW5nbGUud2lkdGggKyBBQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIaXRBYnN0cmFjdEhhbmRsZSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudDogTWluZEVsZW1lbnQsIHBvaW50OiBQb2ludCkgPT4ge1xuICAgIGNvbnN0IG5vZGVMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGVsZW1lbnQpIGFzIE1pbmRMYXlvdXRUeXBlO1xuICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IGlzSG9yaXpvbnRhbExheW91dChub2RlTGF5b3V0KTtcblxuICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBNaW5kRWxlbWVudC5nZXRQYXJlbnQoZWxlbWVudCk7XG4gICAgY29uc3QgaW5jbHVkZWRFbGVtZW50cyA9IHBhcmVudEVsZW1lbnQuY2hpbGRyZW4uc2xpY2UoZWxlbWVudC5zdGFydCEsIGVsZW1lbnQuZW5kISArIDEpO1xuICAgIGxldCBhYnN0cmFjdFJlY3RhbmdsZSA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIGluY2x1ZGVkRWxlbWVudHMsIHRydWUpO1xuICAgIGFic3RyYWN0UmVjdGFuZ2xlID0gUmVjdGFuZ2xlQ2xpZW50LmdldE91dGxpbmVSZWN0YW5nbGUoYWJzdHJhY3RSZWN0YW5nbGUsIC1BQlNUUkFDVF9JTkNMVURFRF9PVVRMSU5FX09GRlNFVCk7XG5cbiAgICBjb25zdCBzdGFydEhhbmRsZVJlYyA9IGdldEFic3RyYWN0SGFuZGxlUmVjdGFuZ2xlKGFic3RyYWN0UmVjdGFuZ2xlLCBpc0hvcml6b250YWwsIEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQpO1xuICAgIGNvbnN0IGVuZEhhbmRsZVJlYyA9IGdldEFic3RyYWN0SGFuZGxlUmVjdGFuZ2xlKGFic3RyYWN0UmVjdGFuZ2xlLCBpc0hvcml6b250YWwsIEFic3RyYWN0SGFuZGxlUG9zaXRpb24uZW5kKTtcblxuICAgIGNvbnN0IHBvaW50UmVjID0gUmVjdGFuZ2xlQ2xpZW50LnRvUmVjdGFuZ2xlQ2xpZW50KFtwb2ludCwgcG9pbnRdKTtcbiAgICBpZiAoUmVjdGFuZ2xlQ2xpZW50LmlzSGl0KHBvaW50UmVjLCBzdGFydEhhbmRsZVJlYykpIHJldHVybiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0O1xuICAgIGlmIChSZWN0YW5nbGVDbGllbnQuaXNIaXQocG9pbnRSZWMsIGVuZEhhbmRsZVJlYykpIHJldHVybiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLmVuZDtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFic3RyYWN0SGFuZGxlUmVjdGFuZ2xlID0gKHJlY3RhbmdsZTogUmVjdGFuZ2xlQ2xpZW50LCBpc0hvcml6b250YWw6IGJvb2xlYW4sIHBvc2l0aW9uOiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uKSA9PiB7XG4gICAgbGV0IHJlc3VsdDtcbiAgICBpZiAocG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQpIHtcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSBpc0hvcml6b250YWwgPyByZWN0YW5nbGUueSA6IHJlY3RhbmdsZS54O1xuXG4gICAgICAgIHJlc3VsdCA9IGdldFJlY3RhbmdsZUJ5UmVzaXppbmdMb2NhdGlvbihcbiAgICAgICAgICAgIHJlY3RhbmdsZSxcbiAgICAgICAgICAgIGxvY2F0aW9uICsgQUJTVFJBQ1RfSEFORExFX01BU0tfV0lEVEggLyAyLFxuICAgICAgICAgICAgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5lbmQsXG4gICAgICAgICAgICBpc0hvcml6b250YWxcbiAgICAgICAgKTtcbiAgICAgICAgcmVzdWx0ID0gZ2V0UmVjdGFuZ2xlQnlSZXNpemluZ0xvY2F0aW9uKHJlc3VsdCwgbG9jYXRpb24gLSBBQlNUUkFDVF9IQU5ETEVfTUFTS19XSURUSCAvIDIsIHBvc2l0aW9uLCBpc0hvcml6b250YWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGxvY2F0aW9uID0gaXNIb3Jpem9udGFsID8gcmVjdGFuZ2xlLnkgKyByZWN0YW5nbGUuaGVpZ2h0IDogcmVjdGFuZ2xlLnggKyByZWN0YW5nbGUud2lkdGg7XG5cbiAgICAgICAgcmVzdWx0ID0gZ2V0UmVjdGFuZ2xlQnlSZXNpemluZ0xvY2F0aW9uKFxuICAgICAgICAgICAgcmVjdGFuZ2xlLFxuICAgICAgICAgICAgbG9jYXRpb24gLSBBQlNUUkFDVF9IQU5ETEVfTUFTS19XSURUSCAvIDIsXG4gICAgICAgICAgICBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0LFxuICAgICAgICAgICAgaXNIb3Jpem9udGFsXG4gICAgICAgICk7XG4gICAgICAgIHJlc3VsdCA9IGdldFJlY3RhbmdsZUJ5UmVzaXppbmdMb2NhdGlvbihyZXN1bHQsIGxvY2F0aW9uICsgQUJTVFJBQ1RfSEFORExFX01BU0tfV0lEVEggLyAyLCBwb3NpdGlvbiwgaXNIb3Jpem9udGFsKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTG9jYXRpb25MZWZ0SW5kZXgoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBhcmVudENoaWxkcmVuOiBNaW5kRWxlbWVudFtdLCBsb2NhdGlvbjogbnVtYmVyLCBpc0hvcml6b250YWw6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHBhcmVudENoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiB7XG4gICAgICAgIHJldHVybiAhQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QoY2hpbGQpO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlY0FycmF5ID0gY2hpbGRyZW4ubWFwKGNoaWxkID0+IHtcbiAgICAgICAgcmV0dXJuIGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIFtjaGlsZF0sIGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZpcnN0UmVjID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgW2NoaWxkcmVuWzBdXSwgdHJ1ZSk7XG4gICAgY29uc3QgZmFrZUxlZnRSZWMgPSB7XG4gICAgICAgIHg6IGZpcnN0UmVjLnggLSBmaXJzdFJlYy53aWR0aCxcbiAgICAgICAgeTogZmlyc3RSZWMueSAtIGZpcnN0UmVjLmhlaWdodCxcbiAgICAgICAgd2lkdGg6IGZpcnN0UmVjLndpZHRoLFxuICAgICAgICBoZWlnaHQ6IGZpcnN0UmVjLmhlaWdodFxuICAgIH07XG4gICAgY29uc3QgbGFzdFJlYyA9IGdldFJlY3RhbmdsZUJ5RWxlbWVudHMoYm9hcmQsIFtjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXV0sIHRydWUpO1xuICAgIGNvbnN0IGZha2VSaWdodFJlYyA9IHtcbiAgICAgICAgeDogbGFzdFJlYy54ICsgbGFzdFJlYy53aWR0aCxcbiAgICAgICAgeTogbGFzdFJlYy55ICsgbGFzdFJlYy5oZWlnaHQsXG4gICAgICAgIHdpZHRoOiBsYXN0UmVjLndpZHRoLFxuICAgICAgICBoZWlnaHQ6IGxhc3RSZWMuaGVpZ2h0XG4gICAgfTtcblxuICAgIHJlY0FycmF5LnB1c2goZmFrZVJpZ2h0UmVjKTtcbiAgICByZWNBcnJheS51bnNoaWZ0KGZha2VMZWZ0UmVjKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVjQXJyYXkubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJlY1hPclkgPSBpc0hvcml6b250YWwgPyByZWNBcnJheVtpXS55IDogcmVjQXJyYXlbaV0ueDtcbiAgICAgICAgY29uc3QgcmVjV2lkdGhPckhlaWdodCA9IGlzSG9yaXpvbnRhbCA/IHJlY0FycmF5W2ldLmhlaWdodCA6IHJlY0FycmF5W2ldLndpZHRoO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGxvY2F0aW9uID49IHJlY1hPclkgKyByZWNXaWR0aE9ySGVpZ2h0IC8gMiAmJlxuICAgICAgICAgICAgbG9jYXRpb24gPD0gcmVjQXJyYXlbaSArIDFdW2lzSG9yaXpvbnRhbCA/ICd5JyA6ICd4J10gKyByZWNBcnJheVtpICsgMV1baXNIb3Jpem9udGFsID8gJ2hlaWdodCcgOiAnd2lkdGgnXSAvIDJcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gaSAtIDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVUb3VjaGVkQWJzdHJhY3QoYm9hcmQ6IFBsYWl0Qm9hcmQsIHRvdWNoZWRBYnN0cmFjdDogUGxhaXRFbGVtZW50IHwgdW5kZWZpbmVkLCBlbmRQb2ludDogUG9pbnQpIHtcbiAgICBsZXQgdG91Y2hlZEhhbmRsZTtcbiAgICBjb25zdCBhYnN0cmFjdCA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpXG4gICAgICAgIC5maWx0ZXIoZWxlbWVudCA9PiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChlbGVtZW50KSlcbiAgICAgICAgLmZpbmQoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICB0b3VjaGVkSGFuZGxlID0gZ2V0SGl0QWJzdHJhY3RIYW5kbGUoYm9hcmQsIGVsZW1lbnQgYXMgTWluZEVsZW1lbnQsIGVuZFBvaW50KTtcbiAgICAgICAgICAgIHJldHVybiB0b3VjaGVkSGFuZGxlO1xuICAgICAgICB9KTtcblxuICAgIGlmICh0b3VjaGVkQWJzdHJhY3QgPT09IGFic3RyYWN0KSB7XG4gICAgICAgIHJldHVybiB0b3VjaGVkQWJzdHJhY3Q7XG4gICAgfVxuXG4gICAgaWYgKHRvdWNoZWRBYnN0cmFjdCkge1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KHRvdWNoZWRBYnN0cmFjdCEpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICBjb21wb25lbnQudXBkYXRlQWJzdHJhY3RJbmNsdWRlZE91dGxpbmUoKTtcbiAgICAgICAgdG91Y2hlZEFic3RyYWN0ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChhYnN0cmFjdCkge1xuICAgICAgICB0b3VjaGVkQWJzdHJhY3QgPSBhYnN0cmFjdDtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudCh0b3VjaGVkQWJzdHJhY3QhKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgY29tcG9uZW50LnVwZGF0ZUFic3RyYWN0SW5jbHVkZWRPdXRsaW5lKHRvdWNoZWRIYW5kbGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0b3VjaGVkQWJzdHJhY3Q7XG59XG4iXX0=
@@ -1,10 +1,11 @@
1
1
  import { CLIP_BOARD_FORMAT_KEY, getRectangleByElements, getSelectedElements, PlaitBoard, Transforms } from '@plait/core';
2
2
  import { MindElement } from '../interfaces';
3
- import { copyNewNode, extractNodesText, transformNodeToRoot, transformRootToNode, createMindElement } from '.';
3
+ import { copyNewNode, extractNodesText, transformNodeToRoot, transformRootToNode, createMindElement, transformAbstractToNode } from '.';
4
4
  import { getRectangleByNode } from './graph';
5
+ import { AbstractNode } from '@plait/layouts';
5
6
  export const buildClipboardData = (board, selectedElements) => {
6
7
  let result = [];
7
- const selectedMindNodes = selectedElements.map((value) => MindElement.getNode(value));
8
+ const selectedMindNodes = selectedElements.map(value => MindElement.getNode(value));
8
9
  const nodesRectangle = getRectangleByElements(board, selectedElements, true);
9
10
  selectedElements.forEach((node, index) => {
10
11
  const nodeRectangle = getRectangleByNode(selectedMindNodes[index]);
@@ -43,12 +44,18 @@ export const insertClipboardData = (board, elements, targetPoint) => {
43
44
  if (item.isRoot) {
44
45
  newElement = transformRootToNode(board, newElement);
45
46
  }
47
+ if (AbstractNode.isAbstract(item)) {
48
+ newElement = transformAbstractToNode(newElement);
49
+ }
46
50
  const selectedElementPath = PlaitBoard.findPath(board, selectedElements[0]);
47
51
  path = selectedElementPath.concat((selectedElements[0].children || []).length + index);
48
52
  }
49
53
  else {
50
54
  const point = [targetPoint[0] + item.points[0][0], targetPoint[1] + item.points[0][1]];
51
55
  newElement.points = [point];
56
+ if (AbstractNode.isAbstract(item)) {
57
+ newElement = transformAbstractToNode(newElement);
58
+ }
52
59
  if (!item.isRoot) {
53
60
  newElement = transformNodeToRoot(board, newElement);
54
61
  }
@@ -66,4 +73,4 @@ export const insertClipboardText = (board, parentElement, text, width, height) =
66
73
  Transforms.insertNode(board, newElement, path);
67
74
  return;
68
75
  };
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvY2xpcGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUVuQixVQUFVLEVBR1YsVUFBVSxFQUNiLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEdBQUcsQ0FBQztBQUMvRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFN0MsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUFpQixFQUFFLGdCQUErQixFQUFFLEVBQUU7SUFDckYsSUFBSSxNQUFNLEdBQWtCLEVBQUUsQ0FBQztJQUMvQixNQUFNLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLE1BQU0sY0FBYyxHQUFHLHNCQUFzQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDckMsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRSxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ1IsR0FBRyxJQUFJO1lBQ1AsTUFBTSxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFD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QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDZCxVQUFVLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQ3ZEO1lBRUQsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNsQztRQUNELFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0IsVUFBVSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9DLE9BQU87SUFDWCxDQUFDLENBQUMsQ0FBQztJQUNILFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDckUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFpQixFQUFFLGFBQTJCLEVBQUUsSUFBWSxFQUFFLEtBQWEsRUFBRSxNQUFjLEVBQUUsRUFBRTtJQUMvSCxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM5RCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JHLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxPQUFPO0FBQ1gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDTElQX0JPQVJEX0ZPUk1BVF9LRVksXG4gICAgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIFBhdGgsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUG9pbnQsXG4gICAgVHJhbnNmb3Jtc1xufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY29weU5ld05vZGUsIGV4dHJhY3ROb2Rlc1RleHQsIHRyYW5zZm9ybU5vZGVUb1Jvb3QsIHRyYW5zZm9ybVJvb3RUb05vZGUsIGNyZWF0ZU1pbmRFbGVtZW50IH0gZnJvbSAnLic7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuL2dyYXBoJztcblxuZXhwb3J0IGNvbnN0IGJ1aWxkQ2xpcGJvYXJkRGF0YSA9IChib2FyZDogUGxhaXRCb2FyZCwgc2VsZWN0ZWRFbGVtZW50czogTWluZEVsZW1lbnRbXSkgPT4ge1xuICAgIGxldCByZXN1bHQ6IE1pbmRFbGVtZW50W10gPSBbXTtcbiAgICBjb25zdCBzZWxlY3RlZE1pbmROb2RlcyA9IHNlbGVjdGVkRWxlbWVudHMubWFwKCh2YWx1ZSkgPT4gTWluZEVsZW1lbnQuZ2V0Tm9kZSh2YWx1ZSkpO1xuICAgIGNvbnN0IG5vZGVzUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyhib2FyZCwgc2VsZWN0ZWRFbGVtZW50cywgdHJ1ZSk7XG4gICAgc2VsZWN0ZWRFbGVtZW50cy5mb3JFYWNoKChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBub2RlUmVjdGFuZ2xlID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKHNlbGVjdGVkTWluZE5vZGVzW2luZGV4XSk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgIC4uLm5vZGUsXG4gICAgICAgICAgICBwb2ludHM6IFtbbm9kZVJlY3RhbmdsZS54IC0gbm9kZXNSZWN0YW5nbGUueCwgbm9kZVJlY3RhbmdsZS55IC0gbm9kZXNSZWN0YW5nbGUueV1dXG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRDbGlwYm9hcmREYXRhID0gKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwsIGVsZW1lbnRzOiBNaW5kRWxlbWVudFtdKSA9PiB7XG4gICAgY29uc3Qgc3RyaW5nT2JqID0gSlNPTi5zdHJpbmdpZnkoZWxlbWVudHMpO1xuICAgIGNvbnN0IGVuY29kZWQgPSB3aW5kb3cuYnRvYShlbmNvZGVVUklDb21wb25lbnQoc3RyaW5nT2JqKSk7XG4gICAgY29uc3QgdGV4dCA9IGVsZW1lbnRzLnJlZHVjZSgoc3RyaW5nLCBjdXJyZW50Tm9kZSkgPT4ge1xuICAgICAgICByZXR1cm4gc3RyaW5nICsgZXh0cmFjdE5vZGVzVGV4dChjdXJyZW50Tm9kZSk7XG4gICAgfSwgJycpO1xuICAgIGRhdGE/LnNldERhdGEoYGFwcGxpY2F0aW9uLyR7Q0xJUF9CT0FSRF9GT1JNQVRfS0VZfWAsIGVuY29kZWQpO1xuICAgIGRhdGE/LnNldERhdGEoYHRleHQvcGxhaW5gLCB0ZXh0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREYXRhRnJvbUNsaXBib2FyZCA9IChkYXRhOiBEYXRhVHJhbnNmZXIgfCBudWxsKSA9PiB7XG4gICAgY29uc3QgZW5jb2RlZCA9IGRhdGE/LmdldERhdGEoYGFwcGxpY2F0aW9uLyR7Q0xJUF9CT0FSRF9GT1JNQVRfS0VZfWApO1xuICAgIGxldCBub2Rlc0RhdGE6IFBsYWl0RWxlbWVudFtdID0gW107XG4gICAgaWYgKGVuY29kZWQpIHtcbiAgICAgICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVVSSUNvbXBvbmVudCh3aW5kb3cuYXRvYihlbmNvZGVkKSk7XG4gICAgICAgIG5vZGVzRGF0YSA9IEpTT04ucGFyc2UoZGVjb2RlZCk7XG4gICAgfVxuICAgIHJldHVybiBub2Rlc0RhdGE7XG59O1xuXG5leHBvcnQgY29uc3QgaW5zZXJ0Q2xpcGJvYXJkRGF0YSA9IChib2FyZDogUGxhaXRCb2FyZCwgZWxlbWVudHM6IFBsYWl0RWxlbWVudFtdLCB0YXJnZXRQb2ludDogUG9pbnQpID0+IHtcbiAgICBsZXQgbmV3RWxlbWVudDogTWluZEVsZW1lbnQsIHBhdGg6IFBhdGg7XG4gICAgY29uc3Qgc2VsZWN0ZWRFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpO1xuICAgIGxldCBuZXdFTGVtZW50czogUGxhaXRFbGVtZW50W10gPSBbXTtcblxuICAgIGVsZW1lbnRzLmZvckVhY2goKGl0ZW06IFBsYWl0RWxlbWVudCwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBuZXdFbGVtZW50ID0gY29weU5ld05vZGUoaXRlbSBhcyBNaW5kRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKHNlbGVjdGVkRWxlbWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5pc1Jvb3QpIHtcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50ID0gdHJhbnNmb3JtUm9vdFRvTm9kZShib2FyZCwgbmV3RWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRQYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aChib2FyZCwgc2VsZWN0ZWRFbGVtZW50c1swXSk7XG4gICAgICAgICAgICBwYXRoID0gc2VsZWN0ZWRFbGVtZW50UGF0aC5jb25jYXQoKHNlbGVjdGVkRWxlbWVudHNbMF0uY2hpbGRyZW4gfHwgW10pLmxlbmd0aCArIGluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBvaW50OiBQb2ludCA9IFt0YXJnZXRQb2ludFswXSArIGl0ZW0ucG9pbnRzIVswXVswXSwgdGFyZ2V0UG9pbnRbMV0gKyBpdGVtLnBvaW50cyFbMF1bMV1dO1xuICAgICAgICAgICAgbmV3RWxlbWVudC5wb2ludHMgPSBbcG9pbnRdO1xuICAgICAgICAgICAgaWYgKCFpdGVtLmlzUm9vdCkge1xuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQgPSB0cmFuc2Zvcm1Ob2RlVG9Sb290KGJvYXJkLCBuZXdFbGVtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGF0aCA9IFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdO1xuICAgICAgICB9XG4gICAgICAgIG5ld0VMZW1lbnRzLnB1c2gobmV3RWxlbWVudCk7XG4gICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZShib2FyZCwgbmV3RWxlbWVudCwgcGF0aCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9KTtcbiAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbldpdGhUZW1wb3JhcnlFbGVtZW50cyhib2FyZCwgbmV3RUxlbWVudHMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydENsaXBib2FyZFRleHQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBhcmVudEVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgdGV4dDogc3RyaW5nLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBjcmVhdGVNaW5kRWxlbWVudCh0ZXh0LCB3aWR0aCwgaGVpZ2h0LCB7fSk7XG4gICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIHBhcmVudEVsZW1lbnQpLmNvbmNhdCgocGFyZW50RWxlbWVudC5jaGlsZHJlbiB8fCBbXSkubGVuZ3RoKTtcbiAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHBhdGgpO1xuICAgIHJldHVybjtcbn07XG4iXX0=
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvdXRpbHMvY2xpcGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUVuQixVQUFVLEVBR1YsVUFBVSxFQUNiLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEdBQUcsQ0FBQztBQUN4SSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsS0FBaUIsRUFBRSxnQkFBK0IsRUFBRSxFQUFFO0lBQ3JGLElBQUksTUFBTSxHQUFrQixFQUFFLENBQUM7SUFDL0IsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEYsTUFBTSxjQUFjLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNyQyxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDUixHQUFHLElBQUk7WUFDUCxNQUFN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LFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxPQUFPO0FBQ1gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDTElQX0JPQVJEX0ZPUk1BVF9LRVksXG4gICAgZ2V0UmVjdGFuZ2xlQnlFbGVtZW50cyxcbiAgICBnZXRTZWxlY3RlZEVsZW1lbnRzLFxuICAgIFBhdGgsXG4gICAgUGxhaXRCb2FyZCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgUG9pbnQsXG4gICAgVHJhbnNmb3Jtc1xufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY29weU5ld05vZGUsIGV4dHJhY3ROb2Rlc1RleHQsIHRyYW5zZm9ybU5vZGVUb1Jvb3QsIHRyYW5zZm9ybVJvb3RUb05vZGUsIGNyZWF0ZU1pbmRFbGVtZW50LCB0cmFuc2Zvcm1BYnN0cmFjdFRvTm9kZSB9IGZyb20gJy4nO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi9ncmFwaCc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5cbmV4cG9ydCBjb25zdCBidWlsZENsaXBib2FyZERhdGEgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHNlbGVjdGVkRWxlbWVudHM6IE1pbmRFbGVtZW50W10pID0+IHtcbiAgICBsZXQgcmVzdWx0OiBNaW5kRWxlbWVudFtdID0gW107XG4gICAgY29uc3Qgc2VsZWN0ZWRNaW5kTm9kZXMgPSBzZWxlY3RlZEVsZW1lbnRzLm1hcCh2YWx1ZSA9PiBNaW5kRWxlbWVudC5nZXROb2RlKHZhbHVlKSk7XG4gICAgY29uc3Qgbm9kZXNSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeUVsZW1lbnRzKGJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzLCB0cnVlKTtcbiAgICBzZWxlY3RlZEVsZW1lbnRzLmZvckVhY2goKG5vZGUsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IG5vZGVSZWN0YW5nbGUgPSBnZXRSZWN0YW5nbGVCeU5vZGUoc2VsZWN0ZWRNaW5kTm9kZXNbaW5kZXhdKTtcbiAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgLi4ubm9kZSxcbiAgICAgICAgICAgIHBvaW50czogW1tub2RlUmVjdGFuZ2xlLnggLSBub2Rlc1JlY3RhbmdsZS54LCBub2RlUmVjdGFuZ2xlLnkgLSBub2Rlc1JlY3RhbmdsZS55XV1cbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IHNldENsaXBib2FyZERhdGEgPSAoZGF0YTogRGF0YVRyYW5zZmVyIHwgbnVsbCwgZWxlbWVudHM6IE1pbmRFbGVtZW50W10pID0+IHtcbiAgICBjb25zdCBzdHJpbmdPYmogPSBKU09OLnN0cmluZ2lmeShlbGVtZW50cyk7XG4gICAgY29uc3QgZW5jb2RlZCA9IHdpbmRvdy5idG9hKGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdPYmopKTtcbiAgICBjb25zdCB0ZXh0ID0gZWxlbWVudHMucmVkdWNlKChzdHJpbmcsIGN1cnJlbnROb2RlKSA9PiB7XG4gICAgICAgIHJldHVybiBzdHJpbmcgKyBleHRyYWN0Tm9kZXNUZXh0KGN1cnJlbnROb2RlKTtcbiAgICB9LCAnJyk7XG4gICAgZGF0YT8uc2V0RGF0YShgYXBwbGljYXRpb24vJHtDTElQX0JPQVJEX0ZPUk1BVF9LRVl9YCwgZW5jb2RlZCk7XG4gICAgZGF0YT8uc2V0RGF0YShgdGV4dC9wbGFpbmAsIHRleHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERhdGFGcm9tQ2xpcGJvYXJkID0gKGRhdGE6IERhdGFUcmFuc2ZlciB8IG51bGwpID0+IHtcbiAgICBjb25zdCBlbmNvZGVkID0gZGF0YT8uZ2V0RGF0YShgYXBwbGljYXRpb24vJHtDTElQX0JPQVJEX0ZPUk1BVF9LRVl9YCk7XG4gICAgbGV0IG5vZGVzRGF0YTogUGxhaXRFbGVtZW50W10gPSBbXTtcbiAgICBpZiAoZW5jb2RlZCkge1xuICAgICAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5hdG9iKGVuY29kZWQpKTtcbiAgICAgICAgbm9kZXNEYXRhID0gSlNPTi5wYXJzZShkZWNvZGVkKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGVzRGF0YTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRDbGlwYm9hcmREYXRhID0gKGJvYXJkOiBQbGFpdEJvYXJkLCBlbGVtZW50czogUGxhaXRFbGVtZW50W10sIHRhcmdldFBvaW50OiBQb2ludCkgPT4ge1xuICAgIGxldCBuZXdFbGVtZW50OiBNaW5kRWxlbWVudCwgcGF0aDogUGF0aDtcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnRzID0gZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgbGV0IG5ld0VMZW1lbnRzOiBQbGFpdEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgZWxlbWVudHMuZm9yRWFjaCgoaXRlbTogUGxhaXRFbGVtZW50LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIG5ld0VsZW1lbnQgPSBjb3B5TmV3Tm9kZShpdGVtIGFzIE1pbmRFbGVtZW50KTtcblxuICAgICAgICBpZiAoc2VsZWN0ZWRFbGVtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmlzUm9vdCkge1xuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQgPSB0cmFuc2Zvcm1Sb290VG9Ob2RlKGJvYXJkLCBuZXdFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChpdGVtKSkge1xuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQgPSB0cmFuc2Zvcm1BYnN0cmFjdFRvTm9kZShuZXdFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudFBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBzZWxlY3RlZEVsZW1lbnRzWzBdKTtcbiAgICAgICAgICAgIHBhdGggPSBzZWxlY3RlZEVsZW1lbnRQYXRoLmNvbmNhdCgoc2VsZWN0ZWRFbGVtZW50c1swXS5jaGlsZHJlbiB8fCBbXSkubGVuZ3RoICsgaW5kZXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcG9pbnQ6IFBvaW50ID0gW3RhcmdldFBvaW50WzBdICsgaXRlbS5wb2ludHMhWzBdWzBdLCB0YXJnZXRQb2ludFsxXSArIGl0ZW0ucG9pbnRzIVswXVsxXV07XG4gICAgICAgICAgICBuZXdFbGVtZW50LnBvaW50cyA9IFtwb2ludF07XG5cbiAgICAgICAgICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChpdGVtKSkge1xuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQgPSB0cmFuc2Zvcm1BYnN0cmFjdFRvTm9kZShuZXdFbGVtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpdGVtLmlzUm9vdCkge1xuICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQgPSB0cmFuc2Zvcm1Ob2RlVG9Sb290KGJvYXJkLCBuZXdFbGVtZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGF0aCA9IFtib2FyZC5jaGlsZHJlbi5sZW5ndGhdO1xuICAgICAgICB9XG4gICAgICAgIG5ld0VMZW1lbnRzLnB1c2gobmV3RWxlbWVudCk7XG4gICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0Tm9kZShib2FyZCwgbmV3RWxlbWVudCwgcGF0aCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9KTtcbiAgICBUcmFuc2Zvcm1zLnNldFNlbGVjdGlvbldpdGhUZW1wb3JhcnlFbGVtZW50cyhib2FyZCwgbmV3RUxlbWVudHMpO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydENsaXBib2FyZFRleHQgPSAoYm9hcmQ6IFBsYWl0Qm9hcmQsIHBhcmVudEVsZW1lbnQ6IFBsYWl0RWxlbWVudCwgdGV4dDogc3RyaW5nLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBjcmVhdGVNaW5kRWxlbWVudCh0ZXh0LCB3aWR0aCwgaGVpZ2h0LCB7fSk7XG4gICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIHBhcmVudEVsZW1lbnQpLmNvbmNhdCgocGFyZW50RWxlbWVudC5jaGlsZHJlbiB8fCBbXSkubGVuZ3RoKTtcbiAgICBUcmFuc2Zvcm1zLmluc2VydE5vZGUoYm9hcmQsIG5ld0VsZW1lbnQsIHBhdGgpO1xuICAgIHJldHVybjtcbn07XG4iXX0=
@@ -1,29 +1,29 @@
1
1
  import { BASE, PRIMARY_COLOR, STROKE_WIDTH } from '../constants';
2
2
  import { drawLink } from '../draw/link';
3
3
  import { getRectangleByNode } from './graph';
4
- import { PlaitElement, drawRoundRectangle } from '@plait/core';
4
+ import { PlaitBoard, PlaitElement, drawRoundRectangle } from '@plait/core';
5
5
  import { MindQueries } from '../queries';
6
6
  import { isBottomLayout, isHorizontalLayout, isHorizontalLogicLayout, isIndentedLayout, isRightLayout, isVerticalLogicLayout } from '@plait/layouts';
7
7
  import { drawIndentedLink } from '../draw/indented-link';
8
8
  import { isLeftLayout, isTopLayout } from '@plait/layouts';
9
9
  import { isStandardLayout } from '@plait/layouts';
10
10
  import { isMixedLayout } from './layout';
11
- export const drawPlaceholderDropNodeG = (dropTarget, roughSVG, fakeDropNodeG) => {
11
+ export const drawPlaceholderDropNodeG = (board, dropTarget, fakeDropNodeG) => {
12
12
  const targetComponent = PlaitElement.getComponent(dropTarget.target);
13
13
  const targetRect = getRectangleByNode(targetComponent.node);
14
14
  if (dropTarget.detectResult && ['right', 'left'].includes(dropTarget.detectResult)) {
15
- drawStraightDropNodeG(targetRect, dropTarget.detectResult, targetComponent, roughSVG, fakeDropNodeG);
15
+ drawStraightDropNodeG(board, targetRect, dropTarget.detectResult, targetComponent, fakeDropNodeG);
16
16
  }
17
17
  if (targetComponent.parent && dropTarget.detectResult && ['top', 'bottom'].includes(dropTarget.detectResult)) {
18
18
  const parentComponent = PlaitElement.getComponent(targetComponent.parent.origin);
19
19
  const targetIndex = parentComponent.node.origin.children.indexOf(targetComponent.node.origin);
20
- drawCurvePlaceholderDropNodeG(targetRect, dropTarget.detectResult, targetIndex, targetComponent, roughSVG, parentComponent, fakeDropNodeG);
20
+ drawCurvePlaceholderDropNodeG(board, targetRect, dropTarget.detectResult, targetIndex, targetComponent, parentComponent, fakeDropNodeG);
21
21
  }
22
22
  };
23
- export const drawCurvePlaceholderDropNodeG = (targetRect, detectResult, targetIndex, targetComponent, roughSVG, parentComponent, fakeDropNodeG) => {
23
+ export const drawCurvePlaceholderDropNodeG = (board, targetRect, detectResult, targetIndex, targetComponent, parentComponent, fakeDropNodeG) => {
24
24
  const parentNodeLayout = MindQueries.getCorrectLayoutByElement(parentComponent.node.origin);
25
25
  const layout = MindQueries.getCorrectLayoutByElement(targetComponent.node.parent.origin);
26
- const strokeWidth = targetComponent.node.origin.linkLineWidth ? targetComponent.node.origin.linkLineWidth : STROKE_WIDTH;
26
+ const strokeWidth = targetComponent.node.origin.branchWidth ? targetComponent.node.origin.branchWidth : STROKE_WIDTH;
27
27
  let fakeX = targetComponent.node.x, fakeY = targetRect.y - 30, fakeRectangleStartX = targetRect.x, fakeRectangleEndX = targetRect.x + 30, fakeRectangleStartY = fakeY, fakeRectangleEndY = fakeRectangleStartY + 12, width = 30;
28
28
  if (isLeftLayout(layout)) {
29
29
  fakeX = targetComponent.node.x + targetComponent.node.width - 30;
@@ -114,10 +114,10 @@ export const drawCurvePlaceholderDropNodeG = (targetRect, detectResult, targetIn
114
114
  // 构造一条曲线
115
115
  const fakeNode = { ...targetComponent.node, x: fakeX, y: fakeY, width, height: 12 };
116
116
  const linkSVGG = isIndentedLayout(layout)
117
- ? drawIndentedLink(roughSVG, parentComponent.node, fakeNode, PRIMARY_COLOR, false)
118
- : drawLink(roughSVG, parentComponent.node, fakeNode, PRIMARY_COLOR, isHorizontalLayout(layout), false);
117
+ ? drawIndentedLink(board, parentComponent.node, fakeNode, PRIMARY_COLOR, false)
118
+ : drawLink(board, parentComponent.node, fakeNode, PRIMARY_COLOR, isHorizontalLayout(layout), false);
119
119
  // 构造一个矩形框坐标
120
- const fakeRectangleG = drawRoundRectangle(roughSVG, fakeRectangleStartX, fakeRectangleStartY, fakeRectangleEndX, fakeRectangleEndY, {
120
+ const fakeRectangleG = drawRoundRectangle(PlaitBoard.getRoughSVG(board), fakeRectangleStartX, fakeRectangleStartY, fakeRectangleEndX, fakeRectangleEndY, {
121
121
  stroke: PRIMARY_COLOR,
122
122
  strokeWidth: 2,
123
123
  fill: PRIMARY_COLOR,
@@ -126,7 +126,7 @@ export const drawCurvePlaceholderDropNodeG = (targetRect, detectResult, targetIn
126
126
  fakeDropNodeG?.appendChild(linkSVGG);
127
127
  fakeDropNodeG?.appendChild(fakeRectangleG);
128
128
  };
129
- export const drawStraightDropNodeG = (targetRect, detectResult, targetComponent, roughSVG, fakeDropNodeG) => {
129
+ export const drawStraightDropNodeG = (board, targetRect, detectResult, targetComponent, fakeDropNodeG) => {
130
130
  const { x, y, width, height } = targetRect;
131
131
  const lineLength = 40;
132
132
  let startLinePoint = x + width;
@@ -143,7 +143,7 @@ export const drawStraightDropNodeG = (targetRect, detectResult, targetComponent,
143
143
  }
144
144
  let fakeY = targetComponent.node.y;
145
145
  let fakeX = targetRect.x;
146
- const strokeWidth = targetComponent.node.origin.linkLineWidth ? targetComponent.node.origin.linkLineWidth : STROKE_WIDTH;
146
+ const strokeWidth = targetComponent.node.origin.branchWidth ? targetComponent.node.origin.branchWidth : STROKE_WIDTH;
147
147
  const pointOptions = {
148
148
  fakeX,
149
149
  fakeY,
@@ -163,7 +163,7 @@ export const drawStraightDropNodeG = (targetRect, detectResult, targetComponent,
163
163
  ];
164
164
  if (isIndentedLayout(parentLayout)) {
165
165
  const fakePoint = getIndentedFakePoint(parentLayout, pointOptions);
166
- drawIndentNodeG(fakeDropNodeG, roughSVG, fakePoint, targetComponent.node);
166
+ drawIndentNodeG(board, fakeDropNodeG, fakePoint, targetComponent.node);
167
167
  return;
168
168
  }
169
169
  else if (isVerticalLogicLayout(parentLayout)) {
@@ -219,16 +219,16 @@ export const drawStraightDropNodeG = (targetRect, detectResult, targetComponent,
219
219
  endRectanglePointX = startRectanglePointX + 30;
220
220
  endRectanglePointY = startRectanglePointY + 12;
221
221
  const fakeNode = { ...targetComponent.node, x: fakeX, y: fakeY, width: 30 };
222
- const linkSVGG = drawLink(roughSVG, parentComponent.node, fakeNode, PRIMARY_COLOR, false, false);
222
+ const linkSVGG = drawLink(board, parentComponent.node, fakeNode, PRIMARY_COLOR, false, false);
223
223
  fakeDropNodeG?.appendChild(linkSVGG);
224
224
  }
225
225
  }
226
226
  else {
227
- let linkSVGG = roughSVG.linearPath(linePoints, { stroke: PRIMARY_COLOR, strokeWidth });
227
+ let linkSVGG = PlaitBoard.getRoughSVG(board).linearPath(linePoints, { stroke: PRIMARY_COLOR, strokeWidth });
228
228
  fakeDropNodeG?.appendChild(linkSVGG);
229
229
  }
230
230
  // 构造一个矩形框坐标
231
- let fakeRectangleG = drawRoundRectangle(roughSVG, startRectanglePointX, startRectanglePointY, endRectanglePointX, endRectanglePointY, {
231
+ let fakeRectangleG = drawRoundRectangle(PlaitBoard.getRoughSVG(board), startRectanglePointX, startRectanglePointY, endRectanglePointX, endRectanglePointY, {
232
232
  stroke: PRIMARY_COLOR,
233
233
  strokeWidth: 2,
234
234
  fill: PRIMARY_COLOR,
@@ -241,7 +241,7 @@ export const drawStraightDropNodeG = (targetRect, detectResult, targetComponent,
241
241
  if (isHorizontalLogicLayout(parentLayout)) {
242
242
  if (isIndentedLayout(layout)) {
243
243
  const fakePoint = getIndentedFakePoint(layout, pointOptions);
244
- drawIndentNodeG(fakeDropNodeG, roughSVG, fakePoint, targetComponent.node);
244
+ drawIndentNodeG(board, fakeDropNodeG, fakePoint, targetComponent.node);
245
245
  return;
246
246
  }
247
247
  }
@@ -293,12 +293,12 @@ export const getIndentedFakePoint = (layout, pointOptions) => {
293
293
  }
294
294
  return { fakeX, fakeY };
295
295
  };
296
- export const drawIndentNodeG = (fakeDropNodeG, roughSVG, fakePoint, node) => {
296
+ export const drawIndentNodeG = (board, fakeDropNodeG, fakePoint, node) => {
297
297
  const { fakeX, fakeY } = fakePoint;
298
298
  const fakeNode = { ...node, x: fakeX, y: fakeY, width: 30, height: 12 };
299
- const linkSVGG = drawIndentedLink(roughSVG, node, fakeNode, PRIMARY_COLOR, false);
299
+ const linkSVGG = drawIndentedLink(board, node, fakeNode, PRIMARY_COLOR, false);
300
300
  const startRectanglePointX = fakeX, startRectanglePointY = fakeY, endRectanglePointX = fakeX + 30, endRectanglePointY = fakeY + 12;
301
- const fakeRectangleG = drawRoundRectangle(roughSVG, startRectanglePointX, startRectanglePointY, endRectanglePointX, endRectanglePointY, {
301
+ const fakeRectangleG = drawRoundRectangle(PlaitBoard.getRoughSVG(board), startRectanglePointX, startRectanglePointY, endRectanglePointX, endRectanglePointY, {
302
302
  stroke: PRIMARY_COLOR,
303
303
  strokeWidth: 2,
304
304
  fill: PRIMARY_COLOR,
@@ -307,4 +307,4 @@ export const drawIndentNodeG = (fakeDropNodeG, roughSVG, fakePoint, node) => {
307
307
  fakeDropNodeG?.appendChild(linkSVGG);
308
308
  fakeDropNodeG?.appendChild(fakeRectangleG);
309
309
  };
310
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1wbGFjZWhvbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXctcGxhY2Vob2xkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQVMsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN6QyxPQUFPLEVBQ0gsY0FBYyxFQUNkLGtCQUFrQixFQUNsQix1QkFBdUIsRUFDdkIsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixxQkFBcUIsRUFFeEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFekMsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FDcEMsVUFBK0QsRUFDL0QsUUFBa0IsRUFDbEIsYUFBc0MsRUFDeEMsRUFBRTtJQUNBLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBc0IsQ0FBQztJQUMxRixNQUFNLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUQsSUFBSSxVQUFVLENB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LEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFbEYsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQzlCLG9CQUFvQixHQUFHLEtBQUssRUFDNUIsa0JBQWtCLEdBQUcsS0FBSyxHQUFHLEVBQUUsRUFDL0Isa0JBQWtCLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNwQyxNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FDckMsUUFBUSxFQUNSLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQjtRQUNJLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFdBQVcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxFQUFFLGFBQWE7UUFDbkIsU0FBUyxFQUFFLE9BQU87S0FDckIsQ0FDSixDQUFDO0lBQ0YsYUFBYSxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxhQUFhLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdWdoU1ZHIH0gZnJvbSAncm91Z2hqcy9iaW4vc3ZnJztcbmltcG9ydCB7IEJBU0UsIFBSSU1BUllfQ09MT1IsIFNUUk9LRV9XSURUSCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBkcmF3TGluayB9IGZyb20gJy4uL2RyYXcvbGluayc7XG5pbXBvcnQgeyBEZXRlY3RSZXN1bHQsIE1pbmRFbGVtZW50LCBNaW5kTm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQgfSBmcm9tICcuLi9ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuL2dyYXBoJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCwgUG9pbnQsIGRyYXdSb3VuZFJlY3RhbmdsZSB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmRRdWVyaWVzIH0gZnJvbSAnLi4vcXVlcmllcyc7XG5pbXBvcnQge1xuICAgIGlzQm90dG9tTGF5b3V0LFxuICAgIGlzSG9yaXpvbnRhbExheW91dCxcbiAgICBpc0hvcml6b250YWxMb2dpY0xheW91dCxcbiAgICBpc0luZGVudGVkTGF5b3V0LFxuICAgIGlzUmlnaHRMYXlvdXQsXG4gICAgaXNWZXJ0aWNhbExvZ2ljTGF5b3V0LFxuICAgIE1pbmRMYXlvdXRUeXBlXG59IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGRyYXdJbmRlbnRlZExpbmsgfSBmcm9tICcuLi9kcmF3L2luZGVudGVkLWxpbmsnO1xuaW1wb3J0IHsgaXNMZWZ0TGF5b3V0LCBpc1RvcExheW91dCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGlzU3RhbmRhcmRMYXlvdXQgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBpc01peGVkTGF5b3V0IH0gZnJvbSAnLi9sYXlvdXQnO1xuXG5leHBvcnQgY29uc3QgZHJhd1BsYWNlaG9sZGVyRHJvcE5vZGVHID0gKFxuICAgIGRyb3BUYXJnZXQ6IHsgdGFyZ2V0OiBNaW5kRWxlbWVudDsgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHQgfSxcbiAgICByb3VnaFNWRzogUm91Z2hTVkcsXG4gICAgZmFrZURyb3BOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWRcbikgPT4ge1xuICAgIGNvbnN0IHRhcmdldENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoZHJvcFRhcmdldC50YXJnZXQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgIGNvbnN0IHRhcmdldFJlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUodGFyZ2V0Q29tcG9uZW50Lm5vZGUpO1xuICAgIGlmIChkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCAmJiBbJ3JpZ2h0JywgJ2xlZnQnXS5pbmNsdWRlcyhkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCkpIHtcbiAgICAgICAgZHJhd1N0cmFpZ2h0RHJvcE5vZGVHKHRhcmdldFJlY3QsIGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0LCB0YXJnZXRDb21wb25lbnQsIHJvdWdoU1ZHLCBmYWtlRHJvcE5vZGVHKTtcbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0Q29tcG9uZW50LnBhcmVudCAmJiBkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCAmJiBbJ3RvcCcsICdib3R0b20nXS5pbmNsdWRlcyhkcm9wVGFyZ2V0LmRldGVjdFJlc3VsdCkpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudCh0YXJnZXRDb21wb25lbnQucGFyZW50Lm9yaWdpbikgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgIGNvbnN0IHRhcmdldEluZGV4ID0gcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmNoaWxkcmVuLmluZGV4T2YodGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luKTtcbiAgICAgICAgZHJhd0N1cnZlUGxhY2Vob2xkZXJEcm9wTm9kZUcoXG4gICAgICAgICAgICB0YXJnZXRSZWN0LFxuICAgICAgICAgICAgZHJvcFRhcmdldC5kZXRlY3RSZXN1bHQsXG4gICAgICAgICAgICB0YXJnZXRJbmRleCxcbiAgICAgICAgICAgIHRhcmdldENvbXBvbmVudCxcbiAgICAgICAgICAgIHJvdWdoU1ZHLFxuICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50LFxuICAgICAgICAgICAgZmFrZURyb3BOb2RlR1xuICAgICAgICApO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBkcmF3Q3VydmVQbGFjZWhvbGRlckRyb3BOb2RlRyA9IChcbiAgICB0YXJnZXRSZWN0OiB7XG4gICAgICAgIHg6IG51bWJlcjtcbiAgICAgICAgeTogbnVtYmVyO1xuICAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB9LFxuICAgIGRldGVjdFJlc3VsdDogRGV0ZWN0UmVzdWx0LFxuICAgIHRhcmdldEluZGV4OiBudW1iZXIsXG4gICAgdGFyZ2V0Q29tcG9uZW50OiBNaW5kTm9kZUNvbXBvbmVudCxcbiAgICByb3VnaFNWRzogUm91Z2hTVkcsXG4gICAgcGFyZW50Q29tcG9uZW50OiBNaW5kTm9kZUNvbXBvbmVudCxcbiAgICBmYWtlRHJvcE5vZGVHOiBTVkdHRWxlbWVudCB8IHVuZGVmaW5lZFxuKSA9PiB7XG4gICAgY29uc3QgcGFyZW50Tm9kZUxheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQocGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luKTtcbiAgICBjb25zdCBsYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KHRhcmdldENvbXBvbmVudC5ub2RlLnBhcmVudC5vcmlnaW4pO1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLmxpbmtMaW5lV2lkdGggPyB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4ubGlua0xpbmVXaWR0aCA6IFNUUk9LRV9XSURUSDtcbiAgICBsZXQgZmFrZVggPSB0YXJnZXRDb21wb25lbnQubm9kZS54LFxuICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSAtIDMwLFxuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRYID0gdGFyZ2V0UmVjdC54LFxuICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWCA9IHRhcmdldFJlY3QueCArIDMwLFxuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRZID0gZmFrZVksXG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRZID0gZmFrZVJlY3RhbmdsZVN0YXJ0WSArIDEyLFxuICAgICAgICB3aWR0aCA9IDMwO1xuXG4gICAgaWYgKGlzTGVmdExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VYID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUueCArIHRhcmdldENvbXBvbmVudC5ub2RlLndpZHRoIC0gMzA7XG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFggPSB0YXJnZXRSZWN0LnggKyB0YXJnZXRSZWN0LndpZHRoIC0gMzA7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRYID0gdGFyZ2V0UmVjdC54ICsgdGFyZ2V0UmVjdC53aWR0aDtcbiAgICB9XG4gICAgaWYgKGlzSG9yaXpvbnRhbExvZ2ljTGF5b3V0KHBhcmVudE5vZGVMYXlvdXQpKSB7XG4gICAgICAgIGZha2VZID0gZ2V0SG9yaXpvbnRhbEZha2VZKGRldGVjdFJlc3VsdCBhcyAndG9wJyB8ICdib3R0b20nLCB0YXJnZXRJbmRleCwgcGFyZW50Q29tcG9uZW50Lm5vZGUsIHRhcmdldFJlY3QsIGxheW91dCwgZmFrZVkpO1xuICAgICAgICBpZiAoaXNTdGFuZGFyZExheW91dChwYXJlbnROb2RlTGF5b3V0KSkge1xuICAgICAgICAgICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4ucmlnaHROb2RlQ291bnQgfHwgMDtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHBhcmVudENvbXBvbmVudC5ub2RlLmNoaWxkcmVuLmZpbmRJbmRleCh4ID0+IHggPT09IHRhcmdldENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGlzTGVmdCA9IGlkeCA+PSByaWdodE5vZGVDb3VudDtcbiAgICAgICAgICAgIC8vIOagh+WHhuW4g+WxgOeahOW3pu+8jOmcgOimgeiwg+aVtCB4XG4gICAgICAgICAgICBpZiAoaXNMZWZ0KSB7XG4gICAgICAgICAgICAgICAgZmFrZVggPSB0YXJnZXRDb21wb25lbnQubm9kZS54ICsgdGFyZ2V0Q29tcG9uZW50Lm5vZGUud2lkdGggLSAzMDtcbiAgICAgICAgICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRYID0gdGFyZ2V0UmVjdC54ICsgdGFyZ2V0UmVjdC53aWR0aCAtIDMwO1xuICAgICAgICAgICAgICAgIGZha2VSZWN0YW5nbGVFbmRYID0gdGFyZ2V0UmVjdC54ICsgdGFyZ2V0UmVjdC53aWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlzTGVmdEZpcnN0ID0gaWR4ID09PSByaWdodE5vZGVDb3VudDtcbiAgICAgICAgICAgIGNvbnN0IGlzUmlnaHRMYXN0ID0gaWR4ID09PSByaWdodE5vZGVDb3VudCAtIDE7XG4gICAgICAgICAgICAvLyDmi5bmi73oh7Plt6bnrKzkuIDkuKroioLngrnnmoTmg4XlhrVcbiAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICd0b3AnICYmIGlzTGVmdEZpcnN0KSB7XG4gICAgICAgICAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgLSB0YXJnZXRSZWN0LmhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICdib3R0b20nICYmIGlzUmlnaHRMYXN0KSB7XG4gICAgICAgICAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgKyB0YXJnZXRSZWN0LmhlaWdodCArIDMwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFkgPSBmYWtlWTtcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFkgPSBmYWtlUmVjdGFuZ2xlU3RhcnRZICsgMTI7XG4gICAgfVxuXG4gICAgaWYgKGlzVmVydGljYWxMb2dpY0xheW91dChsYXlvdXQpKSB7XG4gICAgICAgIHBhcmVudENvbXBvbmVudCA9IHRhcmdldENvbXBvbmVudDtcbiAgICAgICAgdGFyZ2V0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudCh0YXJnZXRDb21wb25lbnQucGFyZW50Lm9yaWdpbikgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgIGZha2VYID0gcGFyZW50Q29tcG9uZW50Lm5vZGUueDtcbiAgICAgICAgd2lkdGggPSBwYXJlbnRDb21wb25lbnQubm9kZS53aWR0aDtcbiAgICAgICAgY29uc3QgdkdhcCA9IEJBU0UgKiA2ICsgc3Ryb2tlV2lkdGg7XG4gICAgICAgIGlmIChpc1RvcExheW91dChsYXlvdXQpICYmIGRldGVjdFJlc3VsdCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55IC0gdkdhcDtcbiAgICAgICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFkgPSBmYWtlWSAtIHZHYXAgKyBzdHJva2VXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNCb3R0b21MYXlvdXQobGF5b3V0KSAmJiBkZXRlY3RSZXN1bHQgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSArIHRhcmdldFJlY3QuaGVpZ2h0ICsgdkdhcDtcbiAgICAgICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFkgPSBmYWtlWSArIHZHYXAgLSBzdHJva2VXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRYID0gZmFrZVggKyBNYXRoLmNlaWwocGFyZW50Q29tcG9uZW50Lm5vZGUud2lkdGggLyAyKSAtIHBhcmVudENvbXBvbmVudC5ub2RlLmhHYXAgLSBNYXRoLmNlaWwoc3Ryb2tlV2lkdGggLyAyKTtcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFggPSBmYWtlUmVjdGFuZ2xlU3RhcnRYICsgMzA7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRZID0gZmFrZVJlY3RhbmdsZVN0YXJ0WSArIDEyO1xuICAgIH1cbiAgICBpZiAoaXNJbmRlbnRlZExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIC8vIOWBj+enu+S4gOS4qiBHYXBcbiAgICAgICAgaWYgKGlzTGVmdExheW91dChsYXlvdXQpKSB7XG4gICAgICAgICAgICBmYWtlWCAtPSBCQVNFICogNDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNSaWdodExheW91dChsYXlvdXQpKSB7XG4gICAgICAgICAgICBmYWtlWCArPSBCQVNFICogNDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNUb3BMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0xhc3ROb2RlID0gdGFyZ2V0SW5kZXggPT09IHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlbi5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIGlmIChpc0xhc3ROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55IC0gdGFyZ2V0UmVjdC5oZWlnaHQgLSBCQVNFO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmNoaWxkcmVuW3RhcmdldEluZGV4ICsgMV1cbiAgICAgICAgICAgICAgICAgICAgKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dFJlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUobmV4dENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgLSBNYXRoLmFicygobmV4dFJlY3QueSArIG5leHRSZWN0LmhlaWdodCAtIHRhcmdldFJlY3QueSkgLyAyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRmlyc3ROb2RlID0gdGFyZ2V0SW5kZXggPT09IDA7XG4gICAgICAgICAgICAgICAgaWYgKGlzRmlyc3ROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFJlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUocGFyZW50Q29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBmYWtlWSA9IHBhcmVudFJlY3QueSAtIHBhcmVudFJlY3QuaGVpZ2h0IC8gMiAtIEJBU0U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmNoaWxkcmVuW3RhcmdldEluZGV4ICsgMV1cbiAgICAgICAgICAgICAgICAgICAgKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKHByZXZpb3VzQ29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBmYWtlWSA9IHByZXZpb3VzUmVjdC55IC0gTWF0aC5hYnMoKHRhcmdldFJlY3QueSArIHRhcmdldFJlY3QuaGVpZ2h0IC0gcHJldmlvdXNSZWN0LnkpIC8gMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFggPSBmYWtlWDtcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFggPSBmYWtlUmVjdGFuZ2xlU3RhcnRYICsgMzA7XG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFkgPSBmYWtlWTtcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFkgPSBmYWtlUmVjdGFuZ2xlU3RhcnRZICsgMTI7XG4gICAgfVxuXG4gICAgLy8g5p6E6YCg5LiA5p2h5puy57q/XG4gICAgY29uc3QgZmFrZU5vZGU6IE1pbmROb2RlID0geyAuLi50YXJnZXRDb21wb25lbnQubm9kZSwgeDogZmFrZVgsIHk6IGZha2VZLCB3aWR0aCwgaGVpZ2h0OiAxMiB9O1xuICAgIGNvbnN0IGxpbmtTVkdHID0gaXNJbmRlbnRlZExheW91dChsYXlvdXQpXG4gICAgICAgID8gZHJhd0luZGVudGVkTGluayhyb3VnaFNWRywgcGFyZW50Q29tcG9uZW50Lm5vZGUsIGZha2VOb2RlLCBQUklNQVJZX0NPTE9SLCBmYWxzZSlcbiAgICAgICAgOiBkcmF3TGluayhyb3VnaFNWRywgcGFyZW50Q29tcG9uZW50Lm5vZGUsIGZha2VOb2RlLCBQUklNQVJZX0NPTE9SLCBpc0hvcml6b250YWxMYXlvdXQobGF5b3V0KSwgZmFsc2UpO1xuICAgIC8vIOaehOmAoOS4gOS4quefqeW9ouahhuWdkOagh1xuICAgIGNvbnN0IGZha2VSZWN0YW5nbGVHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKHJvdWdoU1ZHLCBmYWtlUmVjdGFuZ2xlU3RhcnRYLCBmYWtlUmVjdGFuZ2xlU3RhcnRZLCBmYWtlUmVjdGFuZ2xlRW5kWCwgZmFrZVJlY3RhbmdsZUVuZFksIHtcbiAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgZmlsbDogUFJJTUFSWV9DT0xPUixcbiAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgfSk7XG4gICAgZmFrZURyb3BOb2RlRz8uYXBwZW5kQ2hpbGQobGlua1NWR0cpO1xuICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGZha2VSZWN0YW5nbGVHKTtcbn07XG5leHBvcnQgY29uc3QgZHJhd1N0cmFpZ2h0RHJvcE5vZGVHID0gKFxuICAgIHRhcmdldFJlY3Q6IHtcbiAgICAgICAgeDogbnVtYmVyO1xuICAgICAgICB5OiBudW1iZXI7XG4gICAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgICAgIGhlaWdodDogbnVtYmVyO1xuICAgIH0sXG4gICAgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHQsXG4gICAgdGFyZ2V0Q29tcG9uZW50OiBNaW5kTm9kZUNvbXBvbmVudCxcbiAgICByb3VnaFNWRzogUm91Z2hTVkcsXG4gICAgZmFrZURyb3BOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWRcbikgPT4ge1xuICAgIGNvbnN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9ID0gdGFyZ2V0UmVjdDtcbiAgICBjb25zdCBsaW5lTGVuZ3RoID0gNDA7XG4gICAgbGV0IHN0YXJ0TGluZVBvaW50ID0geCArIHdpZHRoO1xuICAgIGxldCBlbmRMaW5lUG9pbnQgPSB4ICsgd2lkdGggKyBsaW5lTGVuZ3RoO1xuICAgIGxldCBzdGFydFJlY3RhbmdsZVBvaW50WCA9IHggKyB3aWR0aCArIGxpbmVMZW5ndGg7XG4gICAgbGV0IGVuZFJlY3RhbmdsZVBvaW50WCA9IHggKyBsaW5lTGVuZ3RoICsgd2lkdGggKyAzMDtcbiAgICBsZXQgc3RhcnRSZWN0YW5nbGVQb2ludFkgPSB5ICsgaGVpZ2h0IC8gMiAtIDY7XG4gICAgbGV0IGVuZFJlY3RhbmdsZVBvaW50WSA9IHkgKyBoZWlnaHQgLyAyIC0gNiArIDEyO1xuXG4gICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgIHN0YXJ0TGluZVBvaW50ID0geCAtIGxpbmVMZW5ndGg7XG4gICAgICAgIGVuZExpbmVQb2ludCA9IHg7XG4gICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRYID0geCAtIGxpbmVMZW5ndGggLSAzMDtcbiAgICAgICAgZW5kUmVjdGFuZ2xlUG9pbnRYID0geCAtIGxpbmVMZW5ndGg7XG4gICAgfVxuICAgIGxldCBmYWtlWSA9IHRhcmdldENvbXBvbmVudC5ub2RlLnk7XG4gICAgbGV0IGZha2VYID0gdGFyZ2V0UmVjdC54O1xuICAgIGNvbnN0IHN0cm9rZVdpZHRoID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLmxpbmtMaW5lV2lkdGggPyB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4ubGlua0xpbmVXaWR0aCA6IFNUUk9LRV9XSURUSDtcbiAgICBjb25zdCBwb2ludE9wdGlvbnMgPSB7XG4gICAgICAgIGZha2VYLFxuICAgICAgICBmYWtlWSxcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgc3Ryb2tlV2lkdGhcbiAgICB9O1xuICAgIGNvbnN0IHBhcmVudExheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQoXG4gICAgICAgIHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbi5pc1Jvb3QgPyB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4gOiB0YXJnZXRDb21wb25lbnQubm9kZS5wYXJlbnQub3JpZ2luXG4gICAgKTtcbiAgICBjb25zdCBsYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbik7XG4gICAgaWYgKCFpc01peGVkTGF5b3V0KHBhcmVudExheW91dCwgbGF5b3V0KSkge1xuICAgICAgICAvLyDmnoTpgKDkuIDmnaHnm7Tnur9cbiAgICAgICAgbGV0IGxpbmVQb2ludHMgPSBbXG4gICAgICAgICAgICBbc3RhcnRMaW5lUG9pbnQsIHkgKyBoZWlnaHQgLyAyXSxcbiAgICAgICAgICAgIFtlbmRMaW5lUG9pbnQsIHkgKyBoZWlnaHQgLyAyXVxuICAgICAgICBdIGFzIFBvaW50W107XG4gICAgICAgIGlmIChpc0luZGVudGVkTGF5b3V0KHBhcmVudExheW91dCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZha2VQb2ludCA9IGdldEluZGVudGVkRmFrZVBvaW50KHBhcmVudExheW91dCwgcG9pbnRPcHRpb25zKTtcbiAgICAgICAgICAgIGRyYXdJbmRlbnROb2RlRyhmYWtlRHJvcE5vZGVHIGFzIFNWR0dFbGVtZW50LCByb3VnaFNWRywgZmFrZVBvaW50LCB0YXJnZXRDb21wb25lbnQubm9kZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoaXNWZXJ0aWNhbExvZ2ljTGF5b3V0KHBhcmVudExheW91dCkpIHtcbiAgICAgICAgICAgIGlmICghdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luLmlzUm9vdCkge1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIOiuoeeul+mAu+i+ke+8mlxuICAgICAgICAgICAgICAgICAqICAxLiDnp7vliqjliLDlt6bkvqfvvJrlvZPliY3oioLngrkgc3RhcnRYIC0g5YGP56e75YC877yM5YGP56e75YC86K6h566X5aaC5LiL77yaXG4gICAgICAgICAgICAgICAgICogICAgICBhLiDnrKzkuIDkuKroioLngrnvvJog5Zu65a6a5YC877yI5p2l5rqQ5LqOIGdldE1haW5BeGxl77yM56ys5LqM57qn6IqC54K577yaQkFTRSAqIDjvvIzlhbbku5YgQkFTRSAqIDMgKyBzdHJva2VXaWR0aCAvIDLvvInvvJtcbiAgICAgICAgICAgICAgICAgKiAgICAgIGIuIOesrOS6jOS4quiKgueCueWIsOacgOWQjuS4gOS4quiKgueCueS5i+mXtO+8muS4iuS4gOS4quiKgueCueWIsOW9k+WJjeiKgueCuemXtOi3neeahOS4gOWNiu+8iCjlvZPliY3oioLngrkgc3RhcnRYIC0g5LiK5LiA5Liq6IqC54K555qEIGVuZFgpIC8gMinvvIxlbmRYID0g5b2T5YmN6IqC54K555qEIHN0YXJ0WCArIHdpZHRoO1xuICAgICAgICAgICAgICAgICAqICAyLiDnp7vliqjliLDlj7PkvqfvvJrlvZPliY3oioLngrkgeCArIHdpZHRoICsg5YGP56e75YC877yM5YGP56e75YC86K6h566X5aaC5LiL77yaXG4gICAgICAgICAgICAgICAgICogICAgICBhLiDnrKzkuozkuKroioLngrnliLDmnIDlkI7kuIDkuKroioLngrnkuYvpl7TnmoTlj7PkvqfvvJrlvZPliY3oioLngrnliLDkuIvkuIDkuKroioLngrnpl7Tot53nmoTkuIDljYrvvIgo5LiL5LiA5Liq6IqC54K5IHN0YXJ0WCAtIOW9k+WJjeiKgueCueeahCBlbmRYKSAvIDIp77yMZW5kWCA9IOW9k+WJjeiKgueCueeahCBzdGFydFggKyB3aWR0aDtcbiAgICAgICAgICAgICAgICAgKiAgICAgIGIuIOacgOWQjuS4gOS4quiKgueCueeahOWPs+S+p++8muWbuuWumuWAvO+8iOadpea6kOS6jiBnZXRNYWluQXhsZe+8jOesrOS6jOe6p+iKgueCue+8mkJBU0UgKiA477yM5YW25LuWIEJBU0UgKiAzICsgc3Ryb2tlV2lkdGggLyAy77yJ77ybXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgZmFrZVkgPSB0YXJnZXRDb21wb25lbnQubm9kZS55O1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQodGFyZ2V0Q29tcG9uZW50LnBhcmVudC5vcmlnaW4pIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldEluZGV4ID0gcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmNoaWxkcmVuLmluZGV4T2YodGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luKTtcblxuICAgICAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICdsZWZ0Jykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgb2Zmc2V0WCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzRmlyc3ROb2RlID0gdGFyZ2V0SW5kZXggPT09IDA7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0ZpcnN0Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WCA9IHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5pc1Jvb3QgPyBCQVNFICogOCA6IEJBU0UgKiAzICsgc3Ryb2tlV2lkdGggLyAyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlblt0YXJnZXRJbmRleCAtIDFdXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKHByZXZpb3VzQ29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3BhY2UgPSB0YXJnZXRSZWN0LnggLSAocHJldmlvdXNSZWN0LnggKyBwcmV2aW91c1JlY3Qud2lkdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WCA9IHNwYWNlIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmYWtlWCA9IHRhcmdldFJlY3QueCAtIG9mZnNldFggLSB3aWR0aCAvIDIgLSBNYXRoLmNlaWwoc3Ryb2tlV2lkdGggLyAyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgb2Zmc2V0WCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTGFzdE5vZGUgPSB0YXJnZXRJbmRleCA9PT0gcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmNoaWxkcmVuLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0xhc3ROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYID0gcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmlzUm9vdCA/IEJBU0UgKiA4IDogQkFTRSAqIDMgKyBzdHJva2VXaWR0aCAvIDI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uY2hpbGRyZW5bdGFyZ2V0SW5kZXggKyAxXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKG5leHRDb21wb25lbnQubm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFjZSA9IG5leHRSZWN0LnggLSAodGFyZ2V0UmVjdC54ICsgdGFyZ2V0UmVjdC53aWR0aCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYID0gc3BhY2UgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZha2VYID0gdGFyZ2V0UmVjdC54ICsgd2lkdGggKyBvZmZzZXRYIC0gd2lkdGggLyAyIC0gTWF0aC5jZWlsKHN0cm9rZVdpZHRoIC8gMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRYID0gZmFrZVg7XG4gICAgICAgICAgICAgICAgaWYgKGlzVG9wTGF5b3V0KHBhcmVudExheW91dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8g5Zug5Li655+p5b2i5piv5LuO5bem5LiK6KeS5Li66LW354K55ZCR5LiL55S755qE77yM5omA5Lul6ZyA6KaB5ZCR5LiK5YGP56e75LiA5Liq55+p5b2i55qE6auY5bqm77yILTEy77yJXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRZID0gZmFrZVkgKyBoZWlnaHQgKyB0YXJnZXRDb21wb25lbnQubm9kZS52R2FwIC0gMTI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc0JvdHRvbUxheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRZID0gZmFrZVkgKyB0YXJnZXRDb21wb25lbnQubm9kZS52R2FwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFggPSBzdGFydFJlY3RhbmdsZVBvaW50WCArIDMwO1xuICAgICAgICAgICAgICAgIGVuZFJlY3RhbmdsZVBvaW50WSA9IHN0YXJ0UmVjdGFuZ2xlUG9pbnRZICsgMTI7XG4gICAgICAgICAgICAgICAgY29uc3QgZmFrZU5vZGU6IE1pbmROb2RlID0geyAuLi50YXJnZXRDb21wb25lbnQubm9kZSwgeDogZmFrZVgsIHk6IGZha2VZLCB3aWR0aDogMzAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5rU1ZHRyA9IGRyYXdMaW5rKHJvdWdoU1ZHLCBwYXJlbnRDb21wb25lbnQubm9kZSwgZmFrZU5vZGUsIFBSSU1BUllfQ09MT1IsIGZhbHNlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgZmFrZURyb3BOb2RlRz8uYXBwZW5kQ2hpbGQobGlua1NWR0cpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGxpbmtTVkdHID0gcm91Z2hTVkcubGluZWFyUGF0aChsaW5lUG9pbnRzLCB7IHN0cm9rZTogUFJJTUFSWV9DT0xPUiwgc3Ryb2tlV2lkdGggfSk7XG4gICAgICAgICAgICBmYWtlRHJvcE5vZGVHPy5hcHBlbmRDaGlsZChsaW5rU1ZHRyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8g5p6E6YCg5LiA5Liq55+p5b2i5qGG5Z2Q5qCHXG4gICAgICAgIGxldCBmYWtlUmVjdGFuZ2xlRyA9IGRyYXdSb3VuZFJlY3RhbmdsZShcbiAgICAgICAgICAgIHJvdWdoU1ZHLFxuICAgICAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFgsXG4gICAgICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WSxcbiAgICAgICAgICAgIGVuZFJlY3RhbmdsZVBvaW50WCxcbiAgICAgICAgICAgIGVuZFJlY3RhbmdsZVBvaW50WSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdHJva2U6IFBSSU1BUllfQ09MT1IsXG4gICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgICAgICAgZmlsbDogUFJJTUFSWV9DT0xPUixcbiAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBmYWtlRHJvcE5vZGVHPy5hcHBlbmRDaGlsZChmYWtlUmVjdGFuZ2xlRyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8g5re35ZCI5biD5bGA55S757q/6YC76L6RXG4gICAgICAgIGlmIChpc0hvcml6b250YWxMb2dpY0xheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICBpZiAoaXNJbmRlbnRlZExheW91dChsYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmFrZVBvaW50ID0gZ2V0SW5kZW50ZWRGYWtlUG9pbnQobGF5b3V0LCBwb2ludE9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIGRyYXdJbmRlbnROb2RlRyhmYWtlRHJvcE5vZGVHIGFzIFNWR0dFbGVtZW50LCByb3VnaFNWRywgZmFrZVBvaW50LCB0YXJnZXRDb21wb25lbnQubm9kZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldEhvcml6b250YWxGYWtlWSA9IChcbiAgICBkZXRlY3RSZXN1bHQ6ICd0b3AnIHwgJ2JvdHRvbScsXG4gICAgdGFyZ2V0SW5kZXg6IG51bWJlcixcbiAgICBwYXJlbnROb2RlOiBNaW5kTm9kZSxcbiAgICB0YXJnZXRSZWN0OiB7XG4gICAgICAgIHg6IG51bWJlcjtcbiAgICAgICAgeTogbnVtYmVyO1xuICAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICB9LFxuICAgIGxheW91dDogTWluZExheW91dFR5cGUsXG4gICAgZmFrZVk6IG51bWJlclxuKSA9PiB7XG4gICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgaWYgKHRhcmdldEluZGV4ID09PSAwICYmIGlzVG9wTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55ICsgdGFyZ2V0UmVjdC5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldEluZGV4ID4gMCkge1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KHBhcmVudE5vZGUub3JpZ2luLmNoaWxkcmVuW3RhcmdldEluZGV4IC0gMV0pIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKHByZXZpb3VzQ29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgY29uc3QgdG9wWSA9IHByZXZpb3VzUmVjdC55ICsgcHJldmlvdXNSZWN0LmhlaWdodDtcbiAgICAgICAgICAgIGZha2VZID0gdG9wWSArICh0YXJnZXRSZWN0LnkgLSB0b3BZKSAvIDU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgKyB0YXJnZXRSZWN0LmhlaWdodCArIDMwO1xuICAgICAgICBpZiAodGFyZ2V0SW5kZXggPCBwYXJlbnROb2RlLm9yaWdpbi5jaGlsZHJlbi5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChwYXJlbnROb2RlLm9yaWdpbi5jaGlsZHJlblt0YXJnZXRJbmRleCArIDFdKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKG5leHRDb21wb25lbnQubm9kZSk7XG4gICAgICAgICAgICBjb25zdCB0b3BZID0gdGFyZ2V0UmVjdC55ICsgdGFyZ2V0UmVjdC5oZWlnaHQ7XG4gICAgICAgICAgICBmYWtlWSA9IHRvcFkgKyAobmV4dFJlY3QueSAtIHRvcFkpIC8gNTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFyZ2V0SW5kZXggPT09IHBhcmVudE5vZGUub3JpZ2luLmNoaWxkcmVuLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55ICsgdGFyZ2V0UmVjdC5oZWlnaHQgKyAzMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFrZVk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW5kZW50ZWRGYWtlUG9pbnQgPSAoXG4gICAgbGF5b3V0OiBNaW5kTGF5b3V0VHlwZSxcbiAgICBwb2ludE9wdGlvbnM6IHtcbiAgICAgICAgZmFrZVg6IG51bWJlcjtcbiAgICAgICAgZmFrZVk6IG51bWJlcjtcbiAgICAgICAgeDogbnVtYmVyO1xuICAgICAgICB5OiBudW1iZXI7XG4gICAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgICAgIGhlaWdodDogbnVtYmVyO1xuICAgICAgICBzdHJva2VXaWR0aDogbnVtYmVyO1xuICAgIH1cbikgPT4ge1xuICAgIGxldCB7IGZha2VYLCBmYWtlWSwgeCwgeSwgd2lkdGgsIGhlaWdodCwgc3Ryb2tlV2lkdGggfSA9IHBvaW50T3B0aW9ucztcbiAgICBjb25zdCBoR2FwID0gQkFTRSAqIDQ7XG4gICAgY29uc3QgdkdhcCA9IEJBU0UgKiA2O1xuICAgIGNvbnN0IG9mZnNldFggPSBoR2FwICsgd2lkdGggLyAyICsgc3Ryb2tlV2lkdGg7XG4gICAgY29uc3Qgb2Zmc2V0WSA9IHZHYXAgKyBoZWlnaHQgLyAyICsgc3Ryb2tlV2lkdGg7XG4gICAgaWYgKGlzTGVmdExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VYID0geCAtIG9mZnNldFg7XG4gICAgfVxuICAgIGlmIChpc1JpZ2h0TGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgZmFrZVggPSB4ICsgb2Zmc2V0WDtcbiAgICB9XG4gICAgaWYgKGlzVG9wTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgZmFrZVkgPSB5IC0gb2Zmc2V0WTtcbiAgICB9XG4gICAgaWYgKGlzQm90dG9tTGF5b3V0KGxheW91dCkpIHtcbiAgICAgICAgZmFrZVkgPSB5ICsgaGVpZ2h0ICsgb2Zmc2V0WTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZmFrZVgsIGZha2VZIH07XG59O1xuXG5leHBvcnQgY29uc3QgZHJhd0luZGVudE5vZGVHID0gKFxuICAgIGZha2VEcm9wTm9kZUc6IFNWR0dFbGVtZW50LFxuICAgIHJvdWdoU1ZHOiBSb3VnaFNWRyxcbiAgICBmYWtlUG9pbnQ6IHsgZmFrZVg6IG51bWJlcjsgZmFrZVk6IG51bWJlciB9LFxuICAgIG5vZGU6IE1pbmROb2RlXG4pID0+IHtcbiAgICBjb25zdCB7IGZha2VYLCBmYWtlWSB9ID0gZmFrZVBvaW50O1xuICAgIGNvbnN0IGZha2VOb2RlOiBNaW5kTm9kZSA9IHsgLi4ubm9kZSwgeDogZmFrZVgsIHk6IGZha2VZLCB3aWR0aDogMzAsIGhlaWdodDogMTIgfTtcbiAgICBjb25zdCBsaW5rU1ZHRyA9IGRyYXdJbmRlbnRlZExpbmsocm91Z2hTVkcsIG5vZGUsIGZha2VOb2RlLCBQUklNQVJZX0NPTE9SLCBmYWxzZSk7XG5cbiAgICBjb25zdCBzdGFydFJlY3RhbmdsZVBvaW50WCA9IGZha2VYLFxuICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WSA9IGZha2VZLFxuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFggPSBmYWtlWCArIDMwLFxuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFkgPSBmYWtlWSArIDEyO1xuICAgIGNvbnN0IGZha2VSZWN0YW5nbGVHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICByb3VnaFNWRyxcbiAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFgsXG4gICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRZLFxuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFgsXG4gICAgICAgIGVuZFJlY3RhbmdsZVBvaW50WSxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgICBmaWxsOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH1cbiAgICApO1xuICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGxpbmtTVkdHKTtcbiAgICBmYWtlRHJvcE5vZGVHPy5hcHBlbmRDaGlsZChmYWtlUmVjdGFuZ2xlRyk7XG59O1xuIl19
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhdy1wbGFjZWhvbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3V0aWxzL2RyYXctcGxhY2Vob2xkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFTLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUNILGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IscUJBQXFCLEVBRXhCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQ3BDLEtBQWlCLEVBQ2pCLFVBQStELEVBQy9ELGFBQXNDLEVBQ3hDLEVBQUU7SUFDQSxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQXNCLENBQUM7SUFDMUYsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVELElB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LEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDbkMsTUFBTSxRQUFRLEdBQWEsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEYsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRS9FLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxFQUM5QixvQkFBb0IsR0FBRyxLQUFLLEVBQzVCLGtCQUFrQixHQUFHLEtBQUssR0FBRyxFQUFFLEVBQy9CLGtCQUFrQixHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDcEMsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQ3JDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQzdCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQjtRQUNJLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLFdBQVcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxFQUFFLGFBQWE7UUFDbkIsU0FBUyxFQUFFLE9BQU87S0FDckIsQ0FDSixDQUFDO0lBQ0YsYUFBYSxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxhQUFhLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJBU0UsIFBSSU1BUllfQ09MT1IsIFNUUk9LRV9XSURUSCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBkcmF3TGluayB9IGZyb20gJy4uL2RyYXcvbGluayc7XG5pbXBvcnQgeyBEZXRlY3RSZXN1bHQsIE1pbmRFbGVtZW50LCBNaW5kTm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWluZE5vZGVDb21wb25lbnQgfSBmcm9tICcuLi9ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuL2dyYXBoJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudCwgUG9pbnQsIGRyYXdSb3VuZFJlY3RhbmdsZSB9IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IE1pbmRRdWVyaWVzIH0gZnJvbSAnLi4vcXVlcmllcyc7XG5pbXBvcnQge1xuICAgIGlzQm90dG9tTGF5b3V0LFxuICAgIGlzSG9yaXpvbnRhbExheW91dCxcbiAgICBpc0hvcml6b250YWxMb2dpY0xheW91dCxcbiAgICBpc0luZGVudGVkTGF5b3V0LFxuICAgIGlzUmlnaHRMYXlvdXQsXG4gICAgaXNWZXJ0aWNhbExvZ2ljTGF5b3V0LFxuICAgIE1pbmRMYXlvdXRUeXBlXG59IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGRyYXdJbmRlbnRlZExpbmsgfSBmcm9tICcuLi9kcmF3L2luZGVudGVkLWxpbmsnO1xuaW1wb3J0IHsgaXNMZWZ0TGF5b3V0LCBpc1RvcExheW91dCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGlzU3RhbmRhcmRMYXlvdXQgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBpc01peGVkTGF5b3V0IH0gZnJvbSAnLi9sYXlvdXQnO1xuXG5leHBvcnQgY29uc3QgZHJhd1BsYWNlaG9sZGVyRHJvcE5vZGVHID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIGRyb3BUYXJnZXQ6IHsgdGFyZ2V0OiBNaW5kRWxlbWVudDsgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHQgfSxcbiAgICBmYWtlRHJvcE5vZGVHOiBTVkdHRWxlbWVudCB8IHVuZGVmaW5lZFxuKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChkcm9wVGFyZ2V0LnRhcmdldCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgY29uc3QgdGFyZ2V0UmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZSh0YXJnZXRDb21wb25lbnQubm9kZSk7XG4gICAgaWYgKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ICYmIFsncmlnaHQnLCAnbGVmdCddLmluY2x1ZGVzKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0KSkge1xuICAgICAgICBkcmF3U3RyYWlnaHREcm9wTm9kZUcoYm9hcmQsIHRhcmdldFJlY3QsIGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0LCB0YXJnZXRDb21wb25lbnQsIGZha2VEcm9wTm9kZUcpO1xuICAgIH1cblxuICAgIGlmICh0YXJnZXRDb21wb25lbnQucGFyZW50ICYmIGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0ICYmIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0KSkge1xuICAgICAgICBjb25zdCBwYXJlbnRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KHRhcmdldENvbXBvbmVudC5wYXJlbnQub3JpZ2luKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgY29uc3QgdGFyZ2V0SW5kZXggPSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uY2hpbGRyZW4uaW5kZXhPZih0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4pO1xuICAgICAgICBkcmF3Q3VydmVQbGFjZWhvbGRlckRyb3BOb2RlRyhcbiAgICAgICAgICAgIGJvYXJkLFxuICAgICAgICAgICAgdGFyZ2V0UmVjdCxcbiAgICAgICAgICAgIGRyb3BUYXJnZXQuZGV0ZWN0UmVzdWx0LFxuICAgICAgICAgICAgdGFyZ2V0SW5kZXgsXG4gICAgICAgICAgICB0YXJnZXRDb21wb25lbnQsXG4gICAgICAgICAgICBwYXJlbnRDb21wb25lbnQsXG4gICAgICAgICAgICBmYWtlRHJvcE5vZGVHXG4gICAgICAgICk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdDdXJ2ZVBsYWNlaG9sZGVyRHJvcE5vZGVHID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHRhcmdldFJlY3Q6IHtcbiAgICAgICAgeDogbnVtYmVyO1xuICAgICAgICB5OiBudW1iZXI7XG4gICAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgICAgIGhlaWdodDogbnVtYmVyO1xuICAgIH0sXG4gICAgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHQsXG4gICAgdGFyZ2V0SW5kZXg6IG51bWJlcixcbiAgICB0YXJnZXRDb21wb25lbnQ6IE1pbmROb2RlQ29tcG9uZW50LFxuICAgIHBhcmVudENvbXBvbmVudDogTWluZE5vZGVDb21wb25lbnQsXG4gICAgZmFrZURyb3BOb2RlRzogU1ZHR0VsZW1lbnQgfCB1bmRlZmluZWRcbikgPT4ge1xuICAgIGNvbnN0IHBhcmVudE5vZGVMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbik7XG4gICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudCh0YXJnZXRDb21wb25lbnQubm9kZS5wYXJlbnQub3JpZ2luKTtcbiAgICBjb25zdCBzdHJva2VXaWR0aCA9IHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbi5icmFuY2hXaWR0aCA/IHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbi5icmFuY2hXaWR0aCA6IFNUUk9LRV9XSURUSDtcbiAgICBsZXQgZmFrZVggPSB0YXJnZXRDb21wb25lbnQubm9kZS54LFxuICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSAtIDMwLFxuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRYID0gdGFyZ2V0UmVjdC54LFxuICAgICAgICBmYWtlUmVjdGFuZ2xlRW5kWCA9IHRhcmdldFJlY3QueCArIDMwLFxuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRZID0gZmFrZVksXG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRZID0gZmFrZVJlY3RhbmdsZVN0YXJ0WSArIDEyLFxuICAgICAgICB3aWR0aCA9IDMwO1xuXG4gICAgaWYgKGlzTGVmdExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VYID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUueCArIHRhcmdldENvbXBvbmVudC5ub2RlLndpZHRoIC0gMzA7XG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFggPSB0YXJnZXRSZWN0LnggKyB0YXJnZXRSZWN0LndpZHRoIC0gMzA7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRYID0gdGFyZ2V0UmVjdC54ICsgdGFyZ2V0UmVjdC53aWR0aDtcbiAgICB9XG4gICAgaWYgKGlzSG9yaXpvbnRhbExvZ2ljTGF5b3V0KHBhcmVudE5vZGVMYXlvdXQpKSB7XG4gICAgICAgIGZha2VZID0gZ2V0SG9yaXpvbnRhbEZha2VZKGRldGVjdFJlc3VsdCBhcyAndG9wJyB8ICdib3R0b20nLCB0YXJnZXRJbmRleCwgcGFyZW50Q29tcG9uZW50Lm5vZGUsIHRhcmdldFJlY3QsIGxheW91dCwgZmFrZVkpO1xuICAgICAgICBpZiAoaXNTdGFuZGFyZExheW91dChwYXJlbnROb2RlTGF5b3V0KSkge1xuICAgICAgICAgICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4ucmlnaHROb2RlQ291bnQgfHwgMDtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHBhcmVudENvbXBvbmVudC5ub2RlLmNoaWxkcmVuLmZpbmRJbmRleCh4ID0+IHggPT09IHRhcmdldENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGlzTGVmdCA9IGlkeCA+PSByaWdodE5vZGVDb3VudDtcbiAgICAgICAgICAgIC8vIOagh+WHhuW4g+WxgOeahOW3pu+8jOmcgOimgeiwg+aVtCB4XG4gICAgICAgICAgICBpZiAoaXNMZWZ0KSB7XG4gICAgICAgICAgICAgICAgZmFrZVggPSB0YXJnZXRDb21wb25lbnQubm9kZS54ICsgdGFyZ2V0Q29tcG9uZW50Lm5vZGUud2lkdGggLSAzMDtcbiAgICAgICAgICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRYID0gdGFyZ2V0UmVjdC54ICsgdGFyZ2V0UmVjdC53aWR0aCAtIDMwO1xuICAgICAgICAgICAgICAgIGZha2VSZWN0YW5nbGVFbmRYID0gdGFyZ2V0UmVjdC54ICsgdGFyZ2V0UmVjdC53aWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlzTGVmdEZpcnN0ID0gaWR4ID09PSByaWdodE5vZGVDb3VudDtcbiAgICAgICAgICAgIGNvbnN0IGlzUmlnaHRMYXN0ID0gaWR4ID09PSByaWdodE5vZGVDb3VudCAtIDE7XG4gICAgICAgICAgICAvLyDmi5bmi73oh7Plt6bnrKzkuIDkuKroioLngrnnmoTmg4XlhrVcbiAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICd0b3AnICYmIGlzTGVmdEZpcnN0KSB7XG4gICAgICAgICAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgLSB0YXJnZXRSZWN0LmhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICdib3R0b20nICYmIGlzUmlnaHRMYXN0KSB7XG4gICAgICAgICAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgKyB0YXJnZXRSZWN0LmhlaWdodCArIDMwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFkgPSBmYWtlWTtcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFkgPSBmYWtlUmVjdGFuZ2xlU3RhcnRZICsgMTI7XG4gICAgfVxuXG4gICAgaWYgKGlzVmVydGljYWxMb2dpY0xheW91dChsYXlvdXQpKSB7XG4gICAgICAgIHBhcmVudENvbXBvbmVudCA9IHRhcmdldENvbXBvbmVudDtcbiAgICAgICAgdGFyZ2V0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudCh0YXJnZXRDb21wb25lbnQucGFyZW50Lm9yaWdpbikgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgIGZha2VYID0gcGFyZW50Q29tcG9uZW50Lm5vZGUueDtcbiAgICAgICAgd2lkdGggPSBwYXJlbnRDb21wb25lbnQubm9kZS53aWR0aDtcbiAgICAgICAgY29uc3QgdkdhcCA9IEJBU0UgKiA2ICsgc3Ryb2tlV2lkdGg7XG4gICAgICAgIGlmIChpc1RvcExheW91dChsYXlvdXQpICYmIGRldGVjdFJlc3VsdCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55IC0gdkdhcDtcbiAgICAgICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFkgPSBmYWtlWSAtIHZHYXAgKyBzdHJva2VXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNCb3R0b21MYXlvdXQobGF5b3V0KSAmJiBkZXRlY3RSZXN1bHQgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSArIHRhcmdldFJlY3QuaGVpZ2h0ICsgdkdhcDtcbiAgICAgICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFkgPSBmYWtlWSArIHZHYXAgLSBzdHJva2VXaWR0aDtcbiAgICAgICAgfVxuICAgICAgICBmYWtlUmVjdGFuZ2xlU3RhcnRYID0gZmFrZVggKyBNYXRoLmNlaWwocGFyZW50Q29tcG9uZW50Lm5vZGUud2lkdGggLyAyKSAtIHBhcmVudENvbXBvbmVudC5ub2RlLmhHYXAgLSBNYXRoLmNlaWwoc3Ryb2tlV2lkdGggLyAyKTtcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFggPSBmYWtlUmVjdGFuZ2xlU3RhcnRYICsgMzA7XG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRZID0gZmFrZVJlY3RhbmdsZVN0YXJ0WSArIDEyO1xuICAgIH1cbiAgICBpZiAoaXNJbmRlbnRlZExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIC8vIOWBj+enu+S4gOS4qiBHYXBcbiAgICAgICAgaWYgKGlzTGVmdExheW91dChsYXlvdXQpKSB7XG4gICAgICAgICAgICBmYWtlWCAtPSBCQVNFICogNDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNSaWdodExheW91dChsYXlvdXQpKSB7XG4gICAgICAgICAgICBmYWtlWCArPSBCQVNFICogNDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNUb3BMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgaWYgKGRldGVjdFJlc3VsdCA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0xhc3ROb2RlID0gdGFyZ2V0SW5kZXggPT09IHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlbi5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIGlmIChpc0xhc3ROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55IC0gdGFyZ2V0UmVjdC5oZWlnaHQgLSBCQVNFO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmNoaWxkcmVuW3RhcmdldEluZGV4ICsgMV1cbiAgICAgICAgICAgICAgICAgICAgKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dFJlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUobmV4dENvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgZmFrZVkgPSB0YXJnZXRSZWN0LnkgLSBNYXRoLmFicygobmV4dFJlY3QueSArIG5leHRSZWN0LmhlaWdodCAtIHRhcmdldFJlY3QueSkgLyAyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRmlyc3ROb2RlID0gdGFyZ2V0SW5kZXggPT09IDA7XG4gICAgICAgICAgICAgICAgaWYgKGlzRmlyc3ROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFJlY3QgPSBnZXRSZWN0YW5nbGVCeU5vZGUocGFyZW50Q29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBmYWtlWSA9IHBhcmVudFJlY3QueSAtIHBhcmVudFJlY3QuaGVpZ2h0IC8gMiAtIEJBU0U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmNoaWxkcmVuW3RhcmdldEluZGV4ICsgMV1cbiAgICAgICAgICAgICAgICAgICAgKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNSZWN0ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKHByZXZpb3VzQ29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICBmYWtlWSA9IHByZXZpb3VzUmVjdC55IC0gTWF0aC5hYnMoKHRhcmdldFJlY3QueSArIHRhcmdldFJlY3QuaGVpZ2h0IC0gcHJldmlvdXNSZWN0LnkpIC8gMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFggPSBmYWtlWDtcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFggPSBmYWtlUmVjdGFuZ2xlU3RhcnRYICsgMzA7XG4gICAgICAgIGZha2VSZWN0YW5nbGVTdGFydFkgPSBmYWtlWTtcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFkgPSBmYWtlUmVjdGFuZ2xlU3RhcnRZICsgMTI7XG4gICAgfVxuXG4gICAgLy8g5p6E6YCg5LiA5p2h5puy57q/XG4gICAgY29uc3QgZmFrZU5vZGU6IE1pbmROb2RlID0geyAuLi50YXJnZXRDb21wb25lbnQubm9kZSwgeDogZmFrZVgsIHk6IGZha2VZLCB3aWR0aCwgaGVpZ2h0OiAxMiB9O1xuICAgIGNvbnN0IGxpbmtTVkdHID0gaXNJbmRlbnRlZExheW91dChsYXlvdXQpXG4gICAgICAgID8gZHJhd0luZGVudGVkTGluayhib2FyZCwgcGFyZW50Q29tcG9uZW50Lm5vZGUsIGZha2VOb2RlLCBQUklNQVJZX0NPTE9SLCBmYWxzZSlcbiAgICAgICAgOiBkcmF3TGluayhib2FyZCwgcGFyZW50Q29tcG9uZW50Lm5vZGUsIGZha2VOb2RlLCBQUklNQVJZX0NPTE9SLCBpc0hvcml6b250YWxMYXlvdXQobGF5b3V0KSwgZmFsc2UpO1xuICAgIC8vIOaehOmAoOS4gOS4quefqeW9ouahhuWdkOagh1xuICAgIGNvbnN0IGZha2VSZWN0YW5nbGVHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSxcbiAgICAgICAgZmFrZVJlY3RhbmdsZVN0YXJ0WCxcbiAgICAgICAgZmFrZVJlY3RhbmdsZVN0YXJ0WSxcbiAgICAgICAgZmFrZVJlY3RhbmdsZUVuZFgsXG4gICAgICAgIGZha2VSZWN0YW5nbGVFbmRZLFxuICAgICAgICB7XG4gICAgICAgICAgICBzdHJva2U6IFBSSU1BUllfQ09MT1IsXG4gICAgICAgICAgICBzdHJva2VXaWR0aDogMixcbiAgICAgICAgICAgIGZpbGw6IFBSSU1BUllfQ09MT1IsXG4gICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgfVxuICAgICk7XG4gICAgZmFrZURyb3BOb2RlRz8uYXBwZW5kQ2hpbGQobGlua1NWR0cpO1xuICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGZha2VSZWN0YW5nbGVHKTtcbn07XG5leHBvcnQgY29uc3QgZHJhd1N0cmFpZ2h0RHJvcE5vZGVHID0gKFxuICAgIGJvYXJkOiBQbGFpdEJvYXJkLFxuICAgIHRhcmdldFJlY3Q6IHtcbiAgICAgICAgeDogbnVtYmVyO1xuICAgICAgICB5OiBudW1iZXI7XG4gICAgICAgIHdpZHRoOiBudW1iZXI7XG4gICAgICAgIGhlaWdodDogbnVtYmVyO1xuICAgIH0sXG4gICAgZGV0ZWN0UmVzdWx0OiBEZXRlY3RSZXN1bHQsXG4gICAgdGFyZ2V0Q29tcG9uZW50OiBNaW5kTm9kZUNvbXBvbmVudCxcbiAgICBmYWtlRHJvcE5vZGVHOiBTVkdHRWxlbWVudCB8IHVuZGVmaW5lZFxuKSA9PiB7XG4gICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSB0YXJnZXRSZWN0O1xuICAgIGNvbnN0IGxpbmVMZW5ndGggPSA0MDtcbiAgICBsZXQgc3RhcnRMaW5lUG9pbnQgPSB4ICsgd2lkdGg7XG4gICAgbGV0IGVuZExpbmVQb2ludCA9IHggKyB3aWR0aCArIGxpbmVMZW5ndGg7XG4gICAgbGV0IHN0YXJ0UmVjdGFuZ2xlUG9pbnRYID0geCArIHdpZHRoICsgbGluZUxlbmd0aDtcbiAgICBsZXQgZW5kUmVjdGFuZ2xlUG9pbnRYID0geCArIGxpbmVMZW5ndGggKyB3aWR0aCArIDMwO1xuICAgIGxldCBzdGFydFJlY3RhbmdsZVBvaW50WSA9IHkgKyBoZWlnaHQgLyAyIC0gNjtcbiAgICBsZXQgZW5kUmVjdGFuZ2xlUG9pbnRZID0geSArIGhlaWdodCAvIDIgLSA2ICsgMTI7XG5cbiAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAnbGVmdCcpIHtcbiAgICAgICAgc3RhcnRMaW5lUG9pbnQgPSB4IC0gbGluZUxlbmd0aDtcbiAgICAgICAgZW5kTGluZVBvaW50ID0geDtcbiAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFggPSB4IC0gbGluZUxlbmd0aCAtIDMwO1xuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFggPSB4IC0gbGluZUxlbmd0aDtcbiAgICB9XG4gICAgbGV0IGZha2VZID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUueTtcbiAgICBsZXQgZmFrZVggPSB0YXJnZXRSZWN0Lng7XG4gICAgY29uc3Qgc3Ryb2tlV2lkdGggPSB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uYnJhbmNoV2lkdGggPyB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uYnJhbmNoV2lkdGggOiBTVFJPS0VfV0lEVEg7XG4gICAgY29uc3QgcG9pbnRPcHRpb25zID0ge1xuICAgICAgICBmYWtlWCxcbiAgICAgICAgZmFrZVksXG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHN0cm9rZVdpZHRoXG4gICAgfTtcbiAgICBjb25zdCBwYXJlbnRMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KFxuICAgICAgICB0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4uaXNSb290ID8gdGFyZ2V0Q29tcG9uZW50Lm5vZGUub3JpZ2luIDogdGFyZ2V0Q29tcG9uZW50Lm5vZGUucGFyZW50Lm9yaWdpblxuICAgICk7XG4gICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudCh0YXJnZXRDb21wb25lbnQubm9kZS5vcmlnaW4pO1xuICAgIGlmICghaXNNaXhlZExheW91dChwYXJlbnRMYXlvdXQsIGxheW91dCkpIHtcbiAgICAgICAgLy8g5p6E6YCg5LiA5p2h55u057q/XG4gICAgICAgIGxldCBsaW5lUG9pbnRzID0gW1xuICAgICAgICAgICAgW3N0YXJ0TGluZVBvaW50LCB5ICsgaGVpZ2h0IC8gMl0sXG4gICAgICAgICAgICBbZW5kTGluZVBvaW50LCB5ICsgaGVpZ2h0IC8gMl1cbiAgICAgICAgXSBhcyBQb2ludFtdO1xuICAgICAgICBpZiAoaXNJbmRlbnRlZExheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICBjb25zdCBmYWtlUG9pbnQgPSBnZXRJbmRlbnRlZEZha2VQb2ludChwYXJlbnRMYXlvdXQsIHBvaW50T3B0aW9ucyk7XG4gICAgICAgICAgICBkcmF3SW5kZW50Tm9kZUcoYm9hcmQsIGZha2VEcm9wTm9kZUcgYXMgU1ZHR0VsZW1lbnQsIGZha2VQb2ludCwgdGFyZ2V0Q29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKGlzVmVydGljYWxMb2dpY0xheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICBpZiAoIXRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbi5pc1Jvb3QpIHtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiDorqHnrpfpgLvovpHvvJpcbiAgICAgICAgICAgICAgICAgKiAgMS4g56e75Yqo5Yiw5bem5L6n77ya5b2T5YmN6IqC54K5IHN0YXJ0WCAtIOWBj+enu+WAvO+8jOWBj+enu+WAvOiuoeeul+WmguS4i++8mlxuICAgICAgICAgICAgICAgICAqICAgICAgYS4g56ys5LiA5Liq6IqC54K577yaIOWbuuWumuWAvO+8iOadpea6kOS6jiBnZXRNYWluQXhsZe+8jOesrOS6jOe6p+iKgueCue+8mkJBU0UgKiA477yM5YW25LuWIEJBU0UgKiAzICsgc3Ryb2tlV2lkdGggLyAy77yJ77ybXG4gICAgICAgICAgICAgICAgICogICAgICBiLiDnrKzkuozkuKroioLngrnliLDmnIDlkI7kuIDkuKroioLngrnkuYvpl7TvvJrkuIrkuIDkuKroioLngrnliLDlvZPliY3oioLngrnpl7Tot53nmoTkuIDljYrvvIgo5b2T5YmN6IqC54K5IHN0YXJ0WCAtIOS4iuS4gOS4quiKgueCueeahCBlbmRYKSAvIDIp77yMZW5kWCA9IOW9k+WJjeiKgueCueeahCBzdGFydFggKyB3aWR0aDtcbiAgICAgICAgICAgICAgICAgKiAgMi4g56e75Yqo5Yiw5Y+z5L6n77ya5b2T5YmN6IqC54K5IHggKyB3aWR0aCArIOWBj+enu+WAvO+8jOWBj+enu+WAvOiuoeeul+WmguS4i++8mlxuICAgICAgICAgICAgICAgICAqICAgICAgYS4g56ys5LqM5Liq6IqC54K55Yiw5pyA5ZCO5LiA5Liq6IqC54K55LmL6Ze055qE5Y+z5L6n77ya5b2T5YmN6IqC54K55Yiw5LiL5LiA5Liq6IqC54K56Ze06Led55qE5LiA5Y2K77yIKOS4i+S4gOS4quiKgueCuSBzdGFydFggLSDlvZPliY3oioLngrnnmoQgZW5kWCkgLyAyKe+8jGVuZFggPSDlvZPliY3oioLngrnnmoQgc3RhcnRYICsgd2lkdGg7XG4gICAgICAgICAgICAgICAgICogICAgICBiLiDmnIDlkI7kuIDkuKroioLngrnnmoTlj7PkvqfvvJrlm7rlrprlgLzvvIjmnaXmupDkuo4gZ2V0TWFpbkF4bGXvvIznrKzkuoznuqfoioLngrnvvJpCQVNFICogOO+8jOWFtuS7liBCQVNFICogMyArIHN0cm9rZVdpZHRoIC8gMu+8ie+8m1xuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGZha2VZID0gdGFyZ2V0Q29tcG9uZW50Lm5vZGUueTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KHRhcmdldENvbXBvbmVudC5wYXJlbnQub3JpZ2luKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXRJbmRleCA9IHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlbi5pbmRleE9mKHRhcmdldENvbXBvbmVudC5ub2RlLm9yaWdpbik7XG5cbiAgICAgICAgICAgICAgICBpZiAoZGV0ZWN0UmVzdWx0ID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9mZnNldFggPSAwO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0ZpcnN0Tm9kZSA9IHRhcmdldEluZGV4ID09PSAwO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNGaXJzdE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFggPSBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uaXNSb290ID8gQkFTRSAqIDggOiBCQVNFICogMyArIHN0cm9rZVdpZHRoIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb21wb25lbnQubm9kZS5vcmlnaW4uY2hpbGRyZW5bdGFyZ2V0SW5kZXggLSAxXVxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShwcmV2aW91c0NvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwYWNlID0gdGFyZ2V0UmVjdC54IC0gKHByZXZpb3VzUmVjdC54ICsgcHJldmlvdXNSZWN0LndpZHRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFggPSBzcGFjZSAvIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmFrZVggPSB0YXJnZXRSZWN0LnggLSBvZmZzZXRYIC0gd2lkdGggLyAyIC0gTWF0aC5jZWlsKHN0cm9rZVdpZHRoIC8gMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9mZnNldFggPSAwO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xhc3ROb2RlID0gdGFyZ2V0SW5kZXggPT09IHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5jaGlsZHJlbi5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNMYXN0Tm9kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WCA9IHBhcmVudENvbXBvbmVudC5ub2RlLm9yaWdpbi5pc1Jvb3QgPyBCQVNFICogOCA6IEJBU0UgKiAzICsgc3Ryb2tlV2lkdGggLyAyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29tcG9uZW50Lm5vZGUub3JpZ2luLmNoaWxkcmVuW3RhcmdldEluZGV4ICsgMV1cbiAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0UmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShuZXh0Q29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3BhY2UgPSBuZXh0UmVjdC54IC0gKHRhcmdldFJlY3QueCArIHRhcmdldFJlY3Qud2lkdGgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WCA9IHNwYWNlIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmYWtlWCA9IHRhcmdldFJlY3QueCArIHdpZHRoICsgb2Zmc2V0WCAtIHdpZHRoIC8gMiAtIE1hdGguY2VpbChzdHJva2VXaWR0aCAvIDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WCA9IGZha2VYO1xuICAgICAgICAgICAgICAgIGlmIChpc1RvcExheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOWboOS4uuefqeW9ouaYr+S7juW3puS4iuinkuS4uui1t+eCueWQkeS4i+eUu+eahO+8jOaJgOS7pemcgOimgeWQkeS4iuWBj+enu+S4gOS4quefqeW9oueahOmrmOW6pu+8iC0xMu+8iVxuICAgICAgICAgICAgICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WSA9IGZha2VZICsgaGVpZ2h0ICsgdGFyZ2V0Q29tcG9uZW50Lm5vZGUudkdhcCAtIDEyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNCb3R0b21MYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WSA9IGZha2VZICsgdGFyZ2V0Q29tcG9uZW50Lm5vZGUudkdhcDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZW5kUmVjdGFuZ2xlUG9pbnRYID0gc3RhcnRSZWN0YW5nbGVQb2ludFggKyAzMDtcbiAgICAgICAgICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFkgPSBzdGFydFJlY3RhbmdsZVBvaW50WSArIDEyO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZha2VOb2RlOiBNaW5kTm9kZSA9IHsgLi4udGFyZ2V0Q29tcG9uZW50Lm5vZGUsIHg6IGZha2VYLCB5OiBmYWtlWSwgd2lkdGg6IDMwIH07XG4gICAgICAgICAgICAgICAgY29uc3QgbGlua1NWR0cgPSBkcmF3TGluayhib2FyZCwgcGFyZW50Q29tcG9uZW50Lm5vZGUsIGZha2VOb2RlLCBQUklNQVJZX0NPTE9SLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGxpbmtTVkdHKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBsaW5rU1ZHRyA9IFBsYWl0Qm9hcmQuZ2V0Um91Z2hTVkcoYm9hcmQpLmxpbmVhclBhdGgobGluZVBvaW50cywgeyBzdHJva2U6IFBSSU1BUllfQ09MT1IsIHN0cm9rZVdpZHRoIH0pO1xuICAgICAgICAgICAgZmFrZURyb3BOb2RlRz8uYXBwZW5kQ2hpbGQobGlua1NWR0cpO1xuICAgICAgICB9XG4gICAgICAgIC8vIOaehOmAoOS4gOS4quefqeW9ouahhuWdkOagh1xuICAgICAgICBsZXQgZmFrZVJlY3RhbmdsZUcgPSBkcmF3Um91bmRSZWN0YW5nbGUoXG4gICAgICAgICAgICBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSxcbiAgICAgICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRYLFxuICAgICAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFksXG4gICAgICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFgsXG4gICAgICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLFxuICAgICAgICAgICAgICAgIGZpbGw6IFBSSU1BUllfQ09MT1IsXG4gICAgICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgZmFrZURyb3BOb2RlRz8uYXBwZW5kQ2hpbGQoZmFrZVJlY3RhbmdsZUcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIOa3t+WQiOW4g+WxgOeUu+e6v+mAu+i+kVxuICAgICAgICBpZiAoaXNIb3Jpem9udGFsTG9naWNMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgaWYgKGlzSW5kZW50ZWRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZha2VQb2ludCA9IGdldEluZGVudGVkRmFrZVBvaW50KGxheW91dCwgcG9pbnRPcHRpb25zKTtcbiAgICAgICAgICAgICAgICBkcmF3SW5kZW50Tm9kZUcoYm9hcmQsIGZha2VEcm9wTm9kZUcgYXMgU1ZHR0VsZW1lbnQsIGZha2VQb2ludCwgdGFyZ2V0Q29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRIb3Jpem9udGFsRmFrZVkgPSAoXG4gICAgZGV0ZWN0UmVzdWx0OiAndG9wJyB8ICdib3R0b20nLFxuICAgIHRhcmdldEluZGV4OiBudW1iZXIsXG4gICAgcGFyZW50Tm9kZTogTWluZE5vZGUsXG4gICAgdGFyZ2V0UmVjdDoge1xuICAgICAgICB4OiBudW1iZXI7XG4gICAgICAgIHk6IG51bWJlcjtcbiAgICAgICAgd2lkdGg6IG51bWJlcjtcbiAgICAgICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgfSxcbiAgICBsYXlvdXQ6IE1pbmRMYXlvdXRUeXBlLFxuICAgIGZha2VZOiBudW1iZXJcbikgPT4ge1xuICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICd0b3AnKSB7XG4gICAgICAgIGlmICh0YXJnZXRJbmRleCA9PT0gMCAmJiBpc1RvcExheW91dChsYXlvdXQpKSB7XG4gICAgICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSArIHRhcmdldFJlY3QuaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YXJnZXRJbmRleCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQ29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChwYXJlbnROb2RlLm9yaWdpbi5jaGlsZHJlblt0YXJnZXRJbmRleCAtIDFdKSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShwcmV2aW91c0NvbXBvbmVudC5ub2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHRvcFkgPSBwcmV2aW91c1JlY3QueSArIHByZXZpb3VzUmVjdC5oZWlnaHQ7XG4gICAgICAgICAgICBmYWtlWSA9IHRvcFkgKyAodGFyZ2V0UmVjdC55IC0gdG9wWSkgLyA1O1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChkZXRlY3RSZXN1bHQgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGZha2VZID0gdGFyZ2V0UmVjdC55ICsgdGFyZ2V0UmVjdC5oZWlnaHQgKyAzMDtcbiAgICAgICAgaWYgKHRhcmdldEluZGV4IDwgcGFyZW50Tm9kZS5vcmlnaW4uY2hpbGRyZW4ubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQocGFyZW50Tm9kZS5vcmlnaW4uY2hpbGRyZW5bdGFyZ2V0SW5kZXggKyAxXSkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICBjb25zdCBuZXh0UmVjdCA9IGdldFJlY3RhbmdsZUJ5Tm9kZShuZXh0Q29tcG9uZW50Lm5vZGUpO1xuICAgICAgICAgICAgY29uc3QgdG9wWSA9IHRhcmdldFJlY3QueSArIHRhcmdldFJlY3QuaGVpZ2h0O1xuICAgICAgICAgICAgZmFrZVkgPSB0b3BZICsgKG5leHRSZWN0LnkgLSB0b3BZKSAvIDU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldEluZGV4ID09PSBwYXJlbnROb2RlLm9yaWdpbi5jaGlsZHJlbi5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBmYWtlWSA9IHRhcmdldFJlY3QueSArIHRhcmdldFJlY3QuaGVpZ2h0ICsgMzA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZha2VZO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEluZGVudGVkRmFrZVBvaW50ID0gKFxuICAgIGxheW91dDogTWluZExheW91dFR5cGUsXG4gICAgcG9pbnRPcHRpb25zOiB7XG4gICAgICAgIGZha2VYOiBudW1iZXI7XG4gICAgICAgIGZha2VZOiBudW1iZXI7XG4gICAgICAgIHg6IG51bWJlcjtcbiAgICAgICAgeTogbnVtYmVyO1xuICAgICAgICB3aWR0aDogbnVtYmVyO1xuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcbiAgICAgICAgc3Ryb2tlV2lkdGg6IG51bWJlcjtcbiAgICB9XG4pID0+IHtcbiAgICBsZXQgeyBmYWtlWCwgZmFrZVksIHgsIHksIHdpZHRoLCBoZWlnaHQsIHN0cm9rZVdpZHRoIH0gPSBwb2ludE9wdGlvbnM7XG4gICAgY29uc3QgaEdhcCA9IEJBU0UgKiA0O1xuICAgIGNvbnN0IHZHYXAgPSBCQVNFICogNjtcbiAgICBjb25zdCBvZmZzZXRYID0gaEdhcCArIHdpZHRoIC8gMiArIHN0cm9rZVdpZHRoO1xuICAgIGNvbnN0IG9mZnNldFkgPSB2R2FwICsgaGVpZ2h0IC8gMiArIHN0cm9rZVdpZHRoO1xuICAgIGlmIChpc0xlZnRMYXlvdXQobGF5b3V0KSkge1xuICAgICAgICBmYWtlWCA9IHggLSBvZmZzZXRYO1xuICAgIH1cbiAgICBpZiAoaXNSaWdodExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VYID0geCArIG9mZnNldFg7XG4gICAgfVxuICAgIGlmIChpc1RvcExheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VZID0geSAtIG9mZnNldFk7XG4gICAgfVxuICAgIGlmIChpc0JvdHRvbUxheW91dChsYXlvdXQpKSB7XG4gICAgICAgIGZha2VZID0geSArIGhlaWdodCArIG9mZnNldFk7XG4gICAgfVxuICAgIHJldHVybiB7IGZha2VYLCBmYWtlWSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdJbmRlbnROb2RlRyA9IChcbiAgICBib2FyZDogUGxhaXRCb2FyZCxcbiAgICBmYWtlRHJvcE5vZGVHOiBTVkdHRWxlbWVudCxcbiAgICBmYWtlUG9pbnQ6IHsgZmFrZVg6IG51bWJlcjsgZmFrZVk6IG51bWJlciB9LFxuICAgIG5vZGU6IE1pbmROb2RlXG4pID0+IHtcbiAgICBjb25zdCB7IGZha2VYLCBmYWtlWSB9ID0gZmFrZVBvaW50O1xuICAgIGNvbnN0IGZha2VOb2RlOiBNaW5kTm9kZSA9IHsgLi4ubm9kZSwgeDogZmFrZVgsIHk6IGZha2VZLCB3aWR0aDogMzAsIGhlaWdodDogMTIgfTtcbiAgICBjb25zdCBsaW5rU1ZHRyA9IGRyYXdJbmRlbnRlZExpbmsoYm9hcmQsIG5vZGUsIGZha2VOb2RlLCBQUklNQVJZX0NPTE9SLCBmYWxzZSk7XG5cbiAgICBjb25zdCBzdGFydFJlY3RhbmdsZVBvaW50WCA9IGZha2VYLFxuICAgICAgICBzdGFydFJlY3RhbmdsZVBvaW50WSA9IGZha2VZLFxuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFggPSBmYWtlWCArIDMwLFxuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFkgPSBmYWtlWSArIDEyO1xuICAgIGNvbnN0IGZha2VSZWN0YW5nbGVHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKGJvYXJkKSxcbiAgICAgICAgc3RhcnRSZWN0YW5nbGVQb2ludFgsXG4gICAgICAgIHN0YXJ0UmVjdGFuZ2xlUG9pbnRZLFxuICAgICAgICBlbmRSZWN0YW5nbGVQb2ludFgsXG4gICAgICAgIGVuZFJlY3RhbmdsZVBvaW50WSxcbiAgICAgICAge1xuICAgICAgICAgICAgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg6IDIsXG4gICAgICAgICAgICBmaWxsOiBQUklNQVJZX0NPTE9SLFxuICAgICAgICAgICAgZmlsbFN0eWxlOiAnc29saWQnXG4gICAgICAgIH1cbiAgICApO1xuICAgIGZha2VEcm9wTm9kZUc/LmFwcGVuZENoaWxkKGxpbmtTVkdHKTtcbiAgICBmYWtlRHJvcE5vZGVHPy5hcHBlbmRDaGlsZChmYWtlUmVjdGFuZ2xlRyk7XG59O1xuIl19
@@ -3,7 +3,7 @@ export * from './weak-maps';
3
3
  export * from './mind';
4
4
  export * from './layout';
5
5
  export * from './shape';
6
- export * from './colors';
6
+ export * from './node-style';
7
7
  export * from './is-virtual-key';
8
8
  export * from './draw-placeholder';
9
9
  export * from './direction-detector';
@@ -11,4 +11,4 @@ export * from './direction-corrector';
11
11
  export * from './drop-target-corrector';
12
12
  export * from './abstract/common';
13
13
  export * from './abstract/resize';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ncmFwaCc7XG5leHBvcnQgKiBmcm9tICcuL3dlYWstbWFwcyc7XG5leHBvcnQgKiBmcm9tICcuL21pbmQnO1xuZXhwb3J0ICogZnJvbSAnLi9sYXlvdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9zaGFwZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL2lzLXZpcnR1YWwta2V5JztcbmV4cG9ydCAqIGZyb20gJy4vZHJhdy1wbGFjZWhvbGRlcic7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGlvbi1kZXRlY3Rvcic7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGlvbi1jb3JyZWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kcm9wLXRhcmdldC1jb3JyZWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9hYnN0cmFjdC9jb21tb24nO1xuZXhwb3J0ICogZnJvbSAnLi9hYnN0cmFjdC9yZXNpemUnO1xuIl19
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ncmFwaCc7XG5leHBvcnQgKiBmcm9tICcuL3dlYWstbWFwcyc7XG5leHBvcnQgKiBmcm9tICcuL21pbmQnO1xuZXhwb3J0ICogZnJvbSAnLi9sYXlvdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9zaGFwZSc7XG5leHBvcnQgKiBmcm9tICcuL25vZGUtc3R5bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pcy12aXJ0dWFsLWtleSc7XG5leHBvcnQgKiBmcm9tICcuL2RyYXctcGxhY2Vob2xkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3Rpb24tZGV0ZWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3Rpb24tY29ycmVjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZHJvcC10YXJnZXQtY29ycmVjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vYWJzdHJhY3QvY29tbW9uJztcbmV4cG9ydCAqIGZyb20gJy4vYWJzdHJhY3QvcmVzaXplJztcbiJdfQ==