imm-element-ui 2.4.9 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,7 +9,7 @@ export class CellEditSelectFieldComponent {
9
9
  agInit(params) {
10
10
  this.params = params;
11
11
  if (!this.params.rawOptions && typeof this.params.getOptions === 'function') {
12
- this.params.options = this.params.getOptions() || [];
12
+ this.params.options = this.params.getOptions(this.params.data) || [];
13
13
  }
14
14
  else {
15
15
  this.params.options = this.params.rawOptions;
@@ -42,7 +42,8 @@ export class CellEditSelectFieldComponent {
42
42
  }
43
43
  updateNameField(nameField, event) {
44
44
  const oldValue = this.params.data[nameField.field];
45
- const item = this.params.rawOptions.find((op) => op.value === event.value);
45
+ const valueField = this.params.optionValue || 'value';
46
+ const item = this.params.options.find((op) => op?.[valueField] === event.value);
46
47
  const newValue = item ? item[nameField.key] : null;
47
48
  const grid = this.params.grid();
48
49
  let e = {
@@ -185,4 +186,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
185
186
  type: ViewChild,
186
187
  args: ['input', { read: ViewContainerRef }]
187
188
  }] } });
188
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1lZGl0LXNlbGVjdEZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvZ3JpZC9jZWxsLWVkaXQvY2VsbC1lZGl0LXNlbGVjdEZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBaUU5QyxNQUFNLE9BQU8sNEJBQTRCO0lBTXZDLE1BQU0sQ0FBQyxNQUF5QjtRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUN0RCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQy9DLENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1B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QUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgdHlwZSB7IElDZWxsRWRpdG9yQW5ndWxhckNvbXAgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHR5cGUgeyBJQ2VsbEVkaXRvclBhcmFtcyB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IEdyaWRDb21wb25lbnQgfSBmcm9tICcuLi9ncmlkL2dyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlbGVjdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2VsZWN0JztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgXG4gICA8cC1zZWxlY3RcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICBbc2Nyb2xsSGVpZ2h0XT1cInBhcmFtcy5zY3JvbGxIZWlnaHQgfHwgJzIwMHB4J1wiXG4gICAgW2ZpbHRlcl09XCJwYXJhbXMuZmlsdGVyXCJcbiAgICBbbmFtZV09XCJwYXJhbXMubmFtZVwiXG4gICAgW29wdGlvbnNdPVwicGFyYW1zLm9wdGlvbnNcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwYXJhbXMucGxhY2Vob2xkZXJcIlxuICAgIFtjbGFzc109XCJwYXJhbXMuY2xhc3NcIlxuICAgIFtzdHlsZV09XCJwYXJhbXMuc3R5bGVcIlxuICAgIFtwYW5lbFN0eWxlXT1cInBhcmFtcy5wYW5lbFN0eWxlXCJcbiAgICBbcGFuZWxTdHlsZUNsYXNzXT1cInBhcmFtcy5wYW5lbFN0eWxlQ2xhc3NcIlxuICAgIFtyZWFkb25seV09XCJwYXJhbXMucmVhZG9ubHlcIlxuICAgIFtlZGl0YWJsZV09XCJwYXJhbXMuZWRpdGFibGVcIlxuICAgIFthcHBlbmRUb109XCJwYXJhbXMuYXBwZW5kVG8gfHwgJ2JvZHknXCJcbiAgICBbdGFiaW5kZXhdPVwicGFyYW1zLnRhYmluZGV4XCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGFyYW1zLnBsYWNlaG9sZGVyXCJcbiAgICBbbG9hZGluZ0ljb25dPVwicGFyYW1zLmxvYWRpbmdJY29uXCJcbiAgICBbZmlsdGVyUGxhY2Vob2xkZXJdPVwicGFyYW1zLmZpbHRlclBsYWNlaG9sZGVyXCJcbiAgICBbZmlsdGVyTG9jYWxlXT1cInBhcmFtcy5maWx0ZXJMb2NhbGVcIlxuICAgIFt2YXJpYW50XT1cInBhcmFtcy52YXJpYW50XCJcbiAgICBbaW5wdXRJZF09XCJwYXJhbXMuaW5wdXRJZFwiXG4gICAgW2RhdGFLZXldPVwicGFyYW1zLmRhdGFLZXlcIlxuICAgIFtmaWx0ZXJCeV09XCJwYXJhbXMuZmlsdGVyQnlcIlxuICAgIFtmaWx0ZXJGaWVsZHNdPVwicGFyYW1zLmZpbHRlckZpZWxkc1wiXG4gICAgW2F1dG9mb2N1c109XCJwYXJhbXMuYXV0b2ZvY3VzID8/IHRydWVcIlxuICAgIFtyZXNldEZpbHRlck9uSGlkZV09XCJwYXJhbXMucmVzZXRGaWx0ZXJPbkhpZGVcIlxuICAgIFtjaGVja21hcmtdPVwicGFyYW1zLmNoZWNrbWFya1wiXG4gICAgW2Ryb3Bkb3duSWNvbl09XCJwYXJhbXMuZHJvcGRvd25JY29uXCJcbiAgICBbbG9hZGluZ109XCJwYXJhbXMubG9hZGluZ1wiXG4gICAgW29wdGlvbkxhYmVsXT1cInBhcmFtcy5vcHRpb25MYWJlbFwiXG4gICAgW29wdGlvblZhbHVlXT1cInBhcmFtcy5vcHRpb25WYWx1ZVwiXG4gICAgW29wdGlvbkRpc2FibGVkXT1cInBhcmFtcy5vcHRpb25EaXNhYmxlZFwiXG4gICAgW29wdGlvbkdyb3VwTGFiZWxdPVwicGFyYW1zLm9wdGlvbkdyb3VwTGFiZWxcIlxuICAgIFtvcHRpb25Hcm91cENoaWxkcmVuXT1cInBhcmFtcy5vcHRpb25Hcm91cENoaWxkcmVuIHx8ICdpdGVtcydcIlxuICAgIFtncm91cF09XCJwYXJhbXMuZ3JvdXBcIlxuICAgIFtzaG93Q2xlYXJdPVwicGFyYW1zLnNob3dDbGVhclwiXG4gICAgW2VtcHR5RmlsdGVyTWVzc2FnZV09XCJwYXJhbXMuZW1wdHlGaWx0ZXJNZXNzYWdlXCJcbiAgICBbZW1wdHlNZXNzYWdlXT1cInBhcmFtcy5lbXB0eU1lc3NhZ2VcIlxuICAgIFtsYXp5XT1cInBhcmFtcy5sYXp5XCJcbiAgICBbdmlydHVhbFNjcm9sbF09XCJwYXJhbXMudmlydHVhbFNjcm9sbFwiXG4gICAgW3ZpcnR1YWxTY3JvbGxJdGVtU2l6ZV09XCJwYXJhbXMudmlydHVhbFNjcm9sbEl0ZW1TaXplXCJcbiAgICBbdmlydHVhbFNjcm9sbE9wdGlvbnNdPVwicGFyYW1zLnZpcnR1YWxTY3JvbGxPcHRpb25zXCJcbiAgICBbb3ZlcmxheU9wdGlvbnNdPVwicGFyYW1zLm92ZXJsYXlPcHRpb25zXCJcbiAgICBbc2l6ZV09XCJwYXJhbXMuc2l6ZVwiXG4gICAgW2FyaWFGaWx0ZXJMYWJlbF09XCJwYXJhbXMuYXJpYUZpbHRlckxhYmVsXCJcbiAgICBbYXJpYUxhYmVsXT1cInBhcmFtcy5hcmlhTGFiZWxcIlxuICAgIFthcmlhTGFiZWxsZWRCeV09XCJwYXJhbXMuYXJpYUxhYmVsbGVkQnlcIlxuICAgIFtmaWx0ZXJNYXRjaE1vZGVdPVwicGFyYW1zLmZpbHRlck1hdGNoTW9kZVwiXG4gICAgW21heGxlbmd0aF09XCJwYXJhbXMubWF4bGVuZ3RoXCJcbiAgICBbdG9vbHRpcF09XCJwYXJhbXMudG9vbHRpcFwiXG4gICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJwYXJhbXMudG9vbHRpcFBvc2l0aW9uIHx8ICdyaWdodCdcIlxuICAgIFt0b29sdGlwUG9zaXRpb25TdHlsZV09XCJwYXJhbXMudG9vbHRpcFBvc2l0aW9uU3R5bGUgfHwgJ2Fic29sdXRlJ1wiXG4gICAgW3Rvb2x0aXBTdHlsZUNsYXNzXT1cInBhcmFtcy50b29sdGlwU3R5bGVDbGFzc1wiXG4gICAgW2ZvY3VzT25Ib3Zlcl09XCJwYXJhbXMuZm9jdXNPbkhvdmVyID09IHVuZGVmaW5lZCA/IHRydWUgOiBwYXJhbXMuZm9jdXNPbkhvdmVyXCJcbiAgICBbZmx1aWRdPVwicGFyYW1zLmZsdWlkID09IHVuZGVmaW5lZCA/IHRydWUgOiBwYXJhbXMuZmx1aWRcIlxuICAgIFtmaWx0ZXJWYWx1ZV09XCJwYXJhbXMuZmlsdGVyVmFsdWVcIlxuICAgIChvbkNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCIgLz5cbiAgYCxcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBTZWxlY3RNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBDZWxsRWRpdFNlbGVjdEZpZWxkQ29tcG9uZW50ICBpbXBsZW1lbnRzIElDZWxsRWRpdG9yQW5ndWxhckNvbXAge1xuICBwYXJhbXMhOiBhbnk7XG4gIHZhbHVlOiBhbnk7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgcHVibGljIGlucHV0ITogVmlld0NvbnRhaW5lclJlZjtcblxuICBhZ0luaXQocGFyYW1zOiBJQ2VsbEVkaXRvclBhcmFtcyk6IHZvaWQge1xuICAgIHRoaXMucGFyYW1zID0gcGFyYW1zO1xuICAgIGlmKCF0aGlzLnBhcmFtcy5yYXdPcHRpb25zICYmIHR5cGVvZiB0aGlzLnBhcmFtcy5nZXRPcHRpb25zID09PSAnZnVuY3Rpb24nKXtcbiAgICAgIHRoaXMucGFyYW1zLm9wdGlvbnMgPSB0aGlzLnBhcmFtcy5nZXRPcHRpb25zKCkgfHwgW11cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYXJhbXMub3B0aW9ucyA9IHRoaXMucGFyYW1zLnJhd09wdGlvbnM7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdwYXJhbXMtLS0nLHRoaXMucGFyYW1zKVxuICAgIHRoaXMudmFsdWUgPSB0aGlzLnBhcmFtcy5kYXRhW3RoaXMucGFyYW1zLmNvbERlZi5maWVsZF07XG5cbiAgICBjb25zdCBjZWxsV2lkdGggPSBwYXJhbXMuY29sdW1uLmdldEFjdHVhbFdpZHRoKCk7XG4gICAgdGhpcy5wYXJhbXMuc3R5bGUgPSB7XG4gICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgIGJveFNoYWRvdzogJ25vbmUnLFxuICAgICAgd2lkdGg6IGAke2NlbGxXaWR0aH1weGAsXG4gICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYWctYmFja2dyb3VuZC1jb2xvciknLFxuICAgICAgaGVpZ2h0OiAnNDBweCcsXG4gICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJ1xuICAgIH07XG4gICAgdGhpcy5wYXJhbXMucGFuZWxTdHlsZSA9IHtcbiAgICAgIHdpZHRoOiBgJHtjZWxsV2lkdGh9cHhgLFxuICAgIH07XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBhbnkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICByZXR1cm4gdmFsdWUgPT09ICcnIHx8IHZhbHVlID09IG51bGwgPyBudWxsIDogdmFsdWU7XG4gIH1cblxuICBvbkNoYW5nZShldmVudDogYW55KSB7XG4gICAgY29uc3QgbmFtZUZpZWxkcyA9IHRoaXMucGFyYW1zLm5hbWVGaWVsZHMgfHwgW107XG4gICAgLy8gY29uc29sZS5sb2coJ2V2ZW50LS0tLS0nLGV2ZW50KVxuICAgIG5hbWVGaWVsZHMuZm9yRWFjaCgobmFtZUZpZWxkOiBhbnkpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlTmFtZUZpZWxkKG5hbWVGaWVsZCwgZXZlbnQpO1xuICAgIH0pO1xuICB9XG4gIFxuICB1cGRhdGVOYW1lRmllbGQobmFtZUZpZWxkOiBhbnksIGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMucGFyYW1zLmRhdGFbbmFtZUZpZWxkLmZpZWxkXTtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5wYXJhbXMucmF3T3B0aW9ucy5maW5kKChvcDogYW55KSA9PiBvcC52YWx1ZSA9PT0gZXZlbnQudmFsdWUpXG4gICAgY29uc3QgbmV3VmFsdWUgPSBpdGVtID8gaXRlbVtuYW1lRmllbGQua2V5XSA6IG51bGw7XG4gICAgY29uc3QgZ3JpZDogR3JpZENvbXBvbmVudCA9IHRoaXMucGFyYW1zLmdyaWQoKTtcbiAgICBsZXQgZTogYW55ID0ge1xuICAgICAgY29sRGVmOiBuYW1lRmllbGQsXG4gICAgICBvbGRWYWx1ZSxcbiAgICAgIG5ld1ZhbHVlLFxuICAgICAgcm93SW5kZXg6IHRoaXMucGFyYW1zLm5vZGUucm93SW5kZXgsXG4gICAgICBkYXRhOiB7IGlkOiB0aGlzLnBhcmFtcy5kYXRhLmlkIH0sXG4gICAgfTtcbiAgICBncmlkLmNlbGxWYWx1ZUNoYW5nZWQoZSk7XG4gICAgdGhpcy5wYXJhbXMuZGF0YVtuYW1lRmllbGQuZmllbGRdID0gbmV3VmFsdWU7XG4gIH1cbn0iXX0=
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1lZGl0LXNlbGVjdEZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvZ3JpZC9jZWxsLWVkaXQvY2VsbC1lZGl0LXNlbGVjdEZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBaUU5QyxNQUFNLE9BQU8sNEJBQTRCO0lBTXZDLE1BQU0sQ0FBQyxNQUF5QjtRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUN0RSxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQy9DLENBQUM7UUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElB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Ozs7Ozs7Ozs7R0EwRFQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLFlBQVksQ0FBQztpQkFDMUQ7OEJBS3dELEtBQUs7c0JBQTNELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB0eXBlIHsgSUNlbGxFZGl0b3JBbmd1bGFyQ29tcCB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQgdHlwZSB7IElDZWxsRWRpdG9yUGFyYW1zIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgR3JpZENvbXBvbmVudCB9IGZyb20gJy4uL2dyaWQvZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zZWxlY3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IGBcbiAgIDxwLXNlbGVjdFxuICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICAgIFtzY3JvbGxIZWlnaHRdPVwicGFyYW1zLnNjcm9sbEhlaWdodCB8fCAnMjAwcHgnXCJcbiAgICBbZmlsdGVyXT1cInBhcmFtcy5maWx0ZXJcIlxuICAgIFtuYW1lXT1cInBhcmFtcy5uYW1lXCJcbiAgICBbb3B0aW9uc109XCJwYXJhbXMub3B0aW9uc1wiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBhcmFtcy5wbGFjZWhvbGRlclwiXG4gICAgW2NsYXNzXT1cInBhcmFtcy5jbGFzc1wiXG4gICAgW3N0eWxlXT1cInBhcmFtcy5zdHlsZVwiXG4gICAgW3BhbmVsU3R5bGVdPVwicGFyYW1zLnBhbmVsU3R5bGVcIlxuICAgIFtwYW5lbFN0eWxlQ2xhc3NdPVwicGFyYW1zLnBhbmVsU3R5bGVDbGFzc1wiXG4gICAgW3JlYWRvbmx5XT1cInBhcmFtcy5yZWFkb25seVwiXG4gICAgW2VkaXRhYmxlXT1cInBhcmFtcy5lZGl0YWJsZVwiXG4gICAgW2FwcGVuZFRvXT1cInBhcmFtcy5hcHBlbmRUbyB8fCAnYm9keSdcIlxuICAgIFt0YWJpbmRleF09XCJwYXJhbXMudGFiaW5kZXhcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwYXJhbXMucGxhY2Vob2xkZXJcIlxuICAgIFtsb2FkaW5nSWNvbl09XCJwYXJhbXMubG9hZGluZ0ljb25cIlxuICAgIFtmaWx0ZXJQbGFjZWhvbGRlcl09XCJwYXJhbXMuZmlsdGVyUGxhY2Vob2xkZXJcIlxuICAgIFtmaWx0ZXJMb2NhbGVdPVwicGFyYW1zLmZpbHRlckxvY2FsZVwiXG4gICAgW3ZhcmlhbnRdPVwicGFyYW1zLnZhcmlhbnRcIlxuICAgIFtpbnB1dElkXT1cInBhcmFtcy5pbnB1dElkXCJcbiAgICBbZGF0YUtleV09XCJwYXJhbXMuZGF0YUtleVwiXG4gICAgW2ZpbHRlckJ5XT1cInBhcmFtcy5maWx0ZXJCeVwiXG4gICAgW2ZpbHRlckZpZWxkc109XCJwYXJhbXMuZmlsdGVyRmllbGRzXCJcbiAgICBbYXV0b2ZvY3VzXT1cInBhcmFtcy5hdXRvZm9jdXMgPz8gdHJ1ZVwiXG4gICAgW3Jlc2V0RmlsdGVyT25IaWRlXT1cInBhcmFtcy5yZXNldEZpbHRlck9uSGlkZVwiXG4gICAgW2NoZWNrbWFya109XCJwYXJhbXMuY2hlY2ttYXJrXCJcbiAgICBbZHJvcGRvd25JY29uXT1cInBhcmFtcy5kcm9wZG93bkljb25cIlxuICAgIFtsb2FkaW5nXT1cInBhcmFtcy5sb2FkaW5nXCJcbiAgICBbb3B0aW9uTGFiZWxdPVwicGFyYW1zLm9wdGlvbkxhYmVsXCJcbiAgICBbb3B0aW9uVmFsdWVdPVwicGFyYW1zLm9wdGlvblZhbHVlXCJcbiAgICBbb3B0aW9uRGlzYWJsZWRdPVwicGFyYW1zLm9wdGlvbkRpc2FibGVkXCJcbiAgICBbb3B0aW9uR3JvdXBMYWJlbF09XCJwYXJhbXMub3B0aW9uR3JvdXBMYWJlbFwiXG4gICAgW29wdGlvbkdyb3VwQ2hpbGRyZW5dPVwicGFyYW1zLm9wdGlvbkdyb3VwQ2hpbGRyZW4gfHwgJ2l0ZW1zJ1wiXG4gICAgW2dyb3VwXT1cInBhcmFtcy5ncm91cFwiXG4gICAgW3Nob3dDbGVhcl09XCJwYXJhbXMuc2hvd0NsZWFyXCJcbiAgICBbZW1wdHlGaWx0ZXJNZXNzYWdlXT1cInBhcmFtcy5lbXB0eUZpbHRlck1lc3NhZ2VcIlxuICAgIFtlbXB0eU1lc3NhZ2VdPVwicGFyYW1zLmVtcHR5TWVzc2FnZVwiXG4gICAgW2xhenldPVwicGFyYW1zLmxhenlcIlxuICAgIFt2aXJ0dWFsU2Nyb2xsXT1cInBhcmFtcy52aXJ0dWFsU2Nyb2xsXCJcbiAgICBbdmlydHVhbFNjcm9sbEl0ZW1TaXplXT1cInBhcmFtcy52aXJ0dWFsU2Nyb2xsSXRlbVNpemVcIlxuICAgIFt2aXJ0dWFsU2Nyb2xsT3B0aW9uc109XCJwYXJhbXMudmlydHVhbFNjcm9sbE9wdGlvbnNcIlxuICAgIFtvdmVybGF5T3B0aW9uc109XCJwYXJhbXMub3ZlcmxheU9wdGlvbnNcIlxuICAgIFtzaXplXT1cInBhcmFtcy5zaXplXCJcbiAgICBbYXJpYUZpbHRlckxhYmVsXT1cInBhcmFtcy5hcmlhRmlsdGVyTGFiZWxcIlxuICAgIFthcmlhTGFiZWxdPVwicGFyYW1zLmFyaWFMYWJlbFwiXG4gICAgW2FyaWFMYWJlbGxlZEJ5XT1cInBhcmFtcy5hcmlhTGFiZWxsZWRCeVwiXG4gICAgW2ZpbHRlck1hdGNoTW9kZV09XCJwYXJhbXMuZmlsdGVyTWF0Y2hNb2RlXCJcbiAgICBbbWF4bGVuZ3RoXT1cInBhcmFtcy5tYXhsZW5ndGhcIlxuICAgIFt0b29sdGlwXT1cInBhcmFtcy50b29sdGlwXCJcbiAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInBhcmFtcy50b29sdGlwUG9zaXRpb24gfHwgJ3JpZ2h0J1wiXG4gICAgW3Rvb2x0aXBQb3NpdGlvblN0eWxlXT1cInBhcmFtcy50b29sdGlwUG9zaXRpb25TdHlsZSB8fCAnYWJzb2x1dGUnXCJcbiAgICBbdG9vbHRpcFN0eWxlQ2xhc3NdPVwicGFyYW1zLnRvb2x0aXBTdHlsZUNsYXNzXCJcbiAgICBbZm9jdXNPbkhvdmVyXT1cInBhcmFtcy5mb2N1c09uSG92ZXIgPT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHBhcmFtcy5mb2N1c09uSG92ZXJcIlxuICAgIFtmbHVpZF09XCJwYXJhbXMuZmx1aWQgPT0gdW5kZWZpbmVkID8gdHJ1ZSA6IHBhcmFtcy5mbHVpZFwiXG4gICAgW2ZpbHRlclZhbHVlXT1cInBhcmFtcy5maWx0ZXJWYWx1ZVwiXG4gICAgKG9uQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIiAvPlxuICBgLFxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFNlbGVjdE1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIENlbGxFZGl0U2VsZWN0RmllbGRDb21wb25lbnQgIGltcGxlbWVudHMgSUNlbGxFZGl0b3JBbmd1bGFyQ29tcCB7XG4gIHBhcmFtcyE6IGFueTtcbiAgdmFsdWU6IGFueTtcblxuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBwdWJsaWMgaW5wdXQhOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIGFnSW5pdChwYXJhbXM6IElDZWxsRWRpdG9yUGFyYW1zKTogdm9pZCB7XG4gICAgdGhpcy5wYXJhbXMgPSBwYXJhbXM7XG4gICAgaWYoIXRoaXMucGFyYW1zLnJhd09wdGlvbnMgJiYgdHlwZW9mIHRoaXMucGFyYW1zLmdldE9wdGlvbnMgPT09ICdmdW5jdGlvbicpe1xuICAgICAgdGhpcy5wYXJhbXMub3B0aW9ucyA9IHRoaXMucGFyYW1zLmdldE9wdGlvbnModGhpcy5wYXJhbXMuZGF0YSkgfHwgW11cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYXJhbXMub3B0aW9ucyA9IHRoaXMucGFyYW1zLnJhd09wdGlvbnM7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdwYXJhbXMtLS0nLHRoaXMucGFyYW1zKVxuICAgIHRoaXMudmFsdWUgPSB0aGlzLnBhcmFtcy5kYXRhW3RoaXMucGFyYW1zLmNvbERlZi5maWVsZF07XG5cbiAgICBjb25zdCBjZWxsV2lkdGggPSBwYXJhbXMuY29sdW1uLmdldEFjdHVhbFdpZHRoKCk7XG4gICAgdGhpcy5wYXJhbXMuc3R5bGUgPSB7XG4gICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgIGJveFNoYWRvdzogJ25vbmUnLFxuICAgICAgd2lkdGg6IGAke2NlbGxXaWR0aH1weGAsXG4gICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYWctYmFja2dyb3VuZC1jb2xvciknLFxuICAgICAgaGVpZ2h0OiAnNDBweCcsXG4gICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJ1xuICAgIH07XG4gICAgdGhpcy5wYXJhbXMucGFuZWxTdHlsZSA9IHtcbiAgICAgIHdpZHRoOiBgJHtjZWxsV2lkdGh9cHhgLFxuICAgIH07XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBhbnkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICByZXR1cm4gdmFsdWUgPT09ICcnIHx8IHZhbHVlID09IG51bGwgPyBudWxsIDogdmFsdWU7XG4gIH1cblxuICBvbkNoYW5nZShldmVudDogYW55KSB7XG4gICAgY29uc3QgbmFtZUZpZWxkcyA9IHRoaXMucGFyYW1zLm5hbWVGaWVsZHMgfHwgW107XG4gICAgLy8gY29uc29sZS5sb2coJ2V2ZW50LS0tLS0nLGV2ZW50KVxuICAgIG5hbWVGaWVsZHMuZm9yRWFjaCgobmFtZUZpZWxkOiBhbnkpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlTmFtZUZpZWxkKG5hbWVGaWVsZCwgZXZlbnQpO1xuICAgIH0pO1xuICB9XG4gIFxuICB1cGRhdGVOYW1lRmllbGQobmFtZUZpZWxkOiBhbnksIGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMucGFyYW1zLmRhdGFbbmFtZUZpZWxkLmZpZWxkXTtcbiAgICBjb25zdCB2YWx1ZUZpZWxkID0gdGhpcy5wYXJhbXMub3B0aW9uVmFsdWUgfHwgJ3ZhbHVlJztcbiAgICBjb25zdCBpdGVtID0gdGhpcy5wYXJhbXMub3B0aW9ucy5maW5kKChvcDogYW55KSA9PiBvcD8uW3ZhbHVlRmllbGRdID09PSBldmVudC52YWx1ZSlcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGl0ZW0gPyBpdGVtW25hbWVGaWVsZC5rZXldIDogbnVsbDtcbiAgICBjb25zdCBncmlkOiBHcmlkQ29tcG9uZW50ID0gdGhpcy5wYXJhbXMuZ3JpZCgpO1xuICAgIGxldCBlOiBhbnkgPSB7XG4gICAgICBjb2xEZWY6IG5hbWVGaWVsZCxcbiAgICAgIG9sZFZhbHVlLFxuICAgICAgbmV3VmFsdWUsXG4gICAgICByb3dJbmRleDogdGhpcy5wYXJhbXMubm9kZS5yb3dJbmRleCxcbiAgICAgIGRhdGE6IHsgaWQ6IHRoaXMucGFyYW1zLmRhdGEuaWQgfSxcbiAgICB9O1xuICAgIGdyaWQuY2VsbFZhbHVlQ2hhbmdlZChlKTtcbiAgICB0aGlzLnBhcmFtcy5kYXRhW25hbWVGaWVsZC5maWVsZF0gPSBuZXdWYWx1ZTtcbiAgfVxufVxuIl19
@@ -191,36 +191,34 @@ export class GridComponent {
191
191
  const processedCols = await Promise.all(col.map(async (item) => {
192
192
  if (item.hasOwnProperty('fieldId') && (item.cellEditor == 'agRichSelectCellEditor' || item.cellEditor == 'agSelectCellEditor' || item.cellEditor == 'cellEditSelectFieldComponent')) {
193
193
  let values = [];
194
- if (!item.cellEditorParams || !item.cellEditorParams.hasOwnProperty('values')) {
195
- if (item.hasOwnProperty('selectData') && typeof item.selectData === 'function') {
196
- values = await item.selectData();
197
- }
198
- item.cellEditorParams = {
199
- ...item.cellEditorParams,
200
- valueListMaxHeight: 200,
201
- };
202
- }
203
- else if (item.cellEditorParams && typeof item.cellEditorParams === 'function') {
194
+ if (item.cellEditorParams && typeof item.cellEditorParams === 'function') {
204
195
  item.cellEditorParams = item.cellEditorParams() || {};
205
- values = JSON.parse(JSON.stringify(item.cellEditorParams.values)) || [];
206
- item.cellEditorParams.valueListMaxHeight = 200;
207
- item.cellEditorParams.suppressMultiSelectPillRenderer = true;
196
+ values = JSON.parse(JSON.stringify(item.cellEditorParams.values || [])) || [];
197
+ }
198
+ if ((!item.cellEditorParams || !item.cellEditorParams.hasOwnProperty('values')) && item.hasOwnProperty('selectData') && typeof item.selectData === 'function') {
199
+ values = await item.selectData();
208
200
  }
209
- else if (item.cellEditorParams && item.cellEditorParams.hasOwnProperty('values')) {
201
+ item.cellEditorParams = {
202
+ ...(item.cellEditorParams || {}),
203
+ valueListMaxHeight: 200,
204
+ suppressMultiSelectPillRenderer: true,
205
+ };
206
+ if (item.cellEditorParams.hasOwnProperty('values')) {
210
207
  values = item.cellEditorParams.values;
211
- item.cellEditorParams.valueListMaxHeight = 200;
212
- item.cellEditorParams.suppressMultiSelectPillRenderer = true;
213
208
  }
214
209
  let isString = values.every((item) => typeof item === 'string');
215
210
  if (!isString) {
211
+ const optionValueField = item.cellEditorParams.optionValue || 'value';
212
+ const optionLabelField = item.cellEditorParams.optionLabel || 'label';
216
213
  item.cellEditorParams.rawOptions = values;
217
- item.cellEditorParams.values = values.map((item) => item.value);
214
+ item.cellEditorParams.values = values.map((item) => item?.[optionValueField]);
218
215
  item.valueFormatter = (params) => {
219
216
  const options = params.colDef.cellEditorParams.rawOptions;
217
+ const valueField = params.colDef.cellEditorParams.optionValue || 'value';
218
+ const labelField = params.colDef.cellEditorParams.optionLabel || 'label';
220
219
  if (typeof params.value === 'number') {
221
- const options = params.colDef.cellEditorParams.rawOptions;
222
- const option = options.find((opt) => opt.value == params.value);
223
- return option ? option.label : params.value;
220
+ const option = options.find((opt) => opt?.[valueField] == params.value);
221
+ return option ? option?.[labelField] : params.value;
224
222
  }
225
223
  else {
226
224
  let values = [];
@@ -232,8 +230,8 @@ export class GridComponent {
232
230
  else {
233
231
  values = params.value || [];
234
232
  }
235
- const option = options.filter((opt) => values.includes(opt.value)) || [];
236
- return option.length > 0 ? option.map((v) => v.label) : params.value;
233
+ const option = options.filter((opt) => values.includes(opt?.[valueField])) || [];
234
+ return option.length > 0 ? option.map((v) => v?.[labelField]) : params.value;
237
235
  }
238
236
  };
239
237
  item.valueGetter = (params) => {
@@ -246,8 +244,10 @@ export class GridComponent {
246
244
  item.valueParser = (params) => {
247
245
  // console.log('params----',params)
248
246
  const options = params.colDef.cellEditorParams.rawOptions;
249
- const option = options.find((opt) => opt.label === params.newValue);
250
- return option ? option.value : params.newValue;
247
+ const valueField = params.colDef.cellEditorParams.optionValue || 'value';
248
+ const labelField = params.colDef.cellEditorParams.optionLabel || 'label';
249
+ const option = options.find((opt) => opt?.[labelField] === params.newValue);
250
+ return option ? option?.[valueField] : params.newValue;
251
251
  };
252
252
  }
253
253
  else {
@@ -772,4 +772,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
772
772
  type: HostListener,
773
773
  args: ['window:resize']
774
774
  }] } });
775
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL2dyaWQvZ3JpZC9ncmlkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvZ3JpZC9ncmlkL2dyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBd0IxRCxNQUFNLGFBQWEsR0FBZ0I7SUFDbEMsOEJBQThCO0lBQzlCLGFBQWEsRUFBRTtRQUNkLElBQUksRUFBRSxDQUFDO1FBQ1AsUUFBUSxFQUFFLEdBQUc7UUFDYixRQUFRLEVBQUUsS0FBSztRQUNmLE1BQU0sRUFBRSxLQUFLO0tBQ2I7SUFDRCxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0lBQ2xDLFlBQVksRUFBRSxZQUFZO0lBQzFCLGFBQWEsRUFBRTtRQUNkLE1BQU0sRUFBRTtZQUNQLElBQUksRUFBRSxPQUFPO1NBQ2I7S0FDRDtJQUNELFlBQVksRUFBRSxJQUFJO0lBQ2xCLG1CQUFtQixFQUFFLElBQUk7SUFDekIsd0JBQXdCLEVBQUUsRUFBRTtDQUM1QixDQUFDO0FBRUYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDNUQsU0FBUyxhQUFhLENBQUMsS0FBWSxFQUFFLFNBQWMsRUFBRSxPQUFZO0lBQ2hFLEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzVDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pELE9BQU8sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNGLENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQVNELE1BQU0sT0FBTyxhQUFhO0lBdUR6QixRQUFRO1FBQ1AsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxZQUFvQixNQUFxQjtRQUFyQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBdkR6QyxnQkFBVyxHQUFHLEtBQUssQ0FBYyxFQUFFLENBQUMsQ0FBQztRQUNyQyxrQkFBYSxHQUFHLEtBQUssQ0FBUSxFQUFFLENBQUMsQ0FBQztRQUNqQyxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUN6QixTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FDekgsQ0FBQztRQUNGLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFekMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQy9ELGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIsZUFBVSxHQUFhLEVBQUUsQ0FBQztRQUMxQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLGVBQVUsR0FBMkIsRUFBRSxDQUFDO1FBR3hDLFdBQU0sR0FBRyxLQUFLLEVBQU8sQ0FBQztRQUV0QixZQUFPLEdBQUcsS0FBSyxDQUFNLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFOUIsZUFBVSxHQUFHLE1BQU0sRUFBWSxDQUFDO1FBQ2hDLFlBQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNuQixZQUFPLEdBQUcsS0FBSyxFQUFnQyxDQUFDO1FBQ2hELGVBQVUsR0FBRyxLQUFLLEVBQVMsQ0FBQztRQUM1QixZQUFPLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQy9CLFdBQU0sR0FBRyxLQUFLLENBQW1CLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLGNBQVMsR0FBRyxLQUFLLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFCLGFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEMsZUFBVSxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUNsQyxnQkFBVyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNwQyxZQUFPLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDdkMsaUJBQVksR0FBRyxLQUFLLENBQVMsSUFBSSxDQUFDLENBQUM7UUFDbkMsb0JBQWUsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDeEMsZ0JBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUV2QixnQkFBVyxHQUF3QixFQUFFLENBQUM7UUFFdEMsOEJBQXlCLEdBQUcsQ0FBQyxDQUFDO1FBRTlCLDJCQUFzQixHQUFHLENBQUMsQ0FBQztRQUMzQixlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsaUJBQVksR0FBRyxNQUFNLENBQVEsRUFBRSxDQUFDLENBQUM7UUFDakMsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLG9CQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFRcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3hFLElBQUksU0FBUyxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakMsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUNMLEtBQUssSUFBSSxFQUFFO1lBQ1YsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFVBQVcsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVUsQ0FBQztZQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxTQUFVLENBQUM7WUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUNsRixJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQztvQkFDNUIsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxTQUFTO29CQUN4QyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUU7b0JBQ3ZCLE9BQU8sRUFBRSxFQUFFO29CQUNYLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBRTtvQkFDakIsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFO29CQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVM7aUJBQ3JDLENBQUMsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRyxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDM0IsQ0FBQztRQUNGLE1BQU0sQ0FDTCxHQUFHLEVBQUU7WUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQzVELE9BQU87WUFDUixDQUFDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUMzQixDQUFDO1FBQ0YsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNYLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLFNBQVM7Z0JBQUUsT0FBTztZQUN6QyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFlBQVksS0FBSyxZQUFZLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNuRixPQUFPO2dCQUNSLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ25HLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDL0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FDTCxHQUFHLEVBQUU7WUFDSixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3JFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRyxDQUFDLENBQUM7WUFDMUMsQ0FBQztRQUNGLENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUMzQixDQUFDO1FBQ0YsTUFBTSxDQUNMLEdBQUcsRUFBRTtZQUNKLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxTQUFTO2dCQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBVSxDQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsSCxDQUFDLEVBQ0QsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FDM0IsQ0FBQztRQUNGLE1BQU0sQ0FDTCxHQUFHLEVBQUU7WUFDSixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksTUFBTSxFQUFFLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDL0QsQ0FBQztRQUNGLENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUMzQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxRQUFRO1FBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxVQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzFGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDdEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsZUFBZSxLQUFJLENBQUM7SUFFcEIsV0FBVztRQUNWLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsMkJBQTJCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0MsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzdDLENBQUM7SUFDRixDQUFDO0lBRUQsT0FBTztRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNsQixDQUFDO0lBRUQsV0FBVyxDQUFDLENBQU07UUFDakIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQVU7UUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxZQUFZLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQztJQUN4RyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDbEMscUJBQXFCLENBQUMsR0FBRyxFQUFFO2dCQUMxQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsWUFBWTtRQUNqQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsVUFBVyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUM7WUFDSixNQUFNLGFBQWEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ3RDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQVMsRUFBRSxFQUFFO2dCQUMzQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLHdCQUF3QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksb0JBQW9CLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSw4QkFBOEIsQ0FBQyxFQUFFLENBQUM7b0JBQ3JMLElBQUksTUFBTSxHQUFRLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQzt3QkFDL0UsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQzs0QkFDaEYsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO3dCQUNsQyxDQUFDO3dCQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRzs0QkFDdkIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCOzRCQUN4QixrQkFBa0IsRUFBRSxHQUFHO3lCQUN2QixDQUFDO29CQUNILENBQUM7eUJBQU0sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssVUFBVSxFQUFFLENBQUM7d0JBQ2pGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBRyxFQUFFLENBQUM7d0JBQ3JELE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUN4RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxDQUFDO3dCQUMvQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDO29CQUM5RCxDQUFDO3lCQUFLLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQzt3QkFDbkYsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7d0JBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQUM7d0JBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQywrQkFBK0IsR0FBRyxJQUFJLENBQUM7b0JBQzlELENBQUM7b0JBQ0QsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUM7b0JBQ3JFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzt3QkFDZixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQzt3QkFDMUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ3JFLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxNQUFXLEVBQUUsRUFBRTs0QkFDckMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFtQixDQUFDOzRCQUNuRSxJQUFJLE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztnQ0FDdEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFtQixDQUFDO2dDQUNuRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQ0FDaEUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7NEJBQzdDLENBQUM7aUNBQU0sQ0FBQztnQ0FDUCxJQUFJLE1BQU0sR0FBUSxFQUFFLENBQUM7Z0NBQ3JCLElBQUksT0FBTyxNQUFNLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO29DQUN0QyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO3dDQUM3QixNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO29DQUNyRixDQUFDO2dDQUNGLENBQUM7cUNBQU0sQ0FBQztvQ0FDUCxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0NBQzdCLENBQUM7Z0NBQ0QsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0NBQ3pFLE9BQU8sTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQzs0QkFDdEUsQ0FBQzt3QkFDRixDQUFDLENBQUM7d0JBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLE1BQVcsRUFBRSxFQUFFOzRCQUNsQywrQ0FBK0M7NEJBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLHdCQUF3QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksOEJBQThCLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQ0FDbEosT0FBTyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDbEgsQ0FBQzs0QkFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNoQyxDQUFDLENBQUM7d0JBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLE1BQVcsRUFBRSxFQUFFOzRCQUNsQyxtQ0FBbUM7NEJBQ25DLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsVUFBbUIsQ0FBQzs0QkFDbkUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7NEJBQ3BFLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO3dCQUNoRCxDQUFDLENBQUM7b0JBQ0gsQ0FBQzt5QkFBTSxDQUFDO3dCQUNQLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO3dCQUN0QyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsTUFBVyxFQUFFLEVBQUU7NEJBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLHdCQUF3QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksOEJBQThCLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQ0FDbEosT0FBTyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDbEgsQ0FBQzs0QkFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUNoQyxDQUFDLENBQUM7b0JBQ0gsQ0FBQztnQkFDRixDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2IsQ0FBQyxDQUFDLENBQ0YsQ0FBQztZQUNGLE9BQU8sYUFBYSxDQUFDO1FBQ3RCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEQsTUFBTSxLQUFLLENBQUM7UUFDYixDQUFDO0lBQ0YsQ0FBQztJQUVELFFBQVEsQ0FBQyxFQUFVO1FBQ2xCLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBZ0I7UUFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUNsQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDdEcsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU87UUFDTixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsbURBQW1EO1lBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFBRSxPQUFPO1lBQzNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUcsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWU7UUFDNUIsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLHNCQUFzQixFQUFFO1lBQ3BELE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNuQixNQUFNLFNBQVMsR0FBVztvQkFDekIsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUNuQixNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRO29CQUMvQixhQUFhLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxhQUFhLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ3hGLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWTtpQkFDM0csQ0FBQztnQkFDRixTQUFTLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGFBQWMsQ0FBbUIsQ0FBQztnQkFDbkYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFNBQVMsRUFBRTtxQkFDZCxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUM7cUJBQ3ZCLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO29CQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQzt3QkFDbkIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUTt3QkFDakMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUTt3QkFDcEYsS0FBSyxFQUFFLEdBQUcsQ0FBQyxRQUFRO3FCQUNuQixDQUFDLENBQUM7b0JBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzVDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7U0FDRCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBVyxFQUFFLFNBQWlCO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDdkMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekMsU0FBUyxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsS0FBSyxLQUFLLENBQUMsQ0FBQztZQUNoSCxTQUFTLENBQUMsYUFBYSxHQUFHO2dCQUN6QixzQ0FBc0M7Z0JBQ3RDLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7YUFDeEcsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzFGLFNBQVMsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5RyxDQUFDO1FBQ0YsQ0FBQztRQUNELFNBQVMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWU7UUFDNUIsTUFBTSxTQUFTLEdBQVc7WUFDekIsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLEtBQUssRUFBRSxXQUFXO1lBQ2xCLGFBQWEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN4RixLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVk7U0FDMUQsQ0FBQztRQUNGLFNBQVMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsYUFBYyxDQUFtQixDQUFDO1FBQ25GLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxFQUFFO2FBQ2QsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO2FBQ3ZCLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUNuQixLQUFLLEVBQUUsR0FBRyxDQUFDLFFBQVE7Z0JBQ25CLElBQUksRUFBRSxRQUFRO2FBQ2QsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBaUI7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUN2QyxNQUFNLFFBQVEsR0FBVSxFQUFFLENBQUM7UUFDM0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxTQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN0RCxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELFNBQVMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxDQUF3QjtRQUN4QyxJQUFJLEVBQ0gsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsRUFDM0QsUUFBUSxFQUNSLFFBQVEsRUFDUixRQUFRLEVBQ1IsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQ1osR0FBRyxDQUFDLENBQUM7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQixJQUFJLFVBQVUsSUFBSSx3QkFBd0IsSUFBSSxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoRyxRQUFRLEdBQUcsUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDckUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFNLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDckMsQ0FBQztRQUNELElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JCLEVBQUUsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUMvRyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFTLEdBQUcsS0FBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQzNILENBQUM7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QUMsRUFBRSxXQUFXLENBQUE7Z0JBQ2hDLENBQUM7WUFDRixDQUFDLENBQUMsQ0FBQTtZQUNGLE9BQU8sSUFBSSxDQUFBO1FBQ1osQ0FBQztRQUNELE9BQU8sWUFBWSxDQUFBO0lBQ3BCLENBQUM7K0dBM3dCVyxhQUFhO21HQUFiLGFBQWEsczJFQUNkLGFBQWEsMEVBQ2IsYUFBYSwyQkFBVSxVQUFVLDZIQzFGN0MsazlEQXlEQSxvMEJEMkJXLGFBQWEsZzBUQUFFLFlBQVk7OzRGQUl6QixhQUFhO2tCQVB6QixTQUFTOytCQUNDLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDO2tGQUtaLElBQUk7c0JBQTdCLFNBQVM7dUJBQUMsYUFBYTtnQkFDd0IsT0FBTztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNsQixZQUFZO3NCQUF2QyxTQUFTO3VCQUFDLGVBQWU7Z0JBb0QxQixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0Vmlld0NoaWxkLFxuXHRFbGVtZW50UmVmLFxuXHRpbnB1dCxcblx0ZWZmZWN0LFxuXHRpbmplY3QsXG5cdGNvbXB1dGVkLFxuXHR1bnRyYWNrZWQsXG5cdG91dHB1dCxcblx0Tmdab25lLFxuXHRSZW5kZXJlcjIsXG5cdENoYW5nZURldGVjdG9yUmVmLFxuXHRIb3N0TGlzdGVuZXIsXG5cdHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZWxsVmFsdWVDaGFuZ2VkRXZlbnQsIENvbERlZiwgR3JpZE9wdGlvbnMgYXMgUmF3R3JpZE9wdGlvbnMsIFJvd0RyYWdFbmRFdmVudCB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHsgVGhlbWVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS90aGVtZUNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2FjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoLENvbHVtbkZpbHRlciB9IGZyb20gJy4uLy4uL2FtL2FtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBncmlkVXRpbHMgfSBmcm9tICcuLi9ncmlkLXV0aWxzJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgY29tcG9uZW50cywgQ0xJRU5UTElNSVQgfSBmcm9tICcuLi9tb2NrLWRhdGEnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdyaWRPcHRpb25zIGV4dGVuZHMgUmF3R3JpZE9wdGlvbnMge1xuXHRzZXJ2ZXJGdW5jPzogKHNlYXJjaDogU2VhcmNoKSA9PiBPYnNlcnZhYmxlPGFueT47XG5cdGNsaWVudEZ1bmM/OiAoc2VhcmNoOiBTZWFyY2gpID0+IE9ic2VydmFibGU8YW55Pjtcblx0c2hvd1NlYXJjaD86IGJvb2xlYW47XG5cdHByZVNlYXJjaD86IFNlYXJjaDtcblx0dHJlZURhdGFGaWVsZD86IHN0cmluZztcblx0dHJlZUxldmVsPzogbnVtYmVyO1xuXHRoZWFkZXJIZWlnaHQ/OiBudW1iZXI7XG5cdHNjcm9sbEhlaWdodD86IHN0cmluZztcblx0c2hvd0luZGV4PzogYm9vbGVhbjtcblx0dW5kb1JlZG9DZWxsRWRpdGluZz86IGJvb2xlYW47XG5cdHVuZG9SZWRvQ2VsbEVkaXRpbmdMaW1pdD86IG51bWJlcjtcblx0bWFpbkZpZWxkPzogc3RyaW5nO1xuXHRtb2RlbE5hbWU/OiBzdHJpbmc7XG5cdGZrPzogc3RyaW5nO1xuXHRkcmFnU29ydD86IHN0cmluZztcblx0c2VsZWN0aW9uTW9kZT86ICdub25lJyB8ICdzaW5nbGUnIHwgJ211bHRpcGxlJztcblx0ZGF0YUtleT86IHN0cmluZztcblx0cmVmZXJlbmNlPzogc3RyaW5nO1xuXHRhZGREYXRhQ2I/OiAoKSA9PiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb246IEdyaWRPcHRpb25zID0ge1xuXHQvLyBwb3B1cFBhcmVudDogZG9jdW1lbnQuYm9keSxcblx0ZGVmYXVsdENvbERlZjoge1xuXHRcdGZsZXg6IDEsXG5cdFx0bWluV2lkdGg6IDEwMCxcblx0XHRzb3J0YWJsZTogZmFsc2UsXG5cdFx0ZmlsdGVyOiBmYWxzZSxcblx0fSxcblx0cm93U2VsZWN0aW9uOiB7IG1vZGU6ICdtdWx0aVJvdycgfSxcblx0cm93TW9kZWxUeXBlOiAnc2VydmVyU2lkZScsXG5cdGNlbGxTZWxlY3Rpb246IHtcblx0XHRoYW5kbGU6IHtcblx0XHRcdG1vZGU6ICdyYW5nZScsXG5cdFx0fSxcblx0fSxcblx0ZW5hYmxlQ2hhcnRzOiB0cnVlLFxuXHR1bmRvUmVkb0NlbGxFZGl0aW5nOiB0cnVlLFxuXHR1bmRvUmVkb0NlbGxFZGl0aW5nTGltaXQ6IDIwLFxufTtcblxuY29uc3QgZGVmYXVsdFNvcnRzID0gW3sgZmllbGQ6ICdjcmVhdGVkQXQnLCBpc0FzYzogZmFsc2UgfV07XG5mdW5jdGlvbiBmaW5kTGFzdEluZGV4KGFycmF5OiBhbnlbXSwgcHJlZGljYXRlOiBhbnksIHRoaXNBcmc6IGFueSkge1xuXHRmb3IgKGxldCBpID0gYXJyYXkubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcblx0XHRpZiAocHJlZGljYXRlLmNhbGwodGhpc0FyZywgYXJyYXlbaV0sIGksIGFycmF5KSkge1xuXHRcdFx0cmV0dXJuIGk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiAtMTtcbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnY3VzdG9tLWdyaWQnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbQWdHcmlkQW5ndWxhciwgQnV0dG9uTW9kdWxlXSxcblx0dGVtcGxhdGVVcmw6ICcuL2dyaWQuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybDogJy4vZ3JpZC5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIEdyaWRDb21wb25lbnQge1xuXHRAVmlld0NoaWxkKEFnR3JpZEFuZ3VsYXIpIGdyaWQhOiBBZ0dyaWRBbmd1bGFyO1xuXHRAVmlld0NoaWxkKEFnR3JpZEFuZ3VsYXIsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBncmlkUmVmITogRWxlbWVudFJlZjtcblx0QFZpZXdDaGlsZCgnZ3JpZENvbnRhaW5lcicpIGNvbnRhaW5lclJlZiE6IEVsZW1lbnRSZWY7XG5cdGdyaWRPcHRpb25zID0gaW5wdXQ8R3JpZE9wdGlvbnM+KHt9KTtcblx0c2VsZWN0aW9uS2V5cyA9IGlucHV0PGFueVtdPihbXSk7XG5cdHRvT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+XG5cdFx0Z3JpZFV0aWxzLm1lcmdlT3B0aW9ucyh7IC4uLmRlZmF1bHRPcHRpb24sIC4uLnRoaXMuZ3JpZE9wdGlvbnMoKSB9LCB1bnRyYWNrZWQoKCkgPT4gdGhpcy5zZWFyY2hQcm0oKSkubGltaXQsIHRoaXMuYWN0aW9uKSxcblx0KTtcblx0dGhlbWVDb25maWcgPSBpbmplY3QoVGhlbWVDb25maWdTZXJ2aWNlKTtcblx0bG9jYWxlVGV4dDogYW55O1xuXHRpMThuU2VydmljZSA9IGluamVjdChJMThuU2VydmljZSk7XG5cdG15VGhlbWUgPSBjb21wdXRlZCgoKSA9PiBncmlkVXRpbHMuZ2V0VGhlbWUodGhpcy50aGVtZUNvbmZpZykpO1xuXHRjb21wb25lbnRzID0gY29tcG9uZW50cztcblx0Y29sdW1uRGVmczogQ29sRGVmW10gPSBbXTtcblx0aW5pdEdyaWQgPSB0cnVlO1xuXHRjb250ZW50TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cdG1haW5GaWVsZCE6IHN0cmluZztcblx0bW9kZWxOYW1lITogc3RyaW5nO1xuXHR1cHNlcnQgPSBpbnB1dDxhbnk+KCk7XG5cdHN1YkluZGV4ITogbnVtYmVyO1xuXHRyb3dEYXRhID0gaW5wdXQ8YW55Pih1bmRlZmluZWQpO1xuXHRzZWFyY2hQcm0gPSBpbnB1dDxTZWFyY2g+KHt9KTtcblx0cmF3UHJtPzogU2VhcmNoO1xuXHRkZWxldGVFbWl0ID0gb3V0cHV0PG51bWJlcltdPigpO1xuXHRhZGRFbWl0ID0gb3V0cHV0KCk7XG5cdGFkZFR5cGUgPSBpbnB1dDwnaGFuZGxlJyB8ICdzZWxlY3QnIHwgJ25vbmUnPigpO1xuXHRzZWxlY3REYXRhID0gaW5wdXQ8YW55W10+KCk7XG5cdHNob3dBY3QgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblx0YWN0UG9zID0gaW5wdXQ8J3RvcCcgfCAnYm90dG9tJz4oJ2JvdHRvbScpO1xuXHRhdXRoTGV2ZWwgPSBpbnB1dDxudW1iZXI+KC0xKTtcblx0aHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcblx0cmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblx0bmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cdGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cdHNob3dEZWxldGUgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblx0Z3JpZERpc2FibGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cdGFkZFNvcnQgPSBpbnB1dDxzdHJpbmc+KCk7XG5cdHN1YlNhdmVWaXNpYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXHRzdWJTYXZlTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCfkv53lrZgnKTtcblx0c3ViU2F2ZURpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXHRzdWJTYXZlRW1pdCA9IG91dHB1dCgpO1xuXG5cdHJpY2hNdWx0TWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cdGhvcml6b250YWxTY3JvbGxCYXJPYnNlcnZlcjogYW55O1xuXHRob3Jpem9udGFsU2Nyb2xsQmFySGVpZ2h0ID0gMDtcblx0dmVydGljYWxTY3JvbGxCYXJPYnNlcnZlcjogYW55O1xuXHR2ZXJ0aWNhbFNjcm9sbEJhcldpZHRoID0gMDtcblx0Z3JpZEhlaWdodCA9IDA7XG5cdHNlbGVjdGVkUm93cyA9IHNpZ25hbDxhbnlbXT4oW10pO1xuXHRub1Jvd3MgPSB0cnVlO1xuXHRzaG93SG9yaXpvbnRhbCA9IGZhbHNlO1xuXHRkcmFnQmVmb3JlSW5kZXggPSAtMTtcblx0cHJpdmF0ZSBzZWFyY2hQcm1TdWI6IGFueTtcblx0QEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG5cdG9uUmVzaXplKCkge1xuXHRcdHRoaXMuc2V0U2Nyb2xsSGVpZ2h0KCk7XG5cdH1cblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGFjdGlvbjogQWN0aW9uU2VydmljZSkge1xuXHRcdHRoaXMuc2VhcmNoUHJtU3ViID0gdG9PYnNlcnZhYmxlKHRoaXMuc2VhcmNoUHJtKS5zdWJzY3JpYmUoKHNlYXJjaFBybSkgPT4ge1xuXHRcdFx0aWYgKHNlYXJjaFBybS5tb2RlbE5hbWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHR0aGlzLnJhd1BybSA9IHNlYXJjaFBybTtcblx0XHRcdFx0dGhpcy5zZWFyY2hQcm1TdWIudW5zdWJzY3JpYmUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRlZmZlY3QoXG5cdFx0XHRhc3luYyAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuY29sdW1uRGVmcyA9IGF3YWl0IHRoaXMuc2V0UmljaFZhbHVlKCk7XG5cdFx0XHRcdHRoaXMuY29sdW1uRGVmcyA9IGdyaWRVdGlscy5oYW5kbGVJMThuS2V5KHRoaXMudG9PcHRpb25zKCkuY29sdW1uRGVmcyEgfHwgW10sIHRoaXMuaTE4blNlcnZpY2UpO1xuXHRcdFx0XHR0aGlzLm1haW5GaWVsZCA9IHRoaXMudG9PcHRpb25zKCkubWFpbkZpZWxkITtcblx0XHRcdFx0dGhpcy5tb2RlbE5hbWUgPSB0aGlzLnRvT3B0aW9ucygpLm1vZGVsTmFtZSE7XG5cdFx0XHRcdGlmICghdGhpcy51cHNlcnQoKT8uc3Vic2VydD8uZmluZCgodjogYW55KSA9PiB2LnN1Yk1vZGVsTmFtZSA9PT0gdGhpcy5tb2RlbE5hbWUpKSB7XG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydD8ucHVzaCh7XG5cdFx0XHRcdFx0XHRzdWJNb2RlbE5hbWU6IHRoaXMudG9PcHRpb25zKCkubW9kZWxOYW1lLFxuXHRcdFx0XHRcdFx0Zms6IHRoaXMudG9PcHRpb25zKCkuZmssXG5cdFx0XHRcdFx0XHRzdWJEYXRhOiBbXSxcblx0XHRcdFx0XHRcdG1hcHRtcDogbmV3IE1hcCgpLFxuXHRcdFx0XHRcdFx0bG9ndG1wOiBuZXcgTWFwKCksXG5cdFx0XHRcdFx0XHRyZWZlcmVuY2U6IHRoaXMudG9PcHRpb25zKCkucmVmZXJlbmNlLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuc3ViSW5kZXggPSB0aGlzLnVwc2VydCgpPy5zdWJzZXJ0Py5maW5kSW5kZXgoKHY6IGFueSkgPT4gdi5zdWJNb2RlbE5hbWUgPT09IHRoaXMubW9kZWxOYW1lKTtcblx0XHRcdH0sXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG5cdFx0KTtcblx0XHRlZmZlY3QoXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdGlmICghdGhpcy5hY3Rpb24uc2VhcmNoTW9uaXRvcih0aGlzLnRvT3B0aW9ucygpLm1vZGVsTmFtZSkpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5nZXREYXRhKCk7XG5cdFx0XHR9LFxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuXHRcdCk7XG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGlmICh0aGlzLnJvd0RhdGEoKSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cdFx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy50b09wdGlvbnMoKS5yb3dNb2RlbFR5cGUgPT09ICdzZXJ2ZXJTaWRlJyAmJiB0aGlzLnRvT3B0aW9ucygpLnNlcnZlckZ1bmMpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy50b09wdGlvbnMoKS5yb3dNb2RlbFR5cGUgPSAnY2xpZW50U2lkZSc7XG5cdFx0XHRcdHRoaXMudG9PcHRpb25zKCkuY2xpZW50RnVuYyA9ICgpID0+IG9mKHsgZGF0YTogdGhpcy5yb3dEYXRhKCksIHRvdGFsTnVtOiB0aGlzLnJvd0RhdGEoKT8ubGVuZ3RoIH0pO1xuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmdldENsaWVudERhdGEodW5kZWZpbmVkKTtcblx0XHRcdFx0fSwgMTAwKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0aWYgKHRoaXMuc2VsZWN0RGF0YSgpICYmIHRoaXMuc2VsZWN0RGF0YSgpIS5sZW5ndGggPiAwICYmIHRoaXMuZ3JpZCkge1xuXHRcdFx0XHRcdHRoaXMuaGFuZGxlQWRkZWRSb3dzKHRoaXMuc2VsZWN0RGF0YSgpISk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG5cdFx0KTtcblx0XHRlZmZlY3QoXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdHRoaXMudG9PcHRpb25zKCkucHJlU2VhcmNoICYmXG5cdFx0XHRcdFx0dGhpcy5hY3Rpb24uc2V0U2VhcmNoKHsgY29sdW1uRmlsdGVyczogdGhpcy50b09wdGlvbnMoKS5wcmVTZWFyY2ghLmNvbHVtbkZpbHRlcnMgfSwgdGhpcy50b09wdGlvbnMoKS5tb2RlbE5hbWUpO1xuXHRcdFx0fSxcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcblx0XHQpO1xuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0Y29uc3QgYWN0aW9uID0gdGhpcy5hY3Rpb24uZ2V0QWN0aW9uKCk7XG5cdFx0XHRcdGlmIChhY3Rpb24/LnR5cGUgPT09ICdleHBvcnQnKSB7XG5cdFx0XHRcdFx0dGhpcy5ncmlkLmFwaS5leHBvcnREYXRhQXNFeGNlbCh7IGZpbGVOYW1lOiB0aGlzLm1vZGVsTmFtZSB9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcblx0XHQpO1xuXHRcdHRoaXMuZWRpdGluZ0ZpeCgpO1xuXHR9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5pMThuU2VydmljZS5jaGFuZ2Uuc3Vic2NyaWJlKChyZXMpID0+IHtcblx0XHRcdHRoaXMuZ3JpZCAmJiB0aGlzLmdyaWQuYXBpLmRlc3Ryb3koKTtcblx0XHRcdHRoaXMuaW5pdEdyaWQgPSBmYWxzZTtcblx0XHRcdHRoaXMubG9jYWxlVGV4dCA9IGdyaWRVdGlscy5nZXRMb2NhbFRleHQocmVzKTtcblx0XHRcdHRoaXMuY29sdW1uRGVmcyA9IGdyaWRVdGlscy5oYW5kbGVJMThuS2V5KHRoaXMudG9PcHRpb25zKCkuY29sdW1uRGVmcyEsIHRoaXMuaTE4blNlcnZpY2UpO1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMuaW5pdEdyaWQgPSB0cnVlO1xuXHRcdFx0fSwgMTAwKTtcblx0XHR9KTtcblx0XHR0aGlzLmxvY2FsZVRleHQgPSBncmlkVXRpbHMuZ2V0TG9jYWxUZXh0KHRoaXMuaTE4blNlcnZpY2UuY3VycmVudExhbmcpO1xuXHR9XG5cblx0bmdBZnRlclZpZXdJbml0KCkge31cblxuXHRuZ09uRGVzdHJveSgpIHtcblx0XHR0aGlzLnNlYXJjaFBybVN1Yj8udW5zdWJzY3JpYmUoKTtcblx0XHRpZiAodGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFyT2JzZXJ2ZXIpIHtcblx0XHRcdHRoaXMuaG9yaXpvbnRhbFNjcm9sbEJhck9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMudmVydGljYWxTY3JvbGxCYXJPYnNlcnZlcikge1xuXHRcdFx0dGhpcy52ZXJ0aWNhbFNjcm9sbEJhck9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcblx0XHR9XG5cdH1cblxuXHRnZXRHcmlkKCk6IEFnR3JpZEFuZ3VsYXIge1xuXHRcdHJldHVybiB0aGlzLmdyaWQ7XG5cdH1cblxuXHRvbkdyaWRSZWFkeShlOiBhbnkpIHtcblx0XHR0aGlzLmluaXRHcmlkSGVpZ2h0KCk7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLmdldERhdGEoKTtcblx0XHR9LCAxMDApO1xuXHR9XG5cblx0b25TZWxlY3Rpb25DaGFuZ2VkKGV2ZW50OiBhbnkpOiBhbnkge1xuXHRcdHRoaXMuc2VsZWN0ZWRSb3dzLnNldChncmlkVXRpbHMuY2FsY1Jvd0lkcyhldmVudC5hcGksIHRoaXMudG9PcHRpb25zKCk/LnJvd01vZGVsVHlwZSA9PSAnc2VydmVyU2lkZScpKTtcblx0fVxuXG5cdG9uUm93R3JvdXBPcGVuZWQoKSB7XG5cdFx0dGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuXHRcdFx0cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcblx0XHRcdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0YXN5bmMgc2V0UmljaFZhbHVlKCkge1xuXHRcdGxldCBjb2wgPSB0aGlzLnRvT3B0aW9ucygpLmNvbHVtbkRlZnMhIHx8IFtdO1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBwcm9jZXNzZWRDb2xzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG5cdFx0XHRcdGNvbC5tYXAoYXN5bmMgKGl0ZW06IGFueSkgPT4ge1xuXHRcdFx0XHRcdGlmIChpdGVtLmhhc093blByb3BlcnR5KCdmaWVsZElkJykgJiYgKGl0ZW0uY2VsbEVkaXRvciA9PSAnYWdSaWNoU2VsZWN0Q2VsbEVkaXRvcicgfHwgaXRlbS5jZWxsRWRpdG9yID09ICdhZ1NlbGVjdENlbGxFZGl0b3InIHx8IGl0ZW0uY2VsbEVkaXRvciA9PSAnY2VsbEVkaXRTZWxlY3RGaWVsZENvbXBvbmVudCcpKSB7XG5cdFx0XHRcdFx0XHRsZXQgdmFsdWVzOiBhbnkgPSBbXTtcblx0XHRcdFx0XHRcdGlmICghaXRlbS5jZWxsRWRpdG9yUGFyYW1zIHx8ICFpdGVtLmNlbGxFZGl0b3JQYXJhbXMuaGFzT3duUHJvcGVydHkoJ3ZhbHVlcycpKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChpdGVtLmhhc093blByb3BlcnR5KCdzZWxlY3REYXRhJykgJiYgdHlwZW9mIGl0ZW0uc2VsZWN0RGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdFx0XHRcdHZhbHVlcyA9IGF3YWl0IGl0ZW0uc2VsZWN0RGF0YSgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGl0ZW0uY2VsbEVkaXRvclBhcmFtcyA9IHtcblx0XHRcdFx0XHRcdFx0XHQuLi5pdGVtLmNlbGxFZGl0b3JQYXJhbXMsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWVMaXN0TWF4SGVpZ2h0OiAyMDAsXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGl0ZW0uY2VsbEVkaXRvclBhcmFtcyAmJiB0eXBlb2YgaXRlbS5jZWxsRWRpdG9yUGFyYW1zID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0XHRcdGl0ZW0uY2VsbEVkaXRvclBhcmFtcyA9IGl0ZW0uY2VsbEVkaXRvclBhcmFtcygpfHwge307XG5cdFx0XHRcdFx0XHRcdHZhbHVlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaXRlbS5jZWxsRWRpdG9yUGFyYW1zLnZhbHVlcykpIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHRpdGVtLmNlbGxFZGl0b3JQYXJhbXMudmFsdWVMaXN0TWF4SGVpZ2h0ID0gMjAwO1xuXHRcdFx0XHRcdFx0XHRpdGVtLmNlbGxFZGl0b3JQYXJhbXMuc3VwcHJlc3NNdWx0aVNlbGVjdFBpbGxSZW5kZXJlciA9IHRydWU7XG5cdFx0XHRcdFx0XHR9ZWxzZSBpZiAoaXRlbS5jZWxsRWRpdG9yUGFyYW1zICYmIGl0ZW0uY2VsbEVkaXRvclBhcmFtcy5oYXNPd25Qcm9wZXJ0eSgndmFsdWVzJykpIHtcblx0XHRcdFx0XHRcdFx0dmFsdWVzID0gaXRlbS5jZWxsRWRpdG9yUGFyYW1zLnZhbHVlcztcblx0XHRcdFx0XHRcdFx0aXRlbS5jZWxsRWRpdG9yUGFyYW1zLnZhbHVlTGlzdE1heEhlaWdodCA9IDIwMDtcblx0XHRcdFx0XHRcdFx0aXRlbS5jZWxsRWRpdG9yUGFyYW1zLnN1cHByZXNzTXVsdGlTZWxlY3RQaWxsUmVuZGVyZXIgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0bGV0IGlzU3RyaW5nID0gdmFsdWVzLmV2ZXJ5KChpdGVtOiBhbnkpID0+IHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyk7XG5cdFx0XHRcdFx0XHRpZiAoIWlzU3RyaW5nKSB7XG5cdFx0XHRcdFx0XHRcdGl0ZW0uY2VsbEVkaXRvclBhcmFtcy5yYXdPcHRpb25zID0gdmFsdWVzO1xuXHRcdFx0XHRcdFx0XHRpdGVtLmNlbGxFZGl0b3JQYXJhbXMudmFsdWVzID0gdmFsdWVzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLnZhbHVlKTtcblx0XHRcdFx0XHRcdFx0aXRlbS52YWx1ZUZvcm1hdHRlciA9IChwYXJhbXM6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbnMgPSBwYXJhbXMuY29sRGVmLmNlbGxFZGl0b3JQYXJhbXMucmF3T3B0aW9ucyBhcyBhbnlbXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtcy52YWx1ZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbnMgPSBwYXJhbXMuY29sRGVmLmNlbGxFZGl0b3JQYXJhbXMucmF3T3B0aW9ucyBhcyBhbnlbXTtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQudmFsdWUgPT0gcGFyYW1zLnZhbHVlKTtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBvcHRpb24gPyBvcHRpb24ubGFiZWwgOiBwYXJhbXMudmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCB2YWx1ZXM6IGFueSA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbXMudmFsdWUgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChwYXJhbXMudmFsdWUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlcyA9IHBhcmFtcy52YWx1ZS5zcGxpdCgnLCcpLm1hcCgodjogYW55KSA9PiAoIWlzTmFOKHYpID8gTnVtYmVyKHYpIDogdikpIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZXMgPSBwYXJhbXMudmFsdWUgfHwgW107XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBvcHRpb24gPSBvcHRpb25zLmZpbHRlcigob3B0KSA9PiB2YWx1ZXMuaW5jbHVkZXMob3B0LnZhbHVlKSkgfHwgW107XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gb3B0aW9uLmxlbmd0aCA+IDAgPyBvcHRpb24ubWFwKCh2KSA9PiB2LmxhYmVsKSA6IHBhcmFtcy52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdGl0ZW0udmFsdWVHZXR0ZXIgPSAocGFyYW1zOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZygncGFtcmFtcy0tLS0nLHBhcmFtcyxpdGVtLmZpZWxkKVxuXHRcdFx0XHRcdFx0XHRcdGlmICgoaXRlbS5jZWxsRWRpdG9yID09ICdhZ1JpY2hTZWxlY3RDZWxsRWRpdG9yJyB8fCBpdGVtLmNlbGxFZGl0b3IgPT0gJ2NlbGxFZGl0U2VsZWN0RmllbGRDb21wb25lbnQnKSAmJiBwYXJhbXMuZGF0YS5oYXNPd25Qcm9wZXJ0eShpdGVtLmZpZWxkKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHR5cGVvZiBwYXJhbXMuZGF0YVtpdGVtLmZpZWxkXSA9PSAnc3RyaW5nJyA/IHBhcmFtcy5kYXRhW2l0ZW0uZmllbGRdLnNwbGl0KCcsJykgOiBwYXJhbXMuZGF0YVtpdGVtLmZpZWxkXTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHBhcmFtcy5kYXRhW2l0ZW0uZmllbGRdO1xuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRpdGVtLnZhbHVlUGFyc2VyID0gKHBhcmFtczogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ3BhcmFtcy0tLS0nLHBhcmFtcylcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBvcHRpb25zID0gcGFyYW1zLmNvbERlZi5jZWxsRWRpdG9yUGFyYW1zLnJhd09wdGlvbnMgYXMgYW55W107XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb3B0aW9uID0gb3B0aW9ucy5maW5kKChvcHQpID0+IG9wdC5sYWJlbCA9PT0gcGFyYW1zLm5ld1ZhbHVlKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gb3B0aW9uID8gb3B0aW9uLnZhbHVlIDogcGFyYW1zLm5ld1ZhbHVlO1xuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aXRlbS5jZWxsRWRpdG9yUGFyYW1zLnZhbHVlcyA9IHZhbHVlcztcblx0XHRcdFx0XHRcdFx0aXRlbS52YWx1ZUdldHRlciA9IChwYXJhbXM6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGlmICgoaXRlbS5jZWxsRWRpdG9yID09ICdhZ1JpY2hTZWxlY3RDZWxsRWRpdG9yJyB8fCBpdGVtLmNlbGxFZGl0b3IgPT0gJ2NlbGxFZGl0U2VsZWN0RmllbGRDb21wb25lbnQnKSAmJiBwYXJhbXMuZGF0YS5oYXNPd25Qcm9wZXJ0eShpdGVtLmZpZWxkKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHR5cGVvZiBwYXJhbXMuZGF0YVtpdGVtLmZpZWxkXSA9PSAnc3RyaW5nJyA/IHBhcmFtcy5kYXRhW2l0ZW0uZmllbGRdLnNwbGl0KCcsJykgOiBwYXJhbXMuZGF0YVtpdGVtLmZpZWxkXTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHBhcmFtcy5kYXRhW2l0ZW0uZmllbGRdO1xuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gaXRlbTtcblx0XHRcdFx0fSksXG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuIHByb2Nlc3NlZENvbHM7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHByb2Nlc3NpbmcgY29sdW1uczonLCBlcnJvcik7XG5cdFx0XHR0aHJvdyBlcnJvcjtcblx0XHR9XG5cdH1cblxuXHRnZXRFbnVtcyhpZDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5odHRwLnBvc3QoJ2dldCcsIHsgaWQ6IE51bWJlcihpZCksIG1vZGVsTmFtZTogJ01vZGVsRmllbGQnLCBwcmVsb2FkczogWydFbnVtJ10gfSkpO1xuXHR9XG5cblx0aGFuZGxlU2VsZWN0aW9ucyhzdGFydFJvdzogbnVtYmVyKSB7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5zZWxlY3Rpb25LZXlzKCk/Lmxlbmd0aCkge1xuXHRcdFx0XHRncmlkVXRpbHMuc2VsZWN0aW9uSGFuZGxlcih0aGlzLmdyaWQuYXBpLCB0aGlzLnNlbGVjdGlvbktleXMoKSwgc3RhcnRSb3csIHRoaXMudG9PcHRpb25zKCk/LmRhdGFLZXkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0Z2V0RGF0YSgpIHtcblx0XHR1bnRyYWNrZWQoKCkgPT4ge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coJ3RoaXMudG9PcHRpb25zKCknLHRoaXMudG9PcHRpb25zKCkpXG5cdFx0XHRpZiAoIXRoaXMuc2VhcmNoUHJtKCkubW9kZWxOYW1lICYmICF0aGlzLnJvd0RhdGEoKSkgcmV0dXJuO1xuXHRcdFx0dGhpcy5jYW5jZWxTZWxlY3QoKTtcblx0XHRcdGNvbnN0IHNlYXJjaCA9IHRoaXMuYWN0aW9uLmdldFNlYXJjaCh0aGlzLnRvT3B0aW9ucygpLm1vZGVsTmFtZSk7XG5cdFx0XHR0aGlzLnRvT3B0aW9ucygpPy5yb3dNb2RlbFR5cGUgPT0gJ3NlcnZlclNpZGUnID8gdGhpcy5nZXRTZXJ2ZXJEYXRhKHNlYXJjaCkgOiB0aGlzLmdldENsaWVudERhdGEoc2VhcmNoKTtcblx0XHR9KTtcblx0fVxuXG5cdGdldFNlcnZlckRhdGEoc2VhcmNoPzogU2VhcmNoKSB7XG5cdFx0dGhpcy5ncmlkPy5hcGkuc2V0R3JpZE9wdGlvbignc2VydmVyU2lkZURhdGFzb3VyY2UnLCB7XG5cdFx0XHRnZXRSb3dzOiAocGFyYW1zKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHNlYXJjaFBybTogU2VhcmNoID0ge1xuXHRcdFx0XHRcdC4uLnRoaXMuc2VhcmNoUHJtKCksXG5cdFx0XHRcdFx0b2Zmc2V0OiBwYXJhbXMucmVxdWVzdC5zdGFydFJvdyxcblx0XHRcdFx0XHRjb2x1bW5GaWx0ZXJzOiBbLi4uKHRoaXMucmF3UHJtPy5jb2x1bW5GaWx0ZXJzIHx8IFtdKSwgLi4uKHNlYXJjaD8uY29sdW1uRmlsdGVycyB8fCBbXSldLFxuXHRcdFx0XHRcdHNvcnRzOiBzZWFyY2g/LnNvcnRzPy5sZW5ndGggPyBzZWFyY2guc29ydHMgOiB0aGlzLnJhd1BybT8uc29ydHM/Lmxlbmd0aCA/IHRoaXMucmF3UHJtLnNvcnRzIDogZGVmYXVsdFNvcnRzLFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRzZWFyY2hQcm0uY29sdW1uRmlsdGVycyA9IHRoaXMuaXNSYW5nZShzZWFyY2hQcm0uY29sdW1uRmlsdGVycyEpIGFzIENvbHVtbkZpbHRlcltdO1xuXHRcdFx0XHR0aGlzLmhhbmRsZVNlcnZlclRyZWUocGFyYW1zLCBzZWFyY2hQcm0pO1xuXHRcdFx0XHR0aGlzLnRvT3B0aW9ucygpXG5cdFx0XHRcdFx0LnNlcnZlckZ1bmM/LihzZWFyY2hQcm0pXG5cdFx0XHRcdFx0LnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuYWN0aW9uLnNldFBhZ2Uoe1xuXHRcdFx0XHRcdFx0XHRzdGFydFJvdzogcGFyYW1zLnJlcXVlc3Quc3RhcnRSb3csXG5cdFx0XHRcdFx0XHRcdGVuZFJvdzogcGFyYW1zLnJlcXVlc3QuZW5kUm93ISA8IHJlcy50b3RhbE51bSA/IHBhcmFtcy5yZXF1ZXN0LmVuZFJvdyA6IHJlcy50b3RhbE51bSxcblx0XHRcdFx0XHRcdFx0dG90YWw6IHJlcy50b3RhbE51bSxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0cGFyYW1zLnN1Y2Nlc3MoeyByb3dEYXRhOiByZXMuZGF0YSB8fCBbXSB9KTtcblx0XHRcdFx0XHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XG5cdFx0XHRcdFx0XHR0aGlzLmhhbmRsZVNlbGVjdGlvbnMocGFyYW1zLnJlcXVlc3Quc3RhcnRSb3cgfHwgMCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdH0pO1xuXHR9XG5cblx0aGFuZGxlU2VydmVyVHJlZShwYXJhbXM6IGFueSwgc2VhcmNoUHJtOiBTZWFyY2gpIHtcblx0XHRpZiAoIXRoaXMudG9PcHRpb25zKCkudHJlZURhdGEpIHJldHVybjtcblx0XHRpZiAocGFyYW1zLnJlcXVlc3QuZ3JvdXBLZXlzLmxlbmd0aCA+IDApIHtcblx0XHRcdHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzID0gc2VhcmNoUHJtLmNvbHVtbkZpbHRlcnM/LmZpbHRlcigoY29sdW1uRmlsdGVyKSA9PiBjb2x1bW5GaWx0ZXIuY29sdW1uRmllbGQgIT09ICdwaWQnKTtcblx0XHRcdHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzID0gW1xuXHRcdFx0XHQvLyAuLi4oc2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMgfHwgW10pLFxuXHRcdFx0XHR7IGNvbHVtbkZpZWxkOiAncGlkJywgdHlwZTogJ2VxJywgZml0ZXI6IHBhcmFtcy5yZXF1ZXN0Lmdyb3VwS2V5c1twYXJhbXMucmVxdWVzdC5ncm91cEtleXMubGVuZ3RoIC0gMV0gfSxcblx0XHRcdF07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICghc2VhcmNoUHJtLmNvbHVtbkZpbHRlcnM/LmZpbmQoKGNvbHVtbkZpbHRlcikgPT4gY29sdW1uRmlsdGVyLmNvbHVtbkZpZWxkID09PSAncGlkJykpIHtcblx0XHRcdFx0c2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMgPSBbLi4uKHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzIHx8IFtdKSwgeyBjb2x1bW5GaWVsZDogJ3BpZCcsIHR5cGU6ICdlcScsIGZpdGVyOiAwIH1dO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRzZWFyY2hQcm0ucHJlbG9hZHMgPSBbJ2NoaWxkcmVuJ107XG5cdH1cblxuXHRnZXRDbGllbnREYXRhKHNlYXJjaD86IFNlYXJjaCkge1xuXHRcdGNvbnN0IHNlYXJjaFBybTogU2VhcmNoID0ge1xuXHRcdFx0Li4udGhpcy5zZWFyY2hQcm0oKSxcblx0XHRcdGxpbWl0OiBDTElFTlRMSU1JVCxcblx0XHRcdGNvbHVtbkZpbHRlcnM6IFsuLi4odGhpcy5yYXdQcm0/LmNvbHVtbkZpbHRlcnMgfHwgW10pLCAuLi4oc2VhcmNoPy5jb2x1bW5GaWx0ZXJzIHx8IFtdKV0sXG5cdFx0XHRzb3J0czogc2VhcmNoPy5zb3J0cz8ubGVuZ3RoID8gc2VhcmNoLnNvcnRzIDogZGVmYXVsdFNvcnRzLFxuXHRcdH07XG5cdFx0c2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMgPSB0aGlzLmlzUmFuZ2Uoc2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMhKSBhcyBDb2x1bW5GaWx0ZXJbXTtcblx0XHR0aGlzLmhhbmRsZUNsaWVudFRyZWUoc2VhcmNoUHJtKTtcblx0XHR0aGlzLnRvT3B0aW9ucygpXG5cdFx0XHQuY2xpZW50RnVuYz8uKHNlYXJjaFBybSlcblx0XHRcdC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG5cdFx0XHRcdHRoaXMuYWN0aW9uLnNldFBhZ2Uoe1xuXHRcdFx0XHRcdHRvdGFsOiByZXMudG90YWxOdW0sXG5cdFx0XHRcdFx0bW9kZTogJ2NsaWVudCcsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLmdyaWQ/LmFwaS5zZXRHcmlkT3B0aW9uKCdyb3dEYXRhJywgcmVzLmRhdGEgfHwgW10pO1xuXHRcdFx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xuXHRcdFx0XHR0aGlzLmhhbmRsZVNlbGVjdGlvbnMoMCk7XG5cdFx0XHR9KTtcblx0fVxuXG5cdGhhbmRsZUNsaWVudFRyZWUoc2VhcmNoUHJtOiBTZWFyY2gpIHtcblx0XHRpZiAoIXRoaXMudG9PcHRpb25zKCkudHJlZURhdGEpIHJldHVybjtcblx0XHRjb25zdCBwcmVsb2FkczogYW55W10gPSBbXTtcblx0XHRmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMudG9PcHRpb25zKCkudHJlZUxldmVsITsgaSsrKSB7XG5cdFx0XHRwcmVsb2Fkcy5wdXNoKEFycmF5KGkpLmZpbGwoJ2NoaWxkcmVuJykuam9pbignLicpKTtcblx0XHR9XG5cdFx0c2VhcmNoUHJtLnByZWxvYWRzID0gcHJlbG9hZHM7XG5cdH1cblxuXHRjZWxsVmFsdWVDaGFuZ2VkKGU6IENlbGxWYWx1ZUNoYW5nZWRFdmVudCkge1xuXHRcdGxldCB7XG5cdFx0XHRjb2xEZWY6IHsgZmllbGQsIGhlYWRlck5hbWUsIGNlbGxFZGl0b3IsIGNlbGxFZGl0b3JQYXJhbXMgfSxcblx0XHRcdG5ld1ZhbHVlLFxuXHRcdFx0b2xkVmFsdWUsXG5cdFx0XHRyb3dJbmRleCxcblx0XHRcdGRhdGE6IHsgaWQgfSxcblx0XHR9ID0gZTtcblx0XHRjb25zb2xlLmxvZygnW+WNleWFg+agvOWAvOWPmOWMll0nLCBlKTtcblx0XHRpZiAoY2VsbEVkaXRvciA9PSAnYWdSaWNoU2VsZWN0Q2VsbEVkaXRvcicgJiYgY2VsbEVkaXRvclBhcmFtcyAmJiBjZWxsRWRpdG9yUGFyYW1zLm11bHRpU2VsZWN0KSB7XG5cdFx0XHRuZXdWYWx1ZSA9IG5ld1ZhbHVlICYmIG5ld1ZhbHVlLmxlbmd0aCA+IDAgPyBuZXdWYWx1ZS5qb2luKCcsJykgOiAnJztcblx0XHRcdHRoaXMucmljaE11bHRNYXBbZmllbGQhXSA9IG5ld1ZhbHVlO1xuXHRcdH1cblx0XHRpZiAoIWlkIHx8IGlkID09PSAwKSB7XG5cdFx0XHRpZCA9PT0gMCAmJiBkZWxldGUgZS5kYXRhLmlkO1xuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KHJvd0luZGV4ISwgT2JqZWN0LmFzc2lnbih7IC4uLmUuZGF0YSB9LCB0aGlzLnJpY2hNdWx0TWFwKSk7XG5cdFx0XHRpZiAoZmllbGQgPT0gdGhpcy5tYWluRmllbGQpIHtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KHJvd0luZGV4ISArIGZpZWxkISwgeyBuZXdWYWx1ZTogbmV3VmFsdWUsIGlkOiAwLCBsYWJlbDogaGVhZGVyTmFtZSB9KTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGlkKSB7XG5cdFx0XHRjb25zdCBmaWVsZHN0ciA9IGAke2ZpZWxkfWA7XG5cdFx0XHRsZXQgbzogYW55O1xuXHRcdFx0aWYgKHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmhhcyhyb3dJbmRleCEpKSB7XG5cdFx0XHRcdG8gPSB0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5nZXQocm93SW5kZXghKTtcblx0XHRcdFx0T2JqZWN0LmFzc2lnbihvLCB7IFtmaWVsZHN0cl06IG5ld1ZhbHVlIH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0byA9IHsgaWQ6IGlkLCBbZmllbGRzdHJdOiBuZXdWYWx1ZSB9O1xuXHRcdFx0fVxuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KHJvd0luZGV4ISwgbyk7XG5cdFx0XHRsZXQgb2xkID0gdGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZ2V0KHJvd0luZGV4ISArIGZpZWxkISk7XG5cdFx0XHRpZiAob2xkKSB7XG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChyb3dJbmRleCEgKyBmaWVsZCEsIHtcblx0XHRcdFx0XHRuZXdWYWx1ZTogbmV3VmFsdWUsXG5cdFx0XHRcdFx0b2xkVmFsdWU6IG9sZC5vbGRWYWx1ZSxcblx0XHRcdFx0XHRpZDogaWQsXG5cdFx0XHRcdFx0bGFiZWw6IGhlYWRlck5hbWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KHJvd0luZGV4ISArIGZpZWxkISwge1xuXHRcdFx0XHRcdG5ld1ZhbHVlOiBuZXdWYWx1ZSxcblx0XHRcdFx0XHRvbGRWYWx1ZTogb2xkVmFsdWUsXG5cdFx0XHRcdFx0aWQ6IGlkLFxuXHRcdFx0XHRcdGxhYmVsOiBoZWFkZXJOYW1lLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0bGV0IGR0OiBhbnlbXSA9IFtdO1xuXHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XG5cdFx0XHRkdC5wdXNoKHZhbHVlKTtcblx0XHR9KTtcblx0XHR0aGlzLnVwc2VydCgpWydzdWJzZXJ0J11bdGhpcy5zdWJJbmRleF1bJ3N1YkRhdGEnXSA9IGR0O1xuXHRcdHRoaXMuYWN0aW9uLnNhdmVTaWduYWwuc2V0KHRydWUpO1xuXHR9XG5cblx0aGFuZGxlQWRkZWRSb3dzKGFkZGVkUm93czogYW55W10pIHtcblx0XHRsZXQgaGVhZGVyTmFtZSA9ICcnO1xuXHRcdHRoaXMudG9PcHRpb25zKCkuY29sdW1uRGVmcz8uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG5cdFx0XHRpZiAoaXRlbS5maWVsZCA9PSB0aGlzLm1haW5GaWVsZCkge1xuXHRcdFx0XHRoZWFkZXJOYW1lID0gaXRlbS5oZWFkZXJOYW1lO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGlmICh0aGlzLmFkZFNvcnQoKSkge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coJ2FkZC0tLS0tJyx0aGlzLmFkZFNvcnQoKSlcblx0XHRcdC8vIGxldCBsb2cgPSBuZXcgTWFwKClcblx0XHRcdHRoaXMuc2VsZWN0RGF0YSgpIS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcblx0XHRcdFx0Y29uc3Qgcm93RGF0YSA9IHRoaXMuZ3JpZC5hcGkuZ2V0UmVuZGVyZWROb2RlcygpLm1hcCgobm9kZSkgPT4gbm9kZS5kYXRhKTtcblx0XHRcdFx0bGV0IGxhc3RJbmRleCA9IGZpbmRMYXN0SW5kZXgocm93RGF0YSwgKHY6IGFueSkgPT4gdlt0aGlzLmFkZFNvcnQoKSFdID09IGl0ZW1bdGhpcy5hZGRTb3J0KCkhXSwgdGhpcyk7XG5cdFx0XHRcdGxhc3RJbmRleCA9IGxhc3RJbmRleCA9PSAtMSA/IHJvd0RhdGEubGVuZ3RoIC0gMSA6IGxhc3RJbmRleDtcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gdGhpcy5ncmlkLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgYWRkSW5kZXg6IGxhc3RJbmRleCArIDEsIGFkZDogW2l0ZW1dIH0pO1xuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xuXHRcdFx0XHRcdGxldCBpbmRleCA9IGtleS5tYXRjaCgvXlxcZCsvKVswXTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnaW5kZXgtLS0tJywgaW5kZXgpO1xuXHRcdFx0XHRcdGNvbnN0IGluc2VydEluZGV4ID0gbGFzdEluZGV4ICsgMTtcblx0XHRcdFx0XHRpZiAoaW5kZXggPT0gaW5zZXJ0SW5kZXgpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHJlcGxhY2VJbmRleCA9IGluc2VydEluZGV4ICsgMTtcblx0XHRcdFx0XHRcdGxldCBuZXdLZXkgPSBrZXkucmVwbGFjZSgvXlxcZCsvLCByZXBsYWNlSW5kZXgpO1xuXHRcdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KG5ld0tleSwgdmFsdWUpO1xuXHRcdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZGVsZXRlKGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0bGV0IG1hcERhdGEgPSB0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5nZXQobGFzdEluZGV4ICsgMSk7XG5cdFx0XHRcdGlmIChtYXBEYXRhKSB7XG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZGVsZXRlKGxhc3RJbmRleCArIDEpO1xuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLnNldChsYXN0SW5kZXggKyAyLCBtYXBEYXRhKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXN1bHQhLmFkZC5mb3JFYWNoKChub2RlOiBhbnkpID0+IHtcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZygnbm9kZS0tLS0nLG5vZGUpXG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KG5vZGUucm93SW5kZXgsIG5vZGUuZGF0YSk7XG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KG5vZGUucm93SW5kZXghICsgdGhpcy5tYWluRmllbGQhLCB7XG5cdFx0XHRcdFx0XHRuZXdWYWx1ZTogbm9kZS5kYXRhW3RoaXMubWFpbkZpZWxkXSxcblx0XHRcdFx0XHRcdGlkOiAwLFxuXHRcdFx0XHRcdFx0bGFiZWw6IGhlYWRlck5hbWUsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygnbGFzdEluZGV4JyxsYXN0SW5kZXgpXG5cdFx0XHR9KTtcblx0XHRcdHRoaXMuZ3JpZC5hcGkucmVmcmVzaENlbGxzKHtcblx0XHRcdFx0Zm9yY2U6IHRydWUsIC8vIOW8uuWItuWIt+aWsFxuXHRcdFx0XHRzdXBwcmVzc0ZsYXNoOiB0cnVlLCAvLyDpgb/lhY3pl6rng4Fcblx0XHRcdH0pO1xuXHRcdFx0Ly8gdGhpcy51cHNlcnQoKSEuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10gPSBsb2dcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gdGhpcy5ncmlkLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgYWRkOiBhZGRlZFJvd3MgfSk7XG5cdFx0XHRyZXN1bHQhLmFkZC5mb3JFYWNoKChub2RlOiBhbnkpID0+IHtcblx0XHRcdFx0Y29uc3Qgcm93SW5kZXggPSB0aGlzLmdyaWQuYXBpLmdldFJvd05vZGUobm9kZS5pZCk/LnJvd0luZGV4O1xuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5zZXQocm93SW5kZXghLCBub2RlLmRhdGEpO1xuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5zZXQocm93SW5kZXghICsgdGhpcy5tYWluRmllbGQhLCB7XG5cdFx0XHRcdFx0bmV3VmFsdWU6IG5vZGUuZGF0YVt0aGlzLm1haW5GaWVsZF0sXG5cdFx0XHRcdFx0aWQ6IDAsXG5cdFx0XHRcdFx0bGFiZWw6IGhlYWRlck5hbWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGxldCBkdDogYW55W10gPSBbXTtcblx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xuXHRcdFx0ZHQucHVzaCh2YWx1ZSk7XG5cdFx0fSk7XG5cdFx0Ly8gY29uc29sZS5sb2coJ3Vwc2VydC0tLS0tJyx0aGlzLnVwc2VydCgpKVxuXHRcdHRoaXMudXBzZXJ0KClbJ3N1YnNlcnQnXVt0aGlzLnN1YkluZGV4XVsnc3ViRGF0YSddID0gZHQ7XG5cdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcblx0fVxuXG5cdGhhbmRsZURlbGV0ZWRSb3dzKGRlbGV0ZWRSb3dzOiBhbnlbXSkge1xuXHRcdGNvbnN0IHJlbW92ZUluZGV4ZXMgPSB0aGlzLmdyaWQuYXBpLmdldFNlbGVjdGVkTm9kZXMoKS5tYXAoKG5vZGUpID0+IG5vZGUucm93SW5kZXgpO1xuXHRcdHJlbW92ZUluZGV4ZXMuZm9yRWFjaCgocm93SW5kZXg6IGFueSkgPT4ge1xuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZGVsZXRlKHJvd0luZGV4ISk7XG5cdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5kZWxldGUocm93SW5kZXghICsgdGhpcy5tYWluRmllbGQhKTtcblx0XHR9KTtcblx0XHRsZXQgZHQ6IGFueVtdID0gW107XG5cdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcblx0XHRcdGR0LnB1c2godmFsdWUpO1xuXHRcdH0pO1xuXHRcdHRoaXMudXBzZXJ0KClbJ3N1YnNlcnQnXVt0aGlzLnN1YkluZGV4XVsnc3ViRGF0YSddID0gZHQ7XG5cdFx0dGhpcy5ncmlkLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgcmVtb3ZlOiBkZWxldGVkUm93cyB9KTtcblx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xuXHR9XG5cblx0c2VsZWN0Um93c0RlbGV0ZWQoZGVsZXRlZFJvd3M6IGFueVtdKSB7XG5cdFx0bGV0IGhlYWRlck5hbWUgPSAnJztcblx0XHR0aGlzLnRvT3B0aW9ucygpLmNvbHVtbkRlZnM/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuXHRcdFx0aWYgKGl0ZW0uZmllbGQgPT0gdGhpcy5tYWluRmllbGQpIHtcblx0XHRcdFx0aGVhZGVyTmFtZSA9IGl0ZW0uaGVhZGVyTmFtZTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRjb25zdCByZXN1bHQgPSB0aGlzLmdyaWQuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyByZW1vdmU6IGRlbGV0ZWRSb3dzIH0pO1xuXHRcdHJlc3VsdD8ucmVtb3ZlLmZvckVhY2goKG5vZGUpID0+IHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKCdub2RlLS0tJyxub2RlLnNvdXJjZVJvd0luZGV4KTtcblx0XHRcdGxldCBrZXkgPSBub2RlLnNvdXJjZVJvd0luZGV4ICsgdGhpcy5tYWluRmllbGQhO1xuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZGVsZXRlKGtleSk7XG5cdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5kZWxldGUobm9kZS5zb3VyY2VSb3dJbmRleCk7XG5cdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xuXHRcdFx0XHRpZiAoIXZhbHVlLmlkICYmIGtleSA+IG5vZGUuc291cmNlUm93SW5kZXgpIHtcblx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5kZWxldGUoa2V5KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xuXHRcdFx0XHRsZXQgaW5kZXggPSBrZXkubWF0Y2goL15cXGQrLylbMF07XG5cdFx0XHRcdGlmICghdmFsdWUuaWQgJiYgaW5kZXggPiBub2RlLnNvdXJjZVJvd0luZGV4KSB7XG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZGVsZXRlKGtleSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdHRoaXMuZ3JpZC5hcGkuZm9yRWFjaE5vZGUoKG5vZGU6IGFueSkgPT4ge1xuXHRcdFx0Y29uc3Qgcm93SW5kZXggPSBub2RlLnJvd0luZGV4O1xuXHRcdFx0aWYgKCFub2RlLmRhdGEuaWQpIHtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KHJvd0luZGV4ISwgbm9kZS5kYXRhKTtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KHJvd0luZGV4ISArIHRoaXMubWFpbkZpZWxkISwge1xuXHRcdFx0XHRcdG5ld1ZhbHVlOiBub2RlLmRhdGFbdGhpcy5tYWluRmllbGRdLFxuXHRcdFx0XHRcdGlkOiAwLFxuXHRcdFx0XHRcdGxhYmVsOiBoZWFkZXJOYW1lLFxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XG5cdFx0XHRcdFx0aWYgKHZhbHVlLmlkID09PSBub2RlLmRhdGEuaWQgJiYga2V5ICE9IHJvd0luZGV4KSB7XG5cdFx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5kZWxldGUoa2V5KTtcblx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLnNldChyb3dJbmRleCwgdmFsdWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XG5cdFx0XHRcdFx0aWYgKHZhbHVlLmlkID09IG5vZGUuZGF0YS5pZCkge1xuXHRcdFx0XHRcdFx0bGV0IGluZGV4ID0ga2V5Lm1hdGNoKC9eXFxkKy8pWzBdO1xuXHRcdFx0XHRcdFx0aWYgKGluZGV4ICE9IHJvd0luZGV4KSB7XG5cdFx0XHRcdFx0XHRcdGxldCBuZXdLZXkgPSBrZXkucmVwbGFjZSgvXlxcZCsvLCByb3dJbmRleCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmRlbGV0ZShrZXkpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5zZXQobmV3S2V5LCB2YWx1ZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRsZXQgZHQ6IGFueVtdID0gW107XG5cdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcblx0XHRcdGR0LnB1c2godmFsdWUpO1xuXHRcdH0pO1xuXHRcdHRoaXMudXBzZXJ0KClbJ3N1YnNlcnQnXVt0aGlzLnN1YkluZGV4XVsnc3ViRGF0YSddID0gZHQ7XG5cdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcblx0XHQvLyBjb25zb2xlLmxvZygncmVzdWx0LS0tLS0nLCB0aGlzLnVwc2VydCgpKVxuXHR9XG5cblx0Y2xlYXIoKSB7XG5cdFx0aWYgKHRoaXMudG9PcHRpb25zKCkucm93TW9kZWxUeXBlICE9PSAnc2VydmVyU2lkZScpIHtcblx0XHRcdHRoaXMuZ3JpZD8uYXBpLnNldEdyaWRPcHRpb24oJ3Jvd0RhdGEnLCBbXSk7XG5cdFx0fVxuXHRcdHRoaXMudXBzZXJ0KCkhLnN1YnNlcnRbdGhpcy5zdWJJbmRleF0gPSB7XG5cdFx0XHRzdWJNb2RlbE5hbWU6IHRoaXMudG9PcHRpb25zKCkubW9kZWxOYW1lLFxuXHRcdFx0Zms6IHRoaXMudG9PcHRpb25zKCkuZmssXG5cdFx0XHRzdWJEYXRhOiBbXSxcblx0XHRcdG1hcHRtcDogbmV3IE1hcCgpLFxuXHRcdFx0bG9ndG1wOiBuZXcgTWFwKCksXG5cdFx0XHRyZWZlcmVuY2U6IHRoaXMudG9PcHRpb25zKCkucmVmZXJlbmNlLFxuXHRcdH07XG5cdH1cblxuXHRhZGRSb3coKSB7XG5cdFx0aWYgKHRoaXMuYWRkVHlwZSgpID09ICdoYW5kbGUnKSB7XG5cdFx0XHRsZXQgaXRlbSA9IHR5cGVvZiB0aGlzLnRvT3B0aW9ucygpLmFkZERhdGFDYiA9PSAnZnVuY3Rpb24nID8gdGhpcy50b09wdGlvbnMoKS5hZGREYXRhQ2IoKSA6IHt9O1xuXHRcdFx0aWYgKHRoaXMuZ3JpZE9wdGlvbnMoKS5kcmFnU29ydCkge1xuXHRcdFx0XHRsZXQgdG90YWxDb3VudCA9IHRoaXMuZ3JpZC5hcGkuZ2V0RGlzcGxheWVkUm93Q291bnQoKTtcblx0XHRcdFx0aXRlbVt0aGlzLmdyaWRPcHRpb25zKCkuZHJhZ1NvcnQhXSA9IHRvdGFsQ291bnQgKyAxO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5hY3Rpb24udXBkYXRlR3JpZEFjdGlvbih7dHlwZTonYWRkJyxkYXRhOiBbaXRlbV19KVxuXHRcdFx0dGhpcy5ncmlkLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgYWRkOiBbaXRlbV0gfSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuYWRkRW1pdC5lbWl0KCk7XG5cdFx0fVxuXHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XG5cdH1cblxuXHRkZWxSb3dzKCkge1xuXHRcdGNvbnN0IHNlbGVjdGVkTm9kZXMgPSB0aGlzLmdyaWQuYXBpLmdldFNlbGVjdGVkTm9kZXMoKTtcblx0XHRjb25zdCBzZWxlY3RlZERhdGEgPSBzZWxlY3RlZE5vZGVzLm1hcCgobm9kZSkgPT4gbm9kZS5kYXRhKSB8fCBbXTtcblx0XHRsZXQgaWRzID0gc2VsZWN0ZWREYXRhLm1hcCgoZGF0YSkgPT4gZGF0YS5pZCkuZmlsdGVyKCh2KSA9PiB2KSB8fCBbXTtcblx0XHRpZiAoaWRzLmxlbmd0aCA+IDApIHtcblx0XHRcdHRoaXMuZGVsZXRlRW1pdC5lbWl0KGlkcyk7XG5cdFx0fSBlbHNlIGlmIChzZWxlY3RlZERhdGEubGVuZ3RoID4gMCAmJiBpZHMubGVuZ3RoID09IDApIHtcblx0XHRcdHRoaXMuaGFuZGxlRGVsZXRlZFJvd3Moc2VsZWN0ZWREYXRhKTtcblx0XHRcdHRoaXMuYWN0aW9uLnVwZGF0ZUdyaWRBY3Rpb24oe3R5cGU6J2RlbGV0ZScsZGF0YTogc2VsZWN0ZWREYXRhfSlcblx0XHR9XG5cdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcblx0fVxuXG5cdHNldFNjcm9sbEhlaWdodChoZWlnaHQ/OiBzdHJpbmcpIHtcblx0XHRpZiAod2luZG93LmlubmVyV2lkdGggPCAxMDI0ICYmIHRoaXMudG9PcHRpb25zKCkubWFpbkZpZWxkKSB7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQsICdtYXgtaGVpZ2h0Jyk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGhlaWdodCA9IGhlaWdodCB8fCB0aGlzLnRvT3B0aW9ucygpLnNjcm9sbEhlaWdodDtcblx0XHRpZiAoaGVpZ2h0KSB7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuY29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQsICdtYXgtaGVpZ2h0JywgaGVpZ2h0KTtcblx0XHR9XG5cdH1cblxuXHRpbml0R3JpZEhlaWdodCgpIHtcblx0XHR0aGlzLmhvcml6b250YWxTY3JvbGxCYXJPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuXHRcdFx0ZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuXHRcdFx0XHR0aGlzLmhvcml6b250YWxTY3JvbGxCYXJIZWlnaHQgPSBlbnRyeS50YXJnZXQuY2xpZW50SGVpZ2h0O1xuXHRcdFx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdFx0dGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFyT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWctYm9keS1ob3Jpem9udGFsLXNjcm9sbCcpKTtcblx0XHR0aGlzLnZlcnRpY2FsU2Nyb2xsQmFyT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcblx0XHRcdGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcblx0XHRcdFx0dGhpcy52ZXJ0aWNhbFNjcm9sbEJhcldpZHRoID0gZW50cnkudGFyZ2V0LmNsaWVudFdpZHRoO1xuXHRcdFx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdFx0dGhpcy52ZXJ0aWNhbFNjcm9sbEJhck9ic2VydmVyLm9ic2VydmUodGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFnLWJvZHktdmVydGljYWwtc2Nyb2xsJykpO1xuXHRcdHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsICcxMDAlJyk7XG5cdFx0dGhpcy5zZXRTY3JvbGxIZWlnaHQoKTtcblx0fVxuXG5cdGNhbGNHcmlkTWFyZ2luKCkge1xuXHRcdGNvbnN0IG1hcmdpbiA9IHRoaXMuc2hvd0FjdCgpICYmIHRoaXMuYXV0aExldmVsKCkgPj0gMyAmJiAodGhpcy5hZGRUeXBlKCkgIT0gJ25vbmUnIHx8IHRoaXMuc2hvd0RlbGV0ZSgpKSA/IDIgOiAxO1xuXHRcdGxldCBib3JkZXJCb3R0b20gPSAwO1xuXHRcdGlmICh0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWctcm9vdC13cmFwcGVyJykpIHtcblx0XHRcdGJvcmRlckJvdHRvbSA9IHBhcnNlRmxvYXQoXG5cdFx0XHRcdHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hZy1yb290LXdyYXBwZXInKSkuZ2V0UHJvcGVydHlWYWx1ZSgnYm9yZGVyLWJvdHRvbS13aWR0aCcpLFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIE1hdGgubWluKDIsIG1hcmdpbiArIGJvcmRlckJvdHRvbSk7XG5cdH1cblxuXHRnZXRDb250YWluZXJIZWlnaHQoKSB7XG5cdFx0bGV0IGNvbnRhaW5lciA9IDU0Njtcblx0XHRpZiAodGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFnLWNlbnRlci1jb2xzLWNvbnRhaW5lcicpKSB7XG5cdFx0XHRjb250YWluZXIgPSBwYXJzZUZsb2F0KFxuXHRcdFx0XHR3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWctY2VudGVyLWNvbHMtY29udGFpbmVyJykpLmdldFByb3BlcnR5VmFsdWUoJ2hlaWdodCcpLFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbnRhaW5lcjtcblx0fVxuXG5cdGFqdXN0R3JpZEhlaWdodCgpIHtcblx0XHRsZXQgY29udGFpbmVyID0gdGhpcy5nZXRDb250YWluZXJIZWlnaHQoKTtcblx0XHRsZXQgaGVhZGVySGVpZ2h0ID0gdGhpcy5ncmlkT3B0aW9ucygpLmhlYWRlckhlaWdodCA/PyA0OTtcblx0XHRsZXQgbWFyZ2luID0gdGhpcy5jYWxjR3JpZE1hcmdpbigpO1xuXHRcdGxldCB0b3RhbCA9IGNvbnRhaW5lciArIG1hcmdpbiArIGhlYWRlckhlaWdodDtcblx0XHRjb25zdCBoZWlnaHQgPSBNYXRoLm1heCh0b3RhbCwgaGVhZGVySGVpZ2h0ICsgNDIgKyBtYXJnaW4pO1xuXHRcdHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LCAnaGVpZ2h0JywgYCR7aGVpZ2h0ICsgdGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFySGVpZ2h0fXB4YCk7XG5cdFx0XHR0aGlzLmFqdXN0R3JpZFN0YXRlKCk7XG5cdFx0fSk7XG5cdH1cblxuXHRhanVzdEdyaWRTdGF0ZSgpIHtcblx0XHR0aGlzLm5vUm93cyA9IHRoaXMuZ3JpZC5hcGkuZ2V0RGlzcGxheWVkUm93Q291bnQoKSA9PT0gMDtcblx0XHR0aGlzLm5vUm93cyA/IHRoaXMuZ3JpZC5hcGkuc2hvd05vUm93c092ZXJsYXkoKSA6IHRoaXMuZ3JpZC5hcGkuaGlkZU92ZXJsYXkoKTtcblx0XHR0aGlzLnNob3dIb3Jpem9udGFsID0gdGhpcy5hY3RQb3MoKSA9PSAnYm90dG9tJyAmJiAodGhpcy5ub1Jvd3MgfHwgISF0aGlzLnZlcnRpY2FsU2Nyb2xsQmFyV2lkdGgpO1xuXHR9XG5cblx0Y2FuY2VsU2VsZWN0KCkge1xuXHRcdHRoaXMuZ2V0R3JpZCgpLmFwaS5kZXNlbGVjdEFsbCgpO1xuXHRcdHRoaXMuc2VsZWN0ZWRSb3dzLnNldChbXSk7XG5cdH1cblxuXHRlZGl0aW5nRml4KCkge1xuXHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50OiBhbnkpID0+IHtcblx0XHRcdGlmICghdGhpcy5ncmlkPy5hcGk/LmdldEVkaXRpbmdDZWxscygpPy5sZW5ndGgpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZ3JpZEVsZW1lbnQ6IGFueSA9IHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hZy1yb290LXdyYXBwZXInKTtcblx0XHRcdGlmICghZ3JpZEVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuXHRcdFx0XHR0aGlzLmdyaWQuYXBpLnN0b3BFZGl0aW5nKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0cm93RHJhZ0VudGVyKGV2ZW50OiBhbnkpIHtcblx0XHRjb25zb2xlLmxvZygnZXZlbnQtLS0nLCBldmVudCk7XG5cdFx0dGhpcy5kcmFnQmVmb3JlSW5kZXggPSBldmVudC5vdmVySW5kZXg7XG5cdH1cblxuXHRvblJvd0RyYWdFbmQoZXZlbnQ6IFJvd0RyYWdFbmRFdmVudCkge1xuXG5cdFx0aWYgKCF0aGlzLmdyaWRPcHRpb25zKCkuZHJhZ1NvcnQpIHJldHVybjtcblxuXHRcdGNvbnN0IHNvcnRGaWVsZCA9IHRoaXMuZ3JpZE9wdGlvbnMoKS5kcmFnU29ydCE7XG5cdFx0Y29uc3QgY29sRGVmcyA9IGV2ZW50LmFwaS5nZXRDb2x1bW5EZWZzKCk7XG5cdFx0Y29uc3QgY29sSXRlbTogYW55ID0gY29sRGVmcz8uZmluZCgodjogYW55KSA9PiB2LmZpZWxkID09PSBzb3J0RmllbGQpIHx8IHt9O1xuXG5cdFx0bGV0IG1hcCA9IG5ldyBNYXAoKTtcblx0XHRsZXQgbG9nTWFwID0gbmV3IE1hcCgpO1xuXHRcdGxldCBkdDogYW55W10gPSBbXTtcblxuXHRcdGNvbnN0IHVwc2VydCA9IHRoaXMudXBzZXJ0KCk7XG5cdFx0aWYgKCF1cHNlcnQpIHJldHVybjtcblxuXHRcdGNvbnN0IG1hcFRtcDogTWFwPGFueSwgYW55PiA9IHVwc2VydC5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXTtcblx0XHRjb25zdCBsb2dUbXA6IE1hcDxhbnksIGFueT4gPSB1cHNlcnQuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ107XG5cblx0XHR0aGlzLmdyaWQ/LmFwaS5mb3JFYWNoTm9kZSgobm9kZSwgaW5kZXgpID0+IHtcblxuXHRcdFx0Y29uc3QgaWQgPSBub2RlLmRhdGEuaWQ7XG5cdFx0XHRjb25zdCBuZXdTb3J0ID0gaW5kZXggKyAxO1xuXHRcdFx0Y29uc3Qgb2xkU29ydCA9IG5vZGUuZGF0YVtzb3J0RmllbGRdO1xuXHRcdFx0Ly8g5pu05pawIGdyaWQg5pWw5o2uXG5cdFx0XHRub2RlLmRhdGFbc29ydEZpZWxkXSA9IG5ld1NvcnQ7XG5cdFx0XHRub2RlLnNldERhdGFWYWx1ZShzb3J0RmllbGQsIG5ld1NvcnQpO1xuXHRcdFx0Ly8gY29uc29sZS5sb2coJ25vZGUtLS0tJywgbm9kZS5kYXRhLCBpbmRleCxuZXdTb3J0KTtcblx0XHRcdGlmICghaWQpIHtcblxuXHRcdFx0XHRtYXBUbXAuc2V0KGluZGV4LCB7XG5cdFx0XHRcdFx0Li4ubm9kZS5kYXRhLFxuXHRcdFx0XHRcdFtzb3J0RmllbGRdOiBuZXdTb3J0XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdG1hcC5zZXQoaW5kZXgsIHtcblx0XHRcdFx0XHRpZDogaWQsXG5cdFx0XHRcdFx0W3NvcnRGaWVsZF06IG5ld1NvcnRcblx0XHRcdFx0fSk7XG5cblx0XHRcdH1cblx0XHRcdGlmIChpZCkge1xuXHRcdFx0XHRjb25zdCBrZXkgPSBpZCArICdfJyArIHNvcnRGaWVsZDtcblx0XHRcdFx0bGV0IG9sZExvZyA9IGxvZ1RtcC5nZXQoa2V5KTtcblxuXHRcdFx0XHRpZiAob2xkTG9nKSB7XG5cdFx0XHRcdFx0b2xkTG9nLm5ld1ZhbHVlID0gbmV3U29ydDtcblx0XHRcdFx0XHRsb2dNYXAuc2V0KGtleSwgb2xkTG9nKTtcblxuXHRcdFx0XHR9IGVsc2UgaWYgKG9sZFNvcnQgIT09IG5ld1NvcnQpIHtcblx0XHRcdFx0XHRsb2dNYXAuc2V0KGtleSwge1xuXHRcdFx0XHRcdFx0aWQ6IGlkLFxuXHRcdFx0XHRcdFx0bGFiZWw6IGNvbEl0ZW1bJ2hlYWRlck5hbWUnXSB8fCAn5o6S5bqPJyxcblx0XHRcdFx0XHRcdG9sZFZhbHVlOiBvbGRTb3J0LFxuXHRcdFx0XHRcdFx0bmV3VmFsdWU6IG5ld1NvcnRcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHRpZiAodXBzZXJ0KSB7XG5cdFx0dXBzZXJ0LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddID1cblx0XHRcdFx0bmV3IE1hcChbLi4ubWFwVG1wLCAuLi5tYXBdKTtcblx0XHRcdHVwc2VydC5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXSA9XG5cdFx0XHRcdG5ldyBNYXAoWy4uLmxvZ1RtcCwgLi4ubG9nTWFwXSk7XG5cblx0XHRcdHVwc2VydC5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55KSA9PiB7XG5cdFx0XHRcdGR0LnB1c2godmFsdWUpO1xuXHRcdFx0fSk7XG5cblx0XHRcdHVwc2VydC5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydzdWJEYXRhJ10gPSBkdDtcblx0XHRcdGNvbnNvbGUubG9nKCdkcmFnVXBzZXJ0LS0tLScsIHVwc2VydCk7XG5cdFx0fVxuXHR9XG4vLyDml7bpl7TojIPlm7Tmt7vliqDml7bliIbnp5Jcblx0aXNSYW5nZShjb2x1bW5GaWx0ZXI6Q29sdW1uRmlsdGVyW10pe1xuXHRcdGNvbnN0IGlzRWl4c3QgPSBjb2x1bW5GaWx0ZXIuc29tZSgodjphbnkpID0+IHYudHlwZSA9PSAnaW5SYW5nZScpXG5cdFx0aWYoaXNFaXhzdCl7XG5cdFx0XHRsZXQgY29scyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29sdW1uRmlsdGVyKSlcblx0XHRcdGNvbHMuZm9yRWFjaCgoaXRlbTpDb2x1bW5GaWx0ZXIpID0+IHtcblx0XHRcdFx0aWYoaXRlbS50eXBlID09ICdpblJhbmdlJyl7XG5cdFx0XHRcdFx0aXRlbS5mcm9tID0gYCR7aXRlbS5mcm9tfSAwMDowMDowMGBcblx0XHRcdFx0XHRpdGVtLnRvID0gYCR7aXRlbS50b30gMjM6NTk6NTlgXG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHRyZXR1cm4gY29sc1xuXHRcdH1cblx0XHRyZXR1cm4gY29sdW1uRmlsdGVyXG5cdH1cbn1cbiIsIkBpZiAoaW5pdEdyaWQpIHtcblx0PGRpdlxuXHRcdCNncmlkQ29udGFpbmVyXG5cdFx0W2NsYXNzXT1cIlxuXHRcdFx0KHRvT3B0aW9ucygpLnRyZWVEYXRhRmllbGQgPyAndHJlZS1ncmlkICcgOiAnJykgK1xuXHRcdFx0J2dyaWQtY29udGFpbmVyIHctZnVsbCBmbGV4IGp1c3RpZnktYmV0d2VlbiAnICtcblx0XHRcdChhY3RQb3MoKSA9PSAnYm90dG9tJyA/ICdmbGV4LWNvbCcgOiAnZmxleC1jb2wtcmV2ZXJzZScpXG5cdFx0XCI+XG5cdFx0PGFnLWdyaWQtYW5ndWxhclxuXHRcdFx0W3RoZW1lXT1cIm15VGhlbWUoKVwiXG5cdFx0XHRbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCJcblx0XHRcdFtncmlkT3B0aW9uc109XCJ0b09wdGlvbnMoKVwiXG5cdFx0XHRbbG9jYWxlVGV4dF09XCJsb2NhbGVUZXh0XCJcblx0XHRcdFtjb21wb25lbnRzXT1cImNvbXBvbmVudHNcIlxuXHRcdFx0W3N1cHByZXNzRHJhZ0xlYXZlSGlkZXNDb2x1bW5zXT1cInRydWVcIlxuXHRcdFx0W3VuZG9SZWRvQ2VsbEVkaXRpbmddPVwidG9PcHRpb25zKCkudW5kb1JlZG9DZWxsRWRpdGluZ1wiXG5cdFx0XHRbdW5kb1JlZG9DZWxsRWRpdGluZ0xpbWl0XT1cInRvT3B0aW9ucygpLnVuZG9SZWRvQ2VsbEVkaXRpbmdMaW1pdFwiXG5cdFx0XHRbcm93QnVmZmVyXT1cIjMwXCJcblx0XHRcdChjZWxsVmFsdWVDaGFuZ2VkKT1cImNlbGxWYWx1ZUNoYW5nZWQoJGV2ZW50KVwiXG5cdFx0XHQoc2VsZWN0aW9uQ2hhbmdlZCk9XCJvblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG5cdFx0XHQocm93R3JvdXBPcGVuZWQpPVwib25Sb3dHcm91cE9wZW5lZCgpXCJcblx0XHRcdChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50KVwiXG5cdFx0XHQocm93RHJhZ0VuZCk9XCJvblJvd0RyYWdFbmQoJGV2ZW50KVwiXG5cdFx0XHQocm93RHJhZ0VudGVyKT1cInJvd0RyYWdFbnRlcigkZXZlbnQpXCIgLz5cblx0XHRAaWYgKHNob3dBY3QoKSAmJiBhdXRoTGV2ZWwoKSA+PSAzICYmIChhZGRUeXBlKCkgIT0gJ25vbmUnIHx8IHNob3dEZWxldGUoKSB8fCBzdWJTYXZlVmlzaWJsZSgpKSkge1xuXHRcdFx0QGlmIChzaG93SG9yaXpvbnRhbCkge1xuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwidy1mdWxsIGJvcmRlci10IGJvcmRlci1ncmF5LTMwMFwiPjwvZGl2PlxuXHRcdFx0fVxuXHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmQgcHktWzVweF0gcHItWzhweF1cIj5cblx0XHRcdFx0QGlmIChzdWJTYXZlVmlzaWJsZSgpKSB7XG5cdFx0XHRcdFx0PHAtYnV0dG9uXG5cdFx0XHRcdFx0XHRpY29uPVwicGkgcGktY2xvdWQtdXBsb2FkXCJcblx0XHRcdFx0XHRcdFt0ZXh0XT1cInRydWVcIlxuXHRcdFx0XHRcdFx0c2V2ZXJpdHk9XCJwcmltYXJ5XCJcblx0XHRcdFx0XHRcdFtkaXNhYmxlZF09XCJzdWJTYXZlRGlzYWJsZWQoKVwiXG5cdFx0XHRcdFx0XHQob25DbGljayk9XCJzdWJTYXZlRW1pdC5lbWl0KClcIiAvPlxuXHRcdFx0XHR9XG5cdFx0XHRcdEBpZiAoYWRkVHlwZSgpICE9ICdub25lJykge1xuXHRcdFx0XHRcdDxwLWJ1dHRvblxuXHRcdFx0XHRcdFx0aWNvbj1cInBpIHBpLXBsdXNcIlxuXHRcdFx0XHRcdFx0W3RleHRdPVwidHJ1ZVwiXG5cdFx0XHRcdFx0XHRzZXZlcml0eT1cInN1Y2Nlc3NcIlxuXHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImdyaWREaXNhYmxlKClcIlxuXHRcdFx0XHRcdFx0KG9uQ2xpY2spPVwiYWRkUm93KClcIiAvPlxuXHRcdFx0XHR9XG5cdFx0XHRcdEBpZiAoc2hvd0RlbGV0ZSgpKSB7XG5cdFx0XHRcdFx0PHAtYnV0dG9uXG5cdFx0XHRcdFx0XHRpY29uPVwicGkgcGktdHJhc2hcIlxuXHRcdFx0XHRcdFx0W3RleHRdPVwidHJ1ZVwiXG5cdFx0XHRcdFx0XHRzZXZlcml0eT1cImRhbmdlclwiXG5cdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiZ3JpZERpc2FibGUoKVwiXG5cdFx0XHRcdFx0XHQob25DbGljayk9XCJkZWxSb3dzKClcIiAvPlxuXHRcdFx0XHR9XG5cdFx0XHQ8L2Rpdj5cblx0XHR9XG5cdDwvZGl2PlxufVxuIl19
775
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbW0tZWxlbWVudC11aS9zcmMvbGliL2dyaWQvZ3JpZC9ncmlkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ltbS1lbGVtZW50LXVpL3NyYy9saWIvZ3JpZC9ncmlkL2dyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBd0IxRCxNQUFNLGFBQWEsR0FBZ0I7SUFDbEMsOEJBQThCO0lBQzlCLGFBQWEsRUFBRTtRQUNkLElBQUksRUFBRSxD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Q0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFBO1lBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFpQixFQUFFLEVBQUU7Z0JBQ2xDLElBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUMsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLFdBQVcsQ0FBQTtvQkFDbkMsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLFdBQVcsQ0FBQTtnQkFDaEMsQ0FBQztZQUNGLENBQUMsQ0FBQyxDQUFBO1lBQ0YsT0FBTyxJQUFJLENBQUE7UUFDWixDQUFDO1FBQ0QsT0FBTyxZQUFZLENBQUE7SUFDcEIsQ0FBQzsrR0E3d0JXLGFBQWE7bUdBQWIsYUFBYSxzMkVBQ2QsYUFBYSwwRUFDYixhQUFhLDJCQUFVLFVBQVUsNkhDMUY3QyxrOURBeURBLG8wQkQyQlcsYUFBYSxnMFRBQUUsWUFBWTs7NEZBSXpCLGFBQWE7a0JBUHpCLFNBQVM7K0JBQ0MsYUFBYSxjQUNYLElBQUksV0FDUCxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUM7a0ZBS1osSUFBSTtzQkFBN0IsU0FBUzt1QkFBQyxhQUFhO2dCQUN3QixPQUFPO3NCQUF0RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ2xCLFlBQVk7c0JBQXZDLFNBQVM7dUJBQUMsZUFBZTtnQkFvRDFCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRWaWV3Q2hpbGQsXG5cdEVsZW1lbnRSZWYsXG5cdGlucHV0LFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0Y29tcHV0ZWQsXG5cdHVudHJhY2tlZCxcblx0b3V0cHV0LFxuXHROZ1pvbmUsXG5cdFJlbmRlcmVyMixcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdEhvc3RMaXN0ZW5lcixcblx0c2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENlbGxWYWx1ZUNoYW5nZWRFdmVudCwgQ29sRGVmLCBHcmlkT3B0aW9ucyBhcyBSYXdHcmlkT3B0aW9ucywgUm93RHJhZ0VuZEV2ZW50IH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgQWdHcmlkQW5ndWxhciB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQgeyBUaGVtZUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RoZW1lQ29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBTZWFyY2gsQ29sdW1uRmlsdGVyIH0gZnJvbSAnLi4vLi4vYW0vYW0uY29tcG9uZW50JztcbmltcG9ydCB7IGdyaWRVdGlscyB9IGZyb20gJy4uL2dyaWQtdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBjb21wb25lbnRzLCBDTElFTlRMSU1JVCB9IGZyb20gJy4uL21vY2stZGF0YSc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JpZE9wdGlvbnMgZXh0ZW5kcyBSYXdHcmlkT3B0aW9ucyB7XG5cdHNlcnZlckZ1bmM/OiAoc2VhcmNoOiBTZWFyY2gpID0+IE9ic2VydmFibGU8YW55Pjtcblx0Y2xpZW50RnVuYz86IChzZWFyY2g6IFNlYXJjaCkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuXHRzaG93U2VhcmNoPzogYm9vbGVhbjtcblx0cHJlU2VhcmNoPzogU2VhcmNoO1xuXHR0cmVlRGF0YUZpZWxkPzogc3RyaW5nO1xuXHR0cmVlTGV2ZWw/OiBudW1iZXI7XG5cdGhlYWRlckhlaWdodD86IG51bWJlcjtcblx0c2Nyb2xsSGVpZ2h0Pzogc3RyaW5nO1xuXHRzaG93SW5kZXg/OiBib29sZWFuO1xuXHR1bmRvUmVkb0NlbGxFZGl0aW5nPzogYm9vbGVhbjtcblx0dW5kb1JlZG9DZWxsRWRpdGluZ0xpbWl0PzogbnVtYmVyO1xuXHRtYWluRmllbGQ/OiBzdHJpbmc7XG5cdG1vZGVsTmFtZT86IHN0cmluZztcblx0Zms/OiBzdHJpbmc7XG5cdGRyYWdTb3J0Pzogc3RyaW5nO1xuXHRzZWxlY3Rpb25Nb2RlPzogJ25vbmUnIHwgJ3NpbmdsZScgfCAnbXVsdGlwbGUnO1xuXHRkYXRhS2V5Pzogc3RyaW5nO1xuXHRyZWZlcmVuY2U/OiBzdHJpbmc7XG5cdGFkZERhdGFDYj86ICgpID0+IFJlY29yZDxzdHJpbmcsIGFueT5cbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbjogR3JpZE9wdGlvbnMgPSB7XG5cdC8vIHBvcHVwUGFyZW50OiBkb2N1bWVudC5ib2R5LFxuXHRkZWZhdWx0Q29sRGVmOiB7XG5cdFx0ZmxleDogMSxcblx0XHRtaW5XaWR0aDogMTAwLFxuXHRcdHNvcnRhYmxlOiBmYWxzZSxcblx0XHRmaWx0ZXI6IGZhbHNlLFxuXHR9LFxuXHRyb3dTZWxlY3Rpb246IHsgbW9kZTogJ211bHRpUm93JyB9LFxuXHRyb3dNb2RlbFR5cGU6ICdzZXJ2ZXJTaWRlJyxcblx0Y2VsbFNlbGVjdGlvbjoge1xuXHRcdGhhbmRsZToge1xuXHRcdFx0bW9kZTogJ3JhbmdlJyxcblx0XHR9LFxuXHR9LFxuXHRlbmFibGVDaGFydHM6IHRydWUsXG5cdHVuZG9SZWRvQ2VsbEVkaXRpbmc6IHRydWUsXG5cdHVuZG9SZWRvQ2VsbEVkaXRpbmdMaW1pdDogMjAsXG59O1xuXG5jb25zdCBkZWZhdWx0U29ydHMgPSBbeyBmaWVsZDogJ2NyZWF0ZWRBdCcsIGlzQXNjOiBmYWxzZSB9XTtcbmZ1bmN0aW9uIGZpbmRMYXN0SW5kZXgoYXJyYXk6IGFueVtdLCBwcmVkaWNhdGU6IGFueSwgdGhpc0FyZzogYW55KSB7XG5cdGZvciAobGV0IGkgPSBhcnJheS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdGlmIChwcmVkaWNhdGUuY2FsbCh0aGlzQXJnLCBhcnJheVtpXSwgaSwgYXJyYXkpKSB7XG5cdFx0XHRyZXR1cm4gaTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIC0xO1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdjdXN0b20tZ3JpZCcsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtBZ0dyaWRBbmd1bGFyLCBCdXR0b25Nb2R1bGVdLFxuXHR0ZW1wbGF0ZVVybDogJy4vZ3JpZC5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsOiAnLi9ncmlkLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgR3JpZENvbXBvbmVudCB7XG5cdEBWaWV3Q2hpbGQoQWdHcmlkQW5ndWxhcikgZ3JpZCE6IEFnR3JpZEFuZ3VsYXI7XG5cdEBWaWV3Q2hpbGQoQWdHcmlkQW5ndWxhciwgeyByZWFkOiBFbGVtZW50UmVmIH0pIGdyaWRSZWYhOiBFbGVtZW50UmVmO1xuXHRAVmlld0NoaWxkKCdncmlkQ29udGFpbmVyJykgY29udGFpbmVyUmVmITogRWxlbWVudFJlZjtcblx0Z3JpZE9wdGlvbnMgPSBpbnB1dDxHcmlkT3B0aW9ucz4oe30pO1xuXHRzZWxlY3Rpb25LZXlzID0gaW5wdXQ8YW55W10+KFtdKTtcblx0dG9PcHRpb25zID0gY29tcHV0ZWQoKCkgPT5cblx0XHRncmlkVXRpbHMubWVyZ2VPcHRpb25zKHsgLi4uZGVmYXVsdE9wdGlvbiwgLi4udGhpcy5ncmlkT3B0aW9ucygpIH0sIHVudHJhY2tlZCgoKSA9PiB0aGlzLnNlYXJjaFBybSgpKS5saW1pdCwgdGhpcy5hY3Rpb24pLFxuXHQpO1xuXHR0aGVtZUNvbmZpZyA9IGluamVjdChUaGVtZUNvbmZpZ1NlcnZpY2UpO1xuXHRsb2NhbGVUZXh0OiBhbnk7XG5cdGkxOG5TZXJ2aWNlID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblx0bXlUaGVtZSA9IGNvbXB1dGVkKCgpID0+IGdyaWRVdGlscy5nZXRUaGVtZSh0aGlzLnRoZW1lQ29uZmlnKSk7XG5cdGNvbXBvbmVudHMgPSBjb21wb25lbnRzO1xuXHRjb2x1bW5EZWZzOiBDb2xEZWZbXSA9IFtdO1xuXHRpbml0R3JpZCA9IHRydWU7XG5cdGNvbnRlbnRNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblx0bWFpbkZpZWxkITogc3RyaW5nO1xuXHRtb2RlbE5hbWUhOiBzdHJpbmc7XG5cdHVwc2VydCA9IGlucHV0PGFueT4oKTtcblx0c3ViSW5kZXghOiBudW1iZXI7XG5cdHJvd0RhdGEgPSBpbnB1dDxhbnk+KHVuZGVmaW5lZCk7XG5cdHNlYXJjaFBybSA9IGlucHV0PFNlYXJjaD4oe30pO1xuXHRyYXdQcm0/OiBTZWFyY2g7XG5cdGRlbGV0ZUVtaXQgPSBvdXRwdXQ8bnVtYmVyW10+KCk7XG5cdGFkZEVtaXQgPSBvdXRwdXQoKTtcblx0YWRkVHlwZSA9IGlucHV0PCdoYW5kbGUnIHwgJ3NlbGVjdCcgfCAnbm9uZSc+KCk7XG5cdHNlbGVjdERhdGEgPSBpbnB1dDxhbnlbXT4oKTtcblx0c2hvd0FjdCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXHRhY3RQb3MgPSBpbnB1dDwndG9wJyB8ICdib3R0b20nPignYm90dG9tJyk7XG5cdGF1dGhMZXZlbCA9IGlucHV0PG51bWJlcj4oLTEpO1xuXHRodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXHRyZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuXHRuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblx0Y2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblx0c2hvd0RlbGV0ZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXHRncmlkRGlzYWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblx0YWRkU29ydCA9IGlucHV0PHN0cmluZz4oKTtcblx0c3ViU2F2ZVZpc2libGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cdHN1YlNhdmVMYWJlbCA9IGlucHV0PHN0cmluZz4oJ+S/neWtmCcpO1xuXHRzdWJTYXZlRGlzYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cdHN1YlNhdmVFbWl0ID0gb3V0cHV0KCk7XG5cblx0cmljaE11bHRNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblx0aG9yaXpvbnRhbFNjcm9sbEJhck9ic2VydmVyOiBhbnk7XG5cdGhvcml6b250YWxTY3JvbGxCYXJIZWlnaHQgPSAwO1xuXHR2ZXJ0aWNhbFNjcm9sbEJhck9ic2VydmVyOiBhbnk7XG5cdHZlcnRpY2FsU2Nyb2xsQmFyV2lkdGggPSAwO1xuXHRncmlkSGVpZ2h0ID0gMDtcblx0c2VsZWN0ZWRSb3dzID0gc2lnbmFsPGFueVtdPihbXSk7XG5cdG5vUm93cyA9IHRydWU7XG5cdHNob3dIb3Jpem9udGFsID0gZmFsc2U7XG5cdGRyYWdCZWZvcmVJbmRleCA9IC0xO1xuXHRwcml2YXRlIHNlYXJjaFBybVN1YjogYW55O1xuXHRASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcblx0b25SZXNpemUoKSB7XG5cdFx0dGhpcy5zZXRTY3JvbGxIZWlnaHQoKTtcblx0fVxuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aW9uOiBBY3Rpb25TZXJ2aWNlKSB7XG5cdFx0dGhpcy5zZWFyY2hQcm1TdWIgPSB0b09ic2VydmFibGUodGhpcy5zZWFyY2hQcm0pLnN1YnNjcmliZSgoc2VhcmNoUHJtKSA9PiB7XG5cdFx0XHRpZiAoc2VhcmNoUHJtLm1vZGVsTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHRoaXMucmF3UHJtID0gc2VhcmNoUHJtO1xuXHRcdFx0XHR0aGlzLnNlYXJjaFBybVN1Yi51bnN1YnNjcmliZSgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGVmZmVjdChcblx0XHRcdGFzeW5jICgpID0+IHtcblx0XHRcdFx0dGhpcy5jb2x1bW5EZWZzID0gYXdhaXQgdGhpcy5zZXRSaWNoVmFsdWUoKTtcblx0XHRcdFx0dGhpcy5jb2x1bW5EZWZzID0gZ3JpZFV0aWxzLmhhbmRsZUkxOG5LZXkodGhpcy50b09wdGlvbnMoKS5jb2x1bW5EZWZzISB8fCBbXSwgdGhpcy5pMThuU2VydmljZSk7XG5cdFx0XHRcdHRoaXMubWFpbkZpZWxkID0gdGhpcy50b09wdGlvbnMoKS5tYWluRmllbGQhO1xuXHRcdFx0XHR0aGlzLm1vZGVsTmFtZSA9IHRoaXMudG9PcHRpb25zKCkubW9kZWxOYW1lITtcblx0XHRcdFx0aWYgKCF0aGlzLnVwc2VydCgpPy5zdWJzZXJ0Py5maW5kKCh2OiBhbnkpID0+IHYuc3ViTW9kZWxOYW1lID09PSB0aGlzLm1vZGVsTmFtZSkpIHtcblx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0Py5wdXNoKHtcblx0XHRcdFx0XHRcdHN1Yk1vZGVsTmFtZTogdGhpcy50b09wdGlvbnMoKS5tb2RlbE5hbWUsXG5cdFx0XHRcdFx0XHRmazogdGhpcy50b09wdGlvbnMoKS5mayxcblx0XHRcdFx0XHRcdHN1YkRhdGE6IFtdLFxuXHRcdFx0XHRcdFx0bWFwdG1wOiBuZXcgTWFwKCksXG5cdFx0XHRcdFx0XHRsb2d0bXA6IG5ldyBNYXAoKSxcblx0XHRcdFx0XHRcdHJlZmVyZW5jZTogdGhpcy50b09wdGlvbnMoKS5yZWZlcmVuY2UsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5zdWJJbmRleCA9IHRoaXMudXBzZXJ0KCk/LnN1YnNlcnQ/LmZpbmRJbmRleCgodjogYW55KSA9PiB2LnN1Yk1vZGVsTmFtZSA9PT0gdGhpcy5tb2RlbE5hbWUpO1xuXHRcdFx0fSxcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcblx0XHQpO1xuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLmFjdGlvbi5zZWFyY2hNb25pdG9yKHRoaXMudG9PcHRpb25zKCkubW9kZWxOYW1lKSkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmdldERhdGEoKTtcblx0XHRcdH0sXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG5cdFx0KTtcblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0aWYgKHRoaXMucm93RGF0YSgpID09PSB1bmRlZmluZWQpIHJldHVybjtcblx0XHRcdHVudHJhY2tlZCgoKSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLnRvT3B0aW9ucygpLnJvd01vZGVsVHlwZSA9PT0gJ3NlcnZlclNpZGUnICYmIHRoaXMudG9PcHRpb25zKCkuc2VydmVyRnVuYykge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLnRvT3B0aW9ucygpLnJvd01vZGVsVHlwZSA9ICdjbGllbnRTaWRlJztcblx0XHRcdFx0dGhpcy50b09wdGlvbnMoKS5jbGllbnRGdW5jID0gKCkgPT4gb2YoeyBkYXRhOiB0aGlzLnJvd0RhdGEoKSwgdG90YWxOdW06IHRoaXMucm93RGF0YSgpPy5sZW5ndGggfSk7XG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuZ2V0Q2xpZW50RGF0YSh1bmRlZmluZWQpO1xuXHRcdFx0XHR9LCAxMDApO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRpZiAodGhpcy5zZWxlY3REYXRhKCkgJiYgdGhpcy5zZWxlY3REYXRhKCkhLmxlbmd0aCA+IDAgJiYgdGhpcy5ncmlkKSB7XG5cdFx0XHRcdFx0dGhpcy5oYW5kbGVBZGRlZFJvd3ModGhpcy5zZWxlY3REYXRhKCkhKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcblx0XHQpO1xuXHRcdGVmZmVjdChcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0dGhpcy50b09wdGlvbnMoKS5wcmVTZWFyY2ggJiZcblx0XHRcdFx0XHR0aGlzLmFjdGlvbi5zZXRTZWFyY2goeyBjb2x1bW5GaWx0ZXJzOiB0aGlzLnRvT3B0aW9ucygpLnByZVNlYXJjaCEuY29sdW1uRmlsdGVycyB9LCB0aGlzLnRvT3B0aW9ucygpLm1vZGVsTmFtZSk7XG5cdFx0XHR9LFxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuXHRcdCk7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRjb25zdCBhY3Rpb24gPSB0aGlzLmFjdGlvbi5nZXRBY3Rpb24oKTtcblx0XHRcdFx0aWYgKGFjdGlvbj8udHlwZSA9PT0gJ2V4cG9ydCcpIHtcblx0XHRcdFx0XHR0aGlzLmdyaWQuYXBpLmV4cG9ydERhdGFBc0V4Y2VsKHsgZmlsZU5hbWU6IHRoaXMubW9kZWxOYW1lIH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuXHRcdCk7XG5cdFx0dGhpcy5lZGl0aW5nRml4KCk7XG5cdH1cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLmkxOG5TZXJ2aWNlLmNoYW5nZS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuXHRcdFx0dGhpcy5ncmlkICYmIHRoaXMuZ3JpZC5hcGkuZGVzdHJveSgpO1xuXHRcdFx0dGhpcy5pbml0R3JpZCA9IGZhbHNlO1xuXHRcdFx0dGhpcy5sb2NhbGVUZXh0ID0gZ3JpZFV0aWxzLmdldExvY2FsVGV4dChyZXMpO1xuXHRcdFx0dGhpcy5jb2x1bW5EZWZzID0gZ3JpZFV0aWxzLmhhbmRsZUkxOG5LZXkodGhpcy50b09wdGlvbnMoKS5jb2x1bW5EZWZzISwgdGhpcy5pMThuU2VydmljZSk7XG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0dGhpcy5pbml0R3JpZCA9IHRydWU7XG5cdFx0XHR9LCAxMDApO1xuXHRcdH0pO1xuXHRcdHRoaXMubG9jYWxlVGV4dCA9IGdyaWRVdGlscy5nZXRMb2NhbFRleHQodGhpcy5pMThuU2VydmljZS5jdXJyZW50TGFuZyk7XG5cdH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKSB7fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuc2VhcmNoUHJtU3ViPy51bnN1YnNjcmliZSgpO1xuXHRcdGlmICh0aGlzLmhvcml6b250YWxTY3JvbGxCYXJPYnNlcnZlcikge1xuXHRcdFx0dGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFyT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuXHRcdH1cblx0XHRpZiAodGhpcy52ZXJ0aWNhbFNjcm9sbEJhck9ic2VydmVyKSB7XG5cdFx0XHR0aGlzLnZlcnRpY2FsU2Nyb2xsQmFyT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuXHRcdH1cblx0fVxuXG5cdGdldEdyaWQoKTogQWdHcmlkQW5ndWxhciB7XG5cdFx0cmV0dXJuIHRoaXMuZ3JpZDtcblx0fVxuXG5cdG9uR3JpZFJlYWR5KGU6IGFueSkge1xuXHRcdHRoaXMuaW5pdEdyaWRIZWlnaHQoKTtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMuZ2V0RGF0YSgpO1xuXHRcdH0sIDEwMCk7XG5cdH1cblxuXHRvblNlbGVjdGlvbkNoYW5nZWQoZXZlbnQ6IGFueSk6IGFueSB7XG5cdFx0dGhpcy5zZWxlY3RlZFJvd3Muc2V0KGdyaWRVdGlscy5jYWxjUm93SWRzKGV2ZW50LmFwaSwgdGhpcy50b09wdGlvbnMoKT8ucm93TW9kZWxUeXBlID09ICdzZXJ2ZXJTaWRlJykpO1xuXHR9XG5cblx0b25Sb3dHcm91cE9wZW5lZCgpIHtcblx0XHR0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG5cdFx0XHRyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRhc3luYyBzZXRSaWNoVmFsdWUoKSB7XG5cdFx0bGV0IGNvbCA9IHRoaXMudG9PcHRpb25zKCkuY29sdW1uRGVmcyEgfHwgW107XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHByb2Nlc3NlZENvbHMgPSBhd2FpdCBQcm9taXNlLmFsbChcblx0XHRcdFx0Y29sLm1hcChhc3luYyAoaXRlbTogYW55KSA9PiB7XG5cdFx0XHRcdFx0aWYgKGl0ZW0uaGFzT3duUHJvcGVydHkoJ2ZpZWxkSWQnKSAmJiAoaXRlbS5jZWxsRWRpdG9yID09ICdhZ1JpY2hTZWxlY3RDZWxsRWRpdG9yJyB8fCBpdGVtLmNlbGxFZGl0b3IgPT0gJ2FnU2VsZWN0Q2VsbEVkaXRvcicgfHwgaXRlbS5jZWxsRWRpdG9yID09ICdjZWxsRWRpdFNlbGVjdEZpZWxkQ29tcG9uZW50JykpIHtcblx0XHRcdFx0XHRcdGxldCB2YWx1ZXM6IGFueSA9IFtdO1xuXHRcdFx0XHRcdFx0aWYgKGl0ZW0uY2VsbEVkaXRvclBhcmFtcyAmJiB0eXBlb2YgaXRlbS5jZWxsRWRpdG9yUGFyYW1zID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0XHRcdGl0ZW0uY2VsbEVkaXRvclBhcmFtcyA9IGl0ZW0uY2VsbEVkaXRvclBhcmFtcygpIHx8IHt9O1xuXHRcdFx0XHRcdFx0XHR2YWx1ZXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGl0ZW0uY2VsbEVkaXRvclBhcmFtcy52YWx1ZXMgfHwgW10pKSB8fCBbXTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmICgoIWl0ZW0uY2VsbEVkaXRvclBhcmFtcyB8fCAhaXRlbS5jZWxsRWRpdG9yUGFyYW1zLmhhc093blByb3BlcnR5KCd2YWx1ZXMnKSkgJiYgaXRlbS5oYXNPd25Qcm9wZXJ0eSgnc2VsZWN0RGF0YScpICYmIHR5cGVvZiBpdGVtLnNlbGVjdERhdGEgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHRcdFx0dmFsdWVzID0gYXdhaXQgaXRlbS5zZWxlY3REYXRhKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpdGVtLmNlbGxFZGl0b3JQYXJhbXMgPSB7XG5cdFx0XHRcdFx0XHRcdC4uLihpdGVtLmNlbGxFZGl0b3JQYXJhbXMgfHwge30pLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZUxpc3RNYXhIZWlnaHQ6IDIwMCxcblx0XHRcdFx0XHRcdFx0c3VwcHJlc3NNdWx0aVNlbGVjdFBpbGxSZW5kZXJlcjogdHJ1ZSxcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRpZiAoaXRlbS5jZWxsRWRpdG9yUGFyYW1zLmhhc093blByb3BlcnR5KCd2YWx1ZXMnKSkge1xuXHRcdFx0XHRcdFx0XHR2YWx1ZXMgPSBpdGVtLmNlbGxFZGl0b3JQYXJhbXMudmFsdWVzO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0bGV0IGlzU3RyaW5nID0gdmFsdWVzLmV2ZXJ5KChpdGVtOiBhbnkpID0+IHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyk7XG5cdFx0XHRcdFx0XHRpZiAoIWlzU3RyaW5nKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvblZhbHVlRmllbGQgPSBpdGVtLmNlbGxFZGl0b3JQYXJhbXMub3B0aW9uVmFsdWUgfHwgJ3ZhbHVlJztcblx0XHRcdFx0XHRcdFx0Y29uc3Qgb3B0aW9uTGFiZWxGaWVsZCA9IGl0ZW0uY2VsbEVkaXRvclBhcmFtcy5vcHRpb25MYWJlbCB8fCAnbGFiZWwnO1xuXHRcdFx0XHRcdFx0XHRpdGVtLmNlbGxFZGl0b3JQYXJhbXMucmF3T3B0aW9ucyA9IHZhbHVlcztcblx0XHRcdFx0XHRcdFx0aXRlbS5jZWxsRWRpdG9yUGFyYW1zLnZhbHVlcyA9IHZhbHVlcy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbT8uW29wdGlvblZhbHVlRmllbGRdKTtcblx0XHRcdFx0XHRcdFx0aXRlbS52YWx1ZUZvcm1hdHRlciA9IChwYXJhbXM6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9wdGlvbnMgPSBwYXJhbXMuY29sRGVmLmNlbGxFZGl0b3JQYXJhbXMucmF3T3B0aW9ucyBhcyBhbnlbXTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCB2YWx1ZUZpZWxkID0gcGFyYW1zLmNvbERlZi5jZWxsRWRpdG9yUGFyYW1zLm9wdGlvblZhbHVlIHx8ICd2YWx1ZSc7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbGFiZWxGaWVsZCA9IHBhcmFtcy5jb2xEZWYuY2VsbEVkaXRvclBhcmFtcy5vcHRpb25MYWJlbCB8fCAnbGFiZWwnO1xuXHRcdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgcGFyYW1zLnZhbHVlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb3B0aW9uID0gb3B0aW9ucy5maW5kKChvcHQpID0+IG9wdD8uW3ZhbHVlRmllbGRdID09IHBhcmFtcy52YWx1ZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gb3B0aW9uID8gb3B0aW9uPy5bbGFiZWxGaWVsZF0gOiBwYXJhbXMudmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCB2YWx1ZXM6IGFueSA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbXMudmFsdWUgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChwYXJhbXMudmFsdWUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlcyA9IHBhcmFtcy52YWx1ZS5zcGxpdCgnLCcpLm1hcCgodjogYW55KSA9PiAoIWlzTmFOKHYpID8gTnVtYmVyKHYpIDogdikpIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZXMgPSBwYXJhbXMudmFsdWUgfHwgW107XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBvcHRpb24gPSBvcHRpb25zLmZpbHRlcigob3B0KSA9PiB2YWx1ZXMuaW5jbHVkZXMob3B0Py5bdmFsdWVGaWVsZF0pKSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBvcHRpb24ubGVuZ3RoID4gMCA/IG9wdGlvbi5tYXAoKHYpID0+IHY/LltsYWJlbEZpZWxkXSkgOiBwYXJhbXMudmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0XHRpdGVtLnZhbHVlR2V0dGVyID0gKHBhcmFtczogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ3BhbXJhbXMtLS0tJyxwYXJhbXMsaXRlbS5maWVsZClcblx0XHRcdFx0XHRcdFx0XHRpZiAoKGl0ZW0uY2VsbEVkaXRvciA9PSAnYWdSaWNoU2VsZWN0Q2VsbEVkaXRvcicgfHwgaXRlbS5jZWxsRWRpdG9yID09ICdjZWxsRWRpdFNlbGVjdEZpZWxkQ29tcG9uZW50JykgJiYgcGFyYW1zLmRhdGEuaGFzT3duUHJvcGVydHkoaXRlbS5maWVsZCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0eXBlb2YgcGFyYW1zLmRhdGFbaXRlbS5maWVsZF0gPT0gJ3N0cmluZycgPyBwYXJhbXMuZGF0YVtpdGVtLmZpZWxkXS5zcGxpdCgnLCcpIDogcGFyYW1zLmRhdGFbaXRlbS5maWVsZF07XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBwYXJhbXMuZGF0YVtpdGVtLmZpZWxkXTtcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdFx0aXRlbS52YWx1ZVBhcnNlciA9IChwYXJhbXM6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdwYXJhbXMtLS0tJyxwYXJhbXMpXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb3B0aW9ucyA9IHBhcmFtcy5jb2xEZWYuY2VsbEVkaXRvclBhcmFtcy5yYXdPcHRpb25zIGFzIGFueVtdO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHZhbHVlRmllbGQgPSBwYXJhbXMuY29sRGVmLmNlbGxFZGl0b3JQYXJhbXMub3B0aW9uVmFsdWUgfHwgJ3ZhbHVlJztcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBsYWJlbEZpZWxkID0gcGFyYW1zLmNvbERlZi5jZWxsRWRpdG9yUGFyYW1zLm9wdGlvbkxhYmVsIHx8ICdsYWJlbCc7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb3B0aW9uID0gb3B0aW9ucy5maW5kKChvcHQpID0+IG9wdD8uW2xhYmVsRmllbGRdID09PSBwYXJhbXMubmV3VmFsdWUpO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBvcHRpb24gPyBvcHRpb24/Llt2YWx1ZUZpZWxkXSA6IHBhcmFtcy5uZXdWYWx1ZTtcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGl0ZW0uY2VsbEVkaXRvclBhcmFtcy52YWx1ZXMgPSB2YWx1ZXM7XG5cdFx0XHRcdFx0XHRcdGl0ZW0udmFsdWVHZXR0ZXIgPSAocGFyYW1zOiBhbnkpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoKGl0ZW0uY2VsbEVkaXRvciA9PSAnYWdSaWNoU2VsZWN0Q2VsbEVkaXRvcicgfHwgaXRlbS5jZWxsRWRpdG9yID09ICdjZWxsRWRpdFNlbGVjdEZpZWxkQ29tcG9uZW50JykgJiYgcGFyYW1zLmRhdGEuaGFzT3duUHJvcGVydHkoaXRlbS5maWVsZCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB0eXBlb2YgcGFyYW1zLmRhdGFbaXRlbS5maWVsZF0gPT0gJ3N0cmluZycgPyBwYXJhbXMuZGF0YVtpdGVtLmZpZWxkXS5zcGxpdCgnLCcpIDogcGFyYW1zLmRhdGFbaXRlbS5maWVsZF07XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBwYXJhbXMuZGF0YVtpdGVtLmZpZWxkXTtcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0XHRcdH0pLFxuXHRcdFx0KTtcblx0XHRcdHJldHVybiBwcm9jZXNzZWRDb2xzO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBwcm9jZXNzaW5nIGNvbHVtbnM6JywgZXJyb3IpO1xuXHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0fVxuXHR9XG5cblx0Z2V0RW51bXMoaWQ6IG51bWJlcikge1xuXHRcdHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wb3N0KCdnZXQnLCB7IGlkOiBOdW1iZXIoaWQpLCBtb2RlbE5hbWU6ICdNb2RlbEZpZWxkJywgcHJlbG9hZHM6IFsnRW51bSddIH0pKTtcblx0fVxuXG5cdGhhbmRsZVNlbGVjdGlvbnMoc3RhcnRSb3c6IG51bWJlcikge1xuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0aWYgKHRoaXMuc2VsZWN0aW9uS2V5cygpPy5sZW5ndGgpIHtcblx0XHRcdFx0Z3JpZFV0aWxzLnNlbGVjdGlvbkhhbmRsZXIodGhpcy5ncmlkLmFwaSwgdGhpcy5zZWxlY3Rpb25LZXlzKCksIHN0YXJ0Um93LCB0aGlzLnRvT3B0aW9ucygpPy5kYXRhS2V5KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdGdldERhdGEoKSB7XG5cdFx0dW50cmFja2VkKCgpID0+IHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKCd0aGlzLnRvT3B0aW9ucygpJyx0aGlzLnRvT3B0aW9ucygpKVxuXHRcdFx0aWYgKCF0aGlzLnNlYXJjaFBybSgpLm1vZGVsTmFtZSAmJiAhdGhpcy5yb3dEYXRhKCkpIHJldHVybjtcblx0XHRcdHRoaXMuY2FuY2VsU2VsZWN0KCk7XG5cdFx0XHRjb25zdCBzZWFyY2ggPSB0aGlzLmFjdGlvbi5nZXRTZWFyY2godGhpcy50b09wdGlvbnMoKS5tb2RlbE5hbWUpO1xuXHRcdFx0dGhpcy50b09wdGlvbnMoKT8ucm93TW9kZWxUeXBlID09ICdzZXJ2ZXJTaWRlJyA/IHRoaXMuZ2V0U2VydmVyRGF0YShzZWFyY2gpIDogdGhpcy5nZXRDbGllbnREYXRhKHNlYXJjaCk7XG5cdFx0fSk7XG5cdH1cblxuXHRnZXRTZXJ2ZXJEYXRhKHNlYXJjaD86IFNlYXJjaCkge1xuXHRcdHRoaXMuZ3JpZD8uYXBpLnNldEdyaWRPcHRpb24oJ3NlcnZlclNpZGVEYXRhc291cmNlJywge1xuXHRcdFx0Z2V0Um93czogKHBhcmFtcykgPT4ge1xuXHRcdFx0XHRjb25zdCBzZWFyY2hQcm06IFNlYXJjaCA9IHtcblx0XHRcdFx0XHQuLi50aGlzLnNlYXJjaFBybSgpLFxuXHRcdFx0XHRcdG9mZnNldDogcGFyYW1zLnJlcXVlc3Quc3RhcnRSb3csXG5cdFx0XHRcdFx0Y29sdW1uRmlsdGVyczogWy4uLih0aGlzLnJhd1BybT8uY29sdW1uRmlsdGVycyB8fCBbXSksIC4uLihzZWFyY2g/LmNvbHVtbkZpbHRlcnMgfHwgW10pXSxcblx0XHRcdFx0XHRzb3J0czogc2VhcmNoPy5zb3J0cz8ubGVuZ3RoID8gc2VhcmNoLnNvcnRzIDogdGhpcy5yYXdQcm0/LnNvcnRzPy5sZW5ndGggPyB0aGlzLnJhd1BybS5zb3J0cyA6IGRlZmF1bHRTb3J0cyxcblx0XHRcdFx0fTtcblx0XHRcdFx0c2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMgPSB0aGlzLmlzUmFuZ2Uoc2VhcmNoUHJtLmNvbHVtbkZpbHRlcnMhKSBhcyBDb2x1bW5GaWx0ZXJbXTtcblx0XHRcdFx0dGhpcy5oYW5kbGVTZXJ2ZXJUcmVlKHBhcmFtcywgc2VhcmNoUHJtKTtcblx0XHRcdFx0dGhpcy50b09wdGlvbnMoKVxuXHRcdFx0XHRcdC5zZXJ2ZXJGdW5jPy4oc2VhcmNoUHJtKVxuXHRcdFx0XHRcdC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLmFjdGlvbi5zZXRQYWdlKHtcblx0XHRcdFx0XHRcdFx0c3RhcnRSb3c6IHBhcmFtcy5yZXF1ZXN0LnN0YXJ0Um93LFxuXHRcdFx0XHRcdFx0XHRlbmRSb3c6IHBhcmFtcy5yZXF1ZXN0LmVuZFJvdyEgPCByZXMudG90YWxOdW0gPyBwYXJhbXMucmVxdWVzdC5lbmRSb3cgOiByZXMudG90YWxOdW0sXG5cdFx0XHRcdFx0XHRcdHRvdGFsOiByZXMudG90YWxOdW0sXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHBhcmFtcy5zdWNjZXNzKHsgcm93RGF0YTogcmVzLmRhdGEgfHwgW10gfSk7XG5cdFx0XHRcdFx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xuXHRcdFx0XHRcdFx0dGhpcy5oYW5kbGVTZWxlY3Rpb25zKHBhcmFtcy5yZXF1ZXN0LnN0YXJ0Um93IHx8IDApO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHR9KTtcblx0fVxuXG5cdGhhbmRsZVNlcnZlclRyZWUocGFyYW1zOiBhbnksIHNlYXJjaFBybTogU2VhcmNoKSB7XG5cdFx0aWYgKCF0aGlzLnRvT3B0aW9ucygpLnRyZWVEYXRhKSByZXR1cm47XG5cdFx0aWYgKHBhcmFtcy5yZXF1ZXN0Lmdyb3VwS2V5cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRzZWFyY2hQcm0uY29sdW1uRmlsdGVycyA9IHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzPy5maWx0ZXIoKGNvbHVtbkZpbHRlcikgPT4gY29sdW1uRmlsdGVyLmNvbHVtbkZpZWxkICE9PSAncGlkJyk7XG5cdFx0XHRzZWFyY2hQcm0uY29sdW1uRmlsdGVycyA9IFtcblx0XHRcdFx0Ly8gLi4uKHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzIHx8IFtdKSxcblx0XHRcdFx0eyBjb2x1bW5GaWVsZDogJ3BpZCcsIHR5cGU6ICdlcScsIGZpdGVyOiBwYXJhbXMucmVxdWVzdC5ncm91cEtleXNbcGFyYW1zLnJlcXVlc3QuZ3JvdXBLZXlzLmxlbmd0aCAtIDFdIH0sXG5cdFx0XHRdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoIXNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzPy5maW5kKChjb2x1bW5GaWx0ZXIpID0+IGNvbHVtbkZpbHRlci5jb2x1bW5GaWVsZCA9PT0gJ3BpZCcpKSB7XG5cdFx0XHRcdHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzID0gWy4uLihzZWFyY2hQcm0uY29sdW1uRmlsdGVycyB8fCBbXSksIHsgY29sdW1uRmllbGQ6ICdwaWQnLCB0eXBlOiAnZXEnLCBmaXRlcjogMCB9XTtcblx0XHRcdH1cblx0XHR9XG5cdFx0c2VhcmNoUHJtLnByZWxvYWRzID0gWydjaGlsZHJlbiddO1xuXHR9XG5cblx0Z2V0Q2xpZW50RGF0YShzZWFyY2g/OiBTZWFyY2gpIHtcblx0XHRjb25zdCBzZWFyY2hQcm06IFNlYXJjaCA9IHtcblx0XHRcdC4uLnRoaXMuc2VhcmNoUHJtKCksXG5cdFx0XHRsaW1pdDogQ0xJRU5UTElNSVQsXG5cdFx0XHRjb2x1bW5GaWx0ZXJzOiBbLi4uKHRoaXMucmF3UHJtPy5jb2x1bW5GaWx0ZXJzIHx8IFtdKSwgLi4uKHNlYXJjaD8uY29sdW1uRmlsdGVycyB8fCBbXSldLFxuXHRcdFx0c29ydHM6IHNlYXJjaD8uc29ydHM/Lmxlbmd0aCA/IHNlYXJjaC5zb3J0cyA6IGRlZmF1bHRTb3J0cyxcblx0XHR9O1xuXHRcdHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzID0gdGhpcy5pc1JhbmdlKHNlYXJjaFBybS5jb2x1bW5GaWx0ZXJzISkgYXMgQ29sdW1uRmlsdGVyW107XG5cdFx0dGhpcy5oYW5kbGVDbGllbnRUcmVlKHNlYXJjaFBybSk7XG5cdFx0dGhpcy50b09wdGlvbnMoKVxuXHRcdFx0LmNsaWVudEZ1bmM/LihzZWFyY2hQcm0pXG5cdFx0XHQuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuXHRcdFx0XHR0aGlzLmFjdGlvbi5zZXRQYWdlKHtcblx0XHRcdFx0XHR0b3RhbDogcmVzLnRvdGFsTnVtLFxuXHRcdFx0XHRcdG1vZGU6ICdjbGllbnQnLFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0dGhpcy5ncmlkPy5hcGkuc2V0R3JpZE9wdGlvbigncm93RGF0YScsIHJlcy5kYXRhIHx8IFtdKTtcblx0XHRcdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcblx0XHRcdFx0dGhpcy5oYW5kbGVTZWxlY3Rpb25zKDApO1xuXHRcdFx0fSk7XG5cdH1cblxuXHRoYW5kbGVDbGllbnRUcmVlKHNlYXJjaFBybTogU2VhcmNoKSB7XG5cdFx0aWYgKCF0aGlzLnRvT3B0aW9ucygpLnRyZWVEYXRhKSByZXR1cm47XG5cdFx0Y29uc3QgcHJlbG9hZHM6IGFueVtdID0gW107XG5cdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLnRvT3B0aW9ucygpLnRyZWVMZXZlbCE7IGkrKykge1xuXHRcdFx0cHJlbG9hZHMucHVzaChBcnJheShpKS5maWxsKCdjaGlsZHJlbicpLmpvaW4oJy4nKSk7XG5cdFx0fVxuXHRcdHNlYXJjaFBybS5wcmVsb2FkcyA9IHByZWxvYWRzO1xuXHR9XG5cblx0Y2VsbFZhbHVlQ2hhbmdlZChlOiBDZWxsVmFsdWVDaGFuZ2VkRXZlbnQpIHtcblx0XHRsZXQge1xuXHRcdFx0Y29sRGVmOiB7IGZpZWxkLCBoZWFkZXJOYW1lLCBjZWxsRWRpdG9yLCBjZWxsRWRpdG9yUGFyYW1zIH0sXG5cdFx0XHRuZXdWYWx1ZSxcblx0XHRcdG9sZFZhbHVlLFxuXHRcdFx0cm93SW5kZXgsXG5cdFx0XHRkYXRhOiB7IGlkIH0sXG5cdFx0fSA9IGU7XG5cdFx0Y29uc29sZS5sb2coJ1vljZXlhYPmoLzlgLzlj5jljJZdJywgZSk7XG5cdFx0aWYgKGNlbGxFZGl0b3IgPT0gJ2FnUmljaFNlbGVjdENlbGxFZGl0b3InICYmIGNlbGxFZGl0b3JQYXJhbXMgJiYgY2VsbEVkaXRvclBhcmFtcy5tdWx0aVNlbGVjdCkge1xuXHRcdFx0bmV3VmFsdWUgPSBuZXdWYWx1ZSAmJiBuZXdWYWx1ZS5sZW5ndGggPiAwID8gbmV3VmFsdWUuam9pbignLCcpIDogJyc7XG5cdFx0XHR0aGlzLnJpY2hNdWx0TWFwW2ZpZWxkIV0gPSBuZXdWYWx1ZTtcblx0XHR9XG5cdFx0aWYgKCFpZCB8fCBpZCA9PT0gMCkge1xuXHRcdFx0aWQgPT09IDAgJiYgZGVsZXRlIGUuZGF0YS5pZDtcblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLnNldChyb3dJbmRleCEsIE9iamVjdC5hc3NpZ24oeyAuLi5lLmRhdGEgfSwgdGhpcy5yaWNoTXVsdE1hcCkpO1xuXHRcdFx0aWYgKGZpZWxkID09IHRoaXMubWFpbkZpZWxkKSB7XG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChyb3dJbmRleCEgKyBmaWVsZCEsIHsgbmV3VmFsdWU6IG5ld1ZhbHVlLCBpZDogMCwgbGFiZWw6IGhlYWRlck5hbWUgfSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChpZCkge1xuXHRcdFx0Y29uc3QgZmllbGRzdHIgPSBgJHtmaWVsZH1gO1xuXHRcdFx0bGV0IG86IGFueTtcblx0XHRcdGlmICh0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5oYXMocm93SW5kZXghKSkge1xuXHRcdFx0XHRvID0gdGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZ2V0KHJvd0luZGV4ISk7XG5cdFx0XHRcdE9iamVjdC5hc3NpZ24obywgeyBbZmllbGRzdHJdOiBuZXdWYWx1ZSB9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG8gPSB7IGlkOiBpZCwgW2ZpZWxkc3RyXTogbmV3VmFsdWUgfTtcblx0XHRcdH1cblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLnNldChyb3dJbmRleCEsIG8pO1xuXHRcdFx0bGV0IG9sZCA9IHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmdldChyb3dJbmRleCEgKyBmaWVsZCEpO1xuXHRcdFx0aWYgKG9sZCkge1xuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5zZXQocm93SW5kZXghICsgZmllbGQhLCB7XG5cdFx0XHRcdFx0bmV3VmFsdWU6IG5ld1ZhbHVlLFxuXHRcdFx0XHRcdG9sZFZhbHVlOiBvbGQub2xkVmFsdWUsXG5cdFx0XHRcdFx0aWQ6IGlkLFxuXHRcdFx0XHRcdGxhYmVsOiBoZWFkZXJOYW1lLFxuXHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChyb3dJbmRleCEgKyBmaWVsZCEsIHtcblx0XHRcdFx0XHRuZXdWYWx1ZTogbmV3VmFsdWUsXG5cdFx0XHRcdFx0b2xkVmFsdWU6IG9sZFZhbHVlLFxuXHRcdFx0XHRcdGlkOiBpZCxcblx0XHRcdFx0XHRsYWJlbDogaGVhZGVyTmFtZSxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGxldCBkdDogYW55W10gPSBbXTtcblx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xuXHRcdFx0ZHQucHVzaCh2YWx1ZSk7XG5cdFx0fSk7XG5cdFx0dGhpcy51cHNlcnQoKVsnc3Vic2VydCddW3RoaXMuc3ViSW5kZXhdWydzdWJEYXRhJ10gPSBkdDtcblx0XHR0aGlzLmFjdGlvbi5zYXZlU2lnbmFsLnNldCh0cnVlKTtcblx0fVxuXG5cdGhhbmRsZUFkZGVkUm93cyhhZGRlZFJvd3M6IGFueVtdKSB7XG5cdFx0bGV0IGhlYWRlck5hbWUgPSAnJztcblx0XHR0aGlzLnRvT3B0aW9ucygpLmNvbHVtbkRlZnM/LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuXHRcdFx0aWYgKGl0ZW0uZmllbGQgPT0gdGhpcy5tYWluRmllbGQpIHtcblx0XHRcdFx0aGVhZGVyTmFtZSA9IGl0ZW0uaGVhZGVyTmFtZTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRpZiAodGhpcy5hZGRTb3J0KCkpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKCdhZGQtLS0tLScsdGhpcy5hZGRTb3J0KCkpXG5cdFx0XHQvLyBsZXQgbG9nID0gbmV3IE1hcCgpXG5cdFx0XHR0aGlzLnNlbGVjdERhdGEoKSEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHJvd0RhdGEgPSB0aGlzLmdyaWQuYXBpLmdldFJlbmRlcmVkTm9kZXMoKS5tYXAoKG5vZGUpID0+IG5vZGUuZGF0YSk7XG5cdFx0XHRcdGxldCBsYXN0SW5kZXggPSBmaW5kTGFzdEluZGV4KHJvd0RhdGEsICh2OiBhbnkpID0+IHZbdGhpcy5hZGRTb3J0KCkhXSA9PSBpdGVtW3RoaXMuYWRkU29ydCgpIV0sIHRoaXMpO1xuXHRcdFx0XHRsYXN0SW5kZXggPSBsYXN0SW5kZXggPT0gLTEgPyByb3dEYXRhLmxlbmd0aCAtIDEgOiBsYXN0SW5kZXg7XG5cdFx0XHRcdGNvbnN0IHJlc3VsdCA9IHRoaXMuZ3JpZC5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IGFkZEluZGV4OiBsYXN0SW5kZXggKyAxLCBhZGQ6IFtpdGVtXSB9KTtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcblx0XHRcdFx0XHRsZXQgaW5kZXggPSBrZXkubWF0Y2goL15cXGQrLylbMF07XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ2luZGV4LS0tLScsIGluZGV4KTtcblx0XHRcdFx0XHRjb25zdCBpbnNlcnRJbmRleCA9IGxhc3RJbmRleCArIDE7XG5cdFx0XHRcdFx0aWYgKGluZGV4ID09IGluc2VydEluZGV4KSB7XG5cdFx0XHRcdFx0XHRjb25zdCByZXBsYWNlSW5kZXggPSBpbnNlcnRJbmRleCArIDE7XG5cdFx0XHRcdFx0XHRsZXQgbmV3S2V5ID0ga2V5LnJlcGxhY2UoL15cXGQrLywgcmVwbGFjZUluZGV4KTtcblx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChuZXdLZXksIHZhbHVlKTtcblx0XHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmRlbGV0ZShrZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHRcdGxldCBtYXBEYXRhID0gdGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZ2V0KGxhc3RJbmRleCArIDEpO1xuXHRcdFx0XHRpZiAobWFwRGF0YSkge1xuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmRlbGV0ZShsYXN0SW5kZXggKyAxKTtcblx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5zZXQobGFzdEluZGV4ICsgMiwgbWFwRGF0YSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmVzdWx0IS5hZGQuZm9yRWFjaCgobm9kZTogYW55KSA9PiB7XG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ25vZGUtLS0tJyxub2RlKVxuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLnNldChub2RlLnJvd0luZGV4LCBub2RlLmRhdGEpO1xuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChub2RlLnJvd0luZGV4ISArIHRoaXMubWFpbkZpZWxkISwge1xuXHRcdFx0XHRcdFx0bmV3VmFsdWU6IG5vZGUuZGF0YVt0aGlzLm1haW5GaWVsZF0sXG5cdFx0XHRcdFx0XHRpZDogMCxcblx0XHRcdFx0XHRcdGxhYmVsOiBoZWFkZXJOYW1lLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJ2xhc3RJbmRleCcsbGFzdEluZGV4KVxuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLmdyaWQuYXBpLnJlZnJlc2hDZWxscyh7XG5cdFx0XHRcdGZvcmNlOiB0cnVlLCAvLyDlvLrliLbliLfmlrBcblx0XHRcdFx0c3VwcHJlc3NGbGFzaDogdHJ1ZSwgLy8g6YG/5YWN6Zeq54OBXG5cdFx0XHR9KTtcblx0XHRcdC8vIHRoaXMudXBzZXJ0KCkhLnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddID0gbG9nXG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IHRoaXMuZ3JpZC5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IGFkZDogYWRkZWRSb3dzIH0pO1xuXHRcdFx0cmVzdWx0IS5hZGQuZm9yRWFjaCgobm9kZTogYW55KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHJvd0luZGV4ID0gdGhpcy5ncmlkLmFwaS5nZXRSb3dOb2RlKG5vZGUuaWQpPy5yb3dJbmRleDtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uc2V0KHJvd0luZGV4ISwgbm9kZS5kYXRhKTtcblx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KHJvd0luZGV4ISArIHRoaXMubWFpbkZpZWxkISwge1xuXHRcdFx0XHRcdG5ld1ZhbHVlOiBub2RlLmRhdGFbdGhpcy5tYWluRmllbGRdLFxuXHRcdFx0XHRcdGlkOiAwLFxuXHRcdFx0XHRcdGxhYmVsOiBoZWFkZXJOYW1lLFxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRsZXQgZHQ6IGFueVtdID0gW107XG5cdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcblx0XHRcdGR0LnB1c2godmFsdWUpO1xuXHRcdH0pO1xuXHRcdC8vIGNvbnNvbGUubG9nKCd1cHNlcnQtLS0tLScsdGhpcy51cHNlcnQoKSlcblx0XHR0aGlzLnVwc2VydCgpWydzdWJzZXJ0J11bdGhpcy5zdWJJbmRleF1bJ3N1YkRhdGEnXSA9IGR0O1xuXHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XG5cdH1cblxuXHRoYW5kbGVEZWxldGVkUm93cyhkZWxldGVkUm93czogYW55W10pIHtcblx0XHRjb25zdCByZW1vdmVJbmRleGVzID0gdGhpcy5ncmlkLmFwaS5nZXRTZWxlY3RlZE5vZGVzKCkubWFwKChub2RlKSA9PiBub2RlLnJvd0luZGV4KTtcblx0XHRyZW1vdmVJbmRleGVzLmZvckVhY2goKHJvd0luZGV4OiBhbnkpID0+IHtcblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmRlbGV0ZShyb3dJbmRleCEpO1xuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZGVsZXRlKHJvd0luZGV4ISArIHRoaXMubWFpbkZpZWxkISk7XG5cdFx0fSk7XG5cdFx0bGV0IGR0OiBhbnlbXSA9IFtdO1xuXHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XG5cdFx0XHRkdC5wdXNoKHZhbHVlKTtcblx0XHR9KTtcblx0XHR0aGlzLnVwc2VydCgpWydzdWJzZXJ0J11bdGhpcy5zdWJJbmRleF1bJ3N1YkRhdGEnXSA9IGR0O1xuXHRcdHRoaXMuZ3JpZC5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IHJlbW92ZTogZGVsZXRlZFJvd3MgfSk7XG5cdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcblx0fVxuXG5cdHNlbGVjdFJvd3NEZWxldGVkKGRlbGV0ZWRSb3dzOiBhbnlbXSkge1xuXHRcdGxldCBoZWFkZXJOYW1lID0gJyc7XG5cdFx0dGhpcy50b09wdGlvbnMoKS5jb2x1bW5EZWZzPy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcblx0XHRcdGlmIChpdGVtLmZpZWxkID09IHRoaXMubWFpbkZpZWxkKSB7XG5cdFx0XHRcdGhlYWRlck5hbWUgPSBpdGVtLmhlYWRlck5hbWU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0Y29uc3QgcmVzdWx0ID0gdGhpcy5ncmlkLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgcmVtb3ZlOiBkZWxldGVkUm93cyB9KTtcblx0XHRyZXN1bHQ/LnJlbW92ZS5mb3JFYWNoKChub2RlKSA9PiB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZygnbm9kZS0tLScsbm9kZS5zb3VyY2VSb3dJbmRleCk7XG5cdFx0XHRsZXQga2V5ID0gbm9kZS5zb3VyY2VSb3dJbmRleCArIHRoaXMubWFpbkZpZWxkITtcblx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmRlbGV0ZShrZXkpO1xuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZGVsZXRlKG5vZGUuc291cmNlUm93SW5kZXgpO1xuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcblx0XHRcdFx0aWYgKCF2YWx1ZS5pZCAmJiBrZXkgPiBub2RlLnNvdXJjZVJvd0luZGV4KSB7XG5cdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZGVsZXRlKGtleSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSwga2V5OiBhbnkpID0+IHtcblx0XHRcdFx0bGV0IGluZGV4ID0ga2V5Lm1hdGNoKC9eXFxkKy8pWzBdO1xuXHRcdFx0XHRpZiAoIXZhbHVlLmlkICYmIGluZGV4ID4gbm9kZS5zb3VyY2VSb3dJbmRleCkge1xuXHRcdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLmRlbGV0ZShrZXkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0XHR0aGlzLmdyaWQuYXBpLmZvckVhY2hOb2RlKChub2RlOiBhbnkpID0+IHtcblx0XHRcdGNvbnN0IHJvd0luZGV4ID0gbm9kZS5yb3dJbmRleDtcblx0XHRcdGlmICghbm9kZS5kYXRhLmlkKSB7XG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLnNldChyb3dJbmRleCEsIG5vZGUuZGF0YSk7XG5cdFx0XHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddLnNldChyb3dJbmRleCEgKyB0aGlzLm1haW5GaWVsZCEsIHtcblx0XHRcdFx0XHRuZXdWYWx1ZTogbm9kZS5kYXRhW3RoaXMubWFpbkZpZWxkXSxcblx0XHRcdFx0XHRpZDogMCxcblx0XHRcdFx0XHRsYWJlbDogaGVhZGVyTmFtZSxcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xuXHRcdFx0XHRcdGlmICh2YWx1ZS5pZCA9PT0gbm9kZS5kYXRhLmlkICYmIGtleSAhPSByb3dJbmRleCkge1xuXHRcdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZGVsZXRlKGtleSk7XG5cdFx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXS5zZXQocm93SW5kZXgsIHZhbHVlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5mb3JFYWNoKCh2YWx1ZTogYW55LCBrZXk6IGFueSkgPT4ge1xuXHRcdFx0XHRcdGlmICh2YWx1ZS5pZCA9PSBub2RlLmRhdGEuaWQpIHtcblx0XHRcdFx0XHRcdGxldCBpbmRleCA9IGtleS5tYXRjaCgvXlxcZCsvKVswXTtcblx0XHRcdFx0XHRcdGlmIChpbmRleCAhPSByb3dJbmRleCkge1xuXHRcdFx0XHRcdFx0XHRsZXQgbmV3S2V5ID0ga2V5LnJlcGxhY2UoL15cXGQrLywgcm93SW5kZXgpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnVwc2VydCgpPy5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydsb2d0bXAnXS5kZWxldGUoa2V5KTtcblx0XHRcdFx0XHRcdFx0dGhpcy51cHNlcnQoKT8uc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10uc2V0KG5ld0tleSwgdmFsdWUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0bGV0IGR0OiBhbnlbXSA9IFtdO1xuXHRcdHRoaXMudXBzZXJ0KCk/LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ21hcHRtcCddLmZvckVhY2goKHZhbHVlOiBhbnksIGtleTogYW55KSA9PiB7XG5cdFx0XHRkdC5wdXNoKHZhbHVlKTtcblx0XHR9KTtcblx0XHR0aGlzLnVwc2VydCgpWydzdWJzZXJ0J11bdGhpcy5zdWJJbmRleF1bJ3N1YkRhdGEnXSA9IGR0O1xuXHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XG5cdFx0Ly8gY29uc29sZS5sb2coJ3Jlc3VsdC0tLS0tJywgdGhpcy51cHNlcnQoKSlcblx0fVxuXG5cdGNsZWFyKCkge1xuXHRcdGlmICh0aGlzLnRvT3B0aW9ucygpLnJvd01vZGVsVHlwZSAhPT0gJ3NlcnZlclNpZGUnKSB7XG5cdFx0XHR0aGlzLmdyaWQ/LmFwaS5zZXRHcmlkT3B0aW9uKCdyb3dEYXRhJywgW10pO1xuXHRcdH1cblx0XHR0aGlzLnVwc2VydCgpIS5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdID0ge1xuXHRcdFx0c3ViTW9kZWxOYW1lOiB0aGlzLnRvT3B0aW9ucygpLm1vZGVsTmFtZSxcblx0XHRcdGZrOiB0aGlzLnRvT3B0aW9ucygpLmZrLFxuXHRcdFx0c3ViRGF0YTogW10sXG5cdFx0XHRtYXB0bXA6IG5ldyBNYXAoKSxcblx0XHRcdGxvZ3RtcDogbmV3IE1hcCgpLFxuXHRcdFx0cmVmZXJlbmNlOiB0aGlzLnRvT3B0aW9ucygpLnJlZmVyZW5jZSxcblx0XHR9O1xuXHR9XG5cblx0YWRkUm93KCkge1xuXHRcdGlmICh0aGlzLmFkZFR5cGUoKSA9PSAnaGFuZGxlJykge1xuXHRcdFx0bGV0IGl0ZW0gPSB0eXBlb2YgdGhpcy50b09wdGlvbnMoKS5hZGREYXRhQ2IgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMudG9PcHRpb25zKCkuYWRkRGF0YUNiKCkgOiB7fTtcblx0XHRcdGlmICh0aGlzLmdyaWRPcHRpb25zKCkuZHJhZ1NvcnQpIHtcblx0XHRcdFx0bGV0IHRvdGFsQ291bnQgPSB0aGlzLmdyaWQuYXBpLmdldERpc3BsYXllZFJvd0NvdW50KCk7XG5cdFx0XHRcdGl0ZW1bdGhpcy5ncmlkT3B0aW9ucygpLmRyYWdTb3J0IV0gPSB0b3RhbENvdW50ICsgMTtcblx0XHRcdH1cblx0XHRcdHRoaXMuYWN0aW9uLnVwZGF0ZUdyaWRBY3Rpb24oe3R5cGU6J2FkZCcsZGF0YTogW2l0ZW1dfSlcblx0XHRcdHRoaXMuZ3JpZC5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IGFkZDogW2l0ZW1dIH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmFkZEVtaXQuZW1pdCgpO1xuXHRcdH1cblx0XHR0aGlzLmFqdXN0R3JpZEhlaWdodCgpO1xuXHR9XG5cblx0ZGVsUm93cygpIHtcblx0XHRjb25zdCBzZWxlY3RlZE5vZGVzID0gdGhpcy5ncmlkLmFwaS5nZXRTZWxlY3RlZE5vZGVzKCk7XG5cdFx0Y29uc3Qgc2VsZWN0ZWREYXRhID0gc2VsZWN0ZWROb2Rlcy5tYXAoKG5vZGUpID0+IG5vZGUuZGF0YSkgfHwgW107XG5cdFx0bGV0IGlkcyA9IHNlbGVjdGVkRGF0YS5tYXAoKGRhdGEpID0+IGRhdGEuaWQpLmZpbHRlcigodikgPT4gdikgfHwgW107XG5cdFx0aWYgKGlkcy5sZW5ndGggPiAwKSB7XG5cdFx0XHR0aGlzLmRlbGV0ZUVtaXQuZW1pdChpZHMpO1xuXHRcdH0gZWxzZSBpZiAoc2VsZWN0ZWREYXRhLmxlbmd0aCA+IDAgJiYgaWRzLmxlbmd0aCA9PSAwKSB7XG5cdFx0XHR0aGlzLmhhbmRsZURlbGV0ZWRSb3dzKHNlbGVjdGVkRGF0YSk7XG5cdFx0XHR0aGlzLmFjdGlvbi51cGRhdGVHcmlkQWN0aW9uKHt0eXBlOidkZWxldGUnLGRhdGE6IHNlbGVjdGVkRGF0YX0pXG5cdFx0fVxuXHRcdHRoaXMuYWp1c3RHcmlkSGVpZ2h0KCk7XG5cdH1cblxuXHRzZXRTY3JvbGxIZWlnaHQoaGVpZ2h0Pzogc3RyaW5nKSB7XG5cdFx0aWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgMTAyNCAmJiB0aGlzLnRvT3B0aW9ucygpLm1haW5GaWVsZCkge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LCAnbWF4LWhlaWdodCcpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRoZWlnaHQgPSBoZWlnaHQgfHwgdGhpcy50b09wdGlvbnMoKS5zY3JvbGxIZWlnaHQ7XG5cdFx0aWYgKGhlaWdodCkge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LCAnbWF4LWhlaWdodCcsIGhlaWdodCk7XG5cdFx0fVxuXHR9XG5cblx0aW5pdEdyaWRIZWlnaHQoKSB7XG5cdFx0dGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFyT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcblx0XHRcdGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcblx0XHRcdFx0dGhpcy5ob3Jpem9udGFsU2Nyb2xsQmFySGVpZ2h0ID0gZW50cnkudGFyZ2V0LmNsaWVudEhlaWdodDtcblx0XHRcdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdHRoaXMuaG9yaXpvbnRhbFNjcm9sbEJhck9ic2VydmVyLm9ic2VydmUodGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFnLWJvZHktaG9yaXpvbnRhbC1zY3JvbGwnKSk7XG5cdFx0dGhpcy52ZXJ0aWNhbFNjcm9sbEJhck9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG5cdFx0XHRlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG5cdFx0XHRcdHRoaXMudmVydGljYWxTY3JvbGxCYXJXaWR0aCA9IGVudHJ5LnRhcmdldC5jbGllbnRXaWR0aDtcblx0XHRcdFx0dGhpcy5hanVzdEdyaWRIZWlnaHQoKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdHRoaXMudmVydGljYWxTY3JvbGxCYXJPYnNlcnZlci5vYnNlcnZlKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hZy1ib2R5LXZlcnRpY2FsLXNjcm9sbCcpKTtcblx0XHR0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCAnMTAwJScpO1xuXHRcdHRoaXMuc2V0U2Nyb2xsSGVpZ2h0KCk7XG5cdH1cblxuXHRjYWxjR3JpZE1hcmdpbigpIHtcblx0XHRjb25zdCBtYXJnaW4gPSB0aGlzLnNob3dBY3QoKSAmJiB0aGlzLmF1dGhMZXZlbCgpID49IDMgJiYgKHRoaXMuYWRkVHlwZSgpICE9ICdub25lJyB8fCB0aGlzLnNob3dEZWxldGUoKSkgPyAyIDogMTtcblx0XHRsZXQgYm9yZGVyQm90dG9tID0gMDtcblx0XHRpZiAodGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFnLXJvb3Qtd3JhcHBlcicpKSB7XG5cdFx0XHRib3JkZXJCb3R0b20gPSBwYXJzZUZsb2F0KFxuXHRcdFx0XHR3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWctcm9vdC13cmFwcGVyJykpLmdldFByb3BlcnR5VmFsdWUoJ2JvcmRlci1ib3R0b20td2lkdGgnKSxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBNYXRoLm1pbigyLCBtYXJnaW4gKyBib3JkZXJCb3R0b20pO1xuXHR9XG5cblx0Z2V0Q29udGFpbmVySGVpZ2h0KCkge1xuXHRcdGxldCBjb250YWluZXIgPSA1NDY7XG5cdFx0aWYgKHRoaXMuZ3JpZFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hZy1jZW50ZXItY29scy1jb250YWluZXInKSkge1xuXHRcdFx0Y29udGFpbmVyID0gcGFyc2VGbG9hdChcblx0XHRcdFx0d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5ncmlkUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFnLWNlbnRlci1jb2xzLWNvbnRhaW5lcicpKS5nZXRQcm9wZXJ0eVZhbHVlKCdoZWlnaHQnKSxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBjb250YWluZXI7XG5cdH1cblxuXHRhanVzdEdyaWRIZWlnaHQoKSB7XG5cdFx0bGV0IGNvbnRhaW5lciA9IHRoaXMuZ2V0Q29udGFpbmVySGVpZ2h0KCk7XG5cdFx0bGV0IGhlYWRlckhlaWdodCA9IHRoaXMuZ3JpZE9wdGlvbnMoKS5oZWFkZXJIZWlnaHQgPz8gNDk7XG5cdFx0bGV0IG1hcmdpbiA9IHRoaXMuY2FsY0dyaWRNYXJnaW4oKTtcblx0XHRsZXQgdG90YWwgPSBjb250YWluZXIgKyBtYXJnaW4gKyBoZWFkZXJIZWlnaHQ7XG5cdFx0Y29uc3QgaGVpZ2h0ID0gTWF0aC5tYXgodG90YWwsIGhlYWRlckhlaWdodCArIDQyICsgbWFyZ2luKTtcblx0XHR0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuXHRcdFx0dGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIGAke2hlaWdodCArIHRoaXMuaG9yaXpvbnRhbFNjcm9sbEJhckhlaWdodH1weGApO1xuXHRcdFx0dGhpcy5hanVzdEdyaWRTdGF0ZSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0YWp1c3RHcmlkU3RhdGUoKSB7XG5cdFx0dGhpcy5ub1Jvd3MgPSB0aGlzLmdyaWQuYXBpLmdldERpc3BsYXllZFJvd0NvdW50KCkgPT09IDA7XG5cdFx0dGhpcy5ub1Jvd3MgPyB0aGlzLmdyaWQuYXBpLnNob3dOb1Jvd3NPdmVybGF5KCkgOiB0aGlzLmdyaWQuYXBpLmhpZGVPdmVybGF5KCk7XG5cdFx0dGhpcy5zaG93SG9yaXpvbnRhbCA9IHRoaXMuYWN0UG9zKCkgPT0gJ2JvdHRvbScgJiYgKHRoaXMubm9Sb3dzIHx8ICEhdGhpcy52ZXJ0aWNhbFNjcm9sbEJhcldpZHRoKTtcblx0fVxuXG5cdGNhbmNlbFNlbGVjdCgpIHtcblx0XHR0aGlzLmdldEdyaWQoKS5hcGkuZGVzZWxlY3RBbGwoKTtcblx0XHR0aGlzLnNlbGVjdGVkUm93cy5zZXQoW10pO1xuXHR9XG5cblx0ZWRpdGluZ0ZpeCgpIHtcblx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudDogYW55KSA9PiB7XG5cdFx0XHRpZiAoIXRoaXMuZ3JpZD8uYXBpPy5nZXRFZGl0aW5nQ2VsbHMoKT8ubGVuZ3RoKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGdyaWRFbGVtZW50OiBhbnkgPSB0aGlzLmdyaWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWctcm9vdC13cmFwcGVyJyk7XG5cdFx0XHRpZiAoIWdyaWRFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcblx0XHRcdFx0dGhpcy5ncmlkLmFwaS5zdG9wRWRpdGluZygpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJvd0RyYWdFbnRlcihldmVudDogYW55KSB7XG5cdFx0Y29uc29sZS5sb2coJ2V2ZW50LS0tJywgZXZlbnQpO1xuXHRcdHRoaXMuZHJhZ0JlZm9yZUluZGV4ID0gZXZlbnQub3ZlckluZGV4O1xuXHR9XG5cblx0b25Sb3dEcmFnRW5kKGV2ZW50OiBSb3dEcmFnRW5kRXZlbnQpIHtcblxuXHRcdGlmICghdGhpcy5ncmlkT3B0aW9ucygpLmRyYWdTb3J0KSByZXR1cm47XG5cblx0XHRjb25zdCBzb3J0RmllbGQgPSB0aGlzLmdyaWRPcHRpb25zKCkuZHJhZ1NvcnQhO1xuXHRcdGNvbnN0IGNvbERlZnMgPSBldmVudC5hcGkuZ2V0Q29sdW1uRGVmcygpO1xuXHRcdGNvbnN0IGNvbEl0ZW06IGFueSA9IGNvbERlZnM/LmZpbmQoKHY6IGFueSkgPT4gdi5maWVsZCA9PT0gc29ydEZpZWxkKSB8fCB7fTtcblxuXHRcdGxldCBtYXAgPSBuZXcgTWFwKCk7XG5cdFx0bGV0IGxvZ01hcCA9IG5ldyBNYXAoKTtcblx0XHRsZXQgZHQ6IGFueVtdID0gW107XG5cblx0XHRjb25zdCB1cHNlcnQgPSB0aGlzLnVwc2VydCgpO1xuXHRcdGlmICghdXBzZXJ0KSByZXR1cm47XG5cblx0XHRjb25zdCBtYXBUbXA6IE1hcDxhbnksIGFueT4gPSB1cHNlcnQuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ107XG5cdFx0Y29uc3QgbG9nVG1wOiBNYXA8YW55LCBhbnk+ID0gdXBzZXJ0LnN1YnNlcnRbdGhpcy5zdWJJbmRleF1bJ2xvZ3RtcCddO1xuXG5cdFx0dGhpcy5ncmlkPy5hcGkuZm9yRWFjaE5vZGUoKG5vZGUsIGluZGV4KSA9PiB7XG5cblx0XHRcdGNvbnN0IGlkID0gbm9kZS5kYXRhLmlkO1xuXHRcdFx0Y29uc3QgbmV3U29ydCA9IGluZGV4ICsgMTtcblx0XHRcdGNvbnN0IG9sZFNvcnQgPSBub2RlLmRhdGFbc29ydEZpZWxkXTtcblx0XHRcdC8vIOabtOaWsCBncmlkIOaVsOaNrlxuXHRcdFx0bm9kZS5kYXRhW3NvcnRGaWVsZF0gPSBuZXdTb3J0O1xuXHRcdFx0bm9kZS5zZXREYXRhVmFsdWUoc29ydEZpZWxkLCBuZXdTb3J0KTtcblx0XHRcdC8vIGNvbnNvbGUubG9nKCdub2RlLS0tLScsIG5vZGUuZGF0YSwgaW5kZXgsbmV3U29ydCk7XG5cdFx0XHRpZiAoIWlkKSB7XG5cblx0XHRcdFx0bWFwVG1wLnNldChpbmRleCwge1xuXHRcdFx0XHRcdC4uLm5vZGUuZGF0YSxcblx0XHRcdFx0XHRbc29ydEZpZWxkXTogbmV3U29ydFxuXHRcdFx0XHR9KTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRtYXAuc2V0KGluZGV4LCB7XG5cdFx0XHRcdFx0aWQ6IGlkLFxuXHRcdFx0XHRcdFtzb3J0RmllbGRdOiBuZXdTb3J0XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHR9XG5cdFx0XHRpZiAoaWQpIHtcblx0XHRcdFx0Y29uc3Qga2V5ID0gaWQgKyAnXycgKyBzb3J0RmllbGQ7XG5cdFx0XHRcdGxldCBvbGRMb2cgPSBsb2dUbXAuZ2V0KGtleSk7XG5cblx0XHRcdFx0aWYgKG9sZExvZykge1xuXHRcdFx0XHRcdG9sZExvZy5uZXdWYWx1ZSA9IG5ld1NvcnQ7XG5cdFx0XHRcdFx0bG9nTWFwLnNldChrZXksIG9sZExvZyk7XG5cblx0XHRcdFx0fSBlbHNlIGlmIChvbGRTb3J0ICE9PSBuZXdTb3J0KSB7XG5cdFx0XHRcdFx0bG9nTWFwLnNldChrZXksIHtcblx0XHRcdFx0XHRcdGlkOiBpZCxcblx0XHRcdFx0XHRcdGxhYmVsOiBjb2xJdGVtWydoZWFkZXJOYW1lJ10gfHwgJ+aOkuW6jycsXG5cdFx0XHRcdFx0XHRvbGRWYWx1ZTogb2xkU29ydCxcblx0XHRcdFx0XHRcdG5ld1ZhbHVlOiBuZXdTb3J0XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0aWYgKHVwc2VydCkge1xuXHRcdHVwc2VydC5zdWJzZXJ0W3RoaXMuc3ViSW5kZXhdWydtYXB0bXAnXSA9XG5cdFx0XHRcdG5ldyBNYXAoWy4uLm1hcFRtcCwgLi4ubWFwXSk7XG5cdFx0XHR1cHNlcnQuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbG9ndG1wJ10gPVxuXHRcdFx0XHRuZXcgTWFwKFsuLi5sb2dUbXAsIC4uLmxvZ01hcF0pO1xuXG5cdFx0XHR1cHNlcnQuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnbWFwdG1wJ10uZm9yRWFjaCgodmFsdWU6IGFueSkgPT4ge1xuXHRcdFx0XHRkdC5wdXNoKHZhbHVlKTtcblx0XHRcdH0pO1xuXG5cdFx0XHR1cHNlcnQuc3Vic2VydFt0aGlzLnN1YkluZGV4XVsnc3ViRGF0YSddID0gZHQ7XG5cdFx0XHRjb25zb2xlLmxvZygnZHJhZ1Vwc2VydC0tLS0nLCB1cHNlcnQpO1xuXHRcdH1cblx0fVxuLy8g5pe26Ze06IyD5Zu05re75Yqg5pe25YiG56eSXG5cdGlzUmFuZ2UoY29sdW1uRmlsdGVyOkNvbHVtbkZpbHRlcltdKXtcblx0XHRjb25zdCBpc0VpeHN0ID0gY29sdW1uRmlsdGVyLnNvbWUoKHY6YW55KSA9PiB2LnR5cGUgPT0gJ2luUmFuZ2UnKVxuXHRcdGlmKGlzRWl4c3Qpe1xuXHRcdFx0bGV0IGNvbHMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbHVtbkZpbHRlcikpXG5cdFx0XHRjb2xzLmZvckVhY2goKGl0ZW06Q29sdW1uRmlsdGVyKSA9PiB7XG5cdFx0XHRcdGlmKGl0ZW0udHlwZSA9PSAnaW5SYW5nZScpe1xuXHRcdFx0XHRcdGl0ZW0uZnJvbSA9IGAke2l0ZW0uZnJvbX0gMDA6MDA6MDBgXG5cdFx0XHRcdFx0aXRlbS50byA9IGAke2l0ZW0udG99IDIzOjU5OjU5YFxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0cmV0dXJuIGNvbHNcblx0XHR9XG5cdFx0cmV0dXJuIGNvbHVtbkZpbHRlclxuXHR9XG59XG4iLCJAaWYgKGluaXRHcmlkKSB7XG5cdDxkaXZcblx0XHQjZ3JpZENvbnRhaW5lclxuXHRcdFtjbGFzc109XCJcblx0XHRcdCh0b09wdGlvbnMoKS50cmVlRGF0YUZpZWxkID8gJ3RyZWUtZ3JpZCAnIDogJycpICtcblx0XHRcdCdncmlkLWNvbnRhaW5lciB3LWZ1bGwgZmxleCBqdXN0aWZ5LWJldHdlZW4gJyArXG5cdFx0XHQoYWN0UG9zKCkgPT0gJ2JvdHRvbScgPyAnZmxleC1jb2wnIDogJ2ZsZXgtY29sLXJldmVyc2UnKVxuXHRcdFwiPlxuXHRcdDxhZy1ncmlkLWFuZ3VsYXJcblx0XHRcdFt0aGVtZV09XCJteVRoZW1lKClcIlxuXHRcdFx0W2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc1wiXG5cdFx0XHRbZ3JpZE9wdGlvbnNdPVwidG9PcHRpb25zKClcIlxuXHRcdFx0W2xvY2FsZVRleHRdPVwibG9jYWxlVGV4dFwiXG5cdFx0XHRbY29tcG9uZW50c109XCJjb21wb25lbnRzXCJcblx0XHRcdFtzdXBwcmVzc0RyYWdMZWF2ZUhpZGVzQ29sdW1uc109XCJ0cnVlXCJcblx0XHRcdFt1bmRvUmVkb0NlbGxFZGl0aW5nXT1cInRvT3B0aW9ucygpLnVuZG9SZWRvQ2VsbEVkaXRpbmdcIlxuXHRcdFx0W3VuZG9SZWRvQ2VsbEVkaXRpbmdMaW1pdF09XCJ0b09wdGlvbnMoKS51bmRvUmVkb0NlbGxFZGl0aW5nTGltaXRcIlxuXHRcdFx0W3Jvd0J1ZmZlcl09XCIzMFwiXG5cdFx0XHQoY2VsbFZhbHVlQ2hhbmdlZCk9XCJjZWxsVmFsdWVDaGFuZ2VkKCRldmVudClcIlxuXHRcdFx0KHNlbGVjdGlvbkNoYW5nZWQpPVwib25TZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuXHRcdFx0KHJvd0dyb3VwT3BlbmVkKT1cIm9uUm93R3JvdXBPcGVuZWQoKVwiXG5cdFx0XHQoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5KCRldmVudClcIlxuXHRcdFx0KHJvd0RyYWdFbmQpPVwib25Sb3dEcmFnRW5kKCRldmVudClcIlxuXHRcdFx0KHJvd0RyYWdFbnRlcik9XCJyb3dEcmFnRW50ZXIoJGV2ZW50KVwiIC8+XG5cdFx0QGlmIChzaG93QWN0KCkgJiYgYXV0aExldmVsKCkgPj0gMyAmJiAoYWRkVHlwZSgpICE9ICdub25lJyB8fCBzaG93RGVsZXRlKCkgfHwgc3ViU2F2ZVZpc2libGUoKSkpIHtcblx0XHRcdEBpZiAoc2hvd0hvcml6b250YWwpIHtcblx0XHRcdFx0PGRpdiBjbGFzcz1cInctZnVsbCBib3JkZXItdCBib3JkZXItZ3JheS0zMDBcIj48L2Rpdj5cblx0XHRcdH1cblx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIHB5LVs1cHhdIHByLVs4cHhdXCI+XG5cdFx0XHRcdEBpZiAoc3ViU2F2ZVZpc2libGUoKSkge1xuXHRcdFx0XHRcdDxwLWJ1dHRvblxuXHRcdFx0XHRcdFx0aWNvbj1cInBpIHBpLWNsb3VkLXVwbG9hZFwiXG5cdFx0XHRcdFx0XHRbdGV4dF09XCJ0cnVlXCJcblx0XHRcdFx0XHRcdHNldmVyaXR5PVwicHJpbWFyeVwiXG5cdFx0XHRcdFx0XHRbZGlzYWJsZWRdPVwic3ViU2F2ZURpc2FibGVkKClcIlxuXHRcdFx0XHRcdFx0KG9uQ2xpY2spPVwic3ViU2F2ZUVtaXQuZW1pdCgpXCIgLz5cblx0XHRcdFx0fVxuXHRcdFx0XHRAaWYgKGFkZFR5cGUoKSAhPSAnbm9uZScpIHtcblx0XHRcdFx0XHQ8cC1idXR0b25cblx0XHRcdFx0XHRcdGljb249XCJwaSBwaS1wbHVzXCJcblx0XHRcdFx0XHRcdFt0ZXh0XT1cInRydWVcIlxuXHRcdFx0XHRcdFx0c2V2ZXJpdHk9XCJzdWNjZXNzXCJcblx0XHRcdFx0XHRcdFtkaXNhYmxlZF09XCJncmlkRGlzYWJsZSgpXCJcblx0XHRcdFx0XHRcdChvbkNsaWNrKT1cImFkZFJvdygpXCIgLz5cblx0XHRcdFx0fVxuXHRcdFx0XHRAaWYgKHNob3dEZWxldGUoKSkge1xuXHRcdFx0XHRcdDxwLWJ1dHRvblxuXHRcdFx0XHRcdFx0aWNvbj1cInBpIHBpLXRyYXNoXCJcblx0XHRcdFx0XHRcdFt0ZXh0XT1cInRydWVcIlxuXHRcdFx0XHRcdFx0c2V2ZXJpdHk9XCJkYW5nZXJcIlxuXHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cImdyaWREaXNhYmxlKClcIlxuXHRcdFx0XHRcdFx0KG9uQ2xpY2spPVwiZGVsUm93cygpXCIgLz5cblx0XHRcdFx0fVxuXHRcdFx0PC9kaXY+XG5cdFx0fVxuXHQ8L2Rpdj5cbn1cbiJdfQ==