@wemake4u/form-player-se 1.0.14 → 1.0.16

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.
@@ -81,6 +81,7 @@ export class DynamicFormComponent {
81
81
  }
82
82
  else {
83
83
  this.formGroup.reset(this.defaultValue, { emitEvent: false });
84
+ this.clearFormArrays(this.formGroup);
84
85
  patchForm(this.formGroup, this.value, {
85
86
  emitEvent: false
86
87
  });
@@ -192,6 +193,18 @@ export class DynamicFormComponent {
192
193
  this.formGroup.removeControl(key);
193
194
  });
194
195
  }
196
+ clearFormArrays(control) {
197
+ if (control instanceof FormArray && control.controls.length > 0) {
198
+ control.clear();
199
+ control.markAsPristine();
200
+ control.markAsUntouched();
201
+ }
202
+ else if (control instanceof FormGroup) {
203
+ Object.values(control.controls).forEach(childControl => {
204
+ this.clearFormArrays(childControl);
205
+ });
206
+ }
207
+ }
195
208
  registerHandlers() {
196
209
  this.valueChangesSubscription = this.formGroup.valueChanges.subscribe((value) => {
197
210
  this.internalChange = true;
@@ -501,4 +514,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
501
514
  }], activeNav: [{
502
515
  type: Input
503
516
  }] } });
