@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
@@ -13,7 +13,6 @@ import { drawRectangleNode } from './draw/shape';
13
13
  import { MindElement, PlaitMind } from './interfaces/element';
14
14
  import { MindNode } from './interfaces/node';
15
15
  import { MindQueries } from './queries';
16
- import { getLinkLineColorByMindElement } from './utils/colors';
17
16
  import { getRectangleByNode, hitMindElement } from './utils/graph';
18
17
  import { getChildrenCount } from './utils/mind';
19
18
  import { getNodeShapeByElement } from './utils/shape';
@@ -25,6 +24,7 @@ import { MindTransforms } from './transforms';
25
24
  import { drawAbstractIncludedOutline } from './draw/abstract';
26
25
  import { QuickInsertDrawer } from './drawer/quick-insert.drawer';
27
26
  import { hasAfterDraw } from './drawer/base/base';
27
+ import { getBranchColorByMindElement } from './utils/node-style/branch';
28
28
  import * as i0 from "@angular/core";
29
29
  import * as i1 from "@angular/common";
30
30
  import * as i2 from "@plait/core";
@@ -137,10 +137,10 @@ export class MindNodeComponent extends PlaitPluginElementComponent {
137
137
  this.linkG = drawAbstractLink(this.board, this.node, isHorizontalLayout(layout));
138
138
  }
139
139
  else if (MindElement.isIndentedLayout(this.parent.origin)) {
140
- this.linkG = drawIndentedLink(this.roughSVG, this.parent, this.node);
140
+ this.linkG = drawIndentedLink(this.board, this.parent, this.node);
141
141
  }
142
142
  else {
143
- this.linkG = drawLogicLink(this.roughSVG, this.node, this.parent, isHorizontalLayout(layout));
143
+ this.linkG = drawLogicLink(this.board, this.node, this.parent, isHorizontalLayout(layout));
144
144
  }
145
145
  this.g.append(this.linkG);
146
146
  }
@@ -297,8 +297,8 @@ export class MindNodeComponent extends PlaitPluginElementComponent {
297
297
  Transforms.setNode(this.board, newElement, path);
298
298
  });
299
299
  const { x, y, width, height } = getRectangleByNode(this.node);
300
- const stroke = getLinkLineColorByMindElement(this.element);
301
- const strokeWidth = this.node.origin.linkLineWidth ? this.node.origin.linkLineWidth : STROKE_WIDTH;
300
+ const stroke = getBranchColorByMindElement(this.board, this.element);
301
+ const strokeWidth = this.node.origin.branchWidth ? this.node.origin.branchWidth : STROKE_WIDTH;
302
302
  const extendY = y + height / 2;
303
303
  const nodeLayout = MindQueries.getCorrectLayoutByElement(this.element);
304
304
  let extendLineXY = [
@@ -564,4 +564,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
564
564
  changeDetection: ChangeDetectionStrategy.OnPush
565
565
  }]
