@onecx/angular-accelerator 5.52.9 → 5.52.10
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.
|
@@ -326,6 +326,7 @@ export class DataListGridComponent extends DataSortBase {
|
|
|
326
326
|
emitComponentStateChanged(state = {}) {
|
|
327
327
|
this.displayedPageSize$.pipe(first()).subscribe((pageSize) => {
|
|
328
328
|
this.componentStateChanged.emit({
|
|
329
|
+
filters: this.filters,
|
|
329
330
|
pageSize,
|
|
330
331
|
activePage: this.page,
|
|
331
332
|
...state,
|
|
@@ -670,4 +671,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
670
671
|
}], parentTemplates: [{
|
|
671
672
|
type: Input
|
|
672
673
|
}] } });
|
|
673
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1saXN0LWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWxpc3QtZ3JpZC9kYXRhLWxpc3QtZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtbGlzdC1ncmlkL2RhdGEtbGlzdC1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixlQUFlLEVBRWYsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLEtBQUssRUFDTCxTQUFTLEVBRVQsUUFBUSxFQUNSLE1BQU0sRUFHTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBRW5GLE9BQU8sRUFBWSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRWpFLE9BQU8sRUFDTCxlQUFlLEVBRWYsYUFBYSxFQUNiLFlBQVksRUFDWixLQUFLLEVBQ0wsY0FBYyxFQUNkLEdBQUcsRUFDSCxRQUFRLEVBQ1IsRUFBRSxFQUNGLFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQTtBQUNiLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUkxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBRy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBd0IsTUFBTSxzQkFBc0IsQ0FBQTtBQUNuRixPQUFPLEtBQUssTUFBTSxpQkFBaUIsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7OztBQXdCbkMsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFlBQVk7SUFTckQsSUFDSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ3BDLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxLQUF1QztRQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBSUQsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ25DLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUF5QjtRQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBRUQsSUFDSSxhQUFhLENBQUMsS0FBYztRQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBTUQsSUFDSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ3pDLENBQUM7SUFDRCxJQUFJLGNBQWMsQ0FBQyxLQUFvQztRQUNyRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFnQkQsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUF3QjtRQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMxQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzdDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUMzRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQ2pCLENBQUE7SUFDSCxDQUFDO0lBa0JELElBQ0ksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUMvQixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsS0FBd0I7UUFDL0IsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQTtRQUNwRSxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQTtRQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUM1QixJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUNsQixDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQTtRQUNuQyxNQUFNLFNBQVMsR0FDYixjQUFjLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDLENBQUMseUNBQXlDLENBQUE7UUFFakgsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFzQixFQUFFLEVBQUU7WUFDaEgsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDN0MsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBR0QsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFlO1FBQ3pCLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDaEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDMUIsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFHRCxJQUNJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDeEMsQ0FBQztJQUNELElBQUksYUFBYSxDQUFDLEtBQXdCO1FBQ3hDLElBQUksS0FBSyx3Q0FBMkIsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQTtRQUMzQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVELElBQ0ksU0FBUztRQUNYLE9BQU8sSUFBSSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUNyQyxDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBSUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsNkJBQTZCLElBQUksSUFBSSxDQUFDLGtDQUFrQyxDQUFBO0lBQ3RGLENBQUM7SUFJRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQyw2QkFBNkIsSUFBSSxJQUFJLENBQUMsa0NBQWtDLENBQUE7SUFDdEYsQ0FBQztJQUlELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQTtJQUM1RCxDQUFDO0lBSUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFBO0lBQzVELENBQUM7SUFJRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUE7SUFDOUQsQ0FBQztJQUlELElBQUksd0JBQXdCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLCtCQUErQixJQUFJLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQTtJQUMxRixDQUFDO0lBSUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLElBQUksSUFBSSxDQUFDLDRCQUE0QixDQUFBO0lBQzFFLENBQUM7SUFJRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQyw2QkFBNkIsSUFBSSxJQUFJLENBQUMsa0NBQWtDLENBQUE7SUFDdEYsQ0FBQztJQWFELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixJQUFJLElBQUksQ0FBQyw0QkFBNEIsQ0FBQTtJQUMxRSxDQUFDO0lBSUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLElBQUksSUFBSSxDQUFDLDRCQUE0QixDQUFBO0lBQzFFLENBQUM7SUFJRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFBO0lBQ3RFLENBQUM7SUFPRCxJQUNJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUM1QyxDQUFDO0lBQ0QsSUFBSSxpQkFBaUIsQ0FBQyxLQUFtQjtRQUN2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3RDLENBQUM7SUFTRCxJQUFJLGdCQUFnQjtRQUNsQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN2RCxPQUFPLEVBQUUsRUFBRSxnQkFBZ0IsSUFBSSxFQUFFLEVBQUUsUUFBUSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQTtJQUNoRixDQUFDO0lBQ0QsSUFBSSxnQkFBZ0I7UUFDbEIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDdkQsT0FBTyxFQUFFLEVBQUUsZ0JBQWdCLElBQUksRUFBRSxFQUFFLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUE7SUFDaEYsQ0FBQztJQUNELElBQUksa0JBQWtCO1FBQ3BCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3ZELE9BQU8sRUFBRSxFQUFFLGtCQUFrQixJQUFJLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFBO0lBQ3RGLENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixJQUFJLElBQUksQ0FBQyxhQUFhLGtEQUFnQztZQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ2hFLElBQUksSUFBSSxDQUFDLGFBQWEsb0RBQWlDO1lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtRQUNsRSxPQUFPLENBQUMsQ0FBQTtJQUNWLENBQUM7SUFZRCxJQUNJLFNBQVMsQ0FBQyxLQUEyQztRQUN2RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBS0QsSUFDSSxhQUFhLENBQUMsS0FBMkM7UUFDM0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDakMsQ0FBQztJQUtELElBQ0ksZUFBZSxDQUFDLEtBQWtEO1FBQ3BFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQU1ELFlBQ3FCLE1BQWMsRUFDakMsZ0JBQWtDLEVBQzFCLFdBQXdCLEVBQ3hCLE1BQWMsRUFDZCxRQUFrQixFQUNsQixlQUFnQyxFQUN2QixhQUE0QixFQUNPLG9CQUEyQztRQUUvRixLQUFLLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUE7UUFQdkIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ08seUJBQW9CLEdBQXBCLG9CQUFvQixDQUF1QjtRQXhTeEYsb0JBQWUsR0FBYSxFQUFFLENBQUE7UUFDOUIsc0JBQWlCLEdBQUcsSUFBSSxDQUFBO1FBQ3hCLHdCQUFtQixHQUFHLElBQUksQ0FBQTtRQUMxQixlQUFVLEdBQXdCLEVBQUUsQ0FBQTtRQUc3QyxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFtQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQVVqRixlQUFVLEdBQUcsSUFBSSxlQUFlLENBQXFCLFNBQVMsQ0FBQyxDQUFBO1FBUS9ELG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUE7UUFPNUMsa0JBQWEsR0FBRyxpQkFBaUIsQ0FBQTtRQUNqQyxXQUFNLEdBQW9CLE1BQU0sQ0FBQTtRQUN6QyxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBZ0MsU0FBUyxDQUFDLENBQUE7UUFtQnZFLGNBQVMsR0FBRyxJQUFJLENBQUE7UUFDaEIsU0FBSSxHQUFHLENBQUMsQ0FBQTtRQUVqQixjQUFTLEdBQUcsSUFBSSxlQUFlLENBQW9CLEVBQUUsQ0FBQyxDQUFBO1FBYTdDLFNBQUksR0FBRyxFQUFFLENBQUE7UUFDbEIseUJBQW9CLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQTtRQUNsRCwwQkFBcUIsR0FBRyx3QkFBd0IsQ0FBQTtRQUNoRCwyQ0FBc0MsR0FBRyw2Q0FBNkMsQ0FBQTtRQUMvRixXQUFNLEdBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNwQixPQUFPO2dCQUNMLFdBQVcsRUFBRSxlQUFlO2dCQUM1QixVQUFVLEVBQUUsY0FBYztnQkFDMUIsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLElBQUksRUFBRSxRQUFRO2dCQUNkLFlBQVksRUFBRSxnQkFBZ0I7Z0JBQzlCLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRTthQUNsRCxDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFFRixXQUFNLEdBQUcsSUFBSSxlQUFlLENBQW9CLEVBQUUsQ0FBQyxDQUFBO1FBc0JuRCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVcsRUFBRSxDQUFDLENBQUE7UUFZN0Msa0JBQWEsR0FBc0IsRUFBRSxDQUFBO1FBQ3JDLG9CQUFlLEdBQUcsSUFBSSxlQUFlLHFDQUEyQyxDQUFBO1FBV2hGLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUE7UUF1RjdDLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQWEsSUFBSSxDQUFDLENBQUE7UUFDdkQsd0JBQW1CLEdBQUcsSUFBSSxlQUFlLENBQWUsRUFBRSxDQUFDLENBQUE7UUFTakQsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFBO1FBQzNDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQTtRQUMzQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUE7UUFDN0MsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFBO1FBQ3hDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQTtRQUM1QywwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBOEIsQ0FBQTtRQXNCaEYsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBMkIsU0FBUyxDQUFDLENBQUE7UUFDekUscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUE7UUFLakQsZUFBVSxHQUEwRCxJQUFJLGVBQWUsQ0FFckYsU0FBUyxDQUFDLENBQUE7UUFNWixtQkFBYyxHQUEwRCxJQUFJLGVBQWUsQ0FFekYsU0FBUyxDQUFDLENBQUE7UUFNWixxQkFBZ0IsR0FBaUUsSUFBSSxlQUFlLENBRWxHLFNBQVMsQ0FBQyxDQUFBO1FBTVosZUFBVSxHQUFHLFVBQVUsQ0FBQTtRQUN2Qix5QkFBb0IsR0FBd0QsRUFBRSxDQUFBO1FBYzVFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQ3JFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQzdELEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQzNELENBQUE7UUFDRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsYUFBYSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxXQUFXO1lBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUM7WUFDL0MsSUFBSSxDQUFDLGVBQWU7U0FDckIsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUM5QyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUN2RSxDQUNGLENBQUE7UUFDRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQy9FLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBaUIsRUFBRSxDQUFDLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUNsSCxDQUFBO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQ3JELEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FDckUsQ0FBQTtRQUNELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUN2RCxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUNwRSxDQUFBO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2pHLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FDM0IsSUFBSSxDQUFDLCtCQUErQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDaEQsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FDckUsQ0FDRixFQUNELFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7WUFDNUIsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN6QixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUNmLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUUsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBQ25CLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDekIsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztvQkFDckMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO29CQUNaLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztvQkFDdkMsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQ2xHLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsa0JBQWtCLENBQUM7b0JBQy9FLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztpQkFDL0IsQ0FBQyxDQUFDLENBQUE7WUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUNsRCxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsVUFBVTtnQkFBRSxPQUFPLEVBQUUsQ0FBQTtZQUMxQixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM5RCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUM1QixJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ2pCLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2hILENBQUMsQ0FBQyxDQUNILENBQUE7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztZQUNsQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRTtTQUNyQyxDQUFDLENBQUMsSUFBSSxDQUNMLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsQ0FDN0UsSUFBSSxDQUFDLCtCQUErQixDQUFDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDdkUsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUNoRyxDQUNGLEVBQ0QsU0FBUyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRTtZQUM3RCxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3pFLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUN4RixDQUFBO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FDckUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQ2xGLENBQ0YsQ0FBQTtJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxlQUFlLEdBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEdBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUE7UUFDakgsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLEtBQUssZUFBZSxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUcsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUNqSCxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQ25FLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUM3RSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FDeEIsQ0FBQTtRQUVELElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdEMsUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDdkIsS0FBSyxXQUFXO29CQUNkLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFBO29CQUMzQyxNQUFLO2dCQUNQLEtBQUsseUJBQXlCO29CQUM1QixJQUFJLENBQUMsb0NBQW9DLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQTtvQkFDekQsTUFBSztnQkFDUCxLQUFLLGlCQUFpQjtvQkFDcEIsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7b0JBQ2pELE1BQUs7Z0JBQ1AsS0FBSyx1QkFBdUI7b0JBQzFCLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFBO29CQUN2RCxNQUFLO2dCQUNQLEtBQUssaUJBQWlCO29CQUNwQixJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQTtvQkFDakQsTUFBSztnQkFDUCxLQUFLLGlCQUFpQjtvQkFDcEIsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7b0JBQ2pELE1BQUs7Z0JBQ1AsS0FBSyxlQUFlO29CQUNsQixJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQTtvQkFDL0MsTUFBSztZQUNULENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBcUI7UUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFxQjtRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQXFCO1FBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBa0I7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUE7SUFDckIsQ0FBQztJQUVELG9CQUFvQixDQUFDLE9BQWdCO1FBQ25DLE9BQU8sT0FBTyxFQUFFLGFBQWE7WUFDM0IsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLGFBQWEsbUNBQW1DLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDakYsQ0FBQyxDQUFDLG9DQUFvQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDOUQsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFrQjtRQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBVyxFQUFFLEdBQVE7UUFDcEMsT0FBTyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQ2xELENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxRQUFvQyxFQUFFO1FBQzlELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMzRCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDO2dCQUM5QixRQUFRO2dCQUNSLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDckIsR0FBRyxLQUFLO2FBQ1QsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFBO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQTtRQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDckMsSUFBSSxDQUFDLHlCQUF5QixDQUFDO1lBQzdCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSTtTQUNyQixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFBO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2hDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxhQUFhLENBQUMsTUFBVyxFQUFFLEdBQVE7UUFDakMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsMkJBQTJCLENBQUMsR0FBUTtRQUNsQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQ25DLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQ3JFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUM5RyxDQUFBO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQWlCLEVBQUUsSUFBVSxFQUFFLEdBQVE7UUFDeEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNwQixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksR0FBRyxHQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNyRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDM0QsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN4RCxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQTBCLEVBQUUsS0FBZTtRQUN0RCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2xELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN6QixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFBO1lBQ3JFLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxRQUFRLENBQUE7WUFDakIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQXVCO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxVQUFVO2dCQUNmLElBQUksQ0FBQyxjQUFjO2dCQUNuQixJQUFJLENBQUMsZ0JBQWdCO2FBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2xCLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtnQkFDOUQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsRUFBRSxHQUFHLGFBQWEsQ0FBQyxFQUFFLFFBQVEsQ0FBQTtnQkFDMUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztvQkFDbkIsT0FBTyxjQUFjLENBQUE7Z0JBQ3ZCLENBQUM7Z0JBQ0QsUUFBUSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQzFCLEtBQUssVUFBVSxDQUFDLElBQUk7d0JBQ2xCLE9BQU8sQ0FDTCxJQUFJLENBQUMsY0FBYzs0QkFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxlQUFlLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxFQUFFLFFBQVE7NEJBQ2pGLElBQUksQ0FDTCxDQUFBO29CQUNILEtBQUssVUFBVSxDQUFDLE1BQU07d0JBQ3BCLE9BQU8sQ0FDTCxJQUFJLENBQUMsZ0JBQWdCOzRCQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLHdCQUF3QixDQUFDLENBQUMsRUFBRSxRQUFROzRCQUNyRixJQUFJLENBQ0wsQ0FBQTtvQkFDSCxLQUFLLFVBQVUsQ0FBQyxhQUFhO3dCQUMzQixPQUFPLENBQ0wsSUFBSSxDQUFDLHNCQUFzQjs0QkFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDLEVBQUUsUUFBUTs0QkFDakcsSUFBSSxDQUNMLENBQUE7b0JBQ0gsS0FBSyxVQUFVLENBQUMsZUFBZTt3QkFDN0IsT0FBTyxDQUNMLElBQUksQ0FBQyx3QkFBd0I7NEJBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUMseUJBQXlCLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQyxFQUFFLFFBQVE7NEJBQ3JHLElBQUksQ0FDTCxDQUFBO29CQUNILEtBQUssVUFBVSxDQUFDLE1BQU07d0JBQ3BCLE9BQU8sQ0FDTCxJQUFJLENBQUMsZ0JBQWdCOzRCQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLHdCQUF3QixDQUFDLENBQUMsRUFBRSxRQUFROzRCQUNyRixJQUFJLENBQ0wsQ0FBQTtvQkFDSDt3QkFDRSxPQUFPLENBQ0wsSUFBSSxDQUFDLGdCQUFnQjs0QkFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsUUFBUTs0QkFDckYsSUFBSSxDQUNMLENBQUE7Z0JBQ0wsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUNILENBQUE7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFTyxnQkFBZ0IsQ0FDdEIsV0FBcUIsRUFDckIsaUJBQStCLEVBQy9CLFlBQXNDLEVBQ3RDLFlBQW9DO1FBRXBDLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQTtRQUMxQixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUE7UUFDeEIsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFBO1FBRXhCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQTtRQUN4QixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUE7UUFDdEIsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFBO1FBRXRCLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsWUFBWSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtZQUM5RyxZQUFZLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1lBQzlHLGNBQWM7Z0JBQ1osQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1lBRXJHLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtZQUMzRyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUE7WUFDM0csYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLHdCQUF3QixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1FBQ25ILENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBZSxFQUFFLENBQUE7UUFDaEMsTUFBTSxZQUFZLEdBQUcseUJBQXlCLENBQUE7UUFDOUMsTUFBTSxrQkFBa0IsR0FBRyxnQ0FBZ0MsQ0FBQTtRQUMzRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM5RSxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNiLEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSw4QkFBOEIsQ0FBQztnQkFDM0UsSUFBSSxFQUFFLFVBQVUsQ0FBQyxHQUFHO2dCQUNwQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUMvQyxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsa0JBQWtCO2FBQzlELENBQUMsQ0FBQTtRQUNKLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM5RSxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNiLEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSw4QkFBOEIsQ0FBQztnQkFDM0UsSUFBSSxFQUFFLFVBQVUsQ0FBQyxNQUFNO2dCQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUMvQyxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsa0JBQWtCO2FBQzlELENBQUMsQ0FBQTtRQUNKLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ2xGLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2IsS0FBSyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksZ0NBQWdDLENBQUM7Z0JBQy9FLElBQUksRUFBRSxVQUFVLENBQUMsS0FBSztnQkFDdEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDakQsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjthQUNoRSxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FDMUIsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDMUIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUE7WUFDakcsT0FBTztnQkFDTCxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO2dCQUNyQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7Z0JBQ1osVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUN2QyxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDM0csT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztnQkFDdkMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxrQkFBa0I7YUFDNUQsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUNILENBQUE7UUFDRCxPQUFPLEdBQUcsQ0FBQTtJQUNaLENBQUM7SUFFTywwQkFBMEIsQ0FDaEMsaUJBQStCLEVBQy9CLFdBQXFCO1FBRXJCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQztZQUMvQixJQUFJLENBQUMsZUFBZSxJQUFJLDhCQUE4QjtZQUN0RCxJQUFJLENBQUMsZUFBZSxJQUFJLDhCQUE4QjtZQUN0RCxJQUFJLENBQUMsaUJBQWlCLElBQUksZ0NBQWdDO1lBQzFELEdBQUcsaUJBQWlCO2lCQUNqQixNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDakIsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7Z0JBQ25HLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDL0QsQ0FBQyxDQUFDO2lCQUNELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7U0FDaEMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVPLG1CQUFtQixDQUN6QixVQUF5QyxFQUN6QyxPQUEwQixFQUMxQixlQUF5QjtRQUV6QixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQzNGLE9BQU8sT0FBTyxDQUFDLFFBQVEsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbEYsQ0FBQztJQUVPLCtCQUErQixDQUFDLE9BQXFCLEVBQUUsV0FBc0I7UUFDbkYsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUMxRSxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQ3RCLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ2xCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUMvQixNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtnQkFDcEcsT0FBTyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNoRSxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsQ0FBQztZQUM5QyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUNuRCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFBO0lBQzFDLENBQUM7K0dBenJCVSxxQkFBcUIsa0JBbVN0QixTQUFTLGtMQU9ULHNCQUFzQjttR0ExU3JCLHFCQUFxQiw4c1JBeVFmLGFBQWEsK0RBUWhCLGFBQWEsdUVDelY3QixpbFpBNFFBOzs0RkRwTWEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG9CQUFvQjs7MEJBdVMzQixNQUFNOzJCQUFDLFNBQVM7OzBCQU9oQixNQUFNOzJCQUFDLHNCQUFzQjs7MEJBQUcsUUFBUTt5Q0F6U2xDLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0YsU0FBUztzQkFEWixLQUFLO2dCQVdGLFFBQVE7c0JBRFgsS0FBSztnQkFTRixhQUFhO3NCQURoQixLQUFLO2dCQUtHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFHRixjQUFjO3NCQURqQixLQUFLO2dCQU9HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUYsT0FBTztzQkFEVixLQUFLO2dCQVlHLElBQUk7c0JBQVosS0FBSztnQkFFRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csc0NBQXNDO3NCQUE5QyxLQUFLO2dCQWVGLElBQUk7c0JBRFAsS0FBSztnQkF1QkYsT0FBTztzQkFEVixLQUFLO2dCQWNGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBWUYsU0FBUztzQkFEWixLQUFLO2dCQVFHLDZCQUE2QjtzQkFBckMsS0FBSztnQkFDaUMsa0NBQWtDO3NCQUF4RSxZQUFZO3VCQUFDLHVCQUF1QjtnQkFLNUIsNkJBQTZCO3NCQUFyQyxLQUFLO2dCQUNpQyxrQ0FBa0M7c0JBQXhFLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUs1QixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ29CLHFCQUFxQjtzQkFBOUMsWUFBWTt1QkFBQyxVQUFVO2dCQUtmLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDb0IscUJBQXFCO3NCQUE5QyxZQUFZO3VCQUFDLFVBQVU7Z0JBS2YsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNxQixzQkFBc0I7c0JBQWhELFlBQVk7dUJBQUMsV0FBVztnQkFLaEIsK0JBQStCO3NCQUF2QyxLQUFLO2dCQUNtQyxvQ0FBb0M7c0JBQTVFLFlBQVk7dUJBQUMseUJBQXlCO2dCQUs5Qix1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQzJCLDRCQUE0QjtzQkFBNUQsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBS3RCLDZCQUE2QjtzQkFBckMsS0FBSztnQkFDaUMsa0NBQWtDO3NCQUF4RSxZQUFZO3VCQUFDLHVCQUF1QjtnQkFTNUIsdUJBQXVCO3NCQUEvQixLQUFLO2dCQU0yQiw0QkFBNEI7c0JBQTVELFlBQVk7dUJBQUMsaUJBQWlCO2dCQUt0Qix1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQzJCLDRCQUE0QjtzQkFBNUQsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBS3RCLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDeUIsMEJBQTBCO3NCQUF4RCxZQUFZO3VCQUFDLGVBQWU7Z0JBV3pCLGlCQUFpQjtzQkFEcEIsS0FBSztnQkFRSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQWdDSCxTQUFTO3NCQURaLGVBQWU7dUJBQUMsYUFBYTtnQkFTMUIsYUFBYTtzQkFEaEIsWUFBWTt1QkFBQyxhQUFhO2dCQVN2QixlQUFlO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERvQ2hlY2ssXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgaW5wdXQsXG4gIElucHV0LFxuICBMT0NBTEVfSUQsXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJ1xuaW1wb3J0IHsgTGl2ZUFubm91bmNlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5J1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnQG9uZWN4L2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlJ1xuaW1wb3J0IHsgTWZlSW5mbyB9IGZyb20gJ0BvbmVjeC9pbnRlZ3JhdGlvbi1pbnRlcmZhY2UnXG5pbXBvcnQgeyBNZW51SXRlbSwgUHJpbWVJY29ucywgUHJpbWVUZW1wbGF0ZSB9IGZyb20gJ3ByaW1lbmcvYXBpJ1xuaW1wb3J0IHsgTWVudSB9IGZyb20gJ3ByaW1lbmcvbWVudSdcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBmaXJzdCxcbiAgZmlyc3RWYWx1ZUZyb20sXG4gIG1hcCxcbiAgbWVyZ2VNYXAsXG4gIG9mLFxuICBzd2l0Y2hNYXAsXG59IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBDb2x1bW5UeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWwvY29sdW1uLXR5cGUubW9kZWwnXG5pbXBvcnQgeyBEYXRhQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGF0YS1hY3Rpb24nXG5pbXBvcnQgeyBEYXRhU29ydERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVsL2RhdGEtc29ydC1kaXJlY3Rpb24nXG5pbXBvcnQgeyBEYXRhVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRhLXRhYmxlLWNvbHVtbi5tb2RlbCdcbmltcG9ydCB7IE9iamVjdFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvb2JqZWN0dXRpbHMnXG5pbXBvcnQgeyBEYXRhU29ydEJhc2UgfSBmcm9tICcuLi9kYXRhLXNvcnQtYmFzZS9kYXRhLXNvcnQtYmFzZSdcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9tb2RlbC9maWx0ZXIubW9kZWwnXG5pbXBvcnQgeyBIQVNfUEVSTUlTU0lPTl9DSEVDS0VSLCBIYXNQZXJtaXNzaW9uQ2hlY2tlciB9IGZyb20gJ0BvbmVjeC9hbmd1bGFyLXV0aWxzJ1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCdcblxuZXhwb3J0IHR5cGUgTGlzdEdyaWREYXRhID0ge1xuICBpZDogc3RyaW5nIHwgbnVtYmVyXG4gIGltYWdlUGF0aDogc3RyaW5nIHwgbnVtYmVyXG4gIFtjb2x1bW5JZDogc3RyaW5nXTogdW5rbm93blxufVxuXG50eXBlIFJvd0xpc3RHcmlkRGF0YSA9IExpc3RHcmlkRGF0YSAmIFJvd1xuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RHcmlkRGF0YU1lbnVJdGVtIGV4dGVuZHMgTWVudUl0ZW0ge1xuICBwZXJtaXNzaW9uOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhTGlzdEdyaWRDb21wb25lbnRTdGF0ZSB7XG4gIGFjdGl2ZVBhZ2U/OiBudW1iZXJcbiAgcGFnZVNpemU/OiBudW1iZXJcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2N4LWRhdGEtbGlzdC1ncmlkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtbGlzdC1ncmlkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS1saXN0LWdyaWQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUxpc3RHcmlkQ29tcG9uZW50IGV4dGVuZHMgRGF0YVNvcnRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrLCBBZnRlckNvbnRlbnRJbml0IHtcbiAgQElucHV0KCkgdGl0bGVMaW5lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBzdWJ0aXRsZUxpbmVJZHM6IHN0cmluZ1tdID0gW11cbiAgQElucHV0KCkgY2xpZW50U2lkZVNvcnRpbmcgPSB0cnVlXG4gIEBJbnB1dCgpIGNsaWVudFNpZGVGaWx0ZXJpbmcgPSB0cnVlXG4gIEBJbnB1dCgpIHNvcnRTdGF0ZXM6IERhdGFTb3J0RGlyZWN0aW9uW10gPSBbXVxuXG4gIGRpc3BsYXllZFBhZ2VTaXplcyQ6IE9ic2VydmFibGU8KG51bWJlciB8IHsgc2hvd0FsbDogc3RyaW5nIH0pW10+XG4gIF9wYWdlU2l6ZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDwobnVtYmVyIHwgeyBzaG93QWxsOiBzdHJpbmcgfSlbXT4oWzEwLCAyNSwgNTBdKVxuICBASW5wdXQoKVxuICBnZXQgcGFnZVNpemVzKCk6IChudW1iZXIgfCB7IHNob3dBbGw6IHN0cmluZyB9KVtdIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZVNpemVzJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IHBhZ2VTaXplcyh2YWx1ZTogKG51bWJlciB8IHsgc2hvd0FsbDogc3RyaW5nIH0pW10pIHtcbiAgICB0aGlzLl9wYWdlU2l6ZXMkLm5leHQodmFsdWUpXG4gIH1cblxuICBkaXNwbGF5ZWRQYWdlU2l6ZSQ6IE9ic2VydmFibGU8bnVtYmVyPlxuICBfcGFnZVNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgQElucHV0KClcbiAgZ2V0IHBhZ2VTaXplKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VTaXplJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IHBhZ2VTaXplKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9wYWdlU2l6ZSQubmV4dCh2YWx1ZSlcbiAgfVxuICBfc2hvd0FsbE9wdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICBASW5wdXQoKVxuICBzZXQgc2hvd0FsbE9wdGlvbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dBbGxPcHRpb24kLm5leHQodmFsdWUpXG4gIH1cblxuICBASW5wdXQoKSBlbXB0eVJlc3VsdHNNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZmFsbGJhY2tJbWFnZSA9ICdwbGFjZWhvbGRlci5wbmcnXG4gIEBJbnB1dCgpIGxheW91dDogJ2dyaWQnIHwgJ2xpc3QnID0gJ2dyaWQnXG4gIF92aWV3UGVybWlzc2lvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIEBJbnB1dCgpXG4gIGdldCB2aWV3UGVybWlzc2lvbigpOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdQZXJtaXNzaW9uJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IHZpZXdQZXJtaXNzaW9uKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3ZpZXdQZXJtaXNzaW9uJC5uZXh0KHZhbHVlKVxuICB9XG4gIEBJbnB1dCgpIGVkaXRQZXJtaXNzaW9uOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBkZWxldGVQZXJtaXNzaW9uOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBkZWxldGVBY3Rpb25WaXNpYmxlRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBkZWxldGVBY3Rpb25FbmFibGVkRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSB2aWV3QWN0aW9uVmlzaWJsZUZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdmlld0FjdGlvbkVuYWJsZWRGaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGVkaXRBY3Rpb25WaXNpYmxlRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBlZGl0QWN0aW9uRW5hYmxlZEZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdmlld01lbnVJdGVtS2V5OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZWRpdE1lbnVJdGVtS2V5OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZGVsZXRlTWVudUl0ZW1LZXk6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBwYWdpbmF0b3IgPSB0cnVlXG4gIEBJbnB1dCgpIHBhZ2UgPSAwXG4gIGNvbHVtblRlbXBsYXRlcyQ6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgVGVtcGxhdGVSZWY8YW55PiB8IG51bGw+PiB8IHVuZGVmaW5lZFxuICBfY29sdW1ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGFUYWJsZUNvbHVtbltdPihbXSlcbiAgQElucHV0KClcbiAgZ2V0IGNvbHVtbnMoKTogRGF0YVRhYmxlQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGNvbHVtbnModmFsdWU6IERhdGFUYWJsZUNvbHVtbltdKSB7XG4gICAgdGhpcy5fY29sdW1ucyQubmV4dCh2YWx1ZSlcbiAgICBjb25zdCBvYnMgPSB2YWx1ZS5tYXAoKGMpID0+IHRoaXMuZ2V0VGVtcGxhdGUoYykpXG4gICAgdGhpcy5jb2x1bW5UZW1wbGF0ZXMkID0gY29tYmluZUxhdGVzdChvYnMpLnBpcGUoXG4gICAgICBtYXAoKHZhbHVlcykgPT4gT2JqZWN0LmZyb21FbnRyaWVzKHZhbHVlLm1hcCgoYywgaSkgPT4gW2MuaWQsIHZhbHVlc1tpXV0pKSksXG4gICAgICBkZWJvdW5jZVRpbWUoNTApXG4gICAgKVxuICB9XG4gIEBJbnB1dCgpIG5hbWUgPSAnJ1xuICB0b3RhbFJlY29yZHNPblNlcnZlciA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBASW5wdXQoKSBjdXJyZW50UGFnZVNob3dpbmdLZXkgPSAnT0NYX0RBVEFfVEFCTEUuU0hPV0lORydcbiAgQElucHV0KCkgY3VycmVudFBhZ2VTaG93aW5nV2l0aFRvdGFsT25TZXJ2ZXJLZXkgPSAnT0NYX0RBVEFfVEFCTEUuU0hPV0lOR19XSVRIX1RPVEFMX09OX1NFUlZFUidcbiAgcGFyYW1zPSBjb21wdXRlZCgoKSA9PiB7ICAgIFxuICAgIHJldHVybiB7XG4gICAgICBjdXJyZW50UGFnZTogJ3tjdXJyZW50UGFnZX0nLFxuICAgICAgdG90YWxQYWdlczogJ3t0b3RhbFBhZ2VzfScsXG4gICAgICByb3dzOiAne3Jvd3N9JyxcbiAgICAgIGZpcnN0OiAne2ZpcnN0fScsXG4gICAgICBsYXN0OiAne2xhc3R9JyxcbiAgICAgIHRvdGFsUmVjb3JkczogJ3t0b3RhbFJlY29yZHN9JyxcbiAgICAgIHRvdGFsUmVjb3Jkc09uU2VydmVyOiB0aGlzLnRvdGFsUmVjb3Jkc09uU2VydmVyKClcbiAgICB9XG4gIH0pXG5cbiAgX2RhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSb3dMaXN0R3JpZERhdGFbXT4oW10pXG4gIEBJbnB1dCgpXG4gIGdldCBkYXRhKCk6IFJvd0xpc3RHcmlkRGF0YVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YSQuZ2V0VmFsdWUoKVxuICB9XG4gIHNldCBkYXRhKHZhbHVlOiBSb3dMaXN0R3JpZERhdGFbXSkge1xuICAgIGNvbnN0IHNob3VsZFJlc2V0UGFnZSA9IHRoaXMuX2RhdGEkLmdldFZhbHVlKCkubGVuZ3RoID4gdmFsdWUubGVuZ3RoXG4gICAgdGhpcy5fb3JpZ2luYWxEYXRhID0gWy4uLnZhbHVlXVxuICAgIHRoaXMuX2RhdGEkLm5leHQoWy4uLnZhbHVlXSlcbiAgICBpZiAoc2hvdWxkUmVzZXRQYWdlKSB7XG4gICAgICB0aGlzLnJlc2V0UGFnZSgpXG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFJlc3VsdHMgPSB2YWx1ZS5sZW5ndGhcbiAgICBjb25zdCBuZXdTdGF0dXMgPVxuICAgICAgY3VycmVudFJlc3VsdHMgPT09IDAgPyAnT0NYX0RBVEFfTElTVF9HUklELk5PX1NFQVJDSF9SRVNVTFRTX0ZPVU5EJyA6ICdPQ1hfREFUQV9MSVNUX0dSSUQuU0VBUkNIX1JFU1VMVFNfRk9VTkQnXG5cbiAgICBmaXJzdFZhbHVlRnJvbSh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KG5ld1N0YXR1cywgeyByZXN1bHRzOiBjdXJyZW50UmVzdWx0cyB9KSkudGhlbigodHJhbnNsYXRlZFRleHQ6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5saXZlQW5ub3VuY2VyLmFubm91bmNlKHRyYW5zbGF0ZWRUZXh0KVxuICAgIH0pXG4gIH1cblxuICBfZmlsdGVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbHRlcltdPihbXSlcbiAgQElucHV0KClcbiAgZ2V0IGZpbHRlcnMoKTogRmlsdGVyW10ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJzJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGZpbHRlcnModmFsdWU6IEZpbHRlcltdKSB7XG4gICAgY29uc3Qgc2hvdWxkUmVzZXRQYWdlID0gIWVxdWFsKHRoaXMuX2ZpbHRlcnMkLmdldFZhbHVlKCksIHZhbHVlKVxuICAgIHRoaXMuX2ZpbHRlcnMkLm5leHQodmFsdWUpXG4gICAgaWYgKHNob3VsZFJlc2V0UGFnZSkge1xuICAgICAgdGhpcy5yZXNldFBhZ2UoKVxuICAgIH1cbiAgfVxuICBfb3JpZ2luYWxEYXRhOiBSb3dMaXN0R3JpZERhdGFbXSA9IFtdXG4gIF9zb3J0RGlyZWN0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YVNvcnREaXJlY3Rpb24+KERhdGFTb3J0RGlyZWN0aW9uLk5PTkUpXG4gIEBJbnB1dCgpXG4gIGdldCBzb3J0RGlyZWN0aW9uKCk6IERhdGFTb3J0RGlyZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fc29ydERpcmVjdGlvbiQuZ2V0VmFsdWUoKVxuICB9XG4gIHNldCBzb3J0RGlyZWN0aW9uKHZhbHVlOiBEYXRhU29ydERpcmVjdGlvbikge1xuICAgIGlmICh2YWx1ZSA9PT0gRGF0YVNvcnREaXJlY3Rpb24uTk9ORSkge1xuICAgICAgdGhpcy5fZGF0YSQubmV4dChbLi4udGhpcy5fb3JpZ2luYWxEYXRhXSlcbiAgICB9XG4gICAgdGhpcy5fc29ydERpcmVjdGlvbiQubmV4dCh2YWx1ZSlcbiAgfVxuICBfc29ydEZpZWxkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJylcbiAgQElucHV0KClcbiAgZ2V0IHNvcnRGaWVsZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzPy5fc29ydEZpZWxkJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IHNvcnRGaWVsZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc29ydEZpZWxkJC5uZXh0KHZhbHVlKVxuICB9XG5cbiAgQElucHV0KCkgZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzJykgZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2dyaWRJdGVtU3VidGl0bGVMaW5lcygpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkSXRlbVN1YnRpdGxlTGluZXNUZW1wbGF0ZSB8fCB0aGlzLmdyaWRJdGVtU3VidGl0bGVMaW5lc0NoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIGxpc3RJdGVtU3VidGl0bGVMaW5lc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2xpc3RJdGVtU3VidGl0bGVMaW5lcycpIGxpc3RJdGVtU3VidGl0bGVMaW5lc0NoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9saXN0SXRlbVN1YnRpdGxlTGluZXMoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubGlzdEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGUgfHwgdGhpcy5saXN0SXRlbVN1YnRpdGxlTGluZXNDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSBsaXN0SXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2xpc3RJdGVtJykgbGlzdEl0ZW1DaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfbGlzdEl0ZW0oKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubGlzdEl0ZW1UZW1wbGF0ZSB8fCB0aGlzLmxpc3RJdGVtQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgZ3JpZEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdncmlkSXRlbScpIGdyaWRJdGVtQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2dyaWRJdGVtKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmdyaWRJdGVtVGVtcGxhdGUgfHwgdGhpcy5ncmlkSXRlbUNoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIGxpc3RWYWx1ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2xpc3RWYWx1ZScpIGxpc3RWYWx1ZUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9saXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubGlzdFZhbHVlVGVtcGxhdGUgfHwgdGhpcy5saXN0VmFsdWVDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSB0cmFuc2xhdGlvbktleUxpc3RWYWx1ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3RyYW5zbGF0aW9uS2V5TGlzdFZhbHVlJykgdHJhbnNsYXRpb25LZXlMaXN0VmFsdWVDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfdHJhbnNsYXRpb25LZXlMaXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25LZXlMaXN0VmFsdWVUZW1wbGF0ZSB8fCB0aGlzLnRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgbnVtYmVyTGlzdFZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnbnVtYmVyTGlzdFZhbHVlJykgbnVtYmVyTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX251bWJlckxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5udW1iZXJMaXN0VmFsdWVUZW1wbGF0ZSB8fCB0aGlzLm51bWJlckxpc3RWYWx1ZUNoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIHJlbGF0aXZlRGF0ZUxpc3RWYWx1ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3JlbGF0aXZlRGF0ZUxpc3RWYWx1ZScpIHJlbGF0aXZlRGF0ZUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9yZWxhdGl2ZURhdGVMaXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVsYXRpdmVEYXRlTGlzdFZhbHVlVGVtcGxhdGUgfHwgdGhpcy5yZWxhdGl2ZURhdGVMaXN0VmFsdWVDaGlsZFRlbXBsYXRlXG4gIH1cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVtb3ZlZCBhbmQgaW5zdGVhZCB0byBjaGFuZ2UgdGhlIHRlbXBsYXRlIG9mIGEgc3BlY2lmaWMgY29sdW1uXG4gICAqIHVzZSB0aGUgbmV3IGFwcHJvYWNoIGluc3RlYWQgYnkgZm9sbG93aW5nIHRoZSBuYW1pbmcgY29udmVudGlvbiBjb2x1bW4gaWQgKyBJZExpc3RWYWx1ZVxuICAgKiBlLmcuIGZvciBhIGNvbHVtbiB3aXRoIHRoZSBpZCAnc3RhdHVzJyB1c2UgcFRlbXBsYXRlPVwic3RhdHVzSWRMaXN0VmFsdWVcIlxuICAgKi9cbiAgQElucHV0KCkgY3VzdG9tTGlzdFZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVtb3ZlZCBhbmQgaW5zdGVhZCB0byBjaGFuZ2UgdGhlIHRlbXBsYXRlIG9mIGEgc3BlY2lmaWMgY29sdW1uXG4gICAqIHVzZSB0aGUgbmV3IGFwcHJvYWNoIGluc3RlYWQgYnkgZm9sbG93aW5nIHRoZSBuYW1pbmcgY29udmVudGlvbiBjb2x1bW4gaWQgKyBJZExpc3RWYWx1ZVxuICAgKiBlLmcuIGZvciBhIGNvbHVtbiB3aXRoIHRoZSBpZCAnc3RhdHVzJyB1c2UgcFRlbXBsYXRlPVwic3RhdHVzSWRMaXN0VmFsdWVcIlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZCgnY3VzdG9tTGlzdFZhbHVlJykgY3VzdG9tTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2N1c3RvbUxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jdXN0b21MaXN0VmFsdWVUZW1wbGF0ZSB8fCB0aGlzLmN1c3RvbUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIHN0cmluZ0xpc3RWYWx1ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3N0cmluZ0xpc3RWYWx1ZScpIHN0cmluZ0xpc3RWYWx1ZUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9zdHJpbmdMaXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nTGlzdFZhbHVlVGVtcGxhdGUgfHwgdGhpcy5zdHJpbmdMaXN0VmFsdWVDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSBkYXRlTGlzdFZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnZGF0ZUxpc3RWYWx1ZScpIGRhdGVMaXN0VmFsdWVDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfZGF0ZUxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlTGlzdFZhbHVlVGVtcGxhdGUgfHwgdGhpcy5kYXRlTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgaW5saW5lTGlzdEFjdGlvbnMkOiBPYnNlcnZhYmxlPERhdGFBY3Rpb25bXT5cbiAgb3ZlcmZsb3dMaXN0QWN0aW9ucyQ6IE9ic2VydmFibGU8RGF0YUFjdGlvbltdPlxuICBvdmVyZmxvd0xpc3RNZW51SXRlbXMkOiBPYnNlcnZhYmxlPE1lbnVJdGVtW10+XG4gIGN1cnJlbnRNZW51Um93JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Um93IHwgbnVsbD4obnVsbClcbiAgX2FkZGl0aW9uYWxBY3Rpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YUFjdGlvbltdPihbXSlcbiAgQElucHV0KClcbiAgZ2V0IGFkZGl0aW9uYWxBY3Rpb25zKCk6IERhdGFBY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZGl0aW9uYWxBY3Rpb25zJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGFkZGl0aW9uYWxBY3Rpb25zKHZhbHVlOiBEYXRhQWN0aW9uW10pIHtcbiAgICB0aGlzLl9hZGRpdGlvbmFsQWN0aW9ucyQubmV4dCh2YWx1ZSlcbiAgfVxuXG4gIEBPdXRwdXQoKSB2aWV3SXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdEdyaWREYXRhPigpXG4gIEBPdXRwdXQoKSBlZGl0SXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdEdyaWREYXRhPigpXG4gIEBPdXRwdXQoKSBkZWxldGVJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KClcbiAgQE91dHB1dCgpIHBhZ2VTaXplQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpXG4gIEBPdXRwdXQoKSBjb21wb25lbnRTdGF0ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFMaXN0R3JpZENvbXBvbmVudFN0YXRlPigpXG5cbiAgZ2V0IHZpZXdJdGVtT2JzZXJ2ZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZHYgPSB0aGlzLmluamVjdG9yLmdldCgnRGF0YVZpZXdDb21wb25lbnQnLCBudWxsKVxuICAgIHJldHVybiBkdj8udmlld0l0ZW1PYnNlcnZlZCB8fCBkdj8udmlld0l0ZW0ub2JzZXJ2ZWQgfHwgdGhpcy52aWV3SXRlbS5vYnNlcnZlZFxuICB9XG4gIGdldCBlZGl0SXRlbU9ic2VydmVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGR2ID0gdGhpcy5pbmplY3Rvci5nZXQoJ0RhdGFWaWV3Q29tcG9uZW50JywgbnVsbClcbiAgICByZXR1cm4gZHY/LmVkaXRJdGVtT2JzZXJ2ZWQgfHwgZHY/LmVkaXRJdGVtLm9ic2VydmVkIHx8IHRoaXMuZWRpdEl0ZW0ub2JzZXJ2ZWRcbiAgfVxuICBnZXQgZGVsZXRlSXRlbU9ic2VydmVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGR2ID0gdGhpcy5pbmplY3Rvci5nZXQoJ0RhdGFWaWV3Q29tcG9uZW50JywgbnVsbClcbiAgICByZXR1cm4gZHY/LmRlbGV0ZUl0ZW1PYnNlcnZlZCB8fCBkdj8uZGVsZXRlSXRlbS5vYnNlcnZlZCB8fCB0aGlzLmRlbGV0ZUl0ZW0ub2JzZXJ2ZWRcbiAgfVxuXG4gIGdldCBzb3J0RGlyZWN0aW9uTnVtYmVyKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuc29ydERpcmVjdGlvbiA9PT0gRGF0YVNvcnREaXJlY3Rpb24uQVNDRU5ESU5HKSByZXR1cm4gMVxuICAgIGlmICh0aGlzLnNvcnREaXJlY3Rpb24gPT09IERhdGFTb3J0RGlyZWN0aW9uLkRFU0NFTkRJTkcpIHJldHVybiAtMVxuICAgIHJldHVybiAwXG4gIH1cblxuICBncmlkTWVudUl0ZW1zJDogT2JzZXJ2YWJsZTxNZW51SXRlbVtdPlxuICBfc2VsZWN0ZWRJdGVtJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGlzdEdyaWREYXRhIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIG9ic2VydmVkT3V0cHV0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMClcblxuICBkaXNwbGF5ZWRJdGVtcyQ6IE9ic2VydmFibGU8dW5rbm93bltdPiB8IHVuZGVmaW5lZFxuICBmYWxsYmFja0ltYWdlUGF0aCQhOiBPYnNlcnZhYmxlPHN0cmluZz5cblxuICB0ZW1wbGF0ZXMkOiBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKVxuICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpXG4gIHNldCB0ZW1wbGF0ZXModmFsdWU6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudGVtcGxhdGVzJC5uZXh0KHZhbHVlKVxuICB9XG5cbiAgdmlld1RlbXBsYXRlcyQ6IEJlaGF2aW9yU3ViamVjdDxRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCB1bmRlZmluZWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpXG4gIEBWaWV3Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSlcbiAgc2V0IHZpZXdUZW1wbGF0ZXModmFsdWU6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudmlld1RlbXBsYXRlcyQubmV4dCh2YWx1ZSlcbiAgfVxuXG4gIHBhcmVudFRlbXBsYXRlcyQ6IEJlaGF2aW9yU3ViamVjdDxRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCBudWxsIHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgbnVsbCB8IHVuZGVmaW5lZFxuICA+KHVuZGVmaW5lZClcbiAgQElucHV0KClcbiAgc2V0IHBhcmVudFRlbXBsYXRlcyh2YWx1ZTogUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGFyZW50VGVtcGxhdGVzJC5uZXh0KHZhbHVlKVxuICB9XG5cbiAgY29sdW1uVHlwZSA9IENvbHVtblR5cGVcbiAgdGVtcGxhdGVzT2JzZXJ2YWJsZXM6IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+PiA9IHt9XG4gIGhhc1ZpZXdQZXJtaXNzaW9uJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTE9DQUxFX0lEKSBsb2NhbGU6IHN0cmluZyxcbiAgICB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZVNlcnZpY2U6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpdmVBbm5vdW5jZXI6IExpdmVBbm5vdW5jZXIsXG4gICAgQEluamVjdChIQVNfUEVSTUlTU0lPTl9DSEVDS0VSKSBAT3B0aW9uYWwoKSBwcml2YXRlIGhhc1Blcm1pc3Npb25DaGVja2VyPzogSGFzUGVybWlzc2lvbkNoZWNrZXJcbiAgKSB7XG4gICAgc3VwZXIobG9jYWxlLCB0cmFuc2xhdGVTZXJ2aWNlKVxuICAgIHRoaXMubmFtZSA9IHRoaXMubmFtZSB8fCB0aGlzLnJvdXRlci51cmwucmVwbGFjZSgvW15BLVphLXowLTldLywgJ18nKVxuICAgIHRoaXMuZmFsbGJhY2tJbWFnZVBhdGgkID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudE1mZSQucGlwZShcbiAgICAgIG1hcCgoY3VycmVudE1mZSkgPT4gdGhpcy5nZXRGYWxsYmFja0ltYWdlUGF0aChjdXJyZW50TWZlKSlcbiAgICApXG4gICAgdGhpcy5kaXNwbGF5ZWRQYWdlU2l6ZXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLl9wYWdlU2l6ZXMkLFxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCgnT0NYX0RBVEFfVEFCTEUuQUxMJyksXG4gICAgICB0aGlzLl9zaG93QWxsT3B0aW9uJCxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbcGFnZVNpemVzLCB0cmFuc2xhdGlvbiwgc2hvd0FsbE9wdGlvbl0pID0+XG4gICAgICAgIHNob3dBbGxPcHRpb24gPyBwYWdlU2l6ZXMuY29uY2F0KHsgc2hvd0FsbDogdHJhbnNsYXRpb24gfSkgOiBwYWdlU2l6ZXNcbiAgICAgIClcbiAgICApXG4gICAgdGhpcy5kaXNwbGF5ZWRQYWdlU2l6ZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9wYWdlU2l6ZSQsIHRoaXMuX3BhZ2VTaXplcyRdKS5waXBlKFxuICAgICAgbWFwKChbcGFnZVNpemUsIHBhZ2VTaXplc10pID0+IHBhZ2VTaXplID8/IHBhZ2VTaXplcy5maW5kKCh2YWwpOiB2YWwgaXMgbnVtYmVyID0+IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSA/PyA1MClcbiAgICApXG4gICAgdGhpcy5pbmxpbmVMaXN0QWN0aW9ucyQgPSB0aGlzLl9hZGRpdGlvbmFsQWN0aW9ucyQucGlwZShcbiAgICAgIG1hcCgoYWN0aW9ucykgPT4gYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gIWFjdGlvbi5zaG93QXNPdmVyZmxvdykpXG4gICAgKVxuICAgIHRoaXMub3ZlcmZsb3dMaXN0QWN0aW9ucyQgPSB0aGlzLl9hZGRpdGlvbmFsQWN0aW9ucyQucGlwZShcbiAgICAgIG1hcCgoYWN0aW9ucykgPT4gYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLnNob3dBc092ZXJmbG93KSlcbiAgICApXG4gICAgdGhpcy5vdmVyZmxvd0xpc3RNZW51SXRlbXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5vdmVyZmxvd0xpc3RBY3Rpb25zJCwgdGhpcy5jdXJyZW50TWVudVJvdyRdKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChbYWN0aW9ucywgcm93XSkgPT5cbiAgICAgICAgdGhpcy5maWx0ZXJBY3Rpb25zQmFzZWRPblBlcm1pc3Npb25zKGFjdGlvbnMpLnBpcGUoXG4gICAgICAgICAgbWFwKChwZXJtaXR0ZWRBY3Rpb25zKSA9PiAoeyBhY3Rpb25zOiBwZXJtaXR0ZWRBY3Rpb25zLCByb3c6IHJvdyB9KSlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIG1lcmdlTWFwKCh7IGFjdGlvbnMsIHJvdyB9KSA9PiB7XG4gICAgICAgIGlmIChhY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBvZihbXSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChbLi4uYWN0aW9ucy5tYXAoKGEpID0+IGEubGFiZWxLZXkgfHwgJycpXSkucGlwZShcbiAgICAgICAgICBtYXAoKHRyYW5zbGF0aW9ucykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbnMubWFwKChhKSA9PiAoe1xuICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRpb25zW2EubGFiZWxLZXkgfHwgJyddLFxuICAgICAgICAgICAgICBpY29uOiBhLmljb24sXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M6IChhLmNsYXNzZXMgfHwgW10pLmpvaW4oJyAnKSxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGEuZGlzYWJsZWQgfHwgKCEhYS5hY3Rpb25FbmFibGVkRmllbGQgJiYgIXRoaXMuZmllbGRJc1RydXRoeShyb3csIGEuYWN0aW9uRW5hYmxlZEZpZWxkKSksXG4gICAgICAgICAgICAgIHZpc2libGU6ICFhLmFjdGlvblZpc2libGVGaWVsZCB8fCB0aGlzLmZpZWxkSXNUcnV0aHkocm93LCBhLmFjdGlvblZpc2libGVGaWVsZCksXG4gICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IGEuY2FsbGJhY2socm93KSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgKVxuICAgIHRoaXMuaGFzVmlld1Blcm1pc3Npb24kID0gdGhpcy5fdmlld1Blcm1pc3Npb24kLnBpcGUoXG4gICAgICBtYXAoKHBlcm1pc3Npb24pID0+IHtcbiAgICAgICAgaWYgKCFwZXJtaXNzaW9uKSByZXR1cm4gW11cbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocGVybWlzc2lvbikgPyBwZXJtaXNzaW9uIDogW3Blcm1pc3Npb25dXG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgocGVybWlzc2lvbkFycmF5KSA9PiB7XG4gICAgICAgIGlmIChwZXJtaXNzaW9uQXJyYXkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHRydWUpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGVybWlzc2lvbnMoKS5waXBlKG1hcCgocGVybWlzc2lvbnMpID0+IHBlcm1pc3Npb25BcnJheS5ldmVyeSgocCkgPT4gcGVybWlzc2lvbnMuaW5jbHVkZXMocCkpKSlcbiAgICAgIH0pXG4gICAgKVxuXG4gICAgdGhpcy5ncmlkTWVudUl0ZW1zJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5nZXRQZXJtaXNzaW9ucygpLFxuICAgICAgdGhpcy5fYWRkaXRpb25hbEFjdGlvbnMkLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtJC5hc09ic2VydmFibGUoKSxcbiAgICAgIHRoaXMub2JzZXJ2ZWRPdXRwdXRzJC5hc09ic2VydmFibGUoKSxcbiAgICBdKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChbcGVybWlzc2lvbnMsIGFkZGl0aW9uYWxBY3Rpb25zLCBzZWxlY3RlZEl0ZW0sIF9vYnNlcnZlZE91dHB1dHNdKSA9PlxuICAgICAgICB0aGlzLmZpbHRlckFjdGlvbnNCYXNlZE9uUGVybWlzc2lvbnMoYWRkaXRpb25hbEFjdGlvbnMsIHBlcm1pc3Npb25zKS5waXBlKFxuICAgICAgICAgIG1hcCgocGVybWl0dGVkQWN0aW9ucykgPT4gKHsgcGVybWlzc2lvbnMsIGFkZGl0aW9uYWxBY3Rpb25zOiBwZXJtaXR0ZWRBY3Rpb25zLCBzZWxlY3RlZEl0ZW0gfSkpXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICBzd2l0Y2hNYXAoKHsgcGVybWlzc2lvbnMsIGFkZGl0aW9uYWxBY3Rpb25zLCBzZWxlY3RlZEl0ZW0gfSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRHcmlkQWN0aW9uc1RyYW5zbGF0aW9ucyhhZGRpdGlvbmFsQWN0aW9ucywgcGVybWlzc2lvbnMpLnBpcGUoXG4gICAgICAgICAgbWFwKCh0cmFuc2xhdGlvbnMpID0+ICh7IHBlcm1pc3Npb25zLCBhZGRpdGlvbmFsQWN0aW9ucywgc2VsZWN0ZWRJdGVtLCB0cmFuc2xhdGlvbnMgfSkpXG4gICAgICAgIClcbiAgICAgIH0pLFxuICAgICAgbWFwKCh7IHBlcm1pc3Npb25zLCBhZGRpdGlvbmFsQWN0aW9ucywgc2VsZWN0ZWRJdGVtLCB0cmFuc2xhdGlvbnMgfSkgPT5cbiAgICAgICAgdGhpcy5tYXBHcmlkTWVudUl0ZW1zKHBlcm1pc3Npb25zLCBhZGRpdGlvbmFsQWN0aW9ucywgc2VsZWN0ZWRJdGVtLCB0cmFuc2xhdGlvbnMpXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IG9ic2VydmVkT3V0cHV0cyA9IDxhbnk+dGhpcy52aWV3SXRlbS5vYnNlcnZlZCArIDxhbnk+dGhpcy5kZWxldGVJdGVtLm9ic2VydmVkICsgPGFueT50aGlzLmVkaXRJdGVtLm9ic2VydmVkXG4gICAgaWYgKHRoaXMub2JzZXJ2ZWRPdXRwdXRzJC5nZXRWYWx1ZSgpICE9PSBvYnNlcnZlZE91dHB1dHMpIHtcbiAgICAgIHRoaXMub2JzZXJ2ZWRPdXRwdXRzJC5uZXh0KG9ic2VydmVkT3V0cHV0cylcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXllZEl0ZW1zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2RhdGEkLCB0aGlzLl9maWx0ZXJzJCwgdGhpcy5fc29ydEZpZWxkJCwgdGhpcy5fc29ydERpcmVjdGlvbiRdKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHBhcmFtcykgPT4gdGhpcy50cmFuc2xhdGVJdGVtcyhwYXJhbXMsIHRoaXMuY29sdW1ucywgdGhpcy5jbGllbnRTaWRlRmlsdGVyaW5nLCB0aGlzLmNsaWVudFNpZGVTb3J0aW5nKSksXG4gICAgICBtYXAoKHBhcmFtcykgPT4gdGhpcy5maWx0ZXJJdGVtcyhwYXJhbXMsIHRoaXMuY2xpZW50U2lkZUZpbHRlcmluZykpLFxuICAgICAgbWFwKChwYXJhbXMpID0+IHRoaXMuc29ydEl0ZW1zKHBhcmFtcywgdGhpcy5jb2x1bW5zLCB0aGlzLmNsaWVudFNpZGVTb3J0aW5nKSksXG4gICAgICBtYXAoKFtpdGVtc10pID0+IGl0ZW1zKVxuICAgIClcblxuICAgIHRoaXMuZW1pdENvbXBvbmVudFN0YXRlQ2hhbmdlZCgpXG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy50ZW1wbGF0ZXMkLnZhbHVlPy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgIGNhc2UgJ2xpc3RWYWx1ZSc6XG4gICAgICAgICAgdGhpcy5saXN0VmFsdWVDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3RyYW5zbGF0aW9uS2V5TGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdudW1iZXJMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMubnVtYmVyTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdyZWxhdGl2ZURhdGVMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMucmVsYXRpdmVEYXRlTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdjdXN0b21MaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMuY3VzdG9tTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdzdHJpbmdMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMuc3RyaW5nTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdkYXRlTGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLmRhdGVMaXN0VmFsdWVDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIG9uRGVsZXRlUm93KGVsZW1lbnQ6IExpc3RHcmlkRGF0YSkge1xuICAgIHRoaXMuZGVsZXRlSXRlbS5lbWl0KGVsZW1lbnQpXG4gIH1cblxuICBvblZpZXdSb3coZWxlbWVudDogTGlzdEdyaWREYXRhKSB7XG4gICAgdGhpcy52aWV3SXRlbS5lbWl0KGVsZW1lbnQpXG4gIH1cblxuICBvbkVkaXRSb3coZWxlbWVudDogTGlzdEdyaWREYXRhKSB7XG4gICAgdGhpcy5lZGl0SXRlbS5lbWl0KGVsZW1lbnQpXG4gIH1cblxuICBpbWdFcnJvcihpdGVtOiBMaXN0R3JpZERhdGEpIHtcbiAgICBpdGVtLmltYWdlUGF0aCA9ICcnXG4gIH1cblxuICBnZXRGYWxsYmFja0ltYWdlUGF0aChtZmVJbmZvOiBNZmVJbmZvKSB7XG4gICAgcmV0dXJuIG1mZUluZm8/LnJlbW90ZUJhc2VVcmxcbiAgICAgID8gYCR7bWZlSW5mby5yZW1vdGVCYXNlVXJsfS9vbmVjeC1wb3J0YWwtbGliL2Fzc2V0cy9pbWFnZXMvJHt0aGlzLmZhbGxiYWNrSW1hZ2V9YFxuICAgICAgOiBgLi9vbmVjeC1wb3J0YWwtbGliL2Fzc2V0cy9pbWFnZXMvJHt0aGlzLmZhbGxiYWNrSW1hZ2V9YFxuICB9XG5cbiAgc2V0U2VsZWN0ZWRJdGVtKGl0ZW06IExpc3RHcmlkRGF0YSkge1xuICAgIHRoaXMuX3NlbGVjdGVkSXRlbSQubmV4dChpdGVtKVxuICB9XG5cbiAgcmVzb2x2ZUZpZWxkRGF0YShvYmplY3Q6IGFueSwga2V5OiBhbnkpIHtcbiAgICByZXR1cm4gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShvYmplY3QsIGtleSlcbiAgfVxuXG4gIGVtaXRDb21wb25lbnRTdGF0ZUNoYW5nZWQoc3RhdGU6IERhdGFMaXN0R3JpZENvbXBvbmVudFN0YXRlID0ge30pIHtcbiAgICB0aGlzLmRpc3BsYXllZFBhZ2VTaXplJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgocGFnZVNpemUpID0+IHtcbiAgICAgIHRoaXMuY29tcG9uZW50U3RhdGVDaGFuZ2VkLmVtaXQoe1xuICAgICAgICBwYWdlU2l6ZSxcbiAgICAgICAgYWN0aXZlUGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIG9uUGFnZUNoYW5nZShldmVudDogYW55KSB7XG4gICAgY29uc3QgcGFnZSA9IGV2ZW50LmZpcnN0IC8gZXZlbnQucm93c1xuICAgIHRoaXMucGFnZSA9IHBhZ2VcbiAgICB0aGlzLnBhZ2VTaXplID0gZXZlbnQucm93c1xuICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdChwYWdlKVxuICAgIHRoaXMucGFnZVNpemVDaGFuZ2VkLmVtaXQoZXZlbnQucm93cylcbiAgICB0aGlzLmVtaXRDb21wb25lbnRTdGF0ZUNoYW5nZWQoe1xuICAgICAgYWN0aXZlUGFnZTogcGFnZSxcbiAgICAgIHBhZ2VTaXplOiBldmVudC5yb3dzLFxuICAgIH0pXG4gIH1cblxuICByZXNldFBhZ2UoKSB7XG4gICAgdGhpcy5wYWdlID0gMFxuICAgIHRoaXMucGFnZUNoYW5nZWQuZW1pdCh0aGlzLnBhZ2UpXG4gICAgdGhpcy5lbWl0Q29tcG9uZW50U3RhdGVDaGFuZ2VkKClcbiAgfVxuXG4gIGZpZWxkSXNUcnV0aHkob2JqZWN0OiBhbnksIGtleTogYW55KSB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlRmllbGREYXRhKG9iamVjdCwga2V5KVxuICB9XG5cbiAgaGFzVmlzaWJsZU92ZXJmbG93TWVudUl0ZW1zKHJvdzogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMub3ZlcmZsb3dMaXN0QWN0aW9ucyQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoYWN0aW9ucykgPT4gdGhpcy5maWx0ZXJBY3Rpb25zQmFzZWRPblBlcm1pc3Npb25zKGFjdGlvbnMpKSxcbiAgICAgIG1hcCgoYWN0aW9ucykgPT4gYWN0aW9ucy5zb21lKChhKSA9PiAhYS5hY3Rpb25WaXNpYmxlRmllbGQgfHwgdGhpcy5maWVsZElzVHJ1dGh5KHJvdywgYS5hY3Rpb25WaXNpYmxlRmllbGQpKSlcbiAgICApXG4gIH1cblxuICB0b2dnbGVPdmVyZmxvd01lbnUoZXZlbnQ6IE1vdXNlRXZlbnQsIG1lbnU6IE1lbnUsIHJvdzogUm93KSB7XG4gICAgdGhpcy5jdXJyZW50TWVudVJvdyQubmV4dChyb3cpXG4gICAgbWVudS50b2dnbGUoZXZlbnQpXG4gIH1cblxuICBnZXRGaWx0ZXJlZENvbHVtbnMoKSB7XG4gICAgbGV0IGlkczogc3RyaW5nW10gPSBbLi4uKHRoaXMuc3VidGl0bGVMaW5lSWRzID8/IFtdKV1cbiAgICBpZiAodGhpcy50aXRsZUxpbmVJZCkge1xuICAgICAgaWRzID0gW3RoaXMudGl0bGVMaW5lSWQsIC4uLih0aGlzLnN1YnRpdGxlTGluZUlkcyA/PyBbXSldXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmlsdGVyKChjKSA9PiAhaWRzLmluY2x1ZGVzKGMuaWQpKVxuICB9XG5cbiAgZmluZFRlbXBsYXRlKHRlbXBsYXRlczogUHJpbWVUZW1wbGF0ZVtdLCBuYW1lczogc3RyaW5nW10pOiBQcmltZVRlbXBsYXRlIHwgdW5kZWZpbmVkIHtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBuYW1lID0gbmFtZXNbaW5kZXhdXG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRlbXBsYXRlcy5maW5kKCh0ZW1wbGF0ZSkgPT4gdGVtcGxhdGUubmFtZSA9PT0gbmFtZSlcbiAgICAgIGlmICh0ZW1wbGF0ZSkge1xuICAgICAgICByZXR1cm4gdGVtcGxhdGVcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgZ2V0VGVtcGxhdGUoY29sdW1uOiBEYXRhVGFibGVDb2x1bW4pOiBPYnNlcnZhYmxlPFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPiB7XG4gICAgaWYgKCF0aGlzLnRlbXBsYXRlc09ic2VydmFibGVzW2NvbHVtbi5pZF0pIHtcbiAgICAgIHRoaXMudGVtcGxhdGVzT2JzZXJ2YWJsZXNbY29sdW1uLmlkXSA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLnRlbXBsYXRlcyQsXG4gICAgICAgIHRoaXMudmlld1RlbXBsYXRlcyQsXG4gICAgICAgIHRoaXMucGFyZW50VGVtcGxhdGVzJCxcbiAgICAgIF0pLnBpcGUoXG4gICAgICAgIG1hcCgoW3QsIHZ0LCBwdF0pID0+IHtcbiAgICAgICAgICBjb25zdCB0ZW1wbGF0ZXMgPSBbLi4uKHQgPz8gW10pLCAuLi4odnQgPz8gW10pLCAuLi4ocHQgPz8gW10pXVxuICAgICAgICAgIGNvbnN0IGNvbHVtblRlbXBsYXRlID0gdGVtcGxhdGVzLmZpbmQoKHRlbXBsYXRlKSA9PiB0ZW1wbGF0ZS5uYW1lID09PSBjb2x1bW4uaWQgKyAnSWRMaXN0VmFsdWUnKT8udGVtcGxhdGVcbiAgICAgICAgICBpZiAoY29sdW1uVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5UZW1wbGF0ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBzd2l0Y2ggKGNvbHVtbi5jb2x1bW5UeXBlKSB7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGUuREFURTpcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRlTGlzdFZhbHVlID8/XG4gICAgICAgICAgICAgICAgdGhpcy5maW5kVGVtcGxhdGUodGVtcGxhdGVzLCBbJ2RhdGVMaXN0VmFsdWUnLCAnZGVmYXVsdERhdGVMaXN0VmFsdWUnXSk/LnRlbXBsYXRlID8/XG4gICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGUuTlVNQkVSOlxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuX251bWJlckxpc3RWYWx1ZSA/P1xuICAgICAgICAgICAgICAgIHRoaXMuZmluZFRlbXBsYXRlKHRlbXBsYXRlcywgWydudW1iZXJMaXN0VmFsdWUnLCAnZGVmYXVsdE51bWJlckxpc3RWYWx1ZSddKT8udGVtcGxhdGUgPz9cbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZS5SRUxBVElWRV9EQVRFOlxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuX3JlbGF0aXZlRGF0ZUxpc3RWYWx1ZSA/P1xuICAgICAgICAgICAgICAgIHRoaXMuZmluZFRlbXBsYXRlKHRlbXBsYXRlcywgWydyZWxhdGl2ZURhdGVMaXN0VmFsdWUnLCAnZGVmYXVsdFJlbGF0aXZlRGF0ZUxpc3RWYWx1ZSddKT8udGVtcGxhdGUgPz9cbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZS5UUkFOU0xBVElPTl9LRVk6XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRpb25LZXlMaXN0VmFsdWUgPz9cbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRUZW1wbGF0ZSh0ZW1wbGF0ZXMsIFsndHJhbnNsYXRpb25LZXlMaXN0VmFsdWUnLCAnZGVmYXVsdFRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlJ10pPy50ZW1wbGF0ZSA/P1xuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlLkNVU1RPTTpcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLl9jdXN0b21MaXN0VmFsdWUgPz9cbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRUZW1wbGF0ZSh0ZW1wbGF0ZXMsIFsnY3VzdG9tTGlzdFZhbHVlJywgJ2RlZmF1bHRDdXN0b21MaXN0VmFsdWUnXSk/LnRlbXBsYXRlID8/XG4gICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuX3N0cmluZ0xpc3RWYWx1ZSA/P1xuICAgICAgICAgICAgICAgIHRoaXMuZmluZFRlbXBsYXRlKHRlbXBsYXRlcywgWydzdHJpbmdMaXN0VmFsdWUnLCAnZGVmYXVsdFN0cmluZ0xpc3RWYWx1ZSddKT8udGVtcGxhdGUgPz9cbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlc09ic2VydmFibGVzW2NvbHVtbi5pZF1cbiAgfVxuXG4gIHByaXZhdGUgbWFwR3JpZE1lbnVJdGVtcyhcbiAgICBwZXJtaXNzaW9uczogc3RyaW5nW10sXG4gICAgYWRkaXRpb25hbEFjdGlvbnM6IERhdGFBY3Rpb25bXSxcbiAgICBzZWxlY3RlZEl0ZW06IExpc3RHcmlkRGF0YSB8IHVuZGVmaW5lZCxcbiAgICB0cmFuc2xhdGlvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgKTogTWVudUl0ZW1bXSB7XG4gICAgbGV0IGRlbGV0ZURpc2FibGVkID0gZmFsc2VcbiAgICBsZXQgZWRpdERpc2FibGVkID0gZmFsc2VcbiAgICBsZXQgdmlld0Rpc2FibGVkID0gZmFsc2VcblxuICAgIGxldCBkZWxldGVWaXNpYmxlID0gdHJ1ZVxuICAgIGxldCBlZGl0VmlzaWJsZSA9IHRydWVcbiAgICBsZXQgdmlld1Zpc2libGUgPSB0cnVlXG5cbiAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICB2aWV3RGlzYWJsZWQgPSAhIXRoaXMudmlld0FjdGlvbkVuYWJsZWRGaWVsZCAmJiAhdGhpcy5maWVsZElzVHJ1dGh5KHNlbGVjdGVkSXRlbSwgdGhpcy52aWV3QWN0aW9uRW5hYmxlZEZpZWxkKVxuICAgICAgZWRpdERpc2FibGVkID0gISF0aGlzLmVkaXRBY3Rpb25FbmFibGVkRmllbGQgJiYgIXRoaXMuZmllbGRJc1RydXRoeShzZWxlY3RlZEl0ZW0sIHRoaXMuZWRpdEFjdGlvbkVuYWJsZWRGaWVsZClcbiAgICAgIGRlbGV0ZURpc2FibGVkID1cbiAgICAgICAgISF0aGlzLmRlbGV0ZUFjdGlvbkVuYWJsZWRGaWVsZCAmJiAhdGhpcy5maWVsZElzVHJ1dGh5KHNlbGVjdGVkSXRlbSwgdGhpcy5kZWxldGVBY3Rpb25FbmFibGVkRmllbGQpXG5cbiAgICAgIHZpZXdWaXNpYmxlID0gIXRoaXMudmlld0FjdGlvblZpc2libGVGaWVsZCB8fCB0aGlzLmZpZWxkSXNUcnV0aHkoc2VsZWN0ZWRJdGVtLCB0aGlzLnZpZXdBY3Rpb25WaXNpYmxlRmllbGQpXG4gICAgICBlZGl0VmlzaWJsZSA9ICF0aGlzLmVkaXRBY3Rpb25WaXNpYmxlRmllbGQgfHwgdGhpcy5maWVsZElzVHJ1dGh5KHNlbGVjdGVkSXRlbSwgdGhpcy5lZGl0QWN0aW9uVmlzaWJsZUZpZWxkKVxuICAgICAgZGVsZXRlVmlzaWJsZSA9ICF0aGlzLmRlbGV0ZUFjdGlvblZpc2libGVGaWVsZCB8fCB0aGlzLmZpZWxkSXNUcnV0aHkoc2VsZWN0ZWRJdGVtLCB0aGlzLmRlbGV0ZUFjdGlvblZpc2libGVGaWVsZClcbiAgICB9XG5cbiAgICBjb25zdCBtZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXVxuICAgIGNvbnN0IGF1dG9tYXRpb25JZCA9ICdkYXRhLWdyaWQtYWN0aW9uLWJ1dHRvbidcbiAgICBjb25zdCBhdXRvbWF0aW9uSWRIaWRkZW4gPSAnZGF0YS1ncmlkLWFjdGlvbi1idXR0b24taGlkZGVuJ1xuICAgIGlmICh0aGlzLnNob3VsZERpc3BsYXlBY3Rpb24odGhpcy52aWV3UGVybWlzc2lvbiwgdGhpcy52aWV3SXRlbSwgcGVybWlzc2lvbnMpKSB7XG4gICAgICBtZW51SXRlbXMucHVzaCh7XG4gICAgICAgIGxhYmVsOiB0cmFuc2xhdGlvbnNbdGhpcy52aWV3TWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLlZJRVcnXSxcbiAgICAgICAgaWNvbjogUHJpbWVJY29ucy5FWUUsXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHRoaXMudmlld0l0ZW0uZW1pdChzZWxlY3RlZEl0ZW0pLFxuICAgICAgICBkaXNhYmxlZDogdmlld0Rpc2FibGVkLFxuICAgICAgICB2aXNpYmxlOiB2aWV3VmlzaWJsZSxcbiAgICAgICAgYXV0b21hdGlvbklkOiB2aWV3VmlzaWJsZSA/IGF1dG9tYXRpb25JZCA6IGF1dG9tYXRpb25JZEhpZGRlbixcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmICh0aGlzLnNob3VsZERpc3BsYXlBY3Rpb24odGhpcy5lZGl0UGVybWlzc2lvbiwgdGhpcy5lZGl0SXRlbSwgcGVybWlzc2lvbnMpKSB7XG4gICAgICBtZW51SXRlbXMucHVzaCh7XG4gICAgICAgIGxhYmVsOiB0cmFuc2xhdGlvbnNbdGhpcy5lZGl0TWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLkVESVQnXSxcbiAgICAgICAgaWNvbjogUHJpbWVJY29ucy5QRU5DSUwsXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHRoaXMuZWRpdEl0ZW0uZW1pdChzZWxlY3RlZEl0ZW0pLFxuICAgICAgICBkaXNhYmxlZDogZWRpdERpc2FibGVkLFxuICAgICAgICB2aXNpYmxlOiBlZGl0VmlzaWJsZSxcbiAgICAgICAgYXV0b21hdGlvbklkOiBlZGl0VmlzaWJsZSA/IGF1dG9tYXRpb25JZCA6IGF1dG9tYXRpb25JZEhpZGRlbixcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmICh0aGlzLnNob3VsZERpc3BsYXlBY3Rpb24odGhpcy5kZWxldGVQZXJtaXNzaW9uLCB0aGlzLmRlbGV0ZUl0ZW0sIHBlcm1pc3Npb25zKSkge1xuICAgICAgbWVudUl0ZW1zLnB1c2goe1xuICAgICAgICBsYWJlbDogdHJhbnNsYXRpb25zW3RoaXMuZGVsZXRlTWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLkRFTEVURSddLFxuICAgICAgICBpY29uOiBQcmltZUljb25zLlRSQVNILFxuICAgICAgICBjb21tYW5kOiAoKSA9PiB0aGlzLmRlbGV0ZUl0ZW0uZW1pdChzZWxlY3RlZEl0ZW0pLFxuICAgICAgICBkaXNhYmxlZDogZGVsZXRlRGlzYWJsZWQsXG4gICAgICAgIHZpc2libGU6IGRlbGV0ZVZpc2libGUsXG4gICAgICAgIGF1dG9tYXRpb25JZDogZGVsZXRlVmlzaWJsZSA/IGF1dG9tYXRpb25JZCA6IGF1dG9tYXRpb25JZEhpZGRlbixcbiAgICAgIH0pXG4gICAgfVxuICAgIGNvbnN0IHZhbCA9IG1lbnVJdGVtcy5jb25jYXQoXG4gICAgICBhZGRpdGlvbmFsQWN0aW9ucy5tYXAoKGEpID0+IHtcbiAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gIWEuYWN0aW9uVmlzaWJsZUZpZWxkIHx8IHRoaXMuZmllbGRJc1RydXRoeShzZWxlY3RlZEl0ZW0sIGEuYWN0aW9uVmlzaWJsZUZpZWxkKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxhYmVsOiB0cmFuc2xhdGlvbnNbYS5sYWJlbEtleSB8fCAnJ10sXG4gICAgICAgICAgaWNvbjogYS5pY29uLFxuICAgICAgICAgIHN0eWxlQ2xhc3M6IChhLmNsYXNzZXMgfHwgW10pLmpvaW4oJyAnKSxcbiAgICAgICAgICBkaXNhYmxlZDogYS5kaXNhYmxlZCB8fCAoISFhLmFjdGlvbkVuYWJsZWRGaWVsZCAmJiAhdGhpcy5maWVsZElzVHJ1dGh5KHNlbGVjdGVkSXRlbSwgYS5hY3Rpb25FbmFibGVkRmllbGQpKSxcbiAgICAgICAgICB2aXNpYmxlOiBpc1Zpc2libGUsXG4gICAgICAgICAgY29tbWFuZDogKCkgPT4gYS5jYWxsYmFjayhzZWxlY3RlZEl0ZW0pLFxuICAgICAgICAgIGF1dG9tYXRpb25JZDogaXNWaXNpYmxlID8gYXV0b21hdGlvbklkIDogYXV0b21hdGlvbklkSGlkZGVuLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgICByZXR1cm4gdmFsXG4gIH1cblxuICBwcml2YXRlIGdldEdyaWRBY3Rpb25zVHJhbnNsYXRpb25zKFxuICAgIGFkZGl0aW9uYWxBY3Rpb25zOiBEYXRhQWN0aW9uW10sXG4gICAgcGVybWlzc2lvbnM6IHN0cmluZ1tdXG4gICk6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KFtcbiAgICAgIHRoaXMudmlld01lbnVJdGVtS2V5IHx8ICdPQ1hfREFUQV9MSVNUX0dSSUQuTUVOVS5WSUVXJyxcbiAgICAgIHRoaXMuZWRpdE1lbnVJdGVtS2V5IHx8ICdPQ1hfREFUQV9MSVNUX0dSSUQuTUVOVS5FRElUJyxcbiAgICAgIHRoaXMuZGVsZXRlTWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLkRFTEVURScsXG4gICAgICAuLi5hZGRpdGlvbmFsQWN0aW9uc1xuICAgICAgICAuZmlsdGVyKChhY3Rpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBwZXJtaXNzaW9uc0FycmF5ID0gQXJyYXkuaXNBcnJheShhY3Rpb24ucGVybWlzc2lvbikgPyBhY3Rpb24ucGVybWlzc2lvbiA6IFthY3Rpb24ucGVybWlzc2lvbl1cbiAgICAgICAgICByZXR1cm4gcGVybWlzc2lvbnNBcnJheS5ldmVyeSgocCkgPT4gcGVybWlzc2lvbnMuaW5jbHVkZXMocCkpXG4gICAgICAgIH0pXG4gICAgICAgIC5tYXAoKGEpID0+IGEubGFiZWxLZXkgfHwgJycpLFxuICAgIF0pXG4gIH1cblxuICBwcml2YXRlIHNob3VsZERpc3BsYXlBY3Rpb24oXG4gICAgcGVybWlzc2lvbjogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gICAgZW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4sXG4gICAgdXNlclBlcm1pc3Npb25zOiBzdHJpbmdbXVxuICApOiBib29sZWFuIHtcbiAgICBjb25zdCBwZXJtaXNzaW9ucyA9IEFycmF5LmlzQXJyYXkocGVybWlzc2lvbikgPyBwZXJtaXNzaW9uIDogcGVybWlzc2lvbiA/IFtwZXJtaXNzaW9uXSA6IFtdXG4gICAgcmV0dXJuIGVtaXR0ZXIub2JzZXJ2ZWQgJiYgcGVybWlzc2lvbnMuZXZlcnkoKHApID0+IHVzZXJQZXJtaXNzaW9ucy5pbmNsdWRlcyhwKSlcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyQWN0aW9uc0Jhc2VkT25QZXJtaXNzaW9ucyhhY3Rpb25zOiBEYXRhQWN0aW9uW10sIHBlcm1pc3Npb25zPzogc3RyaW5nW10pOiBPYnNlcnZhYmxlPERhdGFBY3Rpb25bXT4ge1xuICAgIGNvbnN0IHBlcm1pc3Npb25zJCA9IHBlcm1pc3Npb25zID8gb2YocGVybWlzc2lvbnMpIDogdGhpcy5nZXRQZXJtaXNzaW9ucygpXG4gICAgcmV0dXJuIHBlcm1pc3Npb25zJC5waXBlKFxuICAgICAgbWFwKChwZXJtaXNzaW9ucykgPT4ge1xuICAgICAgICByZXR1cm4gYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IGFjdGlvblBlcm1pc3Npb25zID0gQXJyYXkuaXNBcnJheShhY3Rpb24ucGVybWlzc2lvbikgPyBhY3Rpb24ucGVybWlzc2lvbiA6IFthY3Rpb24ucGVybWlzc2lvbl1cbiAgICAgICAgICByZXR1cm4gYWN0aW9uUGVybWlzc2lvbnMuZXZlcnkoKHApID0+IHBlcm1pc3Npb25zLmluY2x1ZGVzKHApKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGdldFBlcm1pc3Npb25zKCk6IE9ic2VydmFibGU8c3RyaW5nW10+IHtcbiAgICBpZiAodGhpcy5oYXNQZXJtaXNzaW9uQ2hlY2tlcj8uZ2V0UGVybWlzc2lvbnMpIHtcbiAgICAgIHJldHVybiB0aGlzLmhhc1Blcm1pc3Npb25DaGVja2VyLmdldFBlcm1pc3Npb25zKClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5nZXRQZXJtaXNzaW9ucygpXG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIoZGlzcGxheWVkUGFnZVNpemUkIHwgYXN5bmMpIGFzIGRpc3BsYXllZFBhZ2VTaXplXCI+XG4gIDxwLWRhdGFWaWV3XG4gICAgKm5nSWY9XCIoY29sdW1uVGVtcGxhdGVzJCB8IGFzeW5jKSA/PyB7fSBhcyBjb2x1bW5UZW1wbGF0ZXNcIlxuICAgIFt2YWx1ZV09XCIoZGlzcGxheWVkSXRlbXMkIHwgYXN5bmMpID8/IFtdXCJcbiAgICBbcGFnaW5hdG9yXT1cInBhZ2luYXRvclwiXG4gICAgW2ZpcnN0XT1cInBhZ2UgKiBkaXNwbGF5ZWRQYWdlU2l6ZVwiXG4gICAgKG9uUGFnZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgW3Jvd3NdPVwiZGlzcGxheWVkUGFnZVNpemVcIlxuICAgIFtsYXlvdXRdPVwibGF5b3V0XCJcbiAgICBbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIlxuICAgIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJ7eyAodG90YWxSZWNvcmRzT25TZXJ2ZXIoKSA/IGN1cnJlbnRQYWdlU2hvd2luZ1dpdGhUb3RhbE9uU2VydmVyS2V5IDogY3VycmVudFBhZ2VTaG93aW5nS2V5KSB8IHRyYW5zbGF0ZTpwYXJhbXMoKSB9fVwiXG4gICAgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCIoZGlzcGxheWVkUGFnZVNpemVzJCB8IGFzeW5jKSA/PyBbXVwiXG4gICAgaWQ9XCJkYXRhTGlzdEdyaWRfe3tuYW1lfX1cIlxuICAgIHBhZ2luYXRvckRyb3Bkb3duQXBwZW5kVG89XCJib2R5XCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSAjZ3JpZEl0ZW0gbGV0LXJvd3MgcFRlbXBsYXRlPVwiZ3JpZEl0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLWdyaWQgcC1ub2d1dHRlciBncmlkIGdyaWQtbm9ndXR0ZXJcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1pdGVtIFtuZ0Zvck9mXT1cInJvd3NcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfZ3JpZEl0ZW0gPyBfZ3JpZEl0ZW0gOiBkZWZhdWx0R3JpZEl0ZW1cIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6aXRlbX1cIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2xpc3RJdGVtIGxldC1yb3dzIHBUZW1wbGF0ZT1cImxpc3RJdGVtXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtbm9ndXR0ZXIgZ3JpZCBncmlkLW5vZ3V0dGVyXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtaXRlbSBbbmdGb3JPZl09XCJyb3dzXCI+XG4gICAgICAgICAgQGRlZmVyIChvbiB2aWV3cG9ydDsgb24gaWRsZSl7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2xpc3RJdGVtID8gX2xpc3RJdGVtIDogZGVmYXVsdExpc3RJdGVtXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICRpbXBsaWNpdDppdGVtLFxuICAgICAgICAgICAgICBpdGVtOml0ZW0sXG4gICAgICAgICAgICAgIGNvbHVtblRlbXBsYXRlczogY29sdW1uVGVtcGxhdGVzXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICB9IEBwbGFjZWhvbGRlciB7XG4gICAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDgwcHhcIj48L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eVwiPlxuICAgICAgPHNwYW4+e3sgZW1wdHlSZXN1bHRzTWVzc2FnZSB8fCAoXCJPQ1hfREFUQV9MSVNUX0dSSUQuRU1QVFlfUkVTVUxUXCIgfCB0cmFuc2xhdGUpIH19PC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvcC1kYXRhVmlldz5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRHcmlkSXRlbSBsZXQtaXRlbT5cbiAgPGRpdiBjbGFzcz1cImNvbC0xMiBsZzpjb2wtNiB4bDpjb2wtNCBmbGV4XCI+XG4gICAgPGRpdiBjbGFzcz1cImRhdGEtZ3JpZC1pdGVtIGNhcmQgZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTEyIGxnOnctMTEgbWItNCBtdC00IGFsaWduLXNlbGYtc3RyZXRjaFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtYi0zXCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICBjbGFzcz1cImltYWdlXCJcbiAgICAgICAgICBzcmM9XCJ7eyBpdGVtLmltYWdlUGF0aCB8fCAoZmFsbGJhY2tJbWFnZVBhdGgkIHwgYXN5bmMpIH19XCJcbiAgICAgICAgICAoZXJyb3IpPVwiaW1nRXJyb3IoaXRlbSlcIlxuICAgICAgICAgIGFsdD1cInt7cmVzb2x2ZUZpZWxkRGF0YShpdGVtLCB0aXRsZUxpbmVJZCl8fCAnJ319XCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhLWdyaWQtaXRlbXMgZmxleC1yb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1uYW1lIGZvbnQtbWVkaXVtIG1yLTMgdGV4dC0yeGxcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNWaWV3UGVybWlzc2lvbiQgfCBhc3luYyBhcyBoYXNWaWV3UGVybWlzc2lvbjsgZWxzZSBub1ZpZXdQZXJtaXNzaW9uXCI+XG4gICAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlwiIChjbGljayk9XCJvblZpZXdSb3coaXRlbSlcIj57eyByZXNvbHZlRmllbGREYXRhKGl0ZW0sIHRpdGxlTGluZUlkKSB8fCAnJyB9fTwvYT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1ZpZXdQZXJtaXNzaW9uPlxuICAgICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJcIj57eyByZXNvbHZlRmllbGREYXRhKGl0ZW0sIHRpdGxlTGluZUlkKSB8fCAnJyB9fTwvYT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2dyaWRJdGVtU3VidGl0bGVMaW5lcyA/IF9ncmlkSXRlbVN1YnRpdGxlTGluZXMgOiBkZWZhdWx0R3JpZEl0ZW1TdWJ0aXRsZUxpbmVzXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiKGdyaWRNZW51SXRlbXMkIHwgYXN5bmMpIGFzIGdyaWRNZW51SXRlbXNcIj5cbiAgICAgICAgICA8cC1tZW51ICNtZW51IFttb2RlbF09XCJncmlkTWVudUl0ZW1zXCIgW3BvcHVwXT1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIj48L3AtbWVudT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0U2VsZWN0ZWRJdGVtKGl0ZW0pOyBtZW51LnRvZ2dsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIGljb249XCJwaSBwaS1lbGxpcHNpcy12XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ09DWF9EQVRBX0xJU1RfR1JJRC5NT1JFX0FDVElPTlNfQVJJQV9MQUJFTCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJtb3JlLWFjdGlvbnMtbWVudS1idXR0b24gbWVudS1idG5cIlxuICAgICAgICAgICAgW2F0dHIubmFtZV09XCInZGF0YS1ncmlkLWl0ZW0tbWVudS1idXR0b24nXCJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCInT0NYX0RBVEFfTElTVF9HUklELk1PUkVfQUNUSU9OU19UT09MVElQJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkZWZhdWx0R3JpZEl0ZW1TdWJ0aXRsZUxpbmVzIGxldC1pdGVtPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBzdWJ0aXRsZUxpbmVJZCBvZiBzdWJ0aXRsZUxpbmVJZHNcIiBjbGFzcz1cInN1YnRpdGxlTGluZSBlZGl0LXRpbWUgdGV4dC14bCBteS0zXCI+XG4gICAge3sgcmVzb2x2ZUZpZWxkRGF0YShpdGVtLCBzdWJ0aXRsZUxpbmVJZCkgfX1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkZWZhdWx0TGlzdEl0ZW0gbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWNvbHVtblRlbXBsYXRlcz1cImNvbHVtblRlbXBsYXRlc1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgKm5nSWY9XCJjb2x1bW5UZW1wbGF0ZXNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0YS1saXN0LWl0ZW1zIHAtM1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tbmFtZS1yb3cgZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1uYW1lIG1yLTMgdGV4dC0yeGwgZm9udC1tZWRpdW0gYWxpZ24tY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInRpdGxlTGluZUlkXCI+e3sgcmVzb2x2ZUZpZWxkRGF0YShpdGVtLCB0aXRsZUxpbmVJZCkgfHwgJycgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwidmlld0l0ZW1PYnNlcnZlZCAmJiAoIXZpZXdBY3Rpb25WaXNpYmxlRmllbGQgfHwgZmllbGRJc1RydXRoeShpdGVtLCB2aWV3QWN0aW9uVmlzaWJsZUZpZWxkKSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJ7e3Jlc29sdmVGaWVsZERhdGEoaXRlbSwgJ2lkJyl9fS12aWV3QnV0dG9uXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS1leWVcIlxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IG1iLTEgbXItMiB2aWV3TGlzdEl0ZW1CdXR0b25cIlxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiKHZpZXdNZW51SXRlbUtleSB8fCAnT0NYX0RBVEFfTElTVF9HUklELk1FTlUuVklFVycpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIodmlld01lbnVJdGVtS2V5IHx8ICdPQ1hfREFUQV9MSVNUX0dSSUQuTUVOVS5WSUVXJykgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25WaWV3Um93KGl0ZW0pXCJcbiAgICAgICAgICAgICAgKm9jeElmUGVybWlzc2lvbj1cInZpZXdQZXJtaXNzaW9uXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiEhdmlld0FjdGlvbkVuYWJsZWRGaWVsZCAmJiAhZmllbGRJc1RydXRoeShpdGVtLCB2aWV3QWN0aW9uRW5hYmxlZEZpZWxkKVwiXG4gICAgICAgICAgICAgIFthdHRyLm5hbWVdPVwiJ2RhdGEtbGlzdC1hY3Rpb24tYnV0dG9uJ1wiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJlZGl0SXRlbU9ic2VydmVkICYmICghZWRpdEFjdGlvblZpc2libGVGaWVsZCB8fCBmaWVsZElzVHJ1dGh5KGl0ZW0sIGVkaXRBY3Rpb25WaXNpYmxlRmllbGQpKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBpZD1cInt7cmVzb2x2ZUZpZWxkRGF0YShpdGVtLCAnaWQnKX19LWVkaXRCdXR0b25cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgbWItMSBtci0yIGVkaXRMaXN0SXRlbUJ1dHRvblwiXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS1wZW5jaWxcIlxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCIoZWRpdE1lbnVJdGVtS2V5IHx8ICdPQ1hfREFUQV9MSVNUX0dSSUQuTUVOVS5FRElUJykgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIihlZGl0TWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLkVESVQnKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXRSb3coaXRlbSlcIlxuICAgICAgICAgICAgICAqb2N4SWZQZXJtaXNzaW9uPVwiZWRpdFBlcm1pc3Npb25cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiISFlZGl0QWN0aW9uRW5hYmxlZEZpZWxkICYmICFmaWVsZElzVHJ1dGh5KGl0ZW0sIGVkaXRBY3Rpb25FbmFibGVkRmllbGQpXCJcbiAgICAgICAgICAgICAgW2F0dHIubmFtZV09XCInZGF0YS1saXN0LWFjdGlvbi1idXR0b24nXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cImRlbGV0ZUl0ZW1PYnNlcnZlZCAmJiAoIWRlbGV0ZUFjdGlvblZpc2libGVGaWVsZCB8fCBmaWVsZElzVHJ1dGh5KGl0ZW0sIGRlbGV0ZUFjdGlvblZpc2libGVGaWVsZCkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwie3tyZXNvbHZlRmllbGREYXRhKGl0ZW0sICdpZCcpfX0tZGVsZXRlQnV0dG9uXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGljb249XCJwaSBwaS10cmFzaFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLWRhbmdlciBtYi0xIG1yLTIgZGVsZXRlTGlzdEl0ZW1CdXR0b25cIlxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCIoZGVsZXRlTWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLkRFTEVURScpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIoZGVsZXRlTWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLkRFTEVURScpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlUm93KGl0ZW0pXCJcbiAgICAgICAgICAgICAgKm9jeElmUGVybWlzc2lvbj1cImRlbGV0ZVBlcm1pc3Npb25cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiISFkZWxldGVBY3Rpb25FbmFibGVkRmllbGQgJiYgIWZpZWxkSXNUcnV0aHkoaXRlbSwgZGVsZXRlQWN0aW9uRW5hYmxlZEZpZWxkKVwiXG4gICAgICAgICAgICAgIFthdHRyLm5hbWVdPVwiJ2RhdGEtbGlzdC1hY3Rpb24tYnV0dG9uJ1wiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGlubGluZUxpc3RBY3Rpb25zJCB8IGFzeW5jXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKCFhY3Rpb24uYWN0aW9uVmlzaWJsZUZpZWxkIHx8IGZpZWxkSXNUcnV0aHkoaXRlbSwgYWN0aW9uLmFjdGlvblZpc2libGVGaWVsZCkpXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBpZD1cInt7cmVzb2x2ZUZpZWxkRGF0YShpdGVtLCAnaWQnKX19LXt7YWN0aW9uLmlkID8gYWN0aW9uLmlkLmNvbmNhdCgnQWN0aW9uQnV0dG9uJykgOiAnaW5saW5lQWN0aW9uQnV0dG9uJ319XCJcbiAgICAgICAgICAgICAgICAqb2N4SWZQZXJtaXNzaW9uPVwiYWN0aW9uLnBlcm1pc3Npb25cIlxuICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiYWN0aW9uLmNsYXNzZXNcIlxuICAgICAgICAgICAgICAgIFtpY29uXT1cImFjdGlvbi5pY29uIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uLmNhbGxiYWNrKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiYWN0aW9uLmxhYmVsS2V5ID8gKGFjdGlvbi5sYWJlbEtleSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXG4gICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFjdGlvbi5sYWJlbEtleSA/IChhY3Rpb24ubGFiZWxLZXkgfCB0cmFuc2xhdGUpIDogJydcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb24uZGlzYWJsZWQgfHwgKCEhYWN0aW9uLmFjdGlvbkVuYWJsZWRGaWVsZCAmJiAhZmllbGRJc1RydXRoeShpdGVtLCBhY3Rpb24uYWN0aW9uRW5hYmxlZEZpZWxkKSlcIlxuICAgICAgICAgICAgICAgIFthdHRyLm5hbWVdPVwiJ2RhdGEtbGlzdC1hY3Rpb24tYnV0dG9uJ1wiXG4gICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNWaXNpYmxlT3ZlcmZsb3dNZW51SXRlbXMoaXRlbSkgfCBhc3luY1wiPlxuICAgICAgICAgICAgPHAtbWVudSAjbWVudSBbbW9kZWxdPVwiKG92ZXJmbG93TGlzdE1lbnVJdGVtcyQgfCBhc3luYykgfHwgW11cIiBbcG9wdXBdPVwidHJ1ZVwiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tZW51PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0XCJcbiAgICAgICAgICAgICAgW2ljb25dPVwiJ3BpIHBpLWVsbGlwc2lzLXYnXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU92ZXJmbG93TWVudSgkZXZlbnQsIG1lbnUsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInT0NYX0RBVEFfTElTVF9HUklELk1PUkVfQUNUSU9OU19BUklBX0xBQkVMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCInT0NYX0RBVEFfTElTVF9HUklELk1PUkVfQUNUSU9OU19UT09MVElQJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgIFthdHRyLm5hbWVdPVwiJ2RhdGEtbGlzdC1vdmVyZmxvdy1pdGVtLW1lbnUtYnV0dG9uJ1wiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtbGlnaHQgbXktMVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2xpc3RJdGVtU3VidGl0bGVMaW5lcyA/IF9saXN0SXRlbVN1YnRpdGxlTGluZXMgOiBkZWZhdWx0TGlzdEl0ZW1TdWJ0aXRsZUxpbmVzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDppdGVtfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbCBvZiBnZXRGaWx0ZXJlZENvbHVtbnMoKVwiIGNsYXNzPVwidy0xMnJlbSBteS0yIG1yLTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1ib2xkXCIgW29jeFRvb2x0aXBPbk92ZXJmbG93XT1cImNvbC5uYW1lS2V5IHwgdHJhbnNsYXRlXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XG4gICAgICAgICAgICB7eyBjb2wubmFtZUtleSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtvY3hUb29sdGlwT25PdmVyZmxvd109XCJjb2wuY29sdW1uVHlwZSA9PT0gY29sdW1uVHlwZS5UUkFOU0xBVElPTl9LRVkgPyAocmVzb2x2ZUZpZWxkRGF0YShpdGVtLGNvbC5pZCkgfCB0cmFuc2xhdGUpIDogcmVzb2x2ZUZpZWxkRGF0YShpdGVtLCBjb2wuaWQpXCJcbiAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGRlZmVyKG9uIHZpZXdwb3J0Oyl7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9saXN0VmFsdWUgPyBfbGlzdFZhbHVlOiBkZWZhdWx0TGlzdFZhbHVlXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICByb3dPYmplY3Q6IGl0ZW0sXG4gICAgICAgICAgICAgICAgY29sdW1uOiBjb2wsXG4gICAgICAgICAgICAgICAgY29sdW1uVGVtcGxhdGVzOiBjb2x1bW5UZW1wbGF0ZXNcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfSBAcGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgPHAtc2tlbGV0b24gd2lkdGg9XCI1cmVtXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkZWZhdWx0TGlzdEl0ZW1TdWJ0aXRsZUxpbmVzIGxldC1pdGVtPVwiJGltcGxpY2l0XCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IHN1YnRpdGxlTGluZUlkIG9mIHN1YnRpdGxlTGluZUlkc1wiIGNsYXNzPVwic3VidGl0bGVMaW5lIHRleHQteGwgbXktM1wiPlxuICAgIHt7IHJlc29sdmVGaWVsZERhdGEoaXRlbSwgc3VidGl0bGVMaW5lSWQpIH19XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0TGlzdFZhbHVlIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCIgbGV0LWNvbHVtblRlbXBsYXRlcz1cImNvbHVtblRlbXBsYXRlc1wiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJjb2x1bW5UZW1wbGF0ZXNbY29sdW1uLmlkXVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sdW1uVGVtcGxhdGVzW2NvbHVtbi5pZF1cIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgcm93T2JqZWN0OiByb3dPYmplY3QsXG4gICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW5cbiAgICAgICAgICAgIH1cIlxuICA+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImRlZmF1bHRTdHJpbmdMaXN0VmFsdWVcIiBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyPiB7eyByZXNvbHZlRmllbGREYXRhKHJvd09iamVjdCwgY29sdW1uLmlkKSB9fSA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkZWZhdWx0TnVtYmVyTGlzdFZhbHVlXCIgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lcj4ge3sgcmVzb2x2ZUZpZWxkRGF0YShyb3dPYmplY3QsIGNvbHVtbi5pZCkgfCBudW1iZXIgfX0gPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZGVmYXVsdEN1c3RvbUxpc3RWYWx1ZVwiIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+IDwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkZWZhdWx0RGF0ZUxpc3RWYWx1ZVwiIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXI+IHt7IHJlc29sdmVGaWVsZERhdGEocm93T2JqZWN0LCBjb2x1bW4uaWQpIHwgZGF0ZTogY29sdW1uLmRhdGVGb3JtYXQgPz8gJ21lZGl1bScgfX0gPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZGVmYXVsdFJlbGF0aXZlRGF0ZUxpc3RWYWx1ZVwiIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXI+XG4gICAge3sgJ09DWF9EQVRBX1RBQkxFLkVESVRFRCcgfCB0cmFuc2xhdGUgfX0ge3sgcmVzb2x2ZUZpZWxkRGF0YShyb3dPYmplY3QsIGNvbHVtbi5pZCkgfCB0aW1lYWdvIH19XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImRlZmF1bHRUcmFuc2xhdGlvbktleUxpc3RWYWx1ZVwiIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXI+IHt7IHJlc29sdmVGaWVsZERhdGEocm93T2JqZWN0LCBjb2x1bW4uaWQpIHwgdHJhbnNsYXRlIH19IDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
674
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1saXN0LWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY2VsZXJhdG9yL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWxpc3QtZ3JpZC9kYXRhLWxpc3QtZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtbGlzdC1ncmlkL2RhdGEtbGlzdC1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixlQUFlLEVBRWYsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLEtBQUssRUFDTCxTQUFTLEVBRVQsUUFBUSxFQUNSLE1BQU0sRUFHTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBRW5GLE9BQU8sRUFBWSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRWpFLE9BQU8sRUFDTCxlQUFlLEVBRWYsYUFBYSxFQUNiLFlBQVksRUFDWixLQUFLLEVBQ0wsY0FBYyxFQUNkLEdBQUcsRUFDSCxRQUFRLEVBQ1IsRUFBRSxFQUNGLFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQTtBQUNiLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUkxRCxPQUFPLEVBQUUsV0FB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U3ZCLGVBQWU7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRG9DaGVjayxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBpbnB1dCxcbiAgSW5wdXQsXG4gIExPQ0FMRV9JRCxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBMaXZlQW5ub3VuY2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSwgVXNlclNlcnZpY2UgfSBmcm9tICdAb25lY3gvYW5ndWxhci1pbnRlZ3JhdGlvbi1pbnRlcmZhY2UnXG5pbXBvcnQgeyBNZmVJbmZvIH0gZnJvbSAnQG9uZWN4L2ludGVncmF0aW9uLWludGVyZmFjZSdcbmltcG9ydCB7IE1lbnVJdGVtLCBQcmltZUljb25zLCBQcmltZVRlbXBsYXRlIH0gZnJvbSAncHJpbWVuZy9hcGknXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAncHJpbWVuZy9tZW51J1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGZpcnN0LFxuICBmaXJzdFZhbHVlRnJvbSxcbiAgbWFwLFxuICBtZXJnZU1hcCxcbiAgb2YsXG4gIHN3aXRjaE1hcCxcbn0gZnJvbSAncnhqcydcbmltcG9ydCB7IENvbHVtblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbC9jb2x1bW4tdHlwZS5tb2RlbCdcbmltcG9ydCB7IERhdGFBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRhLWFjdGlvbidcbmltcG9ydCB7IERhdGFTb3J0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGF0YS1zb3J0LWRpcmVjdGlvbidcbmltcG9ydCB7IERhdGFUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVsL2RhdGEtdGFibGUtY29sdW1uLm1vZGVsJ1xuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy9vYmplY3R1dGlscydcbmltcG9ydCB7IERhdGFTb3J0QmFzZSB9IGZyb20gJy4uL2RhdGEtc29ydC1iYXNlL2RhdGEtc29ydC1iYXNlJ1xuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudCdcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uLy4uL21vZGVsL2ZpbHRlci5tb2RlbCdcbmltcG9ydCB7IEhBU19QRVJNSVNTSU9OX0NIRUNLRVIsIEhhc1Blcm1pc3Npb25DaGVja2VyIH0gZnJvbSAnQG9uZWN4L2FuZ3VsYXItdXRpbHMnXG5pbXBvcnQgZXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsJ1xuXG5leHBvcnQgdHlwZSBMaXN0R3JpZERhdGEgPSB7XG4gIGlkOiBzdHJpbmcgfCBudW1iZXJcbiAgaW1hZ2VQYXRoOiBzdHJpbmcgfCBudW1iZXJcbiAgW2NvbHVtbklkOiBzdHJpbmddOiB1bmtub3duXG59XG5cbnR5cGUgUm93TGlzdEdyaWREYXRhID0gTGlzdEdyaWREYXRhICYgUm93XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEdyaWREYXRhTWVudUl0ZW0gZXh0ZW5kcyBNZW51SXRlbSB7XG4gIHBlcm1pc3Npb246IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFMaXN0R3JpZENvbXBvbmVudFN0YXRlIHtcbiAgYWN0aXZlUGFnZT86IG51bWJlclxuICBwYWdlU2l6ZT86IG51bWJlclxuICBmaWx0ZXJzPzogRmlsdGVyW11cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2N4LWRhdGEtbGlzdC1ncmlkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtbGlzdC1ncmlkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS1saXN0LWdyaWQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUxpc3RHcmlkQ29tcG9uZW50IGV4dGVuZHMgRGF0YVNvcnRCYXNlIGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrLCBBZnRlckNvbnRlbnRJbml0IHtcbiAgQElucHV0KCkgdGl0bGVMaW5lSWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBzdWJ0aXRsZUxpbmVJZHM6IHN0cmluZ1tdID0gW11cbiAgQElucHV0KCkgY2xpZW50U2lkZVNvcnRpbmcgPSB0cnVlXG4gIEBJbnB1dCgpIGNsaWVudFNpZGVGaWx0ZXJpbmcgPSB0cnVlXG4gIEBJbnB1dCgpIHNvcnRTdGF0ZXM6IERhdGFTb3J0RGlyZWN0aW9uW10gPSBbXVxuXG4gIGRpc3BsYXllZFBhZ2VTaXplcyQ6IE9ic2VydmFibGU8KG51bWJlciB8IHsgc2hvd0FsbDogc3RyaW5nIH0pW10+XG4gIF9wYWdlU2l6ZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDwobnVtYmVyIHwgeyBzaG93QWxsOiBzdHJpbmcgfSlbXT4oWzEwLCAyNSwgNTBdKVxuICBASW5wdXQoKVxuICBnZXQgcGFnZVNpemVzKCk6IChudW1iZXIgfCB7IHNob3dBbGw6IHN0cmluZyB9KVtdIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZVNpemVzJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IHBhZ2VTaXplcyh2YWx1ZTogKG51bWJlciB8IHsgc2hvd0FsbDogc3RyaW5nIH0pW10pIHtcbiAgICB0aGlzLl9wYWdlU2l6ZXMkLm5leHQodmFsdWUpXG4gIH1cblxuICBkaXNwbGF5ZWRQYWdlU2l6ZSQ6IE9ic2VydmFibGU8bnVtYmVyPlxuICBfcGFnZVNpemUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgQElucHV0KClcbiAgZ2V0IHBhZ2VTaXplKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VTaXplJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IHBhZ2VTaXplKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9wYWdlU2l6ZSQubmV4dCh2YWx1ZSlcbiAgfVxuICBfc2hvd0FsbE9wdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICBASW5wdXQoKVxuICBzZXQgc2hvd0FsbE9wdGlvbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dBbGxPcHRpb24kLm5leHQodmFsdWUpXG4gIH1cblxuICBASW5wdXQoKSBlbXB0eVJlc3VsdHNNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZmFsbGJhY2tJbWFnZSA9ICdwbGFjZWhvbGRlci5wbmcnXG4gIEBJbnB1dCgpIGxheW91dDogJ2dyaWQnIHwgJ2xpc3QnID0gJ2dyaWQnXG4gIF92aWV3UGVybWlzc2lvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIEBJbnB1dCgpXG4gIGdldCB2aWV3UGVybWlzc2lvbigpOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdQZXJtaXNzaW9uJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IHZpZXdQZXJtaXNzaW9uKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3ZpZXdQZXJtaXNzaW9uJC5uZXh0KHZhbHVlKVxuICB9XG4gIEBJbnB1dCgpIGVkaXRQZXJtaXNzaW9uOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBkZWxldGVQZXJtaXNzaW9uOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBkZWxldGVBY3Rpb25WaXNpYmxlRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBkZWxldGVBY3Rpb25FbmFibGVkRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSB2aWV3QWN0aW9uVmlzaWJsZUZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdmlld0FjdGlvbkVuYWJsZWRGaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGVkaXRBY3Rpb25WaXNpYmxlRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBlZGl0QWN0aW9uRW5hYmxlZEZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdmlld01lbnVJdGVtS2V5OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZWRpdE1lbnVJdGVtS2V5OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZGVsZXRlTWVudUl0ZW1LZXk6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBwYWdpbmF0b3IgPSB0cnVlXG4gIEBJbnB1dCgpIHBhZ2UgPSAwXG4gIGNvbHVtblRlbXBsYXRlcyQ6IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgVGVtcGxhdGVSZWY8YW55PiB8IG51bGw+PiB8IHVuZGVmaW5lZFxuICBfY29sdW1ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGFUYWJsZUNvbHVtbltdPihbXSlcbiAgQElucHV0KClcbiAgZ2V0IGNvbHVtbnMoKTogRGF0YVRhYmxlQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGNvbHVtbnModmFsdWU6IERhdGFUYWJsZUNvbHVtbltdKSB7XG4gICAgdGhpcy5fY29sdW1ucyQubmV4dCh2YWx1ZSlcbiAgICBjb25zdCBvYnMgPSB2YWx1ZS5tYXAoKGMpID0+IHRoaXMuZ2V0VGVtcGxhdGUoYykpXG4gICAgdGhpcy5jb2x1bW5UZW1wbGF0ZXMkID0gY29tYmluZUxhdGVzdChvYnMpLnBpcGUoXG4gICAgICBtYXAoKHZhbHVlcykgPT4gT2JqZWN0LmZyb21FbnRyaWVzKHZhbHVlLm1hcCgoYywgaSkgPT4gW2MuaWQsIHZhbHVlc1tpXV0pKSksXG4gICAgICBkZWJvdW5jZVRpbWUoNTApXG4gICAgKVxuICB9XG4gIEBJbnB1dCgpIG5hbWUgPSAnJ1xuICB0b3RhbFJlY29yZHNPblNlcnZlciA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBASW5wdXQoKSBjdXJyZW50UGFnZVNob3dpbmdLZXkgPSAnT0NYX0RBVEFfVEFCTEUuU0hPV0lORydcbiAgQElucHV0KCkgY3VycmVudFBhZ2VTaG93aW5nV2l0aFRvdGFsT25TZXJ2ZXJLZXkgPSAnT0NYX0RBVEFfVEFCTEUuU0hPV0lOR19XSVRIX1RPVEFMX09OX1NFUlZFUidcbiAgcGFyYW1zPSBjb21wdXRlZCgoKSA9PiB7ICAgIFxuICAgIHJldHVybiB7XG4gICAgICBjdXJyZW50UGFnZTogJ3tjdXJyZW50UGFnZX0nLFxuICAgICAgdG90YWxQYWdlczogJ3t0b3RhbFBhZ2VzfScsXG4gICAgICByb3dzOiAne3Jvd3N9JyxcbiAgICAgIGZpcnN0OiAne2ZpcnN0fScsXG4gICAgICBsYXN0OiAne2xhc3R9JyxcbiAgICAgIHRvdGFsUmVjb3JkczogJ3t0b3RhbFJlY29yZHN9JyxcbiAgICAgIHRvdGFsUmVjb3Jkc09uU2VydmVyOiB0aGlzLnRvdGFsUmVjb3Jkc09uU2VydmVyKClcbiAgICB9XG4gIH0pXG5cbiAgX2RhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSb3dMaXN0R3JpZERhdGFbXT4oW10pXG4gIEBJbnB1dCgpXG4gIGdldCBkYXRhKCk6IFJvd0xpc3RHcmlkRGF0YVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YSQuZ2V0VmFsdWUoKVxuICB9XG4gIHNldCBkYXRhKHZhbHVlOiBSb3dMaXN0R3JpZERhdGFbXSkge1xuICAgIGNvbnN0IHNob3VsZFJlc2V0UGFnZSA9IHRoaXMuX2RhdGEkLmdldFZhbHVlKCkubGVuZ3RoID4gdmFsdWUubGVuZ3RoXG4gICAgdGhpcy5fb3JpZ2luYWxEYXRhID0gWy4uLnZhbHVlXVxuICAgIHRoaXMuX2RhdGEkLm5leHQoWy4uLnZhbHVlXSlcbiAgICBpZiAoc2hvdWxkUmVzZXRQYWdlKSB7XG4gICAgICB0aGlzLnJlc2V0UGFnZSgpXG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFJlc3VsdHMgPSB2YWx1ZS5sZW5ndGhcbiAgICBjb25zdCBuZXdTdGF0dXMgPVxuICAgICAgY3VycmVudFJlc3VsdHMgPT09IDAgPyAnT0NYX0RBVEFfTElTVF9HUklELk5PX1NFQVJDSF9SRVNVTFRTX0ZPVU5EJyA6ICdPQ1hfREFUQV9MSVNUX0dSSUQuU0VBUkNIX1JFU1VMVFNfRk9VTkQnXG5cbiAgICBmaXJzdFZhbHVlRnJvbSh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KG5ld1N0YXR1cywgeyByZXN1bHRzOiBjdXJyZW50UmVzdWx0cyB9KSkudGhlbigodHJhbnNsYXRlZFRleHQ6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5saXZlQW5ub3VuY2VyLmFubm91bmNlKHRyYW5zbGF0ZWRUZXh0KVxuICAgIH0pXG4gIH1cblxuICBfZmlsdGVycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbHRlcltdPihbXSlcbiAgQElucHV0KClcbiAgZ2V0IGZpbHRlcnMoKTogRmlsdGVyW10ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJzJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGZpbHRlcnModmFsdWU6IEZpbHRlcltdKSB7XG4gICAgY29uc3Qgc2hvdWxkUmVzZXRQYWdlID0gIWVxdWFsKHRoaXMuX2ZpbHRlcnMkLmdldFZhbHVlKCksIHZhbHVlKVxuICAgIHRoaXMuX2ZpbHRlcnMkLm5leHQodmFsdWUpXG4gICAgaWYgKHNob3VsZFJlc2V0UGFnZSkge1xuICAgICAgdGhpcy5yZXNldFBhZ2UoKVxuICAgIH1cbiAgfVxuICBfb3JpZ2luYWxEYXRhOiBSb3dMaXN0R3JpZERhdGFbXSA9IFtdXG4gIF9zb3J0RGlyZWN0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YVNvcnREaXJlY3Rpb24+KERhdGFTb3J0RGlyZWN0aW9uLk5PTkUpXG4gIEBJbnB1dCgpXG4gIGdldCBzb3J0RGlyZWN0aW9uKCk6IERhdGFTb3J0RGlyZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fc29ydERpcmVjdGlvbiQuZ2V0VmFsdWUoKVxuICB9XG4gIHNldCBzb3J0RGlyZWN0aW9uKHZhbHVlOiBEYXRhU29ydERpcmVjdGlvbikge1xuICAgIGlmICh2YWx1ZSA9PT0gRGF0YVNvcnREaXJlY3Rpb24uTk9ORSkge1xuICAgICAgdGhpcy5fZGF0YSQubmV4dChbLi4udGhpcy5fb3JpZ2luYWxEYXRhXSlcbiAgICB9XG4gICAgdGhpcy5fc29ydERpcmVjdGlvbiQubmV4dCh2YWx1ZSlcbiAgfVxuICBfc29ydEZpZWxkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJylcbiAgQElucHV0KClcbiAgZ2V0IHNvcnRGaWVsZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzPy5fc29ydEZpZWxkJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IHNvcnRGaWVsZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fc29ydEZpZWxkJC5uZXh0KHZhbHVlKVxuICB9XG5cbiAgQElucHV0KCkgZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzJykgZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2dyaWRJdGVtU3VidGl0bGVMaW5lcygpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkSXRlbVN1YnRpdGxlTGluZXNUZW1wbGF0ZSB8fCB0aGlzLmdyaWRJdGVtU3VidGl0bGVMaW5lc0NoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIGxpc3RJdGVtU3VidGl0bGVMaW5lc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2xpc3RJdGVtU3VidGl0bGVMaW5lcycpIGxpc3RJdGVtU3VidGl0bGVMaW5lc0NoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9saXN0SXRlbVN1YnRpdGxlTGluZXMoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubGlzdEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGUgfHwgdGhpcy5saXN0SXRlbVN1YnRpdGxlTGluZXNDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSBsaXN0SXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2xpc3RJdGVtJykgbGlzdEl0ZW1DaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfbGlzdEl0ZW0oKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubGlzdEl0ZW1UZW1wbGF0ZSB8fCB0aGlzLmxpc3RJdGVtQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgZ3JpZEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdncmlkSXRlbScpIGdyaWRJdGVtQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2dyaWRJdGVtKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmdyaWRJdGVtVGVtcGxhdGUgfHwgdGhpcy5ncmlkSXRlbUNoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIGxpc3RWYWx1ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2xpc3RWYWx1ZScpIGxpc3RWYWx1ZUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9saXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubGlzdFZhbHVlVGVtcGxhdGUgfHwgdGhpcy5saXN0VmFsdWVDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSB0cmFuc2xhdGlvbktleUxpc3RWYWx1ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3RyYW5zbGF0aW9uS2V5TGlzdFZhbHVlJykgdHJhbnNsYXRpb25LZXlMaXN0VmFsdWVDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfdHJhbnNsYXRpb25LZXlMaXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb25LZXlMaXN0VmFsdWVUZW1wbGF0ZSB8fCB0aGlzLnRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgbnVtYmVyTGlzdFZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnbnVtYmVyTGlzdFZhbHVlJykgbnVtYmVyTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX251bWJlckxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5udW1iZXJMaXN0VmFsdWVUZW1wbGF0ZSB8fCB0aGlzLm51bWJlckxpc3RWYWx1ZUNoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIHJlbGF0aXZlRGF0ZUxpc3RWYWx1ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3JlbGF0aXZlRGF0ZUxpc3RWYWx1ZScpIHJlbGF0aXZlRGF0ZUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9yZWxhdGl2ZURhdGVMaXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVsYXRpdmVEYXRlTGlzdFZhbHVlVGVtcGxhdGUgfHwgdGhpcy5yZWxhdGl2ZURhdGVMaXN0VmFsdWVDaGlsZFRlbXBsYXRlXG4gIH1cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVtb3ZlZCBhbmQgaW5zdGVhZCB0byBjaGFuZ2UgdGhlIHRlbXBsYXRlIG9mIGEgc3BlY2lmaWMgY29sdW1uXG4gICAqIHVzZSB0aGUgbmV3IGFwcHJvYWNoIGluc3RlYWQgYnkgZm9sbG93aW5nIHRoZSBuYW1pbmcgY29udmVudGlvbiBjb2x1bW4gaWQgKyBJZExpc3RWYWx1ZVxuICAgKiBlLmcuIGZvciBhIGNvbHVtbiB3aXRoIHRoZSBpZCAnc3RhdHVzJyB1c2UgcFRlbXBsYXRlPVwic3RhdHVzSWRMaXN0VmFsdWVcIlxuICAgKi9cbiAgQElucHV0KCkgY3VzdG9tTGlzdFZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVtb3ZlZCBhbmQgaW5zdGVhZCB0byBjaGFuZ2UgdGhlIHRlbXBsYXRlIG9mIGEgc3BlY2lmaWMgY29sdW1uXG4gICAqIHVzZSB0aGUgbmV3IGFwcHJvYWNoIGluc3RlYWQgYnkgZm9sbG93aW5nIHRoZSBuYW1pbmcgY29udmVudGlvbiBjb2x1bW4gaWQgKyBJZExpc3RWYWx1ZVxuICAgKiBlLmcuIGZvciBhIGNvbHVtbiB3aXRoIHRoZSBpZCAnc3RhdHVzJyB1c2UgcFRlbXBsYXRlPVwic3RhdHVzSWRMaXN0VmFsdWVcIlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZCgnY3VzdG9tTGlzdFZhbHVlJykgY3VzdG9tTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2N1c3RvbUxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jdXN0b21MaXN0VmFsdWVUZW1wbGF0ZSB8fCB0aGlzLmN1c3RvbUxpc3RWYWx1ZUNoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIHN0cmluZ0xpc3RWYWx1ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3N0cmluZ0xpc3RWYWx1ZScpIHN0cmluZ0xpc3RWYWx1ZUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9zdHJpbmdMaXN0VmFsdWUoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nTGlzdFZhbHVlVGVtcGxhdGUgfHwgdGhpcy5zdHJpbmdMaXN0VmFsdWVDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSBkYXRlTGlzdFZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnZGF0ZUxpc3RWYWx1ZScpIGRhdGVMaXN0VmFsdWVDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfZGF0ZUxpc3RWYWx1ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlTGlzdFZhbHVlVGVtcGxhdGUgfHwgdGhpcy5kYXRlTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgaW5saW5lTGlzdEFjdGlvbnMkOiBPYnNlcnZhYmxlPERhdGFBY3Rpb25bXT5cbiAgb3ZlcmZsb3dMaXN0QWN0aW9ucyQ6IE9ic2VydmFibGU8RGF0YUFjdGlvbltdPlxuICBvdmVyZmxvd0xpc3RNZW51SXRlbXMkOiBPYnNlcnZhYmxlPE1lbnVJdGVtW10+XG4gIGN1cnJlbnRNZW51Um93JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Um93IHwgbnVsbD4obnVsbClcbiAgX2FkZGl0aW9uYWxBY3Rpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YUFjdGlvbltdPihbXSlcbiAgQElucHV0KClcbiAgZ2V0IGFkZGl0aW9uYWxBY3Rpb25zKCk6IERhdGFBY3Rpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZGl0aW9uYWxBY3Rpb25zJC5nZXRWYWx1ZSgpXG4gIH1cbiAgc2V0IGFkZGl0aW9uYWxBY3Rpb25zKHZhbHVlOiBEYXRhQWN0aW9uW10pIHtcbiAgICB0aGlzLl9hZGRpdGlvbmFsQWN0aW9ucyQubmV4dCh2YWx1ZSlcbiAgfVxuXG4gIEBPdXRwdXQoKSB2aWV3SXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdEdyaWREYXRhPigpXG4gIEBPdXRwdXQoKSBlZGl0SXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8TGlzdEdyaWREYXRhPigpXG4gIEBPdXRwdXQoKSBkZWxldGVJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KClcbiAgQE91dHB1dCgpIHBhZ2VTaXplQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpXG4gIEBPdXRwdXQoKSBjb21wb25lbnRTdGF0ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFMaXN0R3JpZENvbXBvbmVudFN0YXRlPigpXG5cbiAgZ2V0IHZpZXdJdGVtT2JzZXJ2ZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZHYgPSB0aGlzLmluamVjdG9yLmdldCgnRGF0YVZpZXdDb21wb25lbnQnLCBudWxsKVxuICAgIHJldHVybiBkdj8udmlld0l0ZW1PYnNlcnZlZCB8fCBkdj8udmlld0l0ZW0ub2JzZXJ2ZWQgfHwgdGhpcy52aWV3SXRlbS5vYnNlcnZlZFxuICB9XG4gIGdldCBlZGl0SXRlbU9ic2VydmVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGR2ID0gdGhpcy5pbmplY3Rvci5nZXQoJ0RhdGFWaWV3Q29tcG9uZW50JywgbnVsbClcbiAgICByZXR1cm4gZHY/LmVkaXRJdGVtT2JzZXJ2ZWQgfHwgZHY/LmVkaXRJdGVtLm9ic2VydmVkIHx8IHRoaXMuZWRpdEl0ZW0ub2JzZXJ2ZWRcbiAgfVxuICBnZXQgZGVsZXRlSXRlbU9ic2VydmVkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGR2ID0gdGhpcy5pbmplY3Rvci5nZXQoJ0RhdGFWaWV3Q29tcG9uZW50JywgbnVsbClcbiAgICByZXR1cm4gZHY/LmRlbGV0ZUl0ZW1PYnNlcnZlZCB8fCBkdj8uZGVsZXRlSXRlbS5vYnNlcnZlZCB8fCB0aGlzLmRlbGV0ZUl0ZW0ub2JzZXJ2ZWRcbiAgfVxuXG4gIGdldCBzb3J0RGlyZWN0aW9uTnVtYmVyKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuc29ydERpcmVjdGlvbiA9PT0gRGF0YVNvcnREaXJlY3Rpb24uQVNDRU5ESU5HKSByZXR1cm4gMVxuICAgIGlmICh0aGlzLnNvcnREaXJlY3Rpb24gPT09IERhdGFTb3J0RGlyZWN0aW9uLkRFU0NFTkRJTkcpIHJldHVybiAtMVxuICAgIHJldHVybiAwXG4gIH1cblxuICBncmlkTWVudUl0ZW1zJDogT2JzZXJ2YWJsZTxNZW51SXRlbVtdPlxuICBfc2VsZWN0ZWRJdGVtJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGlzdEdyaWREYXRhIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIG9ic2VydmVkT3V0cHV0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMClcblxuICBkaXNwbGF5ZWRJdGVtcyQ6IE9ic2VydmFibGU8dW5rbm93bltdPiB8IHVuZGVmaW5lZFxuICBmYWxsYmFja0ltYWdlUGF0aCQhOiBPYnNlcnZhYmxlPHN0cmluZz5cblxuICB0ZW1wbGF0ZXMkOiBCZWhhdmlvclN1YmplY3Q8UXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKVxuICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpXG4gIHNldCB0ZW1wbGF0ZXModmFsdWU6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudGVtcGxhdGVzJC5uZXh0KHZhbHVlKVxuICB9XG5cbiAgdmlld1RlbXBsYXRlcyQ6IEJlaGF2aW9yU3ViamVjdDxRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCB1bmRlZmluZWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpXG4gIEBWaWV3Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSlcbiAgc2V0IHZpZXdUZW1wbGF0ZXModmFsdWU6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudmlld1RlbXBsYXRlcyQubmV4dCh2YWx1ZSlcbiAgfVxuXG4gIHBhcmVudFRlbXBsYXRlcyQ6IEJlaGF2aW9yU3ViamVjdDxRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4gfCBudWxsIHwgdW5kZWZpbmVkPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgbnVsbCB8IHVuZGVmaW5lZFxuICA+KHVuZGVmaW5lZClcbiAgQElucHV0KClcbiAgc2V0IHBhcmVudFRlbXBsYXRlcyh2YWx1ZTogUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+IHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMucGFyZW50VGVtcGxhdGVzJC5uZXh0KHZhbHVlKVxuICB9XG5cbiAgY29sdW1uVHlwZSA9IENvbHVtblR5cGVcbiAgdGVtcGxhdGVzT2JzZXJ2YWJsZXM6IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+PiA9IHt9XG4gIGhhc1ZpZXdQZXJtaXNzaW9uJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTE9DQUxFX0lEKSBsb2NhbGU6IHN0cmluZyxcbiAgICB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZVNlcnZpY2U6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpdmVBbm5vdW5jZXI6IExpdmVBbm5vdW5jZXIsXG4gICAgQEluamVjdChIQVNfUEVSTUlTU0lPTl9DSEVDS0VSKSBAT3B0aW9uYWwoKSBwcml2YXRlIGhhc1Blcm1pc3Npb25DaGVja2VyPzogSGFzUGVybWlzc2lvbkNoZWNrZXJcbiAgKSB7XG4gICAgc3VwZXIobG9jYWxlLCB0cmFuc2xhdGVTZXJ2aWNlKVxuICAgIHRoaXMubmFtZSA9IHRoaXMubmFtZSB8fCB0aGlzLnJvdXRlci51cmwucmVwbGFjZSgvW15BLVphLXowLTldLywgJ18nKVxuICAgIHRoaXMuZmFsbGJhY2tJbWFnZVBhdGgkID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2UuY3VycmVudE1mZSQucGlwZShcbiAgICAgIG1hcCgoY3VycmVudE1mZSkgPT4gdGhpcy5nZXRGYWxsYmFja0ltYWdlUGF0aChjdXJyZW50TWZlKSlcbiAgICApXG4gICAgdGhpcy5kaXNwbGF5ZWRQYWdlU2l6ZXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLl9wYWdlU2l6ZXMkLFxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCgnT0NYX0RBVEFfVEFCTEUuQUxMJyksXG4gICAgICB0aGlzLl9zaG93QWxsT3B0aW9uJCxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbcGFnZVNpemVzLCB0cmFuc2xhdGlvbiwgc2hvd0FsbE9wdGlvbl0pID0+XG4gICAgICAgIHNob3dBbGxPcHRpb24gPyBwYWdlU2l6ZXMuY29uY2F0KHsgc2hvd0FsbDogdHJhbnNsYXRpb24gfSkgOiBwYWdlU2l6ZXNcbiAgICAgIClcbiAgICApXG4gICAgdGhpcy5kaXNwbGF5ZWRQYWdlU2l6ZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9wYWdlU2l6ZSQsIHRoaXMuX3BhZ2VTaXplcyRdKS5waXBlKFxuICAgICAgbWFwKChbcGFnZVNpemUsIHBhZ2VTaXplc10pID0+IHBhZ2VTaXplID8/IHBhZ2VTaXplcy5maW5kKCh2YWwpOiB2YWwgaXMgbnVtYmVyID0+IHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSA/PyA1MClcbiAgICApXG4gICAgdGhpcy5pbmxpbmVMaXN0QWN0aW9ucyQgPSB0aGlzLl9hZGRpdGlvbmFsQWN0aW9ucyQucGlwZShcbiAgICAgIG1hcCgoYWN0aW9ucykgPT4gYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gIWFjdGlvbi5zaG93QXNPdmVyZmxvdykpXG4gICAgKVxuICAgIHRoaXMub3ZlcmZsb3dMaXN0QWN0aW9ucyQgPSB0aGlzLl9hZGRpdGlvbmFsQWN0aW9ucyQucGlwZShcbiAgICAgIG1hcCgoYWN0aW9ucykgPT4gYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLnNob3dBc092ZXJmbG93KSlcbiAgICApXG4gICAgdGhpcy5vdmVyZmxvd0xpc3RNZW51SXRlbXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5vdmVyZmxvd0xpc3RBY3Rpb25zJCwgdGhpcy5jdXJyZW50TWVudVJvdyRdKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChbYWN0aW9ucywgcm93XSkgPT5cbiAgICAgICAgdGhpcy5maWx0ZXJBY3Rpb25zQmFzZWRPblBlcm1pc3Npb25zKGFjdGlvbnMpLnBpcGUoXG4gICAgICAgICAgbWFwKChwZXJtaXR0ZWRBY3Rpb25zKSA9PiAoeyBhY3Rpb25zOiBwZXJtaXR0ZWRBY3Rpb25zLCByb3c6IHJvdyB9KSlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIG1lcmdlTWFwKCh7IGFjdGlvbnMsIHJvdyB9KSA9PiB7XG4gICAgICAgIGlmIChhY3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBvZihbXSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChbLi4uYWN0aW9ucy5tYXAoKGEpID0+IGEubGFiZWxLZXkgfHwgJycpXSkucGlwZShcbiAgICAgICAgICBtYXAoKHRyYW5zbGF0aW9ucykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbnMubWFwKChhKSA9PiAoe1xuICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRpb25zW2EubGFiZWxLZXkgfHwgJyddLFxuICAgICAgICAgICAgICBpY29uOiBhLmljb24sXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M6IChhLmNsYXNzZXMgfHwgW10pLmpvaW4oJyAnKSxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGEuZGlzYWJsZWQgfHwgKCEhYS5hY3Rpb25FbmFibGVkRmllbGQgJiYgIXRoaXMuZmllbGRJc1RydXRoeShyb3csIGEuYWN0aW9uRW5hYmxlZEZpZWxkKSksXG4gICAgICAgICAgICAgIHZpc2libGU6ICFhLmFjdGlvblZpc2libGVGaWVsZCB8fCB0aGlzLmZpZWxkSXNUcnV0aHkocm93LCBhLmFjdGlvblZpc2libGVGaWVsZCksXG4gICAgICAgICAgICAgIGNvbW1hbmQ6ICgpID0+IGEuY2FsbGJhY2socm93KSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgKVxuICAgIHRoaXMuaGFzVmlld1Blcm1pc3Npb24kID0gdGhpcy5fdmlld1Blcm1pc3Npb24kLnBpcGUoXG4gICAgICBtYXAoKHBlcm1pc3Npb24pID0+IHtcbiAgICAgICAgaWYgKCFwZXJtaXNzaW9uKSByZXR1cm4gW11cbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocGVybWlzc2lvbikgPyBwZXJtaXNzaW9uIDogW3Blcm1pc3Npb25dXG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgocGVybWlzc2lvbkFycmF5KSA9PiB7XG4gICAgICAgIGlmIChwZXJtaXNzaW9uQXJyYXkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHRydWUpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGVybWlzc2lvbnMoKS5waXBlKG1hcCgocGVybWlzc2lvbnMpID0+IHBlcm1pc3Npb25BcnJheS5ldmVyeSgocCkgPT4gcGVybWlzc2lvbnMuaW5jbHVkZXMocCkpKSlcbiAgICAgIH0pXG4gICAgKVxuXG4gICAgdGhpcy5ncmlkTWVudUl0ZW1zJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5nZXRQZXJtaXNzaW9ucygpLFxuICAgICAgdGhpcy5fYWRkaXRpb25hbEFjdGlvbnMkLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtJC5hc09ic2VydmFibGUoKSxcbiAgICAgIHRoaXMub2JzZXJ2ZWRPdXRwdXRzJC5hc09ic2VydmFibGUoKSxcbiAgICBdKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChbcGVybWlzc2lvbnMsIGFkZGl0aW9uYWxBY3Rpb25zLCBzZWxlY3RlZEl0ZW0sIF9vYnNlcnZlZE91dHB1dHNdKSA9PlxuICAgICAgICB0aGlzLmZpbHRlckFjdGlvbnNCYXNlZE9uUGVybWlzc2lvbnMoYWRkaXRpb25hbEFjdGlvbnMsIHBlcm1pc3Npb25zKS5waXBlKFxuICAgICAgICAgIG1hcCgocGVybWl0dGVkQWN0aW9ucykgPT4gKHsgcGVybWlzc2lvbnMsIGFkZGl0aW9uYWxBY3Rpb25zOiBwZXJtaXR0ZWRBY3Rpb25zLCBzZWxlY3RlZEl0ZW0gfSkpXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICBzd2l0Y2hNYXAoKHsgcGVybWlzc2lvbnMsIGFkZGl0aW9uYWxBY3Rpb25zLCBzZWxlY3RlZEl0ZW0gfSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRHcmlkQWN0aW9uc1RyYW5zbGF0aW9ucyhhZGRpdGlvbmFsQWN0aW9ucywgcGVybWlzc2lvbnMpLnBpcGUoXG4gICAgICAgICAgbWFwKCh0cmFuc2xhdGlvbnMpID0+ICh7IHBlcm1pc3Npb25zLCBhZGRpdGlvbmFsQWN0aW9ucywgc2VsZWN0ZWRJdGVtLCB0cmFuc2xhdGlvbnMgfSkpXG4gICAgICAgIClcbiAgICAgIH0pLFxuICAgICAgbWFwKCh7IHBlcm1pc3Npb25zLCBhZGRpdGlvbmFsQWN0aW9ucywgc2VsZWN0ZWRJdGVtLCB0cmFuc2xhdGlvbnMgfSkgPT5cbiAgICAgICAgdGhpcy5tYXBHcmlkTWVudUl0ZW1zKHBlcm1pc3Npb25zLCBhZGRpdGlvbmFsQWN0aW9ucywgc2VsZWN0ZWRJdGVtLCB0cmFuc2xhdGlvbnMpXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IG9ic2VydmVkT3V0cHV0cyA9IDxhbnk+dGhpcy52aWV3SXRlbS5vYnNlcnZlZCArIDxhbnk+dGhpcy5kZWxldGVJdGVtLm9ic2VydmVkICsgPGFueT50aGlzLmVkaXRJdGVtLm9ic2VydmVkXG4gICAgaWYgKHRoaXMub2JzZXJ2ZWRPdXRwdXRzJC5nZXRWYWx1ZSgpICE9PSBvYnNlcnZlZE91dHB1dHMpIHtcbiAgICAgIHRoaXMub2JzZXJ2ZWRPdXRwdXRzJC5uZXh0KG9ic2VydmVkT3V0cHV0cylcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXllZEl0ZW1zJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2RhdGEkLCB0aGlzLl9maWx0ZXJzJCwgdGhpcy5fc29ydEZpZWxkJCwgdGhpcy5fc29ydERpcmVjdGlvbiRdKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHBhcmFtcykgPT4gdGhpcy50cmFuc2xhdGVJdGVtcyhwYXJhbXMsIHRoaXMuY29sdW1ucywgdGhpcy5jbGllbnRTaWRlRmlsdGVyaW5nLCB0aGlzLmNsaWVudFNpZGVTb3J0aW5nKSksXG4gICAgICBtYXAoKHBhcmFtcykgPT4gdGhpcy5maWx0ZXJJdGVtcyhwYXJhbXMsIHRoaXMuY2xpZW50U2lkZUZpbHRlcmluZykpLFxuICAgICAgbWFwKChwYXJhbXMpID0+IHRoaXMuc29ydEl0ZW1zKHBhcmFtcywgdGhpcy5jb2x1bW5zLCB0aGlzLmNsaWVudFNpZGVTb3J0aW5nKSksXG4gICAgICBtYXAoKFtpdGVtc10pID0+IGl0ZW1zKVxuICAgIClcblxuICAgIHRoaXMuZW1pdENvbXBvbmVudFN0YXRlQ2hhbmdlZCgpXG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy50ZW1wbGF0ZXMkLnZhbHVlPy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgIGNhc2UgJ2xpc3RWYWx1ZSc6XG4gICAgICAgICAgdGhpcy5saXN0VmFsdWVDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJ3RyYW5zbGF0aW9uS2V5TGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdudW1iZXJMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMubnVtYmVyTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdyZWxhdGl2ZURhdGVMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMucmVsYXRpdmVEYXRlTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdjdXN0b21MaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMuY3VzdG9tTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdzdHJpbmdMaXN0VmFsdWUnOlxuICAgICAgICAgIHRoaXMuc3RyaW5nTGlzdFZhbHVlQ2hpbGRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGVcbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICdkYXRlTGlzdFZhbHVlJzpcbiAgICAgICAgICB0aGlzLmRhdGVMaXN0VmFsdWVDaGlsZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIG9uRGVsZXRlUm93KGVsZW1lbnQ6IExpc3RHcmlkRGF0YSkge1xuICAgIHRoaXMuZGVsZXRlSXRlbS5lbWl0KGVsZW1lbnQpXG4gIH1cblxuICBvblZpZXdSb3coZWxlbWVudDogTGlzdEdyaWREYXRhKSB7XG4gICAgdGhpcy52aWV3SXRlbS5lbWl0KGVsZW1lbnQpXG4gIH1cblxuICBvbkVkaXRSb3coZWxlbWVudDogTGlzdEdyaWREYXRhKSB7XG4gICAgdGhpcy5lZGl0SXRlbS5lbWl0KGVsZW1lbnQpXG4gIH1cblxuICBpbWdFcnJvcihpdGVtOiBMaXN0R3JpZERhdGEpIHtcbiAgICBpdGVtLmltYWdlUGF0aCA9ICcnXG4gIH1cblxuICBnZXRGYWxsYmFja0ltYWdlUGF0aChtZmVJbmZvOiBNZmVJbmZvKSB7XG4gICAgcmV0dXJuIG1mZUluZm8/LnJlbW90ZUJhc2VVcmxcbiAgICAgID8gYCR7bWZlSW5mby5yZW1vdGVCYXNlVXJsfS9vbmVjeC1wb3J0YWwtbGliL2Fzc2V0cy9pbWFnZXMvJHt0aGlzLmZhbGxiYWNrSW1hZ2V9YFxuICAgICAgOiBgLi9vbmVjeC1wb3J0YWwtbGliL2Fzc2V0cy9pbWFnZXMvJHt0aGlzLmZhbGxiYWNrSW1hZ2V9YFxuICB9XG5cbiAgc2V0U2VsZWN0ZWRJdGVtKGl0ZW06IExpc3RHcmlkRGF0YSkge1xuICAgIHRoaXMuX3NlbGVjdGVkSXRlbSQubmV4dChpdGVtKVxuICB9XG5cbiAgcmVzb2x2ZUZpZWxkRGF0YShvYmplY3Q6IGFueSwga2V5OiBhbnkpIHtcbiAgICByZXR1cm4gT2JqZWN0VXRpbHMucmVzb2x2ZUZpZWxkRGF0YShvYmplY3QsIGtleSlcbiAgfVxuXG4gIGVtaXRDb21wb25lbnRTdGF0ZUNoYW5nZWQoc3RhdGU6IERhdGFMaXN0R3JpZENvbXBvbmVudFN0YXRlID0ge30pIHtcbiAgICB0aGlzLmRpc3BsYXllZFBhZ2VTaXplJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgocGFnZVNpemUpID0+IHtcbiAgICAgIHRoaXMuY29tcG9uZW50U3RhdGVDaGFuZ2VkLmVtaXQoe1xuICAgICAgICBmaWx0ZXJzOiB0aGlzLmZpbHRlcnMsXG4gICAgICAgIHBhZ2VTaXplLFxuICAgICAgICBhY3RpdmVQYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgb25QYWdlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBwYWdlID0gZXZlbnQuZmlyc3QgLyBldmVudC5yb3dzXG4gICAgdGhpcy5wYWdlID0gcGFnZVxuICAgIHRoaXMucGFnZVNpemUgPSBldmVudC5yb3dzXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHBhZ2UpXG4gICAgdGhpcy5wYWdlU2l6ZUNoYW5nZWQuZW1pdChldmVudC5yb3dzKVxuICAgIHRoaXMuZW1pdENvbXBvbmVudFN0YXRlQ2hhbmdlZCh7XG4gICAgICBhY3RpdmVQYWdlOiBwYWdlLFxuICAgICAgcGFnZVNpemU6IGV2ZW50LnJvd3MsXG4gICAgfSlcbiAgfVxuXG4gIHJlc2V0UGFnZSgpIHtcbiAgICB0aGlzLnBhZ2UgPSAwXG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KHRoaXMucGFnZSlcbiAgICB0aGlzLmVtaXRDb21wb25lbnRTdGF0ZUNoYW5nZWQoKVxuICB9XG5cbiAgZmllbGRJc1RydXRoeShvYmplY3Q6IGFueSwga2V5OiBhbnkpIHtcbiAgICByZXR1cm4gISF0aGlzLnJlc29sdmVGaWVsZERhdGEob2JqZWN0LCBrZXkpXG4gIH1cblxuICBoYXNWaXNpYmxlT3ZlcmZsb3dNZW51SXRlbXMocm93OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5vdmVyZmxvd0xpc3RBY3Rpb25zJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChhY3Rpb25zKSA9PiB0aGlzLmZpbHRlckFjdGlvbnNCYXNlZE9uUGVybWlzc2lvbnMoYWN0aW9ucykpLFxuICAgICAgbWFwKChhY3Rpb25zKSA9PiBhY3Rpb25zLnNvbWUoKGEpID0+ICFhLmFjdGlvblZpc2libGVGaWVsZCB8fCB0aGlzLmZpZWxkSXNUcnV0aHkocm93LCBhLmFjdGlvblZpc2libGVGaWVsZCkpKVxuICAgIClcbiAgfVxuXG4gIHRvZ2dsZU92ZXJmbG93TWVudShldmVudDogTW91c2VFdmVudCwgbWVudTogTWVudSwgcm93OiBSb3cpIHtcbiAgICB0aGlzLmN1cnJlbnRNZW51Um93JC5uZXh0KHJvdylcbiAgICBtZW51LnRvZ2dsZShldmVudClcbiAgfVxuXG4gIGdldEZpbHRlcmVkQ29sdW1ucygpIHtcbiAgICBsZXQgaWRzOiBzdHJpbmdbXSA9IFsuLi4odGhpcy5zdWJ0aXRsZUxpbmVJZHMgPz8gW10pXVxuICAgIGlmICh0aGlzLnRpdGxlTGluZUlkKSB7XG4gICAgICBpZHMgPSBbdGhpcy50aXRsZUxpbmVJZCwgLi4uKHRoaXMuc3VidGl0bGVMaW5lSWRzID8/IFtdKV1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoKGMpID0+ICFpZHMuaW5jbHVkZXMoYy5pZCkpXG4gIH1cblxuICBmaW5kVGVtcGxhdGUodGVtcGxhdGVzOiBQcmltZVRlbXBsYXRlW10sIG5hbWVzOiBzdHJpbmdbXSk6IFByaW1lVGVtcGxhdGUgfCB1bmRlZmluZWQge1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBuYW1lcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBuYW1lc1tpbmRleF1cbiAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGVtcGxhdGVzLmZpbmQoKHRlbXBsYXRlKSA9PiB0ZW1wbGF0ZS5uYW1lID09PSBuYW1lKVxuICAgICAgaWYgKHRlbXBsYXRlKSB7XG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBnZXRUZW1wbGF0ZShjb2x1bW46IERhdGFUYWJsZUNvbHVtbik6IE9ic2VydmFibGU8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+IHtcbiAgICBpZiAoIXRoaXMudGVtcGxhdGVzT2JzZXJ2YWJsZXNbY29sdW1uLmlkXSkge1xuICAgICAgdGhpcy50ZW1wbGF0ZXNPYnNlcnZhYmxlc1tjb2x1bW4uaWRdID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMudGVtcGxhdGVzJCxcbiAgICAgICAgdGhpcy52aWV3VGVtcGxhdGVzJCxcbiAgICAgICAgdGhpcy5wYXJlbnRUZW1wbGF0ZXMkLFxuICAgICAgXSkucGlwZShcbiAgICAgICAgbWFwKChbdCwgdnQsIHB0XSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRlbXBsYXRlcyA9IFsuLi4odCA/PyBbXSksIC4uLih2dCA/PyBbXSksIC4uLihwdCA/PyBbXSldXG4gICAgICAgICAgY29uc3QgY29sdW1uVGVtcGxhdGUgPSB0ZW1wbGF0ZXMuZmluZCgodGVtcGxhdGUpID0+IHRlbXBsYXRlLm5hbWUgPT09IGNvbHVtbi5pZCArICdJZExpc3RWYWx1ZScpPy50ZW1wbGF0ZVxuICAgICAgICAgIGlmIChjb2x1bW5UZW1wbGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbHVtblRlbXBsYXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIHN3aXRjaCAoY29sdW1uLmNvbHVtblR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZS5EQVRFOlxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGVMaXN0VmFsdWUgPz9cbiAgICAgICAgICAgICAgICB0aGlzLmZpbmRUZW1wbGF0ZSh0ZW1wbGF0ZXMsIFsnZGF0ZUxpc3RWYWx1ZScsICdkZWZhdWx0RGF0ZUxpc3RWYWx1ZSddKT8udGVtcGxhdGUgPz9cbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZS5OVU1CRVI6XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5fbnVtYmVyTGlzdFZhbHVlID8/XG4gICAgICAgICAgICAgICAgdGhpcy5maW5kVGVtcGxhdGUodGVtcGxhdGVzLCBbJ251bWJlckxpc3RWYWx1ZScsICdkZWZhdWx0TnVtYmVyTGlzdFZhbHVlJ10pPy50ZW1wbGF0ZSA/P1xuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlLlJFTEFUSVZFX0RBVEU6XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVsYXRpdmVEYXRlTGlzdFZhbHVlID8/XG4gICAgICAgICAgICAgICAgdGhpcy5maW5kVGVtcGxhdGUodGVtcGxhdGVzLCBbJ3JlbGF0aXZlRGF0ZUxpc3RWYWx1ZScsICdkZWZhdWx0UmVsYXRpdmVEYXRlTGlzdFZhbHVlJ10pPy50ZW1wbGF0ZSA/P1xuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlLlRSQU5TTEFUSU9OX0tFWTpcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGlvbktleUxpc3RWYWx1ZSA/P1xuICAgICAgICAgICAgICAgIHRoaXMuZmluZFRlbXBsYXRlKHRlbXBsYXRlcywgWyd0cmFuc2xhdGlvbktleUxpc3RWYWx1ZScsICdkZWZhdWx0VHJhbnNsYXRpb25LZXlMaXN0VmFsdWUnXSk/LnRlbXBsYXRlID8/XG4gICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGUuQ1VTVE9NOlxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHRoaXMuX2N1c3RvbUxpc3RWYWx1ZSA/P1xuICAgICAgICAgICAgICAgIHRoaXMuZmluZFRlbXBsYXRlKHRlbXBsYXRlcywgWydjdXN0b21MaXN0VmFsdWUnLCAnZGVmYXVsdEN1c3RvbUxpc3RWYWx1ZSddKT8udGVtcGxhdGUgPz9cbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RyaW5nTGlzdFZhbHVlID8/XG4gICAgICAgICAgICAgICAgdGhpcy5maW5kVGVtcGxhdGUodGVtcGxhdGVzLCBbJ3N0cmluZ0xpc3RWYWx1ZScsICdkZWZhdWx0U3RyaW5nTGlzdFZhbHVlJ10pPy50ZW1wbGF0ZSA/P1xuICAgICAgICAgICAgICAgIG51bGxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzT2JzZXJ2YWJsZXNbY29sdW1uLmlkXVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBHcmlkTWVudUl0ZW1zKFxuICAgIHBlcm1pc3Npb25zOiBzdHJpbmdbXSxcbiAgICBhZGRpdGlvbmFsQWN0aW9uczogRGF0YUFjdGlvbltdLFxuICAgIHNlbGVjdGVkSXRlbTogTGlzdEdyaWREYXRhIHwgdW5kZWZpbmVkLFxuICAgIHRyYW5zbGF0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICApOiBNZW51SXRlbVtdIHtcbiAgICBsZXQgZGVsZXRlRGlzYWJsZWQgPSBmYWxzZVxuICAgIGxldCBlZGl0RGlzYWJsZWQgPSBmYWxzZVxuICAgIGxldCB2aWV3RGlzYWJsZWQgPSBmYWxzZVxuXG4gICAgbGV0IGRlbGV0ZVZpc2libGUgPSB0cnVlXG4gICAgbGV0IGVkaXRWaXNpYmxlID0gdHJ1ZVxuICAgIGxldCB2aWV3VmlzaWJsZSA9IHRydWVcblxuICAgIGlmIChzZWxlY3RlZEl0ZW0pIHtcbiAgICAgIHZpZXdEaXNhYmxlZCA9ICEhdGhpcy52aWV3QWN0aW9uRW5hYmxlZEZpZWxkICYmICF0aGlzLmZpZWxkSXNUcnV0aHkoc2VsZWN0ZWRJdGVtLCB0aGlzLnZpZXdBY3Rpb25FbmFibGVkRmllbGQpXG4gICAgICBlZGl0RGlzYWJsZWQgPSAhIXRoaXMuZWRpdEFjdGlvbkVuYWJsZWRGaWVsZCAmJiAhdGhpcy5maWVsZElzVHJ1dGh5KHNlbGVjdGVkSXRlbSwgdGhpcy5lZGl0QWN0aW9uRW5hYmxlZEZpZWxkKVxuICAgICAgZGVsZXRlRGlzYWJsZWQgPVxuICAgICAgICAhIXRoaXMuZGVsZXRlQWN0aW9uRW5hYmxlZEZpZWxkICYmICF0aGlzLmZpZWxkSXNUcnV0aHkoc2VsZWN0ZWRJdGVtLCB0aGlzLmRlbGV0ZUFjdGlvbkVuYWJsZWRGaWVsZClcblxuICAgICAgdmlld1Zpc2libGUgPSAhdGhpcy52aWV3QWN0aW9uVmlzaWJsZUZpZWxkIHx8IHRoaXMuZmllbGRJc1RydXRoeShzZWxlY3RlZEl0ZW0sIHRoaXMudmlld0FjdGlvblZpc2libGVGaWVsZClcbiAgICAgIGVkaXRWaXNpYmxlID0gIXRoaXMuZWRpdEFjdGlvblZpc2libGVGaWVsZCB8fCB0aGlzLmZpZWxkSXNUcnV0aHkoc2VsZWN0ZWRJdGVtLCB0aGlzLmVkaXRBY3Rpb25WaXNpYmxlRmllbGQpXG4gICAgICBkZWxldGVWaXNpYmxlID0gIXRoaXMuZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkIHx8IHRoaXMuZmllbGRJc1RydXRoeShzZWxlY3RlZEl0ZW0sIHRoaXMuZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkKVxuICAgIH1cblxuICAgIGNvbnN0IG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdXG4gICAgY29uc3QgYXV0b21hdGlvbklkID0gJ2RhdGEtZ3JpZC1hY3Rpb24tYnV0dG9uJ1xuICAgIGNvbnN0IGF1dG9tYXRpb25JZEhpZGRlbiA9ICdkYXRhLWdyaWQtYWN0aW9uLWJ1dHRvbi1oaWRkZW4nXG4gICAgaWYgKHRoaXMuc2hvdWxkRGlzcGxheUFjdGlvbih0aGlzLnZpZXdQZXJtaXNzaW9uLCB0aGlzLnZpZXdJdGVtLCBwZXJtaXNzaW9ucykpIHtcbiAgICAgIG1lbnVJdGVtcy5wdXNoKHtcbiAgICAgICAgbGFiZWw6IHRyYW5zbGF0aW9uc1t0aGlzLnZpZXdNZW51SXRlbUtleSB8fCAnT0NYX0RBVEFfTElTVF9HUklELk1FTlUuVklFVyddLFxuICAgICAgICBpY29uOiBQcmltZUljb25zLkVZRSxcbiAgICAgICAgY29tbWFuZDogKCkgPT4gdGhpcy52aWV3SXRlbS5lbWl0KHNlbGVjdGVkSXRlbSksXG4gICAgICAgIGRpc2FibGVkOiB2aWV3RGlzYWJsZWQsXG4gICAgICAgIHZpc2libGU6IHZpZXdWaXNpYmxlLFxuICAgICAgICBhdXRvbWF0aW9uSWQ6IHZpZXdWaXNpYmxlID8gYXV0b21hdGlvbklkIDogYXV0b21hdGlvbklkSGlkZGVuLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvdWxkRGlzcGxheUFjdGlvbih0aGlzLmVkaXRQZXJtaXNzaW9uLCB0aGlzLmVkaXRJdGVtLCBwZXJtaXNzaW9ucykpIHtcbiAgICAgIG1lbnVJdGVtcy5wdXNoKHtcbiAgICAgICAgbGFiZWw6IHRyYW5zbGF0aW9uc1t0aGlzLmVkaXRNZW51SXRlbUtleSB8fCAnT0NYX0RBVEFfTElTVF9HUklELk1FTlUuRURJVCddLFxuICAgICAgICBpY29uOiBQcmltZUljb25zLlBFTkNJTCxcbiAgICAgICAgY29tbWFuZDogKCkgPT4gdGhpcy5lZGl0SXRlbS5lbWl0KHNlbGVjdGVkSXRlbSksXG4gICAgICAgIGRpc2FibGVkOiBlZGl0RGlzYWJsZWQsXG4gICAgICAgIHZpc2libGU6IGVkaXRWaXNpYmxlLFxuICAgICAgICBhdXRvbWF0aW9uSWQ6IGVkaXRWaXNpYmxlID8gYXV0b21hdGlvbklkIDogYXV0b21hdGlvbklkSGlkZGVuLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvdWxkRGlzcGxheUFjdGlvbih0aGlzLmRlbGV0ZVBlcm1pc3Npb24sIHRoaXMuZGVsZXRlSXRlbSwgcGVybWlzc2lvbnMpKSB7XG4gICAgICBtZW51SXRlbXMucHVzaCh7XG4gICAgICAgIGxhYmVsOiB0cmFuc2xhdGlvbnNbdGhpcy5kZWxldGVNZW51SXRlbUtleSB8fCAnT0NYX0RBVEFfTElTVF9HUklELk1FTlUuREVMRVRFJ10sXG4gICAgICAgIGljb246IFByaW1lSWNvbnMuVFJBU0gsXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHRoaXMuZGVsZXRlSXRlbS5lbWl0KHNlbGVjdGVkSXRlbSksXG4gICAgICAgIGRpc2FibGVkOiBkZWxldGVEaXNhYmxlZCxcbiAgICAgICAgdmlzaWJsZTogZGVsZXRlVmlzaWJsZSxcbiAgICAgICAgYXV0b21hdGlvbklkOiBkZWxldGVWaXNpYmxlID8gYXV0b21hdGlvbklkIDogYXV0b21hdGlvbklkSGlkZGVuLFxuICAgICAgfSlcbiAgICB9XG4gICAgY29uc3QgdmFsID0gbWVudUl0ZW1zLmNvbmNhdChcbiAgICAgIGFkZGl0aW9uYWxBY3Rpb25zLm1hcCgoYSkgPT4ge1xuICAgICAgICBjb25zdCBpc1Zpc2libGUgPSAhYS5hY3Rpb25WaXNpYmxlRmllbGQgfHwgdGhpcy5maWVsZElzVHJ1dGh5KHNlbGVjdGVkSXRlbSwgYS5hY3Rpb25WaXNpYmxlRmllbGQpXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGFiZWw6IHRyYW5zbGF0aW9uc1thLmxhYmVsS2V5IHx8ICcnXSxcbiAgICAgICAgICBpY29uOiBhLmljb24sXG4gICAgICAgICAgc3R5bGVDbGFzczogKGEuY2xhc3NlcyB8fCBbXSkuam9pbignICcpLFxuICAgICAgICAgIGRpc2FibGVkOiBhLmRpc2FibGVkIHx8ICghIWEuYWN0aW9uRW5hYmxlZEZpZWxkICYmICF0aGlzLmZpZWxkSXNUcnV0aHkoc2VsZWN0ZWRJdGVtLCBhLmFjdGlvbkVuYWJsZWRGaWVsZCkpLFxuICAgICAgICAgIHZpc2libGU6IGlzVmlzaWJsZSxcbiAgICAgICAgICBjb21tYW5kOiAoKSA9PiBhLmNhbGxiYWNrKHNlbGVjdGVkSXRlbSksXG4gICAgICAgICAgYXV0b21hdGlvbklkOiBpc1Zpc2libGUgPyBhdXRvbWF0aW9uSWQgOiBhdXRvbWF0aW9uSWRIaWRkZW4sXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICAgIHJldHVybiB2YWxcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R3JpZEFjdGlvbnNUcmFuc2xhdGlvbnMoXG4gICAgYWRkaXRpb25hbEFjdGlvbnM6IERhdGFBY3Rpb25bXSxcbiAgICBwZXJtaXNzaW9uczogc3RyaW5nW11cbiAgKTogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoW1xuICAgICAgdGhpcy52aWV3TWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLlZJRVcnLFxuICAgICAgdGhpcy5lZGl0TWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLkVESVQnLFxuICAgICAgdGhpcy5kZWxldGVNZW51SXRlbUtleSB8fCAnT0NYX0RBVEFfTElTVF9HUklELk1FTlUuREVMRVRFJyxcbiAgICAgIC4uLmFkZGl0aW9uYWxBY3Rpb25zXG4gICAgICAgIC5maWx0ZXIoKGFjdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHBlcm1pc3Npb25zQXJyYXkgPSBBcnJheS5pc0FycmF5KGFjdGlvbi5wZXJtaXNzaW9uKSA/IGFjdGlvbi5wZXJtaXNzaW9uIDogW2FjdGlvbi5wZXJtaXNzaW9uXVxuICAgICAgICAgIHJldHVybiBwZXJtaXNzaW9uc0FycmF5LmV2ZXJ5KChwKSA9PiBwZXJtaXNzaW9ucy5pbmNsdWRlcyhwKSlcbiAgICAgICAgfSlcbiAgICAgICAgLm1hcCgoYSkgPT4gYS5sYWJlbEtleSB8fCAnJyksXG4gICAgXSlcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkRGlzcGxheUFjdGlvbihcbiAgICBwZXJtaXNzaW9uOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgICBlbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PixcbiAgICB1c2VyUGVybWlzc2lvbnM6IHN0cmluZ1tdXG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBlcm1pc3Npb25zID0gQXJyYXkuaXNBcnJheShwZXJtaXNzaW9uKSA/IHBlcm1pc3Npb24gOiBwZXJtaXNzaW9uID8gW3Blcm1pc3Npb25dIDogW11cbiAgICByZXR1cm4gZW1pdHRlci5vYnNlcnZlZCAmJiBwZXJtaXNzaW9ucy5ldmVyeSgocCkgPT4gdXNlclBlcm1pc3Npb25zLmluY2x1ZGVzKHApKVxuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJBY3Rpb25zQmFzZWRPblBlcm1pc3Npb25zKGFjdGlvbnM6IERhdGFBY3Rpb25bXSwgcGVybWlzc2lvbnM/OiBzdHJpbmdbXSk6IE9ic2VydmFibGU8RGF0YUFjdGlvbltdPiB7XG4gICAgY29uc3QgcGVybWlzc2lvbnMkID0gcGVybWlzc2lvbnMgPyBvZihwZXJtaXNzaW9ucykgOiB0aGlzLmdldFBlcm1pc3Npb25zKClcbiAgICByZXR1cm4gcGVybWlzc2lvbnMkLnBpcGUoXG4gICAgICBtYXAoKHBlcm1pc3Npb25zKSA9PiB7XG4gICAgICAgIHJldHVybiBhY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWN0aW9uUGVybWlzc2lvbnMgPSBBcnJheS5pc0FycmF5KGFjdGlvbi5wZXJtaXNzaW9uKSA/IGFjdGlvbi5wZXJtaXNzaW9uIDogW2FjdGlvbi5wZXJtaXNzaW9uXVxuICAgICAgICAgIHJldHVybiBhY3Rpb25QZXJtaXNzaW9ucy5ldmVyeSgocCkgPT4gcGVybWlzc2lvbnMuaW5jbHVkZXMocCkpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGVybWlzc2lvbnMoKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xuICAgIGlmICh0aGlzLmhhc1Blcm1pc3Npb25DaGVja2VyPy5nZXRQZXJtaXNzaW9ucykge1xuICAgICAgcmV0dXJuIHRoaXMuaGFzUGVybWlzc2lvbkNoZWNrZXIuZ2V0UGVybWlzc2lvbnMoKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLmdldFBlcm1pc3Npb25zKClcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIihkaXNwbGF5ZWRQYWdlU2l6ZSQgfCBhc3luYykgYXMgZGlzcGxheWVkUGFnZVNpemVcIj5cbiAgPHAtZGF0YVZpZXdcbiAgICAqbmdJZj1cIihjb2x1bW5UZW1wbGF0ZXMkIHwgYXN5bmMpID8/IHt9IGFzIGNvbHVtblRlbXBsYXRlc1wiXG4gICAgW3ZhbHVlXT1cIihkaXNwbGF5ZWRJdGVtcyQgfCBhc3luYykgPz8gW11cIlxuICAgIFtwYWdpbmF0b3JdPVwicGFnaW5hdG9yXCJcbiAgICBbZmlyc3RdPVwicGFnZSAqIGRpc3BsYXllZFBhZ2VTaXplXCJcbiAgICAob25QYWdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICBbcm93c109XCJkaXNwbGF5ZWRQYWdlU2l6ZVwiXG4gICAgW2xheW91dF09XCJsYXlvdXRcIlxuICAgIFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXG4gICAgY3VycmVudFBhZ2VSZXBvcnRUZW1wbGF0ZT1cInt7ICh0b3RhbFJlY29yZHNPblNlcnZlcigpID8gY3VycmVudFBhZ2VTaG93aW5nV2l0aFRvdGFsT25TZXJ2ZXJLZXkgOiBjdXJyZW50UGFnZVNob3dpbmdLZXkpIHwgdHJhbnNsYXRlOnBhcmFtcygpIH19XCJcbiAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cIihkaXNwbGF5ZWRQYWdlU2l6ZXMkIHwgYXN5bmMpID8/IFtdXCJcbiAgICBpZD1cImRhdGFMaXN0R3JpZF97e25hbWV9fVwiXG4gICAgcGFnaW5hdG9yRHJvcGRvd25BcHBlbmRUbz1cImJvZHlcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlICNncmlkSXRlbSBsZXQtcm93cyBwVGVtcGxhdGU9XCJncmlkSXRlbVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLW5vZ3V0dGVyIGdyaWQgZ3JpZC1ub2d1dHRlclwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWl0ZW0gW25nRm9yT2ZdPVwicm93c1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9ncmlkSXRlbSA/IF9ncmlkSXRlbSA6IGRlZmF1bHRHcmlkSXRlbVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDppdGVtfVwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbGlzdEl0ZW0gbGV0LXJvd3MgcFRlbXBsYXRlPVwibGlzdEl0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLWdyaWQgcC1ub2d1dHRlciBncmlkIGdyaWQtbm9ndXR0ZXJcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1pdGVtIFtuZ0Zvck9mXT1cInJvd3NcIj5cbiAgICAgICAgICBAZGVmZXIgKG9uIHZpZXdwb3J0OyBvbiBpZGxlKXtcbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfbGlzdEl0ZW0gPyBfbGlzdEl0ZW0gOiBkZWZhdWx0TGlzdEl0ZW1cIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgJGltcGxpY2l0Oml0ZW0sXG4gICAgICAgICAgICAgIGl0ZW06aXRlbSxcbiAgICAgICAgICAgICAgY29sdW1uVGVtcGxhdGVzOiBjb2x1bW5UZW1wbGF0ZXNcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIH0gQHBsYWNlaG9sZGVyIHtcbiAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogODBweFwiPjwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5XCI+XG4gICAgICA8c3Bhbj57eyBlbXB0eVJlc3VsdHNNZXNzYWdlIHx8IChcIk9DWF9EQVRBX0xJU1RfR1JJRC5FTVBUWV9SRVNVTFRcIiB8IHRyYW5zbGF0ZSkgfX08L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9wLWRhdGFWaWV3PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEdyaWRJdGVtIGxldC1pdGVtPlxuICA8ZGl2IGNsYXNzPVwiY29sLTEyIGxnOmNvbC02IHhsOmNvbC00IGZsZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0YS1ncmlkLWl0ZW0gY2FyZCBmbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHctMTIgbGc6dy0xMSBtYi00IG10LTQgYWxpZ24tc2VsZi1zdHJldGNoXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG1iLTNcIj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIGNsYXNzPVwiaW1hZ2VcIlxuICAgICAgICAgIHNyYz1cInt7IGl0ZW0uaW1hZ2VQYXRoIHx8IChmYWxsYmFja0ltYWdlUGF0aCQgfCBhc3luYykgfX1cIlxuICAgICAgICAgIChlcnJvcik9XCJpbWdFcnJvcihpdGVtKVwiXG4gICAgICAgICAgYWx0PVwie3tyZXNvbHZlRmllbGREYXRhKGl0ZW0sIHRpdGxlTGluZUlkKXx8ICcnfX1cIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGEtZ3JpZC1pdGVtcyBmbGV4LXJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLW5hbWUgZm9udC1tZWRpdW0gbXItMyB0ZXh0LTJ4bFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1ZpZXdQZXJtaXNzaW9uJCB8IGFzeW5jIGFzIGhhc1ZpZXdQZXJtaXNzaW9uOyBlbHNlIG5vVmlld1Blcm1pc3Npb25cIj5cbiAgICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiXCIgKGNsaWNrKT1cIm9uVmlld1JvdyhpdGVtKVwiPnt7IHJlc29sdmVGaWVsZERhdGEoaXRlbSwgdGl0bGVMaW5lSWQpIHx8ICcnIH19PC9hPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vVmlld1Blcm1pc3Npb24+XG4gICAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlwiPnt7IHJlc29sdmVGaWVsZERhdGEoaXRlbSwgdGl0bGVMaW5lSWQpIHx8ICcnIH19PC9hPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzID8gX2dyaWRJdGVtU3VidGl0bGVMaW5lcyA6IGRlZmF1bHRHcmlkSXRlbVN1YnRpdGxlTGluZXNcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6aXRlbX1cIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIoZ3JpZE1lbnVJdGVtcyQgfCBhc3luYykgYXMgZ3JpZE1lbnVJdGVtc1wiPlxuICAgICAgICAgIDxwLW1lbnUgI21lbnUgW21vZGVsXT1cImdyaWRNZW51SXRlbXNcIiBbcG9wdXBdPVwidHJ1ZVwiIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tZW51PlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgIChjbGljayk9XCJzZXRTZWxlY3RlZEl0ZW0oaXRlbSk7IG1lbnUudG9nZ2xlKCRldmVudClcIlxuICAgICAgICAgICAgaWNvbj1cInBpIHBpLWVsbGlwc2lzLXZcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInT0NYX0RBVEFfTElTVF9HUklELk1PUkVfQUNUSU9OU19BUklBX0xBQkVMJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cIm1vcmUtYWN0aW9ucy1tZW51LWJ1dHRvbiBtZW51LWJ0blwiXG4gICAgICAgICAgICBbYXR0ci5uYW1lXT1cIidkYXRhLWdyaWQtaXRlbS1tZW51LWJ1dHRvbidcIlxuICAgICAgICAgICAgW3BUb29sdGlwXT1cIidPQ1hfREFUQV9MSVNUX0dSSUQuTU9SRV9BQ1RJT05TX1RPT0xUSVAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRHcmlkSXRlbVN1YnRpdGxlTGluZXMgbGV0LWl0ZW0+XG4gIDxkaXYgKm5nRm9yPVwibGV0IHN1YnRpdGxlTGluZUlkIG9mIHN1YnRpdGxlTGluZUlkc1wiIGNsYXNzPVwic3VidGl0bGVMaW5lIGVkaXQtdGltZSB0ZXh0LXhsIG15LTNcIj5cbiAgICB7eyByZXNvbHZlRmllbGREYXRhKGl0ZW0sIHN1YnRpdGxlTGluZUlkKSB9fVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRMaXN0SXRlbSBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtY29sdW1uVGVtcGxhdGVzPVwiY29sdW1uVGVtcGxhdGVzXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdJZj1cImNvbHVtblRlbXBsYXRlc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRhLWxpc3QtaXRlbXMgcC0zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1uYW1lLXJvdyBmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLW5hbWUgbXItMyB0ZXh0LTJ4bCBmb250LW1lZGl1bSBhbGlnbi1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGl0bGVMaW5lSWRcIj57eyByZXNvbHZlRmllbGREYXRhKGl0ZW0sIHRpdGxlTGluZUlkKSB8fCAnJyB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJ2aWV3SXRlbU9ic2VydmVkICYmICghdmlld0FjdGlvblZpc2libGVGaWVsZCB8fCBmaWVsZElzVHJ1dGh5KGl0ZW0sIHZpZXdBY3Rpb25WaXNpYmxlRmllbGQpKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBpZD1cInt7cmVzb2x2ZUZpZWxkRGF0YShpdGVtLCAnaWQnKX19LXZpZXdCdXR0b25cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLWV5ZVwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgbWItMSBtci0yIHZpZXdMaXN0SXRlbUJ1dHRvblwiXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCIodmlld01lbnVJdGVtS2V5IHx8ICdPQ1hfREFUQV9MSVNUX0dSSUQuTUVOVS5WSUVXJykgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIih2aWV3TWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLlZJRVcnKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvblZpZXdSb3coaXRlbSlcIlxuICAgICAgICAgICAgICAqb2N4SWZQZXJtaXNzaW9uPVwidmlld1Blcm1pc3Npb25cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiISF2aWV3QWN0aW9uRW5hYmxlZEZpZWxkICYmICFmaWVsZElzVHJ1dGh5KGl0ZW0sIHZpZXdBY3Rpb25FbmFibGVkRmllbGQpXCJcbiAgICAgICAgICAgICAgW2F0dHIubmFtZV09XCInZGF0YS1saXN0LWFjdGlvbi1idXR0b24nXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cImVkaXRJdGVtT2JzZXJ2ZWQgJiYgKCFlZGl0QWN0aW9uVmlzaWJsZUZpZWxkIHx8IGZpZWxkSXNUcnV0aHkoaXRlbSwgZWRpdEFjdGlvblZpc2libGVGaWVsZCkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwie3tyZXNvbHZlRmllbGREYXRhKGl0ZW0sICdpZCcpfX0tZWRpdEJ1dHRvblwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tdGV4dCBtYi0xIG1yLTIgZWRpdExpc3RJdGVtQnV0dG9uXCJcbiAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXBlbmNpbFwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIihlZGl0TWVudUl0ZW1LZXkgfHwgJ09DWF9EQVRBX0xJU1RfR1JJRC5NRU5VLkVESVQnKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKGVkaXRNZW51SXRlbUtleSB8fCAnT0NYX0RBVEFfTElTVF9HUklELk1FTlUuRURJVCcpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRWRpdFJvdyhpdGVtKVwiXG4gICAgICAgICAgICAgICpvY3hJZlBlcm1pc3Npb249XCJlZGl0UGVybWlzc2lvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhIWVkaXRBY3Rpb25FbmFibGVkRmllbGQgJiYgIWZpZWxkSXNUcnV0aHkoaXRlbSwgZWRpdEFjdGlvbkVuYWJsZWRGaWVsZClcIlxuICAgICAgICAgICAgICBbYXR0ci5uYW1lXT1cIidkYXRhLWxpc3QtYWN0aW9uLWJ1dHRvbidcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiZGVsZXRlSXRlbU9ic2VydmVkICYmICghZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkIHx8IGZpZWxkSXNUcnV0aHkoaXRlbSwgZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkKSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJ7e3Jlc29sdmVGaWVsZERhdGEoaXRlbSwgJ2lkJyl9fS1kZWxldGVCdXR0b25cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXRyYXNoXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHQgcC1idXR0b24tZGFuZ2VyIG1iLTEgbXItMiBkZWxldGVMaXN0SXRlbUJ1dHRvblwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIihkZWxldGVNZW51SXRlbUtleSB8fCAnT0NYX0RBVEFfTElTVF9HUklELk1FTlUuREVMRVRFJykgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIihkZWxldGVNZW51SXRlbUtleSB8fCAnT0NYX0RBVEFfTElTVF9HUklELk1FTlUuREVMRVRFJykgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVSb3coaXRlbSlcIlxuICAgICAgICAgICAgICAqb2N4SWZQZXJtaXNzaW9uPVwiZGVsZXRlUGVybWlzc2lvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhIWRlbGV0ZUFjdGlvbkVuYWJsZWRGaWVsZCAmJiAhZmllbGRJc1RydXRoeShpdGVtLCBkZWxldGVBY3Rpb25FbmFibGVkRmllbGQpXCJcbiAgICAgICAgICAgICAgW2F0dHIubmFtZV09XCInZGF0YS1saXN0LWFjdGlvbi1idXR0b24nXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgaW5saW5lTGlzdEFjdGlvbnMkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoIWFjdGlvbi5hY3Rpb25WaXNpYmxlRmllbGQgfHwgZmllbGRJc1RydXRoeShpdGVtLCBhY3Rpb24uYWN0aW9uVmlzaWJsZUZpZWxkKSlcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwie3tyZXNvbHZlRmllbGREYXRhKGl0ZW0sICdpZCcpfX0te3thY3Rpb24uaWQgPyBhY3Rpb24uaWQuY29uY2F0KCdBY3Rpb25CdXR0b24nKSA6ICdpbmxpbmVBY3Rpb25CdXR0b24nfX1cIlxuICAgICAgICAgICAgICAgICpvY3hJZlBlcm1pc3Npb249XCJhY3Rpb24ucGVybWlzc2lvblwiXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJhY3Rpb24uY2xhc3Nlc1wiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiYWN0aW9uLmljb24gfHwgJydcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb24uY2FsbGJhY2soaXRlbSlcIlxuICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJhY3Rpb24ubGFiZWxLZXkgPyAoYWN0aW9uLmxhYmVsS2V5IHwgdHJhbnNsYXRlKSA6ICcnXCJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYWN0aW9uLmxhYmVsS2V5ID8gKGFjdGlvbi5sYWJlbEtleSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGlvbi5kaXNhYmxlZCB8fCAoISFhY3Rpb24uYWN0aW9uRW5hYmxlZEZpZWxkICYmICFmaWVsZElzVHJ1dGh5KGl0ZW0sIGFjdGlvbi5hY3Rpb25FbmFibGVkRmllbGQpKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIubmFtZV09XCInZGF0YS1saXN0LWFjdGlvbi1idXR0b24nXCJcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1Zpc2libGVPdmVyZmxvd01lbnVJdGVtcyhpdGVtKSB8IGFzeW5jXCI+XG4gICAgICAgICAgICA8cC1tZW51ICNtZW51IFttb2RlbF09XCIob3ZlcmZsb3dMaXN0TWVudUl0ZW1zJCB8IGFzeW5jKSB8fCBbXVwiIFtwb3B1cF09XCJ0cnVlXCIgYXBwZW5kVG89XCJib2R5XCI+PC9wLW1lbnU+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIlxuICAgICAgICAgICAgICBbaWNvbl09XCIncGkgcGktZWxsaXBzaXMtdidcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlT3ZlcmZsb3dNZW51KCRldmVudCwgbWVudSwgaXRlbSlcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidPQ1hfREFUQV9MSVNUX0dSSUQuTU9SRV9BQ1RJT05TX0FSSUFfTEFCRUwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIidPQ1hfREFUQV9MSVNUX0dSSUQuTU9SRV9BQ1RJT05TX1RPT0xUSVAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgW2F0dHIubmFtZV09XCInZGF0YS1saXN0LW92ZXJmbG93LWl0ZW0tbWVudS1idXR0b24nXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1saWdodCBteS0xXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzID8gX2xpc3RJdGVtU3VidGl0bGVMaW5lcyA6IGRlZmF1bHRMaXN0SXRlbVN1YnRpdGxlTGluZXNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXBcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sIG9mIGdldEZpbHRlcmVkQ29sdW1ucygpXCIgY2xhc3M9XCJ3LTEycmVtIG15LTIgbXItMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJvbGRcIiBbb2N4VG9vbHRpcE9uT3ZlcmZsb3ddPVwiY29sLm5hbWVLZXkgfCB0cmFuc2xhdGVcIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cbiAgICAgICAgICAgIHt7IGNvbC5uYW1lS2V5IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW29jeFRvb2x0aXBPbk92ZXJmbG93XT1cImNvbC5jb2x1bW5UeXBlID09PSBjb2x1bW5UeXBlLlRSQU5TTEFUSU9OX0tFWSA/IChyZXNvbHZlRmllbGREYXRhKGl0ZW0sY29sLmlkKSB8IHRyYW5zbGF0ZSkgOiByZXNvbHZlRmllbGREYXRhKGl0ZW0sIGNvbC5pZClcIlxuICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAZGVmZXIob24gdmlld3BvcnQ7KXtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2xpc3RWYWx1ZSA/IF9saXN0VmFsdWU6IGRlZmF1bHRMaXN0VmFsdWVcIlxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgIHJvd09iamVjdDogaXRlbSxcbiAgICAgICAgICAgICAgICBjb2x1bW46IGNvbCxcbiAgICAgICAgICAgICAgICBjb2x1bW5UZW1wbGF0ZXM6IGNvbHVtblRlbXBsYXRlc1xuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9IEBwbGFjZWhvbGRlciB7XG4gICAgICAgICAgICA8cC1za2VsZXRvbiB3aWR0aD1cIjVyZW1cIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRMaXN0SXRlbVN1YnRpdGxlTGluZXMgbGV0LWl0ZW09XCIkaW1wbGljaXRcIj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgc3VidGl0bGVMaW5lSWQgb2Ygc3VidGl0bGVMaW5lSWRzXCIgY2xhc3M9XCJzdWJ0aXRsZUxpbmUgdGV4dC14bCBteS0zXCI+XG4gICAge3sgcmVzb2x2ZUZpZWxkRGF0YShpdGVtLCBzdWJ0aXRsZUxpbmVJZCkgfX1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRMaXN0VmFsdWUgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIiBsZXQtY29sdW1uVGVtcGxhdGVzPVwiY29sdW1uVGVtcGxhdGVzXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cImNvbHVtblRlbXBsYXRlc1tjb2x1bW4uaWRdXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW5UZW1wbGF0ZXNbY29sdW1uLmlkXVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICByb3dPYmplY3Q6IHJvd09iamVjdCxcbiAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtblxuICAgICAgICAgICAgfVwiXG4gID5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZGVmYXVsdFN0cmluZ0xpc3RWYWx1ZVwiIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gIDxuZy1jb250YWluZXI+IHt7IHJlc29sdmVGaWVsZERhdGEocm93T2JqZWN0LCBjb2x1bW4uaWQpIH19IDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImRlZmF1bHROdW1iZXJMaXN0VmFsdWVcIiBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICA8bmctY29udGFpbmVyPiB7eyByZXNvbHZlRmllbGREYXRhKHJvd09iamVjdCwgY29sdW1uLmlkKSB8IG51bWJlciB9fSA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkZWZhdWx0Q3VzdG9tTGlzdFZhbHVlXCIgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj4gPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImRlZmF1bHREYXRlTGlzdFZhbHVlXCIgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lcj4ge3sgcmVzb2x2ZUZpZWxkRGF0YShyb3dPYmplY3QsIGNvbHVtbi5pZCkgfCBkYXRlOiBjb2x1bW4uZGF0ZUZvcm1hdCA/PyAnbWVkaXVtJyB9fSA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJkZWZhdWx0UmVsYXRpdmVEYXRlTGlzdFZhbHVlXCIgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lcj5cbiAgICB7eyAnT0NYX0RBVEFfVEFCTEUuRURJVEVEJyB8IHRyYW5zbGF0ZSB9fSB7eyByZXNvbHZlRmllbGREYXRhKHJvd09iamVjdCwgY29sdW1uLmlkKSB8IHRpbWVhZ28gfX1cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZGVmYXVsdFRyYW5zbGF0aW9uS2V5TGlzdFZhbHVlXCIgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgPG5nLWNvbnRhaW5lcj4ge3sgcmVzb2x2ZUZpZWxkRGF0YShyb3dPYmplY3QsIGNvbHVtbi5pZCkgfCB0cmFuc2xhdGUgfX0gPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1891,6 +1891,7 @@ class DataListGridComponent extends DataSortBase {
|
|
|
1891
1891
|
emitComponentStateChanged(state = {}) {
|
|
1892
1892
|
this.displayedPageSize$.pipe(first()).subscribe((pageSize) => {
|
|
1893
1893
|
this.componentStateChanged.emit({
|
|
1894
|
+
filters: this.filters,
|
|
1894
1895
|
pageSize,
|
|
1895
1896
|
activePage: this.page,
|
|
1896
1897
|
...state,
|