verben-workflow-ui 0.5.58 → 0.5.60

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.
@@ -34,7 +34,7 @@ export class WorkflowDataService {
34
34
  return this.httpService.get(url, this.envSvc.environment.AuthAPI);
35
35
  }
36
36
  saveWorkflows(requests) {
37
- const url = `${this.WORKFLOW_MODEL_BASE_PATH}/xSaveWorkflows`;
37
+ const url = `${this.WORKFLOW_MODEL_BASE_PATH}/SaveWorkflows`;
38
38
  // console.log('Saving workflows', requests);
39
39
  return this.httpService.post(url, requests, this.envSvc.environment.WorkFlowAPI);
40
40
  }
@@ -165,4 +165,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
165
165
  providedIn: 'root',
166
166
  }]
167
167
  }], ctorParameters: () => [{ type: i1.HttpWebRequestService }, { type: i1.EnvironmentService }] });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy93b3JrZmxvdy1kZXNpZ25lci93b3JrZmxvdy1kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQThDLFdBQVcsRUFBMEMsY0FBYyxFQUFFLE1BQU0sRUFBTyxrQkFBa0IsRUFBMkIsTUFBTSxtQ0FBbUMsQ0FBQzs7O0FBTTlOLE1BQU0sT0FBTyxtQkFBbUI7SUFXcEI7SUFDQTtJQVhPLHdCQUF3QixHQUFHLFVBQVUsQ0FBQztJQUN0QyxvQkFBb0IsR0FBRyxNQUFNLENBQUM7SUFDOUIsb0JBQW9CLEdBQUcsTUFBTSxDQUFDO0lBQzlCLDBCQUEwQixHQUFHLFlBQVksQ0FBQztJQUMxQyxrQkFBa0IsR0FBRyxRQUFRLENBQUM7SUFDOUIsY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUN4QixxQkFBcUIsR0FBRyxPQUFPLENBQUM7SUFDaEMsK0JBQStCLEdBQUcsUUFBUSxDQUFDO0lBRTVELFlBQ1UsV0FBa0MsRUFDbEMsTUFBMEI7UUFEMUIsZ0JBQVcsR0FBWCxXQUFXLENBQXVCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQW9CO0lBQ2hDLENBQUM7SUFFTCxvQkFBb0IsQ0FDbEIsS0FBYSxFQUNiLE9BQWUsQ0FBQyxFQUNoQixRQUFnQixDQUFDLEVBQ2pCLFlBQW9CLFdBQVcsRUFDL0IsWUFBb0IsS0FBSztRQUV6QixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsMEJBQTBCLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLFNBQVMsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUN6SCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBNkIsQ0FBQztJQUMvRCxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWUsQ0FBQyxFQUFFLFFBQWdCLENBQUM7UUFDOUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsd0JBQXdCLGlCQUFpQixJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDN0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FDekIsR0FBRyxFQUNILElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FDUixDQUFDO0lBQ2hDLENBQUM7SUFFRCxRQUFRLENBQUMsT0FBZSxDQUFDLEVBQUUsUUFBZ0IsQ0FBQztRQUMxQyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsYUFBYSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FDekIsR0FBRyxFQUNILElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FDWixDQUFDO0lBQzVCLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBZSxDQUFDLEVBQUUsUUFBZ0IsQ0FBQztRQUN6QyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsWUFBWSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDcEUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FDekIsR0FBRyxFQUNILElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FDVCxDQUFDO0lBQzNCLENBQUM7SUFFRCxhQUFhLENBQUMsUUFBNkI7UUFDekMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsd0JBQXdCLGlCQUFpQixDQUFDO1FBQzlELDZDQUE2QztRQUM3QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUMxQixHQUFHLEVBQ0gsUUFBUSxFQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FDcEMsQ0FBQztJQUNKLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxRQUFpQztRQUNwRCxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyx3QkFBd0Isc0JBQXNCLENBQUM7UUFDbkUsNkNBQTZDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQzFCLEdBQUcsRUFDSCxRQUFRLEVBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUNwQyxDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWUsQ0FBQyxRQUErQjtRQUM3QyxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQywwQkFBMEIsa0JBQWtCLENBQUM7UUFDakUsNkNBQTZDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQzFCLEdBQUcsRUFDSCxRQUFRLEVBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUNwQyxDQUFDO0lBQ0osQ0FBQztJQUVELGlCQUFpQixDQUFDLFFBQThCO1FBQzlDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixtQkFBbUIsQ0FBQztRQUNsRSw2Q0FBNkM7UUFDN0MsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDMUIsR0FBRyxFQUNILFFBQVEsRUFDUixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQ3BDLENBQUM7SUFDSixDQUFDO0lBRUQseUJBQXlCLENBQ3ZCLE1BQXVELEVBQ3ZELE9BQWUsQ0FBQyxFQUNoQixRQUFnQixDQUFDLEVBQ2pCLFlBQW9CLEtBQUs7UUFFekIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsMEJBQTBCLHNCQUFzQixJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDcEYsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1RCxjQUFjLEVBQUUsSUFBSTtZQUNwQixhQUFhLEVBQUUsSUFBSTtZQUNuQixZQUFZLEVBQUUsR0FBRztZQUNqQixXQUFXLEVBQUUsS0FBSztZQUNsQixJQUFJLEVBQUUsUUFBUTtZQUNkLFFBQVEsRUFBRSxLQUFLO1lBQ2YsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsU0FBUztZQUNmLHNCQUFzQjtTQUN2QixDQUFDLENBQUMsQ0FBQztRQUNKLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBK0IsQ0FBQztJQUMzRSxDQUFDO0lBRUQsc0JBQXNCLENBQ3BCLEtBQWEsRUFDYixPQUFlLENBQUMsRUFDaEIsUUFBZ0IsQ0FBQyxFQUNqQixZQUFvQixXQUFXLEVBQy9CLFlBQW9CLEtBQUs7UUFFekIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsMEJBQTBCLDRCQUE0QixLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxTQUFTLElBQUksU0FBUyxFQUFFLENBQUM7UUFDN0gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQStCLENBQUM7SUFDakUsQ0FBQztJQUVELGtCQUFrQixDQUNoQixPQUFlLENBQUMsRUFDaEIsUUFBZ0IsQ0FBQztRQUVqQixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsdUJBQXVCLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUM3RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUN6QixHQUFHLEVBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUNILENBQUM7SUFDdEMsQ0FBQztJQUVELG1CQUFtQixDQUNqQixPQUFlLENBQUMsRUFDaEIsUUFBZ0IsQ0FBQztRQUVqQixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLHFCQUFxQixDQUFDO1FBQ3hELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQ3pCLEdBQUcsQ0FFK0IsQ0FBQztJQUN2QyxDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQW9CO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixnQkFBZ0IsQ0FBQztRQUMxRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUMxQixHQUFHLEVBQ0gsUUFBUSxFQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FDcEMsQ0FBQztJQUNKLENBQUM7SUFFRCxtQkFBbUIsQ0FDakIsT0FBZSxDQUFDLEVBQ2hCLFFBQWdCLENBQUM7UUFFakIsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsK0JBQStCLHNCQUFzQixJQUFJLElBQUksS0FBSyxpQkFBaUIsQ0FBQztRQUN4RyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBbUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsbURBQW1EO0lBQzNDLGtCQUFrQixDQUFDLElBQVk7UUFDckMsdURBQXVEO1FBQ3ZELE1BQU0sUUFBUSxHQUFhO1lBQ3pCLEVBQUUsRUFBRSxjQUFjO1lBQ2xCLElBQUksRUFBRSxJQUFJO1lBQ1YsUUFBUSxFQUFFLFVBQVU7WUFDcEIsRUFBRSxFQUFFLGNBQWM7WUFDbEIsV0FBVyxFQUFFLGtCQUFrQjtZQUMvQixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ3JCLFNBQVMsRUFBRSxXQUFXLENBQUMsU0FBUztZQUNoQyxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLFdBQVcsRUFBRSxtQ0FBbUM7WUFDaEQsY0FBYyxFQUFFLEVBQUU7WUFDbEIsY0FBYyxFQUFFLGtCQUFrQixDQUFDLFNBQVM7WUFDNUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLE9BQU8sRUFBRSxFQUFFO1lBQ1gsS0FBSyxFQUFFO2dCQUNMO29CQUNFLEVBQUUsRUFBRSxRQUFRO29CQUNaLElBQUksRUFBRSxRQUFRO29CQUNkLFFBQVEsRUFBRSxVQUFVO29CQUNwQixFQUFFLEVBQUUsUUFBUTtvQkFDWixXQUFXLEVBQUUsa0JBQWtCO29CQUMvQixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7b0JBQ3JCLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtvQkFDckIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxTQUFTO29CQUNoQyxRQUFRLEVBQUUsY0FBYztvQkFDeEIsSUFBSSxFQUFFLEVBQUU7b0JBQ1IsUUFBUSxFQUFFLENBQUM7b0JBQ1gsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO29CQUMzQixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUU7aUJBQ25DO2FBQ0Y7WUFDRCxNQUFNLEVBQUU7Z0JBQ047b0JBQ0UsRUFBRSxFQUFFLFdBQVc7b0JBQ2YsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLFFBQVEsRUFBRSxVQUFVO29CQUNwQixFQUFFLEVBQUUsV0FBVztvQkFDZixXQUFXLEVBQUUsa0JBQWtCO29CQUMvQixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7b0JBQ3JCLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtvQkFDckIsU0FBUyxFQUFFLFdBQVcsQ0FBQyxTQUFTO29CQUNoQyxRQUFRLEVBQUUsY0FBYztvQkFDeEIsSUFBSSxFQUFFLGVBQWU7b0JBQ3JCLFdBQVcsRUFBRSxnQkFBZ0I7b0JBQzdCLFFBQVEsRUFBRSxFQUFFO29CQUNaLFVBQVUsRUFBRSxFQUFFO29CQUNkLFNBQVMsRUFBRSxjQUFjLENBQUMsSUFBSTtvQkFDOUIsWUFBWSxFQUFFLENBQUM7b0JBQ2YsVUFBVSxFQUFFLEtBQUs7b0JBQ2pCLFlBQVksRUFBRSxJQUFJO29CQUNsQixXQUFXLEVBQUUsS0FBSztvQkFDbEIsSUFBSSxFQUFFLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLEVBQUU7b0JBQ1Isb0JBQW9CLEVBQUUsS0FBSztvQkFDM0IsY0FBYyxFQUFFLGtCQUFrQixDQUFDLFNBQVM7b0JBQzVDLFdBQVcsRUFBRSxFQUFFO29CQUNmLFFBQVEsRUFBRSxRQUFRO29CQUNsQixXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7b0JBQzlCLFlBQVksRUFBRSxLQUFLO2lCQUNwQjthQUNGO1NBQ0YsQ0FBQztRQUVGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7d0dBck9VLG1CQUFtQjs0R0FBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RvclRhZywgRXNjYWxhdGlvbiwgRmxvd2FibGVTdGF0dXMsIEZvcm0sIE9iamVjdFN0YXRlLCBPcGVyYXRpb25BY3Rpb24sIFBhZ2VkLCBSZXBvcnRTY2hlZHVsZSwgU3RhZ2VBY3RvclJ1bGUsIFN0YXR1cywgVGFnLCBUYXNrQXNzaWdubWVudFR5cGUsIFdvcmtmbG93LCBXb3JrZmxvd1N0YWdlIH0gZnJvbSAndmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvbW9kZWxzJztcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSwgSHR0cFdlYlJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAndmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvc2VydmljZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dEYXRhU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgV09SS0ZMT1dfTU9ERUxfQkFTRV9QQVRIID0gJ1dvcmtmbG93JztcbiAgcHJpdmF0ZSByZWFkb25seSBBVVRIX01PREVMX0JBU0VfUEFUSCA9ICdVc2VyJztcbiAgcHJpdmF0ZSByZWFkb25seSBGT1JNX01PREVMX0JBU0VfUEFUSCA9ICdGb3JtJztcbiAgcHJpdmF0ZSByZWFkb25seSBFU0NBTEFUSU9OX01PREVMX0JBU0VfUEFUSCA9ICdFc2NhbGF0aW9uJztcbiAgcHJpdmF0ZSByZWFkb25seSBSU19NT0RFTF9CQVNFX1BBVEggPSAnUmVwb3J0JztcbiAgcHJpdmF0ZSByZWFkb25seSBVVElMX0JBU0VfUEFUSCA9ICdVdGlsJztcbiAgcHJpdmF0ZSByZWFkb25seSBBQ1RPUl9NT0RFTF9CQVNFX1BBVEggPSAnQWN0b3InO1xuICBwcml2YXRlIHJlYWRvbmx5IEZMT1dBQkxFX1NUQVRVU19NT0RFTF9CQVNFX1BBVEggPSAnU3RhdHVzJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwV2ViUmVxdWVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbnZTdmM6IEVudmlyb25tZW50U2VydmljZVxuICApIHsgfVxuXG4gIGdldFdvcmtmbG93V2l0aFBhcmFtKFxuICAgIHBhcmFtOiBzdHJpbmcsXG4gICAgc2tpcDogbnVtYmVyID0gMCxcbiAgICBsaW1pdDogbnVtYmVyID0gMSxcbiAgICBzb3J0UGFyYW06IHN0cmluZyA9ICdDcmVhdGVkQXQnLFxuICAgIHNvcnRPcmRlcjogc3RyaW5nID0gJ0FzYydcbiAgKTogUHJvbWlzZTxQYWdlZDxXb3JrZmxvdz4+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLldPUktGTE9XX01PREVMX0JBU0VfUEFUSH0vR2V0V29ya2Zsb3dzV2l0aFBhcmFtLyR7cGFyYW19LyR7c2tpcH0vJHtsaW1pdH0vJHtzb3J0UGFyYW19LyR7c29ydE9yZGVyfWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0KHVybCkgYXMgUHJvbWlzZTxQYWdlZDxXb3JrZmxvdz4+O1xuICB9XG5cbiAgZ2V0V29ya2Zsb3dzKHNraXA6IG51bWJlciA9IDAsIGxpbWl0OiBudW1iZXIgPSAwKTogUHJvbWlzZTxQYWdlZDxXb3JrZmxvdz4+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLldPUktGTE9XX01PREVMX0JBU0VfUEFUSH0vR2V0V29ya2Zsb3dzLyR7c2tpcH0vJHtsaW1pdH1gO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldChcbiAgICAgIHVybCxcbiAgICAgIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LldvcmtGbG93QVBJXG4gICAgKSBhcyBQcm9taXNlPFBhZ2VkPFdvcmtmbG93Pj47XG4gIH1cblxuICBnZXRGb3Jtcyhza2lwOiBudW1iZXIgPSAwLCBsaW1pdDogbnVtYmVyID0gMCk6IFByb21pc2U8UGFnZWQ8Rm9ybT4+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLkZPUk1fTU9ERUxfQkFTRV9QQVRIfS9HZXRGb3Jtcy8ke3NraXB9LyR7bGltaXR9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXQoXG4gICAgICB1cmwsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5Xb3JrRmxvd0FQSVxuICAgICkgYXMgUHJvbWlzZTxQYWdlZDxGb3JtPj47XG4gIH1cblxuICBnZXRUYWdzKHNraXA6IG51bWJlciA9IDAsIGxpbWl0OiBudW1iZXIgPSAwKTogUHJvbWlzZTxQYWdlZDxUYWc+PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5BVVRIX01PREVMX0JBU0VfUEFUSH0vR2V0VGFncy8ke3NraXB9LyR7bGltaXR9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXQoXG4gICAgICB1cmwsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BdXRoQVBJXG4gICAgKSBhcyBQcm9taXNlPFBhZ2VkPFRhZz4+O1xuICB9XG5cbiAgc2F2ZVdvcmtmbG93cyhyZXF1ZXN0czogUGFydGlhbDxXb3JrZmxvdz5bXSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5XT1JLRkxPV19NT0RFTF9CQVNFX1BBVEh9L3hTYXZlV29ya2Zsb3dzYDtcbiAgICAvLyBjb25zb2xlLmxvZygnU2F2aW5nIHdvcmtmbG93cycsIHJlcXVlc3RzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5wb3N0KFxuICAgICAgdXJsLFxuICAgICAgcmVxdWVzdHMsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5Xb3JrRmxvd0FQSVxuICAgICk7XG4gIH1cblxuICBkZWxldGVXb3JrZmxvd1N0YWdlcyhyZXF1ZXN0czogV29ya2Zsb3dTdGFnZVsnQ29kZSddW10pOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuV09SS0ZMT1dfTU9ERUxfQkFTRV9QQVRIfS9EZWxldGVXb3JrZmxvd1N0YWdlYDtcbiAgICAvLyBjb25zb2xlLmxvZygnU2F2aW5nIHdvcmtmbG93cycsIHJlcXVlc3RzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5wb3N0KFxuICAgICAgdXJsLFxuICAgICAgcmVxdWVzdHMsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5Xb3JrRmxvd0FQSVxuICAgICk7XG4gIH1cblxuICBzYXZlRXNjYWxhdGlvbnMocmVxdWVzdHM6IFBhcnRpYWw8RXNjYWxhdGlvbj5bXSk6IFByb21pc2U8RXNjYWxhdGlvbltdPiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5FU0NBTEFUSU9OX01PREVMX0JBU0VfUEFUSH0vU2F2ZUVzY2FsYXRpb25zYDtcbiAgICAvLyBjb25zb2xlLmxvZygnU2F2aW5nIHdvcmtmbG93cycsIHJlcXVlc3RzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5wb3N0KFxuICAgICAgdXJsLFxuICAgICAgcmVxdWVzdHMsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5Xb3JrRmxvd0FQSVxuICAgICk7XG4gIH1cblxuICBkZWxldGVFc2NhbGF0aW9ucyhyZXF1ZXN0czogRXNjYWxhdGlvblsnQ29kZSddW10pOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuRVNDQUxBVElPTl9NT0RFTF9CQVNFX1BBVEh9L0RlbGV0ZUVzY2FsYXRpb25gO1xuICAgIC8vIGNvbnNvbGUubG9nKCdTYXZpbmcgd29ya2Zsb3dzJywgcmVxdWVzdHMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QoXG4gICAgICB1cmwsXG4gICAgICByZXF1ZXN0cyxcbiAgICAgIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LldvcmtGbG93QVBJXG4gICAgKTtcbiAgfVxuXG4gIHNlYXJjaEVzY2FsYXRpb25XaXRoUGFyYW0oXG4gICAgcGFyYW1zOiBQaWNrPEVzY2FsYXRpb24sICdXb3JrZmxvdycgfCAnU3RhZ2UnIHwgJ1R5cGUnPixcbiAgICBza2lwOiBudW1iZXIgPSAwLFxuICAgIGxpbWl0OiBudW1iZXIgPSAxLFxuICAgIHNvcnRPcmRlcjogc3RyaW5nID0gJ0FzYydcbiAgKTogUHJvbWlzZTxQYWdlZDxFc2NhbGF0aW9uPj4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuRVNDQUxBVElPTl9NT0RFTF9CQVNFX1BBVEh9L1NlYXJjaEVzY2FsYXRpb25zLyR7c2tpcH0vJHtsaW1pdH1gO1xuICAgIGNvbnN0IHBheWxvYWQgPSBPYmplY3QuZW50cmllcyhwYXJhbXMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgSXNBdXRvRnJvbURhdGU6IHRydWUsXG4gICAgICBJc0F1dG9FbmREYXRlOiB0cnVlLFxuICAgICAgUHJvcGVydHlOYW1lOiBrZXksXG4gICAgICBFbnRpdHlWYWx1ZTogdmFsdWUsXG4gICAgICBUeXBlOiAnU3RyaW5nJyxcbiAgICAgIE9wZXJhdG9yOiAnQW5kJyxcbiAgICAgIFNpZ246ICdFUScsXG4gICAgICBTb3J0OiBzb3J0T3JkZXIsXG4gICAgICAvLyBGaWVsZHM6IFsnc3RyaW5nJ10sXG4gICAgfSkpO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QodXJsLCBwYXlsb2FkKSBhcyBQcm9taXNlPFBhZ2VkPEVzY2FsYXRpb24+PjtcbiAgfVxuXG4gIGdldEVzY2FsYXRpb25XaXRoUGFyYW0oXG4gICAgcGFyYW06IHN0cmluZyxcbiAgICBza2lwOiBudW1iZXIgPSAwLFxuICAgIGxpbWl0OiBudW1iZXIgPSAxLFxuICAgIHNvcnRQYXJhbTogc3RyaW5nID0gJ0NyZWF0ZWRBdCcsXG4gICAgc29ydE9yZGVyOiBzdHJpbmcgPSAnQXNjJ1xuICApOiBQcm9taXNlPFBhZ2VkPEVzY2FsYXRpb24+PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5FU0NBTEFUSU9OX01PREVMX0JBU0VfUEFUSH0vR2V0RXNjYWxhdGlvbnNXaXRoUGFyYW0vJHtwYXJhbX0vJHtza2lwfS8ke2xpbWl0fS8ke3NvcnRQYXJhbX0vJHtzb3J0T3JkZXJ9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXQodXJsKSBhcyBQcm9taXNlPFBhZ2VkPEVzY2FsYXRpb24+PjtcbiAgfVxuXG4gIGdldFJlcG9ydFNjaGVkdWxlcyhcbiAgICBza2lwOiBudW1iZXIgPSAwLFxuICAgIGxpbWl0OiBudW1iZXIgPSAwXG4gICk6IFByb21pc2U8UGFnZWQ8UmVwb3J0U2NoZWR1bGU+PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5SU19NT0RFTF9CQVNFX1BBVEh9L0dldFJlcG9ydFNjaGVkdWxlcy8ke3NraXB9LyR7bGltaXR9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXQoXG4gICAgICB1cmwsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5SZXBvcnRpbmdBUElcbiAgICApIGFzIFByb21pc2U8UGFnZWQ8UmVwb3J0U2NoZWR1bGU+PjtcbiAgfVxuXG4gIGdldE9wZXJhdGlvbkFjdGlvbnMoXG4gICAgc2tpcDogbnVtYmVyID0gMCxcbiAgICBsaW1pdDogbnVtYmVyID0gMFxuICApOiBQcm9taXNlPFBhZ2VkPE9wZXJhdGlvbkFjdGlvbj4+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLlVUSUxfQkFTRV9QQVRIfS9HZXRPcGVyYXRpb25BY3Rpb25gO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldChcbiAgICAgIHVybCxcbiAgICAgIC8vIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkdMQVBJXG4gICAgKSBhcyBQcm9taXNlPFBhZ2VkPE9wZXJhdGlvbkFjdGlvbj4+O1xuICB9XG5cbiAgc2F2ZUFjdG9yVGFncyhyZXF1ZXN0czogQWN0b3JUYWdbXSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5BQ1RPUl9NT0RFTF9CQVNFX1BBVEh9L1NhdmVBY3RvclRhZ3NgO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QoXG4gICAgICB1cmwsXG4gICAgICByZXF1ZXN0cyxcbiAgICAgIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LldvcmtGbG93QVBJXG4gICAgKTtcbiAgfVxuXG4gIGdldEZsb3dhYmxlU3RhdHVzZXMoXG4gICAgc2tpcDogbnVtYmVyID0gMCxcbiAgICBsaW1pdDogbnVtYmVyID0gMFxuICApOiBQcm9taXNlPFBhZ2VkPEZsb3dhYmxlU3RhdHVzPj4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuRkxPV0FCTEVfU1RBVFVTX01PREVMX0JBU0VfUEFUSH0vR2V0Rmxvd2FibGVTdGF0dXMvJHtza2lwfS8ke2xpbWl0fS9DcmVhdGVkQXQvRGVzY2A7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0KHVybCkgYXMgUHJvbWlzZTxQYWdlZDxGbG93YWJsZVN0YXR1cz4+O1xuICB9XG5cbiAgLy8gSGVscGVyIHRvIGNyZWF0ZSBhIG1vY2sgd29ya2Zsb3cgKGp1c3QgZm9yIGRlbW8pXG4gIHByaXZhdGUgY3JlYXRlTW9ja1dvcmtmbG93KGNvZGU6IHN0cmluZyk6IFdvcmtmbG93IHtcbiAgICAvLyBSZXR1cm4gYSBzaW1wbGUgd29ya2Zsb3cgd2l0aCBvbmUgbGFuZSBhbmQgb25lIHN0YWdlXG4gICAgY29uc3Qgd29ya2Zsb3c6IFdvcmtmbG93ID0ge1xuICAgICAgSWQ6ICd3b3JrZmxvdy0xMjMnLFxuICAgICAgQ29kZTogY29kZSxcbiAgICAgIFRlbmFudElkOiAndGVuYW50LTEnLFxuICAgICAgaWQ6ICd3b3JrZmxvdy0xMjMnLFxuICAgICAgU2VydmljZU5hbWU6ICd3b3JrZmxvdy1zZXJ2aWNlJyxcbiAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuVW5jaGFuZ2VkLFxuICAgICAgTmFtZTogJ1NhbXBsZSBXb3JrZmxvdycsXG4gICAgICBEZXNjcmlwdGlvbjogJ0Egc2FtcGxlIHdvcmtmbG93IGxvYWRlZCBmcm9tIEFQSScsXG4gICAgICBTdGFnZUVudHJ5UnVsZTogJycsXG4gICAgICBBc3NpZ25tZW50VHlwZTogVGFza0Fzc2lnbm1lbnRUeXBlLkF1dG9Sb3V0ZSxcbiAgICAgIFN0YXR1czogU3RhdHVzLkFjdGl2ZSxcbiAgICAgIEFjdGlvbnM6IFtdLFxuICAgICAgTGFuZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIElkOiAnbGFuZS0wJyxcbiAgICAgICAgICBDb2RlOiAnbGFuZS0wJyxcbiAgICAgICAgICBUZW5hbnRJZDogJ3RlbmFudC0xJyxcbiAgICAgICAgICBpZDogJ2xhbmUtMCcsXG4gICAgICAgICAgU2VydmljZU5hbWU6ICd3b3JrZmxvdy1zZXJ2aWNlJyxcbiAgICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuVW5jaGFuZ2VkLFxuICAgICAgICAgIFdvcmtmbG93OiAnd29ya2Zsb3ctMTIzJyxcbiAgICAgICAgICBUYWdzOiBbXSxcbiAgICAgICAgICBQb3NpdGlvbjogMCxcbiAgICAgICAgICBDb29yZGluYXRlczogeyBYOiAwLCBZOiAwIH0sXG4gICAgICAgICAgU2l6ZTogeyBXaWR0aDogMzAwMCwgSGVpZ2h0OiAyNjMgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBTdGFnZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIElkOiAnc3RhZ2UtMTIzJyxcbiAgICAgICAgICBDb2RlOiAnc3RhZ2UtMTIzJyxcbiAgICAgICAgICBUZW5hbnRJZDogJ3RlbmFudC0xJyxcbiAgICAgICAgICBpZDogJ3N0YWdlLTEyMycsXG4gICAgICAgICAgU2VydmljZU5hbWU6ICd3b3JrZmxvdy1zZXJ2aWNlJyxcbiAgICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuVW5jaGFuZ2VkLFxuICAgICAgICAgIFdvcmtmbG93OiAnd29ya2Zsb3ctMTIzJyxcbiAgICAgICAgICBOYW1lOiAnSW5pdGlhbCBTdGFnZScsXG4gICAgICAgICAgRGVzY3JpcHRpb246ICdTdGFydGluZyBwb2ludCcsXG4gICAgICAgICAgRHVyYXRpb246IDI0LFxuICAgICAgICAgIFBhc3NPblJ1bGU6ICcnLFxuICAgICAgICAgIEFjdG9yUnVsZTogU3RhZ2VBY3RvclJ1bGUuTm9uZSxcbiAgICAgICAgICBNaW5Ob09mQWN0b3I6IDEsXG4gICAgICAgICAgSXNQYXJhbGxlbDogZmFsc2UsXG4gICAgICAgICAgSXNFbnRyeVBvaW50OiB0cnVlLFxuICAgICAgICAgIElzRXhpdFBvaW50OiBmYWxzZSxcbiAgICAgICAgICBUYWdzOiBbXSxcbiAgICAgICAgICBGb3JtOiAnJyxcbiAgICAgICAgICBBbGxvd011bHRpU3ViUHJvY2VzczogZmFsc2UsXG4gICAgICAgICAgQXNzaWdubWVudFR5cGU6IFRhc2tBc3NpZ25tZW50VHlwZS5BdXRvUm91dGUsXG4gICAgICAgICAgU3ViV29ya0Zsb3c6ICcnLFxuICAgICAgICAgIFN3aW1MYW5lOiAnbGFuZS0wJyxcbiAgICAgICAgICBDb29yZGluYXRlczogeyBYOiAxMDAsIFk6IDUwIH0sXG4gICAgICAgICAgSXNTdWJQcm9jZXNzOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcblxuICAgIHJldHVybiB3b3JrZmxvdztcbiAgfVxufVxuIl19
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy93b3JrZmxvdy1kZXNpZ25lci93b3JrZmxvdy1kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQTZELFdBQVcsRUFBMEMsY0FBYyxFQUFFLE1BQU0sRUFBTyxrQkFBa0IsRUFBMkIsTUFBTSxtQ0FBbUMsQ0FBQzs7O0FBTTdPLE1BQU0sT0FBTyxtQkFBbUI7SUFXcEI7SUFDQTtJQVhPLHdCQUF3QixHQUFHLFVBQVUsQ0FBQztJQUN0QyxvQkFBb0IsR0FBRyxNQUFNLENBQUM7SUFDOUIsb0JBQW9CLEdBQUcsTUFBTSxDQUFDO0lBQzlCLDBCQUEwQixHQUFHLFlBQVksQ0FBQztJQUMxQyxrQkFBa0IsR0FBRyxRQUFRLENBQUM7SUFDOUIsY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUN4QixxQkFBcUIsR0FBRyxPQUFPLENBQUM7SUFDaEMsK0JBQStCLEdBQUcsUUFBUSxDQUFDO0lBRTVELFlBQ1UsV0FBa0MsRUFDbEMsTUFBMEI7UUFEMUIsZ0JBQVcsR0FBWCxXQUFXLENBQXVCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQW9CO0lBQ2hDLENBQUM7SUFFTCxvQkFBb0IsQ0FDbEIsS0FBYSxFQUNiLE9BQWUsQ0FBQyxFQUNoQixRQUFnQixDQUFDLEVBQ2pCLFlBQW9CLFdBQVcsRUFDL0IsWUFBb0IsS0FBSztRQUV6QixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsMEJBQTBCLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLFNBQVMsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUN6SCxPQUFPLElBQUksQ0FBQyxXQUFX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YyxFQUFFLGtCQUFrQixDQUFDLFNBQVM7b0JBQzVDLFdBQVcsRUFBRSxFQUFFO29CQUNmLFFBQVEsRUFBRSxRQUFRO29CQUNsQixXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7b0JBQzlCLFlBQVksRUFBRSxLQUFLO2lCQUNwQjthQUNGO1NBQ0YsQ0FBQztRQUVGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7d0dBck9VLG1CQUFtQjs0R0FBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RvclRhZywgRXJyb3JSZXNwb25zZSwgRXNjYWxhdGlvbiwgRmxvd2FibGVTdGF0dXMsIEZvcm0sIE9iamVjdFN0YXRlLCBPcGVyYXRpb25BY3Rpb24sIFBhZ2VkLCBSZXBvcnRTY2hlZHVsZSwgU3RhZ2VBY3RvclJ1bGUsIFN0YXR1cywgVGFnLCBUYXNrQXNzaWdubWVudFR5cGUsIFdvcmtmbG93LCBXb3JrZmxvd1N0YWdlIH0gZnJvbSAndmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvbW9kZWxzJztcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSwgSHR0cFdlYlJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAndmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvc2VydmljZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dEYXRhU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgV09SS0ZMT1dfTU9ERUxfQkFTRV9QQVRIID0gJ1dvcmtmbG93JztcbiAgcHJpdmF0ZSByZWFkb25seSBBVVRIX01PREVMX0JBU0VfUEFUSCA9ICdVc2VyJztcbiAgcHJpdmF0ZSByZWFkb25seSBGT1JNX01PREVMX0JBU0VfUEFUSCA9ICdGb3JtJztcbiAgcHJpdmF0ZSByZWFkb25seSBFU0NBTEFUSU9OX01PREVMX0JBU0VfUEFUSCA9ICdFc2NhbGF0aW9uJztcbiAgcHJpdmF0ZSByZWFkb25seSBSU19NT0RFTF9CQVNFX1BBVEggPSAnUmVwb3J0JztcbiAgcHJpdmF0ZSByZWFkb25seSBVVElMX0JBU0VfUEFUSCA9ICdVdGlsJztcbiAgcHJpdmF0ZSByZWFkb25seSBBQ1RPUl9NT0RFTF9CQVNFX1BBVEggPSAnQWN0b3InO1xuICBwcml2YXRlIHJlYWRvbmx5IEZMT1dBQkxFX1NUQVRVU19NT0RFTF9CQVNFX1BBVEggPSAnU3RhdHVzJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwV2ViUmVxdWVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbnZTdmM6IEVudmlyb25tZW50U2VydmljZVxuICApIHsgfVxuXG4gIGdldFdvcmtmbG93V2l0aFBhcmFtKFxuICAgIHBhcmFtOiBzdHJpbmcsXG4gICAgc2tpcDogbnVtYmVyID0gMCxcbiAgICBsaW1pdDogbnVtYmVyID0gMSxcbiAgICBzb3J0UGFyYW06IHN0cmluZyA9ICdDcmVhdGVkQXQnLFxuICAgIHNvcnRPcmRlcjogc3RyaW5nID0gJ0FzYydcbiAgKTogUHJvbWlzZTxQYWdlZDxXb3JrZmxvdz4+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLldPUktGTE9XX01PREVMX0JBU0VfUEFUSH0vR2V0V29ya2Zsb3dzV2l0aFBhcmFtLyR7cGFyYW19LyR7c2tpcH0vJHtsaW1pdH0vJHtzb3J0UGFyYW19LyR7c29ydE9yZGVyfWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0KHVybCkgYXMgUHJvbWlzZTxQYWdlZDxXb3JrZmxvdz4+O1xuICB9XG5cbiAgZ2V0V29ya2Zsb3dzKHNraXA6IG51bWJlciA9IDAsIGxpbWl0OiBudW1iZXIgPSAwKTogUHJvbWlzZTxQYWdlZDxXb3JrZmxvdz4+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLldPUktGTE9XX01PREVMX0JBU0VfUEFUSH0vR2V0V29ya2Zsb3dzLyR7c2tpcH0vJHtsaW1pdH1gO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldChcbiAgICAgIHVybCxcbiAgICAgIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LldvcmtGbG93QVBJXG4gICAgKSBhcyBQcm9taXNlPFBhZ2VkPFdvcmtmbG93Pj47XG4gIH1cblxuICBnZXRGb3Jtcyhza2lwOiBudW1iZXIgPSAwLCBsaW1pdDogbnVtYmVyID0gMCk6IFByb21pc2U8UGFnZWQ8Rm9ybT4+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLkZPUk1fTU9ERUxfQkFTRV9QQVRIfS9HZXRGb3Jtcy8ke3NraXB9LyR7bGltaXR9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXQoXG4gICAgICB1cmwsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5Xb3JrRmxvd0FQSVxuICAgICkgYXMgUHJvbWlzZTxQYWdlZDxGb3JtPj47XG4gIH1cblxuICBnZXRUYWdzKHNraXA6IG51bWJlciA9IDAsIGxpbWl0OiBudW1iZXIgPSAwKTogUHJvbWlzZTxQYWdlZDxUYWc+PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5BVVRIX01PREVMX0JBU0VfUEFUSH0vR2V0VGFncy8ke3NraXB9LyR7bGltaXR9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXQoXG4gICAgICB1cmwsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BdXRoQVBJXG4gICAgKSBhcyBQcm9taXNlPFBhZ2VkPFRhZz4+O1xuICB9XG5cbiAgc2F2ZVdvcmtmbG93cyhyZXF1ZXN0czogUGFydGlhbDxXb3JrZmxvdz5bXSk6IFByb21pc2U8YW55IHwgRXJyb3JSZXNwb25zZT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuV09SS0ZMT1dfTU9ERUxfQkFTRV9QQVRIfS9TYXZlV29ya2Zsb3dzYDtcbiAgICAvLyBjb25zb2xlLmxvZygnU2F2aW5nIHdvcmtmbG93cycsIHJlcXVlc3RzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5wb3N0KFxuICAgICAgdXJsLFxuICAgICAgcmVxdWVzdHMsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5Xb3JrRmxvd0FQSVxuICAgICk7XG4gIH1cblxuICBkZWxldGVXb3JrZmxvd1N0YWdlcyhyZXF1ZXN0czogV29ya2Zsb3dTdGFnZVsnQ29kZSddW10pOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuV09SS0ZMT1dfTU9ERUxfQkFTRV9QQVRIfS9EZWxldGVXb3JrZmxvd1N0YWdlYDtcbiAgICAvLyBjb25zb2xlLmxvZygnU2F2aW5nIHdvcmtmbG93cycsIHJlcXVlc3RzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5wb3N0KFxuICAgICAgdXJsLFxuICAgICAgcmVxdWVzdHMsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5Xb3JrRmxvd0FQSVxuICAgICk7XG4gIH1cblxuICBzYXZlRXNjYWxhdGlvbnMocmVxdWVzdHM6IFBhcnRpYWw8RXNjYWxhdGlvbj5bXSk6IFByb21pc2U8RXNjYWxhdGlvbltdPiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5FU0NBTEFUSU9OX01PREVMX0JBU0VfUEFUSH0vU2F2ZUVzY2FsYXRpb25zYDtcbiAgICAvLyBjb25zb2xlLmxvZygnU2F2aW5nIHdvcmtmbG93cycsIHJlcXVlc3RzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5wb3N0KFxuICAgICAgdXJsLFxuICAgICAgcmVxdWVzdHMsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5Xb3JrRmxvd0FQSVxuICAgICk7XG4gIH1cblxuICBkZWxldGVFc2NhbGF0aW9ucyhyZXF1ZXN0czogRXNjYWxhdGlvblsnQ29kZSddW10pOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuRVNDQUxBVElPTl9NT0RFTF9CQVNFX1BBVEh9L0RlbGV0ZUVzY2FsYXRpb25gO1xuICAgIC8vIGNvbnNvbGUubG9nKCdTYXZpbmcgd29ya2Zsb3dzJywgcmVxdWVzdHMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QoXG4gICAgICB1cmwsXG4gICAgICByZXF1ZXN0cyxcbiAgICAgIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LldvcmtGbG93QVBJXG4gICAgKTtcbiAgfVxuXG4gIHNlYXJjaEVzY2FsYXRpb25XaXRoUGFyYW0oXG4gICAgcGFyYW1zOiBQaWNrPEVzY2FsYXRpb24sICdXb3JrZmxvdycgfCAnU3RhZ2UnIHwgJ1R5cGUnPixcbiAgICBza2lwOiBudW1iZXIgPSAwLFxuICAgIGxpbWl0OiBudW1iZXIgPSAxLFxuICAgIHNvcnRPcmRlcjogc3RyaW5nID0gJ0FzYydcbiAgKTogUHJvbWlzZTxQYWdlZDxFc2NhbGF0aW9uPj4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuRVNDQUxBVElPTl9NT0RFTF9CQVNFX1BBVEh9L1NlYXJjaEVzY2FsYXRpb25zLyR7c2tpcH0vJHtsaW1pdH1gO1xuICAgIGNvbnN0IHBheWxvYWQgPSBPYmplY3QuZW50cmllcyhwYXJhbXMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgSXNBdXRvRnJvbURhdGU6IHRydWUsXG4gICAgICBJc0F1dG9FbmREYXRlOiB0cnVlLFxuICAgICAgUHJvcGVydHlOYW1lOiBrZXksXG4gICAgICBFbnRpdHlWYWx1ZTogdmFsdWUsXG4gICAgICBUeXBlOiAnU3RyaW5nJyxcbiAgICAgIE9wZXJhdG9yOiAnQW5kJyxcbiAgICAgIFNpZ246ICdFUScsXG4gICAgICBTb3J0OiBzb3J0T3JkZXIsXG4gICAgICAvLyBGaWVsZHM6IFsnc3RyaW5nJ10sXG4gICAgfSkpO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QodXJsLCBwYXlsb2FkKSBhcyBQcm9taXNlPFBhZ2VkPEVzY2FsYXRpb24+PjtcbiAgfVxuXG4gIGdldEVzY2FsYXRpb25XaXRoUGFyYW0oXG4gICAgcGFyYW06IHN0cmluZyxcbiAgICBza2lwOiBudW1iZXIgPSAwLFxuICAgIGxpbWl0OiBudW1iZXIgPSAxLFxuICAgIHNvcnRQYXJhbTogc3RyaW5nID0gJ0NyZWF0ZWRBdCcsXG4gICAgc29ydE9yZGVyOiBzdHJpbmcgPSAnQXNjJ1xuICApOiBQcm9taXNlPFBhZ2VkPEVzY2FsYXRpb24+PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5FU0NBTEFUSU9OX01PREVMX0JBU0VfUEFUSH0vR2V0RXNjYWxhdGlvbnNXaXRoUGFyYW0vJHtwYXJhbX0vJHtza2lwfS8ke2xpbWl0fS8ke3NvcnRQYXJhbX0vJHtzb3J0T3JkZXJ9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXQodXJsKSBhcyBQcm9taXNlPFBhZ2VkPEVzY2FsYXRpb24+PjtcbiAgfVxuXG4gIGdldFJlcG9ydFNjaGVkdWxlcyhcbiAgICBza2lwOiBudW1iZXIgPSAwLFxuICAgIGxpbWl0OiBudW1iZXIgPSAwXG4gICk6IFByb21pc2U8UGFnZWQ8UmVwb3J0U2NoZWR1bGU+PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5SU19NT0RFTF9CQVNFX1BBVEh9L0dldFJlcG9ydFNjaGVkdWxlcy8ke3NraXB9LyR7bGltaXR9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXQoXG4gICAgICB1cmwsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5SZXBvcnRpbmdBUElcbiAgICApIGFzIFByb21pc2U8UGFnZWQ8UmVwb3J0U2NoZWR1bGU+PjtcbiAgfVxuXG4gIGdldE9wZXJhdGlvbkFjdGlvbnMoXG4gICAgc2tpcDogbnVtYmVyID0gMCxcbiAgICBsaW1pdDogbnVtYmVyID0gMFxuICApOiBQcm9taXNlPFBhZ2VkPE9wZXJhdGlvbkFjdGlvbj4+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLlVUSUxfQkFTRV9QQVRIfS9HZXRPcGVyYXRpb25BY3Rpb25gO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldChcbiAgICAgIHVybCxcbiAgICAgIC8vIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkdMQVBJXG4gICAgKSBhcyBQcm9taXNlPFBhZ2VkPE9wZXJhdGlvbkFjdGlvbj4+O1xuICB9XG5cbiAgc2F2ZUFjdG9yVGFncyhyZXF1ZXN0czogQWN0b3JUYWdbXSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5BQ1RPUl9NT0RFTF9CQVNFX1BBVEh9L1NhdmVBY3RvclRhZ3NgO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QoXG4gICAgICB1cmwsXG4gICAgICByZXF1ZXN0cyxcbiAgICAgIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LldvcmtGbG93QVBJXG4gICAgKTtcbiAgfVxuXG4gIGdldEZsb3dhYmxlU3RhdHVzZXMoXG4gICAgc2tpcDogbnVtYmVyID0gMCxcbiAgICBsaW1pdDogbnVtYmVyID0gMFxuICApOiBQcm9taXNlPFBhZ2VkPEZsb3dhYmxlU3RhdHVzPj4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuRkxPV0FCTEVfU1RBVFVTX01PREVMX0JBU0VfUEFUSH0vR2V0Rmxvd2FibGVTdGF0dXMvJHtza2lwfS8ke2xpbWl0fS9DcmVhdGVkQXQvRGVzY2A7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0KHVybCkgYXMgUHJvbWlzZTxQYWdlZDxGbG93YWJsZVN0YXR1cz4+O1xuICB9XG5cbiAgLy8gSGVscGVyIHRvIGNyZWF0ZSBhIG1vY2sgd29ya2Zsb3cgKGp1c3QgZm9yIGRlbW8pXG4gIHByaXZhdGUgY3JlYXRlTW9ja1dvcmtmbG93KGNvZGU6IHN0cmluZyk6IFdvcmtmbG93IHtcbiAgICAvLyBSZXR1cm4gYSBzaW1wbGUgd29ya2Zsb3cgd2l0aCBvbmUgbGFuZSBhbmQgb25lIHN0YWdlXG4gICAgY29uc3Qgd29ya2Zsb3c6IFdvcmtmbG93ID0ge1xuICAgICAgSWQ6ICd3b3JrZmxvdy0xMjMnLFxuICAgICAgQ29kZTogY29kZSxcbiAgICAgIFRlbmFudElkOiAndGVuYW50LTEnLFxuICAgICAgaWQ6ICd3b3JrZmxvdy0xMjMnLFxuICAgICAgU2VydmljZU5hbWU6ICd3b3JrZmxvdy1zZXJ2aWNlJyxcbiAgICAgIENyZWF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuVW5jaGFuZ2VkLFxuICAgICAgTmFtZTogJ1NhbXBsZSBXb3JrZmxvdycsXG4gICAgICBEZXNjcmlwdGlvbjogJ0Egc2FtcGxlIHdvcmtmbG93IGxvYWRlZCBmcm9tIEFQSScsXG4gICAgICBTdGFnZUVudHJ5UnVsZTogJycsXG4gICAgICBBc3NpZ25tZW50VHlwZTogVGFza0Fzc2lnbm1lbnRUeXBlLkF1dG9Sb3V0ZSxcbiAgICAgIFN0YXR1czogU3RhdHVzLkFjdGl2ZSxcbiAgICAgIEFjdGlvbnM6IFtdLFxuICAgICAgTGFuZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIElkOiAnbGFuZS0wJyxcbiAgICAgICAgICBDb2RlOiAnbGFuZS0wJyxcbiAgICAgICAgICBUZW5hbnRJZDogJ3RlbmFudC0xJyxcbiAgICAgICAgICBpZDogJ2xhbmUtMCcsXG4gICAgICAgICAgU2VydmljZU5hbWU6ICd3b3JrZmxvdy1zZXJ2aWNlJyxcbiAgICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuVW5jaGFuZ2VkLFxuICAgICAgICAgIFdvcmtmbG93OiAnd29ya2Zsb3ctMTIzJyxcbiAgICAgICAgICBUYWdzOiBbXSxcbiAgICAgICAgICBQb3NpdGlvbjogMCxcbiAgICAgICAgICBDb29yZGluYXRlczogeyBYOiAwLCBZOiAwIH0sXG4gICAgICAgICAgU2l6ZTogeyBXaWR0aDogMzAwMCwgSGVpZ2h0OiAyNjMgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBTdGFnZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIElkOiAnc3RhZ2UtMTIzJyxcbiAgICAgICAgICBDb2RlOiAnc3RhZ2UtMTIzJyxcbiAgICAgICAgICBUZW5hbnRJZDogJ3RlbmFudC0xJyxcbiAgICAgICAgICBpZDogJ3N0YWdlLTEyMycsXG4gICAgICAgICAgU2VydmljZU5hbWU6ICd3b3JrZmxvdy1zZXJ2aWNlJyxcbiAgICAgICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAgICAgVXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIERhdGFTdGF0ZTogT2JqZWN0U3RhdGUuVW5jaGFuZ2VkLFxuICAgICAgICAgIFdvcmtmbG93OiAnd29ya2Zsb3ctMTIzJyxcbiAgICAgICAgICBOYW1lOiAnSW5pdGlhbCBTdGFnZScsXG4gICAgICAgICAgRGVzY3JpcHRpb246ICdTdGFydGluZyBwb2ludCcsXG4gICAgICAgICAgRHVyYXRpb246IDI0LFxuICAgICAgICAgIFBhc3NPblJ1bGU6ICcnLFxuICAgICAgICAgIEFjdG9yUnVsZTogU3RhZ2VBY3RvclJ1bGUuTm9uZSxcbiAgICAgICAgICBNaW5Ob09mQWN0b3I6IDEsXG4gICAgICAgICAgSXNQYXJhbGxlbDogZmFsc2UsXG4gICAgICAgICAgSXNFbnRyeVBvaW50OiB0cnVlLFxuICAgICAgICAgIElzRXhpdFBvaW50OiBmYWxzZSxcbiAgICAgICAgICBUYWdzOiBbXSxcbiAgICAgICAgICBGb3JtOiAnJyxcbiAgICAgICAgICBBbGxvd011bHRpU3ViUHJvY2VzczogZmFsc2UsXG4gICAgICAgICAgQXNzaWdubWVudFR5cGU6IFRhc2tBc3NpZ25tZW50VHlwZS5BdXRvUm91dGUsXG4gICAgICAgICAgU3ViV29ya0Zsb3c6ICcnLFxuICAgICAgICAgIFN3aW1MYW5lOiAnbGFuZS0wJyxcbiAgICAgICAgICBDb29yZGluYXRlczogeyBYOiAxMDAsIFk6IDUwIH0sXG4gICAgICAgICAgSXNTdWJQcm9jZXNzOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcblxuICAgIHJldHVybiB3b3JrZmxvdztcbiAgfVxufVxuIl19
@@ -1,4 +1,5 @@
1
1
  import { Component, Input, signal, ViewChild, } from '@angular/core';