566
566
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; } });
567
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9ub2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFNWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxVQUFVLEVBQ1YsT0FBTyxFQUNQLGNBQWMsRUFDZCxVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLDJCQUEyQixFQUMzQixZQUFZLEVBQ1osYUFBYSxFQUdoQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0gsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFlBQVksRUFDWixhQUFhLEVBQ2IsV0FBVyxFQUVkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGlCQUFpQixFQUEwQix3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0SCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdC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VyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2pELGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hDO0lBQ0wsQ0FBQzs7OEdBaG9CUSxpQkFBaUI7a0dBQWpCLGlCQUFpQiw4RUFYaEI7Ozs7Ozs7O0tBUVQ7MkZBR1EsaUJBQWlCO2tCQWI3QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFFBQVEsRUFBRTs7Ozs7Ozs7S0FRVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb21wb25lbnRSZWYsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgUGxhaXRQb2ludGVyVHlwZSxcbiAgICBjcmVhdGVHLFxuICAgIGNyZWF0ZVRleHQsXG4gICAgSVNfVEVYVF9FRElUQUJMRSxcbiAgICBNRVJHSU5HLFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgdG9Qb2ludCxcbiAgICB0cmFuc2Zvcm1Qb2ludCxcbiAgICBUcmFuc2Zvcm1zLFxuICAgIGRyYXdSb3VuZFJlY3RhbmdsZSxcbiAgICBQbGFpdFBsdWdpbkVsZW1lbnRDb21wb25lbnQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIE5PREVfVE9fSU5ERVgsXG4gICAgUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dCxcbiAgICBPbkNvbnRleHRDaGFuZ2VkXG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7XG4gICAgaXNCb3R0b21MYXlvdXQsXG4gICAgaXNIb3Jpem9udGFsTGF5b3V0LFxuICAgIGlzSW5kZW50ZWRMYXlvdXQsXG4gICAgaXNMZWZ0TGF5b3V0LFxuICAgIEFic3RyYWN0Tm9kZSxcbiAgICBpc1JpZ2h0TGF5b3V0LFxuICAgIGlzVG9wTGF5b3V0LFxuICAgIE1pbmRMYXlvdXRUeXBlXG59IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IGhhc0VkaXRhYmxlVGFyZ2V0LCBQbGFpdFJpY2h0ZXh0Q29tcG9uZW50LCBzZXRGdWxsU2VsZWN0aW9uQW5kRm9jdXMsIHVwZGF0ZVJpY2hUZXh0IH0gZnJvbSAnQHBsYWl0L3JpY2h0ZXh0JztcbmltcG9ydCB7IFJvdWdoU1ZHIH0gZnJvbSAncm91Z2hqcy9iaW4vc3ZnJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFZGl0b3IsIE9wZXJhdGlvbiB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEVYVEVORF9PRkZTRVQsIEVYVEVORF9SQURJVVMsIE1pbmROb2RlU2hhcGUsIE5PREVfTUlOX1dJRFRILCBQUklNQVJZX0NPTE9SLCBTVFJPS0VfV0lEVEggfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBkcmF3SW5kZW50ZWRMaW5rIH0gZnJvbSAnLi9kcmF3L2luZGVudGVkLWxpbmsnO1xuaW1wb3J0IHsgZHJhd0xvZ2ljTGluayB9IGZyb20gJy4vZHJhdy9saW5rL2xvZ2ljLWxpbmsnO1xuaW1wb3J0IHsgZHJhd01pbmROb2RlUmljaHRleHQsIHVwZGF0ZU1pbmROb2RlVG9waWNTaXplIH0gZnJvbSAnLi9kcmF3L3JpY2h0ZXh0JztcbmltcG9ydCB7IGRyYXdSZWN0YW5nbGVOb2RlIH0gZnJvbSAnLi9kcmF3L3NoYXBlJztcbmltcG9ydCB7IE1pbmRFbGVtZW50LCBQbGFpdE1pbmQgfSBmcm9tICcuL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBNaW5kTm9kZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9ub2RlJztcbmltcG9ydCB7IE1pbmRRdWVyaWVzIH0gZnJvbSAnLi9xdWVyaWVzJztcbmltcG9ydCB7IGdldExpbmtMaW5lQ29sb3JCeU1pbmRFbGVtZW50IH0gZnJvbSAnLi91dGlscy9jb2xvcnMnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlOb2RlLCBoaXRNaW5kRWxlbWVudCB9IGZyb20gJy4vdXRpbHMvZ3JhcGgnO1xuaW1wb3J0IHsgZ2V0Q2hpbGRyZW5Db3VudCB9IGZyb20gJy4vdXRpbHMvbWluZCc7XG5pbXBvcnQgeyBnZXROb2RlU2hhcGVCeUVsZW1lbnQgfSBmcm9tICcuL3V0aWxzL3NoYXBlJztcbmltcG9ydCB7IEVMRU1FTlRfVE9fTk9ERSB9IGZyb20gJy4vdXRpbHMvd2Vhay1tYXBzJztcbmltcG9ydCB7IGdldFJpY2h0ZXh0Q29udGVudFNpemUgfSBmcm9tICdAcGxhaXQvcmljaHRleHQnO1xuaW1wb3J0IHsgZHJhd0Fic3RyYWN0TGluayB9IGZyb20gJy4vZHJhdy9saW5rL2Fic3RyYWN0LWxpbmsnO1xuaW1wb3J0IHsgRW1vamlzRHJhd2VyIH0gZnJvbSAnLi9wbHVnaW5zL2Vtb2ppL2Vtb2ppLmRyYXdlcic7XG5pbXBvcnQgeyBQbGFpdE1pbmRFbW9qaUJvYXJkIH0gZnJvbSAnLi9wbHVnaW5zL2Vtb2ppL3dpdGgtbWluZC1lbW9qaSc7XG5pbXBvcnQgeyBNaW5kVHJhbnNmb3JtcyB9IGZyb20gJy4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBkcmF3QWJzdHJhY3RJbmNsdWRlZE91dGxpbmUgfSBmcm9tICcuL2RyYXcvYWJzdHJhY3QnO1xuaW1wb3J0IHsgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBRdWlja0luc2VydERyYXdlciB9IGZyb20gJy4vZHJhd2VyL3F1aWNrLWluc2VydC5kcmF3ZXInO1xuaW1wb3J0IHsgaGFzQWZ0ZXJEcmF3IH0gZnJvbSAnLi9kcmF3ZXIvYmFzZS9iYXNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwbGFpdC1taW5kLW5vZGUnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxwbGFpdC1jaGlsZHJlblxuICAgICAgICAgICAgKm5nSWY9XCIhZWxlbWVudC5pc0NvbGxhcHNlZFwiXG4gICAgICAgICAgICBbYm9hcmRdPVwiYm9hcmRcIlxuICAgICAgICAgICAgW3BhcmVudF09XCJlbGVtZW50XCJcbiAgICAgICAgICAgIFtlZmZlY3RdPVwiZWZmZWN0XCJcbiAgICAgICAgICAgIFtwYXJlbnRHXT1cInBhcmVudEdcIlxuICAgICAgICA+PC9wbGFpdC1jaGlsZHJlbj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1pbmROb2RlQ29tcG9uZW50PFQgZXh0ZW5kcyBNaW5kRWxlbWVudCA9IE1pbmRFbGVtZW50PiBleHRlbmRzIFBsYWl0UGx1Z2luRWxlbWVudENvbXBvbmVudDxUPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ29udGV4dENoYW5nZWQ8VD4ge1xuICAgIGlzRWRpdGFibGUgPSBmYWxzZTtcblxuICAgIHJvdWdoU1ZHITogUm91Z2hTVkc7XG5cbiAgICBub2RlITogTWluZE5vZGU7XG5cbiAgICBwYXJlbnQhOiBNaW5kTm9kZTtcblxuICAgIGluZGV4ITogbnVtYmVyO1xuXG4gICAgYWJzdHJhY3RJbmNsdWRlZE91dGxpbmVHPzogU1ZHR0VsZW1lbnQ7XG5cbiAgICBwYXJlbnRHITogU1ZHR0VsZW1lbnQ7XG5cbiAgICBhY3RpdmVHOiBTVkdHRWxlbWVudFtdID0gW107XG5cbiAgICBzaGFwZUc6IFNWR0dFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBsaW5rRz86IFNWR0dFbGVtZW50O1xuXG4gICAgcmljaHRleHRHPzogU1ZHR0VsZW1lbnQ7XG5cbiAgICBmb3JlaWduT2JqZWN0PzogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ7XG5cbiAgICBleHRlbmRHPzogU1ZHR0VsZW1lbnQ7XG5cbiAgICBtYXNrRyE6IFNWR0dFbGVtZW50O1xuXG4gICAgcmljaHRleHRDb21wb25lbnRSZWY/OiBDb21wb25lbnRSZWY8UGxhaXRSaWNodGV4dENvbXBvbmVudD47XG5cbiAgICBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBlbW9qaXNEcmF3ZXIhOiBFbW9qaXNEcmF3ZXI7XG5cbiAgICBxdWlja0luc2VydERyYXdlciE6IFF1aWNrSW5zZXJ0RHJhd2VyO1xuXG4gICAgcHVibGljIGdldCBoYW5kQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ib2FyZC5wb2ludGVyID09PSBQbGFpdFBvaW50ZXJUeXBlLmhhbmQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByZW5kZXIyOiBSZW5kZXJlcjIpIHtcbiAgICAgICAgc3VwZXIoY2RyKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbW9qaXNEcmF3ZXIgPSBuZXcgRW1vamlzRHJhd2VyKHRoaXMuYm9hcmQgYXMgUGxhaXRNaW5kRW1vamlCb2FyZCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5xdWlja0luc2VydERyYXdlciA9IG5ldyBRdWlja0luc2VydERyYXdlcih0aGlzLmJvYXJkKTtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5ub2RlID0gRUxFTUVOVF9UT19OT0RFLmdldCh0aGlzLmVsZW1lbnQpIGFzIE1pbmROb2RlO1xuICAgICAgICBpZiAoIVBsYWl0TWluZC5pc01pbmQodGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQgPSBNaW5kRWxlbWVudC5nZXROb2RlKE1pbmRFbGVtZW50LmdldFBhcmVudCh0aGlzLmVsZW1lbnQpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluZGV4ID0gTk9ERV9UT19JTkRFWC5nZXQodGhpcy5lbGVtZW50KSB8fCAwO1xuICAgICAgICB0aGlzLnJvdWdoU1ZHID0gUGxhaXRCb2FyZC5nZXRSb3VnaFNWRyh0aGlzLmJvYXJkKTtcbiAgICAgICAgdGhpcy5wYXJlbnRHID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChNaW5kRWxlbWVudC5nZXRSb290KHRoaXMuYm9hcmQsIHRoaXMuZWxlbWVudCkpLnJvb3RHIGFzIFNWR0dFbGVtZW50O1xuICAgICAgICB0aGlzLmRyYXdTaGFwZSgpO1xuICAgICAgICB0aGlzLmRyYXdMaW5rKCk7XG4gICAgICAgIHRoaXMuZHJhd1JpY2h0ZXh0KCk7XG4gICAgICAgIHRoaXMuZHJhd0Vtb2ppcygpO1xuICAgICAgICB0aGlzLmRyYXdBY3RpdmVHKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQWN0aXZlQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5kcmF3TWFza0coKTtcbiAgICAgICAgdGhpcy5kcmF3RXh0ZW5kKCk7XG4gICAgICAgIHRoaXMuZHJhd1F1aWNrSW5zZXJ0KCk7XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlZCh2YWx1ZTogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxUPiwgcHJldmlvdXM6IFBsYWl0UGx1Z2luRWxlbWVudENvbnRleHQ8VD4pIHtcbiAgICAgICAgY29uc3QgbmV3Tm9kZSA9IEVMRU1FTlRfVE9fTk9ERS5nZXQodGhpcy5lbGVtZW50KSBhcyBNaW5kTm9kZTtcbiAgICAgICAgaWYgKCFQbGFpdE1pbmQuaXNNaW5kKHRoaXMuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50ID0gTWluZEVsZW1lbnQuZ2V0Tm9kZShNaW5kRWxlbWVudC5nZXRQYXJlbnQodGhpcy5lbGVtZW50KSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZXNvbHZlIG1vdmUgbm9kZSByaWNodGV4dCBsb3NlIGlzc3VlXG4gICAgICAgIGlmICh0aGlzLm5vZGUgIT09IG5ld05vZGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcmVpZ25PYmplY3QgJiYgdGhpcy5mb3JlaWduT2JqZWN0LmNoaWxkcmVuLmxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JlaWduT2JqZWN0Py5hcHBlbmRDaGlsZCh0aGlzLnJpY2h0ZXh0Q29tcG9uZW50UmVmPy5pbnN0YW5jZS5lZGl0YWJsZSBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc0VxdWFscyA9IE1pbmROb2RlLmlzRXF1YWxzKHRoaXMubm9kZSwgbmV3Tm9kZSk7XG4gICAgICAgIHRoaXMubm9kZSA9IG5ld05vZGU7XG4gICAgICAgIHRoaXMuZHJhd0FjdGl2ZUcoKTtcbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVDbGFzcygpO1xuICAgICAgICBpZiAoIWlzRXF1YWxzKSB7XG4gICAgICAgICAgICB0aGlzLmRyYXdTaGFwZSgpO1xuICAgICAgICAgICAgdGhpcy5kcmF3TGluaygpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVSaWNodGV4dCgpO1xuICAgICAgICAgICAgdGhpcy5kcmF3TWFza0coKTtcbiAgICAgICAgICAgIHRoaXMuZHJhd0V4dGVuZCgpO1xuICAgICAgICAgICAgdGhpcy5kcmF3UXVpY2tJbnNlcnQoKTtcbiAgICAgICAgICAgIHRoaXMuZHJhd0Vtb2ppcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd0Vtb2ppcygpIHtcbiAgICAgICAgY29uc3QgZyA9IHRoaXMuZW1vamlzRHJhd2VyLmRyYXdFbW9qaXModGhpcy5lbGVtZW50KTtcbiAgICAgICAgaWYgKGcpIHtcbiAgICAgICAgICAgIHRoaXMuZy5hcHBlbmQoZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3UXVpY2tJbnNlcnQoKSB7XG4gICAgICAgIHRoaXMucXVpY2tJbnNlcnREcmF3ZXIuZGVzdHJveSgpO1xuICAgICAgICBpZiAodGhpcy5xdWlja0luc2VydERyYXdlci5jYW5EcmF3KHRoaXMuZWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGcgPSB0aGlzLnF1aWNrSW5zZXJ0RHJhd2VyLmRyYXcodGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChoYXNBZnRlckRyYXcodGhpcy5xdWlja0luc2VydERyYXdlcikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnF1aWNrSW5zZXJ0RHJhd2VyLmFmdGVyRHJhdyh0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5leHRlbmRHPy5hcHBlbmRDaGlsZChnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXdTaGFwZSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95U2hhcGUoKTtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSBnZXROb2RlU2hhcGVCeUVsZW1lbnQodGhpcy5ub2RlLm9yaWdpbikgYXMgTWluZE5vZGVTaGFwZTtcbiAgICAgICAgc3dpdGNoIChzaGFwZSkge1xuICAgICAgICAgICAgY2FzZSBNaW5kTm9kZVNoYXBlLnJvdW5kUmVjdGFuZ2xlOlxuICAgICAgICAgICAgICAgIHRoaXMuc2hhcGVHID0gZHJhd1JlY3RhbmdsZU5vZGUodGhpcy5ib2FyZCwgdGhpcy5ub2RlIGFzIE1pbmROb2RlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmcucHJlcGVuZCh0aGlzLnNoYXBlRyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveVNoYXBlKCkge1xuICAgICAgICBpZiAodGhpcy5zaGFwZUcpIHtcbiAgICAgICAgICAgIHRoaXMuc2hhcGVHLnJlbW92ZSgpO1xuICAgICAgICAgICAgdGhpcy5zaGFwZUcgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd0xpbmsoKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxpbmtHKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtHLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0TGF5b3V0QnlFbGVtZW50KHRoaXMucGFyZW50Lm9yaWdpbikgYXMgTWluZExheW91dFR5cGU7XG4gICAgICAgIGlmIChBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdCh0aGlzLm5vZGUub3JpZ2luKSkge1xuICAgICAgICAgICAgdGhpcy5saW5rRyA9IGRyYXdBYnN0cmFjdExpbmsodGhpcy5ib2FyZCwgdGhpcy5ub2RlLCBpc0hvcml6b250YWxMYXlvdXQobGF5b3V0KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoTWluZEVsZW1lbnQuaXNJbmRlbnRlZExheW91dCh0aGlzLnBhcmVudC5vcmlnaW4pKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtHID0gZHJhd0luZGVudGVkTGluayh0aGlzLnJvdWdoU1ZHLCB0aGlzLnBhcmVudCwgdGhpcy5ub2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGlua0cgPSBkcmF3TG9naWNMaW5rKHRoaXMucm91Z2hTVkcsIHRoaXMubm9kZSwgdGhpcy5wYXJlbnQsIGlzSG9yaXpvbnRhbExheW91dChsYXlvdXQpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmcuYXBwZW5kKHRoaXMubGlua0cpO1xuICAgIH1cblxuICAgIGRlc3Ryb3lMaW5lKCkge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxpbmtHKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5rRy5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXdNYXNrRygpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95TWFza0coKTtcbiAgICAgICAgY29uc3QgbGluZVdpZHRoT2Zmc2V0ID0gMjtcbiAgICAgICAgY29uc3QgZXh0ZW5kT2Zmc2V0ID0gMTU7XG4gICAgICAgIGNvbnN0IG5vZGVMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRMYXlvdXRCeUVsZW1lbnQodGhpcy5ub2RlLm9yaWdpbikgYXMgTWluZExheW91dFR5cGU7XG4gICAgICAgIGNvbnN0IGlzVG9wID0gaXNUb3BMYXlvdXQobm9kZUxheW91dCk7XG4gICAgICAgIGNvbnN0IGlzUmlnaHQgPSBpc1JpZ2h0TGF5b3V0KG5vZGVMYXlvdXQpO1xuICAgICAgICBjb25zdCBpc0JvdHRvbSA9IGlzQm90dG9tTGF5b3V0KG5vZGVMYXlvdXQpO1xuICAgICAgICBjb25zdCBpc0xlZnQgPSBpc0xlZnRMYXlvdXQobm9kZUxheW91dCk7XG4gICAgICAgIGNvbnN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCB9ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKHRoaXMubm9kZSBhcyBNaW5kTm9kZSk7XG5cbiAgICAgICAgbGV0IGRyYXdYID0geDtcbiAgICAgICAgbGV0IGRyYXdZID0geTtcbiAgICAgICAgbGV0IGRyYXdXaWR0aCA9IHggKyB3aWR0aDtcbiAgICAgICAgbGV0IGRyYXdIZWlnaHQgPSB5ICsgaGVpZ2h0O1xuXG4gICAgICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgICAgICAgY2FzZSBpc1RvcDpcbiAgICAgICAgICAgICAgICBkcmF3WCA9IHggLSBsaW5lV2lkdGhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZHJhd1kgPSB5IC0gZXh0ZW5kT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRyYXdXaWR0aCA9IHggKyB3aWR0aCArIGxpbmVXaWR0aE9mZnNldDtcbiAgICAgICAgICAgICAgICBkcmF3SGVpZ2h0ID0geSArIGhlaWdodCArIGxpbmVXaWR0aE9mZnNldDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgaXNCb3R0b206XG4gICAgICAgICAgICAgICAgZHJhd1ggPSB4IC0gbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRyYXdZID0geSAtIGxpbmVXaWR0aE9mZnNldDtcbiAgICAgICAgICAgICAgICBkcmF3V2lkdGggPSB4ICsgd2lkdGggKyBsaW5lV2lkdGhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZHJhd0hlaWdodCA9IHkgKyBoZWlnaHQgKyBleHRlbmRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIGlzTGVmdDpcbiAgICAgICAgICAgICAgICBkcmF3WCA9IHggLSBleHRlbmRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZHJhd1kgPSB5IC0gbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRyYXdXaWR0aCA9IHggKyB3aWR0aCArIGxpbmVXaWR0aE9mZnNldDtcbiAgICAgICAgICAgICAgICBkcmF3SGVpZ2h0ID0geSArIGhlaWdodCArIGxpbmVXaWR0aE9mZnNldDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgaXNSaWdodDpcbiAgICAgICAgICAgICAgICBkcmF3WCA9IHggLSBsaW5lV2lkdGhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZHJhd1kgPSB5IC0gbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRyYXdXaWR0aCA9IHggKyB3aWR0aCArIGV4dGVuZE9mZnNldDtcbiAgICAgICAgICAgICAgICBkcmF3SGVpZ2h0ID0geSArIGhlaWdodCArIGxpbmVXaWR0aE9mZnNldDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1hc2tHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICAgICAgdGhpcy5yb3VnaFNWRyBhcyBSb3VnaFNWRyxcbiAgICAgICAgICAgIGRyYXdYLFxuICAgICAgICAgICAgZHJhd1ksXG4gICAgICAgICAgICBkcmF3V2lkdGgsXG4gICAgICAgICAgICBkcmF3SGVpZ2h0LFxuICAgICAgICAgICAgeyBzdHJva2U6ICdub25lJywgZmlsbDogJ3JnYmEoMjU1LDI1NSwyNTUsMCknLCBmaWxsU3R5bGU6ICdzb2xpZCcgfSxcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5tYXNrRy5jbGFzc0xpc3QuYWRkKCdtYXNrJyk7XG4gICAgICAgIHRoaXMubWFza0cuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywgJ3Zpc2libGUnKTtcbiAgICAgICAgdGhpcy5nLmFwcGVuZCh0aGlzLm1hc2tHKTtcblxuICAgICAgICBpZiAodGhpcy5pc0VkaXRhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkTWFza0coKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLm1hc2tHLCAnbW91c2VlbnRlcicpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBsYWl0Qm9hcmQuaXNGb2N1cyh0aGlzLmJvYXJkKSAmJiAhdGhpcy5lbGVtZW50LmlzQ29sbGFwc2VkICYmICF0aGlzLmhhbmRBY3RpdmU7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZy5jbGFzc0xpc3QuYWRkKCdob3ZlcmVkJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMubWFza0csICdtb3VzZWxlYXZlJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUGxhaXRCb2FyZC5pc0ZvY3VzKHRoaXMuYm9hcmQpICYmICF0aGlzLmVsZW1lbnQuaXNDb2xsYXBzZWQ7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZy5jbGFzc0xpc3QucmVtb3ZlKCdob3ZlcmVkJyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZXN0cm95TWFza0coKSB7XG4gICAgICAgIGlmICh0aGlzLm1hc2tHKSB7XG4gICAgICAgICAgICB0aGlzLm1hc2tHLnJlbW92ZSgpO1xuICAgICAgICAgICAgdGhpcy5nLmNsYXNzTGlzdC5yZW1vdmUoJ2hvdmVyZWQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVuYWJsZU1hc2tHKCkge1xuICAgICAgICBpZiAodGhpcy5tYXNrRykge1xuICAgICAgICAgICAgdGhpcy5tYXNrRy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGlzYWJsZWRNYXNrRygpIHtcbiAgICAgICAgaWYgKHRoaXMubWFza0cpIHtcbiAgICAgICAgICAgIHRoaXMubWFza0cuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd0FjdGl2ZUcoKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveUFjdGl2ZUcoKTtcbiAgICAgICAgdGhpcy5hYnN0cmFjdEluY2x1ZGVkT3V0bGluZUc/LnJlbW92ZSgpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KHRoaXMuZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUFic3RyYWN0SW5jbHVkZWRPdXRsaW5lKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRSZWN0YW5nbGVCeU5vZGUodGhpcy5ub2RlIGFzIE1pbmROb2RlKTtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkU3Ryb2tlRyA9IGRyYXdSb3VuZFJlY3RhbmdsZShcbiAgICAgICAgICAgICAgICB0aGlzLnJvdWdoU1ZHIGFzIFJvdWdoU1ZHLFxuICAgICAgICAgICAgICAgIHggLSAyLFxuICAgICAgICAgICAgICAgIHkgLSAyLFxuICAgICAgICAgICAgICAgIHggKyB3aWR0aCArIDIsXG4gICAgICAgICAgICAgICAgeSArIGhlaWdodCArIDIsXG4gICAgICAgICAgICAgICAgeyBzdHJva2U6IFBSSU1BUllfQ09MT1IsIHN0cm9rZVdpZHRoOiAyLCBmaWxsOiAnJyB9LFxuICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyDlvbHlk40gbWFzayDnp7vlhaXnp7vlh7rkuovku7ZcbiAgICAgICAgICAgIHNlbGVjdGVkU3Ryb2tlRy5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgICAgICAgICAgdGhpcy5nLmFwcGVuZENoaWxkKHNlbGVjdGVkU3Ryb2tlRyk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUcucHVzaChzZWxlY3RlZFN0cm9rZUcpO1xuICAgICAgICAgICAgaWYgKHRoaXMucmljaHRleHRDb21wb25lbnRSZWY/Lmluc3RhbmNlLnBsYWl0UmVhZG9ubHkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEJhY2tncm91bmRHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdWdoU1ZHIGFzIFJvdWdoU1ZHLFxuICAgICAgICAgICAgICAgICAgICB4IC0gMixcbiAgICAgICAgICAgICAgICAgICAgeSAtIDIsXG4gICAgICAgICAgICAgICAgICAgIHggKyB3aWR0aCArIDIsXG4gICAgICAgICAgICAgICAgICAgIHkgKyBoZWlnaHQgKyAyLFxuICAgICAgICAgICAgICAgICAgICB7IHN0cm9rZTogUFJJTUFSWV9DT0xPUiwgZmlsbDogUFJJTUFSWV9DT0xPUiwgZmlsbFN0eWxlOiAnc29saWQnIH0sXG4gICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQmFja2dyb3VuZEcuc3R5bGUub3BhY2l0eSA9ICcwLjE1JztcbiAgICAgICAgICAgICAgICAvLyDlvbHlk43lj4zlh7vkuovku7ZcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEJhY2tncm91bmRHLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgICAgICAgICAgdGhpcy5nLmFwcGVuZENoaWxkKHNlbGVjdGVkQmFja2dyb3VuZEcpO1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRy5wdXNoKHNlbGVjdGVkQmFja2dyb3VuZEcsIHNlbGVjdGVkU3Ryb2tlRyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95QWN0aXZlRygpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVHLmZvckVhY2goZyA9PiBnLnJlbW92ZSgpKTtcbiAgICAgICAgdGhpcy5hY3RpdmVHID0gW107XG4gICAgfVxuXG4gICAgdXBkYXRlQWN0aXZlQ2xhc3MoKSB7XG4gICAgICAgIGlmICghdGhpcy5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyMi5hZGRDbGFzcyh0aGlzLmcsICdhY3RpdmUnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyMi5yZW1vdmVDbGFzcyh0aGlzLmcsICdhY3RpdmUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXdSaWNodGV4dCgpIHtcbiAgICAgICAgY29uc3QgeyByaWNodGV4dEcsIHJpY2h0ZXh0Q29tcG9uZW50UmVmLCBmb3JlaWduT2JqZWN0IH0gPSBkcmF3TWluZE5vZGVSaWNodGV4dCh0aGlzLm5vZGUgYXMgTWluZE5vZGUsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIHRoaXMucmljaHRleHRDb21wb25lbnRSZWYgPSByaWNodGV4dENvbXBvbmVudFJlZjtcbiAgICAgICAgdGhpcy5yaWNodGV4dEcgPSByaWNodGV4dEc7XG4gICAgICAgIHRoaXMuZm9yZWlnbk9iamVjdCA9IGZvcmVpZ25PYmplY3Q7XG4gICAgICAgIHRoaXMucmVuZGVyMi5hZGRDbGFzcyhyaWNodGV4dEcsICdyaWNodGV4dCcpO1xuICAgICAgICB0aGlzLmcuYXBwZW5kKHJpY2h0ZXh0Ryk7XG4gICAgfVxuXG4gICAgZHJhd0V4dGVuZCgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95RXh0ZW5kKCk7XG4gICAgICAgIC8vIGNyZWF0ZSBleHRlbmRcbiAgICAgICAgdGhpcy5leHRlbmRHID0gY3JlYXRlRygpO1xuICAgICAgICBjb25zdCBjb2xsYXBzZUcgPSBjcmVhdGVHKCk7XG4gICAgICAgIHRoaXMuZXh0ZW5kRy5jbGFzc0xpc3QuYWRkKCdleHRlbmQnKTtcbiAgICAgICAgY29sbGFwc2VHLmNsYXNzTGlzdC5hZGQoJ2NvbGxhcHNlLWNvbnRhaW5lcicpO1xuICAgICAgICB0aGlzLmcuYXBwZW5kKHRoaXMuZXh0ZW5kRyk7XG4gICAgICAgIHRoaXMuZXh0ZW5kRy5hcHBlbmQoY29sbGFwc2VHKTtcbiAgICAgICAgaWYgKHRoaXMubm9kZS5vcmlnaW4uaXNSb290KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gaW50ZXJhY3RpdmVcbiAgICAgICAgZnJvbUV2ZW50KGNvbGxhcHNlRywgJ21vdXNldXAnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLmhhbmRBY3RpdmUgfHwgdGhpcy5ib2FyZC5vcHRpb25zLnJlYWRvbmx5KSxcbiAgICAgICAgICAgICAgICB0YWtlKDEpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0NvbGxhcHNlZCA9ICF0aGlzLm5vZGUub3JpZ2luLmlzQ29sbGFwc2VkO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ6IFBhcnRpYWw8TWluZEVsZW1lbnQ+ID0geyBpc0NvbGxhcHNlZCB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKHRoaXMuYm9hcmQsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKHRoaXMuYm9hcmQsIG5ld0VsZW1lbnQsIHBhdGgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRSZWN0YW5nbGVCeU5vZGUodGhpcy5ub2RlKTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlID0gZ2V0TGlua0xpbmVDb2xvckJ5TWluZEVsZW1lbnQodGhpcy5lbGVtZW50KTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSB0aGlzLm5vZGUub3JpZ2luLmxpbmtMaW5lV2lkdGggPyB0aGlzLm5vZGUub3JpZ2luLmxpbmtMaW5lV2lkdGggOiBTVFJPS0VfV0lEVEg7XG4gICAgICAgIGNvbnN0IGV4dGVuZFkgPSB5ICsgaGVpZ2h0IC8gMjtcbiAgICAgICAgY29uc3Qgbm9kZUxheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQodGhpcy5lbGVtZW50KSBhcyBNaW5kTGF5b3V0VHlwZTtcblxuICAgICAgICBsZXQgZXh0ZW5kTGluZVhZID0gW1xuICAgICAgICAgICAgW3ggKyB3aWR0aCwgZXh0ZW5kWV0sXG4gICAgICAgICAgICBbeCArIHdpZHRoICsgRVhURU5EX09GRlNFVCwgZXh0ZW5kWV1cbiAgICAgICAgXTtcblxuICAgICAgICBsZXQgYXJyb3dZT2Zmc2V0ID0gWy00LCAxLCAtMC42LCA0XTtcbiAgICAgICAgbGV0IGFycm93WE9mZnNldCA9IFsxMCwgNS41LCA1LjUsIDEwXTtcblxuICAgICAgICBsZXQgZXh0ZW5kTGluZVhPZmZzZXQgPSBbMCwgMF07XG4gICAgICAgIGxldCBleHRlbmRMaW5lWU9mZnNldCA9IFswLCAwXTtcblxuICAgICAgICBsZXQgY2lyY2xlT2Zmc2V0ID0gW0VYVEVORF9SQURJVVMgLyAyLCAwXTtcblxuICAgICAgICBpZiAoaXNIb3Jpem9udGFsTGF5b3V0KG5vZGVMYXlvdXQpICYmICFpc0luZGVudGVkTGF5b3V0KG5vZGVMYXlvdXQpKSB7XG4gICAgICAgICAgICBleHRlbmRMaW5lWU9mZnNldCA9XG4gICAgICAgICAgICAgICAgKGdldE5vZGVTaGFwZUJ5RWxlbWVudCh0aGlzLm5vZGUub3JpZ2luKSBhcyBNaW5kTm9kZVNoYXBlKSA9PT0gTWluZE5vZGVTaGFwZS5yb3VuZFJlY3RhbmdsZVxuICAgICAgICAgICAgICAgICAgICA/IFswLCAwXVxuICAgICAgICAgICAgICAgICAgICA6IFtoZWlnaHQgLyAyLCBoZWlnaHQgLyAyXTtcbiAgICAgICAgICAgIGlmIChpc0xlZnRMYXlvdXQobm9kZUxheW91dCkpIHtcbiAgICAgICAgICAgICAgICAvL+W3plxuICAgICAgICAgICAgICAgIGV4dGVuZExpbmVYT2Zmc2V0ID0gWy13aWR0aCwgLXdpZHRoIC0gRVhURU5EX09GRlNFVCAqIDJdO1xuICAgICAgICAgICAgICAgIGNpcmNsZU9mZnNldCA9IFstRVhURU5EX1JBRElVUyAvIDIsIDBdO1xuICAgICAgICAgICAgICAgIGFycm93WE9mZnNldCA9IFstMTAsIC01LjUsIC01LjUsIC0xMF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhcnJvd1hPZmZzZXQgPSBbLTQsIDAuNiwgLTEsIDRdO1xuICAgICAgICAgICAgaWYgKGlzVG9wTGF5b3V0KG5vZGVMYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgLy/kuIpcbiAgICAgICAgICAgICAgICBleHRlbmRMaW5lWE9mZnNldCA9IFstd2lkdGggLyAyLCAtd2lkdGggLyAyIC0gRVhURU5EX09GRlNFVF07XG4gICAgICAgICAgICAgICAgZXh0ZW5kTGluZVlPZmZzZXQgPSBbLWhlaWdodCAvIDIsIC1oZWlnaHQgLyAyIC0gRVhURU5EX09GRlNFVF07XG4gICAgICAgICAgICAgICAgYXJyb3dZT2Zmc2V0ID0gWy0xMCwgLTUuNSwgLTUuNSwgLTEwXTtcbiAgICAgICAgICAgICAgICBjaXJjbGVPZmZzZXQgPSBbMCwgLUVYVEVORF9SQURJVVMgLyAyXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy/kuItcbiAgICAgICAgICAgICAgICBleHRlbmRMaW5lWE9mZnNldCA9IFstd2lkdGggLyAyLCAtd2lkdGggLyAyIC0gRVhURU5EX09GRlNFVF07XG4gICAgICAgICAgICAgICAgZXh0ZW5kTGluZVlPZmZzZXQgPSBbaGVpZ2h0IC8gMiwgaGVpZ2h0IC8gMiArIEVYVEVORF9PRkZTRVRdO1xuICAgICAgICAgICAgICAgIGFycm93WU9mZnNldCA9IFsxMCwgNS41LCA1LjUsIDEwXTtcbiAgICAgICAgICAgICAgICBjaXJjbGVPZmZzZXQgPSBbMCwgRVhURU5EX1JBRElVUyAvIDJdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXh0ZW5kTGluZVhZID0gW1xuICAgICAgICAgICAgW2V4dGVuZExpbmVYWVswXVswXSArIGV4dGVuZExpbmVYT2Zmc2V0WzBdLCBleHRlbmRMaW5lWFlbMF1bMV0gKyBleHRlbmRMaW5lWU9mZnNldFswXV0sXG4gICAgICAgICAgICBbZXh0ZW5kTGluZVhZWzFdWzBdICsgZXh0ZW5kTGluZVhPZmZzZXRbMV0sIGV4dGVuZExpbmVYWVsxXVsxXSArIGV4dGVuZExpbmVZT2Zmc2V0WzFdXVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGV4dGVuZExpbmUgPSB0aGlzLnJvdWdoU1ZHLmxpbmUoZXh0ZW5kTGluZVhZWzBdWzBdLCBleHRlbmRMaW5lWFlbMF1bMV0sIGV4dGVuZExpbmVYWVsxXVswXSwgZXh0ZW5kTGluZVhZWzFdWzFdLCB7XG4gICAgICAgICAgICBzdHJva2VXaWR0aCxcbiAgICAgICAgICAgIHN0cm9rZVxuICAgICAgICB9KTtcblxuICAgICAgICAvL+e7mOWItueureWktFxuICAgICAgICBjb25zdCBoaWRlQXJyb3dUb3BMaW5lID0gdGhpcy5yb3VnaFNWRy5saW5lKFxuICAgICAgICAgICAgZXh0ZW5kTGluZVhZWzFdWzBdICsgYXJyb3dYT2Zmc2V0WzBdLFxuICAgICAgICAgICAgZXh0ZW5kTGluZVhZWzFdWzFdICsgYXJyb3dZT2Zmc2V0WzBdLFxuICAgICAgICAgICAgZXh0ZW5kTGluZVhZWzFdWzBdICsgYXJyb3dYT2Zmc2V0WzFdLFxuICAgICAgICAgICAgZXh0ZW5kTGluZVhZWzFdWzFdICsgYXJyb3dZT2Zmc2V0WzFdLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0cm9rZSxcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMlxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBoaWRlQXJyb3dCb3R0b21MaW5lID0gdGhpcy5yb3VnaFNWRy5saW5lKFxuICAgICAgICAgICAgZXh0ZW5kTGluZVhZWzFdWzBdICsgYXJyb3dYT2Zmc2V0WzJdLFxuICAgICAgICAgICAgZXh0ZW5kTGluZVhZWzFdWzFdICsgYXJyb3dZT2Zmc2V0WzJdLFxuICAgICAgICAgICAgZXh0ZW5kTGluZVhZWzFdWzBdICsgYXJyb3dYT2Zmc2V0WzNdLFxuICAgICAgICAgICAgZXh0ZW5kTGluZVhZWzFdWzFdICsgYXJyb3dZT2Zmc2V0WzNdLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0cm9rZSxcbiAgICAgICAgICAgICAgICBzdHJva2VXaWR0aDogMlxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0aGlzLm5vZGUub3JpZ2luLmlzQ29sbGFwc2VkKSB7XG4gICAgICAgICAgICBjb25zdCBiYWRnZSA9IHRoaXMucm91Z2hTVkcuY2lyY2xlKGV4dGVuZExpbmVYWVsxXVswXSArIGNpcmNsZU9mZnNldFswXSwgZXh0ZW5kTGluZVhZWzFdWzFdICsgY2lyY2xlT2Zmc2V0WzFdLCBFWFRFTkRfUkFESVVTLCB7XG4gICAgICAgICAgICAgICAgZmlsbDogc3Ryb2tlLFxuICAgICAgICAgICAgICAgIHN0cm9rZSxcbiAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBsZXQgbnVtYmVyT2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGlmIChnZXRDaGlsZHJlbkNvdW50KHRoaXMubm9kZS5vcmlnaW4pID49IDEwKSBudW1iZXJPZmZzZXQgPSAtMjtcbiAgICAgICAgICAgIGlmIChnZXRDaGlsZHJlbkNvdW50KHRoaXMubm9kZS5vcmlnaW4pID09PSAxKSBudW1iZXJPZmZzZXQgPSAxO1xuXG4gICAgICAgICAgICBjb25zdCBiYWRnZVRleHQgPSBjcmVhdGVUZXh0KFxuICAgICAgICAgICAgICAgIGV4dGVuZExpbmVYWVsxXVswXSArIGNpcmNsZU9mZnNldFswXSAtIDQgKyBudW1iZXJPZmZzZXQsXG4gICAgICAgICAgICAgICAgZXh0ZW5kTGluZVhZWzFdWzFdICsgY2lyY2xlT2Zmc2V0WzFdICsgNCxcbiAgICAgICAgICAgICAgICBzdHJva2UsXG4gICAgICAgICAgICAgICAgYCR7Z2V0Q2hpbGRyZW5Db3VudCh0aGlzLm5vZGUub3JpZ2luKX1gXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmcuY2xhc3NMaXN0LmFkZCgnY29sbGFwc2VkJyk7XG4gICAgICAgICAgICBiYWRnZS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ29wYWNpdHk6IDAuMTUnKTtcbiAgICAgICAgICAgIGJhZGdlVGV4dC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2ZvbnQtc2l6ZTogMTJweCcpO1xuICAgICAgICAgICAgY29sbGFwc2VHLmFwcGVuZENoaWxkKGJhZGdlKTtcbiAgICAgICAgICAgIGNvbGxhcHNlRy5hcHBlbmRDaGlsZChiYWRnZVRleHQpO1xuICAgICAgICAgICAgY29sbGFwc2VHLmFwcGVuZENoaWxkKGV4dGVuZExpbmUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5nLmNsYXNzTGlzdC5yZW1vdmUoJ2NvbGxhcHNlZCcpO1xuICAgICAgICAgICAgaWYgKHRoaXMubm9kZS5vcmlnaW4uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhpZGVDaXJjbGVHID0gdGhpcy5yb3VnaFNWRy5jaXJjbGUoXG4gICAgICAgICAgICAgICAgICAgIGV4dGVuZExpbmVYWVsxXVswXSArIGNpcmNsZU9mZnNldFswXSxcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kTGluZVhZWzFdWzFdICsgY2lyY2xlT2Zmc2V0WzFdLFxuICAgICAgICAgICAgICAgICAgICBFWFRFTkRfUkFESVVTIC0gMSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogJyNmZmYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsU3R5bGU6ICdzb2xpZCdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29sbGFwc2VHLmFwcGVuZENoaWxkKGhpZGVDaXJjbGVHKTtcbiAgICAgICAgICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoaGlkZUFycm93VG9wTGluZSk7XG4gICAgICAgICAgICAgICAgY29sbGFwc2VHLmFwcGVuZENoaWxkKGhpZGVBcnJvd0JvdHRvbUxpbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveUV4dGVuZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZXh0ZW5kRykge1xuICAgICAgICAgICAgdGhpcy5leHRlbmRHLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveVJpY2h0ZXh0KCkge1xuICAgICAgICBpZiAodGhpcy5yaWNodGV4dEcpIHtcbiAgICAgICAgICAgIHRoaXMucmljaHRleHRHLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJpY2h0ZXh0Q29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLnJpY2h0ZXh0Q29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUFic3RyYWN0SW5jbHVkZWRPdXRsaW5lKGFjdGl2ZUhhbmRsZVBvc2l0aW9uPzogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiwgcmVzaXppbmdMb2NhdGlvbj86IG51bWJlcikge1xuICAgICAgICB0aGlzLmFic3RyYWN0SW5jbHVkZWRPdXRsaW5lRz8ucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMuYWJzdHJhY3RJbmNsdWRlZE91dGxpbmVHID0gZHJhd0Fic3RyYWN0SW5jbHVkZWRPdXRsaW5lKFxuICAgICAgICAgICAgdGhpcy5ib2FyZCxcbiAgICAgICAgICAgIHRoaXMucm91Z2hTVkcsXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQsXG4gICAgICAgICAgICBhY3RpdmVIYW5kbGVQb3NpdGlvbixcbiAgICAgICAgICAgIHJlc2l6aW5nTG9jYXRpb25cbiAgICAgICAgKTtcbiAgICAgICAgUGxhaXRCb2FyZC5nZXRIb3N0KHRoaXMuYm9hcmQpLmFwcGVuZCh0aGlzLmFic3RyYWN0SW5jbHVkZWRPdXRsaW5lRyk7XG4gICAgfVxuXG4gICAgdXBkYXRlUmljaHRleHQoKSB7XG4gICAgICAgIHVwZGF0ZVJpY2hUZXh0KHRoaXMubm9kZS5vcmlnaW4uZGF0YS50b3BpYywgdGhpcy5yaWNodGV4dENvbXBvbmVudFJlZiEpO1xuICAgICAgICB1cGRhdGVNaW5kTm9kZVRvcGljU2l6ZSh0aGlzLm5vZGUsIHRoaXMucmljaHRleHRHIGFzIFNWR0dFbGVtZW50LCB0aGlzLmlzRWRpdGFibGUpO1xuICAgIH1cblxuICAgIHN0YXJ0RWRpdFRleHQoaXNFbmQ6IGJvb2xlYW4sIGlzQ2xlYXI6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKCF0aGlzLnJpY2h0ZXh0Q29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZGVmaW5lZCByaWNodGV4dENvbXBvbmVudFJlZicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJpY2h0ZXh0SW5zdGFuY2UgPSB0aGlzLnJpY2h0ZXh0Q29tcG9uZW50UmVmLmluc3RhbmNlO1xuXG4gICAgICAgIHRoaXMuaXNFZGl0YWJsZSA9IHRydWU7XG4gICAgICAgIElTX1RFWFRfRURJVEFCTEUuc2V0KHRoaXMuYm9hcmQsIHRydWUpO1xuICAgICAgICB0aGlzLmRpc2FibGVkTWFza0coKTtcbiAgICAgICAgdXBkYXRlTWluZE5vZGVUb3BpY1NpemUodGhpcy5ub2RlLCB0aGlzLnJpY2h0ZXh0RyBhcyBTVkdHRWxlbWVudCwgdGhpcy5pc0VkaXRhYmxlKTtcbiAgICAgICAgaWYgKHJpY2h0ZXh0SW5zdGFuY2UucGxhaXRSZWFkb25seSkge1xuICAgICAgICAgICAgcmljaHRleHRJbnN0YW5jZS5wbGFpdFJlYWRvbmx5ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJpY2h0ZXh0Q29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuZHJhd0FjdGl2ZUcoKTtcbiAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gaXNFbmQgPyBFZGl0b3IuZW5kKHJpY2h0ZXh0SW5zdGFuY2UuZWRpdG9yLCBbMF0pIDogWzBdO1xuICAgICAgICAgICAgc2V0RnVsbFNlbGVjdGlvbkFuZEZvY3VzKHJpY2h0ZXh0SW5zdGFuY2UuZWRpdG9yLCBsb2NhdGlvbik7XG4gICAgICAgICAgICBpZiAoaXNDbGVhcikge1xuICAgICAgICAgICAgICAgIEVkaXRvci5kZWxldGVCYWNrd2FyZChyaWNodGV4dEluc3RhbmNlLmVkaXRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBoYW5kbGUgaW52YWxpZCB3aWR0aCBhbmQgaGVpZ2h0IChvbGQgZGF0YSlcbiAgICAgICAgICAgIGxldCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldFJpY2h0ZXh0Q29udGVudFNpemUocmljaHRleHRJbnN0YW5jZS5lZGl0YWJsZSk7XG4gICAgICAgICAgICBpZiAod2lkdGggIT09IHRoaXMuZWxlbWVudC53aWR0aCB8fCBoZWlnaHQgIT09IHRoaXMuZWxlbWVudC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5zZXRUb3BpY1NpemUodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcmljaHRleHQgPSByaWNodGV4dEluc3RhbmNlLnBsYWl0VmFsdWU7XG4gICAgICAgIC8vIHVzZSBkZWJvdW5jZVRpbWUgdG8gd2FpdCBET00gcmVuZGVyIGNvbXBsZXRlXG4gICAgICAgIGNvbnN0IHZhbHVlQ2hhbmdlJCA9IHJpY2h0ZXh0SW5zdGFuY2UucGxhaXRDaGFuZ2VcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgwKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyDov4fmu6Tmjokgb3BlcmF0aW9ucyDkuK3lhajmmK8gc2V0X3NlbGVjdGlvbiDnmoTmk43kvZxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFldmVudC5vcGVyYXRpb25zLmV2ZXJ5KG9wID0+IE9wZXJhdGlvbi5pc1NlbGVjdGlvbk9wZXJhdGlvbihvcCkpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmljaHRleHQgPT09IGV2ZW50LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVSaWNodGV4dCgpO1xuICAgICAgICAgICAgICAgIC8vIOabtOaWsOWvjOaWh+acrOOAgeabtOaWsOWuvemrmFxuICAgICAgICAgICAgICAgIGxldCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldFJpY2h0ZXh0Q29udGVudFNpemUocmljaHRleHRJbnN0YW5jZS5lZGl0YWJsZSk7XG4gICAgICAgICAgICAgICAgTWluZFRyYW5zZm9ybXMuc2V0VG9waWModGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50LCBldmVudC52YWx1ZSwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICAgICAgTUVSR0lORy5zZXQodGhpcy5ib2FyZCwgdHJ1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgY29tcG9zaXRpb24kID0gcmljaHRleHRJbnN0YW5jZS5wbGFpdENvbXBvc2l0aW9uLnBpcGUoZGVib3VuY2VUaW1lKDApKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgbGV0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0UmljaHRleHRDb250ZW50U2l6ZShyaWNodGV4dEluc3RhbmNlLmVkaXRhYmxlKTtcbiAgICAgICAgICAgIGlmICh3aWR0aCA8IE5PREVfTUlOX1dJRFRIKSB7XG4gICAgICAgICAgICAgICAgd2lkdGggPSBOT0RFX01JTl9XSURUSDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChldmVudC5pc0NvbXBvc2luZyAmJiAod2lkdGggIT09IHRoaXMubm9kZS5vcmlnaW4ud2lkdGggfHwgaGVpZ2h0ICE9PSB0aGlzLm5vZGUub3JpZ2luLmhlaWdodCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdFbGVtZW50OiBQYXJ0aWFsPE1pbmRFbGVtZW50PiA9IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoIC8gdGhpcy5ib2FyZC52aWV3cG9ydC56b29tLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodCAvIHRoaXMuYm9hcmQudmlld3BvcnQuem9vbVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUodGhpcy5ib2FyZCwgbmV3RWxlbWVudCwgcGF0aCk7XG4gICAgICAgICAgICAgICAgTUVSR0lORy5zZXQodGhpcy5ib2FyZCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBtb3VzZWRvd24kID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2Vkb3duJykuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcG9pbnQgPSB0cmFuc2Zvcm1Qb2ludCh0aGlzLmJvYXJkLCB0b1BvaW50KGV2ZW50LngsIGV2ZW50LnksIFBsYWl0Qm9hcmQuZ2V0SG9zdCh0aGlzLmJvYXJkKSkpO1xuICAgICAgICAgICAgY29uc3QgY2xpY2tJbk5vZGUgPSBoaXRNaW5kRWxlbWVudCh0aGlzLmJvYXJkLCBwb2ludCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChjbGlja0luTm9kZSAmJiAhaGFzRWRpdGFibGVUYXJnZXQocmljaHRleHRJbnN0YW5jZS5lZGl0b3IsIGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghY2xpY2tJbk5vZGUpIHtcbiAgICAgICAgICAgICAgICAvLyBoYW5kbGUgY29tcG9zaXRpb24gaW5wdXQgc3RhdGUsIGxpa2U6IENoaW5lc2UgSU1FIENvbXBvc2l0aW9uIElucHV0XG4gICAgICAgICAgICAgICAgdGltZXIoMCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXhpdEhhbmRsZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZU1hc2tHKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlZGl0b3IgPSByaWNodGV4dEluc3RhbmNlLmVkaXRvcjtcbiAgICAgICAgY29uc3QgeyBrZXlkb3duIH0gPSBlZGl0b3I7XG4gICAgICAgIGVkaXRvci5rZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuaXNDb21wb3NpbmcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgZXhpdEhhbmRsZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhd0FjdGl2ZUcoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZU1hc2tHKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiAhZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGV4aXRIYW5kbGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYXdBY3RpdmVHKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVNYXNrRygpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICBleGl0SGFuZGxlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmF3QWN0aXZlRygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhd01hc2tHKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGV4aXRIYW5kbGUgPSAoKSA9PiB7XG4gICAgICAgICAgICAvLyB1bnN1YnNjcmliZVxuICAgICAgICAgICAgdmFsdWVDaGFuZ2UkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICBjb21wb3NpdGlvbiQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIG1vdXNlZG93biQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIGVkaXRvci5rZXlkb3duID0ga2V5ZG93bjsgLy8gcmVzZXQga2V5ZG93blxuICAgICAgICAgICAgLy8gZWRpdGFibGUgc3RhdHVzXG4gICAgICAgICAgICBNRVJHSU5HLnNldCh0aGlzLmJvYXJkLCBmYWxzZSk7XG4gICAgICAgICAgICByaWNodGV4dEluc3RhbmNlLnBsYWl0UmVhZG9ubHkgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5yaWNodGV4dENvbXBvbmVudFJlZj8uY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB0aGlzLmlzRWRpdGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHVwZGF0ZU1pbmROb2RlVG9waWNTaXplKHRoaXMubm9kZSwgdGhpcy5yaWNodGV4dEcgYXMgU1ZHR0VsZW1lbnQsIHRoaXMuaXNFZGl0YWJsZSk7XG4gICAgICAgICAgICBJU19URVhUX0VESVRBQkxFLnNldCh0aGlzLmJvYXJkLCBmYWxzZSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdHJhY2tCeSA9IChpbmRleDogbnVtYmVyLCBub2RlOiBNaW5kTm9kZSkgPT4ge1xuICAgICAgICByZXR1cm4gbm9kZS5vcmlnaW4uaWQ7XG4gICAgfTtcblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLmFic3RyYWN0SW5jbHVkZWRPdXRsaW5lRz8ucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveVJpY2h0ZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIGlmIChFTEVNRU5UX1RPX05PREUuZ2V0KHRoaXMuZWxlbWVudCkgPT09IHRoaXMubm9kZSkge1xuICAgICAgICAgICAgRUxFTUVOVF9UT19OT0RFLmRlbGV0ZSh0aGlzLmVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
567
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9ub2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFNWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxVQUFVLEVBQ1YsT0FBTyxFQUNQLGNBQWMsRUFDZCxVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLDJCQUEyQixFQUMzQixZQUFZLEVBQ1osYUFBYSxFQUdoQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0gsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFlBQVksRUFDWixhQUFhLEVBQ2IsV0FBVyxFQUVkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGlCQUFpQixFQUEwQix3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0SCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdC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VztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDeEM7SUFDTCxDQUFDOzs4R0Fob0JRLGlCQUFpQjtrR0FBakIsaUJBQWlCLDhFQVhoQjs7Ozs7Ozs7S0FRVDsyRkFHUSxpQkFBaUI7a0JBYjdCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFOzs7Ozs7OztLQVFUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBQbGFpdFBvaW50ZXJUeXBlLFxuICAgIGNyZWF0ZUcsXG4gICAgY3JlYXRlVGV4dCxcbiAgICBJU19URVhUX0VESVRBQkxFLFxuICAgIE1FUkdJTkcsXG4gICAgUGxhaXRCb2FyZCxcbiAgICB0b1BvaW50LFxuICAgIHRyYW5zZm9ybVBvaW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgZHJhd1JvdW5kUmVjdGFuZ2xlLFxuICAgIFBsYWl0UGx1Z2luRWxlbWVudENvbXBvbmVudCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgTk9ERV9UT19JTkRFWCxcbiAgICBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0LFxuICAgIE9uQ29udGV4dENoYW5nZWRcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHtcbiAgICBpc0JvdHRvbUxheW91dCxcbiAgICBpc0hvcml6b250YWxMYXlvdXQsXG4gICAgaXNJbmRlbnRlZExheW91dCxcbiAgICBpc0xlZnRMYXlvdXQsXG4gICAgQWJzdHJhY3ROb2RlLFxuICAgIGlzUmlnaHRMYXlvdXQsXG4gICAgaXNUb3BMYXlvdXQsXG4gICAgTWluZExheW91dFR5cGVcbn0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgaGFzRWRpdGFibGVUYXJnZXQsIFBsYWl0UmljaHRleHRDb21wb25lbnQsIHNldEZ1bGxTZWxlY3Rpb25BbmRGb2N1cywgdXBkYXRlUmljaFRleHQgfSBmcm9tICdAcGxhaXQvcmljaHRleHQnO1xuaW1wb3J0IHsgUm91Z2hTVkcgfSBmcm9tICdyb3VnaGpzL2Jpbi9zdmcnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0LCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVkaXRvciwgT3BlcmF0aW9uIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRVhURU5EX09GRlNFVCwgRVhURU5EX1JBRElVUywgTWluZE5vZGVTaGFwZSwgTk9ERV9NSU5fV0lEVEgsIFBSSU1BUllfQ09MT1IsIFNUUk9LRV9XSURUSCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGRyYXdJbmRlbnRlZExpbmsgfSBmcm9tICcuL2RyYXcvaW5kZW50ZWQtbGluayc7XG5pbXBvcnQgeyBkcmF3TG9naWNMaW5rIH0gZnJvbSAnLi9kcmF3L2xpbmsvbG9naWMtbGluayc7XG5pbXBvcnQgeyBkcmF3TWluZE5vZGVSaWNodGV4dCwgdXBkYXRlTWluZE5vZGVUb3BpY1NpemUgfSBmcm9tICcuL2RyYXcvcmljaHRleHQnO1xuaW1wb3J0IHsgZHJhd1JlY3RhbmdsZU5vZGUgfSBmcm9tICcuL2RyYXcvc2hhcGUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuL3F1ZXJpZXMnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlOb2RlLCBoaXRNaW5kRWxlbWVudCB9IGZyb20gJy4vdXRpbHMvZ3JhcGgnO1xuaW1wb3J0IHsgZ2V0Q2hpbGRyZW5Db3VudCB9IGZyb20gJy4vdXRpbHMvbWluZCc7XG5pbXBvcnQgeyBnZXROb2RlU2hhcGVCeUVsZW1lbnQgfSBmcm9tICcuL3V0aWxzL3NoYXBlJztcbmltcG9ydCB7IEVMRU1FTlRfVE9fTk9ERSB9IGZyb20gJy4vdXRpbHMvd2Vhay1tYXBzJztcbmltcG9ydCB7IGdldFJpY2h0ZXh0Q29udGVudFNpemUgfSBmcm9tICdAcGxhaXQvcmljaHRleHQnO1xuaW1wb3J0IHsgZHJhd0Fic3RyYWN0TGluayB9IGZyb20gJy4vZHJhdy9saW5rL2Fic3RyYWN0LWxpbmsnO1xuaW1wb3J0IHsgRW1vamlzRHJhd2VyIH0gZnJvbSAnLi9wbHVnaW5zL2Vtb2ppL2Vtb2ppLmRyYXdlcic7XG5pbXBvcnQgeyBQbGFpdE1pbmRFbW9qaUJvYXJkIH0gZnJvbSAnLi9wbHVnaW5zL2Vtb2ppL3dpdGgtbWluZC1lbW9qaSc7XG5pbXBvcnQgeyBNaW5kVHJhbnNmb3JtcyB9IGZyb20gJy4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBkcmF3QWJzdHJhY3RJbmNsdWRlZE91dGxpbmUgfSBmcm9tICcuL2RyYXcvYWJzdHJhY3QnO1xuaW1wb3J0IHsgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBRdWlja0luc2VydERyYXdlciB9IGZyb20gJy4vZHJhd2VyL3F1aWNrLWluc2VydC5kcmF3ZXInO1xuaW1wb3J0IHsgaGFzQWZ0ZXJEcmF3IH0gZnJvbSAnLi9kcmF3ZXIvYmFzZS9iYXNlJztcbmltcG9ydCB7IGdldEJyYW5jaENvbG9yQnlNaW5kRWxlbWVudCB9IGZyb20gJy4vdXRpbHMvbm9kZS1zdHlsZS9icmFuY2gnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BsYWl0LW1pbmQtbm9kZScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHBsYWl0LWNoaWxkcmVuXG4gICAgICAgICAgICAqbmdJZj1cIiFlbGVtZW50LmlzQ29sbGFwc2VkXCJcbiAgICAgICAgICAgIFtib2FyZF09XCJib2FyZFwiXG4gICAgICAgICAgICBbcGFyZW50XT1cImVsZW1lbnRcIlxuICAgICAgICAgICAgW2VmZmVjdF09XCJlZmZlY3RcIlxuICAgICAgICAgICAgW3BhcmVudEddPVwicGFyZW50R1wiXG4gICAgICAgID48L3BsYWl0LWNoaWxkcmVuPlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTWluZE5vZGVDb21wb25lbnQ8VCBleHRlbmRzIE1pbmRFbGVtZW50ID0gTWluZEVsZW1lbnQ+IGV4dGVuZHMgUGxhaXRQbHVnaW5FbGVtZW50Q29tcG9uZW50PFQ+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25Db250ZXh0Q2hhbmdlZDxUPiB7XG4gICAgaXNFZGl0YWJsZSA9IGZhbHNlO1xuXG4gICAgcm91Z2hTVkchOiBSb3VnaFNWRztcblxuICAgIG5vZGUhOiBNaW5kTm9kZTtcblxuICAgIHBhcmVudCE6IE1pbmROb2RlO1xuXG4gICAgaW5kZXghOiBudW1iZXI7XG5cbiAgICBhYnN0cmFjdEluY2x1ZGVkT3V0bGluZUc/OiBTVkdHRWxlbWVudDtcblxuICAgIHBhcmVudEchOiBTVkdHRWxlbWVudDtcblxuICAgIGFjdGl2ZUc6IFNWR0dFbGVtZW50W10gPSBbXTtcblxuICAgIHNoYXBlRzogU1ZHR0VsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGxpbmtHPzogU1ZHR0VsZW1lbnQ7XG5cbiAgICByaWNodGV4dEc/OiBTVkdHRWxlbWVudDtcblxuICAgIGZvcmVpZ25PYmplY3Q/OiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDtcblxuICAgIGV4dGVuZEc/OiBTVkdHRWxlbWVudDtcblxuICAgIG1hc2tHITogU1ZHR0VsZW1lbnQ7XG5cbiAgICByaWNodGV4dENvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxQbGFpdFJpY2h0ZXh0Q29tcG9uZW50PjtcblxuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGVtb2ppc0RyYXdlciE6IEVtb2ppc0RyYXdlcjtcblxuICAgIHF1aWNrSW5zZXJ0RHJhd2VyITogUXVpY2tJbnNlcnREcmF3ZXI7XG5cbiAgICBwdWJsaWMgZ2V0IGhhbmRBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmJvYXJkLnBvaW50ZXIgPT09IFBsYWl0UG9pbnRlclR5cGUuaGFuZDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlbmRlcjI6IFJlbmRlcmVyMikge1xuICAgICAgICBzdXBlcihjZHIpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVtb2ppc0RyYXdlciA9IG5ldyBFbW9qaXNEcmF3ZXIodGhpcy5ib2FyZCBhcyBQbGFpdE1pbmRFbW9qaUJvYXJkLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLnF1aWNrSW5zZXJ0RHJhd2VyID0gbmV3IFF1aWNrSW5zZXJ0RHJhd2VyKHRoaXMuYm9hcmQpO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLm5vZGUgPSBFTEVNRU5UX1RPX05PREUuZ2V0KHRoaXMuZWxlbWVudCkgYXMgTWluZE5vZGU7XG4gICAgICAgIGlmICghUGxhaXRNaW5kLmlzTWluZCh0aGlzLmVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IE1pbmRFbGVtZW50LmdldE5vZGUoTWluZEVsZW1lbnQuZ2V0UGFyZW50KHRoaXMuZWxlbWVudCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5kZXggPSBOT0RFX1RPX0lOREVYLmdldCh0aGlzLmVsZW1lbnQpIHx8IDA7XG4gICAgICAgIHRoaXMucm91Z2hTVkcgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLnBhcmVudEcgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KE1pbmRFbGVtZW50LmdldFJvb3QodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KSkucm9vdEcgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIHRoaXMuZHJhd1NoYXBlKCk7XG4gICAgICAgIHRoaXMuZHJhd0xpbmsoKTtcbiAgICAgICAgdGhpcy5kcmF3UmljaHRleHQoKTtcbiAgICAgICAgdGhpcy5kcmF3RW1vamlzKCk7XG4gICAgICAgIHRoaXMuZHJhd0FjdGl2ZUcoKTtcbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVDbGFzcygpO1xuICAgICAgICB0aGlzLmRyYXdNYXNrRygpO1xuICAgICAgICB0aGlzLmRyYXdFeHRlbmQoKTtcbiAgICAgICAgdGhpcy5kcmF3UXVpY2tJbnNlcnQoKTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2VkKHZhbHVlOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0PFQ+LCBwcmV2aW91czogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxUPikge1xuICAgICAgICBjb25zdCBuZXdOb2RlID0gRUxFTUVOVF9UT19OT0RFLmdldCh0aGlzLmVsZW1lbnQpIGFzIE1pbmROb2RlO1xuICAgICAgICBpZiAoIVBsYWl0TWluZC5pc01pbmQodGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQgPSBNaW5kRWxlbWVudC5nZXROb2RlKE1pbmRFbGVtZW50LmdldFBhcmVudCh0aGlzLmVsZW1lbnQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlc29sdmUgbW92ZSBub2RlIHJpY2h0ZXh0IGxvc2UgaXNzdWVcbiAgICAgICAgaWYgKHRoaXMubm9kZSAhPT0gbmV3Tm9kZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9yZWlnbk9iamVjdCAmJiB0aGlzLmZvcmVpZ25PYmplY3QuY2hpbGRyZW4ubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcmVpZ25PYmplY3Q/LmFwcGVuZENoaWxkKHRoaXMucmljaHRleHRDb21wb25lbnRSZWY/Lmluc3RhbmNlLmVkaXRhYmxlIGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzRXF1YWxzID0gTWluZE5vZGUuaXNFcXVhbHModGhpcy5ub2RlLCBuZXdOb2RlKTtcbiAgICAgICAgdGhpcy5ub2RlID0gbmV3Tm9kZTtcbiAgICAgICAgdGhpcy5kcmF3QWN0aXZlRygpO1xuICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZUNsYXNzKCk7XG4gICAgICAgIGlmICghaXNFcXVhbHMpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhd1NoYXBlKCk7XG4gICAgICAgICAgICB0aGlzLmRyYXdMaW5rKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVJpY2h0ZXh0KCk7XG4gICAgICAgICAgICB0aGlzLmRyYXdNYXNrRygpO1xuICAgICAgICAgICAgdGhpcy5kcmF3RXh0ZW5kKCk7XG4gICAgICAgICAgICB0aGlzLmRyYXdRdWlja0luc2VydCgpO1xuICAgICAgICAgICAgdGhpcy5kcmF3RW1vamlzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3RW1vamlzKCkge1xuICAgICAgICBjb25zdCBnID0gdGhpcy5lbW9qaXNEcmF3ZXIuZHJhd0Vtb2ppcyh0aGlzLmVsZW1lbnQpO1xuICAgICAgICBpZiAoZykge1xuICAgICAgICAgICAgdGhpcy5nLmFwcGVuZChnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXdRdWlja0luc2VydCgpIHtcbiAgICAgICAgdGhpcy5xdWlja0luc2VydERyYXdlci5kZXN0cm95KCk7XG4gICAgICAgIGlmICh0aGlzLnF1aWNrSW5zZXJ0RHJhd2VyLmNhbkRyYXcodGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgZyA9IHRoaXMucXVpY2tJbnNlcnREcmF3ZXIuZHJhdyh0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGhhc0FmdGVyRHJhdyh0aGlzLnF1aWNrSW5zZXJ0RHJhd2VyKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucXVpY2tJbnNlcnREcmF3ZXIuYWZ0ZXJEcmF3KHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmV4dGVuZEc/LmFwcGVuZENoaWxkKGcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd1NoYXBlKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lTaGFwZSgpO1xuICAgICAgICBjb25zdCBzaGFwZSA9IGdldE5vZGVTaGFwZUJ5RWxlbWVudCh0aGlzLm5vZGUub3JpZ2luKSBhcyBNaW5kTm9kZVNoYXBlO1xuICAgICAgICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgICAgICAgICBjYXNlIE1pbmROb2RlU2hhcGUucm91bmRSZWN0YW5nbGU6XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFwZUcgPSBkcmF3UmVjdGFuZ2xlTm9kZSh0aGlzLmJvYXJkLCB0aGlzLm5vZGUgYXMgTWluZE5vZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZy5wcmVwZW5kKHRoaXMuc2hhcGVHKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95U2hhcGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnNoYXBlRykge1xuICAgICAgICAgICAgdGhpcy5zaGFwZUcucmVtb3ZlKCk7XG4gICAgICAgICAgICB0aGlzLnNoYXBlRyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3TGluaygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubGlua0cpIHtcbiAgICAgICAgICAgIHRoaXMubGlua0cucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRMYXlvdXRCeUVsZW1lbnQodGhpcy5wYXJlbnQub3JpZ2luKSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KHRoaXMubm9kZS5vcmlnaW4pKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtHID0gZHJhd0Fic3RyYWN0TGluayh0aGlzLmJvYXJkLCB0aGlzLm5vZGUsIGlzSG9yaXpvbnRhbExheW91dChsYXlvdXQpKTtcbiAgICAgICAgfSBlbHNlIGlmIChNaW5kRWxlbWVudC5pc0luZGVudGVkTGF5b3V0KHRoaXMucGFyZW50Lm9yaWdpbikpIHtcbiAgICAgICAgICAgIHRoaXMubGlua0cgPSBkcmF3SW5kZW50ZWRMaW5rKHRoaXMuYm9hcmQsIHRoaXMucGFyZW50LCB0aGlzLm5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5saW5rRyA9IGRyYXdMb2dpY0xpbmsodGhpcy5ib2FyZCwgdGhpcy5ub2RlLCB0aGlzLnBhcmVudCwgaXNIb3Jpem9udGFsTGF5b3V0KGxheW91dCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZy5hcHBlbmQodGhpcy5saW5rRyk7XG4gICAgfVxuXG4gICAgZGVzdHJveUxpbmUoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubGlua0cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmtHLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd01hc2tHKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lNYXNrRygpO1xuICAgICAgICBjb25zdCBsaW5lV2lkdGhPZmZzZXQgPSAyO1xuICAgICAgICBjb25zdCBleHRlbmRPZmZzZXQgPSAxNTtcbiAgICAgICAgY29uc3Qgbm9kZUxheW91dCA9IE1pbmRRdWVyaWVzLmdldExheW91dEJ5RWxlbWVudCh0aGlzLm5vZGUub3JpZ2luKSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICAgICAgY29uc3QgaXNUb3AgPSBpc1RvcExheW91dChub2RlTGF5b3V0KTtcbiAgICAgICAgY29uc3QgaXNSaWdodCA9IGlzUmlnaHRMYXlvdXQobm9kZUxheW91dCk7XG4gICAgICAgIGNvbnN0IGlzQm90dG9tID0gaXNCb3R0b21MYXlvdXQobm9kZUxheW91dCk7XG4gICAgICAgIGNvbnN0IGlzTGVmdCA9IGlzTGVmdExheW91dChub2RlTGF5b3V0KTtcbiAgICAgICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRSZWN0YW5nbGVCeU5vZGUodGhpcy5ub2RlIGFzIE1pbmROb2RlKTtcblxuICAgICAgICBsZXQgZHJhd1ggPSB4O1xuICAgICAgICBsZXQgZHJhd1kgPSB5O1xuICAgICAgICBsZXQgZHJhd1dpZHRoID0geCArIHdpZHRoO1xuICAgICAgICBsZXQgZHJhd0hlaWdodCA9IHkgKyBoZWlnaHQ7XG5cbiAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICBjYXNlIGlzVG9wOlxuICAgICAgICAgICAgICAgIGRyYXdYID0geCAtIGxpbmVXaWR0aE9mZnNldDtcbiAgICAgICAgICAgICAgICBkcmF3WSA9IHkgLSBleHRlbmRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZHJhd1dpZHRoID0geCArIHdpZHRoICsgbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRyYXdIZWlnaHQgPSB5ICsgaGVpZ2h0ICsgbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBpc0JvdHRvbTpcbiAgICAgICAgICAgICAgICBkcmF3WCA9IHggLSBsaW5lV2lkdGhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZHJhd1kgPSB5IC0gbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRyYXdXaWR0aCA9IHggKyB3aWR0aCArIGxpbmVXaWR0aE9mZnNldDtcbiAgICAgICAgICAgICAgICBkcmF3SGVpZ2h0ID0geSArIGhlaWdodCArIGV4dGVuZE9mZnNldDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgaXNMZWZ0OlxuICAgICAgICAgICAgICAgIGRyYXdYID0geCAtIGV4dGVuZE9mZnNldDtcbiAgICAgICAgICAgICAgICBkcmF3WSA9IHkgLSBsaW5lV2lkdGhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZHJhd1dpZHRoID0geCArIHdpZHRoICsgbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRyYXdIZWlnaHQgPSB5ICsgaGVpZ2h0ICsgbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBpc1JpZ2h0OlxuICAgICAgICAgICAgICAgIGRyYXdYID0geCAtIGxpbmVXaWR0aE9mZnNldDtcbiAgICAgICAgICAgICAgICBkcmF3WSA9IHkgLSBsaW5lV2lkdGhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZHJhd1dpZHRoID0geCArIHdpZHRoICsgZXh0ZW5kT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRyYXdIZWlnaHQgPSB5ICsgaGVpZ2h0ICsgbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWFza0cgPSBkcmF3Um91bmRSZWN0YW5nbGUoXG4gICAgICAgICAgICB0aGlzLnJvdWdoU1ZHIGFzIFJvdWdoU1ZHLFxuICAgICAgICAgICAgZHJhd1gsXG4gICAgICAgICAgICBkcmF3WSxcbiAgICAgICAgICAgIGRyYXdXaWR0aCxcbiAgICAgICAgICAgIGRyYXdIZWlnaHQsXG4gICAgICAgICAgICB7IHN0cm9rZTogJ25vbmUnLCBmaWxsOiAncmdiYSgyNTUsMjU1LDI1NSwwKScsIGZpbGxTdHlsZTogJ3NvbGlkJyB9LFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm1hc2tHLmNsYXNzTGlzdC5hZGQoJ21hc2snKTtcbiAgICAgICAgdGhpcy5tYXNrRy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpO1xuICAgICAgICB0aGlzLmcuYXBwZW5kKHRoaXMubWFza0cpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRNYXNrRygpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMubWFza0csICdtb3VzZWVudGVyJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUGxhaXRCb2FyZC5pc0ZvY3VzKHRoaXMuYm9hcmQpICYmICF0aGlzLmVsZW1lbnQuaXNDb2xsYXBzZWQgJiYgIXRoaXMuaGFuZEFjdGl2ZTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5nLmNsYXNzTGlzdC5hZGQoJ2hvdmVyZWQnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5tYXNrRywgJ21vdXNlbGVhdmUnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQbGFpdEJvYXJkLmlzRm9jdXModGhpcy5ib2FyZCkgJiYgIXRoaXMuZWxlbWVudC5pc0NvbGxhcHNlZDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5nLmNsYXNzTGlzdC5yZW1vdmUoJ2hvdmVyZWQnKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlc3Ryb3lNYXNrRygpIHtcbiAgICAgICAgaWYgKHRoaXMubWFza0cpIHtcbiAgICAgICAgICAgIHRoaXMubWFza0cucmVtb3ZlKCk7XG4gICAgICAgICAgICB0aGlzLmcuY2xhc3NMaXN0LnJlbW92ZSgnaG92ZXJlZCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZW5hYmxlTWFza0coKSB7XG4gICAgICAgIGlmICh0aGlzLm1hc2tHKSB7XG4gICAgICAgICAgICB0aGlzLm1hc2tHLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsICd2aXNpYmxlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNhYmxlZE1hc2tHKCkge1xuICAgICAgICBpZiAodGhpcy5tYXNrRykge1xuICAgICAgICAgICAgdGhpcy5tYXNrRy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3QWN0aXZlRygpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95QWN0aXZlRygpO1xuICAgICAgICB0aGlzLmFic3RyYWN0SW5jbHVkZWRPdXRsaW5lRz8ucmVtb3ZlKCk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QodGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQWJzdHJhY3RJbmNsdWRlZE91dGxpbmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IGdldFJlY3RhbmdsZUJ5Tm9kZSh0aGlzLm5vZGUgYXMgTWluZE5vZGUpO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRTdHJva2VHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICAgICAgICAgIHRoaXMucm91Z2hTVkcgYXMgUm91Z2hTVkcsXG4gICAgICAgICAgICAgICAgeCAtIDIsXG4gICAgICAgICAgICAgICAgeSAtIDIsXG4gICAgICAgICAgICAgICAgeCArIHdpZHRoICsgMixcbiAgICAgICAgICAgICAgICB5ICsgaGVpZ2h0ICsgMixcbiAgICAgICAgICAgICAgICB7IHN0cm9rZTogUFJJTUFSWV9DT0xPUiwgc3Ryb2tlV2lkdGg6IDIsIGZpbGw6ICcnIH0sXG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIOW9seWTjSBtYXNrIOenu+WFpeenu+WHuuS6i+S7tlxuICAgICAgICAgICAgc2VsZWN0ZWRTdHJva2VHLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgICAgICB0aGlzLmcuYXBwZW5kQ2hpbGQoc2VsZWN0ZWRTdHJva2VHKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRy5wdXNoKHNlbGVjdGVkU3Ryb2tlRyk7XG4gICAgICAgICAgICBpZiAodGhpcy5yaWNodGV4dENvbXBvbmVudFJlZj8uaW5zdGFuY2UucGxhaXRSZWFkb25seSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQmFja2dyb3VuZEcgPSBkcmF3Um91bmRSZWN0YW5nbGUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91Z2hTVkcgYXMgUm91Z2hTVkcsXG4gICAgICAgICAgICAgICAgICAgIHggLSAyLFxuICAgICAgICAgICAgICAgICAgICB5IC0gMixcbiAgICAgICAgICAgICAgICAgICAgeCArIHdpZHRoICsgMixcbiAgICAgICAgICAgICAgICAgICAgeSArIGhlaWdodCArIDIsXG4gICAgICAgICAgICAgICAgICAgIHsgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLCBmaWxsOiBQUklNQVJZX0NPTE9SLCBmaWxsU3R5bGU6ICdzb2xpZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRCYWNrZ3JvdW5kRy5zdHlsZS5vcGFjaXR5ID0gJzAuMTUnO1xuICAgICAgICAgICAgICAgIC8vIOW9seWTjeWPjOWHu+S6i+S7tlxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQmFja2dyb3VuZEcuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICAgICAgICAgICAgICB0aGlzLmcuYXBwZW5kQ2hpbGQoc2VsZWN0ZWRCYWNrZ3JvdW5kRyk7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVHLnB1c2goc2VsZWN0ZWRCYWNrZ3JvdW5kRywgc2VsZWN0ZWRTdHJva2VHKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc3Ryb3lBY3RpdmVHKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZUcuZm9yRWFjaChnID0+IGcucmVtb3ZlKCkpO1xuICAgICAgICB0aGlzLmFjdGl2ZUcgPSBbXTtcbiAgICB9XG5cbiAgICB1cGRhdGVBY3RpdmVDbGFzcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIyLmFkZENsYXNzKHRoaXMuZywgJ2FjdGl2ZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIyLnJlbW92ZUNsYXNzKHRoaXMuZywgJ2FjdGl2ZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd1JpY2h0ZXh0KCkge1xuICAgICAgICBjb25zdCB7IHJpY2h0ZXh0RywgcmljaHRleHRDb21wb25lbnRSZWYsIGZvcmVpZ25PYmplY3QgfSA9IGRyYXdNaW5kTm9kZVJpY2h0ZXh0KHRoaXMubm9kZSBhcyBNaW5kTm9kZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5yaWNodGV4dENvbXBvbmVudFJlZiA9IHJpY2h0ZXh0Q29tcG9uZW50UmVmO1xuICAgICAgICB0aGlzLnJpY2h0ZXh0RyA9IHJpY2h0ZXh0RztcbiAgICAgICAgdGhpcy5mb3JlaWduT2JqZWN0ID0gZm9yZWlnbk9iamVjdDtcbiAgICAgICAgdGhpcy5yZW5kZXIyLmFkZENsYXNzKHJpY2h0ZXh0RywgJ3JpY2h0ZXh0Jyk7XG4gICAgICAgIHRoaXMuZy5hcHBlbmQocmljaHRleHRHKTtcbiAgICB9XG5cbiAgICBkcmF3RXh0ZW5kKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lFeHRlbmQoKTtcbiAgICAgICAgLy8gY3JlYXRlIGV4dGVuZFxuICAgICAgICB0aGlzLmV4dGVuZEcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGNvbnN0IGNvbGxhcHNlRyA9IGNyZWF0ZUcoKTtcbiAgICAgICAgdGhpcy5leHRlbmRHLmNsYXNzTGlzdC5hZGQoJ2V4dGVuZCcpO1xuICAgICAgICBjb2xsYXBzZUcuY2xhc3NMaXN0LmFkZCgnY29sbGFwc2UtY29udGFpbmVyJyk7XG4gICAgICAgIHRoaXMuZy5hcHBlbmQodGhpcy5leHRlbmRHKTtcbiAgICAgICAgdGhpcy5leHRlbmRHLmFwcGVuZChjb2xsYXBzZUcpO1xuICAgICAgICBpZiAodGhpcy5ub2RlLm9yaWdpbi5pc1Jvb3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBpbnRlcmFjdGl2ZVxuICAgICAgICBmcm9tRXZlbnQoY29sbGFwc2VHLCAnbW91c2V1cCcpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMuaGFuZEFjdGl2ZSB8fCB0aGlzLmJvYXJkLm9wdGlvbnMucmVhZG9ubHkpLFxuICAgICAgICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ29sbGFwc2VkID0gIXRoaXMubm9kZS5vcmlnaW4uaXNDb2xsYXBzZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RWxlbWVudDogUGFydGlhbDxNaW5kRWxlbWVudD4gPSB7IGlzQ29sbGFwc2VkIH07XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUodGhpcy5ib2FyZCwgbmV3RWxlbWVudCwgcGF0aCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IGdldFJlY3RhbmdsZUJ5Tm9kZSh0aGlzLm5vZGUpO1xuICAgICAgICBjb25zdCBzdHJva2UgPSBnZXRCcmFuY2hDb2xvckJ5TWluZEVsZW1lbnQodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSB0aGlzLm5vZGUub3JpZ2luLmJyYW5jaFdpZHRoID8gdGhpcy5ub2RlLm9yaWdpbi5icmFuY2hXaWR0aCA6IFNUUk9LRV9XSURUSDtcbiAgICAgICAgY29uc3QgZXh0ZW5kWSA9IHkgKyBoZWlnaHQgLyAyO1xuICAgICAgICBjb25zdCBub2RlTGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudCh0aGlzLmVsZW1lbnQpIGFzIE1pbmRMYXlvdXRUeXBlO1xuXG4gICAgICAgIGxldCBleHRlbmRMaW5lWFkgPSBbXG4gICAgICAgICAgICBbeCArIHdpZHRoLCBleHRlbmRZXSxcbiAgICAgICAgICAgIFt4ICsgd2lkdGggKyBFWFRFTkRfT0ZGU0VULCBleHRlbmRZXVxuICAgICAgICBdO1xuXG4gICAgICAgIGxldCBhcnJvd1lPZmZzZXQgPSBbLTQsIDEsIC0wLjYsIDRdO1xuICAgICAgICBsZXQgYXJyb3dYT2Zmc2V0ID0gWzEwLCA1LjUsIDUuNSwgMTBdO1xuXG4gICAgICAgIGxldCBleHRlbmRMaW5lWE9mZnNldCA9IFswLCAwXTtcbiAgICAgICAgbGV0IGV4dGVuZExpbmVZT2Zmc2V0ID0gWzAsIDBdO1xuXG4gICAgICAgIGxldCBjaXJjbGVPZmZzZXQgPSBbRVhURU5EX1JBRElVUyAvIDIsIDBdO1xuXG4gICAgICAgIGlmIChpc0hvcml6b250YWxMYXlvdXQobm9kZUxheW91dCkgJiYgIWlzSW5kZW50ZWRMYXlvdXQobm9kZUxheW91dCkpIHtcbiAgICAgICAgICAgIGV4dGVuZExpbmVZT2Zmc2V0ID1cbiAgICAgICAgICAgICAgICAoZ2V0Tm9kZVNoYXBlQnlFbGVtZW50KHRoaXMubm9kZS5vcmlnaW4pIGFzIE1pbmROb2RlU2hhcGUpID09PSBNaW5kTm9kZVNoYXBlLnJvdW5kUmVjdGFuZ2xlXG4gICAgICAgICAgICAgICAgICAgID8gWzAsIDBdXG4gICAgICAgICAgICAgICAgICAgIDogW2hlaWdodCAvIDIsIGhlaWdodCAvIDJdO1xuICAgICAgICAgICAgaWYgKGlzTGVmdExheW91dChub2RlTGF5b3V0KSkge1xuICAgICAgICAgICAgICAgIC8v5bemXG4gICAgICAgICAgICAgICAgZXh0ZW5kTGluZVhPZmZzZXQgPSBbLXdpZHRoLCAtd2lkdGggLSBFWFRFTkRfT0ZGU0VUICogMl07XG4gICAgICAgICAgICAgICAgY2lyY2xlT2Zmc2V0ID0gWy1FWFRFTkRfUkFESVVTIC8gMiwgMF07XG4gICAgICAgICAgICAgICAgYXJyb3dYT2Zmc2V0ID0gWy0xMCwgLTUuNSwgLTUuNSwgLTEwXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFycm93WE9mZnNldCA9IFstNCwgMC42LCAtMSwgNF07XG4gICAgICAgICAgICBpZiAoaXNUb3BMYXlvdXQobm9kZUxheW91dCkpIHtcbiAgICAgICAgICAgICAgICAvL+S4ilxuICAgICAgICAgICAgICAgIGV4dGVuZExpbmVYT2Zmc2V0ID0gWy13aWR0aCAvIDIsIC13aWR0aCAvIDIgLSBFWFRFTkRfT0ZGU0VUXTtcbiAgICAgICAgICAgICAgICBleHRlbmRMaW5lWU9mZnNldCA9IFstaGVpZ2h0IC8gMiwgLWhlaWdodCAvIDIgLSBFWFRFTkRfT0ZGU0VUXTtcbiAgICAgICAgICAgICAgICBhcnJvd1lPZmZzZXQgPSBbLTEwLCAtNS41LCAtNS41LCAtMTBdO1xuICAgICAgICAgICAgICAgIGNpcmNsZU9mZnNldCA9IFswLCAtRVhURU5EX1JBRElVUyAvIDJdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvL+S4i1xuICAgICAgICAgICAgICAgIGV4dGVuZExpbmVYT2Zmc2V0ID0gWy13aWR0aCAvIDIsIC13aWR0aCAvIDIgLSBFWFRFTkRfT0ZGU0VUXTtcbiAgICAgICAgICAgICAgICBleHRlbmRMaW5lWU9mZnNldCA9IFtoZWlnaHQgLyAyLCBoZWlnaHQgLyAyICsgRVhURU5EX09GRlNFVF07XG4gICAgICAgICAgICAgICAgYXJyb3dZT2Zmc2V0ID0gWzEwLCA1LjUsIDUuNSwgMTBdO1xuICAgICAgICAgICAgICAgIGNpcmNsZU9mZnNldCA9IFswLCBFWFRFTkRfUkFESVVTIC8gMl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHRlbmRMaW5lWFkgPSBbXG4gICAgICAgICAgICBbZXh0ZW5kTGluZVhZWzBdWzBdICsgZXh0ZW5kTGluZVhPZmZzZXRbMF0sIGV4dGVuZExpbmVYWVswXVsxXSArIGV4dGVuZExpbmVZT2Zmc2V0WzBdXSxcbiAgICAgICAgICAgIFtleHRlbmRMaW5lWFlbMV1bMF0gKyBleHRlbmRMaW5lWE9mZnNldFsxXSwgZXh0ZW5kTGluZVhZWzFdWzFdICsgZXh0ZW5kTGluZVlPZmZzZXRbMV1dXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgZXh0ZW5kTGluZSA9IHRoaXMucm91Z2hTVkcubGluZShleHRlbmRMaW5lWFlbMF1bMF0sIGV4dGVuZExpbmVYWVswXVsxXSwgZXh0ZW5kTGluZVhZWzFdWzBdLCBleHRlbmRMaW5lWFlbMV1bMV0sIHtcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoLFxuICAgICAgICAgICAgc3Ryb2tlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8v57uY5Yi2566t5aS0XG4gICAgICAgIGNvbnN0IGhpZGVBcnJvd1RvcExpbmUgPSB0aGlzLnJvdWdoU1ZHLmxpbmUoXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMF0gKyBhcnJvd1hPZmZzZXRbMF0sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBhcnJvd1lPZmZzZXRbMF0sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMF0gKyBhcnJvd1hPZmZzZXRbMV0sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBhcnJvd1lPZmZzZXRbMV0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGhpZGVBcnJvd0JvdHRvbUxpbmUgPSB0aGlzLnJvdWdoU1ZHLmxpbmUoXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMF0gKyBhcnJvd1hPZmZzZXRbMl0sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBhcnJvd1lPZmZzZXRbMl0sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMF0gKyBhcnJvd1hPZmZzZXRbM10sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBhcnJvd1lPZmZzZXRbM10sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMubm9kZS5vcmlnaW4uaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGJhZGdlID0gdGhpcy5yb3VnaFNWRy5jaXJjbGUoZXh0ZW5kTGluZVhZWzFdWzBdICsgY2lyY2xlT2Zmc2V0WzBdLCBleHRlbmRMaW5lWFlbMV1bMV0gKyBjaXJjbGVPZmZzZXRbMV0sIEVYVEVORF9SQURJVVMsIHtcbiAgICAgICAgICAgICAgICBmaWxsOiBzdHJva2UsXG4gICAgICAgICAgICAgICAgc3Ryb2tlLFxuICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGxldCBudW1iZXJPZmZzZXQgPSAwO1xuICAgICAgICAgICAgaWYgKGdldENoaWxkcmVuQ291bnQodGhpcy5ub2RlLm9yaWdpbikgPj0gMTApIG51bWJlck9mZnNldCA9IC0yO1xuICAgICAgICAgICAgaWYgKGdldENoaWxkcmVuQ291bnQodGhpcy5ub2RlLm9yaWdpbikgPT09IDEpIG51bWJlck9mZnNldCA9IDE7XG5cbiAgICAgICAgICAgIGNvbnN0IGJhZGdlVGV4dCA9IGNyZWF0ZVRleHQoXG4gICAgICAgICAgICAgICAgZXh0ZW5kTGluZVhZWzFdWzBdICsgY2lyY2xlT2Zmc2V0WzBdIC0gNCArIG51bWJlck9mZnNldCxcbiAgICAgICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBjaXJjbGVPZmZzZXRbMV0gKyA0LFxuICAgICAgICAgICAgICAgIHN0cm9rZSxcbiAgICAgICAgICAgICAgICBgJHtnZXRDaGlsZHJlbkNvdW50KHRoaXMubm9kZS5vcmlnaW4pfWBcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZy5jbGFzc0xpc3QuYWRkKCdjb2xsYXBzZWQnKTtcbiAgICAgICAgICAgIGJhZGdlLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnb3BhY2l0eTogMC4xNScpO1xuICAgICAgICAgICAgYmFkZ2VUZXh0LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZm9udC1zaXplOiAxMnB4Jyk7XG4gICAgICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoYmFkZ2UpO1xuICAgICAgICAgICAgY29sbGFwc2VHLmFwcGVuZENoaWxkKGJhZGdlVGV4dCk7XG4gICAgICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoZXh0ZW5kTGluZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmcuY2xhc3NMaXN0LnJlbW92ZSgnY29sbGFwc2VkJyk7XG4gICAgICAgICAgICBpZiAodGhpcy5ub2RlLm9yaWdpbi5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGlkZUNpcmNsZUcgPSB0aGlzLnJvdWdoU1ZHLmNpcmNsZShcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kTGluZVhZWzFdWzBdICsgY2lyY2xlT2Zmc2V0WzBdLFxuICAgICAgICAgICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBjaXJjbGVPZmZzZXRbMV0sXG4gICAgICAgICAgICAgICAgICAgIEVYVEVORF9SQURJVVMgLSAxLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAnI2ZmZicsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoaGlkZUNpcmNsZUcpO1xuICAgICAgICAgICAgICAgIGNvbGxhcHNlRy5hcHBlbmRDaGlsZChoaWRlQXJyb3dUb3BMaW5lKTtcbiAgICAgICAgICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoaGlkZUFycm93Qm90dG9tTGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95RXh0ZW5kKCkge1xuICAgICAgICBpZiAodGhpcy5leHRlbmRHKSB7XG4gICAgICAgICAgICB0aGlzLmV4dGVuZEcucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95UmljaHRleHQoKSB7XG4gICAgICAgIGlmICh0aGlzLnJpY2h0ZXh0Rykge1xuICAgICAgICAgICAgdGhpcy5yaWNodGV4dEcucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmljaHRleHRDb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMucmljaHRleHRDb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlQWJzdHJhY3RJbmNsdWRlZE91dGxpbmUoYWN0aXZlSGFuZGxlUG9zaXRpb24/OiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLCByZXNpemluZ0xvY2F0aW9uPzogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuYWJzdHJhY3RJbmNsdWRlZE91dGxpbmVHPy5yZW1vdmUoKTtcbiAgICAgICAgdGhpcy5hYnN0cmFjdEluY2x1ZGVkT3V0bGluZUcgPSBkcmF3QWJzdHJhY3RJbmNsdWRlZE91dGxpbmUoXG4gICAgICAgICAgICB0aGlzLmJvYXJkLFxuICAgICAgICAgICAgdGhpcy5yb3VnaFNWRyxcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudCxcbiAgICAgICAgICAgIGFjdGl2ZUhhbmRsZVBvc2l0aW9uLFxuICAgICAgICAgICAgcmVzaXppbmdMb2NhdGlvblxuICAgICAgICApO1xuICAgICAgICBQbGFpdEJvYXJkLmdldEhvc3QodGhpcy5ib2FyZCkuYXBwZW5kKHRoaXMuYWJzdHJhY3RJbmNsdWRlZE91dGxpbmVHKTtcbiAgICB9XG5cbiAgICB1cGRhdGVSaWNodGV4dCgpIHtcbiAgICAgICAgdXBkYXRlUmljaFRleHQodGhpcy5ub2RlLm9yaWdpbi5kYXRhLnRvcGljLCB0aGlzLnJpY2h0ZXh0Q29tcG9uZW50UmVmISk7XG4gICAgICAgIHVwZGF0ZU1pbmROb2RlVG9waWNTaXplKHRoaXMubm9kZSwgdGhpcy5yaWNodGV4dEcgYXMgU1ZHR0VsZW1lbnQsIHRoaXMuaXNFZGl0YWJsZSk7XG4gICAgfVxuXG4gICAgc3RhcnRFZGl0VGV4dChpc0VuZDogYm9vbGVhbiwgaXNDbGVhcjogYm9vbGVhbikge1xuICAgICAgICBpZiAoIXRoaXMucmljaHRleHRDb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndW5kZWZpbmVkIHJpY2h0ZXh0Q29tcG9uZW50UmVmJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmljaHRleHRJbnN0YW5jZSA9IHRoaXMucmljaHRleHRDb21wb25lbnRSZWYuaW5zdGFuY2U7XG5cbiAgICAgICAgdGhpcy5pc0VkaXRhYmxlID0gdHJ1ZTtcbiAgICAgICAgSVNfVEVYVF9FRElUQUJMRS5zZXQodGhpcy5ib2FyZCwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuZGlzYWJsZWRNYXNrRygpO1xuICAgICAgICB1cGRhdGVNaW5kTm9kZVRvcGljU2l6ZSh0aGlzLm5vZGUsIHRoaXMucmljaHRleHRHIGFzIFNWR0dFbGVtZW50LCB0aGlzLmlzRWRpdGFibGUpO1xuICAgICAgICBpZiAocmljaHRleHRJbnN0YW5jZS5wbGFpdFJlYWRvbmx5KSB7XG4gICAgICAgICAgICByaWNodGV4dEluc3RhbmNlLnBsYWl0UmVhZG9ubHkgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmljaHRleHRDb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5kcmF3QWN0aXZlRygpO1xuICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBpc0VuZCA/IEVkaXRvci5lbmQocmljaHRleHRJbnN0YW5jZS5lZGl0b3IsIFswXSkgOiBbMF07XG4gICAgICAgICAgICBzZXRGdWxsU2VsZWN0aW9uQW5kRm9jdXMocmljaHRleHRJbnN0YW5jZS5lZGl0b3IsIGxvY2F0aW9uKTtcbiAgICAgICAgICAgIGlmIChpc0NsZWFyKSB7XG4gICAgICAgICAgICAgICAgRWRpdG9yLmRlbGV0ZUJhY2t3YXJkKHJpY2h0ZXh0SW5zdGFuY2UuZWRpdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGhhbmRsZSBpbnZhbGlkIHdpZHRoIGFuZCBoZWlnaHQgKG9sZCBkYXRhKVxuICAgICAgICAgICAgbGV0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0UmljaHRleHRDb250ZW50U2l6ZShyaWNodGV4dEluc3RhbmNlLmVkaXRhYmxlKTtcbiAgICAgICAgICAgIGlmICh3aWR0aCAhPT0gdGhpcy5lbGVtZW50LndpZHRoIHx8IGhlaWdodCAhPT0gdGhpcy5lbGVtZW50LmhlaWdodCkge1xuICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLnNldFRvcGljU2l6ZSh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByaWNodGV4dCA9IHJpY2h0ZXh0SW5zdGFuY2UucGxhaXRWYWx1ZTtcbiAgICAgICAgLy8gdXNlIGRlYm91bmNlVGltZSB0byB3YWl0IERPTSByZW5kZXIgY29tcGxldGVcbiAgICAgICAgY29uc3QgdmFsdWVDaGFuZ2UkID0gcmljaHRleHRJbnN0YW5jZS5wbGFpdENoYW5nZVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDApLFxuICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOi/h+a7pOaOiSBvcGVyYXRpb25zIOS4reWFqOaYryBzZXRfc2VsZWN0aW9uIOeahOaTjeS9nFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWV2ZW50Lm9wZXJhdGlvbnMuZXZlcnkob3AgPT4gT3BlcmF0aW9uLmlzU2VsZWN0aW9uT3BlcmF0aW9uKG9wKSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyaWNodGV4dCA9PT0gZXZlbnQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJpY2h0ZXh0KCk7XG4gICAgICAgICAgICAgICAgLy8g5pu05paw5a+M5paH5pys44CB5pu05paw5a696auYXG4gICAgICAgICAgICAgICAgbGV0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0UmljaHRleHRDb250ZW50U2l6ZShyaWNodGV4dEluc3RhbmNlLmVkaXRhYmxlKTtcbiAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5zZXRUb3BpYyh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQsIGV2ZW50LnZhbHVlLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBNRVJHSU5HLnNldCh0aGlzLmJvYXJkLCB0cnVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBjb25zdCBjb21wb3NpdGlvbiQgPSByaWNodGV4dEluc3RhbmNlLnBsYWl0Q29tcG9zaXRpb24ucGlwZShkZWJvdW5jZVRpbWUoMCkpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICBsZXQgeyB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRSaWNodGV4dENvbnRlbnRTaXplKHJpY2h0ZXh0SW5zdGFuY2UuZWRpdGFibGUpO1xuICAgICAgICAgICAgaWYgKHdpZHRoIDwgTk9ERV9NSU5fV0lEVEgpIHtcbiAgICAgICAgICAgICAgICB3aWR0aCA9IE5PREVfTUlOX1dJRFRIO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV2ZW50LmlzQ29tcG9zaW5nICYmICh3aWR0aCAhPT0gdGhpcy5ub2RlLm9yaWdpbi53aWR0aCB8fCBoZWlnaHQgIT09IHRoaXMubm9kZS5vcmlnaW4uaGVpZ2h0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ6IFBhcnRpYWw8TWluZEVsZW1lbnQ+ID0ge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGggLyB0aGlzLmJvYXJkLnZpZXdwb3J0Lnpvb20sXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0IC8gdGhpcy5ib2FyZC52aWV3cG9ydC56b29tXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aCh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZSh0aGlzLmJvYXJkLCBuZXdFbGVtZW50LCBwYXRoKTtcbiAgICAgICAgICAgICAgICBNRVJHSU5HLnNldCh0aGlzLmJvYXJkLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IG1vdXNlZG93biQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZWRvd24nKS5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IHRyYW5zZm9ybVBvaW50KHRoaXMuYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KHRoaXMuYm9hcmQpKSk7XG4gICAgICAgICAgICBjb25zdCBjbGlja0luTm9kZSA9IGhpdE1pbmRFbGVtZW50KHRoaXMuYm9hcmQsIHBvaW50LCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGNsaWNrSW5Ob2RlICYmICFoYXNFZGl0YWJsZVRhcmdldChyaWNodGV4dEluc3RhbmNlLmVkaXRvciwgZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFjbGlja0luTm9kZSkge1xuICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBjb21wb3NpdGlvbiBpbnB1dCBzdGF0ZSwgbGlrZTogQ2hpbmVzZSBJTUUgQ29tcG9zaXRpb24gSW5wdXRcbiAgICAgICAgICAgICAgICB0aW1lcigwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBleGl0SGFuZGxlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlTWFza0coKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IHJpY2h0ZXh0SW5zdGFuY2UuZWRpdG9yO1xuICAgICAgICBjb25zdCB7IGtleWRvd24gfSA9IGVkaXRvcjtcbiAgICAgICAgZWRpdG9yLmtleWRvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC5pc0NvbXBvc2luZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICBleGl0SGFuZGxlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmF3QWN0aXZlRygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlTWFza0coKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmICFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgZXhpdEhhbmRsZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhd0FjdGl2ZUcoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZU1hc2tHKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGV4aXRIYW5kbGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYXdBY3RpdmVHKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmF3TWFza0coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZXhpdEhhbmRsZSA9ICgpID0+IHtcbiAgICAgICAgICAgIC8vIHVuc3Vic2NyaWJlXG4gICAgICAgICAgICB2YWx1ZUNoYW5nZSQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIGNvbXBvc2l0aW9uJC51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgbW91c2Vkb3duJC51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgZWRpdG9yLmtleWRvd24gPSBrZXlkb3duOyAvLyByZXNldCBrZXlkb3duXG4gICAgICAgICAgICAvLyBlZGl0YWJsZSBzdGF0dXNcbiAgICAgICAgICAgIE1FUkdJTkcuc2V0KHRoaXMuYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgICAgIHJpY2h0ZXh0SW5zdGFuY2UucGxhaXRSZWFkb25seSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnJpY2h0ZXh0Q29tcG9uZW50UmVmPy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHRoaXMuaXNFZGl0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgdXBkYXRlTWluZE5vZGVUb3BpY1NpemUodGhpcy5ub2RlLCB0aGlzLnJpY2h0ZXh0RyBhcyBTVkdHRWxlbWVudCwgdGhpcy5pc0VkaXRhYmxlKTtcbiAgICAgICAgICAgIElTX1RFWFRfRURJVEFCTEUuc2V0KHRoaXMuYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB0cmFja0J5ID0gKGluZGV4OiBudW1iZXIsIG5vZGU6IE1pbmROb2RlKSA9PiB7XG4gICAgICAgIHJldHVybiBub2RlLm9yaWdpbi5pZDtcbiAgICB9O1xuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuYWJzdHJhY3RJbmNsdWRlZE91dGxpbmVHPy5yZW1vdmUoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95UmljaHRleHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgaWYgKEVMRU1FTlRfVE9fTk9ERS5nZXQodGhpcy5lbGVtZW50KSA9PT0gdGhpcy5ub2RlKSB7XG4gICAgICAgICAgICBFTEVNRU5UX1RPX05PREUuZGVsZXRlKHRoaXMuZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -10,12 +10,14 @@ export class MindEmojiBaseComponent {
10
10
  }