504
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFFOUMsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUNQLGlCQUFpQixFQUFFLFlBQVksRUFDakQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDUSxTQUFTLEVBQ1AsVUFBVSxFQUN6QixTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBZ0IsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFDTCwyQkFBMkIsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFDM0Usb0JBQW9CLEVBQUUsZ0NBQWdDLEVBQUUsaUNBQWlDLEVBRTVGLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxl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QVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQXdHSCxTQUFTO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vdHlwZXMvdHlwaW5ncy5kLnRzXCIgLz5cclxuXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSBcclxuICAsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uLCBFdmVudEVtaXR0ZXJcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQ29udHJvbE9wdGlvbnMsIEFic3RyYWN0Q29udHJvbFxyXG4gICwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMsIFZhbGlkYXRpb25FcnJvcnMsXHJcbiAgRm9ybUFycmF5XHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgcGF0Y2hGb3JtIH0gZnJvbSAnLi4vdXRpbHMvcGF0Y2hGb3JtJztcclxuaW1wb3J0IHsgZ3JvdXBCeVJvdyB9IGZyb20gJy4uL3V0aWxzL2dyb3VwQnlSb3cnO1xyXG5pbXBvcnQgeyBDb21tYW5kRXZlbnQsIEV2ZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZXRhZGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tZXRhZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHluYW1pY0ZpZWxkc0NvbXBvbmVudCB9IGZyb20gJy4uL2R5bmFtaWMtZmllbGRzL2R5bmFtaWMtZmllbGRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgU2lyaW9TaWRlbmF2TW9iaWxlQ29tcG9uZW50LCBTaXJpb1NpZGVuYXZDb21wb25lbnQsIFNpcmlvU2lkZW5hdkl0ZW1Db21wb25lbnRcclxuICAsIFNpcmlvQnV0dG9uQ29tcG9uZW50LCBTaXJpb1N0ZXBwZXJQcm9ncmVzc0JhckNvbXBvbmVudCwgU2lyaW9TdGVwcGVyUHJvZ3Jlc3NJdGVtQ29tcG9uZW50XHJcbiAgLCBTaXJpb1N0ZXBwZXJQcm9ncmVzc1N0YXR1c1xyXG59IGZyb20gJ25neC1zaXJpby1saWInO1xyXG5pbXBvcnQgeyBSZWdpc3RlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZWdpc3Rlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVnaXN0ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3JlZ2lzdGVyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IERpc2FibGVGb3JtRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9kaXNhYmxlZm9ybS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250cm9sIH0gZnJvbSAnLi4vY29udHJvbHMvY29udHJvbCc7IFxyXG5cclxuaW1wb3J0IHsgVGV4dHMgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxlJztcclxuaW1wb3J0IHsgbG9jYWxpemUgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxpemUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZHluYW1pYy1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFtcclxuICAgICcuLi9zaGFyZWQvYm9vdHN0cmFwLWdyaWQuc2NzcycsXHJcbiAgICAnLi9keW5hbWljLWZvcm0uY29tcG9uZW50LmNzcydcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZVxyXG4gICAgLCBSZWdpc3RlckRpcmVjdGl2ZSwgRGlzYWJsZUZvcm1EaXJlY3RpdmVcclxuICAgICwgU2lyaW9TaWRlbmF2TW9iaWxlQ29tcG9uZW50LCBTaXJpb1NpZGVuYXZDb21wb25lbnQsIFNpcmlvU2lkZW5hdkl0ZW1Db21wb25lbnRcclxuICAgICwgU2lyaW9CdXR0b25Db21wb25lbnQsIFNpcmlvU3RlcHBlclByb2dyZXNzQmFyQ29tcG9uZW50LCBTaXJpb1N0ZXBwZXJQcm9ncmVzc0l0ZW1Db21wb25lbnRcclxuICAgICwgRHluYW1pY0ZpZWxkc0NvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBFdmVudFNlcnZpY2UsIFByb2dyYW1tYWJpbGl0eVNlcnZpY2UsIFJlZ2lzdGVyU2VydmljZSwgTWV0YWRhdGFTZXJ2aWNlXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBzY2hlbWE6IGFueTtcclxuICBASW5wdXQoKSBmb3JtR3JvdXAhOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgdmFsdWU6IGFueSA9IHt9O1xyXG4gIEBJbnB1dCgpIGxhbmd1YWdlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHNob3dOYXY6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dOYXZCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dGb3JtVGl0bGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwcm9ncmVzc1N0YXR1czogYm9vbGVhbiA9IHRydWU7XHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGluaXRpYWxpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtR3JvdXA+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ29tbWFuZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tbWFuZEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBhY3RpdmVOYXZDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcclxuICAgICwgcHJpdmF0ZSBwcm9ncmFtbWFiaWxpdHk6IFByb2dyYW1tYWJpbGl0eVNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBldmVudHM6IEV2ZW50U2VydmljZVxyXG4gICAgLCBwcml2YXRlIHJlZ2lzdGVyU2VydmljZTogUmVnaXN0ZXJTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgbWV0YWRhdGE6IE1ldGFkYXRhU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIFRleHRzID0gVGV4dHM7XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhckhhbmRsZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGludGVybmFsQ2hhbmdlID0gZmFsc2U7XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydzY2hlbWEnXSkge1xyXG4gICAgICBpZiAoIXRoaXMuZm9ybUdyb3VwKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jbGVhckNvbnRyb2xzKCk7XHJcblxyXG4gICAgICB0aGlzLmNsZWFySGFuZGxlcnMoKTtcclxuXHJcbiAgICAgIGNvbnN0IHNjaGVtYSA9IGNoYW5nZXNbJ3NjaGVtYSddLmN1cnJlbnRWYWx1ZTtcclxuXHJcbiAgICAgIGNvbnN0IGFsbEZvcm1zID0gZ3JvdXBCeVJvdyhzY2hlbWEuZm9ybXMgPz8gW10pO1xyXG5cclxuICAgICAgdGhpcy5tZXRhZGF0YS5zZXRTY2hlbWEoc2NoZW1hKTtcclxuXHJcbiAgICAgIHRoaXMubWV0YWRhdGEuc2V0Rm9ybXMoYWxsRm9ybXMpO1xyXG5cclxuICAgICAgdGhpcy5fZm9ybXMgPSBhbGxGb3Jtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzVGVtcGxhdGUgIT09IHRydWUpOztcclxuXHJcbiAgICAgIHRoaXMuYnVpbGRGb3JtKCk7XHJcblxyXG4gICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlO1xyXG5cclxuICAgICAgaWYgKHRoaXMudmFsdWUpIHtcclxuICAgICAgICBwYXRjaEZvcm0odGhpcy5mb3JtR3JvdXAsIHRoaXMudmFsdWUpOyAgICAgICAgXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKVxyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQuZW1pdCh0aGlzLmZvcm1Hcm91cCk7XHJcblxyXG4gICAgICB0aGlzLnJlZ2lzdGVySGFuZGxlcnMoKTsgICAgICBcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1sndmFsdWUnXSkge1xyXG4gICAgICBpZiAodGhpcy5pbnRlcm5hbENoYW5nZSkge1xyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxDaGFuZ2UgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm1Hcm91cC5yZXNldCh0aGlzLmRlZmF1bHRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIHBhdGNoRm9ybSh0aGlzLmZvcm1Hcm91cCwgdGhpcy52YWx1ZSwge1xyXG4gICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZm9ybXMoKTogQXJyYXk8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZm9ybXM7XHJcbiAgfVxyXG5cclxuICBsb2NhbGUoY29tcG9uZW50OiBhbnksIGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBsb2NhbGl6ZSh0aGlzLmxhbmd1YWdlLCBjb21wb25lbnQsIGtleSk7XHJcbiAgfVxyXG5cclxuICBjYW5QcmV2aW91cygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdldFByZXZpb3VzKCkgIT0gLTE7IFxyXG4gIH1cclxuXHJcbiAgZ29QcmV2aW91cygpIHtcclxuICAgIGlmICh0aGlzLmNhblByZXZpb3VzKCkpIHtcclxuICAgICAgdGhpcy5hY3RpdmVOYXYgPSB0aGlzLmdldFByZXZpb3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5OZXh0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0TmV4dCgpICE9IC0xOyAgICBcclxuICB9XHJcblxyXG4gIGdvTmV4dCgpIHtcclxuICAgIGlmICh0aGlzLmNhbk5leHQoKSkgeyBcclxuICAgICAgdGhpcy5hY3RpdmVOYXYgPSB0aGlzLmdldE5leHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbnRyb2xzKCk6IENvbnRyb2xbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RlclNlcnZpY2UuZ2V0Q29udHJvbHMoKTtcclxuICB9XHJcblxyXG4gIGdldENvbnRyb2wobmFtZTogc3RyaW5nKTogQ29udHJvbCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RlclNlcnZpY2UuZ2V0Q29udHJvbChuYW1lKTtcclxuICB9XHJcblxyXG4gIGdldCBhY3RpdmVOYXYoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3RpdmVOYXY7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBhY3RpdmVOYXYodmFsdWU6IG51bWJlcikge1xyXG4gICAgaWYgKHZhbHVlID49IDAgJiYgdmFsdWUgPCB0aGlzLmdldE1heE5hdigpKSB7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZU5hdiA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYWN0aXZlTmF2Q2hhbmdlLmVtaXQodGhpcy5fYWN0aXZlTmF2KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybUdyb3VwKHBhdGg6IHN0cmluZyB8IG51bGwpOiBGb3JtR3JvdXAge1xyXG4gICAgY29uc3QgY29udHJvbCA9IHBhdGggPyB0aGlzLmZvcm1Hcm91cC5nZXQocGF0aCkgOiB0aGlzLmZvcm1Hcm91cDtcclxuICAgIGlmICghKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29udHJvbCBpcyBub3QgYSBGb3JtR3JvdXAnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybVN0YXR1cyhmb3JtOiBhbnksIGluZGV4OiBudW1iZXIpOiBTaXJpb1N0ZXBwZXJQcm9ncmVzc1N0YXR1cyB7XHJcblxyXG4gICAgY29uc3QgY3VycmVudCA9IGluZGV4ID09IHRoaXMuYWN0aXZlTmF2O1xyXG5cclxuICAgIGlmICh0aGlzLnByb2dyZXNzU3RhdHVzICYmICFjdXJyZW50ICYmIHRoaXMuaGFzVmFsdWUoZm9ybS5wYXRoKSkge1xyXG4gICAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLmdldEZvcm1Hcm91cChmb3JtLnBhdGgpO1xyXG4gICAgICByZXR1cm4gZm9ybUdyb3VwLnZhbGlkID8gXCJzdWNjZXNzXCIgOiBcImVycm9yXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIFwiYWN0aXZlXCI7XHJcbiAgICB9ICAgIFxyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGVGb3JtKHRpdGxlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5mb3Jtcy5maW5kSW5kZXgoZm9ybSA9PiBmb3JtLnRpdGxlID09PSB0aXRsZSk7XHJcbiAgICBpZiAoaW5kZXggIT0gLTEpXHJcbiAgICAgIHRoaXMuYWN0aXZlTmF2ID0gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBldmFsdWF0ZUJvb2xlYW4odmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbW1hYmlsaXR5LmV2YWx1YXRlQm9vbGVhbih0aGlzLmZvcm1Hcm91cCwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgb25Db21tYW5kU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBfZm9ybXM6IEFycmF5PGFueT4gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfYWN0aXZlTmF2OiBudW1iZXIgPSAwO1xyXG5cclxuICBwcml2YXRlIGRlZmF1bHRWYWx1ZTogYW55ID0geyB9O1xyXG5cclxuICBwcml2YXRlIGdldE5leHQoKTogbnVtYmVyIHtcclxuICAgIGxldCBpbmRleCA9IHRoaXMuYWN0aXZlTmF2ICsgMTtcclxuICAgIGNvbnN0IG1heCA9IHRoaXMuZ2V0TWF4TmF2KCk7XHJcblxyXG4gICAgd2hpbGUgKGluZGV4IDwgbWF4KSB7XHJcbiAgICAgIGlmICghdGhpcy5pc0Rpc2FibGVkKGluZGV4KSkge1xyXG4gICAgICAgIHJldHVybiBpbmRleDtcclxuICAgICAgfVxyXG4gICAgICBpbmRleCsrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UHJldmlvdXMoKTogbnVtYmVyIHtcclxuICAgIGxldCBpbmRleCA9IHRoaXMuYWN0aXZlTmF2IC0gMTtcclxuXHJcbiAgICB3aGlsZSAoaW5kZXggPj0gMCkge1xyXG4gICAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZChpbmRleCkpIHtcclxuICAgICAgICByZXR1cm4gaW5kZXg7XHJcbiAgICAgIH1cclxuICAgICAgaW5kZXgtLTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gLTE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE1heE5hdigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1zLmxlbmd0aCA/PyAwOyAgICBcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGlzRGlzYWJsZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgdmFyIGZvcm0gPSB0aGlzLl9mb3Jtc1tpbmRleF07XHJcblxyXG4gICAgaWYgKCFmb3JtKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZXZhbHVhdGVCb29sZWFuKGZvcm0uZGlzYWJsZWQpID8/IGZhbHNlO1xyXG4gIH1cclxuICBcclxuICBwcml2YXRlIGNsZWFyQ29udHJvbHMoKTogdm9pZCB7XHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLmZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5yZW1vdmVDb250cm9sKGtleSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVnaXN0ZXJIYW5kbGVycygpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5pbnRlcm5hbENoYW5nZSA9IHRydWU7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9uQ29tbWFuZFN1YnNjcmlwdGlvbiA9IHRoaXMuZXZlbnRzLm9uQ29tbWFuZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgaWYgKHRoaXMub25Db21tYW5kKVxyXG4gICAgICAgIHRoaXMub25Db21tYW5kLmVtaXQoZGF0YSk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGNsZWFySGFuZGxlcnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vbkNvbW1hbmRTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5vbkNvbW1hbmRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRGb3JtKCkge1xyXG4gICAgdGhpcy5mb3Jtcy5mb3JFYWNoKChmb3JtOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgodGhpcy5mYiwgdGhpcy5mb3JtR3JvdXAsIGZvcm0ucGF0aCk7XHJcbiAgICAgIGZvcm0ucm93cz8uZm9yRWFjaCgocm93OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmFkZENvbnRyb2xzKHRoaXMuZmIsIGN1cnJlbnRHcm91cCwgcm93LmNvbXBvbmVudHMpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRDb250cm9scyhmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjb21wb25lbnRzOiBBcnJheTxhbnk+KSB7XHJcbiAgICBsZXQgZm9ybUNvbXBvbmVudCA9IHRoaXM7XHJcblxyXG4gICAgY29tcG9uZW50cz8uZm9yRWFjaCgoY29tcG9uZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNGb3JtQ29tcG9uZW50KGNvbXBvbmVudCkpIHtcclxuICAgICAgICBsZXQgZGVmYXVsdFZhbHVlID0gdGhpcy5nZXREZWZhdWx0VmFsdWUoY29tcG9uZW50KTtcclxuICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5nZXRWYWxpZGF0b3JzKGZvcm1Hcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICBjb25zdCBvcHRpb25zOiBGb3JtQ29udHJvbE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzIHx8IFtdLFxyXG4gICAgICAgICAgdXBkYXRlT246IHRoaXMuZ2V0VXBkYXRlT24oY29tcG9uZW50KSB8fCBcImNoYW5nZVwiXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUJ1aWxkZXIuY29udHJvbChkZWZhdWx0VmFsdWUsIG9wdGlvbnMpO1xyXG4gICAgICAgIGZvcm1Hcm91cC5hZGRDb250cm9sKGNvbXBvbmVudC5rZXksIGNvbnRyb2wpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuaXNDb250YWluZXJDb21wb25lbnQoY29tcG9uZW50KSkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcnMgPSB0aGlzLmdldENvbnRhaW5lcnMoY29tcG9uZW50KTtcclxuICAgICAgICBjb250YWluZXJzPy5mb3JFYWNoKChjb250YWluZXI6IHsgcGF0aDogYW55OyByb3dzOiBhbnkgfSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgoZm9ybUJ1aWxkZXIsIGZvcm1Hcm91cCwgY29udGFpbmVyLnBhdGgpO1xyXG4gICAgICAgICAgY29udGFpbmVyLnJvd3M/LmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGZvcm1Db21wb25lbnQuYWRkQ29udHJvbHMoZm9ybUJ1aWxkZXIsIGN1cnJlbnRHcm91cCwgcm93LmNvbXBvbmVudHMpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5pc0FycmF5Q29tcG9uZW50KGNvbXBvbmVudCkpIHtcclxuICAgICAgICBjb25zdCBpdGVtQ29tcG9uZW50ID0gdGhpcy5nZXRBcnJheUl0ZW0oY29tcG9uZW50KTtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW1Db21wb25lbnQucGF0aCkge1xyXG4gICAgICAgICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5jcmVhdGVGb3JtQXJyYXkoZm9ybUJ1aWxkZXIsIGZvcm1Hcm91cCwgaXRlbUNvbXBvbmVudCk7XHJcbiAgICAgICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChpdGVtQ29tcG9uZW50LnBhdGgsIGZvcm1BcnJheSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRm9ybUFycmF5KGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGl0ZW1Db21wb25lbnQ6IGFueSk6IEZvcm1BcnJheSB7XHJcbiAgICBjb25zdCBmb3JtQ29tcG9uZW50ID0gdGhpcztcclxuXHJcbiAgICBjb25zdCBmb3JtQXJyYXkgPSBmb3JtQnVpbGRlci5hcnJheTxGb3JtR3JvdXA+KFtdKTtcclxuXHJcbiAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChpdGVtQ29tcG9uZW50LnBhdGgsIGZvcm1BcnJheSk7XHJcblxyXG4gICAgY29uc3QgY3JlYXRlSXRlbSA9IGZ1bmN0aW9uICgpOiBGb3JtR3JvdXAge1xyXG4gICAgICBsZXQgbmV3R3JvdXAgPSBmb3JtQnVpbGRlci5ncm91cCh7fSk7XHJcbiAgICAgIGl0ZW1Db21wb25lbnQucm93cz8uZm9yRWFjaCgocm93OiBhbnkpID0+IHtcclxuICAgICAgICBmb3JtQ29tcG9uZW50LmFkZENvbnRyb2xzKGZvcm1CdWlsZGVyLCBuZXdHcm91cCwgcm93LmNvbXBvbmVudHMpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIG5ld0dyb3VwO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCByZXNpemVGb3JtQXJyYXkgPSB0aGlzLnJlc2l6ZUZvcm1BcnJheTtcclxuXHJcbiAgICBjb25zdCBhZGRJdGVtID0gZnVuY3Rpb24gKHRoaXM6IEZvcm1BcnJheSkge1xyXG4gICAgICBsZXQgbmV3R3JvdXAgPSBjcmVhdGVJdGVtKCk7XHJcbiAgICAgIHRoaXMucHVzaChuZXdHcm91cCk7XHJcbiAgICAgIHJldHVybiBuZXdHcm91cDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcHJlcGFyZUFycmF5ID0gKGFycmF5OiBhbnkpID0+IHtcclxuICAgICAgYXJyYXkuYWRkSXRlbSA9IGFkZEl0ZW07XHJcbiAgICAgIGFycmF5LnJlc2l6ZSA9IHJlc2l6ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXNpemUgPSBmdW5jdGlvbiAodGhpczogRm9ybUFycmF5LCBzaXplOiBudW1iZXIpIHtcclxuICAgICAgY29uc3QgbmV3QXJyYXkgPSByZXNpemVGb3JtQXJyYXkodGhpcywgc2l6ZSwgY3JlYXRlSXRlbSk7XHJcbiAgICAgIHByZXBhcmVBcnJheShuZXdBcnJheSk7XHJcbiAgICAgIGZvcm1Hcm91cC5zZXRDb250cm9sKGl0ZW1Db21wb25lbnQucGF0aCwgbmV3QXJyYXkpO1xyXG4gICAgfTtcclxuXHJcbiAgICBwcmVwYXJlQXJyYXkoZm9ybUFycmF5KTtcclxuXHJcbiAgICByZXR1cm4gZm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNpemVGb3JtQXJyYXkoZm9ybUFycmF5OiBGb3JtQXJyYXksIHNpemU6IG51bWJlciwgY3JlYXRlSXRlbTogKCkgPT4gRm9ybUdyb3VwKSA6IEZvcm1BcnJheSB7XHJcbiAgICBpZiAoZm9ybUFycmF5Lmxlbmd0aCA8IHNpemUpIHtcclxuICAgICAgY29uc3QgbmV3QXJyYXkgPSBuZXcgRm9ybUFycmF5KGZvcm1BcnJheS5jb250cm9scyk7XHJcbiAgICAgIHdoaWxlIChmb3JtQXJyYXkubGVuZ3RoIDwgc2l6ZSkge1xyXG4gICAgICAgIG5ld0FycmF5LnB1c2goY3JlYXRlSXRlbSgpKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbmV3QXJyYXk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmb3JtQXJyYXkubGVuZ3RoID4gc2l6ZSkge1xyXG4gICAgICByZXR1cm4gbmV3IEZvcm1BcnJheShmb3JtQXJyYXkuY29udHJvbHMuc2xpY2UoMCwgc2l6ZSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBmb3JtQXJyYXk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5UGF0aChmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBwYXRoOiBzdHJpbmcpIHtcclxuICAgIGlmICghcGF0aCkge1xyXG4gICAgICByZXR1cm4gZm9ybUdyb3VwO1xyXG4gICAgfVxyXG4gICAgbGV0IGN1cnJlbnRHcm91cDogRm9ybUdyb3VwID0gZm9ybUdyb3VwO1xyXG4gICAgdGhpcy5zcGxpdFBhdGgocGF0aCkuZm9yRWFjaCgoc2VnbWVudCkgPT4ge1xyXG4gICAgICBjb25zdCBleGlzdEdyb3VwID0gY3VycmVudEdyb3VwLmdldChzZWdtZW50KTtcclxuICAgICAgaWYgKGV4aXN0R3JvdXAgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgICBjdXJyZW50R3JvdXAgPSBleGlzdEdyb3VwO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChleGlzdEdyb3VwKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY3JlYXRlIGZvcm0gZ3JvdXAgYmVjYXVzZSBhbiBlbGVtZW50IHdpdGggcGF0aCAke3NlZ21lbnR9IGFscmVhZHkgZXhpc3RzYCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgc2VnbWVudEdyb3VwID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe30pO1xyXG4gICAgICAgIGN1cnJlbnRHcm91cC5hZGRDb250cm9sKHNlZ21lbnQsIHNlZ21lbnRHcm91cCk7XHJcbiAgICAgICAgY3VycmVudEdyb3VwID0gc2VnbWVudEdyb3VwO1xyXG4gICAgICB9IFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY3VycmVudEdyb3VwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRWYWxpZGF0b3JzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjb21wb25lbnQ6IGFueSk6IFZhbGlkYXRvckZuW10gfCBudWxsIHtcclxuXHJcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcblxyXG4gICAgaWYgKGNvbXBvbmVudD8udmFsaWRhdGU/LnJlcXVpcmVkID09PSB0cnVlKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29tcG9uZW50LnZhbGlkYXRpb25zKSkge1xyXG4gICAgICBpZiAodmFsaWRhdG9ycy5sZW5ndGggPT0gMClcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgcmV0dXJuIHZhbGlkYXRvcnM7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50LnZhbGlkYXRpb25zPy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnByb2dyYW1tYWJpbGl0eS5pc0V4cHJlc3Npb24oaXRlbS5leHByZXNzaW9uKSlcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBpZiAoaXRlbS50eXBlID09PSBcInZhbGlkYXRlXCIpIHtcclxuICAgICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy52YWxpZGF0ZUZuKGZvcm1Hcm91cCwgaXRlbSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gXCJpbnZhbGlkYXRlXCIpIHtcclxuICAgICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy5pbnZhbGlkYXRlRm4oZm9ybUdyb3VwLCBpdGVtKSk7XHJcbiAgICAgIH0gICAgICBcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh2YWxpZGF0b3JzLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVGbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgaXRlbTogYW55KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcblxyXG4gICAgICAvL2lmICghY29udHJvbC50b3VjaGVkKVxyXG4gICAgICAvLyAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICB2YXIgdmFsaWQgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZVVuYXJ5KGZvcm1Hcm91cCwgaXRlbS5leHByZXNzaW9uLCBjb250cm9sLnZhbHVlKTtcclxuXHJcbiAgICAgIGlmICghdmFsaWQpIHtcclxuICAgICAgICByZXR1cm4geyBlcnJvcjogdHJ1ZSwgbWVzc2FnZTogdGhpcy5sb2NhbGUoaXRlbSwgJ21lc3NhZ2UnKSB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW52YWxpZGF0ZUZuKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBpdGVtOiBhbnkpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuXHJcbiAgICAgIC8vaWYgKCFjb250cm9sLnRvdWNoZWQpXHJcbiAgICAgIC8vICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgIHZhciBpbnZhbGlkID0gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGVVbmFyeShmb3JtR3JvdXAsIGl0ZW0uZXhwcmVzc2lvbiwgY29udHJvbC52YWx1ZSk7XHJcblxyXG4gICAgICBpZiAoaW52YWxpZCkge1xyXG4gICAgICAgIHJldHVybiB7IGVycm9yOiB0cnVlLCBtZXNzYWdlOiB0aGlzLmxvY2FsZShpdGVtLCAnbWVzc2FnZScpIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0Zvcm1Db21wb25lbnQoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBcImNoZWNrYm94XCI6XHJcbiAgICAgIGNhc2UgXCJjaGVja2xpc3RcIjpcclxuICAgICAgY2FzZSBcImRhdGV0aW1lXCI6XHJcbiAgICAgIGNhc2UgXCJmaWxlcGlja2VyXCI6XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgY2FzZSBcInJhZGlvXCI6XHJcbiAgICAgIGNhc2UgXCJzZWxlY3RcIjpcclxuICAgICAgY2FzZSBcInRhZ2xpc3RcIjpcclxuICAgICAgY2FzZSBcInRleHRhcmVhXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0ZmllbGRcIjpcclxuICAgICAgY2FzZSBcInJhbmdlXCI6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0NvbnRhaW5lckNvbXBvbmVudChjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwiZ3JvdXBcIjpcclxuICAgICAgY2FzZSBcInRhYlwiOlxyXG4gICAgICBjYXNlIFwiYWNjb3JkaW9uXCI6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0FycmF5Q29tcG9uZW50KGNvbXBvbmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJkeW5hbWljbGlzdFwiOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgcHJpdmF0ZSBnZXRBcnJheUl0ZW0oY29tcG9uZW50OiBhbnkpOiB7IHBhdGg6IGFueTsgcm93czogYW55IH0ge1xyXG4gICAgaWYgKGNvbXBvbmVudC50eXBlID09PSAnZHluYW1pY2xpc3QnKSB7XHJcbiAgICAgIHJldHVybiB7IHBhdGg6IGNvbXBvbmVudC5wYXRoLCByb3dzOiBjb21wb25lbnQucm93cyB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IHBhdGg6IG51bGwsIHJvd3M6IFtdIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbnRhaW5lcnMoY29tcG9uZW50OiBhbnkpOiB7IHBhdGg6IGFueTsgcm93czogYW55IH1bXSB7XHJcbiAgICBpZiAoY29tcG9uZW50LnR5cGUgPT09ICdncm91cCcpIHtcclxuICAgICAgcmV0dXJuIFt7IHBhdGg6IGNvbXBvbmVudC5wYXRoLCByb3dzOiBjb21wb25lbnQucm93cyB9XTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbXBvbmVudC50eXBlID09PSAndGFiJ1xyXG4gICAgICB8fCBjb21wb25lbnQudHlwZSA9PT0gJ2FjY29yZGlvbicpIHtcclxuICAgICAgcmV0dXJuIGNvbXBvbmVudC5wYW5lbHMubWFwKChwYW5lbDogYW55KSA9PiAoe1xyXG4gICAgICAgIHBhdGg6IHBhbmVsLnBhdGgsXHJcbiAgICAgICAgcm93czogdGhpcy5tZXRhZGF0YS5nZXRGb3JtQnlOYW1lKHBhbmVsLnRlbXBsYXRlKT8ucm93cyA/PyBbXVxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRVcGRhdGVPbihjb21wb25lbnQ6IGFueSk6IGFueSB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgY2FzZSBcInRleHRhcmVhXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0ZmllbGRcIjpcclxuICAgICAgICByZXR1cm4gXCJibHVyXCI7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERlZmF1bHRWYWx1ZShjb21wb25lbnQ6IGFueSk6IGFueSB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICBjYXNlIFwidGV4dGZpZWxkXCI6XHJcbiAgICAgIGNhc2UgXCJyYWRpb1wiOlxyXG4gICAgICBjYXNlIFwic2VsZWN0XCI6XHJcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5kZWZhdWx0VmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5kZWZhdWx0VmFsdWUgYXMgbnVtYmVyO1xyXG4gICAgICBjYXNlIFwiY2hlY2tib3hcIjpcclxuICAgICAgICByZXR1cm4gY29tcG9uZW50LmRlZmF1bHRWYWx1ZSBhcyBib29sZWFuO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzcGxpdFBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgaWYgKCFwYXRoKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXRoXHJcbiAgICAgIC5zcGxpdCgnLicpXHJcbiAgICAgIC5tYXAoc2VnbWVudCA9PiBzZWdtZW50LnRyaW0oKSlcclxuICAgICAgLmZpbHRlcihzZWdtZW50ID0+IHNlZ21lbnQubGVuZ3RoID4gMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1ZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID4gMDtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBjbGFzcz1cIm5nc1wiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcblxyXG4gICAgICA8IS0tICNyZWdpb24gcHJvZ3Jlc3MgLS0+XHJcbiAgICAgIDxuZ3gtc2lyaW8tc3RlcHBlci1wcm9ncmVzcy1iYXIgKm5nSWY9XCJzaG93UHJvZ3Jlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudENsaWNrKT1cImFjdGl2YXRlRm9ybSgkZXZlbnQuZGF0YS5sYWJlbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoYXNEcm9wZG93bl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZHJvcERvd25MYWJlbF09XCJsb2NhbGUoVGV4dHMsICdTaG93JylcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmb3JtIG9mIGZvcm1zLCBsZXQgZm9ybUluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgIDxuZ3gtc2lyaW8tc3RlcHBlci1wcm9ncmVzcy1pdGVtICpuZ0lmPVwiIWV2YWx1YXRlQm9vbGVhbihmb3JtLmRpc2FibGVkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGFzTmF2aWdhdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwiZ2V0Rm9ybVN0YXR1cyhmb3JtLGZvcm1JbmRleClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxvY2FsZShmb3JtLCAndGl0bGUnKVwiIC8+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmd4LXNpcmlvLXN0ZXBwZXItcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICA8IS0tICNyZWdpb24gZm9ybSBkaXNhYmxlIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmb3JtIG9mIGZvcm1zXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqZGlzYWJsZUZvcm09XCJ7XHJcbiAgICAgICAgICAgIGRpc2FibGVkOiBldmFsdWF0ZUJvb2xlYW4oZm9ybS5kaXNhYmxlZCksXHJcbiAgICAgICAgICAgIGZvcm1Hcm91cDogZm9ybUdyb3VwLFxyXG4gICAgICAgICAgICBwYXRoOiBmb3JtLnBhdGhcclxuICAgICAgICAgIH1cIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93TmF2XCI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG5cclxuICAgICAgICAgIDwhLS0gI3JlZ2lvbiBzaWRlbmF2IC0tPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNzaWRlbmF2VGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxuZ3gtc2lyaW8tc2lkZW5hdj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmb3JtIG9mIGZvcm1zLCBsZXQgc2VjdGlvbkluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZXZhbHVhdGVCb29sZWFuKGZvcm0uZGlzYWJsZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZ3gtc2lyaW8tc2lkZW5hdi1pdGVtIFtpc0FjdGl2ZV09XCJhY3RpdmVOYXYgPT0gc2VjdGlvbkluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZU5hdiA9IHNlY3Rpb25JbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFjdGl2ZU5hdiA9IHNlY3Rpb25JbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGxvY2FsZShmb3JtLCAndGl0bGUnKSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L25neC1zaXJpby1zaWRlbmF2LWl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZ3gtc2lyaW8tc2lkZW5hdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPG5neC1zaXJpby1zaWRlbmF2LW1vYmlsZSBjbGFzcz1cImQtYmxvY2sgZC1sZy1ub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wZW5NZW51TGFiZWxdPVwibG9jYWxlKFRleHRzLCAnT3Blbk1lbnUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcGVuTWVudUFyaWFMYWJlbF09XCJsb2NhbGUoVGV4dHMsICdPcGVuTWVudScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nsb3NlTWVudUxhYmVsXT1cImxvY2FsZShUZXh0cywgJ0Nsb3NlTWVudScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VNZW51QXJpYUxhYmVsPVwibG9jYWxlKFRleHRzLCAnQ2xvc2VNZW51JylcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVuYXZUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZ3gtc2lyaW8tc2lkZW5hdi1tb2JpbGU+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1ub25lIGQtbGctYmxvY2tcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVuYXZUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3ItaG9yaXpvbnRhbFwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1lbGVtZW50LWZvcm1cIiBbbmdDbGFzc109XCJzaG93TmF2ID8gJ2NvbC1tZC0xMScgOiAnY29sLW1kLTE2J1wiPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmb3JtIG9mIGZvcm1zLCBsZXQgc2VjdGlvbkluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVOYXYgPT0gc2VjdGlvbkluZGV4ICYmICFldmFsdWF0ZUJvb2xlYW4oZm9ybS5kaXNhYmxlZClcIlxyXG4gICAgICAgICAgICAgICAjZGVmYXVsdFxyXG4gICAgICAgICAgICAgICBbcmVnaXN0ZXJdPVwiZm9ybVwiXHJcbiAgICAgICAgICAgICAgIFtjb21wb25lbnRSZWZdPVwiZGVmYXVsdFwiPlxyXG4gICAgICAgICAgICA8aDEgKm5nSWY9XCJzaG93Rm9ybVRpdGxlICYmIGZvcm0udGl0bGVcIiBjbGFzcz1cImgzIGZvcm0tdGl0bGVcIj57eyBsb2NhbGUoZm9ybSwgJ3RpdGxlJykgfX08L2gxPlxyXG4gICAgICAgICAgICA8YXBwLWR5bmFtaWMtZmllbGRzIFtmb3JtR3JvdXBdPVwiZ2V0Rm9ybUdyb3VwKGZvcm0ucGF0aClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dzXT1cImZvcm0ucm93c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhbmd1YWdlXT1cImxhbmd1YWdlXCI+PC9hcHAtZHluYW1pYy1maWVsZHM+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dOYXZCdXR0b25cIj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHNlY3Rpb24tbmF2c1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTggY29sLW1kLThcIj5cclxuICAgICAgICAgICAgICA8bmd4LXNpcmlvLWJ1dHRvbiBbY29sb3JdPVwibnVsbFwiICpuZ0lmPVwiY2FuTmV4dCgpXCIgKGNsaWNrKT1cImdvTmV4dCgpXCIgY2xhc3M9XCJuZXh0U2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAge3sgbG9jYWxlKFRleHRzLCAnTmV4dFNlY3Rpb24nKSB9fVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYS1zb2xpZCBmYS1jaGV2cm9uLXJpZ2h0XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L25neC1zaXJpby1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTggY29sLW1kLThcIj5cclxuICAgICAgICAgICAgICA8bmd4LXNpcmlvLWJ1dHRvbiBbY29sb3JdPVwibnVsbFwiICpuZ0lmPVwiY2FuUHJldmlvdXMoKVwiIChjbGljayk9XCJnb1ByZXZpb3VzKClcIiBjbGFzcz1cInByZXZTZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhLXNvbGlkIGZhLWNoZXZyb24tbGVmdFwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAge3sgbG9jYWxlKFRleHRzLCAnUHJldmlvdXNTZWN0aW9uJykgfX1cclxuICAgICAgICAgICAgICA8L25neC1zaXJpby1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Zvcm0+XHJcblxyXG5cclxuXHJcbiJdfQ==
517
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zaXJpby9zcmMvbGliL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7QUFFOUMsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUNQLGlCQUFpQixFQUFFLFlBQVksRUFDakQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDUSxTQUFTLEVBQ1AsVUFBVSxFQUN6QixTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBZ0IsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFDTCwyQkFBMkIsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFDM0Usb0JBQW9CLEVBQUUsZ0NBQWdDLEVBQUUsaUNBQWlDLEVBRTVGLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxl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QUFFLG1CQUFtQjt3QkFDdkMsaUJBQWlCLEVBQUUsb0JBQW9CO3dCQUN2QywyQkFBMkIsRUFBRSxxQkFBcUIsRUFBRSx5QkFBeUI7d0JBQzdFLG9CQUFvQixFQUFFLGdDQUFnQyxFQUFFLGlDQUFpQzt3QkFDekYsc0JBQXNCLENBQUMsYUFDaEI7d0JBQ1QsWUFBWSxFQUFFLHNCQUFzQixFQUFFLGVBQWUsRUFBRSxlQUFlO3FCQUN2RSxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOzRNQUc1QixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQXlHSCxTQUFTO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vdHlwZXMvdHlwaW5ncy5kLnRzXCIgLz5cclxuXHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSBcclxuICAsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uLCBFdmVudEVtaXR0ZXJcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQ29udHJvbE9wdGlvbnMsIEFic3RyYWN0Q29udHJvbFxyXG4gICwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMsIFZhbGlkYXRpb25FcnJvcnMsXHJcbiAgRm9ybUFycmF5XHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUHJvZ3JhbW1hYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW1tYWJpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgcGF0Y2hGb3JtIH0gZnJvbSAnLi4vdXRpbHMvcGF0Y2hGb3JtJztcclxuaW1wb3J0IHsgZ3JvdXBCeVJvdyB9IGZyb20gJy4uL3V0aWxzL2dyb3VwQnlSb3cnO1xyXG5pbXBvcnQgeyBDb21tYW5kRXZlbnQsIEV2ZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZXRhZGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tZXRhZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRHluYW1pY0ZpZWxkc0NvbXBvbmVudCB9IGZyb20gJy4uL2R5bmFtaWMtZmllbGRzL2R5bmFtaWMtZmllbGRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgU2lyaW9TaWRlbmF2TW9iaWxlQ29tcG9uZW50LCBTaXJpb1NpZGVuYXZDb21wb25lbnQsIFNpcmlvU2lkZW5hdkl0ZW1Db21wb25lbnRcclxuICAsIFNpcmlvQnV0dG9uQ29tcG9uZW50LCBTaXJpb1N0ZXBwZXJQcm9ncmVzc0JhckNvbXBvbmVudCwgU2lyaW9TdGVwcGVyUHJvZ3Jlc3NJdGVtQ29tcG9uZW50XHJcbiAgLCBTaXJpb1N0ZXBwZXJQcm9ncmVzc1N0YXR1c1xyXG59IGZyb20gJ25neC1zaXJpby1saWInO1xyXG5pbXBvcnQgeyBSZWdpc3RlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9yZWdpc3Rlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVnaXN0ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3JlZ2lzdGVyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IERpc2FibGVGb3JtRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9kaXNhYmxlZm9ybS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb250cm9sIH0gZnJvbSAnLi4vY29udHJvbHMvY29udHJvbCc7IFxyXG5cclxuaW1wb3J0IHsgVGV4dHMgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxlJztcclxuaW1wb3J0IHsgbG9jYWxpemUgfSBmcm9tICcuLi9sb2NhbGUvbG9jYWxpemUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZHluYW1pYy1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFtcclxuICAgICcuLi9zaGFyZWQvYm9vdHN0cmFwLWdyaWQuc2NzcycsXHJcbiAgICAnLi9keW5hbWljLWZvcm0uY29tcG9uZW50LmNzcydcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZVxyXG4gICAgLCBSZWdpc3RlckRpcmVjdGl2ZSwgRGlzYWJsZUZvcm1EaXJlY3RpdmVcclxuICAgICwgU2lyaW9TaWRlbmF2TW9iaWxlQ29tcG9uZW50LCBTaXJpb1NpZGVuYXZDb21wb25lbnQsIFNpcmlvU2lkZW5hdkl0ZW1Db21wb25lbnRcclxuICAgICwgU2lyaW9CdXR0b25Db21wb25lbnQsIFNpcmlvU3RlcHBlclByb2dyZXNzQmFyQ29tcG9uZW50LCBTaXJpb1N0ZXBwZXJQcm9ncmVzc0l0ZW1Db21wb25lbnRcclxuICAgICwgRHluYW1pY0ZpZWxkc0NvbXBvbmVudF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBFdmVudFNlcnZpY2UsIFByb2dyYW1tYWJpbGl0eVNlcnZpY2UsIFJlZ2lzdGVyU2VydmljZSwgTWV0YWRhdGFTZXJ2aWNlXHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBzY2hlbWE6IGFueTtcclxuICBASW5wdXQoKSBmb3JtR3JvdXAhOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgdmFsdWU6IGFueSA9IHt9O1xyXG4gIEBJbnB1dCgpIGxhbmd1YWdlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHNob3dOYXY6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dOYXZCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dGb3JtVGl0bGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwcm9ncmVzc1N0YXR1czogYm9vbGVhbiA9IHRydWU7XHJcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGluaXRpYWxpemVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtR3JvdXA+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ29tbWFuZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tbWFuZEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBhY3RpdmVOYXZDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcclxuICAgICwgcHJpdmF0ZSBwcm9ncmFtbWFiaWxpdHk6IFByb2dyYW1tYWJpbGl0eVNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBldmVudHM6IEV2ZW50U2VydmljZVxyXG4gICAgLCBwcml2YXRlIHJlZ2lzdGVyU2VydmljZTogUmVnaXN0ZXJTZXJ2aWNlXHJcbiAgICAsIHByaXZhdGUgbWV0YWRhdGE6IE1ldGFkYXRhU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIFRleHRzID0gVGV4dHM7XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhckhhbmRsZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGludGVybmFsQ2hhbmdlID0gZmFsc2U7XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydzY2hlbWEnXSkge1xyXG4gICAgICBpZiAoIXRoaXMuZm9ybUdyb3VwKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5jbGVhckNvbnRyb2xzKCk7XHJcblxyXG4gICAgICB0aGlzLmNsZWFySGFuZGxlcnMoKTtcclxuXHJcbiAgICAgIGNvbnN0IHNjaGVtYSA9IGNoYW5nZXNbJ3NjaGVtYSddLmN1cnJlbnRWYWx1ZTtcclxuXHJcbiAgICAgIGNvbnN0IGFsbEZvcm1zID0gZ3JvdXBCeVJvdyhzY2hlbWEuZm9ybXMgPz8gW10pO1xyXG5cclxuICAgICAgdGhpcy5tZXRhZGF0YS5zZXRTY2hlbWEoc2NoZW1hKTtcclxuXHJcbiAgICAgIHRoaXMubWV0YWRhdGEuc2V0Rm9ybXMoYWxsRm9ybXMpO1xyXG5cclxuICAgICAgdGhpcy5fZm9ybXMgPSBhbGxGb3Jtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzVGVtcGxhdGUgIT09IHRydWUpOztcclxuXHJcbiAgICAgIHRoaXMuYnVpbGRGb3JtKCk7XHJcblxyXG4gICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlO1xyXG5cclxuICAgICAgaWYgKHRoaXMudmFsdWUpIHtcclxuICAgICAgICBwYXRjaEZvcm0odGhpcy5mb3JtR3JvdXAsIHRoaXMudmFsdWUpOyAgICAgICAgXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKVxyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQuZW1pdCh0aGlzLmZvcm1Hcm91cCk7XHJcblxyXG4gICAgICB0aGlzLnJlZ2lzdGVySGFuZGxlcnMoKTsgICAgICBcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1sndmFsdWUnXSkge1xyXG4gICAgICBpZiAodGhpcy5pbnRlcm5hbENoYW5nZSkge1xyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxDaGFuZ2UgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmZvcm1Hcm91cC5yZXNldCh0aGlzLmRlZmF1bHRWYWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIHRoaXMuY2xlYXJGb3JtQXJyYXlzKHRoaXMuZm9ybUdyb3VwKTtcclxuICAgICAgICBwYXRjaEZvcm0odGhpcy5mb3JtR3JvdXAsIHRoaXMudmFsdWUsIHtcclxuICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGZvcm1zKCk6IEFycmF5PGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1zO1xyXG4gIH1cclxuXHJcbiAgbG9jYWxlKGNvbXBvbmVudDogYW55LCBrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbG9jYWxpemUodGhpcy5sYW5ndWFnZSwgY29tcG9uZW50LCBrZXkpO1xyXG4gIH1cclxuXHJcbiAgY2FuUHJldmlvdXMoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRQcmV2aW91cygpICE9IC0xOyBcclxuICB9XHJcblxyXG4gIGdvUHJldmlvdXMoKSB7XHJcbiAgICBpZiAodGhpcy5jYW5QcmV2aW91cygpKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlTmF2ID0gdGhpcy5nZXRQcmV2aW91cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuTmV4dCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdldE5leHQoKSAhPSAtMTsgICAgXHJcbiAgfVxyXG5cclxuICBnb05leHQoKSB7XHJcbiAgICBpZiAodGhpcy5jYW5OZXh0KCkpIHsgXHJcbiAgICAgIHRoaXMuYWN0aXZlTmF2ID0gdGhpcy5nZXROZXh0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb250cm9scygpOiBDb250cm9sW10ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVnaXN0ZXJTZXJ2aWNlLmdldENvbnRyb2xzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDb250cm9sKG5hbWU6IHN0cmluZyk6IENvbnRyb2wgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMucmVnaXN0ZXJTZXJ2aWNlLmdldENvbnRyb2wobmFtZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgYWN0aXZlTmF2KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlTmF2O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgYWN0aXZlTmF2KHZhbHVlOiBudW1iZXIpIHtcclxuICAgIGlmICh2YWx1ZSA+PSAwICYmIHZhbHVlIDwgdGhpcy5nZXRNYXhOYXYoKSkge1xyXG4gICAgICB0aGlzLl9hY3RpdmVOYXYgPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmFjdGl2ZU5hdkNoYW5nZS5lbWl0KHRoaXMuX2FjdGl2ZU5hdik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEZvcm1Hcm91cChwYXRoOiBzdHJpbmcgfCBudWxsKTogRm9ybUdyb3VwIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSBwYXRoID8gdGhpcy5mb3JtR3JvdXAuZ2V0KHBhdGgpIDogdGhpcy5mb3JtR3JvdXA7XHJcbiAgICBpZiAoIShjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnRyb2wgaXMgbm90IGEgRm9ybUdyb3VwJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldEZvcm1TdGF0dXMoZm9ybTogYW55LCBpbmRleDogbnVtYmVyKTogU2lyaW9TdGVwcGVyUHJvZ3Jlc3NTdGF0dXMge1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnQgPSBpbmRleCA9PSB0aGlzLmFjdGl2ZU5hdjtcclxuXHJcbiAgICBpZiAodGhpcy5wcm9ncmVzc1N0YXR1cyAmJiAhY3VycmVudCAmJiB0aGlzLmhhc1ZhbHVlKGZvcm0ucGF0aCkpIHtcclxuICAgICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5nZXRGb3JtR3JvdXAoZm9ybS5wYXRoKTtcclxuICAgICAgcmV0dXJuIGZvcm1Hcm91cC52YWxpZCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBcImFjdGl2ZVwiO1xyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIGFjdGl2YXRlRm9ybSh0aXRsZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZm9ybXMuZmluZEluZGV4KGZvcm0gPT4gZm9ybS50aXRsZSA9PT0gdGl0bGUpO1xyXG4gICAgaWYgKGluZGV4ICE9IC0xKVxyXG4gICAgICB0aGlzLmFjdGl2ZU5hdiA9IGluZGV4O1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGVCb29sZWFuKHZhbHVlOiBib29sZWFuIHwgc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZUJvb2xlYW4odGhpcy5mb3JtR3JvdXAsIHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIG9uQ29tbWFuZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgX2Zvcm1zOiBBcnJheTxhbnk+ID0gW107XHJcblxyXG4gIHByaXZhdGUgX2FjdGl2ZU5hdjogbnVtYmVyID0gMDtcclxuXHJcbiAgcHJpdmF0ZSBkZWZhdWx0VmFsdWU6IGFueSA9IHsgfTtcclxuXHJcbiAgcHJpdmF0ZSBnZXROZXh0KCk6IG51bWJlciB7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLmFjdGl2ZU5hdiArIDE7XHJcbiAgICBjb25zdCBtYXggPSB0aGlzLmdldE1heE5hdigpO1xyXG5cclxuICAgIHdoaWxlIChpbmRleCA8IG1heCkge1xyXG4gICAgICBpZiAoIXRoaXMuaXNEaXNhYmxlZChpbmRleCkpIHtcclxuICAgICAgICByZXR1cm4gaW5kZXg7XHJcbiAgICAgIH1cclxuICAgICAgaW5kZXgrKztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gLTE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFByZXZpb3VzKCk6IG51bWJlciB7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLmFjdGl2ZU5hdiAtIDE7XHJcblxyXG4gICAgd2hpbGUgKGluZGV4ID49IDApIHtcclxuICAgICAgaWYgKCF0aGlzLmlzRGlzYWJsZWQoaW5kZXgpKSB7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4O1xyXG4gICAgICB9XHJcbiAgICAgIGluZGV4LS07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRNYXhOYXYoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3Jtcy5sZW5ndGggPz8gMDsgICAgXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBpc0Rpc2FibGVkKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHZhciBmb3JtID0gdGhpcy5fZm9ybXNbaW5kZXhdO1xyXG5cclxuICAgIGlmICghZm9ybSlcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmV2YWx1YXRlQm9vbGVhbihmb3JtLmRpc2FibGVkKSA/PyBmYWxzZTtcclxuICB9XHJcbiAgXHJcbiAgcHJpdmF0ZSBjbGVhckNvbnRyb2xzKCk6IHZvaWQge1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAucmVtb3ZlQ29udHJvbChrZXkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyRm9ybUFycmF5cyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB2b2lkIHtcclxuICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5ICYmIGNvbnRyb2wuY29udHJvbHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb250cm9sLmNsZWFyKCk7XHJcbiAgICAgIGNvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcclxuICAgICAgY29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgICBPYmplY3QudmFsdWVzKGNvbnRyb2wuY29udHJvbHMpLmZvckVhY2goY2hpbGRDb250cm9sID0+IHtcclxuICAgICAgICB0aGlzLmNsZWFyRm9ybUFycmF5cyhjaGlsZENvbnRyb2wpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVnaXN0ZXJIYW5kbGVycygpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5pbnRlcm5hbENoYW5nZSA9IHRydWU7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9uQ29tbWFuZFN1YnNjcmlwdGlvbiA9IHRoaXMuZXZlbnRzLm9uQ29tbWFuZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgaWYgKHRoaXMub25Db21tYW5kKVxyXG4gICAgICAgIHRoaXMub25Db21tYW5kLmVtaXQoZGF0YSk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIGNsZWFySGFuZGxlcnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vbkNvbW1hbmRTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5vbkNvbW1hbmRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRGb3JtKCkge1xyXG4gICAgdGhpcy5mb3Jtcy5mb3JFYWNoKChmb3JtOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgodGhpcy5mYiwgdGhpcy5mb3JtR3JvdXAsIGZvcm0ucGF0aCk7XHJcbiAgICAgIGZvcm0ucm93cz8uZm9yRWFjaCgocm93OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmFkZENvbnRyb2xzKHRoaXMuZmIsIGN1cnJlbnRHcm91cCwgcm93LmNvbXBvbmVudHMpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRDb250cm9scyhmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjb21wb25lbnRzOiBBcnJheTxhbnk+KSB7XHJcbiAgICBsZXQgZm9ybUNvbXBvbmVudCA9IHRoaXM7XHJcblxyXG4gICAgY29tcG9uZW50cz8uZm9yRWFjaCgoY29tcG9uZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNGb3JtQ29tcG9uZW50KGNvbXBvbmVudCkpIHtcclxuICAgICAgICBsZXQgZGVmYXVsdFZhbHVlID0gdGhpcy5nZXREZWZhdWx0VmFsdWUoY29tcG9uZW50KTtcclxuICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5nZXRWYWxpZGF0b3JzKGZvcm1Hcm91cCwgY29tcG9uZW50KTtcclxuICAgICAgICBjb25zdCBvcHRpb25zOiBGb3JtQ29udHJvbE9wdGlvbnMgPSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzIHx8IFtdLFxyXG4gICAgICAgICAgdXBkYXRlT246IHRoaXMuZ2V0VXBkYXRlT24oY29tcG9uZW50KSB8fCBcImNoYW5nZVwiXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUJ1aWxkZXIuY29udHJvbChkZWZhdWx0VmFsdWUsIG9wdGlvbnMpO1xyXG4gICAgICAgIGZvcm1Hcm91cC5hZGRDb250cm9sKGNvbXBvbmVudC5rZXksIGNvbnRyb2wpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuaXNDb250YWluZXJDb21wb25lbnQoY29tcG9uZW50KSkge1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcnMgPSB0aGlzLmdldENvbnRhaW5lcnMoY29tcG9uZW50KTtcclxuICAgICAgICBjb250YWluZXJzPy5mb3JFYWNoKChjb250YWluZXI6IHsgcGF0aDogYW55OyByb3dzOiBhbnkgfSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY3VycmVudEdyb3VwID0gdGhpcy5hcHBseVBhdGgoZm9ybUJ1aWxkZXIsIGZvcm1Hcm91cCwgY29udGFpbmVyLnBhdGgpO1xyXG4gICAgICAgICAgY29udGFpbmVyLnJvd3M/LmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGZvcm1Db21wb25lbnQuYWRkQ29udHJvbHMoZm9ybUJ1aWxkZXIsIGN1cnJlbnRHcm91cCwgcm93LmNvbXBvbmVudHMpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5pc0FycmF5Q29tcG9uZW50KGNvbXBvbmVudCkpIHtcclxuICAgICAgICBjb25zdCBpdGVtQ29tcG9uZW50ID0gdGhpcy5nZXRBcnJheUl0ZW0oY29tcG9uZW50KTtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW1Db21wb25lbnQucGF0aCkge1xyXG4gICAgICAgICAgY29uc3QgZm9ybUFycmF5ID0gdGhpcy5jcmVhdGVGb3JtQXJyYXkoZm9ybUJ1aWxkZXIsIGZvcm1Hcm91cCwgaXRlbUNvbXBvbmVudCk7XHJcbiAgICAgICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChpdGVtQ29tcG9uZW50LnBhdGgsIGZvcm1BcnJheSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRm9ybUFycmF5KGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGl0ZW1Db21wb25lbnQ6IGFueSk6IEZvcm1BcnJheSB7XHJcbiAgICBjb25zdCBmb3JtQ29tcG9uZW50ID0gdGhpcztcclxuXHJcbiAgICBjb25zdCBmb3JtQXJyYXkgPSBmb3JtQnVpbGRlci5hcnJheTxGb3JtR3JvdXA+KFtdKTtcclxuXHJcbiAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChpdGVtQ29tcG9uZW50LnBhdGgsIGZvcm1BcnJheSk7XHJcblxyXG4gICAgY29uc3QgY3JlYXRlSXRlbSA9IGZ1bmN0aW9uICgpOiBGb3JtR3JvdXAge1xyXG4gICAgICBsZXQgbmV3R3JvdXAgPSBmb3JtQnVpbGRlci5ncm91cCh7fSk7XHJcbiAgICAgIGl0ZW1Db21wb25lbnQucm93cz8uZm9yRWFjaCgocm93OiBhbnkpID0+IHtcclxuICAgICAgICBmb3JtQ29tcG9uZW50LmFkZENvbnRyb2xzKGZvcm1CdWlsZGVyLCBuZXdHcm91cCwgcm93LmNvbXBvbmVudHMpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIG5ld0dyb3VwO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCByZXNpemVGb3JtQXJyYXkgPSB0aGlzLnJlc2l6ZUZvcm1BcnJheTtcclxuXHJcbiAgICBjb25zdCBhZGRJdGVtID0gZnVuY3Rpb24gKHRoaXM6IEZvcm1BcnJheSkge1xyXG4gICAgICBsZXQgbmV3R3JvdXAgPSBjcmVhdGVJdGVtKCk7XHJcbiAgICAgIHRoaXMucHVzaChuZXdHcm91cCk7XHJcbiAgICAgIHJldHVybiBuZXdHcm91cDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgcHJlcGFyZUFycmF5ID0gKGFycmF5OiBhbnkpID0+IHtcclxuICAgICAgYXJyYXkuYWRkSXRlbSA9IGFkZEl0ZW07XHJcbiAgICAgIGFycmF5LnJlc2l6ZSA9IHJlc2l6ZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXNpemUgPSBmdW5jdGlvbiAodGhpczogRm9ybUFycmF5LCBzaXplOiBudW1iZXIpIHtcclxuICAgICAgY29uc3QgbmV3QXJyYXkgPSByZXNpemVGb3JtQXJyYXkodGhpcywgc2l6ZSwgY3JlYXRlSXRlbSk7XHJcbiAgICAgIHByZXBhcmVBcnJheShuZXdBcnJheSk7XHJcbiAgICAgIGZvcm1Hcm91cC5zZXRDb250cm9sKGl0ZW1Db21wb25lbnQucGF0aCwgbmV3QXJyYXkpO1xyXG4gICAgfTtcclxuXHJcbiAgICBwcmVwYXJlQXJyYXkoZm9ybUFycmF5KTtcclxuXHJcbiAgICByZXR1cm4gZm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNpemVGb3JtQXJyYXkoZm9ybUFycmF5OiBGb3JtQXJyYXksIHNpemU6IG51bWJlciwgY3JlYXRlSXRlbTogKCkgPT4gRm9ybUdyb3VwKSA6IEZvcm1BcnJheSB7XHJcbiAgICBpZiAoZm9ybUFycmF5Lmxlbmd0aCA8IHNpemUpIHtcclxuICAgICAgY29uc3QgbmV3QXJyYXkgPSBuZXcgRm9ybUFycmF5KGZvcm1BcnJheS5jb250cm9scyk7XHJcbiAgICAgIHdoaWxlIChmb3JtQXJyYXkubGVuZ3RoIDwgc2l6ZSkge1xyXG4gICAgICAgIG5ld0FycmF5LnB1c2goY3JlYXRlSXRlbSgpKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbmV3QXJyYXk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChmb3JtQXJyYXkubGVuZ3RoID4gc2l6ZSkge1xyXG4gICAgICByZXR1cm4gbmV3IEZvcm1BcnJheShmb3JtQXJyYXkuY29udHJvbHMuc2xpY2UoMCwgc2l6ZSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBmb3JtQXJyYXk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFwcGx5UGF0aChmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBwYXRoOiBzdHJpbmcpIHtcclxuICAgIGlmICghcGF0aCkge1xyXG4gICAgICByZXR1cm4gZm9ybUdyb3VwO1xyXG4gICAgfVxyXG4gICAgbGV0IGN1cnJlbnRHcm91cDogRm9ybUdyb3VwID0gZm9ybUdyb3VwO1xyXG4gICAgdGhpcy5zcGxpdFBhdGgocGF0aCkuZm9yRWFjaCgoc2VnbWVudCkgPT4ge1xyXG4gICAgICBjb25zdCBleGlzdEdyb3VwID0gY3VycmVudEdyb3VwLmdldChzZWdtZW50KTtcclxuICAgICAgaWYgKGV4aXN0R3JvdXAgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgICBjdXJyZW50R3JvdXAgPSBleGlzdEdyb3VwO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChleGlzdEdyb3VwKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY3JlYXRlIGZvcm0gZ3JvdXAgYmVjYXVzZSBhbiBlbGVtZW50IHdpdGggcGF0aCAke3NlZ21lbnR9IGFscmVhZHkgZXhpc3RzYCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgc2VnbWVudEdyb3VwID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe30pO1xyXG4gICAgICAgIGN1cnJlbnRHcm91cC5hZGRDb250cm9sKHNlZ21lbnQsIHNlZ21lbnRHcm91cCk7XHJcbiAgICAgICAgY3VycmVudEdyb3VwID0gc2VnbWVudEdyb3VwO1xyXG4gICAgICB9IFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY3VycmVudEdyb3VwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRWYWxpZGF0b3JzKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjb21wb25lbnQ6IGFueSk6IFZhbGlkYXRvckZuW10gfCBudWxsIHtcclxuXHJcbiAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcblxyXG4gICAgaWYgKGNvbXBvbmVudD8udmFsaWRhdGU/LnJlcXVpcmVkID09PSB0cnVlKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29tcG9uZW50LnZhbGlkYXRpb25zKSkge1xyXG4gICAgICBpZiAodmFsaWRhdG9ycy5sZW5ndGggPT0gMClcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgcmV0dXJuIHZhbGlkYXRvcnM7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcG9uZW50LnZhbGlkYXRpb25zPy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnByb2dyYW1tYWJpbGl0eS5pc0V4cHJlc3Npb24oaXRlbS5leHByZXNzaW9uKSlcclxuICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICBpZiAoaXRlbS50eXBlID09PSBcInZhbGlkYXRlXCIpIHtcclxuICAgICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy52YWxpZGF0ZUZuKGZvcm1Hcm91cCwgaXRlbSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gXCJpbnZhbGlkYXRlXCIpIHtcclxuICAgICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy5pbnZhbGlkYXRlRm4oZm9ybUdyb3VwLCBpdGVtKSk7XHJcbiAgICAgIH0gICAgICBcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh2YWxpZGF0b3JzLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVGbihmb3JtR3JvdXA6IEZvcm1Hcm91cCwgaXRlbTogYW55KTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcblxyXG4gICAgICAvL2lmICghY29udHJvbC50b3VjaGVkKVxyXG4gICAgICAvLyAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICB2YXIgdmFsaWQgPSB0aGlzLnByb2dyYW1tYWJpbGl0eS5ldmFsdWF0ZVVuYXJ5KGZvcm1Hcm91cCwgaXRlbS5leHByZXNzaW9uLCBjb250cm9sLnZhbHVlKTtcclxuXHJcbiAgICAgIGlmICghdmFsaWQpIHtcclxuICAgICAgICByZXR1cm4geyBlcnJvcjogdHJ1ZSwgbWVzc2FnZTogdGhpcy5sb2NhbGUoaXRlbSwgJ21lc3NhZ2UnKSB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW52YWxpZGF0ZUZuKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBpdGVtOiBhbnkpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuXHJcbiAgICAgIC8vaWYgKCFjb250cm9sLnRvdWNoZWQpXHJcbiAgICAgIC8vICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgIHZhciBpbnZhbGlkID0gdGhpcy5wcm9ncmFtbWFiaWxpdHkuZXZhbHVhdGVVbmFyeShmb3JtR3JvdXAsIGl0ZW0uZXhwcmVzc2lvbiwgY29udHJvbC52YWx1ZSk7XHJcblxyXG4gICAgICBpZiAoaW52YWxpZCkge1xyXG4gICAgICAgIHJldHVybiB7IGVycm9yOiB0cnVlLCBtZXNzYWdlOiB0aGlzLmxvY2FsZShpdGVtLCAnbWVzc2FnZScpIH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0Zvcm1Db21wb25lbnQoY29tcG9uZW50OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBcImNoZWNrYm94XCI6XHJcbiAgICAgIGNhc2UgXCJjaGVja2xpc3RcIjpcclxuICAgICAgY2FzZSBcImRhdGV0aW1lXCI6XHJcbiAgICAgIGNhc2UgXCJmaWxlcGlja2VyXCI6XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgY2FzZSBcInJhZGlvXCI6XHJcbiAgICAgIGNhc2UgXCJzZWxlY3RcIjpcclxuICAgICAgY2FzZSBcInRhZ2xpc3RcIjpcclxuICAgICAgY2FzZSBcInRleHRhcmVhXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0ZmllbGRcIjpcclxuICAgICAgY2FzZSBcInJhbmdlXCI6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0NvbnRhaW5lckNvbXBvbmVudChjb21wb25lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIFwiZ3JvdXBcIjpcclxuICAgICAgY2FzZSBcInRhYlwiOlxyXG4gICAgICBjYXNlIFwiYWNjb3JkaW9uXCI6XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0FycmF5Q29tcG9uZW50KGNvbXBvbmVudDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJkeW5hbWljbGlzdFwiOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgcHJpdmF0ZSBnZXRBcnJheUl0ZW0oY29tcG9uZW50OiBhbnkpOiB7IHBhdGg6IGFueTsgcm93czogYW55IH0ge1xyXG4gICAgaWYgKGNvbXBvbmVudC50eXBlID09PSAnZHluYW1pY2xpc3QnKSB7XHJcbiAgICAgIHJldHVybiB7IHBhdGg6IGNvbXBvbmVudC5wYXRoLCByb3dzOiBjb21wb25lbnQucm93cyB9O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IHBhdGg6IG51bGwsIHJvd3M6IFtdIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbnRhaW5lcnMoY29tcG9uZW50OiBhbnkpOiB7IHBhdGg6IGFueTsgcm93czogYW55IH1bXSB7XHJcbiAgICBpZiAoY29tcG9uZW50LnR5cGUgPT09ICdncm91cCcpIHtcclxuICAgICAgcmV0dXJuIFt7IHBhdGg6IGNvbXBvbmVudC5wYXRoLCByb3dzOiBjb21wb25lbnQucm93cyB9XTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGNvbXBvbmVudC50eXBlID09PSAndGFiJ1xyXG4gICAgICB8fCBjb21wb25lbnQudHlwZSA9PT0gJ2FjY29yZGlvbicpIHtcclxuICAgICAgcmV0dXJuIGNvbXBvbmVudC5wYW5lbHMubWFwKChwYW5lbDogYW55KSA9PiAoe1xyXG4gICAgICAgIHBhdGg6IHBhbmVsLnBhdGgsXHJcbiAgICAgICAgcm93czogdGhpcy5tZXRhZGF0YS5nZXRGb3JtQnlOYW1lKHBhbmVsLnRlbXBsYXRlKT8ucm93cyA/PyBbXVxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRVcGRhdGVPbihjb21wb25lbnQ6IGFueSk6IGFueSB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgY2FzZSBcInRleHRhcmVhXCI6XHJcbiAgICAgIGNhc2UgXCJ0ZXh0ZmllbGRcIjpcclxuICAgICAgICByZXR1cm4gXCJibHVyXCI7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERlZmF1bHRWYWx1ZShjb21wb25lbnQ6IGFueSk6IGFueSB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxyXG4gICAgICBjYXNlIFwidGV4dGZpZWxkXCI6XHJcbiAgICAgIGNhc2UgXCJyYWRpb1wiOlxyXG4gICAgICBjYXNlIFwic2VsZWN0XCI6XHJcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5kZWZhdWx0VmFsdWUgYXMgc3RyaW5nO1xyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5kZWZhdWx0VmFsdWUgYXMgbnVtYmVyO1xyXG4gICAgICBjYXNlIFwiY2hlY2tib3hcIjpcclxuICAgICAgICByZXR1cm4gY29tcG9uZW50LmRlZmF1bHRWYWx1ZSBhcyBib29sZWFuO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzcGxpdFBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgaWYgKCFwYXRoKSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXRoXHJcbiAgICAgIC5zcGxpdCgnLicpXHJcbiAgICAgIC5tYXAoc2VnbWVudCA9PiBzZWdtZW50LnRyaW0oKSlcclxuICAgICAgLmZpbHRlcihzZWdtZW50ID0+IHNlZ21lbnQubGVuZ3RoID4gMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1ZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID4gMDtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBjbGFzcz1cIm5nc1wiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcblxyXG4gICAgICA8IS0tICNyZWdpb24gcHJvZ3Jlc3MgLS0+XHJcbiAgICAgIDxuZ3gtc2lyaW8tc3RlcHBlci1wcm9ncmVzcy1iYXIgKm5nSWY9XCJzaG93UHJvZ3Jlc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudENsaWNrKT1cImFjdGl2YXRlRm9ybSgkZXZlbnQuZGF0YS5sYWJlbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoYXNEcm9wZG93bl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZHJvcERvd25MYWJlbF09XCJsb2NhbGUoVGV4dHMsICdTaG93JylcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmb3JtIG9mIGZvcm1zLCBsZXQgZm9ybUluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgIDxuZ3gtc2lyaW8tc3RlcHBlci1wcm9ncmVzcy1pdGVtICpuZ0lmPVwiIWV2YWx1YXRlQm9vbGVhbihmb3JtLmRpc2FibGVkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGFzTmF2aWdhdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGF0dXNdPVwiZ2V0Rm9ybVN0YXR1cyhmb3JtLGZvcm1JbmRleClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxvY2FsZShmb3JtLCAndGl0bGUnKVwiIC8+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmd4LXNpcmlvLXN0ZXBwZXItcHJvZ3Jlc3MtYmFyPlxyXG4gICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICA8IS0tICNyZWdpb24gZm9ybSBkaXNhYmxlIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmb3JtIG9mIGZvcm1zXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqZGlzYWJsZUZvcm09XCJ7XHJcbiAgICAgICAgICAgIGRpc2FibGVkOiBldmFsdWF0ZUJvb2xlYW4oZm9ybS5kaXNhYmxlZCksXHJcbiAgICAgICAgICAgIGZvcm1Hcm91cDogZm9ybUdyb3VwLFxyXG4gICAgICAgICAgICBwYXRoOiBmb3JtLnBhdGhcclxuICAgICAgICAgIH1cIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93TmF2XCI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG5cclxuICAgICAgICAgIDwhLS0gI3JlZ2lvbiBzaWRlbmF2IC0tPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNzaWRlbmF2VGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxuZ3gtc2lyaW8tc2lkZW5hdj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmb3JtIG9mIGZvcm1zLCBsZXQgc2VjdGlvbkluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZXZhbHVhdGVCb29sZWFuKGZvcm0uZGlzYWJsZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZ3gtc2lyaW8tc2lkZW5hdi1pdGVtIFtpc0FjdGl2ZV09XCJhY3RpdmVOYXYgPT0gc2VjdGlvbkluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZU5hdiA9IHNlY3Rpb25JbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFjdGl2ZU5hdiA9IHNlY3Rpb25JbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGxvY2FsZShmb3JtLCAndGl0bGUnKSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L25neC1zaXJpby1zaWRlbmF2LWl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZ3gtc2lyaW8tc2lkZW5hdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPG5neC1zaXJpby1zaWRlbmF2LW1vYmlsZSBjbGFzcz1cImQtYmxvY2sgZC1sZy1ub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wZW5NZW51TGFiZWxdPVwibG9jYWxlKFRleHRzLCAnT3Blbk1lbnUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcGVuTWVudUFyaWFMYWJlbF09XCJsb2NhbGUoVGV4dHMsICdPcGVuTWVudScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nsb3NlTWVudUxhYmVsXT1cImxvY2FsZShUZXh0cywgJ0Nsb3NlTWVudScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VNZW51QXJpYUxhYmVsPVwibG9jYWxlKFRleHRzLCAnQ2xvc2VNZW51JylcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVuYXZUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZ3gtc2lyaW8tc2lkZW5hdi1tb2JpbGU+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1ub25lIGQtbGctYmxvY2tcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVuYXZUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3ItaG9yaXpvbnRhbFwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1lbGVtZW50LWZvcm1cIiBbbmdDbGFzc109XCJzaG93TmF2ID8gJ2NvbC1tZC0xMScgOiAnY29sLW1kLTE2J1wiPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmb3JtIG9mIGZvcm1zLCBsZXQgc2VjdGlvbkluZGV4ID0gaW5kZXhcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJhY3RpdmVOYXYgPT0gc2VjdGlvbkluZGV4ICYmICFldmFsdWF0ZUJvb2xlYW4oZm9ybS5kaXNhYmxlZClcIlxyXG4gICAgICAgICAgICAgICAjZGVmYXVsdFxyXG4gICAgICAgICAgICAgICBbcmVnaXN0ZXJdPVwiZm9ybVwiXHJcbiAgICAgICAgICAgICAgIFtjb21wb25lbnRSZWZdPVwiZGVmYXVsdFwiPlxyXG4gICAgICAgICAgICA8aDEgKm5nSWY9XCJzaG93Rm9ybVRpdGxlICYmIGZvcm0udGl0bGVcIiBjbGFzcz1cImgzIGZvcm0tdGl0bGVcIj57eyBsb2NhbGUoZm9ybSwgJ3RpdGxlJykgfX08L2gxPlxyXG4gICAgICAgICAgICA8YXBwLWR5bmFtaWMtZmllbGRzIFtmb3JtR3JvdXBdPVwiZ2V0Rm9ybUdyb3VwKGZvcm0ucGF0aClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dzXT1cImZvcm0ucm93c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhbmd1YWdlXT1cImxhbmd1YWdlXCI+PC9hcHAtZHluYW1pYy1maWVsZHM+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dOYXZCdXR0b25cIj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHNlY3Rpb24tbmF2c1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTggY29sLW1kLThcIj5cclxuICAgICAgICAgICAgICA8bmd4LXNpcmlvLWJ1dHRvbiBbY29sb3JdPVwibnVsbFwiICpuZ0lmPVwiY2FuTmV4dCgpXCIgKGNsaWNrKT1cImdvTmV4dCgpXCIgY2xhc3M9XCJuZXh0U2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAge3sgbG9jYWxlKFRleHRzLCAnTmV4dFNlY3Rpb24nKSB9fVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYS1zb2xpZCBmYS1jaGV2cm9uLXJpZ2h0XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTBweFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L25neC1zaXJpby1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTggY29sLW1kLThcIj5cclxuICAgICAgICAgICAgICA8bmd4LXNpcmlvLWJ1dHRvbiBbY29sb3JdPVwibnVsbFwiICpuZ0lmPVwiY2FuUHJldmlvdXMoKVwiIChjbGljayk9XCJnb1ByZXZpb3VzKClcIiBjbGFzcz1cInByZXZTZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhLXNvbGlkIGZhLWNoZXZyb24tbGVmdFwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAge3sgbG9jYWxlKFRleHRzLCAnUHJldmlvdXNTZWN0aW9uJykgfX1cclxuICAgICAgICAgICAgICA8L25neC1zaXJpby1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Zvcm0+XHJcblxyXG5cclxuXHJcbiJdfQ==
@@ -37,6 +37,7 @@ export function patchForm(control, value, options) {
37
37
  });
