@hmcts/ccd-case-ui-toolkit 6.13.10-g-eui-4157-c → 6.13.10-linked-cases-continue-button-validation-v4

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 (39) hide show
  1. package/RELEASE-NOTES.md +3 -0
  2. package/dist/ccd-case-ui-toolkit/bundles/hmcts-ccd-case-ui-toolkit.umd.js +279 -312
  3. package/dist/ccd-case-ui-toolkit/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
  4. package/dist/ccd-case-ui-toolkit/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
  5. package/dist/ccd-case-ui-toolkit/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  6. package/dist/ccd-case-ui-toolkit/esm2015/lib/shared/commons/case-edit-data/case-edit-data.service.js +5 -8
  7. package/dist/ccd-case-ui-toolkit/esm2015/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.js +21 -3
  8. package/dist/ccd-case-ui-toolkit/esm2015/lib/shared/components/case-editor/services/cases.service.js +7 -4
  9. package/dist/ccd-case-ui-toolkit/esm2015/lib/shared/components/palette/linked-cases/domain/linked-cases-state.model.js +1 -1
  10. package/dist/ccd-case-ui-toolkit/esm2015/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.js +36 -86
  11. package/dist/ccd-case-ui-toolkit/esm2015/lib/shared/components/palette/palette.module.js +2 -2
  12. package/dist/ccd-case-ui-toolkit/esm2015/lib/shared/services/fields/fields.utils.js +8 -1
  13. package/dist/ccd-case-ui-toolkit/fesm2015/hmcts-ccd-case-ui-toolkit.js +271 -298
  14. package/dist/ccd-case-ui-toolkit/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  15. package/dist/ccd-case-ui-toolkit/lib/shared/commons/case-edit-data/case-edit-data.service.d.ts +3 -5
  16. package/dist/ccd-case-ui-toolkit/lib/shared/commons/case-edit-data/case-edit-data.service.d.ts.map +1 -1
  17. package/dist/ccd-case-ui-toolkit/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +2 -0
  18. package/dist/ccd-case-ui-toolkit/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  19. package/dist/ccd-case-ui-toolkit/lib/shared/components/case-editor/services/cases.service.d.ts +3 -1
  20. package/dist/ccd-case-ui-toolkit/lib/shared/components/case-editor/services/cases.service.d.ts.map +1 -1
  21. package/dist/ccd-case-ui-toolkit/lib/shared/components/palette/linked-cases/domain/linked-cases-state.model.d.ts +0 -4
  22. package/dist/ccd-case-ui-toolkit/lib/shared/components/palette/linked-cases/domain/linked-cases-state.model.d.ts.map +1 -1
  23. package/dist/ccd-case-ui-toolkit/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts +0 -4
  24. package/dist/ccd-case-ui-toolkit/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts.map +1 -1
  25. package/dist/ccd-case-ui-toolkit/lib/shared/services/fields/fields.utils.d.ts +2 -0
  26. package/dist/ccd-case-ui-toolkit/lib/shared/services/fields/fields.utils.d.ts.map +1 -1
  27. package/dist/ccd-case-ui-toolkit/package.json +1 -1
  28. package/package.json +1 -1
  29. package/projects/ccd-case-ui-toolkit/package.json +1 -1
  30. package/projects/ccd-case-ui-toolkit/src/lib/shared/commons/case-edit-data/case-edit-data.service.ts +4 -9
  31. package/projects/ccd-case-ui-toolkit/src/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.ts +21 -2
  32. package/projects/ccd-case-ui-toolkit/src/lib/shared/components/case-editor/services/cases.service.spec.ts +1 -1
  33. package/projects/ccd-case-ui-toolkit/src/lib/shared/components/case-editor/services/cases.service.ts +1 -0
  34. package/projects/ccd-case-ui-toolkit/src/lib/shared/components/palette/linked-cases/domain/linked-cases-state.model.ts +0 -5
  35. package/projects/ccd-case-ui-toolkit/src/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.html +0 -13
  36. package/projects/ccd-case-ui-toolkit/src/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.spec.ts +4 -19
  37. package/projects/ccd-case-ui-toolkit/src/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.ts +8 -31
  38. package/projects/ccd-case-ui-toolkit/src/lib/shared/services/fields/fields.utils.spec.ts +44 -0
  39. package/projects/ccd-case-ui-toolkit/src/lib/shared/services/fields/fields.utils.ts +10 -1
@@ -5,14 +5,14 @@ export class CaseEditDataService {
5
5
  this.title$ = new BehaviorSubject(null);
6
6
  this.formValidationErrors$ = new BehaviorSubject([]);
7
7
  this.editForm$ = new BehaviorSubject(null);
8
- this.linkError$ = new BehaviorSubject(null);
8
+ this.isLinkedCasesJourneyAtFinalStep$ = new BehaviorSubject(null);
9
9
  this.eventTriggerName$ = new BehaviorSubject(null);
10
10
  this.triggerSubmitEvent$ = new BehaviorSubject(null);
11
11
  this.caseDetails$ = this.details$.asObservable();
12
12
  this.caseTitle$ = this.title$.asObservable();
13
13
  this.caseEditForm$ = this.editForm$.asObservable();
14
14
  this.caseFormValidationErrors$ = this.formValidationErrors$.asObservable();
15
- this.caseLinkError$ = this.linkError$.asObservable();
15
+ this.caseIsLinkedCasesJourneyAtFinalStep$ = this.isLinkedCasesJourneyAtFinalStep$.asObservable();
16
16
  this.caseEventTriggerName$ = this.eventTriggerName$.asObservable();
17
17
  this.caseTriggerSubmitEvent$ = this.triggerSubmitEvent$.asObservable();
18
18
  }
