verben-workflow-ui 0.5.44 → 0.5.46

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.
Files changed (53) hide show
  1. package/esm2022/public-api.mjs +3 -1
  2. package/esm2022/src/lib/components/flowable-status/flowable-status.columns.mjs +21 -0
  3. package/esm2022/src/lib/components/flowable-status/flowable-status.component.mjs +122 -0
  4. package/esm2022/src/lib/components/flowable-status/flowable-status.facade.mjs +207 -0
  5. package/esm2022/src/lib/components/flowable-status/flowable-status.form.component.mjs +52 -0
  6. package/esm2022/src/lib/components/flowable-status/flowable-status.module.mjs +21 -0
  7. package/esm2022/src/lib/components/flowable-status/flowable-status.service.mjs +55 -0
  8. package/esm2022/src/lib/components/flowable-status/flowable-status.state.mjs +85 -0
  9. package/esm2022/src/lib/components/flowable-status/index.mjs +2 -0
  10. package/esm2022/src/lib/components/flowable-status/public-api.mjs +3 -0
  11. package/esm2022/src/lib/components/flowable-status/verben-workflow-ui-src-lib-components-flowable-status.mjs +5 -0
  12. package/esm2022/src/lib/components/form-response/form-response.component.mjs +52 -47
  13. package/esm2022/src/lib/components/form-response/form-response.service.mjs +2 -2
  14. package/esm2022/src/lib/components/forms/forms.component.mjs +3 -3
  15. package/esm2022/src/lib/components/workflow-designer/action-dialog/action-dialog.component.mjs +14 -4
  16. package/esm2022/src/lib/components/workflow-designer/designer-canvas/designer-canvas.component.mjs +3 -1
  17. package/esm2022/src/lib/components/workflow-designer/workflow-data.service.mjs +6 -1
  18. package/esm2022/src/lib/components/workflow-designer/workflow-designer.component.mjs +2 -1
  19. package/esm2022/src/lib/components/workflow-designer/workflow-designer.state.mjs +5 -1
  20. package/esm2022/src/lib/components/workflow-designer/workflow-designer.types.mjs +1 -1
  21. package/esm2022/src/lib/models/FlowableStatus.mjs +2 -0
  22. package/esm2022/src/lib/models/WorkflowAction.mjs +1 -1
  23. package/esm2022/src/lib/models/public-api.mjs +2 -1
  24. package/fesm2022/verben-workflow-ui-src-lib-components-flowable-status.mjs +545 -0
  25. package/fesm2022/verben-workflow-ui-src-lib-components-flowable-status.mjs.map +1 -0
  26. package/fesm2022/verben-workflow-ui-src-lib-components-form-response.mjs +52 -47
  27. package/fesm2022/verben-workflow-ui-src-lib-components-form-response.mjs.map +1 -1
  28. package/fesm2022/verben-workflow-ui-src-lib-components-forms.mjs +2 -2
  29. package/fesm2022/verben-workflow-ui-src-lib-components-forms.mjs.map +1 -1
  30. package/fesm2022/verben-workflow-ui-src-lib-components-workflow-designer.mjs +25 -3
  31. package/fesm2022/verben-workflow-ui-src-lib-components-workflow-designer.mjs.map +1 -1
  32. package/fesm2022/verben-workflow-ui.mjs +1 -3
  33. package/fesm2022/verben-workflow-ui.mjs.map +1 -1
  34. package/package.json +31 -25
  35. package/public-api.d.ts +1 -0
  36. package/src/lib/components/flowable-status/flowable-status.columns.d.ts +3 -0
  37. package/src/lib/components/flowable-status/flowable-status.component.d.ts +34 -0
  38. package/src/lib/components/flowable-status/flowable-status.facade.d.ts +32 -0
  39. package/src/lib/components/flowable-status/flowable-status.form.component.d.ts +18 -0
  40. package/src/lib/components/flowable-status/flowable-status.module.d.ts +11 -0
  41. package/src/lib/components/flowable-status/flowable-status.service.d.ts +36 -0
  42. package/src/lib/components/flowable-status/flowable-status.state.d.ts +30 -0
  43. package/src/lib/components/flowable-status/index.d.ts +1 -0
  44. package/src/lib/components/flowable-status/public-api.d.ts +2 -0
  45. package/src/lib/components/form-response/form-response.component.d.ts +25 -24
  46. package/src/lib/components/form-response/form-response.service.d.ts +1 -1
  47. package/src/lib/components/workflow-designer/action-dialog/action-dialog.component.d.ts +3 -1
  48. package/src/lib/components/workflow-designer/workflow-data.service.d.ts +3 -1
  49. package/src/lib/components/workflow-designer/workflow-designer.types.d.ts +2 -2
  50. package/src/lib/models/FlowableStatus.d.ts +5 -0
  51. package/src/lib/models/WorkflowAction.d.ts +1 -0
  52. package/src/lib/models/public-api.d.ts +1 -0
  53. package/styles/styles.css +0 -8