2
+ import { ErrorResponse } from 'verben-workflow-ui/src/lib/models';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "./workflow-designer.state";
4
5
  import * as i2 from "./workflow-data.service";
@@ -44,15 +45,21 @@ export class WorkflowDesignerComponent {
44
45
  this.dataService
45
46
  .saveWorkflows([workflowModel])
46
47
  .then((response) => {
47
- console.log('Workflow saved successfully:', response);
48
- this.utilService.showSuccess('Workflow saved successfully');
49
- // If the API returns an updated workflow, we might want to reload it
50
- const updatedWorkflow = response[0];
51
- if (updatedWorkflow) {
52
- this.state.setWorkflowId(updatedWorkflow.Code);
53
- this.parseWorkflowData(updatedWorkflow);
48
+ if (response instanceof ErrorResponse) {
49
+ this.utilService.showError(response.ErrorMsg);
50
+ this.isSaving = false;
51
+ }
52
+ else {
53
+ // console.log('Workflow saved successfully:', response);
54
+ this.utilService.showSuccess('Workflow saved successfully');
55
+ // If the API returns an updated workflow, we might want to reload it
56
+ const updatedWorkflow = response[0];
57
+ if (updatedWorkflow) {
58
+ this.state.setWorkflowId(updatedWorkflow.Code);
59
+ this.parseWorkflowData(updatedWorkflow);
60
+ }
61
+ this.isSaving = false;
54
62
  }
55
- this.isSaving = false;
56
63
  })
57
64
  .catch((error) => {
58
65
  console.error('Error saving workflow:', error);
@@ -356,4 +363,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
356
363
  }], workflowCode: [{
357
364
  type: Input
358
365
  }] } });