38
38
  }
39
39
  else if (control instanceof FormArray) {
40
+ // qui ci vuole un intervento
40
41
  (value || []).forEach((item, index) => {
41
42
  if (control.at(index)) {
42
43
  patchForm(control.at(index), item, options);
@@ -52,4 +53,4 @@ export function patchForm(control, value, options) {
52
53
  error('Unsupported AbstractControl type.');
53
54
  }
54
55
  }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2hGb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvdXRpbHMvcGF0Y2hGb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRixNQUFNLFVBQVUsU0FBUyxDQUN2QixPQUF3QixFQUN4QixLQUFVLEVBQ1YsT0FBdUg7SUFHdkgsTUFBTSxjQUFjLEdBQUc7UUFDckIsU0FBUyxFQUFFLElBQUk7UUFDZixZQUFZLEVBQUUsS0FBSztRQUNuQixhQUFhLEVBQUUsSUFBSTtLQUNwQixDQUFDO0lBRUYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtRQUMvQixJQUFJLE9BQU8sRUFBRSxRQUFRO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQzFDLENBQUMsQ0FBQztJQUVGLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7UUFDaEMsSUFBSSxPQUFPLEVBQUUsU0FBUztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUMsQ0FBQztJQUVGLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxHQUM1QyxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFFdEMsSUFBSSxPQUFPLFlBQVksV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxZQUFZLElBQUksT0FBTyxLQUFLLEtBQUssT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLGlDQUFpQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLGtCQUFrQixPQUFPLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFNUYsSUFBSSxhQUFhLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDakQsT0FBTztZQUNULENBQUM7WUFDRCxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztZQUM1RCxPQUFPO1FBQ1QsQ0FBQztRQUNELE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO1NBQ0ksSUFBSSxPQUFPLFlBQVksU0FBUyxFQUFFLENBQUM7UUFDdEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN4RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRywrQkFBK0IsQ0FBQyxDQUFDO1lBQ25ELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7U0FDSSxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUUsQ0FBQztRQUN0QyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDakQsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM5QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFNBQVMsS0FBSyxvREFBb0QsQ0FBQyxDQUFDO2dCQUN6RSxNQUFNLFVBQVUsR0FBSSxPQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzlDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7U0FDSSxDQUFDO1FBQ0osS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXRjaEZvcm0oXHJcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxyXG4gIHZhbHVlOiBhbnksXHJcbiAgb3B0aW9ucz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbjsgZW1pdEVycm9yPzogYm9vbGVhbjsgZW1pdFdhcm4/OiBib29sZWFuOyB2YWxpZGF0ZVR5cGU/OiBib29sZWFuOyBmYWxsYmFja1ZhbHVlPzogYW55IH1cclxuKTogdm9pZCB7XHJcblxyXG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xyXG4gICAgZW1pdEV2ZW50OiB0cnVlLFxyXG4gICAgdmFsaWRhdGVUeXBlOiBmYWxzZSxcclxuICAgIGZhbGxiYWNrVmFsdWU6IG51bGxcclxuICB9O1xyXG5cclxuICBjb25zdCB3YXJuID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKG9wdGlvbnM/LmVtaXRXYXJuKVxyXG4gICAgICBjb25zb2xlLndhcm4oYFtwYXRjaEZvcm1dICR7bWVzc2FnZX1gKVxyXG4gIH07XHJcblxyXG4gIGNvbnN0IGVycm9yID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKG9wdGlvbnM/LmVtaXRFcnJvcilcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IHsgZW1pdEV2ZW50LCB2YWxpZGF0ZVR5cGUsIGZhbGxiYWNrVmFsdWUgfVxyXG4gICAgPSB7IC4uLmRlZmF1bHRPcHRpb25zLCAuLi5vcHRpb25zIH07XHJcblxyXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcclxuICAgIGlmICh2YWxpZGF0ZVR5cGUgJiYgdHlwZW9mIHZhbHVlICE9PSB0eXBlb2YgY29udHJvbC52YWx1ZSkge1xyXG4gICAgICB3YXJuKGBWYWx1ZSB0eXBlIG1pc21hdGNoOiBleHBlY3RlZCAke3R5cGVvZiBjb250cm9sLnZhbHVlfSwgYnV0IHJlY2VpdmVkICR7dHlwZW9mIHZhbHVlfWApO1xyXG5cclxuICAgICAgaWYgKGZhbGxiYWNrVmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgICBjb250cm9sLnBhdGNoVmFsdWUoZmFsbGJhY2tWYWx1ZSwgeyBlbWl0RXZlbnQgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGVycm9yKCdJbnZhbGlkIHZhbHVlIHR5cGUgYW5kIG5vIGZhbGxiYWNrIHZhbHVlIHByb3ZpZGVkLicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb250cm9sLnBhdGNoVmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50IH0pO1xyXG4gIH1cclxuICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICBPYmplY3Qua2V5cyh2YWx1ZSB8fCB7fSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgIGlmIChjb250cm9sLmNvbnRyb2xzW2tleV0pIHtcclxuICAgICAgICBwYXRjaEZvcm0oY29udHJvbC5jb250cm9sc1trZXldLCB2YWx1ZVtrZXldLCBvcHRpb25zKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB3YXJuKGBLZXkgXCIke2tleX1cIiBub3QgZm91bmQgaW4gdGhlIEZvcm1Hcm91cC5gKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICh2YWx1ZSB8fCBbXSkuZm9yRWFjaCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGlmIChjb250cm9sLmF0KGluZGV4KSkge1xyXG4gICAgICAgIHBhdGNoRm9ybShjb250cm9sLmF0KGluZGV4KSwgaXRlbSwgb3B0aW9ucyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgd2FybihgSW5kZXggJHtpbmRleH0gbm90IGZvdW5kIGluIHRoZSBGb3JtQXJyYXkuIEFkZGluZyBkeW5hbWljYWxseS4uLmApO1xyXG4gICAgICAgIGNvbnN0IG5ld0NvbnRyb2wgPSAoY29udHJvbCBhcyBhbnkpLmFkZEl0ZW0oKTtcclxuICAgICAgICBwYXRjaEZvcm0obmV3Q29udHJvbCwgaXRlbSwgb3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBlbHNlIHtcclxuICAgIGVycm9yKCdVbnN1cHBvcnRlZCBBYnN0cmFjdENvbnRyb2wgdHlwZS4nKTtcclxuICB9XHJcbn1cclxuIl19
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2hGb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvdXRpbHMvcGF0Y2hGb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRixNQUFNLFVBQVUsU0FBUyxDQUN2QixPQUF3QixFQUN4QixLQUFVLEVBQ1YsT0FBdUg7SUFHdkgsTUFBTSxjQUFjLEdBQUc7UUFDckIsU0FBUyxFQUFFLElBQUk7UUFDZixZQUFZLEVBQUUsS0FBSztRQUNuQixhQUFhLEVBQUUsSUFBSTtLQUNwQixDQUFDO0lBRUYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtRQUMvQixJQUFJLE9BQU8sRUFBRSxRQUFRO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQzFDLENBQUMsQ0FBQztJQUVGLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7UUFDaEMsSUFBSSxPQUFPLEVBQUUsU0FBUztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUMsQ0FBQztJQUVGLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxHQUM1QyxFQUFFLEdBQUcsY0FBYyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFFdEMsSUFBSSxPQUFPLFlBQVksV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxZQUFZLElBQUksT0FBTyxLQUFLLEtBQUssT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUQsSUFBSSxDQUFDLGlDQUFpQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLGtCQUFrQixPQUFPLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFNUYsSUFBSSxhQUFhLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDakQsT0FBTztZQUNULENBQUM7WUFDRCxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztZQUM1RCxPQUFPO1FBQ1QsQ0FBQztRQUNELE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO1NBQ0ksSUFBSSxPQUFPLFlBQVksU0FBUyxFQUFFLENBQUM7UUFDdEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN4RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRywrQkFBK0IsQ0FBQyxDQUFDO1lBQ25ELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7U0FDSSxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUUsQ0FBQztRQUN0Qyw2QkFBNkI7UUFFN0IsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQ2pELElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN0QixTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxTQUFTLEtBQUssb0RBQW9ELENBQUMsQ0FBQztnQkFDekUsTUFBTSxVQUFVLEdBQUksT0FBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUM5QyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO1NBQ0ksQ0FBQztRQUNKLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAsIEZvcm1BcnJheSwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2hGb3JtKFxyXG4gIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcclxuICB2YWx1ZTogYW55LFxyXG4gIG9wdGlvbnM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW47IGVtaXRFcnJvcj86IGJvb2xlYW47IGVtaXRXYXJuPzogYm9vbGVhbjsgdmFsaWRhdGVUeXBlPzogYm9vbGVhbjsgZmFsbGJhY2tWYWx1ZT86IGFueSB9XHJcbik6IHZvaWQge1xyXG5cclxuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcclxuICAgIGVtaXRFdmVudDogdHJ1ZSxcclxuICAgIHZhbGlkYXRlVHlwZTogZmFsc2UsXHJcbiAgICBmYWxsYmFja1ZhbHVlOiBudWxsXHJcbiAgfTtcclxuXHJcbiAgY29uc3Qgd2FybiA9IChtZXNzYWdlOiBzdHJpbmcpID0+IHtcclxuICAgIGlmIChvcHRpb25zPy5lbWl0V2FybilcclxuICAgICAgY29uc29sZS53YXJuKGBbcGF0Y2hGb3JtXSAke21lc3NhZ2V9YClcclxuICB9O1xyXG5cclxuICBjb25zdCBlcnJvciA9IChtZXNzYWdlOiBzdHJpbmcpID0+IHtcclxuICAgIGlmIChvcHRpb25zPy5lbWl0RXJyb3IpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICB9O1xyXG5cclxuICBjb25zdCB7IGVtaXRFdmVudCwgdmFsaWRhdGVUeXBlLCBmYWxsYmFja1ZhbHVlIH1cclxuICAgID0geyAuLi5kZWZhdWx0T3B0aW9ucywgLi4ub3B0aW9ucyB9O1xyXG5cclxuICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sKSB7XHJcbiAgICBpZiAodmFsaWRhdGVUeXBlICYmIHR5cGVvZiB2YWx1ZSAhPT0gdHlwZW9mIGNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgd2FybihgVmFsdWUgdHlwZSBtaXNtYXRjaDogZXhwZWN0ZWQgJHt0eXBlb2YgY29udHJvbC52YWx1ZX0sIGJ1dCByZWNlaXZlZCAke3R5cGVvZiB2YWx1ZX1gKTtcclxuXHJcbiAgICAgIGlmIChmYWxsYmFja1ZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udHJvbC5wYXRjaFZhbHVlKGZhbGxiYWNrVmFsdWUsIHsgZW1pdEV2ZW50IH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBlcnJvcignSW52YWxpZCB2YWx1ZSB0eXBlIGFuZCBubyBmYWxsYmFjayB2YWx1ZSBwcm92aWRlZC4nKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29udHJvbC5wYXRjaFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudCB9KTtcclxuICB9XHJcbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xyXG4gICAgT2JqZWN0LmtleXModmFsdWUgfHwge30pLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICBpZiAoY29udHJvbC5jb250cm9sc1trZXldKSB7XHJcbiAgICAgICAgcGF0Y2hGb3JtKGNvbnRyb2wuY29udHJvbHNba2V5XSwgdmFsdWVba2V5XSwgb3B0aW9ucyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgd2FybihgS2V5IFwiJHtrZXl9XCIgbm90IGZvdW5kIGluIHRoZSBGb3JtR3JvdXAuYCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAvLyBxdWkgY2kgdnVvbGUgdW4gaW50ZXJ2ZW50b1xyXG5cclxuICAgICh2YWx1ZSB8fCBbXSkuZm9yRWFjaCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGlmIChjb250cm9sLmF0KGluZGV4KSkge1xyXG4gICAgICAgIHBhdGNoRm9ybShjb250cm9sLmF0KGluZGV4KSwgaXRlbSwgb3B0aW9ucyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgd2FybihgSW5kZXggJHtpbmRleH0gbm90IGZvdW5kIGluIHRoZSBGb3JtQXJyYXkuIEFkZGluZyBkeW5hbWljYWxseS4uLmApO1xyXG4gICAgICAgIGNvbnN0IG5ld0NvbnRyb2wgPSAoY29udHJvbCBhcyBhbnkpLmFkZEl0ZW0oKTtcclxuICAgICAgICBwYXRjaEZvcm0obmV3Q29udHJvbCwgaXRlbSwgb3B0aW9ucyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBlbHNlIHtcclxuICAgIGVycm9yKCdVbnN1cHBvcnRlZCBBYnN0cmFjdENvbnRyb2wgdHlwZS4nKTtcclxuICB9XHJcbn1cclxuIl19