11
11
  }
12
12
  MindEmojiBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: MindEmojiBaseComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
13
- MindEmojiBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: MindEmojiBaseComponent, inputs: { fontSize: "fontSize", emojiItem: "emojiItem" }, ngImport: i0 });
13
+ MindEmojiBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: MindEmojiBaseComponent, inputs: { fontSize: "fontSize", emojiItem: "emojiItem", board: "board" }, ngImport: i0 });
14
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: MindEmojiBaseComponent, decorators: [{
15
15
  type: Directive
16
16
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fontSize: [{
17
17
  type: Input
18
18
  }], emojiItem: [{
19
19
  type: Input
20
+ }], board: [{
21
+ type: Input
20
22
  }] } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9wbHVnaW5zL2Vtb2ppL2Vtb2ppLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUk3RCxNQUFNLE9BQU8sc0JBQXNCO0lBTy9CLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDekMsQ0FBQztJQUVELFlBQXNCLFVBQW1DO1FBQW5DLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBVHpELGFBQVEsR0FBVyxFQUFFLENBQUM7SUFTc0MsQ0FBQzs7bUhBWHBELHNCQUFzQjt1R0FBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBRGxDLFNBQVM7aUdBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVtb2ppSXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudC1kYXRhJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgTWluZEVtb2ppQmFzZUNvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBmb250U2l6ZTogbnVtYmVyID0gMTQ7XG5cbiAgICBASW5wdXQoKVxuICAgIGVtb2ppSXRlbSE6IEVtb2ppSXRlbTtcblxuICAgIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxufVxuIl19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9wbHVnaW5zL2Vtb2ppL2Vtb2ppLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUs3RCxNQUFNLE9BQU8sc0JBQXNCO0lBVS9CLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDekMsQ0FBQztJQUVELFlBQXNCLFVBQW1DO1FBQW5DLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBWnpELGFBQVEsR0FBVyxFQUFFLENBQUM7SUFZc0MsQ0FBQzs7bUhBZHBELHNCQUFzQjt1R0FBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBRGxDLFNBQVM7aUdBR04sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbW9qaUl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VsZW1lbnQtZGF0YSc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBNaW5kRW1vamlCYXNlQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKVxuICAgIGZvbnRTaXplOiBudW1iZXIgPSAxNDtcblxuICAgIEBJbnB1dCgpXG4gICAgZW1vamlJdGVtITogRW1vamlJdGVtO1xuXG4gICAgQElucHV0KClcbiAgICBib2FyZCE6IFBsYWl0Qm9hcmQ7XG5cbiAgICBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cbn1cbiJdfQ==
@@ -15,6 +15,7 @@ export class EmojiDrawer {
15
15
  const componentType = this.board.drawEmoji(emoji, element);
16
16
  this.componentRef = this.viewContainerRef.createComponent(componentType);
17
17
  this.componentRef.instance.emojiItem = emoji;
18
+ this.componentRef.instance.board = this.board;
18
19
  const fontSize = PlaitMind.isMind(element) ? 18 : 14;
19
20
  this.componentRef.instance.fontSize = fontSize;
20
21
  }
@@ -76,4 +77,4 @@ export class EmojisDrawer {
76
77
  this.emojiDrawers = [];
77
78
  }
78
79
  }
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamkuZHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvcGx1Z2lucy9lbW9qaS9lbW9qaS5kcmF3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFhLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbkQsTUFBTSxPQUFPLFdBQVc7SUFHcEIsWUFBb0IsS0FBMEIsRUFBVSxnQkFBa0M7UUFBdEUsVUFBSyxHQUFMLEtBQUssQ0FBcUI7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRjFGLGlCQUFZLEdBQWdELElBQUksQ0FBQztJQUU0QixDQUFDO0lBRTlGLElBQUksQ0FBQyxLQUFnQixFQUFFLE9BQW9CO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUM3QyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FB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LE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYyxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDakI7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTztRQUNILElBQUksSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNSLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDbkI7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW1vamlJdGVtLCBNaW5kRWxlbWVudCwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNaW5kRW1vamlCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9lbW9qaS1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFpdE1pbmRFbW9qaUJvYXJkIH0gZnJvbSAnLi93aXRoLW1pbmQtZW1vamknO1xuaW1wb3J0IHsgY3JlYXRlRm9yZWlnbk9iamVjdCB9IGZyb20gJ0BwbGFpdC9yaWNodGV4dCc7XG5pbXBvcnQgeyBjcmVhdGVHIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ3JhcGgnO1xuaW1wb3J0IHsgZ2V0RW1vamlGb250U2l6ZSwgZ2V0RW1vamlzUmVjdGFuZ2xlIH0gZnJvbSAnLi9lbW9qaSc7XG5pbXBvcnQgeyBOb2RlU3BhY2UgfSBmcm9tICcuLi8uLi91dGlscy9ub2RlLXNwYWNlJztcblxuZXhwb3J0IGNsYXNzIEVtb2ppRHJhd2VyIHtcbiAgICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxNaW5kRW1vamlCYXNlQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBib2FyZDogUGxhaXRNaW5kRW1vamlCb2FyZCwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxuXG4gICAgZHJhdyhlbW9qaTogRW1vamlJdGVtLCBlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50VHlwZSA9IHRoaXMuYm9hcmQuZHJhd0Vtb2ppKGVtb2ppLCBlbGVtZW50KTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUpO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5lbW9qaUl0ZW0gPSBlbW9qaTtcbiAgICAgICAgY29uc3QgZm9udFNpemUgPSBQbGFpdE1pbmQuaXNNaW5kKGVsZW1lbnQpID8gMTggOiAxNDtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZm9udFNpemUgPSBmb250U2l6ZTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubmF0aXZlRWxlbWVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbW9qaXNEcmF3ZXIge1xuICAgIGVtb2ppRHJhd2VyczogRW1vamlEcmF3ZXJbXSA9IFtdO1xuXG4gICAgZz86IFNWR0dFbGVtZW50O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBib2FyZDogUGxhaXRNaW5kRW1vamlCb2FyZCwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxuXG4gICAgZHJhd0Vtb2ppcyhlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgaWYgKE1pbmRFbGVtZW50Lmhhc0Vtb2ppcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IE1pbmRFbGVtZW50LmdldE5vZGUoZWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLmcgPSBjcmVhdGVHKCk7XG4gICAgICAgICAgICB0aGlzLmcuY2xhc3NMaXN0LmFkZCgnZW1vamlzJyk7XG4gICAgICAgICAgICBsZXQgeyB4LCB5IH0gPSBnZXRSZWN0YW5nbGVCeU5vZGUoTWluZEVsZW1lbnQuZ2V0Tm9kZShlbGVtZW50KSk7XG4gICAgICAgICAgICB4ID0geCArIE5vZGVTcGFjZS5nZXRFbW9qaUhvcml6b250YWxTcGFjZShlbGVtZW50KTtcbiAgICAgICAgICAgIHkgPSB5ICsgTm9kZVNwYWNlLmdldEVtb2ppVmVydGljYWxTcGFjZShlbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0RW1vamlzUmVjdGFuZ2xlKGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgZm9udFNpemUgPSBnZXRFbW9qaUZvbnRTaXplKGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgZm9yZWlnbk9iamVjdCA9IGNyZWF0ZUZvcmVpZ25PYmplY3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgICB0aGlzLmcuYXBwZW5kKGZvcmVpZ25PYmplY3QpO1xuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgnbm9kZS1lbW9qaXMtY29udGFpbmVyJyk7XG4gICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChgZW1vamktZm9udC1zaXplLSR7Zm9udFNpemV9YCk7XG4gICAgICAgICAgICBmb3JlaWduT2JqZWN0LmFwcGVuZChjb250YWluZXIpO1xuICAgICAgICAgICAgdGhpcy5lbW9qaURyYXdlcnMgPSBlbGVtZW50LmRhdGEuZW1vamlzLm1hcChlbW9qaUl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRyYXdlciA9IG5ldyBFbW9qaURyYXdlcih0aGlzLmJvYXJkLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICAgICAgICAgIGRyYXdlci5kcmF3KGVtb2ppSXRlbSwgZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRyYXdlcjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5lbW9qaURyYXdlcnMuZm9yRWFjaChkcmF3ZXIgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmQoZHJhd2VyLm5hdGl2ZUVsZW1lbnQhKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmcpIHtcbiAgICAgICAgICAgIHRoaXMuZy5yZW1vdmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtb2ppRHJhd2Vycy5mb3JFYWNoKGRyYXdlciA9PiBkcmF3ZXIuZGVzdHJveSgpKTtcbiAgICAgICAgdGhpcy5lbW9qaURyYXdlcnMgPSBbXTtcbiAgICB9XG59XG4iXX0=
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamkuZHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvcGx1Z2lucy9lbW9qaS9lbW9qaS5kcmF3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFhLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbkQsTUFBTSxPQUFPLFdBQVc7SUFHcEIsWUFBb0IsS0FBMEIsRUFBVSxnQkFBa0M7UUFBdEUsVUFBSyxHQUFMLEtBQUssQ0FBcUI7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRjFGLGlCQUFZLEdBQWdELElBQUksQ0FBQztJQUU0QixDQUFDO0lBRTlGLElBQUksQ0FBQyxLQUFnQixFQUFFLE9BQW9CO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUM3QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFB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WUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDL0IsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYyxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDakI7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTztRQUNILElBQUksSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNSLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDbkI7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW1vamlJdGVtLCBNaW5kRWxlbWVudCwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNaW5kRW1vamlCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9lbW9qaS1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFpdE1pbmRFbW9qaUJvYXJkIH0gZnJvbSAnLi93aXRoLW1pbmQtZW1vamknO1xuaW1wb3J0IHsgY3JlYXRlRm9yZWlnbk9iamVjdCB9IGZyb20gJ0BwbGFpdC9yaWNodGV4dCc7XG5pbXBvcnQgeyBjcmVhdGVHIH0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlOb2RlIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ3JhcGgnO1xuaW1wb3J0IHsgZ2V0RW1vamlGb250U2l6ZSwgZ2V0RW1vamlzUmVjdGFuZ2xlIH0gZnJvbSAnLi9lbW9qaSc7XG5pbXBvcnQgeyBOb2RlU3BhY2UgfSBmcm9tICcuLi8uLi91dGlscy9ub2RlLXNwYWNlJztcblxuZXhwb3J0IGNsYXNzIEVtb2ppRHJhd2VyIHtcbiAgICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxNaW5kRW1vamlCYXNlQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBib2FyZDogUGxhaXRNaW5kRW1vamlCb2FyZCwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxuXG4gICAgZHJhdyhlbW9qaTogRW1vamlJdGVtLCBlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50VHlwZSA9IHRoaXMuYm9hcmQuZHJhd0Vtb2ppKGVtb2ppLCBlbGVtZW50KTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFR5cGUpO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5lbW9qaUl0ZW0gPSBlbW9qaTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuYm9hcmQgPSB0aGlzLmJvYXJkO1xuICAgICAgICBjb25zdCBmb250U2l6ZSA9IFBsYWl0TWluZC5pc01pbmQoZWxlbWVudCkgPyAxOCA6IDE0O1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5mb250U2l6ZSA9IGZvbnRTaXplO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5uYXRpdmVFbGVtZW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVtb2ppc0RyYXdlciB7XG4gICAgZW1vamlEcmF3ZXJzOiBFbW9qaURyYXdlcltdID0gW107XG5cbiAgICBnPzogU1ZHR0VsZW1lbnQ7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJvYXJkOiBQbGFpdE1pbmRFbW9qaUJvYXJkLCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHt9XG5cbiAgICBkcmF3RW1vamlzKGVsZW1lbnQ6IE1pbmRFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICBpZiAoTWluZEVsZW1lbnQuaGFzRW1vamlzKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gTWluZEVsZW1lbnQuZ2V0Tm9kZShlbGVtZW50KTtcbiAgICAgICAgICAgIHRoaXMuZyA9IGNyZWF0ZUcoKTtcbiAgICAgICAgICAgIHRoaXMuZy5jbGFzc0xpc3QuYWRkKCdlbW9qaXMnKTtcbiAgICAgICAgICAgIGxldCB7IHgsIHkgfSA9IGdldFJlY3RhbmdsZUJ5Tm9kZShNaW5kRWxlbWVudC5nZXROb2RlKGVsZW1lbnQpKTtcbiAgICAgICAgICAgIHggPSB4ICsgTm9kZVNwYWNlLmdldEVtb2ppSG9yaXpvbnRhbFNwYWNlKGVsZW1lbnQpO1xuICAgICAgICAgICAgeSA9IHkgKyBOb2RlU3BhY2UuZ2V0RW1vamlWZXJ0aWNhbFNwYWNlKGVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRFbW9qaXNSZWN0YW5nbGUoZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBmb250U2l6ZSA9IGdldEVtb2ppRm9udFNpemUoZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBmb3JlaWduT2JqZWN0ID0gY3JlYXRlRm9yZWlnbk9iamVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgIHRoaXMuZy5hcHBlbmQoZm9yZWlnbk9iamVjdCk7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdub2RlLWVtb2ppcy1jb250YWluZXInKTtcbiAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKGBlbW9qaS1mb250LXNpemUtJHtmb250U2l6ZX1gKTtcbiAgICAgICAgICAgIGZvcmVpZ25PYmplY3QuYXBwZW5kKGNvbnRhaW5lcik7XG4gICAgICAgICAgICB0aGlzLmVtb2ppRHJhd2VycyA9IGVsZW1lbnQuZGF0YS5lbW9qaXMubWFwKGVtb2ppSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZHJhd2VyID0gbmV3IEVtb2ppRHJhd2VyKHRoaXMuYm9hcmQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgICAgICAgICAgZHJhd2VyLmRyYXcoZW1vamlJdGVtLCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZHJhd2VyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmVtb2ppRHJhd2Vycy5mb3JFYWNoKGRyYXdlciA9PiB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZChkcmF3ZXIubmF0aXZlRWxlbWVudCEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZykge1xuICAgICAgICAgICAgdGhpcy5nLnJlbW92ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1vamlEcmF3ZXJzLmZvckVhY2goZHJhd2VyID0+IGRyYXdlci5kZXN0cm95KCkpO1xuICAgICAgICB0aGlzLmVtb2ppRHJhd2VycyA9IFtdO1xuICAgIH1cbn1cbiJdfQ==
@@ -83,7 +83,7 @@ export const withAbstract = (board) => {
83
83
  };