359
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZGVzaWduZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy93b3JrZmxvdy1kZXNpZ25lci93b3JrZmxvdy1kZXNpZ25lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3dvcmtmbG93LWRlc2lnbmVyL3dvcmtmbG93LWRlc2lnbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7QUFhdkIsTUFBTSxPQUFPLHlCQUF5QjtJQWlCM0I7SUFDQztJQUNBO0lBbEJjLFNBQVMsQ0FBMkI7SUFDbkQsWUFBWSxHQUFrQixJQUFJLENBQUM7SUFFNUMsMEJBQTBCO0lBQzFCLFlBQVksR0FBYSxJQUFJLENBQUM7SUFDOUIsa0JBQWtCLEdBQVksS0FBSyxDQUFDO0lBQ3BDLG1CQUFtQixHQUFZLEtBQUssQ0FBQztJQUVyQyxvQkFBb0IsR0FBa0IsSUFBSSxDQUFDO0lBQzNDLGVBQWUsR0FDYixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFZixTQUFTLEdBQVksS0FBSyxDQUFDO0lBQzNCLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFMUIsWUFDUyxLQUE0QixFQUMzQixXQUFnQyxFQUNoQyxXQUF3QjtRQUZ6QixVQUFLLEdBQUwsS0FBSyxDQUF1QjtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBcUI7UUFDaEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDOUIsQ0FBQztJQUVMLFFBQVE7UUFDTix5Q0FBeUM7UUFDekMsSUFBSSxJQUFJLENBQUMs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Y0FBYyxDQUN2QixJQUFJLENBQUMsb0JBQW9CLEVBQ3pCLEtBQUssQ0FBQyxJQUFJLEVBQ1YsS0FBSyxDQUFDLElBQUksQ0FDWCxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixzQkFBc0I7WUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUlELGlCQUFpQjtRQUNmLHVEQUF1RDtRQUN2RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDbEMsQ0FBQzt3R0FyYlUseUJBQXlCOzRGQUF6Qix5QkFBeUIsK01DbkJ0Qyxnd0NBNEJBOzs0RkRUYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsdUJBQXVCO3NKQUtULFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDYixZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgc2lnbmFsLFxuICBWaWV3Q2hpbGQsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRhZywgV29ya2Zsb3cgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9tb2RlbHMnO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICd2ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBEZXNpZ25lckNhbnZhc0NvbXBvbmVudCB9IGZyb20gJy4vZGVzaWduZXItY2FudmFzL2Rlc2lnbmVyLWNhbnZhcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgV29ya2Zsb3dEYXRhU2VydmljZSB9IGZyb20gJy4vd29ya2Zsb3ctZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IFdvcmtmbG93RGVzaWduZXJTdGF0ZSB9IGZyb20gJy4vd29ya2Zsb3ctZGVzaWduZXIuc3RhdGUnO1xuaW1wb3J0IHsgTm9kZSwgVG9vbFR5cGUgfSBmcm9tICcuL3dvcmtmbG93LWRlc2lnbmVyLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXdvcmtmbG93LWRlc2lnbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LWRlc2lnbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL3dvcmtmbG93LWRlc2lnbmVyLmNvbXBvbmVudC5jc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0Rlc2lnbmVyQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZCgnY2FudmFzUmVmJykgY2FudmFzUmVmITogRGVzaWduZXJDYW52YXNDb21wb25lbnQ7XG4gIEBJbnB1dCgpIHdvcmtmbG93Q29kZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gQ3VycmVudGx5IHNlbGVjdGVkIHRvb2xcbiAgc2VsZWN0ZWRUb29sOiBUb29sVHlwZSA9IG51bGw7XG4gIHNob3dTd2ltbGFuZURpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93QWN0b3JUYWdzRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZWRpdGluZ1N3aW1sYW5lSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBlZGl0aW5nU3dpbWxhbmU6IFdyaXRhYmxlU2lnbmFsPHsgbmFtZTogc3RyaW5nOyB0YWdzOiBUYWdbXSB9IHwgbnVsbD4gPVxuICAgIHNpZ25hbChudWxsKTtcblxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNTYXZpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc3RhdGU6IFdvcmtmbG93RGVzaWduZXJTdGF0ZSxcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBXb3JrZmxvd0RhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gTG9hZCB3b3JrZmxvdyBkYXRhIGlmIGNvZGUgaXMgcHJvdmlkZWRcbiAgICBpZiAodGhpcy53b3JrZmxvd0NvZGUpIHtcbiAgICAgIHRoaXMubG9hZFdvcmtmbG93KHRoaXMud29ya2Zsb3dDb2RlKTtcbiAgICB9XG4gIH1cblxuICBzYXZlV29ya2Zsb3coKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTYXZpbmcpIHJldHVybjtcblxuICAgIHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xuXG4gICAgLy8gVHJhbnNmb3JtIHRoZSBVSSBtb2RlbCB0byB0aGUgQVBJIG1vZGVsXG4gICAgY29uc3Qgd29ya2Zsb3dNb2RlbCA9IHRoaXMuc3RhdGUudHJhbnNmb3JtVG9Xb3JrZmxvd01vZGVsKCk7XG5cbiAgICBpZiAod29ya2Zsb3dNb2RlbCkge1xuICAgICAgLy8gU2F2ZSB0byB0aGUgYmFja2VuZFxuICAgICAgdGhpcy5kYXRhU2VydmljZVxuICAgICAgICAuc2F2ZVdvcmtmbG93cyhbd29ya2Zsb3dNb2RlbF0pXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdXb3JrZmxvdyBzYXZlZCBzdWNjZXNzZnVsbHk6JywgcmVzcG9uc2UpO1xuICAgICAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1dvcmtmbG93IHNhdmVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgIC8vIElmIHRoZSBBUEkgcmV0dXJucyBhbiB1cGRhdGVkIHdvcmtmbG93LCB3ZSBtaWdodCB3YW50IHRvIHJlbG9hZCBpdFxuICAgICAgICAgIGNvbnN0IHVwZGF0ZWRXb3JrZmxvdyA9IHJlc3BvbnNlWzBdO1xuICAgICAgICAgIGlmICh1cGRhdGVkV29ya2Zsb3cpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuc2V0V29ya2Zsb3dJZCh1cGRhdGVkV29ya2Zsb3cuQ29kZSk7XG4gICAgICAgICAgICB0aGlzLnBhcnNlV29ya2Zsb3dEYXRhKHVwZGF0ZWRXb3JrZmxvdyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyB3b3JrZmxvdzonLCBlcnJvcik7XG4gICAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xuICAgICAgICAgIC8vIEhhbmRsZSBlcnJvciAtIHNob3cgYSBub3RpZmljYXRpb24sIGV0Yy5cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbG9hZFdvcmtmbG93KGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlXG4gICAgICAuZ2V0V29ya2Zsb3dXaXRoUGFyYW0oY29kZSlcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuUmVzdWx0KSB7XG4gICAgICAgICAgLy8gU3RvcmUgdGhlIHdvcmtmbG93IElEXG4gICAgICAgICAgY29uc3Qgd2YgPSByZXNwb25zZS5SZXN1bHRbMF07XG4gICAgICAgICAgdGhpcy5zdGF0ZS5zZXRXb3JrZmxvd0lkKHdmLkNvZGUpO1xuICAgICAgICAgIHRoaXMucGFyc2VXb3JrZmxvd0RhdGEod2YpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHdvcmtmbG93OicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gTWV0aG9kIHRvIHBhcnNlIHdvcmtmbG93IGRhdGEgZnJvbSBBUEkgYW5kIHBvcHVsYXRlIHRoZSBkZXNpZ25lclxuICBwYXJzZVdvcmtmbG93RGF0YSh3b3JrZmxvdzogV29ya2Zsb3cpOiB2b2lkIHtcbiAgICAvLyBTdG9yZSB0aGUgY29tcGxldGUgd29ya2Zsb3dcbiAgICB0aGlzLnN0YXRlLndvcmtmbG93ID0gd29ya2Zsb3c7XG5cbiAgICAvLyBDbGVhciBleGlzdGluZyBzdGF0ZVxuICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVzID0gW107XG4gICAgdGhpcy5zdGF0ZS5jb25uZWN0aW9ucyA9IFtdO1xuICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVSZWNvcmQgPSB7fTtcbiAgICB0aGlzLnN0YXRlLnN0YWdlUmVjb3JkID0ge307XG4gICAgdGhpcy5zdGF0ZS5hY3Rpb25SZWNvcmQgPSB7fTtcblxuICAgIC8vIFNldCB3b3JrZmxvdyBmb3JtIGlmIGV4aXN0c1xuICAgIGlmICh3b3JrZmxvdy5Gb3JtKSB7XG4gICAgICB0aGlzLnN0YXRlLnNldFdvcmtmbG93Rm9ybShcbiAgICAgICAgd29ya2Zsb3cuRm9ybSxcbiAgICAgICAgd29ya2Zsb3cuRm9ybU5hbWUgfHwgJ1dvcmtmbG93IEZvcm0nXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFN0b3JlIHRoZSB3b3JrZmxvdyBJRFxuICAgIHRoaXMuc3RhdGUuc2V0V29ya2Zsb3dJZCh3b3JrZmxvdy5Db2RlKTtcblxuICAgIC8vIFByb2Nlc3Mgc3dpbWxhbmVzIGZpcnN0XG4gICAgaWYgKHdvcmtmbG93LkxhbmVzICYmIHdvcmtmbG93LkxhbmVzLmxlbmd0aCkge1xuICAgICAgd29ya2Zsb3cuTGFuZXMuc29ydCgoYSwgYikgPT4gYS5Qb3NpdGlvbiAtIGIuUG9zaXRpb24pLmZvckVhY2goKGxhbmUpID0+IHtcbiAgICAgICAgLy8gU3RvcmUgb3JpZ2luYWwgbGFuZSBpbiByZWNvcmRcbiAgICAgICAgdGhpcy5zdGF0ZS5zd2ltbGFuZVJlY29yZFtsYW5lLkNvZGVdID0gbGFuZTtcblxuICAgICAgICAvLyBBZGQgc3dpbWxhbmUgdG8gVUkgbW9kZWwgd2l0aCB0aGUgb3JpZ2luYWwgSURcbiAgICAgICAgY29uc3Qgc3dpbWxhbmUgPSB7XG4gICAgICAgICAgb3JkZXI6IGxhbmUuUG9zaXRpb24sXG4gICAgICAgICAgbGFiZWw6IGxhbmUuTmFtZSB8fCBgTGFuZSAke2xhbmUuUG9zaXRpb259YCxcbiAgICAgICAgICB0YWdzOiBsYW5lLlRhZ3MgfHwgW10sXG4gICAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICAgIGlkOiBsYW5lLkNvZGUsIC8vIFN0b3JlIHRoZSBvcmlnaW5hbCBJRFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVzLnB1c2goc3dpbWxhbmUpO1xuXG4gICAgICAgIC8vIFJlZ2lzdGVyIGxvYWRlZCBvYmplY3RcbiAgICAgICAgdGhpcy5zdGF0ZS5yZWdpc3RlckxvYWRlZE9iamVjdChsYW5lLklkLCBsYW5lLkNvZGUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzcyBzdGFnZXNcbiAgICBpZiAod29ya2Zsb3cuU3RhZ2VzICYmIHdvcmtmbG93LlN0YWdlcy5sZW5ndGgpIHtcbiAgICAgIHdvcmtmbG93LlN0YWdlcy5mb3JFYWNoKChzdGFnZSkgPT4ge1xuICAgICAgICAvLyBTdG9yZSBvcmlnaW5hbCBzdGFnZSBpbiByZWNvcmRcbiAgICAgICAgdGhpcy5zdGF0ZS5zdGFnZVJlY29yZFtzdGFnZS5Db2RlXSA9IHN0YWdlO1xuXG4gICAgICAgIC8vIEZpbmQgc3dpbWxhbmUgaW5kZXggYnkgU3dpbUxhbmUgSURcbiAgICAgICAgY29uc3Qgc3dpbWxhbmVJbmRleCA9IHRoaXMuc3RhdGUuc3dpbWxhbmVzLmZpbmRJbmRleChcbiAgICAgICAgICAobGFuZSkgPT4gbGFuZS5pZCA9PT0gc3RhZ2UuU3dpbUxhbmVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoc3dpbWxhbmVJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBjb25zdCB4ID0gc3RhZ2UuQ29vcmRpbmF0ZXM/LlggfHwgMTAwO1xuICAgICAgICAgIGNvbnN0IHkgPSBzdGFnZS5Db29yZGluYXRlcz8uWSB8fCA1MDtcblxuICAgICAgICAgIC8vIENyZWF0ZSBub2RlIHdpdGggb3JpZ2luYWwgSURcbiAgICAgICAgICBjb25zdCBub2RlOiBOb2RlID0ge1xuICAgICAgICAgICAgaWQ6IHN0YWdlLkNvZGUsIC8vIFVzZSBvcmlnaW5hbCBJRFxuICAgICAgICAgICAgdHlwZTogc3RhZ2UuSXNTdWJQcm9jZXNzID8gJ3N1YmZsb3cnIDogKCdzdGFnZScgYXMgY29uc3QpLFxuICAgICAgICAgICAgeDogeCxcbiAgICAgICAgICAgIHk6IHksXG4gICAgICAgICAgICB3aWR0aDogMTY5LFxuICAgICAgICAgICAgaGVpZ2h0OiAxMDAsXG4gICAgICAgICAgICBpc1N0YXJ0Tm9kZTogc3RhZ2UuSXNFbnRyeVBvaW50LFxuICAgICAgICAgICAgc3RhZ2VEYXRhOiB7XG4gICAgICAgICAgICAgIE5hbWU6IHN0YWdlLk5hbWUsXG4gICAgICAgICAgICAgIERlc2NyaXB0aW9uOiBzdGFnZS5EZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgRHVyYXRpb246IHN0YWdlLkR1cmF0aW9uLFxuICAgICAgICAgICAgICBQYXNzT25SdWxlOiBzdGFnZS5QYXNzT25SdWxlLFxuICAgICAgICAgICAgICBBY3RvclJ1bGU6IHN0YWdlLkFjdG9yUnVsZSxcbiAgICAgICAgICAgICAgTWluTm9PZkFjdG9yOiBzdGFnZS5NaW5Ob09mQWN0b3IsXG4gICAgICAgICAgICAgIFRhZ3M6IHN0YWdlLlRhZ3MgfHwgW10sXG4gICAgICAgICAgICAgIElzUGFyYWxsZWw6IHN0YWdlLklzUGFyYWxsZWwsXG4gICAgICAgICAgICAgIElzRW50cnlQb2ludDogc3RhZ2UuSXNFbnRyeVBvaW50LFxuICAgICAgICAgICAgICBJc0V4aXRQb2ludDogc3RhZ2UuSXNFeGl0UG9pbnQsXG4gICAgICAgICAgICAgIElzU3ViUHJvY2Vzczogc3RhZ2UuSXNTdWJQcm9jZXNzLFxuICAgICAgICAgICAgICBBc3NpZ25tZW50VHlwZTogc3RhZ2UuQXNzaWdubWVudFR5cGUsXG4gICAgICAgICAgICAgIElkOiBzdGFnZS5JZCwgLy8gS2VlcCBvcmlnaW5hbCBJRFxuICAgICAgICAgICAgICBDb2RlOiBzdGFnZS5Db2RlLFxuICAgICAgICAgICAgICBGb3JtOiBzdGFnZS5Gb3JtLFxuICAgICAgICAgICAgICBmb3JtSWQ6IHN0YWdlLkZvcm0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29ubmVjdGlvblBvaW50czogW10sIC8vIEluaXRpYWxpemUgd2l0aCBlbXB0eSBhcnJheVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICAvLyBHZW5lcmF0ZSBjb25uZWN0aW9uIHBvaW50c1xuICAgICAgICAgIG5vZGUuY29ubmVjdGlvblBvaW50cyA9IHRoaXMuc3RhdGUuZ2VuZXJhdGVDb25uZWN0aW9uUG9pbnRzKG5vZGUpO1xuXG4gICAgICAgICAgLy8gQWRkIG5vZGUgdG8gc3dpbWxhbmVcbiAgICAgICAgICB0aGlzLnN0YXRlLnN3aW1sYW5lc1tzd2ltbGFuZUluZGV4XS5ub2RlcyA9XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnN3aW1sYW5lc1tzd2ltbGFuZUluZGV4XS5ub2RlcyB8fCBbXTtcbiAgICAgICAgICB0aGlzLnN0YXRlLnN3aW1sYW5lc1tzd2ltbGFuZUluZGV4XS5ub2Rlcy5wdXNoKG5vZGUpO1xuXG4gICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHN0YXJ0IG5vZGUsIHVwZGF0ZSBzdGF0ZVxuICAgICAgICAgIGlmIChzdGFnZS5Jc0VudHJ5UG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuc3RhcnROb2RlSWQgPSBzdGFnZS5Db2RlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFJlZ2lzdGVyIGxvYWRlZCBzdGFnZVxuICAgICAgICAgIHRoaXMuc3RhdGUucmVnaXN0ZXJMb2FkZWRPYmplY3Qoc3RhZ2UuSWQsIHN0YWdlLkNvZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIGNvbm5lY3Rpb25zL2FjdGlvbnNcbiAgICBpZiAod29ya2Zsb3cuQWN0aW9ucyAmJiB3b3JrZmxvdy5BY3Rpb25zLmxlbmd0aCkge1xuICAgICAgd29ya2Zsb3cuQWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgICAgLy8gU3RvcmUgb3JpZ2luYWwgYWN0aW9uIGluIHJlY29yZFxuICAgICAgICB0aGlzLnN0YXRlLmFjdGlvblJlY29yZFthY3Rpb24uQ29kZV0gPSBhY3Rpb247XG5cbiAgICAgICAgLy8gRmluZCBzb3VyY2UgYW5kIHRhcmdldCBub2Rlc1xuICAgICAgICBjb25zdCBzb3VyY2VOb2RlSW5mbyA9IHRoaXMuc3RhdGUuZmluZE5vZGVCeUlkKGFjdGlvbi5Gcm9tU3RhZ2UpO1xuICAgICAgICBjb25zdCB0YXJnZXROb2RlSW5mbyA9IHRoaXMuc3RhdGUuZmluZE5vZGVCeUlkKGFjdGlvbi5Ub1N0YWdlKTtcblxuICAgICAgICBjb25zb2xlLmxvZyhzb3VyY2VOb2RlSW5mbywgdGFyZ2V0Tm9kZUluZm8pO1xuXG4gICAgICAgIGlmIChzb3VyY2VOb2RlSW5mbyAmJiB0YXJnZXROb2RlSW5mbykge1xuICAgICAgICAgIC8vIEZpbmQgc3VpdGFibGUgY29ubmVjdGlvbiBwb2ludHNcbiAgICAgICAgICAvLyBjb25zdCBzb3VyY2VOb2RlID0gc291cmNlTm9kZUluZm8ubm9kZTtcbiAgICAgICAgICAvLyBjb25zdCB0YXJnZXROb2RlID0gdGFyZ2V0Tm9kZUluZm8ubm9kZTtcblxuICAgICAgICAgIC8vIGNvbnN0IHNvdXJjZVBvaW50ID0gc291cmNlTm9kZS5jb25uZWN0aW9uUG9pbnRzPy5maW5kKFxuICAgICAgICAgIC8vICAgKHApID0+IHAudHlwZSA9PT0gJ3JpZ2h0JyB8fCBwLnR5cGUgPT09ICdib3R0b20nXG4gICAgICAgICAgLy8gKTtcblxuICAgICAgICAgIC8vIGNvbnN0IHRhcmdldFBvaW50ID0gdGFyZ2V0Tm9kZS5jb25uZWN0aW9uUG9pbnRzPy5maW5kKFxuICAgICAgICAgIC8vICAgKHApID0+IHAudHlwZSA9PT0gJ2xlZnQnIHx8IHAudHlwZSA9PT0gJ3RvcCdcbiAgICAgICAgICAvLyApO1xuXG4gICAgICAgICAgY29uc3Qgc291cmNlTm9kZSA9IHNvdXJjZU5vZGVJbmZvLm5vZGU7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0Tm9kZSA9IHRhcmdldE5vZGVJbmZvLm5vZGU7XG5cbiAgICAgICAgICBsZXQgc291cmNlUG9pbnRJZCwgdGFyZ2V0UG9pbnRJZDtcblxuICAgICAgICAgIGNvbnNvbGUubG9nKGFjdGlvbi5Tb3VyY2VQb2ludFR5cGUsIGFjdGlvbi5UYXJnZXRQb2ludFR5cGUpO1xuXG4gICAgICAgICAgaWYgKGFjdGlvbi5Tb3VyY2VQb2ludFR5cGUpIHtcbiAgICAgICAgICAgIC8vIEZpbmQgYSBwb2ludCB3aXRoIG1hdGNoaW5nIHR5cGVcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZVBvaW50ID0gc291cmNlTm9kZS5jb25uZWN0aW9uUG9pbnRzPy5maW5kKFxuICAgICAgICAgICAgICAocCkgPT4gcC50eXBlID09PSBhY3Rpb24uU291cmNlUG9pbnRUeXBlPy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgc291cmNlUG9pbnRJZCA9IHNvdXJjZVBvaW50Py5pZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRmFsbGJhY2sgdG8gZmluZGluZyBhIHN1aXRhYmxlIHBvaW50XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VQb2ludCA9IHNvdXJjZU5vZGUuY29ubmVjdGlvblBvaW50cz8uZmluZChcbiAgICAgICAgICAgICAgKHApID0+IHAudHlwZSA9PT0gJ3JpZ2h0JyB8fCBwLnR5cGUgPT09ICdib3R0b20nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgc291cmNlUG9pbnRJZCA9IHNvdXJjZVBvaW50Py5pZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYWN0aW9uLlRhcmdldFBvaW50VHlwZSkge1xuICAgICAgICAgICAgLy8gRmluZCBhIHBvaW50IHdpdGggbWF0Y2hpbmcgdHlwZVxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0UG9pbnQgPSB0YXJnZXROb2RlLmNvbm5lY3Rpb25Qb2ludHM/LmZpbmQoXG4gICAgICAgICAgICAgIChwKSA9PiBwLnR5cGUgPT09IGFjdGlvbi5UYXJnZXRQb2ludFR5cGU/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0YXJnZXRQb2ludElkID0gdGFyZ2V0UG9pbnQ/LmlkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBGYWxsYmFjayB0byBmaW5kaW5nIGEgc3VpdGFibGUgcG9pbnRcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldFBvaW50ID0gdGFyZ2V0Tm9kZS5jb25uZWN0aW9uUG9pbnRzPy5maW5kKFxuICAgICAgICAgICAgICAocCkgPT4gcC50eXBlID09PSAnbGVmdCcgfHwgcC50eXBlID09PSAndG9wJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRhcmdldFBvaW50SWQgPSB0YXJnZXRQb2ludD8uaWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5sb2coJ1NvdXJjZSBwb2ludDonLCBzb3VyY2VQb2ludElkKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnVGFyZ2V0IHBvaW50OicsIHRhcmdldFBvaW50SWQpO1xuXG4gICAgICAgICAgaWYgKHNvdXJjZVBvaW50SWQgJiYgdGFyZ2V0UG9pbnRJZCkge1xuICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHtcbiAgICAgICAgICAgICAgaWQ6IGFjdGlvbi5Db2RlLCAvLyBVc2Ugb3JpZ2luYWwgSURcbiAgICAgICAgICAgICAgc291cmNlTm9kZUlkOiBhY3Rpb24uRnJvbVN0YWdlLFxuICAgICAgICAgICAgICB0YXJnZXROb2RlSWQ6IGFjdGlvbi5Ub1N0YWdlLFxuICAgICAgICAgICAgICBzb3VyY2VQb2ludElkOiBzb3VyY2VQb2ludElkLFxuICAgICAgICAgICAgICB0YXJnZXRQb2ludElkOiB0YXJnZXRQb2ludElkLFxuICAgICAgICAgICAgICBzb3VyY2VTd2ltbGFuZUluZGV4OiBzb3VyY2VOb2RlSW5mby5zd2ltbGFuZUluZGV4LFxuICAgICAgICAgICAgICB0YXJnZXRTd2ltbGFuZUluZGV4OiB0YXJnZXROb2RlSW5mby5zd2ltbGFuZUluZGV4LFxuICAgICAgICAgICAgICBjb25kaXRpb246IGFjdGlvbi5QYXNzT25SdWxlIHx8ICcnLFxuICAgICAgICAgICAgICBsYWJlbDogYWN0aW9uLk5hbWUgfHwgJycsXG4gICAgICAgICAgICAgIGFjdGlvbjogYWN0aW9uLk9wZXJhdGlvbkFjdGlvbiB8fCBudWxsLFxuICAgICAgICAgICAgICB0YXJnZXRTdGF0dXM6IGFjdGlvbi5UYXJnZXRTdGF0dXMgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5jb25uZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24pO1xuXG4gICAgICAgICAgICAvLyBSZWdpc3RlciBsb2FkZWQgYWN0aW9uXG4gICAgICAgICAgICB0aGlzLnN0YXRlLnJlZ2lzdGVyTG9hZGVkT2JqZWN0KGFjdGlvbi5JZCwgYWN0aW9uLkNvZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gSGVscGVyIG1ldGhvZCB0byBmaW5kIHN3aW1sYW5lIGluZGV4IGJ5IExhbmUgSURcbiAgZmluZFN3aW1sYW5lSW5kZXhCeUxhbmVJZChsYW5lSWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgLy8gRmlyc3QgY2hlY2sgb3VyIG1hcHBpbmdcbiAgICBpZiAodGhpcy5zdGF0ZS5sYW5lSWRUb0luZGV4TWFwLmhhcyhsYW5lSWQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZS5sYW5lSWRUb0luZGV4TWFwLmdldChsYW5lSWQpITtcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayB0byB0aGUgb3JpZ2luYWwgbG9naWMgKGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxuICAgIGNvbnN0IHBhcnRzID0gbGFuZUlkLnNwbGl0KCctJyk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gcGFyc2VJbnQocGFydHNbMV0pO1xuICAgICAgaWYgKCFpc05hTihpbmRleCkgJiYgaW5kZXggPCB0aGlzLnN0YXRlLnN3aW1sYW5lcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8vIEhhbmRsZSB0b29sIHNlbGVjdGlvbiBmcm9tIHRvb2xiYXJcbiAgb25Ub29sU2VsZWN0ZWQodG9vbDogVG9vbFR5cGUpOiB2b2lkIHtcbiAgICAvLyBUb2dnbGUgc2VsZWN0aW9uIGlmIHRoZSBzYW1lIHRvb2wgaXMgY2xpY2tlZCBhZ2FpblxuICAgIHRoaXMuc2VsZWN0ZWRUb29sID0gdGhpcy5zZWxlY3RlZFRvb2wgPT09IHRvb2wgPyBudWxsIDogdG9vbDtcbiAgICBjb25zb2xlLmxvZygnU2VsZWN0ZWQgdG9vbDonLCB0aGlzLnNlbGVjdGVkVG9vbCk7XG4gIH1cblxuICBvcGVuU3dpbWxhbmVEaWFsb2coKSB7XG4gICAgY29uc29sZS5sb2coJ1NNTCBJTkRFWCcsIHRoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXgpO1xuICAgIGlmICh0aGlzLmVkaXRpbmdTd2ltbGFuZUluZGV4ICE9PSBudWxsKSB7XG4gICAgICBjb25zb2xlLmxvZygnU01MJywgdGhpcy5zdGF0ZS5zd2ltbGFuZXNbdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleF0pO1xuICAgICAgdGhpcy5lZGl0aW5nU3dpbWxhbmUuc2V0KHtcbiAgICAgICAgbmFtZTogdGhpcy5zdGF0ZS5zd2ltbGFuZXNbdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleF0ubGFiZWwsXG4gICAgICAgIHRhZ3M6IHRoaXMuc3RhdGUuc3dpbWxhbmVzW3RoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXhdLnRhZ3MsXG4gICAgICB9KTtcbiAgICAgIGNvbnNvbGUubG9nKCdTTUxfRURUJywgdGhpcy5lZGl0aW5nU3dpbWxhbmUoKSk7XG4gICAgfVxuICAgIHRoaXMuc2hvd1N3aW1sYW5lRGlhbG9nID0gdHJ1ZTtcbiAgfVxuXG5cblxuICBoYW5kbGVDYW52YXNQb3NpdGlvbkNsaWNrKGV2ZW50OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0pIHtcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XG5cbiAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGFuIGVkaXQgc3dpbWxhbmUgZXZlbnRcbiAgICBpZiAoXG4gICAgICBldmVudC54ID09PSAtMSAmJlxuICAgICAgZXZlbnQueSA+PSAwICYmXG4gICAgICBldmVudC55IDwgdGhpcy5zdGF0ZS5zd2ltbGFuZXMubGVuZ3RoXG4gICAgKSB7XG4gICAgICBjb25zb2xlLmxvZygnRWRpdGluZyBzd2ltbGFuZScsIGV2ZW50LnkpO1xuICAgICAgdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleCA9IGV2ZW50Lnk7XG4gICAgICB0aGlzLm9wZW5Td2ltbGFuZURpYWxvZygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE5vcm1hbCBjYW52YXMgY2xpY2sgaGFuZGxpbmdcbiAgICBjb25zdCBzd2ltbGFuZUluZGV4ID0gTWF0aC5mbG9vcihldmVudC55IC8gMjYzKTtcblxuICAgIHN3aXRjaCAodGhpcy5zZWxlY3RlZFRvb2wpIHtcbiAgICAgIGNhc2UgJ3N3aW1sYW5lJzpcbiAgICAgICAgY29uc29sZS5sb2coJ09wZW5pbmcgc3dpbWxhbmUgZGlhbG9nIGZvciBuZXcgc3dpbWxhbmUnKTtcbiAgICAgICAgdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleCA9IG51bGw7IC8vIFNldCB0byBudWxsIHRvIGluZGljYXRlIGNyZWF0aW5nIGEgbmV3IHN3aW1sYW5lXG4gICAgICAgIHRoaXMub3BlblN3aW1sYW5lRGlhbG9nKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUb29sID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdGFnZSc6XG4gICAgICAgIGlmIChzd2ltbGFuZUluZGV4ID49IDAgJiYgc3dpbWxhbmVJbmRleCA8IHRoaXMuc3RhdGUuc3dpbWxhbmVzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYEFkZGluZyAke3RoaXMuc2VsZWN0ZWRUb29sfSB0byBzd2ltbGFuZSAke3N3aW1sYW5lSW5kZXh9YFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBDcmVhdGUgdGhlIHN0YWdlIGRpcmVjdGx5IHdpdGggZGVmYXVsdCBwcm9wZXJ0aWVzXG4gICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhdGUuYWRkTm9kZShcbiAgICAgICAgICAgIHN3aW1sYW5lSW5kZXgsXG4gICAgICAgICAgICAnc3RhZ2UnLFxuICAgICAgICAgICAgZXZlbnQueCxcbiAgICAgICAgICAgIGV2ZW50LnksXG4gICAgICAgICAgICB7IE5hbWU6ICdOZXcgU3RhZ2UnIH0gLy8gQWRkIGRlZmF1bHQgcHJvcGVydGllc1xuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgLy8gUmVzZXQgdGhlIHNlbGVjdGVkIHRvb2wgYWZ0ZXIgcGxhY2luZyBhIG5vZGVcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUb29sID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkZWNpc2lvbic6XG4gICAgICBjYXNlICdmb3JtJzpcbiAgICAgICAgaWYgKHN3aW1sYW5lSW5kZXggPj0gMCAmJiBzd2ltbGFuZUluZGV4IDwgdGhpcy5zdGF0ZS5zd2ltbGFuZXMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBgQWRkaW5nICR7dGhpcy5zZWxlY3RlZFRvb2x9IHRvIHN3aW1sYW5lICR7c3dpbWxhbmVJbmRleH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5zdGF0ZS5hZGROb2RlKFxuICAgICAgICAgICAgc3dpbWxhbmVJbmRleCxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUb29sLFxuICAgICAgICAgICAgZXZlbnQueCxcbiAgICAgICAgICAgIGV2ZW50LnlcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICAvLyBSZXNldCB0aGUgc2VsZWN0ZWQgdG9vbCBhZnRlciBwbGFjaW5nIGEgbm9kZVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRvb2wgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3N1YmZsb3cnOlxuICAgICAgICBpZiAoc3dpbWxhbmVJbmRleCA+PSAwICYmIHN3aW1sYW5lSW5kZXggPCB0aGlzLnN0YXRlLnN3aW1sYW5lcy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGBBZGRpbmcgJHt0aGlzLnNlbGVjdGVkVG9vbH0gdG8gc3dpbWxhbmUgJHtzd2ltbGFuZUluZGV4fWBcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIFNob3cgc3ViZmxvdyB3b3JrZmxvdyBzZWxlY3Rpb24gcG9wdXBcbiAgICAgICAgICB0aGlzLmNhbnZhc1JlZi5zaG93U3ViZmxvd1NlbGVjdGlvblBvcHVwKFxuICAgICAgICAgICAgZXZlbnQueCxcbiAgICAgICAgICAgIGV2ZW50LnksXG4gICAgICAgICAgICBzd2ltbGFuZUluZGV4XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uU3dpbWxhbmVEaWFsb2dGaWxsZWQoZXZlbnQ6IHsgdGFnczogVGFnW107IG5hbWU6IHN0cmluZyB9KSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICAnU3dpbWxhbmUgZGlhbG9nIGZpbGxlZDonLFxuICAgICAgZXZlbnQsXG4gICAgICAnRWRpdGluZyBpbmRleDonLFxuICAgICAgdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleCAhPT0gbnVsbCkge1xuICAgICAgLy8gVXBkYXRlIGV4aXN0aW5nIHN3aW1sYW5lXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJ1VwZGF0aW5nIGV4aXN0aW5nIHN3aW1sYW5lIGF0IGluZGV4OicsXG4gICAgICAgIHRoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXhcbiAgICAgICk7XG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZVN3aW1sYW5lKFxuICAgICAgICB0aGlzLmVkaXRpbmdTd2ltbGFuZUluZGV4LFxuICAgICAgICBldmVudC5uYW1lLFxuICAgICAgICBldmVudC50YWdzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDcmVhdGUgbmV3IHN3aW1sYW5lXG4gICAgICBjb25zb2xlLmxvZygnQ3JlYXRpbmcgbmV3IHN3aW1sYW5lJyk7XG4gICAgICB0aGlzLnN0YXRlLmFkZFN3aW1sYW5lKGV2ZW50Lm5hbWUsIGV2ZW50LnRhZ3MpO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd1N3aW1sYW5lRGlhbG9nID0gZmFsc2U7XG4gICAgdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleCA9IG51bGw7XG4gIH1cblxuXG5cbiAgb25TdWJmbG93U2VsZWN0ZWQoKSB7XG4gICAgLy8gUmVzZXQgdGhlIHNlbGVjdGVkIHRvb2wgYWZ0ZXIgcGxhY2luZyBhIHN1YmZsb3cgbm9kZVxuICAgIHRoaXMuc2VsZWN0ZWRUb29sID0gbnVsbDtcbiAgfVxuXG4gIG9wZW5BY3RvclRhZ3NEaWFsb2coKSB7XG4gICAgdGhpcy5zaG93QWN0b3JUYWdzRGlhbG9nID0gdHJ1ZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIndvcmtmbG93LWRlc2lnbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1oZWFkZXJcIj5cbiAgICA8aDE+e3sgc3RhdGUud29ya2Zsb3c/Lk5hbWUgfX08L2gxPlxuICA8L2Rpdj5cblxuICA8IS0tIFRvb2xiYXIgQ29tcG9uZW50IC0tPlxuICA8bGliLWRlc2lnbmVyLXRvb2xiYXIgW3NlbGVjdGVkVG9vbF09XCJzZWxlY3RlZFRvb2xcIiBbaXNTYXZpbmddPVwiaXNTYXZpbmdcIlxuICAgIFt3b3JrZmxvd0NvZGVdPVwic3RhdGUud29ya2Zsb3c/LkNvZGUgfHwgbnVsbFwiICh0b29sU2VsZWN0ZWQpPVwib25Ub29sU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgKHNhdmVXb3JrZmxvdyk9XCJzYXZlV29ya2Zsb3coKVwiIChvcGVuQWN0b3JUYWdzKT1cIm9wZW5BY3RvclRhZ3NEaWFsb2coKVwiPlxuICA8L2xpYi1kZXNpZ25lci10b29sYmFyPlxuXG4gIDwhLS0gU2hvdyBsb2FkaW5nIGluZGljYXRvciBpZiBuZWVkZWQgLS0+XG4gIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdcIiBjbGFzcz1cImxvYWRpbmctb3ZlcmxheVwiPlxuICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nLXNwaW5uZXJcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy10ZXh0XCI+TG9hZGluZyB3b3JrZmxvdy4uLjwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIENhbnZhcyBDb21wb25lbnQgLS0+XG4gIDxsaWItZGVzaWduZXItY2FudmFzIFtzZWxlY3RlZFRvb2xdPVwic2VsZWN0ZWRUb29sXCIgKGNsaWNrZWRQb3NpdGlvbik9XCJoYW5kbGVDYW52YXNQb3NpdGlvbkNsaWNrKCRldmVudClcIlxuICAgIChzdWJmbG93U2VsZWN0ZWQpPVwib25TdWJmbG93U2VsZWN0ZWQoKVwiICNjYW52YXNSZWY+XG4gIDwvbGliLWRlc2lnbmVyLWNhbnZhcz5cblxuICA8bGliLXN3aW1sYW5lLWRpYWxvZyBbdmlzaWJsZV09XCJzaG93U3dpbWxhbmVEaWFsb2dcIiBbc3dpbWxhbmVEYXRhXT1cImVkaXRpbmdTd2ltbGFuZSgpXCJcbiAgICAoY3JlYXRlZCk9XCJvblN3aW1sYW5lRGlhbG9nRmlsbGVkKCRldmVudClcIiAoY2xvc2VkKT1cInNob3dTd2ltbGFuZURpYWxvZyA9IGZhbHNlXCI+PC9saWItc3dpbWxhbmUtZGlhbG9nPlxuXG4gIDxsaWItYWN0b3ItdGFncy1kaWFsb2cgW3Zpc2libGVdPVwic2hvd0FjdG9yVGFnc0RpYWxvZ1wiIFt3b3JrZmxvd0NvZGVdPVwic3RhdGUud29ya2Zsb3c/LkNvZGUgfHwgbnVsbFwiXG4gICAgKGNsb3NlZCk9XCJzaG93QWN0b3JUYWdzRGlhbG9nID0gZmFsc2VcIj48L2xpYi1hY3Rvci10YWdzLWRpYWxvZz5cbjwvZGl2PlxuIl19
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZGVzaWduZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy93b3JrZmxvdy1kZXNpZ25lci93b3JrZmxvdy1kZXNpZ25lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3dvcmtmbG93LWRlc2lnbmVyL3dvcmtmbG93LWRlc2lnbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBaUIsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7OztBQVlqRixNQUFNLE9BQU8seUJBQXlCO0lBaUIzQjtJQUNDO0lBQ0E7SUFsQmMsU0FBUyxDQUEyQjtJQUNuRCxZQUFZLEdBQWtCLElBQUksQ0FBQztJQUU1QywwQkFBMEI7SUFDMUIsWUFBWSxHQUFhLElBQUksQ0FBQztJQUM5QixrQkFBa0IsR0FBWSxLQUFLLENBQUM7SUFDcEMsbUJBQW1CLEdBQVksS0FBSyxDQUFDO0lBRXJDLG9CQUFvQixHQUFrQixJQUFJLENBQUM7SUFDM0MsZUFBZSxHQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVmLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUUxQixZQUNTLEtBQTRCLEVBQzNCLFdBQWdDLEVBQ2hDLFdBQXdCO1FBRnpCLFVBQUssR0FBTCxLQUFLLENBQXVCO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUM5QixDQUFD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QUMsb0JBQW9CLENBQzFCLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN2QywyQkFBMkI7WUFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FDVCxzQ0FBc0MsRUFDdEMsSUFBSSxDQUFDLG9CQUFvQixDQUMxQixDQUFDO1lBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsRUFDekIsS0FBSyxDQUFDLElBQUksRUFDVixLQUFLLENBQUMsSUFBSSxDQUNYLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLHNCQUFzQjtZQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztJQUNuQyxDQUFDO0lBSUQsaUJBQWlCO1FBQ2YsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztJQUNsQyxDQUFDO3dHQTFiVSx5QkFBeUI7NEZBQXpCLHlCQUF5QiwrTUNuQnRDLGd3Q0E0QkE7OzRGRFRhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx1QkFBdUI7c0pBS1QsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNiLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZCxcbiAgV3JpdGFibGVTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZSwgVGFnLCBXb3JrZmxvdyB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL3NlcnZpY2VzJztcbmltcG9ydCB7IERlc2lnbmVyQ2FudmFzQ29tcG9uZW50IH0gZnJvbSAnLi9kZXNpZ25lci1jYW52YXMvZGVzaWduZXItY2FudmFzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXb3JrZmxvd0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi93b3JrZmxvdy1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgV29ya2Zsb3dEZXNpZ25lclN0YXRlIH0gZnJvbSAnLi93b3JrZmxvdy1kZXNpZ25lci5zdGF0ZSc7XG5pbXBvcnQgeyBOb2RlLCBUb29sVHlwZSB9IGZyb20gJy4vd29ya2Zsb3ctZGVzaWduZXIudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItd29ya2Zsb3ctZGVzaWduZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vd29ya2Zsb3ctZGVzaWduZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vd29ya2Zsb3ctZGVzaWduZXIuY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtmbG93RGVzaWduZXJDb21wb25lbnQge1xuICBAVmlld0NoaWxkKCdjYW52YXNSZWYnKSBjYW52YXNSZWYhOiBEZXNpZ25lckNhbnZhc0NvbXBvbmVudDtcbiAgQElucHV0KCkgd29ya2Zsb3dDb2RlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAvLyBDdXJyZW50bHkgc2VsZWN0ZWQgdG9vbFxuICBzZWxlY3RlZFRvb2w6IFRvb2xUeXBlID0gbnVsbDtcbiAgc2hvd1N3aW1sYW5lRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dBY3RvclRhZ3NEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBlZGl0aW5nU3dpbWxhbmVJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGVkaXRpbmdTd2ltbGFuZTogV3JpdGFibGVTaWduYWw8eyBuYW1lOiBzdHJpbmc7IHRhZ3M6IFRhZ1tdIH0gfCBudWxsPiA9XG4gICAgc2lnbmFsKG51bGwpO1xuXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1NhdmluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzdGF0ZTogV29ya2Zsb3dEZXNpZ25lclN0YXRlLFxuICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IFdvcmtmbG93RGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1dGlsU2VydmljZTogVXRpbFNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBMb2FkIHdvcmtmbG93IGRhdGEgaWYgY29kZSBpcyBwcm92aWRlZFxuICAgIGlmICh0aGlzLndvcmtmbG93Q29kZSkge1xuICAgICAgdGhpcy5sb2FkV29ya2Zsb3codGhpcy53b3JrZmxvd0NvZGUpO1xuICAgIH1cbiAgfVxuXG4gIHNhdmVXb3JrZmxvdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1NhdmluZykgcmV0dXJuO1xuXG4gICAgdGhpcy5pc1NhdmluZyA9IHRydWU7XG5cbiAgICAvLyBUcmFuc2Zvcm0gdGhlIFVJIG1vZGVsIHRvIHRoZSBBUEkgbW9kZWxcbiAgICBjb25zdCB3b3JrZmxvd01vZGVsID0gdGhpcy5zdGF0ZS50cmFuc2Zvcm1Ub1dvcmtmbG93TW9kZWwoKTtcblxuICAgIGlmICh3b3JrZmxvd01vZGVsKSB7XG4gICAgICAvLyBTYXZlIHRvIHRoZSBiYWNrZW5kXG4gICAgICB0aGlzLmRhdGFTZXJ2aWNlXG4gICAgICAgIC5zYXZlV29ya2Zsb3dzKFt3b3JrZmxvd01vZGVsXSlcbiAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgdGhpcy51dGlsU2VydmljZS5zaG93RXJyb3IocmVzcG9uc2UuRXJyb3JNc2cpO1xuICAgICAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnV29ya2Zsb3cgc2F2ZWQgc3VjY2Vzc2Z1bGx5OicsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1dvcmtmbG93IHNhdmVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgICAgLy8gSWYgdGhlIEFQSSByZXR1cm5zIGFuIHVwZGF0ZWQgd29ya2Zsb3csIHdlIG1pZ2h0IHdhbnQgdG8gcmVsb2FkIGl0XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkV29ya2Zsb3cgPSByZXNwb25zZVswXTtcbiAgICAgICAgICAgIGlmICh1cGRhdGVkV29ya2Zsb3cpIHtcbiAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5zZXRXb3JrZmxvd0lkKHVwZGF0ZWRXb3JrZmxvdy5Db2RlKTtcbiAgICAgICAgICAgICAgdGhpcy5wYXJzZVdvcmtmbG93RGF0YSh1cGRhdGVkV29ya2Zsb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyB3b3JrZmxvdzonLCBlcnJvcik7XG4gICAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xuICAgICAgICAgIC8vIEhhbmRsZSBlcnJvciAtIHNob3cgYSBub3RpZmljYXRpb24sIGV0Yy5cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbG9hZFdvcmtmbG93KGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlXG4gICAgICAuZ2V0V29ya2Zsb3dXaXRoUGFyYW0oY29kZSlcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuUmVzdWx0KSB7XG4gICAgICAgICAgLy8gU3RvcmUgdGhlIHdvcmtmbG93IElEXG4gICAgICAgICAgY29uc3Qgd2YgPSByZXNwb25zZS5SZXN1bHRbMF07XG4gICAgICAgICAgdGhpcy5zdGF0ZS5zZXRXb3JrZmxvd0lkKHdmLkNvZGUpO1xuICAgICAgICAgIHRoaXMucGFyc2VXb3JrZmxvd0RhdGEod2YpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHdvcmtmbG93OicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gTWV0aG9kIHRvIHBhcnNlIHdvcmtmbG93IGRhdGEgZnJvbSBBUEkgYW5kIHBvcHVsYXRlIHRoZSBkZXNpZ25lclxuICBwYXJzZVdvcmtmbG93RGF0YSh3b3JrZmxvdzogV29ya2Zsb3cpOiB2b2lkIHtcbiAgICAvLyBTdG9yZSB0aGUgY29tcGxldGUgd29ya2Zsb3dcbiAgICB0aGlzLnN0YXRlLndvcmtmbG93ID0gd29ya2Zsb3c7XG5cbiAgICAvLyBDbGVhciBleGlzdGluZyBzdGF0ZVxuICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVzID0gW107XG4gICAgdGhpcy5zdGF0ZS5jb25uZWN0aW9ucyA9IFtdO1xuICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVSZWNvcmQgPSB7fTtcbiAgICB0aGlzLnN0YXRlLnN0YWdlUmVjb3JkID0ge307XG4gICAgdGhpcy5zdGF0ZS5hY3Rpb25SZWNvcmQgPSB7fTtcblxuICAgIC8vIFNldCB3b3JrZmxvdyBmb3JtIGlmIGV4aXN0c1xuICAgIGlmICh3b3JrZmxvdy5Gb3JtKSB7XG4gICAgICB0aGlzLnN0YXRlLnNldFdvcmtmbG93Rm9ybShcbiAgICAgICAgd29ya2Zsb3cuRm9ybSxcbiAgICAgICAgd29ya2Zsb3cuRm9ybU5hbWUgfHwgJ1dvcmtmbG93IEZvcm0nXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFN0b3JlIHRoZSB3b3JrZmxvdyBJRFxuICAgIHRoaXMuc3RhdGUuc2V0V29ya2Zsb3dJZCh3b3JrZmxvdy5Db2RlKTtcblxuICAgIC8vIFByb2Nlc3Mgc3dpbWxhbmVzIGZpcnN0XG4gICAgaWYgKHdvcmtmbG93LkxhbmVzICYmIHdvcmtmbG93LkxhbmVzLmxlbmd0aCkge1xuICAgICAgd29ya2Zsb3cuTGFuZXMuc29ydCgoYSwgYikgPT4gYS5Qb3NpdGlvbiAtIGIuUG9zaXRpb24pLmZvckVhY2goKGxhbmUpID0+IHtcbiAgICAgICAgLy8gU3RvcmUgb3JpZ2luYWwgbGFuZSBpbiByZWNvcmRcbiAgICAgICAgdGhpcy5zdGF0ZS5zd2ltbGFuZVJlY29yZFtsYW5lLkNvZGVdID0gbGFuZTtcblxuICAgICAgICAvLyBBZGQgc3dpbWxhbmUgdG8gVUkgbW9kZWwgd2l0aCB0aGUgb3JpZ2luYWwgSURcbiAgICAgICAgY29uc3Qgc3dpbWxhbmUgPSB7XG4gICAgICAgICAgb3JkZXI6IGxhbmUuUG9zaXRpb24sXG4gICAgICAgICAgbGFiZWw6IGxhbmUuTmFtZSB8fCBgTGFuZSAke2xhbmUuUG9zaXRpb259YCxcbiAgICAgICAgICB0YWdzOiBsYW5lLlRhZ3MgfHwgW10sXG4gICAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICAgIGlkOiBsYW5lLkNvZGUsIC8vIFN0b3JlIHRoZSBvcmlnaW5hbCBJRFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVzLnB1c2goc3dpbWxhbmUpO1xuXG4gICAgICAgIC8vIFJlZ2lzdGVyIGxvYWRlZCBvYmplY3RcbiAgICAgICAgdGhpcy5zdGF0ZS5yZWdpc3RlckxvYWRlZE9iamVjdChsYW5lLklkLCBsYW5lLkNvZGUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzcyBzdGFnZXNcbiAgICBpZiAod29ya2Zsb3cuU3RhZ2VzICYmIHdvcmtmbG93LlN0YWdlcy5sZW5ndGgpIHtcbiAgICAgIHdvcmtmbG93LlN0YWdlcy5mb3JFYWNoKChzdGFnZSkgPT4ge1xuICAgICAgICAvLyBTdG9yZSBvcmlnaW5hbCBzdGFnZSBpbiByZWNvcmRcbiAgICAgICAgdGhpcy5zdGF0ZS5zdGFnZVJlY29yZFtzdGFnZS5Db2RlXSA9IHN0YWdlO1xuXG4gICAgICAgIC8vIEZpbmQgc3dpbWxhbmUgaW5kZXggYnkgU3dpbUxhbmUgSURcbiAgICAgICAgY29uc3Qgc3dpbWxhbmVJbmRleCA9IHRoaXMuc3RhdGUuc3dpbWxhbmVzLmZpbmRJbmRleChcbiAgICAgICAgICAobGFuZSkgPT4gbGFuZS5pZCA9PT0gc3RhZ2UuU3dpbUxhbmVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoc3dpbWxhbmVJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBjb25zdCB4ID0gc3RhZ2UuQ29vcmRpbmF0ZXM/LlggfHwgMTAwO1xuICAgICAgICAgIGNvbnN0IHkgPSBzdGFnZS5Db29yZGluYXRlcz8uWSB8fCA1MDtcblxuICAgICAgICAgIC8vIENyZWF0ZSBub2RlIHdpdGggb3JpZ2luYWwgSURcbiAgICAgICAgICBjb25zdCBub2RlOiBOb2RlID0ge1xuICAgICAgICAgICAgaWQ6IHN0YWdlLkNvZGUsIC8vIFVzZSBvcmlnaW5hbCBJRFxuICAgICAgICAgICAgdHlwZTogc3RhZ2UuSXNTdWJQcm9jZXNzID8gJ3N1YmZsb3cnIDogKCdzdGFnZScgYXMgY29uc3QpLFxuICAgICAgICAgICAgeDogeCxcbiAgICAgICAgICAgIHk6IHksXG4gICAgICAgICAgICB3aWR0aDogMTY5LFxuICAgICAgICAgICAgaGVpZ2h0OiAxMDAsXG4gICAgICAgICAgICBpc1N0YXJ0Tm9kZTogc3RhZ2UuSXNFbnRyeVBvaW50LFxuICAgICAgICAgICAgc3RhZ2VEYXRhOiB7XG4gICAgICAgICAgICAgIE5hbWU6IHN0YWdlLk5hbWUsXG4gICAgICAgICAgICAgIERlc2NyaXB0aW9uOiBzdGFnZS5EZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgRHVyYXRpb246IHN0YWdlLkR1cmF0aW9uLFxuICAgICAgICAgICAgICBQYXNzT25SdWxlOiBzdGFnZS5QYXNzT25SdWxlLFxuICAgICAgICAgICAgICBBY3RvclJ1bGU6IHN0YWdlLkFjdG9yUnVsZSxcbiAgICAgICAgICAgICAgTWluTm9PZkFjdG9yOiBzdGFnZS5NaW5Ob09mQWN0b3IsXG4gICAgICAgICAgICAgIFRhZ3M6IHN0YWdlLlRhZ3MgfHwgW10sXG4gICAgICAgICAgICAgIElzUGFyYWxsZWw6IHN0YWdlLklzUGFyYWxsZWwsXG4gICAgICAgICAgICAgIElzRW50cnlQb2ludDogc3RhZ2UuSXNFbnRyeVBvaW50LFxuICAgICAgICAgICAgICBJc0V4aXRQb2ludDogc3RhZ2UuSXNFeGl0UG9pbnQsXG4gICAgICAgICAgICAgIElzU3ViUHJvY2Vzczogc3RhZ2UuSXNTdWJQcm9jZXNzLFxuICAgICAgICAgICAgICBBc3NpZ25tZW50VHlwZTogc3RhZ2UuQXNzaWdubWVudFR5cGUsXG4gICAgICAgICAgICAgIElkOiBzdGFnZS5JZCwgLy8gS2VlcCBvcmlnaW5hbCBJRFxuICAgICAgICAgICAgICBDb2RlOiBzdGFnZS5Db2RlLFxuICAgICAgICAgICAgICBGb3JtOiBzdGFnZS5Gb3JtLFxuICAgICAgICAgICAgICBmb3JtSWQ6IHN0YWdlLkZvcm0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29ubmVjdGlvblBvaW50czogW10sIC8vIEluaXRpYWxpemUgd2l0aCBlbXB0eSBhcnJheVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICAvLyBHZW5lcmF0ZSBjb25uZWN0aW9uIHBvaW50c1xuICAgICAgICAgIG5vZGUuY29ubmVjdGlvblBvaW50cyA9IHRoaXMuc3RhdGUuZ2VuZXJhdGVDb25uZWN0aW9uUG9pbnRzKG5vZGUpO1xuXG4gICAgICAgICAgLy8gQWRkIG5vZGUgdG8gc3dpbWxhbmVcbiAgICAgICAgICB0aGlzLnN0YXRlLnN3aW1sYW5lc1tzd2ltbGFuZUluZGV4XS5ub2RlcyA9XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnN3aW1sYW5lc1tzd2ltbGFuZUluZGV4XS5ub2RlcyB8fCBbXTtcbiAgICAgICAgICB0aGlzLnN0YXRlLnN3aW1sYW5lc1tzd2ltbGFuZUluZGV4XS5ub2Rlcy5wdXNoKG5vZGUpO1xuXG4gICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHN0YXJ0IG5vZGUsIHVwZGF0ZSBzdGF0ZVxuICAgICAgICAgIGlmIChzdGFnZS5Jc0VudHJ5UG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuc3RhcnROb2RlSWQgPSBzdGFnZS5Db2RlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFJlZ2lzdGVyIGxvYWRlZCBzdGFnZVxuICAgICAgICAgIHRoaXMuc3RhdGUucmVnaXN0ZXJMb2FkZWRPYmplY3Qoc3RhZ2UuSWQsIHN0YWdlLkNvZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIGNvbm5lY3Rpb25zL2FjdGlvbnNcbiAgICBpZiAod29ya2Zsb3cuQWN0aW9ucyAmJiB3b3JrZmxvdy5BY3Rpb25zLmxlbmd0aCkge1xuICAgICAgd29ya2Zsb3cuQWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgICAgLy8gU3RvcmUgb3JpZ2luYWwgYWN0aW9uIGluIHJlY29yZFxuICAgICAgICB0aGlzLnN0YXRlLmFjdGlvblJlY29yZFthY3Rpb24uQ29kZV0gPSBhY3Rpb247XG5cbiAgICAgICAgLy8gRmluZCBzb3VyY2UgYW5kIHRhcmdldCBub2Rlc1xuICAgICAgICBjb25zdCBzb3VyY2VOb2RlSW5mbyA9IHRoaXMuc3RhdGUuZmluZE5vZGVCeUlkKGFjdGlvbi5Gcm9tU3RhZ2UpO1xuICAgICAgICBjb25zdCB0YXJnZXROb2RlSW5mbyA9IHRoaXMuc3RhdGUuZmluZE5vZGVCeUlkKGFjdGlvbi5Ub1N0YWdlKTtcblxuICAgICAgICBjb25zb2xlLmxvZyhzb3VyY2VOb2RlSW5mbywgdGFyZ2V0Tm9kZUluZm8pO1xuXG4gICAgICAgIGlmIChzb3VyY2VOb2RlSW5mbyAmJiB0YXJnZXROb2RlSW5mbykge1xuICAgICAgICAgIC8vIEZpbmQgc3VpdGFibGUgY29ubmVjdGlvbiBwb2ludHNcbiAgICAgICAgICAvLyBjb25zdCBzb3VyY2VOb2RlID0gc291cmNlTm9kZUluZm8ubm9kZTtcbiAgICAgICAgICAvLyBjb25zdCB0YXJnZXROb2RlID0gdGFyZ2V0Tm9kZUluZm8ubm9kZTtcblxuICAgICAgICAgIC8vIGNvbnN0IHNvdXJjZVBvaW50ID0gc291cmNlTm9kZS5jb25uZWN0aW9uUG9pbnRzPy5maW5kKFxuICAgICAgICAgIC8vICAgKHApID0+IHAudHlwZSA9PT0gJ3JpZ2h0JyB8fCBwLnR5cGUgPT09ICdib3R0b20nXG4gICAgICAgICAgLy8gKTtcblxuICAgICAgICAgIC8vIGNvbnN0IHRhcmdldFBvaW50ID0gdGFyZ2V0Tm9kZS5jb25uZWN0aW9uUG9pbnRzPy5maW5kKFxuICAgICAgICAgIC8vICAgKHApID0+IHAudHlwZSA9PT0gJ2xlZnQnIHx8IHAudHlwZSA9PT0gJ3RvcCdcbiAgICAgICAgICAvLyApO1xuXG4gICAgICAgICAgY29uc3Qgc291cmNlTm9kZSA9IHNvdXJjZU5vZGVJbmZvLm5vZGU7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0Tm9kZSA9IHRhcmdldE5vZGVJbmZvLm5vZGU7XG5cbiAgICAgICAgICBsZXQgc291cmNlUG9pbnRJZCwgdGFyZ2V0UG9pbnRJZDtcblxuICAgICAgICAgIGNvbnNvbGUubG9nKGFjdGlvbi5Tb3VyY2VQb2ludFR5cGUsIGFjdGlvbi5UYXJnZXRQb2ludFR5cGUpO1xuXG4gICAgICAgICAgaWYgKGFjdGlvbi5Tb3VyY2VQb2ludFR5cGUpIHtcbiAgICAgICAgICAgIC8vIEZpbmQgYSBwb2ludCB3aXRoIG1hdGNoaW5nIHR5cGVcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZVBvaW50ID0gc291cmNlTm9kZS5jb25uZWN0aW9uUG9pbnRzPy5maW5kKFxuICAgICAgICAgICAgICAocCkgPT4gcC50eXBlID09PSBhY3Rpb24uU291cmNlUG9pbnRUeXBlPy50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgc291cmNlUG9pbnRJZCA9IHNvdXJjZVBvaW50Py5pZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRmFsbGJhY2sgdG8gZmluZGluZyBhIHN1aXRhYmxlIHBvaW50XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VQb2ludCA9IHNvdXJjZU5vZGUuY29ubmVjdGlvblBvaW50cz8uZmluZChcbiAgICAgICAgICAgICAgKHApID0+IHAudHlwZSA9PT0gJ3JpZ2h0JyB8fCBwLnR5cGUgPT09ICdib3R0b20nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgc291cmNlUG9pbnRJZCA9IHNvdXJjZVBvaW50Py5pZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYWN0aW9uLlRhcmdldFBvaW50VHlwZSkge1xuICAgICAgICAgICAgLy8gRmluZCBhIHBvaW50IHdpdGggbWF0Y2hpbmcgdHlwZVxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0UG9pbnQgPSB0YXJnZXROb2RlLmNvbm5lY3Rpb25Qb2ludHM/LmZpbmQoXG4gICAgICAgICAgICAgIChwKSA9PiBwLnR5cGUgPT09IGFjdGlvbi5UYXJnZXRQb2ludFR5cGU/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0YXJnZXRQb2ludElkID0gdGFyZ2V0UG9pbnQ/LmlkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBGYWxsYmFjayB0byBmaW5kaW5nIGEgc3VpdGFibGUgcG9pbnRcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldFBvaW50ID0gdGFyZ2V0Tm9kZS5jb25uZWN0aW9uUG9pbnRzPy5maW5kKFxuICAgICAgICAgICAgICAocCkgPT4gcC50eXBlID09PSAnbGVmdCcgfHwgcC50eXBlID09PSAndG9wJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRhcmdldFBvaW50SWQgPSB0YXJnZXRQb2ludD8uaWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5sb2coJ1NvdXJjZSBwb2ludDonLCBzb3VyY2VQb2ludElkKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnVGFyZ2V0IHBvaW50OicsIHRhcmdldFBvaW50SWQpO1xuXG4gICAgICAgICAgaWYgKHNvdXJjZVBvaW50SWQgJiYgdGFyZ2V0UG9pbnRJZCkge1xuICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHtcbiAgICAgICAgICAgICAgaWQ6IGFjdGlvbi5Db2RlLCAvLyBVc2Ugb3JpZ2luYWwgSURcbiAgICAgICAgICAgICAgc291cmNlTm9kZUlkOiBhY3Rpb24uRnJvbVN0YWdlLFxuICAgICAgICAgICAgICB0YXJnZXROb2RlSWQ6IGFjdGlvbi5Ub1N0YWdlLFxuICAgICAgICAgICAgICBzb3VyY2VQb2ludElkOiBzb3VyY2VQb2ludElkLFxuICAgICAgICAgICAgICB0YXJnZXRQb2ludElkOiB0YXJnZXRQb2ludElkLFxuICAgICAgICAgICAgICBzb3VyY2VTd2ltbGFuZUluZGV4OiBzb3VyY2VOb2RlSW5mby5zd2ltbGFuZUluZGV4LFxuICAgICAgICAgICAgICB0YXJnZXRTd2ltbGFuZUluZGV4OiB0YXJnZXROb2RlSW5mby5zd2ltbGFuZUluZGV4LFxuICAgICAgICAgICAgICBjb25kaXRpb246IGFjdGlvbi5QYXNzT25SdWxlIHx8ICcnLFxuICAgICAgICAgICAgICBsYWJlbDogYWN0aW9uLk5hbWUgfHwgJycsXG4gICAgICAgICAgICAgIGFjdGlvbjogYWN0aW9uLk9wZXJhdGlvbkFjdGlvbiB8fCBudWxsLFxuICAgICAgICAgICAgICB0YXJnZXRTdGF0dXM6IGFjdGlvbi5UYXJnZXRTdGF0dXMgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5jb25uZWN0aW9ucy5wdXNoKGNvbm5lY3Rpb24pO1xuXG4gICAgICAgICAgICAvLyBSZWdpc3RlciBsb2FkZWQgYWN0aW9uXG4gICAgICAgICAgICB0aGlzLnN0YXRlLnJlZ2lzdGVyTG9hZGVkT2JqZWN0KGFjdGlvbi5JZCwgYWN0aW9uLkNvZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gSGVscGVyIG1ldGhvZCB0byBmaW5kIHN3aW1sYW5lIGluZGV4IGJ5IExhbmUgSURcbiAgZmluZFN3aW1sYW5lSW5kZXhCeUxhbmVJZChsYW5lSWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgLy8gRmlyc3QgY2hlY2sgb3VyIG1hcHBpbmdcbiAgICBpZiAodGhpcy5zdGF0ZS5sYW5lSWRUb0luZGV4TWFwLmhhcyhsYW5lSWQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZS5sYW5lSWRUb0luZGV4TWFwLmdldChsYW5lSWQpITtcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayB0byB0aGUgb3JpZ2luYWwgbG9naWMgKGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxuICAgIGNvbnN0IHBhcnRzID0gbGFuZUlkLnNwbGl0KCctJyk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gcGFyc2VJbnQocGFydHNbMV0pO1xuICAgICAgaWYgKCFpc05hTihpbmRleCkgJiYgaW5kZXggPCB0aGlzLnN0YXRlLnN3aW1sYW5lcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8vIEhhbmRsZSB0b29sIHNlbGVjdGlvbiBmcm9tIHRvb2xiYXJcbiAgb25Ub29sU2VsZWN0ZWQodG9vbDogVG9vbFR5cGUpOiB2b2lkIHtcbiAgICAvLyBUb2dnbGUgc2VsZWN0aW9uIGlmIHRoZSBzYW1lIHRvb2wgaXMgY2xpY2tlZCBhZ2FpblxuICAgIHRoaXMuc2VsZWN0ZWRUb29sID0gdGhpcy5zZWxlY3RlZFRvb2wgPT09IHRvb2wgPyBudWxsIDogdG9vbDtcbiAgICBjb25zb2xlLmxvZygnU2VsZWN0ZWQgdG9vbDonLCB0aGlzLnNlbGVjdGVkVG9vbCk7XG4gIH1cblxuICBvcGVuU3dpbWxhbmVEaWFsb2coKSB7XG4gICAgY29uc29sZS5sb2coJ1NNTCBJTkRFWCcsIHRoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXgpO1xuICAgIGlmICh0aGlzLmVkaXRpbmdTd2ltbGFuZUluZGV4ICE9PSBudWxsKSB7XG4gICAgICBjb25zb2xlLmxvZygnU01MJywgdGhpcy5zdGF0ZS5zd2ltbGFuZXNbdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleF0pO1xuICAgICAgdGhpcy5lZGl0aW5nU3dpbWxhbmUuc2V0KHtcbiAgICAgICAgbmFtZTogdGhpcy5zdGF0ZS5zd2ltbGFuZXNbdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleF0ubGFiZWwsXG4gICAgICAgIHRhZ3M6IHRoaXMuc3RhdGUuc3dpbWxhbmVzW3RoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXhdLnRhZ3MsXG4gICAgICB9KTtcbiAgICAgIGNvbnNvbGUubG9nKCdTTUxfRURUJywgdGhpcy5lZGl0aW5nU3dpbWxhbmUoKSk7XG4gICAgfVxuICAgIHRoaXMuc2hvd1N3aW1sYW5lRGlhbG9nID0gdHJ1ZTtcbiAgfVxuXG5cblxuICBoYW5kbGVDYW52YXNQb3NpdGlvbkNsaWNrKGV2ZW50OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0pIHtcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XG5cbiAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGFuIGVkaXQgc3dpbWxhbmUgZXZlbnRcbiAgICBpZiAoXG4gICAgICBldmVudC54ID09PSAtMSAmJlxuICAgICAgZXZlbnQueSA+PSAwICYmXG4gICAgICBldmVudC55IDwgdGhpcy5zdGF0ZS5zd2ltbGFuZXMubGVuZ3RoXG4gICAgKSB7XG4gICAgICBjb25zb2xlLmxvZygnRWRpdGluZyBzd2ltbGFuZScsIGV2ZW50LnkpO1xuICAgICAgdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleCA9IGV2ZW50Lnk7XG4gICAgICB0aGlzLm9wZW5Td2ltbGFuZURpYWxvZygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE5vcm1hbCBjYW52YXMgY2xpY2sgaGFuZGxpbmdcbiAgICBjb25zdCBzd2ltbGFuZUluZGV4ID0gTWF0aC5mbG9vcihldmVudC55IC8gMjYzKTtcblxuICAgIHN3aXRjaCAodGhpcy5zZWxlY3RlZFRvb2wpIHtcbiAgICAgIGNhc2UgJ3N3aW1sYW5lJzpcbiAgICAgICAgY29uc29sZS5sb2coJ09wZW5pbmcgc3dpbWxhbmUgZGlhbG9nIGZvciBuZXcgc3dpbWxhbmUnKTtcbiAgICAgICAgdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleCA9IG51bGw7IC8vIFNldCB0byBudWxsIHRvIGluZGljYXRlIGNyZWF0aW5nIGEgbmV3IHN3aW1sYW5lXG4gICAgICAgIHRoaXMub3BlblN3aW1sYW5lRGlhbG9nKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUb29sID0gbnVsbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdGFnZSc6XG4gICAgICAgIGlmIChzd2ltbGFuZUluZGV4ID49IDAgJiYgc3dpbWxhbmVJbmRleCA8IHRoaXMuc3RhdGUuc3dpbWxhbmVzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYEFkZGluZyAke3RoaXMuc2VsZWN0ZWRUb29sfSB0byBzd2ltbGFuZSAke3N3aW1sYW5lSW5kZXh9YFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBDcmVhdGUgdGhlIHN0YWdlIGRpcmVjdGx5IHdpdGggZGVmYXVsdCBwcm9wZXJ0aWVzXG4gICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhdGUuYWRkTm9kZShcbiAgICAgICAgICAgIHN3aW1sYW5lSW5kZXgsXG4gICAgICAgICAgICAnc3RhZ2UnLFxuICAgICAgICAgICAgZXZlbnQueCxcbiAgICAgICAgICAgIGV2ZW50LnksXG4gICAgICAgICAgICB7IE5hbWU6ICdOZXcgU3RhZ2UnIH0gLy8gQWRkIGRlZmF1bHQgcHJvcGVydGllc1xuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgLy8gUmVzZXQgdGhlIHNlbGVjdGVkIHRvb2wgYWZ0ZXIgcGxhY2luZyBhIG5vZGVcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUb29sID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkZWNpc2lvbic6XG4gICAgICBjYXNlICdmb3JtJzpcbiAgICAgICAgaWYgKHN3aW1sYW5lSW5kZXggPj0gMCAmJiBzd2ltbGFuZUluZGV4IDwgdGhpcy5zdGF0ZS5zd2ltbGFuZXMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBgQWRkaW5nICR7dGhpcy5zZWxlY3RlZFRvb2x9IHRvIHN3aW1sYW5lICR7c3dpbWxhbmVJbmRleH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5zdGF0ZS5hZGROb2RlKFxuICAgICAgICAgICAgc3dpbWxhbmVJbmRleCxcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUb29sLFxuICAgICAgICAgICAgZXZlbnQueCxcbiAgICAgICAgICAgIGV2ZW50LnlcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICAvLyBSZXNldCB0aGUgc2VsZWN0ZWQgdG9vbCBhZnRlciBwbGFjaW5nIGEgbm9kZVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRvb2wgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3N1YmZsb3cnOlxuICAgICAgICBpZiAoc3dpbWxhbmVJbmRleCA+PSAwICYmIHN3aW1sYW5lSW5kZXggPCB0aGlzLnN0YXRlLnN3aW1sYW5lcy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGBBZGRpbmcgJHt0aGlzLnNlbGVjdGVkVG9vbH0gdG8gc3dpbWxhbmUgJHtzd2ltbGFuZUluZGV4fWBcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIFNob3cgc3ViZmxvdyB3b3JrZmxvdyBzZWxlY3Rpb24gcG9wdXBcbiAgICAgICAgICB0aGlzLmNhbnZhc1JlZi5zaG93U3ViZmxvd1NlbGVjdGlvblBvcHVwKFxuICAgICAgICAgICAgZXZlbnQueCxcbiAgICAgICAgICAgIGV2ZW50LnksXG4gICAgICAgICAgICBzd2ltbGFuZUluZGV4XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uU3dpbWxhbmVEaWFsb2dGaWxsZWQoZXZlbnQ6IHsgdGFnczogVGFnW107IG5hbWU6IHN0cmluZyB9KSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICAnU3dpbWxhbmUgZGlhbG9nIGZpbGxlZDonLFxuICAgICAgZXZlbnQsXG4gICAgICAnRWRpdGluZyBpbmRleDonLFxuICAgICAgdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleCAhPT0gbnVsbCkge1xuICAgICAgLy8gVXBkYXRlIGV4aXN0aW5nIHN3aW1sYW5lXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgJ1VwZGF0aW5nIGV4aXN0aW5nIHN3aW1sYW5lIGF0IGluZGV4OicsXG4gICAgICAgIHRoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXhcbiAgICAgICk7XG4gICAgICB0aGlzLnN0YXRlLnVwZGF0ZVN3aW1sYW5lKFxuICAgICAgICB0aGlzLmVkaXRpbmdTd2ltbGFuZUluZGV4LFxuICAgICAgICBldmVudC5uYW1lLFxuICAgICAgICBldmVudC50YWdzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDcmVhdGUgbmV3IHN3aW1sYW5lXG4gICAgICBjb25zb2xlLmxvZygnQ3JlYXRpbmcgbmV3IHN3aW1sYW5lJyk7XG4gICAgICB0aGlzLnN0YXRlLmFkZFN3aW1sYW5lKGV2ZW50Lm5hbWUsIGV2ZW50LnRhZ3MpO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd1N3aW1sYW5lRGlhbG9nID0gZmFsc2U7XG4gICAgdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleCA9IG51bGw7XG4gIH1cblxuXG5cbiAgb25TdWJmbG93U2VsZWN0ZWQoKSB7XG4gICAgLy8gUmVzZXQgdGhlIHNlbGVjdGVkIHRvb2wgYWZ0ZXIgcGxhY2luZyBhIHN1YmZsb3cgbm9kZVxuICAgIHRoaXMuc2VsZWN0ZWRUb29sID0gbnVsbDtcbiAgfVxuXG4gIG9wZW5BY3RvclRhZ3NEaWFsb2coKSB7XG4gICAgdGhpcy5zaG93QWN0b3JUYWdzRGlhbG9nID0gdHJ1ZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIndvcmtmbG93LWRlc2lnbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1oZWFkZXJcIj5cbiAgICA8aDE+e3sgc3RhdGUud29ya2Zsb3c/Lk5hbWUgfX08L2gxPlxuICA8L2Rpdj5cblxuICA8IS0tIFRvb2xiYXIgQ29tcG9uZW50IC0tPlxuICA8bGliLWRlc2lnbmVyLXRvb2xiYXIgW3NlbGVjdGVkVG9vbF09XCJzZWxlY3RlZFRvb2xcIiBbaXNTYXZpbmddPVwiaXNTYXZpbmdcIlxuICAgIFt3b3JrZmxvd0NvZGVdPVwic3RhdGUud29ya2Zsb3c/LkNvZGUgfHwgbnVsbFwiICh0b29sU2VsZWN0ZWQpPVwib25Ub29sU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgKHNhdmVXb3JrZmxvdyk9XCJzYXZlV29ya2Zsb3coKVwiIChvcGVuQWN0b3JUYWdzKT1cIm9wZW5BY3RvclRhZ3NEaWFsb2coKVwiPlxuICA8L2xpYi1kZXNpZ25lci10b29sYmFyPlxuXG4gIDwhLS0gU2hvdyBsb2FkaW5nIGluZGljYXRvciBpZiBuZWVkZWQgLS0+XG4gIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdcIiBjbGFzcz1cImxvYWRpbmctb3ZlcmxheVwiPlxuICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nLXNwaW5uZXJcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy10ZXh0XCI+TG9hZGluZyB3b3JrZmxvdy4uLjwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIENhbnZhcyBDb21wb25lbnQgLS0+XG4gIDxsaWItZGVzaWduZXItY2FudmFzIFtzZWxlY3RlZFRvb2xdPVwic2VsZWN0ZWRUb29sXCIgKGNsaWNrZWRQb3NpdGlvbik9XCJoYW5kbGVDYW52YXNQb3NpdGlvbkNsaWNrKCRldmVudClcIlxuICAgIChzdWJmbG93U2VsZWN0ZWQpPVwib25TdWJmbG93U2VsZWN0ZWQoKVwiICNjYW52YXNSZWY+XG4gIDwvbGliLWRlc2lnbmVyLWNhbnZhcz5cblxuICA8bGliLXN3aW1sYW5lLWRpYWxvZyBbdmlzaWJsZV09XCJzaG93U3dpbWxhbmVEaWFsb2dcIiBbc3dpbWxhbmVEYXRhXT1cImVkaXRpbmdTd2ltbGFuZSgpXCJcbiAgICAoY3JlYXRlZCk9XCJvblN3aW1sYW5lRGlhbG9nRmlsbGVkKCRldmVudClcIiAoY2xvc2VkKT1cInNob3dTd2ltbGFuZURpYWxvZyA9IGZhbHNlXCI+PC9saWItc3dpbWxhbmUtZGlhbG9nPlxuXG4gIDxsaWItYWN0b3ItdGFncy1kaWFsb2cgW3Zpc2libGVdPVwic2hvd0FjdG9yVGFnc0RpYWxvZ1wiIFt3b3JrZmxvd0NvZGVdPVwic3RhdGUud29ya2Zsb3c/LkNvZGUgfHwgbnVsbFwiXG4gICAgKGNsb3NlZCk9XCJzaG93QWN0b3JUYWdzRGlhbG9nID0gZmFsc2VcIj48L2xpYi1hY3Rvci10YWdzLWRpYWxvZz5cbjwvZGl2PlxuIl19
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, EventEmitter, Component, Input, Output, input, effect, signal, ViewChild, HostListener, NgModule } from '@angular/core';
3
- import { ObjectState, TaskAssignmentType, Status, StageActorRule, EscalationType, TaskNotificationType } from 'verben-workflow-ui/src/lib/models';
3
+ import { ObjectState, TaskAssignmentType, Status, StageActorRule, EscalationType, TaskNotificationType, ErrorResponse } from 'verben-workflow-ui/src/lib/models';
4
4
  import * as i1 from 'verben-workflow-ui/src/lib/services';
