@acorex/components 1.3.86 → 1.3.90

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.
@@ -30,6 +30,14 @@ var AXTreeViewselectionChangedEvent = /** @class */ (function (_super) {
30
30
  return AXTreeViewselectionChangedEvent;
31
31
  }(AXValueEvent));
32
32
  export { AXTreeViewselectionChangedEvent };
33
+ var AXTreeViewseletedKeyFieldsChangedEvent = /** @class */ (function (_super) {
34
+ __extends(AXTreeViewseletedKeyFieldsChangedEvent, _super);
35
+ function AXTreeViewseletedKeyFieldsChangedEvent() {
36
+ return _super !== null && _super.apply(this, arguments) || this;
37
+ }
38
+ return AXTreeViewseletedKeyFieldsChangedEvent;
39
+ }(AXValueEvent));
40
+ export { AXTreeViewseletedKeyFieldsChangedEvent };
33
41
  var AXTreeViewItemClick = /** @class */ (function (_super) {
34
42
  __extends(AXTreeViewItemClick, _super);
35
43
  function AXTreeViewItemClick() {
@@ -58,6 +66,7 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
58
66
  _this.allowDrag = false;
59
67
  _this.size = 'md';
60
68
  _this.selectionChanged = new EventEmitter();
69
+ _this.seletedKeyFieldsChanged = new EventEmitter();
61
70
  _this.onItemOpening = new EventEmitter();
62
71
  _this.onItemClick = new EventEmitter();
63
72
  _this.onItemClosing = new EventEmitter();
@@ -75,6 +84,8 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
75
84
  _this.lockedDrag = false;
76
85
  _this.childField = 'childeren';
77
86
  _this.showContextMenu = false;
87
+ _this.isSelectedItem = false;
88
+ _this.loced = false;
78
89
  return _this;
79
90
  }
80
91
  AXTreeViewComponent.prototype.handleOnContextMenuItem = function (e) {
@@ -110,7 +121,7 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
110
121
  }
111
122
  else {
112
123
  item.select = !item.select;
113
- if (item.parentNode && (this.selectionMode === 'multiple')) {
124
+ if (item.parentNode && this.selectionMode === 'multiple') {
114
125
  this.changeParentSelect(item.parentNode);
115
126
  }
116
127
  if (this.selectionMode === 'multiple') {
@@ -331,6 +342,7 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
331
342
  }
332
343
  else {
333
344
  _this.selectItem(el);
345
+ _this.isSelectedItem = true;
334
346
  }
335
347
  }
336
348
  });
@@ -343,8 +355,10 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
343
355
  }
344
356
  else if (el[_this.selectedFieldName] == true) {
345
357
  _this.selectItem(el);
358
+ _this.isSelectedItem = true;
346
359
  }
347
360
  }
361
+ debugger;
348
362
  });
349
363
  }
350
364
  else {
@@ -371,9 +385,7 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
371
385
  }
372
386
  if (_this.selectionMode !== 'single' && _this.selectNodesRecursive) {
373
387
  result_1[i].select = _this.itemRow.select === (undefined || null) ? false : _this.itemRow.select;
374
- if (_this.itemRow.select === true &&
375
- (_this.selectionMode == 'multiple') &&
376
- result_1[i][_this.hasChildField] === false) {
388
+ if (_this.itemRow.select === true && _this.selectionMode == 'multiple' && result_1[i][_this.hasChildField] === false) {
377
389
  _this.selectedItems = _this.selectedItems.filter(function (c) { return c[_this.keyField] !== result_1[i][_this.keyField]; });
378
390
  _this.selectedItems.push(result_1[i]);
379
391
  }
@@ -392,6 +404,7 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
392
404
  }
393
405
  else {
394
406
  _this.selectItem(result_1[i]);
407
+ _this.isSelectedItem = true;
395
408
  }
396
409
  }
397
410
  });
@@ -404,6 +417,7 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
404
417
  }
405
418
  else if (result_1[i][_this.selectedFieldName] == true) {
406
419
  _this.selectItem(result_1[i]);
420
+ _this.isSelectedItem = true;
407
421
  }
408
422
  }
409
423
  };
@@ -414,6 +428,14 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
414
428
  }
415
429
  }
416
430
  }
431
+ if (_this.isSelectedItem == true && !_this.loced) {
432
+ _this.loced = true;
433
+ _this.seletedKeyFieldsChanged.emit({
434
+ component: _this,
435
+ // value: this.makeNode(item),
436
+ htmlElement: _this.ref.nativeElement
437
+ });
438
+ }
417
439
  });
418
440
  };
419
441
  AXTreeViewComponent.prototype.ngAfterViewInit = function () {
@@ -680,6 +702,10 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
680
702
  Output(),
681
703
  __metadata("design:type", EventEmitter)
682
704
  ], AXTreeViewComponent.prototype, "selectionChanged", void 0);
