tango-app-ui-store-builder 1.2.12 → 1.2.13

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.
@@ -505,6 +505,9 @@ export class StoreBuilderService {
505
505
  runAlocation(data) {
506
506
  return this.http.post(`${this.storeBuilderApiUrl}/onboardPlano/runAlocation`, data);
507
507
  }
508
+ runLooksAllocation(data) {
509
+ return this.http.post(`${this.storeBuilderApiUrl}/onboardPlano/runLooksAllocation`, data);
510
+ }
508
511
  getIvmConversionAlias() {
509
512
  return this.http.get(`${this.storeBuilderApiUrl}/onboardPlano/ivmConversionAlias`);
510
513
  }
@@ -672,4 +675,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
672
675
  providedIn: "root",
673
676
  }]
674
677
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.GlobalStateService }] });
675
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL3NlcnZpY2VzL3N0b3JlLWJ1aWxkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQzs7OztBQUU3QixNQUFNLFVBQVUsR0FDZCxpRkFBaUYsQ0FBQztBQUNwRixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUM7QUFLaEMsTUFBTSxPQUFPLG1CQUFtQjtJQVdwQjtJQUNBO0lBWFYsV0FBVyxDQUFTO0lBQ3BCLGtCQUFrQixDQUFTO0lBQzNCLGFBQWEsQ0FBUztJQUN0QixhQUFhLENBQVM7SUFFdEIsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTNCLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTFDLFlBQ1UsSUFBZ0IsRUFDaEIsRUFBc0I7UUFEdEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUU5QixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ25FLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFH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bkIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gXCJmaWxlLXNhdmVyXCI7XHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSBcInhsc3hcIjtcclxuXHJcbmNvbnN0IEVYQ0VMX1RZUEUgPVxyXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7Y2hhcnNldD1VVEYtOFwiO1xyXG5jb25zdCBFWENFTF9FWFRFTlNJT04gPSBcIi54bHN4XCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdG9yZUJ1aWxkZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBzdG9yZUFwaVVybDogc3RyaW5nO1xyXG4gIHN0b3JlQnVpbGRlckFwaVVybDogc3RyaW5nO1xyXG4gIHRyYWZmaWNBcGlVcmw6IHN0cmluZztcclxuICB0aWNrZXRzQXBpVXJsOiBzdHJpbmc7XHJcblxyXG4gIGRyb3BEb3duVHJpZ2dlciA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICApIHtcclxuICAgIHRoaXMuZ3MuZW52aXJvbm1lbnQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZW52KSA9PiB7XHJcbiAgICAgIGlmIChlbnYpIHtcclxuICAgICAgICB0aGlzLnN0b3JlQnVpbGRlckFwaVVybCA9IGVudi5zdG9yZUJ1aWxkZXJVcmw7XHJcbiAgICAgICAgdGhpcy5zdG9yZUFwaVVybCA9IGVudi5zdG9yZUFwaVVybDtcclxuICAgICAgICB0aGlzLnRyYWZmaWNBcGlVcmwgPSBlbnYudHJhZmZpY0FwaVVybDtcclxuICAgICAgICB0aGlzLnRpY2tldHNBcGlVcmwgPSBlbnYudGlja2V0c0FwaVVybDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwb3J0QXNFeGNlbEZpbGUoanNvbjogYW55W10sIGV4Y2VsRmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgd29ya3NoZWV0OiBYTFNYLldvcmtTaGVldCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldChqc29uKTtcclxuICAgIGNvbnN0IHdvcmtib29rOiBYTFNYLldvcmtCb29rID0ge1xyXG4gICAgICBTaGVldHM6IHsgZGF0YTogd29ya3NoZWV0IH0sXHJcbiAgICAgIFNoZWV0TmFtZXM6IFtcImRhdGFcIl0sXHJcbiAgICB9O1xyXG4gICAgY29uc3QgZXhjZWxCdWZmZXI6IGFueSA9IFhMU1gud3JpdGUod29ya2Jvb2ssIHtcclxuICAgICAgYm9va1R5cGU6IFwieGxzeFwiLFxyXG4gICAgICB0eXBlOiBcImFycmF5XCIsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2F2ZUFzRXhjZWxGaWxlKGV4Y2VsQnVmZmVyLCBleGNlbEZpbGVOYW1lKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlQXNFeGNlbEZpbGUoYnVmZmVyOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRhdGE6IEJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge1xyXG4gICAgICB0eXBlOiBFWENFTF9UWVBFLFxyXG4gICAgfSk7XHJcbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKGRhdGEsIGZpbGVOYW1lICsgXCJsaXN0XCIgKyBFWENFTF9FWFRFTlNJT04pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVBc1RlbXBsYXRlKGJ1ZmZlcjogYW55LCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHtcclxuICAgICAgdHlwZTogRVhDRUxfVFlQRSxcclxuICAgIH0pO1xyXG4gICAgRmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlTmFtZSArIEVYQ0VMX0VYVEVOU0lPTik7XHJcbiAgfVxyXG5cclxuICBsYXlvdXRMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zdG9yZUxheW91dExpc3RgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQXBpVXJsfS9zdG9yZUluZnJhTGlzdGAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlTGF5b3V0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9jcmVhdGVTdG9yZUxheW91dGAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlQW5kU3VibWl0TGF5b3V0VGFzayhzdG9yZU5hbWU6IHN0cmluZywgY2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zY3JpcHQvY3JlYXRlTGF5b3V0YCwge1xyXG4gICAgICBzdG9yZU5hbWU6IFtzdG9yZU5hbWVdLFxyXG4gICAgICBjbGllbnRJZCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQnVsa1VwbG9hZChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdXBsb2FkQnVsa1N0b3JlYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFubyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc3RvcmVMYXlvdXRgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldFBsYW5vRGV0YWlscyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc3RvcmVGaXh0dXJlc2AsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRmxvb3IoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2RlbGV0ZUZsb29yYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRGbG9vckRlbGV0ZUltcGFjdChkYXRhOiB7IGZsb29ySWQ6IHN0cmluZyB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRGbG9vckRlbGV0ZUltcGFjdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRmxvb3JDYXNjYWRlKGRhdGE6IHsgZmxvb3JJZDogc3RyaW5nOyBjb25maXJtTGFzdEZsb29yPzogYm9vbGVhbiB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9kZWxldGVGbG9vckNhc2NhZGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFkZEZsb29yKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS91cGRhdGVGbG9vcmAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRmxvb3JMYXlvdXQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3VwZGF0ZVN0b3JlTGF5b3V0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZURldGFpbHMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3N0b3JlRGV0YWlsc2AsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkRmlsZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdXBsb2FkRmlsZWAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRmlsZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcmVtb3ZlRmlsZWAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUGxhbm9TdGF0dXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3VwZGF0ZVN0YXR1c2AsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlTGF5b3V0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9kZWxldGVTdG9yZUxheW91dC8ke2RhdGF9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEZXRhaWxlZERpc3RhbmNlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdXBkYXRlRGVhdGFpbGVkRGlzdGFuY2VgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGVydEZpeHR1cmUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Vwc2VydEZpeHR1cmVgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIC8vIEZpeHR1cmUgTGlicmFyeVxyXG4gIGNyZWF0ZUZpeHR1cmVMaWJyYXJ5KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2NyZWF0ZUZpeHR1cmVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpeHR1cmVMaWJyYXJ5RGV0YWlscyhpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9maXh0dXJlRGV0YWlsc2AsXHJcbiAgICAgIHsgcGFyYW1zOiB7IGZpeHR1cmVJZDogaWQgfSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpeHR1cmVTaXplTGlzdChpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9maXh0dXJlU2l6ZUxpc3RgLFxyXG4gICAgICB7IHBhcmFtczogeyBjbGllbnRJZDogaWQgfSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpeHR1cmVMaWJyYXJ5TGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9maXh0dXJlTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZUxpYnJhcnlMaXN0VG9FeHBvcnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZml4dHVyZUxpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICB7IHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRml4dHVyZUxpYnJhcnkoZGF0YTogYW55LCBpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvdXBkYXRlRml4dHVyZS8ke2lkfWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZHVwbGljYXRlRml4dHVyZUxpYnJhcnkoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZHVwbGljYXRlRml4dHVyZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRml4dHVyZUxpYnJhcnkoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZGVsZXRlRml4dHVyZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYnVsa0FjdGlvbkZpeHR1cmVMaWJyYXJ5KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2ZpeHR1cmVCdWxrVXBsb2FkYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlTmFtZUxpc3QoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZml4dHVyZU5hbWVMaXN0YCxcclxuICAgICAgeyBwYXJhbXM6IHsgY2xpZW50SWQ6IGlkIH0gfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlTGliTmFtZUxpc3QoaWQ6IHN0cmluZywgc3RhdHVzPzogc3RyaW5nLCBjb3VudHJ5Pzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9maXh0dXJlTGliTmFtZUxpc3RgLFxyXG4gICAgICB7XHJcbiAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICBjbGllbnRJZDogaWQsXHJcbiAgICAgICAgICAuLi4oc3RhdHVzID8geyBzdGF0dXMgfSA6IHt9KSxcclxuICAgICAgICAgIC4uLihjb3VudHJ5ID8geyBjb3VudHJ5IH0gOiB7fSksXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBWTSBMaWJyYXJ5XHJcbiAgZ2V0Vm1MaWJyYXJ5RGV0YWlscyhpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9nZXRWbURldGFpbHNgLFxyXG4gICAgICB7XHJcbiAgICAgICAgcGFyYW1zOiB7IHZtSWQ6IGlkIH0sXHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Vm1MaWJyYXJ5TGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9nZXRWbUxpYkxpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFZtTGlicmFyeUxpc3RUb0V4cG9ydChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9nZXRWbUxpYkxpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICB7IHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYWRkVXBkYXRlVm1MaWJyYXJ5KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2FkZFVwZGF0ZVZtYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVWbUxpYnJhcnkoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZHVwbGljYXRlVm1MaWJgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVZtTGlicmFyeShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9kZWxldGVWbUxpYmAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYnVsa0FjdGlvblZtTGlicmFyeShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS92bUJ1bGtVcGxvYWRgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFZNTmFtZUxpc3QoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS92bU5hbWVMaXN0YCwge1xyXG4gICAgICBwYXJhbXM6IHsgY2xpZW50SWQ6IGlkIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vICBWbVR5cGVzXHJcbiAgZ2V0Vm1UeXBlc0xpc3QoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZ2V0Vm1UeXBlTGlzdGAsXHJcbiAgICAgIHtcclxuICAgICAgICBwYXJhbXM6IHsgY2xpZW50SWQ6IGlkIH0sXHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbWFuYWdlVm1UeXBlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2FkZFZtVHlwZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkVm1UeXBlSW1hZ2UoZm9ybURhdGE6IGFueSwgaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L3VwbG9hZFZtdHlwZUltYWdlLyR7aWR9YCxcclxuICAgICAgZm9ybURhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gQnJhbmQgbGlzdFxyXG4gIGdldEJyYW5kTGlzdChpZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZ2V0QnJhbmRMaXN0YCxcclxuICAgICAge1xyXG4gICAgICAgIGNsaWVudElkOiBpZCxcclxuICAgICAgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBicmFuZEV4cG9ydChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9nZXRCcmFuZExpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICB7IHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVGaXh0dXJlcyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc3RvcmVGaXh0dXJlc1YyYCwge1xyXG4gICAgICAuLi5kYXRhLFxyXG4gICAgICAvLyBzdGF0dXM6IFtcImNvbXBsZXRlZFwiXSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gZ2V0T25ib2FyZFN0b3JlRml4dHVyZXMoZGF0YTogYW55KSB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3N0b3JlRml4dHVyZXNWMmAsIHtcclxuICAvLyAgICAgLi4uZGF0YSxcclxuICAvLyAgICAgc3RhdHVzOiBbXCJkcmFmdFwiLCBcImFsbG9jYXRpb25QZW5kaW5nXCJdLFxyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBGaXh0dXJlIFRlbXBsYXRlc1xyXG4gIGdldEZpeHR1cmVUZW1wbGF0ZUxpc3RPbGQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvZ2V0VGVtcGxhdGVMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlVGVtcGxhdGVMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL21hc3RlclRlbXBsYXRlTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVtcGxhdGVDaGlsZExpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvdGVtcGxhdGVDaGlsZExpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpeHR1cmVUZW1wbGF0ZUxpc3RUb0V4cG9ydChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS9nZXRUZW1wbGF0ZUxpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICB7IHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZVRlbXBsYXRlRGV0YWlscyhpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS9nZXRUZW1wbGF0ZURldGFpbHNgLFxyXG4gICAgICB7IHBhcmFtczogeyB0ZW1wbGF0ZUlkOiBpZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlRml4dHVyZVRlbXBsYXRlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL2NyZWF0ZVRlbXBsYXRlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG4gIHJlcGxhY2VGaXh0dXJlRGV0YWlscyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS9yZXBsYWNlRml4dHVyZURldGFpbHNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUZpeHR1cmVUZW1wbGF0ZShkYXRhOiBhbnksIGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS91cGRhdGVUZW1wbGF0ZS8ke2lkfWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZHVwbGljYXRlRml4dHVyZVRlbXBsYXRlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL2R1cGxpY2F0ZVRlbXBsYXRlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVGaXh0dXJlVGVtcGxhdGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvZGVsZXRlVGVtcGxhdGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUZpeHR1cmVTdGF0dXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby91cGRhdGVGaXh0dXJlU3RhdHVzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVBcHByb3ZhbFN0YXR1cyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL3VwZGF0ZUFwcHJvdmFsU3RhdHVzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZUZpeHR1cmVzZmVlZGJhY2soZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby9nZXRTdG9yZUZpeHR1cmVzZmVlZGJhY2tgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVN0b3JlUGxhbm8oZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby91cGRhdGVTdG9yZVBsYW5vYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZUZlZWRiYWNrKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vZ2V0cGxhbm9GZWVkYmFja2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Um9sbG91dEZlZWRiYWNrKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vZ2V0Um9sbG91dEZlZWRiYWNrdjJgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFpvbmVWZXJpZmljYXRpb25GZWVkYmFjayhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL2dldFpvbmVWZXJpZmljYXRpb25GZWVkYmFja2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlWm9uZVZlcmlmaWNhdGlvblN0YXR1cyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL3VwZGF0ZVpvbmVWZXJpZmljYXRpb25TdGF0dXNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEhlYWRlcnNMaXN0KHN0b3JlSWQ/OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL2dldEhlYWRlckxpc3RgLCBcclxuICAgICAgLy8geyAgICAgIHBhcmFtczogeyBzdG9yZUlkOiBzdG9yZUlkID8/IFwiXCIgfSAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0UElETGlzdChoZWFkZXI6IHN0cmluZyA9IFwib3RoZXJzXCIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL2dldFBJRExpc3RgLCB7XHJcbiAgICAgIHBhcmFtczogeyBoZWFkZXIgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVtcGxhdGVHcm91cExpc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2svZ2V0VGVtcGxhdGVHcm91cExpc3RgLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUZpeHR1cmVDb21wbGlhbmNlU3RhdHVzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vdXBkYXRlRml4dHVyZVN0YXR1c2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYWRkVXBkYXRlQnJhbmQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvYWRkVXBkYXRlQnJhbmRgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwbG9hZEJyYW5kKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L3VwbG9hZEJyYW5kTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0QnJhbmRNZXRhRGF0YShjbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZ2V0QnJhbmRNZXRhRGF0YWAsXHJcbiAgICAgIHsgY2xpZW50SWQgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVCcmFuZE1ldGFEYXRhKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L3VwZGF0ZUJyYW5kTWV0YURhdGFgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVRhc2soZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvdXBkYXRlVGFza2NvbmZpZ2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGFza0NvbmZpZyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2dldFRhc2tDb25maWc/Y2xpZW50SWQ9JHtkYXRhfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlU3RvcmVGaXh0dXJlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vdXBkYXRlU3RvcmVGaXh0dXJlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBTdG9yZVxyXG4gIGdldFBsYW5vTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaXN0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRPbmJvYXJkUGxhbm9MaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vb25ib2FyZFBsYW5vL29uYm9hcmRQbGFub0xpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFBsYW5vTGlzdEV4cG9ydChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaXN0YCwgZGF0YSwge1xyXG4gICAgICByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0T25ib2FyZFBsYW5vTGlzdEV4cG9ydChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L29uYm9hcmRQbGFuby9vbmJvYXJkUGxhbm9MaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICAge1xyXG4gICAgICAgIHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiLFxyXG4gICAgICB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFBsYW5vQ2FyZHMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQ2FyZHNgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldFBsYW5vUm9sbG91dExpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vUm9sbG91dExpc3RgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldFJvbGxvdXRMaXN0RXhwb3J0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub1JvbGxvdXRMaXN0YCwgZGF0YSwge1xyXG4gICAgICByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGxhbm9ncmFtTGlzdEV4cG9ydChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0UGxhbm9ncmFtTGlzdGAsIGRhdGEsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVRhc2soZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2svY3JlYXRlVGFza2AsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlR2xvYmFsQ29tbWVudChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL3VwZGF0ZUdsb2JhbENvbW1lbnRgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEFsbFRlbXBsYXRlcyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS9nZXRBbGxUZW1wbGF0ZXNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcbiAgYXNzaWdlZFRlbXBsYXRlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL2Fzc2lnZWRUZW1wbGF0ZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuICBUZW1wbGF0ZVN0b3Jlc0xpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvVGVtcGxhdGVTdG9yZXNMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRUYXNrSW5mbyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFza0RldGFpbHM/cGxhbm9JZD0ke2RhdGEucGxhbm9JZH0mZmxvb3JJZD0ke2RhdGEuZmxvb3JJZH1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpeHR1cmVUZW1wbGF0ZShpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS9nZXRUZW1wbGF0ZWAsXHJcbiAgICAgIHsgcGFyYW1zOiB7IHRlbXBsYXRlSWQ6IGlkIH0gfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRSb2xsb3V0VGFza0luZm8oZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldFJvbGxvdXRUYXNrRGV0YWlscz9wbGFub0lkPSR7ZGF0YS5wbGFub0lkfSZmbG9vcklkPSR7ZGF0YS5mbG9vcklkfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmV2b2tlVGFzayhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFzay9yZXZva2VUYXNrYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVSb2xsb3V0U3RhdHVzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vdXBkYXRlUm9sbG91dFN0YXR1c2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVtcGxhdGVBc3NpZ25MaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL3RlbXBsYXRlQXNzaWduTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVtcGxhdGVUcmVlTGlzdChwYXJhbXM6IHtcclxuICAgIG1hc3RlcklkPzogc3RyaW5nO1xyXG4gICAgc3RvcmVJZD86IHN0cmluZztcclxuICAgIGNsaWVudElkPzogc3RyaW5nO1xyXG4gICAgdGVtcGxhdGVHcm91cE5hbWVzPzogc3RyaW5nW107XHJcbiAgICBmaXh0dXJlTmFtZXM/OiBzdHJpbmdbXTtcclxuICAgIHN0b3JlTmFtZXM/OiBzdHJpbmdbXTtcclxuICB9KSB7XHJcbiAgICBsZXQgcXVlcnlQYXJ0czogc3RyaW5nW10gPSBbXTtcclxuICAgIGlmIChwYXJhbXMubWFzdGVySWQpIHF1ZXJ5UGFydHMucHVzaChgbWFzdGVySWQ9JHtwYXJhbXMubWFzdGVySWR9YCk7XHJcbiAgICBlbHNlIGlmIChwYXJhbXMuc3RvcmVJZCkgcXVlcnlQYXJ0cy5wdXNoKGBzdG9yZUlkPSR7cGFyYW1zLnN0b3JlSWR9YCk7XHJcbiAgICBlbHNlIGlmIChwYXJhbXMuY2xpZW50SWQpIHF1ZXJ5UGFydHMucHVzaChgY2xpZW50SWQ9JHtwYXJhbXMuY2xpZW50SWR9YCk7XHJcblxyXG4gICAgaWYgKHBhcmFtcy50ZW1wbGF0ZUdyb3VwTmFtZXM/Lmxlbmd0aClcclxuICAgICAgcXVlcnlQYXJ0cy5wdXNoKFxyXG4gICAgICAgIGB0ZW1wbGF0ZUdyb3VwTmFtZXM9JHtwYXJhbXMudGVtcGxhdGVHcm91cE5hbWVzLmpvaW4oXCIsXCIpfWAsXHJcbiAgICAgICk7XHJcbiAgICBpZiAocGFyYW1zLmZpeHR1cmVOYW1lcz8ubGVuZ3RoKVxyXG4gICAgICBxdWVyeVBhcnRzLnB1c2goYGZpeHR1cmVOYW1lcz0ke3BhcmFtcy5maXh0dXJlTmFtZXMuam9pbihcIixcIil9YCk7XHJcbiAgICBpZiAocGFyYW1zLnN0b3JlTmFtZXM/Lmxlbmd0aClcclxuICAgICAgcXVlcnlQYXJ0cy5wdXNoKGBzdG9yZU5hbWVzPSR7cGFyYW1zLnN0b3JlTmFtZXMuam9pbihcIixcIil9YCk7XHJcblxyXG4gICAgbGV0IHF1ZXJ5U3RyaW5nID0gcXVlcnlQYXJ0cy5sZW5ndGggPyBgPyR7cXVlcnlQYXJ0cy5qb2luKFwiJlwiKX1gIDogXCJcIjtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS90ZW1wbGF0ZVRyZWVMaXN0JHtxdWVyeVN0cmluZ31gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRyZWVGaWx0ZXJPcHRpb25zKGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL3RyZWVGaWx0ZXJPcHRpb25zP2NsaWVudElkPSR7Y2xpZW50SWR9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRUZW1wbGF0ZVZlcnNpb25MaXN0KHRlbXBsYXRlSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvdGVtcGxhdGVWZXJzaW9uTGlzdD90ZW1wbGF0ZUlkPSR7dGVtcGxhdGVJZH1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpeHR1cmVBaURldGFpbHMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldEZpeHR1cmVBSURldGFpbHM/Zml4dHVyZUlkPSR7ZGF0YX1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpeHR1cmVTaGVsZkRldGFpbHMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlU2hlbGZEZXRhaWxzdjJgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFBsYW5vZ3JhbUxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldFBsYW5vZ3JhbUxpc3RgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldFBsYW5vZ3JhbUNvbXBsaWFuY2VEZXRhaWxzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vY2FsY3VsYXRlQ29tcGxpYW5jZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUHJvZHVjdE1hcHBpbmcoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS91cGRhdGVQcm9kdWN0TWFwcGluZ2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q291bnRyaWVzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudHJhZmZpY0FwaVVybH0vaGVhZGVyQ291bnRyeV92MmAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVnaW9ucyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYWZmaWNBcGlVcmx9L2hlYWRlckxvY2F0aW9uc192MmAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGxhbm9TdG9yZVZpZGVvUGFyYW1zKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vZ2V0UGxhbm9TdG9yZVZpZGVvUGFyYW1zYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaXNoKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vY3JlYXRlUmV2aXNpb25gLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFJldmlzaW9uTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL2dldFJldmlzaW9uc2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVQbGFubyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL2dldFJldmlzaW9uRGF0YWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2V0QWN0aXZlUmV2aXNpb24oZGF0YToge1xyXG4gICAgcmV2aXNpb25JZDogc3RyaW5nO1xyXG4gICAgcGxhbm9JZDogc3RyaW5nO1xyXG4gICAgZmxvb3JJZDogc3RyaW5nO1xyXG4gICAgc2VuZFZlcmlmaWNhdGlvblRhc2s6IGJvb2xlYW47XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vc2V0QWN0aXZlUmV2aXNpb25gLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVJldmlzaW9uTmFtZShkYXRhOiB7IHJldmlzaW9uSWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL3VwZGF0ZVJldmlzaW9uTmFtZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2V0U3RhZ2luZ0ZsYWcoZGF0YTogeyByZXZpc2lvbklkOiBzdHJpbmc7IGlzU3RhZ2luZzogYm9vbGVhbiB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby9zZXRTdGFnaW5nRmxhZ2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2hlbGZEZXRhaWxzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zaGVsZlByb2R1Y3RgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldFBsYW5vU3RvcmVMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRQbGFub1N0b3JlTGlzdD9jbGllbnRJZD0ke2RhdGF9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxTdG9yZXMoY2xpZW50SWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRBbGxTdG9yZXM/Y2xpZW50SWQ9JHtjbGllbnRJZH1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlRmxvb3JzTGlzdChzdG9yZUlkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0U3RvcmVGbG9vcnNMaXN0P3N0b3JlSWQ9JHtzdG9yZUlkfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlUGxhbm9Gcm9tQ0FEKFxyXG4gICAgZmlsZTogRmlsZSxcclxuICAgIHN0b3JlSWQ6IHN0cmluZyxcclxuICAgIHN0b3JlTmFtZTogc3RyaW5nLFxyXG4gICAgZmxvb3JOdW1iZXI6IG51bWJlcixcclxuICApIHtcclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcblxyXG4gICAgZm9ybURhdGEuYXBwZW5kKFwiZmlsZVwiLCBmaWxlKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZChcInN0b3JlSWRcIiwgc3RvcmVJZCk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJmbG9vck51bWJlclwiLCBmbG9vck51bWJlci50b1N0cmluZygpKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZChcInN0b3JlTmFtZVwiLCBzdG9yZU5hbWUpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L29uYm9hcmRQbGFuby9jcmVhdGVQbGFub0Zyb21DQURgLFxyXG4gICAgICBmb3JtRGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVFbXB0eVBsYW5vKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vb25ib2FyZFBsYW5vL2NyZWF0ZUVtcHR5UGxhbm9gLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEFsbFBsYW5vSWRzKGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc2NyaXB0L2dldEFsbFBsYW5vSWRzTT9jbGllbnRJZD0ke2NsaWVudElkfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZmluZEZpeHR1cmVBaShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvZmluZEZpeHR1cmVBSWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZmluZEZpeHR1cmUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL2ZpbmRGaXh0dXJlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZXBsYWNlRml4dHVyZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvcmVwbGFjZUZpeHR1cmVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFJlcGxhY2VCcmFuZExpc3QoY2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9nZXRSZXBsYWNlQnJhbmRMaXN0YCxcclxuICAgICAgeyBjbGllbnRJZCB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFJlcGxhY2VWbUxpc3QoY2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9nZXRSZXBsYWNlVm1MaXN0YCxcclxuICAgICAgeyBjbGllbnRJZCB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFBsYW5vSWQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL2dldFBsYW5vSWRgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUZpeHR1cmVEYXRhKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS91cGRhdGVGaXh0dXJlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhcHByb3ZlUGxhbm9MYXlvdXQoZmxvb3JJZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9vbmJvYXJkUGxhbm8vYXBwcm92ZVBsYW5vTGF5b3V0YCxcclxuICAgICAgeyBmbG9vcklkOiBmbG9vcklkIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0TUJRU2hlZXQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zY3JpcHQvZ2V0UGxhbm9FeGNlbGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIHsgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRQbGFub09yZGVyU2hlZXQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zY3JpcHQvZ2V0UGxhbm9PcmRlckV4Y2VsYCxcclxuICAgICAgZGF0YSxcclxuICAgICAgeyByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIiB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIEFzeW5jL1MzIHZhcmlhbnRzOiBzZXJ2ZXIgcXVldWVzIHRoZSBqb2IsIHJldHVybnMgMjAyIHdpdGggeyBqb2JJZCB9LCBhbmRcclxuICAvLyBzYXZlcyB0aGUgRXhjZWwgdG8gUzMuIFVzZSBnZXRQbGFub0V4cG9ydEpvYihqb2JJZCkgdG8gcG9sbCBzdGF0dXMuXHJcbiAgZXhwb3J0TUJRU2hlZXRBc3luYyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3NjcmlwdC9nZXRQbGFub0V4Y2VsYCxcclxuICAgICAgeyAuLi5kYXRhLCBzYXZlVG9TMzogdHJ1ZSB9LFxyXG4gICAgICB7IG9ic2VydmU6IFwicmVzcG9uc2VcIiB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydFBsYW5vT3JkZXJTaGVldEFzeW5jKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc2NyaXB0L2dldFBsYW5vT3JkZXJFeGNlbGAsXHJcbiAgICAgIHsgLi4uZGF0YSwgc2F2ZVRvUzM6IHRydWUgfSxcclxuICAgICAgeyBvYnNlcnZlOiBcInJlc3BvbnNlXCIgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub0V4cG9ydEpvYihqb2JJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3NjcmlwdC9nZXRQbGFub0V4cG9ydEpvYi8ke2VuY29kZVVSSUNvbXBvbmVudChcclxuICAgICAgICBqb2JJZCxcclxuICAgICAgKX1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJ1bkFsb2NhdGlvbihkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L29uYm9hcmRQbGFuby9ydW5BbG9jYXRpb25gLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEl2bUNvbnZlcnNpb25BbGlhcygpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vb25ib2FyZFBsYW5vL2l2bUNvbnZlcnNpb25BbGlhc2AsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsRmluZFJlcGxhY2VEYXRhKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9nZXRBbGxGaW5kUmVwbGFjZURhdGFgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpbmRSZXBsYWNlRGF0YUJ5SWQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL2dldEZpbmRSZXBsYWNlRGF0YUJ5SWRgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNhdmVBc0RyYWZ0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9zYXZlQXNEcmFmdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVPckNsdXN0ZXJMaXN0KGRhdGE6IHsgc2VhcmNoTW9kZTogXCJzdG9yZVwiIHwgXCJjbHVzdGVyXCIgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9nZXRTdG9yZU9yQ2x1c3Rlckxpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGJhdGNoRmluZFJlcGxhY2UoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL2JhdGNoRmluZFJlcGxhY2VgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFwcHJvdmVSZXBsYWNlKGRhdGE6IHtcclxuICAgIGZpbmRSZXBsYWNlSWQ6IHN0cmluZztcclxuICAgIHN0b3Jlcz86IGFueVtdO1xyXG4gICAgc2NoZWR1bGU/OiBib29sZWFuO1xyXG4gICAgc2NoZWR1bGVEYXRlPzogc3RyaW5nIHwgbnVsbDtcclxuICB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL2FwcHJvdmVSZXBsYWNlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVCYXRjaFByb2dyZXNzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS91cGRhdGVCYXRjaFByb2dyZXNzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxGaW5kUmVwbGFjZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvY2FuY2VsRmluZFJlcGxhY2VgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpbmRSZXBsYWNlQWkoZGF0YTogeyBpZDogc3RyaW5nIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvZGVsZXRlRmluZFJlcGxhY2VBaWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmV2b2tlRmluZFJlcGxhY2UoZGF0YTogeyBmaW5kUmVwbGFjZUlkOiBzdHJpbmcgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9yZXZva2VGaW5kUmVwbGFjZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlU3RvcmUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUFwaVVybH0vY3JlYXRlLXN0b3JlYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBzcG9jRW1haWxDaGVjayhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQXBpVXJsfS9zcG9jRW1haWxDaGVja2AsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlSW5mcmFUaWNrZXQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50aWNrZXRzQXBpVXJsfS9pbmZyYS9jcmVhdGVUaWNrZXRgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldEZvb3RmYWxsRGV0YWlscyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldEZpeHR1cmVGb290ZmFsbGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9wUGVyZm9ybWluZ1pvbmVzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0VG9wUGVyZm9ybWluZ1pvbmVzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZUVuZ2FnZXJzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRTdG9yZUVuZ2FnZXJzYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZUZpeHR1cmVFbmdhZ2VycyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldFN0b3JlRml4dHVyZUVuZ2FnZXJzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZUZpeHR1cmVGb290ZmFsbChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldFN0b3JlRml4dHVyZUZvb3RmYWxsYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBWTSBBbGxvY2F0aW9uIEVuZ2luZVxyXG4gIGdldFZtUnVsZUxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS92bUFsbG9jYXRpb25FbmdpbmUvZ2V0UnVsZUxpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFZtUnVsZURldGFpbHMocnVsZUlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdm1BbGxvY2F0aW9uRW5naW5lL2dldFJ1bGVEZXRhaWxzYCxcclxuICAgICAgeyBwYXJhbXM6IHsgcnVsZUlkIH0gfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVWbVJ1bGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS92bUFsbG9jYXRpb25FbmdpbmUvY3JlYXRlUnVsZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVm1SdWxlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdm1BbGxvY2F0aW9uRW5naW5lL3VwZGF0ZVJ1bGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVZtUnVsZShydWxlSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS92bUFsbG9jYXRpb25FbmdpbmUvZGVsZXRlUnVsZS8ke3J1bGVJZH1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFjdGl2YXRlVm1SdWxlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdm1BbGxvY2F0aW9uRW5naW5lL2FjdGl2YXRlUnVsZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGVhY3RpdmF0ZVZtUnVsZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3ZtQWxsb2NhdGlvbkVuZ2luZS9kZWFjdGl2YXRlUnVsZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZHVwbGljYXRlVm1SdWxlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdm1BbGxvY2F0aW9uRW5naW5lL2R1cGxpY2F0ZVJ1bGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFzc2lnblZtUnVsZVN0b3JlcyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3ZtQWxsb2NhdGlvbkVuZ2luZS9hc3NpZ25TdG9yZXNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEFjdGl2ZVZtUnVsZUZvclN0b3JlKHN0b3JlSWQ6IHN0cmluZywgY2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS92bUFsbG9jYXRpb25FbmdpbmUvZ2V0QWN0aXZlUnVsZUZvclN0b3JlYCxcclxuICAgICAgeyBwYXJhbXM6IHsgc3RvcmVJZCwgY2xpZW50SWQgfSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpeHR1cmVOdW1iZXJzQnlTdG9yZShcclxuICAgIHN0b3JlTmFtZTogc3RyaW5nLFxyXG4gICAgY2xpZW50SWQ6IHN0cmluZyxcclxuICAgIHRhc2tUeXBlOiBcImZpeHR1cmVcIiB8IFwiem9uZVZlcmlmaWNhdGlvblwiID0gXCJmaXh0dXJlXCIsXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2svZ2V0Rml4dHVyZU51bWJlcnNCeVN0b3JlYCxcclxuICAgICAgeyBwYXJhbXM6IHsgc3RvcmVOYW1lLCBjbGllbnRJZCwgdGFza1R5cGUgfSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFsbG93RWRpdFdpdGhvdXRSZW1vdmluZ1Jlc3BvbnNlKGRhdGE6IHtcclxuICAgIHN0b3JlTmFtZXM6IHN0cmluZ1tdO1xyXG4gICAgY2xpZW50SWQ6IHN0cmluZztcclxuICAgIHRhc2tUeXBlOiBcImZpeHR1cmVcIiB8IFwiem9uZVZlcmlmaWNhdGlvblwiO1xyXG4gICAgZml4dHVyZU51bWJlcnM/OiBudW1iZXJbXTtcclxuICB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL2FsbG93RWRpdFdpdGhvdXRSZW1vdmluZ1Jlc3BvbnNlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlRGV0YWlsc0J5U3RvcmUoc3RvcmVOYW1lOiBzdHJpbmcsIGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFzay9nZXRGaXh0dXJlRGV0YWlsc0J5U3RvcmVgLFxyXG4gICAgICB7IHBhcmFtczogeyBzdG9yZU5hbWUsIGNsaWVudElkIH0gfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGaXh0dXJlVHlwZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2svdXBkYXRlRml4dHVyZVR5cGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlRml4dHVyZXNGb3JSZW9yZGVyKHN0b3JlTmFtZTogc3RyaW5nLCBjbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldFN0b3JlRml4dHVyZXNGb3JSZW9yZGVyYCxcclxuICAgICAgeyBwYXJhbXM6IHsgc3RvcmVOYW1lLCBjbGllbnRJZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmVvcmRlclN0b3JlRml4dHVyZU51bWJlcnMoZGF0YTogeyBzdG9yZU5hbWU6IHN0cmluZzsgY2xpZW50SWQ6IHN0cmluZyB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9yZW9yZGVyU3RvcmVGaXh0dXJlTnVtYmVyc2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRml4dHVyZU51bWJlck1hbnVhbChkYXRhOiB7XHJcbiAgICBmaXh0dXJlSWQ6IHN0cmluZztcclxuICAgIGZpeHR1cmVOdW1iZXI/OiBudW1iZXI7XHJcbiAgICBhc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXI/OiBudW1iZXI7XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdXBkYXRlRml4dHVyZU51bWJlck1hbnVhbGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlVGFza0ZvclN0b3JlcyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2svZGVsZXRlVGFza0ZvclN0b3Jlc2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rmxvb3JzV2l0aFN0YXR1cyhzdG9yZU5hbWU6IHN0cmluZywgY2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL2dldEZsb29yc1dpdGhTdGF0dXNgLFxyXG4gICAgICB7IHBhcmFtczogeyBzdG9yZU5hbWUsIGNsaWVudElkIH0gfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBtb3ZlU3RvcmVCdWNrZXQoZGF0YToge1xyXG4gICAgZmxvb3JJZDogc3RyaW5nO1xyXG4gICAgdGFyZ2V0U3RhdHVzOiBcImRyYWZ0XCIgfCBcImFsbG9jYXRpb25QZW5kaW5nXCIgfCBcImNvbXBsZXRlZFwiO1xyXG4gICAgY2xlYXJMYXlvdXRUYXNrczogYm9vbGVhbjtcclxuICAgIGNsZWFyRml4dHVyZVRhc2tzOiBib29sZWFuO1xyXG4gICAgY2xlYXJab25lVGFza3M6IGJvb2xlYW47XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFzay9tb3ZlU3RvcmVCdWNrZXRgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHN3YXBGaXh0dXJlVGVtcGxhdGUoZGF0YToge1xyXG4gICAgZGF0YTogeyBzdG9yZU5hbWU6IHN0cmluZzsgZml4dHVyZU51bWJlcjogbnVtYmVyOyB0ZW1wbGF0ZU5hbWU6IHN0cmluZyB9W107XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc2NyaXB0L3N3YXBGaXh0dXJlVGVtcGxhdGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFBsYW5vRGF0YVNjaGVtYSgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRQbGFub0RhdGFTY2hlbWFgKTtcclxuICB9XHJcblxyXG4gIGdldENhZEZpbGVzKHN0b3JlTmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vb25ib2FyZFBsYW5vL2NhZEZpbGVzYCwge1xyXG4gICAgICBwYXJhbXM6IHsgc3RvcmVOYW1lIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJ1blBsYW5vRGF0YVF1ZXJ5KGRhdGE6IHtcclxuICAgIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgICBzdG9yZU5hbWVzOiBzdHJpbmdbXTtcclxuICAgIGZpbHRlcnM6IHsgZmllbGQ6IHN0cmluZzsgb3BlcmF0b3I6IHN0cmluZzsgdmFsdWU6IGFueSB9W107XHJcbiAgICBmaWx0ZXJDb21iaW5hdG9yOiBcIkFORFwiIHwgXCJPUlwiO1xyXG4gICAgc2VsZWN0aW9uTW9kZTogXCJhbGxcIiB8IFwiZmlyc3ROXCI7XHJcbiAgICBsaW1pdFBlclN0b3JlPzogbnVtYmVyO1xyXG4gICAgY29sdW1uczogeyBrZXk6IHN0cmluZzsgbGFiZWw/OiBzdHJpbmcgfVtdO1xyXG4gICAgaW5jbHVkZU5vdEZvdW5kUm93cz86IGJvb2xlYW47XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9ydW5QbGFub0RhdGFRdWVyeWAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcnVuVm1QbGFjZW1lbnRRdWVyeShkYXRhOiB7XHJcbiAgICBjbGllbnRJZDogc3RyaW5nO1xyXG4gICAgc3RvcmVOYW1lczogc3RyaW5nW107XHJcbiAgICB2bU5hbWU6IHN0cmluZztcclxuICB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9ydW5WbVBsYWNlbWVudFF1ZXJ5YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBMb29rIFBsYW5vIENvbGxlY3Rpb25zXHJcbiAgZ2V0TG9va1BsYW5vQ29sbGVjdGlvbkxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9sb29rUGxhbm9Db2xsZWN0aW9uL2dldENvbGxlY3Rpb25MaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRMb29rUGxhbm9Db2xsZWN0aW9uRGV0YWlscyhjb2xsZWN0aW9uSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9sb29rUGxhbm9Db2xsZWN0aW9uL2dldENvbGxlY3Rpb25EZXRhaWxzYCxcclxuICAgICAgeyBwYXJhbXM6IHsgY29sbGVjdGlvbklkIH0gfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVMb29rUGxhbm9Db2xsZWN0aW9uKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbG9va1BsYW5vQ29sbGVjdGlvbi9jcmVhdGVDb2xsZWN0aW9uYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVMb29rUGxhbm9Db2xsZWN0aW9uKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbG9va1BsYW5vQ29sbGVjdGlvbi91cGRhdGVDb2xsZWN0aW9uYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVMb29rUGxhbm9Db2xsZWN0aW9uKGNvbGxlY3Rpb25JZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2xvb2tQbGFub0NvbGxlY3Rpb24vZGVsZXRlQ29sbGVjdGlvbi8ke2NvbGxlY3Rpb25JZH1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGR1cGxpY2F0ZUxvb2tQbGFub0NvbGxlY3Rpb24oY29sbGVjdGlvbklkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2xvb2tQbGFub0NvbGxlY3Rpb24vZHVwbGljYXRlQ29sbGVjdGlvbmAsXHJcbiAgICAgIHsgY29sbGVjdGlvbklkIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
678
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUtYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL3NlcnZpY2VzL3N0b3JlLWJ1aWxkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQzs7OztBQUU3QixNQUFNLFVBQVUsR0FDZCxpRkFBaUYsQ0FBQztBQUNwRixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUM7QUFLaEMsTUFBTSxPQUFPLG1CQUFtQjtJQVdwQjtJQUNBO0lBWFYsV0FBVyxDQUFTO0lBQ3BCLGtCQUFrQixDQUFTO0lBQzNCLGFBQWEsQ0FBUztJQUN0QixhQUFhLENBQVM7SUFFdEIsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTNCLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTFDLFlBQ1UsSUFBZ0IsRUFDaEIsRUFBc0I7UUFEdEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUU5QixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ25FLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFH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QVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7d0dBaHpDVSxtQkFBbUI7NEdBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCAqIGFzIEZpbGVTYXZlciBmcm9tIFwiZmlsZS1zYXZlclwiO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gXCJ4bHN4XCI7XHJcblxyXG5jb25zdCBFWENFTF9UWVBFID1cclxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2NoYXJzZXQ9VVRGLThcIjtcclxuY29uc3QgRVhDRUxfRVhURU5TSU9OID0gXCIueGxzeFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RvcmVCdWlsZGVyU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgc3RvcmVBcGlVcmw6IHN0cmluZztcclxuICBzdG9yZUJ1aWxkZXJBcGlVcmw6IHN0cmluZztcclxuICB0cmFmZmljQXBpVXJsOiBzdHJpbmc7XHJcbiAgdGlja2V0c0FwaVVybDogc3RyaW5nO1xyXG5cclxuICBkcm9wRG93blRyaWdnZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmdzLmVudmlyb25tZW50LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGVudikgPT4ge1xyXG4gICAgICBpZiAoZW52KSB7XHJcbiAgICAgICAgdGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmwgPSBlbnYuc3RvcmVCdWlsZGVyVXJsO1xyXG4gICAgICAgIHRoaXMuc3RvcmVBcGlVcmwgPSBlbnYuc3RvcmVBcGlVcmw7XHJcbiAgICAgICAgdGhpcy50cmFmZmljQXBpVXJsID0gZW52LnRyYWZmaWNBcGlVcmw7XHJcbiAgICAgICAgdGhpcy50aWNrZXRzQXBpVXJsID0gZW52LnRpY2tldHNBcGlVcmw7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4cG9ydEFzRXhjZWxGaWxlKGpzb246IGFueVtdLCBleGNlbEZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IHdvcmtzaGVldDogWExTWC5Xb3JrU2hlZXQgPSBYTFNYLnV0aWxzLmpzb25fdG9fc2hlZXQoanNvbik7XHJcbiAgICBjb25zdCB3b3JrYm9vazogWExTWC5Xb3JrQm9vayA9IHtcclxuICAgICAgU2hlZXRzOiB7IGRhdGE6IHdvcmtzaGVldCB9LFxyXG4gICAgICBTaGVldE5hbWVzOiBbXCJkYXRhXCJdLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IGV4Y2VsQnVmZmVyOiBhbnkgPSBYTFNYLndyaXRlKHdvcmtib29rLCB7XHJcbiAgICAgIGJvb2tUeXBlOiBcInhsc3hcIixcclxuICAgICAgdHlwZTogXCJhcnJheVwiLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNhdmVBc0V4Y2VsRmlsZShleGNlbEJ1ZmZlciwgZXhjZWxGaWxlTmFtZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZUFzRXhjZWxGaWxlKGJ1ZmZlcjogYW55LCBmaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHtcclxuICAgICAgdHlwZTogRVhDRUxfVFlQRSxcclxuICAgIH0pO1xyXG4gICAgRmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlTmFtZSArIFwibGlzdFwiICsgRVhDRUxfRVhURU5TSU9OKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlQXNUZW1wbGF0ZShidWZmZXI6IGFueSwgZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGF0YTogQmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7XHJcbiAgICAgIHR5cGU6IEVYQ0VMX1RZUEUsXHJcbiAgICB9KTtcclxuICAgIEZpbGVTYXZlci5zYXZlQXMoZGF0YSwgZmlsZU5hbWUgKyBFWENFTF9FWFRFTlNJT04pO1xyXG4gIH1cclxuXHJcbiAgbGF5b3V0TGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc3RvcmVMYXlvdXRMaXN0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZUxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUFwaVVybH0vc3RvcmVJbmZyYUxpc3RgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUxheW91dChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vY3JlYXRlU3RvcmVMYXlvdXRgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUFuZFN1Ym1pdExheW91dFRhc2soc3RvcmVOYW1lOiBzdHJpbmcsIGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc2NyaXB0L2NyZWF0ZUxheW91dGAsIHtcclxuICAgICAgc3RvcmVOYW1lOiBbc3RvcmVOYW1lXSxcclxuICAgICAgY2xpZW50SWQsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIEJ1bGtVcGxvYWQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3VwbG9hZEJ1bGtTdG9yZWAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGxhbm8oZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3N0b3JlTGF5b3V0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub0RldGFpbHMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3N0b3JlRml4dHVyZXNgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZsb29yKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9kZWxldGVGbG9vcmAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rmxvb3JEZWxldGVJbXBhY3QoZGF0YTogeyBmbG9vcklkOiBzdHJpbmcgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0Rmxvb3JEZWxldGVJbXBhY3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZsb29yQ2FzY2FkZShkYXRhOiB7IGZsb29ySWQ6IHN0cmluZzsgY29uZmlybUxhc3RGbG9vcj86IGJvb2xlYW4gfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZGVsZXRlRmxvb3JDYXNjYWRlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhZGRGbG9vcihkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdXBkYXRlRmxvb3JgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUZsb29yTGF5b3V0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS91cGRhdGVTdG9yZUxheW91dGAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVEZXRhaWxzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zdG9yZURldGFpbHNgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHVwbG9hZEZpbGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3VwbG9hZEZpbGVgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3JlbW92ZUZpbGVgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVBsYW5vU3RhdHVzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS91cGRhdGVTdGF0dXNgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUxheW91dChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZGVsZXRlU3RvcmVMYXlvdXQvJHtkYXRhfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGV0YWlsZWREaXN0YW5jZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3VwZGF0ZURlYXRhaWxlZERpc3RhbmNlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRlcnRGaXh0dXJlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS91cHNlcnRGaXh0dXJlYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvLyBGaXh0dXJlIExpYnJhcnlcclxuICBjcmVhdGVGaXh0dXJlTGlicmFyeShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9jcmVhdGVGaXh0dXJlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlTGlicmFyeURldGFpbHMoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZml4dHVyZURldGFpbHNgLFxyXG4gICAgICB7IHBhcmFtczogeyBmaXh0dXJlSWQ6IGlkIH0gfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlU2l6ZUxpc3QoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZml4dHVyZVNpemVMaXN0YCxcclxuICAgICAgeyBwYXJhbXM6IHsgY2xpZW50SWQ6IGlkIH0gfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlTGlicmFyeUxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZml4dHVyZUxpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpeHR1cmVMaWJyYXJ5TGlzdFRvRXhwb3J0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2ZpeHR1cmVMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICAgeyByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIiB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUZpeHR1cmVMaWJyYXJ5KGRhdGE6IGFueSwgaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L3VwZGF0ZUZpeHR1cmUvJHtpZH1gLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGR1cGxpY2F0ZUZpeHR1cmVMaWJyYXJ5KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2R1cGxpY2F0ZUZpeHR1cmVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpeHR1cmVMaWJyYXJ5KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2RlbGV0ZUZpeHR1cmVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGJ1bGtBY3Rpb25GaXh0dXJlTGlicmFyeShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9maXh0dXJlQnVsa1VwbG9hZGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZU5hbWVMaXN0KGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2ZpeHR1cmVOYW1lTGlzdGAsXHJcbiAgICAgIHsgcGFyYW1zOiB7IGNsaWVudElkOiBpZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZUxpYk5hbWVMaXN0KGlkOiBzdHJpbmcsIHN0YXR1cz86IHN0cmluZywgY291bnRyeT86IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZml4dHVyZUxpYk5hbWVMaXN0YCxcclxuICAgICAge1xyXG4gICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgY2xpZW50SWQ6IGlkLFxyXG4gICAgICAgICAgLi4uKHN0YXR1cyA/IHsgc3RhdHVzIH0gOiB7fSksXHJcbiAgICAgICAgICAuLi4oY291bnRyeSA/IHsgY291bnRyeSB9IDoge30pLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gVk0gTGlicmFyeVxyXG4gIGdldFZtTGlicmFyeURldGFpbHMoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZ2V0Vm1EZXRhaWxzYCxcclxuICAgICAge1xyXG4gICAgICAgIHBhcmFtczogeyB2bUlkOiBpZCB9LFxyXG4gICAgICB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFZtTGlicmFyeUxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZ2V0Vm1MaWJMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRWbUxpYnJhcnlMaXN0VG9FeHBvcnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZ2V0Vm1MaWJMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICAgeyByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIiB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFkZFVwZGF0ZVZtTGlicmFyeShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9hZGRVcGRhdGVWbWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZHVwbGljYXRlVm1MaWJyYXJ5KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2R1cGxpY2F0ZVZtTGliYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVWbUxpYnJhcnkoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZGVsZXRlVm1MaWJgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGJ1bGtBY3Rpb25WbUxpYnJhcnkoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvdm1CdWxrVXBsb2FkYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRWTU5hbWVMaXN0KGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvdm1OYW1lTGlzdGAsIHtcclxuICAgICAgcGFyYW1zOiB7IGNsaWVudElkOiBpZCB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyAgVm1UeXBlc1xyXG4gIGdldFZtVHlwZXNMaXN0KGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2dldFZtVHlwZUxpc3RgLFxyXG4gICAgICB7XHJcbiAgICAgICAgcGFyYW1zOiB7IGNsaWVudElkOiBpZCB9LFxyXG4gICAgICB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG1hbmFnZVZtVHlwZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9hZGRWbVR5cGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwbG9hZFZtVHlwZUltYWdlKGZvcm1EYXRhOiBhbnksIGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS91cGxvYWRWbXR5cGVJbWFnZS8ke2lkfWAsXHJcbiAgICAgIGZvcm1EYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIEJyYW5kIGxpc3RcclxuICBnZXRCcmFuZExpc3QoaWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2dldEJyYW5kTGlzdGAsXHJcbiAgICAgIHtcclxuICAgICAgICBjbGllbnRJZDogaWQsXHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYnJhbmRFeHBvcnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0xpYnJhcnkvZ2V0QnJhbmRMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICAgeyByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIiB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlRml4dHVyZXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3N0b3JlRml4dHVyZXNWMmAsIHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgLy8gc3RhdHVzOiBbXCJjb21wbGV0ZWRcIl0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIGdldE9uYm9hcmRTdG9yZUZpeHR1cmVzKGRhdGE6IGFueSkge1xyXG4gIC8vICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zdG9yZUZpeHR1cmVzVjJgLCB7XHJcbiAgLy8gICAgIC4uLmRhdGEsXHJcbiAgLy8gICAgIHN0YXR1czogW1wiZHJhZnRcIiwgXCJhbGxvY2F0aW9uUGVuZGluZ1wiXSxcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gRml4dHVyZSBUZW1wbGF0ZXNcclxuICBnZXRGaXh0dXJlVGVtcGxhdGVMaXN0T2xkKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL2dldFRlbXBsYXRlTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZVRlbXBsYXRlTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS9tYXN0ZXJUZW1wbGF0ZUxpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRlbXBsYXRlQ2hpbGRMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL3RlbXBsYXRlQ2hpbGRMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlVGVtcGxhdGVMaXN0VG9FeHBvcnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvZ2V0VGVtcGxhdGVMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICAgeyByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIiB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZpeHR1cmVUZW1wbGF0ZURldGFpbHMoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvZ2V0VGVtcGxhdGVEZXRhaWxzYCxcclxuICAgICAgeyBwYXJhbXM6IHsgdGVtcGxhdGVJZDogaWQgfSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUZpeHR1cmVUZW1wbGF0ZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS9jcmVhdGVUZW1wbGF0ZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuICByZXBsYWNlRml4dHVyZURldGFpbHMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvcmVwbGFjZUZpeHR1cmVEZXRhaWxzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGaXh0dXJlVGVtcGxhdGUoZGF0YTogYW55LCBpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvdXBkYXRlVGVtcGxhdGUvJHtpZH1gLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGR1cGxpY2F0ZUZpeHR1cmVUZW1wbGF0ZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS9kdXBsaWNhdGVUZW1wbGF0ZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRml4dHVyZVRlbXBsYXRlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL2RlbGV0ZVRlbXBsYXRlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGaXh0dXJlU3RhdHVzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vdXBkYXRlRml4dHVyZVN0YXR1c2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQXBwcm92YWxTdGF0dXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby91cGRhdGVBcHByb3ZhbFN0YXR1c2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVGaXh0dXJlc2ZlZWRiYWNrKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vZ2V0U3RvcmVGaXh0dXJlc2ZlZWRiYWNrYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTdG9yZVBsYW5vKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vdXBkYXRlU3RvcmVQbGFub2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVGZWVkYmFjayhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL2dldHBsYW5vRmVlZGJhY2tgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFJvbGxvdXRGZWVkYmFjayhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL2dldFJvbGxvdXRGZWVkYmFja3YyYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRab25lVmVyaWZpY2F0aW9uRmVlZGJhY2soZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby9nZXRab25lVmVyaWZpY2F0aW9uRmVlZGJhY2tgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVpvbmVWZXJpZmljYXRpb25TdGF0dXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby91cGRhdGVab25lVmVyaWZpY2F0aW9uU3RhdHVzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRIZWFkZXJzTGlzdChzdG9yZUlkPzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFzay9nZXRIZWFkZXJMaXN0YCwgXHJcbiAgICAgIC8vIHsgICAgICBwYXJhbXM6IHsgc3RvcmVJZDogc3RvcmVJZCA/PyBcIlwiIH0gICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFBJRExpc3QoaGVhZGVyOiBzdHJpbmcgPSBcIm90aGVyc1wiKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFzay9nZXRQSURMaXN0YCwge1xyXG4gICAgICBwYXJhbXM6IHsgaGVhZGVyIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFRlbXBsYXRlR3JvdXBMaXN0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL2dldFRlbXBsYXRlR3JvdXBMaXN0YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGaXh0dXJlQ29tcGxpYW5jZVN0YXR1cyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL3VwZGF0ZUZpeHR1cmVTdGF0dXNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFkZFVwZGF0ZUJyYW5kKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2FkZFVwZGF0ZUJyYW5kYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRCcmFuZChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS91cGxvYWRCcmFuZExpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEJyYW5kTWV0YURhdGEoY2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L2dldEJyYW5kTWV0YURhdGFgLFxyXG4gICAgICB7IGNsaWVudElkIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQnJhbmRNZXRhRGF0YShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS91cGRhdGVCcmFuZE1ldGFEYXRhYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUYXNrKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9MaWJyYXJ5L3VwZGF0ZVRhc2tjb25maWdgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRhc2tDb25maWcoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlicmFyeS9nZXRUYXNrQ29uZmlnP2NsaWVudElkPSR7ZGF0YX1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVN0b3JlRml4dHVyZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL3VwZGF0ZVN0b3JlRml4dHVyZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gU3RvcmVcclxuICBnZXRQbGFub0xpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlzdGAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0T25ib2FyZFBsYW5vTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L29uYm9hcmRQbGFuby9vbmJvYXJkUGxhbm9MaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub0xpc3RFeHBvcnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vTGlzdGAsIGRhdGEsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldE9uYm9hcmRQbGFub0xpc3RFeHBvcnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9vbmJvYXJkUGxhbm8vb25ib2FyZFBsYW5vTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIHtcclxuICAgICAgICByZXNwb25zZVR5cGU6IFwiYXJyYXlidWZmZXJcIixcclxuICAgICAgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub0NhcmRzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0NhcmRzYCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub1JvbGxvdXRMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub1JvbGxvdXRMaXN0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRSb2xsb3V0TGlzdEV4cG9ydChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9Sb2xsb3V0TGlzdGAsIGRhdGEsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFBsYW5vZ3JhbUxpc3RFeHBvcnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldFBsYW5vZ3JhbUxpc3RgLCBkYXRhLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVUYXNrKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL2NyZWF0ZVRhc2tgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUdsb2JhbENvbW1lbnQoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby91cGRhdGVHbG9iYWxDb21tZW50YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxUZW1wbGF0ZXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvZ2V0QWxsVGVtcGxhdGVzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG4gIGFzc2lnZWRUZW1wbGF0ZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS9hc3NpZ2VkVGVtcGxhdGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcbiAgVGVtcGxhdGVTdG9yZXNMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL1RlbXBsYXRlU3RvcmVzTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGFza0luZm8oZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2tEZXRhaWxzP3BsYW5vSWQ9JHtkYXRhLnBsYW5vSWR9JmZsb29ySWQ9JHtkYXRhLmZsb29ySWR9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlVGVtcGxhdGUoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvZ2V0VGVtcGxhdGVgLFxyXG4gICAgICB7IHBhcmFtczogeyB0ZW1wbGF0ZUlkOiBpZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Um9sbG91dFRhc2tJbmZvKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRSb2xsb3V0VGFza0RldGFpbHM/cGxhbm9JZD0ke2RhdGEucGxhbm9JZH0mZmxvb3JJZD0ke2RhdGEuZmxvb3JJZH1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJldm9rZVRhc2soZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2svcmV2b2tlVGFza2AsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlUm9sbG91dFN0YXR1cyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL3VwZGF0ZVJvbGxvdXRTdGF0dXNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRlbXBsYXRlQXNzaWduTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS90ZW1wbGF0ZUFzc2lnbkxpc3RgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRlbXBsYXRlVHJlZUxpc3QocGFyYW1zOiB7XHJcbiAgICBtYXN0ZXJJZD86IHN0cmluZztcclxuICAgIHN0b3JlSWQ/OiBzdHJpbmc7XHJcbiAgICBjbGllbnRJZD86IHN0cmluZztcclxuICAgIHRlbXBsYXRlR3JvdXBOYW1lcz86IHN0cmluZ1tdO1xyXG4gICAgZml4dHVyZU5hbWVzPzogc3RyaW5nW107XHJcbiAgICBzdG9yZU5hbWVzPzogc3RyaW5nW107XHJcbiAgfSkge1xyXG4gICAgbGV0IHF1ZXJ5UGFydHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBpZiAocGFyYW1zLm1hc3RlcklkKSBxdWVyeVBhcnRzLnB1c2goYG1hc3RlcklkPSR7cGFyYW1zLm1hc3RlcklkfWApO1xyXG4gICAgZWxzZSBpZiAocGFyYW1zLnN0b3JlSWQpIHF1ZXJ5UGFydHMucHVzaChgc3RvcmVJZD0ke3BhcmFtcy5zdG9yZUlkfWApO1xyXG4gICAgZWxzZSBpZiAocGFyYW1zLmNsaWVudElkKSBxdWVyeVBhcnRzLnB1c2goYGNsaWVudElkPSR7cGFyYW1zLmNsaWVudElkfWApO1xyXG5cclxuICAgIGlmIChwYXJhbXMudGVtcGxhdGVHcm91cE5hbWVzPy5sZW5ndGgpXHJcbiAgICAgIHF1ZXJ5UGFydHMucHVzaChcclxuICAgICAgICBgdGVtcGxhdGVHcm91cE5hbWVzPSR7cGFyYW1zLnRlbXBsYXRlR3JvdXBOYW1lcy5qb2luKFwiLFwiKX1gLFxyXG4gICAgICApO1xyXG4gICAgaWYgKHBhcmFtcy5maXh0dXJlTmFtZXM/Lmxlbmd0aClcclxuICAgICAgcXVlcnlQYXJ0cy5wdXNoKGBmaXh0dXJlTmFtZXM9JHtwYXJhbXMuZml4dHVyZU5hbWVzLmpvaW4oXCIsXCIpfWApO1xyXG4gICAgaWYgKHBhcmFtcy5zdG9yZU5hbWVzPy5sZW5ndGgpXHJcbiAgICAgIHF1ZXJ5UGFydHMucHVzaChgc3RvcmVOYW1lcz0ke3BhcmFtcy5zdG9yZU5hbWVzLmpvaW4oXCIsXCIpfWApO1xyXG5cclxuICAgIGxldCBxdWVyeVN0cmluZyA9IHF1ZXJ5UGFydHMubGVuZ3RoID8gYD8ke3F1ZXJ5UGFydHMuam9pbihcIiZcIil9YCA6IFwiXCI7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9maXh0dXJlVGVtcGxhdGUvdGVtcGxhdGVUcmVlTGlzdCR7cXVlcnlTdHJpbmd9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRUcmVlRmlsdGVyT3B0aW9ucyhjbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2ZpeHR1cmVUZW1wbGF0ZS90cmVlRmlsdGVyT3B0aW9ucz9jbGllbnRJZD0ke2NsaWVudElkfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVtcGxhdGVWZXJzaW9uTGlzdCh0ZW1wbGF0ZUlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVRlbXBsYXRlL3RlbXBsYXRlVmVyc2lvbkxpc3Q/dGVtcGxhdGVJZD0ke3RlbXBsYXRlSWR9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlQWlEZXRhaWxzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRGaXh0dXJlQUlEZXRhaWxzP2ZpeHR1cmVJZD0ke2RhdGF9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlU2hlbGZEZXRhaWxzKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZml4dHVyZVNoZWxmRGV0YWlsc3YyYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub2dyYW1MaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRQbGFub2dyYW1MaXN0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub2dyYW1Db21wbGlhbmNlRGV0YWlscyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2NhbGN1bGF0ZUNvbXBsaWFuY2VgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVByb2R1Y3RNYXBwaW5nKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdXBkYXRlUHJvZHVjdE1hcHBpbmdgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldENvdW50cmllcyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnRyYWZmaWNBcGlVcmx9L2hlYWRlckNvdW50cnlfdjJgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldFJlZ2lvbnMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy50cmFmZmljQXBpVXJsfS9oZWFkZXJMb2NhdGlvbnNfdjJgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGdldFBsYW5vU3RvcmVWaWRlb1BhcmFtcyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL2dldFBsYW5vU3RvcmVWaWRlb1BhcmFtc2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGlzaChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL2NyZWF0ZVJldmlzaW9uYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXZpc2lvbkxpc3QoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby9nZXRSZXZpc2lvbnNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlUGxhbm8oZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby9nZXRSZXZpc2lvbkRhdGFgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNldEFjdGl2ZVJldmlzaW9uKGRhdGE6IHtcclxuICAgIHJldmlzaW9uSWQ6IHN0cmluZztcclxuICAgIHBsYW5vSWQ6IHN0cmluZztcclxuICAgIGZsb29ySWQ6IHN0cmluZztcclxuICAgIHNlbmRWZXJpZmljYXRpb25UYXNrOiBib29sZWFuO1xyXG4gIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L21hbmFnZVBsYW5vL3NldEFjdGl2ZVJldmlzaW9uYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVSZXZpc2lvbk5hbWUoZGF0YTogeyByZXZpc2lvbklkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9tYW5hZ2VQbGFuby91cGRhdGVSZXZpc2lvbk5hbWVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNldFN0YWdpbmdGbGFnKGRhdGE6IHsgcmV2aXNpb25JZDogc3RyaW5nOyBpc1N0YWdpbmc6IGJvb2xlYW4gfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbWFuYWdlUGxhbm8vc2V0U3RhZ2luZ0ZsYWdgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFNoZWxmRGV0YWlscyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc2hlbGZQcm9kdWN0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub1N0b3JlTGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0UGxhbm9TdG9yZUxpc3Q/Y2xpZW50SWQ9JHtkYXRhfWAsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsU3RvcmVzKGNsaWVudElkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0QWxsU3RvcmVzP2NsaWVudElkPSR7Y2xpZW50SWR9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZUZsb29yc0xpc3Qoc3RvcmVJZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldFN0b3JlRmxvb3JzTGlzdD9zdG9yZUlkPSR7c3RvcmVJZH1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVBsYW5vRnJvbUNBRChcclxuICAgIGZpbGU6IEZpbGUsXHJcbiAgICBzdG9yZUlkOiBzdHJpbmcsXHJcbiAgICBzdG9yZU5hbWU6IHN0cmluZyxcclxuICAgIGZsb29yTnVtYmVyOiBudW1iZXIsXHJcbiAgKSB7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG5cclxuICAgIGZvcm1EYXRhLmFwcGVuZChcImZpbGVcIiwgZmlsZSk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJzdG9yZUlkXCIsIHN0b3JlSWQpO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKFwiZmxvb3JOdW1iZXJcIiwgZmxvb3JOdW1iZXIudG9TdHJpbmcoKSk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJzdG9yZU5hbWVcIiwgc3RvcmVOYW1lKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9vbmJvYXJkUGxhbm8vY3JlYXRlUGxhbm9Gcm9tQ0FEYCxcclxuICAgICAgZm9ybURhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlRW1wdHlQbGFubyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L29uYm9hcmRQbGFuby9jcmVhdGVFbXB0eVBsYW5vYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRBbGxQbGFub0lkcyhjbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3NjcmlwdC9nZXRBbGxQbGFub0lkc00/Y2xpZW50SWQ9JHtjbGllbnRJZH1gLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZpbmRGaXh0dXJlQWkoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL2ZpbmRGaXh0dXJlQUlgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZpbmRGaXh0dXJlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9maW5kRml4dHVyZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmVwbGFjZUZpeHR1cmUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL3JlcGxhY2VGaXh0dXJlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXBsYWNlQnJhbmRMaXN0KGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvZ2V0UmVwbGFjZUJyYW5kTGlzdGAsXHJcbiAgICAgIHsgY2xpZW50SWQgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXBsYWNlVm1MaXN0KGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvZ2V0UmVwbGFjZVZtTGlzdGAsXHJcbiAgICAgIHsgY2xpZW50SWQgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub0lkKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9nZXRQbGFub0lkYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGaXh0dXJlRGF0YShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvdXBkYXRlRml4dHVyZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXBwcm92ZVBsYW5vTGF5b3V0KGZsb29ySWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vb25ib2FyZFBsYW5vL2FwcHJvdmVQbGFub0xheW91dGAsXHJcbiAgICAgIHsgZmxvb3JJZDogZmxvb3JJZCB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydE1CUVNoZWV0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc2NyaXB0L2dldFBsYW5vRXhjZWxgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICB7IHJlc3BvbnNlVHlwZTogXCJhcnJheWJ1ZmZlclwiIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0UGxhbm9PcmRlclNoZWV0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vc2NyaXB0L2dldFBsYW5vT3JkZXJFeGNlbGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIHsgcmVzcG9uc2VUeXBlOiBcImFycmF5YnVmZmVyXCIgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBBc3luYy9TMyB2YXJpYW50czogc2VydmVyIHF1ZXVlcyB0aGUgam9iLCByZXR1cm5zIDIwMiB3aXRoIHsgam9iSWQgfSwgYW5kXHJcbiAgLy8gc2F2ZXMgdGhlIEV4Y2VsIHRvIFMzLiBVc2UgZ2V0UGxhbm9FeHBvcnRKb2Ioam9iSWQpIHRvIHBvbGwgc3RhdHVzLlxyXG4gIGV4cG9ydE1CUVNoZWV0QXN5bmMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zY3JpcHQvZ2V0UGxhbm9FeGNlbGAsXHJcbiAgICAgIHsgLi4uZGF0YSwgc2F2ZVRvUzM6IHRydWUgfSxcclxuICAgICAgeyBvYnNlcnZlOiBcInJlc3BvbnNlXCIgfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRQbGFub09yZGVyU2hlZXRBc3luYyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3NjcmlwdC9nZXRQbGFub09yZGVyRXhjZWxgLFxyXG4gICAgICB7IC4uLmRhdGEsIHNhdmVUb1MzOiB0cnVlIH0sXHJcbiAgICAgIHsgb2JzZXJ2ZTogXCJyZXNwb25zZVwiIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGxhbm9FeHBvcnRKb2Ioam9iSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9zY3JpcHQvZ2V0UGxhbm9FeHBvcnRKb2IvJHtlbmNvZGVVUklDb21wb25lbnQoXHJcbiAgICAgICAgam9iSWQsXHJcbiAgICAgICl9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBydW5BbG9jYXRpb24oZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9vbmJvYXJkUGxhbm8vcnVuQWxvY2F0aW9uYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBydW5Mb29rc0FsbG9jYXRpb24oZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9vbmJvYXJkUGxhbm8vcnVuTG9va3NBbGxvY2F0aW9uYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRJdm1Db252ZXJzaW9uQWxpYXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L29uYm9hcmRQbGFuby9pdm1Db252ZXJzaW9uQWxpYXNgLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEFsbEZpbmRSZXBsYWNlRGF0YShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvZ2V0QWxsRmluZFJlcGxhY2VEYXRhYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaW5kUmVwbGFjZURhdGFCeUlkKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9nZXRGaW5kUmVwbGFjZURhdGFCeUlkYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzYXZlQXNEcmFmdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvc2F2ZUFzRHJhZnRgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlT3JDbHVzdGVyTGlzdChkYXRhOiB7IHNlYXJjaE1vZGU6IFwic3RvcmVcIiB8IFwiY2x1c3RlclwiIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvZ2V0U3RvcmVPckNsdXN0ZXJMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBiYXRjaEZpbmRSZXBsYWNlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9iYXRjaEZpbmRSZXBsYWNlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhcHByb3ZlUmVwbGFjZShkYXRhOiB7XHJcbiAgICBmaW5kUmVwbGFjZUlkOiBzdHJpbmc7XHJcbiAgICBzdG9yZXM/OiBhbnlbXTtcclxuICAgIHNjaGVkdWxlPzogYm9vbGVhbjtcclxuICAgIHNjaGVkdWxlRGF0ZT86IHN0cmluZyB8IG51bGw7XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcGxhbm9BSS9hcHByb3ZlUmVwbGFjZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQmF0Y2hQcm9ncmVzcyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvdXBkYXRlQmF0Y2hQcm9ncmVzc2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2FuY2VsRmluZFJlcGxhY2UoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL2NhbmNlbEZpbmRSZXBsYWNlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVGaW5kUmVwbGFjZUFpKGRhdGE6IHsgaWQ6IHN0cmluZyB9KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9wbGFub0FJL2RlbGV0ZUZpbmRSZXBsYWNlQWlgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJldm9rZUZpbmRSZXBsYWNlKGRhdGE6IHsgZmluZFJlcGxhY2VJZDogc3RyaW5nIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3BsYW5vQUkvcmV2b2tlRmluZFJlcGxhY2VgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVN0b3JlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuc3RvcmVBcGlVcmx9L2NyZWF0ZS1zdG9yZWAsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgc3BvY0VtYWlsQ2hlY2soZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5zdG9yZUFwaVVybH0vc3BvY0VtYWlsQ2hlY2tgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUluZnJhVGlja2V0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudGlja2V0c0FwaVVybH0vaW5mcmEvY3JlYXRlVGlja2V0YCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRGb290ZmFsbERldGFpbHMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRGaXh0dXJlRm9vdGZhbGxgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRvcFBlcmZvcm1pbmdab25lcyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2dldFRvcFBlcmZvcm1pbmdab25lc2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVFbmdhZ2VycyhkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0U3RvcmVFbmdhZ2Vyc2AsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVGaXh0dXJlRW5nYWdlcnMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRTdG9yZUZpeHR1cmVFbmdhZ2Vyc2AsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmVGaXh0dXJlRm9vdGZhbGwoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRTdG9yZUZpeHR1cmVGb290ZmFsbGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gVk0gQWxsb2NhdGlvbiBFbmdpbmVcclxuICBnZXRWbVJ1bGVMaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdm1BbGxvY2F0aW9uRW5naW5lL2dldFJ1bGVMaXN0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRWbVJ1bGVEZXRhaWxzKHJ1bGVJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3ZtQWxsb2NhdGlvbkVuZ2luZS9nZXRSdWxlRGV0YWlsc2AsXHJcbiAgICAgIHsgcGFyYW1zOiB7IHJ1bGVJZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlVm1SdWxlKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdm1BbGxvY2F0aW9uRW5naW5lL2NyZWF0ZVJ1bGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVZtUnVsZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3ZtQWxsb2NhdGlvbkVuZ2luZS91cGRhdGVSdWxlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVWbVJ1bGUocnVsZUlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdm1BbGxvY2F0aW9uRW5naW5lL2RlbGV0ZVJ1bGUvJHtydWxlSWR9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhY3RpdmF0ZVZtUnVsZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3ZtQWxsb2NhdGlvbkVuZ2luZS9hY3RpdmF0ZVJ1bGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlYWN0aXZhdGVWbVJ1bGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS92bUFsbG9jYXRpb25FbmdpbmUvZGVhY3RpdmF0ZVJ1bGVgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGR1cGxpY2F0ZVZtUnVsZShkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3ZtQWxsb2NhdGlvbkVuZ2luZS9kdXBsaWNhdGVSdWxlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3NpZ25WbVJ1bGVTdG9yZXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS92bUFsbG9jYXRpb25FbmdpbmUvYXNzaWduU3RvcmVzYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRBY3RpdmVWbVJ1bGVGb3JTdG9yZShzdG9yZUlkOiBzdHJpbmcsIGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdm1BbGxvY2F0aW9uRW5naW5lL2dldEFjdGl2ZVJ1bGVGb3JTdG9yZWAsXHJcbiAgICAgIHsgcGFyYW1zOiB7IHN0b3JlSWQsIGNsaWVudElkIH0gfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaXh0dXJlTnVtYmVyc0J5U3RvcmUoXHJcbiAgICBzdG9yZU5hbWU6IHN0cmluZyxcclxuICAgIGNsaWVudElkOiBzdHJpbmcsXHJcbiAgICB0YXNrVHlwZTogXCJmaXh0dXJlXCIgfCBcInpvbmVWZXJpZmljYXRpb25cIiA9IFwiZml4dHVyZVwiLFxyXG4gICkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL2dldEZpeHR1cmVOdW1iZXJzQnlTdG9yZWAsXHJcbiAgICAgIHsgcGFyYW1zOiB7IHN0b3JlTmFtZSwgY2xpZW50SWQsIHRhc2tUeXBlIH0gfSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBhbGxvd0VkaXRXaXRob3V0UmVtb3ZpbmdSZXNwb25zZShkYXRhOiB7XHJcbiAgICBzdG9yZU5hbWVzOiBzdHJpbmdbXTtcclxuICAgIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgICB0YXNrVHlwZTogXCJmaXh0dXJlXCIgfCBcInpvbmVWZXJpZmljYXRpb25cIjtcclxuICAgIGZpeHR1cmVOdW1iZXJzPzogbnVtYmVyW107XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFzay9hbGxvd0VkaXRXaXRob3V0UmVtb3ZpbmdSZXNwb25zZWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rml4dHVyZURldGFpbHNCeVN0b3JlKHN0b3JlTmFtZTogc3RyaW5nLCBjbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2svZ2V0Rml4dHVyZURldGFpbHNCeVN0b3JlYCxcclxuICAgICAgeyBwYXJhbXM6IHsgc3RvcmVOYW1lLCBjbGllbnRJZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRml4dHVyZVR5cGUoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL3VwZGF0ZUZpeHR1cmVUeXBlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZUZpeHR1cmVzRm9yUmVvcmRlcihzdG9yZU5hbWU6IHN0cmluZywgY2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9nZXRTdG9yZUZpeHR1cmVzRm9yUmVvcmRlcmAsXHJcbiAgICAgIHsgcGFyYW1zOiB7IHN0b3JlTmFtZSwgY2xpZW50SWQgfSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJlb3JkZXJTdG9yZUZpeHR1cmVOdW1iZXJzKGRhdGE6IHsgc3RvcmVOYW1lOiBzdHJpbmc7IGNsaWVudElkOiBzdHJpbmcgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcmVvcmRlclN0b3JlRml4dHVyZU51bWJlcnNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUZpeHR1cmVOdW1iZXJNYW51YWwoZGF0YToge1xyXG4gICAgZml4dHVyZUlkOiBzdHJpbmc7XHJcbiAgICBmaXh0dXJlTnVtYmVyPzogbnVtYmVyO1xyXG4gICAgYXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyPzogbnVtYmVyO1xyXG4gIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3VwZGF0ZUZpeHR1cmVOdW1iZXJNYW51YWxgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZVRhc2tGb3JTdG9yZXMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS90YXNrL2RlbGV0ZVRhc2tGb3JTdG9yZXNgLFxyXG4gICAgICBkYXRhLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEZsb29yc1dpdGhTdGF0dXMoc3RvcmVOYW1lOiBzdHJpbmcsIGNsaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vdGFzay9nZXRGbG9vcnNXaXRoU3RhdHVzYCxcclxuICAgICAgeyBwYXJhbXM6IHsgc3RvcmVOYW1lLCBjbGllbnRJZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbW92ZVN0b3JlQnVja2V0KGRhdGE6IHtcclxuICAgIGZsb29ySWQ6IHN0cmluZztcclxuICAgIHRhcmdldFN0YXR1czogXCJkcmFmdFwiIHwgXCJhbGxvY2F0aW9uUGVuZGluZ1wiIHwgXCJjb21wbGV0ZWRcIjtcclxuICAgIGNsZWFyTGF5b3V0VGFza3M6IGJvb2xlYW47XHJcbiAgICBjbGVhckZpeHR1cmVUYXNrczogYm9vbGVhbjtcclxuICAgIGNsZWFyWm9uZVRhc2tzOiBib29sZWFuO1xyXG4gIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3Rhc2svbW92ZVN0b3JlQnVja2V0YCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzd2FwRml4dHVyZVRlbXBsYXRlKGRhdGE6IHtcclxuICAgIGRhdGE6IHsgc3RvcmVOYW1lOiBzdHJpbmc7IGZpeHR1cmVOdW1iZXI6IG51bWJlcjsgdGVtcGxhdGVOYW1lOiBzdHJpbmcgfVtdO1xyXG4gIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L3NjcmlwdC9zd2FwRml4dHVyZVRlbXBsYXRlYCxcclxuICAgICAgZGF0YSxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRQbGFub0RhdGFTY2hlbWEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vZ2V0UGxhbm9EYXRhU2NoZW1hYCk7XHJcbiAgfVxyXG5cclxuICBnZXRDYWRGaWxlcyhzdG9yZU5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L29uYm9hcmRQbGFuby9jYWRGaWxlc2AsIHtcclxuICAgICAgcGFyYW1zOiB7IHN0b3JlTmFtZSB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBydW5QbGFub0RhdGFRdWVyeShkYXRhOiB7XHJcbiAgICBjbGllbnRJZDogc3RyaW5nO1xyXG4gICAgc3RvcmVOYW1lczogc3RyaW5nW107XHJcbiAgICBmaWx0ZXJzOiB7IGZpZWxkOiBzdHJpbmc7IG9wZXJhdG9yOiBzdHJpbmc7IHZhbHVlOiBhbnkgfVtdO1xyXG4gICAgZmlsdGVyQ29tYmluYXRvcjogXCJBTkRcIiB8IFwiT1JcIjtcclxuICAgIHNlbGVjdGlvbk1vZGU6IFwiYWxsXCIgfCBcImZpcnN0TlwiO1xyXG4gICAgbGltaXRQZXJTdG9yZT86IG51bWJlcjtcclxuICAgIGNvbHVtbnM6IHsga2V5OiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nIH1bXTtcclxuICAgIGluY2x1ZGVOb3RGb3VuZFJvd3M/OiBib29sZWFuO1xyXG4gIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcnVuUGxhbm9EYXRhUXVlcnlgLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHJ1blZtUGxhY2VtZW50UXVlcnkoZGF0YToge1xyXG4gICAgY2xpZW50SWQ6IHN0cmluZztcclxuICAgIHN0b3JlTmFtZXM6IHN0cmluZ1tdO1xyXG4gICAgdm1OYW1lOiBzdHJpbmc7XHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vcnVuVm1QbGFjZW1lbnRRdWVyeWAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gTG9vayBQbGFubyBDb2xsZWN0aW9uc1xyXG4gIGdldExvb2tQbGFub0NvbGxlY3Rpb25MaXN0KGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbG9va1BsYW5vQ29sbGVjdGlvbi9nZXRDb2xsZWN0aW9uTGlzdGAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9va1BsYW5vQ29sbGVjdGlvbkRldGFpbHMoY29sbGVjdGlvbklkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgJHt0aGlzLnN0b3JlQnVpbGRlckFwaVVybH0vbG9va1BsYW5vQ29sbGVjdGlvbi9nZXRDb2xsZWN0aW9uRGV0YWlsc2AsXHJcbiAgICAgIHsgcGFyYW1zOiB7IGNvbGxlY3Rpb25JZCB9IH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlTG9va1BsYW5vQ29sbGVjdGlvbihkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2xvb2tQbGFub0NvbGxlY3Rpb24vY3JlYXRlQ29sbGVjdGlvbmAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTG9va1BsYW5vQ29sbGVjdGlvbihkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCR7dGhpcy5zdG9yZUJ1aWxkZXJBcGlVcmx9L2xvb2tQbGFub0NvbGxlY3Rpb24vdXBkYXRlQ29sbGVjdGlvbmAsXHJcbiAgICAgIGRhdGEsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlTG9va1BsYW5vQ29sbGVjdGlvbihjb2xsZWN0aW9uSWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9sb29rUGxhbm9Db2xsZWN0aW9uL2RlbGV0ZUNvbGxlY3Rpb24vJHtjb2xsZWN0aW9uSWR9YCxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVMb29rUGxhbm9Db2xsZWN0aW9uKGNvbGxlY3Rpb25JZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIGAke3RoaXMuc3RvcmVCdWlsZGVyQXBpVXJsfS9sb29rUGxhbm9Db2xsZWN0aW9uL2R1cGxpY2F0ZUNvbGxlY3Rpb25gLFxyXG4gICAgICB7IGNvbGxlY3Rpb25JZCB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=