84
84
  board.mouseup = (event) => {
85
85
  startPoint = undefined;
86
- abstractHandlePosition = null;
86
+ abstractHandlePosition = undefined;
87
87
  if (activeAbstractElement) {
88
88
  if (newBoard?.abstractResize) {
89
89
  newBoard.abstractResize(AbstractResizeState.end);
@@ -102,4 +102,4 @@ export const withAbstract = (board) => {
102
102
  };
103
103
  return board;
104
104
  };
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsYUFBYSxFQUNiLFVBQVUsRUFDVixZQUFZLEVBR1osVUFBVSxFQUNWLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsY0FBYyxFQUNqQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsWUFBWSxFQUE4QixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBcUIsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBZ0IsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDM0QsTUFBTSxRQUFRLEdBQUcsS0FBd0MsQ0FBQztJQUUxRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDaEQsSUFBSSxxQkFBK0MsQ0FBQztJQUNwRCxJQUFJLHNCQUFxRCxDQUFDO0lBQzFELElBQUksZUFBeUMsQ0FBQztJQUM5QyxJQUFJLFVBQTZCLENBQUM7SUFDbEMsSUFBSSxXQUE0RCxDQUFDO0lBRWpFLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7UUFDcEMsTUFBTSxzQkFBc0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENB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QUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxDQUFDO2FBQ3ZIO1lBRUQsaUJBQWtCLENBQUMsNkJBQTZCLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDdEY7UUFDRCxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtRQUNsQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLHNCQUFzQixHQUFHLElBQUksQ0FBQztRQUM5QixJQUFJLHFCQUFxQixFQUFFO1lBQ3ZCLElBQUksUUFBUSxFQUFFLGNBQWMsRUFBRTtnQkFDMUIsUUFBUSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNwRDtZQUVELElBQUksV0FBVyxFQUFFO2dCQUNiLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLHFCQUFxQixDQUFDLENBQUM7Z0JBQy9ELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNoRDtpQkFBTTtnQkFDSCxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQXNCLENBQUM7Z0JBQ2hHLGlCQUFrQixDQUFDLDZCQUE2QixFQUFFLENBQUM7YUFDdEQ7WUFDRCxxQkFBcUIsR0FBRyxTQUFTLENBQUM7U0FDckM7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBCT0FSRF9UT19IT1NULFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIFBsYWl0UGx1Z2luLFxuICAgIFBvaW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICB0b1BvaW50LFxuICAgIHRyYW5zZm9ybVBvaW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSwgTGF5b3V0Tm9kZSwgTWluZExheW91dFR5cGUsIGlzSG9yaXpvbnRhbExheW91dCwgaXNTdGFuZGFyZExheW91dCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IEFic3RyYWN0SGFuZGxlUG9zaXRpb24sIEFic3RyYWN0UmVzaXplU3RhdGUsIE1pbmRFbGVtZW50LCBQbGFpdEFic3RyYWN0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE1pbmROb2RlQ29tcG9uZW50LCBNaW5kUXVlcmllcyB9IGZyb20gJy4uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgZmluZExvY2F0aW9uTGVmdEluZGV4LCBnZXRIaXRBYnN0cmFjdEhhbmRsZSwgZ2V0TG9jYXRpb25TY29wZSwgaGFuZGxlVG91Y2hlZEFic3RyYWN0IH0gZnJvbSAnLi4vdXRpbHMvYWJzdHJhY3QvcmVzaXplJztcbmltcG9ydCB7IHNlcGFyYXRlQ2hpbGRyZW4gfSBmcm9tICcuLi91dGlscy9hYnN0cmFjdC9jb21tb24nO1xuXG5leHBvcnQgY29uc3Qgd2l0aEFic3RyYWN0OiBQbGFpdFBsdWdpbiA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IG5ld0JvYXJkID0gYm9hcmQgYXMgUGxhaXRCb2FyZCAmIFBsYWl0QWJzdHJhY3RCb2FyZDtcblxuICAgIGNvbnN0IHsgbW91c2Vkb3duLCBtb3VzZW1vdmUsIG1vdXNldXAgfSA9IGJvYXJkO1xuICAgIGxldCBhY3RpdmVBYnN0cmFjdEVsZW1lbnQ6IFBsYWl0RWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbjogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB8IG51bGw7XG4gICAgbGV0IHRvdWNoZWRBYnN0cmFjdDogUGxhaXRFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgIGxldCBzdGFydFBvaW50OiBQb2ludCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgbmV3UHJvcGVydHk6IHsgZW5kOiBudW1iZXIgfSB8IHsgc3RhcnQ6IG51bWJlciB9IHwgdW5kZWZpbmVkO1xuXG4gICAgYm9hcmQubW91c2Vkb3duID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUFic3RyYWN0RWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKS5maWx0ZXIoZWxlbWVudCA9PiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChlbGVtZW50KSk7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBCT0FSRF9UT19IT1NULmdldChib2FyZCk7XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgaG9zdCEpKTtcblxuICAgICAgICBhY3RpdmVBYnN0cmFjdEVsZW1lbnQgPSBhY3RpdmVBYnN0cmFjdEVsZW1lbnRzLmZpbmQoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID0gZ2V0SGl0QWJzdHJhY3RIYW5kbGUoYm9hcmQsIGVsZW1lbnQgYXMgTWluZEVsZW1lbnQsIHBvaW50KTtcbiAgICAgICAgICAgIGlmIChuZXdCb2FyZD8uYWJzdHJhY3RSZXNpemUpIHtcbiAgICAgICAgICAgICAgICBuZXdCb2FyZC5hYnN0cmFjdFJlc2l6ZShBYnN0cmFjdFJlc2l6ZVN0YXRlLnN0YXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYWN0aXZlQWJzdHJhY3RFbGVtZW50KSB7XG4gICAgICAgICAgICBzdGFydFBvaW50ID0gcG9pbnQ7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBtb3VzZWRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5tb3VzZW1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBCT0FSRF9UT19IT1NULmdldChib2FyZCk7XG4gICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgaG9zdCEpKTtcblxuICAgICAgICB0b3VjaGVkQWJzdHJhY3QgPSBoYW5kbGVUb3VjaGVkQWJzdHJhY3QoYm9hcmQsIHRvdWNoZWRBYnN0cmFjdCwgZW5kUG9pbnQpO1xuXG4gICAgICAgIGlmIChhYnN0cmFjdEhhbmRsZVBvc2l0aW9uICYmIGFjdGl2ZUFic3RyYWN0RWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RDb21wb25lbnQgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KGFjdGl2ZUFic3RyYWN0RWxlbWVudCkgYXMgTWluZE5vZGVDb21wb25lbnQ7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gYWJzdHJhY3RDb21wb25lbnQuZWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRDb3JyZWN0TGF5b3V0QnlFbGVtZW50KGFjdGl2ZUFic3RyYWN0RWxlbWVudCBhcyBNaW5kRWxlbWVudCkgYXMgTWluZExheW91dFR5cGU7XG4gICAgICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBpc0hvcml6b250YWxMYXlvdXQobm9kZUxheW91dCk7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gTWluZEVsZW1lbnQuZ2V0UGFyZW50KGVsZW1lbnQpO1xuXG4gICAgICAgICAgICBsZXQgY2hpbGRyZW4gPSBwYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuXG4gICAgICAgICAgICBjb25zdCBwYXJlbnRMYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRMYXlvdXRCeUVsZW1lbnQocGFyZW50RWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoaXNTdGFuZGFyZExheW91dChwYXJlbnRMYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSBwYXJlbnRFbGVtZW50LnJpZ2h0Tm9kZUNvdW50ITtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGxlZnRDaGlsZHJlbiwgcmlnaHRDaGlsZHJlbiB9ID0gc2VwYXJhdGVDaGlsZHJlbihwYXJlbnRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoKGFjdGl2ZUFic3RyYWN0RWxlbWVudCBhcyBNaW5kRWxlbWVudCkuZW5kISA8IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gcmlnaHRDaGlsZHJlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKChhY3RpdmVBYnN0cmFjdEVsZW1lbnQgYXMgTWluZEVsZW1lbnQpLnN0YXJ0ISA+PSByaWdodE5vZGVDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IGxlZnRDaGlsZHJlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZXdCb2FyZD8uYWJzdHJhY3RSZXNpemUpIHtcbiAgICAgICAgICAgICAgICBuZXdCb2FyZC5hYnN0cmFjdFJlc2l6ZShBYnN0cmFjdFJlc2l6ZVN0YXRlLnJlc2l6aW5nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmVzaXppbmdMb2NhdGlvbiA9IGlzSG9yaXpvbnRhbCA/IGVuZFBvaW50WzFdIDogZW5kUG9pbnRbMF07XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSAoTWluZEVsZW1lbnQuZ2V0Tm9kZShwYXJlbnRFbGVtZW50KSBhcyB1bmtub3duKSBhcyBMYXlvdXROb2RlO1xuICAgICAgICAgICAgY29uc3Qgc2NvcGUgPSBnZXRMb2NhdGlvblNjb3BlKGJvYXJkLCBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uLCBjaGlsZHJlbiwgZWxlbWVudCwgcGFyZW50LCBpc0hvcml6b250YWwpO1xuICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBNYXRoLm1pbihzY29wZS5tYXgsIE1hdGgubWF4KHNjb3BlLm1pbiwgcmVzaXppbmdMb2NhdGlvbikpO1xuXG4gICAgICAgICAgICBsZXQgbG9jYXRpb25JbmRleCA9IGZpbmRMb2NhdGlvbkxlZnRJbmRleChib2FyZCwgY2hpbGRyZW4sIGxvY2F0aW9uLCBpc0hvcml6b250YWwpO1xuXG4gICAgICAgICAgICBjb25zdCBpc1Byb3BlcnR5VW5jaGFuZ2VkID1cbiAgICAgICAgICAgICAgICAoYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5zdGFydCAmJlxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbkluZGV4ICsgMSA9PT0gKGFjdGl2ZUFic3RyYWN0RWxlbWVudCBhcyBNaW5kRWxlbWVudCkuc3RhcnQhKSB8fFxuICAgICAgICAgICAgICAgIChhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLmVuZCAmJiBsb2NhdGlvbkluZGV4ID09PSAoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KS5lbmQhKTtcblxuICAgICAgICAgICAgaWYgKGlzUHJvcGVydHlVbmNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0eSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzU3RhbmRhcmRMYXlvdXQocGFyZW50LmxheW91dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmlnaHROb2RlQ291bnQgPSBwYXJlbnQub3JpZ2luLnJpZ2h0Tm9kZUNvdW50O1xuICAgICAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBlbGVtZW50LnN0YXJ0ITtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbkluZGV4ICs9IHJpZ2h0Tm9kZUNvdW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbmV3UHJvcGVydHkgPVxuICAgICAgICAgICAgICAgICAgICBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0ID8geyBzdGFydDogbG9jYXRpb25JbmRleCArIDEgfSA6IHsgZW5kOiBsb2NhdGlvbkluZGV4IH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFic3RyYWN0Q29tcG9uZW50IS51cGRhdGVBYnN0cmFjdEluY2x1ZGVkT3V0bGluZShhYnN0cmFjdEhhbmRsZVBvc2l0aW9uLCBsb2NhdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgbW91c2Vtb3ZlKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgYm9hcmQubW91c2V1cCA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBzdGFydFBvaW50ID0gdW5kZWZpbmVkO1xuICAgICAgICBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID0gbnVsbDtcbiAgICAgICAgaWYgKGFjdGl2ZUFic3RyYWN0RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKG5ld0JvYXJkPy5hYnN0cmFjdFJlc2l6ZSkge1xuICAgICAgICAgICAgICAgIG5ld0JvYXJkLmFic3RyYWN0UmVzaXplKEFic3RyYWN0UmVzaXplU3RhdGUuZW5kKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld1Byb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGFjdGl2ZUFic3RyYWN0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBuZXdQcm9wZXJ0eSwgcGF0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFic3RyYWN0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChhY3RpdmVBYnN0cmFjdEVsZW1lbnQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGFic3RyYWN0Q29tcG9uZW50IS51cGRhdGVBYnN0cmFjdEluY2x1ZGVkT3V0bGluZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aXZlQWJzdHJhY3RFbGVtZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIG1vdXNldXAoZXZlbnQpO1xuICAgIH07XG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsYUFBYSxFQUNiLFVBQVUsRUFDVixZQUFZLEVBR1osVUFBVSxFQUNWLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsY0FBYyxFQUNqQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsWUFBWSxFQUE4QixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBcUIsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBZ0IsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDM0QsTUFBTSxRQUFRLEdBQUcsS0FBd0MsQ0FBQztJQUUxRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDaEQsSUFBSSxxQkFBK0MsQ0FBQztJQUNwRCxJQUFJLHNCQUEwRCxDQUFDO0lBQy9ELElBQUksZUFBeUMsQ0FBQztJQUM5QyxJQUFJLFVBQTZCLENBQUM7SUFDbEMsSUFBSSxXQUE0RCxDQUFDO0lBRWpFLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7UUFDcEMsTUFBTSxzQkFBc0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDOUcsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSyxDQUFDLENBQUMsQ0FBQztRQUV0RSxxQkFBcUIsR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDMUQsc0JBQXNCLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxFQUFFLE9BQXNCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDcEYsSUFBSSxRQUFRLEVBQUUsY0FBYyxFQUFFO2dCQUMxQixRQUFRLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3REO1lBQ0QsT0FBTyxzQkFBc0IsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUkscUJBQXFCLEVBQUU7WUFDdkIsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUNuQixPQUFPO1NBQ1Y7UUFFRCxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtRQUNwQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXpFLGVBQWUsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTFFLElBQUksc0JBQXNCLElBQUkscUJBQXFCLEVBQUU7WUFDakQsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFzQixDQUFDO1lBQ2hHLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQztZQUMxQyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMseUJBQXlCLENBQUMscUJBQW9DLENBQW1CLENBQUM7WUFDakgsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEQsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVyRCxJQUFJLFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDO1lBRXRDLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNuRSxJQUFJLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNoQyxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsY0FBZSxDQUFDO2dCQUNyRCxNQUFNLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxHQUFHLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUN4RSxJQUFLLHFCQUFxQyxDQUFDLEdBQUksR0FBRyxjQUFjLEVBQUU7b0JBQzlELFFBQVEsR0FBRyxhQUFhLENBQUM7aUJBQzVCO2dCQUNELElBQUsscUJBQXFDLENBQUMsS0FBTSxJQUFJLGNBQWMsRUFBRTtvQkFDakUsUUFBUSxHQUFHLFlBQVksQ0FBQztpQkFDM0I7YUFDSjtZQUVELElBQUksUUFBUSxFQUFFLGNBQWMsRUFBRTtnQkFDMUIsUUFBUSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN6RDtZQUVELE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRSxNQUFNLE1BQU0sR0FBSSxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBMkIsQ0FBQztZQUM3RSxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDdkcsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFFNUUsSUFBSSxhQUFhLEdBQUcscUJBQXFCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFFbkYsTUFBTSxtQkFBbUIsR0FDckIsQ0FBQyxzQkFBc0IsS0FBSyxzQkFBc0IsQ0FBQyxLQUFLO2dCQUNwRCxhQUFhLEdBQUcsQ0FBQyxLQUFNLHFCQUFxQyxDQUFDLEtBQU0sQ0FBQztnQkFDeEUsQ0FBQyxzQkFBc0IsS0FBSyxzQkFBc0IsQ0FBQyxHQUFHLElBQUksYUFBYSxLQUFNLHFCQUFxQyxDQUFDLEdBQUksQ0FBQyxDQUFDO1lBRTdILElBQUksbUJBQW1CLEVBQUU7Z0JBQ3JCLFdBQVcsR0FBRyxTQUFTLENBQUM7YUFDM0I7aUJBQU07Z0JBQ0gsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ2pDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO29CQUNwRCxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBTSxDQUFDO29CQUMzQixJQUFJLEtBQUssSUFBSSxjQUFjLEVBQUU7d0JBQ3pCLGFBQWEsSUFBSSxjQUFjLENBQUM7cUJBQ25DO2lCQUNKO2dCQUVELFdBQVc7b0JBQ1Asc0JBQXNCLEtBQUssc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxDQUFDO2FBQ3ZIO1lBRUQsaUJBQWtCLENBQUMsNkJBQTZCLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDdEY7UUFDRCxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtRQUNsQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLHNCQUFzQixHQUFHLFNBQVMsQ0FBQztRQUNuQyxJQUFJLHFCQUFxQixFQUFFO1lBQ3ZCLElBQUksUUFBUSxFQUFFLGNBQWMsRUFBRTtnQkFDMUIsUUFBUSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNwRDtZQUVELElBQUksV0FBVyxFQUFFO2dCQUNiLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLHFCQUFxQixDQUFDLENBQUM7Z0JBQy9ELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNoRDtpQkFBTTtnQkFDSCxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQXNCLENBQUM7Z0JBQ2hHLGlCQUFrQixDQUFDLDZCQUE2QixFQUFFLENBQUM7YUFDdEQ7WUFDRCxxQkFBcUIsR0FBRyxTQUFTLENBQUM7U0FDckM7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBCT0FSRF9UT19IT1NULFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIFBsYWl0UGx1Z2luLFxuICAgIFBvaW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICB0b1BvaW50LFxuICAgIHRyYW5zZm9ybVBvaW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSwgTGF5b3V0Tm9kZSwgTWluZExheW91dFR5cGUsIGlzSG9yaXpvbnRhbExheW91dCwgaXNTdGFuZGFyZExheW91dCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IEFic3RyYWN0SGFuZGxlUG9zaXRpb24sIEFic3RyYWN0UmVzaXplU3RhdGUsIE1pbmRFbGVtZW50LCBQbGFpdEFic3RyYWN0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE1pbmROb2RlQ29tcG9uZW50LCBNaW5kUXVlcmllcyB9IGZyb20gJy4uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgZmluZExvY2F0aW9uTGVmdEluZGV4LCBnZXRIaXRBYnN0cmFjdEhhbmRsZSwgZ2V0TG9jYXRpb25TY29wZSwgaGFuZGxlVG91Y2hlZEFic3RyYWN0IH0gZnJvbSAnLi4vdXRpbHMvYWJzdHJhY3QvcmVzaXplJztcbmltcG9ydCB7IHNlcGFyYXRlQ2hpbGRyZW4gfSBmcm9tICcuLi91dGlscy9hYnN0cmFjdC9jb21tb24nO1xuXG5leHBvcnQgY29uc3Qgd2l0aEFic3RyYWN0OiBQbGFpdFBsdWdpbiA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IG5ld0JvYXJkID0gYm9hcmQgYXMgUGxhaXRCb2FyZCAmIFBsYWl0QWJzdHJhY3RCb2FyZDtcblxuICAgIGNvbnN0IHsgbW91c2Vkb3duLCBtb3VzZW1vdmUsIG1vdXNldXAgfSA9IGJvYXJkO1xuICAgIGxldCBhY3RpdmVBYnN0cmFjdEVsZW1lbnQ6IFBsYWl0RWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbjogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB8IHVuZGVmaW5lZDtcbiAgICBsZXQgdG91Y2hlZEFic3RyYWN0OiBQbGFpdEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IHN0YXJ0UG9pbnQ6IFBvaW50IHwgdW5kZWZpbmVkO1xuICAgIGxldCBuZXdQcm9wZXJ0eTogeyBlbmQ6IG51bWJlciB9IHwgeyBzdGFydDogbnVtYmVyIH0gfCB1bmRlZmluZWQ7XG5cbiAgICBib2FyZC5tb3VzZWRvd24gPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgYWN0aXZlQWJzdHJhY3RFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpLmZpbHRlcihlbGVtZW50ID0+IEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpKTtcbiAgICAgICAgY29uc3QgaG9zdCA9IEJPQVJEX1RPX0hPU1QuZ2V0KGJvYXJkKTtcbiAgICAgICAgY29uc3QgcG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBob3N0ISkpO1xuXG4gICAgICAgIGFjdGl2ZUFic3RyYWN0RWxlbWVudCA9IGFjdGl2ZUFic3RyYWN0RWxlbWVudHMuZmluZChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGFic3RyYWN0SGFuZGxlUG9zaXRpb24gPSBnZXRIaXRBYnN0cmFjdEhhbmRsZShib2FyZCwgZWxlbWVudCBhcyBNaW5kRWxlbWVudCwgcG9pbnQpO1xuICAgICAgICAgICAgaWYgKG5ld0JvYXJkPy5hYnN0cmFjdFJlc2l6ZSkge1xuICAgICAgICAgICAgICAgIG5ld0JvYXJkLmFic3RyYWN0UmVzaXplKEFic3RyYWN0UmVzaXplU3RhdGUuc3RhcnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFic3RyYWN0SGFuZGxlUG9zaXRpb247XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChhY3RpdmVBYnN0cmFjdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG1vdXNlZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLm1vdXNlbW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgaG9zdCA9IEJPQVJEX1RPX0hPU1QuZ2V0KGJvYXJkKTtcbiAgICAgICAgY29uc3QgZW5kUG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBob3N0ISkpO1xuXG4gICAgICAgIHRvdWNoZWRBYnN0cmFjdCA9IGhhbmRsZVRvdWNoZWRBYnN0cmFjdChib2FyZCwgdG91Y2hlZEFic3RyYWN0LCBlbmRQb2ludCk7XG5cbiAgICAgICAgaWYgKGFic3RyYWN0SGFuZGxlUG9zaXRpb24gJiYgYWN0aXZlQWJzdHJhY3RFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBhYnN0cmFjdENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoYWN0aXZlQWJzdHJhY3RFbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBhYnN0cmFjdENvbXBvbmVudC5lbGVtZW50O1xuICAgICAgICAgICAgY29uc3Qgbm9kZUxheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICAgICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IGlzSG9yaXpvbnRhbExheW91dChub2RlTGF5b3V0KTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBNaW5kRWxlbWVudC5nZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9IHBhcmVudEVsZW1lbnQuY2hpbGRyZW47XG5cbiAgICAgICAgICAgIGNvbnN0IHBhcmVudExheW91dCA9IE1pbmRRdWVyaWVzLmdldExheW91dEJ5RWxlbWVudChwYXJlbnRFbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChpc1N0YW5kYXJkTGF5b3V0KHBhcmVudExheW91dCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodE5vZGVDb3VudCA9IHBhcmVudEVsZW1lbnQucmlnaHROb2RlQ291bnQhO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgbGVmdENoaWxkcmVuLCByaWdodENoaWxkcmVuIH0gPSBzZXBhcmF0ZUNoaWxkcmVuKHBhcmVudEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmICgoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KS5lbmQhIDwgcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSByaWdodENoaWxkcmVuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoKGFjdGl2ZUFic3RyYWN0RWxlbWVudCBhcyBNaW5kRWxlbWVudCkuc3RhcnQhID49IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gbGVmdENoaWxkcmVuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld0JvYXJkPy5hYnN0cmFjdFJlc2l6ZSkge1xuICAgICAgICAgICAgICAgIG5ld0JvYXJkLmFic3RyYWN0UmVzaXplKEFic3RyYWN0UmVzaXplU3RhdGUucmVzaXppbmcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXNpemluZ0xvY2F0aW9uID0gaXNIb3Jpem9udGFsID8gZW5kUG9pbnRbMV0gOiBlbmRQb2ludFswXTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IChNaW5kRWxlbWVudC5nZXROb2RlKHBhcmVudEVsZW1lbnQpIGFzIHVua25vd24pIGFzIExheW91dE5vZGU7XG4gICAgICAgICAgICBjb25zdCBzY29wZSA9IGdldExvY2F0aW9uU2NvcGUoYm9hcmQsIGFic3RyYWN0SGFuZGxlUG9zaXRpb24sIGNoaWxkcmVuLCBlbGVtZW50LCBwYXJlbnQsIGlzSG9yaXpvbnRhbCk7XG4gICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IE1hdGgubWluKHNjb3BlLm1heCwgTWF0aC5tYXgoc2NvcGUubWluLCByZXNpemluZ0xvY2F0aW9uKSk7XG5cbiAgICAgICAgICAgIGxldCBsb2NhdGlvbkluZGV4ID0gZmluZExvY2F0aW9uTGVmdEluZGV4KGJvYXJkLCBjaGlsZHJlbiwgbG9jYXRpb24sIGlzSG9yaXpvbnRhbCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGlzUHJvcGVydHlVbmNoYW5nZWQgPVxuICAgICAgICAgICAgICAgIChhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0ICYmXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uSW5kZXggKyAxID09PSAoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KS5zdGFydCEpIHx8XG4gICAgICAgICAgICAgICAgKGFic3RyYWN0SGFuZGxlUG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uZW5kICYmIGxvY2F0aW9uSW5kZXggPT09IChhY3RpdmVBYnN0cmFjdEVsZW1lbnQgYXMgTWluZEVsZW1lbnQpLmVuZCEpO1xuXG4gICAgICAgICAgICBpZiAoaXNQcm9wZXJ0eVVuY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIG5ld1Byb3BlcnR5ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNTdGFuZGFyZExheW91dChwYXJlbnQubGF5b3V0KSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByaWdodE5vZGVDb3VudCA9IHBhcmVudC5vcmlnaW4ucmlnaHROb2RlQ291bnQ7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdGFydCA9IGVsZW1lbnQuc3RhcnQhO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uSW5kZXggKz0gcmlnaHROb2RlQ291bnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0eSA9XG4gICAgICAgICAgICAgICAgICAgIGFic3RyYWN0SGFuZGxlUG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQgPyB7IHN0YXJ0OiBsb2NhdGlvbkluZGV4ICsgMSB9IDogeyBlbmQ6IGxvY2F0aW9uSW5kZXggfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWJzdHJhY3RDb21wb25lbnQhLnVwZGF0ZUFic3RyYWN0SW5jbHVkZWRPdXRsaW5lKGFic3RyYWN0SGFuZGxlUG9zaXRpb24sIGxvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBtb3VzZW1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5tb3VzZXVwID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIHN0YXJ0UG9pbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGFic3RyYWN0SGFuZGxlUG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChhY3RpdmVBYnN0cmFjdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChuZXdCb2FyZD8uYWJzdHJhY3RSZXNpemUpIHtcbiAgICAgICAgICAgICAgICBuZXdCb2FyZC5hYnN0cmFjdFJlc2l6ZShBYnN0cmFjdFJlc2l6ZVN0YXRlLmVuZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZXdQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBhY3RpdmVBYnN0cmFjdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgbmV3UHJvcGVydHksIHBhdGgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhYnN0cmFjdENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoYWN0aXZlQWJzdHJhY3RFbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBhYnN0cmFjdENvbXBvbmVudCEudXBkYXRlQWJzdHJhY3RJbmNsdWRlZE91dGxpbmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjdGl2ZUFic3RyYWN0RWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBtb3VzZXVwKGV2ZW50KTtcbiAgICB9O1xuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=