@sunbird-cb/cbp-ai 0.1.67 → 0.1.69
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.
- package/esm2022/lib/components/edit-cbp-plan/edit-cbp-plan.component.mjs +7 -2
- package/esm2022/lib/components/review-request/review-request.component.mjs +7 -5
- package/esm2022/lib/modules/initial-screen/initial-screen.component.mjs +14 -8
- package/esm2022/lib/modules/shared/services/shared.service.mjs +4 -4
- package/fesm2022/sunbird-cb-cbp-ai.mjs +28 -15
- package/fesm2022/sunbird-cb-cbp-ai.mjs.map +1 -1
- package/lib/components/edit-cbp-plan/edit-cbp-plan.component.d.ts.map +1 -1
- package/lib/components/review-request/review-request.component.d.ts.map +1 -1
- package/lib/modules/initial-screen/initial-screen.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -72,6 +72,13 @@ export class InitialScreenComponent {
|
|
|
72
72
|
}
|
|
73
73
|
// console.log('this.nextStep',this.nextStep)
|
|
74
74
|
// console.log('this.sharedService.cb', this.sharedService.cbpPlanFinalObj)
|
|
75
|
+
if (!localStorage.getItem('userEmail')) {
|
|
76
|
+
this.snackBar.open('Session expired. Please login again.', 'X', {
|
|
77
|
+
duration: 3000,
|
|
78
|
+
panelClass: ['snackbar-error']
|
|
79
|
+
});
|
|
80
|
+
this.router.navigate(['/']);
|
|
81
|
+
}
|
|
75
82
|
}
|
|
76
83
|
successRoleMapping(event) {
|
|
77
84
|
this.nextStep = 'role-mapping';
|
|
@@ -96,19 +103,18 @@ export class InitialScreenComponent {
|
|
|
96
103
|
this.nextStep = 'initial';
|
|
97
104
|
}
|
|
98
105
|
logout() {
|
|
99
|
-
|
|
100
|
-
this.nextStep = 'initial';
|
|
101
|
-
localStorage.clear();
|
|
102
|
-
window.location.reload();
|
|
103
|
-
setTimeout(() => {
|
|
104
|
-
this.router.navigate(['/']);
|
|
105
|
-
}, 500);
|
|
106
|
+
console.log('Logout successfully');
|
|
106
107
|
this.sharedService.logout().subscribe({
|
|
107
108
|
next: (res) => {
|
|
108
109
|
this.snackBar.open('You are logout successfully', 'X', {
|
|
109
110
|
duration: 3000,
|
|
110
111
|
panelClass: ['snackbar-success']
|
|
111
112
|
});
|
|
113
|
+
this.router.navigate(['/']);
|
|
114
|
+
window.location.reload();
|
|
115
|
+
localStorage.clear();
|
|
116
|
+
this.loginSuccess = false;
|
|
117
|
+
this.nextStep = 'initial';
|
|
112
118
|
},
|
|
113
119
|
error: (error) => {
|
|
114
120
|
this.snackBar.open(error?.error?.detail, 'X', {
|
|
@@ -128,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
128
134
|
type: Component,
|
|
129
135
|
args: [{ selector: 'initial-screen', template: "<div *ngIf=\"nextStep === 'initial'\">\n <app-role-mapping-generation [loginStatusFlag]=\"loginSuccess\" (successRoleMapping)=\"successRoleMapping($event)\" (loginSuccess)=\"loginSuccessStatus($event)\" (alreadyAvailableRoleMapping)=\"alreadyAvailableRoleMapping($event)\"></app-role-mapping-generation>\n</div>\n<div *ngIf=\"nextStep === 'role-mapping'\">\n <app-role-mapping-list [formData]=\"formData\" (moveToInitialScreen)=\"moveToInitialScreen($event)\"></app-role-mapping-list>\n</div>", styles: [".container{margin:10px auto}.sub-heading p{color:#000;font-family:Montserrat;font-size:16px;font-style:normal;font-weight:600;line-height:normal}.radio-label{color:#000;font-family:Lato;font-size:16px;font-style:normal;font-weight:400;line-height:normal}.radio-btn-group{display:flex;width:32px;height:32px;padding:2px;gap:10px}.label{color:var(--Body-Text-Body-Color, #212529);font-family:Lato;font-size:14px;font-style:normal;font-weight:700;line-height:150%}::ng-deep mat-form-field{background-color:#fff!important;border-radius:25px!important;padding-left:12px;padding-right:12px;height:42px;width:100%}::ng-deep mat-select{border-radius:25px!important;background-color:#fff!important}::ng-deep .mat-select-panel{background-color:#fff!important}::ng-deep .mat-select-panel .mat-option{border-radius:0!important}::ng-deep mat-form-field .mat-form-field-underline{display:none!important}::ng-deep mat-select .mat-select-placeholder{color:#0006;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal}::ng-deep mat-select .mat-select-value-text{color:#000;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal;line-height:normal!important;padding-top:0!important;padding-bottom:0!important}::ng-deep mat-select .mat-select-value{display:flex!important;align-items:center!important;height:100%!important}.additional-details textarea{display:flex;padding:16px 16px 0;flex-direction:column;align-items:flex-start;gap:10px;flex:1 0 0;align-self:stretch;width:100%;color:#0006;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal;resize:none}.section-header{display:flex;flex-direction:row;align-items:center;justify-content:space-between}.btn-disable{border-radius:var(--Radius-Full-Round, 9999999px);opacity:.4;background:var(--Primary-KB-Primary-Light, #1B4CA1);color:var(--white-kb-white-100, #FFF);text-align:center;font-family:Lato;font-size:14px;font-style:normal;font-weight:700;line-height:normal;display:flex;height:32px;padding:0 16px;justify-content:center;align-items:center;gap:8px;border:none}.btn-group{display:flex;flex-direction:row;justify-content:space-between}.pl-2{padding-left:10px}.search-filter-section{display:flex;flex-direction:row;justify-content:space-between}.search .rsearch{position:relative}.search .search-icon{position:absolute;top:15px;font-size:20px;left:10px}.search .sinput{border-radius:4px;border:1px solid #d5d0d0;padding:15px 36px;font:400 14px Lato}.select-map-route-container{display:flex;flex-direction:row}.selected-mapping-route p{color:#1b4ca1;font-family:Lato;font-size:20px;font-style:normal;font-weight:400;line-height:normal;text-decoration-line:underline;text-decoration-style:solid;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.edit-plan{display:flex;padding:4px;justify-content:center;align-items:center;gap:8px;border-radius:4px;background:#1b4ca129;color:#1b4ca1;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal;margin-left:10px}.search-container{display:flex;flex-direction:row}.course-container{display:flex;width:100%;padding:16px;flex-direction:column;align-items:flex-start;gap:24px;grid-row:2/span 1;grid-column:1/span 1;border-radius:12px;border:1px solid var(--borders-black-border-16-black, rgba(0, 0, 0, .16));background:#fff}.course-header{display:flex;flex-direction:row;justify-content:space-between;width:100%}.course-pill{display:flex;height:24px;padding:8px;align-items:center;gap:4px;border-radius:16px;border:1px solid var(--borders-border-fill-focussed-4-light-100, #EF951E);background:#fefaf4}.ai-recommened-pill{display:flex;padding:4px 8px;align-items:center;gap:8px;border-radius:var(--Radius-4, 4px);border:1px solid #1B4CA1;background:#1b4ca129}.igot-platform-pill{display:flex;padding:4px 8px;align-items:center;gap:8px;border-radius:var(--Radius-4, 4px);border:1px solid #EF951E;background:#ef951e29}.course-title{color:var(--Primary-KB-Primary-Light, #1B4CA1);font-family:Montserrat;font-size:20px;font-style:normal;font-weight:600;line-height:30px}.course-desc{color:#0009;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal}.relevancy,.competencies-matched{color:var(--accessbility-shades-with-opacity-kb-greys-black-60, rgba(0, 0, 0, .6));font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal;align-items:center}.percentage{color:#1d8923;font-family:Lato;font-size:14px;font-style:normal;font-weight:800;line-height:normal}.relevancy-container,.competencies-matched-container{display:flex;flex-direction:row;align-items:center}.dash{padding:0 5px}::ng-deep .mat-radio-checked .mat-radio-inner-circle{background:#1b4ca1!important}.course-list-container{display:flex;flex-wrap:wrap;gap:16px}.course-list-item{flex:0 0 48%;box-sizing:border-box;border:1px solid #ccc;padding:16px;background-color:#fff;border-radius:8px}.checked-course-container{display:flex}.ml-2{margin-left:8px}::ng-deep .mat-checkbox-checked .mat-checkbox-background{background:#1b4ca1!important}.ai-recommened-pill-text,.igot-platform-pill-text{color:#1b4ca1;font-family:Lato;font-size:12px;font-style:normal;font-weight:700;line-height:normal}.course-pill-text{color:var(--accessbility-shades-without-opacity-kb-greys-black-87, #212121);text-align:center;font-family:Poppins;font-size:12px;font-style:normal;font-weight:400;line-height:normal}.ai-loader-icon img,.igot-platform-icon img{width:15.714px;height:15.714px;flex-shrink:0}.competency-container{display:flex}.outside-layer{display:flex;padding:4px 12px;justify-content:center;align-items:center;gap:16px;border-radius:12px 4px 4px 12px;border-left:2px solid #F8B861;background:#fde8cc;width:132px}.suggest-courses-header{display:flex;flex-direction:row;justify-content:space-between}.suggest-course-control{display:flex;flex-direction:row}.course-card-container{width:172px;border-radius:3.307px;border:.827px solid var(--borders-border-8-black, rgba(0, 0, 0, .08));background-color:#fff}.highlight-ai{font-family:Montserrat;font-size:24px;font-style:normal;font-weight:600;line-height:normal;background:linear-gradient(90deg,#3b27ff,#2de3d6);background-clip:text;-webkit-background-clip:text;color:transparent;-webkit-text-fill-color:transparent;display:inline-block}.ai-loader-icon-medium img{width:40px;height:40px;flex-shrink:0}.heading{color:#000;font-family:Montserrat;font-size:20px;font-style:normal;font-weight:600;line-height:normal;margin:10px 0}.progress-popup{display:flex;flex-direction:column;justify-content:center;align-items:center}.progress-popup .desc{color:#000000de;text-align:center;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal}.pl-10{padding-left:20px}.profile-pic{width:42px;height:24px;object-fit:cover;border-radius:50%;margin-top:-4px}.header-container{display:flex;flex-direction:row;justify-content:space-between;height:85px;box-shadow:0 4px 6px -1px #0000001a;background:#fff}.right-container{display:flex;margin-right:40px;gap:16px}.left-container{display:flex;gap:8px;width:100%;margin-left:10px}.h-50{height:100%!important}.mb-1{margin-bottom:1rem!important}.cursor-pointer{cursor:pointer}\n"] }]
|
|
130
136
|
}], ctorParameters: function () { return [{ type: i1.EventService }, { type: i2.SharedService }, { type: i3.MatSnackBar }, { type: i4.Router }]; } });
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbC1zY3JlZW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL21vZHVsZXMvaW5pdGlhbC1zY3JlZW4vaW5pdGlhbC1zY3JlZW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL21vZHVsZXMvaW5pdGlhbC1zY3JlZW4vaW5pdGlhbC1zY3JlZW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsd0JBQXdCLElBQUksa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUcvRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7OztBQVE5RCxNQUFNLE9BQU8sc0JBQXNCO0lBc0NqQyxZQUNVLFFBQXNCLEVBQ3ZCLGFBQTRCLEVBQzVCLFFBQXFCLEVBQ3BCLE1BQWM7UUFIZCxhQUFRLEdBQVIsUUFBUSxDQUFjO1FBQ3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDcEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXpDeEIsZUFBVSxHQUFHLFdBQVcsQ0FBQztRQUN6QixVQUFLLEdBQUcsc0JBQXNCLENBQUM7UUFFL0Isa0JBQWEsR0FBRyxFQUFFLENBQUE7UUFDbEIsZUFBVSxHQUFHLEVBQUUsQ0FBQTtRQUVmLHFCQUFnQixHQUFhLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYTtZQUM1RSxlQUFlLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDcEUseUJBQW9CLEdBQVcsUUFBUSxDQUFD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ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TGVnYWN5VGFibGVEYXRhU291cmNlIGFzIE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS10YWJsZSdcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBIRUFERVJfREFUQSB9IGZyb20gJy4uL3NoYXJlZC9jb25zdGFudC9hcHAuY29uc3RhbnQnO1xuaW1wb3J0IHsgRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2hhcmVkU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9zaGFyZWQuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbml0aWFsLXNjcmVlbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbml0aWFsLXNjcmVlbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2luaXRpYWwtc2NyZWVuLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW5pdGlhbFNjcmVlbkNvbXBvbmVudCB7XG4gIGhlYWRlckRhdGEgPSBIRUFERVJfREFUQTtcbiAgdGl0bGUgPSAnc3VuYmlyZC1jYi1zdGF0aWN3ZWInO1xuICBpc01haW50ZW5hbmNlUGFnZTogYW55XG4gIHNlbGVjdGVkVmFsdWUgPSAnJ1xuICBzZWFyY2hUZXh0ID0gJydcbiAgZGF0YVNvdXJjZTogYW55XG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gWydSZXF1ZXN0SWQnLCAndGl0bGUnLCAncmVxdWVzdG9yJywgJ3JlcXVlc3RUeXBlJyxcbiAgICAncmVxdWVzdFN0YXR1cycsICdhc3NpZ25lZScsICdyZXF1ZXN0ZWRPbicsICdpbnRlcmVzdHMnLCAnYWN0aW9uJ11cbiAgc2VsZWN0ZWRNaW5pc3RyeVR5cGU6IHN0cmluZyA9ICdjZW50ZXInO1xuICBtaW5pc3RyeURhdGE6IGFueSA9IFtdXG4gIG1pbmlzdHJ5RnVsbERhdGE6IGFueSA9IFtdXG4gIHNlY3RvckRhdGEgPSBbXG4gICAge1xuICAgICAgdmFsdWU6ICdXb21lbiBhbmQgY2hpbGQgZGV2ZWxvcG1lbnQnXG4gICAgfSxcbiAgICB7XG4gICAgICB2YWx1ZTogJ1J1cmFsIGRldmVsb3BtZW50J1xuICAgIH0sXG4gICAge1xuICAgICAgdmFsdWU6ICdVcmJlbiBkZXZlbG9wbWVudCdcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnSGVhbHRoY2FyZSdcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnQWdyaWN1bHR1cmUnXG4gICAgfSxcbiAgICB7XG4gICAgICB2YWx1ZTogJ090aGVycydcbiAgICB9XG5cbiAgXVxuICBmb3JtRGF0YToge31cbiAgbmV4dFN0ZXAgPSAnaW5pdGlhbCdcbiAgbG9naW5TdWNjZXNzID0gZmFsc2VcbiAgY2JwRmluYWxPYmo6IGFueSA9IHt9XG4gIHVzZXJFbWFpbCA9ICcnXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZXZlbnRTdmM6IEV2ZW50U2VydmljZSxcbiAgICBwdWJsaWMgc2hhcmVkU2VydmljZTogU2hhcmVkU2VydmljZSxcbiAgICBwdWJsaWMgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPGFueT4oW10pXG4gICAgdGhpcy5pc01haW50ZW5hbmNlUGFnZSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCcvbWFpbnRlbmFuY2UnKVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICB0aGlzLnNoYXJlZFNlcnZpY2UubG9naW5TdWNjZXNzLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuXG4gICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgdGhpcy5uZXh0U3RlcCA9ICdpbml0aWFsJ1xuICAgICAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKVxuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5sb2dpblN1Y2Nlc3MgPSB0aGlzLnNoYXJlZFNlcnZpY2UuY2hlY2tJZkxvZ2luKClcbiAgICBpZiAodGhpcy5sb2dpblN1Y2Nlc3MpIHtcblxuICAgICAgdGhpcy51c2VyRW1haWwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndXNlckVtYWlsJylcbiAgICB9XG4gICAgdGhpcy5jYnBGaW5hbE9iaiA9IHRoaXMuc2hhcmVkU2VydmljZS5nZXRDQlBQbGFuTG9jYWxTdG9yYWdlKClcbiAgICBpZiAodGhpcy5jYnBGaW5hbE9iaiAmJiB0aGlzLmNicEZpbmFsT2JqPy5taW5pc3RyeSAmJiAodGhpcy5jYnBGaW5hbE9iaj8ubWluaXN0cnk/LnNiT3JnVHlwZSA9PT0gJ21pbmlzdHJ5JyB8fCB0aGlzLmNicEZpbmFsT2JqPy5taW5pc3RyeT8uc2JPcmdUeXBlID09PSAnc3RhdGUnKSAmJlxuICAgICAgdGhpcy5jYnBGaW5hbE9iaj8ucm9sZV9tYXBwaW5nX2dlbmVyYXRpb24/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5uZXh0U3RlcCA9ICdyb2xlLW1hcHBpbmcnXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmV4dFN0ZXAgPSAnaW5pdGlhbCdcbiAgICB9XG4gICAgLy8gIGNvbnNvbGUubG9nKCd0aGlzLm5leHRTdGVwJyx0aGlzLm5leHRTdGVwKVxuICAgIC8vICBjb25zb2xlLmxvZygndGhpcy5zaGFyZWRTZXJ2aWNlLmNiJywgdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9iailcbiAgfVxuXG5cbiAgc3VjY2Vzc1JvbGVNYXBwaW5nKGV2ZW50KSB7XG4gICAgdGhpcy5uZXh0U3RlcCA9ICdyb2xlLW1hcHBpbmcnXG4gICAgdGhpcy5mb3JtRGF0YSA9IGV2ZW50XG4gICAgLy8gY29uc29sZS5sb2coJ2V2ZW50JywgZXZlbnQpXG4gIH1cblxuICBhbHJlYWR5QXZhaWxhYmxlUm9sZU1hcHBpbmcoZXZlbnQpIHtcbiAgICB0aGlzLm5leHRTdGVwID0gJ3JvbGUtbWFwcGluZydcbiAgICAvLyBjb25zb2xlLmxvZygnZXZlbnQnLCBldmVudClcbiAgICB0aGlzLmZvcm1EYXRhID0gZXZlbnRcblxuXG4gIH1cblxuICBtb3ZlVG9Jbml0aWFsU2NyZWVuKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50ID09PSAnYWRkJykge1xuICAgICAgdGhpcy5uZXh0U3RlcCA9ICdpbml0aWFsJ1xuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdlZGl0Jykge1xuICAgICAgdGhpcy5uZXh0U3RlcCA9ICdpbml0aWFsJ1xuICAgIH1cblxuICB9XG5cbiAgbG9naW5TdWNjZXNzU3RhdHVzKGV2ZW50KSB7XG4gICAgdGhpcy5sb2dpblN1Y2Nlc3MgPSBldmVudFxuICAgIHRoaXMubmV4dFN0ZXAgPSAnaW5pdGlhbCdcbiAgfVxuXG4gIGxvZ291dCgpIHtcbiAgICB0aGlzLmxvZ2luU3VjY2VzcyA9IGZhbHNlXG4gICAgdGhpcy5uZXh0U3RlcCA9ICdpbml0aWFsJ1xuICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpXG4gICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nXSk7XG4gICAgfSwgNTAwKVxuICAgIHRoaXMuc2hhcmVkU2VydmljZS5sb2dvdXQoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1lvdSBhcmUgbG9nb3V0IHN1Y2Nlc3NmdWxseScsICdYJywge1xuICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItc3VjY2VzcyddXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGVycm9yPy5lcnJvcj8uZGV0YWlsLCAnWCcsIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnb1RvVXBsb2FkRG9jdW1lbnQoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYWkvdXBsb2FkLWRvY3VtZW50cyddKTtcbiAgfVxuXG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJuZXh0U3RlcCA9PT0gJ2luaXRpYWwnXCI+XG4gICAgPGFwcC1yb2xlLW1hcHBpbmctZ2VuZXJhdGlvbiBbbG9naW5TdGF0dXNGbGFnXT1cImxvZ2luU3VjY2Vzc1wiIChzdWNjZXNzUm9sZU1hcHBpbmcpPVwic3VjY2Vzc1JvbGVNYXBwaW5nKCRldmVudClcIiAobG9naW5TdWNjZXNzKT1cImxvZ2luU3VjY2Vzc1N0YXR1cygkZXZlbnQpXCIgKGFscmVhZHlBdmFpbGFibGVSb2xlTWFwcGluZyk9XCJhbHJlYWR5QXZhaWxhYmxlUm9sZU1hcHBpbmcoJGV2ZW50KVwiPjwvYXBwLXJvbGUtbWFwcGluZy1nZW5lcmF0aW9uPlxuPC9kaXY+XG48ZGl2ICpuZ0lmPVwibmV4dFN0ZXAgPT09ICdyb2xlLW1hcHBpbmcnXCI+XG4gICAgPGFwcC1yb2xlLW1hcHBpbmctbGlzdCBbZm9ybURhdGFdPVwiZm9ybURhdGFcIiAobW92ZVRvSW5pdGlhbFNjcmVlbik9XCJtb3ZlVG9Jbml0aWFsU2NyZWVuKCRldmVudClcIj48L2FwcC1yb2xlLW1hcHBpbmctbGlzdD5cbjwvZGl2PiJdfQ==
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbC1zY3JlZW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL21vZHVsZXMvaW5pdGlhbC1zY3JlZW4vaW5pdGlhbC1zY3JlZW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL21vZHVsZXMvaW5pdGlhbC1zY3JlZW4vaW5pdGlhbC1zY3JlZW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsd0JBQXdCLElBQUksa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUcvRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7OztBQVE5RCxNQUFNLE9BQU8sc0JBQXNCO0lBc0NqQyxZQUNVLFFBQXNCLEVBQ3ZCLGFBQTRCLEVBQzVCLFFBQXFCLEVBQ3BCLE1BQWM7UUFIZCxhQUFRLEdBQVIsUUFBUSxDQUFjO1FBQ3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDcEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXpDeEIsZUFBVSxHQUFHLFdBQVcsQ0FBQztRQUN6QixVQUFLLEdBQUcsc0JBQXNCLENBQUM7UUFFL0Isa0JBQWEsR0FBRyxFQUFFLENBQUE7UUFDbEIsZUFBVSxHQUFHLEVBQUUsQ0FBQTtRQUVmLHFCQUFnQixHQUFhLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYTtZQUM1RSxlQUFlLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDcEUseUJBQW9CLEdBQVcsUUFBUSxDQUFD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QixDQUFDO2lCQUMvQixDQUFDLENBQUM7WUFDTCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDOytHQTVJVSxzQkFBc0I7bUdBQXRCLHNCQUFzQixzRENabkMsb2ZBS007OzRGRE9PLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdExlZ2FjeVRhYmxlRGF0YVNvdXJjZSBhcyBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktdGFibGUnXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSEVBREVSX0RBVEEgfSBmcm9tICcuLi9zaGFyZWQvY29uc3RhbnQvYXBwLmNvbnN0YW50JztcbmltcG9ydCB7IEV2ZW50U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvc2hhcmVkLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW5pdGlhbC1zY3JlZW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5pdGlhbC1zY3JlZW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbml0aWFsLXNjcmVlbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEluaXRpYWxTY3JlZW5Db21wb25lbnQge1xuICBoZWFkZXJEYXRhID0gSEVBREVSX0RBVEE7XG4gIHRpdGxlID0gJ3N1bmJpcmQtY2Itc3RhdGljd2ViJztcbiAgaXNNYWludGVuYW5jZVBhZ2U6IGFueVxuICBzZWxlY3RlZFZhbHVlID0gJydcbiAgc2VhcmNoVGV4dCA9ICcnXG4gIGRhdGFTb3VyY2U6IGFueVxuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFsnUmVxdWVzdElkJywgJ3RpdGxlJywgJ3JlcXVlc3RvcicsICdyZXF1ZXN0VHlwZScsXG4gICAgJ3JlcXVlc3RTdGF0dXMnLCAnYXNzaWduZWUnLCAncmVxdWVzdGVkT24nLCAnaW50ZXJlc3RzJywgJ2FjdGlvbiddXG4gIHNlbGVjdGVkTWluaXN0cnlUeXBlOiBzdHJpbmcgPSAnY2VudGVyJztcbiAgbWluaXN0cnlEYXRhOiBhbnkgPSBbXVxuICBtaW5pc3RyeUZ1bGxEYXRhOiBhbnkgPSBbXVxuICBzZWN0b3JEYXRhID0gW1xuICAgIHtcbiAgICAgIHZhbHVlOiAnV29tZW4gYW5kIGNoaWxkIGRldmVsb3BtZW50J1xuICAgIH0sXG4gICAge1xuICAgICAgdmFsdWU6ICdSdXJhbCBkZXZlbG9wbWVudCdcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnVXJiZW4gZGV2ZWxvcG1lbnQnXG4gICAgfSxcbiAgICB7XG4gICAgICB2YWx1ZTogJ0hlYWx0aGNhcmUnXG4gICAgfSxcbiAgICB7XG4gICAgICB2YWx1ZTogJ0FncmljdWx0dXJlJ1xuICAgIH0sXG4gICAge1xuICAgICAgdmFsdWU6ICdPdGhlcnMnXG4gICAgfVxuXG4gIF1cbiAgZm9ybURhdGE6IHt9XG4gIG5leHRTdGVwID0gJ2luaXRpYWwnXG4gIGxvZ2luU3VjY2VzcyA9IGZhbHNlXG4gIGNicEZpbmFsT2JqOiBhbnkgPSB7fVxuICB1c2VyRW1haWwgPSAnJ1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGV2ZW50U3ZjOiBFdmVudFNlcnZpY2UsXG4gICAgcHVibGljIHNoYXJlZFNlcnZpY2U6IFNoYXJlZFNlcnZpY2UsXG4gICAgcHVibGljIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XG4gICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+KFtdKVxuICAgIHRoaXMuaXNNYWludGVuYW5jZVBhZ2UgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmNsdWRlcygnL21haW50ZW5hbmNlJylcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmxvZ2luU3VjY2Vzcy5zdWJzY3JpYmUoKGRhdGEpID0+IHtcblxuICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgIHRoaXMubmV4dFN0ZXAgPSAnaW5pdGlhbCdcbiAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKClcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMubG9naW5TdWNjZXNzID0gdGhpcy5zaGFyZWRTZXJ2aWNlLmNoZWNrSWZMb2dpbigpXG4gICAgaWYgKHRoaXMubG9naW5TdWNjZXNzKSB7XG5cbiAgICAgIHRoaXMudXNlckVtYWlsID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJFbWFpbCcpXG4gICAgfVxuICAgIHRoaXMuY2JwRmluYWxPYmogPSB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0Q0JQUGxhbkxvY2FsU3RvcmFnZSgpXG4gICAgaWYgKHRoaXMuY2JwRmluYWxPYmogJiYgdGhpcy5jYnBGaW5hbE9iaj8ubWluaXN0cnkgJiYgKHRoaXMuY2JwRmluYWxPYmo/Lm1pbmlzdHJ5Py5zYk9yZ1R5cGUgPT09ICdtaW5pc3RyeScgfHwgdGhpcy5jYnBGaW5hbE9iaj8ubWluaXN0cnk/LnNiT3JnVHlwZSA9PT0gJ3N0YXRlJykgJiZcbiAgICAgIHRoaXMuY2JwRmluYWxPYmo/LnJvbGVfbWFwcGluZ19nZW5lcmF0aW9uPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMubmV4dFN0ZXAgPSAncm9sZS1tYXBwaW5nJ1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5leHRTdGVwID0gJ2luaXRpYWwnXG4gICAgfVxuICAgIC8vICBjb25zb2xlLmxvZygndGhpcy5uZXh0U3RlcCcsdGhpcy5uZXh0U3RlcClcbiAgICAvLyAgY29uc29sZS5sb2coJ3RoaXMuc2hhcmVkU2VydmljZS5jYicsIHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmopXG4gICAgXG4gICAgaWYoIWxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VyRW1haWwnKSkge1xuICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdTZXNzaW9uIGV4cGlyZWQuIFBsZWFzZSBsb2dpbiBhZ2Fpbi4nLCAnWCcsIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgICAgfSlcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLyddKTtcbiAgICB9XG4gIH1cblxuXG4gIHN1Y2Nlc3NSb2xlTWFwcGluZyhldmVudCkge1xuICAgIHRoaXMubmV4dFN0ZXAgPSAncm9sZS1tYXBwaW5nJ1xuICAgIHRoaXMuZm9ybURhdGEgPSBldmVudFxuICAgIC8vIGNvbnNvbGUubG9nKCdldmVudCcsIGV2ZW50KVxuICB9XG5cbiAgYWxyZWFkeUF2YWlsYWJsZVJvbGVNYXBwaW5nKGV2ZW50KSB7XG4gICAgdGhpcy5uZXh0U3RlcCA9ICdyb2xlLW1hcHBpbmcnXG4gICAgLy8gY29uc29sZS5sb2coJ2V2ZW50JywgZXZlbnQpXG4gICAgdGhpcy5mb3JtRGF0YSA9IGV2ZW50XG5cblxuICB9XG5cbiAgbW92ZVRvSW5pdGlhbFNjcmVlbihldmVudCkge1xuICAgIGlmIChldmVudCA9PT0gJ2FkZCcpIHtcbiAgICAgIHRoaXMubmV4dFN0ZXAgPSAnaW5pdGlhbCdcbiAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnZWRpdCcpIHtcbiAgICAgIHRoaXMubmV4dFN0ZXAgPSAnaW5pdGlhbCdcbiAgICB9XG5cbiAgfVxuXG4gIGxvZ2luU3VjY2Vzc1N0YXR1cyhldmVudCkge1xuICAgIHRoaXMubG9naW5TdWNjZXNzID0gZXZlbnRcbiAgICB0aGlzLm5leHRTdGVwID0gJ2luaXRpYWwnXG4gIH1cblxuICBsb2dvdXQoKSB7XG4gICAgXG4gICAgXG4gXG4gICAgY29uc29sZS5sb2coJ0xvZ291dCBzdWNjZXNzZnVsbHknKVxuICAgIFxuICAgXG4gICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmxvZ291dCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignWW91IGFyZSBsb2dvdXQgc3VjY2Vzc2Z1bGx5JywgJ1gnLCB7XG4gICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1zdWNjZXNzJ11cbiAgICAgICAgfSk7XG4gICAgICAgICBcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pO1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKClcbiAgICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKClcbiAgICAgICAgdGhpcy5sb2dpblN1Y2Nlc3MgPSBmYWxzZVxuICAgICAgICB0aGlzLm5leHRTdGVwID0gJ2luaXRpYWwnXG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oZXJyb3I/LmVycm9yPy5kZXRhaWwsICdYJywge1xuICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItZXJyb3InXVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdvVG9VcGxvYWREb2N1bWVudCgpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9haS91cGxvYWQtZG9jdW1lbnRzJ10pO1xuICB9XG5cblxufVxuIiwiPGRpdiAqbmdJZj1cIm5leHRTdGVwID09PSAnaW5pdGlhbCdcIj5cbiAgICA8YXBwLXJvbGUtbWFwcGluZy1nZW5lcmF0aW9uIFtsb2dpblN0YXR1c0ZsYWddPVwibG9naW5TdWNjZXNzXCIgKHN1Y2Nlc3NSb2xlTWFwcGluZyk9XCJzdWNjZXNzUm9sZU1hcHBpbmcoJGV2ZW50KVwiIChsb2dpblN1Y2Nlc3MpPVwibG9naW5TdWNjZXNzU3RhdHVzKCRldmVudClcIiAoYWxyZWFkeUF2YWlsYWJsZVJvbGVNYXBwaW5nKT1cImFscmVhZHlBdmFpbGFibGVSb2xlTWFwcGluZygkZXZlbnQpXCI+PC9hcHAtcm9sZS1tYXBwaW5nLWdlbmVyYXRpb24+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJuZXh0U3RlcCA9PT0gJ3JvbGUtbWFwcGluZydcIj5cbiAgICA8YXBwLXJvbGUtbWFwcGluZy1saXN0IFtmb3JtRGF0YV09XCJmb3JtRGF0YVwiIChtb3ZlVG9Jbml0aWFsU2NyZWVuKT1cIm1vdmVUb0luaXRpYWxTY3JlZW4oJGV2ZW50KVwiPjwvYXBwLXJvbGUtbWFwcGluZy1saXN0PlxuPC9kaXY+Il19
|
|
@@ -939,21 +939,21 @@ export class SharedService {
|
|
|
939
939
|
}
|
|
940
940
|
viewMDOApprovalRequests(request_id) {
|
|
941
941
|
let mdoBaseUrl = 'http://localhost:3000';
|
|
942
|
-
return this.http.get(`${mdoBaseUrl}/${API_END_POINTS.VIEW_MDO_APPROVAL_REQUEST}/${request_id}`)
|
|
942
|
+
return this.http.get(`${this.mdoBaseUrl}/${API_END_POINTS.VIEW_MDO_APPROVAL_REQUEST}/${request_id}`)
|
|
943
943
|
.pipe(map((response) => {
|
|
944
944
|
return response;
|
|
945
945
|
}));
|
|
946
946
|
}
|
|
947
947
|
approveAndPublishMDOApprovalRequests(request) {
|
|
948
948
|
let mdoBaseUrl = 'http://localhost:3000';
|
|
949
|
-
return this.http.post(`${mdoBaseUrl}/${API_END_POINTS.APPROVE_AND_PUBLISH_MDO_APPROVAL_REQUEST}`, request)
|
|
949
|
+
return this.http.post(`${this.mdoBaseUrl}/${API_END_POINTS.APPROVE_AND_PUBLISH_MDO_APPROVAL_REQUEST}`, request)
|
|
950
950
|
.pipe(map((response) => {
|
|
951
951
|
return response;
|
|
952
952
|
}));
|
|
953
953
|
}
|
|
954
954
|
rejectMDOApprovalRequests(request) {
|
|
955
955
|
let mdoBaseUrl = 'http://localhost:3000';
|
|
956
|
-
return this.http.post(`${mdoBaseUrl}/${API_END_POINTS.REJECT_APPROVAL_REQUEST}`, request)
|
|
956
|
+
return this.http.post(`${this.mdoBaseUrl}/${API_END_POINTS.REJECT_APPROVAL_REQUEST}`, request)
|
|
957
957
|
.pipe(map((response) => {
|
|
958
958
|
return response;
|
|
959
959
|
}));
|
|
@@ -998,4 +998,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
998
998
|
type: HostListener,
|
|
999
999
|
args: ['window:resize', ['$event']]
|
|
1000
1000
|
}] } });
|
|
1001
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvY2JwLWFpL3NyYy9saWIvbW9kdWxlcy9zaGFyZWQvc2VydmljZXMvc2hhcmVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxZQUFZO0FBQ1osT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUErQixPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBOzs7O0FBRXBDLCtFQUErRTtBQUUvRSxNQUFNLGNBQWMsR0FBRztJQUNyQixhQUFhLEVBQUUsMEJBQTBCO0lBQ3pDLG9CQUFvQixFQUFFLDBCQUEwQjtJQUNoRCxxQkFBcUIsRUFBRSwwQkFBMEI7SUFDakQsa0JBQWtCLEVBQUUsd0JBQXdCO0lBQzVDLGFBQWEsRUFBRSw2QkFBNkI7SUFDNUMsYUFBYSxFQUFFLDBCQUEwQjtJQUN6QyxnQkFBZ0IsRUFBRSxnQ0FBZ0M7SUFDbEQsZ0JBQWdCLEVBQUUseUNBQXlDO0lBQzNELG1CQUFtQixFQUFFLHVDQUF1QztJQUM1RCxjQUFjLEVBQUUsMkNBQTJDO0lBQzNELGdDQUFnQyxFQUFFLDZDQUE2QztJQUMvRSwyQ0FBMkMsRUFBRSw2Q0FBNkM7SUFDMUYsbUJBQW1CLEVBQUUsZ0NBQWdDO0lBQ3JELHNCQUFzQixFQUFFLG9CQUFvQjtJQUM1QyxZQUFZLEVBQUUsaUNBQWlDO0lBQy9DLFdBQVcsRUFBRSw0QkFBNEI7SUFDekMsY0FBYyxFQUFFLDRCQUE0QjtJQUM1QyxxQkFBcUIsRUFBRSwwQkFBMEI7SUFDakQsNEJBQTRCLEVBQUUsMkNBQTJDO0lBQ3pFLHFCQUFx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dGlDVSxhQUFhO21IQUFiLGFBQWEsY0FIWixNQUFNOzs0RkFHUCxhQUFhO2tCQUp6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjsySEFpQkMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuLy9JbmplY3RhYmxlXG5pbXBvcnQgeyBIb3N0TGlzdGVuZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBJbml0U2VydmljZSB9IGZyb20gJy4vaW5pdC5zZXJ2aWNlJztcbi8vIGltcG9ydCBjb25maWd1cmF0aW9uIGZyb20gJy4uLy4uLy4uLy4uL2Fzc2V0cy9qc29uZmlsZXMvY29uZmlndXJhdGlvbnMuanNvbidcblxuY29uc3QgQVBJX0VORF9QT0lOVFMgPSB7XG4gIEZFVENIX0NPVVJTRVM6ICdhcGkvdjEvY291cnNlL3YyL2V4cGxvcmUnLFxuICBGRVRDSF9QT1NUQUxfQ09VUlNFUzogJ2FwaS92MS9jb250ZW50L3YxL3NlYXJjaCcsXG4gIEZFVENIX1JBSUxXQVlfQ09VUlNFUzogJ2FwaS92MS9jb250ZW50L3YxL3NlYXJjaCcsXG4gIEZFVENIX0hBTExfT0ZfRkFNRTogJ2FwaS92MS9oYWxsb2ZmYW1lL3JlYWQnLFxuICBOTFdfRk9STV9SRUFEOiAnYXBpcy92MS9zdGF0aWMvZm9ybS92MS9yZWFkJyxcbiAgRkVUQ0hfVEVOREVSUzogJ2FwaS92MS9jb250ZW50L3YxL3NlYXJjaCcsXG4gIEdFVF9TVEFURV9DRU5URVI6ICdjYnAtdHBjLWFpL2FwaS92MS9zdGF0ZS1jZW50ZXInLFxuICBHRVRfUk9MRV9NQVBQSU5HOiAnY2JwLXRwYy1haS9hcGkvdjMvcm9sZS1tYXBwaW5nL2dlbmVyYXRlJyxcbiAgREVMRVRFX1JPTEVfTUFQUElORzogJ2NicC10cGMtYWkvYXBpL3YxL3JvbGUtbWFwcGluZy9kZWxldGUnLFxuICBHRVRfREVQQVJUTUVOVDogJ2NicC10cGMtYWkvYXBpL3YxL2RlcGFydG1lbnQvc3RhdGUtY2VudGVyJyxcbiAgR0VUX1JPTEVfTUFQUElOR19CWV9TVEFURV9DRU5URVI6ICdjYnAtdHBjLWFpL2FwaS92MS9yb2xlLW1hcHBpbmcvc3RhdGUtY2VudGVyJyxcbiAgR0VUX1JPTEVfTUFQUElOR19CWV9TVEFURV9DRU5URVJfREVQQVJUTUVOVDogJ2NicC10cGMtYWkvYXBpL3YxL3JvbGUtbWFwcGluZy9zdGF0ZS1jZW50ZXInLFxuICBVUERBVEVfUk9MRV9NQVBQSU5HOiAnY2JwLXRwYy1haS9hcGkvdjEvcm9sZS1tYXBwaW5nJyxcbiAgR0VUX1JFQ09NTUVOREVEX0NPVVJTRTogJ2NicC10cGMtYWkvYXBpL3YxLycsXG4gIFNBVkVfQ09VUlNFUzogJ2NicC10cGMtYWkvYXBpL3YxL2NicC1wbGFuL3NhdmUnLFxuICBHRVRfQ09VUlNFUzogJ2NicC10cGMtYWkvYXBpL3YxL2NicC1wbGFuJyxcbiAgVVBEQVRFX0NPVVJTRVM6ICdjYnAtdHBjLWFpL2FwaS92MS9jYnAtcGxhbicsXG4gIElHT1RfU1VHR0VTVEVEX0NPVVJTRTogJ2FwaS92MS9jb250ZW50L3YxL3NlYXJjaCcsXG4gIFNBVkVfQ09VUlNFX1NVR0dFU1RFRF9DT1VSU0U6ICdjYnAtdHBjLWFpL2FwaS92MS9jb3Vyc2Uvc3VnZ2VzdGlvbnMvc2F2ZScsXG4gIFNVR0dFU1RFRF9DT1VSU0VfTElTVDogJ2NicC10cGMtYWkvYXBpL3YxL2NvdXJzZS9zdWdnZXN0aW9ucycsXG4gIEFERF9ERVNJR05BVElPTjogJ2NicC10cGMtYWkvYXBpL3YyL3JvbGUtbWFwcGluZy9hZGQtZGVzaWduYXRpb24nLFxuICBMT0dJTjogJ2NicC10cGMtYWkvYXBpL3YxL2F1dGgvbG9naW4nLFxuICBMT0dPVVQ6ICdjYnAtdHBjLWFpL2FwaS92MS9hdXRoL2xvZ291dCcsXG4gIERFTEVURV9ST0xFX01BUFBJTkdfQllfU1RBVEVfQ0VOVEVSOiAnY2JwLXRwYy1haS9hcGkvdjEvcm9sZS1tYXBwaW5nJyxcbiAgQUREX1VTRVJfQ09VUlNFUzogJ2NicC10cGMtYWkvYXBpL3YxL3VzZXItYWRkZWQtY291cnNlcycsXG4gIEdFVF9VU0VSX0NPVVJTRVM6ICdjYnAtdHBjLWFpL2FwaS92MS91c2VyLWFkZGVkLWNvdXJzZXMvcm9sZS1tYXBwaW5nJyxcbiAgR0VUX1VTRVJfU0VMRUNURURfQ09VUlNFUzogJ2NicC10cGMtYWkvYXBpL3YxL2NicC1wbGFuJyxcbiAgVVBMT0FEX0RPQ1VNRU5UOiAnY2JwLXRwYy1haS9hcGkvdjEvZmlsZXMnLFxuICBHRVRfRE9DVU1FTlRTOiAnY2JwLXRwYy1haS9hcGkvdjEvZmlsZXMnLFxuICBERUxFVEVfRklMRTogJ2NicC10cGMtYWkvYXBpL3YxL2ZpbGVzJyxcbiAgVFJJR0dFUl9GSUxFX1NVTU1BUlk6ICdjYnAtdHBjLWFpL2FwaS92MS9maWxlcycsXG4gIERPV05MT0FEX0ZJTEU6ICdjYnAtdHBjLWFpL2FwaS92MS9maWxlcycsXG4gIERFTEVURV9TVU1NQVJZOiAnY2JwLXRwYy1haS9hcGkvdjEvZmlsZXMnLFxuICBHRVRfVVNFUl9QUk9GSUxFOiAnY2JwLXRwYy1haS9hcGkvdjEvdXNlcnMvbWUnLFxuICBHRVRfVVNFUl9SRUNPTU1FTkVEX0NPVVJTRVM6ICdjYnAtdHBjLWFpL2FwaS92MS9jb3Vyc2UtcmVjb21tZW5kYXRpb25zJyxcbiAgRE9XTkxPQURfUERGOiAnY2JwLXRwYy1haS9hcGkvdjEvcmVwb3J0cy9jYnAtcGxhbi9kb3dubG9hZCcsXG4gIERPV05MT0FEX1BERl9BQ0JQOiAnY2JwLXRwYy1haS9hcGkvdjEvcmVwb3J0cy9hY2JwLXBsYW4vZG93bmxvYWQnLFxuICBDRU5URVJfQkFTRURfTUlOSVNUUlk6ICdjYnAtdHBjLWFpL2FwaS92MS9kZXBhcnRtZW50L3N0YXRlLWNlbnRlcicsXG4gIERPV05MT0FEX0NPVVJTRV9SRUNPTU1FTkRBVElPTjogJ2NicC10cGMtYWkvYXBpL3YxL3JlcG9ydHMvY291cnNlLXJlY29tbWVuZGF0aW9ucy9kb3dubG9hZCcsXG4gIERFTEVURV9DT1VSU0VfUkVDT01NRU5EQVRJT046ICdjYnAtdHBjLWFpL2FwaS92MS9jYnAtcGxhbicsXG4gIFVQREFURV9ERVNJR05BVElPTl9ISUVSQVJDSFk6ICdjYnAtdHBjLWFpL2FwaS92MS9yb2xlLW1hcHBpbmcvcmVvcmRlcicsXG4gIFNFQVJDSF9QVUJMSUNfREVTSUdOQVRJT046ICdhcGlzL3B1YmxpYy92OC9kZXNpZ25hdGlvbi9zZWFyY2gnLFxuICBEQVNIQk9BUkRfQURNSU46ICdjYnAtdHBjLWFpL2FwaS92MS9kYXNoYm9hcmQvY2JwLWRhc2hib2FyZC1tZXRyaWNzJyxcbiAgR0FQX0FOQUxZU0lTX0FETUlOOiAnY2JwLXRwYy1haS9hcGkvdjEvZGFzaGJvYXJkL2dhcC1hbmFseXNpcycsXG4gIERBU0hCT0FSRF9QVUJMSUM6ICdjYnAtdHBjLWFpL2FwaS92MS9kYXNoYm9hcmQvbXktZGFzaGJvYXJkLW1ldHJpY3MnLFxuICBHQVBfQU5BTFlTSVNfUFVCTElDOiAnY2JwLXRwYy1haS9hcGkvdjEvZGFzaGJvYXJkL215LWdhcC1hbmFseXNpcycsXG4gIE1BVENIRURfUk9MRV9NQVBQSU5HOiAnY2JwLXRwYy1haS9hcGkvdjEvcm9sZS1tYXBwaW5nL21hdGNoLWRlc2lnbmF0aW9ucycsXG4gIEdFVF9BUFBST1ZBTF9SRVFVRVNUUzogJ2NicC10cGMtYWkvYXBpL3YxL2FwcHJvdmFsLXJlcXVlc3RzL2xpc3QnLFxuICBTRUFSQ0hfUFVCTElDX01ETzogJ2NicC10cGMtYWkvYXBpL3YxL2FwcHJvdmFsLXJlcXVlc3RzL21kby1hZG1pbnMnLFxuICBTQVZFX0FQUFJPVkFMX1JFUVVFU1Q6ICdjYnAtdHBjLWFpL2FwaS92MS9hcHByb3ZhbC1yZXF1ZXN0cy9zZW5kJyxcbiAgVklFV19BUFBST1ZBTF9SRVFVRVNUOiAnY2JwLXRwYy1haS9hcGkvdjEvYXBwcm92YWwtcmVxdWVzdHMnLFxuICBSRVZPS0VfQVBQUk9WQUxfUkVRVUVTVDogJ2NicC10cGMtYWkvYXBpL3YxL2FwcHJvdmFsLXJlcXVlc3RzL3Jldm9rZScsXG4gIFNBVkVfREVTSUdOQVRJT05fQVBQUk9WQUxfUkVRVUVTVDogJ2NicC10cGMtYWkvYXBpL3YxL2Rlc2lnbmF0aW9uLWFwcHJvdmFsL2NyZWF0ZScsXG4gIFZJRVdfTURPX0FQUFJPVkFMX1JFUVVFU1Q6ICdhcGlzL3Byb3hpZXMvdjgvYWkvY2JwL3YxL21kby9hcHByb3ZhbC1yZXF1ZXN0cy9yZWFkJyxcbiAgQVBQUk9WRV9BTkRfUFVCTElTSF9NRE9fQVBQUk9WQUxfUkVRVUVTVDogJ2FwaXMvcHJveGllcy92OC9haS9jYnAvdjEvbWRvL2FwcHJvdmFsLXJlcXVlc3RzL3B1Ymxpc2gnLFxuICBSRUpFQ1RfQVBQUk9WQUxfUkVRVUVTVDogJ2FwaXMvcHJveGllcy92OC9haS9jYnAvdjEvbWRvL2FwcHJvdmFsLXJlcXVlc3RzL3JlamVjdCcsXG4gIFJFSkVDVF9JVEVNX0FQUFJPVkFMX1JFUVVFU1Q6ICdhcGlzL3Byb3hpZXMvdjgvYWkvY2JwL3YxL21kby9hcHByb3ZhbC1yZXF1ZXN0cy9pdGVtcy9yZWplY3QnLFxuICBNRE9fREVTSUdOQVRJT05fU0VBUkNIOiAnYXBpcy9wcm94aWVzL3Y4L2FpL2NicC92MS9kZXNpZ25hdGlvbi9zZWFyY2gnLFxuICBNRE9fQUREX1VTRVJfQ09VUlNFOiAnYXBpcy9wcm94aWVzL3Y4L2FpL2NicC92MS9tZG8vYXBwcm92YWwtcmVxdWVzdHMvY291cnNlL2FkZCcsXG4gIE1ET19TVUdHRVNURURfQ09VUlNFX0xJU1Q6ICdhcGlzL3Byb3hpZXMvdjgvYWkvY2JwL3YxL2NvdXJzZS9zdWdnZXN0aW9ucycsXG4gIE1ET19ST0xFX01BUFBJTkdfVVBEQVRFOidhcGlzL3Byb3hpZXMvdjgvYWkvY2JwL3YxL21kby9hcHByb3ZhbC1yZXF1ZXN0cy9pdGVtcy91cGRhdGUnLFxuICBSRVBVQkxJU0hfUkVRVUVTVDogJ2FwaXMvcHJveGllcy92OC9haS9jYnAvdjEvbWRvL2FwcHJvdmFsLXJlcXVlc3RzL3B1Ymxpc2gvcmV0cnknXG5cbn1cblxuXG5cbi8vIEBEaXJlY3RpdmUoKVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5cbmV4cG9ydCBjbGFzcyBTaGFyZWRTZXJ2aWNlIHtcbiAgY2JwUGxhbkZpbmFsT2JqOiBhbnkgPSB7fVxuICBiYXNlVXJsOiBzdHJpbmdcbiAgY29uZmlnRGV0YWlsczogYW55XG4gIG1kb0Jhc2VVcmw6IGFueVxuICBtZG9Db25maWdEZXRhaWxzOiBhbnlcbiAgc2NyZWVuV2lkdGg6IG51bWJlcjtcbiAgaGVhZGVyczogYW55XG4gIHN1bW1hcnlUcmlnZ2VyRXhlY3V0ZWQgPSBuZXcgU3ViamVjdCgpXG4gIGxvZ2luU3VjY2VzcyA9IG5ldyBTdWJqZWN0KClcbiAgY2hlY2tSb2xlTWFwcGluZ0Zvcm1WYWxpZGF0aW9uID0gbmV3IFN1YmplY3QoKVxuICB1cGRhdGVEZXNpZ25hdGlvbkhpZXJhcmNoeVN1YmplY3QgPSBuZXcgU3ViamVjdCgpXG4gIGZyb21NZG9Qb3J0YWwgPSBmYWxzZVxuICByZXF1ZXN0RGF0YTphbnlcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIG9uUmVzaXplKGV2ZW50KSB7XG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgaW5pdFN2YzogSW5pdFNlcnZpY2UsXG4gICkge1xuICAgIGlmIChpbml0U3ZjICYmIHRoaXMuaW5pdFN2Yy5iYXNlVXJsICYmIHRoaXMuaW5pdFN2Yy5jb25maWdEZXRhaWxzKSB7XG4gICAgICBjb25zb2xlLmxvZygndGhpcy5pbml0U3ZjJywgdGhpcy5pbml0U3ZjKVxuICAgICAgdGhpcy5iYXNlVXJsID0gdGhpcy5pbml0U3ZjLmJhc2VVcmxcbiAgICAgIHRoaXMuY29uZmlnRGV0YWlscyA9IHRoaXMuaW5pdFN2Yy5jb25maWdEZXRhaWxzXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0Q29uZmlEZXRhaWxzKClcbiAgICB9XG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIGNvbnN0IHN0b3JhZ2VEYXRhOiBhbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsb2dpbkRhdGEnKSlcbiAgICBjb25zb2xlLmxvZygnc3RvcmFnZURhdGEtLScsIHN0b3JhZ2VEYXRhKVxuICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHtzdG9yYWdlRGF0YT8uYWNjZXNzX3Rva2VufWBcbiAgICB9KTtcbiAgfVxuXG4gIHNldENvbmZpRGV0YWlscyhjb25maWdEZXRhaWxzOiBhbnkgPSBudWxsKSB7XG4gICAgaWYgKGNvbmZpZ0RldGFpbHMpIHtcbiAgICAgIHRoaXMuY29uZmlnRGV0YWlscyA9IGNvbmZpZ0RldGFpbHNcbiAgICAgIHRoaXMuYmFzZVVybCA9IGNvbmZpZ0RldGFpbHMucG9ydGFsVVJMXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2V0Q29uZmlnRGV0YWlscygpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpZ0RldGFpbHMgPSByZXNwb25zZVxuICAgICAgICB0aGlzLmJhc2VVcmwgPSByZXNwb25zZS5wb3J0YWxVUkxcbiAgICAgIH0pXG4gICAgfVxuICB9XG4gIGdldENvbmZpZygpIHtcbiAgICBpZiAodGhpcy5jb25maWdEZXRhaWxzKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWdEZXRhaWxzO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBnZXRDb25maWdEZXRhaWxzKCk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KCdhc3NldHMvanNvbmZpbGVzL2NvbmZpZ3VyYXRpb25zLmpzb24nKTtcbiAgfVxuXG5cblxuICBnZXRjb3Vyc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuRkVUQ0hfQ09VUlNFU31gKVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdGVGZWF0dXJlQ291cnNlcyhyZXNwb25zZS5yZXN1bHQuY29udGVudClcbiAgICAgIH0pKVxuICB9XG5cbiAgZ2V0UG9zdGFsY291cnNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkZFVENIX1BPU1RBTF9DT1VSU0VTfWApXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0ZUZlYXR1cmVDb3Vyc2VzKHJlc3BvbnNlLnJlc3VsdC5jb250ZW50KVxuICAgICAgfSkpXG4gIH1cblxuICBnZXRSYWlsd2F5Y291cnNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkZFVENIX1JBSUxXQVlfQ09VUlNFU31gKVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdGVGZWF0dXJlQ291cnNlcyhyZXNwb25zZS5yZXN1bHQuY29udGVudClcbiAgICAgIH0pKVxuICB9XG5cbiAgZ2V0SGFsbE9mRmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5GRVRDSF9IQUxMX09GX0ZBTUV9YCwgbnVsbClcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgZm9ybWF0ZUZlYXR1cmVDb3Vyc2VzKGZlYXR1cmVDb3Vyc2VzOiBhbnkpIHtcbiAgICBjb25zdCBmb3JtYXRlZEZlYXR1cmVDb3Vyc2VzID0gW107XG4gICAgY29uc3QgZm9ybWF0ZWROZXdzcm9vbSA9IFtdO1xuICAgIGNvbnN0IGZvcm1hdGVkUGhvdG9nYWxsYXJ5ID0gW107XG4gICAgY29uc3QgZm9ybWF0ZWRUZXN0aW1vbmlhbCA9IFtdO1xuICAgIGlmIChmZWF0dXJlQ291cnNlcykge1xuICAgICAgZmVhdHVyZUNvdXJzZXMuZm9yRWFjaChjb3Vyc2UgPT4ge1xuICAgICAgICBpZiAoY291cnNlLnByaW1hcnlDYXRlZ29yeSA9PT0gJ0NvdXJzZScpIHtcbiAgICAgICAgICBjb25zdCBmb3JtYXRlZENvdXJzZSA9IHtcbiAgICAgICAgICAgIHBvc3RlckltYWdlOiBjb3Vyc2UucG9zdGVySW1hZ2UsXG4gICAgICAgICAgICBvcmdhbmlzYXRpb246IGNvdXJzZS5vcmdhbmlzYXRpb25bMF0gPyBjb3Vyc2Uub3JnYW5pc2F0aW9uWzBdIDogJ0thcm1heW9naSBCaGFyYXQnLFxuICAgICAgICAgICAgbmFtZTogY291cnNlLm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogY291cnNlLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogY291cnNlLmlkZW50aWZpZXIsXG4gICAgICAgICAgICBhbHQ6IGNvdXJzZS5uYW1lLFxuICAgICAgICAgICAgY3JlYXRvckxvZ286IGNvdXJzZS5jcmVhdG9yTG9nbyB8fCAnJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiB0aGlzLnRpbWVDb252ZXJ0KGNvdXJzZS5kdXJhdGlvbiksXG4gICAgICAgICAgfVxuICAgICAgICAgIGZvcm1hdGVkRmVhdHVyZUNvdXJzZXMucHVzaChmb3JtYXRlZENvdXJzZSlcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb3Vyc2UucmVzb3VyY2VDYXRlZ29yeSA9PT0gJ05ld3Nyb29tJykge1xuICAgICAgICAgIGNvbnN0IGZvcm1hdGVkQ291cnNlID0ge1xuICAgICAgICAgICAgcG9zdGVySW1hZ2U6IGNvdXJzZS5wb3N0ZXJJbWFnZSxcbiAgICAgICAgICAgIG5hbWU6IGNvdXJzZS5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGNvdXJzZS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvdXJzZS5pZGVudGlmaWVyLFxuICAgICAgICAgICAgYWx0OiBjb3Vyc2UubmFtZSxcbiAgICAgICAgICAgIGNsb3VkU3RvcmFnZUtleTogYCR7dGhpcy5iYXNlVXJsfWFzc2V0cy9wdWJsaWMvJHtjb3Vyc2UuY2xvdWRTdG9yYWdlS2V5fWBcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9ybWF0ZWROZXdzcm9vbS5wdXNoKGZvcm1hdGVkQ291cnNlKVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvdXJzZS5yZXNvdXJjZUNhdGVnb3J5ID09PSAnUGhvdG8gR2FsbGVyeScpIHtcbiAgICAgICAgICBjb25zdCBmb3JtYXRlZENvdXJzZSA9IHtcbiAgICAgICAgICAgIG5hbWU6IGNvdXJzZS5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGNvdXJzZS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvdXJzZS5pZGVudGlmaWVyLFxuICAgICAgICAgICAgYWx0OiBjb3Vyc2UubmFtZSxcbiAgICAgICAgICAgIGNsb3VkU3RvcmFnZUtleTogYCR7dGhpcy5iYXNlVXJsfWFzc2V0cy9wdWJsaWMvJHtjb3Vyc2UuY2xvdWRTdG9yYWdlS2V5fWBcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9ybWF0ZWRQaG90b2dhbGxhcnkucHVzaChmb3JtYXRlZENvdXJzZSlcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb3Vyc2UucmVzb3VyY2VDYXRlZ29yeSA9PT0gJ1Rlc3RpbW9uaWFscycpIHtcbiAgICAgICAgICBjb25zdCBmb3JtYXRlZENvdXJzZSA9IHtcbiAgICAgICAgICAgIG5hbWU6IGNvdXJzZS5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGNvdXJzZS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvdXJzZS5pZGVudGlmaWVyLFxuICAgICAgICAgICAgYWx0OiBjb3Vyc2UubmFtZSxcbiAgICAgICAgICAgIGNsb3VkU3RvcmFnZUtleTogYCR7dGhpcy5iYXNlVXJsfWFzc2V0cy9wdWJsaWMvJHtjb3Vyc2UuY2xvdWRTdG9yYWdlS2V5fWAsXG4gICAgICAgICAgICBtaW1lVHlwZTogY291cnNlLm1pbWVUeXBlLFxuICAgICAgICAgICAgcG9zdGVySW1hZ2U6IGNvdXJzZS5wb3N0ZXJJbWFnZSxcbiAgICAgICAgICAgIGFydGlmYWN0VXJsOiBjb3Vyc2UuYXJ0aWZhY3RVcmwsXG4gICAgICAgICAgfVxuICAgICAgICAgIGZvcm1hdGVkVGVzdGltb25pYWwucHVzaChmb3JtYXRlZENvdXJzZSlcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB7IGNvdXJzZTogZm9ybWF0ZWRGZWF0dXJlQ291cnNlcywgbmV3c3Jvb206IGZvcm1hdGVkTmV3c3Jvb20sIGdhbGxhcnk6IGZvcm1hdGVkUGhvdG9nYWxsYXJ5LCB0ZXN0aW1vbmlsczogZm9ybWF0ZWRUZXN0aW1vbmlhbCB9XG4gIH1cblxuICB0aW1lQ29udmVydChkdXJhdGlvbjogbnVtYmVyKSB7XG4gICAgaWYgKGR1cmF0aW9uKSB7XG4gICAgICB2YXIgbnVtID0gZHVyYXRpb247XG4gICAgICB2YXIgaG91cnMgPSAobnVtIC8gMzYwMCk7XG4gICAgICB2YXIgcmhvdXJzID0gTWF0aC5mbG9vcihob3Vycyk7XG4gICAgICB2YXIgbWludXRlcyA9IChob3VycyAtIHJob3VycykgKiA2MDtcbiAgICAgIHZhciBybWludXRlcyA9IE1hdGgucm91bmQobWludXRlcyk7XG4gICAgICBpZiAocm1pbnV0ZXMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJob3VycyArIFwiaFwiO1xuICAgICAgfSBlbHNlIGlmIChyaG91cnMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJtaW51dGVzICsgXCJtXCJcbiAgICAgIH1cbiAgICAgIHJldHVybiByaG91cnMgKyBcImggXCIgKyBybWludXRlcyArIFwibVwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cblxuICBnZXRDbGllbnRMaXN0KCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KCcuL2Fzc2V0cy9qc29uZmlsZXMvY2xpZW50LWxpc3QuanNvbicpO1xuICB9XG5cbiAgZ2V0VGVuZGVycygpIHtcbiAgICBjb25zdCBib2R5ID0ge1xuICAgICAgcmVxdWVzdDoge1xuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgcHJpbWFyeUNhdGVnb3J5OiBbXCJ0ZW5kZXJcIl0sXG4gICAgICAgICAgc3RhdHVzOiB7IFwiIT1cIjogXCJSZXRpcmVkXCIgfVxuICAgICAgICB9LFxuICAgICAgICBmYWNldHM6IFtcIm1pbWVUeXBlXCJdLFxuICAgICAgICBzb3J0Qnk6IHsgY3JlYXRlZE9uOiBcIkRlc2NcIiB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkZFVENIX1RFTkRFUlN9YCwgYm9keSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgZ2V0Tm90aWZpY2F0aW9ucygpIHtcbiAgICBjb25zdCBib2R5ID0ge1xuICAgICAgcmVxdWVzdDoge1xuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgcHJpbWFyeUNhdGVnb3J5OiBbXCJub3RpZmljYXRpb25cIl0sXG4gICAgICAgICAgc3RhdHVzOiB7IFwiIT1cIjogXCJSZXRpcmVkXCIgfVxuICAgICAgICB9LFxuICAgICAgICBmYWNldHM6IFtcIm1pbWVUeXBlXCJdLFxuICAgICAgICBzb3J0Qnk6IHsgY3JlYXRlZE9uOiBcImRlc2NcIiB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkZFVENIX1RFTkRFUlN9YCwgYm9keSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG4gIGdldEZvcm1SZWFkRGF0YShyZXE6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLk5MV19GT1JNX1JFQUR9YCwgcmVxKVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuXG4gIGdldE1pbmlzdHJ5RGF0YShtaW5pc3RyeVR5cGUpIHtcbiAgICBsZXQgc3ViX29yZ190eXBlID0gJydcbiAgICBpZiAobWluaXN0cnlUeXBlID09ICdtaW5pc3RyeScpIHtcbiAgICAgIHN1Yl9vcmdfdHlwZSA9ICdtaW5pc3RyeSdcbiAgICB9IGVsc2Uge1xuICAgICAgc3ViX29yZ190eXBlID0gJ3N0YXRlJ1xuICAgIH1cbiAgICBjb25zdCBzdG9yYWdlRGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbG9naW5EYXRhJykpXG4gICAgY29uc29sZS5sb2coJ3N0b3JhZ2VEYXRhLS0nLCBzdG9yYWdlRGF0YSlcbiAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7c3RvcmFnZURhdGE/LmFjY2Vzc190b2tlbn1gXG4gICAgfSk7XG4gICAgY29uc29sZS5sb2coJ3RoaXMuYmFzZVVybCcsIHRoaXMuYmFzZVVybClcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5HRVRfU1RBVEVfQ0VOVEVSfS8/c3ViX29yZ190eXBlPSR7c3ViX29yZ190eXBlfWAsIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuICBnZW5lcmF0ZVJvbGVNYXBwaW5nKHJlcUJvZHksIGZpbGVzPzogRmlsZSB8IEZpbGVbXSkge1xuICAgIGNvbnNvbGUubG9nKCdyZXFCb2R5LS0nLCByZXFCb2R5KTtcbiAgICBjb25zb2xlLmxvZygnZmlsZXMtLS0nLCBmaWxlcylcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgLy8gQWRkIHJlcXVpcmVkIGZpZWxkc1xuICAgIGlmIChyZXFCb2R5LnN0YXRlX2NlbnRlcl9pZCkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdzdGF0ZV9jZW50ZXJfaWQnLCByZXFCb2R5LnN0YXRlX2NlbnRlcl9pZCk7XG4gICAgfVxuXG4gICAgaWYgKHJlcUJvZHkuc3RhdGVfY2VudGVyX25hbWUpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnc3RhdGVfY2VudGVyX25hbWUnLCByZXFCb2R5LnN0YXRlX2NlbnRlcl9uYW1lKTtcbiAgICB9XG5cbiAgICBpZiAocmVxQm9keS5kZXBhcnRtZW50X2lkKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2RlcGFydG1lbnRfaWQnLCByZXFCb2R5LmRlcGFydG1lbnRfaWQpO1xuICAgIH1cblxuICAgIGlmIChyZXFCb2R5LmRlcGFydG1lbnRfbmFtZSkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdkZXBhcnRtZW50X25hbWUnLCByZXFCb2R5LmRlcGFydG1lbnRfbmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHJlcUJvZHkuaW5zdHJ1Y3Rpb24pIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnaW5zdHJ1Y3Rpb24nLCByZXFCb2R5Lmluc3RydWN0aW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCBjYnBEYXRhOiBhbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjYnBQbGFuRmluYWxPYmonKSB8fCAne30nKTtcbiAgICBjb25zdCBvcmdUeXBlID1cbiAgICAgIGNicERhdGE/Lm1pbmlzdHJ5Py5zYk9yZ1R5cGUgfHxcbiAgICAgIGNicERhdGE/Lm9yZ190eXBlIHx8XG4gICAgICAnJztcbiAgICBpZiAob3JnVHlwZSkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdvcmdfdHlwZScsIG9yZ1R5cGUpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBtdWx0aXBsZSBvciBzaW5nbGUgZmlsZVxuICAgIGlmIChmaWxlcykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmlsZXMpKSB7XG4gICAgICAgIGZpbGVzLmZvckVhY2goKGZpbGU6IEZpbGUpID0+IHtcbiAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2FkZGl0aW9uYWxfZG9jdW1lbnQnLCBmaWxlLCBmaWxlLm5hbWUpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNpbmdsZSBmaWxlXG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnYWRkaXRpb25hbF9kb2N1bWVudCcsIGZpbGVzLCBmaWxlcy5uYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEZWJ1ZyBGb3JtRGF0YSBjb250ZW50XG4gICAgY29uc29sZS5sb2coXCJGb3JtRGF0YSBjb250ZW50czpcIik7XG4gICAgZm9ybURhdGEuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgJHtrZXl9OiBGSUxFIC0+ICR7dmFsdWUubmFtZX0gKCR7dmFsdWUuc2l6ZX0gYnl0ZXMpYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyhgJHtrZXl9OiAke3ZhbHVlfWApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVycztcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkdFVF9ST0xFX01BUFBJTkd9YCwgZm9ybURhdGEsIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgIH0pKTtcbiAgfVxuXG5cblxuICBnZXREZXBhcnRtZW50TGlzdChtaW5pc3RyeUlkKSB7XG4gICAgY29uc3Qgc3RvcmFnZURhdGE6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xvZ2luRGF0YScpKVxuICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHtzdG9yYWdlRGF0YT8uYWNjZXNzX3Rva2VufWBcbiAgICB9KTtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5HRVRfREVQQVJUTUVOVH0vJHttaW5pc3RyeUlkfWAsIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuICBnZXRSb2xlTWFwcGluZ0J5U3RhdGVDZW50ZXIoc3RhdGVfY2VudGVyX2lkKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuR0VUX1JPTEVfTUFQUElOR19CWV9TVEFURV9DRU5URVJ9LyR7c3RhdGVfY2VudGVyX2lkfT9sb2FkX2NicF9wbGFucz10cnVlYCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGdldFJvbGVNYXBwaW5nQnlTdGF0ZUNlbnRlckFuZERlcGFydG1lbnQoc3RhdGVfY2VudGVyX2lkLCBkZXBhcnRtZW50X2lkKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIGlmICh0eXBlb2YgZGVwYXJ0bWVudF9pZCA9PT0gJ3N0cmluZycpe1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5HRVRfUk9MRV9NQVBQSU5HX0JZX1NUQVRFX0NFTlRFUn0vJHtzdGF0ZV9jZW50ZXJfaWR9L2RlcGFydG1lbnQvJHtkZXBhcnRtZW50X2lkfT9sb2FkX2NicF9wbGFucz10cnVlYCwgeyBoZWFkZXJzIH0pXG4gICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgICB9KSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5HRVRfUk9MRV9NQVBQSU5HX0JZX1NUQVRFX0NFTlRFUn0vJHtzdGF0ZV9jZW50ZXJfaWR9P2xvYWRfY2JwX3BsYW5zPXRydWVgLCB7IGhlYWRlcnMgfSlcbiAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICAgIH0pKVxuICAgIH1cblxuICB9XG5cbiAgdXBkYXRlUm9sZU1hcHBpbmcocm9sZV9tYXBwaW5nX2lkLCByZXFCb2R5KSB7XG4gICAgIGlmICh0aGlzLmZyb21NZG9Qb3J0YWwpIHtcbiAgICAgIGxldCBtZG9CYXNlVXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCdcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0PGFueT4oYCR7dGhpcy5tZG9CYXNlVXJsfS8ke0FQSV9FTkRfUE9JTlRTLk1ET19ST0xFX01BUFBJTkdfVVBEQVRFfWAsIHJlcUJvZHkpXG4gICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgICB9KSlcbiAgICB9IGVsc2Uge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLlVQREFURV9ST0xFX01BUFBJTkd9LyR7cm9sZV9tYXBwaW5nX2lkfWAsIHJlcUJvZHksIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgZGVsZXRlUm9sZU1hcHBpbmcocm9sZV9tYXBwaW5nX2lkKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuVVBEQVRFX1JPTEVfTUFQUElOR30vJHtyb2xlX21hcHBpbmdfaWR9YCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGdldFJlY29tbWVuZGVkQ291cnNlKHJvbGVfbWFwcGluZ19pZCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICBsZXQgcmVxQm9keSA9IHtcbiAgICAgIHJvbGVfbWFwcGluZ19pZDogcm9sZV9tYXBwaW5nX2lkXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkdFVF9SRUNPTU1FTkRFRF9DT1VSU0V9L2NvdXJzZS1yZWNvbW1lbmRhdGlvbnMvZ2VuZXJhdGVgLCByZXFCb2R5LCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgZGVsZXRlQ291cnNlUmVjb21tZW5kYXRpb25zKHJvbGVNYXBJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuR0VUX1JFQ09NTUVOREVEX0NPVVJTRX0vY291cnNlLXJlY29tbWVuZGF0aW9ucy9yb2xlLW1hcHBpbmcvJHtyb2xlTWFwSWR9YCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIHNhdmVDb3Vyc2UocmVxQm9keSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5TQVZFX0NPVVJTRVN9YCwgcmVxQm9keSwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuICB1cGRhdGVDb3Vyc2UocmVxQm9keSwgY2JwX3BsYW5faWQpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5VUERBVEVfQ09VUlNFU30vJHtjYnBfcGxhbl9pZH1gLCByZXFCb2R5LCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgZ2V0Q291cnNlKHJvbGVfbWFwcGluZ19pZCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkdFVF9DT1VSU0VTfT9yb2xlX21hcHBpbmdfaWQ9JHtyb2xlX21hcHBpbmdfaWR9YCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGdldElHT1RTdWdnZXN0ZWRDb3Vyc2VzKHJlcUJvZHkpIHtcbiAgICAvLyBVc2UgdGhlIHJlcUJvZHkgcGFyYW1ldGVyIHBhc3NlZCBmcm9tIHRoZSBjb21wb25lbnRcbiAgICAvLyBJZiBubyByZXFCb2R5IGlzIHByb3ZpZGVkLCB1c2UgZGVmYXVsdCBzdHJ1Y3R1cmVcbiAgICBsZXQgcmVxID0gcmVxQm9keSB8fCB7XG4gICAgICBcInJlcXVlc3RcIjoge1xuICAgICAgICBcImZpbHRlcnNcIjoge1xuICAgICAgICAgIFwicHJpbWFyeUNhdGVnb3J5XCI6IFtcIkNvdXJzZVwiXSxcbiAgICAgICAgICBcInN0YXR1c1wiOiBbXCJMaXZlXCJdLFxuICAgICAgICAgIFwiY291cnNlQ2F0ZWdvcnlcIjogW1wiQ291cnNlXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZmllbGRzXCI6IFtcInBvc3RlckltYWdlXCIsIFwiZGVzY3JpcHRpb25cIiwgXCJuYW1lXCJdLFxuICAgICAgICBcImxpbWl0XCI6IDEyLFxuICAgICAgICBcIm9mZnNldFwiOiAwXG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnNvbGUubG9nKCdnZXRJR09UU3VnZ2VzdGVkQ291cnNlcyBmaW5hbCByZXF1ZXN0OicsIEpTT04uc3RyaW5naWZ5KHJlcSwgbnVsbCwgMikpO1xuXG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLlNVR0dFU1RFRF9DT1VSU0VfTElTVH1gLCByZXEsIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuICBnZXRTdWdnZXN0ZWRDb3Vyc2VzKHJvbGVfbWFwcGluZ19pZCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLlNVR0dFU1RFRF9DT1VSU0VfTElTVH0vJHtyb2xlX21hcHBpbmdfaWR9YCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIHNhdmVTdWdnZXN0ZWRDb3Vyc2UocmVxQm9keSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5TQVZFX0NPVVJTRV9TVUdHRVNURURfQ09VUlNFfWAsIHJlcUJvZHksIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuICBhZGREZXNpZ25hdGlvbihyZXFCb2R5KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkFERF9ERVNJR05BVElPTn1gLCByZXFCb2R5LCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgcGVyZm9ybUxvZ2luKHJlcUJvZHkpIHtcbiAgICBjb25zdCBib2R5ID0gbmV3IEh0dHBQYXJhbXMoKVxuICAgICAgLnNldCgndXNlcm5hbWUnLCByZXFCb2R5LnVzZXJuYW1lKVxuICAgICAgLnNldCgncGFzc3dvcmQnLCByZXFCb2R5LnBhc3N3b3JkKTtcbiAgICBjb25zb2xlLmxvZygnaW4gbG9naW4gdWF0JylcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5MT0dJTn1gLCBib2R5LnRvU3RyaW5nKCksIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBsb2dvdXQoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkxPR09VVH1gLCAnJywgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIHNldENCUFBsYW5Mb2NhbFN0b3JhZ2UoKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NicFBsYW5GaW5hbE9iaicsIEpTT04uc3RyaW5naWZ5KHRoaXMuY2JwUGxhbkZpbmFsT2JqKSlcbiAgfVxuXG4gIGdldENCUFBsYW5Mb2NhbFN0b3JhZ2UoKSB7XG4gICAgbGV0IGNicFBsYW5GaW5hbE9iaiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NicFBsYW5GaW5hbE9iaicpKVxuICAgIHJldHVybiBjYnBQbGFuRmluYWxPYmpcbiAgfVxuXG4gIGNoZWNrSWZMb2dpbigpIHtcbiAgICBsZXQgZmxhZyA9IGZhbHNlXG4gICAgbGV0IGxvZ2luRGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsb2dpbkRhdGEnKVxuICAgIGlmIChsb2dpbkRhdGEgJiYgSlNPTi5wYXJzZShsb2dpbkRhdGEpWydhY2Nlc3NfdG9rZW4nXSkge1xuICAgICAgZmxhZyA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgZmxhZyA9IGZhbHNlXG4gICAgfVxuICAgIHJldHVybiBmbGFnXG4gIH1cblxuICBkZWxldGVSb2xlTWFwcGluZ0J5U3RhdGVBbmREZXBhcnRtZW50KHN0YXRlX2NlbnRlcl9pZCwgZGVwYXJ0bWVudF9pZCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICBsZXQgdXJsID0gJydcbiAgICBpZiAoZGVwYXJ0bWVudF9pZCAmJiBkZXBhcnRtZW50X2lkICE9PSAnbnVsbCcgJiYgZGVwYXJ0bWVudF9pZCAhPT0gJ3VuZGVmaW5lZCcgJiYgZGVwYXJ0bWVudF9pZCAhPT0gdW5kZWZpbmVkICYmIGRlcGFydG1lbnRfaWQgIT09IG51bGwpIHtcbiAgICAgIHVybCA9IGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkRFTEVURV9ST0xFX01BUFBJTkdfQllfU1RBVEVfQ0VOVEVSfT9zdGF0ZV9jZW50ZXJfaWQ9JHtzdGF0ZV9jZW50ZXJfaWR9JmRlcGFydG1lbnRfaWQ9JHtkZXBhcnRtZW50X2lkfWBcbiAgICB9IGVsc2Uge1xuICAgICAgdXJsID0gYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuREVMRVRFX1JPTEVfTUFQUElOR19CWV9TVEFURV9DRU5URVJ9P3N0YXRlX2NlbnRlcl9pZD0ke3N0YXRlX2NlbnRlcl9pZH1gXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8YW55Pih1cmwsIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuICBhZGRVc2VyQ291cnNlKHJlcUJvZHkpIHtcbiAgICBpZiAodGhpcy5mcm9tTWRvUG9ydGFsKSB7XG4gICAgICBsZXQgbWRvQmFzZVVybCA9ICdodHRwOi8vbG9jYWxob3N0OjMwMDAnXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMubWRvQmFzZVVybH0vJHtBUElfRU5EX1BPSU5UUy5NRE9fQUREX1VTRVJfQ09VUlNFfWApXG4gICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgICB9KSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuQUREX1VTRVJfQ09VUlNFU31gLCByZXFCb2R5LCB7IGhlYWRlcnMgfSlcbiAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICAgIH0pKVxuICAgIH1cblxuICB9XG5cbiAgZ2V0VXNlckNvdXJzZShyb2xlX21hcHBpbmdfaWQpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5HRVRfVVNFUl9DT1VSU0VTfS8ke3JvbGVfbWFwcGluZ19pZH1gLCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgZ2V0Q29tcGV0ZW5jeUpzb24oKSB7XG4gICAgaWYgKHRoaXMuZnJvbU1kb1BvcnRhbCkge1xuICAgICAgbGV0IG1kb0Jhc2VVcmwgPSAnaHR0cDovL2xvY2FsaG9zdDozMDAwJ1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLm1kb0Jhc2VVcmx9L2Fzc2V0cy9qc29uZmlsZXMvY29tcGV0ZW5jaWVzLmpzb25gKVxuICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgICAgfSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy5iYXNlVXJsfS90cmFpbmluZy1wbGEtYWkvYXNzZXRzL2pzb25maWxlcy9jb21wZXRlbmNpZXMuanNvbmAsIHsgaGVhZGVycyB9KVxuICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgICAgfSkpXG4gICAgfVxuXG4gICAgLy8gdGhpcy5odHRwLmdldDxhbnlbXT4oJy9hc3NldHMvanNvbmZpbGVzL2NvbXBldGVuY2llcy5qc29uJylcbiAgfVxuXG4gIGNvbnZlcnQoc2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIXNlY29uZHMgfHwgc2Vjb25kcyA8PSAwKSB7XG4gICAgICByZXR1cm4gJ04vQSc7XG4gICAgfVxuXG4gICAgY29uc3QgdG90YWxTZWNvbmRzID0gTWF0aC5mbG9vcihzZWNvbmRzKTtcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IodG90YWxTZWNvbmRzIC8gMzYwMCk7XG4gICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoKHRvdGFsU2Vjb25kcyAlIDM2MDApIC8gNjApO1xuICAgIGNvbnN0IHJlbWFpbmluZ1NlY29uZHMgPSB0b3RhbFNlY29uZHMgJSA2MDtcblxuICAgIGlmIChob3VycyA+IDApIHtcbiAgICAgIC8vIEZvciBkdXJhdGlvbnMgd2l0aCBob3Vycywgc2hvdyBob3VycyBhbmQgbWludXRlcyAoZS5nLiwgXCIzaCAxMG1cIilcbiAgICAgIGlmIChtaW51dGVzID4gMCkge1xuICAgICAgICByZXR1cm4gYCR7aG91cnN9aCAke21pbnV0ZXN9bWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYCR7aG91cnN9aGA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChtaW51dGVzID4gMCkge1xuICAgICAgLy8gRm9yIGR1cmF0aW9ucyB1bmRlciBhbiBob3VyLCBzaG93IG1pbnV0ZXMgYW5kIHNlY29uZHMgKGUuZy4sIFwiNThtIDNzXCIpXG4gICAgICBpZiAocmVtYWluaW5nU2Vjb25kcyA+IDApIHtcbiAgICAgICAgcmV0dXJuIGAke21pbnV0ZXN9bSAke3JlbWFpbmluZ1NlY29uZHN9c2A7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYCR7bWludXRlc31tYDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9yIGR1cmF0aW9ucyB1bmRlciBhIG1pbnV0ZSwgc2hvdyBzZWNvbmRzIG9ubHlcbiAgICAgIHJldHVybiBgJHtyZW1haW5pbmdTZWNvbmRzfXNgO1xuICAgIH1cbiAgfVxuXG4gIGdldFVzZXJQcm9maWxlKCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkdFVF9VU0VSX1BST0ZJTEV9YCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGdldFVzZXJSZWNvbW1lbmRhdGlvbkNvdXJzZShyb2xlX21hcHBpbmdfaWQpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5HRVRfVVNFUl9TRUxFQ1RFRF9DT1VSU0VTfT9yb2xlX21hcHBpbmdfaWQ9JHtyb2xlX21hcHBpbmdfaWR9YCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGRvd25sb2FkUGRmKHN0YXRlX2NlbnRlcl9pZDogc3RyaW5nLCBjb250ZXh0OiBzdHJpbmcsIGxhbmd1YWdlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBlbmRwb2ludCA9XG4gICAgICBjb250ZXh0ID09PSAnYWNicCdcbiAgICAgICAgPyBBUElfRU5EX1BPSU5UUy5ET1dOTE9BRF9QREZfQUNCUFxuICAgICAgICA6IEFQSV9FTkRfUE9JTlRTLkRPV05MT0FEX1BERjtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcmx9JHtlbmRwb2ludH0/c3RhdGVfY2VudGVyX2lkPSR7c3RhdGVfY2VudGVyX2lkfSombGFuZ3VhZ2U9JHtsYW5ndWFnZX1gO1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwge1xuICAgICAgaGVhZGVycyxcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xuICAgIH0pLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcblxuICAgICAgY29uc3QgY29udGVudERpc3Bvc2l0aW9uID0gcmVzLmhlYWRlcnMuZ2V0KCdjb250ZW50LWRpc3Bvc2l0aW9uJyk7XG4gICAgICBjb25zb2xlLmxvZygnY29udGVudERpc3Bvc2l0aW9uJywgcmVzLmhlYWRlcnMpXG4gICAgICBsZXQgZmlsZW5hbWUgPSBgQ0JQX1JlcG9ydF8ke3N0YXRlX2NlbnRlcl9pZH0ucGRmYDtcblxuICAgICAgaWYgKGNvbnRlbnREaXNwb3NpdGlvbikge1xuICAgICAgICBjb25zdCBtYXRjaCA9IGNvbnRlbnREaXNwb3NpdGlvbi5tYXRjaCgvZmlsZW5hbWU9XCI/KFteXCJdKylcIj8vKTtcbiAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoWzFdKSB7XG4gICAgICAgICAgZmlsZW5hbWUgPSBtYXRjaFsxXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgYSBibG9iIFVSTCBhbmQgZG93bmxvYWRcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbcmVzLmJvZHldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pO1xuICAgICAgY29uc3QgZG93bmxvYWRVcmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgIGEuaHJlZiA9IGRvd25sb2FkVXJsO1xuICAgICAgYS5kb3dubG9hZCA9IGZpbGVuYW1lO1xuICAgICAgYS5jbGljaygpO1xuXG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGRvd25sb2FkVXJsKTtcbiAgICB9KTtcbiAgfVxuXG4gIGRvd25sb2FkUGRmRm9yRGVwYXJ0bWVudChzdGF0ZV9jZW50ZXJfaWQsIGRlcGFydG1lbnRfaWQ6IHN0cmluZywgY29udGV4dDogc3RyaW5nLCBsYW5ndWFnZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZW5kcG9pbnQgPVxuICAgICAgY29udGV4dCA9PT0gJ2FjYnAnXG4gICAgICAgID8gQVBJX0VORF9QT0lOVFMuRE9XTkxPQURfUERGX0FDQlBcbiAgICAgICAgOiBBUElfRU5EX1BPSU5UUy5ET1dOTE9BRF9QREY7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJsfSR7ZW5kcG9pbnR9P3N0YXRlX2NlbnRlcl9pZD0ke3N0YXRlX2NlbnRlcl9pZH0mZGVwYXJ0bWVudF9pZD0ke2RlcGFydG1lbnRfaWR9Jmxhbmd1YWdlPSR7bGFuZ3VhZ2V9YDtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHtcbiAgICAgIGhlYWRlcnMsXG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYidcbiAgICB9KS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG5cbiAgICAgIGNvbnN0IGNvbnRlbnREaXNwb3NpdGlvbiA9IHJlcy5oZWFkZXJzLmdldCgnY29udGVudC1kaXNwb3NpdGlvbicpO1xuICAgICAgY29uc29sZS5sb2coJ2NvbnRlbnREaXNwb3NpdGlvbicsIHJlcy5oZWFkZXJzKVxuICAgICAgbGV0IGZpbGVuYW1lID0gYENCUF9SZXBvcnRfJHtzdGF0ZV9jZW50ZXJfaWR9XyR7ZGVwYXJ0bWVudF9pZH0ucGRmYDtcblxuICAgICAgaWYgKGNvbnRlbnREaXNwb3NpdGlvbikge1xuICAgICAgICBjb25zdCBtYXRjaCA9IGNvbnRlbnREaXNwb3NpdGlvbi5tYXRjaCgvZmlsZW5hbWU9XCI/KFteXCJdKylcIj8vKTtcbiAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoWzFdKSB7XG4gICAgICAgICAgZmlsZW5hbWUgPSBtYXRjaFsxXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgYSBibG9iIFVSTCBhbmQgZG93bmxvYWRcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbcmVzLmJvZHldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pO1xuICAgICAgY29uc3QgZG93bmxvYWRVcmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgIGEuaHJlZiA9IGRvd25sb2FkVXJsO1xuICAgICAgYS5kb3dubG9hZCA9IGZpbGVuYW1lO1xuICAgICAgYS5jbGljaygpO1xuXG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGRvd25sb2FkVXJsKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENlbnRlckJhc2VkRGVwYXJ0bWVudChzdGF0ZV9jZW50ZXJfaWQpIHtcbiAgICAvLyBsZXQgcmVxQm9keSA9IHsgXCJyZXF1ZXN0XCI6IHsgXCJmaWx0ZXJzXCI6IHsgXCJzdGF0dXNcIjogMSwgXCJtaW5pc3RyeU9yU3RhdGVUeXBlXCI6IFwibWluaXN0cnlcIiwgXCJtaW5pc3RyeU9yU3RhdGVJZFwiOiBzdGF0ZV9jZW50ZXJfaWR9LCBcInNvcnRfYnlcIjogeyBcImNyZWF0ZWREYXRlXCI6IFwiZGVzY1wiIH0sIFwibGltaXRcIjogOTk5OSwgXCJvZmZzZXRcIjogMCwgXCJmaWVsZHNcIjogW1wiaWRlbnRpZmllclwiLCBcIm9yZ05hbWVcIiwgXCJkZXNjcmlwdGlvblwiLCBcInBhcmVudE9yZ05hbWVcIiwgXCJtaW5pc3RyeU9yU3RhdGVJZFwiLCBcIm1pbmlzdHJ5T3JTdGF0ZVR5cGVcIiwgXCJtaW5pc3RyeU9yU3RhdGVOYW1lXCIsIFwic2JPcmdTdWJUeXBlXCJdIH0gfVxuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkNFTlRFUl9CQVNFRF9NSU5JU1RSWX0vJHtzdGF0ZV9jZW50ZXJfaWR9P2xpbWl0PTk5OTkmb2Zmc2V0PTAmc3ViX29yZ190eXBlPW1pbmlzdHJ5YCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG5cbiAgZG93bmxvYWRQZGZGb3JDb3Vyc2VSZWNvbW1lbmRhdGlvbihzdGF0ZV9jZW50ZXJfaWQpIHtcblxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkRPV05MT0FEX0NPVVJTRV9SRUNPTU1FTkRBVElPTn0/cm9sZV9tYXBwaW5nX2lkPSR7c3RhdGVfY2VudGVyX2lkfWA7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7XG4gICAgICBoZWFkZXJzLFxuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InXG4gICAgfSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuXG4gICAgICBjb25zdCBjb250ZW50RGlzcG9zaXRpb24gPSByZXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtZGlzcG9zaXRpb24nKTtcbiAgICAgIGxldCBmaWxlbmFtZSA9IGBDT1VSU0VfUkVDT01NRU5EQVRJT05fUmVwb3J0XyR7c3RhdGVfY2VudGVyX2lkfS5wZGZgO1xuXG4gICAgICBpZiAoY29udGVudERpc3Bvc2l0aW9uKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gY29udGVudERpc3Bvc2l0aW9uLm1hdGNoKC9maWxlbmFtZT1cIj8oW15cIl0rKVwiPy8pO1xuICAgICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0pIHtcbiAgICAgICAgICBmaWxlbmFtZSA9IG1hdGNoWzFdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENyZWF0ZSBhIGJsb2IgVVJMIGFuZCBkb3dubG9hZFxuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtyZXMuYm9keV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XG4gICAgICBjb25zdCBkb3dubG9hZFVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgYS5ocmVmID0gZG93bmxvYWRVcmw7XG4gICAgICBhLmRvd25sb2FkID0gZmlsZW5hbWU7XG4gICAgICBhLmNsaWNrKCk7XG5cbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoZG93bmxvYWRVcmwpO1xuICAgIH0pO1xuICB9XG5cbiAgdXBsb2FkRG9jdW1lbnQocmVxQm9keSwgZmlsZT86IEZpbGUpIHtcbiAgICBjb25zdCBzdG9yYWdlRGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbG9naW5EYXRhJykpXG4gICAgLy8gIGNvbnNvbGUubG9nKCdzdG9yYWdlRGF0YS0tJywgc3RvcmFnZURhdGEpXG4gICAgdGhpcy5oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3N0b3JhZ2VEYXRhPy5hY2Nlc3NfdG9rZW59YFxuICAgIH0pO1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcblxuICAgIC8vIEFkZCByZXF1aXJlZCBmaWVsZHNcbiAgICAvLyBpZiAocmVxQm9keS5zdGF0ZV9jZW50ZXJfaWQpIHtcbiAgICAvLyAgIGZvcm1EYXRhLmFwcGVuZCgnc3RhdGVfY2VudGVyX2lkJywgcmVxQm9keS5zdGF0ZV9jZW50ZXJfaWQpO1xuICAgIC8vIH1cblxuICAgIC8vIGlmIChyZXFCb2R5LmRlcGFydG1lbnRfaWQpIHtcbiAgICAvLyAgIGZvcm1EYXRhLmFwcGVuZCgnZGVwYXJ0bWVudF9pZCcsIHJlcUJvZHkuZGVwYXJ0bWVudF9pZCk7XG4gICAgLy8gfVxuXG5cblxuICAgIC8vIGlmKHJlcUJvZHkuZG9jdW1lbnROYW1lKSB7XG4gICAgLy8gICBmb3JtRGF0YS5hcHBlbmQoJ2RvY3VtZW50X25hbWUnLCByZXFCb2R5LmRvY3VtZW50TmFtZSk7XG4gICAgLy8gfVxuICAgIC8vIEFkZCBmaWxlIGlmIHByb3ZpZGVkXG4gICAgLy8gaWYgKGZpbGUpIHtcbiAgICAvLyAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuICAgIC8vIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5VUExPQURfRE9DVU1FTlR9YCwgcmVxQm9keSwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGdldFVwbG9hZGVkRG9jdW1lbnRzKHJlcUJvZHkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzO1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gICAgT2JqZWN0LmVudHJpZXMocmVxQm9keSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KGtleSwgdmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkdFVF9ET0NVTUVOVFN9YCwge1xuICAgICAgaGVhZGVycyxcbiAgICAgIHBhcmFtc1xuICAgIH0pLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZGVsZXRlRmlsZShmaWxlSWQpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5ERUxFVEVfRklMRX0vJHtmaWxlSWR9YCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIHRyaWdnZXJGaWxlU3VtbWFyeShmaWxlSWQpIHtcbiAgICBjb25zdCBzdG9yYWdlRGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbG9naW5EYXRhJykpXG4gICAgLy8gY29uc29sZS5sb2coJ3N0b3JhZ2VEYXRhLS0nLCBzdG9yYWdlRGF0YSlcbiAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7c3RvcmFnZURhdGE/LmFjY2Vzc190b2tlbn1gXG4gICAgfSk7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkRFTEVURV9GSUxFfS8ke2ZpbGVJZH0vc3VtbWFyeWAsIHt9LCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgZG93bmxvYWRGaWxlKGZpbGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxCbG9iPiB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVycztcblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkRPV05MT0FEX0ZJTEV9LyR7ZmlsZUlkfS9kb3dubG9hZGAsIHtcbiAgICAgIGhlYWRlcnMsXG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlU3VtbWFyeShmaWxlSWQpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5ERUxFVEVfU1VNTUFSWX0vJHtmaWxlSWR9L3N1bW1hcnlgLCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgZGVsZXRlUmVjb21tZW5kZWRDb3Vyc2Uocm9sZU1hcHBpbmdJZDogc3RyaW5nLCBjb3Vyc2VJZGVudGlmaWVyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8YW55PihcbiAgICAgIGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkRFTEVURV9DT1VSU0VfUkVDT01NRU5EQVRJT059LyR7cm9sZU1hcHBpbmdJZH0vY291cnNlLyR7Y291cnNlSWRlbnRpZmllcn1gLFxuICAgICAgeyBoZWFkZXJzIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0Q2JwUGxhbnNXaXRoU2VsZWN0ZWRDb3Vyc2VzKCk6IGFueVtdIHtcbiAgICBjb25zdCBzb3VyY2UgPSB0aGlzLmNicFBsYW5GaW5hbE9iajtcblxuICAgIHJldHVybiBzb3VyY2U/LnJvbGVfbWFwcGluZ19nZW5lcmF0aW9uXG4gICAgICA/LmZsYXRNYXAoKHJvbGU6IGFueSkgPT4gcm9sZS5jYnBfcGxhbnMgfHwgW10pXG4gICAgICA/LmZpbHRlcihcbiAgICAgICAgKHBsYW46IGFueSkgPT5cbiAgICAgICAgICBBcnJheS5pc0FycmF5KHBsYW4uc2VsZWN0ZWRfY291cnNlcykgJiZcbiAgICAgICAgICBwbGFuLnNlbGVjdGVkX2NvdXJzZXMubGVuZ3RoID4gMFxuICAgICAgKSB8fCBbXTtcbiAgfVxuXG4gIGdldEFkZGl0aW9uYWxQYXJhbWV0ZXJmb3JTdWdnZXN0ZWRDb3Vyc2VzKGlkZW50aWZpZXJzKSB7XG4gICAgXG4gICAgbGV0IHJlcUJvZHkgPSB7XG4gICAgICBcInJlcXVlc3RcIjoge1xuICAgICAgICBcImZpbHRlcnNcIjoge1xuICAgICAgICAgIFwiaWRlbnRpZmllclwiOiBpZGVudGlmaWVycyxcblxuXG4gICAgICAgICAgXCJzdGF0dXNcIjogW1xuICAgICAgICAgICAgXCJMaXZlXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZmllbGRzXCI6IFtcbiAgICAgICAgICBcIm5hbWVcIixcbiAgICAgICAgICBcImxhbmd1YWdlXCIsXG4gICAgICAgICAgXCJpZGVudGlmaWVyXCIsXG4gICAgICAgICAgXCJhdmdSYXRpbmdcIlxuICAgICAgICBdLFxuICAgICAgICBcImxpbWl0XCI6IDEwMDAsXG4gICAgICAgIFwib2Zmc2V0XCI6IDAsXG4gICAgICAgIFwic29ydF9ieVwiOiB7fVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5mcm9tTWRvUG9ydGFsKSB7XG5cbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMubWRvQmFzZVVybH0vJHtBUElfRU5EX1BPSU5UUy5NRE9fU1VHR0VTVEVEX0NPVVJTRV9MSVNUfWAsIHJlcUJvZHkpXG4gICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgICB9KSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuU1VHR0VTVEVEX0NPVVJTRV9MSVNUfWAsIHJlcUJvZHksIHsgaGVhZGVycyB9KVxuICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgICAgfSkpXG4gICAgfVxuXG4gIH1cblxuICB1cGRhdGVEZXNpZ25hdGlvbkhpZXJhcmNoeShyZXFCb2R5KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuVVBEQVRFX0RFU0lHTkFUSU9OX0hJRVJBUkNIWX1gLCByZXFCb2R5LCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgc2VhcmNoUHVibGljRGVzaWduYXRpb24ocmVxQm9keSkge1xuICAgIGlmICh0aGlzLmZyb21NZG9Qb3J0YWwpIHtcbiAgICAgIGxldCBtZG9CYXNlVXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCdcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMubWRvQmFzZVVybH0vJHtBUElfRU5EX1BPSU5UUy5NRE9fREVTSUdOQVRJT05fU0VBUkNIfWAsIHJlcUJvZHkpXG4gICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgICB9KSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuU0VBUkNIX1BVQkxJQ19ERVNJR05BVElPTn1gLCByZXFCb2R5LCB7IGhlYWRlcnMgfSlcbiAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICAgIH0pKVxuICAgIH1cblxuICB9XG5cbiAgZ2V0RGFzaGJvYXJkQWRtaW4ocmVxQm9keSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5EQVNIQk9BUkRfQURNSU59YCwgcmVxQm9keSwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGdldERhc2hib2FyZEdhcEFuYWx5c2lzQWRtaW4ocmVxQm9keSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5HQVBfQU5BTFlTSVNfQURNSU59YCwgcmVxQm9keSwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGdldERhc2hib2FyZFB1YmxpYyhyZXFCb2R5KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkRBU0hCT0FSRF9QVUJMSUN9YCwgcmVxQm9keSwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGdldERhc2hib2FyZEdhcEFuYWx5c2lzUHVibGljKHJlcUJvZHkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuR0FQX0FOQUxZU0lTX1BVQkxJQ31gLCByZXFCb2R5LCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgZ2V0TWF0Y2hlZFJvbGVNYXBwaW5nKHJlcUJvZHkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuTUFUQ0hFRF9ST0xFX01BUFBJTkd9YCwgcmVxQm9keSwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG5cbmdldEFwcHJvdmFsUmVxdWVzdHMocmVxQm9keTogYW55KSB7XG5cbiAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVycztcblxuICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICBpZiAocmVxQm9keT8ucGFnZSkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BhZ2UnLCByZXFCb2R5LnBhZ2UpO1xuICB9XG5cbiAgaWYgKHJlcUJvZHk/LnBhZ2Vfc2l6ZSkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BhZ2Vfc2l6ZScsIHJlcUJvZHkucGFnZV9zaXplKTtcbiAgfVxuXG4gIGlmIChyZXFCb2R5Py5zZWFyY2gpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzZWFyY2gnLCByZXFCb2R5LnNlYXJjaCk7XG4gIH1cblxuICBpZiAocmVxQm9keT8uc3RhdHVzKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc3RhdHVzJywgcmVxQm9keS5zdGF0dXMpO1xuICB9XG5cbiAgaWYgKHJlcUJvZHk/LmZyb21fZGF0ZSkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2Zyb21fZGF0ZScsIHJlcUJvZHkuZnJvbV9kYXRlKTtcbiAgfVxuXG4gIGlmIChyZXFCb2R5Py50b19kYXRlKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG9fZGF0ZScsIHJlcUJvZHkudG9fZGF0ZSk7XG4gIH1cblxuICBpZiAocmVxQm9keT8uc3RhdGVfY2VudGVyX2lkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc3RhdGVfY2VudGVyX2lkJywgcmVxQm9keS5zdGF0ZV9jZW50ZXJfaWQpO1xuICB9XG5cbiAgaWYgKHJlcUJvZHk/LmRlcGFydG1lbnRfaWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdkZXBhcnRtZW50X2lkJywgcmVxQm9keS5kZXBhcnRtZW50X2lkKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oXG4gICAgYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuR0VUX0FQUFJPVkFMX1JFUVVFU1RTfWAsXG4gICAge1xuICAgICAgaGVhZGVycyxcbiAgICAgIHBhcmFtc1xuICAgIH1cbiAgKS5waXBlKFxuICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UpXG4gICk7XG59XG5cbiAgc2F2ZUFwcHJvdmFsUmVxdWVzdChyZXFCb2R5KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLlNBVkVfQVBQUk9WQUxfUkVRVUVTVH1gLCByZXFCb2R5LCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgc2VhcmNoUHVibGljbWRvKHJlcUJvZHkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuU0VBUkNIX1BVQkxJQ19NRE99YCwgcmVxQm9keSwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIHZpZXdBcHByb3ZhbFJlcXVlc3RzKHJlcXVlc3RfaWQpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5WSUVXX0FQUFJPVkFMX1JFUVVFU1R9LyR7cmVxdWVzdF9pZH1gLCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgdmlld01ET0FwcHJvdmFsUmVxdWVzdHMocmVxdWVzdF9pZCkge1xuICAgIGxldCBtZG9CYXNlVXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCdcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke21kb0Jhc2VVcmx9LyR7QVBJX0VORF9QT0lOVFMuVklFV19NRE9fQVBQUk9WQUxfUkVRVUVTVH0vJHtyZXF1ZXN0X2lkfWApXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGFwcHJvdmVBbmRQdWJsaXNoTURPQXBwcm92YWxSZXF1ZXN0cyhyZXF1ZXN0KSB7XG4gICAgbGV0IG1kb0Jhc2VVcmwgPSAnaHR0cDovL2xvY2FsaG9zdDozMDAwJ1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke21kb0Jhc2VVcmx9LyR7QVBJX0VORF9QT0lOVFMuQVBQUk9WRV9BTkRfUFVCTElTSF9NRE9fQVBQUk9WQUxfUkVRVUVTVH1gLCByZXF1ZXN0KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuICByZWplY3RNRE9BcHByb3ZhbFJlcXVlc3RzKHJlcXVlc3QpIHtcbiAgICBsZXQgbWRvQmFzZVVybCA9ICdodHRwOi8vbG9jYWxob3N0OjMwMDAnXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7bWRvQmFzZVVybH0vJHtBUElfRU5EX1BPSU5UUy5SRUpFQ1RfQVBQUk9WQUxfUkVRVUVTVH1gLCByZXF1ZXN0KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuICByZWplY3RJdGVtTURPQXBwcm92YWxSZXF1ZXN0cyhyZXF1ZXN0KSB7XG4gICAgbGV0IG1kb0Jhc2VVcmwgPSAnaHR0cDovL2xvY2FsaG9zdDozMDAwJ1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMubWRvQmFzZVVybH0vJHtBUElfRU5EX1BPSU5UUy5SRUpFQ1RfSVRFTV9BUFBST1ZBTF9SRVFVRVNUfWAsIHJlcXVlc3QpXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIHJldm9rZUFwcHJvdmFsUmVxdWVzdChyZXFCb2R5KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLlJFVk9LRV9BUFBST1ZBTF9SRVFVRVNUfWAsIHJlcUJvZHksIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuICBzYXZlRGVzaWduYXRpb25BcHByb3ZhbFJlcXVlc3QocmVxQm9keSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5TQVZFX0RFU0lHTkFUSU9OX0FQUFJPVkFMX1JFUVVFU1R9YCwgcmVxQm9keSwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gICBSZVB1Ymxpc2hNRE9BcHByb3ZhbFJlcXVlc3QocmVxdWVzdCkge1xuICAgIGxldCBtZG9CYXNlVXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCdcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLm1kb0Jhc2VVcmx9LyR7QVBJX0VORF9QT0lOVFMuUkVQVUJMSVNIX1JFUVVFU1R9YCwgcmVxdWVzdClcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbn1cblxuIl19
|
|
1001
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvY2JwLWFpL3NyYy9saWIvbW9kdWxlcy9zaGFyZWQvc2VydmljZXMvc2hhcmVkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxZQUFZO0FBQ1osT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUErQixPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBOzs7O0FBRXBDLCtFQUErRTtBQUUvRSxNQUFNLGNBQWMsR0FBRztJQUNyQixhQUFhLEVBQUUsMEJBQTBCO0lBQ3pDLG9CQUFvQixFQUFFLDBCQUEwQjtJQUNoRCxxQkFBcUIsRUFBRSwwQkFBMEI7SUFDakQsa0JBQWtCLEVBQUUsd0JBQXdCO0lBQzVDLGFBQWEsRUFBRSw2QkFBNkI7SUFDNUMsYUFBYSxFQUFFLDBCQUEwQjtJQUN6QyxnQkFBZ0IsRUFBRSxnQ0FBZ0M7SUFDbEQsZ0JBQWdCLEVBQUUseUNBQXlDO0lBQzNELG1CQUFtQixFQUFFLHVDQUF1QztJQUM1RCxjQUFjLEVBQUUsMkNBQTJDO0lBQzNELGdDQUFnQyxFQUFFLDZDQUE2QztJQUMvRSwyQ0FBMkMsRUFBRSw2Q0FBNkM7SUFDMUYsbUJBQW1CLEVBQUUsZ0NBQWdDO0lBQ3JELHNCQUFzQixFQUFFLG9CQUFvQjtJQUM1QyxZQUFZLEVBQUUsaUNBQWlDO0lBQy9DLFdBQVcsRUFBRSw0QkFBNEI7SUFDekMsY0FBYyxFQUFFLDRCQUE0QjtJQUM1QyxxQkFBcUIsRUFBRSwwQkFBMEI7SUFDakQsNEJBQTRCLEVBQUUsMkNBQTJDO0lBQ3pFLHFCQUFx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QyxDQUFDLENBQUMsQ0FBQTtJQUNQLENBQUM7K0dBdGlDVSxhQUFhO21IQUFiLGFBQWEsY0FIWixNQUFNOzs0RkFHUCxhQUFhO2tCQUp6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjsySEFpQkMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuLy9JbmplY3RhYmxlXG5pbXBvcnQgeyBIb3N0TGlzdGVuZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBJbml0U2VydmljZSB9IGZyb20gJy4vaW5pdC5zZXJ2aWNlJztcbi8vIGltcG9ydCBjb25maWd1cmF0aW9uIGZyb20gJy4uLy4uLy4uLy4uL2Fzc2V0cy9qc29uZmlsZXMvY29uZmlndXJhdGlvbnMuanNvbidcblxuY29uc3QgQVBJX0VORF9QT0lOVFMgPSB7XG4gIEZFVENIX0NPVVJTRVM6ICdhcGkvdjEvY291cnNlL3YyL2V4cGxvcmUnLFxuICBGRVRDSF9QT1NUQUxfQ09VUlNFUzogJ2FwaS92MS9jb250ZW50L3YxL3NlYXJjaCcsXG4gIEZFVENIX1JBSUxXQVlfQ09VUlNFUzogJ2FwaS92MS9jb250ZW50L3YxL3NlYXJjaCcsXG4gIEZFVENIX0hBTExfT0ZfRkFNRTogJ2FwaS92MS9oYWxsb2ZmYW1lL3JlYWQnLFxuICBOTFdfRk9STV9SRUFEOiAnYXBpcy92MS9zdGF0aWMvZm9ybS92MS9yZWFkJyxcbiAgRkVUQ0hfVEVOREVSUzogJ2FwaS92MS9jb250ZW50L3YxL3NlYXJjaCcsXG4gIEdFVF9TVEFURV9DRU5URVI6ICdjYnAtdHBjLWFpL2FwaS92MS9zdGF0ZS1jZW50ZXInLFxuICBHRVRfUk9MRV9NQVBQSU5HOiAnY2JwLXRwYy1haS9hcGkvdjMvcm9sZS1tYXBwaW5nL2dlbmVyYXRlJyxcbiAgREVMRVRFX1JPTEVfTUFQUElORzogJ2NicC10cGMtYWkvYXBpL3YxL3JvbGUtbWFwcGluZy9kZWxldGUnLFxuICBHRVRfREVQQVJUTUVOVDogJ2NicC10cGMtYWkvYXBpL3YxL2RlcGFydG1lbnQvc3RhdGUtY2VudGVyJyxcbiAgR0VUX1JPTEVfTUFQUElOR19CWV9TVEFURV9DRU5URVI6ICdjYnAtdHBjLWFpL2FwaS92MS9yb2xlLW1hcHBpbmcvc3RhdGUtY2VudGVyJyxcbiAgR0VUX1JPTEVfTUFQUElOR19CWV9TVEFURV9DRU5URVJfREVQQVJUTUVOVDogJ2NicC10cGMtYWkvYXBpL3YxL3JvbGUtbWFwcGluZy9zdGF0ZS1jZW50ZXInLFxuICBVUERBVEVfUk9MRV9NQVBQSU5HOiAnY2JwLXRwYy1haS9hcGkvdjEvcm9sZS1tYXBwaW5nJyxcbiAgR0VUX1JFQ09NTUVOREVEX0NPVVJTRTogJ2NicC10cGMtYWkvYXBpL3YxLycsXG4gIFNBVkVfQ09VUlNFUzogJ2NicC10cGMtYWkvYXBpL3YxL2NicC1wbGFuL3NhdmUnLFxuICBHRVRfQ09VUlNFUzogJ2NicC10cGMtYWkvYXBpL3YxL2NicC1wbGFuJyxcbiAgVVBEQVRFX0NPVVJTRVM6ICdjYnAtdHBjLWFpL2FwaS92MS9jYnAtcGxhbicsXG4gIElHT1RfU1VHR0VTVEVEX0NPVVJTRTogJ2FwaS92MS9jb250ZW50L3YxL3NlYXJjaCcsXG4gIFNBVkVfQ09VUlNFX1NVR0dFU1RFRF9DT1VSU0U6ICdjYnAtdHBjLWFpL2FwaS92MS9jb3Vyc2Uvc3VnZ2VzdGlvbnMvc2F2ZScsXG4gIFNVR0dFU1RFRF9DT1VSU0VfTElTVDogJ2NicC10cGMtYWkvYXBpL3YxL2NvdXJzZS9zdWdnZXN0aW9ucycsXG4gIEFERF9ERVNJR05BVElPTjogJ2NicC10cGMtYWkvYXBpL3YyL3JvbGUtbWFwcGluZy9hZGQtZGVzaWduYXRpb24nLFxuICBMT0dJTjogJ2NicC10cGMtYWkvYXBpL3YxL2F1dGgvbG9naW4nLFxuICBMT0dPVVQ6ICdjYnAtdHBjLWFpL2FwaS92MS9hdXRoL2xvZ291dCcsXG4gIERFTEVURV9ST0xFX01BUFBJTkdfQllfU1RBVEVfQ0VOVEVSOiAnY2JwLXRwYy1haS9hcGkvdjEvcm9sZS1tYXBwaW5nJyxcbiAgQUREX1VTRVJfQ09VUlNFUzogJ2NicC10cGMtYWkvYXBpL3YxL3VzZXItYWRkZWQtY291cnNlcycsXG4gIEdFVF9VU0VSX0NPVVJTRVM6ICdjYnAtdHBjLWFpL2FwaS92MS91c2VyLWFkZGVkLWNvdXJzZXMvcm9sZS1tYXBwaW5nJyxcbiAgR0VUX1VTRVJfU0VMRUNURURfQ09VUlNFUzogJ2NicC10cGMtYWkvYXBpL3YxL2NicC1wbGFuJyxcbiAgVVBMT0FEX0RPQ1VNRU5UOiAnY2JwLXRwYy1haS9hcGkvdjEvZmlsZXMnLFxuICBHRVRfRE9DVU1FTlRTOiAnY2JwLXRwYy1haS9hcGkvdjEvZmlsZXMnLFxuICBERUxFVEVfRklMRTogJ2NicC10cGMtYWkvYXBpL3YxL2ZpbGVzJyxcbiAgVFJJR0dFUl9GSUxFX1NVTU1BUlk6ICdjYnAtdHBjLWFpL2FwaS92MS9maWxlcycsXG4gIERPV05MT0FEX0ZJTEU6ICdjYnAtdHBjLWFpL2FwaS92MS9maWxlcycsXG4gIERFTEVURV9TVU1NQVJZOiAnY2JwLXRwYy1haS9hcGkvdjEvZmlsZXMnLFxuICBHRVRfVVNFUl9QUk9GSUxFOiAnY2JwLXRwYy1haS9hcGkvdjEvdXNlcnMvbWUnLFxuICBHRVRfVVNFUl9SRUNPTU1FTkVEX0NPVVJTRVM6ICdjYnAtdHBjLWFpL2FwaS92MS9jb3Vyc2UtcmVjb21tZW5kYXRpb25zJyxcbiAgRE9XTkxPQURfUERGOiAnY2JwLXRwYy1haS9hcGkvdjEvcmVwb3J0cy9jYnAtcGxhbi9kb3dubG9hZCcsXG4gIERPV05MT0FEX1BERl9BQ0JQOiAnY2JwLXRwYy1haS9hcGkvdjEvcmVwb3J0cy9hY2JwLXBsYW4vZG93bmxvYWQnLFxuICBDRU5URVJfQkFTRURfTUlOSVNUUlk6ICdjYnAtdHBjLWFpL2FwaS92MS9kZXBhcnRtZW50L3N0YXRlLWNlbnRlcicsXG4gIERPV05MT0FEX0NPVVJTRV9SRUNPTU1FTkRBVElPTjogJ2NicC10cGMtYWkvYXBpL3YxL3JlcG9ydHMvY291cnNlLXJlY29tbWVuZGF0aW9ucy9kb3dubG9hZCcsXG4gIERFTEVURV9DT1VSU0VfUkVDT01NRU5EQVRJT046ICdjYnAtdHBjLWFpL2FwaS92MS9jYnAtcGxhbicsXG4gIFVQREFURV9ERVNJR05BVElPTl9ISUVSQVJDSFk6ICdjYnAtdHBjLWFpL2FwaS92MS9yb2xlLW1hcHBpbmcvcmVvcmRlcicsXG4gIFNFQVJDSF9QVUJMSUNfREVTSUdOQVRJT046ICdhcGlzL3B1YmxpYy92OC9kZXNpZ25hdGlvbi9zZWFyY2gnLFxuICBEQVNIQk9BUkRfQURNSU46ICdjYnAtdHBjLWFpL2FwaS92MS9kYXNoYm9hcmQvY2JwLWRhc2hib2FyZC1tZXRyaWNzJyxcbiAgR0FQX0FOQUxZU0lTX0FETUlOOiAnY2JwLXRwYy1haS9hcGkvdjEvZGFzaGJvYXJkL2dhcC1hbmFseXNpcycsXG4gIERBU0hCT0FSRF9QVUJMSUM6ICdjYnAtdHBjLWFpL2FwaS92MS9kYXNoYm9hcmQvbXktZGFzaGJvYXJkLW1ldHJpY3MnLFxuICBHQVBfQU5BTFlTSVNfUFVCTElDOiAnY2JwLXRwYy1haS9hcGkvdjEvZGFzaGJvYXJkL215LWdhcC1hbmFseXNpcycsXG4gIE1BVENIRURfUk9MRV9NQVBQSU5HOiAnY2JwLXRwYy1haS9hcGkvdjEvcm9sZS1tYXBwaW5nL21hdGNoLWRlc2lnbmF0aW9ucycsXG4gIEdFVF9BUFBST1ZBTF9SRVFVRVNUUzogJ2NicC10cGMtYWkvYXBpL3YxL2FwcHJvdmFsLXJlcXVlc3RzL2xpc3QnLFxuICBTRUFSQ0hfUFVCTElDX01ETzogJ2NicC10cGMtYWkvYXBpL3YxL2FwcHJvdmFsLXJlcXVlc3RzL21kby1hZG1pbnMnLFxuICBTQVZFX0FQUFJPVkFMX1JFUVVFU1Q6ICdjYnAtdHBjLWFpL2FwaS92MS9hcHByb3ZhbC1yZXF1ZXN0cy9zZW5kJyxcbiAgVklFV19BUFBST1ZBTF9SRVFVRVNUOiAnY2JwLXRwYy1haS9hcGkvdjEvYXBwcm92YWwtcmVxdWVzdHMnLFxuICBSRVZPS0VfQVBQUk9WQUxfUkVRVUVTVDogJ2NicC10cGMtYWkvYXBpL3YxL2FwcHJvdmFsLXJlcXVlc3RzL3Jldm9rZScsXG4gIFNBVkVfREVTSUdOQVRJT05fQVBQUk9WQUxfUkVRVUVTVDogJ2NicC10cGMtYWkvYXBpL3YxL2Rlc2lnbmF0aW9uLWFwcHJvdmFsL2NyZWF0ZScsXG4gIFZJRVdfTURPX0FQUFJPVkFMX1JFUVVFU1Q6ICdhcGlzL3Byb3hpZXMvdjgvYWkvY2JwL3YxL21kby9hcHByb3ZhbC1yZXF1ZXN0cy9yZWFkJyxcbiAgQVBQUk9WRV9BTkRfUFVCTElTSF9NRE9fQVBQUk9WQUxfUkVRVUVTVDogJ2FwaXMvcHJveGllcy92OC9haS9jYnAvdjEvbWRvL2FwcHJvdmFsLXJlcXVlc3RzL3B1Ymxpc2gnLFxuICBSRUpFQ1RfQVBQUk9WQUxfUkVRVUVTVDogJ2FwaXMvcHJveGllcy92OC9haS9jYnAvdjEvbWRvL2FwcHJvdmFsLXJlcXVlc3RzL3JlamVjdCcsXG4gIFJFSkVDVF9JVEVNX0FQUFJPVkFMX1JFUVVFU1Q6ICdhcGlzL3Byb3hpZXMvdjgvYWkvY2JwL3YxL21kby9hcHByb3ZhbC1yZXF1ZXN0cy9pdGVtcy9yZWplY3QnLFxuICBNRE9fREVTSUdOQVRJT05fU0VBUkNIOiAnYXBpcy9wcm94aWVzL3Y4L2FpL2NicC92MS9kZXNpZ25hdGlvbi9zZWFyY2gnLFxuICBNRE9fQUREX1VTRVJfQ09VUlNFOiAnYXBpcy9wcm94aWVzL3Y4L2FpL2NicC92MS9tZG8vYXBwcm92YWwtcmVxdWVzdHMvY291cnNlL2FkZCcsXG4gIE1ET19TVUdHRVNURURfQ09VUlNFX0xJU1Q6ICdhcGlzL3Byb3hpZXMvdjgvYWkvY2JwL3YxL2NvdXJzZS9zdWdnZXN0aW9ucycsXG4gIE1ET19ST0xFX01BUFBJTkdfVVBEQVRFOidhcGlzL3Byb3hpZXMvdjgvYWkvY2JwL3YxL21kby9hcHByb3ZhbC1yZXF1ZXN0cy9pdGVtcy91cGRhdGUnLFxuICBSRVBVQkxJU0hfUkVRVUVTVDogJ2FwaXMvcHJveGllcy92OC9haS9jYnAvdjEvbWRvL2FwcHJvdmFsLXJlcXVlc3RzL3B1Ymxpc2gvcmV0cnknXG5cbn1cblxuXG5cbi8vIEBEaXJlY3RpdmUoKVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5cbmV4cG9ydCBjbGFzcyBTaGFyZWRTZXJ2aWNlIHtcbiAgY2JwUGxhbkZpbmFsT2JqOiBhbnkgPSB7fVxuICBiYXNlVXJsOiBzdHJpbmdcbiAgY29uZmlnRGV0YWlsczogYW55XG4gIG1kb0Jhc2VVcmw6IGFueVxuICBtZG9Db25maWdEZXRhaWxzOiBhbnlcbiAgc2NyZWVuV2lkdGg6IG51bWJlcjtcbiAgaGVhZGVyczogYW55XG4gIHN1bW1hcnlUcmlnZ2VyRXhlY3V0ZWQgPSBuZXcgU3ViamVjdCgpXG4gIGxvZ2luU3VjY2VzcyA9IG5ldyBTdWJqZWN0KClcbiAgY2hlY2tSb2xlTWFwcGluZ0Zvcm1WYWxpZGF0aW9uID0gbmV3IFN1YmplY3QoKVxuICB1cGRhdGVEZXNpZ25hdGlvbkhpZXJhcmNoeVN1YmplY3QgPSBuZXcgU3ViamVjdCgpXG4gIGZyb21NZG9Qb3J0YWwgPSBmYWxzZVxuICByZXF1ZXN0RGF0YTphbnlcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIG9uUmVzaXplKGV2ZW50KSB7XG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IGV2ZW50LnRhcmdldC5pbm5lcldpZHRoO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgaW5pdFN2YzogSW5pdFNlcnZpY2UsXG4gICkge1xuICAgIGlmIChpbml0U3ZjICYmIHRoaXMuaW5pdFN2Yy5iYXNlVXJsICYmIHRoaXMuaW5pdFN2Yy5jb25maWdEZXRhaWxzKSB7XG4gICAgICBjb25zb2xlLmxvZygndGhpcy5pbml0U3ZjJywgdGhpcy5pbml0U3ZjKVxuICAgICAgdGhpcy5iYXNlVXJsID0gdGhpcy5pbml0U3ZjLmJhc2VVcmxcbiAgICAgIHRoaXMuY29uZmlnRGV0YWlscyA9IHRoaXMuaW5pdFN2Yy5jb25maWdEZXRhaWxzXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0Q29uZmlEZXRhaWxzKClcbiAgICB9XG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIGNvbnN0IHN0b3JhZ2VEYXRhOiBhbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsb2dpbkRhdGEnKSlcbiAgICBjb25zb2xlLmxvZygnc3RvcmFnZURhdGEtLScsIHN0b3JhZ2VEYXRhKVxuICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHtzdG9yYWdlRGF0YT8uYWNjZXNzX3Rva2VufWBcbiAgICB9KTtcbiAgfVxuXG4gIHNldENvbmZpRGV0YWlscyhjb25maWdEZXRhaWxzOiBhbnkgPSBudWxsKSB7XG4gICAgaWYgKGNvbmZpZ0RldGFpbHMpIHtcbiAgICAgIHRoaXMuY29uZmlnRGV0YWlscyA9IGNvbmZpZ0RldGFpbHNcbiAgICAgIHRoaXMuYmFzZVVybCA9IGNvbmZpZ0RldGFpbHMucG9ydGFsVVJMXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2V0Q29uZmlnRGV0YWlscygpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpZ0RldGFpbHMgPSByZXNwb25zZVxuICAgICAgICB0aGlzLmJhc2VVcmwgPSByZXNwb25zZS5wb3J0YWxVUkxcbiAgICAgIH0pXG4gICAgfVxuICB9XG4gIGdldENvbmZpZygpIHtcbiAgICBpZiAodGhpcy5jb25maWdEZXRhaWxzKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb25maWdEZXRhaWxzO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBnZXRDb25maWdEZXRhaWxzKCk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KCdhc3NldHMvanNvbmZpbGVzL2NvbmZpZ3VyYXRpb25zLmpzb24nKTtcbiAgfVxuXG5cblxuICBnZXRjb3Vyc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuRkVUQ0hfQ09VUlNFU31gKVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdGVGZWF0dXJlQ291cnNlcyhyZXNwb25zZS5yZXN1bHQuY29udGVudClcbiAgICAgIH0pKVxuICB9XG5cbiAgZ2V0UG9zdGFsY291cnNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkZFVENIX1BPU1RBTF9DT1VSU0VTfWApXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0ZUZlYXR1cmVDb3Vyc2VzKHJlc3BvbnNlLnJlc3VsdC5jb250ZW50KVxuICAgICAgfSkpXG4gIH1cblxuICBnZXRSYWlsd2F5Y291cnNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkZFVENIX1JBSUxXQVlfQ09VUlNFU31gKVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdGVGZWF0dXJlQ291cnNlcyhyZXNwb25zZS5yZXN1bHQuY29udGVudClcbiAgICAgIH0pKVxuICB9XG5cbiAgZ2V0SGFsbE9mRmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5GRVRDSF9IQUxMX09GX0ZBTUV9YCwgbnVsbClcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgZm9ybWF0ZUZlYXR1cmVDb3Vyc2VzKGZlYXR1cmVDb3Vyc2VzOiBhbnkpIHtcbiAgICBjb25zdCBmb3JtYXRlZEZlYXR1cmVDb3Vyc2VzID0gW107XG4gICAgY29uc3QgZm9ybWF0ZWROZXdzcm9vbSA9IFtdO1xuICAgIGNvbnN0IGZvcm1hdGVkUGhvdG9nYWxsYXJ5ID0gW107XG4gICAgY29uc3QgZm9ybWF0ZWRUZXN0aW1vbmlhbCA9IFtdO1xuICAgIGlmIChmZWF0dXJlQ291cnNlcykge1xuICAgICAgZmVhdHVyZUNvdXJzZXMuZm9yRWFjaChjb3Vyc2UgPT4ge1xuICAgICAgICBpZiAoY291cnNlLnByaW1hcnlDYXRlZ29yeSA9PT0gJ0NvdXJzZScpIHtcbiAgICAgICAgICBjb25zdCBmb3JtYXRlZENvdXJzZSA9IHtcbiAgICAgICAgICAgIHBvc3RlckltYWdlOiBjb3Vyc2UucG9zdGVySW1hZ2UsXG4gICAgICAgICAgICBvcmdhbmlzYXRpb246IGNvdXJzZS5vcmdhbmlzYXRpb25bMF0gPyBjb3Vyc2Uub3JnYW5pc2F0aW9uWzBdIDogJ0thcm1heW9naSBCaGFyYXQnLFxuICAgICAgICAgICAgbmFtZTogY291cnNlLm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogY291cnNlLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaWRlbnRpZmllcjogY291cnNlLmlkZW50aWZpZXIsXG4gICAgICAgICAgICBhbHQ6IGNvdXJzZS5uYW1lLFxuICAgICAgICAgICAgY3JlYXRvckxvZ286IGNvdXJzZS5jcmVhdG9yTG9nbyB8fCAnJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiB0aGlzLnRpbWVDb252ZXJ0KGNvdXJzZS5kdXJhdGlvbiksXG4gICAgICAgICAgfVxuICAgICAgICAgIGZvcm1hdGVkRmVhdHVyZUNvdXJzZXMucHVzaChmb3JtYXRlZENvdXJzZSlcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb3Vyc2UucmVzb3VyY2VDYXRlZ29yeSA9PT0gJ05ld3Nyb29tJykge1xuICAgICAgICAgIGNvbnN0IGZvcm1hdGVkQ291cnNlID0ge1xuICAgICAgICAgICAgcG9zdGVySW1hZ2U6IGNvdXJzZS5wb3N0ZXJJbWFnZSxcbiAgICAgICAgICAgIG5hbWU6IGNvdXJzZS5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGNvdXJzZS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvdXJzZS5pZGVudGlmaWVyLFxuICAgICAgICAgICAgYWx0OiBjb3Vyc2UubmFtZSxcbiAgICAgICAgICAgIGNsb3VkU3RvcmFnZUtleTogYCR7dGhpcy5iYXNlVXJsfWFzc2V0cy9wdWJsaWMvJHtjb3Vyc2UuY2xvdWRTdG9yYWdlS2V5fWBcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9ybWF0ZWROZXdzcm9vbS5wdXNoKGZvcm1hdGVkQ291cnNlKVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNvdXJzZS5yZXNvdXJjZUNhdGVnb3J5ID09PSAnUGhvdG8gR2FsbGVyeScpIHtcbiAgICAgICAgICBjb25zdCBmb3JtYXRlZENvdXJzZSA9IHtcbiAgICAgICAgICAgIG5hbWU6IGNvdXJzZS5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGNvdXJzZS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvdXJzZS5pZGVudGlmaWVyLFxuICAgICAgICAgICAgYWx0OiBjb3Vyc2UubmFtZSxcbiAgICAgICAgICAgIGNsb3VkU3RvcmFnZUtleTogYCR7dGhpcy5iYXNlVXJsfWFzc2V0cy9wdWJsaWMvJHtjb3Vyc2UuY2xvdWRTdG9yYWdlS2V5fWBcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9ybWF0ZWRQaG90b2dhbGxhcnkucHVzaChmb3JtYXRlZENvdXJzZSlcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb3Vyc2UucmVzb3VyY2VDYXRlZ29yeSA9PT0gJ1Rlc3RpbW9uaWFscycpIHtcbiAgICAgICAgICBjb25zdCBmb3JtYXRlZENvdXJzZSA9IHtcbiAgICAgICAgICAgIG5hbWU6IGNvdXJzZS5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGNvdXJzZS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGNvdXJzZS5pZGVudGlmaWVyLFxuICAgICAgICAgICAgYWx0OiBjb3Vyc2UubmFtZSxcbiAgICAgICAgICAgIGNsb3VkU3RvcmFnZUtleTogYCR7dGhpcy5iYXNlVXJsfWFzc2V0cy9wdWJsaWMvJHtjb3Vyc2UuY2xvdWRTdG9yYWdlS2V5fWAsXG4gICAgICAgICAgICBtaW1lVHlwZTogY291cnNlLm1pbWVUeXBlLFxuICAgICAgICAgICAgcG9zdGVySW1hZ2U6IGNvdXJzZS5wb3N0ZXJJbWFnZSxcbiAgICAgICAgICAgIGFydGlmYWN0VXJsOiBjb3Vyc2UuYXJ0aWZhY3RVcmwsXG4gICAgICAgICAgfVxuICAgICAgICAgIGZvcm1hdGVkVGVzdGltb25pYWwucHVzaChmb3JtYXRlZENvdXJzZSlcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB7IGNvdXJzZTogZm9ybWF0ZWRGZWF0dXJlQ291cnNlcywgbmV3c3Jvb206IGZvcm1hdGVkTmV3c3Jvb20sIGdhbGxhcnk6IGZvcm1hdGVkUGhvdG9nYWxsYXJ5LCB0ZXN0aW1vbmlsczogZm9ybWF0ZWRUZXN0aW1vbmlhbCB9XG4gIH1cblxuICB0aW1lQ29udmVydChkdXJhdGlvbjogbnVtYmVyKSB7XG4gICAgaWYgKGR1cmF0aW9uKSB7XG4gICAgICB2YXIgbnVtID0gZHVyYXRpb247XG4gICAgICB2YXIgaG91cnMgPSAobnVtIC8gMzYwMCk7XG4gICAgICB2YXIgcmhvdXJzID0gTWF0aC5mbG9vcihob3Vycyk7XG4gICAgICB2YXIgbWludXRlcyA9IChob3VycyAtIHJob3VycykgKiA2MDtcbiAgICAgIHZhciBybWludXRlcyA9IE1hdGgucm91bmQobWludXRlcyk7XG4gICAgICBpZiAocm1pbnV0ZXMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJob3VycyArIFwiaFwiO1xuICAgICAgfSBlbHNlIGlmIChyaG91cnMgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJtaW51dGVzICsgXCJtXCJcbiAgICAgIH1cbiAgICAgIHJldHVybiByaG91cnMgKyBcImggXCIgKyBybWludXRlcyArIFwibVwiO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cblxuICBnZXRDbGllbnRMaXN0KCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KCcuL2Fzc2V0cy9qc29uZmlsZXMvY2xpZW50LWxpc3QuanNvbicpO1xuICB9XG5cbiAgZ2V0VGVuZGVycygpIHtcbiAgICBjb25zdCBib2R5ID0ge1xuICAgICAgcmVxdWVzdDoge1xuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgcHJpbWFyeUNhdGVnb3J5OiBbXCJ0ZW5kZXJcIl0sXG4gICAgICAgICAgc3RhdHVzOiB7IFwiIT1cIjogXCJSZXRpcmVkXCIgfVxuICAgICAgICB9LFxuICAgICAgICBmYWNldHM6IFtcIm1pbWVUeXBlXCJdLFxuICAgICAgICBzb3J0Qnk6IHsgY3JlYXRlZE9uOiBcIkRlc2NcIiB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkZFVENIX1RFTkRFUlN9YCwgYm9keSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgZ2V0Tm90aWZpY2F0aW9ucygpIHtcbiAgICBjb25zdCBib2R5ID0ge1xuICAgICAgcmVxdWVzdDoge1xuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgcHJpbWFyeUNhdGVnb3J5OiBbXCJub3RpZmljYXRpb25cIl0sXG4gICAgICAgICAgc3RhdHVzOiB7IFwiIT1cIjogXCJSZXRpcmVkXCIgfVxuICAgICAgICB9LFxuICAgICAgICBmYWNldHM6IFtcIm1pbWVUeXBlXCJdLFxuICAgICAgICBzb3J0Qnk6IHsgY3JlYXRlZE9uOiBcImRlc2NcIiB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkZFVENIX1RFTkRFUlN9YCwgYm9keSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG4gIGdldEZvcm1SZWFkRGF0YShyZXE6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLk5MV19GT1JNX1JFQUR9YCwgcmVxKVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuXG4gIGdldE1pbmlzdHJ5RGF0YShtaW5pc3RyeVR5cGUpIHtcbiAgICBsZXQgc3ViX29yZ190eXBlID0gJydcbiAgICBpZiAobWluaXN0cnlUeXBlID09ICdtaW5pc3RyeScpIHtcbiAgICAgIHN1Yl9vcmdfdHlwZSA9ICdtaW5pc3RyeSdcbiAgICB9IGVsc2Uge1xuICAgICAgc3ViX29yZ190eXBlID0gJ3N0YXRlJ1xuICAgIH1cbiAgICBjb25zdCBzdG9yYWdlRGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbG9naW5EYXRhJykpXG4gICAgY29uc29sZS5sb2coJ3N0b3JhZ2VEYXRhLS0nLCBzdG9yYWdlRGF0YSlcbiAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7c3RvcmFnZURhdGE/LmFjY2Vzc190b2tlbn1gXG4gICAgfSk7XG4gICAgY29uc29sZS5sb2coJ3RoaXMuYmFzZVVybCcsIHRoaXMuYmFzZVVybClcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5HRVRfU1RBVEVfQ0VOVEVSfS8/c3ViX29yZ190eXBlPSR7c3ViX29yZ190eXBlfWAsIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuICBnZW5lcmF0ZVJvbGVNYXBwaW5nKHJlcUJvZHksIGZpbGVzPzogRmlsZSB8IEZpbGVbXSkge1xuICAgIGNvbnNvbGUubG9nKCdyZXFCb2R5LS0nLCByZXFCb2R5KTtcbiAgICBjb25zb2xlLmxvZygnZmlsZXMtLS0nLCBmaWxlcylcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgLy8gQWRkIHJlcXVpcmVkIGZpZWxkc1xuICAgIGlmIChyZXFCb2R5LnN0YXRlX2NlbnRlcl9pZCkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdzdGF0ZV9jZW50ZXJfaWQnLCByZXFCb2R5LnN0YXRlX2NlbnRlcl9pZCk7XG4gICAgfVxuXG4gICAgaWYgKHJlcUJvZHkuc3RhdGVfY2VudGVyX25hbWUpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnc3RhdGVfY2VudGVyX25hbWUnLCByZXFCb2R5LnN0YXRlX2NlbnRlcl9uYW1lKTtcbiAgICB9XG5cbiAgICBpZiAocmVxQm9keS5kZXBhcnRtZW50X2lkKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2RlcGFydG1lbnRfaWQnLCByZXFCb2R5LmRlcGFydG1lbnRfaWQpO1xuICAgIH1cblxuICAgIGlmIChyZXFCb2R5LmRlcGFydG1lbnRfbmFtZSkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdkZXBhcnRtZW50X25hbWUnLCByZXFCb2R5LmRlcGFydG1lbnRfbmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHJlcUJvZHkuaW5zdHJ1Y3Rpb24pIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnaW5zdHJ1Y3Rpb24nLCByZXFCb2R5Lmluc3RydWN0aW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCBjYnBEYXRhOiBhbnkgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjYnBQbGFuRmluYWxPYmonKSB8fCAne30nKTtcbiAgICBjb25zdCBvcmdUeXBlID1cbiAgICAgIGNicERhdGE/Lm1pbmlzdHJ5Py5zYk9yZ1R5cGUgfHxcbiAgICAgIGNicERhdGE/Lm9yZ190eXBlIHx8XG4gICAgICAnJztcbiAgICBpZiAob3JnVHlwZSkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdvcmdfdHlwZScsIG9yZ1R5cGUpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBtdWx0aXBsZSBvciBzaW5nbGUgZmlsZVxuICAgIGlmIChmaWxlcykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmlsZXMpKSB7XG4gICAgICAgIGZpbGVzLmZvckVhY2goKGZpbGU6IEZpbGUpID0+IHtcbiAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2FkZGl0aW9uYWxfZG9jdW1lbnQnLCBmaWxlLCBmaWxlLm5hbWUpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNpbmdsZSBmaWxlXG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnYWRkaXRpb25hbF9kb2N1bWVudCcsIGZpbGVzLCBmaWxlcy5uYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEZWJ1ZyBGb3JtRGF0YSBjb250ZW50XG4gICAgY29uc29sZS5sb2coXCJGb3JtRGF0YSBjb250ZW50czpcIik7XG4gICAgZm9ybURhdGEuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgJHtrZXl9OiBGSUxFIC0+ICR7dmFsdWUubmFtZX0gKCR7dmFsdWUuc2l6ZX0gYnl0ZXMpYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyhgJHtrZXl9OiAke3ZhbHVlfWApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVycztcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkdFVF9ST0xFX01BUFBJTkd9YCwgZm9ybURhdGEsIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgIH0pKTtcbiAgfVxuXG5cblxuICBnZXREZXBhcnRtZW50TGlzdChtaW5pc3RyeUlkKSB7XG4gICAgY29uc3Qgc3RvcmFnZURhdGE6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xvZ2luRGF0YScpKVxuICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHtzdG9yYWdlRGF0YT8uYWNjZXNzX3Rva2VufWBcbiAgICB9KTtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5HRVRfREVQQVJUTUVOVH0vJHttaW5pc3RyeUlkfWAsIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuICBnZXRSb2xlTWFwcGluZ0J5U3RhdGVDZW50ZXIoc3RhdGVfY2VudGVyX2lkKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuR0VUX1JPTEVfTUFQUElOR19CWV9TVEFURV9DRU5URVJ9LyR7c3RhdGVfY2VudGVyX2lkfT9sb2FkX2NicF9wbGFucz10cnVlYCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGdldFJvbGVNYXBwaW5nQnlTdGF0ZUNlbnRlckFuZERlcGFydG1lbnQoc3RhdGVfY2VudGVyX2lkLCBkZXBhcnRtZW50X2lkKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIGlmICh0eXBlb2YgZGVwYXJ0bWVudF9pZCA9PT0gJ3N0cmluZycpe1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5HRVRfUk9MRV9NQVBQSU5HX0JZX1NUQVRFX0NFTlRFUn0vJHtzdGF0ZV9jZW50ZXJfaWR9L2RlcGFydG1lbnQvJHtkZXBhcnRtZW50X2lkfT9sb2FkX2NicF9wbGFucz10cnVlYCwgeyBoZWFkZXJzIH0pXG4gICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgICB9KSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5HRVRfUk9MRV9NQVBQSU5HX0JZX1NUQVRFX0NFTlRFUn0vJHtzdGF0ZV9jZW50ZXJfaWR9P2xvYWRfY2JwX3BsYW5zPXRydWVgLCB7IGhlYWRlcnMgfSlcbiAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICAgIH0pKVxuICAgIH1cblxuICB9XG5cbiAgdXBkYXRlUm9sZU1hcHBpbmcocm9sZV9tYXBwaW5nX2lkLCByZXFCb2R5KSB7XG4gICAgIGlmICh0aGlzLmZyb21NZG9Qb3J0YWwpIHtcbiAgICAgIGxldCBtZG9CYXNlVXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCdcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucHV0PGFueT4oYCR7dGhpcy5tZG9CYXNlVXJsfS8ke0FQSV9FTkRfUE9JTlRTLk1ET19ST0xFX01BUFBJTkdfVVBEQVRFfWAsIHJlcUJvZHkpXG4gICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgICB9KSlcbiAgICB9IGVsc2Uge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLlVQREFURV9ST0xFX01BUFBJTkd9LyR7cm9sZV9tYXBwaW5nX2lkfWAsIHJlcUJvZHksIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gICAgfVxuICB9XG5cbiAgZGVsZXRlUm9sZU1hcHBpbmcocm9sZV9tYXBwaW5nX2lkKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuVVBEQVRFX1JPTEVfTUFQUElOR30vJHtyb2xlX21hcHBpbmdfaWR9YCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGdldFJlY29tbWVuZGVkQ291cnNlKHJvbGVfbWFwcGluZ19pZCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICBsZXQgcmVxQm9keSA9IHtcbiAgICAgIHJvbGVfbWFwcGluZ19pZDogcm9sZV9tYXBwaW5nX2lkXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkdFVF9SRUNPTU1FTkRFRF9DT1VSU0V9L2NvdXJzZS1yZWNvbW1lbmRhdGlvbnMvZ2VuZXJhdGVgLCByZXFCb2R5LCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgZGVsZXRlQ291cnNlUmVjb21tZW5kYXRpb25zKHJvbGVNYXBJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuR0VUX1JFQ09NTUVOREVEX0NPVVJTRX0vY291cnNlLXJlY29tbWVuZGF0aW9ucy9yb2xlLW1hcHBpbmcvJHtyb2xlTWFwSWR9YCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIHNhdmVDb3Vyc2UocmVxQm9keSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5TQVZFX0NPVVJTRVN9YCwgcmVxQm9keSwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuICB1cGRhdGVDb3Vyc2UocmVxQm9keSwgY2JwX3BsYW5faWQpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5VUERBVEVfQ09VUlNFU30vJHtjYnBfcGxhbl9pZH1gLCByZXFCb2R5LCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgZ2V0Q291cnNlKHJvbGVfbWFwcGluZ19pZCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkdFVF9DT1VSU0VTfT9yb2xlX21hcHBpbmdfaWQ9JHtyb2xlX21hcHBpbmdfaWR9YCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGdldElHT1RTdWdnZXN0ZWRDb3Vyc2VzKHJlcUJvZHkpIHtcbiAgICAvLyBVc2UgdGhlIHJlcUJvZHkgcGFyYW1ldGVyIHBhc3NlZCBmcm9tIHRoZSBjb21wb25lbnRcbiAgICAvLyBJZiBubyByZXFCb2R5IGlzIHByb3ZpZGVkLCB1c2UgZGVmYXVsdCBzdHJ1Y3R1cmVcbiAgICBsZXQgcmVxID0gcmVxQm9keSB8fCB7XG4gICAgICBcInJlcXVlc3RcIjoge1xuICAgICAgICBcImZpbHRlcnNcIjoge1xuICAgICAgICAgIFwicHJpbWFyeUNhdGVnb3J5XCI6IFtcIkNvdXJzZVwiXSxcbiAgICAgICAgICBcInN0YXR1c1wiOiBbXCJMaXZlXCJdLFxuICAgICAgICAgIFwiY291cnNlQ2F0ZWdvcnlcIjogW1wiQ291cnNlXCJdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZmllbGRzXCI6IFtcInBvc3RlckltYWdlXCIsIFwiZGVzY3JpcHRpb25cIiwgXCJuYW1lXCJdLFxuICAgICAgICBcImxpbWl0XCI6IDEyLFxuICAgICAgICBcIm9mZnNldFwiOiAwXG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnNvbGUubG9nKCdnZXRJR09UU3VnZ2VzdGVkQ291cnNlcyBmaW5hbCByZXF1ZXN0OicsIEpTT04uc3RyaW5naWZ5KHJlcSwgbnVsbCwgMikpO1xuXG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLlNVR0dFU1RFRF9DT1VSU0VfTElTVH1gLCByZXEsIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuICBnZXRTdWdnZXN0ZWRDb3Vyc2VzKHJvbGVfbWFwcGluZ19pZCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLlNVR0dFU1RFRF9DT1VSU0VfTElTVH0vJHtyb2xlX21hcHBpbmdfaWR9YCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIHNhdmVTdWdnZXN0ZWRDb3Vyc2UocmVxQm9keSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5TQVZFX0NPVVJTRV9TVUdHRVNURURfQ09VUlNFfWAsIHJlcUJvZHksIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuICBhZGREZXNpZ25hdGlvbihyZXFCb2R5KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkFERF9ERVNJR05BVElPTn1gLCByZXFCb2R5LCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgcGVyZm9ybUxvZ2luKHJlcUJvZHkpIHtcbiAgICBjb25zdCBib2R5ID0gbmV3IEh0dHBQYXJhbXMoKVxuICAgICAgLnNldCgndXNlcm5hbWUnLCByZXFCb2R5LnVzZXJuYW1lKVxuICAgICAgLnNldCgncGFzc3dvcmQnLCByZXFCb2R5LnBhc3N3b3JkKTtcbiAgICBjb25zb2xlLmxvZygnaW4gbG9naW4gdWF0JylcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5MT0dJTn1gLCBib2R5LnRvU3RyaW5nKCksIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBsb2dvdXQoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkxPR09VVH1gLCAnJywgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIHNldENCUFBsYW5Mb2NhbFN0b3JhZ2UoKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NicFBsYW5GaW5hbE9iaicsIEpTT04uc3RyaW5naWZ5KHRoaXMuY2JwUGxhbkZpbmFsT2JqKSlcbiAgfVxuXG4gIGdldENCUFBsYW5Mb2NhbFN0b3JhZ2UoKSB7XG4gICAgbGV0IGNicFBsYW5GaW5hbE9iaiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NicFBsYW5GaW5hbE9iaicpKVxuICAgIHJldHVybiBjYnBQbGFuRmluYWxPYmpcbiAgfVxuXG4gIGNoZWNrSWZMb2dpbigpIHtcbiAgICBsZXQgZmxhZyA9IGZhbHNlXG4gICAgbGV0IGxvZ2luRGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsb2dpbkRhdGEnKVxuICAgIGlmIChsb2dpbkRhdGEgJiYgSlNPTi5wYXJzZShsb2dpbkRhdGEpWydhY2Nlc3NfdG9rZW4nXSkge1xuICAgICAgZmxhZyA9IHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgZmxhZyA9IGZhbHNlXG4gICAgfVxuICAgIHJldHVybiBmbGFnXG4gIH1cblxuICBkZWxldGVSb2xlTWFwcGluZ0J5U3RhdGVBbmREZXBhcnRtZW50KHN0YXRlX2NlbnRlcl9pZCwgZGVwYXJ0bWVudF9pZCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICBsZXQgdXJsID0gJydcbiAgICBpZiAoZGVwYXJ0bWVudF9pZCAmJiBkZXBhcnRtZW50X2lkICE9PSAnbnVsbCcgJiYgZGVwYXJ0bWVudF9pZCAhPT0gJ3VuZGVmaW5lZCcgJiYgZGVwYXJ0bWVudF9pZCAhPT0gdW5kZWZpbmVkICYmIGRlcGFydG1lbnRfaWQgIT09IG51bGwpIHtcbiAgICAgIHVybCA9IGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkRFTEVURV9ST0xFX01BUFBJTkdfQllfU1RBVEVfQ0VOVEVSfT9zdGF0ZV9jZW50ZXJfaWQ9JHtzdGF0ZV9jZW50ZXJfaWR9JmRlcGFydG1lbnRfaWQ9JHtkZXBhcnRtZW50X2lkfWBcbiAgICB9IGVsc2Uge1xuICAgICAgdXJsID0gYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuREVMRVRFX1JPTEVfTUFQUElOR19CWV9TVEFURV9DRU5URVJ9P3N0YXRlX2NlbnRlcl9pZD0ke3N0YXRlX2NlbnRlcl9pZH1gXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8YW55Pih1cmwsIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuICBhZGRVc2VyQ291cnNlKHJlcUJvZHkpIHtcbiAgICBpZiAodGhpcy5mcm9tTWRvUG9ydGFsKSB7XG4gICAgICBsZXQgbWRvQmFzZVVybCA9ICdodHRwOi8vbG9jYWxob3N0OjMwMDAnXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMubWRvQmFzZVVybH0vJHtBUElfRU5EX1BPSU5UUy5NRE9fQUREX1VTRVJfQ09VUlNFfWApXG4gICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgICB9KSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuQUREX1VTRVJfQ09VUlNFU31gLCByZXFCb2R5LCB7IGhlYWRlcnMgfSlcbiAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICAgIH0pKVxuICAgIH1cblxuICB9XG5cbiAgZ2V0VXNlckNvdXJzZShyb2xlX21hcHBpbmdfaWQpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5HRVRfVVNFUl9DT1VSU0VTfS8ke3JvbGVfbWFwcGluZ19pZH1gLCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgZ2V0Q29tcGV0ZW5jeUpzb24oKSB7XG4gICAgaWYgKHRoaXMuZnJvbU1kb1BvcnRhbCkge1xuICAgICAgbGV0IG1kb0Jhc2VVcmwgPSAnaHR0cDovL2xvY2FsaG9zdDozMDAwJ1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLm1kb0Jhc2VVcmx9L2Fzc2V0cy9qc29uZmlsZXMvY29tcGV0ZW5jaWVzLmpzb25gKVxuICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgICAgfSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy5iYXNlVXJsfS90cmFpbmluZy1wbGEtYWkvYXNzZXRzL2pzb25maWxlcy9jb21wZXRlbmNpZXMuanNvbmAsIHsgaGVhZGVycyB9KVxuICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgICAgfSkpXG4gICAgfVxuXG4gICAgLy8gdGhpcy5odHRwLmdldDxhbnlbXT4oJy9hc3NldHMvanNvbmZpbGVzL2NvbXBldGVuY2llcy5qc29uJylcbiAgfVxuXG4gIGNvbnZlcnQoc2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIXNlY29uZHMgfHwgc2Vjb25kcyA8PSAwKSB7XG4gICAgICByZXR1cm4gJ04vQSc7XG4gICAgfVxuXG4gICAgY29uc3QgdG90YWxTZWNvbmRzID0gTWF0aC5mbG9vcihzZWNvbmRzKTtcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IodG90YWxTZWNvbmRzIC8gMzYwMCk7XG4gICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3IoKHRvdGFsU2Vjb25kcyAlIDM2MDApIC8gNjApO1xuICAgIGNvbnN0IHJlbWFpbmluZ1NlY29uZHMgPSB0b3RhbFNlY29uZHMgJSA2MDtcblxuICAgIGlmIChob3VycyA+IDApIHtcbiAgICAgIC8vIEZvciBkdXJhdGlvbnMgd2l0aCBob3Vycywgc2hvdyBob3VycyBhbmQgbWludXRlcyAoZS5nLiwgXCIzaCAxMG1cIilcbiAgICAgIGlmIChtaW51dGVzID4gMCkge1xuICAgICAgICByZXR1cm4gYCR7aG91cnN9aCAke21pbnV0ZXN9bWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYCR7aG91cnN9aGA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChtaW51dGVzID4gMCkge1xuICAgICAgLy8gRm9yIGR1cmF0aW9ucyB1bmRlciBhbiBob3VyLCBzaG93IG1pbnV0ZXMgYW5kIHNlY29uZHMgKGUuZy4sIFwiNThtIDNzXCIpXG4gICAgICBpZiAocmVtYWluaW5nU2Vjb25kcyA+IDApIHtcbiAgICAgICAgcmV0dXJuIGAke21pbnV0ZXN9bSAke3JlbWFpbmluZ1NlY29uZHN9c2A7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYCR7bWludXRlc31tYDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9yIGR1cmF0aW9ucyB1bmRlciBhIG1pbnV0ZSwgc2hvdyBzZWNvbmRzIG9ubHlcbiAgICAgIHJldHVybiBgJHtyZW1haW5pbmdTZWNvbmRzfXNgO1xuICAgIH1cbiAgfVxuXG4gIGdldFVzZXJQcm9maWxlKCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkdFVF9VU0VSX1BST0ZJTEV9YCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGdldFVzZXJSZWNvbW1lbmRhdGlvbkNvdXJzZShyb2xlX21hcHBpbmdfaWQpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5HRVRfVVNFUl9TRUxFQ1RFRF9DT1VSU0VTfT9yb2xlX21hcHBpbmdfaWQ9JHtyb2xlX21hcHBpbmdfaWR9YCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGRvd25sb2FkUGRmKHN0YXRlX2NlbnRlcl9pZDogc3RyaW5nLCBjb250ZXh0OiBzdHJpbmcsIGxhbmd1YWdlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBlbmRwb2ludCA9XG4gICAgICBjb250ZXh0ID09PSAnYWNicCdcbiAgICAgICAgPyBBUElfRU5EX1BPSU5UUy5ET1dOTE9BRF9QREZfQUNCUFxuICAgICAgICA6IEFQSV9FTkRfUE9JTlRTLkRPV05MT0FEX1BERjtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcmx9JHtlbmRwb2ludH0/c3RhdGVfY2VudGVyX2lkPSR7c3RhdGVfY2VudGVyX2lkfSombGFuZ3VhZ2U9JHtsYW5ndWFnZX1gO1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwge1xuICAgICAgaGVhZGVycyxcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xuICAgIH0pLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcblxuICAgICAgY29uc3QgY29udGVudERpc3Bvc2l0aW9uID0gcmVzLmhlYWRlcnMuZ2V0KCdjb250ZW50LWRpc3Bvc2l0aW9uJyk7XG4gICAgICBjb25zb2xlLmxvZygnY29udGVudERpc3Bvc2l0aW9uJywgcmVzLmhlYWRlcnMpXG4gICAgICBsZXQgZmlsZW5hbWUgPSBgQ0JQX1JlcG9ydF8ke3N0YXRlX2NlbnRlcl9pZH0ucGRmYDtcblxuICAgICAgaWYgKGNvbnRlbnREaXNwb3NpdGlvbikge1xuICAgICAgICBjb25zdCBtYXRjaCA9IGNvbnRlbnREaXNwb3NpdGlvbi5tYXRjaCgvZmlsZW5hbWU9XCI/KFteXCJdKylcIj8vKTtcbiAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoWzFdKSB7XG4gICAgICAgICAgZmlsZW5hbWUgPSBtYXRjaFsxXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgYSBibG9iIFVSTCBhbmQgZG93bmxvYWRcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbcmVzLmJvZHldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pO1xuICAgICAgY29uc3QgZG93bmxvYWRVcmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgIGEuaHJlZiA9IGRvd25sb2FkVXJsO1xuICAgICAgYS5kb3dubG9hZCA9IGZpbGVuYW1lO1xuICAgICAgYS5jbGljaygpO1xuXG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGRvd25sb2FkVXJsKTtcbiAgICB9KTtcbiAgfVxuXG4gIGRvd25sb2FkUGRmRm9yRGVwYXJ0bWVudChzdGF0ZV9jZW50ZXJfaWQsIGRlcGFydG1lbnRfaWQ6IHN0cmluZywgY29udGV4dDogc3RyaW5nLCBsYW5ndWFnZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZW5kcG9pbnQgPVxuICAgICAgY29udGV4dCA9PT0gJ2FjYnAnXG4gICAgICAgID8gQVBJX0VORF9QT0lOVFMuRE9XTkxPQURfUERGX0FDQlBcbiAgICAgICAgOiBBUElfRU5EX1BPSU5UUy5ET1dOTE9BRF9QREY7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJsfSR7ZW5kcG9pbnR9P3N0YXRlX2NlbnRlcl9pZD0ke3N0YXRlX2NlbnRlcl9pZH0mZGVwYXJ0bWVudF9pZD0ke2RlcGFydG1lbnRfaWR9Jmxhbmd1YWdlPSR7bGFuZ3VhZ2V9YDtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHtcbiAgICAgIGhlYWRlcnMsXG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYidcbiAgICB9KS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG5cbiAgICAgIGNvbnN0IGNvbnRlbnREaXNwb3NpdGlvbiA9IHJlcy5oZWFkZXJzLmdldCgnY29udGVudC1kaXNwb3NpdGlvbicpO1xuICAgICAgY29uc29sZS5sb2coJ2NvbnRlbnREaXNwb3NpdGlvbicsIHJlcy5oZWFkZXJzKVxuICAgICAgbGV0IGZpbGVuYW1lID0gYENCUF9SZXBvcnRfJHtzdGF0ZV9jZW50ZXJfaWR9XyR7ZGVwYXJ0bWVudF9pZH0ucGRmYDtcblxuICAgICAgaWYgKGNvbnRlbnREaXNwb3NpdGlvbikge1xuICAgICAgICBjb25zdCBtYXRjaCA9IGNvbnRlbnREaXNwb3NpdGlvbi5tYXRjaCgvZmlsZW5hbWU9XCI/KFteXCJdKylcIj8vKTtcbiAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoWzFdKSB7XG4gICAgICAgICAgZmlsZW5hbWUgPSBtYXRjaFsxXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgYSBibG9iIFVSTCBhbmQgZG93bmxvYWRcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbcmVzLmJvZHldLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pO1xuICAgICAgY29uc3QgZG93bmxvYWRVcmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgIGEuaHJlZiA9IGRvd25sb2FkVXJsO1xuICAgICAgYS5kb3dubG9hZCA9IGZpbGVuYW1lO1xuICAgICAgYS5jbGljaygpO1xuXG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKGRvd25sb2FkVXJsKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENlbnRlckJhc2VkRGVwYXJ0bWVudChzdGF0ZV9jZW50ZXJfaWQpIHtcbiAgICAvLyBsZXQgcmVxQm9keSA9IHsgXCJyZXF1ZXN0XCI6IHsgXCJmaWx0ZXJzXCI6IHsgXCJzdGF0dXNcIjogMSwgXCJtaW5pc3RyeU9yU3RhdGVUeXBlXCI6IFwibWluaXN0cnlcIiwgXCJtaW5pc3RyeU9yU3RhdGVJZFwiOiBzdGF0ZV9jZW50ZXJfaWR9LCBcInNvcnRfYnlcIjogeyBcImNyZWF0ZWREYXRlXCI6IFwiZGVzY1wiIH0sIFwibGltaXRcIjogOTk5OSwgXCJvZmZzZXRcIjogMCwgXCJmaWVsZHNcIjogW1wiaWRlbnRpZmllclwiLCBcIm9yZ05hbWVcIiwgXCJkZXNjcmlwdGlvblwiLCBcInBhcmVudE9yZ05hbWVcIiwgXCJtaW5pc3RyeU9yU3RhdGVJZFwiLCBcIm1pbmlzdHJ5T3JTdGF0ZVR5cGVcIiwgXCJtaW5pc3RyeU9yU3RhdGVOYW1lXCIsIFwic2JPcmdTdWJUeXBlXCJdIH0gfVxuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkNFTlRFUl9CQVNFRF9NSU5JU1RSWX0vJHtzdGF0ZV9jZW50ZXJfaWR9P2xpbWl0PTk5OTkmb2Zmc2V0PTAmc3ViX29yZ190eXBlPW1pbmlzdHJ5YCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG5cbiAgZG93bmxvYWRQZGZGb3JDb3Vyc2VSZWNvbW1lbmRhdGlvbihzdGF0ZV9jZW50ZXJfaWQpIHtcblxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkRPV05MT0FEX0NPVVJTRV9SRUNPTU1FTkRBVElPTn0/cm9sZV9tYXBwaW5nX2lkPSR7c3RhdGVfY2VudGVyX2lkfWA7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7XG4gICAgICBoZWFkZXJzLFxuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InXG4gICAgfSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuXG4gICAgICBjb25zdCBjb250ZW50RGlzcG9zaXRpb24gPSByZXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtZGlzcG9zaXRpb24nKTtcbiAgICAgIGxldCBmaWxlbmFtZSA9IGBDT1VSU0VfUkVDT01NRU5EQVRJT05fUmVwb3J0XyR7c3RhdGVfY2VudGVyX2lkfS5wZGZgO1xuXG4gICAgICBpZiAoY29udGVudERpc3Bvc2l0aW9uKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gY29udGVudERpc3Bvc2l0aW9uLm1hdGNoKC9maWxlbmFtZT1cIj8oW15cIl0rKVwiPy8pO1xuICAgICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0pIHtcbiAgICAgICAgICBmaWxlbmFtZSA9IG1hdGNoWzFdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENyZWF0ZSBhIGJsb2IgVVJMIGFuZCBkb3dubG9hZFxuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtyZXMuYm9keV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XG4gICAgICBjb25zdCBkb3dubG9hZFVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgYS5ocmVmID0gZG93bmxvYWRVcmw7XG4gICAgICBhLmRvd25sb2FkID0gZmlsZW5hbWU7XG4gICAgICBhLmNsaWNrKCk7XG5cbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoZG93bmxvYWRVcmwpO1xuICAgIH0pO1xuICB9XG5cbiAgdXBsb2FkRG9jdW1lbnQocmVxQm9keSwgZmlsZT86IEZpbGUpIHtcbiAgICBjb25zdCBzdG9yYWdlRGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbG9naW5EYXRhJykpXG4gICAgLy8gIGNvbnNvbGUubG9nKCdzdG9yYWdlRGF0YS0tJywgc3RvcmFnZURhdGEpXG4gICAgdGhpcy5oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3N0b3JhZ2VEYXRhPy5hY2Nlc3NfdG9rZW59YFxuICAgIH0pO1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcblxuICAgIC8vIEFkZCByZXF1aXJlZCBmaWVsZHNcbiAgICAvLyBpZiAocmVxQm9keS5zdGF0ZV9jZW50ZXJfaWQpIHtcbiAgICAvLyAgIGZvcm1EYXRhLmFwcGVuZCgnc3RhdGVfY2VudGVyX2lkJywgcmVxQm9keS5zdGF0ZV9jZW50ZXJfaWQpO1xuICAgIC8vIH1cblxuICAgIC8vIGlmIChyZXFCb2R5LmRlcGFydG1lbnRfaWQpIHtcbiAgICAvLyAgIGZvcm1EYXRhLmFwcGVuZCgnZGVwYXJ0bWVudF9pZCcsIHJlcUJvZHkuZGVwYXJ0bWVudF9pZCk7XG4gICAgLy8gfVxuXG5cblxuICAgIC8vIGlmKHJlcUJvZHkuZG9jdW1lbnROYW1lKSB7XG4gICAgLy8gICBmb3JtRGF0YS5hcHBlbmQoJ2RvY3VtZW50X25hbWUnLCByZXFCb2R5LmRvY3VtZW50TmFtZSk7XG4gICAgLy8gfVxuICAgIC8vIEFkZCBmaWxlIGlmIHByb3ZpZGVkXG4gICAgLy8gaWYgKGZpbGUpIHtcbiAgICAvLyAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuICAgIC8vIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5VUExPQURfRE9DVU1FTlR9YCwgcmVxQm9keSwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGdldFVwbG9hZGVkRG9jdW1lbnRzKHJlcUJvZHkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzO1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gICAgT2JqZWN0LmVudHJpZXMocmVxQm9keSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KGtleSwgdmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkdFVF9ET0NVTUVOVFN9YCwge1xuICAgICAgaGVhZGVycyxcbiAgICAgIHBhcmFtc1xuICAgIH0pLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgZGVsZXRlRmlsZShmaWxlSWQpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5ERUxFVEVfRklMRX0vJHtmaWxlSWR9YCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIHRyaWdnZXJGaWxlU3VtbWFyeShmaWxlSWQpIHtcbiAgICBjb25zdCBzdG9yYWdlRGF0YTogYW55ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbG9naW5EYXRhJykpXG4gICAgLy8gY29uc29sZS5sb2coJ3N0b3JhZ2VEYXRhLS0nLCBzdG9yYWdlRGF0YSlcbiAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7c3RvcmFnZURhdGE/LmFjY2Vzc190b2tlbn1gXG4gICAgfSk7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkRFTEVURV9GSUxFfS8ke2ZpbGVJZH0vc3VtbWFyeWAsIHt9LCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgZG93bmxvYWRGaWxlKGZpbGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxCbG9iPiB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVycztcblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkRPV05MT0FEX0ZJTEV9LyR7ZmlsZUlkfS9kb3dubG9hZGAsIHtcbiAgICAgIGhlYWRlcnMsXG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlU3VtbWFyeShmaWxlSWQpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5ERUxFVEVfU1VNTUFSWX0vJHtmaWxlSWR9L3N1bW1hcnlgLCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgZGVsZXRlUmVjb21tZW5kZWRDb3Vyc2Uocm9sZU1hcHBpbmdJZDogc3RyaW5nLCBjb3Vyc2VJZGVudGlmaWVyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8YW55PihcbiAgICAgIGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkRFTEVURV9DT1VSU0VfUkVDT01NRU5EQVRJT059LyR7cm9sZU1hcHBpbmdJZH0vY291cnNlLyR7Y291cnNlSWRlbnRpZmllcn1gLFxuICAgICAgeyBoZWFkZXJzIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0Q2JwUGxhbnNXaXRoU2VsZWN0ZWRDb3Vyc2VzKCk6IGFueVtdIHtcbiAgICBjb25zdCBzb3VyY2UgPSB0aGlzLmNicFBsYW5GaW5hbE9iajtcblxuICAgIHJldHVybiBzb3VyY2U/LnJvbGVfbWFwcGluZ19nZW5lcmF0aW9uXG4gICAgICA/LmZsYXRNYXAoKHJvbGU6IGFueSkgPT4gcm9sZS5jYnBfcGxhbnMgfHwgW10pXG4gICAgICA/LmZpbHRlcihcbiAgICAgICAgKHBsYW46IGFueSkgPT5cbiAgICAgICAgICBBcnJheS5pc0FycmF5KHBsYW4uc2VsZWN0ZWRfY291cnNlcykgJiZcbiAgICAgICAgICBwbGFuLnNlbGVjdGVkX2NvdXJzZXMubGVuZ3RoID4gMFxuICAgICAgKSB8fCBbXTtcbiAgfVxuXG4gIGdldEFkZGl0aW9uYWxQYXJhbWV0ZXJmb3JTdWdnZXN0ZWRDb3Vyc2VzKGlkZW50aWZpZXJzKSB7XG4gICAgXG4gICAgbGV0IHJlcUJvZHkgPSB7XG4gICAgICBcInJlcXVlc3RcIjoge1xuICAgICAgICBcImZpbHRlcnNcIjoge1xuICAgICAgICAgIFwiaWRlbnRpZmllclwiOiBpZGVudGlmaWVycyxcblxuXG4gICAgICAgICAgXCJzdGF0dXNcIjogW1xuICAgICAgICAgICAgXCJMaXZlXCJcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIFwiZmllbGRzXCI6IFtcbiAgICAgICAgICBcIm5hbWVcIixcbiAgICAgICAgICBcImxhbmd1YWdlXCIsXG4gICAgICAgICAgXCJpZGVudGlmaWVyXCIsXG4gICAgICAgICAgXCJhdmdSYXRpbmdcIlxuICAgICAgICBdLFxuICAgICAgICBcImxpbWl0XCI6IDEwMDAsXG4gICAgICAgIFwib2Zmc2V0XCI6IDAsXG4gICAgICAgIFwic29ydF9ieVwiOiB7fVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5mcm9tTWRvUG9ydGFsKSB7XG5cbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMubWRvQmFzZVVybH0vJHtBUElfRU5EX1BPSU5UUy5NRE9fU1VHR0VTVEVEX0NPVVJTRV9MSVNUfWAsIHJlcUJvZHkpXG4gICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgICB9KSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuU1VHR0VTVEVEX0NPVVJTRV9MSVNUfWAsIHJlcUJvZHksIHsgaGVhZGVycyB9KVxuICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgICAgfSkpXG4gICAgfVxuXG4gIH1cblxuICB1cGRhdGVEZXNpZ25hdGlvbkhpZXJhcmNoeShyZXFCb2R5KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuVVBEQVRFX0RFU0lHTkFUSU9OX0hJRVJBUkNIWX1gLCByZXFCb2R5LCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgc2VhcmNoUHVibGljRGVzaWduYXRpb24ocmVxQm9keSkge1xuICAgIGlmICh0aGlzLmZyb21NZG9Qb3J0YWwpIHtcbiAgICAgIGxldCBtZG9CYXNlVXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCdcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMubWRvQmFzZVVybH0vJHtBUElfRU5EX1BPSU5UUy5NRE9fREVTSUdOQVRJT05fU0VBUkNIfWAsIHJlcUJvZHkpXG4gICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgICB9KSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuU0VBUkNIX1BVQkxJQ19ERVNJR05BVElPTn1gLCByZXFCb2R5LCB7IGhlYWRlcnMgfSlcbiAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICAgIH0pKVxuICAgIH1cblxuICB9XG5cbiAgZ2V0RGFzaGJvYXJkQWRtaW4ocmVxQm9keSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5EQVNIQk9BUkRfQURNSU59YCwgcmVxQm9keSwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGdldERhc2hib2FyZEdhcEFuYWx5c2lzQWRtaW4ocmVxQm9keSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5HQVBfQU5BTFlTSVNfQURNSU59YCwgcmVxQm9keSwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGdldERhc2hib2FyZFB1YmxpYyhyZXFCb2R5KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLkRBU0hCT0FSRF9QVUJMSUN9YCwgcmVxQm9keSwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIGdldERhc2hib2FyZEdhcEFuYWx5c2lzUHVibGljKHJlcUJvZHkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuR0FQX0FOQUxZU0lTX1BVQkxJQ31gLCByZXFCb2R5LCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgZ2V0TWF0Y2hlZFJvbGVNYXBwaW5nKHJlcUJvZHkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuTUFUQ0hFRF9ST0xFX01BUFBJTkd9YCwgcmVxQm9keSwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG5cbmdldEFwcHJvdmFsUmVxdWVzdHMocmVxQm9keTogYW55KSB7XG5cbiAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVycztcblxuICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICBpZiAocmVxQm9keT8ucGFnZSkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BhZ2UnLCByZXFCb2R5LnBhZ2UpO1xuICB9XG5cbiAgaWYgKHJlcUJvZHk/LnBhZ2Vfc2l6ZSkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BhZ2Vfc2l6ZScsIHJlcUJvZHkucGFnZV9zaXplKTtcbiAgfVxuXG4gIGlmIChyZXFCb2R5Py5zZWFyY2gpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzZWFyY2gnLCByZXFCb2R5LnNlYXJjaCk7XG4gIH1cblxuICBpZiAocmVxQm9keT8uc3RhdHVzKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc3RhdHVzJywgcmVxQm9keS5zdGF0dXMpO1xuICB9XG5cbiAgaWYgKHJlcUJvZHk/LmZyb21fZGF0ZSkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2Zyb21fZGF0ZScsIHJlcUJvZHkuZnJvbV9kYXRlKTtcbiAgfVxuXG4gIGlmIChyZXFCb2R5Py50b19kYXRlKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG9fZGF0ZScsIHJlcUJvZHkudG9fZGF0ZSk7XG4gIH1cblxuICBpZiAocmVxQm9keT8uc3RhdGVfY2VudGVyX2lkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc3RhdGVfY2VudGVyX2lkJywgcmVxQm9keS5zdGF0ZV9jZW50ZXJfaWQpO1xuICB9XG5cbiAgaWYgKHJlcUJvZHk/LmRlcGFydG1lbnRfaWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdkZXBhcnRtZW50X2lkJywgcmVxQm9keS5kZXBhcnRtZW50X2lkKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oXG4gICAgYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuR0VUX0FQUFJPVkFMX1JFUVVFU1RTfWAsXG4gICAge1xuICAgICAgaGVhZGVycyxcbiAgICAgIHBhcmFtc1xuICAgIH1cbiAgKS5waXBlKFxuICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UpXG4gICk7XG59XG5cbiAgc2F2ZUFwcHJvdmFsUmVxdWVzdChyZXFCb2R5KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLlNBVkVfQVBQUk9WQUxfUkVRVUVTVH1gLCByZXFCb2R5LCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgc2VhcmNoUHVibGljbWRvKHJlcUJvZHkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5iYXNlVXJsfSR7QVBJX0VORF9QT0lOVFMuU0VBUkNIX1BVQkxJQ19NRE99YCwgcmVxQm9keSwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIHZpZXdBcHByb3ZhbFJlcXVlc3RzKHJlcXVlc3RfaWQpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5WSUVXX0FQUFJPVkFMX1JFUVVFU1R9LyR7cmVxdWVzdF9pZH1gLCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgdmlld01ET0FwcHJvdmFsUmVxdWVzdHMocmVxdWVzdF9pZCkge1xuICAgIGxldCBtZG9CYXNlVXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCdcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMubWRvQmFzZVVybH0vJHtBUElfRU5EX1BPSU5UUy5WSUVXX01ET19BUFBST1ZBTF9SRVFVRVNUfS8ke3JlcXVlc3RfaWR9YClcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgYXBwcm92ZUFuZFB1Ymxpc2hNRE9BcHByb3ZhbFJlcXVlc3RzKHJlcXVlc3QpIHtcbiAgICBsZXQgbWRvQmFzZVVybCA9ICdodHRwOi8vbG9jYWxob3N0OjMwMDAnXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5tZG9CYXNlVXJsfS8ke0FQSV9FTkRfUE9JTlRTLkFQUFJPVkVfQU5EX1BVQkxJU0hfTURPX0FQUFJPVkFMX1JFUVVFU1R9YCwgcmVxdWVzdClcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbiAgcmVqZWN0TURPQXBwcm92YWxSZXF1ZXN0cyhyZXF1ZXN0KSB7XG4gICAgbGV0IG1kb0Jhc2VVcmwgPSAnaHR0cDovL2xvY2FsaG9zdDozMDAwJ1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMubWRvQmFzZVVybH0vJHtBUElfRU5EX1BPSU5UUy5SRUpFQ1RfQVBQUk9WQUxfUkVRVUVTVH1gLCByZXF1ZXN0KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuICByZWplY3RJdGVtTURPQXBwcm92YWxSZXF1ZXN0cyhyZXF1ZXN0KSB7XG4gICAgbGV0IG1kb0Jhc2VVcmwgPSAnaHR0cDovL2xvY2FsaG9zdDozMDAwJ1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMubWRvQmFzZVVybH0vJHtBUElfRU5EX1BPSU5UUy5SRUpFQ1RfSVRFTV9BUFBST1ZBTF9SRVFVRVNUfWAsIHJlcXVlc3QpXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gIHJldm9rZUFwcHJvdmFsUmVxdWVzdChyZXFCb2R5KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IHRoaXMuaGVhZGVyc1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0ke0FQSV9FTkRfUE9JTlRTLlJFVk9LRV9BUFBST1ZBTF9SRVFVRVNUfWAsIHJlcUJvZHksIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZVxuICAgICAgfSkpXG4gIH1cblxuICBzYXZlRGVzaWduYXRpb25BcHByb3ZhbFJlcXVlc3QocmVxQm9keSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLmhlYWRlcnNcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtBUElfRU5EX1BPSU5UUy5TQVZFX0RFU0lHTkFUSU9OX0FQUFJPVkFMX1JFUVVFU1R9YCwgcmVxQm9keSwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICB9KSlcbiAgfVxuXG4gICBSZVB1Ymxpc2hNRE9BcHByb3ZhbFJlcXVlc3QocmVxdWVzdCkge1xuICAgIGxldCBtZG9CYXNlVXJsID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCdcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihgJHt0aGlzLm1kb0Jhc2VVcmx9LyR7QVBJX0VORF9QT0lOVFMuUkVQVUJMSVNIX1JFUVVFU1R9YCwgcmVxdWVzdClcbiAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgIH0pKVxuICB9XG5cbn1cblxuIl19
|