@@ -12,6 +12,7 @@ export class WorkflowDataService {
12
12
  RS_MODEL_BASE_PATH = 'Report';
13
13
  UTIL_BASE_PATH = 'Util';
14
14
  ACTOR_MODEL_BASE_PATH = 'Actor';
15
+ FLOWABLE_STATUS_MODEL_BASE_PATH = 'Status';
15
16
  constructor(httpService, envSvc) {
16
17
  this.httpService = httpService;
17
18
  this.envSvc = envSvc;
@@ -78,6 +79,10 @@ export class WorkflowDataService {
78
79
  const url = `${this.ACTOR_MODEL_BASE_PATH}/SaveActorTags`;
79
80
  return this.httpService.post(url, requests, this.envSvc.environment.WorkFlowAPI);
80
81
  }
82
+ getFlowableStatuses(skip = 0, limit = 0) {
83
+ const url = `${this.FLOWABLE_STATUS_MODEL_BASE_PATH}/GetFlowableStatus/${skip}/${limit}/CreatedAt/Desc`;
84
+ return this.httpService.get(url);
85
+ }
81
86
  // Helper to create a mock workflow (just for demo)
82
87
  createMockWorkflow(code) {
83
88
  // Return a simple workflow with one lane and one stage
@@ -155,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
155
160
  providedIn: 'root',
156
161
  }]
157
162
  }], ctorParameters: () => [{ type: i1.HttpWebRequestService }, { type: i1.EnvironmentService }] });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy93b3JrZmxvdy1kZXNpZ25lci93b3JrZmxvdy1kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQThCLFdBQVcsRUFBMEMsY0FBYyxFQUFFLE1BQU0sRUFBTyxrQkFBa0IsRUFBMkIsTUFBTSxtQ0FBbUMsQ0FBQzs7O0FBTTlNLE1BQU0sT0FBTyxtQkFBbUI7SUFVcEI7SUFDQTtJQVZPLHdCQUF3QixHQUFHLFVBQVUsQ0FBQztJQUN0QyxvQkFBb0IsR0FBRyxNQUFNLENBQUM7SUFDOUIsb0JBQW9CLEdBQUcsTUFBTSxDQUFDO0lBQzlCLDBCQUEwQixHQUFHLFlBQVksQ0FBQztJQUMxQyxrQkFBa0IsR0FBRyxRQUFRLENBQUM7SUFDOUIsY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUN4QixxQkFBcUIsR0FBRyxPQUFPLENBQUM7SUFFakQsWUFDVSxXQUFrQyxFQUNsQyxNQUEwQjtRQUQxQixnQkFBVyxHQUFYLFdBQVcsQ0FBdUI7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7SUFDaEMsQ0FBQztJQUVMLG9CQUFvQixDQUNsQixLQUFhLEVBQ2IsT0FBZSxDQUFDLEVBQ2hCLFFBQWdCLENBQUMsRUFDakIsWUFBb0IsV0FBVyxFQUMvQixZQUFvQixLQUFLO1FBRXpCLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLHdCQUF3QiwwQkFBMEIsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLElBQUksU0FBUyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ3pILE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUE2QixD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V0FBVztvQkFDakIsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLEVBQUUsRUFBRSxXQUFXO29CQUNmLFdBQVcsRUFBRSxrQkFBa0I7b0JBQy9CLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtvQkFDckIsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFO29CQUNyQixTQUFTLEVBQUUsV0FBVyxDQUFDLFNBQVM7b0JBQ2hDLFFBQVEsRUFBRSxjQUFjO29CQUN4QixJQUFJLEVBQUUsZUFBZTtvQkFDckIsV0FBVyxFQUFFLGdCQUFnQjtvQkFDN0IsUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLEVBQUU7b0JBQ2QsU0FBUyxFQUFFLGNBQWMsQ0FBQyxJQUFJO29CQUM5QixZQUFZLEVBQUUsQ0FBQztvQkFDZixVQUFVLEVBQUUsS0FBSztvQkFDakIsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLFdBQVcsRUFBRSxLQUFLO29CQUNsQixJQUFJLEVBQUUsRUFBRTtvQkFDUixJQUFJLEVBQUUsRUFBRTtvQkFDUixvQkFBb0IsRUFBRSxLQUFLO29CQUMzQixjQUFjLEVBQUUsa0JBQWtCLENBQUMsU0FBUztvQkFDNUMsV0FBVyxFQUFFLEVBQUU7b0JBQ2YsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLFdBQVcsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtvQkFDOUIsWUFBWSxFQUFFLEtBQUs7aUJBQ3BCO2FBQ0Y7U0FDRixDQUFDO1FBRUYsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzt3R0FsTlUsbUJBQW1COzRHQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdG9yVGFnLCBFc2NhbGF0aW9uLCBGb3JtLCBPYmplY3RTdGF0ZSwgT3BlcmF0aW9uQWN0aW9uLCBQYWdlZCwgUmVwb3J0U2NoZWR1bGUsIFN0YWdlQWN0b3JSdWxlLCBTdGF0dXMsIFRhZywgVGFza0Fzc2lnbm1lbnRUeXBlLCBXb3JrZmxvdywgV29ya2Zsb3dTdGFnZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UsIEh0dHBXZWJSZXF1ZXN0U2VydmljZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL3NlcnZpY2VzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtmbG93RGF0YVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IFdPUktGTE9XX01PREVMX0JBU0VfUEFUSCA9ICdXb3JrZmxvdyc7XG4gIHByaXZhdGUgcmVhZG9ubHkgQVVUSF9NT0RFTF9CQVNFX1BBVEggPSAnVXNlcic7XG4gIHByaXZhdGUgcmVhZG9ubHkgRk9STV9NT0RFTF9CQVNFX1BBVEggPSAnRm9ybSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgRVNDQUxBVElPTl9NT0RFTF9CQVNFX1BBVEggPSAnRXNjYWxhdGlvbic7XG4gIHByaXZhdGUgcmVhZG9ubHkgUlNfTU9ERUxfQkFTRV9QQVRIID0gJ1JlcG9ydCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgVVRJTF9CQVNFX1BBVEggPSAnVXRpbCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgQUNUT1JfTU9ERUxfQkFTRV9QQVRIID0gJ0FjdG9yJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwV2ViUmVxdWVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbnZTdmM6IEVudmlyb25tZW50U2VydmljZVxuICApIHsgfVxuXG4gIGdldFdvcmtmbG93V2l0aFBhcmFtKFxuICAgIHBhcmFtOiBzdHJpbmcsXG4gICAgc2tpcDogbnVtYmVyID0gMCxcbiAgICBsaW1pdDogbnVtYmVyID0gMSxcbiAgICBzb3J0UGFyYW06IHN0cmluZyA9ICdDcmVhdGVkQXQnLFxuICAgIHNvcnRPcmRlcjogc3RyaW5nID0gJ0FzYydcbiAgKTogUHJvbWlzZTxQYWdlZDxXb3JrZmxvdz4+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLldPUktGTE9XX01PREVMX0JBU0VfUEFUSH0vR2V0V29ya2Zsb3dzV2l0aFBhcmFtLyR7cGFyYW19LyR7c2tpcH0vJHtsaW1pdH0vJHtzb3J0UGFyYW19LyR7c29ydE9yZGVyfWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0KHVybCkgYXMgUHJvbWlzZTxQYWdlZDxXb3JrZmxvdz4+O1xuICB9XG5cbiAgZ2V0V29ya2Zsb3dzKHNraXA6IG51bWJlciA9IDAsIGxpbWl0OiBudW1iZXIgPSAwKTogUHJvbWlzZTxQYWdlZDxXb3JrZmxvdz4+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLldPUktGTE9XX01PREVMX0JBU0VfUEFUSH0vR2V0V29ya2Zsb3dzLyR7c2tpcH0vJHtsaW1pdH1gO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldChcbiAgICAgIHVybCxcbiAgICAgIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LldvcmtGbG93QVBJXG4gICAgKSBhcyBQcm9taXNlPFBhZ2VkPFdvcmtmbG93Pj47XG4gIH1cblxuICBnZXRGb3Jtcyhza2lwOiBudW1iZXIgPSAwLCBsaW1pdDogbnVtYmVyID0gMCk6IFByb21pc2U8UGFnZWQ8Rm9ybT4+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLkZPUk1fTU9ERUxfQkFTRV9QQVRIfS9HZXRGb3Jtcy8ke3NraXB9LyR7bGltaXR9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXQoXG4gICAgICB1cmwsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5Xb3JrRmxvd0FQSVxuICAgICkgYXMgUHJvbWlzZTxQYWdlZDxGb3JtPj47XG4gIH1cblxuICBnZXRUYWdzKHNraXA6IG51bWJlciA9IDAsIGxpbWl0OiBudW1iZXIgPSAwKTogUHJvbWlzZTxQYWdlZDxUYWc+PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5BVVRIX01PREVMX0JBU0VfUEFUSH0vR2V0VGFncy8ke3NraXB9LyR7bGltaXR9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXQoXG4gICAgICB1cmwsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BdXRoQVBJXG4gICAgKSBhcyBQcm9taXNlPFBhZ2VkPFRhZz4+O1xuICB9XG5cbiAgc2F2ZVdvcmtmbG93cyhyZXF1ZXN0czogUGFydGlhbDxXb3JrZmxvdz5bXSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5XT1JLRkxPV19NT0RFTF9CQVNFX1BBVEh9L1NhdmVXb3JrZmxvd3NgO1xuICAgIC8vIGNvbnNvbGUubG9nKCdTYXZpbmcgd29ya2Zsb3dzJywgcmVxdWVzdHMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QoXG4gICAgICB1cmwsXG4gICAgICByZXF1ZXN0cyxcbiAgICAgIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LldvcmtGbG93QVBJXG4gICAgKTtcbiAgfVxuXG4gIGRlbGV0ZVdvcmtmbG93U3RhZ2VzKHJlcXVlc3RzOiBXb3JrZmxvd1N0YWdlWydDb2RlJ11bXSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5XT1JLRkxPV19NT0RFTF9CQVNFX1BBVEh9L0RlbGV0ZVdvcmtmbG93U3RhZ2VgO1xuICAgIC8vIGNvbnNvbGUubG9nKCdTYXZpbmcgd29ya2Zsb3dzJywgcmVxdWVzdHMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QoXG4gICAgICB1cmwsXG4gICAgICByZXF1ZXN0cyxcbiAgICAgIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LldvcmtGbG93QVBJXG4gICAgKTtcbiAgfVxuXG4gIHNhdmVFc2NhbGF0aW9ucyhyZXF1ZXN0czogUGFydGlhbDxFc2NhbGF0aW9uPltdKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLkVTQ0FMQVRJT05fTU9ERUxfQkFTRV9QQVRIfS9TYXZlRXNjYWxhdGlvbnNgO1xuICAgIC8vIGNvbnNvbGUubG9nKCdTYXZpbmcgd29ya2Zsb3dzJywgcmVxdWVzdHMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QoXG4gICAgICB1cmwsXG4gICAgICByZXF1ZXN0cyxcbiAgICAgIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LldvcmtGbG93QVBJXG4gICAgKTtcbiAgfVxuXG4gIHNlYXJjaEVzY2FsYXRpb25XaXRoUGFyYW0oXG4gICAgcGFyYW1zOiBQaWNrPEVzY2FsYXRpb24sICdXb3JrZmxvdycgfCAnU3RhZ2UnIHwgJ1R5cGUnPixcbiAgICBza2lwOiBudW1iZXIgPSAwLFxuICAgIGxpbWl0OiBudW1iZXIgPSAxLFxuICAgIHNvcnRPcmRlcjogc3RyaW5nID0gJ0FzYydcbiAgKTogUHJvbWlzZTxQYWdlZDxFc2NhbGF0aW9uPj4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuRVNDQUxBVElPTl9NT0RFTF9CQVNFX1BBVEh9L1NlYXJjaEVzY2FsYXRpb25zLyR7c2tpcH0vJHtsaW1pdH1gO1xuICAgIGNvbnN0IHBheWxvYWQgPSBPYmplY3QuZW50cmllcyhwYXJhbXMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgSXNBdXRvRnJvbURhdGU6IHRydWUsXG4gICAgICBJc0F1dG9FbmREYXRlOiB0cnVlLFxuICAgICAgUHJvcGVydHlOYW1lOiBrZXksXG4gICAgICBFbnRpdHlWYWx1ZTogdmFsdWUsXG4gICAgICBUeXBlOiAnU3RyaW5nJyxcbiAgICAgIE9wZXJhdG9yOiAnQW5kJyxcbiAgICAgIFNpZ246ICdFUScsXG4gICAgICBTb3J0OiBzb3J0T3JkZXIsXG4gICAgICAvLyBGaWVsZHM6IFsnc3RyaW5nJ10sXG4gICAgfSkpO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QodXJsLCBwYXlsb2FkKSBhcyBQcm9taXNlPFBhZ2VkPEVzY2FsYXRpb24+PjtcbiAgfVxuXG4gIGdldEVzY2FsYXRpb25XaXRoUGFyYW0oXG4gICAgcGFyYW06IHN0cmluZyxcbiAgICBza2lwOiBudW1iZXIgPSAwLFxuICAgIGxpbWl0OiBudW1iZXIgPSAxLFxuICAgIHNvcnRQYXJhbTogc3RyaW5nID0gJ0NyZWF0ZWRBdCcsXG4gICAgc29ydE9yZGVyOiBzdHJpbmcgPSAnQXNjJ1xuICApOiBQcm9taXNlPFBhZ2VkPEVzY2FsYXRpb24+PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5FU0NBTEFUSU9OX01PREVMX0JBU0VfUEFUSH0vR2V0RXNjYWxhdGlvbnNXaXRoUGFyYW0vJHtwYXJhbX0vJHtza2lwfS8ke2xpbWl0fS8ke3NvcnRQYXJhbX0vJHtzb3J0T3JkZXJ9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXQodXJsKSBhcyBQcm9taXNlPFBhZ2VkPEVzY2FsYXRpb24+PjtcbiAgfVxuXG4gIGdldFJlcG9ydFNjaGVkdWxlcyhcbiAgICBza2lwOiBudW1iZXIgPSAwLFxuICAgIGxpbWl0OiBudW1iZXIgPSAwXG4gICk6IFByb21pc2U8UGFnZWQ8UmVwb3J0U2NoZWR1bGU+PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5SU19NT0RFTF9CQVNFX1BBVEh9L0dldFJlcG9ydFNjaGVkdWxlcy8ke3NraXB9LyR7bGltaXR9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXQoXG4gICAgICB1cmwsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5SZXBvcnRpbmdBUElcbiAgICApIGFzIFByb21pc2U8UGFnZWQ8UmVwb3J0U2NoZWR1bGU+PjtcbiAgfVxuXG4gIGdldE9wZXJhdGlvbkFjdGlvbnMoXG4gICAgc2tpcDogbnVtYmVyID0gMCxcbiAgICBsaW1pdDogbnVtYmVyID0gMFxuICApOiBQcm9taXNlPFBhZ2VkPE9wZXJhdGlvbkFjdGlvbj4+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLlVUSUxfQkFTRV9QQVRIfS9HZXRPcGVyYXRpb25BY3Rpb25gO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldChcbiAgICAgIHVybCxcbiAgICAgIC8vIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkdMQVBJXG4gICAgKSBhcyBQcm9taXNlPFBhZ2VkPE9wZXJhdGlvbkFjdGlvbj4+O1xuICB9XG5cbiAgc2F2ZUFjdG9yVGFncyhyZXF1ZXN0czogQWN0b3JUYWdbXSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5BQ1RPUl9NT0RFTF9CQVNFX1BBVEh9L1NhdmVBY3RvclRhZ3NgO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnBvc3QoXG4gICAgICB1cmwsXG4gICAgICByZXF1ZXN0cyxcbiAgICAgIHRoaXMuZW52U3ZjLmVudmlyb25tZW50LldvcmtGbG93QVBJXG4gICAgKTtcbiAgfVxuXG4gIC8vIEhlbHBlciB0byBjcmVhdGUgYSBtb2NrIHdvcmtmbG93IChqdXN0IGZvciBkZW1vKVxuICBwcml2YXRlIGNyZWF0ZU1vY2tXb3JrZmxvdyhjb2RlOiBzdHJpbmcpOiBXb3JrZmxvdyB7XG4gICAgLy8gUmV0dXJuIGEgc2ltcGxlIHdvcmtmbG93IHdpdGggb25lIGxhbmUgYW5kIG9uZSBzdGFnZVxuICAgIGNvbnN0IHdvcmtmbG93OiBXb3JrZmxvdyA9IHtcbiAgICAgIElkOiAnd29ya2Zsb3ctMTIzJyxcbiAgICAgIENvZGU6IGNvZGUsXG4gICAgICBUZW5hbnRJZDogJ3RlbmFudC0xJyxcbiAgICAgIGlkOiAnd29ya2Zsb3ctMTIzJyxcbiAgICAgIFNlcnZpY2VOYW1lOiAnd29ya2Zsb3ctc2VydmljZScsXG4gICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLlVuY2hhbmdlZCxcbiAgICAgIE5hbWU6ICdTYW1wbGUgV29ya2Zsb3cnLFxuICAgICAgRGVzY3JpcHRpb246ICdBIHNhbXBsZSB3b3JrZmxvdyBsb2FkZWQgZnJvbSBBUEknLFxuICAgICAgU3RhZ2VFbnRyeVJ1bGU6ICcnLFxuICAgICAgQXNzaWdubWVudFR5cGU6IFRhc2tBc3NpZ25tZW50VHlwZS5BdXRvUm91dGUsXG4gICAgICBTdGF0dXM6IFN0YXR1cy5BY3RpdmUsXG4gICAgICBBY3Rpb25zOiBbXSxcbiAgICAgIExhbmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBJZDogJ2xhbmUtMCcsXG4gICAgICAgICAgQ29kZTogJ2xhbmUtMCcsXG4gICAgICAgICAgVGVuYW50SWQ6ICd0ZW5hbnQtMScsXG4gICAgICAgICAgaWQ6ICdsYW5lLTAnLFxuICAgICAgICAgIFNlcnZpY2VOYW1lOiAnd29ya2Zsb3ctc2VydmljZScsXG4gICAgICAgICAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLlVuY2hhbmdlZCxcbiAgICAgICAgICBXb3JrZmxvdzogJ3dvcmtmbG93LTEyMycsXG4gICAgICAgICAgVGFnczogW10sXG4gICAgICAgICAgUG9zaXRpb246IDAsXG4gICAgICAgICAgQ29vcmRpbmF0ZXM6IHsgWDogMCwgWTogMCB9LFxuICAgICAgICAgIFNpemU6IHsgV2lkdGg6IDMwMDAsIEhlaWdodDogMjYzIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgU3RhZ2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBJZDogJ3N0YWdlLTEyMycsXG4gICAgICAgICAgQ29kZTogJ3N0YWdlLTEyMycsXG4gICAgICAgICAgVGVuYW50SWQ6ICd0ZW5hbnQtMScsXG4gICAgICAgICAgaWQ6ICdzdGFnZS0xMjMnLFxuICAgICAgICAgIFNlcnZpY2VOYW1lOiAnd29ya2Zsb3ctc2VydmljZScsXG4gICAgICAgICAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLlVuY2hhbmdlZCxcbiAgICAgICAgICBXb3JrZmxvdzogJ3dvcmtmbG93LTEyMycsXG4gICAgICAgICAgTmFtZTogJ0luaXRpYWwgU3RhZ2UnLFxuICAgICAgICAgIERlc2NyaXB0aW9uOiAnU3RhcnRpbmcgcG9pbnQnLFxuICAgICAgICAgIER1cmF0aW9uOiAyNCxcbiAgICAgICAgICBQYXNzT25SdWxlOiAnJyxcbiAgICAgICAgICBBY3RvclJ1bGU6IFN0YWdlQWN0b3JSdWxlLk5vbmUsXG4gICAgICAgICAgTWluTm9PZkFjdG9yOiAxLFxuICAgICAgICAgIElzUGFyYWxsZWw6IGZhbHNlLFxuICAgICAgICAgIElzRW50cnlQb2ludDogdHJ1ZSxcbiAgICAgICAgICBJc0V4aXRQb2ludDogZmFsc2UsXG4gICAgICAgICAgVGFnczogW10sXG4gICAgICAgICAgRm9ybTogJycsXG4gICAgICAgICAgQWxsb3dNdWx0aVN1YlByb2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIEFzc2lnbm1lbnRUeXBlOiBUYXNrQXNzaWdubWVudFR5cGUuQXV0b1JvdXRlLFxuICAgICAgICAgIFN1YldvcmtGbG93OiAnJyxcbiAgICAgICAgICBTd2ltTGFuZTogJ2xhbmUtMCcsXG4gICAgICAgICAgQ29vcmRpbmF0ZXM6IHsgWDogMTAwLCBZOiA1MCB9LFxuICAgICAgICAgIElzU3ViUHJvY2VzczogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG5cbiAgICByZXR1cm4gd29ya2Zsb3c7XG4gIH1cbn1cbiJdfQ==
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy93b3JrZmxvdy1kZXNpZ25lci93b3JrZmxvdy1kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQThDLFdBQVcsRUFBMEMsY0FBYyxFQUFFLE1BQU0sRUFBTyxrQkFBa0IsRUFBMkIsTUFBTSxtQ0FBbUMsQ0FBQzs7O0FBTTlOLE1BQU0sT0FBTyxtQkFBbUI7SUFXcEI7SUFDQTtJQVhPLHdCQUF3QixHQUFHLFVBQVUsQ0FBQztJQUN0QyxvQkFBb0IsR0FBRyxNQUFNLENBQUM7SUFDOUIsb0JBQW9CLEdBQUcsTUFBTSxDQUFDO0lBQzlCLDBCQUEwQixHQUFHLFlBQVksQ0FBQztJQUMxQyxrQkFBa0IsR0FBRyxRQUFRLENBQUM7SUFDOUIsY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUN4QixxQkFBcUIsR0FBRyxPQUFPLENBQUM7SUFDaEMsK0JBQStCLEdBQUcsUUFBUSxDQUFDO0lBRTVELFlBQ1UsV0FBa0MsRUFDbEMsTUFBMEI7UUFEMUIsZ0JBQVcsR0FBWCxXQUFXLENBQXVCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQW9CO0lBQ2hDLENBQUM7SUFFTCxvQkFBb0IsQ0FDbEIsS0FBYSxFQUNiLE9BQWUsQ0FBQyxFQUNoQixRQUFnQixDQUFDLEVBQ2pCLFlBQW9CLFdBQVcsRUFDL0IsWUFBb0IsS0FBSztRQUV6QixNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsMEJBQTBCLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLFNBQVMsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUN6SCxPQUFPLElBQUksQ0FBQyxXQUFX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VSxtQkFBbUI7NEdBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0b3JUYWcsIEVzY2FsYXRpb24sIEZsb3dhYmxlU3RhdHVzLCBGb3JtLCBPYmplY3RTdGF0ZSwgT3BlcmF0aW9uQWN0aW9uLCBQYWdlZCwgUmVwb3J0U2NoZWR1bGUsIFN0YWdlQWN0b3JSdWxlLCBTdGF0dXMsIFRhZywgVGFza0Fzc2lnbm1lbnRUeXBlLCBXb3JrZmxvdywgV29ya2Zsb3dTdGFnZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UsIEh0dHBXZWJSZXF1ZXN0U2VydmljZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL3NlcnZpY2VzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtmbG93RGF0YVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IFdPUktGTE9XX01PREVMX0JBU0VfUEFUSCA9ICdXb3JrZmxvdyc7XG4gIHByaXZhdGUgcmVhZG9ubHkgQVVUSF9NT0RFTF9CQVNFX1BBVEggPSAnVXNlcic7XG4gIHByaXZhdGUgcmVhZG9ubHkgRk9STV9NT0RFTF9CQVNFX1BBVEggPSAnRm9ybSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgRVNDQUxBVElPTl9NT0RFTF9CQVNFX1BBVEggPSAnRXNjYWxhdGlvbic7XG4gIHByaXZhdGUgcmVhZG9ubHkgUlNfTU9ERUxfQkFTRV9QQVRIID0gJ1JlcG9ydCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgVVRJTF9CQVNFX1BBVEggPSAnVXRpbCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgQUNUT1JfTU9ERUxfQkFTRV9QQVRIID0gJ0FjdG9yJztcbiAgcHJpdmF0ZSByZWFkb25seSBGTE9XQUJMRV9TVEFUVVNfTU9ERUxfQkFTRV9QQVRIID0gJ1N0YXR1cyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFdlYlJlcXVlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW52U3ZjOiBFbnZpcm9ubWVudFNlcnZpY2VcbiAgKSB7IH1cblxuICBnZXRXb3JrZmxvd1dpdGhQYXJhbShcbiAgICBwYXJhbTogc3RyaW5nLFxuICAgIHNraXA6IG51bWJlciA9IDAsXG4gICAgbGltaXQ6IG51bWJlciA9IDEsXG4gICAgc29ydFBhcmFtOiBzdHJpbmcgPSAnQ3JlYXRlZEF0JyxcbiAgICBzb3J0T3JkZXI6IHN0cmluZyA9ICdBc2MnXG4gICk6IFByb21pc2U8UGFnZWQ8V29ya2Zsb3c+PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5XT1JLRkxPV19NT0RFTF9CQVNFX1BBVEh9L0dldFdvcmtmbG93c1dpdGhQYXJhbS8ke3BhcmFtfS8ke3NraXB9LyR7bGltaXR9LyR7c29ydFBhcmFtfS8ke3NvcnRPcmRlcn1gO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldCh1cmwpIGFzIFByb21pc2U8UGFnZWQ8V29ya2Zsb3c+PjtcbiAgfVxuXG4gIGdldFdvcmtmbG93cyhza2lwOiBudW1iZXIgPSAwLCBsaW1pdDogbnVtYmVyID0gMCk6IFByb21pc2U8UGFnZWQ8V29ya2Zsb3c+PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5XT1JLRkxPV19NT0RFTF9CQVNFX1BBVEh9L0dldFdvcmtmbG93cy8ke3NraXB9LyR7bGltaXR9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXQoXG4gICAgICB1cmwsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5Xb3JrRmxvd0FQSVxuICAgICkgYXMgUHJvbWlzZTxQYWdlZDxXb3JrZmxvdz4+O1xuICB9XG5cbiAgZ2V0Rm9ybXMoc2tpcDogbnVtYmVyID0gMCwgbGltaXQ6IG51bWJlciA9IDApOiBQcm9taXNlPFBhZ2VkPEZvcm0+PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5GT1JNX01PREVMX0JBU0VfUEFUSH0vR2V0Rm9ybXMvJHtza2lwfS8ke2xpbWl0fWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0KFxuICAgICAgdXJsLFxuICAgICAgdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuV29ya0Zsb3dBUElcbiAgICApIGFzIFByb21pc2U8UGFnZWQ8Rm9ybT4+O1xuICB9XG5cbiAgZ2V0VGFncyhza2lwOiBudW1iZXIgPSAwLCBsaW1pdDogbnVtYmVyID0gMCk6IFByb21pc2U8UGFnZWQ8VGFnPj4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuQVVUSF9NT0RFTF9CQVNFX1BBVEh9L0dldFRhZ3MvJHtza2lwfS8ke2xpbWl0fWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0KFxuICAgICAgdXJsLFxuICAgICAgdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuQXV0aEFQSVxuICAgICkgYXMgUHJvbWlzZTxQYWdlZDxUYWc+PjtcbiAgfVxuXG4gIHNhdmVXb3JrZmxvd3MocmVxdWVzdHM6IFBhcnRpYWw8V29ya2Zsb3c+W10pOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuV09SS0ZMT1dfTU9ERUxfQkFTRV9QQVRIfS9TYXZlV29ya2Zsb3dzYDtcbiAgICAvLyBjb25zb2xlLmxvZygnU2F2aW5nIHdvcmtmbG93cycsIHJlcXVlc3RzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5wb3N0KFxuICAgICAgdXJsLFxuICAgICAgcmVxdWVzdHMsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5Xb3JrRmxvd0FQSVxuICAgICk7XG4gIH1cblxuICBkZWxldGVXb3JrZmxvd1N0YWdlcyhyZXF1ZXN0czogV29ya2Zsb3dTdGFnZVsnQ29kZSddW10pOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuV09SS0ZMT1dfTU9ERUxfQkFTRV9QQVRIfS9EZWxldGVXb3JrZmxvd1N0YWdlYDtcbiAgICAvLyBjb25zb2xlLmxvZygnU2F2aW5nIHdvcmtmbG93cycsIHJlcXVlc3RzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5wb3N0KFxuICAgICAgdXJsLFxuICAgICAgcmVxdWVzdHMsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5Xb3JrRmxvd0FQSVxuICAgICk7XG4gIH1cblxuICBzYXZlRXNjYWxhdGlvbnMocmVxdWVzdHM6IFBhcnRpYWw8RXNjYWxhdGlvbj5bXSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5FU0NBTEFUSU9OX01PREVMX0JBU0VfUEFUSH0vU2F2ZUVzY2FsYXRpb25zYDtcbiAgICAvLyBjb25zb2xlLmxvZygnU2F2aW5nIHdvcmtmbG93cycsIHJlcXVlc3RzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5wb3N0KFxuICAgICAgdXJsLFxuICAgICAgcmVxdWVzdHMsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5Xb3JrRmxvd0FQSVxuICAgICk7XG4gIH1cblxuICBzZWFyY2hFc2NhbGF0aW9uV2l0aFBhcmFtKFxuICAgIHBhcmFtczogUGljazxFc2NhbGF0aW9uLCAnV29ya2Zsb3cnIHwgJ1N0YWdlJyB8ICdUeXBlJz4sXG4gICAgc2tpcDogbnVtYmVyID0gMCxcbiAgICBsaW1pdDogbnVtYmVyID0gMSxcbiAgICBzb3J0T3JkZXI6IHN0cmluZyA9ICdBc2MnXG4gICk6IFByb21pc2U8UGFnZWQ8RXNjYWxhdGlvbj4+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLkVTQ0FMQVRJT05fTU9ERUxfQkFTRV9QQVRIfS9TZWFyY2hFc2NhbGF0aW9ucy8ke3NraXB9LyR7bGltaXR9YDtcbiAgICBjb25zdCBwYXlsb2FkID0gT2JqZWN0LmVudHJpZXMocGFyYW1zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICAgIElzQXV0b0Zyb21EYXRlOiB0cnVlLFxuICAgICAgSXNBdXRvRW5kRGF0ZTogdHJ1ZSxcbiAgICAgIFByb3BlcnR5TmFtZToga2V5LFxuICAgICAgRW50aXR5VmFsdWU6IHZhbHVlLFxuICAgICAgVHlwZTogJ1N0cmluZycsXG4gICAgICBPcGVyYXRvcjogJ0FuZCcsXG4gICAgICBTaWduOiAnRVEnLFxuICAgICAgU29ydDogc29ydE9yZGVyLFxuICAgICAgLy8gRmllbGRzOiBbJ3N0cmluZyddLFxuICAgIH0pKTtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5wb3N0KHVybCwgcGF5bG9hZCkgYXMgUHJvbWlzZTxQYWdlZDxFc2NhbGF0aW9uPj47XG4gIH1cblxuICBnZXRFc2NhbGF0aW9uV2l0aFBhcmFtKFxuICAgIHBhcmFtOiBzdHJpbmcsXG4gICAgc2tpcDogbnVtYmVyID0gMCxcbiAgICBsaW1pdDogbnVtYmVyID0gMSxcbiAgICBzb3J0UGFyYW06IHN0cmluZyA9ICdDcmVhdGVkQXQnLFxuICAgIHNvcnRPcmRlcjogc3RyaW5nID0gJ0FzYydcbiAgKTogUHJvbWlzZTxQYWdlZDxFc2NhbGF0aW9uPj4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuRVNDQUxBVElPTl9NT0RFTF9CQVNFX1BBVEh9L0dldEVzY2FsYXRpb25zV2l0aFBhcmFtLyR7cGFyYW19LyR7c2tpcH0vJHtsaW1pdH0vJHtzb3J0UGFyYW19LyR7c29ydE9yZGVyfWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0KHVybCkgYXMgUHJvbWlzZTxQYWdlZDxFc2NhbGF0aW9uPj47XG4gIH1cblxuICBnZXRSZXBvcnRTY2hlZHVsZXMoXG4gICAgc2tpcDogbnVtYmVyID0gMCxcbiAgICBsaW1pdDogbnVtYmVyID0gMFxuICApOiBQcm9taXNlPFBhZ2VkPFJlcG9ydFNjaGVkdWxlPj4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuUlNfTU9ERUxfQkFTRV9QQVRIfS9HZXRSZXBvcnRTY2hlZHVsZXMvJHtza2lwfS8ke2xpbWl0fWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuZ2V0KFxuICAgICAgdXJsLFxuICAgICAgdGhpcy5lbnZTdmMuZW52aXJvbm1lbnQuUmVwb3J0aW5nQVBJXG4gICAgKSBhcyBQcm9taXNlPFBhZ2VkPFJlcG9ydFNjaGVkdWxlPj47XG4gIH1cblxuICBnZXRPcGVyYXRpb25BY3Rpb25zKFxuICAgIHNraXA6IG51bWJlciA9IDAsXG4gICAgbGltaXQ6IG51bWJlciA9IDBcbiAgKTogUHJvbWlzZTxQYWdlZDxPcGVyYXRpb25BY3Rpb24+PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5VVElMX0JBU0VfUEFUSH0vR2V0T3BlcmF0aW9uQWN0aW9uYDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5nZXQoXG4gICAgICB1cmwsXG4gICAgICAvLyB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5HTEFQSVxuICAgICkgYXMgUHJvbWlzZTxQYWdlZDxPcGVyYXRpb25BY3Rpb24+PjtcbiAgfVxuXG4gIHNhdmVBY3RvclRhZ3MocmVxdWVzdHM6IEFjdG9yVGFnW10pOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuQUNUT1JfTU9ERUxfQkFTRV9QQVRIfS9TYXZlQWN0b3JUYWdzYDtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5wb3N0KFxuICAgICAgdXJsLFxuICAgICAgcmVxdWVzdHMsXG4gICAgICB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5Xb3JrRmxvd0FQSVxuICAgICk7XG4gIH1cblxuICBnZXRGbG93YWJsZVN0YXR1c2VzKFxuICAgIHNraXA6IG51bWJlciA9IDAsXG4gICAgbGltaXQ6IG51bWJlciA9IDBcbiAgKTogUHJvbWlzZTxQYWdlZDxGbG93YWJsZVN0YXR1cz4+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLkZMT1dBQkxFX1NUQVRVU19NT0RFTF9CQVNFX1BBVEh9L0dldEZsb3dhYmxlU3RhdHVzLyR7c2tpcH0vJHtsaW1pdH0vQ3JlYXRlZEF0L0Rlc2NgO1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldCh1cmwpIGFzIFByb21pc2U8UGFnZWQ8Rmxvd2FibGVTdGF0dXM+PjtcbiAgfVxuXG4gIC8vIEhlbHBlciB0byBjcmVhdGUgYSBtb2NrIHdvcmtmbG93IChqdXN0IGZvciBkZW1vKVxuICBwcml2YXRlIGNyZWF0ZU1vY2tXb3JrZmxvdyhjb2RlOiBzdHJpbmcpOiBXb3JrZmxvdyB7XG4gICAgLy8gUmV0dXJuIGEgc2ltcGxlIHdvcmtmbG93IHdpdGggb25lIGxhbmUgYW5kIG9uZSBzdGFnZVxuICAgIGNvbnN0IHdvcmtmbG93OiBXb3JrZmxvdyA9IHtcbiAgICAgIElkOiAnd29ya2Zsb3ctMTIzJyxcbiAgICAgIENvZGU6IGNvZGUsXG4gICAgICBUZW5hbnRJZDogJ3RlbmFudC0xJyxcbiAgICAgIGlkOiAnd29ya2Zsb3ctMTIzJyxcbiAgICAgIFNlcnZpY2VOYW1lOiAnd29ya2Zsb3ctc2VydmljZScsXG4gICAgICBDcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICBVcGRhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLlVuY2hhbmdlZCxcbiAgICAgIE5hbWU6ICdTYW1wbGUgV29ya2Zsb3cnLFxuICAgICAgRGVzY3JpcHRpb246ICdBIHNhbXBsZSB3b3JrZmxvdyBsb2FkZWQgZnJvbSBBUEknLFxuICAgICAgU3RhZ2VFbnRyeVJ1bGU6ICcnLFxuICAgICAgQXNzaWdubWVudFR5cGU6IFRhc2tBc3NpZ25tZW50VHlwZS5BdXRvUm91dGUsXG4gICAgICBTdGF0dXM6IFN0YXR1cy5BY3RpdmUsXG4gICAgICBBY3Rpb25zOiBbXSxcbiAgICAgIExhbmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBJZDogJ2xhbmUtMCcsXG4gICAgICAgICAgQ29kZTogJ2xhbmUtMCcsXG4gICAgICAgICAgVGVuYW50SWQ6ICd0ZW5hbnQtMScsXG4gICAgICAgICAgaWQ6ICdsYW5lLTAnLFxuICAgICAgICAgIFNlcnZpY2VOYW1lOiAnd29ya2Zsb3ctc2VydmljZScsXG4gICAgICAgICAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLlVuY2hhbmdlZCxcbiAgICAgICAgICBXb3JrZmxvdzogJ3dvcmtmbG93LTEyMycsXG4gICAgICAgICAgVGFnczogW10sXG4gICAgICAgICAgUG9zaXRpb246IDAsXG4gICAgICAgICAgQ29vcmRpbmF0ZXM6IHsgWDogMCwgWTogMCB9LFxuICAgICAgICAgIFNpemU6IHsgV2lkdGg6IDMwMDAsIEhlaWdodDogMjYzIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgU3RhZ2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBJZDogJ3N0YWdlLTEyMycsXG4gICAgICAgICAgQ29kZTogJ3N0YWdlLTEyMycsXG4gICAgICAgICAgVGVuYW50SWQ6ICd0ZW5hbnQtMScsXG4gICAgICAgICAgaWQ6ICdzdGFnZS0xMjMnLFxuICAgICAgICAgIFNlcnZpY2VOYW1lOiAnd29ya2Zsb3ctc2VydmljZScsXG4gICAgICAgICAgQ3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIFVwZGF0ZWRBdDogbmV3IERhdGUoKSxcbiAgICAgICAgICBEYXRhU3RhdGU6IE9iamVjdFN0YXRlLlVuY2hhbmdlZCxcbiAgICAgICAgICBXb3JrZmxvdzogJ3dvcmtmbG93LTEyMycsXG4gICAgICAgICAgTmFtZTogJ0luaXRpYWwgU3RhZ2UnLFxuICAgICAgICAgIERlc2NyaXB0aW9uOiAnU3RhcnRpbmcgcG9pbnQnLFxuICAgICAgICAgIER1cmF0aW9uOiAyNCxcbiAgICAgICAgICBQYXNzT25SdWxlOiAnJyxcbiAgICAgICAgICBBY3RvclJ1bGU6IFN0YWdlQWN0b3JSdWxlLk5vbmUsXG4gICAgICAgICAgTWluTm9PZkFjdG9yOiAxLFxuICAgICAgICAgIElzUGFyYWxsZWw6IGZhbHNlLFxuICAgICAgICAgIElzRW50cnlQb2ludDogdHJ1ZSxcbiAgICAgICAgICBJc0V4aXRQb2ludDogZmFsc2UsXG4gICAgICAgICAgVGFnczogW10sXG4gICAgICAgICAgRm9ybTogJycsXG4gICAgICAgICAgQWxsb3dNdWx0aVN1YlByb2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIEFzc2lnbm1lbnRUeXBlOiBUYXNrQXNzaWdubWVudFR5cGUuQXV0b1JvdXRlLFxuICAgICAgICAgIFN1YldvcmtGbG93OiAnJyxcbiAgICAgICAgICBTd2ltTGFuZTogJ2xhbmUtMCcsXG4gICAgICAgICAgQ29vcmRpbmF0ZXM6IHsgWDogMTAwLCBZOiA1MCB9LFxuICAgICAgICAgIElzU3ViUHJvY2VzczogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG5cbiAgICByZXR1cm4gd29ya2Zsb3c7XG4gIH1cbn1cbiJdfQ==
@@ -231,6 +231,7 @@ export class WorkflowDesignerComponent {
231
231
  condition: action.PassOnRule || '',
232
232
  label: action.Name || '',
233
233
  action: action.OperationAction || null,
234
+ targetStatus: action.TargetStatus || undefined,
234
235
  };