705
+ __decorate([
706
+ Output(),
707
+ __metadata("design:type", EventEmitter)
708
+ ], AXTreeViewComponent.prototype, "seletedKeyFieldsChanged", void 0);
683
709
  __decorate([
684
710
  Output(),
685
711
  __metadata("design:type", EventEmitter)
@@ -719,4 +745,4 @@ var AXTreeViewComponent = /** @class */ (function (_super) {
719
745
  return AXTreeViewComponent;
720
746
  }(AXBaseComponent));
721
747
  export { AXTreeViewComponent };
722
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi90cmVlLXZpZXcvdHJlZS12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFlLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJeEQ7SUFBQTtRQUVFLGFBQVEsR0FBdUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBRTFELENBQUM7SUFBRCxxQkFBQztBQUFELENBQUMsQUFKRCxJQUlDOztBQUVEO0lBQUE7SUFPQSxDQUFDO0lBQUQseUJBQUM7QUFBRCxDQUFDLEFBUEQsSUFPQzs7QUFFRDtJQUFBO0lBSUEsQ0FBQztJQUFELCtCQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7O0FBRUQ7SUFBcUQsbURBQTRCO0lBQWpGOztJQUVBLENBQUM7SUFBRCxzQ0FBQztBQUFELENBQUMsQUFGRCxDQUFxRCxZQUFZLEdBRWhFOztBQUVEO0lBQXlDLHVDQUF1QjtJQUFoRTs7SUFLQSxDQUFDO0lBQUQsMEJBQUM7QUFBRCxDQUFDLEFBTEQsQ0FBeUMsV0FBVyxHQUtuRDs7QUFRRDtJQUF5Qyx1Q0FBZTtJQW1GdEQsNkJBQW9CLEdBQWU7UUFBbkMsWUFDRSxpQkFBTyxTQUNSO1FBRm1CLFNBQUcsR0FBSCxHQUFHLENBQVk7UUEzRW5DLG1CQUFhLEdBQTBCLFFBQVEsQ0FBQztRQUdoRCxvQkFBYyxHQUFnQyxLQUFLLENBQUM7UUFFcEQsd0VBQXdFO1FBQ3hFLDhDQUE4QztRQUM5Qyx3REFBd0Q7UUFFeEQsdUJBQWlCLEdBQVcsSUFBSSxDQUFDO1FBR2pDLDBCQUFvQixHQUFZLElBQUksQ0FBQztRQUdyQyxzQkFBZ0IsR0FBVSxFQUFFLENBQUM7UUFHN0IsY0FBUSxHQUFXLElBQUksQ0FBQztRQUd4QixtQkFBYSxHQUFXLE9BQU8sQ0FBQztRQUdoQyxjQUFRLEdBQVksS0FBSyxDQUFDO1FBRzFCLGlCQUFXLEdBQVksSUFBSSxDQUFDO1FBRzVCLGVBQVMsR0FBWSxLQUFLLENBQUM7UUFHM0IsVUFBSSxHQUFnQixJQUFJLENBQUM7UUFHekIsc0JBQWdCLEdBQWtELElBQUksWUFBWSxFQUFtQyxDQUFDO1FBR3RILG1CQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFHM0QsaUJBQVcsR0FBc0MsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFHekYsbUJBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUczRCxnQkFBVSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBR3hELGlCQUFXLEdBQTJDLElBQUksWUFBWSxFQUE0QixDQUFDO1FBR25HLDRCQUFzQixHQUE4QyxJQUFJLFlBQVksRUFBK0IsQ0FBQztRQUVwSCxtQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixhQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLFVBQUksR0FBVSxFQUFFLENBQUM7UUFFakIsbUJBQWEsR0FBVSxFQUFFLENBQUM7UUFDMUIscUJBQWUsR0FBVSxFQUFFLENBQUM7UUFDNUIscUJBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsY0FBUSxHQUFVLEVBQUUsQ0FBQztRQUdyQixlQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLGdCQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGdCQUFVLEdBQVcsV0FBVyxDQUFDO1FBQ2pDLHFCQUFlLEdBQVksS0FBSyxDQUFDOztJQVFqQyxDQUFDO0lBRUQscURBQXVCLEdBQXZCLFVBQXdCLENBQThCO1FBQ3BELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHFDQUFPLEdBQVA7UUFDRSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGdEQUFrQixHQUFsQixVQUFtQixJQUFJLEVBQUUsVUFBMEI7UUFBbkQsaUJBc0RDO1FBdER3QiwyQkFBQSxFQUFBLGlCQUEwQjtRQUNqRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssUUFBUSxFQUFFO1lBQ3pFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLFFBQVEsRUFBRTtnQkFDdEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUMxQztZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUU7Z0JBQ3hCLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxRQUFRLEVBQUU7b0JBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQUMsQ0FBQzt3QkFDM0IsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7b0JBQ25CLENBQUMsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO29CQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFFL0I7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQy9CO2FBQ0Y7aUJBQU07Z0JBRUwsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxVQUFDLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxLQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsRUFBeEMsQ0FBd0MsQ0FBQyxDQUFDO2FBQ2pHO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBRTNCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssVUFBVSxDQUFDLEVBQUU7Z0JBQzFELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDMUM7WUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssVUFBVSxFQUFFO2dCQUNyQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUMzQztZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUU7Z0JBQ3ZCLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxVQUFVLEVBQUU7b0JBRXJDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNqQztxQkFBTTtvQkFDTCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxVQUFBLENBQUM7d0JBQzVCLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO29CQUNuQixDQUFDLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2pDO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxVQUFDLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxLQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsRUFBeEMsQ0FBd0MsQ0FBQyxDQUFDO2FBRXJHO1NBQ0Y7UUFDRCxJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7Z0JBQ3pCLFNBQVMsRUFBRSxJQUFJO2dCQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDMUIsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYTthQUNwQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTyxzQ0FBUSxHQUFoQixVQUFpQixJQUFJLEVBQUUsV0FBMkI7UUFBbEQsaUJBbUNDO1FBbkNzQiw0QkFBQSxFQUFBLGtCQUEyQjs7UUFDaEQsSUFBTSxJQUFJLEdBQW1CLElBQUksY0FBYyxFQUFFLENBQUM7UUFDbEQsSUFBSSxXQUFXLEVBQUU7WUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxVQUFDLENBQUMsSUFBSyxPQUFBLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQWhCLENBQWdCLENBQUMsQ0FBQztTQUNoSDtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDeEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXhDLElBQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO1lBQ2xCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ1YsSUFDRSxDQUFDLElBQUksUUFBUTtnQkFDYixDQUFDLElBQUksVUFBVTtnQkFDZixDQUFDLElBQUksU0FBUztnQkFDZCxDQUFDLElBQUksV0FBVztnQkFDaEIsQ0FBQyxJQUFJLFVBQVU7Z0JBQ2YsQ0FBQyxJQUFJLE1BQU07Z0JBQ1gsQ0FBQyxJQUFJLFlBQVk7Z0JBQ2pCLENBQUMsSUFBSSxRQUFRO2dCQUNiLENBQUMsSUFBSSxRQUFRO2dCQUNiLENBQUMsSUFBSSxlQUFlO2dCQUNwQixDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFDcEI7Z0JBQ0EseUJBQXlCO2dCQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2hCO1NBQ0Y7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPO1FBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDcEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTywrQ0FBaUIsR0FBekIsVUFBMEIsSUFBSSxFQUFFLENBQUM7UUFBakMsaUJBbUNDO1FBbENDLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2xHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUMsR0FBRztvQkFDaEMsSUFBSSxHQUFHLENBQUMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksRUFBRTt3QkFDcEMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7d0JBR2YsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEtBQUksQ0FBQyxhQUFhLEtBQUssUUFBUSxFQUFFOzRCQUNqRCxLQUFJLENBQUMsZUFBZSxHQUFHLEtBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFVBQUMsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxFQUF2QyxDQUF1QyxDQUFDLENBQUM7NEJBQ25HLEtBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3lCQUNoQzt3QkFDRCxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksS0FBSSxDQUFDLGFBQWEsS0FBSyxRQUFRLEVBQUU7NEJBQ2xELEtBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsVUFBQyxDQUFDLElBQUssT0FBQSxDQUFDLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFJLENBQUMsUUFBUSxDQUFDLEVBQXZDLENBQXVDLENBQUMsQ0FBQzt5QkFDcEc7d0JBR0QsS0FBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDaEM7eUJBQU07d0JBQ0wsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7d0JBQ2YsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEtBQUksQ0FBQyxhQUFhLEtBQUssUUFBUSxFQUFFOzRCQUNqRCxLQUFJLENBQUMsYUFBYSxHQUFHLEtBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQUMsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxFQUF2QyxDQUF1QyxDQUFDLENBQUM7NEJBQy9GLEtBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3lCQUM5Qjt3QkFDRCxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksS0FBSSxDQUFDLGFBQWEsS0FBSyxRQUFRLEVBQUU7NEJBQ2xELEtBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBQyxDQUFDLElBQUssT0FBQSxDQUFDLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFJLENBQUMsUUFBUSxDQUFDLEVBQXZDLENBQXVDLENBQUMsQ0FBQzt5QkFDaEc7cUJBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzthQUVqQjtTQUNGO0lBQ0gsQ0FBQztJQUVPLGdEQUFrQixHQUExQixVQUEyQixJQUFJO1FBQzdCLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzdCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQztZQUU1QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3pCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtvQkFDakUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUU7d0JBQ2hELFdBQVcsR0FBRyxLQUFLLENBQUM7d0JBQ3BCLFNBQVMsR0FBRyxJQUFJLENBQUM7cUJBQ2xCO29CQUNELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTt3QkFDdEcsU0FBUyxHQUFHLEtBQUssQ0FBQztxQkFDbkI7b0JBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUU7d0JBQ2hELGVBQWUsR0FBRyxJQUFJLENBQUM7d0JBQ3ZCLFdBQVcsR0FBRyxLQUFLLENBQUM7d0JBQ3BCLFNBQVMsR0FBRyxJQUFJLENBQUM7d0JBQ2pCLFNBQVMsR0FBRyxLQUFLLENBQUM7cUJBQ25CO2lCQUNGO2FBQ0Y7WUFFRCxJQUFJLFNBQVMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUNoRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQzthQUNwQjtZQUNELElBQUksU0FBUyxLQUFLLElBQUksRUFBRTtnQkFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7YUFDcEI7WUFDRCxJQUFJLFdBQVcsS0FBSyxJQUFJLEVBQUU7Z0JBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2FBQ3JCO1lBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3RHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDMUM7U0FDRjtJQUNILENBQUM7SUFHRCxzQ0FBUSxHQUFSO1FBQUEsaUJBTUM7UUFMQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFDLElBQXlCO1lBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNoQixLQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQseUNBQVcsR0FBWCxVQUFZLENBQWEsRUFBRSxJQUFJO1FBQzdCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxRQUFRLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBR0QsK0NBQWlCLEdBQWpCLFVBQWtCLENBQWEsRUFBRSxJQUFJLEVBQUUsSUFBWTtRQUFaLHFCQUFBLEVBQUEsWUFBWTtRQUNqRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNwQixTQUFTLEVBQUUsSUFBSTtZQUNmLFNBQVMsRUFBRSxDQUFDO1lBQ1osSUFBSSxNQUFBO1lBQ0osSUFBSSxNQUFBO1NBQ0wsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELHdDQUFVLEdBQVYsVUFBVyxJQUFJLEVBQUUsSUFBWTtRQUFaLHFCQUFBLEVBQUEsWUFBWTtRQUMzQix1Q0FBdUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRTtZQUM1QyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxFQUFFO2FBRTVEO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMvQjtTQUVGO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMzQixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssUUFBUSxFQUFFO2dCQUNuQyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxFQUFFO2lCQUU1RDtxQkFBTTtvQkFDTCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQy9CO2FBQ0Y7WUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2pGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6QixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNoQztZQUNELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDcEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUM5QztpQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDNUQsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUM5QztTQUNGO0lBQ0gsQ0FBQztJQUVELGdEQUFrQixHQUFsQjtRQUFBLGlCQTJIQztRQTFIQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFVBQUMsS0FBSztZQUVyRCxJQUFJLEtBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDMUIsS0FBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsS0FBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFFOUIsS0FBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBQyxFQUFFO29CQUNuQixFQUFFLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztvQkFFbEIsSUFBSSxLQUFJLENBQUMsY0FBYyxJQUFJLE9BQU8sSUFBSSxFQUFFLENBQUMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksRUFBRTt3QkFDcEUsRUFBRSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztxQkFDNUI7b0JBRUQsSUFBSSxLQUFJLENBQUMsY0FBYyxJQUFJLFNBQVMsSUFBSSxFQUFFLENBQUMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEtBQUssRUFBRTt3QkFDdkUsRUFBRSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztxQkFDNUI7b0JBRUQsSUFBSSxLQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTt3QkFDcEMsS0FBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxVQUFDLENBQU07NEJBQ25DLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUU7Z0NBQ2pDLElBQUksRUFBRSxDQUFDLEtBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLEVBQUU7b0NBQ2xDLG9DQUFvQztvQ0FDcEMsS0FBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQ0FDZCxJQUFJO2lDQUVMO3FDQUFNO29DQUNMLEtBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7aUNBQ3JCOzZCQUNGO3dCQUNILENBQUMsQ0FBQyxDQUFBO3FCQUNIO3lCQUFNLElBQUksS0FBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksRUFBRTt3QkFDekMsSUFBSSxFQUFFLENBQUMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsS0FBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksSUFBSSxFQUFFOzRCQUN4RSxtQ0FBbUM7NEJBQ25DLEtBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ2QsSUFBSTt5QkFFTDs2QkFBTSxJQUFJLEVBQUUsQ0FBQyxLQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLEVBQUU7NEJBQzdDLEtBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7eUJBQ3JCO3FCQUVGO2dCQUtILENBQUMsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsS0FBSSxDQUFDLE9BQU8sR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFDLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQXBDLENBQW9DLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEYsS0FBSSxDQUFDLFFBQVEsR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFDLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQXBDLENBQW9DLENBQUMsQ0FBQztnQkFDbEYsSUFBSSxLQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtvQkFDOUIsS0FBSSxDQUFDLFdBQVcsQ0FBQyxLQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQy9CLElBQU0sUUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO29CQUVqQyxJQUFJLEtBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTt3QkFFMUIsSUFBSSxLQUFJLENBQUMsT0FBTyxDQUFDLEtBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFJLENBQUMsT0FBTyxDQUFDLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOzRCQUM3RSxRQUFNLENBQUMsT0FBTyxDQUFDLFVBQUMsRUFBRTtnQ0FDaEIsS0FBSSxDQUFDLE9BQU8sQ0FBQyxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSSxDQUFDLE9BQU8sQ0FBQyxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDOzRCQUMzRSxDQUFDLENBQUMsQ0FBQzt5QkFDSjs2QkFBTTs0QkFDTCxLQUFJLENBQUMsT0FBTyxDQUFDLEtBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFNLENBQUM7eUJBQ3hDO2dEQUVRLENBQUM7NEJBQ1IsSUFBSSxLQUFJLENBQUMsY0FBYyxJQUFJLE9BQU8sSUFBSSxRQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksRUFBRTtnQ0FDM0UsUUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQzs2QkFDbkM7NEJBRUQsSUFBSSxLQUFJLENBQUMsY0FBYyxJQUFJLFNBQVMsSUFBSSxRQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEtBQUssRUFBRTtnQ0FDOUUsUUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQzs2QkFDbkM7NEJBQ0QsSUFBSSxLQUFJLENBQUMsYUFBYSxLQUFLLFFBQVEsSUFBSSxLQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0NBQ2hFLFFBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0NBRTdGLElBQ0UsS0FBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssSUFBSTtvQ0FDNUIsQ0FBQyxLQUFJLENBQUMsYUFBYSxJQUFJLFVBQVUsQ0FBQztvQ0FDbEMsUUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxLQUFLLEVBQ3ZDO29DQUNBLEtBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBQyxDQUFDLElBQUssT0FBQSxDQUFDLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLFFBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsUUFBUSxDQUFDLEVBQTdDLENBQTZDLENBQUMsQ0FBQztvQ0FDckcsS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUNBQ3BDOzZCQUNGO2lDQUFNO2dDQUNMLFFBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDOzZCQUMxQjs0QkFDRCxRQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLEtBQUksQ0FBQyxPQUFPLENBQUM7NEJBR3BDLElBQUksS0FBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0NBQ3BDLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBQyxDQUFNO29DQUNuQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFO3dDQUN4QyxJQUFJLFFBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxFQUFFOzRDQUN6QyxtQ0FBbUM7NENBQ25DLEtBQUksQ0FBQyxJQUFJLENBQUMsUUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NENBQ3JCLElBQUk7eUNBRUw7NkNBQU07NENBQ0wsS0FBSSxDQUFDLFVBQVUsQ0FBQyxRQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt5Q0FDNUI7cUNBQ0Y7Z0NBQ0gsQ0FBQyxDQUFDLENBQUE7NkJBQ0g7aUNBQU0sSUFBSSxLQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxFQUFFO2dDQUN6QyxJQUFJLFFBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxJQUFJLFFBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLEVBQUU7b0NBQ3RGLG1DQUFtQztvQ0FDbkMsS0FBSSxDQUFDLElBQUksQ0FBQyxRQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQ0FDckIsSUFBSTtpQ0FFTDtxQ0FBTSxJQUFJLFFBQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLEVBQUU7b0NBQ3BELEtBQUksQ0FBQyxVQUFVLENBQUMsUUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUNBQzVCOzZCQUNGOzt3QkEvQ0gsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO29DQUE3QixDQUFDO3lCQW1EVDt3QkFFRCxLQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7cUJBQzVCO2lCQUNGO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCw2Q0FBZSxHQUFmO1FBQ0UsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLFFBQVEsRUFBRTtZQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUMzQjtRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFRCxzQkFBc0I7SUFFdEIsSUFBSTtJQUVKLHlDQUFXLEdBQVgsVUFBWSxDQUFRLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztZQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6QjtRQUNELENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCx1Q0FBUyxHQUFULFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztTQUNuQjtRQUNELENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxrQ0FBSSxHQUFKLFVBQUssQ0FBQztRQUFOLGlCQTBCQztRQXpCQyx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakksSUFBTSxVQUFVLEdBQTZCLElBQUksd0JBQXdCLEVBQUUsQ0FBQztnQkFDNUUsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDakQsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEMsVUFBVSxDQUFDLE9BQU8sR0FBRyxVQUFDLEtBQWM7b0JBQ2xDLEtBQUksQ0FBQyxXQUFXLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNoQyxLQUFJLENBQUMsV0FBVyxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDaEMsSUFBSSxLQUFLLEVBQUU7d0JBQ1QsS0FBSSxDQUFDLFlBQVksQ0FBQyxLQUFJLENBQUMsUUFBUSxFQUFFLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztxQkFDakQ7eUJBQU07d0JBQ0wsS0FBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7cUJBQ3pCO2dCQUNILENBQUMsQ0FBQztnQkFDRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNuQztTQUNGO1FBRUQsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELHdDQUFVLEdBQVYsVUFBVyxNQUFNLEVBQUUsS0FBSztRQUN0QixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pFLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDbkUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUN6RSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztpQkFDeEI7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNqSCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQ3hEO2FBQ0Y7U0FDRjthQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3hELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztJQUVELDBDQUFZLEdBQVosVUFBYSxTQUFTLEVBQUUsVUFBVTtRQUFsQyxpQkE2QkM7UUE1QkMsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLE9BQU8sRUFBRTtZQUNsQyxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxTQUFTLENBQUMsVUFBVSxFQUFFO1lBQ3hCLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFDLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxLQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssU0FBUyxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsRUFBN0MsQ0FBNkMsQ0FBQyxDQUFDO1NBQzVJO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQUMsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxTQUFTLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxFQUE3QyxDQUE2QyxDQUFDLENBQUM7U0FDcEY7UUFDRCxTQUFTLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUNsQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3pFLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7U0FDN0U7YUFBTTtZQUNMLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2pDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO1lBQzNDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0wsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2FBQzFCO1lBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDdkM7UUFDRCxJQUFJLFNBQVMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxRQUFRLEVBQUU7WUFDM0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMvQztRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRTFCLENBQUM7SUFFTyx3Q0FBVSxHQUFsQixVQUFtQixLQUFLLEVBQUUsS0FBSztRQUM3QixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDckQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFTywwQ0FBWSxHQUFwQixVQUFxQixJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUs7UUFBdkMsaUJBb0JDO1FBbkJDLElBQUksS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLEVBQUU7WUFDOUUsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksRUFBRTtnQkFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQzthQUNyQjtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksS0FBSyxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEtBQUssSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO2dCQUM5RSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMvQjtTQUNGO1FBQ0QsSUFBSSxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNsRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFDLE9BQU87Z0JBQ3BDLEtBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVPLHlDQUFXLEdBQW5CLFVBQW9CLElBQUk7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVPLHlDQUFXLEdBQW5CLFVBQW9CLElBQUk7UUFDdEIsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVNLHFDQUFPLEdBQWQsVUFBZSxPQUF3QjtRQUF4Qix3QkFBQSxFQUFBLGVBQXdCO1FBQ3JDLGlCQUFpQjtRQUNqQiwrQkFBK0I7UUFDL0IsbUNBQW1DO1FBQ25DLFVBQVU7UUFDVixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJO0lBQ04sQ0FBQztJQUVNLHdDQUFVLEdBQWpCLFVBQWtCLElBQUk7UUFDcEIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBR00sa0NBQUksR0FBWCxVQUFZLElBQUk7UUFFZCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FFN0I7SUFFSCxDQUFDO0lBRU0sMkNBQWEsR0FBcEIsVUFBcUIsSUFBSTtRQUN2QixJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGlCQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQUksQ0FBQyxDQUFDO1FBQzdFLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sc0NBQVEsR0FBZjtRQUNFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSx1Q0FBUyxHQUFoQjtRQUNFLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxRQUFRLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRU0seUNBQVcsR0FBbEI7UUFDRSxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssUUFBUSxFQUFFO1lBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLDhDQUFnQixHQUF2QjtRQUFBLGlCQU1DO1FBTEMsSUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQUMsQ0FBQztZQUMzQixlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxnREFBa0IsR0FBekI7UUFBQSxpQkFNQztRQUxDLElBQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFVBQUMsQ0FBQztZQUM3QixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRUQsMENBQVksR0FBWixVQUFhLElBQUk7UUFDZixJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUE7UUFDbEIsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDcEMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLFNBQVMsQ0FBQyxJQUFJLE9BQWQsU0FBUyxXQUFTLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFFO1NBRXZEO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVNLGtEQUFvQixHQUEzQjtRQUFBLGlCQVNDO1FBUkMsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFVBQUEsR0FBRztZQUM1QixJQUFJLEdBQUcsR0FBRyxLQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLElBQUksR0FBRyxFQUFFO2dCQUNQLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7O2dCQS9rQndCLFVBQVU7O0lBakZuQztRQURDLFlBQVksQ0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7a0NBQzlCLFdBQVc7NkRBQU07SUFHL0I7UUFEQyxZQUFZLENBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7a0NBQzFCLHFCQUFxQjttRUFBQztJQUdsRDtRQURDLEtBQUssRUFBRTs7OERBQ3dDO0lBR2hEO1FBREMsS0FBSyxFQUFFOzsrREFDNEM7SUFNcEQ7UUFEQyxLQUFLLEVBQUU7O2tFQUN5QjtJQUdqQztRQURDLEtBQUssRUFBRTs7cUVBQzZCO0lBR3JDO1FBREMsS0FBSyxFQUFFOztpRUFDcUI7SUFHN0I7UUFEQyxLQUFLLEVBQUU7O3lEQUNnQjtJQUd4QjtRQURDLEtBQUssRUFBRTs7OERBQ3dCO0lBR2hDO1FBREMsS0FBSyxFQUFFOzt5REFDa0I7SUFHMUI7UUFEQyxLQUFLLEVBQUU7OzREQUNvQjtJQUc1QjtRQURDLEtBQUssRUFBRTs7MERBQ21CO0lBRzNCO1FBREMsS0FBSyxFQUFFOztxREFDaUI7SUFHekI7UUFEQyxNQUFNLEVBQUU7a0NBQ1MsWUFBWTtpRUFBd0Y7SUFHdEg7UUFEQyxNQUFNLEVBQUU7a0NBQ00sWUFBWTs4REFBZ0M7SUFHM0Q7UUFEQyxNQUFNLEVBQUU7a0NBQ0ksWUFBWTs0REFBZ0U7SUFHekY7UUFEQyxNQUFNLEVBQUU7a0NBQ00sWUFBWTs4REFBZ0M7SUFHM0Q7UUFEQyxNQUFNLEVBQUU7a0NBQ0csWUFBWTsyREFBZ0M7SUFHeEQ7UUFEQyxNQUFNLEVBQUU7a0NBQ0ksWUFBWTs0REFBMEU7SUFHbkc7UUFEQyxNQUFNLEVBQUU7a0NBQ2UsWUFBWTt1RUFBZ0Y7SUFpQnBIO1FBREMsS0FBSyxFQUFFOztpRUFDOEU7SUEvRTNFLG1CQUFtQjtRQU4vQixTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsY0FBYztZQUN4QixnNUVBQXlDO1lBQ3pDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO1NBQ3RDLENBQUM7eUNBcUZ5QixVQUFVO09BbkZ4QixtQkFBbUIsQ0FvcUIvQjtJQUFELDBCQUFDO0NBQUEsQUFwcUJELENBQXlDLGVBQWUsR0FvcUJ2RDtTQXBxQlksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQsIENvbnRlbnRDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhEYXRhU291cmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0YS1zb3VyY2UvZGF0YXNvdXJjZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBWERhdGFFdmVudCwgQVhIdG1sRXZlbnQsIEFYVmFsdWVFdmVudCB9IGZyb20gJy4uL2Jhc2UvZXZlbnRzLmNsYXNzJztcclxuaW1wb3J0IHsgQVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS9lbGVtZW50LmNsYXNzJztcclxuaW1wb3J0IHsgQVhDb250ZXh0TWVudUl0ZW1DbGlja0V2ZW50LCBBWENvbnRleHRNZW51UHJvbWlzZUZ1bmN0aW9uLCBBWENvbnRleHRNZW51RnVuY3Rpb24gfSBmcm9tICcuLi9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEFYTWVudUl0ZW0gfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFYVHJlZVZpZXdOb2RlIHtcclxuICBjaGlsZHJlbjogQVhUcmVlVmlld05vZGVbXTtcclxuICBpdGVtRGF0YTogQVhUcmVlVmlld0l0ZW1EYXRhID0gbmV3IEFYVHJlZVZpZXdJdGVtRGF0YSgpO1xyXG4gIHBhcmVudDogQVhUcmVlVmlld05vZGU7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBWFRyZWVWaWV3SXRlbURhdGEge1xyXG4gIHNlbGVjdGVkOiBib29sZWFuO1xyXG4gIGtleTogc3RyaW5nO1xyXG4gIGRpc2FibGVkOiBib29sZWFuO1xyXG4gIG9wZW46IGJvb2xlYW47XHJcbiAgaGFzQ2hpbGQ6IGJvb2xlYW47XHJcbiAgaXRlbTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhUcmVlVmlld0l0ZW1Nb3ZlZEV2ZW50IHtcclxuICBzb3VyY2U6IEFYVHJlZVZpZXdOb2RlO1xyXG4gIHRhcmdldDogQVhUcmVlVmlld05vZGU7XHJcbiAgcmVzb2x2ZTogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhUcmVlVmlld3NlbGVjdGlvbkNoYW5nZWRFdmVudCBleHRlbmRzIEFYVmFsdWVFdmVudDxBWFRyZWVWaWV3Tm9kZT4ge1xyXG4gIGNvbXBvbmVudDogQVhUcmVlVmlld0NvbXBvbmVudDtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFYVHJlZVZpZXdJdGVtQ2xpY2sgZXh0ZW5kcyBBWEh0bWxFdmVudDxNb3VzZUV2ZW50PiB7XHJcbiAgY29tcG9uZW50OiBBWFRyZWVWaWV3Q29tcG9uZW50O1xyXG4gIGl0ZW06IGFueTtcclxuICBmbGFnOiBib29sZWFuO1xyXG4gIGNhbmNlbD86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtdHJlZS12aWV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS12aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQVhUcmVlVmlld0NvbXBvbmVudCBleHRlbmRzIEFYQmFzZUNvbXBvbmVudCB7XHJcbiAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBub2RlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoQVhEYXRhU291cmNlQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHByaXZhdGUgX2NvbnRlbnREYXRhU291cmNlOiBBWERhdGFTb3VyY2VDb21wb25lbnQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0aW9uTW9kZTogJ3NpbmdsZScgfCAnbXVsdGlwbGUnID0gJ3NpbmdsZSc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0aW9uTGV2ZWw6ICdhbGwnIHwgJ25vZGVzJyB8ICdwYXJlbnRzJyA9ICdhbGwnO1xyXG5cclxuICAvLyB1c2VyIGNhbiBzZXQgb25seSBvbmUgb2YgdGhpcyAvc2VsZWN0ZWRGaWVsZE5hbWUgb3IgL3NlbGV0ZWRLZXlGaWVsZHNcclxuICAvL3NlbGV0ZWRLZXlGaWVsZHMgc2V0IGlkIG9mIG5vZGVzIGFuZCBwYXJlbnRzXHJcbiAgLy9zZWxlY3RlZEZpZWxkTmFtZSBzZXQgbmFtZSBvZiBmaWVsZHMgdGhhdCBzZXQgc2VsZWN0ZXNcclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGVkRmllbGROYW1lOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdE5vZGVzUmVjdXJzaXZlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZWxldGVkS2V5RmllbGRzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGtleUZpZWxkOiBzdHJpbmcgPSAnaWQnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGhhc0NoaWxkRmllbGQ6IHN0cmluZyA9ICdjaGlsZCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYm9yZGVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBsYXp5TG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYWxsb3dEcmFnOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2l6ZTogJ21kJyB8ICdzbScgPSAnbWQnO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBzZWxlY3Rpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhUcmVlVmlld3NlbGVjdGlvbkNoYW5nZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYVHJlZVZpZXdzZWxlY3Rpb25DaGFuZ2VkRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uSXRlbU9wZW5pbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhUcmVlVmlld0l0ZW1DbGljaz4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYVHJlZVZpZXdJdGVtQ2xpY2s+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uSXRlbUNsb3Npbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uSXRlbURyYWc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uSXRlbU1vdmVkOiBFdmVudEVtaXR0ZXI8QVhUcmVlVmlld0l0ZW1Nb3ZlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhUcmVlVmlld0l0ZW1Nb3ZlZEV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvbkNvbnRleHRNZW51SXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhDb250ZXh0TWVudUl0ZW1DbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhDb250ZXh0TWVudUl0ZW1DbGlja0V2ZW50PigpO1xyXG5cclxuICBzaG93U2VsZWN0Qm94OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGxpc3Q6IGFueVtdID0gW107XHJcbiAgaXRlbVJvdzogYW55O1xyXG4gIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XHJcbiAgc2VsZWN0ZWRQYXJlbnRzOiBhbnlbXSA9IFtdO1xyXG4gIGxvYWRBbGxDaGlsZHJlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGxpc3RMb2FkOiBhbnlbXSA9IFtdO1xyXG4gIGl0ZW1Ecm9wOiBhbnk7XHJcbiAgaXRlbURyYWc6IGFueTtcclxuICB2YWxpZERyb3A6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGxvY2tlZERyYWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjaGlsZEZpZWxkOiBzdHJpbmcgPSAnY2hpbGRlcmVuJztcclxuICBzaG93Q29udGV4dE1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIGNvbnRleHRNZW51SXRlbXM6IEFYTWVudUl0ZW1bXSB8IEFYQ29udGV4dE1lbnVQcm9taXNlRnVuY3Rpb24gfCBBWENvbnRleHRNZW51RnVuY3Rpb247XHJcblxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVPbkNvbnRleHRNZW51SXRlbShlOiBBWENvbnRleHRNZW51SXRlbUNsaWNrRXZlbnQpIHtcclxuICAgIHRoaXMub25Db250ZXh0TWVudUl0ZW1DbGljay5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIHRoaXMubGlzdCA9IFtdO1xyXG4gICAgdGhpcy5fY29udGVudERhdGFTb3VyY2UuZmV0Y2gobnVsbCk7XHJcbiAgfVxyXG5cclxuICBpbnRlcm5hbFNlbGVjdEl0ZW0oaXRlbSwgdXNlckNoYW5nZTogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIGlmIChpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IGZhbHNlIHx8IHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScpIHtcclxuICAgICAgaXRlbS5zZWxlY3QgPSAhaXRlbS5zZWxlY3Q7XHJcbiAgICAgIGlmIChpdGVtLnBhcmVudE5vZGUgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlUGFyZW50U2VsZWN0KGl0ZW0ucGFyZW50Tm9kZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGl0ZW0uc2VsZWN0ID09PSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgIGUuc2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGl0ZW1bdGhpcy5rZXlGaWVsZF0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtLnNlbGVjdCA9ICFpdGVtLnNlbGVjdDtcclxuXHJcbiAgICAgIGlmIChpdGVtLnBhcmVudE5vZGUgJiYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ211bHRpcGxlJykpIHtcclxuICAgICAgICB0aGlzLmNoYW5nZVBhcmVudFNlbGVjdChpdGVtLnBhcmVudE5vZGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aXBsZScpIHtcclxuICAgICAgICB0aGlzLmNoYW5nZUNoaWxkU2VsZWN0KGl0ZW0sIGl0ZW0uc2VsZWN0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGl0ZW0uc2VsZWN0ID09IHRydWUpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnKSB7XHJcblxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMucHVzaChpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMuZm9yRWFjaChlID0+IHtcclxuICAgICAgICAgICAgZS5zZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSBbXTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRzID0gdGhpcy5zZWxlY3RlZFBhcmVudHMuZmlsdGVyKChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSBpdGVtW3RoaXMua2V5RmllbGRdKTtcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh1c2VyQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMubWFrZU5vZGUoaXRlbSksXHJcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1ha2VOb2RlKGl0ZW0sIGFkZENoaWxkcmVuOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgY29uc3Qgbm9kZTogQVhUcmVlVmlld05vZGUgPSBuZXcgQVhUcmVlVmlld05vZGUoKTtcclxuICAgIGlmIChhZGRDaGlsZHJlbikge1xyXG4gICAgICBub2RlLmNoaWxkcmVuID0gaXRlbVt0aGlzLmNoaWxkRmllbGRdID09PSB1bmRlZmluZWQgPyBbXSA6IGl0ZW1bdGhpcy5jaGlsZEZpZWxkXT8ubWFwKChtKSA9PiB0aGlzLm1ha2VOb2RlKG0pKTtcclxuICAgIH1cclxuICAgIG5vZGUuaXRlbURhdGEuZGlzYWJsZWQgPSBpdGVtLmRpc2FibGVkID09PSB0cnVlID8gaXRlbS5kaXNhYmxlZCA6IGZhbHNlO1xyXG4gICAgbm9kZS5pdGVtRGF0YS5vcGVuID0gaXRlbS5vcGVuID09PSB0cnVlID8gaXRlbS5vcGVuIDogZmFsc2U7XHJcbiAgICBub2RlLml0ZW1EYXRhLmtleSA9IGl0ZW1bdGhpcy5rZXlGaWVsZF07XHJcblxyXG4gICAgY29uc3QgYyA9IFtdO1xyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgZm9yICh2YXIgayBpbiBpdGVtKSB7XHJcbiAgICAgIGkgPSBpICsgMTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGsgIT0gJ3NlbGVjdCcgJiZcclxuICAgICAgICBrICE9ICdoYXNDaGlsZCcgJiZcclxuICAgICAgICBrICE9ICdsb2FkaW5nJyAmJlxyXG4gICAgICAgIGsgIT0gJ3JlcXVlc3RJZCcgJiZcclxuICAgICAgICBrICE9ICdkaXNhYmxlZCcgJiZcclxuICAgICAgICBrICE9ICdvcGVuJyAmJlxyXG4gICAgICAgIGsgIT0gJ3BhcmVudE5vZGUnICYmXHJcbiAgICAgICAgayAhPSAndG9nZ2xlJyAmJlxyXG4gICAgICAgIGsgIT0gJ2xvYWRlZCcgJiZcclxuICAgICAgICBrICE9ICdpbmRldGVybWluYXRlJyAmJlxyXG4gICAgICAgIGsgIT0gdGhpcy5jaGlsZEZpZWxkXHJcbiAgICAgICkge1xyXG4gICAgICAgIC8vYy5wdXNoKHsgazogaXRlbVtrXSB9KTtcclxuICAgICAgICBjW2tdID0gaXRlbVtrXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbm9kZS5pdGVtRGF0YS5pdGVtID0gYzsgLy9UTyBET1xyXG4gICAgbm9kZS5pdGVtRGF0YS5zZWxlY3RlZCA9IGl0ZW0uc2VsZWN0ID09PSB0cnVlID8gaXRlbS5zZWxlY3QgOiBmYWxzZTtcclxuICAgIG5vZGUuaXRlbURhdGEuaGFzQ2hpbGQgPSBpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF07XHJcbiAgICBub2RlLnBhcmVudCA9IGl0ZW0ucGFyZW50Tm9kZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHRoaXMubWFrZU5vZGUoaXRlbS5wYXJlbnROb2RlLCBmYWxzZSk7XHJcbiAgICByZXR1cm4gbm9kZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hhbmdlQ2hpbGRTZWxlY3QoaXRlbSwgcykge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0Tm9kZXNSZWN1cnNpdmUpIHtcclxuICAgICAgaXRlbS5zZWxlY3QgPSBzO1xyXG4gICAgICBpZiAoaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSB0cnVlICYmIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXSAmJiBpdGVtW3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXS5mb3JFYWNoKChlbG0pID0+IHtcclxuICAgICAgICAgIGlmIChlbG1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICBlbG0uc2VsZWN0ID0gcztcclxuXHJcblxyXG4gICAgICAgICAgICBpZiAocyA9PT0gdHJ1ZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSB0aGlzLnNlbGVjdGVkUGFyZW50cy5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGVsbVt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMucHVzaChlbG0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzID09PSBmYWxzZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSB0aGlzLnNlbGVjdGVkUGFyZW50cy5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGVsbVt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZUNoaWxkU2VsZWN0KGVsbSwgcyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbG0uc2VsZWN0ID0gcztcclxuICAgICAgICAgICAgaWYgKHMgPT09IHRydWUgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGVsbVt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goZWxtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAocyA9PT0gZmFsc2UgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGVsbVt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpdGVtLnNlbGVjdCA9IHM7XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoYW5nZVBhcmVudFNlbGVjdChpdGVtKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3ROb2Rlc1JlY3Vyc2l2ZSkge1xyXG4gICAgICBsZXQgYWxsc2VsZWN0ID0gdHJ1ZTtcclxuICAgICAgbGV0IGFsbGRlc2VsZWN0ID0gdHJ1ZTtcclxuICAgICAgbGV0IG9uZXNlbGVjdCA9IGZhbHNlO1xyXG4gICAgICBsZXQgaXNpbmRldGVybWluYXRlID0gZmFsc2U7XHJcblxyXG4gICAgICBpZiAoaXRlbVt0aGlzLmNoaWxkRmllbGRdKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGl0ZW1bdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgIGlmIChpdGVtW3RoaXMuY2hpbGRGaWVsZF1baW5kZXhdLnNlbGVjdCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICBhbGxkZXNlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBvbmVzZWxlY3QgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGl0ZW1bdGhpcy5jaGlsZEZpZWxkXVtpbmRleF0uc2VsZWN0ID09PSBmYWxzZSB8fCBpdGVtW3RoaXMuY2hpbGRGaWVsZF1baW5kZXhdLnNlbGVjdCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGFsbHNlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGl0ZW1bdGhpcy5jaGlsZEZpZWxkXVtpbmRleF0uc2VsZWN0ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlzaW5kZXRlcm1pbmF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIGFsbGRlc2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIG9uZXNlbGVjdCA9IHRydWU7XHJcbiAgICAgICAgICAgIGFsbHNlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG9uZXNlbGVjdCB8fCAoaXNpbmRldGVybWluYXRlICYmICFhbGxzZWxlY3QpKSB7XHJcbiAgICAgICAgaXRlbS5zZWxlY3QgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChhbGxzZWxlY3QgPT09IHRydWUpIHtcclxuICAgICAgICBpdGVtLnNlbGVjdCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGFsbGRlc2VsZWN0ID09PSB0cnVlKSB7XHJcbiAgICAgICAgaXRlbS5zZWxlY3QgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS5wYXJlbnROb2RlICYmIGl0ZW0ucGFyZW50Tm9kZVt0aGlzLmNoaWxkRmllbGRdICYmIGl0ZW0ucGFyZW50Tm9kZVt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmNoYW5nZVBhcmVudFNlbGVjdChpdGVtLnBhcmVudE5vZGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uSXRlbUNsaWNrLnN1YnNjcmliZSgoZGF0YTogQVhUcmVlVmlld0l0ZW1DbGljaykgPT4ge1xyXG4gICAgICBpZiAoIWRhdGEuY2FuY2VsKSB7XHJcbiAgICAgICAgdGhpcy50b2dnbGVOb2RlKGRhdGEuaXRlbSwgZGF0YS5mbGFnKTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGl0ZW1kYkNsaWNrKGU6IE1vdXNlRXZlbnQsIGl0ZW0pIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgdGhpcy5oYW5kbGVPbk5vZGVDbGljayhlLCBpdGVtLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBoYW5kbGVPbk5vZGVDbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtLCBmbGFnID0gZmFsc2UpIHtcclxuICAgIHRoaXMub25JdGVtQ2xpY2suZW1pdCh7XHJcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgaHRtbEV2ZW50OiBlLFxyXG4gICAgICBpdGVtLFxyXG4gICAgICBmbGFnXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlTm9kZShpdGVtLCBmbGFnID0gZmFsc2UpIHtcclxuICAgIC8vaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSBmYWxzZSAmJlxyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScgJiYgIWZsYWcpIHtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTGV2ZWwgPT0gJ25vZGVzJyAmJiBpdGVtLmhhc0NoaWxkID09IHRydWUpIHtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbFNlbGVjdEl0ZW0oaXRlbSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtLnRvZ2dsZSA9ICFpdGVtLnRvZ2dsZTtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25MZXZlbCA9PSAnbm9kZXMnICYmIGl0ZW0uaGFzQ2hpbGQgPT0gdHJ1ZSkge1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pbnRlcm5hbFNlbGVjdEl0ZW0oaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSB0cnVlICYmIGl0ZW0ubG9hZGVkICE9PSB0cnVlICYmIHRoaXMubGF6eUxvYWRpbmcpIHtcclxuICAgICAgICB0aGlzLml0ZW1Sb3cgPSBpdGVtO1xyXG4gICAgICAgIGNvbnN0IHVpZCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDAwMCk7XHJcbiAgICAgICAgaXRlbS5yZXF1ZXN0SWQgPSB1aWQ7XHJcbiAgICAgICAgdGhpcy5saXN0TG9hZC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuX2NvbnRlbnREYXRhU291cmNlLmZldGNoKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuc2hvd0xvYWRpbmcodGhpcy5pdGVtUm93KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS50b2dnbGUgJiYgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSB0cnVlKSB7XHJcbiAgICAgICAgaXRlbS5vcGVuID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm9uSXRlbU9wZW5pbmcuZW1pdCh0aGlzLm1ha2VOb2RlKGl0ZW0pKTtcclxuICAgICAgfSBlbHNlIGlmICghaXRlbS50b2dnbGUgJiYgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSB0cnVlKSB7XHJcbiAgICAgICAgaXRlbS5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vbkl0ZW1DbG9zaW5nLmVtaXQodGhpcy5tYWtlTm9kZShpdGVtKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NvbnRlbnREYXRhU291cmNlLmZldGNoKG51bGwpO1xyXG4gICAgdGhpcy5fY29udGVudERhdGFTb3VyY2Uub25EYXRhUmVjZWl2ZWQuc3Vic2NyaWJlKChfZGF0YSkgPT4ge1xyXG5cclxuICAgICAgaWYgKHRoaXMubGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmhpZGVMb2FkaW5nKG51bGwpO1xyXG4gICAgICAgIHRoaXMubGlzdCA9IF9kYXRhLmRhdGEucmVzdWx0O1xyXG5cclxuICAgICAgICB0aGlzLmxpc3QuZm9yRWFjaCgoZWwpID0+IHtcclxuICAgICAgICAgIGVsLnNlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkxldmVsID09ICdub2RlcycgJiYgZWxbdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIGVsLmRpc2FibGVkQ2hlY2tCb3ggPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkxldmVsID09ICdwYXJlbnRzJyAmJiBlbFt0aGlzLmhhc0NoaWxkRmllbGRdID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGVsLmRpc2FibGVkQ2hlY2tCb3ggPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnNlbGV0ZWRLZXlGaWVsZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGV0ZWRLZXlGaWVsZHMuZm9yRWFjaCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG4uaW5jbHVkZXMoZWxbdGhpcy5rZXlGaWVsZF0pKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxbdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vICBpZiAodGhpcy5zZWxlY3ROb2Rlc1JlY3Vyc2l2ZSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9wZW4oZWwpO1xyXG4gICAgICAgICAgICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGVsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRGaWVsZE5hbWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoZWxbdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSB0cnVlICYmIGVsW3RoaXMuc2VsZWN0ZWRGaWVsZE5hbWVdID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAvLyBpZiAodGhpcy5zZWxlY3ROb2Rlc1JlY3Vyc2l2ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMub3BlbihlbCk7XHJcbiAgICAgICAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChlbFt0aGlzLnNlbGVjdGVkRmllbGROYW1lXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGVsKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pdGVtUm93ID0gdGhpcy5saXN0TG9hZC5maWx0ZXIoKGMpID0+IGMucmVxdWVzdElkID09PSBfZGF0YS5kYXRhLnJlcXVlc3RJZClbMF07XHJcbiAgICAgICAgdGhpcy5saXN0TG9hZCA9IHRoaXMubGlzdExvYWQuZmlsdGVyKChjKSA9PiBjLnJlcXVlc3RJZCAhPT0gX2RhdGEuZGF0YS5yZXF1ZXN0SWQpO1xyXG4gICAgICAgIGlmICh0aGlzLml0ZW1Sb3cgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5oaWRlTG9hZGluZyh0aGlzLml0ZW1Sb3cpO1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gX2RhdGEuZGF0YS5yZXN1bHQ7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMubGlzdC5sZW5ndGggIT09IDApIHtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLml0ZW1Sb3dbdGhpcy5jaGlsZEZpZWxkXSAmJiB0aGlzLml0ZW1Sb3dbdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgcmVzdWx0LmZvckVhY2goKGVsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1Sb3dbdGhpcy5jaGlsZEZpZWxkXVt0aGlzLml0ZW1Sb3dbdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGhdID0gZWw7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pdGVtUm93W3RoaXMuY2hpbGRGaWVsZF0gPSByZXN1bHQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTGV2ZWwgPT0gJ25vZGVzJyAmJiByZXN1bHRbaV1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbaV0uZGlzYWJsZWRDaGVja0JveCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25MZXZlbCA9PSAncGFyZW50cycgJiYgcmVzdWx0W2ldW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtpXS5kaXNhYmxlZENoZWNrQm94ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScgJiYgdGhpcy5zZWxlY3ROb2Rlc1JlY3Vyc2l2ZSkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldLnNlbGVjdCA9IHRoaXMuaXRlbVJvdy5zZWxlY3QgPT09ICh1bmRlZmluZWQgfHwgbnVsbCkgPyBmYWxzZSA6IHRoaXMuaXRlbVJvdy5zZWxlY3Q7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLml0ZW1Sb3cuc2VsZWN0ID09PSB0cnVlICYmXHJcbiAgICAgICAgICAgICAgICAgICh0aGlzLnNlbGVjdGlvbk1vZGUgPT0gJ211bHRpcGxlJykgJiZcclxuICAgICAgICAgICAgICAgICAgcmVzdWx0W2ldW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IGZhbHNlXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcigoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gcmVzdWx0W2ldW3RoaXMua2V5RmllbGRdKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2gocmVzdWx0W2ldKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldLnNlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXN1bHRbaV0ucGFyZW50Tm9kZSA9IHRoaXMuaXRlbVJvdztcclxuXHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGV0ZWRLZXlGaWVsZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxldGVkS2V5RmllbGRzLmZvckVhY2goKG46IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAobi5pbmNsdWRlcyhyZXN1bHRbaV1bdGhpcy5rZXlGaWVsZF0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdFtpXVt0aGlzLmhhc0NoaWxkRmllbGRdID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW4ocmVzdWx0W2ldKTtcclxuICAgICAgICAgICAgICAgICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShyZXN1bHRbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRGaWVsZE5hbWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdFtpXVt0aGlzLmhhc0NoaWxkRmllbGRdID09IHRydWUgJiYgcmVzdWx0W2ldW3RoaXMuc2VsZWN0ZWRGaWVsZE5hbWVdID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuc2VsZWN0Tm9kZXNSZWN1cnNpdmUpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuKHJlc3VsdFtpXSk7XHJcbiAgICAgICAgICAgICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFtpXVt0aGlzLnNlbGVjdGVkRmllbGROYW1lXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShyZXN1bHRbaV0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5pdGVtUm93LmxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XHJcbiAgICAgIHRoaXMuc2hvd1NlbGVjdEJveCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dDb250ZXh0TWVudSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLyBvbkl0ZW1DbGljayhlLCB2KSB7XHJcblxyXG4gIC8vIH1cclxuXHJcbiAgb25EcmFnU3RhcnQoZTogRXZlbnQsIHYpIHtcclxuICAgIGlmICghdGhpcy5sb2NrZWREcmFnKSB7XHJcbiAgICAgIHRoaXMuaXRlbURyYWcgPSB2O1xyXG4gICAgICB0aGlzLm9uSXRlbURyYWcuZW1pdCh2KTtcclxuICAgIH1cclxuICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkRyYWdFbmQoZSwgdikge1xyXG4gICAgaWYgKCF0aGlzLmxvY2tlZERyYWcpIHtcclxuICAgICAgdGhpcy5pdGVtRHJvcCA9IHY7XHJcbiAgICB9XHJcbiAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgZHJvcChlKSB7XHJcbiAgICAvLyAgdGhpcy5vbkl0ZW1Ecm9wLmVtaXQodGhpcy5pdGVtRHJvcCk7XHJcbiAgICBpZiAoIXRoaXMubG9ja2VkRHJhZykge1xyXG4gICAgICB0aGlzLnZhbGlkRHJvcCA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2FtZUNoaWxkZSh0aGlzLml0ZW1EcmFnLCB0aGlzLml0ZW1Ecm9wKTtcclxuICAgICAgaWYgKHRoaXMudmFsaWREcm9wICYmIHRoaXMuaXRlbURyYWdbdGhpcy5rZXlGaWVsZF0gIT09IHRoaXMuaXRlbURyb3BbdGhpcy5rZXlGaWVsZF0gJiYgdGhpcy5pdGVtRHJhZy5wYXJlbnROb2RlICE9PSB0aGlzLml0ZW1Ecm9wKSB7XHJcbiAgICAgICAgY29uc3QgbW92ZWRFdmVudDogQVhUcmVlVmlld0l0ZW1Nb3ZlZEV2ZW50ID0gbmV3IEFYVHJlZVZpZXdJdGVtTW92ZWRFdmVudCgpO1xyXG4gICAgICAgIG1vdmVkRXZlbnQuc291cmNlID0gdGhpcy5tYWtlTm9kZSh0aGlzLml0ZW1EcmFnKTtcclxuICAgICAgICBtb3ZlZEV2ZW50LnRhcmdldCA9IHRoaXMubWFrZU5vZGUodGhpcy5pdGVtRHJvcCk7XHJcbiAgICAgICAgdGhpcy5sb2NrZWREcmFnID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNob3dMb2FkaW5nKHRoaXMuaXRlbURyYWcpO1xyXG4gICAgICAgIHRoaXMuc2hvd0xvYWRpbmcodGhpcy5pdGVtRHJvcCk7XHJcbiAgICAgICAgbW92ZWRFdmVudC5yZXNvbHZlID0gKHZhbHVlOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhpZGVMb2FkaW5nKHRoaXMuaXRlbURyYWcpO1xyXG4gICAgICAgICAgdGhpcy5oaWRlTG9hZGluZyh0aGlzLml0ZW1Ecm9wKTtcclxuICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmRyYWdEcm9wSXRlbSh0aGlzLml0ZW1EcmFnLCB0aGlzLml0ZW1Ecm9wKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9ja2VkRHJhZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5vbkl0ZW1Nb3ZlZC5lbWl0KG1vdmVkRXZlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIHNhbWVDaGlsZGUocGFyZW50LCBjaGlsZCkge1xyXG4gICAgaWYgKHBhcmVudFt0aGlzLmNoaWxkRmllbGRdICYmIHBhcmVudFt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHBhcmVudFt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGlmIChwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXVtpbmRleF1bdGhpcy5rZXlGaWVsZF0gPT0gY2hpbGRbdGhpcy5rZXlGaWVsZF0pIHtcclxuICAgICAgICAgIHRoaXMudmFsaWREcm9wID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXVtpbmRleF1bdGhpcy5jaGlsZEZpZWxkXSAmJiBwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXVtpbmRleF1bdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLnNhbWVDaGlsZGUocGFyZW50W3RoaXMuY2hpbGRGaWVsZF1baW5kZXhdLCBjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHBhcmVudFt0aGlzLmtleUZpZWxkXSA9PSBjaGlsZFt0aGlzLmtleUZpZWxkXSkge1xyXG4gICAgICB0aGlzLnZhbGlkRHJvcCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZHJhZ0Ryb3BJdGVtKGl0ZW1DaGlsZCwgaXRlbVBhcmVudCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTGV2ZWwgPT0gJ25vZGVzJykge1xyXG4gICAgICBpdGVtUGFyZW50LmRpc2FibGVkQ2hlY2tCb3ggPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpdGVtQ2hpbGQucGFyZW50Tm9kZSkge1xyXG4gICAgICBpdGVtQ2hpbGQucGFyZW50Tm9kZVt0aGlzLmNoaWxkRmllbGRdID0gaXRlbUNoaWxkLnBhcmVudE5vZGVbdGhpcy5jaGlsZEZpZWxkXS5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGl0ZW1DaGlsZFt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxpc3QgPSB0aGlzLmxpc3QuZmlsdGVyKChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSBpdGVtQ2hpbGRbdGhpcy5rZXlGaWVsZF0pO1xyXG4gICAgfVxyXG4gICAgaXRlbUNoaWxkLnBhcmVudE5vZGUgPSBpdGVtUGFyZW50O1xyXG4gICAgaWYgKGl0ZW1QYXJlbnRbdGhpcy5jaGlsZEZpZWxkXSAmJiBpdGVtUGFyZW50W3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpdGVtUGFyZW50W3RoaXMuY2hpbGRGaWVsZF1baXRlbVBhcmVudFt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aF0gPSBpdGVtQ2hpbGQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtUGFyZW50W3RoaXMuY2hpbGRGaWVsZF0gPSBbXTtcclxuICAgICAgaXRlbVBhcmVudFt0aGlzLmNoaWxkRmllbGRdWzBdID0gaXRlbUNoaWxkO1xyXG4gICAgICBpZiAoaXRlbVBhcmVudFt0aGlzLmhhc0NoaWxkRmllbGRdID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy50b2dnbGVOb2RlKGl0ZW1QYXJlbnQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGl0ZW1QYXJlbnQudG9nZ2xlID0gIWl0ZW1QYXJlbnQudG9nZ2xlO1xyXG4gICAgICAgIGl0ZW1QYXJlbnQubG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpdGVtUGFyZW50W3RoaXMuaGFzQ2hpbGRGaWVsZF0gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW1DaGlsZC5wYXJlbnROb2RlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VQYXJlbnRTZWxlY3QoaXRlbUNoaWxkLnBhcmVudE5vZGUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2NrZWREcmFnID0gZmFsc2U7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsaXN0Q2hhbmdlKGZpZWxkLCB2YWx1ZSkge1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMubGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgdGhpcy5jaGFuZ2VDaGlsZWQodGhpcy5saXN0W2luZGV4XSwgZmllbGQsIHZhbHVlKTtcclxuICAgIH1cclxuICAgIHRoaXMubG9hZEFsbENoaWxkcmVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoYW5nZUNoaWxlZChpdGVtLCBmaWVsZCwgdmFsdWUpIHtcclxuICAgIGlmIChmaWVsZCA9PT0gJ3RvZ2dsZScgJiYgKGl0ZW0ubG9hZGVkID09PSBmYWxzZSB8fCBpdGVtLmxvYWRlZCA9PT0gdW5kZWZpbmVkKSkge1xyXG4gICAgICBpZiAodGhpcy5sb2FkQWxsQ2hpbGRyZW4gPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLnRvZ2dsZU5vZGUoaXRlbSk7XHJcbiAgICAgICAgaXRlbVtmaWVsZF0gPSB2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbVtmaWVsZF0gPSB2YWx1ZTtcclxuICAgICAgaWYgKGZpZWxkID09PSAnc2VsZWN0JyAmJiBpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IGZhbHNlICYmIHZhbHVlID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChmaWVsZCA9PT0gJ3NlbGVjdCcpIHtcclxuICAgICAgaXRlbS5pbmRldGVybWluYXRlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSB0cnVlICYmIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXSAmJiBpdGVtW3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBpdGVtW3RoaXMuY2hpbGRGaWVsZF0uZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlQ2hpbGVkKGVsZW1lbnQsIGZpZWxkLCB2YWx1ZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93TG9hZGluZyhpdGVtKTogdm9pZCB7XHJcbiAgICBpdGVtLmxvYWRpbmcgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoaWRlTG9hZGluZyhpdGVtKTogdm9pZCB7XHJcbiAgICBpZiAoaXRlbSAhPSBudWxsKSB7XHJcbiAgICAgIGl0ZW0ubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5BbGwobG9hZEFsbDogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAvLyBpZiAobG9hZEFsbCkge1xyXG4gICAgLy8gdGhpcy5sb2FkQWxsQ2hpbGRyZW4gPSB0cnVlO1xyXG4gICAgLy8gdGhpcy5saXN0Q2hhbmdlKCd0b2dnbGUnLCB0cnVlKTtcclxuICAgIC8vfSBlbHNlIHtcclxuICAgIHRoaXMubGlzdENoYW5nZSgndG9nZ2xlJywgdHJ1ZSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0SXRlbShpdGVtKSB7XHJcbiAgICBpZiAoaXRlbVsnc2VsZWN0J10gIT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmludGVybmFsU2VsZWN0SXRlbShpdGVtLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIG9wZW4oaXRlbSkge1xyXG5cclxuICAgIGlmIChpdGVtWyd0b2dnbGUnXSAhPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnRvZ2dsZU5vZGUoaXRlbSwgdHJ1ZSk7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzY3JvbEludG9WaWV3KGl0ZW0pIHtcclxuICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbGlbZGF0YS1pZD0nJHtpdGVtW3RoaXMua2V5RmllbGRdfSddYCk7XHJcbiAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VBbGwoKSB7XHJcbiAgICB0aGlzLmxpc3RDaGFuZ2UoJ3RvZ2dsZScsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RBbGwoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xyXG4gICAgICB0aGlzLmxpc3RDaGFuZ2UoJ3NlbGVjdCcsIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHVuU2VsZWN0QWxsKCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcclxuICAgICAgdGhpcy5saXN0Q2hhbmdlKCdzZWxlY3QnLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3RlZE5vZGVzKCk6IEFYVHJlZVZpZXdOb2RlW10ge1xyXG4gICAgY29uc3Qgc2VsZWN0SXRlbXNOb2RlID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICBzZWxlY3RJdGVtc05vZGUucHVzaCh0aGlzLm1ha2VOb2RlKGUpKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHNlbGVjdEl0ZW1zTm9kZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3RlZFBhcmVudHMoKTogQVhUcmVlVmlld05vZGVbXSB7XHJcbiAgICBjb25zdCBzZWxlY3RJdGVtc1BhcmVudCA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZFBhcmVudHMuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICBzZWxlY3RJdGVtc1BhcmVudC5wdXNoKHRoaXMubWFrZU5vZGUoZSkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc2VsZWN0SXRlbXNQYXJlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRQYXJlbnRzSWQoaXRlbSkge1xyXG4gICAgbGV0IGtleUZpZWxkcyA9IFtdXHJcbiAgICBrZXlGaWVsZHMucHVzaChpdGVtW3RoaXMua2V5RmllbGRdKTtcclxuICAgIGlmIChpdGVtLnBhcmVudE5vZGUpIHtcclxuICAgICAga2V5RmllbGRzLnB1c2goLi4udGhpcy5nZXRQYXJlbnRzSWQoaXRlbS5wYXJlbnROb2RlKSk7XHJcblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGtleUZpZWxkcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3RlZEtleUZpZWxkcygpIHtcclxuICAgIGxldCBrZXlGaWVsZHMgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKGVsbSA9PiB7XHJcbiAgICAgIHZhciBJZHMgPSB0aGlzLmdldFBhcmVudHNJZChlbG0pO1xyXG4gICAgICBpZiAoSWRzKSB7XHJcbiAgICAgICAga2V5RmllbGRzLnB1c2goSWRzKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBrZXlGaWVsZHM7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
748
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi90cmVlLXZpZXcvdHJlZS12aWV3LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFlLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJeEQ7SUFBQTtRQUVFLGFBQVEsR0FBdUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBRTFELENBQUM7SUFBRCxxQkFBQztBQUFELENBQUMsQUFKRCxJQUlDOztBQUVEO0lBQUE7SUFPQSxDQUFDO0lBQUQseUJBQUM7QUFBRCxDQUFDLEFBUEQsSUFPQzs7QUFFRDtJQUFBO0lBSUEsQ0FBQztJQUFELCtCQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7O0FBRUQ7SUFBcUQsbURBQTRCO0lBQWpGOztJQUVBLENBQUM7SUFBRCxzQ0FBQztBQUFELENBQUMsQUFGRCxDQUFxRCxZQUFZLEdBRWhFOztBQUVEO0lBQTRELDBEQUE0QjtJQUF4Rjs7SUFFQSxDQUFDO0lBQUQsNkNBQUM7QUFBRCxDQUFDLEFBRkQsQ0FBNEQsWUFBWSxHQUV2RTs7QUFFRDtJQUF5Qyx1Q0FBdUI7SUFBaEU7O0lBS0EsQ0FBQztJQUFELDBCQUFDO0FBQUQsQ0FBQyxBQUxELENBQXlDLFdBQVcsR0FLbkQ7O0FBT0Q7SUFBeUMsdUNBQWU7SUFzRnRELDZCQUFvQixHQUFlO1FBQW5DLFlB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QW1CLENBK29CL0I7SUFBRCwwQkFBQztDQUFBLEFBL29CRCxDQUF5QyxlQUFlLEdBK29CdkQ7U0Evb0JZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIElucHV0LCBDb250ZW50Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYRGF0YVNvdXJjZUNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGEtc291cmNlL2RhdGFzb3VyY2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhEYXRhRXZlbnQsIEFYSHRtbEV2ZW50LCBBWFZhbHVlRXZlbnQgfSBmcm9tICcuLi9iYXNlL2V2ZW50cy5jbGFzcyc7XHJcbmltcG9ydCB7IEFYQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UvZWxlbWVudC5jbGFzcyc7XHJcbmltcG9ydCB7IEFYQ29udGV4dE1lbnVJdGVtQ2xpY2tFdmVudCwgQVhDb250ZXh0TWVudVByb21pc2VGdW5jdGlvbiwgQVhDb250ZXh0TWVudUZ1bmN0aW9uIH0gZnJvbSAnLi4vY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBBWE1lbnVJdGVtIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBBWFRyZWVWaWV3Tm9kZSB7XHJcbiAgY2hpbGRyZW46IEFYVHJlZVZpZXdOb2RlW107XHJcbiAgaXRlbURhdGE6IEFYVHJlZVZpZXdJdGVtRGF0YSA9IG5ldyBBWFRyZWVWaWV3SXRlbURhdGEoKTtcclxuICBwYXJlbnQ6IEFYVHJlZVZpZXdOb2RlO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhUcmVlVmlld0l0ZW1EYXRhIHtcclxuICBzZWxlY3RlZDogYm9vbGVhbjtcclxuICBrZXk6IHN0cmluZztcclxuICBkaXNhYmxlZDogYm9vbGVhbjtcclxuICBvcGVuOiBib29sZWFuO1xyXG4gIGhhc0NoaWxkOiBib29sZWFuO1xyXG4gIGl0ZW06IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFYVHJlZVZpZXdJdGVtTW92ZWRFdmVudCB7XHJcbiAgc291cmNlOiBBWFRyZWVWaWV3Tm9kZTtcclxuICB0YXJnZXQ6IEFYVHJlZVZpZXdOb2RlO1xyXG4gIHJlc29sdmU6ICh2YWx1ZTogYm9vbGVhbikgPT4gdm9pZDtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFYVHJlZVZpZXdzZWxlY3Rpb25DaGFuZ2VkRXZlbnQgZXh0ZW5kcyBBWFZhbHVlRXZlbnQ8QVhUcmVlVmlld05vZGU+IHtcclxuICBjb21wb25lbnQ6IEFYVHJlZVZpZXdDb21wb25lbnQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBWFRyZWVWaWV3c2VsZXRlZEtleUZpZWxkc0NoYW5nZWRFdmVudCBleHRlbmRzIEFYVmFsdWVFdmVudDxBWFRyZWVWaWV3Tm9kZT4ge1xyXG4gIGNvbXBvbmVudDogQVhUcmVlVmlld0NvbXBvbmVudDtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFYVHJlZVZpZXdJdGVtQ2xpY2sgZXh0ZW5kcyBBWEh0bWxFdmVudDxNb3VzZUV2ZW50PiB7XHJcbiAgY29tcG9uZW50OiBBWFRyZWVWaWV3Q29tcG9uZW50O1xyXG4gIGl0ZW06IGFueTtcclxuICBmbGFnOiBib29sZWFuO1xyXG4gIGNhbmNlbD86IGJvb2xlYW47XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtdHJlZS12aWV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS12aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWFRyZWVWaWV3Q29tcG9uZW50IGV4dGVuZHMgQVhCYXNlQ29tcG9uZW50IHtcclxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIG5vZGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChBWERhdGFTb3VyY2VDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgcHJpdmF0ZSBfY29udGVudERhdGFTb3VyY2U6IEFYRGF0YVNvdXJjZUNvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KClcclxuICBzZWxlY3Rpb25Nb2RlOiAnc2luZ2xlJyB8ICdtdWx0aXBsZScgPSAnc2luZ2xlJztcclxuXHJcbiAgQElucHV0KClcclxuICBzZWxlY3Rpb25MZXZlbDogJ2FsbCcgfCAnbm9kZXMnIHwgJ3BhcmVudHMnID0gJ2FsbCc7XHJcblxyXG4gIC8vIHVzZXIgY2FuIHNldCBvbmx5IG9uZSBvZiB0aGlzIC9zZWxlY3RlZEZpZWxkTmFtZSBvciAvc2VsZXRlZEtleUZpZWxkc1xyXG4gIC8vc2VsZXRlZEtleUZpZWxkcyBzZXQgaWQgb2Ygbm9kZXMgYW5kIHBhcmVudHNcclxuICAvL3NlbGVjdGVkRmllbGROYW1lIHNldCBuYW1lIG9mIGZpZWxkcyB0aGF0IHNldCBzZWxlY3Rlc1xyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0ZWRGaWVsZE5hbWU6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2VsZWN0Tm9kZXNSZWN1cnNpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNlbGV0ZWRLZXlGaWVsZHM6IGFueVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAga2V5RmllbGQ6IHN0cmluZyA9ICdpZCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaGFzQ2hpbGRGaWVsZDogc3RyaW5nID0gJ2NoaWxkJztcclxuXHJcbiAgQElucHV0KClcclxuICBib3JkZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGxhenlMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBhbGxvd0RyYWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBzaXplOiAnbWQnIHwgJ3NtJyA9ICdtZCc7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHNlbGVjdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFRyZWVWaWV3c2VsZWN0aW9uQ2hhbmdlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhUcmVlVmlld3NlbGVjdGlvbkNoYW5nZWRFdmVudD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgc2VsZXRlZEtleUZpZWxkc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFRyZWVWaWV3c2VsZXRlZEtleUZpZWxkc0NoYW5nZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYVHJlZVZpZXdzZWxlY3Rpb25DaGFuZ2VkRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uSXRlbU9wZW5pbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhUcmVlVmlld0l0ZW1DbGljaz4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYVHJlZVZpZXdJdGVtQ2xpY2s+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uSXRlbUNsb3Npbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uSXRlbURyYWc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uSXRlbU1vdmVkOiBFdmVudEVtaXR0ZXI8QVhUcmVlVmlld0l0ZW1Nb3ZlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhUcmVlVmlld0l0ZW1Nb3ZlZEV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvbkNvbnRleHRNZW51SXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhDb250ZXh0TWVudUl0ZW1DbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhDb250ZXh0TWVudUl0ZW1DbGlja0V2ZW50PigpO1xyXG5cclxuICBzaG93U2VsZWN0Qm94OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGxpc3Q6IGFueVtdID0gW107XHJcbiAgaXRlbVJvdzogYW55O1xyXG4gIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XHJcbiAgc2VsZWN0ZWRQYXJlbnRzOiBhbnlbXSA9IFtdO1xyXG4gIGxvYWRBbGxDaGlsZHJlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGxpc3RMb2FkOiBhbnlbXSA9IFtdO1xyXG4gIGl0ZW1Ecm9wOiBhbnk7XHJcbiAgaXRlbURyYWc6IGFueTtcclxuICB2YWxpZERyb3A6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGxvY2tlZERyYWc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjaGlsZEZpZWxkOiBzdHJpbmcgPSAnY2hpbGRlcmVuJztcclxuICBzaG93Q29udGV4dE1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1NlbGVjdGVkSXRlbTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGxvY2VkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBjb250ZXh0TWVudUl0ZW1zOiBBWE1lbnVJdGVtW10gfCBBWENvbnRleHRNZW51UHJvbWlzZUZ1bmN0aW9uIHwgQVhDb250ZXh0TWVudUZ1bmN0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogRWxlbWVudFJlZikge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZU9uQ29udGV4dE1lbnVJdGVtKGU6IEFYQ29udGV4dE1lbnVJdGVtQ2xpY2tFdmVudCkge1xyXG4gICAgdGhpcy5vbkNvbnRleHRNZW51SXRlbUNsaWNrLmVtaXQoZSk7XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKCkge1xyXG4gICAgdGhpcy5saXN0ID0gW107XHJcbiAgICB0aGlzLl9jb250ZW50RGF0YVNvdXJjZS5mZXRjaChudWxsKTtcclxuICB9XHJcblxyXG4gIGludGVybmFsU2VsZWN0SXRlbShpdGVtLCB1c2VyQ2hhbmdlOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgaWYgKGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gZmFsc2UgfHwgdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xyXG4gICAgICBpdGVtLnNlbGVjdCA9ICFpdGVtLnNlbGVjdDtcclxuICAgICAgaWYgKGl0ZW0ucGFyZW50Tm9kZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VQYXJlbnRTZWxlY3QoaXRlbS5wYXJlbnROb2RlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS5zZWxlY3QgPT09IHRydWUpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmZvckVhY2goKGUpID0+IHtcclxuICAgICAgICAgICAgZS5zZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGl0ZW1bdGhpcy5rZXlGaWVsZF0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtLnNlbGVjdCA9ICFpdGVtLnNlbGVjdDtcclxuXHJcbiAgICAgIGlmIChpdGVtLnBhcmVudE5vZGUgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VQYXJlbnRTZWxlY3QoaXRlbS5wYXJlbnROb2RlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGlwbGUnKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VDaGlsZFNlbGVjdChpdGVtLCBpdGVtLnNlbGVjdCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpdGVtLnNlbGVjdCA9PSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ211bHRpcGxlJykge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMucHVzaChpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICBlLnNlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSB0aGlzLnNlbGVjdGVkUGFyZW50cy5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGl0ZW1bdGhpcy5rZXlGaWVsZF0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodXNlckNoYW5nZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdCh7XHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLm1ha2VOb2RlKGl0ZW0pLFxyXG4gICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYWtlTm9kZShpdGVtLCBhZGRDaGlsZHJlbjogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIGNvbnN0IG5vZGU6IEFYVHJlZVZpZXdOb2RlID0gbmV3IEFYVHJlZVZpZXdOb2RlKCk7XHJcbiAgICBpZiAoYWRkQ2hpbGRyZW4pIHtcclxuICAgICAgbm9kZS5jaGlsZHJlbiA9IGl0ZW1bdGhpcy5jaGlsZEZpZWxkXSA9PT0gdW5kZWZpbmVkID8gW10gOiBpdGVtW3RoaXMuY2hpbGRGaWVsZF0/Lm1hcCgobSkgPT4gdGhpcy5tYWtlTm9kZShtKSk7XHJcbiAgICB9XHJcbiAgICBub2RlLml0ZW1EYXRhLmRpc2FibGVkID0gaXRlbS5kaXNhYmxlZCA9PT0gdHJ1ZSA/IGl0ZW0uZGlzYWJsZWQgOiBmYWxzZTtcclxuICAgIG5vZGUuaXRlbURhdGEub3BlbiA9IGl0ZW0ub3BlbiA9PT0gdHJ1ZSA/IGl0ZW0ub3BlbiA6IGZhbHNlO1xyXG4gICAgbm9kZS5pdGVtRGF0YS5rZXkgPSBpdGVtW3RoaXMua2V5RmllbGRdO1xyXG5cclxuICAgIGNvbnN0IGMgPSBbXTtcclxuICAgIGxldCBpID0gMDtcclxuICAgIGZvciAodmFyIGsgaW4gaXRlbSkge1xyXG4gICAgICBpID0gaSArIDE7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBrICE9ICdzZWxlY3QnICYmXHJcbiAgICAgICAgayAhPSAnaGFzQ2hpbGQnICYmXHJcbiAgICAgICAgayAhPSAnbG9hZGluZycgJiZcclxuICAgICAgICBrICE9ICdyZXF1ZXN0SWQnICYmXHJcbiAgICAgICAgayAhPSAnZGlzYWJsZWQnICYmXHJcbiAgICAgICAgayAhPSAnb3BlbicgJiZcclxuICAgICAgICBrICE9ICdwYXJlbnROb2RlJyAmJlxyXG4gICAgICAgIGsgIT0gJ3RvZ2dsZScgJiZcclxuICAgICAgICBrICE9ICdsb2FkZWQnICYmXHJcbiAgICAgICAgayAhPSAnaW5kZXRlcm1pbmF0ZScgJiZcclxuICAgICAgICBrICE9IHRoaXMuY2hpbGRGaWVsZFxyXG4gICAgICApIHtcclxuICAgICAgICAvL2MucHVzaCh7IGs6IGl0ZW1ba10gfSk7XHJcbiAgICAgICAgY1trXSA9IGl0ZW1ba107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIG5vZGUuaXRlbURhdGEuaXRlbSA9IGM7IC8vVE8gRE9cclxuICAgIG5vZGUuaXRlbURhdGEuc2VsZWN0ZWQgPSBpdGVtLnNlbGVjdCA9PT0gdHJ1ZSA/IGl0ZW0uc2VsZWN0IDogZmFsc2U7XHJcbiAgICBub2RlLml0ZW1EYXRhLmhhc0NoaWxkID0gaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdO1xyXG4gICAgbm9kZS5wYXJlbnQgPSBpdGVtLnBhcmVudE5vZGUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB0aGlzLm1ha2VOb2RlKGl0ZW0ucGFyZW50Tm9kZSwgZmFsc2UpO1xyXG4gICAgcmV0dXJuIG5vZGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoYW5nZUNoaWxkU2VsZWN0KGl0ZW0sIHMpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlKSB7XHJcbiAgICAgIGl0ZW0uc2VsZWN0ID0gcztcclxuICAgICAgaWYgKGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSAmJiBpdGVtW3RoaXMuY2hpbGRGaWVsZF0gJiYgaXRlbVt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpdGVtW3RoaXMuY2hpbGRGaWVsZF0uZm9yRWFjaCgoZWxtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZWxtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IHRydWUpIHtcclxuICAgICAgICAgICAgZWxtLnNlbGVjdCA9IHM7XHJcblxyXG4gICAgICAgICAgICBpZiAocyA9PT0gdHJ1ZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSB0aGlzLnNlbGVjdGVkUGFyZW50cy5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGVsbVt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMucHVzaChlbG0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzID09PSBmYWxzZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSB0aGlzLnNlbGVjdGVkUGFyZW50cy5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGVsbVt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlQ2hpbGRTZWxlY3QoZWxtLCBzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGVsbS5zZWxlY3QgPSBzO1xyXG4gICAgICAgICAgICBpZiAocyA9PT0gdHJ1ZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcigoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gZWxtW3RoaXMua2V5RmllbGRdKTtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChlbG0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzID09PSBmYWxzZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcigoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gZWxtW3RoaXMua2V5RmllbGRdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGl0ZW0uc2VsZWN0ID0gcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGFuZ2VQYXJlbnRTZWxlY3QoaXRlbSkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0Tm9kZXNSZWN1cnNpdmUpIHtcclxuICAgICAgbGV0IGFsbHNlbGVjdCA9IHRydWU7XHJcbiAgICAgIGxldCBhbGxkZXNlbGVjdCA9IHRydWU7XHJcbiAgICAgIGxldCBvbmVzZWxlY3QgPSBmYWxzZTtcclxuICAgICAgbGV0IGlzaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgaWYgKGl0ZW1bdGhpcy5jaGlsZEZpZWxkXSkge1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBpdGVtW3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICBpZiAoaXRlbVt0aGlzLmNoaWxkRmllbGRdW2luZGV4XS5zZWxlY3QgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgYWxsZGVzZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICAgICAgb25lc2VsZWN0ID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtW3RoaXMuY2hpbGRGaWVsZF1baW5kZXhdLnNlbGVjdCA9PT0gZmFsc2UgfHwgaXRlbVt0aGlzLmNoaWxkRmllbGRdW2luZGV4XS5zZWxlY3QgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBhbGxzZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtW3RoaXMuY2hpbGRGaWVsZF1baW5kZXhdLnNlbGVjdCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpc2luZGV0ZXJtaW5hdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBhbGxkZXNlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBvbmVzZWxlY3QgPSB0cnVlO1xyXG4gICAgICAgICAgICBhbGxzZWxlY3QgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChvbmVzZWxlY3QgfHwgKGlzaW5kZXRlcm1pbmF0ZSAmJiAhYWxsc2VsZWN0KSkge1xyXG4gICAgICAgIGl0ZW0uc2VsZWN0ID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYWxsc2VsZWN0ID09PSB0cnVlKSB7XHJcbiAgICAgICAgaXRlbS5zZWxlY3QgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChhbGxkZXNlbGVjdCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGl0ZW0uc2VsZWN0ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGl0ZW0ucGFyZW50Tm9kZSAmJiBpdGVtLnBhcmVudE5vZGVbdGhpcy5jaGlsZEZpZWxkXSAmJiBpdGVtLnBhcmVudE5vZGVbdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VQYXJlbnRTZWxlY3QoaXRlbS5wYXJlbnROb2RlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uSXRlbUNsaWNrLnN1YnNjcmliZSgoZGF0YTogQVhUcmVlVmlld0l0ZW1DbGljaykgPT4ge1xyXG4gICAgICBpZiAoIWRhdGEuY2FuY2VsKSB7XHJcbiAgICAgICAgdGhpcy50b2dnbGVOb2RlKGRhdGEuaXRlbSwgZGF0YS5mbGFnKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpdGVtZGJDbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09ICdzaW5nbGUnKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlT25Ob2RlQ2xpY2soZSwgaXRlbSwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVPbk5vZGVDbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtLCBmbGFnID0gZmFsc2UpIHtcclxuICAgIHRoaXMub25JdGVtQ2xpY2suZW1pdCh7XHJcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgaHRtbEV2ZW50OiBlLFxyXG4gICAgICBpdGVtLFxyXG4gICAgICBmbGFnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZU5vZGUoaXRlbSwgZmxhZyA9IGZhbHNlKSB7XHJcbiAgICAvL2l0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gZmFsc2UgJiZcclxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnICYmICFmbGFnKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkxldmVsID09ICdub2RlcycgJiYgaXRlbS5oYXNDaGlsZCA9PSB0cnVlKSB7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbFNlbGVjdEl0ZW0oaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGl0ZW0udG9nZ2xlID0gIWl0ZW0udG9nZ2xlO1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkxldmVsID09ICdub2RlcycgJiYgaXRlbS5oYXNDaGlsZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaW50ZXJuYWxTZWxlY3RJdGVtKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSAmJiBpdGVtLmxvYWRlZCAhPT0gdHJ1ZSAmJiB0aGlzLmxhenlMb2FkaW5nKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtUm93ID0gaXRlbTtcclxuICAgICAgICBjb25zdCB1aWQgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwMDAwMDApO1xyXG4gICAgICAgIGl0ZW0ucmVxdWVzdElkID0gdWlkO1xyXG4gICAgICAgIHRoaXMubGlzdExvYWQucHVzaChpdGVtKTtcclxuICAgICAgICB0aGlzLl9jb250ZW50RGF0YVNvdXJjZS5mZXRjaChpdGVtKTtcclxuICAgICAgICB0aGlzLnNob3dMb2FkaW5nKHRoaXMuaXRlbVJvdyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGl0ZW0udG9nZ2xlICYmIGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGl0ZW0ub3BlbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vbkl0ZW1PcGVuaW5nLmVtaXQodGhpcy5tYWtlTm9kZShpdGVtKSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoIWl0ZW0udG9nZ2xlICYmIGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGl0ZW0ub3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25JdGVtQ2xvc2luZy5lbWl0KHRoaXMubWFrZU5vZGUoaXRlbSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb250ZW50RGF0YVNvdXJjZS5mZXRjaChudWxsKTtcclxuICAgIHRoaXMuX2NvbnRlbnREYXRhU291cmNlLm9uRGF0YVJlY2VpdmVkLnN1YnNjcmliZSgoX2RhdGEpID0+IHtcclxuICAgICAgaWYgKHRoaXMubGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLmhpZGVMb2FkaW5nKG51bGwpO1xyXG4gICAgICAgIHRoaXMubGlzdCA9IF9kYXRhLmRhdGEucmVzdWx0O1xyXG5cclxuICAgICAgICB0aGlzLmxpc3QuZm9yRWFjaCgoZWwpID0+IHtcclxuICAgICAgICAgIGVsLnNlbGVjdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkxldmVsID09ICdub2RlcycgJiYgZWxbdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIGVsLmRpc2FibGVkQ2hlY2tCb3ggPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkxldmVsID09ICdwYXJlbnRzJyAmJiBlbFt0aGlzLmhhc0NoaWxkRmllbGRdID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGVsLmRpc2FibGVkQ2hlY2tCb3ggPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnNlbGV0ZWRLZXlGaWVsZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGV0ZWRLZXlGaWVsZHMuZm9yRWFjaCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG4uaW5jbHVkZXMoZWxbdGhpcy5rZXlGaWVsZF0pKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxbdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vICBpZiAodGhpcy5zZWxlY3ROb2Rlc1JlY3Vyc2l2ZSkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9wZW4oZWwpO1xyXG4gICAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oZWwpO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRJdGVtID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRmllbGROYW1lICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKGVsW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gdHJ1ZSAmJiBlbFt0aGlzLnNlbGVjdGVkRmllbGROYW1lXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuc2VsZWN0Tm9kZXNSZWN1cnNpdmUpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9wZW4oZWwpO1xyXG4gICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChlbFt0aGlzLnNlbGVjdGVkRmllbGROYW1lXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGVsKTtcclxuICAgICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRJdGVtID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pdGVtUm93ID0gdGhpcy5saXN0TG9hZC5maWx0ZXIoKGMpID0+IGMucmVxdWVzdElkID09PSBfZGF0YS5kYXRhLnJlcXVlc3RJZClbMF07XHJcbiAgICAgICAgdGhpcy5saXN0TG9hZCA9IHRoaXMubGlzdExvYWQuZmlsdGVyKChjKSA9PiBjLnJlcXVlc3RJZCAhPT0gX2RhdGEuZGF0YS5yZXF1ZXN0SWQpO1xyXG4gICAgICAgIGlmICh0aGlzLml0ZW1Sb3cgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgdGhpcy5oaWRlTG9hZGluZyh0aGlzLml0ZW1Sb3cpO1xyXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gX2RhdGEuZGF0YS5yZXN1bHQ7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMubGlzdC5sZW5ndGggIT09IDApIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXRlbVJvd1t0aGlzLmNoaWxkRmllbGRdICYmIHRoaXMuaXRlbVJvd1t0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICByZXN1bHQuZm9yRWFjaCgoZWwpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbVJvd1t0aGlzLmNoaWxkRmllbGRdW3RoaXMuaXRlbVJvd1t0aGlzLmNoaWxkRmllbGRdLmxlbmd0aF0gPSBlbDtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLml0ZW1Sb3dbdGhpcy5jaGlsZEZpZWxkXSA9IHJlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25MZXZlbCA9PSAnbm9kZXMnICYmIHJlc3VsdFtpXVt0aGlzLmhhc0NoaWxkRmllbGRdID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtpXS5kaXNhYmxlZENoZWNrQm94ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkxldmVsID09ICdwYXJlbnRzJyAmJiByZXN1bHRbaV1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldLmRpc2FibGVkQ2hlY2tCb3ggPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJyAmJiB0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbaV0uc2VsZWN0ID0gdGhpcy5pdGVtUm93LnNlbGVjdCA9PT0gKHVuZGVmaW5lZCB8fCBudWxsKSA/IGZhbHNlIDogdGhpcy5pdGVtUm93LnNlbGVjdDtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtUm93LnNlbGVjdCA9PT0gdHJ1ZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgPT0gJ211bHRpcGxlJyAmJiByZXN1bHRbaV1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcigoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gcmVzdWx0W2ldW3RoaXMua2V5RmllbGRdKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2gocmVzdWx0W2ldKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldLnNlbGVjdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXN1bHRbaV0ucGFyZW50Tm9kZSA9IHRoaXMuaXRlbVJvdztcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZXRlZEtleUZpZWxkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGV0ZWRLZXlGaWVsZHMuZm9yRWFjaCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChuLmluY2x1ZGVzKHJlc3VsdFtpXVt0aGlzLmtleUZpZWxkXSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0W2ldW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuc2VsZWN0Tm9kZXNSZWN1cnNpdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbihyZXN1bHRbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0ocmVzdWx0W2ldKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTZWxlY3RlZEl0ZW0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRmllbGROYW1lICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHRbaV1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSB0cnVlICYmIHJlc3VsdFtpXVt0aGlzLnNlbGVjdGVkRmllbGROYW1lXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub3BlbihyZXN1bHRbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFtpXVt0aGlzLnNlbGVjdGVkRmllbGROYW1lXSA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShyZXN1bHRbaV0pO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRJdGVtID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuaXRlbVJvdy5sb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZEl0ZW0gPT0gdHJ1ZSAmJiAhdGhpcy5sb2NlZCkge1xyXG4gICAgICAgIHRoaXMubG9jZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VsZXRlZEtleUZpZWxkc0NoYW5nZWQuZW1pdCh7XHJcbiAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgICAvLyB2YWx1ZTogdGhpcy5tYWtlTm9kZShpdGVtKSxcclxuICAgICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcclxuICAgICAgdGhpcy5zaG93U2VsZWN0Qm94ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd0NvbnRleHRNZW51ID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vIG9uSXRlbUNsaWNrKGUsIHYpIHtcclxuXHJcbiAgLy8gfVxyXG5cclxuICBvbkRyYWdTdGFydChlOiBFdmVudCwgdikge1xyXG4gICAgaWYgKCF0aGlzLmxvY2tlZERyYWcpIHtcclxuICAgICAgdGhpcy5pdGVtRHJhZyA9IHY7XHJcbiAgICAgIHRoaXMub25JdGVtRHJhZy5lbWl0KHYpO1xyXG4gICAgfVxyXG4gICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ0VuZChlLCB2KSB7XHJcbiAgICBpZiAoIXRoaXMubG9ja2VkRHJhZykge1xyXG4gICAgICB0aGlzLml0ZW1Ecm9wID0gdjtcclxuICAgIH1cclxuICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBkcm9wKGUpIHtcclxuICAgIC8vICB0aGlzLm9uSXRlbURyb3AuZW1pdCh0aGlzLml0ZW1Ecm9wKTtcclxuICAgIGlmICghdGhpcy5sb2NrZWREcmFnKSB7XHJcbiAgICAgIHRoaXMudmFsaWREcm9wID0gdHJ1ZTtcclxuICAgICAgdGhpcy5zYW1lQ2hpbGRlKHRoaXMuaXRlbURyYWcsIHRoaXMuaXRlbURyb3ApO1xyXG4gICAgICBpZiAodGhpcy52YWxpZERyb3AgJiYgdGhpcy5pdGVtRHJhZ1t0aGlzLmtleUZpZWxkXSAhPT0gdGhpcy5pdGVtRHJvcFt0aGlzLmtleUZpZWxkXSAmJiB0aGlzLml0ZW1EcmFnLnBhcmVudE5vZGUgIT09IHRoaXMuaXRlbURyb3ApIHtcclxuICAgICAgICBjb25zdCBtb3ZlZEV2ZW50OiBBWFRyZWVWaWV3SXRlbU1vdmVkRXZlbnQgPSBuZXcgQVhUcmVlVmlld0l0ZW1Nb3ZlZEV2ZW50KCk7XHJcbiAgICAgICAgbW92ZWRFdmVudC5zb3VyY2UgPSB0aGlzLm1ha2VOb2RlKHRoaXMuaXRlbURyYWcpO1xyXG4gICAgICAgIG1vdmVkRXZlbnQudGFyZ2V0ID0gdGhpcy5tYWtlTm9kZSh0aGlzLml0ZW1Ecm9wKTtcclxuICAgICAgICB0aGlzLmxvY2tlZERyYWcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd0xvYWRpbmcodGhpcy5pdGVtRHJhZyk7XHJcbiAgICAgICAgdGhpcy5zaG93TG9hZGluZyh0aGlzLml0ZW1Ecm9wKTtcclxuICAgICAgICBtb3ZlZEV2ZW50LnJlc29sdmUgPSAodmFsdWU6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgIHRoaXMuaGlkZUxvYWRpbmcodGhpcy5pdGVtRHJhZyk7XHJcbiAgICAgICAgICB0aGlzLmhpZGVMb2FkaW5nKHRoaXMuaXRlbURyb3ApO1xyXG4gICAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ0Ryb3BJdGVtKHRoaXMuaXRlbURyYWcsIHRoaXMuaXRlbURyb3ApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5sb2NrZWREcmFnID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLm9uSXRlbU1vdmVkLmVtaXQobW92ZWRFdmVudCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgc2FtZUNoaWxkZShwYXJlbnQsIGNoaWxkKSB7XHJcbiAgICBpZiAocGFyZW50W3RoaXMuY2hpbGRGaWVsZF0gJiYgcGFyZW50W3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcGFyZW50W3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgaWYgKHBhcmVudFt0aGlzLmNoaWxkRmllbGRdW2luZGV4XVt0aGlzLmtleUZpZWxkXSA9PSBjaGlsZFt0aGlzLmtleUZpZWxkXSkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZERyb3AgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcmVudFt0aGlzLmNoaWxkRmllbGRdW2luZGV4XVt0aGlzLmNoaWxkRmllbGRdICYmIHBhcmVudFt0aGlzLmNoaWxkRmllbGRdW2luZGV4XVt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuc2FtZUNoaWxkZShwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXVtpbmRleF0sIGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAocGFyZW50W3RoaXMua2V5RmllbGRdID09IGNoaWxkW3RoaXMua2V5RmllbGRdKSB7XHJcbiAgICAgIHRoaXMudmFsaWREcm9wID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkcmFnRHJvcEl0ZW0oaXRlbUNoaWxkLCBpdGVtUGFyZW50KSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25MZXZlbCA9PSAnbm9kZXMnKSB7XHJcbiAgICAgIGl0ZW1QYXJlbnQuZGlzYWJsZWRDaGVja0JveCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGl0ZW1DaGlsZC5wYXJlbnROb2RlKSB7XHJcbiAgICAgIGl0ZW1DaGlsZC5wYXJlbnROb2RlW3RoaXMuY2hpbGRGaWVsZF0gPSBpdGVtQ2hpbGQucGFyZW50Tm9kZVt0aGlzLmNoaWxkRmllbGRdLmZpbHRlcigoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gaXRlbUNoaWxkW3RoaXMua2V5RmllbGRdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubGlzdCA9IHRoaXMubGlzdC5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGl0ZW1DaGlsZFt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICB9XHJcbiAgICBpdGVtQ2hpbGQucGFyZW50Tm9kZSA9IGl0ZW1QYXJlbnQ7XHJcbiAgICBpZiAoaXRlbVBhcmVudFt0aGlzLmNoaWxkRmllbGRdICYmIGl0ZW1QYXJlbnRbdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGl0ZW1QYXJlbnRbdGhpcy5jaGlsZEZpZWxkXVtpdGVtUGFyZW50W3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoXSA9IGl0ZW1DaGlsZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGl0ZW1QYXJlbnRbdGhpcy5jaGlsZEZpZWxkXSA9IFtdO1xyXG4gICAgICBpdGVtUGFyZW50W3RoaXMuY2hpbGRGaWVsZF1bMF0gPSBpdGVtQ2hpbGQ7XHJcbiAgICAgIGlmIChpdGVtUGFyZW50W3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLnRvZ2dsZU5vZGUoaXRlbVBhcmVudCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaXRlbVBhcmVudC50b2dnbGUgPSAhaXRlbVBhcmVudC50b2dnbGU7XHJcbiAgICAgICAgaXRlbVBhcmVudC5sb2FkZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGl0ZW1QYXJlbnRbdGhpcy5oYXNDaGlsZEZpZWxkXSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoaXRlbUNoaWxkLnBhcmVudE5vZGUgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xyXG4gICAgICB0aGlzLmNoYW5nZVBhcmVudFNlbGVjdChpdGVtQ2hpbGQucGFyZW50Tm9kZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvY2tlZERyYWcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbGlzdENoYW5nZShmaWVsZCwgdmFsdWUpIHtcclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmxpc3QubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlQ2hpbGVkKHRoaXMubGlzdFtpbmRleF0sIGZpZWxkLCB2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvYWRBbGxDaGlsZHJlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGFuZ2VDaGlsZWQoaXRlbSwgZmllbGQsIHZhbHVlKSB7XHJcbiAgICBpZiAoZmllbGQgPT09ICd0b2dnbGUnICYmIChpdGVtLmxvYWRlZCA9PT0gZmFsc2UgfHwgaXRlbS5sb2FkZWQgPT09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgaWYgKHRoaXMubG9hZEFsbENoaWxkcmVuID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy50b2dnbGVOb2RlKGl0ZW0pO1xyXG4gICAgICAgIGl0ZW1bZmllbGRdID0gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGl0ZW1bZmllbGRdID0gdmFsdWU7XHJcbiAgICAgIGlmIChmaWVsZCA9PT0gJ3NlbGVjdCcgJiYgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSBmYWxzZSAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoZmllbGQgPT09ICdzZWxlY3QnKSB7XHJcbiAgICAgIGl0ZW0uaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSAmJiBpdGVtW3RoaXMuY2hpbGRGaWVsZF0gJiYgaXRlbVt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDApIHtcclxuICAgICAgaXRlbVt0aGlzLmNoaWxkRmllbGRdLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICAgICAgICB0aGlzLmNoYW5nZUNoaWxlZChlbGVtZW50LCBmaWVsZCwgdmFsdWUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvd0xvYWRpbmcoaXRlbSk6IHZvaWQge1xyXG4gICAgaXRlbS5sb2FkaW5nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGlkZUxvYWRpbmcoaXRlbSk6IHZvaWQge1xyXG4gICAgaWYgKGl0ZW0gIT0gbnVsbCkge1xyXG4gICAgICBpdGVtLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuQWxsKGxvYWRBbGw6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgLy8gaWYgKGxvYWRBbGwpIHtcclxuICAgIC8vIHRoaXMubG9hZEFsbENoaWxkcmVuID0gdHJ1ZTtcclxuICAgIC8vIHRoaXMubGlzdENoYW5nZSgndG9nZ2xlJywgdHJ1ZSk7XHJcbiAgICAvL30gZWxzZSB7XHJcbiAgICB0aGlzLmxpc3RDaGFuZ2UoJ3RvZ2dsZScsIHRydWUpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdEl0ZW0oaXRlbSkge1xyXG4gICAgaWYgKGl0ZW1bJ3NlbGVjdCddICE9IHRydWUpIHtcclxuICAgICAgdGhpcy5pbnRlcm5hbFNlbGVjdEl0ZW0oaXRlbSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW4oaXRlbSkge1xyXG4gICAgaWYgKGl0ZW1bJ3RvZ2dsZSddICE9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlTm9kZShpdGVtLCB0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzY3JvbEludG9WaWV3KGl0ZW0pIHtcclxuICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgbGlbZGF0YS1pZD0nJHtpdGVtW3RoaXMua2V5RmllbGRdfSddYCk7XHJcbiAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VBbGwoKSB7XHJcbiAgICB0aGlzLmxpc3RDaGFuZ2UoJ3RvZ2dsZScsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RBbGwoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xyXG4gICAgICB0aGlzLmxpc3RDaGFuZ2UoJ3NlbGVjdCcsIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHVuU2VsZWN0QWxsKCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcclxuICAgICAgdGhpcy5saXN0Q2hhbmdlKCdzZWxlY3QnLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3RlZE5vZGVzKCk6IEFYVHJlZVZpZXdOb2RlW10ge1xyXG4gICAgY29uc3Qgc2VsZWN0SXRlbXNOb2RlID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICBzZWxlY3RJdGVtc05vZGUucHVzaCh0aGlzLm1ha2VOb2RlKGUpKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHNlbGVjdEl0ZW1zTm9kZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3RlZFBhcmVudHMoKTogQVhUcmVlVmlld05vZGVbXSB7XHJcbiAgICBjb25zdCBzZWxlY3RJdGVtc1BhcmVudCA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZFBhcmVudHMuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICBzZWxlY3RJdGVtc1BhcmVudC5wdXNoKHRoaXMubWFrZU5vZGUoZSkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gc2VsZWN0SXRlbXNQYXJlbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRQYXJlbnRzSWQoaXRlbSkge1xyXG4gICAgbGV0IGtleUZpZWxkcyA9IFtdO1xyXG4gICAga2V5RmllbGRzLnB1c2goaXRlbVt0aGlzLmtleUZpZWxkXSk7XHJcbiAgICBpZiAoaXRlbS5wYXJlbnROb2RlKSB7XHJcbiAgICAgIGtleUZpZWxkcy5wdXNoKC4uLnRoaXMuZ2V0UGFyZW50c0lkKGl0ZW0ucGFyZW50Tm9kZSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGtleUZpZWxkcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3RlZEtleUZpZWxkcygpIHtcclxuICAgIGxldCBrZXlGaWVsZHMgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChlbG0pID0+IHtcclxuICAgICAgdmFyIElkcyA9IHRoaXMuZ2V0UGFyZW50c0lkKGVsbSk7XHJcbiAgICAgIGlmIChJZHMpIHtcclxuICAgICAgICBrZXlGaWVsZHMucHVzaChJZHMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBrZXlGaWVsZHM7XHJcbiAgfVxyXG59XHJcbiJdfQ==