@seniorsistemas/exclusion-process-component 0.3.1 → 0.4.0

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.
@@ -42,6 +42,7 @@ var ExclusionDetailsComponent = /** @class */ (function () {
42
42
  this._processGroupColumns = [];
43
43
  this._processStepColumns = [];
44
44
  this.ngUnsubscribe = new Subject();
45
+ this.subscriptionLoadProcess = null;
45
46
  }
46
47
  Object.defineProperty(ExclusionDetailsComponent.prototype, "isVisible", {
47
48
  get: function () {
@@ -142,6 +143,9 @@ var ExclusionDetailsComponent = /** @class */ (function () {
142
143
  ExclusionDetailsComponent.prototype.getCloseButtonLabel = function () {
143
144
  return this.translate.instant(this.projectConfigs.getTranslationPrefix() + ".logical_delete_close");
144
145
  };
146
+ ExclusionDetailsComponent.prototype.getUpdateButtonLabel = function () {
147
+ return this.translate.instant(this.projectConfigs.getTranslationPrefix() + ".logical_delete_update");
148
+ };
145
149
  ExclusionDetailsComponent.prototype.getSummaryLabel = function () {
146
150
  return this.translate.instant(this.projectConfigs.getTranslationPrefix() + ".logical_delete_summary");
147
151
  };
@@ -216,14 +220,32 @@ var ExclusionDetailsComponent = /** @class */ (function () {
216
220
  }
217
221
  return null;
218
222
  };
223
+ ExclusionDetailsComponent.prototype.updateDetails = function () {
224
+ if (!this._exclusionDetails) {
225
+ return;
226
+ }
227
+ this.loadProcessDetails(this._exclusionDetails);
228
+ };
229
+ ExclusionDetailsComponent.prototype.abortRunningLoadProcessCall = function () {
230
+ if (this.subscriptionLoadProcess) {
231
+ if (this.subscriptionLoadProcess.closed) {
232
+ this.subscriptionLoadProcess = null;
233
+ }
234
+ else {
235
+ this.subscriptionLoadProcess.unsubscribe();
236
+ this.subscriptionLoadProcess = null;
237
+ }
238
+ }
239
+ };
219
240
  ExclusionDetailsComponent.prototype.loadProcessDetails = function (details, firstLoad) {
220
241
  var _this = this;
221
242
  if (firstLoad === void 0) { firstLoad = false; }
222
243
  this._isLoading = true;
244
+ this.abortRunningLoadProcessCall();
223
245
  var processObservable = details.processId
224
246
  ? this.logicalDeleteService.getProcessDetails(details.processId)
225
247
  : this.logicalDeleteService.getLatestProcessDetails(details.recordId);
226
- processObservable
248
+ this.subscriptionLoadProcess = processObservable
227
249
  .pipe(takeUntil(this.ngUnsubscribe))
228
250
  .pipe(finalize(function () { return _this._isLoading = false; }))
229
251
  .subscribe(function (process) {
@@ -239,21 +261,20 @@ var ExclusionDetailsComponent = /** @class */ (function () {
239
261
  .forEach(function (p) {
240
262
  _this.expandedRows[p.id] = true;
241
263
  });
242
- _this.checkIfProcessDone();
264
+ if (_this.isProcessFinished()) {
265
+ _this.disconnectWebSocket();
266
+ }
243
267
  if (!firstLoad) {
244
268
  _this.checkIfProcessWasSuccessuful();
245
269
  }
246
270
  });
247
271
  };
248
- ExclusionDetailsComponent.prototype.checkIfProcessDone = function () {
272
+ ExclusionDetailsComponent.prototype.isProcessFinished = function () {
249
273
  if (!this._processGroupData.length) {
250
- return;
274
+ return false;
251
275
  }
252
- var isProcessFinished = this._processGroupData
276
+ return this._processGroupData
253
277
  .every(function (p) { return p.status === EnumExclusionProcessStatus.ERROR || p.status === EnumExclusionProcessStatus.SUCCESS; });
254
- if (isProcessFinished) {
255
- this.disconnectWebSocket();
256
- }
257
278
  };
258
279
  ExclusionDetailsComponent.prototype.checkIfProcessWasSuccessuful = function () {
259
280
  var isProcessSuccessful = this._processGroupData
@@ -306,6 +327,9 @@ var ExclusionDetailsComponent = /** @class */ (function () {
306
327
  .pipe(takeUntil(this.ngUnsubscribe))
307
328
  .subscribe(function () {
308
329
  _this.startListeningWebhookEvents();
330
+ if (_this.processDetails && !_this.isProcessFinished()) {
331
+ _this.loadProcessDetails(_this._exclusionDetails);
332
+ }
309
333
  });
310
334
  };
311
335
  ExclusionDetailsComponent.prototype.startListeningWebhookEvents = function () {
@@ -313,9 +337,7 @@ var ExclusionDetailsComponent = /** @class */ (function () {
313
337
  this._websocketService
314
338
  .onError()
315
339
  .pipe(takeUntil(this.ngUnsubscribe))
316
- .subscribe(function (data) {
317
- console.error('onError', data);
318
- });
340
+ .subscribe(function (data) { return console.error('onWSError', data); });
319
341
  this._exclusionProcessStatusChangedSubscribe = this._websocketService
320
342
  .onEvent({
321
343
  domain: this.projectConfigs.getDomain(),
@@ -370,12 +392,12 @@ var ExclusionDetailsComponent = /** @class */ (function () {
370
392
  ExclusionDetailsComponent = __decorate([
371
393
  Component({
372
394
  selector: "s-exclusion-details",
373
- template: "<s-sidebar [visible]=\"isVisible\" (visibleChange)=\"onVisibilityChanged($event)\" [header]=\"getSidebarTitle()\">\n <s-loading-state [loading]=\"isLoading\">\n <p-panel [showHeader]=\"false\" styleClass=\"s-exclusion-details-record-details-panel\">\n <div class=\"s-exclusion-details-record-details-container\">\n <div class=\"s-exclusion-details-record-icon-background\">\n <em class=\"far fa-file-alt s-exclusion-details-record-icon\"></em>\n </div>\n\n <div class=\"s-exclusion-details-record-details-recordinfo\">\n <span class=\"s-exclusion-details-record-details-type\">\n {{entityDescription}}\n </span>\n <span>\n {{getRecordDescription()}}\n </span>\n </div>\n\n <div class=\"s-exclusion-details-record-details-dateinfo\">\n <span>\n {{getStartDateLabel()}}: {{getInicialDate()}}\n </span>\n <span *ngIf=\"isFinished()\">\n {{getFinishDateLabel()}}: {{getFinishDate()}}\n </span>\n </div>\n </div>\n </p-panel>\n\n <p-panel>\n <p-header>\n {{getSummaryLabel()}}\n </p-header>\n\n <s-empty-state\n *ngIf=\"processGroupData && !processGroupData.length\"\n [title]=\"getEmptyStateTitle()\"\n [description]=\"getEmptyStateDescription()\">\n [showPrimaryAction]=\"false\"\n </s-empty-state>\n\n <p-table\n [value]=\"processGroupData\"\n [columns]=\"processGroupColumns\"\n dataKey=\"id\"\n [lazy]=\"false\"\n [scrollable]=\"false\"\n [paginator]=\"false\"\n *ngIf=\"processGroupData && processGroupData.length\"\n [expandedRowKeys]=\"expandedRows\">\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th id=\"expend-column\" style=\"width: 40px;\"></th>\n <th *ngFor=\"let col of columns\"\n [id]=\"col.field\"\n [ngStyle]=\"col.style\"\n [pSortableColumn]=\"col.field\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n <p-sortIcon [field]=\"col.field\" ></p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\" let-expanded=\"expanded\">\n <tr sNavigation [sRowToggler]=\"rowData\">\n <td style=\"width: 40px;\" tabindex=\"0\">\n <em class=\"fa fa-{{ expanded ? 'minus' : 'plus' }}\"></em>\n </td>\n <s-table-columns\n [columns]=\"columns\"\n [rowValue]=\"rowData\"\n [locale]=\"locale\">\n </s-table-columns>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"rowexpansion\" let-rowData let-columns=\"columns\">\n <tr class=\"sds-expanded-row\">\n <td [attr.colspan]=\"columns.length + 1\">\n <p-table \n [value]=\"rowData.steps\"\n [columns]=\"processStepColumns\"\n dataKey=\"id\"\n [paginator]=\"false\"\n [responsive]=\"true\"\n [scrollable]=\"false\"\n [lazy]=\"false\">\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\"\n [id]=\"col.field\"\n [ngStyle]=\"col.style\"\n [pSortableColumn]=\"col.field\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n <p-sortIcon [field]=\"col.field\" ></p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n \n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\">\n <tr>\n <s-table-columns\n [columns]=\"columns\"\n [rowValue]=\"rowData\"\n [locale]=\"locale\">\n </s-table-columns>\n </tr>\n </ng-template>\n </p-table>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </p-panel>\n </s-loading-state>\n\n <s-footer>\n <div class=\"ui-fluid\">\n <div class=\"ui-g\">\n <s-button [label]=\"getCloseButtonLabel()\" priority=\"link\" (onClick)=\"closeDetails()\"></s-button>\n </div>\n </div>\n </s-footer>\n</s-sidebar>\n",
395
+ template: "<s-sidebar [visible]=\"isVisible\" (visibleChange)=\"onVisibilityChanged($event)\" [header]=\"getSidebarTitle()\">\n <s-loading-state [loading]=\"isLoading\">\n <p-panel [showHeader]=\"false\" styleClass=\"s-exclusion-details-record-details-panel\">\n <div class=\"s-exclusion-details-record-details-container\">\n <div class=\"s-exclusion-details-record-icon-background\">\n <em class=\"far fa-file-alt s-exclusion-details-record-icon\"></em>\n </div>\n\n <div class=\"s-exclusion-details-record-details-recordinfo\">\n <span class=\"s-exclusion-details-record-details-type\">\n {{entityDescription}}\n </span>\n <span>\n {{getRecordDescription()}}\n </span>\n </div>\n\n <div class=\"s-exclusion-details-record-details-dateinfo\">\n <span>\n {{getStartDateLabel()}}: {{getInicialDate()}}\n </span>\n <span *ngIf=\"isFinished()\">\n {{getFinishDateLabel()}}: {{getFinishDate()}}\n </span>\n </div>\n </div>\n </p-panel>\n\n <p-panel>\n <p-header>\n {{getSummaryLabel()}}\n </p-header>\n\n <s-empty-state\n *ngIf=\"processGroupData && !processGroupData.length\"\n [title]=\"getEmptyStateTitle()\"\n [description]=\"getEmptyStateDescription()\">\n [showPrimaryAction]=\"false\"\n </s-empty-state>\n\n <p-table\n [value]=\"processGroupData\"\n [columns]=\"processGroupColumns\"\n dataKey=\"id\"\n [lazy]=\"false\"\n [scrollable]=\"false\"\n [paginator]=\"false\"\n *ngIf=\"processGroupData && processGroupData.length\"\n [expandedRowKeys]=\"expandedRows\">\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th id=\"expend-column\" style=\"width: 40px;\"></th>\n <th *ngFor=\"let col of columns\"\n [id]=\"col.field\"\n [ngStyle]=\"col.style\"\n [pSortableColumn]=\"col.field\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n <p-sortIcon [field]=\"col.field\" ></p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\" let-expanded=\"expanded\">\n <tr sNavigation [sRowToggler]=\"rowData\">\n <td style=\"width: 40px;\" tabindex=\"0\">\n <em class=\"fa fa-{{ expanded ? 'minus' : 'plus' }}\"></em>\n </td>\n <s-table-columns\n [columns]=\"columns\"\n [rowValue]=\"rowData\"\n [locale]=\"locale\">\n </s-table-columns>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"rowexpansion\" let-rowData let-columns=\"columns\">\n <tr class=\"sds-expanded-row\">\n <td [attr.colspan]=\"columns.length + 1\">\n <p-table \n [value]=\"rowData.steps\"\n [columns]=\"processStepColumns\"\n dataKey=\"id\"\n [paginator]=\"false\"\n [responsive]=\"true\"\n [scrollable]=\"false\"\n [lazy]=\"false\">\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\"\n [id]=\"col.field\"\n [ngStyle]=\"col.style\"\n [pSortableColumn]=\"col.field\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n <p-sortIcon [field]=\"col.field\" ></p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n \n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\">\n <tr>\n <s-table-columns\n [columns]=\"columns\"\n [rowValue]=\"rowData\"\n [locale]=\"locale\">\n </s-table-columns>\n </tr>\n </ng-template>\n </p-table>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </p-panel>\n </s-loading-state>\n\n <s-footer>\n <div class=\"ui-fluid\">\n <div class=\"ui-g-12 s-exclusion-details-footer\">\n <s-button [label]=\"getUpdateButtonLabel()\" priority=\"link\" (onClick)=\"updateDetails()\"></s-button>\n <s-button [label]=\"getCloseButtonLabel()\" priority=\"link\" (onClick)=\"closeDetails()\"></s-button>\n </div>\n </div>\n </s-footer>\n</s-sidebar>\n",
374
396
  encapsulation: ViewEncapsulation.None,
375
- styles: [".s-exclusion-details-record-details-panel{margin-bottom:10px}.s-exclusion-details-record-details-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center}.s-exclusion-details-record-details-recordinfo{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-left:10px;-ms-flex:1;flex:1}.s-exclusion-details-record-details-dateinfo{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-left:10px;-ms-flex-align:end;align-items:flex-end;font-size:12px}.s-exclusion-details-record-details-type{color:#999}.s-exclusion-details-record-icon{font-size:22pt;color:#7e8d95}.s-exclusion-details-record-icon-background{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding:16px;background-color:#c1cad1;border-radius:50%;height:60px;width:60px}"]
397
+ styles: [".s-exclusion-details-record-details-panel{margin-bottom:10px}.s-exclusion-details-record-details-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center}.s-exclusion-details-record-details-recordinfo{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-left:10px;-ms-flex:1;flex:1}.s-exclusion-details-record-details-dateinfo{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-left:10px;-ms-flex-align:end;align-items:flex-end;font-size:12px}.s-exclusion-details-record-details-type{color:#999}.s-exclusion-details-record-icon{font-size:22pt;color:#7e8d95}.s-exclusion-details-record-icon-background{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding:16px;background-color:#c1cad1;border-radius:50%;height:60px;width:60px}.s-exclusion-details-footer{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between}"]
376
398
  })
377
399
  ], ExclusionDetailsComponent);
378
400
  return ExclusionDetailsComponent;
379
401
  }());
380
402
  export { ExclusionDetailsComponent };
381
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjbHVzaW9uLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2V4Y2x1c2lvbi1wcm9jZXNzLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImV4Y2x1c2lvbi1kZXRhaWxzL2V4Y2x1c2lvbi1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQXFCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUE0QixNQUFNLG9DQUFvQyxDQUFDO0FBQ3BILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBS3ZGLElBQU0sOEJBQThCLEdBQUU7SUFDbEM7UUFDSSxTQUFTLEVBQUUsMEJBQTBCLENBQUMsS0FBSztRQUMzQyxLQUFLLEVBQUUsZUFBZSxDQUFDLEdBQUc7S0FDN0I7SUFDRDtRQUNJLFNBQVMsRUFBRSwwQkFBMEIsQ0FBQyxPQUFPO1FBQzdDLEtBQUssRUFBRSxlQUFlLENBQUMsTUFBTTtL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REMsTUFBTSxFQUFFO3VFQUdSO0lBR0Q7UUFEQyxNQUFNLEVBQUU7cUVBQytCO0lBR3hDO1FBREMsTUFBTSxFQUFFO3dFQUN3QjtJQUdqQztRQURDLE1BQU0sRUFBRTttRUFDcUI7SUFHOUI7UUFEQyxNQUFNLEVBQUU7b0ZBQ2lGO0lBdENqRix5QkFBeUI7UUFOckMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLHFCQUFxQjtZQUMvQiw2OExBQWlEO1lBRWpELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOztTQUN4QyxDQUFDO09BQ1cseUJBQXlCLENBbVdyQztJQUFELGdDQUFDO0NBQUEsQUFuV0QsSUFtV0M7U0FuV1kseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25Jbml0LCBPbkRlc3Ryb3ksIEV2ZW50RW1pdHRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGZpbmFsaXplLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IEVudW1CYWRnZUNvbG9ycywgRW51bUNvbHVtbkZpZWxkVHlwZSwgVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHNcIjtcbmltcG9ydCB7IFdlYnNvY2tldFNlcnZpY2UgfSBmcm9tIFwiQHNlbmlvci1nZXN0YW8tZW1wcmVzYXJpYWwvYW5ndWxhci1jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cyB9IGZyb20gXCIuLi9lbnVtcy9lbnVtLWV4Y2x1c2lvbi1wcm9jZXNzLXN0YXR1c1wiO1xuaW1wb3J0IHsgRXhjbHVzaW9uRGV0YWlscyB9IGZyb20gXCIuL3Byb3RvY29scy9leGNsdXNpb24tZGV0YWlsc1wiO1xuaW1wb3J0IHsgTG9naWNhbERlbGV0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvbG9naWNhbC1kZWxldGUuc2VydmljZVwiO1xuaW1wb3J0IHsgRXhjbHVzaW9uUHJvY2VzcywgRXhjbHVzaW9uUHJvY2Vzc1N0ZXAsIEV4Y2x1c2lvblByb2Nlc3NTdGVwR3JvdXAgfSBmcm9tIFwiLi4vbW9kZWxzL2luZGV4XCI7XG5pbXBvcnQgeyBMb2dpY2FsRGVsZXRlQ29uZmlnU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9sb2dpY2FsLWRlbGV0ZS1jb25maWcuc2VydmljZVwiO1xuaW1wb3J0IHsgU2hvd0RldGFpbHNJbmZvcm1hdGlvbiB9IGZyb20gXCIuL3Byb3RvY29sc1wiO1xuaW1wb3J0IHsgRXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWQgfSBmcm9tIFwiLi9wcm90b2NvbHMvZXhjbHVzaW9uLXByb2Nlc3Mtc3RhdHVzLWNoYW5nZWRcIjtcbmltcG9ydCB7IFdlYnNvY2tldEV2ZW50RGF0YSB9IGZyb20gXCIuL3Byb3RvY29scy93ZWItc29ja2V0LWV2ZW50LWRhdGFcIjtcblxuY29uc3QgRVhDTFVTSU9OX1BST0NFU1NfU1RBVFVTX0JBREdFID1bXG4gICAge1xuICAgICAgICBlbnVtVmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLkVSUk9SLFxuICAgICAgICBjb2xvcjogRW51bUJhZGdlQ29sb3JzLlJFRFxuICAgIH0sXG4gICAge1xuICAgICAgICBlbnVtVmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlBFTkRJTkcsXG4gICAgICAgIGNvbG9yOiBFbnVtQmFkZ2VDb2xvcnMuWUVMTE9XXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuUFJPQ0VTU0lORyxcbiAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5CTFVFXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuU1VDQ0VTUyxcbiAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5HUkVFTlxuICAgIH1cbl07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtZXhjbHVzaW9uLWRldGFpbHNcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2V4Y2x1c2lvbi1kZXRhaWxzLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL2V4Y2x1c2lvbi1kZXRhaWxzLmNvbXBvbmVudC5zY3NzXCJdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRXhjbHVzaW9uRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgbG9jYWxlITogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zO1xuXG4gICAgQE91dHB1dCgpXG4gICAgZ2V0IGlzVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmlzaWJsZTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBnZXQgaXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNMb2FkaW5nO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKVxuICAgIGdldCBwcm9jZXNzR3JvdXBEYXRhKCk6IEV4Y2x1c2lvbkRldGFpbHNbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzR3JvdXBEYXRhO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKVxuICAgIGdldCBwcm9jZXNzR3JvdXBDb2x1bW5zKCk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NHcm91cENvbHVtbnM7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgZ2V0IHByb2Nlc3NTdGVwQ29sdW1ucygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzU3RlcENvbHVtbnM7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHByb2Nlc3NEZXRhaWxzOiBFeGNsdXNpb25Qcm9jZXNzO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGVudGl0eURlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZXhwYW5kZWRSb3dzOiBhbnkgPSB7fTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvblByb2Nlc3NGaW5pc2hlZFN1Y2Nlc3NmdWxseTogRXZlbnRFbWl0dGVyPEV4Y2x1c2lvblByb2Nlc3M+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBfaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0dyb3VwRGF0YTogRXhjbHVzaW9uUHJvY2Vzc1N0ZXBHcm91cFtdID0gW107XG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0dyb3VwQ29sdW1uczogYW55W10gPSBbXTtcbiAgICBwcml2YXRlIF9wcm9jZXNzU3RlcENvbHVtbnM6IGFueVtdID0gW107XG4gICAgcHJpdmF0ZSBfd2Vic29ja2V0U2VydmljZTogV2Vic29ja2V0U2VydmljZTtcbiAgICBwcml2YXRlIF9leGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZFN1YnNjcmliZTogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX2V4Y2x1c2lvbkRldGFpbHM6IFNob3dEZXRhaWxzSW5mb3JtYXRpb247XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9naWNhbERlbGV0ZVNlcnZpY2U6IExvZ2ljYWxEZWxldGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHByb2plY3RDb25maWdzOiBMb2dpY2FsRGVsZXRlQ29uZmlnU2VydmljZVxuICAgICkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvdXRlLmRhdGFcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogeyBbY29uZmlnczogc3RyaW5nXTogYW55LCBsb2NhbGVDb25maWc6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGUgPSBkYXRhLmxvY2FsZUNvbmZpZztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9wcm9jZXNzR3JvdXBDb2x1bW5zID0gdGhpcy5nZXRHcm91cENvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc1N0ZXBDb2x1bW5zID0gdGhpcy5nZXRTdGVwQ29sdW1ucygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgdGhpcy5kaXNjb25uZWN0V2ViU29ja2V0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dEZXRhaWxzKGRldGFpbHM6IFNob3dEZXRhaWxzSW5mb3JtYXRpb24pIHtcbiAgICAgICAgdGhpcy5fZXhjbHVzaW9uRGV0YWlscyA9IGRldGFpbHM7XG4gICAgICAgIHRoaXMuX2lzVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NHcm91cERhdGEgPSBbXTtcblxuICAgICAgICB0aGlzLnByb2Nlc3NEZXRhaWxzID0gbnVsbDtcbiAgICAgICAgdGhpcy5lbnRpdHlEZXNjcmlwdGlvbiA9IGRldGFpbHMuZW50aXR5RGVzY3JpcHRpb247XG5cbiAgICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RldGFpbHMoZGV0YWlscywgdHJ1ZSk7XG5cbiAgICAgICAgdGhpcy5jb25uZWN0V2ViU29ja2V0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVmlzaWJpbGl0eUNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLmNsb3NlRGV0YWlscygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZURldGFpbHMoKSB7XG4gICAgICAgIHRoaXMuX2lzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9leGNsdXNpb25EZXRhaWxzID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0dyb3VwRGF0YSA9IFtdO1xuICAgICAgICB0aGlzLmRpc2Nvbm5lY3RXZWJTb2NrZXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UmVjb3JkRGVzY3JpcHRpb24oKSB7XG4gICAgICAgIGlmICghdGhpcy5wcm9jZXNzRGV0YWlscz8uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0RldGFpbHMuZGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldEluaWNpYWxEYXRlKCkge1xuICAgICAgICBpZiAoIXRoaXMucHJvY2Vzc0RldGFpbHM/LnN0YXJ0RGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbW9tZW50KHRoaXMucHJvY2Vzc0RldGFpbHMuc3RhcnREYXRlKS5mb3JtYXQoXCJERC9NTS9ZWVlZIEhIOm1tOnNzXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaW5pc2hEYXRlKCkge1xuICAgICAgICBpZiAoIXRoaXMucHJvY2Vzc0RldGFpbHM/LmZpbmlzaERhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLnByb2Nlc3NEZXRhaWxzLmZpbmlzaERhdGUpLmZvcm1hdChcIkREL01NL1lZWVkgSEg6bW06c3NcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRmluaXNoZWQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMucHJvY2Vzc0RldGFpbHM/LmZpbmlzaERhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNob3dFeGNsdXNpb25zQnV0dG9uTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfc2hvd19kZWxldGlvbnNgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2xvc2VCdXR0b25MYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9jbG9zZWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTdW1tYXJ5TGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfc3VtbWFyeWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTdGFydERhdGVMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9zdGFydGApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaW5pc2hEYXRlTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZmluaXNoYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNpZGViYXJUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9kZXRhaWxzX3RpdGxlYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEVtcHR5U3RhdGVUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9lbXB0eV9zdGF0ZV90aXRsZWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFbXB0eVN0YXRlRGVzY3JpcHRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZW1wdHlfc3RhdGVfZGVzY3JpcHRpb25gKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEdyb3VwQ29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZDogXCJkZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtcImRlc2NyaXB0aW9uXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2dyb3VwYCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5TVFJJTkcsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMzQwcHhcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmllbGQ6IFwic3RhdHVzXCIsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogW1wic3RhdHVzXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0YXR1c2ApLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudW1Db2x1bW5GaWVsZFR5cGUuRU5VTSxcbiAgICAgICAgICAgICAgICBlbnVtUHJlZml4OiBgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VudW1fZXhjbHVzaW9uX3Byb2Nlc3Nfc3RhdHVzX2AsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwcHhcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdG9vbHRpcDogdGhpcy5nZXRDb2x1bW5TdGF0dXNUb29sdGlwLFxuICAgICAgICAgICAgICAgIGJhZGdlQ29uZmlnczogRVhDTFVTSU9OX1BST0NFU1NfU1RBVFVTX0JBREdFXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdGVwQ29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZDogXCJkZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtcImRlc2NyaXB0aW9uXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0ZXBgKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBFbnVtQ29sdW1uRmllbGRUeXBlLlNUUklORyxcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIzNDBweFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZDogXCJzdGF0dXNcIixcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXCJzdGF0dXNcIl0sXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfc3RhdHVzYCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5FTlVNLFxuICAgICAgICAgICAgICAgIGVudW1QcmVmaXg6IGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZW51bV9leGNsdXNpb25fcHJvY2Vzc19zdGF0dXNfYCxcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDBweFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0b29sdGlwOiB0aGlzLmdldENvbHVtblN0YXR1c1Rvb2x0aXAsXG4gICAgICAgICAgICAgICAgYmFkZ2VDb25maWdzOiBFWENMVVNJT05fUFJPQ0VTU19TVEFUVVNfQkFER0VcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtblN0YXR1c1Rvb2x0aXAocm93VmFsdWU6IEV4Y2x1c2lvbkRldGFpbHMpIHtcbiAgICAgICAgaWYgKHJvd1ZhbHVlLmVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJvd1ZhbHVlLmVycm9yTWVzc2FnZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFByb2Nlc3NEZXRhaWxzKGRldGFpbHM6IFNob3dEZXRhaWxzSW5mb3JtYXRpb24sIGZpcnN0TG9hZCA9IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuX2lzTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgcHJvY2Vzc09ic2VydmFibGUgPSBkZXRhaWxzLnByb2Nlc3NJZFxuICAgICAgICAgICAgPyB0aGlzLmxvZ2ljYWxEZWxldGVTZXJ2aWNlLmdldFByb2Nlc3NEZXRhaWxzKGRldGFpbHMucHJvY2Vzc0lkKVxuICAgICAgICAgICAgOiB0aGlzLmxvZ2ljYWxEZWxldGVTZXJ2aWNlLmdldExhdGVzdFByb2Nlc3NEZXRhaWxzKGRldGFpbHMucmVjb3JkSWQpO1xuXG4gICAgICAgIHByb2Nlc3NPYnNlcnZhYmxlXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuX2lzTG9hZGluZyA9IGZhbHNlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHByb2Nlc3M6IEV4Y2x1c2lvblByb2Nlc3MpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXByb2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0RldGFpbHMgPSBwcm9jZXNzO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NHcm91cERhdGEgPSB0aGlzLnNvcnRHcm91cHNCeVN0YXJ0RGF0ZShwcm9jZXNzLmdyb3VwcylcbiAgICAgICAgICAgICAgICAgICAgLm1hcChwID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5wLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHM6IHRoaXMuc29ydFN0ZXBzQnlTdGFydERhdGUocC5zdGVwcylcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRlZFJvd3MgPSB7fTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzR3JvdXBEYXRhXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIocCA9PiBwLnN0YXR1cyAhPT0gRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuU1VDQ0VTUylcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2gocCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZGVkUm93c1twLmlkXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja0lmUHJvY2Vzc0RvbmUoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWZpcnN0TG9hZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrSWZQcm9jZXNzV2FzU3VjY2Vzc3VmdWwoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrSWZQcm9jZXNzRG9uZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wcm9jZXNzR3JvdXBEYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNQcm9jZXNzRmluaXNoZWQgPSB0aGlzLl9wcm9jZXNzR3JvdXBEYXRhXG4gICAgICAgICAgICAuZXZlcnkocCA9PiBwLnN0YXR1cyA9PT0gRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuRVJST1IgfHwgcC5zdGF0dXMgPT09IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlNVQ0NFU1MpO1xuICAgICAgICBpZiAoaXNQcm9jZXNzRmluaXNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzY29ubmVjdFdlYlNvY2tldCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0lmUHJvY2Vzc1dhc1N1Y2Nlc3N1ZnVsKCkge1xuICAgICAgICBjb25zdCBpc1Byb2Nlc3NTdWNjZXNzZnVsID0gdGhpcy5fcHJvY2Vzc0dyb3VwRGF0YVxuICAgICAgICAgICAgLmV2ZXJ5KHAgPT4gcC5zdGF0dXMgPT09IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlNVQ0NFU1MpO1xuICAgICAgICBpZiAoaXNQcm9jZXNzU3VjY2Vzc2Z1bCkge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlQcm9jZXNzRmluaXNoZWRTdWNjZXNzZnVsbHkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbm90aWZ5UHJvY2Vzc0ZpbmlzaGVkU3VjY2Vzc2Z1bGx5KCkge1xuICAgICAgICB0aGlzLm9uUHJvY2Vzc0ZpbmlzaGVkU3VjY2Vzc2Z1bGx5LmVtaXQodGhpcy5wcm9jZXNzRGV0YWlscyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0QnlEYXRlKGZpcnN0RGF0ZTogRGF0ZSwgc2Vjb25kRGF0ZTogRGF0ZSkge1xuICAgICAgICBpZiAoIWZpcnN0RGF0ZSB8fCAhc2Vjb25kRGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlyc3REYXRlLmdldFRpbWUoKSA+IHNlY29uZERhdGUuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlyc3REYXRlLmdldFRpbWUoKSA8IHNlY29uZERhdGUuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0R3JvdXBzQnlTdGFydERhdGUoZ3JvdXBzOiBFeGNsdXNpb25Qcm9jZXNzU3RlcEdyb3VwW10pIHtcbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5zb3J0KChhLCBiKSA9PiB0aGlzLnNvcnRCeURhdGUoYS5zdGFydERhdGUsIGIuc3RhcnREYXRlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0U3RlcHNCeVN0YXJ0RGF0ZShzdGVwczogRXhjbHVzaW9uUHJvY2Vzc1N0ZXBbXSkge1xuICAgICAgICByZXR1cm4gc3RlcHMuc29ydCgoYSwgYikgPT4gdGhpcy5zb3J0QnlEYXRlKGEuc3RhcnREYXRlLCBiLnN0YXJ0RGF0ZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzY29ubmVjdFdlYlNvY2tldCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2V4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkU3Vic2NyaWJlKSB7XG4gICAgICAgICAgICB0aGlzLl9leGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZFN1YnNjcmliZS51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5fZXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWRTdWJzY3JpYmUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3dlYnNvY2tldFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3dlYnNvY2tldFNlcnZpY2UuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgdGhpcy5fd2Vic29ja2V0U2VydmljZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbm5lY3RXZWJTb2NrZXQoKSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3RXZWJTb2NrZXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3dlYnNvY2tldFNlcnZpY2UgPSBuZXcgV2Vic29ja2V0U2VydmljZSgpO1xuICAgICAgICB0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlXG4gICAgICAgICAgICAub25Db25uZWN0KClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydExpc3RlbmluZ1dlYmhvb2tFdmVudHMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnRMaXN0ZW5pbmdXZWJob29rRXZlbnRzKCkge1xuICAgICAgICB0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlXG4gICAgICAgICAgICAub25FcnJvcigpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ29uRXJyb3InLCBkYXRhKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2V4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkU3Vic2NyaWJlID0gdGhpcy5fd2Vic29ja2V0U2VydmljZVxuICAgICAgICAgICAgLm9uRXZlbnQ8V2Vic29ja2V0RXZlbnREYXRhPEV4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkPj4oe1xuICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5wcm9qZWN0Q29uZmlncy5nZXREb21haW4oKSxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnByb2plY3RDb25maWdzLmdldFNlcnZpY2UoKSxcbiAgICAgICAgICAgICAgICBwcmltaXRpdmU6IFwiZXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWRcIlxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFdlYnNvY2tldEV2ZW50RGF0YTxFeGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZD4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGV2ZW50O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMucHJvY2Vzc0lkICYmIGRhdGEucGlkID09PSB0aGlzLl9leGNsdXNpb25EZXRhaWxzLnByb2Nlc3NJZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRQcm9jZXNzRGV0YWlscyh0aGlzLl9leGNsdXNpb25EZXRhaWxzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9leGNsdXNpb25EZXRhaWxzLnJlY29yZElkICYmIGRhdGEucmVjb3JkSWQgPT09IHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMucmVjb3JkSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RldGFpbHModGhpcy5fZXhjbHVzaW9uRGV0YWlscyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
403
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjbHVzaW9uLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2V4Y2x1c2lvbi1wcm9jZXNzLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImV4Y2x1c2lvbi1kZXRhaWxzL2V4Y2x1c2lvbi1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQXFCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUE0QixNQUFNLG9DQUFvQyxDQUFDO0FBQ3BILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBS3ZGLElBQU0sOEJBQThCLEdBQUU7SUFDbEM7UUFDSSxTQUFTLEVBQUUsMEJBQTBCLENBQUMsS0FBSztRQUMzQyxLQUFLLEVBQUUsZUFBZSxDQUFDLEdBQUc7S0FDN0I7SUFDRDtRQUNJLFNBQVMsRUFBRSwwQkFBMEIsQ0FBQyxPQUFPO1FBQzdDLEtBQUssRUFBRSxlQUFlLENBQUMsTUFBTTtL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QUFFLGlCQUFpQixDQUFDLElBQUk7O1NBQ3hDLENBQUM7T0FDVyx5QkFBeUIsQ0E0WHJDO0lBQUQsZ0NBQUM7Q0FBQSxBQTVYRCxJQTRYQztTQTVYWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBPbkluaXQsIE9uRGVzdHJveSwgRXZlbnRFbWl0dGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZmluYWxpemUsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgRW51bUJhZGdlQ29sb3JzLCBFbnVtQ29sdW1uRmllbGRUeXBlLCBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnMgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgV2Vic29ja2V0U2VydmljZSB9IGZyb20gXCJAc2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHNcIjtcbmltcG9ydCB7IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzIH0gZnJvbSBcIi4uL2VudW1zL2VudW0tZXhjbHVzaW9uLXByb2Nlc3Mtc3RhdHVzXCI7XG5pbXBvcnQgeyBFeGNsdXNpb25EZXRhaWxzIH0gZnJvbSBcIi4vcHJvdG9jb2xzL2V4Y2x1c2lvbi1kZXRhaWxzXCI7XG5pbXBvcnQgeyBMb2dpY2FsRGVsZXRlU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9sb2dpY2FsLWRlbGV0ZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBFeGNsdXNpb25Qcm9jZXNzLCBFeGNsdXNpb25Qcm9jZXNzU3RlcCwgRXhjbHVzaW9uUHJvY2Vzc1N0ZXBHcm91cCB9IGZyb20gXCIuLi9tb2RlbHMvaW5kZXhcIjtcbmltcG9ydCB7IExvZ2ljYWxEZWxldGVDb25maWdTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2xvZ2ljYWwtZGVsZXRlLWNvbmZpZy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTaG93RGV0YWlsc0luZm9ybWF0aW9uIH0gZnJvbSBcIi4vcHJvdG9jb2xzXCI7XG5pbXBvcnQgeyBFeGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZCB9IGZyb20gXCIuL3Byb3RvY29scy9leGNsdXNpb24tcHJvY2Vzcy1zdGF0dXMtY2hhbmdlZFwiO1xuaW1wb3J0IHsgV2Vic29ja2V0RXZlbnREYXRhIH0gZnJvbSBcIi4vcHJvdG9jb2xzL3dlYi1zb2NrZXQtZXZlbnQtZGF0YVwiO1xuXG5jb25zdCBFWENMVVNJT05fUFJPQ0VTU19TVEFUVVNfQkFER0UgPVtcbiAgICB7XG4gICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuRVJST1IsXG4gICAgICAgIGNvbG9yOiBFbnVtQmFkZ2VDb2xvcnMuUkVEXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuUEVORElORyxcbiAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5ZRUxMT1dcbiAgICB9LFxuICAgIHtcbiAgICAgICAgZW51bVZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5QUk9DRVNTSU5HLFxuICAgICAgICBjb2xvcjogRW51bUJhZGdlQ29sb3JzLkJMVUVcbiAgICB9LFxuICAgIHtcbiAgICAgICAgZW51bVZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5TVUNDRVNTLFxuICAgICAgICBjb2xvcjogRW51bUJhZGdlQ29sb3JzLkdSRUVOXG4gICAgfVxuXTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1leGNsdXNpb24tZGV0YWlsc1wiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZXhjbHVzaW9uLWRldGFpbHMuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vZXhjbHVzaW9uLWRldGFpbHMuY29tcG9uZW50LnNjc3NcIl0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBFeGNsdXNpb25EZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyBsb2NhbGUhOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnM7XG5cbiAgICBAT3V0cHV0KClcbiAgICBnZXQgaXNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWaXNpYmxlO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKVxuICAgIGdldCBpc0xvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvYWRpbmc7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgZ2V0IHByb2Nlc3NHcm91cERhdGEoKTogRXhjbHVzaW9uRGV0YWlsc1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NHcm91cERhdGE7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgZ2V0IHByb2Nlc3NHcm91cENvbHVtbnMoKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc0dyb3VwQ29sdW1ucztcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBnZXQgcHJvY2Vzc1N0ZXBDb2x1bW5zKCk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NTdGVwQ29sdW1ucztcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcHJvY2Vzc0RldGFpbHM6IEV4Y2x1c2lvblByb2Nlc3M7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZW50aXR5RGVzY3JpcHRpb246IHN0cmluZztcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBleHBhbmRlZFJvd3M6IGFueSA9IHt9O1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9uUHJvY2Vzc0ZpbmlzaGVkU3VjY2Vzc2Z1bGx5OiBFdmVudEVtaXR0ZXI8RXhjbHVzaW9uUHJvY2Vzcz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwcml2YXRlIF9pc1Zpc2libGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9wcm9jZXNzR3JvdXBEYXRhOiBFeGNsdXNpb25Qcm9jZXNzU3RlcEdyb3VwW10gPSBbXTtcbiAgICBwcml2YXRlIF9wcm9jZXNzR3JvdXBDb2x1bW5zOiBhbnlbXSA9IFtdO1xuICAgIHByaXZhdGUgX3Byb2Nlc3NTdGVwQ29sdW1uczogYW55W10gPSBbXTtcbiAgICBwcml2YXRlIF93ZWJzb2NrZXRTZXJ2aWNlOiBXZWJzb2NrZXRTZXJ2aWNlO1xuICAgIHByaXZhdGUgX2V4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkU3Vic2NyaWJlOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBfZXhjbHVzaW9uRGV0YWlsczogU2hvd0RldGFpbHNJbmZvcm1hdGlvbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uTG9hZFByb2Nlc3M6IFN1YnNjcmlwdGlvbiA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2ljYWxEZWxldGVTZXJ2aWNlOiBMb2dpY2FsRGVsZXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwcm9qZWN0Q29uZmlnczogTG9naWNhbERlbGV0ZUNvbmZpZ1NlcnZpY2VcbiAgICApIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5kYXRhXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IHsgW2NvbmZpZ3M6IHN0cmluZ106IGFueSwgbG9jYWxlQ29uZmlnOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlID0gZGF0YS5sb2NhbGVDb25maWc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0dyb3VwQ29sdW1ucyA9IHRoaXMuZ2V0R3JvdXBDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NTdGVwQ29sdW1ucyA9IHRoaXMuZ2V0U3RlcENvbHVtbnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuXG4gICAgICAgIHRoaXMuZGlzY29ubmVjdFdlYlNvY2tldCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93RGV0YWlscyhkZXRhaWxzOiBTaG93RGV0YWlsc0luZm9ybWF0aW9uKSB7XG4gICAgICAgIHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMgPSBkZXRhaWxzO1xuICAgICAgICB0aGlzLl9pc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9wcm9jZXNzR3JvdXBEYXRhID0gW107XG5cbiAgICAgICAgdGhpcy5wcm9jZXNzRGV0YWlscyA9IG51bGw7XG4gICAgICAgIHRoaXMuZW50aXR5RGVzY3JpcHRpb24gPSBkZXRhaWxzLmVudGl0eURlc2NyaXB0aW9uO1xuXG4gICAgICAgIHRoaXMubG9hZFByb2Nlc3NEZXRhaWxzKGRldGFpbHMsIHRydWUpO1xuXG4gICAgICAgIHRoaXMuY29ubmVjdFdlYlNvY2tldCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblZpc2liaWxpdHlDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgdGhpcy5jbG9zZURldGFpbHMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2VEZXRhaWxzKCkge1xuICAgICAgICB0aGlzLl9pc1Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fZXhjbHVzaW9uRGV0YWlscyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NHcm91cERhdGEgPSBbXTtcbiAgICAgICAgdGhpcy5kaXNjb25uZWN0V2ViU29ja2V0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJlY29yZERlc2NyaXB0aW9uKCkge1xuICAgICAgICBpZiAoIXRoaXMucHJvY2Vzc0RldGFpbHM/LmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NEZXRhaWxzLmRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJbmljaWFsRGF0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnByb2Nlc3NEZXRhaWxzPy5zdGFydERhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLnByb2Nlc3NEZXRhaWxzLnN0YXJ0RGF0ZSkuZm9ybWF0KFwiREQvTU0vWVlZWSBISDptbTpzc1wiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmluaXNoRGF0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnByb2Nlc3NEZXRhaWxzPy5maW5pc2hEYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtb21lbnQodGhpcy5wcm9jZXNzRGV0YWlscy5maW5pc2hEYXRlKS5mb3JtYXQoXCJERC9NTS9ZWVlZIEhIOm1tOnNzXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0ZpbmlzaGVkKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLnByb2Nlc3NEZXRhaWxzPy5maW5pc2hEYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTaG93RXhjbHVzaW9uc0J1dHRvbkxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3Nob3dfZGVsZXRpb25zYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENsb3NlQnV0dG9uTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfY2xvc2VgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VXBkYXRlQnV0dG9uTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfdXBkYXRlYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFN1bW1hcnlMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9zdW1tYXJ5YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFN0YXJ0RGF0ZUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0YXJ0YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbmlzaERhdGVMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9maW5pc2hgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2lkZWJhclRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2RldGFpbHNfdGl0bGVgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW1wdHlTdGF0ZVRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VtcHR5X3N0YXRlX3RpdGxlYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEVtcHR5U3RhdGVEZXNjcmlwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9lbXB0eV9zdGF0ZV9kZXNjcmlwdGlvbmApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0R3JvdXBDb2x1bW5zKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpZWxkOiBcImRlc2NyaXB0aW9uXCIsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogW1wiZGVzY3JpcHRpb25cIl0sXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZ3JvdXBgKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBFbnVtQ29sdW1uRmllbGRUeXBlLlNUUklORyxcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIzNDBweFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZDogXCJzdGF0dXNcIixcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXCJzdGF0dXNcIl0sXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfc3RhdHVzYCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5FTlVNLFxuICAgICAgICAgICAgICAgIGVudW1QcmVmaXg6IGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZW51bV9leGNsdXNpb25fcHJvY2Vzc19zdGF0dXNfYCxcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDBweFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0b29sdGlwOiB0aGlzLmdldENvbHVtblN0YXR1c1Rvb2x0aXAsXG4gICAgICAgICAgICAgICAgYmFkZ2VDb25maWdzOiBFWENMVVNJT05fUFJPQ0VTU19TVEFUVVNfQkFER0VcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFN0ZXBDb2x1bW5zKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpZWxkOiBcImRlc2NyaXB0aW9uXCIsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogW1wiZGVzY3JpcHRpb25cIl0sXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfc3RlcGApLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudW1Db2x1bW5GaWVsZFR5cGUuU1RSSU5HLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjM0MHB4XCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpZWxkOiBcInN0YXR1c1wiLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtcInN0YXR1c1wiXSxcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9zdGF0dXNgKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBFbnVtQ29sdW1uRmllbGRUeXBlLkVOVU0sXG4gICAgICAgICAgICAgICAgZW51bVByZWZpeDogYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9lbnVtX2V4Y2x1c2lvbl9wcm9jZXNzX3N0YXR1c19gLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMHB4XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRvb2x0aXA6IHRoaXMuZ2V0Q29sdW1uU3RhdHVzVG9vbHRpcCxcbiAgICAgICAgICAgICAgICBiYWRnZUNvbmZpZ3M6IEVYQ0xVU0lPTl9QUk9DRVNTX1NUQVRVU19CQURHRVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uU3RhdHVzVG9vbHRpcChyb3dWYWx1ZTogRXhjbHVzaW9uRGV0YWlscykge1xuICAgICAgICBpZiAocm93VmFsdWUuZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gcm93VmFsdWUuZXJyb3JNZXNzYWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZURldGFpbHMoKSB7XG4gICAgICAgIGlmICghdGhpcy5fZXhjbHVzaW9uRGV0YWlscykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZFByb2Nlc3NEZXRhaWxzKHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWJvcnRSdW5uaW5nTG9hZFByb2Nlc3NDYWxsKCkge1xuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25Mb2FkUHJvY2Vzcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uTG9hZFByb2Nlc3MuY2xvc2VkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25Mb2FkUHJvY2VzcyA9IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uTG9hZFByb2Nlc3MudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbkxvYWRQcm9jZXNzID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFByb2Nlc3NEZXRhaWxzKGRldGFpbHM6IFNob3dEZXRhaWxzSW5mb3JtYXRpb24sIGZpcnN0TG9hZCA9IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuX2lzTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5hYm9ydFJ1bm5pbmdMb2FkUHJvY2Vzc0NhbGwoKTtcblxuICAgICAgICBjb25zdCBwcm9jZXNzT2JzZXJ2YWJsZSA9IGRldGFpbHMucHJvY2Vzc0lkXG4gICAgICAgICAgICA/IHRoaXMubG9naWNhbERlbGV0ZVNlcnZpY2UuZ2V0UHJvY2Vzc0RldGFpbHMoZGV0YWlscy5wcm9jZXNzSWQpXG4gICAgICAgICAgICA6IHRoaXMubG9naWNhbERlbGV0ZVNlcnZpY2UuZ2V0TGF0ZXN0UHJvY2Vzc0RldGFpbHMoZGV0YWlscy5yZWNvcmRJZCk7XG5cbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25Mb2FkUHJvY2VzcyA9IHByb2Nlc3NPYnNlcnZhYmxlXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuX2lzTG9hZGluZyA9IGZhbHNlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHByb2Nlc3M6IEV4Y2x1c2lvblByb2Nlc3MpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXByb2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0RldGFpbHMgPSBwcm9jZXNzO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NHcm91cERhdGEgPSB0aGlzLnNvcnRHcm91cHNCeVN0YXJ0RGF0ZShwcm9jZXNzLmdyb3VwcylcbiAgICAgICAgICAgICAgICAgICAgLm1hcChwID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5wLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHM6IHRoaXMuc29ydFN0ZXBzQnlTdGFydERhdGUocC5zdGVwcylcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRlZFJvd3MgPSB7fTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzR3JvdXBEYXRhXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIocCA9PiBwLnN0YXR1cyAhPT0gRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuU1VDQ0VTUylcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2gocCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZGVkUm93c1twLmlkXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNQcm9jZXNzRmluaXNoZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3RXZWJTb2NrZXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFmaXJzdExvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0lmUHJvY2Vzc1dhc1N1Y2Nlc3N1ZnVsKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1Byb2Nlc3NGaW5pc2hlZCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wcm9jZXNzR3JvdXBEYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NHcm91cERhdGFcbiAgICAgICAgICAgIC5ldmVyeShwID0+IHAuc3RhdHVzID09PSBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5FUlJPUiB8fCBwLnN0YXR1cyA9PT0gRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuU1VDQ0VTUyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0lmUHJvY2Vzc1dhc1N1Y2Nlc3N1ZnVsKCkge1xuICAgICAgICBjb25zdCBpc1Byb2Nlc3NTdWNjZXNzZnVsID0gdGhpcy5fcHJvY2Vzc0dyb3VwRGF0YVxuICAgICAgICAgICAgLmV2ZXJ5KHAgPT4gcC5zdGF0dXMgPT09IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlNVQ0NFU1MpO1xuICAgICAgICBpZiAoaXNQcm9jZXNzU3VjY2Vzc2Z1bCkge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlQcm9jZXNzRmluaXNoZWRTdWNjZXNzZnVsbHkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbm90aWZ5UHJvY2Vzc0ZpbmlzaGVkU3VjY2Vzc2Z1bGx5KCkge1xuICAgICAgICB0aGlzLm9uUHJvY2Vzc0ZpbmlzaGVkU3VjY2Vzc2Z1bGx5LmVtaXQodGhpcy5wcm9jZXNzRGV0YWlscyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0QnlEYXRlKGZpcnN0RGF0ZTogRGF0ZSwgc2Vjb25kRGF0ZTogRGF0ZSkge1xuICAgICAgICBpZiAoIWZpcnN0RGF0ZSB8fCAhc2Vjb25kRGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlyc3REYXRlLmdldFRpbWUoKSA+IHNlY29uZERhdGUuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlyc3REYXRlLmdldFRpbWUoKSA8IHNlY29uZERhdGUuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0R3JvdXBzQnlTdGFydERhdGUoZ3JvdXBzOiBFeGNsdXNpb25Qcm9jZXNzU3RlcEdyb3VwW10pIHtcbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5zb3J0KChhLCBiKSA9PiB0aGlzLnNvcnRCeURhdGUoYS5zdGFydERhdGUsIGIuc3RhcnREYXRlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0U3RlcHNCeVN0YXJ0RGF0ZShzdGVwczogRXhjbHVzaW9uUHJvY2Vzc1N0ZXBbXSkge1xuICAgICAgICByZXR1cm4gc3RlcHMuc29ydCgoYSwgYikgPT4gdGhpcy5zb3J0QnlEYXRlKGEuc3RhcnREYXRlLCBiLnN0YXJ0RGF0ZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzY29ubmVjdFdlYlNvY2tldCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2V4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkU3Vic2NyaWJlKSB7XG4gICAgICAgICAgICB0aGlzLl9leGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZFN1YnNjcmliZS51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5fZXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWRTdWJzY3JpYmUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3dlYnNvY2tldFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3dlYnNvY2tldFNlcnZpY2UuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgdGhpcy5fd2Vic29ja2V0U2VydmljZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbm5lY3RXZWJTb2NrZXQoKSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3RXZWJTb2NrZXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3dlYnNvY2tldFNlcnZpY2UgPSBuZXcgV2Vic29ja2V0U2VydmljZSgpO1xuICAgICAgICB0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlXG4gICAgICAgICAgICAub25Db25uZWN0KClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydExpc3RlbmluZ1dlYmhvb2tFdmVudHMoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9jZXNzRGV0YWlscyAmJiAhdGhpcy5pc1Byb2Nlc3NGaW5pc2hlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZFByb2Nlc3NEZXRhaWxzKHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnRMaXN0ZW5pbmdXZWJob29rRXZlbnRzKCkge1xuICAgICAgICB0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlXG4gICAgICAgICAgICAub25FcnJvcigpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4gY29uc29sZS5lcnJvcignb25XU0Vycm9yJywgZGF0YSkpO1xuXG4gICAgICAgIHRoaXMuX2V4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkU3Vic2NyaWJlID0gdGhpcy5fd2Vic29ja2V0U2VydmljZVxuICAgICAgICAgICAgLm9uRXZlbnQ8V2Vic29ja2V0RXZlbnREYXRhPEV4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkPj4oe1xuICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5wcm9qZWN0Q29uZmlncy5nZXREb21haW4oKSxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnByb2plY3RDb25maWdzLmdldFNlcnZpY2UoKSxcbiAgICAgICAgICAgICAgICBwcmltaXRpdmU6IFwiZXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWRcIlxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFdlYnNvY2tldEV2ZW50RGF0YTxFeGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZD4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGV2ZW50O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMucHJvY2Vzc0lkICYmIGRhdGEucGlkID09PSB0aGlzLl9leGNsdXNpb25EZXRhaWxzLnByb2Nlc3NJZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRQcm9jZXNzRGV0YWlscyh0aGlzLl9leGNsdXNpb25EZXRhaWxzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9leGNsdXNpb25EZXRhaWxzLnJlY29yZElkICYmIGRhdGEucmVjb3JkSWQgPT09IHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMucmVjb3JkSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RldGFpbHModGhpcy5fZXhjbHVzaW9uRGV0YWlscyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -49,7 +49,7 @@ var ExclusionsListComponent = /** @class */ (function () {
49
49
  .subscribe(function (queryParams) {
50
50
  _this.entityName = queryParams.entityName;
51
51
  _this.entityDescription = queryParams.entityDescription;
52
- _this.processId = queryParams.processId;
52
+ _this.processId = queryParams.processId || queryParams.pid;
53
53
  });
54
54
  };
55
55
  ExclusionsListComponent.prototype.ngAfterViewInit = function () {
@@ -376,4 +376,4 @@ var ExclusionsListComponent = /** @class */ (function () {
376
376
  return ExclusionsListComponent;
377
377
  }());
378
378
  export { ExclusionsListComponent };
379
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjbHVzaW9ucy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9leGNsdXNpb24tcHJvY2Vzcy1jb21wb25lbnQvIiwic291cmNlcyI6WyJleGNsdXNpb25zLWxpc3QvZXhjbHVzaW9ucy1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQ0gsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixTQUFTLEVBQ1QsU0FBUyxFQUdaLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFHcEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNELElBQU0s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Q0FBQyxpQkFBaUIseUJBQVEsSUFBSSxDQUFDLGlCQUFpQixHQUFLLFVBQVUsQ0FBRSxDQUFDO1NBQ3pFO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQix5QkFBUSxJQUFJLENBQUMsaUJBQWlCLEtBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFFLENBQUM7UUFDMUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sZ0RBQWMsR0FBckIsVUFBc0IsT0FBeUI7UUFDM0MsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsQ0FBQztZQUN2QyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUU7WUFDckIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUN6QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDOUIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7SUEvWHVCLG1DQUFXLEdBQUcsWUFBWSxDQUFDOztnQkE0QnRCLE1BQU07Z0JBQ1AsY0FBYztnQkFDVixnQkFBZ0I7Z0JBQ2QsV0FBVztnQkFDTCxpQkFBaUI7Z0JBQ2Qsb0JBQW9CO2dCQUMzQixhQUFhO2dCQUNaLDBCQUEwQjtnQkFDckMsaUJBQWlCOztJQWhCM0M7UUFEQyxTQUFTLENBQUMsaUJBQWlCLENBQUM7MERBQ1Q7SUFHcEI7UUFEQyxTQUFTLENBQUMseUJBQXlCLENBQUM7OEVBQ3VCO0lBekJuRCx1QkFBdUI7UUFMbkMsU0FBUyxDQUFDO1lBQ1AsNDlOQUErQztZQUUvQyxTQUFTLEVBQUUsRUFBRTtTQUNoQixDQUFDO09BQ1csdUJBQXVCLENBa1luQztJQUFELDhCQUFDO0NBQUEsQUFsWUQsSUFrWUM7U0FsWVksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBMYXp5TG9hZEV2ZW50IH0gZnJvbSBcInByaW1lbmcvYXBpXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7XG4gICAgRW51bUJhZGdlQ29sb3JzLFxuICAgIEVudW1Db2x1bW5GaWVsZFR5cGUsXG4gICAgRmllbGRUeXBlLFxuICAgIEZvcm1GaWVsZCxcbiAgICBJVG9rZW4sXG4gICAgVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zXG59IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cyB9IGZyb20gXCIuLi9lbnVtcy9lbnVtLWV4Y2x1c2lvbi1wcm9jZXNzLXN0YXR1c1wiO1xuaW1wb3J0IHsgRXhjbHVzaW9uUHJvY2VzcyB9IGZyb20gXCIuLi9tb2RlbHNcIjtcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcInByaW1lbmcvdGFibGVcIjtcbmltcG9ydCB7IExvZ2ljYWxEZWxldGVTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzXCI7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgTGlzdFBhcmFtcyB9IGZyb20gXCIuLi9tb2RlbHMvbGlzdC1wYXJhbXNcIjtcbmltcG9ydCB7IExvZ2ljYWxEZWxldGVDb25maWdTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2xvZ2ljYWwtZGVsZXRlLWNvbmZpZy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBFeGNsdXNpb25EZXRhaWxzQ29tcG9uZW50IH0gZnJvbSBcIi4uL2V4Y2x1c2lvbi1kZXRhaWxzXCI7XG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2ZpbHRlci5zZXJ2aWNlXCI7XG5cbmNvbnN0IEhUVFBfQ09ERV9TRVJWRVJfRVJST1JfU1RBUlQgPSA1MDA7XG5jb25zdCBIVFRQX0NPREVfU0VSVkVSX0VSUk9SX0VORCA9IDYwMDtcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6IFwiLi9leGNsdXNpb25zLWxpc3QuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtdLFxuICAgIHByb3ZpZGVyczogW11cbn0pXG5leHBvcnQgY2xhc3MgRXhjbHVzaW9uc0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCAge1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREFURV9GT1JNQVQgPSBcIllZWVktTU0tRERcIjtcblxuICAgIHB1YmxpYyBsb2NhbGUhOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnM7XG4gICAgcHVibGljIGVudGl0eU5hbWU6IHN0cmluZztcbiAgICBwdWJsaWMgZW50aXR5RGVzY3JpcHRpb246IHN0cmluZztcbiAgICBwdWJsaWMgcHJvY2Vzc0lkOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY3VycmVudExpc3RQYXJhbXM6IExpc3RQYXJhbXMgPSB7IHBhZ2U6IDAsIHNpemU6IDEwLCBzb3J0OiBbXSwgZmlsdGVyRGF0YToge30gfTtcbiAgICBwdWJsaWMgZ3JpZERhdGE6IEV4Y2x1c2lvblByb2Nlc3NbXTtcbiAgICBwdWJsaWMgZ3JpZENvbHVtbnM6IGFueVtdO1xuICAgIHB1YmxpYyBzaG93TG9hZGVyID0gZmFsc2U7XG4gICAgcHVibGljIHRvdGFsUmVjb3JkcyA9IDA7XG5cbiAgICBwdWJsaWMgZmlsdGVyRmllbGRzOiBGb3JtRmllbGRbXTtcbiAgICBwdWJsaWMgZmlsdGVyRm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gICAgcHVibGljIGZpbHRlcnNQYW5lbENvbGxhcHNlZCA9IHRydWU7XG4gICAgcHVibGljIHNlYXJjaFRva2VuczogSVRva2VuW10gPSBbXTtcbiAgICBwdWJsaWMgc2VydmVyRXJyb3IgPSBmYWxzZTtcblxuICAgIEBWaWV3Q2hpbGQoXCJleGNsdXNpb25zVGFibGVcIilcbiAgICBwdWJsaWMgdGFibGU6IFRhYmxlO1xuXG4gICAgQFZpZXdDaGlsZChFeGNsdXNpb25EZXRhaWxzQ29tcG9uZW50KVxuICAgIHB1YmxpYyBleGNsdXNpb25EZXRhaWxzQ29tcG9uZW50OiBFeGNsdXNpb25EZXRhaWxzQ29tcG9uZW50O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2dpY2FsRGVsZXRlU2VydmljZTogTG9naWNhbERlbGV0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwcm9qZWN0Q29uZmlnczogTG9naWNhbERlbGV0ZUNvbmZpZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICApIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwID0gdGhpcy5nZXRGb3JtQnVpbGRlcigpO1xuICAgICAgICB0aGlzLmZpbHRlckZpZWxkcyA9IHRoaXMuZ2V0RmlsdGVyRmllbGRzKCk7XG4gICAgICAgIHRoaXMuZ3JpZENvbHVtbnMgPSB0aGlzLmdldEdyaWRDb2x1bW5zKCk7XG5cbiAgICAgICAgdGhpcy5yb3V0ZS5kYXRhXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IHsgW2NvbmZpZ3M6IHN0cmluZ106IGFueSwgbG9jYWxlQ29uZmlnOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlID0gZGF0YS5sb2NhbGVDb25maWc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtc1xuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChxdWVyeVBhcmFtczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRpdHlOYW1lID0gcXVlcnlQYXJhbXMuZW50aXR5TmFtZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVudGl0eURlc2NyaXB0aW9uID0gcXVlcnlQYXJhbXMuZW50aXR5RGVzY3JpcHRpb247XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzSWQgPSBxdWVyeVBhcmFtcy5wcm9jZXNzSWQ7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5lbnRpdHlOYW1lICYmIHRoaXMuZW50aXR5RGVzY3JpcHRpb24gJiYgdGhpcy5wcm9jZXNzSWQpIHtcbiAgICAgICAgICAgIHRoaXMuZXhjbHVzaW9uRGV0YWlsc0NvbXBvbmVudC5zaG93RGV0YWlscyh7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0lkOiB0aGlzLnByb2Nlc3NJZCxcbiAgICAgICAgICAgICAgICBlbnRpdHlEZXNjcmlwdGlvbjogdGhpcy5lbnRpdHlEZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBlbnRpdHlOYW1lOiB0aGlzLmVudGl0eU5hbWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMucm91dGUuc25hcHNob3Q/LnF1ZXJ5UGFyYW1zIH07XG4gICAgICAgIGlmIChwYXJhbXMpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBwYXJhbXMuZW50aXR5TmFtZTtcbiAgICAgICAgICAgIGRlbGV0ZSBwYXJhbXMuZW50aXR5RGVzY3JpcHRpb247XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgeyBxdWVyeVBhcmFtczogcGFyYW1zIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGb3JtQnVpbGRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IFt1bmRlZmluZWQsIFZhbGlkYXRvcnMuY29tcG9zZShbXSldLFxuICAgICAgICAgICAgc3RhdHVzOiBbdW5kZWZpbmVkLCBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXSxcbiAgICAgICAgICAgIHN0YXJ0RGF0ZTogW3sgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXSxcbiAgICAgICAgICAgIGVuZERhdGU6IFt7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRHcmlkQ29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZDogXCJkZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtcImRlc2NyaXB0aW9uXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2Rlc2NyaXB0aW9uYCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5TVFJJTkcsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMzAwcHhcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmllbGQ6IFwic3RhdHVzXCIsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogW1wic3RhdHVzXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0YXR1c2ApLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudW1Db2x1bW5GaWVsZFR5cGUuRU5VTSxcbiAgICAgICAgICAgICAgICBlbnVtUHJlZml4OiBgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VudW1fZXhjbHVzaW9uX3Byb2Nlc3Nfc3RhdHVzX2AsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwcHhcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdG9vbHRpcDogdGhpcy5nZXRDb2x1bW5TdGF0dXNUb29sdGlwLFxuICAgICAgICAgICAgICAgIGJhZGdlQ29uZmlnczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtVmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLkVSUk9SLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5SRURcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW51bVZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5QRU5ESU5HLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5ZRUxMT1dcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW51bVZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5QUk9DRVNTSU5HLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5CTFVFXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuU1VDQ0VTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBFbnVtQmFkZ2VDb2xvcnMuR1JFRU5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmllbGQ6IFwic3RhcnREYXRlXCIsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogW1wic3RhcnREYXRlXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0YXJ0YCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5EQVRFLFxuICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ6IFwiREQvTU0vWVlZWSBISDptbTpzc1wiLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMHB4XCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpZWxkOiBcImZpbmlzaERhdGVcIixcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXCJmaW5pc2hEYXRlXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2ZpbmlzaGApLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudW1Db2x1bW5GaWVsZFR5cGUuREFURSxcbiAgICAgICAgICAgICAgICBkYXRlRm9ybWF0OiBcIkREL01NL1lZWVkgSEg6bW06c3NcIixcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDBweFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uU3RhdHVzVG9vbHRpcChyb3dWYWx1ZTogRXhjbHVzaW9uUHJvY2Vzcykge1xuICAgICAgICBpZiAocm93VmFsdWUuZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gcm93VmFsdWUuZXJyb3JNZXNzYWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaWx0ZXJGaWVsZHMoKSB7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uUHJlZml4ID0gdGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiZGVzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0cmFuc2xhdGlvblByZWZpeH0ubG9naWNhbF9kZWxldGVfZGVzY3JpcHRpb25gKVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICBuYW1lOiBcInN0YXR1c1wiLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RyYW5zbGF0aW9uUHJlZml4fS5sb2dpY2FsX2RlbGV0ZV9zdGF0dXNgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0cmFuc2xhdGlvblByZWZpeH0ubG9naWNhbF9kZWxldGVfc3RhdHVzYCksXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0cmFuc2xhdGlvblByZWZpeH0ubG9naWNhbF9kZWxldGVfZW51bV9leGNsdXNpb25fcHJvY2Vzc19zdGF0dXNfZXJyb3JgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5FUlJPUlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0cmFuc2xhdGlvblByZWZpeH0ubG9naWNhbF9kZWxldGVfZW51bV9leGNsdXNpb25fcHJvY2Vzc19zdGF0dXNfcGVuZGluZ2ApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlBFTkRJTkdcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dHJhbnNsYXRpb25QcmVmaXh9LmxvZ2ljYWxfZGVsZXRlX2VudW1fZXhjbHVzaW9uX3Byb2Nlc3Nfc3RhdHVzX3Byb2Nlc3NpbmdgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5QUk9DRVNTSU5HXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RyYW5zbGF0aW9uUHJlZml4fS5sb2dpY2FsX2RlbGV0ZV9lbnVtX2V4Y2x1c2lvbl9wcm9jZXNzX3N0YXR1c19zdWNjZXNzYCksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuU1VDQ0VTU1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRGF0ZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBcInN0YXJ0RGF0ZVwiLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RyYW5zbGF0aW9uUHJlZml4fS5sb2dpY2FsX2RlbGV0ZV9zdGFydGApXG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkRhdGUsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJlbmREYXRlXCIsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dHJhbnNsYXRpb25QcmVmaXh9LmxvZ2ljYWxfZGVsZXRlX2ZpbmlzaGApXG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFbXB0eVN0YXRlVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZW1wdHlfc3RhdGVfdGl0bGVgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW1wdHlTdGF0ZURlc2NyaXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VtcHR5X3N0YXRlX2Rlc2NyaXB0aW9uYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2xpc3RfdGl0bGVgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGV0YWlsc0J1dHRvblRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2RldGFpbHNgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsdGVyc1RpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmZpbHRlcnNgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsdGVyQnV0dG9uVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0uZmlsdGVyYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENsZWFyQnV0dG9uVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0uY2xlYXJgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXJyb3JJbnZhbGlkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmVycm9yX2ludmFsaWRgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXJyb3JTZXJ2ZXJUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5lcnJvcl9zZXJ2ZXJfdGl0bGVgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXJyb3JTZXJ2ZXJEZXNjcmlwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5lcnJvcl9zZXJ2ZXJfZGVzY3JpcHRpb25gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWN0aW9uc0NvbHVtbkxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmFjdGlvbnNgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWFyY2goKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlckRhdGEgPSB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpO1xuICAgICAgICB0aGlzLmZpbHRlcnNQYW5lbENvbGxhcHNlZCA9IHRydWU7XG4gICAgICAgIHRoaXMucmVzZXRHcmlkKHsgZmlsdGVyRGF0YSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhcigpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAucmVzZXQoKTtcbiAgICAgICAgY29uc3QgZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIHRoaXMucmVzZXRHcmlkKHsgZmlsdGVyRGF0YSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZW1vdmVUb2tlbih0b2tlbjogSVRva2VuKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldCh0b2tlbi5pZCkuc2V0VmFsdWUodW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIHRoaXMucmVzZXRHcmlkKHsgZmlsdGVyRGF0YSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25HcmlkQ2hhbmdlKGV2ZW50OiBMYXp5TG9hZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHNpemUgPSBldmVudC5yb3dzO1xuICAgICAgICBjb25zdCBwYWdlID0gZXZlbnQuZmlyc3QgLyBzaXplO1xuICAgICAgICBjb25zdCBzb3J0ID0gZXZlbnQubXVsdGlTb3J0TWV0YSA/IGV2ZW50Lm11bHRpU29ydE1ldGEgOiBbXTtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlR3JpZCh7IHBhZ2UsIHNpemUsIHNvcnQgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaWx0ZXJUb2tlbnMoKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlckRhdGEgPSB0aGlzLmZpbHRlckZvcm1Hcm91cC52YWx1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJGaWVsZHNcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBmaWx0ZXJEYXRhW25hbWVdICE9PSB1bmRlZmluZWQgJiYgZmlsdGVyRGF0YVtuYW1lXSAhPT0gXCJcIiAmJiBmaWx0ZXJEYXRhW25hbWVdICE9PSBudWxsKVxuICAgICAgICAgICAgLm1hcChmb3JtRmllbGQgPT4gdGhpcy5maWx0ZXJTZXJ2aWNlLmNyZWF0ZUZpbHRlclRva2Vucyhmb3JtRmllbGQsIGZpbHRlckRhdGFbZm9ybUZpZWxkLm5hbWVdKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaWx0ZXJRdWVyeSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB7IGZpbHRlckRhdGEgfSA9IHRoaXMuY3VycmVudExpc3RQYXJhbXM7XG4gICAgICAgIGNvbnN0IGRhdGVGaWVsZHMgPSBbXCJzdGFydERhdGVcIiwgXCJlbmREYXRlXCJdO1xuXG4gICAgICAgIGxldCBmaWx0ZXJRdWVyeSA9IHRoaXMuZmlsdGVyRmllbGRzXG4gICAgICAgICAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gIWRhdGVGaWVsZHMuaW5jbHVkZXMobmFtZSkpXG4gICAgICAgICAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gZmlsdGVyRGF0YVtuYW1lXSAhPT0gdW5kZWZpbmVkICYmIGZpbHRlckRhdGFbbmFtZV0gIT09IFwiXCIgJiYgZmlsdGVyRGF0YVtuYW1lXSAhPT0gbnVsbClcbiAgICAgICAgICAgIC5tYXAoZm9ybUZpZWxkID0+IHRoaXMuZmlsdGVyU2VydmljZS5jcmVhdGVGaWx0ZXJTdHJpbmcoZm9ybUZpZWxkLCBmaWx0ZXJEYXRhW2Zvcm1GaWVsZC5uYW1lXSkpXG4gICAgICAgICAgICAuam9pbihcIiBhbmQgXCIpO1xuXG4gICAgICAgIGxldCBkYXRlUXVlcnk6IHN0cmluZztcbiAgICAgICAgaWYgKGZpbHRlckRhdGEuc3RhcnREYXRlICYmIGZpbHRlckRhdGEuZW5kRGF0ZSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gbW9tZW50KGZpbHRlckRhdGEuc3RhcnREYXRlKS5mb3JtYXQoRXhjbHVzaW9uc0xpc3RDb21wb25lbnQuREFURV9GT1JNQVQpO1xuICAgICAgICAgICAgY29uc3QgZW5kRGF0ZSA9IG1vbWVudChmaWx0ZXJEYXRhLmVuZERhdGUpLmZvcm1hdChFeGNsdXNpb25zTGlzdENvbXBvbmVudC5EQVRFX0ZPUk1BVCk7XG4gICAgICAgICAgICBkYXRlUXVlcnkgPSBgc3RhcnREYXRlIGJldHdlZW4gJyR7c3RhcnREYXRlfVQwMDowMDowMFonIGFuZCAnJHtlbmREYXRlfVQyMzo1OTo1OVonYDtcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJEYXRhLnN0YXJ0RGF0ZSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gbW9tZW50KGZpbHRlckRhdGEuc3RhcnREYXRlKS5mb3JtYXQoRXhjbHVzaW9uc0xpc3RDb21wb25lbnQuREFURV9GT1JNQVQpO1xuICAgICAgICAgICAgZGF0ZVF1ZXJ5ID0gYHN0YXJ0RGF0ZSA+PSAnJHtzdGFydERhdGV9VDAwOjAwOjAwWidgO1xuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlckRhdGEuZW5kRGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgZW5kRGF0ZSA9IG1vbWVudChmaWx0ZXJEYXRhLmVuZERhdGUpLmZvcm1hdChFeGNsdXNpb25zTGlzdENvbXBvbmVudC5EQVRFX0ZPUk1BVCk7XG4gICAgICAgICAgICBkYXRlUXVlcnkgPSBgZmluaXNoRGF0ZSA8PSAnJHtlbmREYXRlfVQyMzo1OTo1OVonYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE7Do28gw6kgbmVjZXNzw6FyaW8gbmVuaHVtYSBjb25kacOnw6NvIGEgbWFpcyBubyBmaWx0cm8uXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF0ZVF1ZXJ5KSB7XG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSArPSBmaWx0ZXJRdWVyeSA/IGAgYW5kICR7ZGF0ZVF1ZXJ5fWAgOiBkYXRlUXVlcnk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyUXVlcnk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVHcmlkKGxpc3RQYXJhbXM6IExpc3RQYXJhbXMgPSB7fSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zID0geyAuLi50aGlzLmN1cnJlbnRMaXN0UGFyYW1zLCAuLi5saXN0UGFyYW1zIH07XG4gICAgICAgIGNvbnN0IHsgcGFnZSwgc2l6ZSwgc29ydCB9ID0gdGhpcy5jdXJyZW50TGlzdFBhcmFtcztcblxuICAgICAgICB0aGlzLnNlYXJjaFRva2VucyA9IHRoaXMuZ2V0RmlsdGVyVG9rZW5zKCk7XG4gICAgICAgIGNvbnN0IGZpbHRlclF1ZXJ5ID0gdGhpcy5nZXRGaWx0ZXJRdWVyeSgpO1xuICAgICAgICBjb25zdCBkaXNwbGF5RmllbGRzID0gW1xuICAgICAgICAgICAgXCJyZWNvcmRJZFwiLFxuICAgICAgICAgICAgXCJlcnJvck1lc3NhZ2VcIixcbiAgICAgICAgICAgIC4uLnRoaXMuZ3JpZENvbHVtbnMubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmllbGQpXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKCFzb3J0Lmxlbmd0aCkge1xuICAgICAgICAgICAgc29ydC5wdXNoKHsgZmllbGQ6ICdzdGFydERhdGUnLCBvcmRlcjogLTEgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxpc3RFeGNsdXNpb25zKHsgcGFnZSwgc2l6ZSwgc29ydCwgZmlsdGVyUXVlcnksIGRpc3BsYXlGaWVsZHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGxpc3RFeGNsdXNpb25zKHBhcmFtczogYW55KSB7XG4gICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VydmVyRXJyb3IgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICB0aGlzLmxvZ2ljYWxEZWxldGVTZXJ2aWNlXG4gICAgICAgICAgICAubGlzdEV4Y2x1c2lvbnModGhpcy5lbnRpdHlOYW1lLCBwYXJhbXMpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA+PSBIVFRQX0NPREVfU0VSVkVSX0VSUk9SX1NUQVJUICYmIGVyci5zdGF0dXMgPCBIVFRQX0NPREVfU0VSVkVSX0VSUk9SX0VORCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJ2ZXJFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgobGlzdDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkRGF0YSA9IGxpc3QuY29udGVudHM7XG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSBsaXN0LnRvdGFsRWxlbWVudHM7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNJbnB1dChlbGVtZW50SWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBlbGVtZW50OiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHtlbGVtZW50SWR9YCk7XG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRHcmlkKGxpc3RQYXJhbXM/OiBMaXN0UGFyYW1zKSB7XG4gICAgICAgIGlmIChsaXN0UGFyYW1zKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zID0geyAuLi50aGlzLmN1cnJlbnRMaXN0UGFyYW1zLCAuLi5saXN0UGFyYW1zIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50TGlzdFBhcmFtcyA9IHsgLi4udGhpcy5jdXJyZW50TGlzdFBhcmFtcywgcGFnZTogMCwgc29ydDogW10gfTtcbiAgICAgICAgdGhpcy50YWJsZS5yZXNldCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsaWNrRGV0YWlscyhyb3dEYXRhOiBFeGNsdXNpb25Qcm9jZXNzKSB7XG4gICAgICAgIHRoaXMuZXhjbHVzaW9uRGV0YWlsc0NvbXBvbmVudC5zaG93RGV0YWlscyh7XG4gICAgICAgICAgICBwcm9jZXNzSWQ6IHJvd0RhdGEuaWQsXG4gICAgICAgICAgICBlbnRpdHlEZXNjcmlwdGlvbjogdGhpcy5lbnRpdHlEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGVudGl0eU5hbWU6IHRoaXMuZW50aXR5TmFtZVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
379
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjbHVzaW9ucy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9leGNsdXNpb24tcHJvY2Vzcy1jb21wb25lbnQvIiwic291cmNlcyI6WyJleGNsdXNpb25zLWxpc3QvZXhjbHVzaW9ucy1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQ0gsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixTQUFTLEVBQ1QsU0FBUyxFQUdaLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFHcEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNELElBQU0s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VUFBVSxFQUFFO1lBQ1osSUFBSSxDQUFDLGlCQUFpQix5QkFBUSxJQUFJLENBQUMsaUJBQWlCLEdBQUssVUFBVSxDQUFFLENBQUM7U0FDekU7UUFDRCxJQUFJLENBQUMsaUJBQWlCLHlCQUFRLElBQUksQ0FBQyxpQkFBaUIsS0FBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUUsQ0FBQztRQUMxRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxnREFBYyxHQUFyQixVQUFzQixPQUF5QjtRQUMzQyxJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxDQUFDO1lBQ3ZDLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUNyQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1lBQ3pDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtTQUM5QixDQUFDLENBQUM7SUFDUCxDQUFDOztJQS9YdUIsbUNBQVcsR0FBRyxZQUFZLENBQUM7O2dCQTRCdEIsTUFBTTtnQkFDUCxjQUFjO2dCQUNWLGdCQUFnQjtnQkFDZCxXQUFXO2dCQUNMLGlCQUFpQjtnQkFDZCxvQkFBb0I7Z0JBQzNCLGFBQWE7Z0JBQ1osMEJBQTBCO2dCQUNyQyxpQkFBaUI7O0lBaEIzQztRQURDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQzswREFDVDtJQUdwQjtRQURDLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQzs4RUFDdUI7SUF6Qm5ELHVCQUF1QjtRQUxuQyxTQUFTLENBQUM7WUFDUCw0OU5BQStDO1lBRS9DLFNBQVMsRUFBRSxFQUFFO1NBQ2hCLENBQUM7T0FDVyx1QkFBdUIsQ0FrWW5DO0lBQUQsOEJBQUM7Q0FBQSxBQWxZRCxJQWtZQztTQWxZWSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IExhenlMb2FkRXZlbnQgfSBmcm9tIFwicHJpbWVuZy9hcGlcIjtcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHtcbiAgICBFbnVtQmFkZ2VDb2xvcnMsXG4gICAgRW51bUNvbHVtbkZpZWxkVHlwZSxcbiAgICBGaWVsZFR5cGUsXG4gICAgRm9ybUZpZWxkLFxuICAgIElUb2tlbixcbiAgICBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnNcbn0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHNcIjtcbmltcG9ydCB7IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzIH0gZnJvbSBcIi4uL2VudW1zL2VudW0tZXhjbHVzaW9uLXByb2Nlc3Mtc3RhdHVzXCI7XG5pbXBvcnQgeyBFeGNsdXNpb25Qcm9jZXNzIH0gZnJvbSBcIi4uL21vZGVsc1wiO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tIFwicHJpbWVuZy90YWJsZVwiO1xuaW1wb3J0IHsgTG9naWNhbERlbGV0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXNcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBMaXN0UGFyYW1zIH0gZnJvbSBcIi4uL21vZGVscy9saXN0LXBhcmFtc1wiO1xuaW1wb3J0IHsgTG9naWNhbERlbGV0ZUNvbmZpZ1NlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvbG9naWNhbC1kZWxldGUtY29uZmlnLnNlcnZpY2VcIjtcbmltcG9ydCB7IEV4Y2x1c2lvbkRldGFpbHNDb21wb25lbnQgfSBmcm9tIFwiLi4vZXhjbHVzaW9uLWRldGFpbHNcIjtcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvZmlsdGVyLnNlcnZpY2VcIjtcblxuY29uc3QgSFRUUF9DT0RFX1NFUlZFUl9FUlJPUl9TVEFSVCA9IDUwMDtcbmNvbnN0IEhUVFBfQ09ERV9TRVJWRVJfRVJST1JfRU5EID0gNjAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2V4Y2x1c2lvbnMtbGlzdC5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW10sXG4gICAgcHJvdmlkZXJzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBFeGNsdXNpb25zTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0ICB7XG5cbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBEQVRFX0ZPUk1BVCA9IFwiWVlZWS1NTS1ERFwiO1xuXG4gICAgcHVibGljIGxvY2FsZSE6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucztcbiAgICBwdWJsaWMgZW50aXR5TmFtZTogc3RyaW5nO1xuICAgIHB1YmxpYyBlbnRpdHlEZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIHB1YmxpYyBwcm9jZXNzSWQ6IHN0cmluZztcblxuICAgIHB1YmxpYyBjdXJyZW50TGlzdFBhcmFtczogTGlzdFBhcmFtcyA9IHsgcGFnZTogMCwgc2l6ZTogMTAsIHNvcnQ6IFtdLCBmaWx0ZXJEYXRhOiB7fSB9O1xuICAgIHB1YmxpYyBncmlkRGF0YTogRXhjbHVzaW9uUHJvY2Vzc1tdO1xuICAgIHB1YmxpYyBncmlkQ29sdW1uczogYW55W107XG4gICAgcHVibGljIHNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICBwdWJsaWMgdG90YWxSZWNvcmRzID0gMDtcblxuICAgIHB1YmxpYyBmaWx0ZXJGaWVsZHM6IEZvcm1GaWVsZFtdO1xuICAgIHB1YmxpYyBmaWx0ZXJGb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgICBwdWJsaWMgZmlsdGVyc1BhbmVsQ29sbGFwc2VkID0gdHJ1ZTtcbiAgICBwdWJsaWMgc2VhcmNoVG9rZW5zOiBJVG9rZW5bXSA9IFtdO1xuICAgIHB1YmxpYyBzZXJ2ZXJFcnJvciA9IGZhbHNlO1xuXG4gICAgQFZpZXdDaGlsZChcImV4Y2x1c2lvbnNUYWJsZVwiKVxuICAgIHB1YmxpYyB0YWJsZTogVGFibGU7XG5cbiAgICBAVmlld0NoaWxkKEV4Y2x1c2lvbkRldGFpbHNDb21wb25lbnQpXG4gICAgcHVibGljIGV4Y2x1c2lvbkRldGFpbHNDb21wb25lbnQ6IEV4Y2x1c2lvbkRldGFpbHNDb21wb25lbnQ7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2ljYWxEZWxldGVTZXJ2aWNlOiBMb2dpY2FsRGVsZXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHByb2plY3RDb25maWdzOiBMb2dpY2FsRGVsZXRlQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICkge1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAgPSB0aGlzLmdldEZvcm1CdWlsZGVyKCk7XG4gICAgICAgIHRoaXMuZmlsdGVyRmllbGRzID0gdGhpcy5nZXRGaWx0ZXJGaWVsZHMoKTtcbiAgICAgICAgdGhpcy5ncmlkQ29sdW1ucyA9IHRoaXMuZ2V0R3JpZENvbHVtbnMoKTtcblxuICAgICAgICB0aGlzLnJvdXRlLmRhdGFcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogeyBbY29uZmlnczogc3RyaW5nXTogYW55LCBsb2NhbGVDb25maWc6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGUgPSBkYXRhLmxvY2FsZUNvbmZpZztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHF1ZXJ5UGFyYW1zOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVudGl0eU5hbWUgPSBxdWVyeVBhcmFtcy5lbnRpdHlOYW1lO1xuICAgICAgICAgICAgICAgIHRoaXMuZW50aXR5RGVzY3JpcHRpb24gPSBxdWVyeVBhcmFtcy5lbnRpdHlEZXNjcmlwdGlvbjtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NJZCA9IHF1ZXJ5UGFyYW1zLnByb2Nlc3NJZCB8fCBxdWVyeVBhcmFtcy5waWQ7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5lbnRpdHlOYW1lICYmIHRoaXMuZW50aXR5RGVzY3JpcHRpb24gJiYgdGhpcy5wcm9jZXNzSWQpIHtcbiAgICAgICAgICAgIHRoaXMuZXhjbHVzaW9uRGV0YWlsc0NvbXBvbmVudC5zaG93RGV0YWlscyh7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0lkOiB0aGlzLnByb2Nlc3NJZCxcbiAgICAgICAgICAgICAgICBlbnRpdHlEZXNjcmlwdGlvbjogdGhpcy5lbnRpdHlEZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBlbnRpdHlOYW1lOiB0aGlzLmVudGl0eU5hbWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMucm91dGUuc25hcHNob3Q/LnF1ZXJ5UGFyYW1zIH07XG4gICAgICAgIGlmIChwYXJhbXMpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBwYXJhbXMuZW50aXR5TmFtZTtcbiAgICAgICAgICAgIGRlbGV0ZSBwYXJhbXMuZW50aXR5RGVzY3JpcHRpb247XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwgeyBxdWVyeVBhcmFtczogcGFyYW1zIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGb3JtQnVpbGRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IFt1bmRlZmluZWQsIFZhbGlkYXRvcnMuY29tcG9zZShbXSldLFxuICAgICAgICAgICAgc3RhdHVzOiBbdW5kZWZpbmVkLCBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXSxcbiAgICAgICAgICAgIHN0YXJ0RGF0ZTogW3sgdmFsdWU6IG51bGwsIGRpc2FibGVkOiBmYWxzZSB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXSxcbiAgICAgICAgICAgIGVuZERhdGU6IFt7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRHcmlkQ29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZDogXCJkZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtcImRlc2NyaXB0aW9uXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2Rlc2NyaXB0aW9uYCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5TVFJJTkcsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMzAwcHhcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmllbGQ6IFwic3RhdHVzXCIsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogW1wic3RhdHVzXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0YXR1c2ApLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudW1Db2x1bW5GaWVsZFR5cGUuRU5VTSxcbiAgICAgICAgICAgICAgICBlbnVtUHJlZml4OiBgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VudW1fZXhjbHVzaW9uX3Byb2Nlc3Nfc3RhdHVzX2AsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwcHhcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdG9vbHRpcDogdGhpcy5nZXRDb2x1bW5TdGF0dXNUb29sdGlwLFxuICAgICAgICAgICAgICAgIGJhZGdlQ29uZmlnczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtVmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLkVSUk9SLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5SRURcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW51bVZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5QRU5ESU5HLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5ZRUxMT1dcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW51bVZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5QUk9DRVNTSU5HLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5CTFVFXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuU1VDQ0VTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBFbnVtQmFkZ2VDb2xvcnMuR1JFRU5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmllbGQ6IFwic3RhcnREYXRlXCIsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogW1wic3RhcnREYXRlXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0YXJ0YCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5EQVRFLFxuICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ6IFwiREQvTU0vWVlZWSBISDptbTpzc1wiLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMHB4XCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpZWxkOiBcImZpbmlzaERhdGVcIixcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXCJmaW5pc2hEYXRlXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2ZpbmlzaGApLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudW1Db2x1bW5GaWVsZFR5cGUuREFURSxcbiAgICAgICAgICAgICAgICBkYXRlRm9ybWF0OiBcIkREL01NL1lZWVkgSEg6bW06c3NcIixcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDBweFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q29sdW1uU3RhdHVzVG9vbHRpcChyb3dWYWx1ZTogRXhjbHVzaW9uUHJvY2Vzcykge1xuICAgICAgICBpZiAocm93VmFsdWUuZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gcm93VmFsdWUuZXJyb3JNZXNzYWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaWx0ZXJGaWVsZHMoKSB7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uUHJlZml4ID0gdGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiZGVzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0cmFuc2xhdGlvblByZWZpeH0ubG9naWNhbF9kZWxldGVfZGVzY3JpcHRpb25gKVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICBuYW1lOiBcInN0YXR1c1wiLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RyYW5zbGF0aW9uUHJlZml4fS5sb2dpY2FsX2RlbGV0ZV9zdGF0dXNgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0cmFuc2xhdGlvblByZWZpeH0ubG9naWNhbF9kZWxldGVfc3RhdHVzYCksXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0cmFuc2xhdGlvblByZWZpeH0ubG9naWNhbF9kZWxldGVfZW51bV9leGNsdXNpb25fcHJvY2Vzc19zdGF0dXNfZXJyb3JgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5FUlJPUlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0cmFuc2xhdGlvblByZWZpeH0ubG9naWNhbF9kZWxldGVfZW51bV9leGNsdXNpb25fcHJvY2Vzc19zdGF0dXNfcGVuZGluZ2ApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlBFTkRJTkdcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dHJhbnNsYXRpb25QcmVmaXh9LmxvZ2ljYWxfZGVsZXRlX2VudW1fZXhjbHVzaW9uX3Byb2Nlc3Nfc3RhdHVzX3Byb2Nlc3NpbmdgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5QUk9DRVNTSU5HXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RyYW5zbGF0aW9uUHJlZml4fS5sb2dpY2FsX2RlbGV0ZV9lbnVtX2V4Y2x1c2lvbl9wcm9jZXNzX3N0YXR1c19zdWNjZXNzYCksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuU1VDQ0VTU1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRGF0ZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBcInN0YXJ0RGF0ZVwiLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RyYW5zbGF0aW9uUHJlZml4fS5sb2dpY2FsX2RlbGV0ZV9zdGFydGApXG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkRhdGUsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJlbmREYXRlXCIsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dHJhbnNsYXRpb25QcmVmaXh9LmxvZ2ljYWxfZGVsZXRlX2ZpbmlzaGApXG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFbXB0eVN0YXRlVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZW1wdHlfc3RhdGVfdGl0bGVgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW1wdHlTdGF0ZURlc2NyaXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VtcHR5X3N0YXRlX2Rlc2NyaXB0aW9uYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2xpc3RfdGl0bGVgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGV0YWlsc0J1dHRvblRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2RldGFpbHNgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsdGVyc1RpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmZpbHRlcnNgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsdGVyQnV0dG9uVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0uZmlsdGVyYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENsZWFyQnV0dG9uVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0uY2xlYXJgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXJyb3JJbnZhbGlkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmVycm9yX2ludmFsaWRgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXJyb3JTZXJ2ZXJUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5lcnJvcl9zZXJ2ZXJfdGl0bGVgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXJyb3JTZXJ2ZXJEZXNjcmlwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5lcnJvcl9zZXJ2ZXJfZGVzY3JpcHRpb25gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWN0aW9uc0NvbHVtbkxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmFjdGlvbnNgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWFyY2goKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlckRhdGEgPSB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpO1xuICAgICAgICB0aGlzLmZpbHRlcnNQYW5lbENvbGxhcHNlZCA9IHRydWU7XG4gICAgICAgIHRoaXMucmVzZXRHcmlkKHsgZmlsdGVyRGF0YSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhcigpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAucmVzZXQoKTtcbiAgICAgICAgY29uc3QgZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIHRoaXMucmVzZXRHcmlkKHsgZmlsdGVyRGF0YSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZW1vdmVUb2tlbih0b2tlbjogSVRva2VuKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldCh0b2tlbi5pZCkuc2V0VmFsdWUodW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIHRoaXMucmVzZXRHcmlkKHsgZmlsdGVyRGF0YSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25HcmlkQ2hhbmdlKGV2ZW50OiBMYXp5TG9hZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHNpemUgPSBldmVudC5yb3dzO1xuICAgICAgICBjb25zdCBwYWdlID0gZXZlbnQuZmlyc3QgLyBzaXplO1xuICAgICAgICBjb25zdCBzb3J0ID0gZXZlbnQubXVsdGlTb3J0TWV0YSA/IGV2ZW50Lm11bHRpU29ydE1ldGEgOiBbXTtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlR3JpZCh7IHBhZ2UsIHNpemUsIHNvcnQgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaWx0ZXJUb2tlbnMoKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlckRhdGEgPSB0aGlzLmZpbHRlckZvcm1Hcm91cC52YWx1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJGaWVsZHNcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBmaWx0ZXJEYXRhW25hbWVdICE9PSB1bmRlZmluZWQgJiYgZmlsdGVyRGF0YVtuYW1lXSAhPT0gXCJcIiAmJiBmaWx0ZXJEYXRhW25hbWVdICE9PSBudWxsKVxuICAgICAgICAgICAgLm1hcChmb3JtRmllbGQgPT4gdGhpcy5maWx0ZXJTZXJ2aWNlLmNyZWF0ZUZpbHRlclRva2Vucyhmb3JtRmllbGQsIGZpbHRlckRhdGFbZm9ybUZpZWxkLm5hbWVdKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaWx0ZXJRdWVyeSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB7IGZpbHRlckRhdGEgfSA9IHRoaXMuY3VycmVudExpc3RQYXJhbXM7XG4gICAgICAgIGNvbnN0IGRhdGVGaWVsZHMgPSBbXCJzdGFydERhdGVcIiwgXCJlbmREYXRlXCJdO1xuXG4gICAgICAgIGxldCBmaWx0ZXJRdWVyeSA9IHRoaXMuZmlsdGVyRmllbGRzXG4gICAgICAgICAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gIWRhdGVGaWVsZHMuaW5jbHVkZXMobmFtZSkpXG4gICAgICAgICAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gZmlsdGVyRGF0YVtuYW1lXSAhPT0gdW5kZWZpbmVkICYmIGZpbHRlckRhdGFbbmFtZV0gIT09IFwiXCIgJiYgZmlsdGVyRGF0YVtuYW1lXSAhPT0gbnVsbClcbiAgICAgICAgICAgIC5tYXAoZm9ybUZpZWxkID0+IHRoaXMuZmlsdGVyU2VydmljZS5jcmVhdGVGaWx0ZXJTdHJpbmcoZm9ybUZpZWxkLCBmaWx0ZXJEYXRhW2Zvcm1GaWVsZC5uYW1lXSkpXG4gICAgICAgICAgICAuam9pbihcIiBhbmQgXCIpO1xuXG4gICAgICAgIGxldCBkYXRlUXVlcnk6IHN0cmluZztcbiAgICAgICAgaWYgKGZpbHRlckRhdGEuc3RhcnREYXRlICYmIGZpbHRlckRhdGEuZW5kRGF0ZSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gbW9tZW50KGZpbHRlckRhdGEuc3RhcnREYXRlKS5mb3JtYXQoRXhjbHVzaW9uc0xpc3RDb21wb25lbnQuREFURV9GT1JNQVQpO1xuICAgICAgICAgICAgY29uc3QgZW5kRGF0ZSA9IG1vbWVudChmaWx0ZXJEYXRhLmVuZERhdGUpLmZvcm1hdChFeGNsdXNpb25zTGlzdENvbXBvbmVudC5EQVRFX0ZPUk1BVCk7XG4gICAgICAgICAgICBkYXRlUXVlcnkgPSBgc3RhcnREYXRlIGJldHdlZW4gJyR7c3RhcnREYXRlfVQwMDowMDowMFonIGFuZCAnJHtlbmREYXRlfVQyMzo1OTo1OVonYDtcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJEYXRhLnN0YXJ0RGF0ZSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gbW9tZW50KGZpbHRlckRhdGEuc3RhcnREYXRlKS5mb3JtYXQoRXhjbHVzaW9uc0xpc3RDb21wb25lbnQuREFURV9GT1JNQVQpO1xuICAgICAgICAgICAgZGF0ZVF1ZXJ5ID0gYHN0YXJ0RGF0ZSA+PSAnJHtzdGFydERhdGV9VDAwOjAwOjAwWidgO1xuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlckRhdGEuZW5kRGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgZW5kRGF0ZSA9IG1vbWVudChmaWx0ZXJEYXRhLmVuZERhdGUpLmZvcm1hdChFeGNsdXNpb25zTGlzdENvbXBvbmVudC5EQVRFX0ZPUk1BVCk7XG4gICAgICAgICAgICBkYXRlUXVlcnkgPSBgZmluaXNoRGF0ZSA8PSAnJHtlbmREYXRlfVQyMzo1OTo1OVonYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE7Do28gw6kgbmVjZXNzw6FyaW8gbmVuaHVtYSBjb25kacOnw6NvIGEgbWFpcyBubyBmaWx0cm8uXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF0ZVF1ZXJ5KSB7XG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSArPSBmaWx0ZXJRdWVyeSA/IGAgYW5kICR7ZGF0ZVF1ZXJ5fWAgOiBkYXRlUXVlcnk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyUXVlcnk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVHcmlkKGxpc3RQYXJhbXM6IExpc3RQYXJhbXMgPSB7fSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zID0geyAuLi50aGlzLmN1cnJlbnRMaXN0UGFyYW1zLCAuLi5saXN0UGFyYW1zIH07XG4gICAgICAgIGNvbnN0IHsgcGFnZSwgc2l6ZSwgc29ydCB9ID0gdGhpcy5jdXJyZW50TGlzdFBhcmFtcztcblxuICAgICAgICB0aGlzLnNlYXJjaFRva2VucyA9IHRoaXMuZ2V0RmlsdGVyVG9rZW5zKCk7XG4gICAgICAgIGNvbnN0IGZpbHRlclF1ZXJ5ID0gdGhpcy5nZXRGaWx0ZXJRdWVyeSgpO1xuICAgICAgICBjb25zdCBkaXNwbGF5RmllbGRzID0gW1xuICAgICAgICAgICAgXCJyZWNvcmRJZFwiLFxuICAgICAgICAgICAgXCJlcnJvck1lc3NhZ2VcIixcbiAgICAgICAgICAgIC4uLnRoaXMuZ3JpZENvbHVtbnMubWFwKGNvbHVtbiA9PiBjb2x1bW4uZmllbGQpXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKCFzb3J0Lmxlbmd0aCkge1xuICAgICAgICAgICAgc29ydC5wdXNoKHsgZmllbGQ6ICdzdGFydERhdGUnLCBvcmRlcjogLTEgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxpc3RFeGNsdXNpb25zKHsgcGFnZSwgc2l6ZSwgc29ydCwgZmlsdGVyUXVlcnksIGRpc3BsYXlGaWVsZHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGxpc3RFeGNsdXNpb25zKHBhcmFtczogYW55KSB7XG4gICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VydmVyRXJyb3IgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICB0aGlzLmxvZ2ljYWxEZWxldGVTZXJ2aWNlXG4gICAgICAgICAgICAubGlzdEV4Y2x1c2lvbnModGhpcy5lbnRpdHlOYW1lLCBwYXJhbXMpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA+PSBIVFRQX0NPREVfU0VSVkVSX0VSUk9SX1NUQVJUICYmIGVyci5zdGF0dXMgPCBIVFRQX0NPREVfU0VSVkVSX0VSUk9SX0VORCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJ2ZXJFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgobGlzdDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkRGF0YSA9IGxpc3QuY29udGVudHM7XG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSBsaXN0LnRvdGFsRWxlbWVudHM7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNJbnB1dChlbGVtZW50SWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBlbGVtZW50OiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHtlbGVtZW50SWR9YCk7XG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRHcmlkKGxpc3RQYXJhbXM/OiBMaXN0UGFyYW1zKSB7XG4gICAgICAgIGlmIChsaXN0UGFyYW1zKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zID0geyAuLi50aGlzLmN1cnJlbnRMaXN0UGFyYW1zLCAuLi5saXN0UGFyYW1zIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50TGlzdFBhcmFtcyA9IHsgLi4udGhpcy5jdXJyZW50TGlzdFBhcmFtcywgcGFnZTogMCwgc29ydDogW10gfTtcbiAgICAgICAgdGhpcy50YWJsZS5yZXNldCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsaWNrRGV0YWlscyhyb3dEYXRhOiBFeGNsdXNpb25Qcm9jZXNzKSB7XG4gICAgICAgIHRoaXMuZXhjbHVzaW9uRGV0YWlsc0NvbXBvbmVudC5zaG93RGV0YWlscyh7XG4gICAgICAgICAgICBwcm9jZXNzSWQ6IHJvd0RhdGEuaWQsXG4gICAgICAgICAgICBlbnRpdHlEZXNjcmlwdGlvbjogdGhpcy5lbnRpdHlEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGVudGl0eU5hbWU6IHRoaXMuZW50aXR5TmFtZVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -31,6 +31,7 @@ export declare class ExclusionDetailsComponent implements OnInit, OnDestroy {
31
31
  private _exclusionProcessStatusChangedSubscribe;
32
32
  private _exclusionDetails;
33
33
  private readonly ngUnsubscribe;
34
+ private subscriptionLoadProcess;
34
35
  constructor(route: ActivatedRoute, translate: TranslateService, logicalDeleteService: LogicalDeleteService, projectConfigs: LogicalDeleteConfigService);
35
36
  ngOnInit(): void;
36
37
  ngOnDestroy(): void;
@@ -43,6 +44,7 @@ export declare class ExclusionDetailsComponent implements OnInit, OnDestroy {
43
44
  isFinished(): boolean;
44
45
  getShowExclusionsButtonLabel(): any;
45
46
  getCloseButtonLabel(): any;
47
+ getUpdateButtonLabel(): any;
46
48
  getSummaryLabel(): any;
47
49
  getStartDateLabel(): any;
48
50
  getFinishDateLabel(): any;
@@ -52,8 +54,10 @@ export declare class ExclusionDetailsComponent implements OnInit, OnDestroy {
52
54
  private getGroupColumns;
53
55
  private getStepColumns;
54
56
  private getColumnStatusTooltip;
57
+ updateDetails(): void;
58
+ private abortRunningLoadProcessCall;
55
59
  private loadProcessDetails;
56
- private checkIfProcessDone;
60
+ private isProcessFinished;
57
61
  private checkIfProcessWasSuccessuful;
58
62
  private notifyProcessFinishedSuccessfully;
59
63
  private sortByDate;