235
236
  this.state.connections.push(connection);
236
237
  // Register loaded action
@@ -418,4 +419,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
418
419
  }], workflowCode: [{
419
420
  type: Input
420
421
  }] } });
421
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZGVzaWduZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy93b3JrZmxvdy1kZXNpZ25lci93b3JrZmxvdy1kZXNpZ25lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3dvcmtmbG93LWRlc2lnbmVyL3dvcmtmbG93LWRlc2lnbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBYXZCLE1BQU0sT0FBTyx5QkFBeUI7SUEyQjNCO0lBQ0M7SUFDQTtJQTVCYyxTQUFTLENBQTJCO0lBQ25ELFlBQVksR0FBa0IsSUFBSSxDQUFDO0lBRTVDLG9DQUFvQztJQUNwQyxZQUFZLEdBQWEsSUFBSSxDQUFDO0lBQzlCLGtCQUFrQixHQUFZLEtBQUssQ0FBQztJQUNwQyxtQkFBbUIsR0FBWSxLQUFLLENBQUM7SUFFckMsa0NBQWtDO0lBQ2xDLGVBQWUsR0FBWSxLQUFLLENBQUM7SUFDakMsb0JBQW9CLEdBQ2xCLElBQUksQ0FBQztJQUNQLGdCQUFnQixHQUEyQixFQUFFLENBQUM7SUFFOUMsb0JBQW9CLEdBQWtCLElBQUksQ0FBQztJQUMzQyxlQUFlLEdBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2YsNkJBQTZCLEdBQVksS0FBSyxDQUFDO0lBRS9DLDRCQUE0QixHQUEyQixJQUFJLENBQUM7SUFDNUQsb0NBQW9DLEdBQWtCLElBQUksQ0FBQztJQUUzRCxTQUFTLEdBQVksS0FBSyxDQUFDO0lBQzNCLFFBQVEsR0FBWSxLQUFL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QUksUUFBUSxFQUFFLENBQUM7b0JBQ2Isd0JBQXdCO29CQUN4QixRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRzt3QkFDeEIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVM7d0JBQzFCLEdBQUcsU0FBUztxQkFDYixDQUFDO29CQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztnQkFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDdEMsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUNyQywyREFBMkQ7Z0JBQzNELHNCQUFzQjtZQUN4QixDQUFDO1lBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDL0IsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFRCxpQkFBaUI7UUFDZix1REFBdUQ7UUFDdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7d0dBM2ZVLHlCQUF5Qjs0RkFBekIseUJBQXlCLCtNQ25CdEMsK2tEQW9EQTs7NEZEakNhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx1QkFBdUI7c0pBS1QsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNiLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZCxcbiAgV3JpdGFibGVTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFnLCBXb3JrZmxvdywgV29ya2Zsb3dTdGFnZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL3NlcnZpY2VzJztcbmltcG9ydCB7IERlc2lnbmVyQ2FudmFzQ29tcG9uZW50IH0gZnJvbSAnLi9kZXNpZ25lci1jYW52YXMvZGVzaWduZXItY2FudmFzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXb3JrZmxvd0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi93b3JrZmxvdy1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgV29ya2Zsb3dEZXNpZ25lclN0YXRlIH0gZnJvbSAnLi93b3JrZmxvdy1kZXNpZ25lci5zdGF0ZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uUG9pbnQsIE5vZGUsIFRvb2xUeXBlIH0gZnJvbSAnLi93b3JrZmxvdy1kZXNpZ25lci50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi13b3JrZmxvdy1kZXNpZ25lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1kZXNpZ25lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi93b3JrZmxvdy1kZXNpZ25lci5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dEZXNpZ25lckNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2NhbnZhc1JlZicpIGNhbnZhc1JlZiE6IERlc2lnbmVyQ2FudmFzQ29tcG9uZW50O1xuICBASW5wdXQoKSB3b3JrZmxvd0NvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIC8vIEN1cnJlbnRseSBzZWxlY3RlZCB0b29sV09SLU45SDVDTFxuICBzZWxlY3RlZFRvb2w6IFRvb2xUeXBlID0gbnVsbDtcbiAgc2hvd1N3aW1sYW5lRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dBY3RvclRhZ3NEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBOZXcgcHJvcGVydGllcyBmb3Igc3RhZ2UgZGlhbG9nXG4gIHNob3dTdGFnZURpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwZW5kaW5nU3RhZ2VQb3NpdGlvbjogeyBzd2ltbGFuZUluZGV4OiBudW1iZXI7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsID1cbiAgICBudWxsO1xuICBwZW5kaW5nU3RhZ2VEYXRhOiBQYXJ0aWFsPFdvcmtmbG93U3RhZ2U+ID0ge307XG5cbiAgZWRpdGluZ1N3aW1sYW5lSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBlZGl0aW5nU3dpbWxhbmU6IFdyaXRhYmxlU2lnbmFsPHsgbmFtZTogc3RyaW5nOyB0YWdzOiBUYWdbXSB9IHwgbnVsbD4gPVxuICAgIHNpZ25hbChudWxsKTtcbiAgaXNDcmVhdGluZ1N0YWdlRnJvbUNvbm5lY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwZW5kaW5nQ29ubmVjdGlvblNvdXJjZVBvaW50OiBDb25uZWN0aW9uUG9pbnQgfCBudWxsID0gbnVsbDtcbiAgcGVuZGluZ0Nvbm5lY3Rpb25Tb3VyY2VTd2ltbGFuZUluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNTYXZpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc3RhdGU6IFdvcmtmbG93RGVzaWduZXJTdGF0ZSxcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBXb3JrZmxvd0RhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gTG9hZCB3b3JrZmxvdyBkYXRhIGlmIGNvZGUgaXMgcHJvdmlkZWRcbiAgICBpZiAodGhpcy53b3JrZmxvd0NvZGUpIHtcbiAgICAgIHRoaXMubG9hZFdvcmtmbG93KHRoaXMud29ya2Zsb3dDb2RlKTtcbiAgICB9XG4gIH1cblxuICBzYXZlV29ya2Zsb3coKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTYXZpbmcpIHJldHVybjtcblxuICAgIHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xuXG4gICAgLy8gVHJhbnNmb3JtIHRoZSBVSSBtb2RlbCB0byB0aGUgQVBJIG1vZGVsXG4gICAgY29uc3Qgd29ya2Zsb3dNb2RlbCA9IHRoaXMuc3RhdGUudHJhbnNmb3JtVG9Xb3JrZmxvd01vZGVsKCk7XG5cbiAgICBpZiAod29ya2Zsb3dNb2RlbCkge1xuICAgICAgLy8gU2F2ZSB0byB0aGUgYmFja2VuZFxuICAgICAgdGhpcy5kYXRhU2VydmljZVxuICAgICAgICAuc2F2ZVdvcmtmbG93cyhbd29ya2Zsb3dNb2RlbF0pXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdXb3JrZmxvdyBzYXZlZCBzdWNjZXNzZnVsbHk6JywgcmVzcG9uc2UpO1xuICAgICAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1dvcmtmbG93IHNhdmVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgIC8vIElmIHRoZSBBUEkgcmV0dXJucyBhbiB1cGRhdGVkIHdvcmtmbG93LCB3ZSBtaWdodCB3YW50IHRvIHJlbG9hZCBpdFxuICAgICAgICAgIGNvbnN0IHVwZGF0ZWRXb3JrZmxvdyA9IHJlc3BvbnNlWzBdO1xuICAgICAgICAgIGlmICh1cGRhdGVkV29ya2Zsb3cpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuc2V0V29ya2Zsb3dJZCh1cGRhdGVkV29ya2Zsb3cuQ29kZSk7XG4gICAgICAgICAgICB0aGlzLnBhcnNlV29ya2Zsb3dEYXRhKHVwZGF0ZWRXb3JrZmxvdyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyB3b3JrZmxvdzonLCBlcnJvcik7XG4gICAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xuICAgICAgICAgIC8vIEhhbmRsZSBlcnJvciAtIHNob3cgYSBub3RpZmljYXRpb24sIGV0Yy5cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbG9hZFdvcmtmbG93KGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlXG4gICAgICAuZ2V0V29ya2Zsb3dXaXRoUGFyYW0oY29kZSlcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuUmVzdWx0KSB7XG4gICAgICAgICAgLy8gU3RvcmUgdGhlIHdvcmtmbG93IElEXG4gICAgICAgICAgY29uc3Qgd2YgPSByZXNwb25zZS5SZXN1bHRbMF07XG4gICAgICAgICAgdGhpcy5zdGF0ZS5zZXRXb3JrZmxvd0lkKHdmLkNvZGUpO1xuICAgICAgICAgIHRoaXMucGFyc2VXb3JrZmxvd0RhdGEod2YpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHdvcmtmbG93OicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gTWV0aG9kIHRvIHBhcnNlIHdvcmtmbG93IGRhdGEgZnJvbSBBUEkgYW5kIHBvcHVsYXRlIHRoZSBkZXNpZ25lclxuICBwYXJzZVdvcmtmbG93RGF0YSh3b3JrZmxvdzogV29ya2Zsb3cpOiB2b2lkIHtcbiAgICAvLyBTdG9yZSB0aGUgY29tcGxldGUgd29ya2Zsb3dcbiAgICB0aGlzLnN0YXRlLndvcmtmbG93ID0gd29ya2Zsb3c7XG5cbiAgICAvLyBDbGVhciBleGlzdGluZyBzdGF0ZVxuICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVzID0gW107XG4gICAgdGhpcy5zdGF0ZS5jb25uZWN0aW9ucyA9IFtdO1xuICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVSZWNvcmQgPSB7fTtcbiAgICB0aGlzLnN0YXRlLnN0YWdlUmVjb3JkID0ge307XG4gICAgdGhpcy5zdGF0ZS5hY3Rpb25SZWNvcmQgPSB7fTtcblxuICAgIC8vIFNldCB3b3JrZmxvdyBmb3JtIGlmIGV4aXN0c1xuICAgIGlmICh3b3JrZmxvdy5Gb3JtKSB7XG4gICAgICB0aGlzLnN0YXRlLnNldFdvcmtmbG93Rm9ybShcbiAgICAgICAgd29ya2Zsb3cuRm9ybSxcbiAgICAgICAgd29ya2Zsb3cuRm9ybU5hbWUgfHwgJ1dvcmtmbG93IEZvcm0nXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFN0b3JlIHRoZSB3b3JrZmxvdyBJRFxuICAgIHRoaXMuc3RhdGUuc2V0V29ya2Zsb3dJZCh3b3JrZmxvdy5Db2RlKTtcblxuICAgIC8vIFByb2Nlc3Mgc3dpbWxhbmVzIGZpcnN0XG4gICAgaWYgKHdvcmtmbG93LkxhbmVzICYmIHdvcmtmbG93LkxhbmVzLmxlbmd0aCkge1xuICAgICAgd29ya2Zsb3cuTGFuZXMuc29ydCgoYSwgYikgPT4gYS5Qb3NpdGlvbiAtIGIuUG9zaXRpb24pLmZvckVhY2goKGxhbmUpID0+IHtcbiAgICAgICAgLy8gU3RvcmUgb3JpZ2luYWwgbGFuZSBpbiByZWNvcmRcbiAgICAgICAgdGhpcy5zdGF0ZS5zd2ltbGFuZVJlY29yZFtsYW5lLkNvZGVdID0gbGFuZTtcblxuICAgICAgICAvLyBBZGQgc3dpbWxhbmUgdG8gVUkgbW9kZWwgd2l0aCB0aGUgb3JpZ2luYWwgSURcbiAgICAgICAgY29uc3Qgc3dpbWxhbmUgPSB7XG4gICAgICAgICAgb3JkZXI6IGxhbmUuUG9zaXRpb24sXG4gICAgICAgICAgbGFiZWw6IGxhbmUuTmFtZSB8fCBgTGFuZSAke2xhbmUuUG9zaXRpb259YCxcbiAgICAgICAgICB0YWdzOiBsYW5lLlRhZ3MgfHwgW10sXG4gICAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICAgIGlkOiBsYW5lLkNvZGUsIC8vIFN0b3JlIHRoZSBvcmlnaW5hbCBJRFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVzLnB1c2goc3dpbWxhbmUpO1xuXG4gICAgICAgIC8vIFJlZ2lzdGVyIGxvYWRlZCBvYmplY3RcbiAgICAgICAgdGhpcy5zdGF0ZS5yZWdpc3RlckxvYWRlZE9iamVjdChsYW5lLklkLCBsYW5lLkNvZGUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzcyBzdGFnZXNcbiAgICBpZiAod29ya2Zsb3cuU3RhZ2VzICYmIHdvcmtmbG93LlN0YWdlcy5sZW5ndGgpIHtcbiAgICAgIHdvcmtmbG93LlN0YWdlcy5mb3JFYWNoKChzdGFnZSkgPT4ge1xuICAgICAgICAvLyBTdG9yZSBvcmlnaW5hbCBzdGFnZSBpbiByZWNvcmRcbiAgICAgICAgdGhpcy5zdGF0ZS5zdGFnZVJlY29yZFtzdGFnZS5Db2RlXSA9IHN0YWdlO1xuXG4gICAgICAgIC8vIEZpbmQgc3dpbWxhbmUgaW5kZXggYnkgU3dpbUxhbmUgSURcbiAgICAgICAgY29uc3Qgc3dpbWxhbmVJbmRleCA9IHRoaXMuc3RhdGUuc3dpbWxhbmVzLmZpbmRJbmRleChcbiAgICAgICAgICAobGFuZSkgPT4gbGFuZS5pZCA9PT0gc3RhZ2UuU3dpbUxhbmVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoc3dpbWxhbmVJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBjb25zdCB4ID0gc3RhZ2UuQ29vcmRpbmF0ZXM/LlggfHwgMTAwO1xuICAgICAgICAgIGNvbnN0IHkgPSBzdGFnZS5Db29yZGluYXRlcz8uWSB8fCA1MDtcblxuICAgICAgICAgIC8vIENyZWF0ZSBub2RlIHdpdGggb3JpZ2luYWwgSURcbiAgICAgICAgICBjb25zdCBub2RlOiBOb2RlID0ge1xuICAgICAgICAgICAgaWQ6IHN0YWdlLkNvZGUsIC8vIFVzZSBvcmlnaW5hbCBJRFxuICAgICAgICAgICAgdHlwZTogc3RhZ2UuU3ViV29ya0Zsb3cgPyAnc3ViZmxvdycgOiAoJ3N0YWdlJyBhcyBjb25zdCksXG4gICAgICAgICAgICB4OiB4LFxuICAgICAgICAgICAgeTogeSxcbiAgICAgICAgICAgIHdpZHRoOiAxNjksXG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCxcbiAgICAgICAgICAgIGlzU3RhcnROb2RlOiBzdGFnZS5Jc0VudHJ5UG9pbnQsXG4gICAgICAgICAgICBzdGFnZURhdGE6IHtcbiAgICAgICAgICAgICAgTmFtZTogc3RhZ2UuTmFtZSxcbiAgICAgICAgICAgICAgRGVzY3JpcHRpb246IHN0YWdlLkRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICBEdXJhdGlvbjogc3RhZ2UuRHVyYXRpb24sXG4gICAgICAgICAgICAgIFBhc3NPblJ1bGU6IHN0YWdlLlBhc3NPblJ1bGUsXG4gICAgICAgICAgICAgIEFjdG9yUnVsZTogc3RhZ2UuQWN0b3JSdWxlLFxuICAgICAgICAgICAgICBNaW5Ob09mQWN0b3I6IHN0YWdlLk1pbk5vT2ZBY3RvcixcbiAgICAgICAgICAgICAgVGFnczogc3RhZ2UuVGFncyB8fCBbXSxcbiAgICAgICAgICAgICAgSXNQYXJhbGxlbDogc3RhZ2UuSXNQYXJhbGxlbCxcbiAgICAgICAgICAgICAgSXNFbnRyeVBvaW50OiBzdGFnZS5Jc0VudHJ5UG9pbnQsXG4gICAgICAgICAgICAgIElzRXhpdFBvaW50OiBzdGFnZS5Jc0V4aXRQb2ludCxcbiAgICAgICAgICAgICAgSXNTdWJQcm9jZXNzOiBzdGFnZS5TdWJXb3JrRmxvdyA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgSWQ6IHN0YWdlLklkLCAvLyBLZWVwIG9yaWdpbmFsIElEXG4gICAgICAgICAgICAgIENvZGU6IHN0YWdlLkNvZGUsXG4gICAgICAgICAgICAgIEZvcm06IHN0YWdlLkZvcm0sXG4gICAgICAgICAgICAgIGZvcm1JZDogc3RhZ2UuRm9ybSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb25uZWN0aW9uUG9pbnRzOiBbXSwgLy8gSW5pdGlhbGl6ZSB3aXRoIGVtcHR5IGFycmF5XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIC8vIEdlbmVyYXRlIGNvbm5lY3Rpb24gcG9pbnRzXG4gICAgICAgICAgbm9kZS5jb25uZWN0aW9uUG9pbnRzID0gdGhpcy5zdGF0ZS5nZW5lcmF0ZUNvbm5lY3Rpb25Qb2ludHMobm9kZSk7XG5cbiAgICAgICAgICAvLyBBZGQgbm9kZSB0byBzd2ltbGFuZVxuICAgICAgICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVzW3N3aW1sYW5lSW5kZXhdLm5vZGVzID1cbiAgICAgICAgICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVzW3N3aW1sYW5lSW5kZXhdLm5vZGVzIHx8IFtdO1xuICAgICAgICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVzW3N3aW1sYW5lSW5kZXhdLm5vZGVzLnB1c2gobm9kZSk7XG5cbiAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgc3RhcnQgbm9kZSwgdXBkYXRlIHN0YXRlXG4gICAgICAgICAgaWYgKHN0YWdlLklzRW50cnlQb2ludCkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5zdGFydE5vZGVJZCA9IHN0YWdlLkNvZGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gUmVnaXN0ZXIgbG9hZGVkIHN0YWdlXG4gICAgICAgICAgdGhpcy5zdGF0ZS5yZWdpc3RlckxvYWRlZE9iamVjdChzdGFnZS5JZCwgc3RhZ2UuQ29kZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFByb2Nlc3MgY29ubmVjdGlvbnMvYWN0aW9uc1xuICAgIGlmICh3b3JrZmxvdy5BY3Rpb25zICYmIHdvcmtmbG93LkFjdGlvbnMubGVuZ3RoKSB7XG4gICAgICB3b3JrZmxvdy5BY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgICAvLyBTdG9yZSBvcmlnaW5hbCBhY3Rpb24gaW4gcmVjb3JkXG4gICAgICAgIHRoaXMuc3RhdGUuYWN0aW9uUmVjb3JkW2FjdGlvbi5Db2RlXSA9IGFjdGlvbjtcblxuICAgICAgICAvLyBGaW5kIHNvdXJjZSBhbmQgdGFyZ2V0IG5vZGVzXG4gICAgICAgIGNvbnN0IHNvdXJjZU5vZGVJbmZvID0gdGhpcy5zdGF0ZS5maW5kTm9kZUJ5SWQoYWN0aW9uLkZyb21TdGFnZSk7XG4gICAgICAgIGNvbnN0IHRhcmdldE5vZGVJbmZvID0gdGhpcy5zdGF0ZS5maW5kTm9kZUJ5SWQoYWN0aW9uLlRvU3RhZ2UpO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKHNvdXJjZU5vZGVJbmZvLCB0YXJnZXROb2RlSW5mbyk7XG5cbiAgICAgICAgaWYgKHNvdXJjZU5vZGVJbmZvICYmIHRhcmdldE5vZGVJbmZvKSB7XG4gICAgICAgICAgLy8gRmluZCBzdWl0YWJsZSBjb25uZWN0aW9uIHBvaW50c1xuICAgICAgICAgIC8vIGNvbnN0IHNvdXJjZU5vZGUgPSBzb3VyY2VOb2RlSW5mby5ub2RlO1xuICAgICAgICAgIC8vIGNvbnN0IHRhcmdldE5vZGUgPSB0YXJnZXROb2RlSW5mby5ub2RlO1xuXG4gICAgICAgICAgLy8gY29uc3Qgc291cmNlUG9pbnQgPSBzb3VyY2VOb2RlLmNvbm5lY3Rpb25Qb2ludHM/LmZpbmQoXG4gICAgICAgICAgLy8gICAocCkgPT4gcC50eXBlID09PSAncmlnaHQnIHx8IHAudHlwZSA9PT0gJ2JvdHRvbSdcbiAgICAgICAgICAvLyApO1xuXG4gICAgICAgICAgLy8gY29uc3QgdGFyZ2V0UG9pbnQgPSB0YXJnZXROb2RlLmNvbm5lY3Rpb25Qb2ludHM/LmZpbmQoXG4gICAgICAgICAgLy8gICAocCkgPT4gcC50eXBlID09PSAnbGVmdCcgfHwgcC50eXBlID09PSAndG9wJ1xuICAgICAgICAgIC8vICk7XG5cbiAgICAgICAgICBjb25zdCBzb3VyY2VOb2RlID0gc291cmNlTm9kZUluZm8ubm9kZTtcbiAgICAgICAgICBjb25zdCB0YXJnZXROb2RlID0gdGFyZ2V0Tm9kZUluZm8ubm9kZTtcblxuICAgICAgICAgIGxldCBzb3VyY2VQb2ludElkLCB0YXJnZXRQb2ludElkO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coYWN0aW9uLlNvdXJjZVBvaW50VHlwZSwgYWN0aW9uLlRhcmdldFBvaW50VHlwZSk7XG5cbiAgICAgICAgICBpZiAoYWN0aW9uLlNvdXJjZVBvaW50VHlwZSkge1xuICAgICAgICAgICAgLy8gRmluZCBhIHBvaW50IHdpdGggbWF0Y2hpbmcgdHlwZVxuICAgICAgICAgICAgY29uc3Qgc291cmNlUG9pbnQgPSBzb3VyY2VOb2RlLmNvbm5lY3Rpb25Qb2ludHM/LmZpbmQoXG4gICAgICAgICAgICAgIChwKSA9PiBwLnR5cGUgPT09IGFjdGlvbi5Tb3VyY2VQb2ludFR5cGU/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzb3VyY2VQb2ludElkID0gc291cmNlUG9pbnQ/LmlkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBGYWxsYmFjayB0byBmaW5kaW5nIGEgc3VpdGFibGUgcG9pbnRcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZVBvaW50ID0gc291cmNlTm9kZS5jb25uZWN0aW9uUG9pbnRzPy5maW5kKFxuICAgICAgICAgICAgICAocCkgPT4gcC50eXBlID09PSAncmlnaHQnIHx8IHAudHlwZSA9PT0gJ2JvdHRvbSdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzb3VyY2VQb2ludElkID0gc291cmNlUG9pbnQ/LmlkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChhY3Rpb24uVGFyZ2V0UG9pbnRUeXBlKSB7XG4gICAgICAgICAgICAvLyBGaW5kIGEgcG9pbnQgd2l0aCBtYXRjaGluZyB0eXBlXG4gICAgICAgICAgICBjb25zdCB0YXJnZXRQb2ludCA9IHRhcmdldE5vZGUuY29ubmVjdGlvblBvaW50cz8uZmluZChcbiAgICAgICAgICAgICAgKHApID0+IHAudHlwZSA9PT0gYWN0aW9uLlRhcmdldFBvaW50VHlwZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRhcmdldFBvaW50SWQgPSB0YXJnZXRQb2ludD8uaWQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEZhbGxiYWNrIHRvIGZpbmRpbmcgYSBzdWl0YWJsZSBwb2ludFxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0UG9pbnQgPSB0YXJnZXROb2RlLmNvbm5lY3Rpb25Qb2ludHM/LmZpbmQoXG4gICAgICAgICAgICAgIChwKSA9PiBwLnR5cGUgPT09ICdsZWZ0JyB8fCBwLnR5cGUgPT09ICd0b3AnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGFyZ2V0UG9pbnRJZCA9IHRhcmdldFBvaW50Py5pZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmxvZygnU291cmNlIHBvaW50OicsIHNvdXJjZVBvaW50SWQpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdUYXJnZXQgcG9pbnQ6JywgdGFyZ2V0UG9pbnRJZCk7XG5cbiAgICAgICAgICBpZiAoc291cmNlUG9pbnRJZCAmJiB0YXJnZXRQb2ludElkKSB7XG4gICAgICAgICAgICBjb25zdCBjb25uZWN0aW9uID0ge1xuICAgICAgICAgICAgICBpZDogYWN0aW9uLkNvZGUsIC8vIFVzZSBvcmlnaW5hbCBJRFxuICAgICAgICAgICAgICBzb3VyY2VOb2RlSWQ6IGFjdGlvbi5Gcm9tU3RhZ2UsXG4gICAgICAgICAgICAgIHRhcmdldE5vZGVJZDogYWN0aW9uLlRvU3RhZ2UsXG4gICAgICAgICAgICAgIHNvdXJjZVBvaW50SWQ6IHNvdXJjZVBvaW50SWQsXG4gICAgICAgICAgICAgIHRhcmdldFBvaW50SWQ6IHRhcmdldFBvaW50SWQsXG4gICAgICAgICAgICAgIHNvdXJjZVN3aW1sYW5lSW5kZXg6IHNvdXJjZU5vZGVJbmZvLnN3aW1sYW5lSW5kZXgsXG4gICAgICAgICAgICAgIHRhcmdldFN3aW1sYW5lSW5kZXg6IHRhcmdldE5vZGVJbmZvLnN3aW1sYW5lSW5kZXgsXG4gICAgICAgICAgICAgIGNvbmRpdGlvbjogYWN0aW9uLlBhc3NPblJ1bGUgfHwgJycsXG4gICAgICAgICAgICAgIGxhYmVsOiBhY3Rpb24uTmFtZSB8fCAnJyxcbiAgICAgICAgICAgICAgYWN0aW9uOiBhY3Rpb24uT3BlcmF0aW9uQWN0aW9uIHx8IG51bGwsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLnN0YXRlLmNvbm5lY3Rpb25zLnB1c2goY29ubmVjdGlvbik7XG5cbiAgICAgICAgICAgIC8vIFJlZ2lzdGVyIGxvYWRlZCBhY3Rpb25cbiAgICAgICAgICAgIHRoaXMuc3RhdGUucmVnaXN0ZXJMb2FkZWRPYmplY3QoYWN0aW9uLklkLCBhY3Rpb24uQ29kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kIHRvIGZpbmQgc3dpbWxhbmUgaW5kZXggYnkgTGFuZSBJRFxuICBmaW5kU3dpbWxhbmVJbmRleEJ5TGFuZUlkKGxhbmVJZDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAvLyBGaXJzdCBjaGVjayBvdXIgbWFwcGluZ1xuICAgIGlmICh0aGlzLnN0YXRlLmxhbmVJZFRvSW5kZXhNYXAuaGFzKGxhbmVJZCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXRlLmxhbmVJZFRvSW5kZXhNYXAuZ2V0KGxhbmVJZCkhO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIHRvIHRoZSBvcmlnaW5hbCBsb2dpYyAoZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpXG4gICAgY29uc3QgcGFydHMgPSBsYW5lSWQuc3BsaXQoJy0nKTtcbiAgICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgY29uc3QgaW5kZXggPSBwYXJzZUludChwYXJ0c1sxXSk7XG4gICAgICBpZiAoIWlzTmFOKGluZGV4KSAmJiBpbmRleCA8IHRoaXMuc3RhdGUuc3dpbWxhbmVzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgLy8gSGFuZGxlIHRvb2wgc2VsZWN0aW9uIGZyb20gdG9vbGJhclxuICBvblRvb2xTZWxlY3RlZCh0b29sOiBUb29sVHlwZSk6IHZvaWQge1xuICAgIC8vIFRvZ2dsZSBzZWxlY3Rpb24gaWYgdGhlIHNhbWUgdG9vbCBpcyBjbGlja2VkIGFnYWluXG4gICAgdGhpcy5zZWxlY3RlZFRvb2wgPSB0aGlzLnNlbGVjdGVkVG9vbCA9PT0gdG9vbCA/IG51bGwgOiB0b29sO1xuICAgIGNvbnNvbGUubG9nKCdTZWxlY3RlZCB0b29sOicsIHRoaXMuc2VsZWN0ZWRUb29sKTtcbiAgfVxuXG4gIG9wZW5Td2ltbGFuZURpYWxvZygpIHtcbiAgICBjb25zb2xlLmxvZygnU01MIElOREVYJywgdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleCk7XG4gICAgaWYgKHRoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXggIT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdTTUwnLCB0aGlzLnN0YXRlLnN3aW1sYW5lc1t0aGlzLmVkaXRpbmdTd2ltbGFuZUluZGV4XSk7XG4gICAgICB0aGlzLmVkaXRpbmdTd2ltbGFuZS5zZXQoe1xuICAgICAgICBuYW1lOiB0aGlzLnN0YXRlLnN3aW1sYW5lc1t0aGlzLmVkaXRpbmdTd2ltbGFuZUluZGV4XS5sYWJlbCxcbiAgICAgICAgdGFnczogdGhpcy5zdGF0ZS5zd2ltbGFuZXNbdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleF0udGFncyxcbiAgICAgIH0pO1xuICAgICAgY29uc29sZS5sb2coJ1NNTF9FRFQnLCB0aGlzLmVkaXRpbmdTd2ltbGFuZSgpKTtcbiAgICB9XG4gICAgdGhpcy5zaG93U3dpbWxhbmVEaWFsb2cgPSB0cnVlO1xuICB9XG5cbiAgb25TaG93U3RhZ2VEaWFsb2coZXZlbnQ6IHsgcG9zaXRpb246IGFueTsgaXNGcm9tQ29ubmVjdGlvbjogYm9vbGVhbiB9KSB7XG4gICAgY29uc29sZS5sb2coJ1JlY2VpdmVkIHNob3dTdGFnZURpYWxvZyBldmVudDonLCBldmVudCk7XG4gICAgdGhpcy5wZW5kaW5nU3RhZ2VQb3NpdGlvbiA9IGV2ZW50LnBvc2l0aW9uO1xuICAgIHRoaXMuc2hvd1N0YWdlRGlhbG9nID0gdHJ1ZTtcblxuICAgIC8vIElmIHRoaXMgaXMgZnJvbSBhIGNvbm5lY3Rpb24gY3JlYXRpb24sIHN0b3JlIHRoYXQgaW5mb1xuICAgIHRoaXMuaXNDcmVhdGluZ1N0YWdlRnJvbUNvbm5lY3Rpb24gPSBldmVudC5pc0Zyb21Db25uZWN0aW9uO1xuXG4gICAgLy8gU3RvcmUgdGhlIHNvdXJjZSBwb2ludCBkYXRhIGJlZm9yZSBpdCBnZXRzIGxvc3RcbiAgICBpZiAoXG4gICAgICBldmVudC5pc0Zyb21Db25uZWN0aW9uICYmXG4gICAgICB0aGlzLnN0YXRlLmRyYWdnaW5nQ29ubmVjdGlvbkRhdGEuc291cmNlUG9pbnRcbiAgICApIHtcbiAgICAgIHRoaXMucGVuZGluZ0Nvbm5lY3Rpb25Tb3VyY2VQb2ludCA9XG4gICAgICAgIHRoaXMuc3RhdGUuZHJhZ2dpbmdDb25uZWN0aW9uRGF0YS5zb3VyY2VQb2ludDtcbiAgICAgIHRoaXMucGVuZGluZ0Nvbm5lY3Rpb25Tb3VyY2VTd2ltbGFuZUluZGV4ID1cbiAgICAgICAgdGhpcy5zdGF0ZS5kcmFnZ2luZ0Nvbm5lY3Rpb25EYXRhLnNvdXJjZVN3aW1sYW5lSW5kZXggPz8gbnVsbDtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAnU3RvcmVkIHNvdXJjZSBwb2ludCBmb3IgY29ubmVjdGlvbjonLFxuICAgICAgICB0aGlzLnBlbmRpbmdDb25uZWN0aW9uU291cmNlUG9pbnRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ1N0YWdlIGRpYWxvZyBzdGF0ZTonLCB7XG4gICAgICBwZW5kaW5nUG9zaXRpb246IHRoaXMucGVuZGluZ1N0YWdlUG9zaXRpb24sXG4gICAgICBpc1Zpc2libGU6IHRoaXMuc2hvd1N0YWdlRGlhbG9nLFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlQ2FudmFzUG9zaXRpb25DbGljayhldmVudDogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9KSB7XG4gICAgY29uc29sZS5sb2coZXZlbnQpO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhbiBlZGl0IHN3aW1sYW5lIGV2ZW50XG4gICAgaWYgKFxuICAgICAgZXZlbnQueCA9PT0gLTEgJiZcbiAgICAgIGV2ZW50LnkgPj0gMCAmJlxuICAgICAgZXZlbnQueSA8IHRoaXMuc3RhdGUuc3dpbWxhbmVzLmxlbmd0aFxuICAgICkge1xuICAgICAgY29uc29sZS5sb2coJ0VkaXRpbmcgc3dpbWxhbmUnLCBldmVudC55KTtcbiAgICAgIHRoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXggPSBldmVudC55O1xuICAgICAgdGhpcy5vcGVuU3dpbWxhbmVEaWFsb2coKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBOb3JtYWwgY2FudmFzIGNsaWNrIGhhbmRsaW5nXG4gICAgY29uc3Qgc3dpbWxhbmVJbmRleCA9IE1hdGguZmxvb3IoZXZlbnQueSAvIDI2Myk7XG5cbiAgICBzd2l0Y2ggKHRoaXMuc2VsZWN0ZWRUb29sKSB7XG4gICAgICBjYXNlICdzd2ltbGFuZSc6XG4gICAgICAgIGNvbnNvbGUubG9nKCdPcGVuaW5nIHN3aW1sYW5lIGRpYWxvZyBmb3IgbmV3IHN3aW1sYW5lJyk7XG4gICAgICAgIHRoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXggPSBudWxsOyAvLyBTZXQgdG8gbnVsbCB0byBpbmRpY2F0ZSBjcmVhdGluZyBhIG5ldyBzd2ltbGFuZVxuICAgICAgICB0aGlzLm9wZW5Td2ltbGFuZURpYWxvZygpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVG9vbCA9IG51bGw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3RhZ2UnOlxuICAgICAgICBpZiAoc3dpbWxhbmVJbmRleCA+PSAwICYmIHN3aW1sYW5lSW5kZXggPCB0aGlzLnN0YXRlLnN3aW1sYW5lcy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGBBZGRpbmcgJHt0aGlzLnNlbGVjdGVkVG9vbH0gdG8gc3dpbWxhbmUgJHtzd2ltbGFuZUluZGV4fWBcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gQ3JlYXRlIHRoZSBzdGFnZSBkaXJlY3RseSB3aXRoIGRlZmF1bHQgcHJvcGVydGllc1xuICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YXRlLmFkZE5vZGUoXG4gICAgICAgICAgICBzd2ltbGFuZUluZGV4LFxuICAgICAgICAgICAgJ3N0YWdlJyxcbiAgICAgICAgICAgIGV2ZW50LngsXG4gICAgICAgICAgICBldmVudC55LFxuICAgICAgICAgICAgeyBOYW1lOiAnTmV3IFN0YWdlJyB9IC8vIEFkZCBkZWZhdWx0IHByb3BlcnRpZXNcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBzZWxlY3RlZCB0b29sIGFmdGVyIHBsYWNpbmcgYSBub2RlXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVG9vbCA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGVjaXNpb24nOlxuICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICAgIGlmIChzd2ltbGFuZUluZGV4ID49IDAgJiYgc3dpbWxhbmVJbmRleCA8IHRoaXMuc3RhdGUuc3dpbWxhbmVzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYEFkZGluZyAke3RoaXMuc2VsZWN0ZWRUb29sfSB0byBzd2ltbGFuZSAke3N3aW1sYW5lSW5kZXh9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhdGUuYWRkTm9kZShcbiAgICAgICAgICAgIHN3aW1sYW5lSW5kZXgsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVG9vbCxcbiAgICAgICAgICAgIGV2ZW50LngsXG4gICAgICAgICAgICBldmVudC55XG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgLy8gUmVzZXQgdGhlIHNlbGVjdGVkIHRvb2wgYWZ0ZXIgcGxhY2luZyBhIG5vZGVcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUb29sID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdWJmbG93JzpcbiAgICAgICAgaWYgKHN3aW1sYW5lSW5kZXggPj0gMCAmJiBzd2ltbGFuZUluZGV4IDwgdGhpcy5zdGF0ZS5zd2ltbGFuZXMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBgQWRkaW5nICR7dGhpcy5zZWxlY3RlZFRvb2x9IHRvIHN3aW1sYW5lICR7c3dpbWxhbmVJbmRleH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBTaG93IHN1YmZsb3cgd29ya2Zsb3cgc2VsZWN0aW9uIHBvcHVwXG4gICAgICAgICAgdGhpcy5jYW52YXNSZWYuc2hvd1N1YmZsb3dTZWxlY3Rpb25Qb3B1cChcbiAgICAgICAgICAgIGV2ZW50LngsXG4gICAgICAgICAgICBldmVudC55LFxuICAgICAgICAgICAgc3dpbWxhbmVJbmRleFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBvblN3aW1sYW5lRGlhbG9nRmlsbGVkKGV2ZW50OiB7IHRhZ3M6IFRhZ1tdOyBuYW1lOiBzdHJpbmcgfSkge1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgJ1N3aW1sYW5lIGRpYWxvZyBmaWxsZWQ6JyxcbiAgICAgIGV2ZW50LFxuICAgICAgJ0VkaXRpbmcgaW5kZXg6JyxcbiAgICAgIHRoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXhcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXggIT09IG51bGwpIHtcbiAgICAgIC8vIFVwZGF0ZSBleGlzdGluZyBzd2ltbGFuZVxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICdVcGRhdGluZyBleGlzdGluZyBzd2ltbGFuZSBhdCBpbmRleDonLFxuICAgICAgICB0aGlzLmVkaXRpbmdTd2ltbGFuZUluZGV4XG4gICAgICApO1xuICAgICAgdGhpcy5zdGF0ZS51cGRhdGVTd2ltbGFuZShcbiAgICAgICAgdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleCxcbiAgICAgICAgZXZlbnQubmFtZSxcbiAgICAgICAgZXZlbnQudGFnc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ3JlYXRlIG5ldyBzd2ltbGFuZVxuICAgICAgY29uc29sZS5sb2coJ0NyZWF0aW5nIG5ldyBzd2ltbGFuZScpO1xuICAgICAgdGhpcy5zdGF0ZS5hZGRTd2ltbGFuZShldmVudC5uYW1lLCBldmVudC50YWdzKTtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dTd2ltbGFuZURpYWxvZyA9IGZhbHNlO1xuICAgIHRoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXggPSBudWxsO1xuICB9XG5cbiAgb25TdGFnZURpYWxvZ1NhdmVkKHN0YWdlRGF0YTogUGFydGlhbDxXb3JrZmxvd1N0YWdlPikge1xuICAgIGlmICh0aGlzLmNhbnZhc1JlZi5hY3RpdmVTdGFnZUlkKSB7XG4gICAgICAvLyBFZGl0aW5nIGFuIGV4aXN0aW5nIHN0YWdlXG4gICAgICBjb25zdCBub2RlSW5mbyA9IHRoaXMuc3RhdGUuZmluZE5vZGVCeUlkKHRoaXMuY2FudmFzUmVmLmFjdGl2ZVN0YWdlSWQpO1xuICAgICAgaWYgKG5vZGVJbmZvKSB7XG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgc3RhZ2UgZGF0YVxuICAgICAgICBub2RlSW5mby5ub2RlLnN0YWdlRGF0YSA9IHtcbiAgICAgICAgICAuLi5ub2RlSW5mby5ub2RlLnN0YWdlRGF0YSxcbiAgICAgICAgICAuLi5zdGFnZURhdGEsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnNvbGUubG9nKCdVcGRhdGVkIHN0YWdlIGRhdGE6Jywgbm9kZUluZm8ubm9kZS5zdGFnZURhdGEpO1xuICAgICAgfVxuICAgICAgdGhpcy5jYW52YXNSZWYuYWN0aXZlU3RhZ2VJZCA9IG51bGw7XG4gICAgfSBlbHNlIGlmICh0aGlzLnBlbmRpbmdTdGFnZVBvc2l0aW9uKSB7XG4gICAgICBpZiAodGhpcy5jYW52YXNSZWYuYWN0aXZlU3RhZ2VJZCkge1xuICAgICAgICAvLyBFZGl0aW5nIGFuIGV4aXN0aW5nIHN0YWdlXG4gICAgICAgIGNvbnN0IG5vZGVJbmZvID0gdGhpcy5zdGF0ZS5maW5kTm9kZUJ5SWQodGhpcy5jYW52YXNSZWYuYWN0aXZlU3RhZ2VJZCk7XG4gICAgICAgIGlmIChub2RlSW5mbykge1xuICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgc3RhZ2UgZGF0YVxuICAgICAgICAgIG5vZGVJbmZvLm5vZGUuc3RhZ2VEYXRhID0ge1xuICAgICAgICAgICAgLi4ubm9kZUluZm8ubm9kZS5zdGFnZURhdGEsXG4gICAgICAgICAgICAuLi5zdGFnZURhdGEsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnVXBkYXRlZCBzdGFnZSBkYXRhOicsIG5vZGVJbmZvLm5vZGUuc3RhZ2VEYXRhKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhbnZhc1JlZi5hY3RpdmVTdGFnZUlkID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wZW5kaW5nU3RhZ2VQb3NpdGlvbikge1xuICAgICAgICAvLyBDcmVhdGluZyBhIG5ldyBzdGFnZSAoa2VlcCBleGlzdGluZyBsb2dpYyBmb3IgdGhpcyBjYXNlKVxuICAgICAgICAvLyAuLi5leGlzdGluZyBjb2RlLi4uXG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2hvd1N0YWdlRGlhbG9nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5zaG93U3RhZ2VEaWFsb2cgPSBmYWxzZTtcbiAgfVxuXG4gIG9uU3ViZmxvd1NlbGVjdGVkKCkge1xuICAgIC8vIFJlc2V0IHRoZSBzZWxlY3RlZCB0b29sIGFmdGVyIHBsYWNpbmcgYSBzdWJmbG93IG5vZGVcbiAgICB0aGlzLnNlbGVjdGVkVG9vbCA9IG51bGw7XG4gIH1cblxuICBvcGVuQWN0b3JUYWdzRGlhbG9nKCkge1xuICAgIHRoaXMuc2hvd0FjdG9yVGFnc0RpYWxvZyA9IHRydWU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1kZXNpZ25lclwiPlxuICA8ZGl2IGNsYXNzPVwid29ya2Zsb3ctaGVhZGVyXCI+XG4gICAgPGgxPnt7IHN0YXRlLndvcmtmbG93Py5OYW1lIH19PC9oMT5cbiAgPC9kaXY+XG5cbiAgPCEtLSBUb29sYmFyIENvbXBvbmVudCAtLT5cbiAgPGxpYi1kZXNpZ25lci10b29sYmFyXG4gICAgW3NlbGVjdGVkVG9vbF09XCJzZWxlY3RlZFRvb2xcIlxuICAgIFtpc1NhdmluZ109XCJpc1NhdmluZ1wiXG4gICAgW3dvcmtmbG93Q29kZV09XCJzdGF0ZS53b3JrZmxvdz8uQ29kZSB8fCBudWxsXCJcbiAgICAodG9vbFNlbGVjdGVkKT1cIm9uVG9vbFNlbGVjdGVkKCRldmVudClcIlxuICAgIChzYXZlV29ya2Zsb3cpPVwic2F2ZVdvcmtmbG93KClcIlxuICAgIChvcGVuQWN0b3JUYWdzKT1cIm9wZW5BY3RvclRhZ3NEaWFsb2coKVwiXG4gID5cbiAgPC9saWItZGVzaWduZXItdG9vbGJhcj5cblxuICA8IS0tIFNob3cgbG9hZGluZyBpbmRpY2F0b3IgaWYgbmVlZGVkIC0tPlxuICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJsb2FkaW5nLW92ZXJsYXlcIj5cbiAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy1zcGlubmVyXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxvYWRpbmctdGV4dFwiPkxvYWRpbmcgd29ya2Zsb3cuLi48L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBDYW52YXMgQ29tcG9uZW50IC0tPlxuICA8bGliLWRlc2lnbmVyLWNhbnZhc1xuICAgIFtzZWxlY3RlZFRvb2xdPVwic2VsZWN0ZWRUb29sXCJcbiAgICAoY2xpY2tlZFBvc2l0aW9uKT1cImhhbmRsZUNhbnZhc1Bvc2l0aW9uQ2xpY2soJGV2ZW50KVwiXG4gICAgKHN1YmZsb3dTZWxlY3RlZCk9XCJvblN1YmZsb3dTZWxlY3RlZCgpXCJcbiAgICAoc2hvd1N0YWdlRGlhbG9nKT1cIm9uU2hvd1N0YWdlRGlhbG9nKCRldmVudClcIlxuICAgICNjYW52YXNSZWZcbiAgPlxuICA8L2xpYi1kZXNpZ25lci1jYW52YXM+XG5cbiAgPGxpYi1zd2ltbGFuZS1kaWFsb2dcbiAgICBbdmlzaWJsZV09XCJzaG93U3dpbWxhbmVEaWFsb2dcIlxuICAgIFtzd2ltbGFuZURhdGFdPVwiZWRpdGluZ1N3aW1sYW5lKClcIlxuICAgIChjcmVhdGVkKT1cIm9uU3dpbWxhbmVEaWFsb2dGaWxsZWQoJGV2ZW50KVwiXG4gICAgKGNsb3NlZCk9XCJzaG93U3dpbWxhbmVEaWFsb2cgPSBmYWxzZVwiXG4gID48L2xpYi1zd2ltbGFuZS1kaWFsb2c+XG5cbiAgPGxpYi1zdGFnZS1kaWFsb2dcbiAgICBbdmlzaWJsZV09XCJzaG93U3RhZ2VEaWFsb2dcIlxuICAgIFtzdGFnZURhdGFdPVwicGVuZGluZ1N0YWdlRGF0YVwiXG4gICAgKGNsb3NlZCk9XCJzaG93U3RhZ2VEaWFsb2cgPSBmYWxzZVwiXG4gICAgKHNhdmVkKT1cIm9uU3RhZ2VEaWFsb2dTYXZlZCgkZXZlbnQpXCJcbiAgPjwvbGliLXN0YWdlLWRpYWxvZz5cblxuICA8bGliLWFjdG9yLXRhZ3MtZGlhbG9nXG4gICAgW3Zpc2libGVdPVwic2hvd0FjdG9yVGFnc0RpYWxvZ1wiXG4gICAgW3dvcmtmbG93Q29kZV09XCJzdGF0ZS53b3JrZmxvdz8uQ29kZSB8fCBudWxsXCJcbiAgICAoY2xvc2VkKT1cInNob3dBY3RvclRhZ3NEaWFsb2cgPSBmYWxzZVwiXG4gID48L2xpYi1hY3Rvci10YWdzLWRpYWxvZz5cbjwvZGl2PlxuIl19
422
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctZGVzaWduZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLXdvcmtmbG93LXVpL3NyYy9saWIvY29tcG9uZW50cy93b3JrZmxvdy1kZXNpZ25lci93b3JrZmxvdy1kZXNpZ25lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4td29ya2Zsb3ctdWkvc3JjL2xpYi9jb21wb25lbnRzL3dvcmtmbG93LWRlc2lnbmVyL3dvcmtmbG93LWRlc2lnbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBYXZCLE1BQU0sT0FBTyx5QkFBeUI7SUEyQjNCO0lBQ0M7SUFDQTtJQTVCYyxTQUFTLENBQTJCO0lBQ25ELFlBQVksR0FBa0IsSUFBSSxDQUFDO0lBRTVDLG9DQUFvQztJQUNwQyxZQUFZLEdBQWEsSUFBSSxDQUFDO0lBQzlCLGtCQUFrQixHQUFZLEtBQUssQ0FBQztJQUNwQyxtQkFBbUIsR0FBWSxLQUFLLENBQUM7SUFFckMsa0NBQWtDO0lBQ2xDLGVBQWUsR0FBWSxLQUFLLENBQUM7SUFDakMsb0JBQW9CLEdBQ2xCLElBQUksQ0FBQztJQUNQLGdCQUFnQixHQUEyQixFQUFFLENBQUM7SUFFOUMsb0JBQW9CLEdBQWtCLElBQUksQ0FBQztJQUMzQyxlQUFlLEdBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2YsNkJBQTZCLEdBQVksS0FBSyxDQUFDO0lBRS9DLDRCQUE0QixHQUEyQixJQUFJLENBQUM7SUFDNUQsb0NBQW9DLEdBQWtCLElBQUksQ0FBQztJQUUzRCxTQUFTLEdBQVksS0FBSyxDQUFDO0lBQzNCLFFBQVEsR0FBWSxLQUFL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QUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3ZFLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQ2Isd0JBQXdCO29CQUN4QixRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRzt3QkFDeEIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVM7d0JBQzFCLEdBQUcsU0FBUztxQkFDYixDQUFDO29CQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztnQkFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDdEMsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUNyQywyREFBMkQ7Z0JBQzNELHNCQUFzQjtZQUN4QixDQUFDO1lBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDL0IsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFRCxpQkFBaUI7UUFDZix1REFBdUQ7UUFDdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7d0dBNWZVLHlCQUF5Qjs0RkFBekIseUJBQXlCLCtNQ25CdEMsK2tEQW9EQTs7NEZEakNhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx1QkFBdUI7c0pBS1QsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNiLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZCxcbiAgV3JpdGFibGVTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFnLCBXb3JrZmxvdywgV29ya2Zsb3dTdGFnZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL21vZGVscyc7XG5pbXBvcnQgeyBVdGlsU2VydmljZSB9IGZyb20gJ3ZlcmJlbi13b3JrZmxvdy11aS9zcmMvbGliL3NlcnZpY2VzJztcbmltcG9ydCB7IERlc2lnbmVyQ2FudmFzQ29tcG9uZW50IH0gZnJvbSAnLi9kZXNpZ25lci1jYW52YXMvZGVzaWduZXItY2FudmFzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXb3JrZmxvd0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi93b3JrZmxvdy1kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgV29ya2Zsb3dEZXNpZ25lclN0YXRlIH0gZnJvbSAnLi93b3JrZmxvdy1kZXNpZ25lci5zdGF0ZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uUG9pbnQsIE5vZGUsIFRvb2xUeXBlIH0gZnJvbSAnLi93b3JrZmxvdy1kZXNpZ25lci50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi13b3JrZmxvdy1kZXNpZ25lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrZmxvdy1kZXNpZ25lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi93b3JrZmxvdy1kZXNpZ25lci5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dEZXNpZ25lckNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ2NhbnZhc1JlZicpIGNhbnZhc1JlZiE6IERlc2lnbmVyQ2FudmFzQ29tcG9uZW50O1xuICBASW5wdXQoKSB3b3JrZmxvd0NvZGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIC8vIEN1cnJlbnRseSBzZWxlY3RlZCB0b29sV09SLU45SDVDTFxuICBzZWxlY3RlZFRvb2w6IFRvb2xUeXBlID0gbnVsbDtcbiAgc2hvd1N3aW1sYW5lRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dBY3RvclRhZ3NEaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBOZXcgcHJvcGVydGllcyBmb3Igc3RhZ2UgZGlhbG9nXG4gIHNob3dTdGFnZURpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwZW5kaW5nU3RhZ2VQb3NpdGlvbjogeyBzd2ltbGFuZUluZGV4OiBudW1iZXI7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsID1cbiAgICBudWxsO1xuICBwZW5kaW5nU3RhZ2VEYXRhOiBQYXJ0aWFsPFdvcmtmbG93U3RhZ2U+ID0ge307XG5cbiAgZWRpdGluZ1N3aW1sYW5lSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBlZGl0aW5nU3dpbWxhbmU6IFdyaXRhYmxlU2lnbmFsPHsgbmFtZTogc3RyaW5nOyB0YWdzOiBUYWdbXSB9IHwgbnVsbD4gPVxuICAgIHNpZ25hbChudWxsKTtcbiAgaXNDcmVhdGluZ1N0YWdlRnJvbUNvbm5lY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwZW5kaW5nQ29ubmVjdGlvblNvdXJjZVBvaW50OiBDb25uZWN0aW9uUG9pbnQgfCBudWxsID0gbnVsbDtcbiAgcGVuZGluZ0Nvbm5lY3Rpb25Tb3VyY2VTd2ltbGFuZUluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNTYXZpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc3RhdGU6IFdvcmtmbG93RGVzaWduZXJTdGF0ZSxcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBXb3JrZmxvd0RhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbFNlcnZpY2U6IFV0aWxTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gTG9hZCB3b3JrZmxvdyBkYXRhIGlmIGNvZGUgaXMgcHJvdmlkZWRcbiAgICBpZiAodGhpcy53b3JrZmxvd0NvZGUpIHtcbiAgICAgIHRoaXMubG9hZFdvcmtmbG93KHRoaXMud29ya2Zsb3dDb2RlKTtcbiAgICB9XG4gIH1cblxuICBzYXZlV29ya2Zsb3coKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTYXZpbmcpIHJldHVybjtcblxuICAgIHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xuXG4gICAgLy8gVHJhbnNmb3JtIHRoZSBVSSBtb2RlbCB0byB0aGUgQVBJIG1vZGVsXG4gICAgY29uc3Qgd29ya2Zsb3dNb2RlbCA9IHRoaXMuc3RhdGUudHJhbnNmb3JtVG9Xb3JrZmxvd01vZGVsKCk7XG5cbiAgICBpZiAod29ya2Zsb3dNb2RlbCkge1xuICAgICAgLy8gU2F2ZSB0byB0aGUgYmFja2VuZFxuICAgICAgdGhpcy5kYXRhU2VydmljZVxuICAgICAgICAuc2F2ZVdvcmtmbG93cyhbd29ya2Zsb3dNb2RlbF0pXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdXb3JrZmxvdyBzYXZlZCBzdWNjZXNzZnVsbHk6JywgcmVzcG9uc2UpO1xuICAgICAgICAgIHRoaXMudXRpbFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ1dvcmtmbG93IHNhdmVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgIC8vIElmIHRoZSBBUEkgcmV0dXJucyBhbiB1cGRhdGVkIHdvcmtmbG93LCB3ZSBtaWdodCB3YW50IHRvIHJlbG9hZCBpdFxuICAgICAgICAgIGNvbnN0IHVwZGF0ZWRXb3JrZmxvdyA9IHJlc3BvbnNlWzBdO1xuICAgICAgICAgIGlmICh1cGRhdGVkV29ya2Zsb3cpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuc2V0V29ya2Zsb3dJZCh1cGRhdGVkV29ya2Zsb3cuQ29kZSk7XG4gICAgICAgICAgICB0aGlzLnBhcnNlV29ya2Zsb3dEYXRhKHVwZGF0ZWRXb3JrZmxvdyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyB3b3JrZmxvdzonLCBlcnJvcik7XG4gICAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xuICAgICAgICAgIC8vIEhhbmRsZSBlcnJvciAtIHNob3cgYSBub3RpZmljYXRpb24sIGV0Yy5cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbG9hZFdvcmtmbG93KGNvZGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlXG4gICAgICAuZ2V0V29ya2Zsb3dXaXRoUGFyYW0oY29kZSlcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuUmVzdWx0KSB7XG4gICAgICAgICAgLy8gU3RvcmUgdGhlIHdvcmtmbG93IElEXG4gICAgICAgICAgY29uc3Qgd2YgPSByZXNwb25zZS5SZXN1bHRbMF07XG4gICAgICAgICAgdGhpcy5zdGF0ZS5zZXRXb3JrZmxvd0lkKHdmLkNvZGUpO1xuICAgICAgICAgIHRoaXMucGFyc2VXb3JrZmxvd0RhdGEod2YpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIHdvcmtmbG93OicsIGVycm9yKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gTWV0aG9kIHRvIHBhcnNlIHdvcmtmbG93IGRhdGEgZnJvbSBBUEkgYW5kIHBvcHVsYXRlIHRoZSBkZXNpZ25lclxuICBwYXJzZVdvcmtmbG93RGF0YSh3b3JrZmxvdzogV29ya2Zsb3cpOiB2b2lkIHtcbiAgICAvLyBTdG9yZSB0aGUgY29tcGxldGUgd29ya2Zsb3dcbiAgICB0aGlzLnN0YXRlLndvcmtmbG93ID0gd29ya2Zsb3c7XG5cbiAgICAvLyBDbGVhciBleGlzdGluZyBzdGF0ZVxuICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVzID0gW107XG4gICAgdGhpcy5zdGF0ZS5jb25uZWN0aW9ucyA9IFtdO1xuICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVSZWNvcmQgPSB7fTtcbiAgICB0aGlzLnN0YXRlLnN0YWdlUmVjb3JkID0ge307XG4gICAgdGhpcy5zdGF0ZS5hY3Rpb25SZWNvcmQgPSB7fTtcblxuICAgIC8vIFNldCB3b3JrZmxvdyBmb3JtIGlmIGV4aXN0c1xuICAgIGlmICh3b3JrZmxvdy5Gb3JtKSB7XG4gICAgICB0aGlzLnN0YXRlLnNldFdvcmtmbG93Rm9ybShcbiAgICAgICAgd29ya2Zsb3cuRm9ybSxcbiAgICAgICAgd29ya2Zsb3cuRm9ybU5hbWUgfHwgJ1dvcmtmbG93IEZvcm0nXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFN0b3JlIHRoZSB3b3JrZmxvdyBJRFxuICAgIHRoaXMuc3RhdGUuc2V0V29ya2Zsb3dJZCh3b3JrZmxvdy5Db2RlKTtcblxuICAgIC8vIFByb2Nlc3Mgc3dpbWxhbmVzIGZpcnN0XG4gICAgaWYgKHdvcmtmbG93LkxhbmVzICYmIHdvcmtmbG93LkxhbmVzLmxlbmd0aCkge1xuICAgICAgd29ya2Zsb3cuTGFuZXMuc29ydCgoYSwgYikgPT4gYS5Qb3NpdGlvbiAtIGIuUG9zaXRpb24pLmZvckVhY2goKGxhbmUpID0+IHtcbiAgICAgICAgLy8gU3RvcmUgb3JpZ2luYWwgbGFuZSBpbiByZWNvcmRcbiAgICAgICAgdGhpcy5zdGF0ZS5zd2ltbGFuZVJlY29yZFtsYW5lLkNvZGVdID0gbGFuZTtcblxuICAgICAgICAvLyBBZGQgc3dpbWxhbmUgdG8gVUkgbW9kZWwgd2l0aCB0aGUgb3JpZ2luYWwgSURcbiAgICAgICAgY29uc3Qgc3dpbWxhbmUgPSB7XG4gICAgICAgICAgb3JkZXI6IGxhbmUuUG9zaXRpb24sXG4gICAgICAgICAgbGFiZWw6IGxhbmUuTmFtZSB8fCBgTGFuZSAke2xhbmUuUG9zaXRpb259YCxcbiAgICAgICAgICB0YWdzOiBsYW5lLlRhZ3MgfHwgW10sXG4gICAgICAgICAgbm9kZXM6IFtdLFxuICAgICAgICAgIGlkOiBsYW5lLkNvZGUsIC8vIFN0b3JlIHRoZSBvcmlnaW5hbCBJRFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVzLnB1c2goc3dpbWxhbmUpO1xuXG4gICAgICAgIC8vIFJlZ2lzdGVyIGxvYWRlZCBvYmplY3RcbiAgICAgICAgdGhpcy5zdGF0ZS5yZWdpc3RlckxvYWRlZE9iamVjdChsYW5lLklkLCBsYW5lLkNvZGUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzcyBzdGFnZXNcbiAgICBpZiAod29ya2Zsb3cuU3RhZ2VzICYmIHdvcmtmbG93LlN0YWdlcy5sZW5ndGgpIHtcbiAgICAgIHdvcmtmbG93LlN0YWdlcy5mb3JFYWNoKChzdGFnZSkgPT4ge1xuICAgICAgICAvLyBTdG9yZSBvcmlnaW5hbCBzdGFnZSBpbiByZWNvcmRcbiAgICAgICAgdGhpcy5zdGF0ZS5zdGFnZVJlY29yZFtzdGFnZS5Db2RlXSA9IHN0YWdlO1xuXG4gICAgICAgIC8vIEZpbmQgc3dpbWxhbmUgaW5kZXggYnkgU3dpbUxhbmUgSURcbiAgICAgICAgY29uc3Qgc3dpbWxhbmVJbmRleCA9IHRoaXMuc3RhdGUuc3dpbWxhbmVzLmZpbmRJbmRleChcbiAgICAgICAgICAobGFuZSkgPT4gbGFuZS5pZCA9PT0gc3RhZ2UuU3dpbUxhbmVcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoc3dpbWxhbmVJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBjb25zdCB4ID0gc3RhZ2UuQ29vcmRpbmF0ZXM/LlggfHwgMTAwO1xuICAgICAgICAgIGNvbnN0IHkgPSBzdGFnZS5Db29yZGluYXRlcz8uWSB8fCA1MDtcblxuICAgICAgICAgIC8vIENyZWF0ZSBub2RlIHdpdGggb3JpZ2luYWwgSURcbiAgICAgICAgICBjb25zdCBub2RlOiBOb2RlID0ge1xuICAgICAgICAgICAgaWQ6IHN0YWdlLkNvZGUsIC8vIFVzZSBvcmlnaW5hbCBJRFxuICAgICAgICAgICAgdHlwZTogc3RhZ2UuU3ViV29ya0Zsb3cgPyAnc3ViZmxvdycgOiAoJ3N0YWdlJyBhcyBjb25zdCksXG4gICAgICAgICAgICB4OiB4LFxuICAgICAgICAgICAgeTogeSxcbiAgICAgICAgICAgIHdpZHRoOiAxNjksXG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCxcbiAgICAgICAgICAgIGlzU3RhcnROb2RlOiBzdGFnZS5Jc0VudHJ5UG9pbnQsXG4gICAgICAgICAgICBzdGFnZURhdGE6IHtcbiAgICAgICAgICAgICAgTmFtZTogc3RhZ2UuTmFtZSxcbiAgICAgICAgICAgICAgRGVzY3JpcHRpb246IHN0YWdlLkRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICBEdXJhdGlvbjogc3RhZ2UuRHVyYXRpb24sXG4gICAgICAgICAgICAgIFBhc3NPblJ1bGU6IHN0YWdlLlBhc3NPblJ1bGUsXG4gICAgICAgICAgICAgIEFjdG9yUnVsZTogc3RhZ2UuQWN0b3JSdWxlLFxuICAgICAgICAgICAgICBNaW5Ob09mQWN0b3I6IHN0YWdlLk1pbk5vT2ZBY3RvcixcbiAgICAgICAgICAgICAgVGFnczogc3RhZ2UuVGFncyB8fCBbXSxcbiAgICAgICAgICAgICAgSXNQYXJhbGxlbDogc3RhZ2UuSXNQYXJhbGxlbCxcbiAgICAgICAgICAgICAgSXNFbnRyeVBvaW50OiBzdGFnZS5Jc0VudHJ5UG9pbnQsXG4gICAgICAgICAgICAgIElzRXhpdFBvaW50OiBzdGFnZS5Jc0V4aXRQb2ludCxcbiAgICAgICAgICAgICAgSXNTdWJQcm9jZXNzOiBzdGFnZS5TdWJXb3JrRmxvdyA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgSWQ6IHN0YWdlLklkLCAvLyBLZWVwIG9yaWdpbmFsIElEXG4gICAgICAgICAgICAgIENvZGU6IHN0YWdlLkNvZGUsXG4gICAgICAgICAgICAgIEZvcm06IHN0YWdlLkZvcm0sXG4gICAgICAgICAgICAgIGZvcm1JZDogc3RhZ2UuRm9ybSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb25uZWN0aW9uUG9pbnRzOiBbXSwgLy8gSW5pdGlhbGl6ZSB3aXRoIGVtcHR5IGFycmF5XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIC8vIEdlbmVyYXRlIGNvbm5lY3Rpb24gcG9pbnRzXG4gICAgICAgICAgbm9kZS5jb25uZWN0aW9uUG9pbnRzID0gdGhpcy5zdGF0ZS5nZW5lcmF0ZUNvbm5lY3Rpb25Qb2ludHMobm9kZSk7XG5cbiAgICAgICAgICAvLyBBZGQgbm9kZSB0byBzd2ltbGFuZVxuICAgICAgICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVzW3N3aW1sYW5lSW5kZXhdLm5vZGVzID1cbiAgICAgICAgICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVzW3N3aW1sYW5lSW5kZXhdLm5vZGVzIHx8IFtdO1xuICAgICAgICAgIHRoaXMuc3RhdGUuc3dpbWxhbmVzW3N3aW1sYW5lSW5kZXhdLm5vZGVzLnB1c2gobm9kZSk7XG5cbiAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgc3RhcnQgbm9kZSwgdXBkYXRlIHN0YXRlXG4gICAgICAgICAgaWYgKHN0YWdlLklzRW50cnlQb2ludCkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5zdGFydE5vZGVJZCA9IHN0YWdlLkNvZGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gUmVnaXN0ZXIgbG9hZGVkIHN0YWdlXG4gICAgICAgICAgdGhpcy5zdGF0ZS5yZWdpc3RlckxvYWRlZE9iamVjdChzdGFnZS5JZCwgc3RhZ2UuQ29kZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFByb2Nlc3MgY29ubmVjdGlvbnMvYWN0aW9uc1xuICAgIGlmICh3b3JrZmxvdy5BY3Rpb25zICYmIHdvcmtmbG93LkFjdGlvbnMubGVuZ3RoKSB7XG4gICAgICB3b3JrZmxvdy5BY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgICAvLyBTdG9yZSBvcmlnaW5hbCBhY3Rpb24gaW4gcmVjb3JkXG4gICAgICAgIHRoaXMuc3RhdGUuYWN0aW9uUmVjb3JkW2FjdGlvbi5Db2RlXSA9IGFjdGlvbjtcblxuICAgICAgICAvLyBGaW5kIHNvdXJjZSBhbmQgdGFyZ2V0IG5vZGVzXG4gICAgICAgIGNvbnN0IHNvdXJjZU5vZGVJbmZvID0gdGhpcy5zdGF0ZS5maW5kTm9kZUJ5SWQoYWN0aW9uLkZyb21TdGFnZSk7XG4gICAgICAgIGNvbnN0IHRhcmdldE5vZGVJbmZvID0gdGhpcy5zdGF0ZS5maW5kTm9kZUJ5SWQoYWN0aW9uLlRvU3RhZ2UpO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKHNvdXJjZU5vZGVJbmZvLCB0YXJnZXROb2RlSW5mbyk7XG5cbiAgICAgICAgaWYgKHNvdXJjZU5vZGVJbmZvICYmIHRhcmdldE5vZGVJbmZvKSB7XG4gICAgICAgICAgLy8gRmluZCBzdWl0YWJsZSBjb25uZWN0aW9uIHBvaW50c1xuICAgICAgICAgIC8vIGNvbnN0IHNvdXJjZU5vZGUgPSBzb3VyY2VOb2RlSW5mby5ub2RlO1xuICAgICAgICAgIC8vIGNvbnN0IHRhcmdldE5vZGUgPSB0YXJnZXROb2RlSW5mby5ub2RlO1xuXG4gICAgICAgICAgLy8gY29uc3Qgc291cmNlUG9pbnQgPSBzb3VyY2VOb2RlLmNvbm5lY3Rpb25Qb2ludHM/LmZpbmQoXG4gICAgICAgICAgLy8gICAocCkgPT4gcC50eXBlID09PSAncmlnaHQnIHx8IHAudHlwZSA9PT0gJ2JvdHRvbSdcbiAgICAgICAgICAvLyApO1xuXG4gICAgICAgICAgLy8gY29uc3QgdGFyZ2V0UG9pbnQgPSB0YXJnZXROb2RlLmNvbm5lY3Rpb25Qb2ludHM/LmZpbmQoXG4gICAgICAgICAgLy8gICAocCkgPT4gcC50eXBlID09PSAnbGVmdCcgfHwgcC50eXBlID09PSAndG9wJ1xuICAgICAgICAgIC8vICk7XG5cbiAgICAgICAgICBjb25zdCBzb3VyY2VOb2RlID0gc291cmNlTm9kZUluZm8ubm9kZTtcbiAgICAgICAgICBjb25zdCB0YXJnZXROb2RlID0gdGFyZ2V0Tm9kZUluZm8ubm9kZTtcblxuICAgICAgICAgIGxldCBzb3VyY2VQb2ludElkLCB0YXJnZXRQb2ludElkO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coYWN0aW9uLlNvdXJjZVBvaW50VHlwZSwgYWN0aW9uLlRhcmdldFBvaW50VHlwZSk7XG5cbiAgICAgICAgICBpZiAoYWN0aW9uLlNvdXJjZVBvaW50VHlwZSkge1xuICAgICAgICAgICAgLy8gRmluZCBhIHBvaW50IHdpdGggbWF0Y2hpbmcgdHlwZVxuICAgICAgICAgICAgY29uc3Qgc291cmNlUG9pbnQgPSBzb3VyY2VOb2RlLmNvbm5lY3Rpb25Qb2ludHM/LmZpbmQoXG4gICAgICAgICAgICAgIChwKSA9PiBwLnR5cGUgPT09IGFjdGlvbi5Tb3VyY2VQb2ludFR5cGU/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzb3VyY2VQb2ludElkID0gc291cmNlUG9pbnQ/LmlkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBGYWxsYmFjayB0byBmaW5kaW5nIGEgc3VpdGFibGUgcG9pbnRcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZVBvaW50ID0gc291cmNlTm9kZS5jb25uZWN0aW9uUG9pbnRzPy5maW5kKFxuICAgICAgICAgICAgICAocCkgPT4gcC50eXBlID09PSAncmlnaHQnIHx8IHAudHlwZSA9PT0gJ2JvdHRvbSdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzb3VyY2VQb2ludElkID0gc291cmNlUG9pbnQ/LmlkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChhY3Rpb24uVGFyZ2V0UG9pbnRUeXBlKSB7XG4gICAgICAgICAgICAvLyBGaW5kIGEgcG9pbnQgd2l0aCBtYXRjaGluZyB0eXBlXG4gICAgICAgICAgICBjb25zdCB0YXJnZXRQb2ludCA9IHRhcmdldE5vZGUuY29ubmVjdGlvblBvaW50cz8uZmluZChcbiAgICAgICAgICAgICAgKHApID0+IHAudHlwZSA9PT0gYWN0aW9uLlRhcmdldFBvaW50VHlwZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRhcmdldFBvaW50SWQgPSB0YXJnZXRQb2ludD8uaWQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEZhbGxiYWNrIHRvIGZpbmRpbmcgYSBzdWl0YWJsZSBwb2ludFxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0UG9pbnQgPSB0YXJnZXROb2RlLmNvbm5lY3Rpb25Qb2ludHM/LmZpbmQoXG4gICAgICAgICAgICAgIChwKSA9PiBwLnR5cGUgPT09ICdsZWZ0JyB8fCBwLnR5cGUgPT09ICd0b3AnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGFyZ2V0UG9pbnRJZCA9IHRhcmdldFBvaW50Py5pZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmxvZygnU291cmNlIHBvaW50OicsIHNvdXJjZVBvaW50SWQpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdUYXJnZXQgcG9pbnQ6JywgdGFyZ2V0UG9pbnRJZCk7XG5cbiAgICAgICAgICBpZiAoc291cmNlUG9pbnRJZCAmJiB0YXJnZXRQb2ludElkKSB7XG4gICAgICAgICAgICBjb25zdCBjb25uZWN0aW9uID0ge1xuICAgICAgICAgICAgICBpZDogYWN0aW9uLkNvZGUsIC8vIFVzZSBvcmlnaW5hbCBJRFxuICAgICAgICAgICAgICBzb3VyY2VOb2RlSWQ6IGFjdGlvbi5Gcm9tU3RhZ2UsXG4gICAgICAgICAgICAgIHRhcmdldE5vZGVJZDogYWN0aW9uLlRvU3RhZ2UsXG4gICAgICAgICAgICAgIHNvdXJjZVBvaW50SWQ6IHNvdXJjZVBvaW50SWQsXG4gICAgICAgICAgICAgIHRhcmdldFBvaW50SWQ6IHRhcmdldFBvaW50SWQsXG4gICAgICAgICAgICAgIHNvdXJjZVN3aW1sYW5lSW5kZXg6IHNvdXJjZU5vZGVJbmZvLnN3aW1sYW5lSW5kZXgsXG4gICAgICAgICAgICAgIHRhcmdldFN3aW1sYW5lSW5kZXg6IHRhcmdldE5vZGVJbmZvLnN3aW1sYW5lSW5kZXgsXG4gICAgICAgICAgICAgIGNvbmRpdGlvbjogYWN0aW9uLlBhc3NPblJ1bGUgfHwgJycsXG4gICAgICAgICAgICAgIGxhYmVsOiBhY3Rpb24uTmFtZSB8fCAnJyxcbiAgICAgICAgICAgICAgYWN0aW9uOiBhY3Rpb24uT3BlcmF0aW9uQWN0aW9uIHx8IG51bGwsXG4gICAgICAgICAgICAgIHRhcmdldFN0YXR1czogYWN0aW9uLlRhcmdldFN0YXR1cyB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLnN0YXRlLmNvbm5lY3Rpb25zLnB1c2goY29ubmVjdGlvbik7XG5cbiAgICAgICAgICAgIC8vIFJlZ2lzdGVyIGxvYWRlZCBhY3Rpb25cbiAgICAgICAgICAgIHRoaXMuc3RhdGUucmVnaXN0ZXJMb2FkZWRPYmplY3QoYWN0aW9uLklkLCBhY3Rpb24uQ29kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kIHRvIGZpbmQgc3dpbWxhbmUgaW5kZXggYnkgTGFuZSBJRFxuICBmaW5kU3dpbWxhbmVJbmRleEJ5TGFuZUlkKGxhbmVJZDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAvLyBGaXJzdCBjaGVjayBvdXIgbWFwcGluZ1xuICAgIGlmICh0aGlzLnN0YXRlLmxhbmVJZFRvSW5kZXhNYXAuaGFzKGxhbmVJZCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXRlLmxhbmVJZFRvSW5kZXhNYXAuZ2V0KGxhbmVJZCkhO1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIHRvIHRoZSBvcmlnaW5hbCBsb2dpYyAoZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpXG4gICAgY29uc3QgcGFydHMgPSBsYW5lSWQuc3BsaXQoJy0nKTtcbiAgICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgY29uc3QgaW5kZXggPSBwYXJzZUludChwYXJ0c1sxXSk7XG4gICAgICBpZiAoIWlzTmFOKGluZGV4KSAmJiBpbmRleCA8IHRoaXMuc3RhdGUuc3dpbWxhbmVzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgLy8gSGFuZGxlIHRvb2wgc2VsZWN0aW9uIGZyb20gdG9vbGJhclxuICBvblRvb2xTZWxlY3RlZCh0b29sOiBUb29sVHlwZSk6IHZvaWQge1xuICAgIC8vIFRvZ2dsZSBzZWxlY3Rpb24gaWYgdGhlIHNhbWUgdG9vbCBpcyBjbGlja2VkIGFnYWluXG4gICAgdGhpcy5zZWxlY3RlZFRvb2wgPSB0aGlzLnNlbGVjdGVkVG9vbCA9PT0gdG9vbCA/IG51bGwgOiB0b29sO1xuICAgIGNvbnNvbGUubG9nKCdTZWxlY3RlZCB0b29sOicsIHRoaXMuc2VsZWN0ZWRUb29sKTtcbiAgfVxuXG4gIG9wZW5Td2ltbGFuZURpYWxvZygpIHtcbiAgICBjb25zb2xlLmxvZygnU01MIElOREVYJywgdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleCk7XG4gICAgaWYgKHRoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXggIT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdTTUwnLCB0aGlzLnN0YXRlLnN3aW1sYW5lc1t0aGlzLmVkaXRpbmdTd2ltbGFuZUluZGV4XSk7XG4gICAgICB0aGlzLmVkaXRpbmdTd2ltbGFuZS5zZXQoe1xuICAgICAgICBuYW1lOiB0aGlzLnN0YXRlLnN3aW1sYW5lc1t0aGlzLmVkaXRpbmdTd2ltbGFuZUluZGV4XS5sYWJlbCxcbiAgICAgICAgdGFnczogdGhpcy5zdGF0ZS5zd2ltbGFuZXNbdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleF0udGFncyxcbiAgICAgIH0pO1xuICAgICAgY29uc29sZS5sb2coJ1NNTF9FRFQnLCB0aGlzLmVkaXRpbmdTd2ltbGFuZSgpKTtcbiAgICB9XG4gICAgdGhpcy5zaG93U3dpbWxhbmVEaWFsb2cgPSB0cnVlO1xuICB9XG5cbiAgb25TaG93U3RhZ2VEaWFsb2coZXZlbnQ6IHsgcG9zaXRpb246IGFueTsgaXNGcm9tQ29ubmVjdGlvbjogYm9vbGVhbiB9KSB7XG4gICAgY29uc29sZS5sb2coJ1JlY2VpdmVkIHNob3dTdGFnZURpYWxvZyBldmVudDonLCBldmVudCk7XG4gICAgdGhpcy5wZW5kaW5nU3RhZ2VQb3NpdGlvbiA9IGV2ZW50LnBvc2l0aW9uO1xuICAgIHRoaXMuc2hvd1N0YWdlRGlhbG9nID0gdHJ1ZTtcblxuICAgIC8vIElmIHRoaXMgaXMgZnJvbSBhIGNvbm5lY3Rpb24gY3JlYXRpb24sIHN0b3JlIHRoYXQgaW5mb1xuICAgIHRoaXMuaXNDcmVhdGluZ1N0YWdlRnJvbUNvbm5lY3Rpb24gPSBldmVudC5pc0Zyb21Db25uZWN0aW9uO1xuXG4gICAgLy8gU3RvcmUgdGhlIHNvdXJjZSBwb2ludCBkYXRhIGJlZm9yZSBpdCBnZXRzIGxvc3RcbiAgICBpZiAoXG4gICAgICBldmVudC5pc0Zyb21Db25uZWN0aW9uICYmXG4gICAgICB0aGlzLnN0YXRlLmRyYWdnaW5nQ29ubmVjdGlvbkRhdGEuc291cmNlUG9pbnRcbiAgICApIHtcbiAgICAgIHRoaXMucGVuZGluZ0Nvbm5lY3Rpb25Tb3VyY2VQb2ludCA9XG4gICAgICAgIHRoaXMuc3RhdGUuZHJhZ2dpbmdDb25uZWN0aW9uRGF0YS5zb3VyY2VQb2ludDtcbiAgICAgIHRoaXMucGVuZGluZ0Nvbm5lY3Rpb25Tb3VyY2VTd2ltbGFuZUluZGV4ID1cbiAgICAgICAgdGhpcy5zdGF0ZS5kcmFnZ2luZ0Nvbm5lY3Rpb25EYXRhLnNvdXJjZVN3aW1sYW5lSW5kZXggPz8gbnVsbDtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAnU3RvcmVkIHNvdXJjZSBwb2ludCBmb3IgY29ubmVjdGlvbjonLFxuICAgICAgICB0aGlzLnBlbmRpbmdDb25uZWN0aW9uU291cmNlUG9pbnRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ1N0YWdlIGRpYWxvZyBzdGF0ZTonLCB7XG4gICAgICBwZW5kaW5nUG9zaXRpb246IHRoaXMucGVuZGluZ1N0YWdlUG9zaXRpb24sXG4gICAgICBpc1Zpc2libGU6IHRoaXMuc2hvd1N0YWdlRGlhbG9nLFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlQ2FudmFzUG9zaXRpb25DbGljayhldmVudDogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9KSB7XG4gICAgY29uc29sZS5sb2coZXZlbnQpO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhbiBlZGl0IHN3aW1sYW5lIGV2ZW50XG4gICAgaWYgKFxuICAgICAgZXZlbnQueCA9PT0gLTEgJiZcbiAgICAgIGV2ZW50LnkgPj0gMCAmJlxuICAgICAgZXZlbnQueSA8IHRoaXMuc3RhdGUuc3dpbWxhbmVzLmxlbmd0aFxuICAgICkge1xuICAgICAgY29uc29sZS5sb2coJ0VkaXRpbmcgc3dpbWxhbmUnLCBldmVudC55KTtcbiAgICAgIHRoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXggPSBldmVudC55O1xuICAgICAgdGhpcy5vcGVuU3dpbWxhbmVEaWFsb2coKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBOb3JtYWwgY2FudmFzIGNsaWNrIGhhbmRsaW5nXG4gICAgY29uc3Qgc3dpbWxhbmVJbmRleCA9IE1hdGguZmxvb3IoZXZlbnQueSAvIDI2Myk7XG5cbiAgICBzd2l0Y2ggKHRoaXMuc2VsZWN0ZWRUb29sKSB7XG4gICAgICBjYXNlICdzd2ltbGFuZSc6XG4gICAgICAgIGNvbnNvbGUubG9nKCdPcGVuaW5nIHN3aW1sYW5lIGRpYWxvZyBmb3IgbmV3IHN3aW1sYW5lJyk7XG4gICAgICAgIHRoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXggPSBudWxsOyAvLyBTZXQgdG8gbnVsbCB0byBpbmRpY2F0ZSBjcmVhdGluZyBhIG5ldyBzd2ltbGFuZVxuICAgICAgICB0aGlzLm9wZW5Td2ltbGFuZURpYWxvZygpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVG9vbCA9IG51bGw7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3RhZ2UnOlxuICAgICAgICBpZiAoc3dpbWxhbmVJbmRleCA+PSAwICYmIHN3aW1sYW5lSW5kZXggPCB0aGlzLnN0YXRlLnN3aW1sYW5lcy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGBBZGRpbmcgJHt0aGlzLnNlbGVjdGVkVG9vbH0gdG8gc3dpbWxhbmUgJHtzd2ltbGFuZUluZGV4fWBcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gQ3JlYXRlIHRoZSBzdGFnZSBkaXJlY3RseSB3aXRoIGRlZmF1bHQgcHJvcGVydGllc1xuICAgICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YXRlLmFkZE5vZGUoXG4gICAgICAgICAgICBzd2ltbGFuZUluZGV4LFxuICAgICAgICAgICAgJ3N0YWdlJyxcbiAgICAgICAgICAgIGV2ZW50LngsXG4gICAgICAgICAgICBldmVudC55LFxuICAgICAgICAgICAgeyBOYW1lOiAnTmV3IFN0YWdlJyB9IC8vIEFkZCBkZWZhdWx0IHByb3BlcnRpZXNcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBzZWxlY3RlZCB0b29sIGFmdGVyIHBsYWNpbmcgYSBub2RlXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVG9vbCA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGVjaXNpb24nOlxuICAgICAgY2FzZSAnZm9ybSc6XG4gICAgICAgIGlmIChzd2ltbGFuZUluZGV4ID49IDAgJiYgc3dpbWxhbmVJbmRleCA8IHRoaXMuc3RhdGUuc3dpbWxhbmVzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYEFkZGluZyAke3RoaXMuc2VsZWN0ZWRUb29sfSB0byBzd2ltbGFuZSAke3N3aW1sYW5lSW5kZXh9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhdGUuYWRkTm9kZShcbiAgICAgICAgICAgIHN3aW1sYW5lSW5kZXgsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVG9vbCxcbiAgICAgICAgICAgIGV2ZW50LngsXG4gICAgICAgICAgICBldmVudC55XG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgLy8gUmVzZXQgdGhlIHNlbGVjdGVkIHRvb2wgYWZ0ZXIgcGxhY2luZyBhIG5vZGVcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUb29sID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdWJmbG93JzpcbiAgICAgICAgaWYgKHN3aW1sYW5lSW5kZXggPj0gMCAmJiBzd2ltbGFuZUluZGV4IDwgdGhpcy5zdGF0ZS5zd2ltbGFuZXMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBgQWRkaW5nICR7dGhpcy5zZWxlY3RlZFRvb2x9IHRvIHN3aW1sYW5lICR7c3dpbWxhbmVJbmRleH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICAvLyBTaG93IHN1YmZsb3cgd29ya2Zsb3cgc2VsZWN0aW9uIHBvcHVwXG4gICAgICAgICAgdGhpcy5jYW52YXNSZWYuc2hvd1N1YmZsb3dTZWxlY3Rpb25Qb3B1cChcbiAgICAgICAgICAgIGV2ZW50LngsXG4gICAgICAgICAgICBldmVudC55LFxuICAgICAgICAgICAgc3dpbWxhbmVJbmRleFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBvblN3aW1sYW5lRGlhbG9nRmlsbGVkKGV2ZW50OiB7IHRhZ3M6IFRhZ1tdOyBuYW1lOiBzdHJpbmcgfSkge1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgJ1N3aW1sYW5lIGRpYWxvZyBmaWxsZWQ6JyxcbiAgICAgIGV2ZW50LFxuICAgICAgJ0VkaXRpbmcgaW5kZXg6JyxcbiAgICAgIHRoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXhcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXggIT09IG51bGwpIHtcbiAgICAgIC8vIFVwZGF0ZSBleGlzdGluZyBzd2ltbGFuZVxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICdVcGRhdGluZyBleGlzdGluZyBzd2ltbGFuZSBhdCBpbmRleDonLFxuICAgICAgICB0aGlzLmVkaXRpbmdTd2ltbGFuZUluZGV4XG4gICAgICApO1xuICAgICAgdGhpcy5zdGF0ZS51cGRhdGVTd2ltbGFuZShcbiAgICAgICAgdGhpcy5lZGl0aW5nU3dpbWxhbmVJbmRleCxcbiAgICAgICAgZXZlbnQubmFtZSxcbiAgICAgICAgZXZlbnQudGFnc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ3JlYXRlIG5ldyBzd2ltbGFuZVxuICAgICAgY29uc29sZS5sb2coJ0NyZWF0aW5nIG5ldyBzd2ltbGFuZScpO1xuICAgICAgdGhpcy5zdGF0ZS5hZGRTd2ltbGFuZShldmVudC5uYW1lLCBldmVudC50YWdzKTtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dTd2ltbGFuZURpYWxvZyA9IGZhbHNlO1xuICAgIHRoaXMuZWRpdGluZ1N3aW1sYW5lSW5kZXggPSBudWxsO1xuICB9XG5cbiAgb25TdGFnZURpYWxvZ1NhdmVkKHN0YWdlRGF0YTogUGFydGlhbDxXb3JrZmxvd1N0YWdlPikge1xuICAgIGlmICh0aGlzLmNhbnZhc1JlZi5hY3RpdmVTdGFnZUlkKSB7XG4gICAgICAvLyBFZGl0aW5nIGFuIGV4aXN0aW5nIHN0YWdlXG4gICAgICBjb25zdCBub2RlSW5mbyA9IHRoaXMuc3RhdGUuZmluZE5vZGVCeUlkKHRoaXMuY2FudmFzUmVmLmFjdGl2ZVN0YWdlSWQpO1xuICAgICAgaWYgKG5vZGVJbmZvKSB7XG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgc3RhZ2UgZGF0YVxuICAgICAgICBub2RlSW5mby5ub2RlLnN0YWdlRGF0YSA9IHtcbiAgICAgICAgICAuLi5ub2RlSW5mby5ub2RlLnN0YWdlRGF0YSxcbiAgICAgICAgICAuLi5zdGFnZURhdGEsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnNvbGUubG9nKCdVcGRhdGVkIHN0YWdlIGRhdGE6Jywgbm9kZUluZm8ubm9kZS5zdGFnZURhdGEpO1xuICAgICAgfVxuICAgICAgdGhpcy5jYW52YXNSZWYuYWN0aXZlU3RhZ2VJZCA9IG51bGw7XG4gICAgfSBlbHNlIGlmICh0aGlzLnBlbmRpbmdTdGFnZVBvc2l0aW9uKSB7XG4gICAgICBpZiAodGhpcy5jYW52YXNSZWYuYWN0aXZlU3RhZ2VJZCkge1xuICAgICAgICAvLyBFZGl0aW5nIGFuIGV4aXN0aW5nIHN0YWdlXG4gICAgICAgIGNvbnN0IG5vZGVJbmZvID0gdGhpcy5zdGF0ZS5maW5kTm9kZUJ5SWQodGhpcy5jYW52YXNSZWYuYWN0aXZlU3RhZ2VJZCk7XG4gICAgICAgIGlmIChub2RlSW5mbykge1xuICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgc3RhZ2UgZGF0YVxuICAgICAgICAgIG5vZGVJbmZvLm5vZGUuc3RhZ2VEYXRhID0ge1xuICAgICAgICAgICAgLi4ubm9kZUluZm8ubm9kZS5zdGFnZURhdGEsXG4gICAgICAgICAgICAuLi5zdGFnZURhdGEsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnVXBkYXRlZCBzdGFnZSBkYXRhOicsIG5vZGVJbmZvLm5vZGUuc3RhZ2VEYXRhKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhbnZhc1JlZi5hY3RpdmVTdGFnZUlkID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wZW5kaW5nU3RhZ2VQb3NpdGlvbikge1xuICAgICAgICAvLyBDcmVhdGluZyBhIG5ldyBzdGFnZSAoa2VlcCBleGlzdGluZyBsb2dpYyBmb3IgdGhpcyBjYXNlKVxuICAgICAgICAvLyAuLi5leGlzdGluZyBjb2RlLi4uXG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2hvd1N0YWdlRGlhbG9nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5zaG93U3RhZ2VEaWFsb2cgPSBmYWxzZTtcbiAgfVxuXG4gIG9uU3ViZmxvd1NlbGVjdGVkKCkge1xuICAgIC8vIFJlc2V0IHRoZSBzZWxlY3RlZCB0b29sIGFmdGVyIHBsYWNpbmcgYSBzdWJmbG93IG5vZGVcbiAgICB0aGlzLnNlbGVjdGVkVG9vbCA9IG51bGw7XG4gIH1cblxuICBvcGVuQWN0b3JUYWdzRGlhbG9nKCkge1xuICAgIHRoaXMuc2hvd0FjdG9yVGFnc0RpYWxvZyA9IHRydWU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3b3JrZmxvdy1kZXNpZ25lclwiPlxuICA8ZGl2IGNsYXNzPVwid29ya2Zsb3ctaGVhZGVyXCI+XG4gICAgPGgxPnt7IHN0YXRlLndvcmtmbG93Py5OYW1lIH19PC9oMT5cbiAgPC9kaXY+XG5cbiAgPCEtLSBUb29sYmFyIENvbXBvbmVudCAtLT5cbiAgPGxpYi1kZXNpZ25lci10b29sYmFyXG4gICAgW3NlbGVjdGVkVG9vbF09XCJzZWxlY3RlZFRvb2xcIlxuICAgIFtpc1NhdmluZ109XCJpc1NhdmluZ1wiXG4gICAgW3dvcmtmbG93Q29kZV09XCJzdGF0ZS53b3JrZmxvdz8uQ29kZSB8fCBudWxsXCJcbiAgICAodG9vbFNlbGVjdGVkKT1cIm9uVG9vbFNlbGVjdGVkKCRldmVudClcIlxuICAgIChzYXZlV29ya2Zsb3cpPVwic2F2ZVdvcmtmbG93KClcIlxuICAgIChvcGVuQWN0b3JUYWdzKT1cIm9wZW5BY3RvclRhZ3NEaWFsb2coKVwiXG4gID5cbiAgPC9saWItZGVzaWduZXItdG9vbGJhcj5cblxuICA8IS0tIFNob3cgbG9hZGluZyBpbmRpY2F0b3IgaWYgbmVlZGVkIC0tPlxuICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJsb2FkaW5nLW92ZXJsYXlcIj5cbiAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy1zcGlubmVyXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxvYWRpbmctdGV4dFwiPkxvYWRpbmcgd29ya2Zsb3cuLi48L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBDYW52YXMgQ29tcG9uZW50IC0tPlxuICA8bGliLWRlc2lnbmVyLWNhbnZhc1xuICAgIFtzZWxlY3RlZFRvb2xdPVwic2VsZWN0ZWRUb29sXCJcbiAgICAoY2xpY2tlZFBvc2l0aW9uKT1cImhhbmRsZUNhbnZhc1Bvc2l0aW9uQ2xpY2soJGV2ZW50KVwiXG4gICAgKHN1YmZsb3dTZWxlY3RlZCk9XCJvblN1YmZsb3dTZWxlY3RlZCgpXCJcbiAgICAoc2hvd1N0YWdlRGlhbG9nKT1cIm9uU2hvd1N0YWdlRGlhbG9nKCRldmVudClcIlxuICAgICNjYW52YXNSZWZcbiAgPlxuICA8L2xpYi1kZXNpZ25lci1jYW52YXM+XG5cbiAgPGxpYi1zd2ltbGFuZS1kaWFsb2dcbiAgICBbdmlzaWJsZV09XCJzaG93U3dpbWxhbmVEaWFsb2dcIlxuICAgIFtzd2ltbGFuZURhdGFdPVwiZWRpdGluZ1N3aW1sYW5lKClcIlxuICAgIChjcmVhdGVkKT1cIm9uU3dpbWxhbmVEaWFsb2dGaWxsZWQoJGV2ZW50KVwiXG4gICAgKGNsb3NlZCk9XCJzaG93U3dpbWxhbmVEaWFsb2cgPSBmYWxzZVwiXG4gID48L2xpYi1zd2ltbGFuZS1kaWFsb2c+XG5cbiAgPGxpYi1zdGFnZS1kaWFsb2dcbiAgICBbdmlzaWJsZV09XCJzaG93U3RhZ2VEaWFsb2dcIlxuICAgIFtzdGFnZURhdGFdPVwicGVuZGluZ1N0YWdlRGF0YVwiXG4gICAgKGNsb3NlZCk9XCJzaG93U3RhZ2VEaWFsb2cgPSBmYWxzZVwiXG4gICAgKHNhdmVkKT1cIm9uU3RhZ2VEaWFsb2dTYXZlZCgkZXZlbnQpXCJcbiAgPjwvbGliLXN0YWdlLWRpYWxvZz5cblxuICA8bGliLWFjdG9yLXRhZ3MtZGlhbG9nXG4gICAgW3Zpc2libGVdPVwic2hvd0FjdG9yVGFnc0RpYWxvZ1wiXG4gICAgW3dvcmtmbG93Q29kZV09XCJzdGF0ZS53b3JrZmxvdz8uQ29kZSB8fCBudWxsXCJcbiAgICAoY2xvc2VkKT1cInNob3dBY3RvclRhZ3NEaWFsb2cgPSBmYWxzZVwiXG4gID48L2xpYi1hY3Rvci10YWdzLWRpYWxvZz5cbjwvZGl2PlxuIl19