5
5
  import * as i3 from '@angular/common';
6
6
  import { CommonModule } from '@angular/common';
@@ -715,7 +715,7 @@ class WorkflowDataService {
715
715
  return this.httpService.get(url, this.envSvc.environment.AuthAPI);
716
716
  }
717
717
  saveWorkflows(requests) {
718
- const url = `${this.WORKFLOW_MODEL_BASE_PATH}/xSaveWorkflows`;
718
+ const url = `${this.WORKFLOW_MODEL_BASE_PATH}/SaveWorkflows`;
719
719
  // console.log('Saving workflows', requests);
720
720
  return this.httpService.post(url, requests, this.envSvc.environment.WorkFlowAPI);
721
721
  }
@@ -3641,15 +3641,21 @@ class WorkflowDesignerComponent {
3641
3641
  this.dataService
3642
3642
  .saveWorkflows([workflowModel])
3643
3643
  .then((response) => {
3644
- console.log('Workflow saved successfully:', response);
3645
- this.utilService.showSuccess('Workflow saved successfully');
3646
- // If the API returns an updated workflow, we might want to reload it
3647
- const updatedWorkflow = response[0];
3648
- if (updatedWorkflow) {
3649
- this.state.setWorkflowId(updatedWorkflow.Code);
3650
- this.parseWorkflowData(updatedWorkflow);
3644
+ if (response instanceof ErrorResponse) {
3645
+ this.utilService.showError(response.ErrorMsg);
3646
+ this.isSaving = false;
3647
+ }
3648
+ else {
3649
+ // console.log('Workflow saved successfully:', response);
3650
+ this.utilService.showSuccess('Workflow saved successfully');
3651
+ // If the API returns an updated workflow, we might want to reload it
3652
+ const updatedWorkflow = response[0];
3653
+ if (updatedWorkflow) {
3654
+ this.state.setWorkflowId(updatedWorkflow.Code);
3655
+ this.parseWorkflowData(updatedWorkflow);
3656
+ }
3657
+ this.isSaving = false;
3651
3658
  }
3652
- this.isSaving = false;
3653
3659
  })
3654
3660
  .catch((error) => {
3655
3661
  console.error('Error saving workflow:', error);