@seniorsistemas/components-ai 2.0.6 → 2.1.0-master-8ce8cb2c

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.
@@ -29,6 +29,7 @@ export class BulkDeleteDialogComponent {
29
29
  currentIndex = 0;
30
30
  successCount = 0;
31
31
  errorCount = 0;
32
+ completedEmitted = false;
32
33
  constructor(translationService) {
33
34
  this.translationService = translationService;
34
35
  }
@@ -47,6 +48,7 @@ export class BulkDeleteDialogComponent {
47
48
  this.currentIndex = 0;
48
49
  this.successCount = 0;
49
50
  this.errorCount = 0;
51
+ this.completedEmitted = false;
50
52
  }
51
53
  get progress() {
52
54
  if (this.deleteStatuses.length === 0)
@@ -80,7 +82,7 @@ export class BulkDeleteDialogComponent {
80
82
  }
81
83
  else {
82
84
  deleteStatus.status = 'error';
83
- deleteStatus.errorMessage = error?.message || error?.statusText || this.translationService.translate('design.components_ai.bulk_delete_error_generic');
85
+ deleteStatus.errorMessage = error?.error?.message || error?.statusText || this.translationService.translate('design.components_ai.bulk_delete_error_generic');
84
86
  this.errorCount++;
85
87
  }
86
88
  return of(null);
@@ -99,7 +101,8 @@ export class BulkDeleteDialogComponent {
99
101
  return;
100
102
  this.visible = false;
101
103
  this.visibleChange.emit(false);
102
- if (this.isCompleted && this.successCount > 0) {
104
+ if (this.isCompleted && this.successCount > 0 && !this.completedEmitted) {
105
+ this.completedEmitted = true;
103
106
  this.onComplete.emit();
104
107
  }
105
108
  }
@@ -157,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
157
160
  }], onComplete: [{
158
161
  type: Output
159
162
  }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay1kZWxldGUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtYWkvc3JjL2xpYi9jb21wb25lbnRzL2J1bGstZGVsZXRlLWRpYWxvZy9idWxrLWRlbGV0ZS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1haS9zcmMvbGliL2NvbXBvbmVudHMvYnVsay1kZWxldGUtZGlhbG9nL2J1bGstZGVsZXRlLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0FBNEIzRCxNQUFNLE9BQU8seUJBQXlCO0lBaUJoQjtJQWhCWCxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ3pCLE1BQU0sR0FBVSxFQUFFLENBQUMsQ0FBQyxtQkFBbUI7SUFDdkMsT0FBTyxDQUFpQixDQUFDLGtCQUFrQjtJQUMzQyxlQUFlLEdBQVcsTUFBTSxDQUFDLENBQUMsK0JBQStCO0lBQ2pFLGVBQWUsR0FBVyxNQUFNLENBQUMsQ0FBQywwQ0FBMEM7SUFDNUUsaUJBQWlCLEdBQVcsc0JBQXNCLENBQUM7SUFDbEQsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUFDNUMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFaEQsY0FBYyxHQUFtQixFQUFFLENBQUM7SUFDcEMsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUM5QixXQUFXLEdBQVksS0FBSyxDQUFDO0lBQzdCLFlBQVksR0FBVyxDQUFDLENBQUM7SUFDekIsWUFBWSxHQUFXLENBQUMsQ0FBQztJQUN6QixVQUFVLEdBQVcsQ0FBQyxDQUFDO0lBRXZCLFlBQW9CLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQUcsQ0FBQztJQUU5RCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLE1BQU07WUFDTixNQUFNLEVBQUUsU0FBUztTQUNsQixDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDaEQsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztZQUNuRSxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXpCLGlDQUFpQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQzthQUN0QixJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLFlBQVksQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDO1lBRW5DLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3JELFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2IsWUFBWSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ3hCLG9EQUFvRDtnQkFDcEQsSUFBSSxLQUFLLEVBQUUsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO29CQUMxQixZQUFZLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN0QixDQUFDO3FCQUFNLENBQUM7b0JBQ04sWUFBWSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7b0JBQzlCLFlBQVksQ0FBQyxZQUFZLEdBQUcsS0FBSyxFQUFFLE9BQU8sSUFBSSxLQUFLLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsZ0RBQWdELENBQUMsQ0FBQztvQkFDdkosSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNwQixDQUFDO2dCQUVELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztnQkFDL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzVCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0IsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQWM7UUFDOUIsUUFBUSxNQUFNLEVBQUUsQ0FBQztZQUNmLEtBQUssU0FBUyxDQUFDLENBQUMsT0FBTyxXQUFXLENBQUM7WUFDbkMsS0FBSyxZQUFZLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQztZQUNqQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDO1lBQ2pDLEtBQUssT0FBTyxDQUFDLENBQUMsT0FBTyxRQUFRLENBQUM7WUFDOUIsT0FBTyxDQUFDLENBQUMsT0FBTyxXQUFXLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsTUFBYztRQUMzQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsMkNBQTJDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFjO1FBQzFCLFFBQVEsTUFBTSxFQUFFLENBQUM7WUFDZixLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8sYUFBYSxDQUFDO1lBQ3JDLEtBQUssWUFBWSxDQUFDLENBQUMsT0FBTyx1QkFBdUIsQ0FBQztZQUNsRCxLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8sYUFBYSxDQUFDO1lBQ3JDLEtBQUssT0FBTyxDQUFDLENBQUMsT0FBTyxhQUFhLENBQUM7WUFDbkMsT0FBTyxDQUFDLENBQUMsT0FBTyxnQkFBZ0IsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQzt3R0FsSVUseUJBQXlCOzRGQUF6Qix5QkFBeUIsb1dDbkN0QywyNUpBMklBLDhySURsSEksWUFBWSw4QkFDWixZQUFZLDBnQ0FDWixZQUFZLGliQUNaLGlCQUFpQix3T0FDakIsU0FBUywySkFDVCxhQUFhOzs0RkFLSix5QkFBeUI7a0JBZHJDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBQ3RCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLFNBQVM7d0JBQ1QsYUFBYTtxQkFDZDt1RkFLUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcHJvZ3Jlc3NiYXInO1xuaW1wb3J0IHsgVGFnTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWcnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgY29uY2F0TWFwLCBmcm9tLCBvZiwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgRGVsZXRlU3RhdHVzIHtcbiAgZW50aXR5OiBhbnk7XG4gIHN0YXR1czogJ3BlbmRpbmcnIHwgJ3Byb2Nlc3NpbmcnIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vLyBJbnRlcmZhY2UgcGFyYSBvIHNlcnZpw6dvIGRlIGVudGlkYWRlIChkdWNrIHR5cGluZylcbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5U2VydmljZSB7XG4gIGRlbGV0ZShpZDogYW55KTogT2JzZXJ2YWJsZTxhbnk+O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzaWEtYnVsay1kZWxldGUtZGlhbG9nJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBEaWFsb2dNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIFByb2dyZXNzQmFyTW9kdWxlLFxuICAgIFRhZ01vZHVsZSxcbiAgICBUcmFuc2xhdGVQaXBlXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9idWxrLWRlbGV0ZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYnVsay1kZWxldGUtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBCdWxrRGVsZXRlRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzdGFnZXM6IGFueVtdID0gW107IC8vIEdlbmVyaWMgZW50aXRpZXNcbiAgQElucHV0KCkgc2VydmljZSE6IEVudGl0eVNlcnZpY2U7IC8vIEdlbmVyaWMgc2VydmljZVxuICBASW5wdXQoKSBlbnRpdHlOYW1lRmllbGQ6IHN0cmluZyA9ICduYW1lJzsgLy8gRmllbGQgdG8gZGlzcGxheSBlbnRpdHkgbmFtZVxuICBASW5wdXQoKSBlbnRpdHlDb2RlRmllbGQ6IHN0cmluZyA9ICdjb2RlJzsgLy8gRmllbGQgdG8gZGlzcGxheSBlbnRpdHkgY29kZSAob3B0aW9uYWwpXG4gIEBJbnB1dCgpIHRyYW5zbGF0aW9uUHJlZml4OiBzdHJpbmcgPSAnZGVzaWduLmNvbXBvbmVudHNfYWknO1xuICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIG9uQ29tcGxldGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgZGVsZXRlU3RhdHVzZXM6IERlbGV0ZVN0YXR1c1tdID0gW107XG4gIGlzUHJvY2Vzc2luZzogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0NvbXBsZXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBjdXJyZW50SW5kZXg6IG51bWJlciA9IDA7XG4gIHN1Y2Nlc3NDb3VudDogbnVtYmVyID0gMDtcbiAgZXJyb3JDb3VudDogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlKSB7fVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpc2libGUgJiYgdGhpcy5zdGFnZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pbml0aWFsaXplU3RhdHVzZXMoKTtcbiAgICB9XG4gIH1cblxuICBpbml0aWFsaXplU3RhdHVzZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGVTdGF0dXNlcyA9IHRoaXMuc3RhZ2VzLm1hcChlbnRpdHkgPT4gKHtcbiAgICAgIGVudGl0eSxcbiAgICAgIHN0YXR1czogJ3BlbmRpbmcnXG4gICAgfSkpO1xuICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XG4gICAgdGhpcy5pc0NvbXBsZXRlZCA9IGZhbHNlO1xuICAgIHRoaXMuY3VycmVudEluZGV4ID0gMDtcbiAgICB0aGlzLnN1Y2Nlc3NDb3VudCA9IDA7XG4gICAgdGhpcy5lcnJvckNvdW50ID0gMDtcbiAgfVxuXG4gIGdldCBwcm9ncmVzcygpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLmRlbGV0ZVN0YXR1c2VzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoKHRoaXMuY3VycmVudEluZGV4IC8gdGhpcy5kZWxldGVTdGF0dXNlcy5sZW5ndGgpICogMTAwKTtcbiAgfVxuXG4gIGdldCBjYW5DbG9zZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNQcm9jZXNzaW5nIHx8IHRoaXMuaXNDb21wbGV0ZWQ7XG4gIH1cblxuICBzdGFydERlbGV0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZXJ2aWNlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdTZXJ2aWNlIG5vdCBwcm92aWRlZCB0byBCdWxrRGVsZXRlRGlhbG9nQ29tcG9uZW50Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSB0cnVlO1xuICAgIHRoaXMuaXNDb21wbGV0ZWQgPSBmYWxzZTtcblxuICAgIC8vIFByb2Nlc3MgZGVsZXRpb25zIHNlcXVlbnRpYWxseVxuICAgIGZyb20odGhpcy5kZWxldGVTdGF0dXNlcylcbiAgICAgIC5waXBlKFxuICAgICAgICBjb25jYXRNYXAoKGRlbGV0ZVN0YXR1cywgaW5kZXgpID0+IHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IGluZGV4O1xuICAgICAgICAgIGRlbGV0ZVN0YXR1cy5zdGF0dXMgPSAncHJvY2Vzc2luZyc7XG4gICAgICAgICAgXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5kZWxldGUoZGVsZXRlU3RhdHVzLmVudGl0eS5pZCkucGlwZShcbiAgICAgICAgICAgIGNvbmNhdE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgIGRlbGV0ZVN0YXR1cy5zdGF0dXMgPSAnc3VjY2Vzcyc7XG4gICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0NvdW50Kys7XG4gICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAvLyBDaGVjayBpZiBpdCdzIGFjdHVhbGx5IGEgc3VjY2VzcyAoMjA0IE5vIENvbnRlbnQpXG4gICAgICAgICAgICAgIGlmIChlcnJvcj8uc3RhdHVzID09PSAyMDQpIHtcbiAgICAgICAgICAgICAgICBkZWxldGVTdGF0dXMuc3RhdHVzID0gJ3N1Y2Nlc3MnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0NvdW50Kys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlU3RhdHVzLnN0YXR1cyA9ICdlcnJvcic7XG4gICAgICAgICAgICAgICAgZGVsZXRlU3RhdHVzLmVycm9yTWVzc2FnZSA9IGVycm9yPy5tZXNzYWdlIHx8IGVycm9yPy5zdGF0dXNUZXh0IHx8IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZSgnZGVzaWduLmNvbXBvbmVudHNfYWkuYnVsa19kZWxldGVfZXJyb3JfZ2VuZXJpYycpO1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JDb3VudCsrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IHRoaXMuZGVsZXRlU3RhdHVzZXMubGVuZ3RoO1xuICAgICAgICAgIHRoaXMuaXNDb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgb25IaWRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jYW5DbG9zZSkgcmV0dXJuO1xuICAgIFxuICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICBcbiAgICBpZiAodGhpcy5pc0NvbXBsZXRlZCAmJiB0aGlzLnN1Y2Nlc3NDb3VudCA+IDApIHtcbiAgICAgIHRoaXMub25Db21wbGV0ZS5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uSGlkZSgpO1xuICB9XG5cbiAgZ2V0U3RhdHVzU2V2ZXJpdHkoc3RhdHVzOiBzdHJpbmcpOiAnc2Vjb25kYXJ5JyB8ICdpbmZvJyB8ICdzdWNjZXNzJyB8ICdkYW5nZXInIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAncGVuZGluZyc6IHJldHVybiAnc2Vjb25kYXJ5JztcbiAgICAgIGNhc2UgJ3Byb2Nlc3NpbmcnOiByZXR1cm4gJ2luZm8nO1xuICAgICAgY2FzZSAnc3VjY2Vzcyc6IHJldHVybiAnc3VjY2Vzcyc7XG4gICAgICBjYXNlICdlcnJvcic6IHJldHVybiAnZGFuZ2VyJztcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAnc2Vjb25kYXJ5JztcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0dXNMYWJlbChzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLnRyYW5zbGF0ZShgZGVzaWduLmNvbXBvbmVudHNfYWkuYnVsa19kZWxldGVfc3RhdHVzXyR7c3RhdHVzfWApO1xuICB9XG5cbiAgZ2V0U3RhdHVzSWNvbihzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ3BlbmRpbmcnOiByZXR1cm4gJ3BpIHBpLWNsb2NrJztcbiAgICAgIGNhc2UgJ3Byb2Nlc3NpbmcnOiByZXR1cm4gJ3BpIHBpLXNwaW4gcGktc3Bpbm5lcic7XG4gICAgICBjYXNlICdzdWNjZXNzJzogcmV0dXJuICdwaSBwaS1jaGVjayc7XG4gICAgICBjYXNlICdlcnJvcic6IHJldHVybiAncGkgcGktdGltZXMnO1xuICAgICAgZGVmYXVsdDogcmV0dXJuICdwaSBwaS1xdWVzdGlvbic7XG4gICAgfVxuICB9XG59XG4iLCI8cC1kaWFsb2dcbiAgWyh2aXNpYmxlKV09XCJ2aXNpYmxlXCJcbiAgW21vZGFsXT1cInRydWVcIlxuICBbY2xvc2FibGVdPVwiY2FuQ2xvc2VcIlxuICBbY2xvc2VPbkVzY2FwZV09XCJjYW5DbG9zZVwiXG4gIFtkaXNtaXNzYWJsZU1hc2tdPVwiZmFsc2VcIlxuICBbc3R5bGVdPVwieyB3aWR0aDogJzcwMHB4JywgbWF4V2lkdGg6ICc5MHZ3JyB9XCJcbiAgKG9uSGlkZSk9XCJvbkhpZGUoKVwiXG4+XG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWhlYWRlclwiPlxuICAgICAgPGkgY2xhc3M9XCJwaSBwaS10cmFzaCBoZWFkZXItaWNvblwiPjwvaT5cbiAgICAgIDxoMj57eyAnZGVzaWduLmNvbXBvbmVudHNfYWkuYnVsa19kZWxldGVfdGl0bGUnIHwgdHJhbnNsYXRlIH19PC9oMj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWNvbnRlbnRcIj5cbiAgICA8IS0tIFN1bW1hcnkgLS0+XG4gICAgQGlmICghaXNQcm9jZXNzaW5nICYmICFpc0NvbXBsZXRlZCkge1xuICAgICAgPGRpdiBjbGFzcz1cInN1bW1hcnktc2VjdGlvblwiPlxuICAgICAgICA8cCBjbGFzcz1cInN1bW1hcnktdGV4dFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktZXhjbGFtYXRpb24tdHJpYW5nbGUgd2FybmluZy1pY29uXCI+PC9pPlxuICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmJ1bGtfZGVsZXRlX3dhcm5pbmcnIHwgdHJhbnNsYXRlOnsgY291bnQ6IHN0YWdlcy5sZW5ndGggfVwiPjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8cCBjbGFzcz1cInN1bW1hcnktZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICB7eyAnZGVzaWduLmNvbXBvbmVudHNfYWkuYnVsa19kZWxldGVfZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gUHJvZ3Jlc3MgQmFyIC0tPlxuICAgIEBpZiAoaXNQcm9jZXNzaW5nIHx8IGlzQ29tcGxldGVkKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3Mtc2VjdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtaW5mb1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZ3Jlc3MtbGFiZWxcIj57eyAnZGVzaWduLmNvbXBvbmVudHNfYWkuYnVsa19kZWxldGVfcHJvZ3Jlc3MnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvZ3Jlc3MtY291bnRcIj57eyBjdXJyZW50SW5kZXggfX0gLyB7eyBkZWxldGVTdGF0dXNlcy5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cC1wcm9ncmVzc0JhciBcbiAgICAgICAgICBbdmFsdWVdPVwicHJvZ3Jlc3NcIiBcbiAgICAgICAgICBbc2hvd1ZhbHVlXT1cImZhbHNlXCJcbiAgICAgICAgICBzdHlsZUNsYXNzPVwiY3VzdG9tLXByb2dyZXNzXCJcbiAgICAgICAgPjwvcC1wcm9ncmVzc0Jhcj5cbiAgICAgICAgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1zdGF0c1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0IHN1Y2Nlc3NcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktY2hlY2stY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4+e3sgc3VjY2Vzc0NvdW50IH19IHt7ICdkZXNpZ24uY29tcG9uZW50c19haS5idWxrX2RlbGV0ZV9zdWNjZXNzX2NvdW50JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBAaWYgKGVycm9yQ291bnQgPiAwKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdCBlcnJvclwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXRpbWVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgZXJyb3JDb3VudCB9fSB7eyAnZGVzaWduLmNvbXBvbmVudHNfYWkuYnVsa19kZWxldGVfZXJyb3JfY291bnQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gU3RhdHVzIExpc3QgLS0+XG4gICAgQGlmIChpc1Byb2Nlc3NpbmcgfHwgaXNDb21wbGV0ZWQpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtbGlzdFwiPlxuICAgICAgICBAZm9yIChpdGVtIG9mIGRlbGV0ZVN0YXR1c2VzOyB0cmFjayBpdGVtLmVudGl0eSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtaXRlbVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy1pbmZvXCI+XG4gICAgICAgICAgICAgIDxpIFtjbGFzc109XCJnZXRTdGF0dXNJY29uKGl0ZW0uc3RhdHVzKVwiIGNsYXNzPVwic3RhdHVzLWljb25cIj48L2k+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RhZ2UtbmFtZVwiPnt7IGl0ZW0uZW50aXR5W2VudGl0eU5hbWVGaWVsZF0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtLmVudGl0eVtlbnRpdHlDb2RlRmllbGRdKSB7XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YWdlLWNvZGVcIj57eyAnZGVzaWduLmNvbXBvbmVudHNfYWkuYnVsa19kZWxldGVfY29kZV9sYWJlbCcgfCB0cmFuc2xhdGUgfX06IHt7IGl0ZW0uZW50aXR5W2VudGl0eUNvZGVGaWVsZF0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy1iYWRnZVwiPlxuICAgICAgICAgICAgICA8cC10YWcgXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImdldFN0YXR1c0xhYmVsKGl0ZW0uc3RhdHVzKVwiIFxuICAgICAgICAgICAgICAgIFtzZXZlcml0eV09XCJnZXRTdGF0dXNTZXZlcml0eShpdGVtLnN0YXR1cylcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChpdGVtLnN0YXR1cyA9PT0gJ3Byb2Nlc3NpbmcnKSB7XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNwaW4gcGktc3Bpbm5lclwiPjwvaT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvcC10YWc+XG4gICAgICAgICAgICAgIEBpZiAoaXRlbS5zdGF0dXMgPT09ICdlcnJvcicgJiYgaXRlbS5lcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBpdGVtLmVycm9yTWVzc2FnZSB9fVxuICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8IS0tIENvbXBsZXRpb24gTWVzc2FnZSAtLT5cbiAgICBAaWYgKGlzQ29tcGxldGVkKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiY29tcGxldGlvbi1zZWN0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb21wbGV0aW9uLW1lc3NhZ2VcIiBbY2xhc3MuaGFzLWVycm9yc109XCJlcnJvckNvdW50ID4gMFwiPlxuICAgICAgICAgIDxpIFtjbGFzc109XCJlcnJvckNvdW50ID4gMCA/ICdwaSBwaS1leGNsYW1hdGlvbi1jaXJjbGUnIDogJ3BpIHBpLWNoZWNrLWNpcmNsZSdcIiBjbGFzcz1cImNvbXBsZXRpb24taWNvblwiPjwvaT5cbiAgICAgICAgICBAaWYgKGVycm9yQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICB7eyAnZGVzaWduLmNvbXBvbmVudHNfYWkuYnVsa19kZWxldGVfc3VjY2Vzc19tZXNzYWdlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKGVycm9yQ291bnQgPiAwKSB7XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAge3sgJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmJ1bGtfZGVsZXRlX2NvbXBsZXRlZF93aXRoX2Vycm9ycycgfCB0cmFuc2xhdGU6eyBjb3VudDogZXJyb3JDb3VudCB9IH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctZm9vdGVyXCI+XG4gICAgICBAaWYgKCFpc1Byb2Nlc3NpbmcgJiYgIWlzQ29tcGxldGVkKSB7XG4gICAgICAgIDxwLWJ1dHRvblxuICAgICAgICAgIFtsYWJlbF09XCInZGVzaWduLmNvbXBvbmVudHNfYWkuY2FuY2VsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgaWNvbj1cInBpIHBpLXRpbWVzXCJcbiAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgW291dGxpbmVkXT1cInRydWVcIlxuICAgICAgICAgIChvbkNsaWNrKT1cIm9uQ2xvc2UoKVwiXG4gICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICBbbGFiZWxdPVwiJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmJ1bGtfZGVsZXRlX2NvbmZpcm0nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBpY29uPVwicGkgcGktdHJhc2hcIlxuICAgICAgICAgIHNldmVyaXR5PVwiZGFuZ2VyXCJcbiAgICAgICAgICAob25DbGljayk9XCJzdGFydERlbGV0aW9uKClcIlxuICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgIH1cbiAgICAgIEBpZiAoaXNDb21wbGV0ZWQpIHtcbiAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgW2xhYmVsXT1cIidkZXNpZ24uY29tcG9uZW50c19haS5jbG9zZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIGljb249XCJwaSBwaS1jaGVja1wiXG4gICAgICAgICAgKG9uQ2xpY2spPVwib25DbG9zZSgpXCJcbiAgICAgICAgPjwvcC1idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L3AtZGlhbG9nPlxuIl19
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay1kZWxldGUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMtYWkvc3JjL2xpYi9jb21wb25lbnRzL2J1bGstZGVsZXRlLWRpYWxvZy9idWxrLWRlbGV0ZS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy1haS9zcmMvbGliL2NvbXBvbmVudHMvYnVsay1kZWxldGUtZGlhbG9nL2J1bGstZGVsZXRlLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0FBNEIzRCxNQUFNLE9BQU8seUJBQXlCO0lBa0JoQjtJQWpCWCxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ3pCLE1BQU0sR0FBVSxFQUFFLENBQUMsQ0FBQyxtQkFBbUI7SUFDdkMsT0FBTyxDQUFpQixDQUFDLGtCQUFrQjtJQUMzQyxlQUFlLEdBQVcsTUFBTSxDQUFDLENBQUMsK0JBQStCO0lBQ2pF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U0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsU0FBUzt3QkFDVCxhQUFhO3FCQUNkO3VGQUtRLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGlhbG9nJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9wcm9ncmVzc2Jhcic7XG5pbXBvcnQgeyBUYWdNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhZyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBjb25jYXRNYXAsIGZyb20sIG9mLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24uc2VydmljZSc7XG5cbmludGVyZmFjZSBEZWxldGVTdGF0dXMge1xuICBlbnRpdHk6IGFueTtcbiAgc3RhdHVzOiAncGVuZGluZycgfCAncHJvY2Vzc2luZycgfCAnc3VjY2VzcycgfCAnZXJyb3InO1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbi8vIEludGVyZmFjZSBwYXJhIG8gc2VydmnDp28gZGUgZW50aWRhZGUgKGR1Y2sgdHlwaW5nKVxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlTZXJ2aWNlIHtcbiAgZGVsZXRlKGlkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpYS1idWxrLWRlbGV0ZS1kaWFsb2cnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIERpYWxvZ01vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgUHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgVGFnTW9kdWxlLFxuICAgIFRyYW5zbGF0ZVBpcGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1bGstZGVsZXRlLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9idWxrLWRlbGV0ZS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIEJ1bGtEZWxldGVEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSB2aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHN0YWdlczogYW55W10gPSBbXTsgLy8gR2VuZXJpYyBlbnRpdGllc1xuICBASW5wdXQoKSBzZXJ2aWNlITogRW50aXR5U2VydmljZTsgLy8gR2VuZXJpYyBzZXJ2aWNlXG4gIEBJbnB1dCgpIGVudGl0eU5hbWVGaWVsZDogc3RyaW5nID0gJ25hbWUnOyAvLyBGaWVsZCB0byBkaXNwbGF5IGVudGl0eSBuYW1lXG4gIEBJbnB1dCgpIGVudGl0eUNvZGVGaWVsZDogc3RyaW5nID0gJ2NvZGUnOyAvLyBGaWVsZCB0byBkaXNwbGF5IGVudGl0eSBjb2RlIChvcHRpb25hbClcbiAgQElucHV0KCkgdHJhbnNsYXRpb25QcmVmaXg6IHN0cmluZyA9ICdkZXNpZ24uY29tcG9uZW50c19haSc7XG4gIEBPdXRwdXQoKSB2aXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgb25Db21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBkZWxldGVTdGF0dXNlczogRGVsZXRlU3RhdHVzW10gPSBbXTtcbiAgaXNQcm9jZXNzaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIGlzQ29tcGxldGVkOiBib29sZWFuID0gZmFsc2U7XG4gIGN1cnJlbnRJbmRleDogbnVtYmVyID0gMDtcbiAgc3VjY2Vzc0NvdW50OiBudW1iZXIgPSAwO1xuICBlcnJvckNvdW50OiBudW1iZXIgPSAwO1xuICBwcml2YXRlIGNvbXBsZXRlZEVtaXR0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlKSB7fVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZpc2libGUgJiYgdGhpcy5zdGFnZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pbml0aWFsaXplU3RhdHVzZXMoKTtcbiAgICB9XG4gIH1cblxuICBpbml0aWFsaXplU3RhdHVzZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGVTdGF0dXNlcyA9IHRoaXMuc3RhZ2VzLm1hcChlbnRpdHkgPT4gKHtcbiAgICAgIGVudGl0eSxcbiAgICAgIHN0YXR1czogJ3BlbmRpbmcnXG4gICAgfSkpO1xuICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XG4gICAgdGhpcy5pc0NvbXBsZXRlZCA9IGZhbHNlO1xuICAgIHRoaXMuY3VycmVudEluZGV4ID0gMDtcbiAgICB0aGlzLnN1Y2Nlc3NDb3VudCA9IDA7XG4gICAgdGhpcy5lcnJvckNvdW50ID0gMDtcbiAgICB0aGlzLmNvbXBsZXRlZEVtaXR0ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGdldCBwcm9ncmVzcygpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLmRlbGV0ZVN0YXR1c2VzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDA7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoKHRoaXMuY3VycmVudEluZGV4IC8gdGhpcy5kZWxldGVTdGF0dXNlcy5sZW5ndGgpICogMTAwKTtcbiAgfVxuXG4gIGdldCBjYW5DbG9zZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNQcm9jZXNzaW5nIHx8IHRoaXMuaXNDb21wbGV0ZWQ7XG4gIH1cblxuICBzdGFydERlbGV0aW9uKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zZXJ2aWNlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdTZXJ2aWNlIG5vdCBwcm92aWRlZCB0byBCdWxrRGVsZXRlRGlhbG9nQ29tcG9uZW50Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSB0cnVlO1xuICAgIHRoaXMuaXNDb21wbGV0ZWQgPSBmYWxzZTtcblxuICAgIC8vIFByb2Nlc3MgZGVsZXRpb25zIHNlcXVlbnRpYWxseVxuICAgIGZyb20odGhpcy5kZWxldGVTdGF0dXNlcylcbiAgICAgIC5waXBlKFxuICAgICAgICBjb25jYXRNYXAoKGRlbGV0ZVN0YXR1cywgaW5kZXgpID0+IHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IGluZGV4O1xuICAgICAgICAgIGRlbGV0ZVN0YXR1cy5zdGF0dXMgPSAncHJvY2Vzc2luZyc7XG4gICAgICAgICAgXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5kZWxldGUoZGVsZXRlU3RhdHVzLmVudGl0eS5pZCkucGlwZShcbiAgICAgICAgICAgIGNvbmNhdE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgIGRlbGV0ZVN0YXR1cy5zdGF0dXMgPSAnc3VjY2Vzcyc7XG4gICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0NvdW50Kys7XG4gICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAvLyBDaGVjayBpZiBpdCdzIGFjdHVhbGx5IGEgc3VjY2VzcyAoMjA0IE5vIENvbnRlbnQpXG4gICAgICAgICAgICAgIGlmIChlcnJvcj8uc3RhdHVzID09PSAyMDQpIHtcbiAgICAgICAgICAgICAgICBkZWxldGVTdGF0dXMuc3RhdHVzID0gJ3N1Y2Nlc3MnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzc0NvdW50Kys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlU3RhdHVzLnN0YXR1cyA9ICdlcnJvcic7XG4gICAgICAgICAgICAgICAgZGVsZXRlU3RhdHVzLmVycm9yTWVzc2FnZSA9IGVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fCBlcnJvcj8uc3RhdHVzVGV4dCB8fCB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUoJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmJ1bGtfZGVsZXRlX2Vycm9yX2dlbmVyaWMnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yQ291bnQrKztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSB0aGlzLmRlbGV0ZVN0YXR1c2VzLmxlbmd0aDtcbiAgICAgICAgICB0aGlzLmlzQ29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmlzUHJvY2Vzc2luZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIG9uSGlkZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2FuQ2xvc2UpIHJldHVybjtcbiAgICBcbiAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgXG4gICAgaWYgKHRoaXMuaXNDb21wbGV0ZWQgJiYgdGhpcy5zdWNjZXNzQ291bnQgPiAwICYmICF0aGlzLmNvbXBsZXRlZEVtaXR0ZWQpIHtcbiAgICAgIHRoaXMuY29tcGxldGVkRW1pdHRlZCA9IHRydWU7XG4gICAgICB0aGlzLm9uQ29tcGxldGUuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5vbkhpZGUoKTtcbiAgfVxuXG4gIGdldFN0YXR1c1NldmVyaXR5KHN0YXR1czogc3RyaW5nKTogJ3NlY29uZGFyeScgfCAnaW5mbycgfCAnc3VjY2VzcycgfCAnZGFuZ2VyJyB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ3BlbmRpbmcnOiByZXR1cm4gJ3NlY29uZGFyeSc7XG4gICAgICBjYXNlICdwcm9jZXNzaW5nJzogcmV0dXJuICdpbmZvJztcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOiByZXR1cm4gJ3N1Y2Nlc3MnO1xuICAgICAgY2FzZSAnZXJyb3InOiByZXR1cm4gJ2Rhbmdlcic7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gJ3NlY29uZGFyeSc7XG4gICAgfVxuICB9XG5cbiAgZ2V0U3RhdHVzTGFiZWwoc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGUoYGRlc2lnbi5jb21wb25lbnRzX2FpLmJ1bGtfZGVsZXRlX3N0YXR1c18ke3N0YXR1c31gKTtcbiAgfVxuXG4gIGdldFN0YXR1c0ljb24oc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdwZW5kaW5nJzogcmV0dXJuICdwaSBwaS1jbG9jayc7XG4gICAgICBjYXNlICdwcm9jZXNzaW5nJzogcmV0dXJuICdwaSBwaS1zcGluIHBpLXNwaW5uZXInO1xuICAgICAgY2FzZSAnc3VjY2Vzcyc6IHJldHVybiAncGkgcGktY2hlY2snO1xuICAgICAgY2FzZSAnZXJyb3InOiByZXR1cm4gJ3BpIHBpLXRpbWVzJztcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAncGkgcGktcXVlc3Rpb24nO1xuICAgIH1cbiAgfVxufVxuIiwiPHAtZGlhbG9nXG4gIFsodmlzaWJsZSldPVwidmlzaWJsZVwiXG4gIFttb2RhbF09XCJ0cnVlXCJcbiAgW2Nsb3NhYmxlXT1cImNhbkNsb3NlXCJcbiAgW2Nsb3NlT25Fc2NhcGVdPVwiY2FuQ2xvc2VcIlxuICBbZGlzbWlzc2FibGVNYXNrXT1cImZhbHNlXCJcbiAgW3N0eWxlXT1cInsgd2lkdGg6ICc3MDBweCcsIG1heFdpZHRoOiAnOTB2dycgfVwiXG4gIChvbkhpZGUpPVwib25IaWRlKClcIlxuPlxuICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXJcIj5cbiAgICAgIDxpIGNsYXNzPVwicGkgcGktdHJhc2ggaGVhZGVyLWljb25cIj48L2k+XG4gICAgICA8aDI+e3sgJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmJ1bGtfZGVsZXRlX3RpdGxlJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPGRpdiBjbGFzcz1cImRpYWxvZy1jb250ZW50XCI+XG4gICAgPCEtLSBTdW1tYXJ5IC0tPlxuICAgIEBpZiAoIWlzUHJvY2Vzc2luZyAmJiAhaXNDb21wbGV0ZWQpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5LXNlY3Rpb25cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJzdW1tYXJ5LXRleHRcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlIHdhcm5pbmctaWNvblwiPjwvaT5cbiAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cIidkZXNpZ24uY29tcG9uZW50c19haS5idWxrX2RlbGV0ZV93YXJuaW5nJyB8IHRyYW5zbGF0ZTp7IGNvdW50OiBzdGFnZXMubGVuZ3RoIH1cIj48L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJzdW1tYXJ5LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAge3sgJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmJ1bGtfZGVsZXRlX2Rlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8IS0tIFByb2dyZXNzIEJhciAtLT5cbiAgICBAaWYgKGlzUHJvY2Vzc2luZyB8fCBpc0NvbXBsZXRlZCkge1xuICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLXNlY3Rpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWluZm9cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInByb2dyZXNzLWxhYmVsXCI+e3sgJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmJ1bGtfZGVsZXRlX3Byb2dyZXNzJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInByb2dyZXNzLWNvdW50XCI+e3sgY3VycmVudEluZGV4IH19IC8ge3sgZGVsZXRlU3RhdHVzZXMubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAtcHJvZ3Jlc3NCYXIgXG4gICAgICAgICAgW3ZhbHVlXT1cInByb2dyZXNzXCIgXG4gICAgICAgICAgW3Nob3dWYWx1ZV09XCJmYWxzZVwiXG4gICAgICAgICAgc3R5bGVDbGFzcz1cImN1c3RvbS1wcm9ncmVzc1wiXG4gICAgICAgID48L3AtcHJvZ3Jlc3NCYXI+XG4gICAgICAgIFxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3Mtc3RhdHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdCBzdWNjZXNzXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWNoZWNrLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuPnt7IHN1Y2Nlc3NDb3VudCB9fSB7eyAnZGVzaWduLmNvbXBvbmVudHNfYWkuYnVsa19kZWxldGVfc3VjY2Vzc19jb3VudCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgQGlmIChlcnJvckNvdW50ID4gMCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXQgZXJyb3JcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS10aW1lcy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGVycm9yQ291bnQgfX0ge3sgJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmJ1bGtfZGVsZXRlX2Vycm9yX2NvdW50JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8IS0tIFN0YXR1cyBMaXN0IC0tPlxuICAgIEBpZiAoaXNQcm9jZXNzaW5nIHx8IGlzQ29tcGxldGVkKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLWxpc3RcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBkZWxldGVTdGF0dXNlczsgdHJhY2sgaXRlbS5lbnRpdHkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLWl0ZW1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtaW5mb1wiPlxuICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiZ2V0U3RhdHVzSWNvbihpdGVtLnN0YXR1cylcIiBjbGFzcz1cInN0YXR1cy1pY29uXCI+PC9pPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YWdlLW5hbWVcIj57eyBpdGVtLmVudGl0eVtlbnRpdHlOYW1lRmllbGRdIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5lbnRpdHlbZW50aXR5Q29kZUZpZWxkXSkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGFnZS1jb2RlXCI+e3sgJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmJ1bGtfZGVsZXRlX2NvZGVfbGFiZWwnIHwgdHJhbnNsYXRlIH19OiB7eyBpdGVtLmVudGl0eVtlbnRpdHlDb2RlRmllbGRdIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtYmFkZ2VcIj5cbiAgICAgICAgICAgICAgPHAtdGFnIFxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRTdGF0dXNMYWJlbChpdGVtLnN0YXR1cylcIiBcbiAgICAgICAgICAgICAgICBbc2V2ZXJpdHldPVwiZ2V0U3RhdHVzU2V2ZXJpdHkoaXRlbS5zdGF0dXMpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5zdGF0dXMgPT09ICdwcm9jZXNzaW5nJykge1xuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zcGluIHBpLXNwaW5uZXJcIj48L2k+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3AtdGFnPlxuICAgICAgICAgICAgICBAaWYgKGl0ZW0uc3RhdHVzID09PSAnZXJyb3InICYmIGl0ZW0uZXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbS5lcnJvck1lc3NhZ2UgfX1cbiAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPCEtLSBDb21wbGV0aW9uIE1lc3NhZ2UgLS0+XG4gICAgQGlmIChpc0NvbXBsZXRlZCkge1xuICAgICAgPGRpdiBjbGFzcz1cImNvbXBsZXRpb24tc2VjdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGxldGlvbi1tZXNzYWdlXCIgW2NsYXNzLmhhcy1lcnJvcnNdPVwiZXJyb3JDb3VudCA+IDBcIj5cbiAgICAgICAgICA8aSBbY2xhc3NdPVwiZXJyb3JDb3VudCA+IDAgPyAncGkgcGktZXhjbGFtYXRpb24tY2lyY2xlJyA6ICdwaSBwaS1jaGVjay1jaXJjbGUnXCIgY2xhc3M9XCJjb21wbGV0aW9uLWljb25cIj48L2k+XG4gICAgICAgICAgQGlmIChlcnJvckNvdW50ID09PSAwKSB7XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAge3sgJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmJ1bGtfZGVsZXRlX3N1Y2Nlc3NfbWVzc2FnZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChlcnJvckNvdW50ID4gMCkge1xuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIHt7ICdkZXNpZ24uY29tcG9uZW50c19haS5idWxrX2RlbGV0ZV9jb21wbGV0ZWRfd2l0aF9lcnJvcnMnIHwgdHJhbnNsYXRlOnsgY291bnQ6IGVycm9yQ291bnQgfSB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmb290ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWZvb3RlclwiPlxuICAgICAgQGlmICghaXNQcm9jZXNzaW5nICYmICFpc0NvbXBsZXRlZCkge1xuICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICBbbGFiZWxdPVwiJ2Rlc2lnbi5jb21wb25lbnRzX2FpLmNhbmNlbCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIGljb249XCJwaSBwaS10aW1lc1wiXG4gICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgIFtvdXRsaW5lZF09XCJ0cnVlXCJcbiAgICAgICAgICAob25DbGljayk9XCJvbkNsb3NlKClcIlxuICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgW2xhYmVsXT1cIidkZXNpZ24uY29tcG9uZW50c19haS5idWxrX2RlbGV0ZV9jb25maXJtJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgaWNvbj1cInBpIHBpLXRyYXNoXCJcbiAgICAgICAgICBzZXZlcml0eT1cImRhbmdlclwiXG4gICAgICAgICAgKG9uQ2xpY2spPVwic3RhcnREZWxldGlvbigpXCJcbiAgICAgICAgPjwvcC1idXR0b24+XG4gICAgICB9XG4gICAgICBAaWYgKGlzQ29tcGxldGVkKSB7XG4gICAgICAgIDxwLWJ1dHRvblxuICAgICAgICAgIFtsYWJlbF09XCInZGVzaWduLmNvbXBvbmVudHNfYWkuY2xvc2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBpY29uPVwicGkgcGktY2hlY2tcIlxuICAgICAgICAgIChvbkNsaWNrKT1cIm9uQ2xvc2UoKVwiXG4gICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9wLWRpYWxvZz5cbiJdfQ==