@@ -25,9 +25,6 @@ export class CaseEditDataService {
25
25
  setCaseEventTriggerName(triggerName) {
26
26
  this.eventTriggerName$.next(triggerName);
27
27
  }
28
- setCaseLinkError(error) {
29
- this.linkError$.next(error);
30
- }
31
28
  setFormValidationErrors(validationErrors) {
32
29
  this.formValidationErrors$.next(validationErrors);
33
30
  }
@@ -37,8 +34,8 @@ export class CaseEditDataService {
37
34
  clearFormValidationErrors() {
38
35
  this.formValidationErrors$.next([]);
39
36
  }
40
- clearCaseLinkError() {
41
- this.linkError$.next(null);
37
+ setLinkedCasesJourneyAtFinalStep(isAtFinalStep) {
38
+ this.isLinkedCasesJourneyAtFinalStep$.next(isAtFinalStep);
42
39
  }
43
40
  addFormValidationError(validationError) {
44
41
  this.formValidationErrors$.next(this.formValidationErrors$.getValue().concat([validationError]));
@@ -47,4 +44,4 @@ export class CaseEditDataService {
47
44
  this.triggerSubmitEvent$.next(state);
48
45
  }
49
46
  }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tbW9ucy9jYXNlLWVkaXQtZGF0YS9jYXNlLWVkaXQtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLdkMsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUI7UUFoQlEsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFXLElBQUksQ0FBQyxDQUFDO1FBQy9DLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUMzQywwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBNEIsRUFBRSxDQUFDLENBQUM7UUFDM0UsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFZLElBQUksQ0FBQyxDQUFDO1FBQ2pELGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBbUIsSUFBSSxDQUFDLENBQUM7UUFDekQsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQVMsSUFBSSxDQUFDLENBQUM7UUFDdEQsd0JBQW1CLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFFMUQsaUJBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVDLGVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM5Qyw4QkFBeUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEUsbUJBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hELDBCQUFxQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM5RCw0QkFBdUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFMUQsQ0FBQztJQUVULGNBQWMsQ0FBQyxXQUFxQjtRQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sWUFBWSxDQUFDLFNBQWlCO1FBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxXQUFtQjtRQUNoRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUF1QjtRQUM3QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sdUJBQXVCLENBQUMsZ0JBQXVCO1FBQ3BELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sZUFBZSxDQUFDLFFBQW1CO1FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTSx5QkFBeUI7UUFDOUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxlQUF3QztRQUNwRSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUM3QixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FDaEUsQ0FBQztJQUNKLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxLQUFjO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMaW5rZWRDYXNlc0Vycm9yIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9wYWxldHRlL2xpbmtlZC1jYXNlcy9kb21haW4vbGlua2VkLWNhc2VzLXN0YXRlLm1vZGVsJztcbmltcG9ydCB7IENhc2VWaWV3IH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VFZGl0VmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi9jYXNlLWVkaXQtdmFsaWRhdGlvbi5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBDYXNlRWRpdERhdGFTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBkZXRhaWxzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2FzZVZpZXc+KG51bGwpO1xuICBwcml2YXRlIHRpdGxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihudWxsKTtcbiAgcHJpdmF0ZSBmb3JtVmFsaWRhdGlvbkVycm9ycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhc2VFZGl0VmFsaWRhdGlvbkVycm9yW10+KFtdKTtcbiAgcHJpdmF0ZSBlZGl0Rm9ybSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvcm1Hcm91cD4obnVsbCk7XG4gIHByaXZhdGUgbGlua0Vycm9yJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGlua2VkQ2FzZXNFcnJvcj4obnVsbCk7XG4gIHByaXZhdGUgZXZlbnRUcmlnZ2VyTmFtZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG4gIHByaXZhdGUgdHJpZ2dlclN1Ym1pdEV2ZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4obnVsbCk7XG5cbiAgcHVibGljIGNhc2VEZXRhaWxzJCA9IHRoaXMuZGV0YWlscyQuYXNPYnNlcnZhYmxlKCk7XG4gIHB1YmxpYyBjYXNlVGl0bGUkID0gdGhpcy50aXRsZSQuYXNPYnNlcnZhYmxlKCk7XG4gIHB1YmxpYyBjYXNlRWRpdEZvcm0kID0gdGhpcy5lZGl0Rm9ybSQuYXNPYnNlcnZhYmxlKCk7XG4gIHB1YmxpYyBjYXNlRm9ybVZhbGlkYXRpb25FcnJvcnMkID0gdGhpcy5mb3JtVmFsaWRhdGlvbkVycm9ycyQuYXNPYnNlcnZhYmxlKCk7XG4gIHB1YmxpYyBjYXNlTGlua0Vycm9yJCA9IHRoaXMubGlua0Vycm9yJC5hc09ic2VydmFibGUoKTtcbiAgcHVibGljIGNhc2VFdmVudFRyaWdnZXJOYW1lJCA9IHRoaXMuZXZlbnRUcmlnZ2VyTmFtZSQuYXNPYnNlcnZhYmxlKCk7XG4gIHB1YmxpYyBjYXNlVHJpZ2dlclN1Ym1pdEV2ZW50JCA9IHRoaXMudHJpZ2dlclN1Ym1pdEV2ZW50JC5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIHNldENhc2VEZXRhaWxzKGNhc2VEZXRhaWxzOiBDYXNlVmlldyk6IHZvaWQge1xuICAgIHRoaXMuZGV0YWlscyQubmV4dChjYXNlRGV0YWlscyk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q2FzZVRpdGxlKGNhc2VUaXRsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50aXRsZSQubmV4dChjYXNlVGl0bGUpO1xuICB9XG5cbiAgcHVibGljIHNldENhc2VFdmVudFRyaWdnZXJOYW1lKHRyaWdnZXJOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50VHJpZ2dlck5hbWUkLm5leHQodHJpZ2dlck5hbWUpO1xuICB9XG5cbiAgcHVibGljIHNldENhc2VMaW5rRXJyb3IoZXJyb3I6IExpbmtlZENhc2VzRXJyb3IpOiB2b2lkIHtcbiAgICB0aGlzLmxpbmtFcnJvciQubmV4dChlcnJvcik7XG4gIH1cblxuICBwdWJsaWMgc2V0Rm9ybVZhbGlkYXRpb25FcnJvcnModmFsaWRhdGlvbkVycm9yczogYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1WYWxpZGF0aW9uRXJyb3JzJC5uZXh0KHZhbGlkYXRpb25FcnJvcnMpO1xuICB9XG5cbiAgcHVibGljIHNldENhc2VFZGl0Rm9ybShlZGl0Rm9ybTogRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0Rm9ybSQubmV4dChlZGl0Rm9ybSk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJGb3JtVmFsaWRhdGlvbkVycm9ycygpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1WYWxpZGF0aW9uRXJyb3JzJC5uZXh0KFtdKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckNhc2VMaW5rRXJyb3IoKTogdm9pZCB7XG4gICAgdGhpcy5saW5rRXJyb3IkLm5leHQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgYWRkRm9ybVZhbGlkYXRpb25FcnJvcih2YWxpZGF0aW9uRXJyb3I6IENhc2VFZGl0VmFsaWRhdGlvbkVycm9yKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtVmFsaWRhdGlvbkVycm9ycyQubmV4dChcbiAgICAgIHRoaXMuZm9ybVZhbGlkYXRpb25FcnJvcnMkLmdldFZhbHVlKCkuY29uY2F0KFt2YWxpZGF0aW9uRXJyb3JdKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2V0VHJpZ2dlclN1Ym1pdEV2ZW50KHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy50cmlnZ2VyU3VibWl0RXZlbnQkLm5leHQoc3RhdGUpO1xuICB9XG59XG4iXX0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tbW9ucy9jYXNlLWVkaXQtZGF0YS9jYXNlLWVkaXQtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJdkMsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUI7UUFoQlEsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFXLElBQUksQ0FBQyxDQUFDO1FBQy9DLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUMzQywwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBNEIsRUFBRSxDQUFDLENBQUM7UUFDM0UsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFZLElBQUksQ0FBQyxDQUFDO1FBQ2pELHFDQUFnQyxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ3RFLHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUFTLElBQUksQ0FBQyxDQUFDO1FBQ3RELHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRTFELGlCQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1QyxlQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QyxrQkFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUMsOEJBQXlCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RFLHlDQUFvQyxHQUFHLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1RiwwQkFBcUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUQsNEJBQXVCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTFELENBQUM7SUFFVCxjQUFjLENBQUMsV0FBcUI7UUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLFlBQVksQ0FBQyxTQUFpQjtRQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sdUJBQXVCLENBQUMsV0FBbUI7UUFDaEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU0sdUJBQXVCLENBQUMsZ0JBQXVCO1FBQ3BELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sZUFBZSxDQUFDLFFBQW1CO1FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTSx5QkFBeUI7UUFDOUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sZ0NBQWdDLENBQUMsYUFBYTtRQUNuRCxJQUFJLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxlQUF3QztRQUNwRSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUM3QixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FDaEUsQ0FBQztJQUNKLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxLQUFjO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDYXNlVmlldyB9IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlRWRpdFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4vY2FzZS1lZGl0LXZhbGlkYXRpb24ubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgQ2FzZUVkaXREYXRhU2VydmljZSB7XG4gIHByaXZhdGUgZGV0YWlscyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhc2VWaWV3PihudWxsKTtcbiAgcHJpdmF0ZSB0aXRsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG4gIHByaXZhdGUgZm9ybVZhbGlkYXRpb25FcnJvcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDYXNlRWRpdFZhbGlkYXRpb25FcnJvcltdPihbXSk7XG4gIHByaXZhdGUgZWRpdEZvcm0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtR3JvdXA+KG51bGwpO1xuICBwcml2YXRlIGlzTGlua2VkQ2FzZXNKb3VybmV5QXRGaW5hbFN0ZXAkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihudWxsKTtcbiAgcHJpdmF0ZSBldmVudFRyaWdnZXJOYW1lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihudWxsKTtcbiAgcHJpdmF0ZSB0cmlnZ2VyU3VibWl0RXZlbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihudWxsKTtcblxuICBwdWJsaWMgY2FzZURldGFpbHMkID0gdGhpcy5kZXRhaWxzJC5hc09ic2VydmFibGUoKTtcbiAgcHVibGljIGNhc2VUaXRsZSQgPSB0aGlzLnRpdGxlJC5hc09ic2VydmFibGUoKTtcbiAgcHVibGljIGNhc2VFZGl0Rm9ybSQgPSB0aGlzLmVkaXRGb3JtJC5hc09ic2VydmFibGUoKTtcbiAgcHVibGljIGNhc2VGb3JtVmFsaWRhdGlvbkVycm9ycyQgPSB0aGlzLmZvcm1WYWxpZGF0aW9uRXJyb3JzJC5hc09ic2VydmFibGUoKTtcbiAgcHVibGljIGNhc2VJc0xpbmtlZENhc2VzSm91cm5leUF0RmluYWxTdGVwJCA9IHRoaXMuaXNMaW5rZWRDYXNlc0pvdXJuZXlBdEZpbmFsU3RlcCQuYXNPYnNlcnZhYmxlKCk7XG4gIHB1YmxpYyBjYXNlRXZlbnRUcmlnZ2VyTmFtZSQgPSB0aGlzLmV2ZW50VHJpZ2dlck5hbWUkLmFzT2JzZXJ2YWJsZSgpO1xuICBwdWJsaWMgY2FzZVRyaWdnZXJTdWJtaXRFdmVudCQgPSB0aGlzLnRyaWdnZXJTdWJtaXRFdmVudCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHB1YmxpYyBzZXRDYXNlRGV0YWlscyhjYXNlRGV0YWlsczogQ2FzZVZpZXcpOiB2b2lkIHtcbiAgICB0aGlzLmRldGFpbHMkLm5leHQoY2FzZURldGFpbHMpO1xuICB9XG5cbiAgcHVibGljIHNldENhc2VUaXRsZShjYXNlVGl0bGU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudGl0bGUkLm5leHQoY2FzZVRpdGxlKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDYXNlRXZlbnRUcmlnZ2VyTmFtZSh0cmlnZ2VyTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudFRyaWdnZXJOYW1lJC5uZXh0KHRyaWdnZXJOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRGb3JtVmFsaWRhdGlvbkVycm9ycyh2YWxpZGF0aW9uRXJyb3JzOiBhbnlbXSk6IHZvaWQge1xuICAgIHRoaXMuZm9ybVZhbGlkYXRpb25FcnJvcnMkLm5leHQodmFsaWRhdGlvbkVycm9ycyk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q2FzZUVkaXRGb3JtKGVkaXRGb3JtOiBGb3JtR3JvdXApOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRGb3JtJC5uZXh0KGVkaXRGb3JtKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckZvcm1WYWxpZGF0aW9uRXJyb3JzKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybVZhbGlkYXRpb25FcnJvcnMkLm5leHQoW10pO1xuICB9XG5cbiAgcHVibGljIHNldExpbmtlZENhc2VzSm91cm5leUF0RmluYWxTdGVwKGlzQXRGaW5hbFN0ZXApOiB2b2lkIHtcbiAgICB0aGlzLmlzTGlua2VkQ2FzZXNKb3VybmV5QXRGaW5hbFN0ZXAkLm5leHQoaXNBdEZpbmFsU3RlcCk7XG4gIH1cblxuICBwdWJsaWMgYWRkRm9ybVZhbGlkYXRpb25FcnJvcih2YWxpZGF0aW9uRXJyb3I6IENhc2VFZGl0VmFsaWRhdGlvbkVycm9yKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtVmFsaWRhdGlvbkVycm9ycyQubmV4dChcbiAgICAgIHRoaXMuZm9ybVZhbGlkYXRpb25FcnJvcnMkLmdldFZhbHVlKCkuY29uY2F0KFt2YWxpZGF0aW9uRXJyb3JdKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2V0VHJpZ2dlclN1Ym1pdEV2ZW50KHN0YXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy50cmlnZ2VyU3VibWl0RXZlbnQkLm5leHQoc3RhdGUpO1xuICB9XG59XG4iXX0=
@@ -297,6 +297,11 @@ export class CaseEditPageComponent {
297
297
  this.caseEditDataService.caseEditForm$.subscribe({
298
298
  next: editForm => this.editForm = editForm
299
299
  });
300
+ this.caseEditDataService.caseIsLinkedCasesJourneyAtFinalStep$.subscribe({
301
+ next: isLinkedCasesJourneyAtFinalStep => {
302
+ this.isLinkedCasesJourneyAtFinalStep = isLinkedCasesJourneyAtFinalStep;
303
+ }
304
+ });
300
305
  this.caseEditDataService.caseTriggerSubmitEvent$.subscribe({
301
306
  next: state => {
302
307
  if (state) {
@@ -316,7 +321,11 @@ export class CaseEditPageComponent {
316
321
  return this.caseEdit.first();
317
322
  }
318
323
  currentPageIsNotValid() {
319
- return !this.pageValidationService.isPageValid(this.currentPage, this.editForm);
324
+ return !this.pageValidationService.isPageValid(this.currentPage, this.editForm) ||
325
+ (this.isLinkedCasesJourney() && !this.isLinkedCasesJourneyAtFinalStep);
326
+ }
327
+ isLinkedCasesJourney() {
328
+ return FieldsUtils.containsLinkedCasesCaseField(this.currentPage.case_fields);
320
329
  }
321
330
  /**
322
331
  * caseEventData.event_data contains all the values from the previous pages so we set caseEventData.data = caseEventData.event_data
@@ -414,7 +423,16 @@ export class CaseEditPageComponent {
414
423
  submit() {
415
424
  this.caseEditDataService.clearFormValidationErrors();
416
425
  if (this.currentPageIsNotValid()) {
417
- this.generateErrorMessage(this.currentPage.case_fields);
426
+ // The generateErrorMessage method filters out the hidden fields.
427
+ // The error message for LinkedCases journey will never get displayed because the
428
+ // LinkedCases is configured with ComponentLauncher field as visible and caseLinks field as hidden.
429
+ if (this.isLinkedCasesJourney()) {
430
+ this.validationErrors.push({ id: 'next-button', message: 'Please select Next to go to the next page' });
431
+ CaseEditPageComponent.scrollToTop();
432
+ }
433
+ else {
434
+ this.generateErrorMessage(this.currentPage.case_fields);
435
+ }
418
436
  }
419
437
  if (!this.isSubmitting && !this.currentPageIsNotValid()) {
420
438
  this.isSubmitting = true;
@@ -682,4 +700,4 @@ CaseEditPageComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CaseEditPageCompone
682
700
  styleUrls: ['./case-edit-page.scss']
683
701
  }]
684
702
  }], function () { return [{ type: i1.CaseEditComponent }, { type: i2.ActivatedRoute }, { type: i3.FormValueService }, { type: i4.FormErrorService }, { type: i0.ChangeDetectorRef }, { type: i5.PageValidationService }, { type: i6.MatDialog }, { type: i7.CaseFieldService }, { type: i8.CaseEditDataService }]; }, null); })();
685
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2Nhc2UtZWRpdG9yL2Nhc2UtZWRpdC1wYWdlL2Nhc2UtZWRpdC1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtcGFnZS9jYXNlLWVkaXQtcGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSXRFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVB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RGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1BcnJheSwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDYXNlRWRpdERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9ucy9jYXNlLWVkaXQtZGF0YSc7XG5pbXBvcnQgeyBDYXNlRXZlbnREYXRhIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2Nhc2UtZXZlbnQtZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlRXZlbnRUcmlnZ2VyIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2Nhc2Utdmlldy9jYXNlLWV2ZW50LXRyaWdnZXIubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RlZmluaXRpb24nO1xuaW1wb3J0IHsgRFJBRlRfUFJFRklYIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RyYWZ0Lm1vZGVsJztcbmltcG9ydCB7IEh0dHBFcnJvciB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9odHRwL2h0dHAtZXJyb3IubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Nhc2UtZmllbGRzL2Nhc2UtZmllbGQuc2VydmljZSc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpZWxkcyc7XG5pbXBvcnQgeyBGb3JtRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS9mb3JtLWVycm9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybVZhbHVlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0vZm9ybS12YWx1ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNhdmVPckRpc2NhcmREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2dzL3NhdmUtb3ItZGlzY2FyZC1kaWFsb2cnO1xuaW1wb3J0IHsgQ2FsbGJhY2tFcnJvcnNDb250ZXh0IH0gZnJvbSAnLi4vLi4vZXJyb3IvZG9tYWluL2Vycm9yLWNvbnRleHQnO1xuaW1wb3J0IHsgaW5pdERpYWxvZyB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQ2FzZUVkaXRDb21wb25lbnQgfSBmcm9tICcuLi9jYXNlLWVkaXQvY2FzZS1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaXphcmRQYWdlIH0gZnJvbSAnLi4vZG9tYWluL3dpemFyZC1wYWdlLm1vZGVsJztcbmltcG9ydCB7IFdpemFyZCB9IGZyb20gJy4uL2RvbWFpbi93aXphcmQubW9kZWwnO1xuaW1wb3J0IHsgUGFnZVZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvcGFnZS12YWxpZGF0aW9uLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1lZGl0LXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJ2Nhc2UtZWRpdC1wYWdlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXNlLWVkaXQtcGFnZS5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUVkaXRQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkIHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJFU1VNRURfRk9STV9ESVNDQVJEID0gJ1JFU1VNRURfRk9STV9ESVNDQVJEJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBORVdfRk9STV9ESVNDQVJEID0gJ05FV19GT1JNX0RJU0NBUkQnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5FV19GT1JNX1NBVkUgPSAnTkVXX0ZPUk1fQ0hBTkdFRF9TQVZFJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBSRVNVTUVEX0ZPUk1fU0FWRSA9ICdSRVNVTUVEX0ZPUk1fU0FWRSc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJJR0dFUl9URVhUX1NUQVJUID0gJ0NvbnRpbnVlJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUUklHR0VSX1RFWFRfU0FWRSA9ICdTYXZlIGFuZCBjb250aW51ZSc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJJR0dFUl9URVhUX0NPTlRJTlVFID0gJ0lnbm9yZSBXYXJuaW5nIGFuZCBDb250aW51ZSc7XG5cbiAgcHVibGljIGV2ZW50VHJpZ2dlcjogQ2FzZUV2ZW50VHJpZ2dlcjtcbiAgcHVibGljIGVkaXRGb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyB3aXphcmQ6IFdpemFyZDtcbiAgcHVibGljIGN1cnJlbnRQYWdlOiBXaXphcmRQYWdlO1xuICBwdWJsaWMgZGlhbG9nQ29uZmlnOiBNYXREaWFsb2dDb25maWc7XG4gIHB1YmxpYyBlcnJvcjogSHR0cEVycm9yO1xuICBwdWJsaWMgY2FsbGJhY2tFcnJvcnNTdWJqZWN0OiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xuICBwdWJsaWMgaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICBwdWJsaWMgdHJpZ2dlclRleHRTdGFydCA9IENhc2VFZGl0UGFnZUNvbXBvbmVudC5UUklHR0VSX1RFWFRfU1RBUlQ7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dElnbm9yZVdhcm5pbmdzID0gQ2FzZUVkaXRQYWdlQ29tcG9uZW50LlRSSUdHRVJfVEVYVF9DT05USU5VRTtcbiAgcHVibGljIHRyaWdnZXJUZXh0OiBzdHJpbmc7XG4gIHB1YmxpYyBpc1N1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgcHVibGljIGZvcm1WYWx1ZXNDaGFuZ2VkID0gZmFsc2U7XG4gIHB1YmxpYyBwYWdlQ2hhbmdlU3ViamVjdDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyBjYXNlRmllbGRzOiBDYXNlRmllbGRbXTtcbiAgcHVibGljIHZhbGlkYXRpb25FcnJvcnM6IHsgaWQ6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIH1bXSA9IFtdO1xuICBwdWJsaWMgc2hvd1NwaW5uZXI6IGJvb2xlYW47XG4gIHB1YmxpYyBoYXNQcmV2aW91c1BhZ2UkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIHN0YXRpYyBzY3JvbGxUb1RvcCgpOiB2b2lkIHtcbiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBzZXRGb2N1c1RvVG9wKCkge1xuICAgIGNvbnN0IHRvcENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b3AnKTtcbiAgICBpZiAodG9wQ29udGFpbmVyKSB7XG4gICAgICB0b3BDb250YWluZXIuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VFZGl0OiBDYXNlRWRpdENvbXBvbmVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1WYWx1ZVNlcnZpY2U6IEZvcm1WYWx1ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtRXJyb3JTZXJ2aWNlOiBGb3JtRXJyb3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZVZhbGlkYXRpb25TZXJ2aWNlOiBQYWdlVmFsaWRhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VGaWVsZFNlcnZpY2U6IENhc2VGaWVsZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlRWRpdERhdGFTZXJ2aWNlOiBDYXNlRWRpdERhdGFTZXJ2aWNlXG4gICkgeyB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGluaXREaWFsb2coKTtcbiAgICB0aGlzLmV2ZW50VHJpZ2dlciA9IHRoaXMuY2FzZUVkaXQuZXZlbnRUcmlnZ2VyO1xuICAgIHRoaXMuZWRpdEZvcm0gPSB0aGlzLmNhc2VFZGl0LmZvcm07XG4gICAgdGhpcy53aXphcmQgPSB0aGlzLmNhc2VFZGl0LndpemFyZDtcbiAgICB0aGlzLmNhc2VGaWVsZHMgPSB0aGlzLmdldENhc2VGaWVsZHMoKTtcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gdGhpcy5nZXRUcmlnZ2VyVGV4dCgpO1xuXG4gICAgdGhpcy5zeW5jQ2FzZUVkaXREYXRhU2VydmljZSgpO1xuXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXNcbiAgICAgIC5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgY29uc3QgcGFnZUlkID0gcGFyYW1zWydwYWdlJ107XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50UGFnZSB8fCBwYWdlSWQgIT09IHRoaXMuY3VycmVudFBhZ2UuaWQpIHtcbiAgICAgICAgICBjb25zdCBwYWdlID0gdGhpcy5jYXNlRWRpdC5nZXRQYWdlKHBhZ2VJZCk7XG4gICAgICAgICAgaWYgKHBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5uZXh0KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maXJzdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmhhc1ByZXZpb3VzUGFnZSQubmV4dCh0aGlzLmNhc2VFZGl0Lmhhc1ByZXZpb3VzKHRoaXMuY3VycmVudFBhZ2UuaWQpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgQ2FzZUVkaXRQYWdlQ29tcG9uZW50LnNldEZvY3VzVG9Ub3AoKTtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2FzZUVkaXRGb3JtJC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogZWRpdEZvcm0gPT4gdGhpcy5lZGl0Rm9ybSA9IGVkaXRGb3JtXG4gICAgfSk7XG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNhc2VUcmlnZ2VyU3VibWl0RXZlbnQkLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBzdGF0ZSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5zZXRUcmlnZ2VyU3VibWl0RXZlbnQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuc3VibWl0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgYXBwbHlWYWx1ZXNDaGFuZ2VkKHZhbHVlc0NoYW5nZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkID0gdmFsdWVzQ2hhbmdlZDtcbiAgfVxuXG4gIHB1YmxpYyBmaXJzdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5jYXNlRWRpdC5maXJzdCgpO1xuICB9XG5cbiAgcHVibGljIGN1cnJlbnRQYWdlSXNOb3RWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMucGFnZVZhbGlkYXRpb25TZXJ2aWNlLmlzUGFnZVZhbGlkKHRoaXMuY3VycmVudFBhZ2UsIHRoaXMuZWRpdEZvcm0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGNhc2VFdmVudERhdGEuZXZlbnRfZGF0YSBjb250YWlucyBhbGwgdGhlIHZhbHVlcyBmcm9tIHRoZSBwcmV2aW91cyBwYWdlcyBzbyB3ZSBzZXQgY2FzZUV2ZW50RGF0YS5kYXRhID0gY2FzZUV2ZW50RGF0YS5ldmVudF9kYXRhXG4gICAqIFRoaXMgYnVpbGRzIHRoZSBmb3JtIHdpdGggZGF0YSBmcm9tIHRoZSBwcmV2aW91cyBwYWdlc1xuICAgKiBFVUktMzczMiAtIEJyZWF0aGluZyBzcGFjZSBkYXRhIG5vdCBwZXJzaXN0ZWQgb24gUHJldmlvdXMgYnV0dG9uIGNsaWNrIHdpdGggRXhwVUkgRGVtb1xuICAgKi9cbiAgcHVibGljIHRvUHJldmlvdXNQYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jbGVhckZvcm1WYWxpZGF0aW9uRXJyb3JzKCk7XG5cbiAgICBjb25zdCBjYXNlRXZlbnREYXRhOiBDYXNlRXZlbnREYXRhID0gdGhpcy5idWlsZENhc2VFdmVudERhdGEodHJ1ZSk7XG4gICAgY2FzZUV2ZW50RGF0YS5kYXRhID0gY2FzZUV2ZW50RGF0YS5ldmVudF9kYXRhO1xuICAgIHRoaXMudXBkYXRlRm9ybURhdGEoY2FzZUV2ZW50RGF0YSk7XG4gICAgdGhpcy5wcmV2aW91cygpO1xuICAgIENhc2VFZGl0UGFnZUNvbXBvbmVudC5zZXRGb2N1c1RvVG9wKCk7XG4gIH1cblxuICAvLyBBZGRpbmcgdmFsaWRhdGlvbiBtZXNzYWdlIHRvIHNob3cgaXQgYXMgRXJyb3IgU3VtbWFyeVxuICBwdWJsaWMgZ2VuZXJhdGVFcnJvck1lc3NhZ2UoZmllbGRzOiBDYXNlRmllbGRbXSwgY29udGFpbmVyPzogQWJzdHJhY3RDb250cm9sLCBwYXRoPzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgZ3JvdXA6IEFic3RyYWN0Q29udHJvbCA9IGNvbnRhaW5lciB8fCB0aGlzLmVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ107XG4gICAgZmllbGRzLmZpbHRlcihjYXNlZmllbGQgPT4gIXRoaXMuY2FzZUZpZWxkU2VydmljZS5pc1JlYWRPbmx5KGNhc2VmaWVsZCkpXG4gICAgICAuZmlsdGVyKGNhc2VmaWVsZCA9PiAhdGhpcy5wYWdlVmFsaWRhdGlvblNlcnZpY2UuaXNIaWRkZW4oY2FzZWZpZWxkLCB0aGlzLmVkaXRGb3JtLCBwYXRoKSlcbiAgICAgIC5mb3JFYWNoKGNhc2VmaWVsZCA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkRWxlbWVudCA9IGdyb3VwLmdldChjYXNlZmllbGQuaWQpO1xuICAgICAgICBpZiAoZmllbGRFbGVtZW50KSB7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSBjYXNlZmllbGQubGFiZWwgfHwgJ0ZpZWxkJztcbiAgICAgICAgICBsZXQgaWQgPSBjYXNlZmllbGQuaWQ7XG4gICAgICAgICAgaWYgKGZpZWxkRWxlbWVudFsnY29tcG9uZW50J10gJiYgZmllbGRFbGVtZW50Wydjb21wb25lbnQnXS5wYXJlbnQpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZEVsZW1lbnRbJ2NvbXBvbmVudCddLmlkUHJlZml4LmluZGV4T2YoJ18nICsgaWQgKyAnXycpID09PSAtMSkge1xuICAgICAgICAgICAgICBpZCA9IGAke2ZpZWxkRWxlbWVudFsnY29tcG9uZW50J10uaWRQcmVmaXh9JHtpZH1gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWQgPSBgJHtmaWVsZEVsZW1lbnRbJ2NvbXBvbmVudCddLmlkUHJlZml4fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmaWVsZEVsZW1lbnQuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5hZGRGb3JtVmFsaWRhdGlvbkVycm9yKHsgaWQsIG1lc3NhZ2U6IGAke2xhYmVsfSBpcyByZXF1aXJlZGAgfSk7XG4gICAgICAgICAgICBmaWVsZEVsZW1lbnQubWFya0FzRGlydHkoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkRWxlbWVudC5oYXNFcnJvcigncGF0dGVybicpKSB7XG4gICAgICAgICAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuYWRkRm9ybVZhbGlkYXRpb25FcnJvcih7IGlkLCBtZXNzYWdlOiBgJHtsYWJlbH0gaXMgbm90IHZhbGlkYCB9KTtcbiAgICAgICAgICAgIGZpZWxkRWxlbWVudC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGRFbGVtZW50Lmhhc0Vycm9yKCdtaW5sZW5ndGgnKSkge1xuICAgICAgICAgICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmFkZEZvcm1WYWxpZGF0aW9uRXJyb3IoeyBpZCwgbWVzc2FnZTogYCR7bGFiZWx9IGlzIGJlbG93IHRoZSBtaW5pbXVtIGxlbmd0aGAgfSk7XG4gICAgICAgICAgICBmaWVsZEVsZW1lbnQubWFya0FzRGlydHkoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkRWxlbWVudC5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHtcbiAgICAgICAgICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5hZGRGb3JtVmFsaWRhdGlvbkVycm9yKHsgaWQsIG1lc3NhZ2U6IGAke2xhYmVsfSBleGNlZWRzIHRoZSBtYXhpbXVtIGxlbmd0aGAgfSk7XG4gICAgICAgICAgICBmaWVsZEVsZW1lbnQubWFya0FzRGlydHkoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkRWxlbWVudC5pbnZhbGlkKSB7XG4gICAgICAgICAgICBpZiAoY2FzZWZpZWxkLmlzQ29tcGxleCgpKSB7XG4gICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVFcnJvck1lc3NhZ2UoY2FzZWZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMsIGZpZWxkRWxlbWVudCwgaWQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjYXNlZmllbGQuaXNDb2xsZWN0aW9uKCkgJiYgY2FzZWZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4Jykge1xuICAgICAgICAgICAgICBjb25zdCBmaWVsZEFycmF5ID0gZmllbGRFbGVtZW50IGFzIEZvcm1BcnJheTtcbiAgICAgICAgICAgICAgaWYgKGZpZWxkQXJyYXlbJ2NvbXBvbmVudCddICYmIGZpZWxkQXJyYXlbJ2NvbXBvbmVudCddWydjb2xsSXRlbXMnXSAmJiBmaWVsZEFycmF5Wydjb21wb25lbnQnXVsnY29sbEl0ZW1zJ10ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGlkID0gYCR7ZmllbGRBcnJheVsnY29tcG9uZW50J11bJ2NvbGxJdGVtcyddWzBdLnByZWZpeH1gO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGZpZWxkQXJyYXkuY29udHJvbHMuZm9yRWFjaCgoYzogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUVycm9yTWVzc2FnZShjYXNlZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMsIGMuZ2V0KCd2YWx1ZScpLCBpZCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChGaWVsZHNVdGlscy5pc0ZsYWdMYXVuY2hlckNhc2VGaWVsZChjYXNlZmllbGQpKSB7XG4gICAgICAgICAgICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIGNhc2UgZmllbGQgRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgaXMgc2lnbmFsbGluZyBcImNyZWF0ZVwiIG1vZGUgb3IgXCJ1cGRhdGVcIiBtb2RlXG4gICAgICAgICAgICAgIC8vIChleHBlY3RlZCBhbHdheXMgdG8gYmUgb25lIG9mIHRoZSB0d28pLCB0byBzZXQgdGhlIGNvcnJlY3QgZXJyb3IgbWVzc2FnZVxuICAgICAgICAgICAgICBsZXQgYWN0aW9uID0gJyc7XG4gICAgICAgICAgICAgIGlmIChjYXNlZmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciA9PT0gJyNBUkdVTUVOVChDUkVBVEUpJykge1xuICAgICAgICAgICAgICAgIGFjdGlvbiA9ICdjcmVhdGlvbic7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FzZWZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgPT09ICcjQVJHVU1FTlQoVVBEQVRFKScpIHtcbiAgICAgICAgICAgICAgICBhY3Rpb24gPSAndXBkYXRlJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYFBsZWFzZSBzZWxlY3QgTmV4dCB0byBjb21wbGV0ZSB0aGUgJHthY3Rpb259IG9mIHRoZSAke2FjdGlvbiA9PT0gJ3VwZGF0ZScgPyAnc2VsZWN0ZWQgJyA6ICcnfWNhc2UgZmxhZ2BcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaCh7IGlkLCBtZXNzYWdlOiBgU2VsZWN0IG9yIGZpbGwgdGhlIHJlcXVpcmVkICR7Y2FzZWZpZWxkLmxhYmVsfSBmaWVsZGAgfSk7XG4gICAgICAgICAgICAgIGZpZWxkRWxlbWVudC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgQ2FzZUVkaXRQYWdlQ29tcG9uZW50LnNjcm9sbFRvVG9wKCk7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb0Vycm9yRWxlbWVudChlbGVtZW50SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChlbGVtZW50SWQpIHtcbiAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKTtcbiAgICAgIGlmIChodG1sRWxlbWVudCkge1xuICAgICAgICBodG1sRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pO1xuICAgICAgICBodG1sRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNsZWFyRm9ybVZhbGlkYXRpb25FcnJvcnMoKTtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlSXNOb3RWYWxpZCgpKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlRXJyb3JNZXNzYWdlKHRoaXMuY3VycmVudFBhZ2UuY2FzZV9maWVsZHMpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNTdWJtaXR0aW5nICYmICF0aGlzLmN1cnJlbnRQYWdlSXNOb3RWYWxpZCgpKSB7XG4gICAgICB0aGlzLmlzU3VibWl0dGluZyA9IHRydWU7XG4gICAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICAgIGNvbnN0IGNhc2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmJ1aWxkQ2FzZUV2ZW50RGF0YSgpO1xuICAgICAgdGhpcy5zaG93U3Bpbm5lciA9IHRydWU7XG4gICAgICB0aGlzLmNhc2VFZGl0LnZhbGlkYXRlKGNhc2VFdmVudERhdGEsIHRoaXMuY3VycmVudFBhZ2UuaWQpXG4gICAgICAgIC5zdWJzY3JpYmUoKGpzb25EYXRhKSA9PiB7XG4gICAgICAgICAgaWYgKGpzb25EYXRhKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1EYXRhKGpzb25EYXRhIGFzIENhc2VFdmVudERhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNhdmVEcmFmdCgpO1xuICAgICAgICAgIHRoaXMuc2hvd1NwaW5uZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLm5leHQoKTtcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuc2hvd1NwaW5uZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgfSk7XG4gICAgICBDYXNlRWRpdFBhZ2VDb21wb25lbnQuc2Nyb2xsVG9Ub3AoKTtcbiAgICB9XG4gICAgQ2FzZUVkaXRQYWdlQ29tcG9uZW50LnNldEZvY3VzVG9Ub3AoKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGb3JtRGF0YShqc29uRGF0YTogQ2FzZUV2ZW50RGF0YSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgY2FzZUZpZWxkSWQgb2YgT2JqZWN0LmtleXMoanNvbkRhdGEuZGF0YSkpIHtcbiAgICAgIGlmICh0aGlzLnBhZ2VXaXRoRmllbGRFeGlzdHMoY2FzZUZpZWxkSWQpKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRXZlbnRUcmlnZ2VyQ2FzZUZpZWxkcyhjYXNlRmllbGRJZCwganNvbkRhdGEsIHRoaXMuY2FzZUVkaXQuZXZlbnRUcmlnZ2VyKTtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtQ29udHJvbHNWYWx1ZSh0aGlzLmVkaXRGb3JtLCBjYXNlRmllbGRJZCwganNvbkRhdGEuZGF0YVtjYXNlRmllbGRJZF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIHdlIGRvIHRoZSBjaGVjaywgYmVjYXN1ZSB0aGUgZGF0YSBjb21lcyBmcm9tIHRoZSBleHRlcm5hbCBzb3VyY2VcbiAgcHVibGljIHBhZ2VXaXRoRmllbGRFeGlzdHMoY2FzZUZpZWxkSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLndpemFyZC5maW5kV2l6YXJkUGFnZShjYXNlRmllbGRJZCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRXZlbnRUcmlnZ2VyQ2FzZUZpZWxkcyhjYXNlRmllbGRJZDogc3RyaW5nLCBqc29uRGF0YTogQ2FzZUV2ZW50RGF0YSwgZXZlbnRUcmlnZ2VyOiBDYXNlRXZlbnRUcmlnZ2VyKSB7XG4gICAgaWYgKGV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcykge1xuICAgICAgZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzXG4gICAgICAgIC5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50LmlkID09PSBjYXNlRmllbGRJZClcbiAgICAgICAgLmZvckVhY2goZWxlbWVudCA9PiBlbGVtZW50LnZhbHVlID0ganNvbkRhdGEuZGF0YVtjYXNlRmllbGRJZF0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGb3JtQ29udHJvbHNWYWx1ZShmb3JtR3JvdXA6IEZvcm1Hcm91cCwgY2FzZUZpZWxkSWQ6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHRoZUNvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbJ2RhdGEnXS5nZXQoY2FzZUZpZWxkSWQpO1xuICAgIGlmICh0aGVDb250cm9sICYmIHRoZUNvbnRyb2xbJ3N0YXR1cyddICE9PSAnRElTQUJMRUQnKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGVDb250cm9sLnZhbHVlKSAmJiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICAgICAgICAmJiB0aGVDb250cm9sLnZhbHVlLmxlbmd0aCA+IHZhbHVlLmxlbmd0aCAmJiB0aGVDb250cm9sWydjYXNlRmllbGQnXVxuICAgICAgICAgICAgICAmJiB0aGVDb250cm9sWydjYXNlRmllbGQnXVsnZGlzcGxheV9jb250ZXh0J10gJiYgdGhlQ29udHJvbFsnY2FzZUZpZWxkJ11bJ2Rpc3BsYXlfY29udGV4dCddID09PSAnT1BUSU9OQUwnXG4gICAgICAgICAgICAgICYmIHRoZUNvbnRyb2xbJ2Nhc2VGaWVsZCddWydmaWVsZF90eXBlJ10gJiYgdGhlQ29udHJvbFsnY2FzZUZpZWxkJ11bJ2ZpZWxkX3R5cGUnXVsndHlwZSddID09PSAnQ29sbGVjdGlvbicpIHtcbiAgICAgICAgLy8gZG8gbm90aGluZ1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhlQ29udHJvbC5wYXRjaFZhbHVlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2FsbGJhY2tFcnJvcnNOb3RpZnkoZXJyb3JDb250ZXh0OiBDYWxsYmFja0Vycm9yc0NvbnRleHQpIHtcbiAgICB0aGlzLmlnbm9yZVdhcm5pbmcgPSBlcnJvckNvbnRleHQuaWdub3JlX3dhcm5pbmc7XG4gICAgdGhpcy50cmlnZ2VyVGV4dCA9IGVycm9yQ29udGV4dC50cmlnZ2VyX3RleHQ7XG4gIH1cblxuICBwdWJsaWMgbmV4dCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aGlzLnJlc2V0RXJyb3JzKCk7XG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgdGhpcy5wYWdlQ2hhbmdlU3ViamVjdC5uZXh0KHRydWUpO1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0Lm5leHQodGhpcy5jdXJyZW50UGFnZS5pZCk7XG4gIH1cblxuICBwdWJsaWMgcHJldmlvdXMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdGhpcy5yZXNldEVycm9ycygpO1xuICAgIHRoaXMuc2F2ZURyYWZ0KCk7XG4gICAgdGhpcy5mb3JtVmFsdWVzQ2hhbmdlZCA9IGZhbHNlO1xuICAgIHRoaXMucGFnZUNoYW5nZVN1YmplY3QubmV4dCh0cnVlKTtcbiAgICByZXR1cm4gdGhpcy5jYXNlRWRpdC5wcmV2aW91cyh0aGlzLmN1cnJlbnRQYWdlLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNQcmV2aW91cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXNlRWRpdC5oYXNQcmV2aW91cyh0aGlzLmN1cnJlbnRQYWdlLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZXZlbnRUcmlnZ2VyLmNhbl9zYXZlX2RyYWZ0KSB7XG4gICAgICBpZiAodGhpcy5mb3JtVmFsdWVzQ2hhbmdlZCkge1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFNhdmVPckRpc2NhcmREaWFsb2dDb21wb25lbnQsIHRoaXMuZGlhbG9nQ29uZmlnKTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gJ0Rpc2NhcmQnKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2NhcmQoKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PT0gJ1NhdmUnKSB7XG4gICAgICAgICAgICBjb25zdCBkcmFmdENhc2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmZvcm1WYWx1ZVNlcnZpY2Uuc2FuaXRpc2UodGhpcy5lZGl0Rm9ybS52YWx1ZSkgYXMgQ2FzZUV2ZW50RGF0YTtcbiAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KENhc2VFZGl0Q29tcG9uZW50Lk9SSUdJTl9RVUVSWV9QQVJBTSkgPT09ICd2aWV3RHJhZnQnKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoeyBzdGF0dXM6IENhc2VFZGl0UGFnZUNvbXBvbmVudC5SRVNVTUVEX0ZPUk1fU0FWRSwgZGF0YTogZHJhZnRDYXNlRXZlbnREYXRhIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7IHN0YXR1czogQ2FzZUVkaXRQYWdlQ29tcG9uZW50Lk5FV19GT1JNX1NBVkUsIGRhdGE6IGRyYWZ0Q2FzZUV2ZW50RGF0YSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaXNjYXJkKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3VibWl0dGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1N1Ym1pdHRpbmc7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzID8gdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscy5jYXNlX2lkIDogJycpO1xuICB9XG5cbiAgcHVibGljIGdldENhc2VUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyAmJiB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlICYmXG4gICAgICB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlLnRpdGxlX2Rpc3BsYXkgPyB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLnN0YXRlLnRpdGxlX2Rpc3BsYXkgOiAnJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FuY2VsVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmV2ZW50VHJpZ2dlci5jYW5fc2F2ZV9kcmFmdCA/ICdSZXR1cm4gdG8gY2FzZSBsaXN0JyA6ICdDYW5jZWwnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUcmlnZ2VyVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmV2ZW50VHJpZ2dlciAmJiB0aGlzLmV2ZW50VHJpZ2dlci5jYW5fc2F2ZV9kcmFmdFxuICAgICAgPyBDYXNlRWRpdFBhZ2VDb21wb25lbnQuVFJJR0dFUl9URVhUX1NBVkVcbiAgICAgIDogQ2FzZUVkaXRQYWdlQ29tcG9uZW50LlRSSUdHRVJfVEVYVF9TVEFSVDtcbiAgfVxuXG4gIHByaXZhdGUgZGlzY2FyZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldChDYXNlRWRpdENvbXBvbmVudC5PUklHSU5fUVVFUllfUEFSQU0pID09PSAndmlld0RyYWZ0Jykge1xuICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7IHN0YXR1czogQ2FzZUVkaXRQYWdlQ29tcG9uZW50LlJFU1VNRURfRk9STV9ESVNDQVJEIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhc2VFZGl0LmNhbmNlbGxlZC5lbWl0KHsgc3RhdHVzOiBDYXNlRWRpdFBhZ2VDb21wb25lbnQuTkVXX0ZPUk1fRElTQ0FSRCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yKSB7XG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmVycm9yID0gZXJyb3I7XG4gICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QubmV4dCh0aGlzLmVycm9yKTtcbiAgICBpZiAodGhpcy5lcnJvci5kZXRhaWxzKSB7XG4gICAgICB0aGlzLmZvcm1FcnJvclNlcnZpY2VcbiAgICAgICAgLm1hcEZpZWxkRXJyb3JzKHRoaXMuZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnMsIHRoaXMuZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXSBhcyBGb3JtR3JvdXAsICd2YWxpZGF0aW9uJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldEVycm9ycygpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICB0aGlzLmlnbm9yZVdhcm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gdGhpcy5nZXRUcmlnZ2VyVGV4dCgpO1xuICAgIHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0Lm5leHQobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIHNhdmVEcmFmdCgpIHtcbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXIuY2FuX3NhdmVfZHJhZnQpIHtcbiAgICAgIGNvbnN0IGRyYWZ0Q2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSA9IHRoaXMuZm9ybVZhbHVlU2VydmljZS5zYW5pdGlzZSh0aGlzLmVkaXRGb3JtLnZhbHVlKSBhcyBDYXNlRXZlbnREYXRhO1xuICAgICAgZHJhZnRDYXNlRXZlbnREYXRhLmV2ZW50X3Rva2VuID0gdGhpcy5ldmVudFRyaWdnZXIuZXZlbnRfdG9rZW47XG4gICAgICBkcmFmdENhc2VFdmVudERhdGEuaWdub3JlX3dhcm5pbmcgPSB0aGlzLmlnbm9yZVdhcm5pbmc7XG4gICAgICB0aGlzLmNhc2VFZGl0LnNhdmVEcmFmdChkcmFmdENhc2VFdmVudERhdGEpLnN1YnNjcmliZShcbiAgICAgICAgKGRyYWZ0KSA9PiB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2lkID0gRFJBRlRfUFJFRklYICsgZHJhZnQuaWQsIGVycm9yID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkcygpOiBDYXNlRmllbGRbXSB7XG4gICAgaWYgKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpIHtcbiAgICAgIHJldHVybiBGaWVsZHNVdGlscy5nZXRDYXNlRmllbGRzKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkc0Zyb21DdXJyZW50QW5kUHJldmlvdXNQYWdlcygpOiBDYXNlRmllbGRbXSB7XG4gICAgY29uc3QgcmVzdWx0OiBDYXNlRmllbGRbXSA9IFtdO1xuICAgIHRoaXMud2l6YXJkLnBhZ2VzLmZvckVhY2gocGFnZSA9PiB7XG4gICAgICBpZiAocGFnZS5vcmRlciA8PSB0aGlzLmN1cnJlbnRQYWdlLm9yZGVyKSB7XG4gICAgICAgIHBhZ2UuY2FzZV9maWVsZHMuZm9yRWFjaChmaWVsZCA9PiByZXN1bHQucHVzaChmaWVsZCkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ2FzZUV2ZW50RGF0YShmcm9tUHJldmlvdXNQYWdlPzogYm9vbGVhbik6IENhc2VFdmVudERhdGEge1xuICAgIGNvbnN0IGZvcm1WYWx1ZTogb2JqZWN0ID0gdGhpcy5lZGl0Rm9ybS52YWx1ZTtcblxuICAgIC8vIEdldCB0aGUgQ2FzZUV2ZW50RGF0YSBmb3IgdGhlIGN1cnJlbnQgcGFnZS5cbiAgICBjb25zdCBwYWdlRmllbGRzOiBDYXNlRmllbGRbXSA9IHRoaXMuY3VycmVudFBhZ2UuY2FzZV9maWVsZHM7XG4gICAgY29uc3QgcGFnZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSA9IHRoaXMuZ2V0RmlsdGVyZWRDYXNlRXZlbnREYXRhKHBhZ2VGaWVsZHMsIGZvcm1WYWx1ZSwgdHJ1ZSk7XG5cbiAgICAvLyBHZXQgdGhlIENhc2VFdmVudERhdGEgZm9yIHRoZSBlbnRpcmUgZm9ybSAoYWxsIHBhZ2VzKS5cbiAgICBjb25zdCBhbGxDYXNlRmllbGRzID0gdGhpcy5nZXRDYXNlRmllbGRzRnJvbUN1cnJlbnRBbmRQcmV2aW91c1BhZ2VzKCk7XG4gICAgY29uc3QgZm9ybUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSA9IHRoaXMuZ2V0RmlsdGVyZWRDYXNlRXZlbnREYXRhKGFsbENhc2VGaWVsZHMsIGZvcm1WYWx1ZSwgZmFsc2UsIHRydWUsIGZyb21QcmV2aW91c1BhZ2UpO1xuXG4gICAgLy8gTm93IGhlcmUncyB0aGUga2V5IHRoaW5nIC0gdGhlIHBhZ2VFdmVudERhdGEgaGFzIGEgcHJvcGVydHkgY2FsbGVkIGBldmVudF9kYXRhYCBhbmRcbiAgICAvLyB3ZSBuZWVkIFRIQVQgdG8gYmUgdGhlIHZhbHVlIG9mIHRoZSBlbnRpcmUgZm9ybTogYGZvcm1FdmVudERhdGEuZGF0YWAuXG4gICAgcGFnZUV2ZW50RGF0YS5ldmVudF9kYXRhID0gZm9ybUV2ZW50RGF0YS5kYXRhO1xuXG4gICAgLy8gRmluYWxpc2UgdGhlIENhc2VFdmVudERhdGEgb2JqZWN0LlxuICAgIHBhZ2VFdmVudERhdGEuZXZlbnRfdG9rZW4gPSB0aGlzLmV2ZW50VHJpZ2dlci5ldmVudF90b2tlbjtcbiAgICBwYWdlRXZlbnREYXRhLmlnbm9yZV93YXJuaW5nID0gdGhpcy5pZ25vcmVXYXJuaW5nO1xuXG4gICAgLy8gRmluYWxseSwgdHJ5IHRvIHNldCB1cCB0aGUgY2FzZV9yZWZlcmVuY2UuXG4gICAgaWYgKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpIHtcbiAgICAgIHBhZ2VFdmVudERhdGEuY2FzZV9yZWZlcmVuY2UgPSB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLmNhc2VfaWQ7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRoZSBub3cgaG9wZWZ1bGx5IHNhbmUgQ2FzZUV2ZW50RGF0YS5cbiAgICByZXR1cm4gcGFnZUV2ZW50RGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBYnN0cmFjdGVkIHRoaXMgbWV0aG9kIGZyb20gYnVpbGRDYXNlRXZlbnREYXRhIHRvIHJlbW92ZSBkdXBsaWNhdGlvbi5cbiAgICogQHBhcmFtIGNhc2VGaWVsZHMgVGhlIGZpZWxkcyB0byBmaWx0ZXIgdGhlIGRhdGEgYnkuXG4gICAqIEBwYXJhbSBmb3JtVmFsdWUgVGhlIG9yaWdpbmFsIHZhbHVlIG9mIHRoZSBmb3JtLlxuICAgKiBAcGFyYW0gY2xlYXJFbXB0eSBXaGV0aGVyIG9yIG5vdCB0byBjbGVhciBvdXQgZW1wdHkgdmFsdWVzLlxuICAgKiBAcGFyYW0gY2xlYXJOb25DYXNlIFdoZXRoZXIgb3Igbm90IHRvIGNsZWFyIG91dCBmaWVsZHMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIGNhc2UuXG4gICAqIEByZXR1cm5zIENhc2VFdmVudERhdGEgZm9yIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycy5cbiAgICovXG4gIHByaXZhdGUgZ2V0RmlsdGVyZWRDYXNlRXZlbnREYXRhKGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdLCBmb3JtVmFsdWU6IG9iamVjdCwgY2xlYXJFbXB0eSA9IGZhbHNlLFxuICAgIGNsZWFyTm9uQ2FzZSA9IGZhbHNlLCBmcm9tUHJldmlvdXNQYWdlID0gZmFsc2UpOiBDYXNlRXZlbnREYXRhIHtcbiAgICAvLyBHZXQgdGhlIGRhdGEgZm9yIHRoZSBmaWVsZHMgc3BlY2lmaWVkLlxuICAgIGNvbnN0IGZvcm1GaWVsZHMgPSB0aGlzLmZvcm1WYWx1ZVNlcnZpY2UuZmlsdGVyQ3VycmVudFBhZ2VGaWVsZHMoY2FzZUZpZWxkcywgZm9ybVZhbHVlKTtcblxuICAgIC8vIFNvcnQgb3V0IHRoZSBkeW5hbWljIGxpc3RzLlxuICAgIHRoaXMuZm9ybVZhbHVlU2VydmljZS5zYW5pdGlzZUR5bmFtaWNMaXN0cyhjYXNlRmllbGRzLCBmb3JtRmllbGRzKTtcblxuICAgIC8vIEdldCBob2xkIG9mIHRoZSBDYXNlRXZlbnREYXRhLlxuICAgIGNvbnN0IGNhc2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmZvcm1WYWx1ZVNlcnZpY2Uuc2FuaXRpc2UoZm9ybUZpZWxkcykgYXMgQ2FzZUV2ZW50RGF0YTtcblxuICAgIC8vIFRpZHkgaXQgdXAgYmVmb3JlIHdlIHJldHVybiBpdC5cbiAgICB0aGlzLmZvcm1WYWx1ZVNlcnZpY2UucmVtb3ZlVW5uZWNlc3NhcnlGaWVsZHMoY2FzZUV2ZW50RGF0YS5kYXRhLCBjYXNlRmllbGRzLCBjbGVhckVtcHR5LCBjbGVhck5vbkNhc2UsXG4gICAgICBmcm9tUHJldmlvdXNQYWdlLCB0aGlzLmN1cnJlbnRQYWdlLmNhc2VfZmllbGRzKTtcblxuICAgIHJldHVybiBjYXNlRXZlbnREYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jQ2FzZUVkaXREYXRhU2VydmljZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2Uuc2V0Q2FzZURldGFpbHModGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyk7XG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLnNldENhc2VFdmVudFRyaWdnZXJOYW1lKHRoaXMuZXZlbnRUcmlnZ2VyLm5hbWUpO1xuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5zZXRDYXNlVGl0bGUodGhpcy5nZXRDYXNlVGl0bGUoKSk7XG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLnNldENhc2VFZGl0Rm9ybSh0aGlzLmVkaXRGb3JtKTtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2FzZUZvcm1WYWxpZGF0aW9uRXJyb3JzJC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHZhbGlkYXRpb25FcnJvcnMpID0+IHRoaXMudmFsaWRhdGlvbkVycm9ycyA9IHZhbGlkYXRpb25FcnJvcnNcbiAgICB9KTtcbiAgfVxufVxuIiwiPGNjZC1sb2FkaW5nLXNwaW5uZXIgICpuZ0lmPVwic2hvd1NwaW5uZXJcIj48L2NjZC1sb2FkaW5nLXNwaW5uZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFBhZ2VcIj5cbiAgPGgxICpuZ0lmPVwiIWN1cnJlbnRQYWdlLmxhYmVsXCIgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj57e2V2ZW50VHJpZ2dlci5uYW1lfX08L2gxPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFBhZ2UubGFiZWxcIj5cbiAgICA8c3BhbiBjbGFzcz1cImdvdnVrLWNhcHRpb24tbFwiPnt7IGV2ZW50VHJpZ2dlci5uYW1lfX08L3NwYW4+XG4gICAgPGgxIGNsYXNzPVwiZ292dWstaGVhZGluZy1sXCI+e3tjdXJyZW50UGFnZS5sYWJlbH19PC9oMT5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPCEtLUNhc2UgSUQgb3IgVGl0bGUgLS0+XG48ZGl2ICpuZ0lmPVwiZ2V0Q2FzZVRpdGxlKCk7IHRoZW4gdGl0bGVCbG9jazsgZWxzZSBpZEJsb2NrXCI+PC9kaXY+XG48bmctdGVtcGxhdGUgI3RpdGxlQmxvY2s+XG4gIDxjY2QtbWFya2Rvd24gW2NvbnRlbnRdPVwiZ2V0Q2FzZVRpdGxlKCkgfCBjY2RDYXNlVGl0bGU6IGNhc2VGaWVsZHMgOiBlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCI+PC9jY2QtbWFya2Rvd24+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNpZEJsb2NrPlxuICA8aDIgKm5nSWY9XCJnZXRDYXNlSWQoKVwiIGNsYXNzPVwiaGVhZGluZy1oMlwiPiN7eyBnZXRDYXNlSWQoKSB8IGNjZENhc2VSZWZlcmVuY2UgfX08L2gyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBFcnJvciBtZXNzYWdlIHN1bW1hcnkgLS0+XG48ZGl2ICpuZ0lmPVwidmFsaWRhdGlvbkVycm9ycy5sZW5ndGggPiAwXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZXJyb3Itc3VtbWFyeS10aXRsZVwiIHJvbGU9XCJhbGVydFwiIHRhYmluZGV4PVwiLTFcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWVycm9yLXN1bW1hcnlcIj5cbiAgPGgyIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fdGl0bGVcIiBpZD1cImVycm9yLXN1bW1hcnktdGl0bGVcIj5cbiAgICBUaGVyZSBpcyBhIHByb2JsZW1cbiAgPC9oMj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgdmFsaWRhdGlvbkVycm9yIG9mIHZhbGlkYXRpb25FcnJvcnNcIiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX2JvZHlcIj5cbiAgICA8dWwgY2xhc3M9XCJnb3Z1ay1saXN0IGdvdnVrLWVycm9yLXN1bW1hcnlfX2xpc3RcIj5cbiAgICAgIDxsaT5cbiAgICAgICAgPGEgKGNsaWNrKT1cIm5hdmlnYXRlVG9FcnJvckVsZW1lbnQodmFsaWRhdGlvbkVycm9yLmlkKVwiIGNsYXNzPVwidmFsaWRhdGlvbi1lcnJvclwiPnt7dmFsaWRhdGlvbkVycm9yLm1lc3NhZ2V9fTwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBHZW5lcmljIGVycm9yIGhlYWRpbmcgYW5kIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIG9ubHkgaWYgdGhlcmUgYXJlIG5vIHNwZWNpZmljIGNhbGxiYWNrIGVycm9ycyBvciB3YXJuaW5ncywgb3Igbm8gZXJyb3IgZGV0YWlscyAtLT5cbjxkaXYgKm5nSWY9XCJlcnJvciAmJiAhKGVycm9yLmNhbGxiYWNrRXJyb3JzIHx8IGVycm9yLmNhbGxiYWNrV2FybmluZ3MgfHwgZXJyb3IuZGV0YWlscylcIiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIlxuICAgICByb2xlPVwic3RhdHVzXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiIHRhYmluZGV4PVwiLTFcIj5cblxuICA8aDEgY2xhc3M9XCJoZWFkaW5nLWgxIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiPlxuICAgIFNvbWV0aGluZyB3ZW50IHdyb25nXG4gIDwvaDE+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5XCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1ib2R5XCI+XG4gICAgPHA+V2UncmUgd29ya2luZyB0byBmaXggdGhlIHByb2JsZW0uIFRyeSBhZ2FpbiBzaG9ydGx5LjwvcD5cbiAgICA8cD48YSBocmVmPVwiZ2V0LWhlbHBcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Db250YWN0IHVzPC9hPiBpZiB5b3UncmUgc3RpbGwgaGF2aW5nIHByb2JsZW1zLjwvcD5cbiAgPC9kaXY+XG48L2Rpdj5cbjwhLS0gRXZlbnQgZXJyb3IgaGVhZGluZyBhbmQgZXJyb3IgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGVycm9yIGRldGFpbHMgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgZXJyb3IuZGV0YWlsc1wiIGNsYXNzPVwiZXJyb3Itc3VtbWFyeVwiIHJvbGU9XCJzdGF0dXNcIlxuICAgICBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgdGFiaW5kZXg9XCItMVwiPlxuICA8aDMgY2xhc3M9XCJoZWFkaW5nLWgzIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZy0zXCI+XG4gICAgVGhlIGV2ZW50IGNvdWxkIG5vdCBiZSBjcmVhdGVkXG4gIDwvaDM+XG4gIDxwPnt7ZXJyb3IubWVzc2FnZX19PC9wPlxuICA8dWwgKm5nSWY9XCJlcnJvci5kZXRhaWxzPy5maWVsZF9lcnJvcnNcIiBjbGFzcz1cImVycm9yLXN1bW1hcnktbGlzdFwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZmllbGRFcnJvciBvZiBlcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9yc1wiIGNsYXNzPVwiY2NkLWVycm9yLXN1bW1hcnktbGlcIj57e2ZpZWxkRXJyb3IubWVzc2FnZX19PC9saT5cbiAgPC91bD5cbjwvZGl2PlxuPGNjZC1jYWxsYmFjay1lcnJvcnNcbiAgW3RyaWdnZXJUZXh0Q29udGludWVdPVwidHJpZ2dlclRleHRTdGFydFwiXG4gIFt0cmlnZ2VyVGV4dElnbm9yZV09XCJ0cmlnZ2VyVGV4dElnbm9yZVdhcm5pbmdzXCJcbiAgW2NhbGxiYWNrRXJyb3JzU3ViamVjdF09XCJjYWxsYmFja0Vycm9yc1N1YmplY3RcIlxuICAoY2FsbGJhY2tFcnJvcnNDb250ZXh0KT1cImNhbGxiYWNrRXJyb3JzTm90aWZ5KCRldmVudClcIj5cbjwvY2NkLWNhbGxiYWNrLWVycm9ycz5cbjxkaXYgY2xhc3M9XCJ3aWR0aC01MFwiPlxuICA8Zm9ybSAqbmdJZj1cImN1cnJlbnRQYWdlXCIgY2xhc3M9XCJmb3JtXCIgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybVwiIChzdWJtaXQpPVwic3VibWl0KClcIj5cbiAgICA8ZmllbGRzZXQgaWQ9XCJmaWVsZHNldC1jYXNlLWRhdGFcIj5cbiAgICAgIDxsZWdlbmQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjwvbGVnZW5kPlxuICAgICAgPCEtLSBzaW5nbGUgY29sdW1uIC0tPlxuICAgICAgPGNjZC1jYXNlLWVkaXQtZm9ybSBpZD0nY2FzZUVkaXRGb3JtJyAqbmdJZj1cIiFjdXJyZW50UGFnZS5pc011bHRpQ29sdW1uKClcIiBbZmllbGRzXT1cImN1cnJlbnRQYWdlLmdldENvbDFGaWVsZHMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjYXNlRmllbGRzXT1cImNhc2VGaWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnZUNoYW5nZVN1YmplY3RdPVwicGFnZUNoYW5nZVN1YmplY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWVzQ2hhbmdlZCk9XCJhcHBseVZhbHVlc0NoYW5nZWQoJGV2ZW50KVwiPjwvY2NkLWNhc2UtZWRpdC1mb3JtPlxuICAgICAgPCEtLSB0d28gY29sdW1ucyAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCJjdXJyZW50UGFnZS5pc011bHRpQ29sdW1uKClcIiBjbGFzcz1cImdyaWQtcm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tdHdvLXRoaXJkcyByaWdodEJvcmRlclNlcGFyYXRvclwiPlxuICAgICAgICAgIDxjY2QtY2FzZS1lZGl0LWZvcm0gaWQ9J2Nhc2VFZGl0Rm9ybTEnIFtmaWVsZHNdPVwiY3VycmVudFBhZ2UuZ2V0Q29sMUZpZWxkcygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjYXNlRmllbGRzXT1cImNhc2VGaWVsZHNcIj48L2NjZC1jYXNlLWVkaXQtZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tb25lLXRoaXJkXCI+XG4gICAgICAgICAgPGNjZC1jYXNlLWVkaXQtZm9ybSBpZD0nY2FzZUVkaXRGb3JtMicgW2ZpZWxkc109XCJjdXJyZW50UGFnZS5nZXRDb2wyRmllbGRzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2Nhc2VGaWVsZHNdPVwiY2FzZUZpZWxkc1wiPjwvY2NkLWNhc2UtZWRpdC1mb3JtPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZmllbGRzZXQ+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBmb3JtLWdyb3VwLXJlbGF0ZWRcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gYnV0dG9uLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIShoYXNQcmV2aW91c1BhZ2UkIHwgYXN5bmMpXCIgKGNsaWNrKT1cInRvUHJldmlvdXNQYWdlKClcIj5cbiAgICAgICAgUHJldmlvdXNcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvblwiIHR5cGU9XCJzdWJtaXRcIiBbZGlzYWJsZWRdPVwic3VibWl0dGluZygpXCI+e3t0cmlnZ2VyVGV4dH19PC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8cCBjbGFzcz1cImNhbmNlbFwiPjxhIChjbGljayk9XCJjYW5jZWwoKVwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIj57e2dldENhbmNlbFRleHQoKX19PC9hPjwvcD5cblxuICA8L2Zvcm0+XG48L2Rpdj5cbiJdfQ==
703
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL2Nhc2UtZWRpdG9yL2Nhc2UtZWRpdC1wYWdlL2Nhc2UtZWRpdC1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtcGFnZS9jYXNlLWVkaXQtcGFnZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSXRFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDN0UsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVB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QUNqRSx1SEFFYztRQUNkLHVIQUVjO1FBR2Qsc0VBV007UUFHTix1RUFVTTtRQUVOLHNFQVNNO1FBQ04sK0NBSXlEO1FBQXZELHNKQUF5QixnQ0FBNEIsSUFBQztRQUN4RCxpQkFBc0I7UUFDdEIsK0JBQXNCO1FBQ3BCLDJFQThCTztRQUNULGlCQUFNOzs7O1FBN0ZpQixzQ0FBaUI7UUFDekIsZUFBaUI7UUFBakIsc0NBQWlCO1FBUzFCLGVBQXNCO1FBQXRCLHlDQUFzQixpQkFBQSxpQkFBQTtRQVN0QixlQUFpQztRQUFqQyxzREFBaUM7UUFjakMsZUFBaUY7UUFBakYsa0hBQWlGO1FBWWpGLGVBQTRCO1FBQTVCLHFEQUE0QjtRQVdoQyxlQUF3QztRQUF4QywwREFBd0Msb0RBQUEsb0RBQUE7UUFNakMsZUFBaUI7UUFBakIsc0NBQWlCOzt1RkRsQ2IscUJBQXFCO2NBTGpDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixXQUFXLEVBQUUscUJBQXFCO2dCQUNsQyxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzthQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0NoZWNrZWQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2FzZUVkaXREYXRhU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbnMvY2FzZS1lZGl0LWRhdGEnO1xuaW1wb3J0IHsgQ2FzZUV2ZW50RGF0YSB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9jYXNlLWV2ZW50LWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUV2ZW50VHJpZ2dlciB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9jYXNlLXZpZXcvY2FzZS1ldmVudC10cmlnZ2VyLm1vZGVsJztcbmltcG9ydCB7IENhc2VGaWVsZCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uJztcbmltcG9ydCB7IERSQUZUX1BSRUZJWCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9kcmFmdC5tb2RlbCc7XG5pbXBvcnQgeyBIdHRwRXJyb3IgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vaHR0cC9odHRwLWVycm9yLm1vZGVsJztcbmltcG9ydCB7IENhc2VGaWVsZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXNlLWZpZWxkcy9jYXNlLWZpZWxkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmllbGRzVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9maWVsZHMnO1xuaW1wb3J0IHsgRm9ybUVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0vZm9ybS1lcnJvci5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1WYWx1ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtL2Zvcm0tdmFsdWUuc2VydmljZSc7XG5pbXBvcnQgeyBTYXZlT3JEaXNjYXJkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGlhbG9ncy9zYXZlLW9yLWRpc2NhcmQtZGlhbG9nJztcbmltcG9ydCB7IENhbGxiYWNrRXJyb3JzQ29udGV4dCB9IGZyb20gJy4uLy4uL2Vycm9yL2RvbWFpbi9lcnJvci1jb250ZXh0JztcbmltcG9ydCB7IGluaXREaWFsb2cgfSBmcm9tICcuLi8uLi9oZWxwZXJzJztcbmltcG9ydCB7IENhc2VFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi4vY2FzZS1lZGl0L2Nhc2UtZWRpdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2l6YXJkUGFnZSB9IGZyb20gJy4uL2RvbWFpbi93aXphcmQtcGFnZS5tb2RlbCc7XG5pbXBvcnQgeyBXaXphcmQgfSBmcm9tICcuLi9kb21haW4vd2l6YXJkLm1vZGVsJztcbmltcG9ydCB7IFBhZ2VWYWxpZGF0aW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3BhZ2UtdmFsaWRhdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLWNhc2UtZWRpdC1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICdjYXNlLWVkaXQtcGFnZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FzZS1lZGl0LXBhZ2Uuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhc2VFZGl0UGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBSRVNVTUVEX0ZPUk1fRElTQ0FSRCA9ICdSRVNVTUVEX0ZPUk1fRElTQ0FSRCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTkVXX0ZPUk1fRElTQ0FSRCA9ICdORVdfRk9STV9ESVNDQVJEJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBORVdfRk9STV9TQVZFID0gJ05FV19GT1JNX0NIQU5HRURfU0FWRSc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkVTVU1FRF9GT1JNX1NBVkUgPSAnUkVTVU1FRF9GT1JNX1NBVkUnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRSSUdHRVJfVEVYVF9TVEFSVCA9ICdDb250aW51ZSc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJJR0dFUl9URVhUX1NBVkUgPSAnU2F2ZSBhbmQgY29udGludWUnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRSSUdHRVJfVEVYVF9DT05USU5VRSA9ICdJZ25vcmUgV2FybmluZyBhbmQgQ29udGludWUnO1xuXG4gIHB1YmxpYyBldmVudFRyaWdnZXI6IENhc2VFdmVudFRyaWdnZXI7XG4gIHB1YmxpYyBlZGl0Rm9ybTogRm9ybUdyb3VwO1xuICBwdWJsaWMgd2l6YXJkOiBXaXphcmQ7XG4gIHB1YmxpYyBjdXJyZW50UGFnZTogV2l6YXJkUGFnZTtcbiAgcHVibGljIGRpYWxvZ0NvbmZpZzogTWF0RGlhbG9nQ29uZmlnO1xuICBwdWJsaWMgZXJyb3I6IEh0dHBFcnJvcjtcbiAgcHVibGljIGNhbGxiYWNrRXJyb3JzU3ViamVjdDogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHVibGljIGlnbm9yZVdhcm5pbmcgPSBmYWxzZTtcbiAgcHVibGljIHRyaWdnZXJUZXh0U3RhcnQgPSBDYXNlRWRpdFBhZ2VDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICBwdWJsaWMgdHJpZ2dlclRleHRJZ25vcmVXYXJuaW5ncyA9IENhc2VFZGl0UGFnZUNvbXBvbmVudC5UUklHR0VSX1RFWFRfQ09OVElOVUU7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dDogc3RyaW5nO1xuICBwdWJsaWMgaXNTdWJtaXR0aW5nID0gZmFsc2U7XG4gIHB1YmxpYyBmb3JtVmFsdWVzQ2hhbmdlZCA9IGZhbHNlO1xuICBwdWJsaWMgcGFnZUNoYW5nZVN1YmplY3Q6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xuICBwdWJsaWMgY2FzZUZpZWxkczogQ2FzZUZpZWxkW107XG4gIHB1YmxpYyB2YWxpZGF0aW9uRXJyb3JzOiB7IGlkOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyB9W10gPSBbXTtcbiAgcHVibGljIHNob3dTcGlubmVyOiBib29sZWFuO1xuICBwdWJsaWMgaGFzUHJldmlvdXNQYWdlJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBpc0xpbmtlZENhc2VzSm91cm5leUF0RmluYWxTdGVwOiBib29sZWFuO1xuXG4gIHByaXZhdGUgc3RhdGljIHNjcm9sbFRvVG9wKCk6IHZvaWQge1xuICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNldEZvY3VzVG9Ub3AoKSB7XG4gICAgY29uc3QgdG9wQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvcCcpO1xuICAgIGlmICh0b3BDb250YWluZXIpIHtcbiAgICAgIHRvcENvbnRhaW5lci5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZUVkaXQ6IENhc2VFZGl0Q29tcG9uZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybVZhbHVlU2VydmljZTogRm9ybVZhbHVlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1FcnJvclNlcnZpY2U6IEZvcm1FcnJvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlVmFsaWRhdGlvblNlcnZpY2U6IFBhZ2VWYWxpZGF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZUZpZWxkU2VydmljZTogQ2FzZUZpZWxkU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VFZGl0RGF0YVNlcnZpY2U6IENhc2VFZGl0RGF0YVNlcnZpY2VcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaW5pdERpYWxvZygpO1xuICAgIHRoaXMuZXZlbnRUcmlnZ2VyID0gdGhpcy5jYXNlRWRpdC5ldmVudFRyaWdnZXI7XG4gICAgdGhpcy5lZGl0Rm9ybSA9IHRoaXMuY2FzZUVkaXQuZm9ybTtcbiAgICB0aGlzLndpemFyZCA9IHRoaXMuY2FzZUVkaXQud2l6YXJkO1xuICAgIHRoaXMuY2FzZUZpZWxkcyA9IHRoaXMuZ2V0Q2FzZUZpZWxkcygpO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSB0aGlzLmdldFRyaWdnZXJUZXh0KCk7XG5cbiAgICB0aGlzLnN5bmNDYXNlRWRpdERhdGFTZXJ2aWNlKCk7XG5cbiAgICB0aGlzLnJvdXRlLnBhcmFtc1xuICAgICAgLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgICBjb25zdCBwYWdlSWQgPSBwYXJhbXNbJ3BhZ2UnXTtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRQYWdlIHx8IHBhZ2VJZCAhPT0gdGhpcy5jdXJyZW50UGFnZS5pZCkge1xuICAgICAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmNhc2VFZGl0LmdldFBhZ2UocGFnZUlkKTtcbiAgICAgICAgICBpZiAocGFnZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhZ2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpcnN0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaGFzUHJldmlvdXNQYWdlJC5uZXh0KHRoaXMuY2FzZUVkaXQuaGFzUHJldmlvdXModGhpcy5jdXJyZW50UGFnZS5pZCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBDYXNlRWRpdFBhZ2VDb21wb25lbnQuc2V0Rm9jdXNUb1RvcCgpO1xuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jYXNlRWRpdEZvcm0kLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBlZGl0Rm9ybSA9PiB0aGlzLmVkaXRGb3JtID0gZWRpdEZvcm1cbiAgICB9KTtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2FzZUlzTGlua2VkQ2FzZXNKb3VybmV5QXRGaW5hbFN0ZXAkLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBpc0xpbmtlZENhc2VzSm91cm5leUF0RmluYWxTdGVwID0+IHtcbiAgICAgICAgdGhpcy5pc0xpbmtlZENhc2VzSm91cm5leUF0RmluYWxTdGVwID0gaXNMaW5rZWRDYXNlc0pvdXJuZXlBdEZpbmFsU3RlcDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2FzZVRyaWdnZXJTdWJtaXRFdmVudCQuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLnNldFRyaWdnZXJTdWJtaXRFdmVudChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5zdWJtaXQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseVZhbHVlc0NoYW5nZWQodmFsdWVzQ2hhbmdlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWQgPSB2YWx1ZXNDaGFuZ2VkO1xuICB9XG5cbiAgcHVibGljIGZpcnN0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0LmZpcnN0KCk7XG4gIH1cblxuICBwdWJsaWMgY3VycmVudFBhZ2VJc05vdFZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5wYWdlVmFsaWRhdGlvblNlcnZpY2UuaXNQYWdlVmFsaWQodGhpcy5jdXJyZW50UGFnZSwgdGhpcy5lZGl0Rm9ybSkgfHxcbiAgICAgICh0aGlzLmlzTGlua2VkQ2FzZXNKb3VybmV5KCkgJiYgIXRoaXMuaXNMaW5rZWRDYXNlc0pvdXJuZXlBdEZpbmFsU3RlcCk7XG4gIH1cblxuICBwdWJsaWMgaXNMaW5rZWRDYXNlc0pvdXJuZXkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZpZWxkc1V0aWxzLmNvbnRhaW5zTGlua2VkQ2FzZXNDYXNlRmllbGQodGhpcy5jdXJyZW50UGFnZS5jYXNlX2ZpZWxkcyk7XG4gIH1cblxuICAvKipcbiAgICogY2FzZUV2ZW50RGF0YS5ldmVudF9kYXRhIGNvbnRhaW5zIGFsbCB0aGUgdmFsdWVzIGZyb20gdGhlIHByZXZpb3VzIHBhZ2VzIHNvIHdlIHNldCBjYXNlRXZlbnREYXRhLmRhdGEgPSBjYXNlRXZlbnREYXRhLmV2ZW50X2RhdGFcbiAgICogVGhpcyBidWlsZHMgdGhlIGZvcm0gd2l0aCBkYXRhIGZyb20gdGhlIHByZXZpb3VzIHBhZ2VzXG4gICAqIEVVSS0zNzMyIC0gQnJlYXRoaW5nIHNwYWNlIGRhdGEgbm90IHBlcnNpc3RlZCBvbiBQcmV2aW91cyBidXR0b24gY2xpY2sgd2l0aCBFeHBVSSBEZW1vXG4gICAqL1xuICBwdWJsaWMgdG9QcmV2aW91c1BhZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNsZWFyRm9ybVZhbGlkYXRpb25FcnJvcnMoKTtcblxuICAgIGNvbnN0IGNhc2VFdmVudERhdGE6IENhc2VFdmVudERhdGEgPSB0aGlzLmJ1aWxkQ2FzZUV2ZW50RGF0YSh0cnVlKTtcbiAgICBjYXNlRXZlbnREYXRhLmRhdGEgPSBjYXNlRXZlbnREYXRhLmV2ZW50X2RhdGE7XG4gICAgdGhpcy51cGRhdGVGb3JtRGF0YShjYXNlRXZlbnREYXRhKTtcbiAgICB0aGlzLnByZXZpb3VzKCk7XG4gICAgQ2FzZUVkaXRQYWdlQ29tcG9uZW50LnNldEZvY3VzVG9Ub3AoKTtcbiAgfVxuXG4gIC8vIEFkZGluZyB2YWxpZGF0aW9uIG1lc3NhZ2UgdG8gc2hvdyBpdCBhcyBFcnJvciBTdW1tYXJ5XG4gIHB1YmxpYyBnZW5lcmF0ZUVycm9yTWVzc2FnZShmaWVsZHM6IENhc2VGaWVsZFtdLCBjb250YWluZXI/OiBBYnN0cmFjdENvbnRyb2wsIHBhdGg/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBncm91cDogQWJzdHJhY3RDb250cm9sID0gY29udGFpbmVyIHx8IHRoaXMuZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXTtcbiAgICBmaWVsZHMuZmlsdGVyKGNhc2VmaWVsZCA9PiAhdGhpcy5jYXNlRmllbGRTZXJ2aWNlLmlzUmVhZE9ubHkoY2FzZWZpZWxkKSlcbiAgICAgIC5maWx0ZXIoY2FzZWZpZWxkID0+ICF0aGlzLnBhZ2VWYWxpZGF0aW9uU2VydmljZS5pc0hpZGRlbihjYXNlZmllbGQsIHRoaXMuZWRpdEZvcm0sIHBhdGgpKVxuICAgICAgLmZvckVhY2goY2FzZWZpZWxkID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRFbGVtZW50ID0gZ3JvdXAuZ2V0KGNhc2VmaWVsZC5pZCk7XG4gICAgICAgIGlmIChmaWVsZEVsZW1lbnQpIHtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9IGNhc2VmaWVsZC5sYWJlbCB8fCAnRmllbGQnO1xuICAgICAgICAgIGxldCBpZCA9IGNhc2VmaWVsZC5pZDtcbiAgICAgICAgICBpZiAoZmllbGRFbGVtZW50Wydjb21wb25lbnQnXSAmJiBmaWVsZEVsZW1lbnRbJ2NvbXBvbmVudCddLnBhcmVudCkge1xuICAgICAgICAgICAgaWYgKGZpZWxkRWxlbWVudFsnY29tcG9uZW50J10uaWRQcmVmaXguaW5kZXhPZignXycgKyBpZCArICdfJykgPT09IC0xKSB7XG4gICAgICAgICAgICAgIGlkID0gYCR7ZmllbGRFbGVtZW50Wydjb21wb25lbnQnXS5pZFByZWZpeH0ke2lkfWA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZCA9IGAke2ZpZWxkRWxlbWVudFsnY29tcG9uZW50J10uaWRQcmVmaXh9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZpZWxkRWxlbWVudC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICAgICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmFkZEZvcm1WYWxpZGF0aW9uRXJyb3IoeyBpZCwgbWVzc2FnZTogYCR7bGFiZWx9IGlzIHJlcXVpcmVkYCB9KTtcbiAgICAgICAgICAgIGZpZWxkRWxlbWVudC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGRFbGVtZW50Lmhhc0Vycm9yKCdwYXR0ZXJuJykpIHtcbiAgICAgICAgICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5hZGRGb3JtVmFsaWRhdGlvbkVycm9yKHsgaWQsIG1lc3NhZ2U6IGAke2xhYmVsfSBpcyBub3QgdmFsaWRgIH0pO1xuICAgICAgICAgICAgZmllbGRFbGVtZW50Lm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChmaWVsZEVsZW1lbnQuaGFzRXJyb3IoJ21pbmxlbmd0aCcpKSB7XG4gICAgICAgICAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuYWRkRm9ybVZhbGlkYXRpb25FcnJvcih7IGlkLCBtZXNzYWdlOiBgJHtsYWJlbH0gaXMgYmVsb3cgdGhlIG1pbmltdW0gbGVuZ3RoYCB9KTtcbiAgICAgICAgICAgIGZpZWxkRWxlbWVudC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGRFbGVtZW50Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKSkge1xuICAgICAgICAgICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmFkZEZvcm1WYWxpZGF0aW9uRXJyb3IoeyBpZCwgbWVzc2FnZTogYCR7bGFiZWx9IGV4Y2VlZHMgdGhlIG1heGltdW0gbGVuZ3RoYCB9KTtcbiAgICAgICAgICAgIGZpZWxkRWxlbWVudC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZmllbGRFbGVtZW50LmludmFsaWQpIHtcbiAgICAgICAgICAgIGlmIChjYXNlZmllbGQuaXNDb21wbGV4KCkpIHtcbiAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUVycm9yTWVzc2FnZShjYXNlZmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcywgZmllbGRFbGVtZW50LCBpZCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhc2VmaWVsZC5pc0NvbGxlY3Rpb24oKSAmJiBjYXNlZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBsZXgnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpZWxkQXJyYXkgPSBmaWVsZEVsZW1lbnQgYXMgRm9ybUFycmF5O1xuICAgICAgICAgICAgICBpZiAoZmllbGRBcnJheVsnY29tcG9uZW50J10gJiYgZmllbGRBcnJheVsnY29tcG9uZW50J11bJ2NvbGxJdGVtcyddICYmIGZpZWxkQXJyYXlbJ2NvbXBvbmVudCddWydjb2xsSXRlbXMnXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaWQgPSBgJHtmaWVsZEFycmF5Wydjb21wb25lbnQnXVsnY29sbEl0ZW1zJ11bMF0ucHJlZml4fWA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZmllbGRBcnJheS5jb250cm9scy5mb3JFYWNoKChjOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRXJyb3JNZXNzYWdlKGNhc2VmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcywgYy5nZXQoJ3ZhbHVlJyksIGlkKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VmaWVsZCkpIHtcbiAgICAgICAgICAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgY2FzZSBmaWVsZCBEaXNwbGF5Q29udGV4dFBhcmFtZXRlciBpcyBzaWduYWxsaW5nIFwiY3JlYXRlXCIgbW9kZSBvciBcInVwZGF0ZVwiIG1vZGVcbiAgICAgICAgICAgICAgLy8gKGV4cGVjdGVkIGFsd2F5cyB0byBiZSBvbmUgb2YgdGhlIHR3byksIHRvIHNldCB0aGUgY29ycmVjdCBlcnJvciBtZXNzYWdlXG4gICAgICAgICAgICAgIGxldCBhY3Rpb24gPSAnJztcbiAgICAgICAgICAgICAgaWYgKGNhc2VmaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSAnI0FSR1VNRU5UKENSRUFURSknKSB7XG4gICAgICAgICAgICAgICAgYWN0aW9uID0gJ2NyZWF0aW9uJztcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYXNlZmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciA9PT0gJyNBUkdVTUVOVChVUERBVEUpJykge1xuICAgICAgICAgICAgICAgIGFjdGlvbiA9ICd1cGRhdGUnO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBgUGxlYXNlIHNlbGVjdCBOZXh0IHRvIGNvbXBsZXRlIHRoZSAke2FjdGlvbn0gb2YgdGhlICR7YWN0aW9uID09PSAndXBkYXRlJyA/ICdzZWxlY3RlZCAnIDogJyd9Y2FzZSBmbGFnYFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycy5wdXNoKHsgaWQsIG1lc3NhZ2U6IGBTZWxlY3Qgb3IgZmlsbCB0aGUgcmVxdWlyZWQgJHtjYXNlZmllbGQubGFiZWx9IGZpZWxkYCB9KTtcbiAgICAgICAgICAgICAgZmllbGRFbGVtZW50Lm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICBDYXNlRWRpdFBhZ2VDb21wb25lbnQuc2Nyb2xsVG9Ub3AoKTtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvRXJyb3JFbGVtZW50KGVsZW1lbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGVsZW1lbnRJZCkge1xuICAgICAgY29uc3QgaHRtbEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpO1xuICAgICAgaWYgKGh0bWxFbGVtZW50KSB7XG4gICAgICAgIGh0bWxFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7XG4gICAgICAgIGh0bWxFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2xlYXJGb3JtVmFsaWRhdGlvbkVycm9ycygpO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2VJc05vdFZhbGlkKCkpIHtcbiAgICAgIC8vIFRoZSBnZW5lcmF0ZUVycm9yTWVzc2FnZSBtZXRob2QgZmlsdGVycyBvdXQgdGhlIGhpZGRlbiBmaWVsZHMuXG4gICAgICAvLyBUaGUgZXJyb3IgbWVzc2FnZSBmb3IgTGlua2VkQ2FzZXMgam91cm5leSB3aWxsIG5ldmVyIGdldCBkaXNwbGF5ZWQgYmVjYXVzZSB0aGVcbiAgICAgIC8vIExpbmtlZENhc2VzIGlzIGNvbmZpZ3VyZWQgd2l0aCBDb21wb25lbnRMYXVuY2hlciBmaWVsZCBhcyB2aXNpYmxlIGFuZCBjYXNlTGlua3MgZmllbGQgYXMgaGlkZGVuLlxuICAgICAgaWYgKHRoaXMuaXNMaW5rZWRDYXNlc0pvdXJuZXkoKSkge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMucHVzaCh7IGlkOiAnbmV4dC1idXR0b24nLCBtZXNzYWdlOiAnUGxlYXNlIHNlbGVjdCBOZXh0IHRvIGdvIHRvIHRoZSBuZXh0IHBhZ2UnIH0pO1xuICAgICAgICBDYXNlRWRpdFBhZ2VDb21wb25lbnQuc2Nyb2xsVG9Ub3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVFcnJvck1lc3NhZ2UodGhpcy5jdXJyZW50UGFnZS5jYXNlX2ZpZWxkcyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghdGhpcy5pc1N1Ym1pdHRpbmcgJiYgIXRoaXMuY3VycmVudFBhZ2VJc05vdFZhbGlkKCkpIHtcbiAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgICAgY29uc3QgY2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSA9IHRoaXMuYnVpbGRDYXNlRXZlbnREYXRhKCk7XG4gICAgICB0aGlzLnNob3dTcGlubmVyID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2FzZUVkaXQudmFsaWRhdGUoY2FzZUV2ZW50RGF0YSwgdGhpcy5jdXJyZW50UGFnZS5pZClcbiAgICAgICAgLnN1YnNjcmliZSgoanNvbkRhdGEpID0+IHtcbiAgICAgICAgICBpZiAoanNvbkRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRm9ybURhdGEoanNvbkRhdGEgYXMgQ2FzZUV2ZW50RGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2F2ZURyYWZ0KCk7XG4gICAgICAgICAgdGhpcy5zaG93U3Bpbm5lciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5zaG93U3Bpbm5lciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIENhc2VFZGl0UGFnZUNvbXBvbmVudC5zY3JvbGxUb1RvcCgpO1xuICAgIH1cbiAgICBDYXNlRWRpdFBhZ2VDb21wb25lbnQuc2V0Rm9jdXNUb1RvcCgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUZvcm1EYXRhKGpzb25EYXRhOiBDYXNlRXZlbnREYXRhKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBjYXNlRmllbGRJZCBvZiBPYmplY3Qua2V5cyhqc29uRGF0YS5kYXRhKSkge1xuICAgICAgaWYgKHRoaXMucGFnZVdpdGhGaWVsZEV4aXN0cyhjYXNlRmllbGRJZCkpIHtcbiAgICAgICAgdGhpcy51cGRhdGVFdmVudFRyaWdnZXJDYXNlRmllbGRzKGNhc2VGaWVsZElkLCBqc29uRGF0YSwgdGhpcy5jYXNlRWRpdC5ldmVudFRyaWdnZXIpO1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9sc1ZhbHVlKHRoaXMuZWRpdEZvcm0sIGNhc2VGaWVsZElkLCBqc29uRGF0YS5kYXRhW2Nhc2VGaWVsZElkXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gd2UgZG8gdGhlIGNoZWNrLCBiZWNhc3VlIHRoZSBkYXRhIGNvbWVzIGZyb20gdGhlIGV4dGVybmFsIHNvdXJjZVxuICBwdWJsaWMgcGFnZVdpdGhGaWVsZEV4aXN0cyhjYXNlRmllbGRJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMud2l6YXJkLmZpbmRXaXphcmRQYWdlKGNhc2VGaWVsZElkKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVFdmVudFRyaWdnZXJDYXNlRmllbGRzKGNhc2VGaWVsZElkOiBzdHJpbmcsIGpzb25EYXRhOiBDYXNlRXZlbnREYXRhLCBldmVudFRyaWdnZXI6IENhc2VFdmVudFRyaWdnZXIpIHtcbiAgICBpZiAoZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzKSB7XG4gICAgICBldmVudFRyaWdnZXIuY2FzZV9maWVsZHNcbiAgICAgICAgLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQuaWQgPT09IGNhc2VGaWVsZElkKVxuICAgICAgICAuZm9yRWFjaChlbGVtZW50ID0+IGVsZW1lbnQudmFsdWUgPSBqc29uRGF0YS5kYXRhW2Nhc2VGaWVsZElkXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUZvcm1Db250cm9sc1ZhbHVlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBjYXNlRmllbGRJZDogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgdGhlQ29udHJvbCA9IGZvcm1Hcm91cC5jb250cm9sc1snZGF0YSddLmdldChjYXNlRmllbGRJZCk7XG4gICAgaWYgKHRoZUNvbnRyb2wgJiYgdGhlQ29udHJvbFsnc3RhdHVzJ10gIT09ICdESVNBQkxFRCcpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoZUNvbnRyb2wudmFsdWUpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgICAgICYmIHRoZUNvbnRyb2wudmFsdWUubGVuZ3RoID4gdmFsdWUubGVuZ3RoICYmIHRoZUNvbnRyb2xbJ2Nhc2VGaWVsZCddXG4gICAgICAgICAgICAgICYmIHRoZUNvbnRyb2xbJ2Nhc2VGaWVsZCddWydkaXNwbGF5X2NvbnRleHQnXSAmJiB0aGVDb250cm9sWydjYXNlRmllbGQnXVsnZGlzcGxheV9jb250ZXh0J10gPT09ICdPUFRJT05BTCdcbiAgICAgICAgICAgICAgJiYgdGhlQ29udHJvbFsnY2FzZUZpZWxkJ11bJ2ZpZWxkX3R5cGUnXSAmJiB0aGVDb250cm9sWydjYXNlRmllbGQnXVsnZmllbGRfdHlwZSddWyd0eXBlJ10gPT09ICdDb2xsZWN0aW9uJykge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGVDb250cm9sLnBhdGNoVmFsdWUodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc05vdGlmeShlcnJvckNvbnRleHQ6IENhbGxiYWNrRXJyb3JzQ29udGV4dCkge1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGVycm9yQ29udGV4dC5pZ25vcmVfd2FybmluZztcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gZXJyb3JDb250ZXh0LnRyaWdnZXJfdGV4dDtcbiAgfVxuXG4gIHB1YmxpYyBuZXh0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRoaXMucmVzZXRFcnJvcnMoKTtcbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xuICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWQgPSBmYWxzZTtcbiAgICB0aGlzLnBhZ2VDaGFuZ2VTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUVkaXQubmV4dCh0aGlzLmN1cnJlbnRQYWdlLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2aW91cygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aGlzLnJlc2V0RXJyb3JzKCk7XG4gICAgdGhpcy5zYXZlRHJhZnQoKTtcbiAgICB0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgdGhpcy5wYWdlQ2hhbmdlU3ViamVjdC5uZXh0KHRydWUpO1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0LnByZXZpb3VzKHRoaXMuY3VycmVudFBhZ2UuaWQpO1xuICB9XG5cbiAgcHVibGljIGhhc1ByZXZpb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0Lmhhc1ByZXZpb3VzKHRoaXMuY3VycmVudFBhZ2UuaWQpO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXIuY2FuX3NhdmVfZHJhZnQpIHtcbiAgICAgIGlmICh0aGlzLmZvcm1WYWx1ZXNDaGFuZ2VkKSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oU2F2ZU9yRGlzY2FyZERpYWxvZ0NvbXBvbmVudCwgdGhpcy5kaWFsb2dDb25maWcpO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSAnRGlzY2FyZCcpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzY2FyZCgpO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09PSAnU2F2ZScpIHtcbiAgICAgICAgICAgIGNvbnN0IGRyYWZ0Q2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSA9IHRoaXMuZm9ybVZhbHVlU2VydmljZS5zYW5pdGlzZSh0aGlzLmVkaXRGb3JtLnZhbHVlKSBhcyBDYXNlRXZlbnREYXRhO1xuICAgICAgICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoQ2FzZUVkaXRDb21wb25lbnQuT1JJR0lOX1FVRVJZX1BBUkFNKSA9PT0gJ3ZpZXdEcmFmdCcpIHtcbiAgICAgICAgICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7IHN0YXR1czogQ2FzZUVkaXRQYWdlQ29tcG9uZW50LlJFU1VNRURfRk9STV9TQVZFLCBkYXRhOiBkcmFmdENhc2VFdmVudERhdGEgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmNhc2VFZGl0LmNhbmNlbGxlZC5lbWl0KHsgc3RhdHVzOiBDYXNlRWRpdFBhZ2VDb21wb25lbnQuTkVXX0ZPUk1fU0FWRSwgZGF0YTogZHJhZnRDYXNlRXZlbnREYXRhIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc2NhcmQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXR0aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzU3VibWl0dGluZztcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXNlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMgPyB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLmNhc2VfaWQgOiAnJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzICYmIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUgJiZcbiAgICAgIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA/IHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA6ICcnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYW5jZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmlnZ2VyLmNhbl9zYXZlX2RyYWZ0ID8gJ1JldHVybiB0byBjYXNlIGxpc3QnIDogJ0NhbmNlbCc7XG4gIH1cblxuICBwcml2YXRlIGdldFRyaWdnZXJUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmlnZ2VyICYmIHRoaXMuZXZlbnRUcmlnZ2VyLmNhbl9zYXZlX2RyYWZ0XG4gICAgICA/IENhc2VFZGl0UGFnZUNvbXBvbmVudC5UUklHR0VSX1RFWFRfU0FWRVxuICAgICAgOiBDYXNlRWRpdFBhZ2VDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNjYXJkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KENhc2VFZGl0Q29tcG9uZW50Lk9SSUdJTl9RVUVSWV9QQVJBTSkgPT09ICd2aWV3RHJhZnQnKSB7XG4gICAgICB0aGlzLmNhc2VFZGl0LmNhbmNlbGxlZC5lbWl0KHsgc3RhdHVzOiBDYXNlRWRpdFBhZ2VDb21wb25lbnQuUkVTVU1FRF9GT1JNX0RJU0NBUkQgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoeyBzdGF0dXM6IENhc2VFZGl0UGFnZUNvbXBvbmVudC5ORVdfRk9STV9ESVNDQVJEIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3IpIHtcbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3IgPSBlcnJvcjtcbiAgICB0aGlzLmNhbGxiYWNrRXJyb3JzU3ViamVjdC5uZXh0KHRoaXMuZXJyb3IpO1xuICAgIGlmICh0aGlzLmVycm9yLmRldGFpbHMpIHtcbiAgICAgIHRoaXMuZm9ybUVycm9yU2VydmljZVxuICAgICAgICAubWFwRmllbGRFcnJvcnModGhpcy5lcnJvci5kZXRhaWxzLmZpZWxkX2Vycm9ycywgdGhpcy5lZGl0Rm9ybS5jb250cm9sc1snZGF0YSddIGFzIEZvcm1Hcm91cCwgJ3ZhbGlkYXRpb24nKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RXJyb3JzKCk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgIHRoaXMuaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSB0aGlzLmdldFRyaWdnZXJUZXh0KCk7XG4gICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QubmV4dChudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZURyYWZ0KCkge1xuICAgIGlmICh0aGlzLmV2ZW50VHJpZ2dlci5jYW5fc2F2ZV9kcmFmdCkge1xuICAgICAgY29uc3QgZHJhZnRDYXNlRXZlbnREYXRhOiBDYXNlRXZlbnREYXRhID0gdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLnNhbml0aXNlKHRoaXMuZWRpdEZvcm0udmFsdWUpIGFzIENhc2VFdmVudERhdGE7XG4gICAgICBkcmFmdENhc2VFdmVudERhdGEuZXZlbnRfdG9rZW4gPSB0aGlzLmV2ZW50VHJpZ2dlci5ldmVudF90b2tlbjtcbiAgICAgIGRyYWZ0Q2FzZUV2ZW50RGF0YS5pZ25vcmVfd2FybmluZyA9IHRoaXMuaWdub3JlV2FybmluZztcbiAgICAgIHRoaXMuY2FzZUVkaXQuc2F2ZURyYWZ0KGRyYWZ0Q2FzZUV2ZW50RGF0YSkuc3Vic2NyaWJlKFxuICAgICAgICAoZHJhZnQpID0+IHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfaWQgPSBEUkFGVF9QUkVGSVggKyBkcmFmdC5pZCwgZXJyb3IgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvcilcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYXNlRmllbGRzKCk6IENhc2VGaWVsZFtdIHtcbiAgICBpZiAodGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscykge1xuICAgICAgcmV0dXJuIEZpZWxkc1V0aWxzLmdldENhc2VGaWVsZHModGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYXNlRmllbGRzRnJvbUN1cnJlbnRBbmRQcmV2aW91c1BhZ2VzKCk6IENhc2VGaWVsZFtdIHtcbiAgICBjb25zdCByZXN1bHQ6IENhc2VGaWVsZFtdID0gW107XG4gICAgdGhpcy53aXphcmQucGFnZXMuZm9yRWFjaChwYWdlID0+IHtcbiAgICAgIGlmIChwYWdlLm9yZGVyIDw9IHRoaXMuY3VycmVudFBhZ2Uub3JkZXIpIHtcbiAgICAgICAgcGFnZS5jYXNlX2ZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHJlc3VsdC5wdXNoKGZpZWxkKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDYXNlRXZlbnREYXRhKGZyb21QcmV2aW91c1BhZ2U/OiBib29sZWFuKTogQ2FzZUV2ZW50RGF0YSB7XG4gICAgY29uc3QgZm9ybVZhbHVlOiBvYmplY3QgPSB0aGlzLmVkaXRGb3JtLnZhbHVlO1xuXG4gICAgLy8gR2V0IHRoZSBDYXNlRXZlbnREYXRhIGZvciB0aGUgY3VycmVudCBwYWdlLlxuICAgIGNvbnN0IHBhZ2VGaWVsZHM6IENhc2VGaWVsZFtdID0gdGhpcy5jdXJyZW50UGFnZS5jYXNlX2ZpZWxkcztcbiAgICBjb25zdCBwYWdlRXZlbnREYXRhOiBDYXNlRXZlbnREYXRhID0gdGhpcy5nZXRGaWx0ZXJlZENhc2VFdmVudERhdGEocGFnZUZpZWxkcywgZm9ybVZhbHVlLCB0cnVlKTtcblxuICAgIC8vIEdldCB0aGUgQ2FzZUV2ZW50RGF0YSBmb3IgdGhlIGVudGlyZSBmb3JtIChhbGwgcGFnZXMpLlxuICAgIGNvbnN0IGFsbENhc2VGaWVsZHMgPSB0aGlzLmdldENhc2VGaWVsZHNGcm9tQ3VycmVudEFuZFByZXZpb3VzUGFnZXMoKTtcbiAgICBjb25zdCBmb3JtRXZlbnREYXRhOiBDYXNlRXZlbnREYXRhID0gdGhpcy5nZXRGaWx0ZXJlZENhc2VFdmVudERhdGEoYWxsQ2FzZUZpZWxkcywgZm9ybVZhbHVlLCBmYWxzZSwgdHJ1ZSwgZnJvbVByZXZpb3VzUGFnZSk7XG5cbiAgICAvLyBOb3cgaGVyZSdzIHRoZSBrZXkgdGhpbmcgLSB0aGUgcGFnZUV2ZW50RGF0YSBoYXMgYSBwcm9wZXJ0eSBjYWxsZWQgYGV2ZW50X2RhdGFgIGFuZFxuICAgIC8vIHdlIG5lZWQgVEhBVCB0byBiZSB0aGUgdmFsdWUgb2YgdGhlIGVudGlyZSBmb3JtOiBgZm9ybUV2ZW50RGF0YS5kYXRhYC5cbiAgICBwYWdlRXZlbnREYXRhLmV2ZW50X2RhdGEgPSBmb3JtRXZlbnREYXRhLmRhdGE7XG5cbiAgICAvLyBGaW5hbGlzZSB0aGUgQ2FzZUV2ZW50RGF0YSBvYmplY3QuXG4gICAgcGFnZUV2ZW50RGF0YS5ldmVudF90b2tlbiA9IHRoaXMuZXZlbnRUcmlnZ2VyLmV2ZW50X3Rva2VuO1xuICAgIHBhZ2VFdmVudERhdGEuaWdub3JlX3dhcm5pbmcgPSB0aGlzLmlnbm9yZVdhcm5pbmc7XG5cbiAgICAvLyBGaW5hbGx5LCB0cnkgdG8gc2V0IHVwIHRoZSBjYXNlX3JlZmVyZW5jZS5cbiAgICBpZiAodGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscykge1xuICAgICAgcGFnZUV2ZW50RGF0YS5jYXNlX3JlZmVyZW5jZSA9IHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuY2FzZV9pZDtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdGhlIG5vdyBob3BlZnVsbHkgc2FuZSBDYXNlRXZlbnREYXRhLlxuICAgIHJldHVybiBwYWdlRXZlbnREYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEFic3RyYWN0ZWQgdGhpcyBtZXRob2QgZnJvbSBidWlsZENhc2VFdmVudERhdGEgdG8gcmVtb3ZlIGR1cGxpY2F0aW9uLlxuICAgKiBAcGFyYW0gY2FzZUZpZWxkcyBUaGUgZmllbGRzIHRvIGZpbHRlciB0aGUgZGF0YSBieS5cbiAgICogQHBhcmFtIGZvcm1WYWx1ZSBUaGUgb3JpZ2luYWwgdmFsdWUgb2YgdGhlIGZvcm0uXG4gICAqIEBwYXJhbSBjbGVhckVtcHR5IFdoZXRoZXIgb3Igbm90IHRvIGNsZWFyIG91dCBlbXB0eSB2YWx1ZXMuXG4gICAqIEBwYXJhbSBjbGVhck5vbkNhc2UgV2hldGhlciBvciBub3QgdG8gY2xlYXIgb3V0IGZpZWxkcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgY2FzZS5cbiAgICogQHJldHVybnMgQ2FzZUV2ZW50RGF0YSBmb3IgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJlZENhc2VFdmVudERhdGEoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10sIGZvcm1WYWx1ZTogb2JqZWN0LCBjbGVhckVtcHR5ID0gZmFsc2UsXG4gICAgY2xlYXJOb25DYXNlID0gZmFsc2UsIGZyb21QcmV2aW91c1BhZ2UgPSBmYWxzZSk6IENhc2VFdmVudERhdGEge1xuICAgIC8vIEdldCB0aGUgZGF0YSBmb3IgdGhlIGZpZWxkcyBzcGVjaWZpZWQuXG4gICAgY29uc3QgZm9ybUZpZWxkcyA9IHRoaXMuZm9ybVZhbHVlU2VydmljZS5maWx0ZXJDdXJyZW50UGFnZUZpZWxkcyhjYXNlRmllbGRzLCBmb3JtVmFsdWUpO1xuXG4gICAgLy8gU29ydCBvdXQgdGhlIGR5bmFtaWMgbGlzdHMuXG4gICAgdGhpcy5mb3JtVmFsdWVTZXJ2aWNlLnNhbml0aXNlRHluYW1pY0xpc3RzKGNhc2VGaWVsZHMsIGZvcm1GaWVsZHMpO1xuXG4gICAgLy8gR2V0IGhvbGQgb2YgdGhlIENhc2VFdmVudERhdGEuXG4gICAgY29uc3QgY2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YSA9IHRoaXMuZm9ybVZhbHVlU2VydmljZS5zYW5pdGlzZShmb3JtRmllbGRzKSBhcyBDYXNlRXZlbnREYXRhO1xuXG4gICAgLy8gVGlkeSBpdCB1cCBiZWZvcmUgd2UgcmV0dXJuIGl0LlxuICAgIHRoaXMuZm9ybVZhbHVlU2VydmljZS5yZW1vdmVVbm5lY2Vzc2FyeUZpZWxkcyhjYXNlRXZlbnREYXRhLmRhdGEsIGNhc2VGaWVsZHMsIGNsZWFyRW1wdHksIGNsZWFyTm9uQ2FzZSxcbiAgICAgIGZyb21QcmV2aW91c1BhZ2UsIHRoaXMuY3VycmVudFBhZ2UuY2FzZV9maWVsZHMpO1xuXG4gICAgcmV0dXJuIGNhc2VFdmVudERhdGE7XG4gIH1cblxuICBwcml2YXRlIHN5bmNDYXNlRWRpdERhdGFTZXJ2aWNlKCk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5zZXRDYXNlRGV0YWlscyh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKTtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2Uuc2V0Q2FzZUV2ZW50VHJpZ2dlck5hbWUodGhpcy5ldmVudFRyaWdnZXIubmFtZSk7XG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLnNldENhc2VUaXRsZSh0aGlzLmdldENhc2VUaXRsZSgpKTtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2Uuc2V0Q2FzZUVkaXRGb3JtKHRoaXMuZWRpdEZvcm0pO1xuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jYXNlRm9ybVZhbGlkYXRpb25FcnJvcnMkLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAodmFsaWRhdGlvbkVycm9ycykgPT4gdGhpcy52YWxpZGF0aW9uRXJyb3JzID0gdmFsaWRhdGlvbkVycm9yc1xuICAgIH0pO1xuICB9XG59XG4iLCI8Y2NkLWxvYWRpbmctc3Bpbm5lciAgKm5nSWY9XCJzaG93U3Bpbm5lclwiPjwvY2NkLWxvYWRpbmctc3Bpbm5lcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50UGFnZVwiPlxuICA8aDEgKm5nSWY9XCIhY3VycmVudFBhZ2UubGFiZWxcIiBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPnt7ZXZlbnRUcmlnZ2VyLm5hbWV9fTwvaDE+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXJyZW50UGFnZS5sYWJlbFwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZ292dWstY2FwdGlvbi1sXCI+e3sgZXZlbnRUcmlnZ2VyLm5hbWV9fTwvc3Bhbj5cbiAgICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj57e2N1cnJlbnRQYWdlLmxhYmVsfX08L2gxPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48IS0tQ2FzZSBJRCBvciBUaXRsZSAtLT5cbjxkaXYgKm5nSWY9XCJnZXRDYXNlVGl0bGUoKTsgdGhlbiB0aXRsZUJsb2NrOyBlbHNlIGlkQmxvY2tcIj48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjdGl0bGVCbG9jaz5cbiAgPGNjZC1tYXJrZG93biBbY29udGVudF09XCJnZXRDYXNlVGl0bGUoKSB8IGNjZENhc2VUaXRsZTogY2FzZUZpZWxkcyA6IGVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIj48L2NjZC1tYXJrZG93bj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2lkQmxvY2s+XG4gIDxoMiAqbmdJZj1cImdldENhc2VJZCgpXCIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+I3t7IGdldENhc2VJZCgpIHwgY2NkQ2FzZVJlZmVyZW5jZSB9fTwvaDI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIEVycm9yIG1lc3NhZ2Ugc3VtbWFyeSAtLT5cbjxkaXYgKm5nSWY9XCJ2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aCA+IDBcIiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlcIiBhcmlhLWxhYmVsbGVkYnk9XCJlcnJvci1zdW1tYXJ5LXRpdGxlXCIgcm9sZT1cImFsZXJ0XCIgdGFiaW5kZXg9XCItMVwiIGRhdGEtbW9kdWxlPVwiZ292dWstZXJyb3Itc3VtbWFyeVwiPlxuICA8aDIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X190aXRsZVwiIGlkPVwiZXJyb3Itc3VtbWFyeS10aXRsZVwiPlxuICAgIFRoZXJlIGlzIGEgcHJvYmxlbVxuICA8L2gyPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCB2YWxpZGF0aW9uRXJyb3Igb2YgdmFsaWRhdGlvbkVycm9yc1wiIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiPlxuICAgIDx1bCBjbGFzcz1cImdvdnVrLWxpc3QgZ292dWstZXJyb3Itc3VtbWFyeV9fbGlzdFwiPlxuICAgICAgPGxpPlxuICAgICAgICA8YSAoY2xpY2spPVwibmF2aWdhdGVUb0Vycm9yRWxlbWVudCh2YWxpZGF0aW9uRXJyb3IuaWQpXCIgY2xhc3M9XCJ2YWxpZGF0aW9uLWVycm9yXCI+e3t2YWxpZGF0aW9uRXJyb3IubWVzc2FnZX19PC9hPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIEdlbmVyaWMgZXJyb3IgaGVhZGluZyBhbmQgZXJyb3IgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgb25seSBpZiB0aGVyZSBhcmUgbm8gc3BlY2lmaWMgY2FsbGJhY2sgZXJyb3JzIG9yIHdhcm5pbmdzLCBvciBubyBlcnJvciBkZXRhaWxzIC0tPlxuPGRpdiAqbmdJZj1cImVycm9yICYmICEoZXJyb3IuY2FsbGJhY2tFcnJvcnMgfHwgZXJyb3IuY2FsbGJhY2tXYXJuaW5ncyB8fCBlcnJvci5kZXRhaWxzKVwiIGNsYXNzPVwiZXJyb3Itc3VtbWFyeVwiXG4gICAgIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgdGFiaW5kZXg9XCItMVwiPlxuXG4gIDxoMSBjbGFzcz1cImhlYWRpbmctaDEgZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCI+XG4gICAgU29tZXRoaW5nIHdlbnQgd3JvbmdcbiAgPC9oMT5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX2JvZHlcIiBpZD1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWJvZHlcIj5cbiAgICA8cD5XZSdyZSB3b3JraW5nIHRvIGZpeCB0aGUgcHJvYmxlbS4gVHJ5IGFnYWluIHNob3J0bHkuPC9wPlxuICAgIDxwPjxhIGhyZWY9XCJnZXQtaGVscFwiIHRhcmdldD1cIl9ibGFua1wiPkNvbnRhY3QgdXM8L2E+IGlmIHlvdSdyZSBzdGlsbCBoYXZpbmcgcHJvYmxlbXMuPC9wPlxuICA8L2Rpdj5cbjwvZGl2PlxuPCEtLSBFdmVudCBlcnJvciBoZWFkaW5nIGFuZCBlcnJvciBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZCBpZiB0aGVyZSBhcmUgc3BlY2lmaWMgZXJyb3IgZGV0YWlscyAtLT5cbjxkaXYgKm5nSWY9XCJlcnJvciAmJiBlcnJvci5kZXRhaWxzXCIgY2xhc3M9XCJlcnJvci1zdW1tYXJ5XCIgcm9sZT1cInN0YXR1c1wiXG4gICAgIGFyaWEtbGFiZWxsZWRieT1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiB0YWJpbmRleD1cIi0xXCI+XG4gIDxoMyBjbGFzcz1cImhlYWRpbmctaDMgZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nLTNcIj5cbiAgICBUaGUgZXZlbnQgY291bGQgbm90IGJlIGNyZWF0ZWRcbiAgPC9oMz5cbiAgPHA+e3tlcnJvci5tZXNzYWdlfX08L3A+XG4gIDx1bCAqbmdJZj1cImVycm9yLmRldGFpbHM/LmZpZWxkX2Vycm9yc1wiIGNsYXNzPVwiZXJyb3Itc3VtbWFyeS1saXN0XCI+XG4gICAgPGxpICpuZ0Zvcj1cImxldCBmaWVsZEVycm9yIG9mIGVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzXCIgY2xhc3M9XCJjY2QtZXJyb3Itc3VtbWFyeS1saVwiPnt7ZmllbGRFcnJvci5tZXNzYWdlfX08L2xpPlxuICA8L3VsPlxuPC9kaXY+XG48Y2NkLWNhbGxiYWNrLWVycm9yc1xuICBbdHJpZ2dlclRleHRDb250aW51ZV09XCJ0cmlnZ2VyVGV4dFN0YXJ0XCJcbiAgW3RyaWdnZXJUZXh0SWdub3JlXT1cInRyaWdnZXJUZXh0SWdub3JlV2FybmluZ3NcIlxuICBbY2FsbGJhY2tFcnJvcnNTdWJqZWN0XT1cImNhbGxiYWNrRXJyb3JzU3ViamVjdFwiXG4gIChjYWxsYmFja0Vycm9yc0NvbnRleHQpPVwiY2FsbGJhY2tFcnJvcnNOb3RpZnkoJGV2ZW50KVwiPlxuPC9jY2QtY2FsbGJhY2stZXJyb3JzPlxuPGRpdiBjbGFzcz1cIndpZHRoLTUwXCI+XG4gIDxmb3JtICpuZ0lmPVwiY3VycmVudFBhZ2VcIiBjbGFzcz1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImVkaXRGb3JtXCIgKHN1Ym1pdCk9XCJzdWJtaXQoKVwiPlxuICAgIDxmaWVsZHNldCBpZD1cImZpZWxkc2V0LWNhc2UtZGF0YVwiPlxuICAgICAgPGxlZ2VuZCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+PC9sZWdlbmQ+XG4gICAgICA8IS0tIHNpbmdsZSBjb2x1bW4gLS0+XG4gICAgICA8Y2NkLWNhc2UtZWRpdC1mb3JtIGlkPSdjYXNlRWRpdEZvcm0nICpuZ0lmPVwiIWN1cnJlbnRQYWdlLmlzTXVsdGlDb2x1bW4oKVwiIFtmaWVsZHNdPVwiY3VycmVudFBhZ2UuZ2V0Q29sMUZpZWxkcygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2Nhc2VGaWVsZHNdPVwiY2FzZUZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlQ2hhbmdlU3ViamVjdF09XCJwYWdlQ2hhbmdlU3ViamVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZXNDaGFuZ2VkKT1cImFwcGx5VmFsdWVzQ2hhbmdlZCgkZXZlbnQpXCI+PC9jY2QtY2FzZS1lZGl0LWZvcm0+XG4gICAgICA8IS0tIHR3byBjb2x1bW5zIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cImN1cnJlbnRQYWdlLmlzTXVsdGlDb2x1bW4oKVwiIGNsYXNzPVwiZ3JpZC1yb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi10d28tdGhpcmRzIHJpZ2h0Qm9yZGVyU2VwYXJhdG9yXCI+XG4gICAgICAgICAgPGNjZC1jYXNlLWVkaXQtZm9ybSBpZD0nY2FzZUVkaXRGb3JtMScgW2ZpZWxkc109XCJjdXJyZW50UGFnZS5nZXRDb2wxRmllbGRzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2Nhc2VGaWVsZHNdPVwiY2FzZUZpZWxkc1wiPjwvY2NkLWNhc2UtZWRpdC1mb3JtPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1vbmUtdGhpcmRcIj5cbiAgICAgICAgICA8Y2NkLWNhc2UtZWRpdC1mb3JtIGlkPSdjYXNlRWRpdEZvcm0yJyBbZmllbGRzXT1cImN1cnJlbnRQYWdlLmdldENvbDJGaWVsZHMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkc109XCJjYXNlRmllbGRzXCI+PC9jY2QtY2FzZS1lZGl0LWZvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9maWVsZHNldD5cblxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtcmVsYXRlZFwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5XCIgdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCIhKGhhc1ByZXZpb3VzUGFnZSQgfCBhc3luYylcIiAoY2xpY2spPVwidG9QcmV2aW91c1BhZ2UoKVwiPlxuICAgICAgICBQcmV2aW91c1xuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uXCIgdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJzdWJtaXR0aW5nKClcIj57e3RyaWdnZXJUZXh0fX08L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxwIGNsYXNzPVwiY2FuY2VsXCI+PGEgKGNsaWNrKT1cImNhbmNlbCgpXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiPnt7Z2V0Q2FuY2VsVGV4dCgpfX08L2E+PC9wPlxuXG4gIDwvZm9ybT5cbjwvZGl2PlxuIl19
@@ -9,17 +9,20 @@ import { CaseEventTrigger, Draft } from '../../../domain';
9
9
  import { FieldsUtils, HttpErrorService, HttpService, LoadingService, OrderService, SessionStorageService } from '../../../services';
10
10
  import { CaseAccessUtils } from '../case-access-utils';
11
11
  import { WizardPageFieldToCaseFieldMapper } from './wizard-page-field-to-case-field.mapper';
12
+ import { WorkAllocationService } from './work-allocation.service';
12
13
  import * as i0 from "@angular/core";
13
14
  import * as i1 from "../../../services";
14
15
  import * as i2 from "../../../../app.config";
15
16
  import * as i3 from "./wizard-page-field-to-case-field.mapper";
17
+ import * as i4 from "./work-allocation.service";
16
18
  export class CasesService {
17
- constructor(http, appConfig, orderService, errorService, wizardPageFieldToCaseFieldMapper, loadingService, sessionStorageService) {
19
+ constructor(http, appConfig, orderService, errorService, wizardPageFieldToCaseFieldMapper, workAllocationService, loadingService, sessionStorageService) {
18
20
  this.http = http;
19
21
  this.appConfig = appConfig;
20
22
  this.orderService = orderService;
21
23
  this.errorService = errorService;
22
24
  this.wizardPageFieldToCaseFieldMapper = wizardPageFieldToCaseFieldMapper;
25
+ this.workAllocationService = workAllocationService;
23
26
  this.loadingService = loadingService;
24
27
  this.sessionStorageService = sessionStorageService;
25
28
  this.get = this.getCaseView;
@@ -245,9 +248,9 @@ CasesService.V2_MEDIATYPE_CASE_DATA_VALIDATE = 'application/vnd.uk.gov.hmcts.ccd
245
248
  CasesService.V2_MEDIATYPE_CREATE_EVENT = 'application/vnd.uk.gov.hmcts.ccd-data-store-api.create-event.v2+json;charset=UTF-8';
246
249
  CasesService.V2_MEDIATYPE_CREATE_CASE = 'application/vnd.uk.gov.hmcts.ccd-data-store-api.create-case.v2+json;charset=UTF-8';
247
250
  CasesService.PUI_CASE_MANAGER = 'pui-case-manager';
248
- CasesService.ɵfac = function CasesService_Factory(t) { return new (t || CasesService)(i0.ɵɵinject(i1.HttpService), i0.ɵɵinject(i2.AbstractAppConfig), i0.ɵɵinject(i1.OrderService), i0.ɵɵinject(i1.HttpErrorService), i0.ɵɵinject(i3.WizardPageFieldToCaseFieldMapper), i0.ɵɵinject(i1.LoadingService), i0.ɵɵinject(i1.SessionStorageService)); };
251
+ CasesService.ɵfac = function CasesService_Factory(t) { return new (t || CasesService)(i0.ɵɵinject(i1.HttpService), i0.ɵɵinject(i2.AbstractAppConfig), i0.ɵɵinject(i1.OrderService), i0.ɵɵinject(i1.HttpErrorService), i0.ɵɵinject(i3.WizardPageFieldToCaseFieldMapper), i0.ɵɵinject(i4.WorkAllocationService), i0.ɵɵinject(i1.LoadingService), i0.ɵɵinject(i1.SessionStorageService)); };
249
252
  CasesService.ɵprov = i0.ɵɵdefineInjectable({ token: CasesService, factory: CasesService.ɵfac });
250
253
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CasesService, [{
251
254
  type: Injectable
252
- }], function () { return [{ type: i1.HttpService }, { type: i2.AbstractAppConfig }, { type: i1.OrderService }, { type: i1.HttpErrorService }, { type: i3.WizardPageFieldToCaseFieldMapper }, { type: i1.LoadingService }, { type: i1.SessionStorageService }]; }, null); })();
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9zZXJ2aWNlcy9jYXNlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUVMLGdCQUFnQixFQUdTLEtBQUssRUFJL0IsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEksT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXZELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7OztBQUk1RixNQUFNLE9BQU8sWUFBWTtJQTBDdkIsWUFDVSxJQUFpQixFQUNqQixTQUE0QixFQUM1QixZQUEwQixFQUMxQixZQUE4QixFQUM5QixnQ0FBa0UsRUFDbEUsY0FBOEIsRUFDckIscUJBQTRDO1FBTnJE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QVk7b0RBQVosWUFBWSxXQUFaLFlBQVk7dUZBQVosWUFBWTtjQUR4QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBYnN0cmFjdEFwcENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL2FwcC5jb25maWcnO1xuaW1wb3J0IHsgU2hvd0NvbmRpdGlvbiB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHtcbiAgQ2FzZUV2ZW50RGF0YSxcbiAgQ2FzZUV2ZW50VHJpZ2dlcixcbiAgQ2FzZVByaW50RG9jdW1lbnQsXG4gIENhc2VWaWV3LFxuICBDaGFsbGVuZ2VkQWNjZXNzUmVxdWVzdCwgRHJhZnQsXG4gIFJvbGVBc3NpZ25tZW50UmVzcG9uc2UsXG4gIFJvbGVDYXRlZ29yeSxcbiAgUm9sZVJlcXVlc3RQYXlsb2FkLCBTcGVjaWZpY0FjY2Vzc1JlcXVlc3Rcbn0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IFVzZXJJbmZvIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL3VzZXIvdXNlci1pbmZvLm1vZGVsJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzLCBIdHRwRXJyb3JTZXJ2aWNlLCBIdHRwU2VydmljZSwgTG9hZGluZ1NlcnZpY2UsIE9yZGVyU2VydmljZSwgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgTGlua0Nhc2VSZWFzb24sIExpbmtlZENhc2VzUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9wYWxldHRlL2xpbmtlZC1jYXNlcy9kb21haW4vbGlua2VkLWNhc2VzLm1vZGVsJztcbmltcG9ydCB7IENhc2VBY2Nlc3NVdGlscyB9IGZyb20gJy4uL2Nhc2UtYWNjZXNzLXV0aWxzJztcbmltcG9ydCB7IFdpemFyZFBhZ2UgfSBmcm9tICcuLi9kb21haW4nO1xuaW1wb3J0IHsgV2l6YXJkUGFnZUZpZWxkVG9DYXNlRmllbGRNYXBwZXIgfSBmcm9tICcuL3dpemFyZC1wYWdlLWZpZWxkLXRvLWNhc2UtZmllbGQubWFwcGVyJztcbmltcG9ydCB7IFdvcmtBbGxvY2F0aW9uU2VydmljZSB9IGZyb20gJy4vd29yay1hbGxvY2F0aW9uLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2FzZXNTZXJ2aWNlIHtcbiAgLy8gSW50ZXJuYWwgKFVJKSBBUElcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBWMl9NRURJQVRZUEVfQ0FTRV9WSUVXID0gJ2FwcGxpY2F0aW9uL3ZuZC51ay5nb3YuaG1jdHMuY2NkLWRhdGEtc3RvcmUtYXBpLnVpLWNhc2Utdmlldy52Mitqc29uJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBWMl9NRURJQVRZUEVfU1RBUlRfQ0FTRV9UUklHR0VSID1cbiAgICAnYXBwbGljYXRpb24vdm5kLnVrLmdvdi5obWN0cy5jY2QtZGF0YS1zdG9yZS1hcGkudWktc3RhcnQtY2FzZS10cmlnZ2VyLnYyK2pzb247Y2hhcnNldD1VVEYtOCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVjJfTUVESUFUWVBFX1NUQVJUX0VWRU5UX1RSSUdHRVIgPVxuICAgICdhcHBsaWNhdGlvbi92bmQudWsuZ292LmhtY3RzLmNjZC1kYXRhLXN0b3JlLWFwaS51aS1zdGFydC1ldmVudC10cmlnZ2VyLnYyK2pzb247Y2hhcnNldD1VVEYtOCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVjJfTUVESUFUWVBFX1NUQVJUX0RSQUZUX1RSSUdHRVIgPVxuICAgICdhcHBsaWNhdGlvbi92bmQudWsuZ292LmhtY3RzLmNjZC1kYXRhLXN0b3JlLWFwaS51aS1zdGFydC1kcmFmdC10cmlnZ2VyLnYyK2pzb247Y2hhcnNldD1VVEYtOCc7XG5cbiAgLy8gRXh0ZXJuYWwgKERhdGEgU3RvcmUpIEFQSVxuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVjJfTUVESUFUWVBFX0NBU0VfRE9DVU1FTlRTID1cbiAgICAnYXBwbGljYXRpb24vdm5kLnVrLmdvdi5obWN0cy5jY2QtZGF0YS1zdG9yZS1hcGkuY2FzZS1kb2N1bWVudHMudjIranNvbjtjaGFyc2V0PVVURi04JztcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFYyX01FRElBVFlQRV9DQVNFX0RBVEFfVkFMSURBVEUgPVxuICAgICdhcHBsaWNhdGlvbi92bmQudWsuZ292LmhtY3RzLmNjZC1kYXRhLXN0b3JlLWFwaS5jYXNlLWRhdGEtdmFsaWRhdGUudjIranNvbjtjaGFyc2V0PVVURi04JztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBWMl9NRURJQVRZUEVfQ1JFQVRFX0VWRU5UID1cbiAgICAnYXBwbGljYXRpb24vdm5kLnVrLmdvdi5obWN0cy5jY2QtZGF0YS1zdG9yZS1hcGkuY3JlYXRlLWV2ZW50LnYyK2pzb247Y2hhcnNldD1VVEYtOCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVjJfTUVESUFUWVBFX0NSRUFURV9DQVNFID1cbiAgICAnYXBwbGljYXRpb24vdm5kLnVrLmdvdi5obWN0cy5jY2QtZGF0YS1zdG9yZS1hcGkuY3JlYXRlLWNhc2UudjIranNvbjtjaGFyc2V0PVVURi04JztcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBVSV9DQVNFX01BTkFHRVIgPSAncHVpLWNhc2UtbWFuYWdlcic7XG5cbiAgZ2V0ID0gdGhpcy5nZXRDYXNlVmlldztcblxuICBwdWJsaWMgc3RhdGljIHVwZGF0ZUNoYWxsZW5nZWRBY2Nlc3NSZXF1ZXN0QXR0cmlidXRlcyhodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBjYXNlSWQ6IHN0cmluZywgYXR0cmlidXRlc1RvVXBkYXRlOiB7IFt4OiBzdHJpbmddOiBhbnkgfSlcbiAgICA6IE9ic2VydmFibGU8Um9sZUFzc2lnbm1lbnRSZXNwb25zZT4ge1xuICAgIHJldHVybiBodHRwQ2xpZW50LnBvc3Q8Um9sZUFzc2lnbm1lbnRSZXNwb25zZT4oYC9hcGkvY2hhbGxlbmdlZC1hY2Nlc3MtcmVxdWVzdC91cGRhdGUtYXR0cmlidXRlc2AsIHtcbiAgICAgIGNhc2VJZCxcbiAgICAgIGF0dHJpYnV0ZXNUb1VwZGF0ZVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB1cGRhdGVTcGVjaWZpY0FjY2Vzc1JlcXVlc3RBdHRyaWJ1dGVzKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIGNhc2VJZDogc3RyaW5nLCBhdHRyaWJ1dGVzVG9VcGRhdGU6IHsgW3g6IHN0cmluZ106IGFueSB9KVxuICAgIDogT2JzZXJ2YWJsZTxSb2xlQXNzaWdubWVudFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGh0dHBDbGllbnQucG9zdDxSb2xlQXNzaWdubWVudFJlc3BvbnNlPihgL2FwaS9zcGVjaWZpYy1hY2Nlc3MtcmVxdWVzdC91cGRhdGUtYXR0cmlidXRlc2AsIHtcbiAgICAgIGNhc2VJZCxcbiAgICAgIGF0dHJpYnV0ZXNUb1VwZGF0ZVxuICAgIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwU2VydmljZSxcbiAgICBwcml2YXRlIGFwcENvbmZpZzogQWJzdHJhY3RBcHBDb25maWcsXG4gICAgcHJpdmF0ZSBvcmRlclNlcnZpY2U6IE9yZGVyU2VydmljZSxcbiAgICBwcml2YXRlIGVycm9yU2VydmljZTogSHR0cEVycm9yU2VydmljZSxcbiAgICBwcml2YXRlIHdpemFyZFBhZ2VGaWVsZFRvQ2FzZUZpZWxkTWFwcGVyOiBXaXphcmRQYWdlRmllbGRUb0Nhc2VGaWVsZE1hcHBlcixcbiAgICBwcml2YXRlIGxvYWRpbmdTZXJ2aWNlOiBMb2FkaW5nU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgZ2V0Q2FzZVZpZXcoanVyaXNkaWN0aW9uSWQ6IHN0cmluZyxcbiAgICBjYXNlVHlwZUlkOiBzdHJpbmcsXG4gICAgY2FzZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENhc2VWaWV3PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5hcHBDb25maWcuZ2V0QXBpVXJsKClcbiAgICAgICsgYC9jYXNld29ya2Vycy86dWlkYFxuICAgICAgKyBgL2p1cmlzZGljdGlvbnMvJHtqdXJpc2RpY3Rpb25JZH1gXG4gICAgICArIGAvY2FzZS10eXBlcy8ke2Nhc2VUeXBlSWR9YFxuICAgICAgKyBgL2Nhc2VzLyR7Y2FzZUlkfWA7XG5cbiAgICBjb25zdCBsb2FkaW5nVG9rZW4gPSB0aGlzLmxvYWRpbmdTZXJ2aWNlLnJlZ2lzdGVyKCk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldCh1cmwpXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMubG9hZGluZ1NlcnZpY2UudW5yZWdpc3Rlcihsb2FkaW5nVG9rZW4pKVxuICAgICAgKTtcbiAgfVxuXG4gIGdldENhc2VWaWV3VjIoY2FzZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENhc2VWaWV3PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcHBDb25maWcuZ2V0Q2FzZURhdGFVcmwoKX0vaW50ZXJuYWwvY2FzZXMvJHtjYXNlSWR9YDtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcbiAgICAgIC5zZXQoJ2V4cGVyaW1lbnRhbCcsICd0cnVlJylcbiAgICAgIC5zZXQoJ0FjY2VwdCcsIENhc2VzU2VydmljZS5WMl9NRURJQVRZUEVfQ0FTRV9WSUVXKVxuICAgICAgLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcblxuICAgIGNvbnN0IGxvYWRpbmdUb2tlbiA9IHRoaXMubG9hZGluZ1NlcnZpY2UucmVnaXN0ZXIoKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQodXJsLCB7IGhlYWRlcnMsIG9ic2VydmU6ICdib2R5JyB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JTZXJ2aWNlLnNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmxvYWRpbmdTZXJ2aWNlLnVucmVnaXN0ZXIobG9hZGluZ1Rva2VuKSlcbiAgICAgICk7XG4gIH1cblxuICBnZXRFdmVudFRyaWdnZXIoY2FzZVR5cGVJZDogc3RyaW5nLFxuICAgIGV2ZW50VHJpZ2dlcklkOiBzdHJpbmcsXG4gICAgY2FzZUlkPzogc3RyaW5nLFxuICAgIGlnbm9yZVdhcm5pbmc/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPENhc2VFdmVudFRyaWdnZXI+IHtcbiAgICBpZ25vcmVXYXJuaW5nID0gdW5kZWZpbmVkICE9PSBpZ25vcmVXYXJuaW5nID8gaWdub3JlV2FybmluZyA6ICdmYWxzZSc7XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkRXZlbnRUcmlnZ2VyVXJsKGNhc2VUeXBlSWQsIGV2ZW50VHJpZ2dlcklkLCBjYXNlSWQsIGlnbm9yZVdhcm5pbmcpO1xuXG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnZXhwZXJpbWVudGFsJywgJ3RydWUnKVxuICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcblxuICAgIGlmIChEcmFmdC5pc0RyYWZ0KGNhc2VJZCkpIHtcbiAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgQ2FzZXNTZXJ2aWNlLlYyX01FRElBVFlQRV9TVEFSVF9EUkFGVF9UUklHR0VSKTtcbiAgICB9IGVsc2UgaWYgKGNhc2VJZCAhPT0gdW5kZWZpbmVkICYmIGNhc2VJZCAhPT0gbnVsbCkge1xuICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBDYXNlc1NlcnZpY2UuVjJfTUVESUFUWVBFX1NUQVJUX0VWRU5UX1RSSUdHRVIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0FjY2VwdCcsIENhc2VzU2VydmljZS5WMl9NRURJQVRZUEVfU1RBUlRfQ0FTRV9UUklHR0VSKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KHVybCwgeyBoZWFkZXJzLCBvYnNlcnZlOiAnYm9keScgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoYm9keSA9PiB7XG4gICAgICAgICAgcmV0dXJuIEZpZWxkc1V0aWxzLmhhbmRsZU5lc3RlZER5bmFtaWNMaXN0cyhib2R5KTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JTZXJ2aWNlLnNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKHApID0+IHBsYWluVG9DbGFzcyhDYXNlRXZlbnRUcmlnZ2VyLCBwKSksXG4gICAgICAgIHRhcChldmVudFRyaWdnZXIgPT4gdGhpcy5pbml0aWFsaXNlRXZlbnRUcmlnZ2VyKGV2ZW50VHJpZ2dlcikpXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZUV2ZW50KGNhc2VEZXRhaWxzOiBDYXNlVmlldywgZXZlbnREYXRhOiBDYXNlRXZlbnREYXRhKTogT2JzZXJ2YWJsZTx7fT4ge1xuICAgIGNvbnN0IGNhc2VJZCA9IGNhc2VEZXRhaWxzLmNhc2VfaWQ7XG4gICAgY29uc3QgdXJsID0gdGhpcy5hcHBDb25maWcuZ2V0Q2FzZURhdGFVcmwoKSArIGAvY2FzZXMvJHtjYXNlSWR9L2V2ZW50c2A7XG5cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcbiAgICAgIC5zZXQoJ2V4cGVyaW1lbnRhbCcsICd0cnVlJylcbiAgICAgIC5zZXQoJ0FjY2VwdCcsIENhc2VzU2VydmljZS5WMl9NRURJQVRZUEVfQ1JFQVRFX0VWRU5UKVxuICAgICAgLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KHVybCwgZXZlbnREYXRhLCB7IGhlYWRlcnMsIG9ic2VydmU6ICdib2R5JyB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JTZXJ2aWNlLnNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgdmFsaWRhdGVDYXNlKGN0aWQ6IHN0cmluZywgZXZlbnREYXRhOiBDYXNlRXZlbnREYXRhLCBwYWdlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgY29uc3QgcGFnZUlkU3RyaW5nID0gcGFnZUlkID8gJz9wYWdlSWQ9JyArIHBhZ2VJZCA6ICcnO1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYXBwQ29uZmlnLmdldENhc2VEYXRhVXJsKClcbiAgICAgICsgYC9jYXNlLXR5cGVzLyR7Y3RpZH0vdmFsaWRhdGUke3BhZ2VJZFN0cmluZ31gO1xuXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpXG4gICAgICAuc2V0KCdleHBlcmltZW50YWwnLCAndHJ1ZScpXG4gICAgICAuc2V0KCdBY2NlcHQnLCBDYXNlc1NlcnZpY2UuVjJfTUVESUFUWVBFX0NBU0VfREFUQV9WQUxJREFURSlcbiAgICAgIC5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdCh1cmwsIGV2ZW50RGF0YSwgeyBoZWFkZXJzLCBvYnNlcnZlOiAnYm9keScgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yU2VydmljZS5zZXRFcnJvcihlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGNyZWF0ZUNhc2UoY3RpZDogc3RyaW5nLCBldmVudERhdGE6IENhc2VFdmVudERhdGEpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xuICAgIGxldCBpZ25vcmVXYXJuaW5nID0gJ2ZhbHNlJztcblxuICAgIGlmIChldmVudERhdGEuaWdub3JlX3dhcm5pbmcpIHtcbiAgICAgIGlnbm9yZVdhcm5pbmcgPSAndHJ1ZSc7XG4gICAgfVxuICAgIGNvbnN0IHVybCA9IHRoaXMuYXBwQ29uZmlnLmdldENhc2VEYXRhVXJsKClcbiAgICAgICsgYC9jYXNlLXR5cGVzLyR7Y3RpZH0vY2FzZXM/aWdub3JlLXdhcm5pbmc9JHtpZ25vcmVXYXJuaW5nfWA7XG5cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcbiAgICAgIC5zZXQoJ2V4cGVyaW1lbnRhbCcsICd0cnVlJylcbiAgICAgIC5zZXQoJ0FjY2VwdCcsIENhc2VzU2VydmljZS5WMl9NRURJQVRZUEVfQ1JFQVRFX0NBU0UpXG4gICAgICAuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QodXJsLCBldmVudERhdGEsIHsgaGVhZGVycywgb2JzZXJ2ZTogJ2JvZHknIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBnZXRQcmludERvY3VtZW50cyhjYXNlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q2FzZVByaW50RG9jdW1lbnRbXT4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYXBwQ29uZmlnLmdldENhc2VEYXRhVXJsKClcbiAgICAgICsgYC9jYXNlcy8ke2Nhc2VJZH1gXG4gICAgICArIGAvZG9jdW1lbnRzYDtcblxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgICAgLnNldCgnZXhwZXJpbWVudGFsJywgJ3RydWUnKVxuICAgICAgLnNldCgnQWNjZXB0JywgQ2FzZXNTZXJ2aWNlLlYyX01FRElBVFlQRV9DQVNFX0RPQ1VNRU5UUylcbiAgICAgIC5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KHVybCwgeyBoZWFkZXJzLCBvYnNlcnZlOiAnYm9keScgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoYm9keSA9PiBib2R5LmRvY3VtZW50UmVzb3VyY2VzKSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRXZlbnRUcmlnZ2VyVXJsKGNhc2VUeXBlSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFRyaWdnZXJJZDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VJZD86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVXYXJuaW5nPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgdXJsID0gdGhpcy5hcHBDb25maWcuZ2V0Q2FzZURhdGFVcmwoKSArIGAvaW50ZXJuYWxgO1xuXG4gICAgaWYgKERyYWZ0LmlzRHJhZnQoY2FzZUlkKSkge1xuICAgICAgdXJsICs9IGAvZHJhZnRzLyR7Y2FzZUlkfWBcbiAgICAgICAgKyBgL2V2ZW50LXRyaWdnZXJgXG4gICAgICAgICsgYD9pZ25vcmUtd2FybmluZz0ke2lnbm9yZVdhcm5pbmd9YDtcbiAgICB9IGVsc2UgaWYgKGNhc2VUeXBlSWQgPT09IHVuZGVmaW5lZCB8fCBjYXNlVHlwZUlkID09PSBudWxsKSB7XG4gICAgICB1cmwgKz0gYC9jYXNlcy8ke2Nhc2VJZH1gXG4gICAgICAgICsgYC9ldmVudC10cmlnZ2Vycy8ke2V2ZW50VHJpZ2dlcklkfWBcbiAgICAgICAgKyBgP2lnbm9yZS13YXJuaW5nPSR7aWdub3JlV2FybmluZ31gO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwgKz0gYC9jYXNlLXR5cGVzLyR7Y2FzZVR5cGVJZH1gXG4gICAgICAgICsgYC9ldmVudC10cmlnZ2Vycy8ke2V2ZW50VHJpZ2dlcklkfWBcbiAgICAgICAgKyBgP2lnbm9yZS13YXJuaW5nPSR7aWdub3JlV2FybmluZ31gO1xuICAgIH1cblxuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpc2VFdmVudFRyaWdnZXIoZXZlbnRUcmlnZ2VyOiBDYXNlRXZlbnRUcmlnZ2VyKSB7XG4gICAgaWYgKCFldmVudFRyaWdnZXIud2l6YXJkX3BhZ2VzKSB7XG4gICAgICBldmVudFRyaWdnZXIud2l6YXJkX3BhZ2VzID0gW107XG4gICAgfVxuXG4gICAgZXZlbnRUcmlnZ2VyLndpemFyZF9wYWdlcy5mb3JFYWNoKCh3aXphcmRQYWdlOiBXaXphcmRQYWdlKSA9PiB7XG4gICAgICB3aXphcmRQYWdlLnBhcnNlZFNob3dDb25kaXRpb24gPSBTaG93Q29uZGl0aW9uLmdldEluc3RhbmNlKHdpemFyZFBhZ2Uuc2hvd19jb25kaXRpb24pO1xuICAgICAgd2l6YXJkUGFnZS5jYXNlX2ZpZWxkcyA9IHRoaXMub3JkZXJTZXJ2aWNlLnNvcnQoXG4gICAgICAgIHRoaXMud2l6YXJkUGFnZUZpZWxkVG9DYXNlRmllbGRNYXBwZXIubWFwQWxsKHdpemFyZFBhZ2Uud2l6YXJkX3BhZ2VfZmllbGRzLCBldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qXG4gIENoZWNrcyBpZiB0aGUgdXNlciBoYXMgcm9sZSBvZiBwdWktY2FzZS1tYW5hZ2VyIGFuZCByZXR1cm5zIHRydWUgb3IgZmFsc2VcbiAgKi9cbiAgcHJpdmF0ZSBpc1B1aUNhc2VNYW5hZ2VyKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHVzZXJJbmZvU3RyID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgndXNlckRldGFpbHMnKTtcbiAgICBpZiAodXNlckluZm9TdHIpIHtcbiAgICAgIGNvbnN0IHVzZXJJbmZvOiBVc2VySW5mbyA9IEpTT04ucGFyc2UodXNlckluZm9TdHIpO1xuICAgICAgcmV0dXJuIHVzZXJJbmZvICYmIHVzZXJJbmZvLnJvbGVzICYmICh1c2VySW5mby5yb2xlcy5pbmRleE9mKENhc2VzU2VydmljZS5QVUlfQ0FTRV9NQU5BR0VSKSAhPT0gLTEpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291cnRPckhlYXJpbmdDZW50cmVOYW1lKGxvY2F0aW9uSWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvYXBpL2xvY2F0aW9ucy9nZXRMb2NhdGlvbnNCeUlkYCwgeyBsb2NhdGlvbnMgOiBbeyBsb2NhdGlvbklkIH1dfSk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQ2hhbGxlbmdlZEFjY2Vzc1JlcXVlc3QoY2FzZUlkOiBzdHJpbmcsIHJlcXVlc3Q6IENoYWxsZW5nZWRBY2Nlc3NSZXF1ZXN0KTogT2JzZXJ2YWJsZTxSb2xlQXNzaWdubWVudFJlc3BvbnNlPiB7XG4gICAgLy8gQXNzaWdubWVudCBBUEkgZW5kcG9pbnRcbiAgICBjb25zdCB1c2VySW5mb1N0ciA9IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ3VzZXJEZXRhaWxzJyk7XG5cbiAgICBjb25zdCBjYW1VdGlscyA9IG5ldyBDYXNlQWNjZXNzVXRpbHMoKTtcbiAgICBsZXQgdXNlckluZm86IFVzZXJJbmZvO1xuICAgIGlmICh1c2VySW5mb1N0cikge1xuICAgICAgdXNlckluZm8gPSBKU09OLnBhcnNlKHVzZXJJbmZvU3RyKTtcbiAgICB9XG5cbiAgICBjb25zdCByb2xlQ2F0ZWdvcnk6IFJvbGVDYXRlZ29yeSA9IHVzZXJJbmZvLnJvbGVDYXRlZ29yeSB8fCBjYW1VdGlscy5nZXRNYXBwZWRSb2xlQ2F0ZWdvcnkodXNlckluZm8ucm9sZXMsIHVzZXJJbmZvLnJvbGVDYXRlZ29yaWVzKTtcbiAgICBjb25zdCByb2xlTmFtZSA9IGNhbVV0aWxzLmdldEFNUm9sZU5hbWUoJ2NoYWxsZW5nZWQnLCByb2xlQ2F0ZWdvcnkpO1xuICAgIGNvbnN0IGJlZ2luVGltZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZW5kVGltZSA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0VVRDSG91cnMoMjMsIDU5LCA1OSwgOTk5KSk7XG4gICAgY29uc3QgaWQgPSB1c2VySW5mby5pZCA/IHVzZXJJbmZvLmlkIDogdXNlckluZm8udWlkO1xuICAgIGNvbnN0IGlzTmV3ID0gdHJ1ZTtcblxuICAgIGNvbnN0IHBheWxvYWQ6IFJvbGVSZXF1ZXN0UGF5bG9hZCA9IGNhbVV0aWxzLmdldEFNUGF5bG9hZChpZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGVOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlQ2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDSEFMTEVOR0VEJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpblRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTmV3XG4gICAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvYXBpL2NoYWxsZW5nZWQtYWNjZXNzLXJlcXVlc3RgLCBwYXlsb2FkKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVTcGVjaWZpY0FjY2Vzc1JlcXVlc3QoY2FzZUlkOiBzdHJpbmcsIHNhcjogU3BlY2lmaWNBY2Nlc3NSZXF1ZXN0KTogT2JzZXJ2YWJsZTxSb2xlQXNzaWdubWVudFJlc3BvbnNlPiB7XG4gICAgLy8gQXNzaWdubWVudCBBUEkgZW5kcG9pbnRcbiAgICBjb25zdCB1c2VySW5mb1N0ciA9IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ3VzZXJEZXRhaWxzJyk7XG5cbiAgICBjb25zdCBjYW1VdGlscyA9IG5ldyBDYXNlQWNjZXNzVXRpbHMoKTtcbiAgICBsZXQgdXNlckluZm86IFVzZXJJbmZvO1xuICAgIGlmICh1c2VySW5mb1N0cikge1xuICAgICAgdXNlckluZm8gPSBKU09OLnBhcnNlKHVzZXJJbmZvU3RyKTtcbiAgICB9XG5cbiAgICBjb25zdCByb2xlQ2F0ZWdvcnk6IFJvbGVDYXRlZ29yeSA9IHVzZXJJbmZvLnJvbGVDYXRlZ29yeSB8fCBjYW1VdGlscy5nZXRNYXBwZWRSb2xlQ2F0ZWdvcnkodXNlckluZm8ucm9sZXMsIHVzZXJJbmZvLnJvbGVDYXRlZ29yaWVzKTtcbiAgICBjb25zdCByb2xlTmFtZSA9IGNhbVV0aWxzLmdldEFNUm9sZU5hbWUoJ3NwZWNpZmljJywgcm9sZUNhdGVnb3J5KTtcbiAgICBjb25zdCBpZCA9IHVzZXJJbmZvLmlkID8gdXNlckluZm8uaWQgOiB1c2VySW5mby51aWQ7XG4gICAgY29uc3QgcGF5bG9hZDogUm9sZVJlcXVlc3RQYXlsb2FkID0gY2FtVXRpbHMuZ2V0QU1QYXlsb2FkKG51bGwsIGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlTmFtZSwgcm9sZUNhdGVnb3J5LCAnU1BFQ0lGSUMnLCBjYXNlSWQsIHNhciwgbnVsbCwgbnVsbCwgdHJ1ZSk7XG5cbiAgICBwYXlsb2FkLnJvbGVSZXF1ZXN0ID0ge1xuICAgICAgLi4ucGF5bG9hZC5yb2xlUmVxdWVzdCxcbiAgICAgIHByb2Nlc3M6ICdzcGVjaWZpYy1hY2Nlc3MnLFxuICAgICAgcmVwbGFjZUV4aXN0aW5nOiB0cnVlLFxuICAgICAgYXNzaWduZXJJZDogcGF5bG9hZC5yZXF1ZXN0ZWRSb2xlc1swXS5hY3RvcklkLFxuICAgICAgcmVmZXJlbmNlOiBgJHtjYXNlSWR9LyR7cm9sZU5hbWV9LyR7cGF5bG9hZC5yZXF1ZXN0ZWRSb2xlc1swXS5hY3RvcklkfWBcbiAgICB9O1xuXG4gICAgcGF5bG9hZC5yZXF1ZXN0ZWRSb2xlc1swXSA9IHtcbiAgICAgIC4uLnBheWxvYWQucmVxdWVzdGVkUm9sZXNbMF0sXG4gICAgICByb2xlTmFtZTogJ3NwZWNpZmljLWFjY2Vzcy1yZXF1ZXN0ZWQnLFxuICAgICAgcm9sZUNhdGVnb3J5LFxuICAgICAgY2xhc3NpZmljYXRpb246ICdQUklWQVRFJyxcbiAgICAgIGVuZFRpbWU6IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0RGF0ZShuZXcgRGF0ZSgpLmdldERhdGUoKSArIDMwKSksXG4gICAgICBiZWdpblRpbWU6IG51bGwsXG4gICAgICBncmFudFR5cGU6ICdCQVNJQycsXG4gICAgICByZWFkT25seTogdHJ1ZVxuICAgIH07XG5cbiAgICBwYXlsb2FkLnJlcXVlc3RlZFJvbGVzWzBdLmF0dHJpYnV0ZXMgPSB7XG4gICAgICAuLi5wYXlsb2FkLnJlcXVlc3RlZFJvbGVzWzBdLmF0dHJpYnV0ZXMsXG4gICAgICByZXF1ZXN0ZWRSb2xlOiByb2xlTmFtZSxcbiAgICAgIHNwZWNpZmljQWNjZXNzUmVhc29uOiBzYXIuc3BlY2lmaWNSZWFzb25cbiAgICB9XG5cbiAgICBwYXlsb2FkLnJlcXVlc3RlZFJvbGVzWzBdLm5vdGVzWzBdID0ge1xuICAgICAgLi4ucGF5bG9hZC5yZXF1ZXN0ZWRSb2xlc1swXS5ub3Rlc1swXSxcbiAgICAgIHVzZXJJZDogcGF5bG9hZC5yZXF1ZXN0ZWRSb2xlc1swXS5hY3RvcklkXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgYC9hcGkvc3BlY2lmaWMtYWNjZXNzLXJlcXVlc3RgLFxuICAgICAgcGF5bG9hZFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGlua2VkQ2FzZXMoY2FzZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPExpbmtlZENhc2VzUmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwcENvbmZpZy5nZXRDYXNlRGF0YVN0b3JlQXBpVXJsKCl9LyR7Y2FzZUlkfWBcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgLmdldCh1cmwpXG4gICAgLnBpcGUoY2F0Y2hFcnJvcihlcnJvciA9PiB0aHJvd0Vycm9yKGVycm9yKSkpO1xuICB9XG59XG4iXX0=
255
+ }], function () { return [{ type: i1.HttpService }, { type: i2.AbstractAppConfig }, { type: i1.OrderService }, { type: i1.HttpErrorService }, { type: i3.WizardPageFieldToCaseFieldMapper }, { type: i4.WorkAllocationService }, { type: i1.LoadingService }, { type: i1.SessionStorageService }]; }, null); })();
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9zZXJ2aWNlcy9jYXNlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUVMLGdCQUFnQixFQUdTLEtBQUssRUFJL0IsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEksT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXZELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7QUFHbEUsTUFBTSxPQUFPLFlBQVk7SUEwQ3ZCLFlBQ1UsSUFBaUIsRUFDakIsU0FBNEIsRUFDNUIsWUFBMEIsRUFDMUIsWUFB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QixHQUM5QyxvRkFBb0YsQ0FBQztBQUNoRSxxQ0FBd0IsR0FDN0MsbUZBQW1GLENBQUM7QUFFL0QsNkJBQWdCLEdBQUcsa0JBQWtCLENBQUM7d0VBdEJsRCxZQUFZO29EQUFaLFlBQVksV0FBWixZQUFZO3VGQUFaLFlBQVk7Y0FEeEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWJzdHJhY3RBcHBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9hcHAuY29uZmlnJztcbmltcG9ydCB7IFNob3dDb25kaXRpb24gfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7XG4gIENhc2VFdmVudERhdGEsXG4gIENhc2VFdmVudFRyaWdnZXIsXG4gIENhc2VQcmludERvY3VtZW50LFxuICBDYXNlVmlldyxcbiAgQ2hhbGxlbmdlZEFjY2Vzc1JlcXVlc3QsIERyYWZ0LFxuICBSb2xlQXNzaWdubWVudFJlc3BvbnNlLFxuICBSb2xlQ2F0ZWdvcnksXG4gIFJvbGVSZXF1ZXN0UGF5bG9hZCwgU3BlY2lmaWNBY2Nlc3NSZXF1ZXN0XG59IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBVc2VySW5mbyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi91c2VyL3VzZXItaW5mby5tb2RlbCc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscywgSHR0cEVycm9yU2VydmljZSwgSHR0cFNlcnZpY2UsIExvYWRpbmdTZXJ2aWNlLCBPcmRlclNlcnZpY2UsIFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IExpbmtDYXNlUmVhc29uLCBMaW5rZWRDYXNlc1Jlc3BvbnNlIH0gZnJvbSAnLi4vLi4vcGFsZXR0ZS9saW5rZWQtY2FzZXMvZG9tYWluL2xpbmtlZC1jYXNlcy5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlQWNjZXNzVXRpbHMgfSBmcm9tICcuLi9jYXNlLWFjY2Vzcy11dGlscyc7XG5pbXBvcnQgeyBXaXphcmRQYWdlIH0gZnJvbSAnLi4vZG9tYWluJztcbmltcG9ydCB7IFdpemFyZFBhZ2VGaWVsZFRvQ2FzZUZpZWxkTWFwcGVyIH0gZnJvbSAnLi93aXphcmQtcGFnZS1maWVsZC10by1jYXNlLWZpZWxkLm1hcHBlcic7XG5pbXBvcnQgeyBXb3JrQWxsb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuL3dvcmstYWxsb2NhdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENhc2VzU2VydmljZSB7XG4gIC8vIEludGVybmFsIChVSSkgQVBJXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVjJfTUVESUFUWVBFX0NBU0VfVklFVyA9ICdhcHBsaWNhdGlvbi92bmQudWsuZ292LmhtY3RzLmNjZC1kYXRhLXN0b3JlLWFwaS51aS1jYXNlLXZpZXcudjIranNvbic7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVjJfTUVESUFUWVBFX1NUQVJUX0NBU0VfVFJJR0dFUiA9XG4gICAgJ2FwcGxpY2F0aW9uL3ZuZC51ay5nb3YuaG1jdHMuY2NkLWRhdGEtc3RvcmUtYXBpLnVpLXN0YXJ0LWNhc2UtdHJpZ2dlci52Mitqc29uO2NoYXJzZXQ9VVRGLTgnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFYyX01FRElBVFlQRV9TVEFSVF9FVkVOVF9UUklHR0VSID1cbiAgICAnYXBwbGljYXRpb24vdm5kLnVrLmdvdi5obWN0cy5jY2QtZGF0YS1zdG9yZS1hcGkudWktc3RhcnQtZXZlbnQtdHJpZ2dlci52Mitqc29uO2NoYXJzZXQ9VVRGLTgnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFYyX01FRElBVFlQRV9TVEFSVF9EUkFGVF9UUklHR0VSID1cbiAgICAnYXBwbGljYXRpb24vdm5kLnVrLmdvdi5obWN0cy5jY2QtZGF0YS1zdG9yZS1hcGkudWktc3RhcnQtZHJhZnQtdHJpZ2dlci52Mitqc29uO2NoYXJzZXQ9VVRGLTgnO1xuXG4gIC8vIEV4dGVybmFsIChEYXRhIFN0b3JlKSBBUElcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFYyX01FRElBVFlQRV9DQVNFX0RPQ1VNRU5UUyA9XG4gICAgJ2FwcGxpY2F0aW9uL3ZuZC51ay5nb3YuaG1jdHMuY2NkLWRhdGEtc3RvcmUtYXBpLmNhc2UtZG9jdW1lbnRzLnYyK2pzb247Y2hhcnNldD1VVEYtOCc7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBWMl9NRURJQVRZUEVfQ0FTRV9EQVRBX1ZBTElEQVRFID1cbiAgICAnYXBwbGljYXRpb24vdm5kLnVrLmdvdi5obWN0cy5jY2QtZGF0YS1zdG9yZS1hcGkuY2FzZS1kYXRhLXZhbGlkYXRlLnYyK2pzb247Y2hhcnNldD1VVEYtOCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVjJfTUVESUFUWVBFX0NSRUFURV9FVkVOVCA9XG4gICAgJ2FwcGxpY2F0aW9uL3ZuZC51ay5nb3YuaG1jdHMuY2NkLWRhdGEtc3RvcmUtYXBpLmNyZWF0ZS1ldmVudC52Mitqc29uO2NoYXJzZXQ9VVRGLTgnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFYyX01FRElBVFlQRV9DUkVBVEVfQ0FTRSA9XG4gICAgJ2FwcGxpY2F0aW9uL3ZuZC51ay5nb3YuaG1jdHMuY2NkLWRhdGEtc3RvcmUtYXBpLmNyZWF0ZS1jYXNlLnYyK2pzb247Y2hhcnNldD1VVEYtOCc7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQVUlfQ0FTRV9NQU5BR0VSID0gJ3B1aS1jYXNlLW1hbmFnZXInO1xuXG4gIGdldCA9IHRoaXMuZ2V0Q2FzZVZpZXc7XG5cbiAgcHVibGljIHN0YXRpYyB1cGRhdGVDaGFsbGVuZ2VkQWNjZXNzUmVxdWVzdEF0dHJpYnV0ZXMoaHR0cENsaWVudDogSHR0cENsaWVudCwgY2FzZUlkOiBzdHJpbmcsIGF0dHJpYnV0ZXNUb1VwZGF0ZTogeyBbeDogc3RyaW5nXTogYW55IH0pXG4gICAgOiBPYnNlcnZhYmxlPFJvbGVBc3NpZ25tZW50UmVzcG9uc2U+IHtcbiAgICByZXR1cm4gaHR0cENsaWVudC5wb3N0PFJvbGVBc3NpZ25tZW50UmVzcG9uc2U+KGAvYXBpL2NoYWxsZW5nZWQtYWNjZXNzLXJlcXVlc3QvdXBkYXRlLWF0dHJpYnV0ZXNgLCB7XG4gICAgICBjYXNlSWQsXG4gICAgICBhdHRyaWJ1dGVzVG9VcGRhdGVcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdXBkYXRlU3BlY2lmaWNBY2Nlc3NSZXF1ZXN0QXR0cmlidXRlcyhodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBjYXNlSWQ6IHN0cmluZywgYXR0cmlidXRlc1RvVXBkYXRlOiB7IFt4OiBzdHJpbmddOiBhbnkgfSlcbiAgICA6IE9ic2VydmFibGU8Um9sZUFzc2lnbm1lbnRSZXNwb25zZT4ge1xuICAgIHJldHVybiBodHRwQ2xpZW50LnBvc3Q8Um9sZUFzc2lnbm1lbnRSZXNwb25zZT4oYC9hcGkvc3BlY2lmaWMtYWNjZXNzLXJlcXVlc3QvdXBkYXRlLWF0dHJpYnV0ZXNgLCB7XG4gICAgICBjYXNlSWQsXG4gICAgICBhdHRyaWJ1dGVzVG9VcGRhdGVcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBDb25maWc6IEFic3RyYWN0QXBwQ29uZmlnLFxuICAgIHByaXZhdGUgb3JkZXJTZXJ2aWNlOiBPcmRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlcnJvclNlcnZpY2U6IEh0dHBFcnJvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB3aXphcmRQYWdlRmllbGRUb0Nhc2VGaWVsZE1hcHBlcjogV2l6YXJkUGFnZUZpZWxkVG9DYXNlRmllbGRNYXBwZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3b3JrQWxsb2NhdGlvblNlcnZpY2U6IFdvcmtBbGxvY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGxvYWRpbmdTZXJ2aWNlOiBMb2FkaW5nU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlXG4gICkge1xuICB9XG5cbiAgZ2V0Q2FzZVZpZXcoanVyaXNkaWN0aW9uSWQ6IHN0cmluZyxcbiAgICBjYXNlVHlwZUlkOiBzdHJpbmcsXG4gICAgY2FzZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENhc2VWaWV3PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5hcHBDb25maWcuZ2V0QXBpVXJsKClcbiAgICAgICsgYC9jYXNld29ya2Vycy86dWlkYFxuICAgICAgKyBgL2p1cmlzZGljdGlvbnMvJHtqdXJpc2RpY3Rpb25JZH1gXG4gICAgICArIGAvY2FzZS10eXBlcy8ke2Nhc2VUeXBlSWR9YFxuICAgICAgKyBgL2Nhc2VzLyR7Y2FzZUlkfWA7XG5cbiAgICBjb25zdCBsb2FkaW5nVG9rZW4gPSB0aGlzLmxvYWRpbmdTZXJ2aWNlLnJlZ2lzdGVyKCk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldCh1cmwpXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMubG9hZGluZ1NlcnZpY2UudW5yZWdpc3Rlcihsb2FkaW5nVG9rZW4pKVxuICAgICAgKTtcbiAgfVxuXG4gIGdldENhc2VWaWV3VjIoY2FzZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENhc2VWaWV3PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcHBDb25maWcuZ2V0Q2FzZURhdGFVcmwoKX0vaW50ZXJuYWwvY2FzZXMvJHtjYXNlSWR9YDtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcbiAgICAgIC5zZXQoJ2V4cGVyaW1lbnRhbCcsICd0cnVlJylcbiAgICAgIC5zZXQoJ0FjY2VwdCcsIENhc2VzU2VydmljZS5WMl9NRURJQVRZUEVfQ0FTRV9WSUVXKVxuICAgICAgLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcblxuICAgIGNvbnN0IGxvYWRpbmdUb2tlbiA9IHRoaXMubG9hZGluZ1NlcnZpY2UucmVnaXN0ZXIoKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQodXJsLCB7IGhlYWRlcnMsIG9ic2VydmU6ICdib2R5JyB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JTZXJ2aWNlLnNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmxvYWRpbmdTZXJ2aWNlLnVucmVnaXN0ZXIobG9hZGluZ1Rva2VuKSlcbiAgICAgICk7XG4gIH1cblxuICBnZXRFdmVudFRyaWdnZXIoY2FzZVR5cGVJZDogc3RyaW5nLFxuICAgIGV2ZW50VHJpZ2dlcklkOiBzdHJpbmcsXG4gICAgY2FzZUlkPzogc3RyaW5nLFxuICAgIGlnbm9yZVdhcm5pbmc/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPENhc2VFdmVudFRyaWdnZXI+IHtcbiAgICBpZ25vcmVXYXJuaW5nID0gdW5kZWZpbmVkICE9PSBpZ25vcmVXYXJuaW5nID8gaWdub3JlV2FybmluZyA6ICdmYWxzZSc7XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkRXZlbnRUcmlnZ2VyVXJsKGNhc2VUeXBlSWQsIGV2ZW50VHJpZ2dlcklkLCBjYXNlSWQsIGlnbm9yZVdhcm5pbmcpO1xuXG4gICAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnZXhwZXJpbWVudGFsJywgJ3RydWUnKVxuICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcblxuICAgIGlmIChEcmFmdC5pc0RyYWZ0KGNhc2VJZCkpIHtcbiAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0JywgQ2FzZXNTZXJ2aWNlLlYyX01FRElBVFlQRV9TVEFSVF9EUkFGVF9UUklHR0VSKTtcbiAgICB9IGVsc2UgaWYgKGNhc2VJZCAhPT0gdW5kZWZpbmVkICYmIGNhc2VJZCAhPT0gbnVsbCkge1xuICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdBY2NlcHQnLCBDYXNlc1NlcnZpY2UuVjJfTUVESUFUWVBFX1NUQVJUX0VWRU5UX1RSSUdHRVIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ0FjY2VwdCcsIENhc2VzU2VydmljZS5WMl9NRURJQVRZUEVfU1RBUlRfQ0FTRV9UUklHR0VSKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KHVybCwgeyBoZWFkZXJzLCBvYnNlcnZlOiAnYm9keScgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoYm9keSA9PiB7XG4gICAgICAgICAgcmV0dXJuIEZpZWxkc1V0aWxzLmhhbmRsZU5lc3RlZER5bmFtaWNMaXN0cyhib2R5KTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JTZXJ2aWNlLnNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKHApID0+IHBsYWluVG9DbGFzcyhDYXNlRXZlbnRUcmlnZ2VyLCBwKSksXG4gICAgICAgIHRhcChldmVudFRyaWdnZXIgPT4gdGhpcy5pbml0aWFsaXNlRXZlbnRUcmlnZ2VyKGV2ZW50VHJpZ2dlcikpXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZUV2ZW50KGNhc2VEZXRhaWxzOiBDYXNlVmlldywgZXZlbnREYXRhOiBDYXNlRXZlbnREYXRhKTogT2JzZXJ2YWJsZTx7fT4ge1xuICAgIGNvbnN0IGNhc2VJZCA9IGNhc2VEZXRhaWxzLmNhc2VfaWQ7XG4gICAgY29uc3QgdXJsID0gdGhpcy5hcHBDb25maWcuZ2V0Q2FzZURhdGFVcmwoKSArIGAvY2FzZXMvJHtjYXNlSWR9L2V2ZW50c2A7XG5cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcbiAgICAgIC5zZXQoJ2V4cGVyaW1lbnRhbCcsICd0cnVlJylcbiAgICAgIC5zZXQoJ0FjY2VwdCcsIENhc2VzU2VydmljZS5WMl9NRURJQVRZUEVfQ1JFQVRFX0VWRU5UKVxuICAgICAgLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KHVybCwgZXZlbnREYXRhLCB7IGhlYWRlcnMsIG9ic2VydmU6ICdib2R5JyB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JTZXJ2aWNlLnNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgdmFsaWRhdGVDYXNlKGN0aWQ6IHN0cmluZywgZXZlbnREYXRhOiBDYXNlRXZlbnREYXRhLCBwYWdlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgY29uc3QgcGFnZUlkU3RyaW5nID0gcGFnZUlkID8gJz9wYWdlSWQ9JyArIHBhZ2VJZCA6ICcnO1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYXBwQ29uZmlnLmdldENhc2VEYXRhVXJsKClcbiAgICAgICsgYC9jYXNlLXR5cGVzLyR7Y3RpZH0vdmFsaWRhdGUke3BhZ2VJZFN0cmluZ31gO1xuXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpXG4gICAgICAuc2V0KCdleHBlcmltZW50YWwnLCAndHJ1ZScpXG4gICAgICAuc2V0KCdBY2NlcHQnLCBDYXNlc1NlcnZpY2UuVjJfTUVESUFUWVBFX0NBU0VfREFUQV9WQUxJREFURSlcbiAgICAgIC5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdCh1cmwsIGV2ZW50RGF0YSwgeyBoZWFkZXJzLCBvYnNlcnZlOiAnYm9keScgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yU2VydmljZS5zZXRFcnJvcihlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGNyZWF0ZUNhc2UoY3RpZDogc3RyaW5nLCBldmVudERhdGE6IENhc2VFdmVudERhdGEpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xuICAgIGxldCBpZ25vcmVXYXJuaW5nID0gJ2ZhbHNlJztcblxuICAgIGlmIChldmVudERhdGEuaWdub3JlX3dhcm5pbmcpIHtcbiAgICAgIGlnbm9yZVdhcm5pbmcgPSAndHJ1ZSc7XG4gICAgfVxuICAgIGNvbnN0IHVybCA9IHRoaXMuYXBwQ29uZmlnLmdldENhc2VEYXRhVXJsKClcbiAgICAgICsgYC9jYXNlLXR5cGVzLyR7Y3RpZH0vY2FzZXM/aWdub3JlLXdhcm5pbmc9JHtpZ25vcmVXYXJuaW5nfWA7XG5cbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKClcbiAgICAgIC5zZXQoJ2V4cGVyaW1lbnRhbCcsICd0cnVlJylcbiAgICAgIC5zZXQoJ0FjY2VwdCcsIENhc2VzU2VydmljZS5WMl9NRURJQVRZUEVfQ1JFQVRFX0NBU0UpXG4gICAgICAuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QodXJsLCBldmVudERhdGEsIHsgaGVhZGVycywgb2JzZXJ2ZTogJ2JvZHknIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBnZXRQcmludERvY3VtZW50cyhjYXNlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q2FzZVByaW50RG9jdW1lbnRbXT4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYXBwQ29uZmlnLmdldENhc2VEYXRhVXJsKClcbiAgICAgICsgYC9jYXNlcy8ke2Nhc2VJZH1gXG4gICAgICArIGAvZG9jdW1lbnRzYDtcblxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgICAgLnNldCgnZXhwZXJpbWVudGFsJywgJ3RydWUnKVxuICAgICAgLnNldCgnQWNjZXB0JywgQ2FzZXNTZXJ2aWNlLlYyX01FRElBVFlQRV9DQVNFX0RPQ1VNRU5UUylcbiAgICAgIC5zZXQoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KHVybCwgeyBoZWFkZXJzLCBvYnNlcnZlOiAnYm9keScgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoYm9keSA9PiBib2R5LmRvY3VtZW50UmVzb3VyY2VzKSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRXZlbnRUcmlnZ2VyVXJsKGNhc2VUeXBlSWQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFRyaWdnZXJJZDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VJZD86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVXYXJuaW5nPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgdXJsID0gdGhpcy5hcHBDb25maWcuZ2V0Q2FzZURhdGFVcmwoKSArIGAvaW50ZXJuYWxgO1xuXG4gICAgaWYgKERyYWZ0LmlzRHJhZnQoY2FzZUlkKSkge1xuICAgICAgdXJsICs9IGAvZHJhZnRzLyR7Y2FzZUlkfWBcbiAgICAgICAgKyBgL2V2ZW50LXRyaWdnZXJgXG4gICAgICAgICsgYD9pZ25vcmUtd2FybmluZz0ke2lnbm9yZVdhcm5pbmd9YDtcbiAgICB9IGVsc2UgaWYgKGNhc2VUeXBlSWQgPT09IHVuZGVmaW5lZCB8fCBjYXNlVHlwZUlkID09PSBudWxsKSB7XG4gICAgICB1cmwgKz0gYC9jYXNlcy8ke2Nhc2VJZH1gXG4gICAgICAgICsgYC9ldmVudC10cmlnZ2Vycy8ke2V2ZW50VHJpZ2dlcklkfWBcbiAgICAgICAgKyBgP2lnbm9yZS13YXJuaW5nPSR7aWdub3JlV2FybmluZ31gO1xuICAgIH0gZWxzZSB7XG4gICAgICB1cmwgKz0gYC9jYXNlLXR5cGVzLyR7Y2FzZVR5cGVJZH1gXG4gICAgICAgICsgYC9ldmVudC10cmlnZ2Vycy8ke2V2ZW50VHJpZ2dlcklkfWBcbiAgICAgICAgKyBgP2lnbm9yZS13YXJuaW5nPSR7aWdub3JlV2FybmluZ31gO1xuICAgIH1cblxuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpc2VFdmVudFRyaWdnZXIoZXZlbnRUcmlnZ2VyOiBDYXNlRXZlbnRUcmlnZ2VyKSB7XG4gICAgaWYgKCFldmVudFRyaWdnZXIud2l6YXJkX3BhZ2VzKSB7XG4gICAgICBldmVudFRyaWdnZXIud2l6YXJkX3BhZ2VzID0gW107XG4gICAgfVxuXG4gICAgZXZlbnRUcmlnZ2VyLndpemFyZF9wYWdlcy5mb3JFYWNoKCh3aXphcmRQYWdlOiBXaXphcmRQYWdlKSA9PiB7XG4gICAgICB3aXphcmRQYWdlLnBhcnNlZFNob3dDb25kaXRpb24gPSBTaG93Q29uZGl0aW9uLmdldEluc3RhbmNlKHdpemFyZFBhZ2Uuc2hvd19jb25kaXRpb24pO1xuICAgICAgd2l6YXJkUGFnZS5jYXNlX2ZpZWxkcyA9IHRoaXMub3JkZXJTZXJ2aWNlLnNvcnQoXG4gICAgICAgIHRoaXMud2l6YXJkUGFnZUZpZWxkVG9DYXNlRmllbGRNYXBwZXIubWFwQWxsKHdpemFyZFBhZ2Uud2l6YXJkX3BhZ2VfZmllbGRzLCBldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qXG4gIENoZWNrcyBpZiB0aGUgdXNlciBoYXMgcm9sZSBvZiBwdWktY2FzZS1tYW5hZ2VyIGFuZCByZXR1cm5zIHRydWUgb3IgZmFsc2VcbiAgKi9cbiAgcHJpdmF0ZSBpc1B1aUNhc2VNYW5hZ2VyKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHVzZXJJbmZvU3RyID0gdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgndXNlckRldGFpbHMnKTtcbiAgICBpZiAodXNlckluZm9TdHIpIHtcbiAgICAgIGNvbnN0IHVzZXJJbmZvOiBVc2VySW5mbyA9IEpTT04ucGFyc2UodXNlckluZm9TdHIpO1xuICAgICAgcmV0dXJuIHVzZXJJbmZvICYmIHVzZXJJbmZvLnJvbGVzICYmICh1c2VySW5mby5yb2xlcy5pbmRleE9mKENhc2VzU2VydmljZS5QVUlfQ0FTRV9NQU5BR0VSKSAhPT0gLTEpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q291cnRPckhlYXJpbmdDZW50cmVOYW1lKGxvY2F0aW9uSWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvYXBpL2xvY2F0aW9ucy9nZXRMb2NhdGlvbnNCeUlkYCwgeyBsb2NhdGlvbnMgOiBbeyBsb2NhdGlvbklkIH1dfSk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQ2hhbGxlbmdlZEFjY2Vzc1JlcXVlc3QoY2FzZUlkOiBzdHJpbmcsIHJlcXVlc3Q6IENoYWxsZW5nZWRBY2Nlc3NSZXF1ZXN0KTogT2JzZXJ2YWJsZTxSb2xlQXNzaWdubWVudFJlc3BvbnNlPiB7XG4gICAgLy8gQXNzaWdubWVudCBBUEkgZW5kcG9pbnRcbiAgICBjb25zdCB1c2VySW5mb1N0ciA9IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ3VzZXJEZXRhaWxzJyk7XG5cbiAgICBjb25zdCBjYW1VdGlscyA9IG5ldyBDYXNlQWNjZXNzVXRpbHMoKTtcbiAgICBsZXQgdXNlckluZm86IFVzZXJJbmZvO1xuICAgIGlmICh1c2VySW5mb1N0cikge1xuICAgICAgdXNlckluZm8gPSBKU09OLnBhcnNlKHVzZXJJbmZvU3RyKTtcbiAgICB9XG5cbiAgICBjb25zdCByb2xlQ2F0ZWdvcnk6IFJvbGVDYXRlZ29yeSA9IHVzZXJJbmZvLnJvbGVDYXRlZ29yeSB8fCBjYW1VdGlscy5nZXRNYXBwZWRSb2xlQ2F0ZWdvcnkodXNlckluZm8ucm9sZXMsIHVzZXJJbmZvLnJvbGVDYXRlZ29yaWVzKTtcbiAgICBjb25zdCByb2xlTmFtZSA9IGNhbVV0aWxzLmdldEFNUm9sZU5hbWUoJ2NoYWxsZW5nZWQnLCByb2xlQ2F0ZWdvcnkpO1xuICAgIGNvbnN0IGJlZ2luVGltZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZW5kVGltZSA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0VVRDSG91cnMoMjMsIDU5LCA1OSwgOTk5KSk7XG4gICAgY29uc3QgaWQgPSB1c2VySW5mby5pZCA/IHVzZXJJbmZvLmlkIDogdXNlckluZm8udWlkO1xuICAgIGNvbnN0IGlzTmV3ID0gdHJ1ZTtcblxuICAgIGNvbnN0IHBheWxvYWQ6IFJvbGVSZXF1ZXN0UGF5bG9hZCA9IGNhbVV0aWxzLmdldEFNUGF5bG9hZChpZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGVOYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlQ2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDSEFMTEVOR0VEJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpblRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFRpbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTmV3XG4gICAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvYXBpL2NoYWxsZW5nZWQtYWNjZXNzLXJlcXVlc3RgLCBwYXlsb2FkKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVTcGVjaWZpY0FjY2Vzc1JlcXVlc3QoY2FzZUlkOiBzdHJpbmcsIHNhcjogU3BlY2lmaWNBY2Nlc3NSZXF1ZXN0KTogT2JzZXJ2YWJsZTxSb2xlQXNzaWdubWVudFJlc3BvbnNlPiB7XG4gICAgLy8gQXNzaWdubWVudCBBUEkgZW5kcG9pbnRcbiAgICBjb25zdCB1c2VySW5mb1N0ciA9IHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ3VzZXJEZXRhaWxzJyk7XG5cbiAgICBjb25zdCBjYW1VdGlscyA9IG5ldyBDYXNlQWNjZXNzVXRpbHMoKTtcbiAgICBsZXQgdXNlckluZm86IFVzZXJJbmZvO1xuICAgIGlmICh1c2VySW5mb1N0cikge1xuICAgICAgdXNlckluZm8gPSBKU09OLnBhcnNlKHVzZXJJbmZvU3RyKTtcbiAgICB9XG5cbiAgICBjb25zdCByb2xlQ2F0ZWdvcnk6IFJvbGVDYXRlZ29yeSA9IHVzZXJJbmZvLnJvbGVDYXRlZ29yeSB8fCBjYW1VdGlscy5nZXRNYXBwZWRSb2xlQ2F0ZWdvcnkodXNlckluZm8ucm9sZXMsIHVzZXJJbmZvLnJvbGVDYXRlZ29yaWVzKTtcbiAgICBjb25zdCByb2xlTmFtZSA9IGNhbVV0aWxzLmdldEFNUm9sZU5hbWUoJ3NwZWNpZmljJywgcm9sZUNhdGVnb3J5KTtcbiAgICBjb25zdCBpZCA9IHVzZXJJbmZvLmlkID8gdXNlckluZm8uaWQgOiB1c2VySW5mby51aWQ7XG4gICAgY29uc3QgcGF5bG9hZDogUm9sZVJlcXVlc3RQYXlsb2FkID0gY2FtVXRpbHMuZ2V0QU1QYXlsb2FkKG51bGwsIGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlTmFtZSwgcm9sZUNhdGVnb3J5LCAnU1BFQ0lGSUMnLCBjYXNlSWQsIHNhciwgbnVsbCwgbnVsbCwgdHJ1ZSk7XG5cbiAgICBwYXlsb2FkLnJvbGVSZXF1ZXN0ID0ge1xuICAgICAgLi4ucGF5bG9hZC5yb2xlUmVxdWVzdCxcbiAgICAgIHByb2Nlc3M6ICdzcGVjaWZpYy1hY2Nlc3MnLFxuICAgICAgcmVwbGFjZUV4aXN0aW5nOiB0cnVlLFxuICAgICAgYXNzaWduZXJJZDogcGF5bG9hZC5yZXF1ZXN0ZWRSb2xlc1swXS5hY3RvcklkLFxuICAgICAgcmVmZXJlbmNlOiBgJHtjYXNlSWR9LyR7cm9sZU5hbWV9LyR7cGF5bG9hZC5yZXF1ZXN0ZWRSb2xlc1swXS5hY3RvcklkfWBcbiAgICB9O1xuXG4gICAgcGF5bG9hZC5yZXF1ZXN0ZWRSb2xlc1swXSA9IHtcbiAgICAgIC4uLnBheWxvYWQucmVxdWVzdGVkUm9sZXNbMF0sXG4gICAgICByb2xlTmFtZTogJ3NwZWNpZmljLWFjY2Vzcy1yZXF1ZXN0ZWQnLFxuICAgICAgcm9sZUNhdGVnb3J5LFxuICAgICAgY2xhc3NpZmljYXRpb246ICdQUklWQVRFJyxcbiAgICAgIGVuZFRpbWU6IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0RGF0ZShuZXcgRGF0ZSgpLmdldERhdGUoKSArIDMwKSksXG4gICAgICBiZWdpblRpbWU6IG51bGwsXG4gICAgICBncmFudFR5cGU6ICdCQVNJQycsXG4gICAgICByZWFkT25seTogdHJ1ZVxuICAgIH07XG5cbiAgICBwYXlsb2FkLnJlcXVlc3RlZFJvbGVzWzBdLmF0dHJpYnV0ZXMgPSB7XG4gICAgICAuLi5wYXlsb2FkLnJlcXVlc3RlZFJvbGVzWzBdLmF0dHJpYnV0ZXMsXG4gICAgICByZXF1ZXN0ZWRSb2xlOiByb2xlTmFtZSxcbiAgICAgIHNwZWNpZmljQWNjZXNzUmVhc29uOiBzYXIuc3BlY2lmaWNSZWFzb25cbiAgICB9XG5cbiAgICBwYXlsb2FkLnJlcXVlc3RlZFJvbGVzWzBdLm5vdGVzWzBdID0ge1xuICAgICAgLi4ucGF5bG9hZC5yZXF1ZXN0ZWRSb2xlc1swXS5ub3Rlc1swXSxcbiAgICAgIHVzZXJJZDogcGF5bG9hZC5yZXF1ZXN0ZWRSb2xlc1swXS5hY3RvcklkXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgYC9hcGkvc3BlY2lmaWMtYWNjZXNzLXJlcXVlc3RgLFxuICAgICAgcGF5bG9hZFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGlua2VkQ2FzZXMoY2FzZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPExpbmtlZENhc2VzUmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwcENvbmZpZy5nZXRDYXNlRGF0YVN0b3JlQXBpVXJsKCl9LyR7Y2FzZUlkfWBcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgLmdldCh1cmwpXG4gICAgLnBpcGUoY2F0Y2hFcnJvcihlcnJvciA9PiB0aHJvd0Vycm9yKGVycm9yKSkpO1xuICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkLWNhc2VzLXN0YXRlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvbGlua2VkLWNhc2VzL2RvbWFpbi9saW5rZWQtY2FzZXMtc3RhdGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RvbWFpbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlua2VkQ2FzZXNTdGF0ZSB7XG4gIGN1cnJlbnRMaW5rZWRDYXNlc1BhZ2U6IG51bWJlcjtcbiAgZXJyb3JNZXNzYWdlcz86IEVycm9yTWVzc2FnZVtdO1xuICBuYXZpZ2F0ZVRvTmV4dFBhZ2U6IGJvb2xlYW47XG4gIG5hdmlnYXRlVG9QcmV2aW91c1BhZ2U/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpbmtlZENhc2VzRXJyb3Ige1xuICBjb21wb25lbnRJZDogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkLWNhc2VzLXN0YXRlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvbGlua2VkLWNhc2VzL2RvbWFpbi9saW5rZWQtY2FzZXMtc3RhdGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RvbWFpbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlua2VkQ2FzZXNTdGF0ZSB7XG4gIGN1cnJlbnRMaW5rZWRDYXNlc1BhZ2U6IG51bWJlcjtcbiAgZXJyb3JNZXNzYWdlcz86IEVycm9yTWVzc2FnZVtdO1xuICBuYXZpZ2F0ZVRvTmV4dFBhZ2U6IGJvb2xlYW47XG4gIG5hdmlnYXRlVG9QcmV2aW91c1BhZ2U/OiBib29sZWFuO1xufVxuIl19