angular-multiselect3 11.0.4 → 11.0.5
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.
|
@@ -323,18 +323,13 @@ export class AngularMultiSelect {
|
|
|
323
323
|
return item[this.settings.primaryKey];
|
|
324
324
|
}
|
|
325
325
|
isSelected(clickedItem) {
|
|
326
|
-
if (clickedItem.disabled
|
|
326
|
+
if (clickedItem.disabled ||
|
|
327
|
+
!this.selectedItems ||
|
|
328
|
+
this.selectedItems.length === 0) {
|
|
327
329
|
return false;
|
|
328
330
|
}
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
this.selectedItems.forEach((item) => {
|
|
332
|
-
if (clickedItem[this.settings.primaryKey] ===
|
|
333
|
-
item[this.settings.primaryKey]) {
|
|
334
|
-
found = true;
|
|
335
|
-
}
|
|
336
|
-
});
|
|
337
|
-
return found;
|
|
331
|
+
return this.selectedItems.some((item) => clickedItem[this.settings.primaryKey] ===
|
|
332
|
+
item[this.settings.primaryKey]);
|
|
338
333
|
}
|
|
339
334
|
addSelected(item) {
|
|
340
335
|
if (item.disabled) {
|
|
@@ -351,13 +346,13 @@ export class AngularMultiSelect {
|
|
|
351
346
|
this.onTouchedCallback(this.selectedItems);
|
|
352
347
|
}
|
|
353
348
|
removeSelected(clickedItem) {
|
|
354
|
-
this.selectedItems
|
|
355
|
-
this.selectedItems.
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
349
|
+
if (this.selectedItems) {
|
|
350
|
+
const position = this.selectedItems.findIndex((item) => clickedItem[this.settings.primaryKey] ===
|
|
351
|
+
item[this.settings.primaryKey]);
|
|
352
|
+
if (position !== -1) {
|
|
353
|
+
this.selectedItems.splice(position, 1);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
361
356
|
this.onChangeCallback(this.selectedItems);
|
|
362
357
|
this.onTouchedCallback(this.selectedItems);
|
|
363
358
|
}
|
|
@@ -1041,4 +1036,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
1041
1036
|
providers: [ListFilterPipe, ClickOutsideService],
|
|
1042
1037
|
}]
|
|
1043
1038
|
}] });
|
|
1044
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhcjItbXVsdGlzZWxlY3QtZHJvcGRvd24tbGliL3NyYy9saWIvbXVsdGlzZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhcjItbXVsdGlzZWxlY3QtZHJvcGRvd24tbGliL3NyYy9saWIvbXVsdGlzZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBRVosUUFBUSxFQUtSLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsV0FBVyxFQUNYLGlCQUFpQixFQUVqQixhQUFhLEdBR2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzRSxPQUFPLEVBQWdCLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHdCQUF3QixHQUN6QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7QUFFOUQsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQVE7SUFDbEQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFRO0lBQzlDLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUM7SUFDakQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBQ0YsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBVXRCLE1BQU0sT0FBTyxrQkFBa0I7SUFnS3BCO0lBQ0M7SUFDQTtJQUNTO0lBekpuQixJQUFJLENBQWE7SUFHakIsUUFBUSxDQUFtQjtJQUczQixPQUFPLENBQVU7SUFHakIsUUFBUSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBR3RELFVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUd4RCxXQUFXLEdBQTZCLElBQUksWUFBWSxFQUFjLENBQUM7SUFHdkUsYUFBYSxHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO0lBR3pFLE1BQU0sR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUdwRCxPQUFPLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFHckQsYUFBYSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBRzNELGlCQUFpQixHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO0lBRzdFLG1CQUFtQixHQUE2QixJQUFJLFlBQVksRUFFN0QsQ0FBQztJQUdKLGtCQUFrQixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBR2hFLGFBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUczRCxlQUFlLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFdEIsU0FBUyxDQUFPO0lBQ2YsVUFBVSxDQUFRO0lBQ2pCLFdBQVcsQ0FBUztJQUVoQixXQUFXLENBQWE7SUFDdkIsZ0JBQWdCLENBQWE7SUFDN0IsZ0JBQWdCLENBQWE7SUFDNUIsYUFBYSxDQUFhO0lBR3pFLFlBQVksQ0FBQyxLQUFvQjtRQUMvQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBR0QsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCOzs7O29GQUl3RTtRQUMxRSxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsR0FBUSxFQUFFLENBQUM7SUFDdEIsV0FBVyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7SUFFN0IsYUFBYSxDQUFhO0lBQzFCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDMUIsV0FBVyxHQUFZLEtBQUssQ0FBQztJQUM3QixpQkFBaUIsR0FBWSxLQUFLLENBQUM7SUFDbkMseUJBQXlCLEdBQVksS0FBSyxDQUFDO0lBQzNDLFdBQVcsQ0FBYTtJQUMvQixNQUFNLENBQU07SUFDTCxVQUFVLENBQVE7SUFDbEIsU0FBUyxDQUFNO0lBQ2YsVUFBVSxHQUFVLEVBQUUsQ0FBQztJQUN2QixXQUFXLEdBQVUsRUFBRSxDQUFDO0lBQ3hCLGdCQUFnQixHQUFVLEVBQUUsQ0FBQztJQUM3QixTQUFTLENBQU07SUFDZixVQUFVLEdBQVEsSUFBSSxDQUFDO0lBQ3ZCLGNBQWMsQ0FBTTtJQUNwQixjQUFjLENBQU07SUFDcEIsV0FBVyxDQUFNO0lBQ2pCLFFBQVEsQ0FBTTtJQUNkLFNBQVMsQ0FBTTtJQUNmLFlBQVksQ0FBTTtJQUNsQixZQUFZLENBQU07SUFDbEIsa0JBQWtCLENBQU07SUFDeEIsWUFBWSxHQUFRLENBQUMsQ0FBQztJQUN0QixvQkFBb0IsR0FBUSxDQUFDLENBQUM7SUFDOUIsYUFBYSxDQUFNO0lBQ25CLElBQUksQ0FBTTtJQUNWLG1CQUFtQixHQUFXLENBQUMsQ0FBQztJQUN2QyxZQUFZLENBQWU7SUFDcEIsYUFBYSxHQUFXLENBQUMsQ0FBQztJQUMxQixXQUFXLEdBQVEsRUFBRSxDQUFDO0lBQ3RCLGNBQWMsR0FBUSxPQUFPLENBQUM7SUFDOUIsWUFBWSxHQUFXLENBQUMsQ0FBQztJQUN6QixFQUFFLEdBQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM1QyxlQUFlLEdBQXFCO1FBQ2xDLGVBQWUsRUFBRSxLQUFLO1FBQ3RCLElBQUksRUFBRSxRQUFRO1FBQ2QsY0FBYyxFQUFFLElBQUk7UUFDcEIsYUFBYSxFQUFFLFlBQVk7UUFDM0IsZUFBZSxFQUFFLGNBQWM7UUFDL0IsbUJBQW1CLEVBQUUsNkJBQTZCO1FBQ2xELHFCQUFxQixFQUFFLCtCQUErQjtRQUN0RCxrQkFBa0IsRUFBRSxLQUFLO1FBQ3pCLFFBQVEsRUFBRSxFQUFFO1FBQ1osU0FBUyxFQUFFLEdBQUc7UUFDZCxjQUFjLEVBQUUsWUFBWTtRQUM1QixPQUFPLEVBQUUsRUFBRTtRQUNYLFFBQVEsRUFBRSxLQUFLO1FBQ2YscUJBQXFCLEVBQUUsUUFBUTtRQUMvQixZQUFZLEVBQUUsSUFBSTtRQUNsQixXQUFXLEVBQUUsbUJBQW1CO1FBQ2hDLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLFFBQVEsRUFBRSxVQUFVO1FBQ3BCLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLFlBQVksRUFBRSxJQUFJO1FBQ2xCLHFCQUFxQixFQUFFLElBQUk7UUFDM0IsV0FBVyxFQUFFLEtBQUs7UUFDbEIsa0JBQWtCLEVBQUUsS0FBSztRQUN6QixnQkFBZ0IsRUFBRSxLQUFLO1FBQ3ZCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLElBQUk7S0FDaEIsQ0FBQztJQUNGLFVBQVUsR0FBWSxJQUFJLENBQUM7SUFDcEIsVUFBVSxDQUFVO0lBQ3BCLFlBQVksR0FBUSxFQUFFLENBQUM7SUFDOUIsa0JBQWtCLEdBQVksS0FBSyxDQUFDO0lBRTVCLGVBQWUsQ0FBMkI7SUFDM0MscUJBQXFCLEdBQUcsS0FBSyxDQUFDO0lBRXJDLFlBQ1MsV0FBdUIsRUFDdEIsR0FBc0IsRUFDdEIsVUFBMEIsRUFDakIsUUFBNkI7UUFIdkMsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBZ0I7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBcUI7UUFFOUMsSUFBSSxDQUFDLFdBQVc7YUFDYixZQUFZLEVBQUU7YUFDZCxJQUFJLENBQ0gsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUNsQixvQkFBb0IsRUFBRSxFQUN0QixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUNwQjthQUNBLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVuRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksS0FBSyxFQUFFLENBQUM7WUFDcEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHO29CQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRWhDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVE7YUFDOUIsT0FBTyxFQUFFO2FBQ1QsU0FBUyxDQUFDLENBQUMsS0FBaUIsRUFBRSxFQUFFO1lBQy9CLElBQ0UsQ0FBQyxLQUFLLENBQUMsTUFBTTtnQkFDYixDQUFDLElBQUksQ0FBQyxRQUFRO2dCQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQ3JELENBQUM7Z0JBQ0QsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxPQUFPLENBQUMsR0FBUTtRQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFvQixHQUFHLENBQUMsTUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3hFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO2dCQUMxQixDQUFDO2dCQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM1RCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekUsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUNELFNBQVM7UUFDUCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixJQUNFLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxJQUFJLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUM1QyxDQUFDO2dCQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDOUIsa0lBQWtJO1FBQ3BJLENBQUM7SUFDSCxDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2hCLElBQ0UsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxZQUFZO1lBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLEtBQUs7WUFDL0IsSUFBSSxDQUFDLGtCQUFrQixFQUN2QixDQUFDO1lBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUc7Z0JBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO1lBQ25ELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUNELG9DQUFvQztJQUN0QyxDQUFDO0lBQ0QsV0FBVyxDQUFDLElBQVMsRUFBRSxLQUFhLEVBQUUsR0FBVTtRQUM5QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxLQUFLLEdBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBRTFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDVixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNyRSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUNNLFFBQVEsQ0FBQyxDQUFxQjtRQUNuQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDTyxpQkFBaUIsR0FBcUIsSUFBSSxDQUFDO0lBQzNDLGdCQUFnQixHQUFxQixJQUFJLENBQUM7SUFFbEQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzFELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ25DLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQ3RCLENBQUM7b0JBQ0YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUMxRCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUM7d0JBQ0gsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ2hDLE1BQU0sSUFBSSxXQUFXLENBQUMsR0FBRyxFQUFFO2dDQUN6QixHQUFHLEVBQUUsdUVBQXVFOzZCQUM3RSxDQUFDLENBQUM7d0JBQ0wsQ0FBQzs2QkFBTSxDQUFDOzRCQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO3dCQUM3QixDQUFDO29CQUNILENBQUM7b0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQzt3QkFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzVCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDcEUsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2dCQUM3QixDQUFDO2dCQUNELElBQ0UsSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJO29CQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07b0JBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDcEIsQ0FBQztvQkFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDMUIsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDbkMsSUFBSSxDQUFDLElBQUksRUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FDdEIsQ0FBQztvQkFDRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzVELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELHFDQUFxQztJQUNyQyxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELHFDQUFxQztJQUNyQyxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUNELFNBQVMsQ0FBQyxLQUFhLEVBQUUsSUFBUztRQUNoQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFDRCxVQUFVLENBQUMsV0FBZ0I7UUFDekIsSUFBSSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxhQUFhO1lBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ2xDLElBQ0UsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO29CQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFDOUIsQ0FBQztvQkFDRCxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNmLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELFdBQVcsQ0FBQyxJQUFTO1FBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDOztZQUFNLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxjQUFjLENBQUMsV0FBZ0I7UUFDN0IsSUFBSSxDQUFDLGFBQWE7WUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDbEMsSUFDRSxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUM5QixDQUFDO29CQUNELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNqRSxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELGNBQWMsQ0FBQyxHQUFRO1FBQ3JCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM3QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLENBQUM7UUFDRCxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNNLFlBQVk7UUFDakIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsSUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWU7WUFDN0IsSUFBSSxDQUFDLFdBQVc7WUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0I7WUFDaEMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUNqQixDQUFDO1lBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN6QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDUixDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUNNLGFBQWE7UUFDbEIsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNNLHVCQUF1QjtRQUM1QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUM1QyxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDNUMsQ0FBQztZQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUNELGVBQWUsQ0FBQyxLQUFLO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDeEIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUMvQixHQUFHLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztnQkFDL0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNwQyxHQUFHLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztnQkFDL0IsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsMENBQTBDO1lBQzFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQ25DLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQzdDLENBQUM7WUFDRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUMvQixHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdkIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNwQyxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdkIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRTNDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFDRCxpQkFBaUI7UUFDZixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqRCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDYixJQUNFLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztpQkFDeEIsV0FBVyxFQUFFO2lCQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQzFDLENBQUM7Z0JBQ0QsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDakIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUMxQixPQUFPLENBQ0wsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO3lCQUN0QixXQUFXLEVBQUU7eUJBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDM0MsQ0FBQztnQkFDSixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUNmLElBQ0UsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO2lCQUN4QixXQUFXLEVBQUU7aUJBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDMUMsQ0FBQztnQkFDRCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDdEIsT0FBTyxDQUNMLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQzt5QkFDeEIsV0FBVyxFQUFFO3lCQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzNDLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUM1QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDZixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7b0JBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ1YsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRTs0QkFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQ0FDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQ0FDckIsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDakIsQ0FBQzt3QkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDTCxDQUFDO29CQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBTyxFQUFFLEVBQUU7b0JBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO3dCQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUNyQixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNqQixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7b0JBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3ZCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ25CLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtvQkFDckMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRTs0QkFDNUIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0NBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7Z0NBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ25CLENBQUM7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQztvQkFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QixDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQU8sRUFBRSxFQUFFO29CQUNwQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQzt3QkFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDbkIsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO29CQUN0QyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDckIsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsQ0FBQztJQUNILENBQUM7SUFDRCw2QkFBNkI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7UUFDeEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNyQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMvQixDQUFDO0lBQ0QsY0FBYyxDQUFDLElBQVM7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxHQUFHLEVBQUUsQ0FBQztZQUNSLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsQ0FBQzthQUFNLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDakMsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFDRCxVQUFVLENBQUMsR0FBUTtRQUNqQixJQUFJLENBQUMsRUFBRSxJQUFJLENBQUM7UUFFWixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7YUFBTSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25DLE1BQU0sMENBQTBDLENBQUM7UUFDbkQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7SUFDSCxDQUFDO0lBQ0QsZUFBZSxDQUFDLElBQVM7UUFDdkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3BDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztZQUNaLElBQUksR0FBRyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNiLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBTyxFQUFFLEVBQUU7d0JBQzNCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDOzRCQUN4QixHQUFHLEVBQUUsQ0FBQzt3QkFDUixDQUFDO29CQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pFLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLENBQUM7aUJBQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZFLEdBQUcsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUN6QyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDWixJQUFJLEdBQUcsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDYixHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQU8sRUFBRSxFQUFFO3dCQUMzQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQzs0QkFDeEIsR0FBRyxFQUFFLENBQUM7d0JBQ1IsQ0FBQztvQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNqRSxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUN0QixDQUFDO2lCQUFNLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN2RSxHQUFHLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUN2QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsYUFBYSxDQUFDLEdBQWUsRUFBRSxLQUFVO1FBQ3ZDLE1BQU0sVUFBVSxHQUFRLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsR0FBUSxFQUFFLEVBQUU7WUFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDUCxNQUFNLE9BQU8sR0FBUSxFQUFFLENBQUM7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLEdBQUcsR0FBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7WUFDM0IsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUN2QixHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDeEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDWixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNsQixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO29CQUNsQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9CLENBQUM7Z0JBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUMxQixHQUFHLEVBQUUsQ0FBQztnQkFDUixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMzQixHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUN0QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQztZQUVELGtFQUFrRTtZQUNsRSxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDcEUsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQixvQ0FBb0M7WUFDcEMsMEJBQTBCO1lBQzFCLE1BQU07UUFDUixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFDTSxrQkFBa0IsQ0FBQyxHQUFRO1FBQ2hDLElBQUksYUFBYSxHQUFlLEVBQUUsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlDLENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ3ZELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBTyxFQUFFLEVBQUU7d0JBQ2xDLElBQ0UsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDOzZCQUNyQyxRQUFRLEVBQUU7NkJBQ1YsV0FBVyxFQUFFOzZCQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQzdDLENBQUM7NEJBQ0QsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDekIsQ0FBQztvQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBTztvQkFDdkMsS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQzt3QkFDcEIsSUFDRSxFQUFFLENBQUMsSUFBSSxDQUFDOzZCQUNMLFFBQVEsRUFBRTs2QkFDVixXQUFXLEVBQUU7NkJBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFDN0MsQ0FBQzs0QkFDRCxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUN2QixNQUFNO3dCQUNSLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQztZQUNqQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDdEQsQ0FBQztRQUNELElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBTztnQkFDdkMsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7b0JBQ2xDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixLQUFLLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDO3dCQUNwQixJQUNFLEVBQUUsQ0FBQyxJQUFJLENBQUM7NkJBQ0wsUUFBUSxFQUFFOzZCQUNWLFdBQVcsRUFBRTs2QkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUM3QyxDQUFDOzRCQUNELGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ3ZCLE1BQU07d0JBQ1IsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUN0RCxDQUFDO2FBQU0sSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9ELElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNwQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0lBQ0QsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELFdBQVcsQ0FBQyxDQUFNO1FBQ2hCLElBQUksQ0FBQyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELFdBQVcsQ0FBQyxJQUFTO1FBQ25CLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4QixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBQ0QsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELDBCQUEwQjtRQUN4QixJQUFJLG9CQUFvQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztRQUMzRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztRQUM5QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTO1lBQ3pDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbkUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDO2FBQU0sSUFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxRQUFRO1lBQ2xDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQzNCLENBQUM7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDL0IsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7WUFDdEQsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUM7WUFDN0QsTUFBTSxrQkFBa0IsR0FDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBRTlELE1BQU0sVUFBVSxHQUFXLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztZQUNsRCxNQUFNLGFBQWEsR0FBVyxjQUFjLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDO1lBQ3RFLElBQUksYUFBYSxHQUFHLFVBQVUsSUFBSSxjQUFjLEdBQUcsVUFBVSxFQUFFLENBQUM7Z0JBQzlELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsQ0FBQztZQUNELDJFQUEyRTtZQUMzRTs7Ozs7O2tDQU1zQjtRQUN4QixDQUFDO0lBQ0gsQ0FBQztJQUNELGNBQWMsQ0FBQyxLQUFjO1FBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO1FBQzlDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDOUQsSUFBSSxDQUFDLG1CQUFtQjtnQkFDdEIsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO1lBQ3hELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFdBQVc7b0JBQ2QsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQzt3QkFDOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsQ0FBQzt3QkFDcEQsRUFBRTt3QkFDRixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVM7d0JBQzlCLElBQUksQ0FBQztZQUNULENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsY0FBYztvQkFDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztZQUNqRSxDQUFDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsV0FBVztvQkFDZCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ2xFLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUM7WUFDaEMsQ0FBQztZQUNELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBQ0QsY0FBYyxDQUFDLENBQU87UUFDcEIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDcEMsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELFdBQVcsQ0FBQyxHQUFRO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQzNDLElBQUksQ0FBQyxXQUFXLEVBQ2hCLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FDdkIsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztZQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLENBQU0sRUFBRSxFQUFFO2dCQUM3QyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDakIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztnQkFDcEMsQ0FBQztnQkFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO29CQUNwQyxHQUFHLEVBQUUsQ0FBQztnQkFDUixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsQ0FBQzt3R0FsOUJVLGtCQUFrQjs0RkFBbEIsa0JBQWtCLHVwQkFIbEIsQ0FBQywrQkFBK0IsRUFBRSwyQkFBMkIsQ0FBQyxpRUEyRDNELElBQUksNkVBQ0osS0FBSyw4RUFDTCxNQUFNLHFlQWlHVCx3QkFBd0IscUVDdk5yQyx3N3lCQTh0QkEsbzBPRHlUSSxnQkFBZ0IsOEdBR2hCLEtBQUs7OzRGQTk5Qkksa0JBQWtCO2tCQVI5QixTQUFTOytCQUNFLHNCQUFzQixRQUUxQixFQUFFLFNBQVMsRUFBRSx5QkFBeUIsRUFBRSxhQUVuQyxDQUFDLCtCQUErQixFQUFFLDJCQUEyQixDQUFDLGlCQUMxRCxpQkFBaUIsQ0FBQyxJQUFJOzhLQVlyQyxJQUFJO3NCQURILEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixRQUFRO3NCQURQLE1BQU07dUJBQUMsVUFBVTtnQkFJbEIsVUFBVTtzQkFEVCxNQUFNO3VCQUFDLFlBQVk7Z0JBSXBCLFdBQVc7c0JBRFYsTUFBTTt1QkFBQyxhQUFhO2dCQUlyQixhQUFhO3NCQURaLE1BQU07dUJBQUMsZUFBZTtnQkFJdkIsTUFBTTtzQkFETCxNQUFNO3VCQUFDLFFBQVE7Z0JBSWhCLE9BQU87c0JBRE4sTUFBTTt1QkFBQyxTQUFTO2dCQUlqQixhQUFhO3NCQURaLE1BQU07dUJBQUMsZUFBZTtnQkFJdkIsaUJBQWlCO3NCQURoQixNQUFNO3VCQUFDLG1CQUFtQjtnQkFJM0IsbUJBQW1CO3NCQURsQixNQUFNO3VCQUFDLHFCQUFxQjtnQkFNN0Isa0JBQWtCO3NCQURqQixNQUFNO3VCQUFDLG9CQUFvQjtnQkFJNUIsYUFBYTtzQkFEWixNQUFNO3VCQUFDLGVBQWU7Z0JBSXZCLGVBQWU7c0JBRGQsTUFBTTt1QkFBQyxpQkFBaUI7Z0JBR2MsU0FBUztzQkFBL0MsWUFBWTt1QkFBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNHLFVBQVU7c0JBQWpELFlBQVk7dUJBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDRyxXQUFXO3NCQUFuRCxZQUFZO3VCQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRU0sV0FBVztzQkFBdkQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNHLGdCQUFnQjtzQkFBN0QsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNFLGdCQUFnQjtzQkFBN0QsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNHLGFBQWE7c0JBQTNELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHN0MsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLHVCQUF1QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVFqRCxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW9GakMsZUFBZTtzQkFEdEIsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O0FBZzFCeEQsTUFBTSxPQUFPLHdCQUF3Qjt3R0FBeEIsd0JBQXdCO3lHQUF4Qix3QkFBd0IsaUJBMytCeEIsa0JBQWtCLEVBeTlCM0IsY0FBYztZQUNkLElBQUk7WUFDSixnQkFBZ0I7WUFDaEIsS0FBSztZQUNMLE1BQU07WUFDTixLQUFLLGFBUkcsWUFBWSxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsYUF0OUIvQyxrQkFBa0IsRUFrK0IzQixjQUFjO1lBQ2QsSUFBSTtZQUNKLGdCQUFnQjtZQUNoQixLQUFLO1lBQ0wsTUFBTTtZQUNOLEtBQUs7eUdBSUksd0JBQXdCLGFBRnhCLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDLFlBbkJ0QyxZQUFZLEVBQUUsV0FBVyxFQUFFLHFCQUFxQjs7NEZBcUIvQyx3QkFBd0I7a0JBdEJwQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUscUJBQXFCLENBQUM7b0JBQzNELFlBQVksRUFBRTt3QkFDWixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsSUFBSTt3QkFDSixnQkFBZ0I7d0JBQ2hCLEtBQUs7d0JBQ0wsTUFBTTt3QkFDTixLQUFLO3FCQUNOO29CQUNELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsSUFBSTt3QkFDSixnQkFBZ0I7d0JBQ2hCLEtBQUs7d0JBQ0wsTUFBTTt3QkFDTixLQUFLO3FCQUNOO29CQUNELFNBQVMsRUFBRSxDQUFDLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQztpQkFDakQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgSG9zdExpc3RlbmVyLFxuICBPbkRlc3Ryb3ksXG4gIE5nTW9kdWxlLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkNoYW5nZXMsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBBZnRlclZpZXdDaGVja2VkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgQ29udGVudENoaWxkLFxuICBWaWV3Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgRWxlbWVudFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGb3Jtc01vZHVsZSxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBWYWxpZGF0b3IsXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE15RXhjZXB0aW9uIH0gZnJvbSAnLi9tdWx0aXNlbGVjdC5tb2RlbCc7XG5pbXBvcnQgeyBEcm9wZG93blNldHRpbmdzIH0gZnJvbSAnLi9tdWx0aXNlbGVjdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTGlzdEZpbHRlclBpcGUgfSBmcm9tICcuL2xpc3QtZmlsdGVyJztcbmltcG9ydCB7IEl0ZW0sIEJhZGdlLCBTZWFyY2gsIFRlbXBsYXRlUmVuZGVyZXIsIENJY29uIH0gZnJvbSAnLi9tZW51LWl0ZW0nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBWaXJ0dWFsU2Nyb2xsZXJNb2R1bGUsXG4gIFZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCxcbn0gZnJvbSAnLi92aXJ0dWFsLXNjcm9sbC92aXJ0dWFsLXNjcm9sbCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDbGlja091dHNpZGVTZXJ2aWNlIH0gZnJvbSAnLi9jbGljay1vdXRzaWRlLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgRFJPUERPV05fQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQW5ndWxhck11bHRpU2VsZWN0KSxcbiAgbXVsdGk6IHRydWUsXG59O1xuZXhwb3J0IGNvbnN0IERST1BET1dOX0NPTlRST0xfVkFMSURBVElPTjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBbmd1bGFyTXVsdGlTZWxlY3QpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FuZ3VsYXIyLW11bHRpc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeyAnW2NsYXNzXSc6ICdkZWZhdWx0U2V0dGluZ3MuY2xhc3NlcycgfSxcbiAgc3R5bGVVcmxzOiBbJy4vbXVsdGlzZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbRFJPUERPV05fQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUiwgRFJPUERPV05fQ09OVFJPTF9WQUxJREFUSU9OXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQW5ndWxhck11bHRpU2VsZWN0XG4gIGltcGxlbWVudHNcbiAgICBPbkluaXQsXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgT25DaGFuZ2VzLFxuICAgIFZhbGlkYXRvcixcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIE9uRGVzdHJveVxue1xuICBASW5wdXQoKVxuICBkYXRhOiBBcnJheTxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHNldHRpbmdzOiBEcm9wZG93blNldHRpbmdzO1xuXG4gIEBJbnB1dCgpXG4gIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgQE91dHB1dCgnb25TZWxlY3QnKVxuICBvblNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCdvbkRlU2VsZWN0JylcbiAgb25EZVNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCdvblNlbGVjdEFsbCcpXG4gIG9uU2VsZWN0QWxsOiBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PGFueT4+KCk7XG5cbiAgQE91dHB1dCgnb25EZVNlbGVjdEFsbCcpXG4gIG9uRGVTZWxlY3RBbGw6IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4oKTtcblxuICBAT3V0cHV0KCdvbk9wZW4nKVxuICBvbk9wZW46IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgnb25DbG9zZScpXG4gIG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgnb25TY3JvbGxUb0VuZCcpXG4gIG9uU2Nyb2xsVG9FbmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgnb25GaWx0ZXJTZWxlY3RBbGwnKVxuICBvbkZpbHRlclNlbGVjdEFsbDogRXZlbnRFbWl0dGVyPEFycmF5PGFueT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PigpO1xuXG4gIEBPdXRwdXQoJ29uRmlsdGVyRGVTZWxlY3RBbGwnKVxuICBvbkZpbHRlckRlU2VsZWN0QWxsOiBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEFycmF5PGFueT5cbiAgPigpO1xuXG4gIEBPdXRwdXQoJ29uQWRkRmlsdGVyTmV3SXRlbScpXG4gIG9uQWRkRmlsdGVyTmV3SXRlbTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCdvbkdyb3VwU2VsZWN0JylcbiAgb25Hcm91cFNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCdvbkdyb3VwRGVTZWxlY3QnKVxuICBvbkdyb3VwRGVTZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChJdGVtLCB7IHN0YXRpYzogZmFsc2UgfSkgaXRlbVRlbXBsOiBJdGVtO1xuICBAQ29udGVudENoaWxkKEJhZGdlLCB7IHN0YXRpYzogZmFsc2UgfSkgYmFkZ2VUZW1wbDogQmFkZ2U7XG4gIEBDb250ZW50Q2hpbGQoU2VhcmNoLCB7IHN0YXRpYzogZmFsc2UgfSkgc2VhcmNoVGVtcGw6IFNlYXJjaDtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KSBzZWFyY2hJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2VsZWN0ZWRMaXN0JywgeyBzdGF0aWM6IGZhbHNlIH0pIHNlbGVjdGVkTGlzdEVsZW06IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duTGlzdCcsIHsgc3RhdGljOiBmYWxzZSB9KSBkcm9wZG93bkxpc3RFbGVtOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdjdXBwYURyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIGN1cHBhRHJvcGRvd246IEVsZW1lbnRSZWY7XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAuZXNjYXBlJywgWyckZXZlbnQnXSlcbiAgb25Fc2NhcGVEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuZXNjYXBlVG9DbG9zZSkge1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFsnJGV2ZW50J10pXG4gIG9uU2Nyb2xsKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5pc0FjdGl2ZSAmJiB0aGlzLnNldHRpbmdzLnRhZ1RvQm9keSkge1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAvKiAgICAgICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5jdXBwYURyb3Bkb3duLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnNldHRpbmdzLmF1dG9Qb3NpdGlvbil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wRG93blRvcCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueSArIGVsZW0uY2xpZW50SGVpZ2h0ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcERvd25MZWZ0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS54OyAqL1xuICAgIH1cbiAgfVxuXG4gIHZpcnR1YWxkYXRhOiBhbnkgPSBbXTtcbiAgc2VhcmNoVGVybSQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgcHVibGljIHNlbGVjdGVkSXRlbXM6IEFycmF5PGFueT47XG4gIHB1YmxpYyBpc0FjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgaXNTZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGlzRmlsdGVyU2VsZWN0QWxsOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBpc0luZmluaXRlRmlsdGVyU2VsZWN0QWxsOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBncm91cGVkRGF0YTogQXJyYXk8YW55PjtcbiAgZmlsdGVyOiBhbnk7XG4gIHB1YmxpYyBjaHVua0FycmF5OiBhbnlbXTtcbiAgcHVibGljIHNjcm9sbFRvcDogYW55O1xuICBwdWJsaWMgY2h1bmtJbmRleDogYW55W10gPSBbXTtcbiAgcHVibGljIGNhY2hlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgZ3JvdXBDYWNoZWRJdGVtczogYW55W10gPSBbXTtcbiAgcHVibGljIHRvdGFsUm93czogYW55O1xuICBwdWJsaWMgaXRlbUhlaWdodDogYW55ID0gNDEuNjtcbiAgcHVibGljIHNjcmVlbkl0ZW1zTGVuOiBhbnk7XG4gIHB1YmxpYyBjYWNoZWRJdGVtc0xlbjogYW55O1xuICBwdWJsaWMgdG90YWxIZWlnaHQ6IGFueTtcbiAgcHVibGljIHNjcm9sbGVyOiBhbnk7XG4gIHB1YmxpYyBtYXhCdWZmZXI6IGFueTtcbiAgcHVibGljIGxhc3RTY3JvbGxlZDogYW55O1xuICBwdWJsaWMgbGFzdFJlcGFpbnRZOiBhbnk7XG4gIHB1YmxpYyBzZWxlY3RlZExpc3RIZWlnaHQ6IGFueTtcbiAgcHVibGljIGZpbHRlckxlbmd0aDogYW55ID0gMDtcbiAgcHVibGljIGluZmluaXRlRmlsdGVyTGVuZ3RoOiBhbnkgPSAwO1xuICBwdWJsaWMgdmlld1BvcnRJdGVtczogYW55O1xuICBwdWJsaWMgaXRlbTogYW55O1xuICBwdWJsaWMgZHJvcGRvd25MaXN0WU9mZnNldDogbnVtYmVyID0gMDtcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBkcm9wRG93bldpZHRoOiBudW1iZXIgPSAwO1xuICBwdWJsaWMgZHJvcERvd25Ub3A6IGFueSA9ICcnO1xuICBwdWJsaWMgZHJvcERvd25Cb3R0b206IGFueSA9ICd1bnNldCc7XG4gIHB1YmxpYyBkcm9wRG93bkxlZnQ6IG51bWJlciA9IDA7XG4gIHB1YmxpYyBpZDogYW55ID0gd2luZG93LmNyeXB0by5yYW5kb21VVUlEKCk7XG4gIGRlZmF1bHRTZXR0aW5nczogRHJvcGRvd25TZXR0aW5ncyA9IHtcbiAgICBzaW5nbGVTZWxlY3Rpb246IGZhbHNlLFxuICAgIHRleHQ6ICdTZWxlY3QnLFxuICAgIGVuYWJsZUNoZWNrQWxsOiB0cnVlLFxuICAgIHNlbGVjdEFsbFRleHQ6ICdTZWxlY3QgQWxsJyxcbiAgICB1blNlbGVjdEFsbFRleHQ6ICdVblNlbGVjdCBBbGwnLFxuICAgIGZpbHRlclNlbGVjdEFsbFRleHQ6ICdTZWxlY3QgYWxsIGZpbHRlcmVkIHJlc3VsdHMnLFxuICAgIGZpbHRlclVuU2VsZWN0QWxsVGV4dDogJ1VuU2VsZWN0IGFsbCBmaWx0ZXJlZCByZXN1bHRzJyxcbiAgICBlbmFibGVTZWFyY2hGaWx0ZXI6IGZhbHNlLFxuICAgIHNlYXJjaEJ5OiBbXSxcbiAgICBtYXhIZWlnaHQ6IDMwMCxcbiAgICBiYWRnZVNob3dMaW1pdDogOTk5OTk5OTk5OTk5LFxuICAgIGNsYXNzZXM6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBzZWFyY2hQbGFjZWhvbGRlclRleHQ6ICdTZWFyY2gnLFxuICAgIHNob3dDaGVja2JveDogdHJ1ZSxcbiAgICBub0RhdGFMYWJlbDogJ05vIERhdGEgQXZhaWxhYmxlJyxcbiAgICBzZWFyY2hBdXRvZm9jdXM6IHRydWUsXG4gICAgbGF6eUxvYWRpbmc6IGZhbHNlLFxuICAgIGxhYmVsS2V5OiAnaXRlbU5hbWUnLFxuICAgIHByaW1hcnlLZXk6ICdpZCcsXG4gICAgcG9zaXRpb246ICdib3R0b20nLFxuICAgIGF1dG9Qb3NpdGlvbjogdHJ1ZSxcbiAgICBlbmFibGVGaWx0ZXJTZWxlY3RBbGw6IHRydWUsXG4gICAgc2VsZWN0R3JvdXA6IGZhbHNlLFxuICAgIGFkZE5ld0l0ZW1PbkZpbHRlcjogZmFsc2UsXG4gICAgYWRkTmV3QnV0dG9uVGV4dDogJ0FkZCcsXG4gICAgZXNjYXBlVG9DbG9zZTogdHJ1ZSxcbiAgICBjbGVhckFsbDogdHJ1ZSxcbiAgICB0YWdUb0JvZHk6IHRydWUsXG4gIH07XG4gIHJhbmRvbVNpemU6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgcGFyc2VFcnJvcjogYm9vbGVhbjtcbiAgcHVibGljIGZpbHRlcmVkTGlzdDogYW55ID0gW107XG4gIHZpcnR1YWxTY3Jvb2xsSW5pdDogYm9vbGVhbiA9IGZhbHNlO1xuICBAVmlld0NoaWxkKFZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHByaXZhdGUgdmlydHVhbFNjcm9sbGVyOiBWaXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQ7XG4gIHB1YmxpYyBpc0Rpc2FibGVkSXRlbVByZXNlbnQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZmlsdGVyUGlwZTogTGlzdEZpbHRlclBpcGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc2VydmljZTogQ2xpY2tPdXRzaWRlU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5zZWFyY2hUZXJtJFxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YXAoKHRlcm0pID0+IHRlcm0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodmFsKSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVySW5maW5pdGVMaXN0KHZhbCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX3NlcnZpY2UucmVnaXN0ZXIodGhpcy5pZCk7XG4gICAgdGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24odGhpcy5kZWZhdWx0U2V0dGluZ3MsIHRoaXMuc2V0dGluZ3MpO1xuXG4gICAgdGhpcy5jYWNoZWRJdGVtcyA9IHRoaXMuY2xvbmVBcnJheSh0aGlzLmRhdGEpO1xuICAgIGlmICh0aGlzLnNldHRpbmdzLnBvc2l0aW9uID09ICd0b3AnKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExpc3RIZWlnaHQgPSB7IHZhbDogMCB9O1xuICAgICAgICB0aGlzLnNlbGVjdGVkTGlzdEhlaWdodC52YWwgPVxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0RWxlbS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2FsY3VsYXRlRHJvcGRvd25EaXJlY3Rpb24oKTtcbiAgICB9KTtcbiAgICB0aGlzLnZpcnR1YWxTY3Jvb2xsSW5pdCA9IGZhbHNlO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLl9zZXJ2aWNlXG4gICAgICAub25DbGljaygpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIWV2ZW50LnRhcmdldCB8fFxuICAgICAgICAgICF0aGlzLmlzQWN0aXZlIHx8XG4gICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duT25DbGlja091dCgpO1xuICAgICAgfSk7XG4gIH1cbiAgb25LZXlVcChldnQ6IGFueSkge1xuICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dCgoPEhUTUxJbnB1dEVsZW1lbnQ+ZXZ0LnRhcmdldCkudmFsdWUpO1xuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5kYXRhICYmICFjaGFuZ2VzLmRhdGEuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIGlmICh0aGlzLnNldHRpbmdzLmdyb3VwQnkpIHtcbiAgICAgICAgdGhpcy5ncm91cGVkRGF0YSA9IHRoaXMudHJhbnNmb3JtRGF0YSh0aGlzLmRhdGEsIHRoaXMuc2V0dGluZ3MuZ3JvdXBCeSk7XG4gICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoID09IDApIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyb3VwQ2FjaGVkSXRlbXMgPSB0aGlzLmNsb25lQXJyYXkodGhpcy5ncm91cGVkRGF0YSk7XG4gICAgICB9XG4gICAgICB0aGlzLmNhY2hlZEl0ZW1zID0gdGhpcy5jbG9uZUFycmF5KHRoaXMuZGF0YSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLnNldHRpbmdzICYmICFjaGFuZ2VzLnNldHRpbmdzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih0aGlzLmRlZmF1bHRTZXR0aW5ncywgdGhpcy5zZXR0aW5ncyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmxvYWRpbmcpIHtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2V0dGluZ3MubGF6eUxvYWRpbmcgJiYgdGhpcy52aXJ0dWFsU2Nyb29sbEluaXQgJiYgY2hhbmdlcy5kYXRhKSB7XG4gICAgICB0aGlzLnZpcnR1YWxkYXRhID0gY2hhbmdlcy5kYXRhLmN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gIH1cbiAgbmdEb0NoZWNrKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwIHx8XG4gICAgICAgIHRoaXMuZGF0YS5sZW5ndGggPT0gMCB8fFxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoIDwgdGhpcy5kYXRhLmxlbmd0aFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RBbGwgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLnNldHRpbmdzLmxhenlMb2FkaW5nKSB7XG4gICAgICAvLyB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhenlDb250YWluZXJcIilbMF0uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbC5iaW5kKHRoaXMpKTtcbiAgICB9XG4gIH1cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0RWxlbS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCAmJlxuICAgICAgdGhpcy5zZXR0aW5ncy5wb3NpdGlvbiA9PSAndG9wJyAmJlxuICAgICAgdGhpcy5zZWxlY3RlZExpc3RIZWlnaHRcbiAgICApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0SGVpZ2h0LnZhbCA9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0RWxlbS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgLy90aGlzLmNhbGN1bGF0ZURyb3Bkb3duRGlyZWN0aW9uKCk7XG4gIH1cbiAgb25JdGVtQ2xpY2soaXRlbTogYW55LCBpbmRleDogbnVtYmVyLCBldnQ6IEV2ZW50KSB7XG4gICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZXR0aW5ncy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBmb3VuZCA9IHRoaXMuaXNTZWxlY3RlZChpdGVtKTtcbiAgICBsZXQgbGltaXQgPVxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA8IHRoaXMuc2V0dGluZ3MubGltaXRTZWxlY3Rpb24gPyB0cnVlIDogZmFsc2U7XG5cbiAgICBpZiAoIWZvdW5kKSB7XG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5saW1pdFNlbGVjdGlvbikge1xuICAgICAgICBpZiAobGltaXQpIHtcbiAgICAgICAgICB0aGlzLmFkZFNlbGVjdGVkKGl0ZW0pO1xuICAgICAgICAgIHRoaXMub25TZWxlY3QuZW1pdChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZGRTZWxlY3RlZChpdGVtKTtcbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KGl0ZW0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkKGl0ZW0pO1xuICAgICAgdGhpcy5vbkRlU2VsZWN0LmVtaXQoaXRlbSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzU2VsZWN0QWxsIHx8IHRoaXMuZGF0YS5sZW5ndGggPiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmlzU2VsZWN0QWxsID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0YS5sZW5ndGggPT0gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5pc1NlbGVjdEFsbCA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLnNldHRpbmdzLmdyb3VwQnkpIHtcbiAgICAgIHRoaXMudXBkYXRlR3JvdXBJbmZvKGl0ZW0pO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgdmFsaWRhdGUoYzogVW50eXBlZEZvcm1Db250cm9sKTogYW55IHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycpIHtcbiAgICAgIGlmICh0aGlzLnNldHRpbmdzLnNpbmdsZVNlbGVjdGlvbikge1xuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5ncm91cEJ5KSB7XG4gICAgICAgICAgdGhpcy5ncm91cGVkRGF0YSA9IHRoaXMudHJhbnNmb3JtRGF0YShcbiAgICAgICAgICAgIHRoaXMuZGF0YSxcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuZ3JvdXBCeSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuZ3JvdXBDYWNoZWRJdGVtcyA9IHRoaXMuY2xvbmVBcnJheSh0aGlzLmdyb3VwZWREYXRhKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbdmFsdWVbMF1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbdmFsdWVbMF1dO1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgTXlFeGNlcHRpb24oNDA0LCB7XG4gICAgICAgICAgICAgICAgbXNnOiAnU2luZ2xlIFNlbGVjdGlvbiBNb2RlLCBTZWxlY3RlZCBJdGVtcyBjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gb25lIGl0ZW0uJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUuYm9keS5tc2cpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MubGltaXRTZWxlY3Rpb24pIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB2YWx1ZS5zbGljZSgwLCB0aGlzLnNldHRpbmdzLmxpbWl0U2VsZWN0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zICE9IG51bGwgJiZcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSB0aGlzLmRhdGEubGVuZ3RoICYmXG4gICAgICAgICAgdGhpcy5kYXRhLmxlbmd0aCA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5pc1NlbGVjdEFsbCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuZ3JvdXBCeSkge1xuICAgICAgICAgIHRoaXMuZ3JvdXBlZERhdGEgPSB0aGlzLnRyYW5zZm9ybURhdGEoXG4gICAgICAgICAgICB0aGlzLmRhdGEsXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLmdyb3VwQnksXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwQ2FjaGVkSXRlbXMgPSB0aGlzLmNsb25lQXJyYXkodGhpcy5ncm91cGVkRGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgfVxuICB9XG5cbiAgLy9Gcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIC8vRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XG4gICAgcmV0dXJuIGl0ZW1bdGhpcy5zZXR0aW5ncy5wcmltYXJ5S2V5XTtcbiAgfVxuICBpc1NlbGVjdGVkKGNsaWNrZWRJdGVtOiBhbnkpIHtcbiAgICBpZiAoY2xpY2tlZEl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zICYmXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgY2xpY2tlZEl0ZW1bdGhpcy5zZXR0aW5ncy5wcmltYXJ5S2V5XSA9PT1cbiAgICAgICAgICBpdGVtW3RoaXMuc2V0dGluZ3MucHJpbWFyeUtleV1cbiAgICAgICAgKSB7XG4gICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cbiAgYWRkU2VsZWN0ZWQoaXRlbTogYW55KSB7XG4gICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2V0dGluZ3Muc2luZ2xlU2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfSBlbHNlIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXMsIGl0ZW1dO1xuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgfVxuICByZW1vdmVTZWxlY3RlZChjbGlja2VkSXRlbTogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zICYmXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgY2xpY2tlZEl0ZW1bdGhpcy5zZXR0aW5ncy5wcmltYXJ5S2V5XSA9PT1cbiAgICAgICAgICBpdGVtW3RoaXMuc2V0dGluZ3MucHJpbWFyeUtleV1cbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNwbGljZSh0aGlzLnNlbGVjdGVkSXRlbXMuaW5kZXhPZihpdGVtKSwgMSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgfVxuICB0b2dnbGVEcm9wZG93bihldnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnNldHRpbmdzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNBY3RpdmUgPSAhdGhpcy5pc0FjdGl2ZTtcbiAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xuICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNldHRpbmdzLmxhenlMb2FkaW5nKSB7XG4gICAgICB0aGlzLnZpcnR1YWxkYXRhID0gdGhpcy5kYXRhO1xuICAgICAgdGhpcy52aXJ0dWFsU2Nyb29sbEluaXQgPSB0cnVlO1xuICAgIH1cbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuICBwdWJsaWMgb3BlbkRyb3Bkb3duKCkge1xuICAgIGlmICh0aGlzLnNldHRpbmdzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNBY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMuY2FsY3VsYXRlRHJvcGRvd25EaXJlY3Rpb24oKTtcbiAgICBpZiAoXG4gICAgICB0aGlzLnNldHRpbmdzLnNlYXJjaEF1dG9mb2N1cyAmJlxuICAgICAgdGhpcy5zZWFyY2hJbnB1dCAmJlxuICAgICAgdGhpcy5zZXR0aW5ncy5lbmFibGVTZWFyY2hGaWx0ZXIgJiZcbiAgICAgICF0aGlzLnNlYXJjaFRlbXBsXG4gICAgKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gICAgdGhpcy5vbk9wZW4uZW1pdCh0cnVlKTtcbiAgfVxuICBwdWJsaWMgY2xvc2VEcm9wZG93bigpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dCAmJiB0aGlzLnNldHRpbmdzLmxhenlMb2FkaW5nKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmZpbHRlciA9ICcnO1xuICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLnNlYXJjaFRlcm0kLm5leHQoJycpO1xuICAgIHRoaXMub25DbG9zZS5lbWl0KGZhbHNlKTtcbiAgfVxuICBwdWJsaWMgY2xvc2VEcm9wZG93bk9uQ2xpY2tPdXQoKSB7XG4gICAgaWYgKHRoaXMuaXNBY3RpdmUpIHtcbiAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0ICYmIHRoaXMuc2V0dGluZ3MubGF6eUxvYWRpbmcpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dCkge1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgIH1cbiAgICAgIHRoaXMuZmlsdGVyID0gJyc7XG4gICAgICB0aGlzLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICB0aGlzLmNsZWFyU2VhcmNoKCk7XG4gICAgICB0aGlzLnNlYXJjaFRlcm0kLm5leHQoJycpO1xuICAgICAgdGhpcy5vbkNsb3NlLmVtaXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICB0b2dnbGVTZWxlY3RBbGwoZXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaXNTZWxlY3RBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuZ3JvdXBCeSkge1xuICAgICAgICB0aGlzLmdyb3VwZWREYXRhLmZvckVhY2goKG9iaikgPT4ge1xuICAgICAgICAgIG9iai5zZWxlY3RlZCA9ICFvYmouZGlzYWJsZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdyb3VwQ2FjaGVkSXRlbXMuZm9yRWFjaCgob2JqKSA9PiB7XG4gICAgICAgICAgb2JqLnNlbGVjdGVkID0gIW9iai5kaXNhYmxlZDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLmRhdGEuc2xpY2UoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuZGF0YS5maWx0ZXIoXG4gICAgICAgIChpbmRpdmlkdWFsRGF0YSkgPT4gIWluZGl2aWR1YWxEYXRhLmRpc2FibGVkLFxuICAgICAgKTtcbiAgICAgIHRoaXMuaXNTZWxlY3RBbGwgPSB0cnVlO1xuICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICAgIHRoaXMub25TZWxlY3RBbGwuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5ncm91cEJ5KSB7XG4gICAgICAgIHRoaXMuZ3JvdXBlZERhdGEuZm9yRWFjaCgob2JqKSA9PiB7XG4gICAgICAgICAgb2JqLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdyb3VwQ2FjaGVkSXRlbXMuZm9yRWFjaCgob2JqKSA9PiB7XG4gICAgICAgICAgb2JqLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICB0aGlzLmlzU2VsZWN0QWxsID0gZmFsc2U7XG4gICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sodGhpcy5zZWxlY3RlZEl0ZW1zKTtcblxuICAgICAgdGhpcy5vbkRlU2VsZWN0QWxsLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNhbGN1bGF0ZURyb3Bkb3duRGlyZWN0aW9uKCk7XG4gICAgfSk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cbiAgZmlsdGVyR3JvdXBlZExpc3QoKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyID09ICcnIHx8IHRoaXMuZmlsdGVyID09IG51bGwpIHtcbiAgICAgIHRoaXMuY2xlYXJTZWFyY2goKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5ncm91cGVkRGF0YSA9IHRoaXMuY2xvbmVBcnJheSh0aGlzLmdyb3VwQ2FjaGVkSXRlbXMpO1xuICAgIHRoaXMuZ3JvdXBlZERhdGEgPSB0aGlzLmdyb3VwZWREYXRhLmZpbHRlcigob2JqKSA9PiB7XG4gICAgICBsZXQgYXJyID0gW107XG4gICAgICBpZiAoXG4gICAgICAgIG9ialt0aGlzLnNldHRpbmdzLmxhYmVsS2V5XVxuICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgLmluZGV4T2YodGhpcy5maWx0ZXIudG9Mb3dlckNhc2UoKSkgPiAtMVxuICAgICAgKSB7XG4gICAgICAgIGFyciA9IG9iai5saXN0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXJyID0gb2JqLmxpc3QuZmlsdGVyKCh0KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRbdGhpcy5zZXR0aW5ncy5sYWJlbEtleV1cbiAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgLmluZGV4T2YodGhpcy5maWx0ZXIudG9Mb3dlckNhc2UoKSkgPiAtMVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBvYmoubGlzdCA9IGFycjtcbiAgICAgIGlmIChcbiAgICAgICAgb2JqW3RoaXMuc2V0dGluZ3MubGFiZWxLZXldXG4gICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAuaW5kZXhPZih0aGlzLmZpbHRlci50b0xvd2VyQ2FzZSgpKSA+IC0xXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhcnIuc29tZSgoY2F0KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGNhdFt0aGlzLnNldHRpbmdzLmxhYmVsS2V5XVxuICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAuaW5kZXhPZih0aGlzLmZpbHRlci50b0xvd2VyQ2FzZSgpKSA+IC0xXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgdG9nZ2xlRmlsdGVyU2VsZWN0QWxsKCkge1xuICAgIGlmICghdGhpcy5pc0ZpbHRlclNlbGVjdEFsbCkge1xuICAgICAgbGV0IGFkZGVkID0gW107XG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5ncm91cEJ5KSB7XG4gICAgICAgIHRoaXMuZ3JvdXBlZERhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgaXRlbS5zZWxlO1xuICAgICAgICAgIGlmIChpdGVtLmxpc3QpIHtcbiAgICAgICAgICAgIGl0ZW0ubGlzdC5mb3JFYWNoKChlbDogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghdGhpcy5pc1NlbGVjdGVkKGVsKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkU2VsZWN0ZWQoZWwpO1xuICAgICAgICAgICAgICAgIGFkZGVkLnB1c2goZWwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy51cGRhdGVHcm91cEluZm8oaXRlbSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyZWRMaXN0LmZvckVhY2goKGVsOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZChlbCkgJiYgIWVsLmhhc093blByb3BlcnR5KCdncnBUaXRsZScpKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFNlbGVjdGVkKGVsKTtcbiAgICAgICAgICAgIGFkZGVkLnB1c2goZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpbHRlcmVkTGlzdC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZChpdGVtKSkge1xuICAgICAgICAgICAgdGhpcy5hZGRTZWxlY3RlZChpdGVtKTtcbiAgICAgICAgICAgIGFkZGVkLnB1c2goaXRlbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pc0ZpbHRlclNlbGVjdEFsbCA9IHRydWU7XG4gICAgICB0aGlzLm9uRmlsdGVyU2VsZWN0QWxsLmVtaXQoYWRkZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVtb3ZlZCA9IFtdO1xuICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuZ3JvdXBCeSkge1xuICAgICAgICB0aGlzLmdyb3VwZWREYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtLmxpc3QpIHtcbiAgICAgICAgICAgIGl0ZW0ubGlzdC5mb3JFYWNoKChlbDogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoZWwpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVTZWxlY3RlZChlbCk7XG4gICAgICAgICAgICAgICAgcmVtb3ZlZC5wdXNoKGVsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMudXBkYXRlR3JvdXBJbmZvKGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZExpc3QuZm9yRWFjaCgoZWw6IGFueSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoZWwpKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkKGVsKTtcbiAgICAgICAgICAgIHJlbW92ZWQucHVzaChlbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRMaXN0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoaXRlbSkpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWQoaXRlbSk7XG4gICAgICAgICAgICByZW1vdmVkLnB1c2goaXRlbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNGaWx0ZXJTZWxlY3RBbGwgPSBmYWxzZTtcbiAgICAgIHRoaXMub25GaWx0ZXJEZVNlbGVjdEFsbC5lbWl0KHJlbW92ZWQpO1xuICAgIH1cbiAgfVxuICB0b2dnbGVJbmZpbml0ZUZpbHRlclNlbGVjdEFsbCgpIHtcbiAgICBpZiAoIXRoaXMuaXNJbmZpbml0ZUZpbHRlclNlbGVjdEFsbCkge1xuICAgICAgdGhpcy52aXJ0dWFsZGF0YS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzU2VsZWN0ZWQoaXRlbSkpIHtcbiAgICAgICAgICB0aGlzLmFkZFNlbGVjdGVkKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaXNJbmZpbml0ZUZpbHRlclNlbGVjdEFsbCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmlydHVhbGRhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoaXRlbSkpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaXNJbmZpbml0ZUZpbHRlclNlbGVjdEFsbCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBjbGVhclNlYXJjaCgpIHtcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5ncm91cEJ5KSB7XG4gICAgICB0aGlzLmdyb3VwZWREYXRhID0gW107XG4gICAgICB0aGlzLmdyb3VwZWREYXRhID0gdGhpcy5jbG9uZUFycmF5KHRoaXMuZ3JvdXBDYWNoZWRJdGVtcyk7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyID0gJyc7XG4gICAgdGhpcy5pc0ZpbHRlclNlbGVjdEFsbCA9IGZhbHNlO1xuICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dCgnJyk7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5jYWNoZWRJdGVtcztcbiAgfVxuICBvbkZpbHRlckNoYW5nZShkYXRhOiBhbnkpIHtcbiAgICBpZiAoKHRoaXMuZmlsdGVyICYmIHRoaXMuZmlsdGVyID09ICcnKSB8fCBkYXRhLmxlbmd0aCA9PSAwKSB7XG4gICAgICB0aGlzLmlzRmlsdGVyU2VsZWN0QWxsID0gZmFsc2U7XG4gICAgICB0aGlzLmRhdGEgPSB0aGlzLmNhY2hlZEl0ZW1zLnNsaWNlKCk7XG4gICAgfVxuICAgIGxldCBjbnQgPSAwO1xuICAgIGRhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICBpZiAoIWl0ZW0uaGFzT3duUHJvcGVydHkoJ2dycFRpdGxlJykgJiYgdGhpcy5pc1NlbGVjdGVkKGl0ZW0pKSB7XG4gICAgICAgIGNudCsrO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGNudCA+IDAgJiYgdGhpcy5maWx0ZXJMZW5ndGggPT0gY250KSB7XG4gICAgICB0aGlzLmlzRmlsdGVyU2VsZWN0QWxsID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGNudCA+IDAgJiYgdGhpcy5maWx0ZXJMZW5ndGggIT0gY250KSB7XG4gICAgICB0aGlzLmlzRmlsdGVyU2VsZWN0QWxsID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gIH1cbiAgY2xvbmVBcnJheShhcnI6IGFueSkge1xuICAgIGxldCBpLCBjb3B5O1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYXJyKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYXJyID09PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgJ0Nhbm5vdCBjbG9uZSBhcnJheSBjb250YWluaW5nIGFuIG9iamVjdCEnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH1cbiAgfVxuICB1cGRhdGVHcm91cEluZm8oaXRlbTogYW55KSB7XG4gICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGtleSA9IHRoaXMuc2V0dGluZ3MuZ3JvdXBCeTtcbiAgICB0aGlzLmdyb3VwZWREYXRhLmZvckVhY2goKG9iajogYW55KSA9PiB7XG4gICAgICBsZXQgY250ID0gMDtcbiAgICAgIGlmIChvYmouZ3JwVGl0bGUgJiYgaXRlbVtrZXldID09IG9ialtrZXldKSB7XG4gICAgICAgIGlmIChvYmoubGlzdCkge1xuICAgICAgICAgIG9iai5saXN0LmZvckVhY2goKGVsOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoZWwpKSB7XG4gICAgICAgICAgICAgIGNudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAob2JqLmxpc3QgJiYgY250ID09PSBvYmoubGlzdC5sZW5ndGggJiYgaXRlbVtrZXldID09IG9ialtrZXldKSB7XG4gICAgICAgIG9iai5zZWxlY3RlZCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKG9iai5saXN0ICYmIGNudCAhPSBvYmoubGlzdC5sZW5ndGggJiYgaXRlbVtrZXldID09IG9ialtrZXldKSB7XG4gICAgICAgIG9iai5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZ3JvdXBDYWNoZWRJdGVtcy5mb3JFYWNoKChvYmo6IGFueSkgPT4ge1xuICAgICAgbGV0IGNudCA9IDA7XG4gICAgICBpZiAob2JqLmdycFRpdGxlICYmIGl0ZW1ba2V5XSA9PSBvYmpba2V5XSkge1xuICAgICAgICBpZiAob2JqLmxpc3QpIHtcbiAgICAgICAgICBvYmoubGlzdC5mb3JFYWNoKChlbDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKGVsKSkge1xuICAgICAgICAgICAgICBjbnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG9iai5saXN0ICYmIGNudCA9PT0gb2JqLmxpc3QubGVuZ3RoICYmIGl0ZW1ba2V5XSA9PSBvYmpba2V5XSkge1xuICAgICAgICBvYmouc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChvYmoubGlzdCAmJiBjbnQgIT0gb2JqLmxpc3QubGVuZ3RoICYmIGl0ZW1ba2V5XSA9PSBvYmpba2V5XSkge1xuICAgICAgICBvYmouc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICB0cmFuc2Zvcm1EYXRhKGFycjogQXJyYXk8YW55PiwgZmllbGQ6IGFueSk6IEFycmF5PGFueT4ge1xuICAgIGNvbnN0IGdyb3VwZWRPYmo6IGFueSA9IGFyci5yZWR1Y2UoKHByZXY6IGFueSwgY3VyOiBhbnkpID0+IHtcbiAgICAgIGlmICghcHJldltjdXJbZmllbGRdXSkge1xuICAgICAgICBwcmV2W2N1cltmaWVsZF1dID0gW2N1cl07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmV2W2N1cltmaWVsZF1dLnB1c2goY3VyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIHt9KTtcbiAgICBjb25zdCB0ZW1wQXJyOiBhbnkgPSBbXTtcbiAgICBPYmplY3Qua2V5cyhncm91cGVkT2JqKS5tYXAoKHg6IGFueSkgPT4ge1xuICAgICAgbGV0IG9iajogYW55ID0ge307XG4gICAgICBsZXQgZGlzYWJsZWRDaGlsZHJlbnMgPSBbXTtcbiAgICAgIG9ialsnZ3JwVGl0bGUnXSA9IHRydWU7XG4gICAgICBvYmpbdGhpcy5zZXR0aW5ncy5sYWJlbEtleV0gPSB4O1xuICAgICAgb2JqW3RoaXMuc2V0dGluZ3MuZ3JvdXBCeV0gPSB4O1xuICAgICAgb2JqWydzZWxlY3RlZCddID0gZmFsc2U7XG4gICAgICBvYmpbJ2xpc3QnXSA9IFtdO1xuICAgICAgbGV0IGNudCA9IDA7XG4gICAgICBncm91cGVkT2JqW3hdLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBpdGVtWydsaXN0J10gPSBbXTtcbiAgICAgICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLmlzRGlzYWJsZWRJdGVtUHJlc2VudCA9IHRydWU7XG4gICAgICAgICAgZGlzYWJsZWRDaGlsZHJlbnMucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICBvYmoubGlzdC5wdXNoKGl0ZW0pO1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKGl0ZW0pKSB7XG4gICAgICAgICAgY250Kys7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKGNudCA9PSBvYmoubGlzdC5sZW5ndGgpIHtcbiAgICAgICAgb2JqLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iai5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBjdXJyZW50IGdyb3VwIGl0ZW0ncyBhbGwgY2hpbGRyZW5zIGFyZSBkaXNhYmxlZCBvciBub3RcbiAgICAgIG9ialsnZGlzYWJsZWQnXSA9IGRpc2FibGVkQ2hpbGRyZW5zLmxlbmd0aCA9PT0gZ3JvdXBlZE9ialt4XS5sZW5ndGg7XG4gICAgICB0ZW1wQXJyLnB1c2gob2JqKTtcbiAgICAgIC8vIG9iai5saXN0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgLy8gICAgIHRlbXBBcnIucHVzaChpdGVtKTtcbiAgICAgIC8vIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiB0ZW1wQXJyO1xuICB9XG4gIHB1YmxpYyBmaWx0ZXJJbmZpbml0ZUxpc3QoZXZ0OiBhbnkpIHtcbiAgICBsZXQgZmlsdGVyZWRFbGVtczogQXJyYXk8YW55PiA9IFtdO1xuICAgIGlmICh0aGlzLnNldHRpbmdzLmdyb3VwQnkpIHtcbiAgICAgIHRoaXMuZ3JvdXBlZERhdGEgPSB0aGlzLmdyb3VwQ2FjaGVkSXRlbXMuc2xpY2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5jYWNoZWRJdGVtcy5zbGljZSgpO1xuICAgICAgdGhpcy52aXJ0dWFsZGF0YSA9IHRoaXMuY2FjaGVkSXRlbXMuc2xpY2UoKTtcbiAgICB9XG5cbiAgICBpZiAoKGV2dCAhPSBudWxsIHx8IGV2dCAhPSAnJykgJiYgIXRoaXMuc2V0dGluZ3MuZ3JvdXBCeSkge1xuICAgICAgaWYgKHRoaXMuc2V0dGluZ3Muc2VhcmNoQnkubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3IgKGxldCB0ID0gMDsgdCA8IHRoaXMuc2V0dGluZ3Muc2VhcmNoQnkubGVuZ3RoOyB0KyspIHtcbiAgICAgICAgICB0aGlzLnZpcnR1YWxkYXRhLmZpbHRlcigoZWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBlbFt0aGlzLnNldHRpbmdzLnNlYXJjaEJ5W3RdLnRvU3RyaW5nKCldXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgIC5pbmRleE9mKGV2dC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpID49IDBcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBmaWx0ZXJlZEVsZW1zLnB1c2goZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZpcnR1YWxkYXRhLmZpbHRlcihmdW5jdGlvbiAoZWw6IGFueSkge1xuICAgICAgICAgIGZvciAobGV0IHByb3AgaW4gZWwpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZWxbcHJvcF1cbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgLmluZGV4T2YoZXZ0LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkgPj0gMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGZpbHRlcmVkRWxlbXMucHVzaChlbCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnZpcnR1YWxkYXRhID0gW107XG4gICAgICB0aGlzLnZpcnR1YWxkYXRhID0gZmlsdGVyZWRFbGVtcztcbiAgICAgIHRoaXMuaW5maW5pdGVGaWx0ZXJMZW5ndGggPSB0aGlzLnZpcnR1YWxkYXRhLmxlbmd0aDtcbiAgICB9XG4gICAgaWYgKGV2dC50b1N0cmluZygpICE9ICcnICYmIHRoaXMuc2V0dGluZ3MuZ3JvdXBCeSkge1xuICAgICAgdGhpcy5ncm91cGVkRGF0YS5maWx0ZXIoZnVuY3Rpb24gKGVsOiBhbnkpIHtcbiAgICAgICAgaWYgKGVsLmhhc093blByb3BlcnR5KCdncnBUaXRsZScpKSB7XG4gICAgICAgICAgZmlsdGVyZWRFbGVtcy5wdXNoKGVsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3IgKGxldCBwcm9wIGluIGVsKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGVsW3Byb3BdXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgIC5pbmRleE9mKGV2dC50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpID49IDBcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBmaWx0ZXJlZEVsZW1zLnB1c2goZWwpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5ncm91cGVkRGF0YSA9IFtdO1xuICAgICAgdGhpcy5ncm91cGVkRGF0YSA9IGZpbHRlcmVkRWxlbXM7XG4gICAgICB0aGlzLmluZmluaXRlRmlsdGVyTGVuZ3RoID0gdGhpcy5ncm91cGVkRGF0YS5sZW5ndGg7XG4gICAgfSBlbHNlIGlmIChldnQudG9TdHJpbmcoKSA9PSAnJyAmJiB0aGlzLmNhY2hlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudmlydHVhbGRhdGEgPSBbXTtcbiAgICAgIHRoaXMudmlydHVhbGRhdGEgPSB0aGlzLmNhY2hlZEl0ZW1zO1xuICAgICAgdGhpcy5pbmZpbml0ZUZpbHRlckxlbmd0aCA9IDA7XG4gICAgfVxuICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGxlcikge1xuICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsZXIucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuICByZXNldEluZmluaXRlU2VhcmNoKCkge1xuICAgIHRoaXMuZmlsdGVyID0gJyc7XG4gICAgdGhpcy5pc0luZmluaXRlRmlsdGVyU2VsZWN0QWxsID0gZmFsc2U7XG4gICAgdGhpcy52aXJ0dWFsZGF0YSA9IFtdO1xuICAgIHRoaXMudmlydHVhbGRhdGEgPSB0aGlzLmNhY2hlZEl0ZW1zO1xuICAgIHRoaXMuZ3JvdXBlZERhdGEgPSB0aGlzLmdyb3VwQ2FjaGVkSXRlbXM7XG4gICAgdGhpcy5zZWFyY2hUZXJtJC5uZXh0KCcnKTtcbiAgICB0aGlzLmluZmluaXRlRmlsdGVyTGVuZ3RoID0gMDtcbiAgfVxuICBvblNjcm9sbEVuZChlOiBhbnkpIHtcbiAgICBpZiAoZS5lbmRJbmRleCA9PT0gdGhpcy5kYXRhLmxlbmd0aCAtIDEgfHwgZS5zdGFydEluZGV4ID09PSAwKSB7XG4gICAgfVxuICAgIHRoaXMub25TY3JvbGxUb0VuZC5lbWl0KGUpO1xuICB9XG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXJ2aWNlLnVucmVnaXN0ZXIodGhpcy5pZCk7XG4gIH1cbiAgc2VsZWN0R3JvdXAoaXRlbTogYW55KSB7XG4gICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGl0ZW0uc2VsZWN0ZWQpIHtcbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIGl0ZW0ubGlzdC5mb3JFYWNoKChvYmo6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkKG9iaik7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5vbkdyb3VwRGVTZWxlY3QuZW1pdChpdGVtKTtcbiAgICAgIHRoaXMudXBkYXRlR3JvdXBJbmZvKGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIGl0ZW0ubGlzdC5mb3JFYWNoKChvYmo6IGFueSkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZChvYmopKSB7XG4gICAgICAgICAgdGhpcy5hZGRTZWxlY3RlZChvYmopO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMub25Hcm91cFNlbGVjdC5lbWl0KGl0ZW0pO1xuICAgICAgdGhpcy51cGRhdGVHcm91cEluZm8oaXRlbSk7XG4gICAgfVxuICB9XG4gIGFkZEZpbHRlck5ld0l0ZW0oKSB7XG4gICAgdGhpcy5vbkFkZEZpbHRlck5ld0l0ZW0uZW1pdCh0aGlzLmZpbHRlcik7XG4gICAgdGhpcy5maWx0ZXJQaXBlLnRyYW5zZm9ybSh0aGlzLmRhdGEsIHRoaXMuZmlsdGVyLCB0aGlzLnNldHRpbmdzLnNlYXJjaEJ5KTtcbiAgfVxuICBjYWxjdWxhdGVEcm9wZG93bkRpcmVjdGlvbigpIHtcbiAgICBsZXQgc2hvdWxkT3BlblRvd2FyZHNUb3AgPSB0aGlzLnNldHRpbmdzLnBvc2l0aW9uID09ICd0b3AnO1xuICAgIGNvbnN0IGVsZW0gPSB0aGlzLmN1cHBhRHJvcGRvd24ubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBkcm9wZG93bldpZHRoID0gZWxlbS5jbGllbnRXaWR0aDtcbiAgICB0aGlzLmRyb3BEb3duV2lkdGggPSBkcm9wZG93bldpZHRoO1xuICAgIHRoaXMuZHJvcERvd25MZWZ0ID0gdGhpcy5zZXR0aW5ncy50YWdUb0JvZHlcbiAgICAgID8gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS54XG4gICAgICA6ICd1bnNldCc7XG4gICAgaWYgKHRoaXMuc2V0dGluZ3MucG9zaXRpb24gPT0gJ3RvcCcgJiYgIXRoaXMuc2V0dGluZ3MuYXV0b1Bvc2l0aW9uKSB7XG4gICAgICB0aGlzLm9wZW5Ub3dhcmRzVG9wKHRydWUpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLnNldHRpbmdzLnBvc2l0aW9uID09ICdib3R0b20nICYmXG4gICAgICAhdGhpcy5zZXR0aW5ncy5hdXRvUG9zaXRpb25cbiAgICApIHtcbiAgICAgIHRoaXMub3BlblRvd2FyZHNUb3AoZmFsc2UpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZXR0aW5ncy5hdXRvUG9zaXRpb24pIHtcbiAgICAgIGNvbnN0IGRyb3Bkb3duSGVpZ2h0ID0gdGhpcy5kZWZhdWx0U2V0dGluZ3MubWF4SGVpZ2h0O1xuICAgICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgY29uc3Qgc2VsZWN0ZWRMaXN0Qm91bmRzID1cbiAgICAgICAgdGhpcy5zZWxlY3RlZExpc3RFbGVtLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIGNvbnN0IHNwYWNlT25Ub3A6IG51bWJlciA9IHNlbGVjdGVkTGlzdEJvdW5kcy50b3A7XG4gICAgICBjb25zdCBzcGFjZU9uQm90dG9tOiBudW1iZXIgPSB2aWV3cG9ydEhlaWdodCAtIHNlbGVjdGVkTGlzdEJvdW5kcy50b3A7XG4gICAgICBpZiAoc3BhY2VPbkJvdHRvbSA8IHNwYWNlT25Ub3AgJiYgZHJvcGRvd25IZWlnaHQgPCBzcGFjZU9uVG9wKSB7XG4gICAgICAgIHRoaXMub3BlblRvd2FyZHNUb3AodHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wZW5Ub3dhcmRzVG9wKGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIC8vIEtlZXAgcHJlZmVyZW5jZSBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIG9uIGVpdGhlciB0aGUgdG9wIG9yIGJvdHRvbVxuICAgICAgLyogXHRcdFx0aWYgKHNwYWNlT25Ub3AgfHwgc3BhY2VPbkJvdHRvbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRPcGVuVG93YXJkc1RvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRPcGVuVG93YXJkc1RvcCA9IHNwYWNlT25Ub3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkT3BlblRvd2FyZHNUb3AgPSAhc3BhY2VPbkJvdHRvbTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9ICovXG4gICAgfVxuICB9XG4gIG9wZW5Ub3dhcmRzVG9wKHZhbHVlOiBib29sZWFuKSB7XG4gICAgY29uc3QgZWxlbSA9IHRoaXMuY3VwcGFEcm9wZG93bi5uYXRpdmVFbGVtZW50O1xuICAgIGlmICh2YWx1ZSAmJiB0aGlzLnNlbGVjdGVkTGlzdEVsZW0ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQpIHtcbiAgICAgIHRoaXMuZHJvcGRvd25MaXN0WU9mZnNldCA9XG4gICAgICAgIDE1IC0gdGhpcy5zZWxlY3RlZExpc3RFbGVtLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgaWYgKHRoaXMuc2V0dGluZ3MudGFnVG9Cb2R5KSB7XG4gICAgICAgIHRoaXMuZHJvcERvd25Ub3AgPVxuICAgICAgICAgIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueSAtXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZExpc3RFbGVtLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0ICogMiAtXG4gICAgICAgICAgMTUgLVxuICAgICAgICAgIHRoaXMuZGVmYXVsdFNldHRpbmdzLm1heEhlaWdodCArXG4gICAgICAgICAgJ3B4JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZHJvcERvd25Cb3R0b20gPVxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0RWxlbS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCArIDE1ICsgJ3B4JztcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0dGluZ3MucG9zaXRpb24gPSAndG9wJztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc2V0dGluZ3MudGFnVG9Cb2R5KSB7XG4gICAgICAgIHRoaXMuZHJvcERvd25Ub3AgPVxuICAgICAgICAgIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueSArIGVsZW0uY2xpZW50SGVpZ2h0ICsgMSArICdweCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRyb3BEb3duVG9wID0gJ3Vuc2V0JztcbiAgICAgICAgdGhpcy5kcm9wRG93bkJvdHRvbSA9ICd1bnNldCc7XG4gICAgICB9XG4gICAgICB0aGlzLmRyb3Bkb3duTGlzdFlPZmZzZXQgPSAwO1xuICAgICAgdGhpcy5zZXR0aW5ncy5wb3NpdGlvbiA9ICdib3R0b20nO1xuICAgIH1cbiAgfVxuICBjbGVhclNlbGVjdGlvbihlPzogYW55KSB7XG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuZ3JvdXBCeSkge1xuICAgICAgdGhpcy5ncm91cENhY2hlZEl0ZW1zLmZvckVhY2goKG9iaikgPT4ge1xuICAgICAgICBvYmouc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmNsZWFyU2VhcmNoKCk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgdGhpcy5pc1NlbGVjdEFsbCA9IGZhbHNlO1xuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICB0aGlzLm9uRGVTZWxlY3RBbGwuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICB9XG4gIGZpbHRlcml0ZW1zKGV2dDogYW55KSB7XG4gICAgdGhpcy5maWx0ZXJlZExpc3QgPSB0aGlzLmZpbHRlclBpcGUudHJhbnNmb3JtKFxuICAgICAgdGhpcy5jYWNoZWRJdGVtcyxcbiAgICAgIGV2dC50YXJnZXQudmFsdWUsXG4gICAgICB0aGlzLnNldHRpbmdzLnNlYXJjaEJ5LFxuICAgICk7XG4gICAgaWYgKHRoaXMuZmlsdGVyZWRMaXN0KSB7XG4gICAgICBsZXQgbGVuID0gMDtcbiAgICAgIHRoaXMuZmlsdGVyZWRMaXN0LmZvckVhY2goKG9iajogYW55LCBpOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKG9iai5kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuaXNEaXNhYmxlZEl0ZW1QcmVzZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eSgnZ3JwVGl0bGUnKSkge1xuICAgICAgICAgIGxlbisrO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuZmlsdGVyTGVuZ3RoID0gbGVuO1xuICAgIH1cbiAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKHRoaXMuZmlsdGVyZWRMaXN0KTtcbiAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgVmlydHVhbFNjcm9sbGVyTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQW5ndWxhck11bHRpU2VsZWN0LFxuICAgIExpc3RGaWx0ZXJQaXBlLFxuICAgIEl0ZW0sXG4gICAgVGVtcGxhdGVSZW5kZXJlcixcbiAgICBCYWRnZSxcbiAgICBTZWFyY2gsXG4gICAgQ0ljb24sXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBBbmd1bGFyTXVsdGlTZWxlY3QsXG4gICAgTGlzdEZpbHRlclBpcGUsXG4gICAgSXRlbSxcbiAgICBUZW1wbGF0ZVJlbmRlcmVyLFxuICAgIEJhZGdlLFxuICAgIFNlYXJjaCxcbiAgICBDSWNvbixcbiAgXSxcbiAgcHJvdmlkZXJzOiBbTGlzdEZpbHRlclBpcGUsIENsaWNrT3V0c2lkZVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyTXVsdGlTZWxlY3RNb2R1bGUge31cbiIsIjxkaXYgY2xhc3M9XCJjdXBwYS1kcm9wZG93blwiICNjdXBwYURyb3Bkb3duPlxuICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbGlzdFwiICNzZWxlY3RlZExpc3Q+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjLWJ0blwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oJGV2ZW50KVwiXG4gICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBzZXR0aW5ncy5kaXNhYmxlZCB9XCJcbiAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgID5cbiAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID09IDBcIj57eyBzZXR0aW5ncy50ZXh0IH19PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJzZXR0aW5ncy5zaW5nbGVTZWxlY3Rpb24gJiYgIWJhZGdlVGVtcGxcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXM7XG4gICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5Rm4uYmluZCh0aGlzKTtcbiAgICAgICAgICAgIGxldCBrID0gaW5kZXhcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgaXRlbVtzZXR0aW5ncy5sYWJlbEtleV0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJjLWxpc3RcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCA+IDAgJiYgc2V0dGluZ3Muc2luZ2xlU2VsZWN0aW9uICYmIGJhZGdlVGVtcGxcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYy10b2tlblwiXG4gICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICBsZXQgaXRlbSBvZiBzZWxlY3RlZEl0ZW1zO1xuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZuLmJpbmQodGhpcyk7XG4gICAgICAgICAgICBsZXQgayA9IGluZGV4XG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWJhZGdlVGVtcGxcIiBjbGFzcz1cImMtbGFiZWxcIj57e1xuICAgICAgICAgICAgaXRlbVtzZXR0aW5ncy5sYWJlbEtleV1cbiAgICAgICAgICB9fTwvc3Bhbj5cblxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYmFkZ2VUZW1wbFwiIGNsYXNzPVwiYy1sYWJlbFwiPlxuICAgICAgICAgICAgPGMtdGVtcGxhdGVSZW5kZXJlclxuICAgICAgICAgICAgICBbZGF0YV09XCJiYWRnZVRlbXBsXCJcbiAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgICAgICA+PC9jLXRlbXBsYXRlUmVuZGVyZXI+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImMtcmVtb3ZlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayhpdGVtLCBrLCAkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxjLWljb24gbmFtZT1cInJlbW92ZVwiIC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjLWxpc3RcIlxuICAgICAgICAqbmdJZj1cInNlbGVjdGVkSXRlbXM/Lmxlbmd0aCA+IDAgJiYgIXNldHRpbmdzLnNpbmdsZVNlbGVjdGlvblwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImMtdG9rZW5cIlxuICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgbGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGbi5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgbGV0IGsgPSBpbmRleFxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2hpZGRlbl09XCJrID4gc2V0dGluZ3MuYmFkZ2VTaG93TGltaXQgLSAxXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBpZiAoYmFkZ2VUZW1wbCkge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjLWxhYmVsXCJcbiAgICAgICAgICAgICAgPjxjLXRlbXBsYXRlUmVuZGVyZXJcbiAgICAgICAgICAgICAgICBbZGF0YV09XCJiYWRnZVRlbXBsXCJcbiAgICAgICAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgPjwvYy10ZW1wbGF0ZVJlbmRlcmVyXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjLWxhYmVsXCI+e3sgaXRlbVtzZXR0aW5ncy5sYWJlbEtleV0gfX08L3NwYW4+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiYy1yZW1vdmVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0sIGssICRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGMtaWNvbiBbbmFtZV09XCIncmVtb3ZlJ1wiPjwvYy1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiY291bnRwbGFjZWhvbGRlclwiXG4gICAgICAgICpuZ0lmPVwic2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID4gc2V0dGluZ3MuYmFkZ2VTaG93TGltaXRcIlxuICAgICAgICA+K3t7IHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCAtIHNldHRpbmdzLmJhZGdlU2hvd0xpbWl0IH19PC9zcGFuXG4gICAgICA+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImMtcmVtb3ZlIGNsZWFyLWFsbFwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgc2V0dGluZ3MuY2xlYXJBbGwgJiYgc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID4gMCAmJiAhc2V0dGluZ3MuZGlzYWJsZWRcbiAgICAgICAgXCJcbiAgICAgICAgKGNsaWNrKT1cImNsZWFyU2VsZWN0aW9uKCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICA+XG4gICAgICAgIDxjLWljb24gW25hbWVdPVwiJ3JlbW92ZSdcIj48L2MtaWNvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIEBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjLWFuZ2xlLXVwXCI+PGMtaWNvbiBbbmFtZV09XCInYW5nbGUtdXAnXCI+PC9jLWljb24+PC9zcGFuPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYy1hbmdsZS1kb3duXCJcbiAgICAgICAgICA+PGMtaWNvbiBbbmFtZV09XCInYW5nbGUtZG93bidcIj48L2MtaWNvblxuICAgICAgICA+PC9zcGFuPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICNkcm9wZG93bkxpc3RcbiAgICBjbGFzcz1cImRyb3Bkb3duLWxpc3QgYW5pbWF0ZWQgZmFkZUluXCJcbiAgICBbbmdDbGFzc109XCJ7IHRhZ1RvQm9keTogc2V0dGluZ3MudGFnVG9Cb2R5IH1cIlxuICAgIFtzdHlsZS53aWR0aC5weF09XCJkcm9wRG93bldpZHRoXCJcbiAgICBbc3R5bGUudG9wXT1cImRyb3BEb3duVG9wXCJcbiAgICBbc3R5bGUuYm90dG9tXT1cImRyb3BEb3duQm90dG9tXCJcbiAgICBbc3R5bGUubGVmdC5weF09XCJkcm9wRG93bkxlZnRcIlxuICAgIFtoaWRkZW5dPVwiIWlzQWN0aXZlXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2Fycm93LXVwJzogc2V0dGluZ3MucG9zaXRpb24gPT0gJ2JvdHRvbScsXG4gICAgICAgICdhcnJvdy1kb3duJzogc2V0dGluZ3MucG9zaXRpb24gPT0gJ3RvcCcsXG4gICAgICB9XCJcbiAgICAgIGNsYXNzPVwiYXJyb3ctMlwiXG4gICAgPjwvZGl2PlxuICAgIDxkaXZcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ2Fycm93LXVwJzogc2V0dGluZ3MucG9zaXRpb24gPT0gJ2JvdHRvbScsXG4gICAgICAgICdhcnJvdy1kb3duJzogc2V0dGluZ3MucG9zaXRpb24gPT0gJ3RvcCcsXG4gICAgICB9XCJcbiAgICA+PC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJsaXN0LWFyZWFcIlxuICAgICAgW25nQ2xhc3NdPVwieyAnc2luZ2xlLXNlbGVjdC1tb2RlJzogc2V0dGluZ3Muc2luZ2xlU2VsZWN0aW9uIH1cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJwdXJlLWNoZWNrYm94IHNlbGVjdC1hbGxcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIHNldHRpbmdzLmVuYWJsZUNoZWNrQWxsICYmXG4gICAgICAgICAgIXNldHRpbmdzLnNpbmdsZVNlbGVjdGlvbiAmJlxuICAgICAgICAgICFzZXR0aW5ncy5saW1pdFNlbGVjdGlvbiAmJlxuICAgICAgICAgIGRhdGE/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAhaXNEaXNhYmxlZEl0ZW1QcmVzZW50XG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICpuZ0lmPVwic2V0dGluZ3Muc2hvd0NoZWNrYm94XCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIFtjaGVja2VkXT1cImlzU2VsZWN0QWxsXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwic2V0dGluZ3MubGltaXRTZWxlY3Rpb24gPT0gc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoXCJcbiAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8bGFiZWwgW2Zvcl09XCJpZFwiPlxuICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwiaXNTZWxlY3RBbGxcIj57eyBzZXR0aW5ncy5zZWxlY3RBbGxUZXh0IH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwiIWlzU2VsZWN0QWxsXCI+e3sgc2V0dGluZ3MudW5TZWxlY3RBbGxUZXh0IH19PC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8aW1nIGNsYXNzPVwibG9hZGluZy1pY29uXCIgKm5nSWY9XCJsb2FkaW5nXCIgc3JjPVwiYXNzZXRzL2ltZy9sb2FkaW5nLmdpZlwiIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwibGlzdC1maWx0ZXJcIiAqbmdJZj1cInNldHRpbmdzLmVuYWJsZVNlYXJjaEZpbHRlclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImMtc2VhcmNoXCIgaWQ9XCJzZWFyY2hJY29uXCI+XG4gICAgICAgICAgPGMtaWNvbiBbbmFtZV09XCInc2VhcmNoJ1wiPjwvYy1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIEBpZiAoc2V0dGluZ3MubGF6eUxvYWRpbmcpIHtcbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2hpZGRlbl09XCJmaWx0ZXIgPT0gdW5kZWZpbmVkIHx8IGZpbHRlcj8ubGVuZ3RoID09IDBcIlxuICAgICAgICAgICAgY2xhc3M9XCJjLWNsZWFyXCJcbiAgICAgICAgICAgIChjbGljayk9XCJyZXNldEluZmluaXRlU2VhcmNoKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxjLWljb24gW25hbWVdPVwiJ2NsZWFyJ1wiPjwvYy1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIFtoaWRkZW5dPVwiZmlsdGVyID09IHVuZGVmaW5lZCB8fCBmaWx0ZXI/Lmxlbmd0aCA9PSAwXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYy1jbGVhclwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGMtaWNvbiBbbmFtZV09XCInY2xlYXInXCI+PC9jLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChzZWFyY2hUZW1wbCkge1xuICAgICAgICAgIDxjLXRlbXBsYXRlUmVuZGVyZXIgW2RhdGFdPVwic2VhcmNoVGVtcGxcIiBbaXRlbV09XCJpdGVtXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoc2V0dGluZ3MuZ3JvdXBCeSAmJiAhc2V0dGluZ3MubGF6eUxvYWRpbmcpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwiYy1pbnB1dFwiXG4gICAgICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZXR0aW5ncy5zZWFyY2hQbGFjZWhvbGRlclRleHRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXJcIlxuICAgICAgICAgICAgKGtleXVwKT1cImZpbHRlckdyb3VwZWRMaXN0KClcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwic2VhcmNoSWNvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoIXNldHRpbmdzLmdyb3VwQnkgJiYgIXNldHRpbmdzLmxhenlMb2FkaW5nKSB7XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cImMtaW5wdXRcIlxuICAgICAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2V0dGluZ3Muc2VhcmNoUGxhY2Vob2xkZXJUZXh0XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyXCJcbiAgICAgICAgICAgIChrZXl1cCk9XCJmaWx0ZXJpdGVtcygkZXZlbnQpXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cInNlYXJjaEljb25cIlxuICAgICAgICAgIC8+XG4gICAgICAgIH0gQGVsc2UgaWYgKHNldHRpbmdzLmxhenlMb2FkaW5nKSB7XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cImMtaW5wdXRcIlxuICAgICAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2V0dGluZ3Muc2VhcmNoUGxhY2Vob2xkZXJUZXh0XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmlsdGVyXCJcbiAgICAgICAgICAgIChrZXl1cCk9XCJvbktleVVwKCRldmVudClcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwic2VhcmNoSWNvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmlsdGVyLXNlbGVjdC1hbGxcIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICFzZXR0aW5ncy5sYXp5TG9hZGluZyAmJlxuICAgICAgICAgIHNldHRpbmdzLmVuYWJsZUZpbHRlclNlbGVjdEFsbCAmJlxuICAgICAgICAgICFpc0Rpc2FibGVkSXRlbVByZXNlbnRcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwicHVyZS1jaGVja2JveCBzZWxlY3QtYWxsXCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgIXNldHRpbmdzLmdyb3VwQnkgJiZcbiAgICAgICAgICAgIGZpbHRlcj8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgZmlsdGVyTGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgIXNldHRpbmdzLnNpbmdsZVNlbGVjdGlvblxuICAgICAgICAgIFwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUZpbHRlclNlbGVjdEFsbCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImlzRmlsdGVyU2VsZWN0QWxsXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZXR0aW5ncy5saW1pdFNlbGVjdGlvbiA9PSBzZWxlY3RlZEl0ZW1zPy5sZW5ndGhcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwib3B0aW9uTmFtZVwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwib3B0aW9uXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwiaXNGaWx0ZXJTZWxlY3RBbGxcIj57e1xuICAgICAgICAgICAgICBzZXR0aW5ncy5maWx0ZXJTZWxlY3RBbGxUZXh0XG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwiIWlzRmlsdGVyU2VsZWN0QWxsXCI+e3tcbiAgICAgICAgICAgICAgc2V0dGluZ3MuZmlsdGVyVW5TZWxlY3RBbGxUZXh0XG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwicHVyZS1jaGVja2JveCBzZWxlY3QtYWxsXCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgc2V0dGluZ3MuZ3JvdXBCeSAmJlxuICAgICAgICAgICAgZmlsdGVyPy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICBncm91cGVkRGF0YT8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgIXNldHRpbmdzLnNpbmdsZVNlbGVjdGlvblxuICAgICAgICAgIFwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUZpbHRlclNlbGVjdEFsbCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImlzRmlsdGVyU2VsZWN0QWxsICYmIGZpbHRlcj8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwic2V0dGluZ3MubGltaXRTZWxlY3Rpb24gPT0gc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cIm9wdGlvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICA8c3BhbiBbaGlkZGVuXT1cImlzRmlsdGVyU2VsZWN0QWxsXCI+e3tcbiAgICAgICAgICAgICAgc2V0dGluZ3MuZmlsdGVyU2VsZWN0QWxsVGV4dFxuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBbaGlkZGVuXT1cIiFpc0ZpbHRlclNlbGVjdEFsbFwiPnt7XG4gICAgICAgICAgICAgIHNldHRpbmdzLmZpbHRlclVuU2VsZWN0QWxsVGV4dFxuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmaWx0ZXItc2VsZWN0LWFsbFwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgc2V0dGluZ3MubGF6eUxvYWRpbmcgJiZcbiAgICAgICAgICBzZXR0aW5ncy5lbmFibGVGaWx0ZXJTZWxlY3RBbGwgJiZcbiAgICAgICAgICAhaXNEaXNhYmxlZEl0ZW1QcmVzZW50ICYmXG4gICAgICAgICAgIXNldHRpbmdzLnNpbmdsZVNlbGVjdGlvblxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJwdXJlLWNoZWNrYm94IHNlbGVjdC1hbGxcIlxuICAgICAgICAgICpuZ0lmPVwiZmlsdGVyPy5sZW5ndGggPiAwICYmIGluZmluaXRlRmlsdGVyTGVuZ3RoID4gMFwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUluZmluaXRlRmlsdGVyU2VsZWN0QWxsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNJbmZpbml0ZUZpbHRlclNlbGVjdEFsbFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwic2V0dGluZ3MubGltaXRTZWxlY3Rpb24gPT0gc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cIm9wdGlvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICA8c3BhbiBbaGlkZGVuXT1cImlzSW5maW5pdGVGaWx0ZXJTZWxlY3RBbGxcIj57e1xuICAgICAgICAgICAgICBzZXR0aW5ncy5maWx0ZXJTZWxlY3RBbGxUZXh0XG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwiIWlzSW5maW5pdGVGaWx0ZXJTZWxlY3RBbGxcIj57e1xuICAgICAgICAgICAgICBzZXR0aW5ncy5maWx0ZXJVblNlbGVjdEFsbFRleHRcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXNlbGVjdC1hbGxcIiAqbmdJZj1cImZpbHRlcj8ubGVuZ3RoXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tY29udGFpbmVyXCIgKm5nSWY9XCJzZXR0aW5ncy5hZGROZXdJdGVtT25GaWx0ZXJcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYy1idG4gYnRuLWljZWJsdWVcIiAoY2xpY2spPVwiYWRkRmlsdGVyTmV3SXRlbSgpXCI+XG4gICAgICAgICAgICB7eyBzZXR0aW5ncy5hZGROZXdCdXR0b25UZXh0IH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAoXG4gICAgICAgICFzZXR0aW5ncy5ncm91cEJ5ICYmICFzZXR0aW5ncy5sYXp5TG9hZGluZyAmJiBpdGVtVGVtcGwgPT0gdW5kZWZpbmVkXG4gICAgICApIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtzdHlsZS5tYXhIZWlnaHRdPVwic2V0dGluZ3MubWF4SGVpZ2h0ICsgJ3B4J1wiXG4gICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdzogYXV0b1wiXG4gICAgICAgID5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJsYXp5Q29udGFpbmVyXCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayhpdGVtLCBpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwdXJlLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtaXRlbSc6IGlzU2VsZWN0ZWQoaXRlbSkgPT0gdHJ1ZSB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzZXR0aW5ncy5zaG93Q2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgKHNldHRpbmdzLmxpbWl0U2VsZWN0aW9uID09IHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAhaXNTZWxlY3RlZChpdGVtKSkgfHxcbiAgICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxsYWJlbD57eyBpdGVtW3NldHRpbmdzLmxhYmVsS2V5XSB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSBpZiAoXG4gICAgICAgICFzZXR0aW5ncy5ncm91cEJ5ICYmIHNldHRpbmdzLmxhenlMb2FkaW5nICYmIGl0ZW1UZW1wbCA9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICA8IS0tIGxhenkgbG9hZGluZyAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtzdHlsZS5tYXhIZWlnaHRdPVwic2V0dGluZ3MubWF4SGVpZ2h0ICsgJ3B4J1wiXG4gICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdzogYXV0b1wiXG4gICAgICAgID5cbiAgICAgICAgICA8dWxcbiAgICAgICAgICAgIHZpcnR1YWxTY3JvbGxlclxuICAgICAgICAgICAgI3Njcm9sbFxuICAgICAgICAgICAgW2VuYWJsZVVuZXF1YWxDaGlsZHJlblNpemVzXT1cInJhbmRvbVNpemVcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cInZpcnR1YWxkYXRhXCJcbiAgICAgICAgICAgICh2c1N0YXJ0KT1cIm9uU2Nyb2xsRW5kKCRldmVudClcIlxuICAgICAgICAgICAgKHZzRW5kKT1cIm9uU2Nyb2xsRW5kKCRldmVudClcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyBoZWlnaHQ6IHNldHRpbmdzLm1heEhlaWdodCArICdweCcgfVwiXG4gICAgICAgICAgICBjbGFzcz1cImxhenlDb250YWluZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzY3JvbGwudmlld1BvcnRJdGVtczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayhpdGVtLCBpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwdXJlLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2VsZWN0ZWQtaXRlbSc6IGlzU2VsZWN0ZWQoaXRlbSkgPT0gdHJ1ZSB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzZXR0aW5ncy5zaG93Q2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgKHNldHRpbmdzLmxpbWl0U2VsZWN0aW9uID09IHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAhaXNTZWxlY3RlZChpdGVtKSkgfHxcbiAgICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8bGFiZWw+e3sgaXRlbVtzZXR0aW5ncy5sYWJlbEtleV0gfX08L2xhYmVsPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2UgaWYgKFxuICAgICAgICAhc2V0dGluZ3MuZ3JvdXBCeSAmJiAhc2V0dGluZ3MubGF6eUxvYWRpbmcgJiYgaXRlbVRlbXBsICE9IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIDwhLS0gY3VzdG9tIHRlbXBsYXRlIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW3N0eWxlLm1heEhlaWdodF09XCJzZXR0aW5ncy5tYXhIZWlnaHQgKyAncHgnXCJcbiAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93OiBhdXRvXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImxhenlDb250YWluZXJcIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0sIGksICRldmVudClcIlxuICAgICAgICAgICAgICBjbGFzcz1cInB1cmUtY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1pdGVtJzogaXNTZWxlY3RlZChpdGVtKSA9PSB0cnVlIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNldHRpbmdzLnNob3dDaGVja2JveFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAoc2V0dGluZ3MubGltaXRTZWxlY3Rpb24gPT0gc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgICFpc1NlbGVjdGVkKGl0ZW0pKSB8fFxuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxsYWJlbD48L2xhYmVsPlxuICAgICAgICAgICAgICA8Yy10ZW1wbGF0ZVJlbmRlcmVyXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwiaXRlbVRlbXBsXCJcbiAgICAgICAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgPjwvYy10ZW1wbGF0ZVJlbmRlcmVyPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2UgaWYgKFxuICAgICAgICAhc2V0dGluZ3MuZ3JvdXBCeSAmJiBzZXR0aW5ncy5sYXp5TG9hZGluZyAmJiBpdGVtVGVtcGwgIT0gdW5kZWZpbmVkXG4gICAgICApIHtcbiAgICAgICAgPCEtLSBsYXp5IGxvYWRpbmcgYW5kIGN1c3RvbSB0ZW1wbGF0ZSAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtzdHlsZS5tYXhIZWlnaHRdPVwic2V0dGluZ3MubWF4SGVpZ2h0ICsgJ3B4J1wiXG4gICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdzogYXV0b1wiXG4gICAgICAgID5cbiAgICAgICAgICA8dWxcbiAgICAgICAgICAgIHZpcnR1YWxTY3JvbGxlclxuICAgICAgICAgICAgI3Njcm9sbDJcbiAgICAgICAgICAgIFtlbmFibGVVbmVxdWFsQ2hpbGRyZW5TaXplc109XCJyYW5kb21TaXplXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJ2aXJ0dWFsZGF0YVwiXG4gICAgICAgICAgICAodnNTdGFydCk9XCJvblNjcm9sbEVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICh2c0VuZCk9XCJvblNjcm9sbEVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGF6eUNvbnRhaW5lclwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGhlaWdodDogc2V0dGluZ3MubWF4SGVpZ2h0ICsgJ3B4JyB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2Nyb2xsMi52aWV3UG9ydEl0ZW1zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0sIGksICRldmVudClcIlxuICAgICAgICAgICAgICBjbGFzcz1cInB1cmUtY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1pdGVtJzogaXNTZWxlY3RlZChpdGVtKSA9PSB0cnVlIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNldHRpbmdzLnNob3dDaGVja2JveFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAoc2V0dGluZ3MubGltaXRTZWxlY3Rpb24gPT0gc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgICFpc1NlbGVjdGVkKGl0ZW0pKSB8fFxuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxsYWJlbD48L2xhYmVsPlxuICAgICAgICAgICAgICA8Yy10ZW1wbGF0ZVJlbmRlcmVyXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwiaXRlbVRlbXBsXCJcbiAgICAgICAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgPjwvYy10ZW1wbGF0ZVJlbmRlcmVyPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2UgaWYgKFxuICAgICAgICBzZXR0aW5ncy5ncm91cEJ5ICYmIHNldHRpbmdzLmxhenlMb2FkaW5nICYmIGl0ZW1UZW1wbCAhPSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICA8IS0tIGxhenkgbG9hZGluZywgZ3JvdXAgQnkgYW5kIGN1c3RvbSB0ZW1wbGF0ZSAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtzdHlsZS5tYXhIZWlnaHRdPVwic2V0dGluZ3MubWF4SGVpZ2h0ICsgJ3B4J1wiXG4gICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdzogYXV0b1wiXG4gICAgICAgID5cbiAgICAgICAgICA8dWxcbiAgICAgICAgICAgIHZpcnR1YWxTY3JvbGxlclxuICAgICAgICAgICAgI3Njcm9sbDNcbiAgICAgICAgICAgIFtlbmFibGVVbmVxdWFsQ2hpbGRyZW5TaXplc109XCJyYW5kb21TaXplXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJ2aXJ0dWFsZGF0YVwiXG4gICAgICAgICAgICAodnNTdGFydCk9XCJvblNjcm9sbEVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICh2c0VuZCk9XCJvblNjcm9sbEVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBzZXR0aW5ncy5tYXhIZWlnaHQgKyAncHgnIH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJsYXp5Q29udGFpbmVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzY3JvbGwzLnZpZXdQb3J0SXRlbXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0sIGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0uZ3JwVGl0bGVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdncnAtdGl0bGUnOiBpdGVtLmdycFRpdGxlLFxuICAgICAgICAgICAgICAgICAgJ2dycC1pdGVtJzogIWl0ZW0uZ3JwVGl0bGUgJiYgIXNldHRpbmdzLnNpbmdsZVNlbGVjdGlvbixcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInB1cmUtY2hlY2tib3hcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInNldHRpbmdzLnNob3dDaGVja2JveCAmJiAhc2V0dGluZ3Muc2luZ2xlU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgKHNldHRpbmdzLmxpbWl0U2VsZWN0aW9uID09IHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICFpc1NlbGVjdGVkKGl0ZW0pKSB8fFxuICAgICAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGxhYmVsPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGMtdGVtcGxhdGVSZW5kZXJlclxuICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiaXRlbVRlbXBsXCJcbiAgICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgID48L2MtdGVtcGxhdGVSZW5kZXJlcj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmdycFRpdGxlXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnZ3JwLXRpdGxlJzogaXRlbS5ncnBUaXRsZSxcbiAgICAgICAgICAgICAgICAgICdncnAtaXRlbSc6ICFpdGVtLmdycFRpdGxlICYmICFzZXR0aW5ncy5zaW5nbGVTZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwdXJlLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZXR0aW5ncy5zaG93Q2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAoc2V0dGluZ3MubGltaXRTZWxlY3Rpb24gPT0gc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWlzU2VsZWN0ZWQoaXRlbSkpIHx8XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8bGFiZWw+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8Yy10ZW1wbGF0ZVJlbmRlcmVyXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJpdGVtVGVtcGxcIlxuICAgICAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgPjwvYy10ZW1wbGF0ZVJlbmRlcmVyPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSBpZiAoXG4gICAgICAgIHNldHRpbmdzLmdyb3VwQnkgJiYgIXNldHRpbmdzLmxhenlMb2FkaW5nICYmIGl0ZW1UZW1wbCAhPSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICA8IS0tIGdyb3VwIEJ5IGFuZCBjdXN0b20gdGVtcGxhdGUgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0XT1cInNldHRpbmdzLm1heEhlaWdodCArICdweCdcIlxuICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG9cIlxuICAgICAgICA+XG4gICAgICAgICAgPHVsIGNsYXNzPVwibGF6eUNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXBlZERhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEdyb3VwKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnZ3JwLXRpdGxlJzogaXRlbS5ncnBUaXRsZSxcbiAgICAgICAgICAgICAgICAgICdncnAtaXRlbSc6ICFpdGVtLmdycFRpdGxlICYmICFzZXR0aW5ncy5zaW5nbGVTZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwdXJlLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZXR0aW5ncy5zaG93Q2hlY2tib3ggJiYgIXNldHRpbmdzLnNpbmdsZVNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgIChzZXR0aW5ncy5saW1pdFNlbGVjdGlvbiA9PSBzZWxlY3RlZEl0ZW1zPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAhaXNTZWxlY3RlZChpdGVtKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxsYWJlbD57eyBpdGVtW3NldHRpbmdzLmxhYmVsS2V5XSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGF6eUNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHZhbCBvZiBpdGVtLmxpc3Q7IGxldCBqID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25JdGVtQ2xpY2sodmFsLCBqLCAkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICdncnAtdGl0bGUnOiB2YWwuZ3JwVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JwLWl0ZW0nOiAhdmFsLmdycFRpdGxlICYmICFzZXR0aW5ncy5zaW5nbGVTZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwdXJlLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZXR0aW5ncy5zaG93Q2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQodmFsKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChzZXR0aW5ncy5saW1pdFNlbGVjdGlvbiA9PSBzZWxlY3RlZEl0ZW1zPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNTZWxlY3RlZCh2YWwpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8Yy10ZW1wbGF0ZVJlbmRlcmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJpdGVtVGVtcGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1dPVwidmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9jLXRlbXBsYXRlUmVuZGVyZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2UgaWYgKFxuICAgICAgICBzZXR0aW5ncy5ncm91cEJ5ICYmIHNldHRpbmdzLmxhenlMb2FkaW5nICYmIGl0ZW1UZW1wbCA9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICA8IS0tIGxhenkgbG9hZGluZywgZ3JvdXAgQnkgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0XT1cInNldHRpbmdzLm1heEhlaWdodCArICdweCdcIlxuICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG9cIlxuICAgICAgICA+XG4gICAgICAgICAgPHZpcnR1YWwtc2Nyb2xsZXJcbiAgICAgICAgICAgIFtpdGVtc109XCJncm91cGVkRGF0YVwiXG4gICAgICAgICAgICAodnNVcGRhdGUpPVwidmlld1BvcnRJdGVtcyA9ICRldmVudFwiXG4gICAgICAgICAgICAodnNFbmQpPVwib25TY3JvbGxFbmQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGhlaWdodDogc2V0dGluZ3MubWF4SGVpZ2h0ICsgJ3B4JyB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dWxcbiAgICAgICAgICAgICAgdmlydHVhbFNjcm9sbGVyXG4gICAgICAgICAgICAgICNzY3JvbGw0XG4gICAgICAgICAgICAgIFtlbmFibGVVbmVxdWFsQ2hpbGRyZW5TaXplc109XCJyYW5kb21TaXplXCJcbiAgICAgICAgICAgICAgW2l0ZW1zXT1cInZpcnR1YWxkYXRhXCJcbiAgICAgICAgICAgICAgKHZzU3RhcnQpPVwib25TY3JvbGxFbmQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICh2c0VuZCk9XCJvblNjcm9sbEVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyBoZWlnaHQ6IHNldHRpbmdzLm1heEhlaWdodCArICdweCcgfVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibGF6eUNvbnRhaW5lclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNjcm9sbDQudmlld1BvcnRJdGVtczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmdycFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgJ2dycC10aXRsZSc6IGl0ZW0uZ3JwVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICdncnAtaXRlbSc6ICFpdGVtLmdycFRpdGxlICYmICFzZXR0aW5ncy5zaW5nbGVTZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICdzZWxlY3RlZC1pdGVtJzogaXNTZWxlY3RlZChpdGVtKSA9PSB0cnVlLFxuICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInB1cmUtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLnNob3dDaGVja2JveCAmJlxuICAgICAgICAgICAgICAgICAgICAgICFpdGVtLmdycFRpdGxlICYmXG4gICAgICAgICAgICAgICAgICAgICAgIXNldHRpbmdzLnNpbmdsZVNlbGVjdGlvblxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgIChzZXR0aW5ncy5saW1pdFNlbGVjdGlvbiA9PSBzZWxlY3RlZEl0ZW1zPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFpc1NlbGVjdGVkKGl0ZW0pKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgaXRlbVtzZXR0aW5ncy5sYWJlbEtleV0gfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSwgaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpdGVtLmdycFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgJ2dycC10aXRsZSc6IGl0ZW0uZ3JwVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICdncnAtaXRlbSc6ICFpdGVtLmdycFRpdGxlICYmICFzZXR0aW5ncy5zaW5nbGVTZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICdzZWxlY3RlZC1pdGVtJzogaXNTZWxlY3RlZChpdGVtKSA9PSB0cnVlLFxuICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInB1cmUtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNldHRpbmdzLnNob3dDaGVja2JveCAmJiAhaXRlbS5ncnBUaXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgKHNldHRpbmdzLmxpbWl0U2VsZWN0aW9uID09IHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIWlzU2VsZWN0ZWQoaXRlbSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBpdGVtW3NldHRpbmdzLmxhYmVsS2V5XSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L3ZpcnR1YWwtc2Nyb2xsZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSBpZiAoXG4gICAgICAgIHNldHRpbmdzLmdyb3VwQnkgJiYgIXNldHRpbmdzLmxhenlMb2FkaW5nICYmIGl0ZW1UZW1wbCA9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICA8IS0tIGdyb3VwIEJ5IC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW3N0eWxlLm1heEhlaWdodF09XCJzZXR0aW5ncy5tYXhIZWlnaHQgKyAncHgnXCJcbiAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93OiBhdXRvXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImxhenlDb250YWluZXJcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdyb3VwZWREYXRhOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RHcm91cChpdGVtKVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ2dycC10aXRsZSc6IGl0ZW0uZ3JwVGl0bGUsXG4gICAgICAgICAgICAgICAgICAnZ3JwLWl0ZW0nOiAhaXRlbS5ncnBUaXRsZSAmJiAhc2V0dGluZ3Muc2luZ2xlU2VsZWN0aW9uLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHVyZS1jaGVja2JveFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2V0dGluZ3Muc2hvd0NoZWNrYm94ICYmICFzZXR0aW5ncy5zaW5nbGVTZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAoc2V0dGluZ3MubGltaXRTZWxlY3Rpb24gPT0gc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWlzU2VsZWN0ZWQoaXRlbSkpIHx8XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8bGFiZWw+e3sgaXRlbVtzZXR0aW5ncy5sYWJlbEtleV0gfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxhenlDb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCB2YWwgb2YgaXRlbS5saXN0OyBsZXQgaiA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uSXRlbUNsaWNrKHZhbCwgaiwgJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0ZWQtaXRlbSc6IGlzU2VsZWN0ZWQodmFsKSA9PSB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dycC10aXRsZSc6IHZhbC5ncnBUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdncnAtaXRlbSc6ICF2YWwuZ3JwVGl0bGUgJiYgIXNldHRpbmdzLnNpbmdsZVNlbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB1cmUtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNldHRpbmdzLnNob3dDaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZCh2YWwpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHRpbmdzLmxpbWl0U2VsZWN0aW9uID09IHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc1NlbGVjdGVkKHZhbCkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyB2YWxbc2V0dGluZ3MubGFiZWxLZXldIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICBAaWYgKGRhdGE/Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIDxoNSBjbGFzcz1cImxpc3QtbWVzc2FnZVwiPlxuICAgICAgICAgIHt7IHNldHRpbmdzLm5vRGF0YUxhYmVsIH19XG4gICAgICAgIDwvaDU+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
1039
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhcjItbXVsdGlzZWxlY3QtZHJvcGRvd24tbGliL3NyYy9saWIvbXVsdGlzZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhcjItbXVsdGlzZWxlY3QtZHJvcGRvd24tbGliL3NyYy9saWIvbXVsdGlzZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBRVosUUFBUSxFQUtSLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsV0FBVyxFQUNYLGlCQUFpQixFQUVqQixhQUFhLEdBR2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWxELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzRSxPQUFPLEVBQWdCLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHdCQUF3QixHQUN6QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7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bmVyLFxuICBPbkRlc3Ryb3ksXG4gIE5nTW9kdWxlLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkNoYW5nZXMsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBBZnRlclZpZXdDaGVja2VkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgQ29udGVudENoaWxkLFxuICBWaWV3Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgRWxlbWVudFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGb3Jtc01vZHVsZSxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBWYWxpZGF0b3IsXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE15RXhjZXB0aW9uIH0gZnJvbSAnLi9tdWx0aXNlbGVjdC5tb2RlbCc7XG5pbXBvcnQgeyBEcm9wZG93blNldHRpbmdzIH0gZnJvbSAnLi9tdWx0aXNlbGVjdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTGlzdEZpbHRlclBpcGUgfSBmcm9tICcuL2xpc3QtZmlsdGVyJztcbmltcG9ydCB7IEl0ZW0sIEJhZGdlLCBTZWFyY2gsIFRlbXBsYXRlUmVuZGVyZXIsIENJY29uIH0gZnJvbSAnLi9tZW51LWl0ZW0nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBWaXJ0dWFsU2Nyb2xsZXJNb2R1bGUsXG4gIFZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCxcbn0gZnJvbSAnLi92aXJ0dWFsLXNjcm9sbC92aXJ0dWFsLXNjcm9sbCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDbGlja091dHNpZGVTZXJ2aWNlIH0gZnJvbSAnLi9jbGljay1vdXRzaWRlLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgRFJPUERPV05fQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQW5ndWxhck11bHRpU2VsZWN0KSxcbiAgbXVsdGk6IHRydWUsXG59O1xuZXhwb3J0IGNvbnN0IERST1BET1dOX0NPTlRST0xfVkFMSURBVElPTjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBbmd1bGFyTXVsdGlTZWxlY3QpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FuZ3VsYXIyLW11bHRpc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeyAnW2NsYXNzXSc6ICdkZWZhdWx0U2V0dGluZ3MuY2xhc3NlcycgfSxcbiAgc3R5bGVVcmxzOiBbJy4vbXVsdGlzZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbRFJPUERPV05fQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUiwgRFJPUERPV05fQ09OVFJPTF9WQUxJREFUSU9OXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQW5ndWxhck11bHRpU2VsZWN0XG4gIGltcGxlbWVudHNcbiAgICBPbkluaXQsXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgT25DaGFuZ2VzLFxuICAgIFZhbGlkYXRvcixcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIE9uRGVzdHJveVxue1xuICBASW5wdXQoKVxuICBkYXRhOiBBcnJheTxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHNldHRpbmdzOiBEcm9wZG93blNldHRpbmdzO1xuXG4gIEBJbnB1dCgpXG4gIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgQE91dHB1dCgnb25TZWxlY3QnKVxuICBvblNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCdvbkRlU2VsZWN0JylcbiAgb25EZVNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCdvblNlbGVjdEFsbCcpXG4gIG9uU2VsZWN0QWxsOiBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PGFueT4+KCk7XG5cbiAgQE91dHB1dCgnb25EZVNlbGVjdEFsbCcpXG4gIG9uRGVTZWxlY3RBbGw6IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4oKTtcblxuICBAT3V0cHV0KCdvbk9wZW4nKVxuICBvbk9wZW46IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgnb25DbG9zZScpXG4gIG9uQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgnb25TY3JvbGxUb0VuZCcpXG4gIG9uU2Nyb2xsVG9FbmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgnb25GaWx0ZXJTZWxlY3RBbGwnKVxuICBvbkZpbHRlclNlbGVjdEFsbDogRXZlbnRFbWl0dGVyPEFycmF5PGFueT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PigpO1xuXG4gIEBPdXRwdXQoJ29uRmlsdGVyRGVTZWxlY3RBbGwnKVxuICBvbkZpbHRlckRlU2VsZWN0QWxsOiBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIEFycmF5PGFueT5cbiAgPigpO1xuXG4gIEBPdXRwdXQoJ29uQWRkRmlsdGVyTmV3SXRlbScpXG4gIG9uQWRkRmlsdGVyTmV3SXRlbTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCdvbkdyb3VwU2VsZWN0JylcbiAgb25Hcm91cFNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KCdvbkdyb3VwRGVTZWxlY3QnKVxuICBvbkdyb3VwRGVTZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChJdGVtLCB7IHN0YXRpYzogZmFsc2UgfSkgaXRlbVRlbXBsOiBJdGVtO1xuICBAQ29udGVudENoaWxkKEJhZGdlLCB7IHN0YXRpYzogZmFsc2UgfSkgYmFkZ2VUZW1wbDogQmFkZ2U7XG4gIEBDb250ZW50Q2hpbGQoU2VhcmNoLCB7IHN0YXRpYzogZmFsc2UgfSkgc2VhcmNoVGVtcGw6IFNlYXJjaDtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KSBzZWFyY2hJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2VsZWN0ZWRMaXN0JywgeyBzdGF0aWM6IGZhbHNlIH0pIHNlbGVjdGVkTGlzdEVsZW06IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duTGlzdCcsIHsgc3RhdGljOiBmYWxzZSB9KSBkcm9wZG93bkxpc3RFbGVtOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdjdXBwYURyb3Bkb3duJywgeyBzdGF0aWM6IGZhbHNlIH0pIGN1cHBhRHJvcGRvd246IEVsZW1lbnRSZWY7XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAuZXNjYXBlJywgWyckZXZlbnQnXSlcbiAgb25Fc2NhcGVEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuZXNjYXBlVG9DbG9zZSkge1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFsnJGV2ZW50J10pXG4gIG9uU2Nyb2xsKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5pc0FjdGl2ZSAmJiB0aGlzLnNldHRpbmdzLnRhZ1RvQm9keSkge1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAvKiAgICAgICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5jdXBwYURyb3Bkb3duLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnNldHRpbmdzLmF1dG9Qb3NpdGlvbil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kcm9wRG93blRvcCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueSArIGVsZW0uY2xpZW50SGVpZ2h0ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZHJvcERvd25MZWZ0ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS54OyAqL1xuICAgIH1cbiAgfVxuXG4gIHZpcnR1YWxkYXRhOiBhbnkgPSBbXTtcbiAgc2VhcmNoVGVybSQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgcHVibGljIHNlbGVjdGVkSXRlbXM6IEFycmF5PGFueT47XG4gIHB1YmxpYyBpc0FjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgaXNTZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGlzRmlsdGVyU2VsZWN0QWxsOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBpc0luZmluaXRlRmlsdGVyU2VsZWN0QWxsOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBncm91cGVkRGF0YTogQXJyYXk8YW55PjtcbiAgZmlsdGVyOiBhbnk7XG4gIHB1YmxpYyBjaHVua0FycmF5OiBhbnlbXTtcbiAgcHVibGljIHNjcm9sbFRvcDogYW55O1xuICBwdWJsaWMgY2h1bmtJbmRleDogYW55W10gPSBbXTtcbiAgcHVibGljIGNhY2hlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgZ3JvdXBDYWNoZWRJdGVtczogYW55W10gPSBbXTtcbiAgcHVibGljIHRvdGFsUm93czogYW55O1xuICBwdWJsaWMgaXRlbUhlaWdodDogYW55ID0gNDEuNjtcbiAgcHVibGljIHNjcmVlbkl0ZW1zTGVuOiBhbnk7XG4gIHB1YmxpYyBjYWNoZWRJdGVtc0xlbjogYW55O1xuICBwdWJsaWMgdG90YWxIZWlnaHQ6IGFueTtcbiAgcHVibGljIHNjcm9sbGVyOiBhbnk7XG4gIHB1YmxpYyBtYXhCdWZmZXI6IGFueTtcbiAgcHVibGljIGxhc3RTY3JvbGxlZDogYW55O1xuICBwdWJsaWMgbGFzdFJlcGFpbnRZOiBhbnk7XG4gIHB1YmxpYyBzZWxlY3RlZExpc3RIZWlnaHQ6IGFueTtcbiAgcHVibGljIGZpbHRlckxlbmd0aDogYW55ID0gMDtcbiAgcHVibGljIGluZmluaXRlRmlsdGVyTGVuZ3RoOiBhbnkgPSAwO1xuICBwdWJsaWMgdmlld1BvcnRJdGVtczogYW55O1xuICBwdWJsaWMgaXRlbTogYW55O1xuICBwdWJsaWMgZHJvcGRvd25MaXN0WU9mZnNldDogbnVtYmVyID0gMDtcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBkcm9wRG93bldpZHRoOiBudW1iZXIgPSAwO1xuICBwdWJsaWMgZHJvcERvd25Ub3A6IGFueSA9ICcnO1xuICBwdWJsaWMgZHJvcERvd25Cb3R0b206IGFueSA9ICd1bnNldCc7XG4gIHB1YmxpYyBkcm9wRG93bkxlZnQ6IG51bWJlciA9IDA7XG4gIHB1YmxpYyBpZDogYW55ID0gd2luZG93LmNyeXB0by5yYW5kb21VVUlEKCk7XG4gIGRlZmF1bHRTZXR0aW5nczogRHJvcGRvd25TZXR0aW5ncyA9IHtcbiAgICBzaW5nbGVTZWxlY3Rpb246IGZhbHNlLFxuICAgIHRleHQ6ICdTZWxlY3QnLFxuICAgIGVuYWJsZUNoZWNrQWxsOiB0cnVlLFxuICAgIHNlbGVjdEFsbFRleHQ6ICdTZWxlY3QgQWxsJyxcbiAgICB1blNlbGVjdEFsbFRleHQ6ICdVblNlbGVjdCBBbGwnLFxuICAgIGZpbHRlclNlbGVjdEFsbFRleHQ6ICdTZWxlY3QgYWxsIGZpbHRlcmVkIHJlc3VsdHMnLFxuICAgIGZpbHRlclVuU2VsZWN0QWxsVGV4dDogJ1VuU2VsZWN0IGFsbCBmaWx0ZXJlZCByZXN1bHRzJyxcbiAgICBlbmFibGVTZWFyY2hGaWx0ZXI6IGZhbHNlLFxuICAgIHNlYXJjaEJ5OiBbXSxcbiAgICBtYXhIZWlnaHQ6IDMwMCxcbiAgICBiYWRnZVNob3dMaW1pdDogOTk5OTk5OTk5OTk5LFxuICAgIGNsYXNzZXM6ICcnLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBzZWFyY2hQbGFjZWhvbGRlclRleHQ6ICdTZWFyY2gnLFxuICAgIHNob3dDaGVja2JveDogdHJ1ZSxcbiAgICBub0RhdGFMYWJlbDogJ05vIERhdGEgQXZhaWxhYmxlJyxcbiAgICBzZWFyY2hBdXRvZm9jdXM6IHRydWUsXG4gICAgbGF6eUxvYWRpbmc6IGZhbHNlLFxuICAgIGxhYmVsS2V5OiAnaXRlbU5hbWUnLFxuICAgIHByaW1hcnlLZXk6ICdpZCcsXG4gICAgcG9zaXRpb246ICdib3R0b20nLFxuICAgIGF1dG9Qb3NpdGlvbjogdHJ1ZSxcbiAgICBlbmFibGVGaWx0ZXJTZWxlY3RBbGw6IHRydWUsXG4gICAgc2VsZWN0R3JvdXA6IGZhbHNlLFxuICAgIGFkZE5ld0l0ZW1PbkZpbHRlcjogZmFsc2UsXG4gICAgYWRkTmV3QnV0dG9uVGV4dDogJ0FkZCcsXG4gICAgZXNjYXBlVG9DbG9zZTogdHJ1ZSxcbiAgICBjbGVhckFsbDogdHJ1ZSxcbiAgICB0YWdUb0JvZHk6IHRydWUsXG4gIH07XG4gIHJhbmRvbVNpemU6IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgcGFyc2VFcnJvcjogYm9vbGVhbjtcbiAgcHVibGljIGZpbHRlcmVkTGlzdDogYW55ID0gW107XG4gIHZpcnR1YWxTY3Jvb2xsSW5pdDogYm9vbGVhbiA9IGZhbHNlO1xuICBAVmlld0NoaWxkKFZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHByaXZhdGUgdmlydHVhbFNjcm9sbGVyOiBWaXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQ7XG4gIHB1YmxpYyBpc0Rpc2FibGVkSXRlbVByZXNlbnQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZmlsdGVyUGlwZTogTGlzdEZpbHRlclBpcGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc2VydmljZTogQ2xpY2tPdXRzaWRlU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5zZWFyY2hUZXJtJFxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YXAoKHRlcm0pID0+IHRlcm0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodmFsKSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVySW5maW5pdGVMaXN0KHZhbCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX3NlcnZpY2UucmVnaXN0ZXIodGhpcy5pZCk7XG4gICAgdGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24odGhpcy5kZWZhdWx0U2V0dGluZ3MsIHRoaXMuc2V0dGluZ3MpO1xuXG4gICAgdGhpcy5jYWNoZWRJdGVtcyA9IHRoaXMuY2xvbmVBcnJheSh0aGlzLmRhdGEpO1xuICAgIGlmICh0aGlzLnNldHRpbmdzLnBvc2l0aW9uID09ICd0b3AnKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExpc3RIZWlnaHQgPSB7IHZhbDogMCB9O1xuICAgICAgICB0aGlzLnNlbGVjdGVkTGlzdEhlaWdodC52YWwgPVxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0RWxlbS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2FsY3VsYXRlRHJvcGRvd25EaXJlY3Rpb24oKTtcbiAgICB9KTtcbiAgICB0aGlzLnZpcnR1YWxTY3Jvb2xsSW5pdCA9IGZhbHNlO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLl9zZXJ2aWNlXG4gICAgICAub25DbGljaygpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIWV2ZW50LnRhcmdldCB8fFxuICAgICAgICAgICF0aGlzLmlzQWN0aXZlIHx8XG4gICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duT25DbGlja091dCgpO1xuICAgICAgfSk7XG4gIH1cbiAgb25LZXlVcChldnQ6IGFueSkge1xuICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dCgoPEhUTUxJbnB1dEVsZW1lbnQ+ZXZ0LnRhcmdldCkudmFsdWUpO1xuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5kYXRhICYmICFjaGFuZ2VzLmRhdGEuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIGlmICh0aGlzLnNldHRpbmdzLmdyb3VwQnkpIHtcbiAgICAgICAgdGhpcy5ncm91cGVkRGF0YSA9IHRoaXMudHJhbnNmb3JtRGF0YSh0aGlzLmRhdGEsIHRoaXMuc2V0dGluZ3MuZ3JvdXBCeSk7XG4gICAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoID09IDApIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyb3VwQ2FjaGVkSXRlbXMgPSB0aGlzLmNsb25lQXJyYXkodGhpcy5ncm91cGVkRGF0YSk7XG4gICAgICB9XG4gICAgICB0aGlzLmNhY2hlZEl0ZW1zID0gdGhpcy5jbG9uZUFycmF5KHRoaXMuZGF0YSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLnNldHRpbmdzICYmICFjaGFuZ2VzLnNldHRpbmdzLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih0aGlzLmRlZmF1bHRTZXR0aW5ncywgdGhpcy5zZXR0aW5ncyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmxvYWRpbmcpIHtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2V0dGluZ3MubGF6eUxvYWRpbmcgJiYgdGhpcy52aXJ0dWFsU2Nyb29sbEluaXQgJiYgY2hhbmdlcy5kYXRhKSB7XG4gICAgICB0aGlzLnZpcnR1YWxkYXRhID0gY2hhbmdlcy5kYXRhLmN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gIH1cbiAgbmdEb0NoZWNrKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwIHx8XG4gICAgICAgIHRoaXMuZGF0YS5sZW5ndGggPT0gMCB8fFxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoIDwgdGhpcy5kYXRhLmxlbmd0aFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuaXNTZWxlY3RBbGwgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLnNldHRpbmdzLmxhenlMb2FkaW5nKSB7XG4gICAgICAvLyB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxhenlDb250YWluZXJcIilbMF0uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbC5iaW5kKHRoaXMpKTtcbiAgICB9XG4gIH1cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0RWxlbS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCAmJlxuICAgICAgdGhpcy5zZXR0aW5ncy5wb3NpdGlvbiA9PSAndG9wJyAmJlxuICAgICAgdGhpcy5zZWxlY3RlZExpc3RIZWlnaHRcbiAgICApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0SGVpZ2h0LnZhbCA9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMaXN0RWxlbS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgLy90aGlzLmNhbGN1bGF0ZURyb3Bkb3duRGlyZWN0aW9uKCk7XG4gIH1cbiAgb25JdGVtQ2xpY2soaXRlbTogYW55LCBpbmRleDogbnVtYmVyLCBldnQ6IEV2ZW50KSB7XG4gICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZXR0aW5ncy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBmb3VuZCA9IHRoaXMuaXNTZWxlY3RlZChpdGVtKTtcbiAgICBsZXQgbGltaXQgPVxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA8IHRoaXMuc2V0dGluZ3MubGltaXRTZWxlY3Rpb24gPyB0cnVlIDogZmFsc2U7XG5cbiAgICBpZiAoIWZvdW5kKSB7XG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5saW1pdFNlbGVjdGlvbikge1xuICAgICAgICBpZiAobGltaXQpIHtcbiAgICAgICAgICB0aGlzLmFkZFNlbGVjdGVkKGl0ZW0pO1xuICAgICAgICAgIHRoaXMub25TZWxlY3QuZW1pdChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZGRTZWxlY3RlZChpdGVtKTtcbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KGl0ZW0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkKGl0ZW0pO1xuICAgICAgdGhpcy5vbkRlU2VsZWN0LmVtaXQoaXRlbSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzU2VsZWN0QWxsIHx8IHRoaXMuZGF0YS5sZW5ndGggPiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmlzU2VsZWN0QWxsID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0YS5sZW5ndGggPT0gdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5pc1NlbGVjdEFsbCA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLnNldHRpbmdzLmdyb3VwQnkpIHtcbiAgICAgIHRoaXMudXBkYXRlR3JvdXBJbmZvKGl0ZW0pO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgdmFsaWRhdGUoYzogVW50eXBlZEZvcm1Db250cm9sKTogYW55IHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycpIHtcbiAgICAgIGlmICh0aGlzLnNldHRpbmdzLnNpbmdsZVNlbGVjdGlvbikge1xuICAgICAgICBpZiAodGhpcy5zZXR0aW5ncy5ncm91cEJ5KSB7XG4gICAgICAgICAgdGhpcy5ncm91cGVkRGF0YSA9IHRoaXMudHJhbnNmb3JtRGF0YShcbiAgICAgICAgICAgIHRoaXMuZGF0YSxcbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuZ3JvdXBCeSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuZ3JvdXBDYWNoZWRJdGVtcyA9IHRoaXMuY2xvbmVBcnJheSh0aGlzLmdyb3VwZWREYXRhKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbdmFsdWVbMF1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbdmFsdWVbMF1dO1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgTXlFeGNlcHRpb24oNDA0LCB7XG4gICAgICAgICAgICAgICAgbXNnOiAnU2luZ2xlIFNlbGVjdGlvbiBNb2RlLCBTZWxlY3RlZCBJdGVtcyBjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gb25lIGl0ZW0uJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUuYm9keS5tc2cpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MubGltaXRTZWxlY3Rpb24pIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB2YWx1ZS5zbGljZSgwLCB0aGlzLnNldHRpbmdzLmxpbWl0U2VsZWN0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zICE9IG51bGwgJiZcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSB0aGlzLmRhdGEubGVuZ3RoICYmXG4gICAgICAgICAgdGhpcy5kYXRhLmxlbmd0aCA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5pc1NlbGVjdEFsbCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3MuZ3JvdXBCeSkge1xuICAgICAgICAgIHRoaXMuZ3JvdXBlZERhdGEgPSB0aGlzLnRyYW5zZm9ybURhdGEoXG4gICAgICAgICAgICB0aGlzLmRhdGEsXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzLmdyb3VwQnksXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwQ2FjaGVkSXRlbXMgPSB0aGlzLmNsb25lQXJyYXkodGhpcy5ncm91cGVkRGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgfVxuICB9XG5cbiAgLy9Gcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIC8vRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XG4gICAgcmV0dXJuIGl0ZW1bdGhpcy5zZXR0aW5ncy5wcmltYXJ5S2V5XTtcbiAgfVxuICBpc1NlbGVjdGVkKGNsaWNrZWRJdGVtOiBhbnkpIHtcbiAgICBpZiAoXG4gICAgICBjbGlja2VkSXRlbS5kaXNhYmxlZCB8fFxuICAgICAgIXRoaXMuc2VsZWN0ZWRJdGVtcyB8fFxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PT0gMFxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMuc29tZShcbiAgICAgIChpdGVtKSA9PlxuICAgICAgICBjbGlja2VkSXRlbVt0aGlzLnNldHRpbmdzLnByaW1hcnlLZXldID09PVxuICAgICAgICBpdGVtW3RoaXMuc2V0dGluZ3MucHJpbWFyeUtleV0sXG4gICAgKTtcbiAgfVxuICBhZGRTZWxlY3RlZChpdGVtOiBhbnkpIHtcbiAgICBpZiAoaXRlbS5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZXR0aW5ncy5zaW5nbGVTZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9IGVsc2UgdGhpcy5zZWxlY3RlZEl0ZW1zID0gWy4uLnRoaXMuc2VsZWN0ZWRJdGVtcywgaXRlbV07XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICB9XG4gIHJlbW92ZVNlbGVjdGVkKGNsaWNrZWRJdGVtOiBhbnkpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgoXG4gICAgICAgIChpdGVtKSA9PlxuICAgICAgICAgIGNsaWNrZWRJdGVtW3RoaXMuc2V0dGluZ3MucHJpbWFyeUtleV0gPT09XG4gICAgICAgICAgaXRlbVt0aGlzLnNldHRpbmdzLnByaW1hcnlLZXldLFxuICAgICAgKTtcbiAgICAgIGlmIChwb3NpdGlvbiAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNwbGljZShwb3NpdGlvbiwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICB9XG4gIHRvZ2dsZURyb3Bkb3duKGV2dDogYW55KSB7XG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pc0FjdGl2ZSA9ICF0aGlzLmlzQWN0aXZlO1xuICAgIGlmICh0aGlzLmlzQWN0aXZlKSB7XG4gICAgICB0aGlzLm9wZW5Ecm9wZG93bigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2V0dGluZ3MubGF6eUxvYWRpbmcpIHtcbiAgICAgIHRoaXMudmlydHVhbGRhdGEgPSB0aGlzLmRhdGE7XG4gICAgICB0aGlzLnZpcnR1YWxTY3Jvb2xsSW5pdCA9IHRydWU7XG4gICAgfVxuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG4gIHB1YmxpYyBvcGVuRHJvcGRvd24oKSB7XG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pc0FjdGl2ZSA9IHRydWU7XG4gICAgdGhpcy5jYWxjdWxhdGVEcm9wZG93bkRpcmVjdGlvbigpO1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2V0dGluZ3Muc2VhcmNoQXV0b2ZvY3VzICYmXG4gICAgICB0aGlzLnNlYXJjaElucHV0ICYmXG4gICAgICB0aGlzLnNldHRpbmdzLmVuYWJsZVNlYXJjaEZpbHRlciAmJlxuICAgICAgIXRoaXMuc2VhcmNoVGVtcGxcbiAgICApIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgICB0aGlzLm9uT3Blbi5lbWl0KHRydWUpO1xuICB9XG4gIHB1YmxpYyBjbG9zZURyb3Bkb3duKCkge1xuICAgIGlmICh0aGlzLnNlYXJjaElucHV0ICYmIHRoaXMuc2V0dGluZ3MubGF6eUxvYWRpbmcpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dCkge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyID0gJyc7XG4gICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dCgnJyk7XG4gICAgdGhpcy5vbkNsb3NlLmVtaXQoZmFsc2UpO1xuICB9XG4gIHB1YmxpYyBjbG9zZURyb3Bkb3duT25DbGlja091dCgpIHtcbiAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xuICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQgJiYgdGhpcy5zZXR0aW5ncy5sYXp5TG9hZGluZykge1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0KSB7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgfVxuICAgICAgdGhpcy5maWx0ZXIgPSAnJztcbiAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2xlYXJTZWFyY2goKTtcbiAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dCgnJyk7XG4gICAgICB0aGlzLm9uQ2xvc2UuZW1pdChmYWxzZSk7XG4gICAgfVxuICB9XG4gIHRvZ2dsZVNlbGVjdEFsbChldmVudCkge1xuICAgIGlmICghdGhpcy5pc1NlbGVjdEFsbCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5ncm91cEJ5KSB7XG4gICAgICAgIHRoaXMuZ3JvdXBlZERhdGEuZm9yRWFjaCgob2JqKSA9PiB7XG4gICAgICAgICAgb2JqLnNlbGVjdGVkID0gIW9iai5kaXNhYmxlZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ3JvdXBDYWNoZWRJdGVtcy5mb3JFYWNoKChvYmopID0+IHtcbiAgICAgICAgICBvYmouc2VsZWN0ZWQgPSAhb2JqLmRpc2FibGVkO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuZGF0YS5zbGljZSgpO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5kYXRhLmZpbHRlcihcbiAgICAgICAgKGluZGl2aWR1YWxEYXRhKSA9PiAhaW5kaXZpZHVhbERhdGEuZGlzYWJsZWQsXG4gICAgICApO1xuICAgICAgdGhpcy5pc1NlbGVjdEFsbCA9IHRydWU7XG4gICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sodGhpcy5zZWxlY3RlZEl0ZW1zKTtcblxuICAgICAgdGhpcy5vblNlbGVjdEFsbC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnNldHRpbmdzLmdyb3VwQnkpIHtcbiAgICAgICAgdGhpcy5ncm91cGVkRGF0YS5mb3JFYWNoKChvYmopID0+IHtcbiAgICAgICAgICBvYmouc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ3JvdXBDYWNoZWRJdGVtcy5mb3JFYWNoKChvYmopID0+IHtcbiAgICAgICAgICBvYmouc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgIHRoaXMuaXNTZWxlY3RBbGwgPSBmYWxzZTtcbiAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuXG4gICAgICB0aGlzLm9uRGVTZWxlY3RBbGwuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY2FsY3VsYXRlRHJvcGRvd25EaXJlY3Rpb24oKTtcbiAgICB9KTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuICBmaWx0ZXJHcm91cGVkTGlzdCgpIHtcbiAgICBpZiAodGhpcy5maWx0ZXIgPT0gJycgfHwgdGhpcy5maWx0ZXIgPT0gbnVsbCkge1xuICAgICAgdGhpcy5jbGVhclNlYXJjaCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmdyb3VwZWREYXRhID0gdGhpcy5jbG9uZUFycmF5KHRoaXMuZ3JvdXBDYWNoZWRJdGVtcyk7XG4gICAgdGhpcy5ncm91cGVkRGF0YSA9IHRoaXMuZ3JvdXBlZERhdGEuZmlsdGVyKChvYmopID0+IHtcbiAgICAgIGxldCBhcnIgPSBbXTtcbiAgICAgIGlmIChcbiAgICAgICAgb2JqW3RoaXMuc2V0dGluZ3MubGFiZWxLZXldXG4gICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAuaW5kZXhPZih0aGlzLmZpbHRlci50b0xvd2VyQ2FzZSgpKSA+IC0xXG4gICAgICApIHtcbiAgICAgICAgYXJyID0gb2JqLmxpc3Q7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnIgPSBvYmoubGlzdC5maWx0ZXIoKHQpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdFt0aGlzLnNldHRpbmdzLmxhYmVsS2V5XVxuICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAuaW5kZXhPZih0aGlzLmZpbHRlci50b0xvd2VyQ2FzZSgpKSA+IC0xXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIG9iai5saXN0ID0gYXJyO1xuICAgICAgaWYgKFxuICAgICAgICBvYmpbdGhpcy5zZXR0aW5ncy5sYWJlbEtleV1cbiAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIC5pbmRleE9mKHRoaXMuZmlsdGVyLnRvTG93ZXJDYXNlKCkpID4gLTFcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGFyci5zb21lKChjYXQpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgY2F0W3RoaXMuc2V0dGluZ3MubGFiZWxLZXldXG4gICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgIC5pbmRleE9mKHRoaXMuZmlsdGVyLnRvTG93ZXJDYXNlKCkpID4gLTFcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICB0b2dnbGVGaWx0ZXJTZWxlY3RBbGwoKSB7XG4gICAgaWYgKCF0aGlzLmlzRmlsdGVyU2VsZWN0QWxsKSB7XG4gICAgICBsZXQgYWRkZWQgPSBbXTtcbiAgICAgIGlmICh0aGlzLnNldHRpbmdzLmdyb3VwQnkpIHtcbiAgICAgICAgdGhpcy5ncm91cGVkRGF0YS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBpdGVtLnNlbGU7XG4gICAgICAgICAgaWYgKGl0ZW0ubGlzdCkge1xuICAgICAgICAgICAgaXRlbS5saXN0LmZvckVhY2goKGVsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzU2VsZWN0ZWQoZWwpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRTZWxlY3RlZChlbCk7XG4gICAgICAgICAgICAgICAgYWRkZWQucHVzaChlbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnVwZGF0ZUdyb3VwSW5mbyhpdGVtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5maWx0ZXJlZExpc3QuZm9yRWFjaCgoZWw6IGFueSkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5pc1NlbGVjdGVkKGVsKSAmJiAhZWwuaGFzT3duUHJvcGVydHkoJ2dycFRpdGxlJykpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkU2VsZWN0ZWQoZWwpO1xuICAgICAgICAgICAgYWRkZWQucHVzaChlbCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRMaXN0LmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5pc1NlbGVjdGVkKGl0ZW0pKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFNlbGVjdGVkKGl0ZW0pO1xuICAgICAgICAgICAgYWRkZWQucHVzaChpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmlzRmlsdGVyU2VsZWN0QWxsID0gdHJ1ZTtcbiAgICAgIHRoaXMub25GaWx0ZXJTZWxlY3RBbGwuZW1pdChhZGRlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCByZW1vdmVkID0gW107XG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5ncm91cEJ5KSB7XG4gICAgICAgIHRoaXMuZ3JvdXBlZERhdGEuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0ubGlzdCkge1xuICAgICAgICAgICAgaXRlbS5saXN0LmZvckVhY2goKGVsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZChlbCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkKGVsKTtcbiAgICAgICAgICAgICAgICByZW1vdmVkLnB1c2goZWwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy51cGRhdGVHcm91cEluZm8oaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZpbHRlcmVkTGlzdC5mb3JFYWNoKChlbDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZChlbCkpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWQoZWwpO1xuICAgICAgICAgICAgcmVtb3ZlZC5wdXNoKGVsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZExpc3QuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZChpdGVtKSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVTZWxlY3RlZChpdGVtKTtcbiAgICAgICAgICAgIHJlbW92ZWQucHVzaChpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5pc0ZpbHRlclNlbGVjdEFsbCA9IGZhbHNlO1xuICAgICAgdGhpcy5vbkZpbHRlckRlU2VsZWN0QWxsLmVtaXQocmVtb3ZlZCk7XG4gICAgfVxuICB9XG4gIHRvZ2dsZUluZmluaXRlRmlsdGVyU2VsZWN0QWxsKCkge1xuICAgIGlmICghdGhpcy5pc0luZmluaXRlRmlsdGVyU2VsZWN0QWxsKSB7XG4gICAgICB0aGlzLnZpcnR1YWxkYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZChpdGVtKSkge1xuICAgICAgICAgIHRoaXMuYWRkU2VsZWN0ZWQoaXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5pc0luZmluaXRlRmlsdGVyU2VsZWN0QWxsID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aXJ0dWFsZGF0YS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZChpdGVtKSkge1xuICAgICAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWQoaXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5pc0luZmluaXRlRmlsdGVyU2VsZWN0QWxsID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIGNsZWFyU2VhcmNoKCkge1xuICAgIGlmICh0aGlzLnNldHRpbmdzLmdyb3VwQnkpIHtcbiAgICAgIHRoaXMuZ3JvdXBlZERhdGEgPSBbXTtcbiAgICAgIHRoaXMuZ3JvdXBlZERhdGEgPSB0aGlzLmNsb25lQXJyYXkodGhpcy5ncm91cENhY2hlZEl0ZW1zKTtcbiAgICB9XG4gICAgdGhpcy5maWx0ZXIgPSAnJztcbiAgICB0aGlzLmlzRmlsdGVyU2VsZWN0QWxsID0gZmFsc2U7XG4gICAgdGhpcy5zZWFyY2hUZXJtJC5uZXh0KCcnKTtcbiAgICB0aGlzLmRhdGEgPSB0aGlzLmNhY2hlZEl0ZW1zO1xuICB9XG4gIG9uRmlsdGVyQ2hhbmdlKGRhdGE6IGFueSkge1xuICAgIGlmICgodGhpcy5maWx0ZXIgJiYgdGhpcy5maWx0ZXIgPT0gJycpIHx8IGRhdGEubGVuZ3RoID09IDApIHtcbiAgICAgIHRoaXMuaXNGaWx0ZXJTZWxlY3RBbGwgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMuY2FjaGVkSXRlbXMuc2xpY2UoKTtcbiAgICB9XG4gICAgbGV0IGNudCA9IDA7XG4gICAgZGF0YS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmICghaXRlbS5oYXNPd25Qcm9wZXJ0eSgnZ3JwVGl0bGUnKSAmJiB0aGlzLmlzU2VsZWN0ZWQoaXRlbSkpIHtcbiAgICAgICAgY250Kys7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoY250ID4gMCAmJiB0aGlzLmZpbHRlckxlbmd0aCA9PSBjbnQpIHtcbiAgICAgIHRoaXMuaXNGaWx0ZXJTZWxlY3RBbGwgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoY250ID4gMCAmJiB0aGlzLmZpbHRlckxlbmd0aCAhPSBjbnQpIHtcbiAgICAgIHRoaXMuaXNGaWx0ZXJTZWxlY3RBbGwgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxuICBjbG9uZUFycmF5KGFycjogYW55KSB7XG4gICAgbGV0IGksIGNvcHk7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShhcnIpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhcnIgPT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyAnQ2Fubm90IGNsb25lIGFycmF5IGNvbnRhaW5pbmcgYW4gb2JqZWN0ISc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICB9XG4gIHVwZGF0ZUdyb3VwSW5mbyhpdGVtOiBhbnkpIHtcbiAgICBpZiAoaXRlbS5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQga2V5ID0gdGhpcy5zZXR0aW5ncy5ncm91cEJ5O1xuICAgIHRoaXMuZ3JvdXBlZERhdGEuZm9yRWFjaCgob2JqOiBhbnkpID0+IHtcbiAgICAgIGxldCBjbnQgPSAwO1xuICAgICAgaWYgKG9iai5ncnBUaXRsZSAmJiBpdGVtW2tleV0gPT0gb2JqW2tleV0pIHtcbiAgICAgICAgaWYgKG9iai5saXN0KSB7XG4gICAgICAgICAgb2JqLmxpc3QuZm9yRWFjaCgoZWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZChlbCkpIHtcbiAgICAgICAgICAgICAgY250Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvYmoubGlzdCAmJiBjbnQgPT09IG9iai5saXN0Lmxlbmd0aCAmJiBpdGVtW2tleV0gPT0gb2JqW2tleV0pIHtcbiAgICAgICAgb2JqLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAob2JqLmxpc3QgJiYgY250ICE9IG9iai5saXN0Lmxlbmd0aCAmJiBpdGVtW2tleV0gPT0gb2JqW2tleV0pIHtcbiAgICAgICAgb2JqLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5ncm91cENhY2hlZEl0ZW1zLmZvckVhY2goKG9iajogYW55KSA9PiB7XG4gICAgICBsZXQgY250ID0gMDtcbiAgICAgIGlmIChvYmouZ3JwVGl0bGUgJiYgaXRlbVtrZXldID09IG9ialtrZXldKSB7XG4gICAgICAgIGlmIChvYmoubGlzdCkge1xuICAgICAgICAgIG9iai5saXN0LmZvckVhY2goKGVsOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoZWwpKSB7XG4gICAgICAgICAgICAgIGNudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAob2JqLmxpc3QgJiYgY250ID09PSBvYmoubGlzdC5sZW5ndGggJiYgaXRlbVtrZXldID09IG9ialtrZXldKSB7XG4gICAgICAgIG9iai5zZWxlY3RlZCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKG9iai5saXN0ICYmIGNudCAhPSBvYmoubGlzdC5sZW5ndGggJiYgaXRlbVtrZXldID09IG9ialtrZXldKSB7XG4gICAgICAgIG9iai5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHRyYW5zZm9ybURhdGEoYXJyOiBBcnJheTxhbnk+LCBmaWVsZDogYW55KTogQXJyYXk8YW55PiB7XG4gICAgY29uc3QgZ3JvdXBlZE9iajogYW55ID0gYXJyLnJlZHVjZSgocHJldjogYW55LCBjdXI6IGFueSkgPT4ge1xuICAgICAgaWYgKCFwcmV2W2N1cltmaWVsZF1dKSB7XG4gICAgICAgIHByZXZbY3VyW2ZpZWxkXV0gPSBbY3VyXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByZXZbY3VyW2ZpZWxkXV0ucHVzaChjdXIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwge30pO1xuICAgIGNvbnN0IHRlbXBBcnI6IGFueSA9IFtdO1xuICAgIE9iamVjdC5rZXlzKGdyb3VwZWRPYmopLm1hcCgoeDogYW55KSA9PiB7XG4gICAgICBsZXQgb2JqOiBhbnkgPSB7fTtcbiAgICAgIGxldCBkaXNhYmxlZENoaWxkcmVucyA9IFtdO1xuICAgICAgb2JqWydncnBUaXRsZSddID0gdHJ1ZTtcbiAgICAgIG9ialt0aGlzLnNldHRpbmdzLmxhYmVsS2V5XSA9IHg7XG4gICAgICBvYmpbdGhpcy5zZXR0aW5ncy5ncm91cEJ5XSA9IHg7XG4gICAgICBvYmpbJ3NlbGVjdGVkJ10gPSBmYWxzZTtcbiAgICAgIG9ialsnbGlzdCddID0gW107XG4gICAgICBsZXQgY250ID0gMDtcbiAgICAgIGdyb3VwZWRPYmpbeF0uZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIGl0ZW1bJ2xpc3QnXSA9IFtdO1xuICAgICAgICBpZiAoaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuaXNEaXNhYmxlZEl0ZW1QcmVzZW50ID0gdHJ1ZTtcbiAgICAgICAgICBkaXNhYmxlZENoaWxkcmVucy5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIG9iai5saXN0LnB1c2goaXRlbSk7XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQoaXRlbSkpIHtcbiAgICAgICAgICBjbnQrKztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoY250ID09IG9iai5saXN0Lmxlbmd0aCkge1xuICAgICAgICBvYmouc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIGN1cnJlbnQgZ3JvdXAgaXRlbSdzIGFsbCBjaGlsZHJlbnMgYXJlIGRpc2FibGVkIG9yIG5vdFxuICAgICAgb2JqWydkaXNhYmxlZCddID0gZGlzYWJsZWRDaGlsZHJlbnMubGVuZ3RoID09PSBncm91cGVkT2JqW3hdLmxlbmd0aDtcbiAgICAgIHRlbXBBcnIucHVzaChvYmopO1xuICAgICAgLy8gb2JqLmxpc3QuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAvLyAgICAgdGVtcEFyci5wdXNoKGl0ZW0pO1xuICAgICAgLy8gfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRlbXBBcnI7XG4gIH1cbiAgcHVibGljIGZpbHRlckluZmluaXRlTGlzdChldnQ6IGFueSkge1xuICAgIGxldCBmaWx0ZXJlZEVsZW1zOiBBcnJheTxhbnk+ID0gW107XG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuZ3JvdXBCeSkge1xuICAgICAgdGhpcy5ncm91cGVkRGF0YSA9IHRoaXMuZ3JvdXBDYWNoZWRJdGVtcy5zbGljZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGEgPSB0aGlzLmNhY2hlZEl0ZW1zLnNsaWNlKCk7XG4gICAgICB0aGlzLnZpcnR1YWxkYXRhID0gdGhpcy5jYWNoZWRJdGVtcy5zbGljZSgpO1xuICAgIH1cblxuICAgIGlmICgoZXZ0ICE9IG51bGwgfHwgZXZ0ICE9ICcnKSAmJiAhdGhpcy5zZXR0aW5ncy5ncm91cEJ5KSB7XG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy5zZWFyY2hCeS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAobGV0IHQgPSAwOyB0IDwgdGhpcy5zZXR0aW5ncy5zZWFyY2hCeS5sZW5ndGg7IHQrKykge1xuICAgICAgICAgIHRoaXMudmlydHVhbGRhdGEuZmlsdGVyKChlbDogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGVsW3RoaXMuc2V0dGluZ3Muc2VhcmNoQnlbdF0udG9TdHJpbmcoKV1cbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgLmluZGV4T2YoZXZ0LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkgPj0gMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGZpbHRlcmVkRWxlbXMucHVzaChlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmlydHVhbGRhdGEuZmlsdGVyKGZ1bmN0aW9uIChlbDogYW55KSB7XG4gICAgICAgICAgZm9yIChsZXQgcHJvcCBpbiBlbCkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBlbFtwcm9wXVxuICAgICAgICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAuaW5kZXhPZihldnQudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSA+PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZmlsdGVyZWRFbGVtcy5wdXNoKGVsKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMudmlydHVhbGRhdGEgPSBbXTtcbiAgICAgIHRoaXMudmlydHVhbGRhdGEgPSBmaWx0ZXJlZEVsZW1zO1xuICAgICAgdGhpcy5pbmZpbml0ZUZpbHRlckxlbmd0aCA9IHRoaXMudmlydHVhbGRhdGEubGVuZ3RoO1xuICAgIH1cbiAgICBpZiAoZXZ0LnRvU3RyaW5nKCkgIT0gJycgJiYgdGhpcy5zZXR0aW5ncy5ncm91cEJ5KSB7XG4gICAgICB0aGlzLmdyb3VwZWREYXRhLmZpbHRlcihmdW5jdGlvbiAoZWw6IGFueSkge1xuICAgICAgICBpZiAoZWwuaGFzT3duUHJvcGVydHkoJ2dycFRpdGxlJykpIHtcbiAgICAgICAgICBmaWx0ZXJlZEVsZW1zLnB1c2goZWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZvciAobGV0IHByb3AgaW4gZWwpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZWxbcHJvcF1cbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgLmluZGV4T2YoZXZ0LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkgPj0gMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGZpbHRlcmVkRWxlbXMucHVzaChlbCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLmdyb3VwZWREYXRhID0gW107XG4gICAgICB0aGlzLmdyb3VwZWREYXRhID0gZmlsdGVyZWRFbGVtcztcbiAgICAgIHRoaXMuaW5maW5pdGVGaWx0ZXJMZW5ndGggPSB0aGlzLmdyb3VwZWREYXRhLmxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKGV2dC50b1N0cmluZygpID09ICcnICYmIHRoaXMuY2FjaGVkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy52aXJ0dWFsZGF0YSA9IFtdO1xuICAgICAgdGhpcy52aXJ0dWFsZGF0YSA9IHRoaXMuY2FjaGVkSXRlbXM7XG4gICAgICB0aGlzLmluZmluaXRlRmlsdGVyTGVuZ3RoID0gMDtcbiAgICB9XG4gICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbGVyKSB7XG4gICAgICB0aGlzLnZpcnR1YWxTY3JvbGxlci5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG4gIHJlc2V0SW5maW5pdGVTZWFyY2goKSB7XG4gICAgdGhpcy5maWx0ZXIgPSAnJztcbiAgICB0aGlzLmlzSW5maW5pdGVGaWx0ZXJTZWxlY3RBbGwgPSBmYWxzZTtcbiAgICB0aGlzLnZpcnR1YWxkYXRhID0gW107XG4gICAgdGhpcy52aXJ0dWFsZGF0YSA9IHRoaXMuY2FjaGVkSXRlbXM7XG4gICAgdGhpcy5ncm91cGVkRGF0YSA9IHRoaXMuZ3JvdXBDYWNoZWRJdGVtcztcbiAgICB0aGlzLnNlYXJjaFRlcm0kLm5leHQoJycpO1xuICAgIHRoaXMuaW5maW5pdGVGaWx0ZXJMZW5ndGggPSAwO1xuICB9XG4gIG9uU2Nyb2xsRW5kKGU6IGFueSkge1xuICAgIGlmIChlLmVuZEluZGV4ID09PSB0aGlzLmRhdGEubGVuZ3RoIC0gMSB8fCBlLnN0YXJ0SW5kZXggPT09IDApIHtcbiAgICB9XG4gICAgdGhpcy5vblNjcm9sbFRvRW5kLmVtaXQoZSk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHRoaXMuX3NlcnZpY2UudW5yZWdpc3Rlcih0aGlzLmlkKTtcbiAgfVxuICBzZWxlY3RHcm91cChpdGVtOiBhbnkpIHtcbiAgICBpZiAoaXRlbS5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXRlbS5zZWxlY3RlZCkge1xuICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgaXRlbS5saXN0LmZvckVhY2goKG9iajogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWQob2JqKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLm9uR3JvdXBEZVNlbGVjdC5lbWl0KGl0ZW0pO1xuICAgICAgdGhpcy51cGRhdGVHcm91cEluZm8oaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgaXRlbS5saXN0LmZvckVhY2goKG9iajogYW55KSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5pc1NlbGVjdGVkKG9iaikpIHtcbiAgICAgICAgICB0aGlzLmFkZFNlbGVjdGVkKG9iaik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5vbkdyb3VwU2VsZWN0LmVtaXQoaXRlbSk7XG4gICAgICB0aGlzLnVwZGF0ZUdyb3VwSW5mbyhpdGVtKTtcbiAgICB9XG4gIH1cbiAgYWRkRmlsdGVyTmV3SXRlbSgpIHtcbiAgICB0aGlzLm9uQWRkRmlsdGVyTmV3SXRlbS5lbWl0KHRoaXMuZmlsdGVyKTtcbiAgICB0aGlzLmZpbHRlclBpcGUudHJhbnNmb3JtKHRoaXMuZGF0YSwgdGhpcy5maWx0ZXIsIHRoaXMuc2V0dGluZ3Muc2VhcmNoQnkpO1xuICB9XG4gIGNhbGN1bGF0ZURyb3Bkb3duRGlyZWN0aW9uKCkge1xuICAgIGxldCBzaG91bGRPcGVuVG93YXJkc1RvcCA9IHRoaXMuc2V0dGluZ3MucG9zaXRpb24gPT0gJ3RvcCc7XG4gICAgY29uc3QgZWxlbSA9IHRoaXMuY3VwcGFEcm9wZG93bi5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGRyb3Bkb3duV2lkdGggPSBlbGVtLmNsaWVudFdpZHRoO1xuICAgIHRoaXMuZHJvcERvd25XaWR0aCA9IGRyb3Bkb3duV2lkdGg7XG4gICAgdGhpcy5kcm9wRG93bkxlZnQgPSB0aGlzLnNldHRpbmdzLnRhZ1RvQm9keVxuICAgICAgPyBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnhcbiAgICAgIDogJ3Vuc2V0JztcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5wb3NpdGlvbiA9PSAndG9wJyAmJiAhdGhpcy5zZXR0aW5ncy5hdXRvUG9zaXRpb24pIHtcbiAgICAgIHRoaXMub3BlblRvd2FyZHNUb3AodHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuc2V0dGluZ3MucG9zaXRpb24gPT0gJ2JvdHRvbScgJiZcbiAgICAgICF0aGlzLnNldHRpbmdzLmF1dG9Qb3NpdGlvblxuICAgICkge1xuICAgICAgdGhpcy5vcGVuVG93YXJkc1RvcChmYWxzZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNldHRpbmdzLmF1dG9Qb3NpdGlvbikge1xuICAgICAgY29uc3QgZHJvcGRvd25IZWlnaHQgPSB0aGlzLmRlZmF1bHRTZXR0aW5ncy5tYXhIZWlnaHQ7XG4gICAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICBjb25zdCBzZWxlY3RlZExpc3RCb3VuZHMgPVxuICAgICAgICB0aGlzLnNlbGVjdGVkTGlzdEVsZW0ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgY29uc3Qgc3BhY2VPblRvcDogbnVtYmVyID0gc2VsZWN0ZWRMaXN0Qm91bmRzLnRvcDtcbiAgICAgIGNvbnN0IHNwYWNlT25Cb3R0b206IG51bWJlciA9IHZpZXdwb3J0SGVpZ2h0IC0gc2VsZWN0ZWRMaXN0Qm91bmRzLnRvcDtcbiAgICAgIGlmIChzcGFjZU9uQm90dG9tIDwgc3BhY2VPblRvcCAmJiBkcm9wZG93bkhlaWdodCA8IHNwYWNlT25Ub3ApIHtcbiAgICAgICAgdGhpcy5vcGVuVG93YXJkc1RvcCh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3BlblRvd2FyZHNUb3AoZmFsc2UpO1xuICAgICAgfVxuICAgICAgLy8gS2VlcCBwcmVmZXJlbmNlIGlmIHRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2Ugb24gZWl0aGVyIHRoZSB0b3Agb3IgYm90dG9tXG4gICAgICAvKiBcdFx0XHRpZiAoc3BhY2VPblRvcCB8fCBzcGFjZU9uQm90dG9tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZE9wZW5Ub3dhcmRzVG9wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZE9wZW5Ub3dhcmRzVG9wID0gc3BhY2VPblRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRPcGVuVG93YXJkc1RvcCA9ICFzcGFjZU9uQm90dG9tO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gKi9cbiAgICB9XG4gIH1cbiAgb3BlblRvd2FyZHNUb3AodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBlbGVtID0gdGhpcy5jdXBwYURyb3Bkb3duLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuc2VsZWN0ZWRMaXN0RWxlbS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCkge1xuICAgICAgdGhpcy5kcm9wZG93bkxpc3RZT2Zmc2V0ID1cbiAgICAgICAgMTUgLSB0aGlzLnNlbGVjdGVkTGlzdEVsZW0ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy50YWdUb0JvZHkpIHtcbiAgICAgICAgdGhpcy5kcm9wRG93blRvcCA9XG4gICAgICAgICAgZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS55IC1cbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTGlzdEVsZW0ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgKiAyIC1cbiAgICAgICAgICAxNSAtXG4gICAgICAgICAgdGhpcy5kZWZhdWx0U2V0dGluZ3MubWF4SGVpZ2h0ICtcbiAgICAgICAgICAncHgnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kcm9wRG93bkJvdHRvbSA9XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZExpc3RFbGVtLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0ICsgMTUgKyAncHgnO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXR0aW5ncy5wb3NpdGlvbiA9ICd0b3AnO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zZXR0aW5ncy50YWdUb0JvZHkpIHtcbiAgICAgICAgdGhpcy5kcm9wRG93blRvcCA9XG4gICAgICAgICAgZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS55ICsgZWxlbS5jbGllbnRIZWlnaHQgKyAxICsgJ3B4JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZHJvcERvd25Ub3AgPSAndW5zZXQnO1xuICAgICAgICB0aGlzLmRyb3BEb3duQm90dG9tID0gJ3Vuc2V0JztcbiAgICAgIH1cbiAgICAgIHRoaXMuZHJvcGRvd25MaXN0WU9mZnNldCA9IDA7XG4gICAgICB0aGlzLnNldHRpbmdzLnBvc2l0aW9uID0gJ2JvdHRvbSc7XG4gICAgfVxuICB9XG4gIGNsZWFyU2VsZWN0aW9uKGU/OiBhbnkpIHtcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5ncm91cEJ5KSB7XG4gICAgICB0aGlzLmdyb3VwQ2FjaGVkSXRlbXMuZm9yRWFjaCgob2JqKSA9PiB7XG4gICAgICAgIG9iai5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuY2xlYXJTZWFyY2goKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICB0aGlzLmlzU2VsZWN0QWxsID0gZmFsc2U7XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgIHRoaXMub25EZVNlbGVjdEFsbC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gIH1cbiAgZmlsdGVyaXRlbXMoZXZ0OiBhbnkpIHtcbiAgICB0aGlzLmZpbHRlcmVkTGlzdCA9IHRoaXMuZmlsdGVyUGlwZS50cmFuc2Zvcm0oXG4gICAgICB0aGlzLmNhY2hlZEl0ZW1zLFxuICAgICAgZXZ0LnRhcmdldC52YWx1ZSxcbiAgICAgIHRoaXMuc2V0dGluZ3Muc2VhcmNoQnksXG4gICAgKTtcbiAgICBpZiAodGhpcy5maWx0ZXJlZExpc3QpIHtcbiAgICAgIGxldCBsZW4gPSAwO1xuICAgICAgdGhpcy5maWx0ZXJlZExpc3QuZm9yRWFjaCgob2JqOiBhbnksIGk6IGFueSkgPT4ge1xuICAgICAgICBpZiAob2JqLmRpc2FibGVkKSB7XG4gICAgICAgICAgdGhpcy5pc0Rpc2FibGVkSXRlbVByZXNlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghb2JqLmhhc093blByb3BlcnR5KCdncnBUaXRsZScpKSB7XG4gICAgICAgICAgbGVuKys7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5maWx0ZXJMZW5ndGggPSBsZW47XG4gICAgfVxuICAgIHRoaXMub25GaWx0ZXJDaGFuZ2UodGhpcy5maWx0ZXJlZExpc3QpO1xuICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBWaXJ0dWFsU2Nyb2xsZXJNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBBbmd1bGFyTXVsdGlTZWxlY3QsXG4gICAgTGlzdEZpbHRlclBpcGUsXG4gICAgSXRlbSxcbiAgICBUZW1wbGF0ZVJlbmRlcmVyLFxuICAgIEJhZGdlLFxuICAgIFNlYXJjaCxcbiAgICBDSWNvbixcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEFuZ3VsYXJNdWx0aVNlbGVjdCxcbiAgICBMaXN0RmlsdGVyUGlwZSxcbiAgICBJdGVtLFxuICAgIFRlbXBsYXRlUmVuZGVyZXIsXG4gICAgQmFkZ2UsXG4gICAgU2VhcmNoLFxuICAgIENJY29uLFxuICBdLFxuICBwcm92aWRlcnM6IFtMaXN0RmlsdGVyUGlwZSwgQ2xpY2tPdXRzaWRlU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJNdWx0aVNlbGVjdE1vZHVsZSB7fVxuIiwiPGRpdiBjbGFzcz1cImN1cHBhLWRyb3Bkb3duXCIgI2N1cHBhRHJvcGRvd24+XG4gIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1saXN0XCIgI3NlbGVjdGVkTGlzdD5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImMtYnRuXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigkZXZlbnQpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IHNldHRpbmdzLmRpc2FibGVkIH1cIlxuICAgICAgW2F0dHIudGFiaW5kZXhdPVwiMFwiXG4gICAgPlxuICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZEl0ZW1zPy5sZW5ndGggPT0gMFwiPnt7IHNldHRpbmdzLnRleHQgfX08L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cInNldHRpbmdzLnNpbmdsZVNlbGVjdGlvbiAmJiAhYmFkZ2VUZW1wbFwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgbGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGbi5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgbGV0IGsgPSBpbmRleFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBpdGVtW3NldHRpbmdzLmxhYmVsS2V5XSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImMtbGlzdFwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID4gMCAmJiBzZXR0aW5ncy5zaW5nbGVTZWxlY3Rpb24gJiYgYmFkZ2VUZW1wbFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjLXRva2VuXCJcbiAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgIGxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXM7XG4gICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5Rm4uYmluZCh0aGlzKTtcbiAgICAgICAgICAgIGxldCBrID0gaW5kZXhcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhYmFkZ2VUZW1wbFwiIGNsYXNzPVwiYy1sYWJlbFwiPnt7XG4gICAgICAgICAgICBpdGVtW3NldHRpbmdzLmxhYmVsS2V5XVxuICAgICAgICAgIH19PC9zcGFuPlxuXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJiYWRnZVRlbXBsXCIgY2xhc3M9XCJjLWxhYmVsXCI+XG4gICAgICAgICAgICA8Yy10ZW1wbGF0ZVJlbmRlcmVyXG4gICAgICAgICAgICAgIFtkYXRhXT1cImJhZGdlVGVtcGxcIlxuICAgICAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgICAgICAgID48L2MtdGVtcGxhdGVSZW5kZXJlcj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiYy1yZW1vdmVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0sIGssICRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGMtaWNvbiBuYW1lPVwicmVtb3ZlXCIgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImMtbGlzdFwiXG4gICAgICAgICpuZ0lmPVwic2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID4gMCAmJiAhc2V0dGluZ3Muc2luZ2xlU2VsZWN0aW9uXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYy10b2tlblwiXG4gICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICBsZXQgaXRlbSBvZiBzZWxlY3RlZEl0ZW1zO1xuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZuLmJpbmQodGhpcyk7XG4gICAgICAgICAgICBsZXQgayA9IGluZGV4XG4gICAgICAgICAgXCJcbiAgICAgICAgICBbaGlkZGVuXT1cImsgPiBzZXR0aW5ncy5iYWRnZVNob3dMaW1pdCAtIDFcIlxuICAgICAgICA+XG4gICAgICAgICAgQGlmIChiYWRnZVRlbXBsKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImMtbGFiZWxcIlxuICAgICAgICAgICAgICA+PGMtdGVtcGxhdGVSZW5kZXJlclxuICAgICAgICAgICAgICAgIFtkYXRhXT1cImJhZGdlVGVtcGxcIlxuICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgICA+PC9jLXRlbXBsYXRlUmVuZGVyZXJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImMtbGFiZWxcIj57eyBpdGVtW3NldHRpbmdzLmxhYmVsS2V5XSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJjLXJlbW92ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSwgaywgJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Yy1pY29uIFtuYW1lXT1cIidyZW1vdmUnXCI+PC9jLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJjb3VudHBsYWNlaG9sZGVyXCJcbiAgICAgICAgKm5nSWY9XCJzZWxlY3RlZEl0ZW1zPy5sZW5ndGggPiBzZXR0aW5ncy5iYWRnZVNob3dMaW1pdFwiXG4gICAgICAgID4re3sgc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoIC0gc2V0dGluZ3MuYmFkZ2VTaG93TGltaXQgfX08L3NwYW5cbiAgICAgID5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiYy1yZW1vdmUgY2xlYXItYWxsXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBzZXR0aW5ncy5jbGVhckFsbCAmJiBzZWxlY3RlZEl0ZW1zPy5sZW5ndGggPiAwICYmICFzZXR0aW5ncy5kaXNhYmxlZFxuICAgICAgICBcIlxuICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWxlY3Rpb24oJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgID5cbiAgICAgICAgPGMtaWNvbiBbbmFtZV09XCIncmVtb3ZlJ1wiPjwvYy1pY29uPlxuICAgICAgPC9zcGFuPlxuICAgICAgQGlmIChpc0FjdGl2ZSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImMtYW5nbGUtdXBcIj48Yy1pY29uIFtuYW1lXT1cIidhbmdsZS11cCdcIj48L2MtaWNvbj48L3NwYW4+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjLWFuZ2xlLWRvd25cIlxuICAgICAgICAgID48Yy1pY29uIFtuYW1lXT1cIidhbmdsZS1kb3duJ1wiPjwvYy1pY29uXG4gICAgICAgID48L3NwYW4+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgI2Ryb3Bkb3duTGlzdFxuICAgIGNsYXNzPVwiZHJvcGRvd24tbGlzdCBhbmltYXRlZCBmYWRlSW5cIlxuICAgIFtuZ0NsYXNzXT1cInsgdGFnVG9Cb2R5OiBzZXR0aW5ncy50YWdUb0JvZHkgfVwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImRyb3BEb3duV2lkdGhcIlxuICAgIFtzdHlsZS50b3BdPVwiZHJvcERvd25Ub3BcIlxuICAgIFtzdHlsZS5ib3R0b21dPVwiZHJvcERvd25Cb3R0b21cIlxuICAgIFtzdHlsZS5sZWZ0LnB4XT1cImRyb3BEb3duTGVmdFwiXG4gICAgW2hpZGRlbl09XCIhaXNBY3RpdmVcIlxuICA+XG4gICAgPGRpdlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnYXJyb3ctdXAnOiBzZXR0aW5ncy5wb3NpdGlvbiA9PSAnYm90dG9tJyxcbiAgICAgICAgJ2Fycm93LWRvd24nOiBzZXR0aW5ncy5wb3NpdGlvbiA9PSAndG9wJyxcbiAgICAgIH1cIlxuICAgICAgY2xhc3M9XCJhcnJvdy0yXCJcbiAgICA+PC9kaXY+XG4gICAgPGRpdlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnYXJyb3ctdXAnOiBzZXR0aW5ncy5wb3NpdGlvbiA9PSAnYm90dG9tJyxcbiAgICAgICAgJ2Fycm93LWRvd24nOiBzZXR0aW5ncy5wb3NpdGlvbiA9PSAndG9wJyxcbiAgICAgIH1cIlxuICAgID48L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImxpc3QtYXJlYVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdzaW5nbGUtc2VsZWN0LW1vZGUnOiBzZXR0aW5ncy5zaW5nbGVTZWxlY3Rpb24gfVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInB1cmUtY2hlY2tib3ggc2VsZWN0LWFsbFwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgc2V0dGluZ3MuZW5hYmxlQ2hlY2tBbGwgJiZcbiAgICAgICAgICAhc2V0dGluZ3Muc2luZ2xlU2VsZWN0aW9uICYmXG4gICAgICAgICAgIXNldHRpbmdzLmxpbWl0U2VsZWN0aW9uICYmXG4gICAgICAgICAgZGF0YT8ubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICFpc0Rpc2FibGVkSXRlbVByZXNlbnRcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgKm5nSWY9XCJzZXR0aW5ncy5zaG93Q2hlY2tib3hcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RBbGxcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzZXR0aW5ncy5saW1pdFNlbGVjdGlvbiA9PSBzZWxlY3RlZEl0ZW1zPy5sZW5ndGhcIlxuICAgICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGwoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImlkXCI+XG4gICAgICAgICAgPHNwYW4gW2hpZGRlbl09XCJpc1NlbGVjdEFsbFwiPnt7IHNldHRpbmdzLnNlbGVjdEFsbFRleHQgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gW2hpZGRlbl09XCIhaXNTZWxlY3RBbGxcIj57eyBzZXR0aW5ncy51blNlbGVjdEFsbFRleHQgfX08L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpbWcgY2xhc3M9XCJsb2FkaW5nLWljb25cIiAqbmdJZj1cImxvYWRpbmdcIiBzcmM9XCJhc3NldHMvaW1nL2xvYWRpbmcuZ2lmXCIgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWZpbHRlclwiICpuZ0lmPVwic2V0dGluZ3MuZW5hYmxlU2VhcmNoRmlsdGVyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYy1zZWFyY2hcIiBpZD1cInNlYXJjaEljb25cIj5cbiAgICAgICAgICA8Yy1pY29uIFtuYW1lXT1cIidzZWFyY2gnXCI+PC9jLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgQGlmIChzZXR0aW5ncy5sYXp5TG9hZGluZykge1xuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaGlkZGVuXT1cImZpbHRlciA9PSB1bmRlZmluZWQgfHwgZmlsdGVyPy5sZW5ndGggPT0gMFwiXG4gICAgICAgICAgICBjbGFzcz1cImMtY2xlYXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlc2V0SW5maW5pdGVTZWFyY2goKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGMtaWNvbiBbbmFtZV09XCInY2xlYXInXCI+PC9jLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2hpZGRlbl09XCJmaWx0ZXIgPT0gdW5kZWZpbmVkIHx8IGZpbHRlcj8ubGVuZ3RoID09IDBcIlxuICAgICAgICAgICAgY2xhc3M9XCJjLWNsZWFyXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Yy1pY29uIFtuYW1lXT1cIidjbGVhcidcIj48L2MtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHNlYXJjaFRlbXBsKSB7XG4gICAgICAgICAgPGMtdGVtcGxhdGVSZW5kZXJlciBbZGF0YV09XCJzZWFyY2hUZW1wbFwiIFtpdGVtXT1cIml0ZW1cIiAvPlxuICAgICAgICB9IEBlbHNlIGlmIChzZXR0aW5ncy5ncm91cEJ5ICYmICFzZXR0aW5ncy5sYXp5TG9hZGluZykge1xuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJjLWlucHV0XCJcbiAgICAgICAgICAgICNzZWFyY2hJbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNldHRpbmdzLnNlYXJjaFBsYWNlaG9sZGVyVGV4dFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpbHRlclwiXG4gICAgICAgICAgICAoa2V5dXApPVwiZmlsdGVyR3JvdXBlZExpc3QoKVwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJzZWFyY2hJY29uXCJcbiAgICAgICAgICAvPlxuICAgICAgICB9IEBlbHNlIGlmICghc2V0dGluZ3MuZ3JvdXBCeSAmJiAhc2V0dGluZ3MubGF6eUxvYWRpbmcpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwiYy1pbnB1dFwiXG4gICAgICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZXR0aW5ncy5zZWFyY2hQbGFjZWhvbGRlclRleHRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXJcIlxuICAgICAgICAgICAgKGtleXVwKT1cImZpbHRlcml0ZW1zKCRldmVudClcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwic2VhcmNoSWNvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoc2V0dGluZ3MubGF6eUxvYWRpbmcpIHtcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzPVwiYy1pbnB1dFwiXG4gICAgICAgICAgICAjc2VhcmNoSW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZXR0aW5ncy5zZWFyY2hQbGFjZWhvbGRlclRleHRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWx0ZXJcIlxuICAgICAgICAgICAgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJzZWFyY2hJY29uXCJcbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmaWx0ZXItc2VsZWN0LWFsbFwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgIXNldHRpbmdzLmxhenlMb2FkaW5nICYmXG4gICAgICAgICAgc2V0dGluZ3MuZW5hYmxlRmlsdGVyU2VsZWN0QWxsICYmXG4gICAgICAgICAgIWlzRGlzYWJsZWRJdGVtUHJlc2VudFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJwdXJlLWNoZWNrYm94IHNlbGVjdC1hbGxcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAhc2V0dGluZ3MuZ3JvdXBCeSAmJlxuICAgICAgICAgICAgZmlsdGVyPy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICBmaWx0ZXJMZW5ndGggPiAwICYmXG4gICAgICAgICAgICAhc2V0dGluZ3Muc2luZ2xlU2VsZWN0aW9uXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRmlsdGVyU2VsZWN0QWxsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNGaWx0ZXJTZWxlY3RBbGxcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNldHRpbmdzLmxpbWl0U2VsZWN0aW9uID09IHNlbGVjdGVkSXRlbXM/Lmxlbmd0aFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJvcHRpb25OYW1lXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJvcHRpb25cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgPHNwYW4gW2hpZGRlbl09XCJpc0ZpbHRlclNlbGVjdEFsbFwiPnt7XG4gICAgICAgICAgICAgIHNldHRpbmdzLmZpbHRlclNlbGVjdEFsbFRleHRcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gW2hpZGRlbl09XCIhaXNGaWx0ZXJTZWxlY3RBbGxcIj57e1xuICAgICAgICAgICAgICBzZXR0aW5ncy5maWx0ZXJVblNlbGVjdEFsbFRleHRcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJwdXJlLWNoZWNrYm94IHNlbGVjdC1hbGxcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBzZXR0aW5ncy5ncm91cEJ5ICYmXG4gICAgICAgICAgICBmaWx0ZXI/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIGdyb3VwZWREYXRhPy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAhc2V0dGluZ3Muc2luZ2xlU2VsZWN0aW9uXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRmlsdGVyU2VsZWN0QWxsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNGaWx0ZXJTZWxlY3RBbGwgJiYgZmlsdGVyPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZXR0aW5ncy5saW1pdFNlbGVjdGlvbiA9PSBzZWxlY3RlZEl0ZW1zPy5sZW5ndGhcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwib3B0aW9uXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwiaXNGaWx0ZXJTZWxlY3RBbGxcIj57e1xuICAgICAgICAgICAgICBzZXR0aW5ncy5maWx0ZXJTZWxlY3RBbGxUZXh0XG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwiIWlzRmlsdGVyU2VsZWN0QWxsXCI+e3tcbiAgICAgICAgICAgICAgc2V0dGluZ3MuZmlsdGVyVW5TZWxlY3RBbGxUZXh0XG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZpbHRlci1zZWxlY3QtYWxsXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBzZXR0aW5ncy5sYXp5TG9hZGluZyAmJlxuICAgICAgICAgIHNldHRpbmdzLmVuYWJsZUZpbHRlclNlbGVjdEFsbCAmJlxuICAgICAgICAgICFpc0Rpc2FibGVkSXRlbVByZXNlbnQgJiZcbiAgICAgICAgICAhc2V0dGluZ3Muc2luZ2xlU2VsZWN0aW9uXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInB1cmUtY2hlY2tib3ggc2VsZWN0LWFsbFwiXG4gICAgICAgICAgKm5nSWY9XCJmaWx0ZXI/Lmxlbmd0aCA+IDAgJiYgaW5maW5pdGVGaWx0ZXJMZW5ndGggPiAwXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlSW5maW5pdGVGaWx0ZXJTZWxlY3RBbGwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJpc0luZmluaXRlRmlsdGVyU2VsZWN0QWxsXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZXR0aW5ncy5saW1pdFNlbGVjdGlvbiA9PSBzZWxlY3RlZEl0ZW1zPy5sZW5ndGhcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwib3B0aW9uXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwiaXNJbmZpbml0ZUZpbHRlclNlbGVjdEFsbFwiPnt7XG4gICAgICAgICAgICAgIHNldHRpbmdzLmZpbHRlclNlbGVjdEFsbFRleHRcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gW2hpZGRlbl09XCIhaXNJbmZpbml0ZUZpbHRlclNlbGVjdEFsbFwiPnt7XG4gICAgICAgICAgICAgIHNldHRpbmdzLmZpbHRlclVuU2VsZWN0QWxsVGV4dFxuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItc2VsZWN0LWFsbFwiICpuZ0lmPVwiZmlsdGVyPy5sZW5ndGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1jb250YWluZXJcIiAqbmdJZj1cInNldHRpbmdzLmFkZE5ld0l0ZW1PbkZpbHRlclwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjLWJ0biBidG4taWNlYmx1ZVwiIChjbGljayk9XCJhZGRGaWx0ZXJOZXdJdGVtKClcIj5cbiAgICAgICAgICAgIHt7IHNldHRpbmdzLmFkZE5ld0J1dHRvblRleHQgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmIChcbiAgICAgICAgIXNldHRpbmdzLmdyb3VwQnkgJiYgIXNldHRpbmdzLmxhenlMb2FkaW5nICYmIGl0ZW1UZW1wbCA9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgW3N0eWxlLm1heEhlaWdodF09XCJzZXR0aW5ncy5tYXhIZWlnaHQgKyAncHgnXCJcbiAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93OiBhdXRvXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImxhenlDb250YWluZXJcIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0sIGksICRldmVudClcIlxuICAgICAgICAgICAgICBjbGFzcz1cInB1cmUtY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1pdGVtJzogaXNTZWxlY3RlZChpdGVtKSA9PSB0cnVlIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNldHRpbmdzLnNob3dDaGVja2JveFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAoc2V0dGluZ3MubGltaXRTZWxlY3Rpb24gPT0gc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgICFpc1NlbGVjdGVkKGl0ZW0pKSB8fFxuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGxhYmVsPnt7IGl0ZW1bc2V0dGluZ3MubGFiZWxLZXldIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIGlmIChcbiAgICAgICAgIXNldHRpbmdzLmdyb3VwQnkgJiYgc2V0dGluZ3MubGF6eUxvYWRpbmcgJiYgaXRlbVRlbXBsID09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIDwhLS0gbGF6eSBsb2FkaW5nIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW3N0eWxlLm1heEhlaWdodF09XCJzZXR0aW5ncy5tYXhIZWlnaHQgKyAncHgnXCJcbiAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93OiBhdXRvXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx1bFxuICAgICAgICAgICAgdmlydHVhbFNjcm9sbGVyXG4gICAgICAgICAgICAjc2Nyb2xsXG4gICAgICAgICAgICBbZW5hYmxlVW5lcXVhbENoaWxkcmVuU2l6ZXNdPVwicmFuZG9tU2l6ZVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwidmlydHVhbGRhdGFcIlxuICAgICAgICAgICAgKHZzU3RhcnQpPVwib25TY3JvbGxFbmQoJGV2ZW50KVwiXG4gICAgICAgICAgICAodnNFbmQpPVwib25TY3JvbGxFbmQoJGV2ZW50KVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGhlaWdodDogc2V0dGluZ3MubWF4SGVpZ2h0ICsgJ3B4JyB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwibGF6eUNvbnRhaW5lclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNjcm9sbC52aWV3UG9ydEl0ZW1zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0sIGksICRldmVudClcIlxuICAgICAgICAgICAgICBjbGFzcz1cInB1cmUtY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZC1pdGVtJzogaXNTZWxlY3RlZChpdGVtKSA9PSB0cnVlIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNldHRpbmdzLnNob3dDaGVja2JveFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAoc2V0dGluZ3MubGltaXRTZWxlY3Rpb24gPT0gc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgICFpc1NlbGVjdGVkKGl0ZW0pKSB8fFxuICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxsYWJlbD57eyBpdGVtW3NldHRpbmdzLmxhYmVsS2V5XSB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSBpZiAoXG4gICAgICAgICFzZXR0aW5ncy5ncm91cEJ5ICYmICFzZXR0aW5ncy5sYXp5TG9hZGluZyAmJiBpdGVtVGVtcGwgIT0gdW5kZWZpbmVkXG4gICAgICApIHtcbiAgICAgICAgPCEtLSBjdXN0b20gdGVtcGxhdGUgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0XT1cInNldHRpbmdzLm1heEhlaWdodCArICdweCdcIlxuICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG9cIlxuICAgICAgICA+XG4gICAgICAgICAgPHVsIGNsYXNzPVwibGF6eUNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGE7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSwgaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicHVyZS1jaGVja2JveFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLWl0ZW0nOiBpc1NlbGVjdGVkKGl0ZW0pID09IHRydWUgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2V0dGluZ3Muc2hvd0NoZWNrYm94XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgIChzZXR0aW5ncy5saW1pdFNlbGVjdGlvbiA9PSBzZWxlY3RlZEl0ZW1zPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgIWlzU2VsZWN0ZWQoaXRlbSkpIHx8XG4gICAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGxhYmVsPjwvbGFiZWw+XG4gICAgICAgICAgICAgIDxjLXRlbXBsYXRlUmVuZGVyZXJcbiAgICAgICAgICAgICAgICBbZGF0YV09XCJpdGVtVGVtcGxcIlxuICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgICA+PC9jLXRlbXBsYXRlUmVuZGVyZXI+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSBpZiAoXG4gICAgICAgICFzZXR0aW5ncy5ncm91cEJ5ICYmIHNldHRpbmdzLmxhenlMb2FkaW5nICYmIGl0ZW1UZW1wbCAhPSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICA8IS0tIGxhenkgbG9hZGluZyBhbmQgY3VzdG9tIHRlbXBsYXRlIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW3N0eWxlLm1heEhlaWdodF09XCJzZXR0aW5ncy5tYXhIZWlnaHQgKyAncHgnXCJcbiAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93OiBhdXRvXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx1bFxuICAgICAgICAgICAgdmlydHVhbFNjcm9sbGVyXG4gICAgICAgICAgICAjc2Nyb2xsMlxuICAgICAgICAgICAgW2VuYWJsZVVuZXF1YWxDaGlsZHJlblNpemVzXT1cInJhbmRvbVNpemVcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cInZpcnR1YWxkYXRhXCJcbiAgICAgICAgICAgICh2c1N0YXJ0KT1cIm9uU2Nyb2xsRW5kKCRldmVudClcIlxuICAgICAgICAgICAgKHZzRW5kKT1cIm9uU2Nyb2xsRW5kKCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJsYXp5Q29udGFpbmVyXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBzZXR0aW5ncy5tYXhIZWlnaHQgKyAncHgnIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzY3JvbGwyLnZpZXdQb3J0SXRlbXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSwgaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicHVyZS1jaGVja2JveFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkLWl0ZW0nOiBpc1NlbGVjdGVkKGl0ZW0pID09IHRydWUgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2V0dGluZ3Muc2hvd0NoZWNrYm94XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgIChzZXR0aW5ncy5saW1pdFNlbGVjdGlvbiA9PSBzZWxlY3RlZEl0ZW1zPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgIWlzU2VsZWN0ZWQoaXRlbSkpIHx8XG4gICAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGxhYmVsPjwvbGFiZWw+XG4gICAgICAgICAgICAgIDxjLXRlbXBsYXRlUmVuZGVyZXJcbiAgICAgICAgICAgICAgICBbZGF0YV09XCJpdGVtVGVtcGxcIlxuICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgICA+PC9jLXRlbXBsYXRlUmVuZGVyZXI+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSBpZiAoXG4gICAgICAgIHNldHRpbmdzLmdyb3VwQnkgJiYgc2V0dGluZ3MubGF6eUxvYWRpbmcgJiYgaXRlbVRlbXBsICE9IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIDwhLS0gbGF6eSBsb2FkaW5nLCBncm91cCBCeSBhbmQgY3VzdG9tIHRlbXBsYXRlIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgW3N0eWxlLm1heEhlaWdodF09XCJzZXR0aW5ncy5tYXhIZWlnaHQgKyAncHgnXCJcbiAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93OiBhdXRvXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx1bFxuICAgICAgICAgICAgdmlydHVhbFNjcm9sbGVyXG4gICAgICAgICAgICAjc2Nyb2xsM1xuICAgICAgICAgICAgW2VuYWJsZVVuZXF1YWxDaGlsZHJlblNpemVzXT1cInJhbmRvbVNpemVcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cInZpcnR1YWxkYXRhXCJcbiAgICAgICAgICAgICh2c1N0YXJ0KT1cIm9uU2Nyb2xsRW5kKCRldmVudClcIlxuICAgICAgICAgICAgKHZzRW5kKT1cIm9uU2Nyb2xsRW5kKCRldmVudClcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyBoZWlnaHQ6IHNldHRpbmdzLm1heEhlaWdodCArICdweCcgfVwiXG4gICAgICAgICAgICBjbGFzcz1cImxhenlDb250YWluZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNjcm9sbDMudmlld1BvcnRJdGVtczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSwgaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXRlbS5ncnBUaXRsZVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgJ2dycC10aXRsZSc6IGl0ZW0uZ3JwVGl0bGUsXG4gICAgICAgICAgICAgICAgICAnZ3JwLWl0ZW0nOiAhaXRlbS5ncnBUaXRsZSAmJiAhc2V0dGluZ3Muc2luZ2xlU2VsZWN0aW9uLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHVyZS1jaGVja2JveFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2V0dGluZ3Muc2hvd0NoZWNrYm94ICYmICFzZXR0aW5ncy5zaW5nbGVTZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAoc2V0dGluZ3MubGltaXRTZWxlY3Rpb24gPT0gc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWlzU2VsZWN0ZWQoaXRlbSkpIHx8XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8bGFiZWw+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8Yy10ZW1wbGF0ZVJlbmRlcmVyXG4gICAgICAgICAgICAgICAgICBbZGF0YV09XCJpdGVtVGVtcGxcIlxuICAgICAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgPjwvYy10ZW1wbGF0ZVJlbmRlcmVyPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uZ3JwVGl0bGVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdncnAtdGl0bGUnOiBpdGVtLmdycFRpdGxlLFxuICAgICAgICAgICAgICAgICAgJ2dycC1pdGVtJzogIWl0ZW0uZ3JwVGl0bGUgJiYgIXNldHRpbmdzLnNpbmdsZVNlbGVjdGlvbixcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInB1cmUtY2hlY2tib3hcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInNldHRpbmdzLnNob3dDaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgIChzZXR0aW5ncy5saW1pdFNlbGVjdGlvbiA9PSBzZWxlY3RlZEl0ZW1zPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAhaXNTZWxlY3RlZChpdGVtKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxsYWJlbD48L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxjLXRlbXBsYXRlUmVuZGVyZXJcbiAgICAgICAgICAgICAgICAgIFtkYXRhXT1cIml0ZW1UZW1wbFwiXG4gICAgICAgICAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICA+PC9jLXRlbXBsYXRlUmVuZGVyZXI+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIGlmIChcbiAgICAgICAgc2V0dGluZ3MuZ3JvdXBCeSAmJiAhc2V0dGluZ3MubGF6eUxvYWRpbmcgJiYgaXRlbVRlbXBsICE9IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIDwhLS0gZ3JvdXAgQnkgYW5kIGN1c3RvbSB0ZW1wbGF0ZSAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtzdHlsZS5tYXhIZWlnaHRdPVwic2V0dGluZ3MubWF4SGVpZ2h0ICsgJ3B4J1wiXG4gICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdzogYXV0b1wiXG4gICAgICAgID5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJsYXp5Q29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBncm91cGVkRGF0YTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0R3JvdXAoaXRlbSlcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICdncnAtdGl0bGUnOiBpdGVtLmdycFRpdGxlLFxuICAgICAgICAgICAgICAgICAgJ2dycC1pdGVtJzogIWl0ZW0uZ3JwVGl0bGUgJiYgIXNldHRpbmdzLnNpbmdsZVNlbGVjdGlvbixcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInB1cmUtY2hlY2tib3hcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInNldHRpbmdzLnNob3dDaGVja2JveCAmJiAhc2V0dGluZ3Muc2luZ2xlU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpdGVtLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgKHNldHRpbmdzLmxpbWl0U2VsZWN0aW9uID09IHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICFpc1NlbGVjdGVkKGl0ZW0pKSB8fFxuICAgICAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPGxhYmVsPnt7IGl0ZW1bc2V0dGluZ3MubGFiZWxLZXldIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsYXp5Q29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgdmFsIG9mIGl0ZW0ubGlzdDsgbGV0IGogPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkl0ZW1DbGljayh2YWwsIGosICRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2dycC10aXRsZSc6IHZhbC5ncnBUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdncnAtaXRlbSc6ICF2YWwuZ3JwVGl0bGUgJiYgIXNldHRpbmdzLnNpbmdsZVNlbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInB1cmUtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNldHRpbmdzLnNob3dDaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZCh2YWwpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHRpbmdzLmxpbWl0U2VsZWN0aW9uID09IHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpc1NlbGVjdGVkKHZhbCkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxjLXRlbXBsYXRlUmVuZGVyZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cIml0ZW1UZW1wbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXRlbV09XCJ2YWxcIlxuICAgICAgICAgICAgICAgICAgICAgID48L2MtdGVtcGxhdGVSZW5kZXJlcj5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSBpZiAoXG4gICAgICAgIHNldHRpbmdzLmdyb3VwQnkgJiYgc2V0dGluZ3MubGF6eUxvYWRpbmcgJiYgaXRlbVRlbXBsID09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIDwhLS0gbGF6eSBsb2FkaW5nLCBncm91cCBCeSAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtzdHlsZS5tYXhIZWlnaHRdPVwic2V0dGluZ3MubWF4SGVpZ2h0ICsgJ3B4J1wiXG4gICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdzogYXV0b1wiXG4gICAgICAgID5cbiAgICAgICAgICA8dmlydHVhbC1zY3JvbGxlclxuICAgICAgICAgICAgW2l0ZW1zXT1cImdyb3VwZWREYXRhXCJcbiAgICAgICAgICAgICh2c1VwZGF0ZSk9XCJ2aWV3UG9ydEl0ZW1zID0gJGV2ZW50XCJcbiAgICAgICAgICAgICh2c0VuZCk9XCJvblNjcm9sbEVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBzZXR0aW5ncy5tYXhIZWlnaHQgKyAncHgnIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICB2aXJ0dWFsU2Nyb2xsZXJcbiAgICAgICAgICAgICAgI3Njcm9sbDRcbiAgICAgICAgICAgICAgW2VuYWJsZVVuZXF1YWxDaGlsZHJlblNpemVzXT1cInJhbmRvbVNpemVcIlxuICAgICAgICAgICAgICBbaXRlbXNdPVwidmlydHVhbGRhdGFcIlxuICAgICAgICAgICAgICAodnNTdGFydCk9XCJvblNjcm9sbEVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKHZzRW5kKT1cIm9uU2Nyb2xsRW5kKCRldmVudClcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGhlaWdodDogc2V0dGluZ3MubWF4SGVpZ2h0ICsgJ3B4JyB9XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJsYXp5Q29udGFpbmVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2Nyb2xsNC52aWV3UG9ydEl0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uZ3JwVGl0bGVcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAnZ3JwLXRpdGxlJzogaXRlbS5ncnBUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2dycC1pdGVtJzogIWl0ZW0uZ3JwVGl0bGUgJiYgIXNldHRpbmdzLnNpbmdsZVNlbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgJ3NlbGVjdGVkLWl0ZW0nOiBpc1NlbGVjdGVkKGl0ZW0pID09IHRydWUsXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHVyZS1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3Muc2hvd0NoZWNrYm94ICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWl0ZW0uZ3JwVGl0bGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhc2V0dGluZ3Muc2luZ2xlU2VsZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgKHNldHRpbmdzLmxpbWl0U2VsZWN0aW9uID09IHNlbGVjdGVkSXRlbXM/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIWlzU2VsZWN0ZWQoaXRlbSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBpdGVtW3NldHRpbmdzLmxhYmVsS2V5XSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1DbGljayhpdGVtLCBpLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWl0ZW0uZ3JwVGl0bGVcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAnZ3JwLXRpdGxlJzogaXRlbS5ncnBUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgJ2dycC1pdGVtJzogIWl0ZW0uZ3JwVGl0bGUgJiYgIXNldHRpbmdzLnNpbmdsZVNlbGVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgJ3NlbGVjdGVkLWl0ZW0nOiBpc1NlbGVjdGVkKGl0ZW0pID09IHRydWUsXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHVyZS1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2V0dGluZ3Muc2hvd0NoZWNrYm94ICYmICFpdGVtLmdycFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNTZWxlY3RlZChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAoc2V0dGluZ3MubGltaXRTZWxlY3Rpb24gPT0gc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhaXNTZWxlY3RlZChpdGVtKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7IGl0ZW1bc2V0dGluZ3MubGFiZWxLZXldIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvdmlydHVhbC1zY3JvbGxlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIGlmIChcbiAgICAgICAgc2V0dGluZ3MuZ3JvdXBCeSAmJiAhc2V0dGluZ3MubGF6eUxvYWRpbmcgJiYgaXRlbVRlbXBsID09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIDwhLS0gZ3JvdXAgQnkgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0XT1cInNldHRpbmdzLm1heEhlaWdodCArICdweCdcIlxuICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG9cIlxuICAgICAgICA+XG4gICAgICAgICAgPHVsIGNsYXNzPVwibGF6eUNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXBlZERhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEdyb3VwKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAnZ3JwLXRpdGxlJzogaXRlbS5ncnBUaXRsZSxcbiAgICAgICAgICAgICAgICAgICdncnAtaXRlbSc6ICFpdGVtLmdycFRpdGxlICYmICFzZXR0aW5ncy5zaW5nbGVTZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwdXJlLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZXR0aW5ncy5zaG93Q2hlY2tib3ggJiYgIXNldHRpbmdzLnNpbmdsZVNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgIChzZXR0aW5ncy5saW1pdFNlbGVjdGlvbiA9PSBzZWxlY3RlZEl0ZW1zPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAhaXNTZWxlY3RlZChpdGVtKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxsYWJlbD57eyBpdGVtW3NldHRpbmdzLmxhYmVsS2V5XSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGF6eUNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHZhbCBvZiBpdGVtLmxpc3Q7IGxldCBqID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25JdGVtQ2xpY2sodmFsLCBqLCAkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RlZC1pdGVtJzogaXNTZWxlY3RlZCh2YWwpID09IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JwLXRpdGxlJzogdmFsLmdycFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dycC1pdGVtJzogIXZhbC5ncnBUaXRsZSAmJiAhc2V0dGluZ3Muc2luZ2xlU2VsZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHVyZS1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2V0dGluZ3Muc2hvd0NoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc1NlbGVjdGVkKHZhbClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0dGluZ3MubGltaXRTZWxlY3Rpb24gPT0gc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIWlzU2VsZWN0ZWQodmFsKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7IHZhbFtzZXR0aW5ncy5sYWJlbEtleV0gfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIEBpZiAoZGF0YT8ubGVuZ3RoID09IDApIHtcbiAgICAgICAgPGg1IGNsYXNzPVwibGlzdC1tZXNzYWdlXCI+XG4gICAgICAgICAge3sgc2V0dGluZ3Mubm9EYXRhTGFiZWwgfX1cbiAgICAgICAgPC9oNT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|