@sunbird-cb/cbp-ai 0.1.83 → 0.1.84
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/add-designation/add-designation.component.mjs +10 -3
- package/esm2022/lib/components/approval-requests/approval-requests.component.mjs +3 -2
- package/esm2022/lib/components/designation-approval-request-form/designation-approval-request-form.component.mjs +3 -3
- package/esm2022/lib/components/edit-cbp-plan/edit-cbp-plan.component.mjs +53 -43
- package/esm2022/lib/components/publish-request-form/publish-approve-request-form.component.mjs +23 -5
- package/esm2022/lib/components/review-request/review-request.component.mjs +5 -3
- package/esm2022/lib/components/role-mapping-list/role-mapping-list.component.mjs +2 -1
- package/esm2022/lib/components/suggest-more-courses/suggest-more-courses.component.mjs +2 -2
- package/esm2022/lib/components/view-course-recommendation/view-course-recommendation.component.mjs +3 -2
- package/fesm2022/sunbird-cb-cbp-ai.mjs +96 -56
- package/fesm2022/sunbird-cb-cbp-ai.mjs.map +1 -1
- package/lib/components/add-designation/add-designation.component.d.ts.map +1 -1
- package/lib/components/approval-requests/approval-requests.component.d.ts.map +1 -1
- package/lib/components/edit-cbp-plan/edit-cbp-plan.component.d.ts +1 -0
- package/lib/components/edit-cbp-plan/edit-cbp-plan.component.d.ts.map +1 -1
- package/lib/components/publish-request-form/publish-approve-request-form.component.d.ts +4 -2
- package/lib/components/publish-request-form/publish-approve-request-form.component.d.ts.map +1 -1
- package/lib/components/review-request/review-request.component.d.ts +1 -1
- package/lib/components/review-request/review-request.component.d.ts.map +1 -1
- package/lib/components/role-mapping-list/role-mapping-list.component.d.ts.map +1 -1
- package/lib/components/view-course-recommendation/view-course-recommendation.component.d.ts +1 -0
- package/lib/components/view-course-recommendation/view-course-recommendation.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/sunbird-cb-cbp-ai-0.1.84.tgz +0 -0
- package/sunbird-cb-cbp-ai-0.1.83.tgz +0 -0
|
@@ -64,7 +64,8 @@ export class ApprovalRequestsComponent {
|
|
|
64
64
|
{ "code": "", label: "All Status" },
|
|
65
65
|
{ "code": "pending", label: "Pending" },
|
|
66
66
|
{ "code": "approved", label: "Approved" },
|
|
67
|
-
{ "code": "rejected", label: "Rejected" }
|
|
67
|
+
{ "code": "rejected", label: "Rejected" },
|
|
68
|
+
{ "code": "draft", label: "Revoked" },
|
|
68
69
|
];
|
|
69
70
|
this.time = [
|
|
70
71
|
{ "code": "", label: "All Time" },
|
|
@@ -444,4 +445,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
444
445
|
type: ViewChild,
|
|
445
446
|
args: [MatPaginator]
|
|
446
447
|
}] } });
|
|
447
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtcmVxdWVzdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL2NvbXBvbmVudHMvYXBwcm92YWwtcmVxdWVzdHMvYXBwcm92YWwtcmVxdWVzdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL2NvbXBvbmVudHMvYXBwcm92YWwtcmVxdWVzdHMvYXBwcm92YWwtcmVxdWVzdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHckQsT0FBTyxFQUFlLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFReEUsTUFBTSxPQUFPLHlCQUF5QjtJQTJEcEMsWUFBbUIsTUFBaUIsRUFBUyxhQUE0QixFQUNoRSxRQUFxQixFQUNwQixFQUFlLEVBQ2hCLE1BQWM7UUFISixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQVMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDaEUsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNwQixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUEzRHZCLGVBQVUsR0FBRyxJQUFJLGtCQUFrQixDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLHlCQUFvQixHQUFXLFVBQVUsQ0FBQztRQUMxQyxpQkFBWSxH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R0FqZlkseUJBQXlCO21HQUF6Qix5QkFBeUIsd0dBRXpCLFlBQVksZ0RDcEJ6QixnelpBaVNNOzs0RkQvUU8seUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHVCQUF1QjtxTUFNUixTQUFTO3NCQUFqQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IHR5cGUgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBlbGVtZW50IH0gZnJvbSAncHJvdHJhY3Rvcic7XG5pbXBvcnQgeyBMaXN0UG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9saXN0LXBvcHVwL2xpc3QtcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9tb2R1bGVzL3NoYXJlZC9zZXJ2aWNlcy9zaGFyZWQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hcHByb3ZhbC1yZXF1ZXN0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHByb3ZhbC1yZXF1ZXN0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FwcHJvdmFsLXJlcXVlc3RzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxSZXF1ZXN0c0NvbXBvbmVudCB7XG5cbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcbiAgZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8YW55PihbXSk7XG4gIHNlbGVjdGVkTWluaXN0cnlUeXBlOiBzdHJpbmcgPSAnbWluaXN0cnknO1xuICBtaW5pc3RyeURhdGE6IGFueSA9IFtdXG4gIG1pbmlzdHJ5RnVsbERhdGE6IGFueSA9IFtdXG4gIHJvbGVNYXBwaW5nRm9ybSE6IEZvcm1Hcm91cDtcbiAgZGlzYWJsZUJ0biA9IHRydWVcbiAgc2VhcmNoVGV4dCA9ICcnO1xuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFsncmVxdWVzdF9pZCcsICdkYXRlJywgJ2Rlc2lnbmF0aW9uJywgJ3N0YXR1cycsICdhY3Rpb25zJ107XG4gIGNicEZpbmFsT2JqOiBhbnkgPSB7fVxuICBkZXBhcnRtZW50RGF0YTogYW55ID0gW11cbiAgYXBwcm92YWxSZXF1ZXN0cyA9IFtcbiAgICAvLyB7XG4gICAgLy8gICBuYW1lOiAnV29yayBBbGxvY2F0aW9uJyxcbiAgICAvLyAgIG9yaWdpbmFsTmFtZTogJ0FDQlBfTWluaXN0cnlfb2ZfV29tZW5fYW5kX0NoaWxkX0RldmVsb3BtZW50X0V4dHJhY3QuLi4nLFxuICAgIC8vICAgc2l6ZTogNC41LFxuICAgIC8vICAgZGF0ZTogJ09jdCAxMywgMjAyNSdcbiAgICAvLyB9LFxuICAgIC8vIHtcbiAgICAvLyAgIG5hbWU6ICdTY3JlZW5zaG90IDIwMjUtMTAtMDggYXQgMTInLFxuICAgIC8vICAgb3JpZ2luYWxOYW1lOiAnU2NyZWVuc2hvdCAyMDI1LTEwLTA4IGF0IDEyLjU0LjE4IFBNLnBuZycsXG4gICAgLy8gICBzaXplOiAzMzEuOCxcbiAgICAvLyAgIGRhdGU6ICdPY3QgMTMsIDIwMjUnXG4gICAgLy8gfVxuICBdO1xuICBsb2FkaW5nID0gZmFsc2VcbiAgZmlsdGVyZWRNaW5pc3RyeURhdGE6IGFueSA9IFtdXG4gIHNlYXJjaENvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgcGFuZWxPcGVuID0gZmFsc2U7XG4gIGRlcGFydG1lbnRQYW5lbE9wZW4gPSBmYWxzZVxuICBmaWx0ZXJlZExpc3QgPSBbXTtcbiAgZmlsdGVyZWREZXBhcnRtZW50TGlzdCA9IFtdO1xuICBsb2dpblVzZXJPcmdJZHMgPSBbXVxuICBvcmlnaW5hbE1pbmlzdHJ5RGF0YSA9IFtdXG4gIGNicFBsYW5GaW5hbE9iajogYW55XG4gIGZpbHRlckZvcm0hOiBGb3JtR3JvdXA7XG4gIHN0YXR1cyA9IFtcbiAgICB7IFwiY29kZVwiOiBcIlwiLCBsYWJlbDogXCJBbGwgU3RhdHVzXCIgfSxcbiAgICB7IFwiY29kZVwiOiBcInBlbmRpbmdcIiwgbGFiZWw6IFwiUGVuZGluZ1wiIH0sXG4gICAgeyBcImNvZGVcIjogXCJhcHByb3ZlZFwiLCBsYWJlbDogXCJBcHByb3ZlZFwiIH0sXG4gICAgeyBcImNvZGVcIjogXCJyZWplY3RlZFwiLCBsYWJlbDogXCJSZWplY3RlZFwiIH1cbiAgXTtcbiAgdGltZSA9IFtcbiAgICB7IFwiY29kZVwiOiBcIlwiLCBsYWJlbDogXCJBbGwgVGltZVwiIH0sXG4gICAgeyBcImNvZGVcIjogXCJsYXN0XzdfZGF5c1wiLCBsYWJlbDogXCJMYXN0IDcgRGF5c1wiIH0sXG4gICAgeyBcImNvZGVcIjogXCJsYXN0XzMwX2RheXNcIiwgbGFiZWw6IFwiTGFzdCAzMCBEYXlzXCIgfSxcbiAgICB7IFwiY29kZVwiOiBcImxhc3RfOTBfZGF5c1wiLCBsYWJlbDogXCJMYXN0IDkwIERheXNcIiB9XG4gIF07XG4gIGZpbHRlcmVkU3RhdHVzID0gWy4uLnRoaXMuc3RhdHVzXTtcbiAgZmlsdGVyZWRUaW1lID0gWy4uLnRoaXMudGltZV07XG4gIHBhZ2VJbmRleCA9IDA7XG4gIHBhZ2VTaXplID0gMTA7XG4gIHRvdGFsUmVjb3JkcyA9IDA7XG4gIHNob3dSZWplY3RQb3B1cEZsYWcgPSBmYWxzZVxuICBzaG93UmV2b2tlUmVxdWVzdFBvcHVwRmxhZyA9IGZhbHNlXG4gIHJlamVjdGlvbkRldGFpbDphbnlcbiAgcmV2b2tlUmVxdWVzdGVkUmVxdWVzdDphbnkgXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZywgcHVibGljIHNoYXJlZFNlcnZpY2U6IFNoYXJlZFNlcnZpY2UsXG4gICAgcHVibGljIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXJcbiAgKSB7XG4gICAgdGhpcy5yb2xlTWFwcGluZ0Zvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG1pbmlzdHJ5VHlwZTogWydtaW5pc3RyeScsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgbWluaXN0cnk6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHNlY3RvcnM6IFtbXV0sXG4gICAgICBkZXBhcnRtZW50czogW1tdXVxuXG4gICAgfSk7XG4gICAgdGhpcy5maWx0ZXJGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBzdGF0dXM6IFsnJ10sXG4gICAgICB0aW1lOiBbJyddLFxuICAgICAgc2VhcmNoOiBbJyddXG4gICAgfSk7XG4gICAgLy8gdGhpcy5jYnBGaW5hbE9iaiA9IHRoaXMuc2hhcmVkU2VydmljZS5nZXRDQlBQbGFuTG9jYWxTdG9yYWdlKClcbiAgICB0aGlzLmdldE1pbmlzdHJ5RGF0YSgpXG5cblxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jYnBQbGFuRmluYWxPYmogPSB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0Q0JQUGxhbkxvY2FsU3RvcmFnZSgpXG4gICAgY29uc29sZS5sb2coJ2NicEZpbmFsT2JqLS0nLCB0aGlzLmNicEZpbmFsT2JqKVxuICAgIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHNlYXJjaFRleHQgPT4ge1xuICAgICAgaWYgKHNlYXJjaFRleHQpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJNaW5pc3RyeURhdGEoc2VhcmNoVGV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpbHRlcmVkTWluaXN0cnlEYXRhID0gdGhpcy5taW5pc3RyeURhdGFcbiAgICAgIH1cblxuICAgIH0pO1xuICAgIHRoaXMuc2hhcmVkU2VydmljZS5zdW1tYXJ5VHJpZ2dlckV4ZWN1dGVkLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICBpZiAoZGF0YSAmJiBkYXRhPy5maWxlX2lkKSB7XG4gICAgICAgIHRoaXMuZ2V0QXBwcm92YWxSZXF1ZXN0cygpXG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAodGhpcy5jYnBQbGFuRmluYWxPYmogJiYgdGhpcy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkgJiYgdGhpcy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkuaWRlbnRpZmllcikge1xuICAgICAgdGhpcy5nZXRBcHByb3ZhbFJlcXVlc3RzKClcbiAgICB9XG4gIH1cblxuICAvLyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gIC8vICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xuICAvLyB9XG5cbiBnZXRBcHByb3ZhbFJlcXVlc3RzKCkge1xuXG4gIGxldCByZXFCb2R5OiBhbnkgPSB7XG4gICAgc3RhdGVfY2VudGVyX2lkOiB0aGlzLmNicFBsYW5GaW5hbE9iaj8ubWluaXN0cnk/LmlkZW50aWZpZXIsXG4gICAgaW5jbHVkZV9zdW1tYXJ5OiB0cnVlLFxuICAgIHBhZ2U6IHRoaXMucGFnZUluZGV4ICsgMSxcbiAgICBwYWdlX3NpemU6IHRoaXMucGFnZVNpemVcbiAgfTtcblxuICBjb25zdCBzZWFyY2ggPSB0aGlzLmZpbHRlckZvcm0uZ2V0KCdzZWFyY2gnKT8udmFsdWU7XG4gIGNvbnN0IHN0YXR1cyA9IHRoaXMuZmlsdGVyRm9ybS5nZXQoJ3N0YXR1cycpPy52YWx1ZTtcbiAgY29uc3QgdGltZSA9IHRoaXMuZmlsdGVyRm9ybS5nZXQoJ3RpbWUnKT8udmFsdWU7XG5cbiAgaWYgKHNlYXJjaCkge1xuICAgIHJlcUJvZHkuc2VhcmNoID0gc2VhcmNoO1xuICB9XG5cbiAgaWYgKHN0YXR1cykge1xuICAgIHJlcUJvZHkuc3RhdHVzID0gc3RhdHVzO1xuICB9XG5cbiAgLy8gVGltZSBmaWx0ZXJcbiAgaWYgKHRpbWUpIHtcblxuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICBsZXQgZnJvbURhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgaWYgKHRpbWUgPT09ICdsYXN0XzdfZGF5cycpIHtcbiAgICAgIGZyb21EYXRlLnNldERhdGUodG9kYXkuZ2V0RGF0ZSgpIC0gNyk7XG4gICAgfVxuXG4gICAgaWYgKHRpbWUgPT09ICdsYXN0XzMwX2RheXMnKSB7XG4gICAgICBmcm9tRGF0ZS5zZXREYXRlKHRvZGF5LmdldERhdGUoKSAtIDMwKTtcbiAgICB9XG5cbiAgICBpZiAodGltZSA9PT0gJ2xhc3RfOTBfZGF5cycpIHtcbiAgICAgIGZyb21EYXRlLnNldERhdGUodG9kYXkuZ2V0RGF0ZSgpIC0gOTApO1xuICAgIH1cblxuICAgIHJlcUJvZHkuZnJvbV9kYXRlID0gZnJvbURhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xuICAgIHJlcUJvZHkudG9fZGF0ZSA9IHRvZGF5LnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgfVxuXG4gIGlmICh0aGlzLmNicFBsYW5GaW5hbE9iaj8uZGVwYXJ0bWVudHMpIHtcbiAgICByZXFCb2R5LmRlcGFydG1lbnRfaWQgPSB0aGlzLmNicFBsYW5GaW5hbE9iai5kZXBhcnRtZW50cztcbiAgfVxuXG4gIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldEFwcHJvdmFsUmVxdWVzdHMocmVxQm9keSkuc3Vic2NyaWJlKChyZXMpID0+IHtcblxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgdGhpcy5hcHByb3ZhbFJlcXVlc3RzID0gcmVzPy5pdGVtcyB8fCBbXTtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuYXBwcm92YWxSZXF1ZXN0cztcbiAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlcz8udG90YWwgfHwgMDtcblxuICB9KTtcbn1cblxuXG5cbiAgZmlsdGVyZWRhcHByb3ZhbFJlcXVlc3RzKCkge1xuICAgIGxldCBkYXRhID0gWy4uLnRoaXMuYXBwcm92YWxSZXF1ZXN0c107XG5cbiAgICBjb25zdCBzZWFyY2ggPSB0aGlzLmZpbHRlckZvcm0uZ2V0KCdzZWFyY2gnKT8udmFsdWU/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5maWx0ZXJGb3JtLmdldCgnc3RhdHVzJyk/LnZhbHVlO1xuICAgIGNvbnN0IHRpbWUgPSB0aGlzLmZpbHRlckZvcm0uZ2V0KCd0aW1lJyk/LnZhbHVlO1xuICAgIC8vIFNlYXJjaCBGaWx0ZXJcbiAgICBpZiAoc2VhcmNoKSB7XG4gICAgICBkYXRhID0gZGF0YS5maWx0ZXIociA9PlxuICAgICAgICAoci5yZXF1ZXN0X25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBTdGF0dXMgRmlsdGVyXG4gICAgaWYgKHN0YXR1cykge1xuICAgICAgZGF0YSA9IGRhdGEuZmlsdGVyKHIgPT4gci5zdGF0dXMgPT09IHN0YXR1cyk7XG4gICAgfVxuXG4gICAgLy8gVGltZSBGaWx0ZXJcbiAgICBpZiAodGltZSkge1xuICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcblxuICAgICAgZGF0YSA9IGRhdGEuZmlsdGVyKHIgPT4ge1xuICAgICAgICBjb25zdCBjcmVhdGVkID0gbmV3IERhdGUoci5jcmVhdGVkX2F0KTtcbiAgICAgICAgY29uc3QgZGlmZkRheXMgPVxuICAgICAgICAgIChub3cuZ2V0VGltZSgpIC0gY3JlYXRlZC5nZXRUaW1lKCkpIC8gKDEwMDAgKiAzNjAwICogMjQpO1xuXG4gICAgICAgIGlmICh0aW1lID09PSAnbGFzdF83X2RheXMnKSByZXR1cm4gZGlmZkRheXMgPD0gNztcbiAgICAgICAgaWYgKHRpbWUgPT09ICdsYXN0XzMwX2RheXMnKSByZXR1cm4gZGlmZkRheXMgPD0gMzA7XG4gICAgICAgIGlmICh0aW1lID09PSAnbGFzdF85MF9kYXlzJykgcmV0dXJuIGRpZmZEYXlzIDw9IDkwO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBkZWxldGVEb2N1bWVudChkb2NUb0RlbGV0ZTogYW55KSB7XG4gICAgdGhpcy5hcHByb3ZhbFJlcXVlc3RzID0gdGhpcy5hcHByb3ZhbFJlcXVlc3RzLmZpbHRlcihkb2MgPT4gZG9jICE9PSBkb2NUb0RlbGV0ZSk7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgIHRoaXMuc2hhcmVkU2VydmljZS5kZWxldGVTdW1tYXJ5KGRvY1RvRGVsZXRlPy5maWxlX2lkKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuZGVsZXRlRmlsZShkb2NUb0RlbGV0ZT8uZmlsZV9pZCkuc3Vic2NyaWJlKChkcmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgICAgICAgIGlmIChkcmVzKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdEb2N1bWVudCBEZWxldGVkIFN1Y2Nlc3NmdWxseScsICdYJywge1xuICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1zdWNjZXNzJ11cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5nZXRBcHByb3ZhbFJlcXVlc3RzKClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignRXJyb3IgV2hpbGUgRGVsZXRpbmcgRG9jdW1lbnQnLCAnWCcsIHtcbiAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItZXJyb3InXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmdldEFwcHJvdmFsUmVxdWVzdHMoKVxuICAgICAgICAgIH1cblxuICAgICAgICB9KVxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ0RvY3VtZW50IFN1bW1hcnkgRGVsZXRlZCBTdWNjZXNzZnVsbHknLCAnWCcsIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLXN1Y2Nlc3MnXVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignRXJyb3IgV2hpbGUgRGVsZXRpbmcgRG9jdW1lbnQgU3VtbWFyeScsICdYJywge1xuICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItZXJyb3InXVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KVxuXG4gIH1cblxuICBhcHBseUZpbHRlcnMoKSB7XG4gICAgY29uc3QgZmlsdGVyZWQgPSB0aGlzLmZpbHRlcmVkYXBwcm92YWxSZXF1ZXN0cygpO1xuXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBmaWx0ZXJlZDtcblxuICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xuICAgICAgdGhpcy5wYWdpbmF0b3IuZmlyc3RQYWdlKCk7XG4gICAgfVxuICB9XG4gIG9uTWluaXN0cnlUeXBlQ2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5yb2xlTWFwcGluZ0Zvcm0ucmVzZXQoKVxuXG4gICAgLy8gY29uc29sZS5sb2coJ2V2ZW50JywgZXZlbnQpXG4gICAgdGhpcy5nZXRNaW5pc3RyeURhdGEoKVxuICAgIHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmpbJ21pbmlzdHJ5VHlwZSddID0gZXZlbnQudmFsdWVcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2JwUGxhbkZpbmFsT2JqJywgSlNPTi5zdHJpbmdpZnkodGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9iaikpXG4gICAgdGhpcy5zZWxlY3RlZE1pbmlzdHJ5VHlwZSA9IGV2ZW50Py52YWx1ZVxuICAgIHRoaXMucm9sZU1hcHBpbmdGb3JtLmdldCgnc2VjdG9ycycpPy5zZXRWYWx1ZShbXSk7XG5cbiAgICB0aGlzLnJvbGVNYXBwaW5nRm9ybS5jb250cm9scy5taW5pc3RyeVR5cGUuc2V0VmFsdWUodGhpcy5zZWxlY3RlZE1pbmlzdHJ5VHlwZSlcbiAgfVxuXG4gIG9uTWluaXN0cnlDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHNlbGVjdGVkTWluaXN0cnlJZCA9IGV2ZW50LnZhbHVlO1xuXG4gICAgLy8gY29uc29sZS5sb2coJ1NlbGVjdGVkIE1pbmlzdHJ5IElEOicsIHNlbGVjdGVkTWluaXN0cnlJZCk7XG5cbiAgICAvLyBZb3UgY2FuIGFjY2VzcyB0aGUgc2VsZWN0ZWQgb2JqZWN0IGlmIG5lZWRlZFxuICAgIGNvbnN0IHNlbGVjdGVkTWluaXN0cnkgPSB0aGlzLm1pbmlzdHJ5RGF0YS5maW5kKGl0ZW0gPT4gaXRlbS5pZGVudGlmaWVyID09PSBzZWxlY3RlZE1pbmlzdHJ5SWQpO1xuICAgIGNvbnNvbGUubG9nKCdTZWxlY3RlZCBNaW5pc3RyeTonLCBzZWxlY3RlZE1pbmlzdHJ5KTsgYGBcbiAgICB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqWydtaW5pc3RyeSddID0geyBpZGVudGlmaWVyOiBzZWxlY3RlZE1pbmlzdHJ5SWQ/LmlkZW50aWZpZXIsIG5hbWU6IHNlbGVjdGVkTWluaXN0cnlJZD8ub3JnTmFtZSB9XG4gICAgaWYgKHNlbGVjdGVkTWluaXN0cnlJZCAmJiB0aGlzLnNlbGVjdGVkTWluaXN0cnlUeXBlID09PSAnc3RhdGUnKSB7XG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0RGVwYXJ0bWVudExpc3Qoc2VsZWN0ZWRNaW5pc3RyeUlkKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmRlcGFydG1lbnREYXRhID0gcmVzXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZE1pbmlzdHJ5VHlwZSA9PT0gJ3N0YXRlJykge1xuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9ialsnbWluaXN0cnlUeXBlJ10gPSB0aGlzLnJvbGVNYXBwaW5nRm9ybS5jb250cm9scy5taW5pc3RyeVR5cGUudmFsdWVcbiAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmpbJ21pbmlzdHJ5J10gPSB7IGlkZW50aWZpZXI6IHNlbGVjdGVkTWluaXN0cnk/LmlkZW50aWZpZXIsIG5hbWU6IHNlbGVjdGVkTWluaXN0cnk/Lm9yZ05hbWUgfVxuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9ialsnZGVwYXJ0bWVudHMnXSA9IHRoaXMucm9sZU1hcHBpbmdGb3JtLmNvbnRyb2xzLmRlcGFydG1lbnRzLnZhbHVlXG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqWydzZWN0b3JzJ10gPSB0aGlzLnJvbGVNYXBwaW5nRm9ybS5jb250cm9scy5zZWN0b3JzLnZhbHVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmpbJ21pbmlzdHJ5VHlwZSddID0gdGhpcy5yb2xlTWFwcGluZ0Zvcm0uY29udHJvbHMubWluaXN0cnlUeXBlLnZhbHVlXG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqWydtaW5pc3RyeSddID0geyBpZGVudGlmaWVyOiBzZWxlY3RlZE1pbmlzdHJ5Py5pZGVudGlmaWVyLCBuYW1lOiBzZWxlY3RlZE1pbmlzdHJ5Py5vcmdOYW1lIH1cbiAgICB9XG4gICAgY29uc29sZS5sb2coJ3RoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmonLCB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqKVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYnBQbGFuRmluYWxPYmonLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqKSlcbiAgICBjb25zb2xlLmxvZygndGhpcy5yb2xlTWFwcGluZ0Zvcm0nLCB0aGlzLnJvbGVNYXBwaW5nRm9ybSlcbiAgfVxuXG5cblxuICBmaWx0ZXJNaW5pc3RyeURhdGEoc2VhcmNoVGV4dCkge1xuXG4gICAgaWYgKHNlYXJjaFRleHQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdzZWFyaFRlY3QsICcsIHNlYXJjaFRleHQpXG4gICAgICBjb25zdCBzZWFyY2ggPSBzZWFyY2hUZXh0Py50cmltKCkudG9Mb3dlckNhc2UoKSB8fCAnJztcbiAgICAgIHRoaXMuZmlsdGVyZWRNaW5pc3RyeURhdGEgPSAhc2VhcmNoXG4gICAgICAgID8gWy4uLnRoaXMubWluaXN0cnlEYXRhXVxuICAgICAgICA6IHRoaXMubWluaXN0cnlEYXRhLmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgaXRlbS5vcmdOYW1lPy50cmltKCkudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHNlYXJjaClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgfVxuXG4gIGdldE1pbmlzdHJ5RGF0YSgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldE1pbmlzdHJ5RGF0YSh0aGlzLnNlbGVjdGVkTWluaXN0cnlUeXBlKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgIGNvbnNvbGUubG9nKCdkYXRhLS0nLCBkYXRhKVxuICAgICAgdGhpcy5taW5pc3RyeUZ1bGxEYXRhID0gZGF0YVxuICAgICAgdGhpcy5taW5pc3RyeURhdGEgPSBbXVxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRNaW5pc3RyeVR5cGUgPT09ICdtaW5pc3RyeScpIHtcbiAgICAgICAgZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0/LnNiT3JnVHlwZSA9PT0gJ21pbmlzdHJ5Jykge1xuICAgICAgICAgICAgdGhpcy5taW5pc3RyeURhdGEucHVzaChpdGVtKVxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE1pbmlzdHJ5RGF0YSA9IFsuLi50aGlzLm1pbmlzdHJ5RGF0YV07XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkTWluaXN0cnlUeXBlID09PSAnc3RhdGUnKSB7XG4gICAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtPy5zYk9yZ1R5cGUgPT09ICdzdGF0ZScpIHtcbiAgICAgICAgICAgIHRoaXMubWluaXN0cnlEYXRhLnB1c2goaXRlbSlcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRNaW5pc3RyeURhdGEgPSBbLi4udGhpcy5taW5pc3RyeURhdGFdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHRoaXMuZ2V0VXNlclByb2ZpbGVEYXRhKClcbiAgICB9KVxuXG4gICAgY29uc29sZS5sb2coJ3RoaXMubWluaXN0cnlEYXRhLS0nLCB0aGlzLm1pbmlzdHJ5RGF0YSlcbiAgICBjb25zb2xlLmxvZygndGhpcy5maWx0ZXJlZE1pbmlzdHJ5RGF0YS0tJywgdGhpcy5maWx0ZXJlZE1pbmlzdHJ5RGF0YSlcbiAgfVxuXG4gIHJvdXRlVG9NYWluKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FpLyddKTtcbiAgfVxuXG4gIHZpZXdTdW1tYXJ5KGRvYykge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oTGlzdFBvcHVwQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogJzgwMHB4JyxcbiAgICAgIGRhdGE6IHsgZWxlbWVudDogZG9jLCB0eXBlOiAnZG9jLXN1bW1hcnknIH0sXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBtYXhIZWlnaHQ6ICc4MHZoJ1xuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIC8vIE5vIG5lZWQgdG8gZG8gYW55dGhpbmcgc3BlY2lhbCBoZXJlIHRvIHJlc2V0IGlubGluZSBleHBhbmRlZCBzdGF0ZVxuICAgICAgLy8gQmVjYXVzZSB5b3UncmUgdXNpbmcgZGlhbG9nLCBub3QgaW5saW5lIGV4cGFuZCDigJMgdmlldyByZW1haW5zIGluIGluaXRpYWwgKGNvbGxhcHNlZCkgc3RhdGVcbiAgICB9KTtcbiAgfVxuXG4gIHZpZXdSZXF1ZXN0KHJlcXVlc3Q6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdyZXF1ZXN0LS0nLCByZXF1ZXN0KVxuICAgIHRoaXMubG9hZGluZyA9IHRydWVcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9haS9yZXZpZXctcmVxdWVzdCcsIHJlcXVlc3QuaWRdKTtcbiAgfVxuXG4gIHJldm9rZUFwcHJvdmFsUmVxdWVzdChyZXF1ZXN0OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dSZXZva2VSZXF1ZXN0UG9wdXBGbGFnID0gdHJ1ZVxuICAgIHRoaXMucmV2b2tlUmVxdWVzdGVkUmVxdWVzdCA9IHJlcXVlc3RcbiAgICBjb25zb2xlLmxvZygncmVxdWVzdC0tJywgcmVxdWVzdClcbiAgIFxuICB9XG5cbiAgcmV2b2tlQXBwcm92YWxSZXF1ZXN0Q29uZmlybSgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gICAgbGV0IHJlcUJvZHkgPVxuICAgIHtcbiAgICAgIFwicmVxdWVzdF9pZFwiOiB0aGlzLnJldm9rZVJlcXVlc3RlZFJlcXVlc3Q/LmlkXG4gICAgfVxuXG4gICAgdGhpcy5zaGFyZWRTZXJ2aWNlLnJldm9rZUFwcHJvdmFsUmVxdWVzdChyZXFCb2R5KS5zdWJzY3JpYmUoe1xuXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ3JlcycsIHJlcylcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignUmVxdWVzdCBSZXZva2VkIFN1Y2Nlc3NmdWxseScsICdYJywge1xuICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItc3VjY2VzcyddXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNob3dSZXZva2VSZXF1ZXN0UG9wdXBGbGFnID0gZmFsc2VcbiAgICAgICAgdGhpcy5nZXRBcHByb3ZhbFJlcXVlc3RzKClcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ0ZhaWxlZCB0byByZXZva2UgdGhlIGFwcHJvdmFsIHJlcXVlc3QuJywgJ1gnLCB7XG4gICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1lcnJvciddXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2xvc2VSZXZva2VQb3B1cCgpIHtcbiAgICB0aGlzLnNob3dSZXZva2VSZXF1ZXN0UG9wdXBGbGFnID0gZmFsc2VcbiAgfVxuICBvbk9wZW5lZChvcGVuZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnBhbmVsT3BlbiA9IG9wZW5lZDtcbiAgfVxuXG4gIG9uT3BlbmVkRGVwYXJ0bWVudChvcGVuZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRlcGFydG1lbnRQYW5lbE9wZW4gPSBvcGVuZWRcbiAgfVxuXG4gIGZpbHRlckRhdGEoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0ICYmIGV2ZW50LnRhcmdldC52YWx1ZSkge1xuICAgICAgY29uc3QgcyA9IGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICB0aGlzLmZpbHRlcmVkTGlzdCA9IHRoaXMubWluaXN0cnlEYXRhLmZpbHRlcih4ID0+XG4gICAgICAgIHgub3JnTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHMpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkTGlzdCA9IHRoaXMubWluaXN0cnlEYXRhXG4gICAgfVxuXG4gIH1cblxuICBmaWx0ZXJEZXBhcnRtZW50RGF0YShldmVudCkge1xuICAgIGlmIChldmVudCAmJiBldmVudC50YXJnZXQgJiYgZXZlbnQudGFyZ2V0LnZhbHVlKSB7XG4gICAgICBjb25zdCBzID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIHRoaXMuZmlsdGVyZWREZXBhcnRtZW50TGlzdCA9IHRoaXMuZGVwYXJ0bWVudERhdGEuZmlsdGVyKHggPT5cbiAgICAgICAgeC5vcmdOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocylcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWREZXBhcnRtZW50TGlzdCA9IHRoaXMuZGVwYXJ0bWVudERhdGFcbiAgICB9XG5cbiAgfVxuXG4gIGdldFVzZXJQcm9maWxlRGF0YSgpIHtcbiAgICB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0VXNlclByb2ZpbGUoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdkYXRhLS0nLCBkYXRhKVxuICAgICAgdGhpcy5sb2dpblVzZXJPcmdJZHMgPSBkYXRhPy5vcmdhbml6YXRpb25faWRzXG4gICAgICBsZXQgZmlsdGVyZWRNaW5pc3RyeURhdGEgPSBbXVxuICAgICAgY29uc29sZS5sb2coJ3RoaXMubWluaXN0cnlGdWxsRGF0YS0tJywgdGhpcy5taW5pc3RyeUZ1bGxEYXRhKVxuICAgICAgdGhpcy5taW5pc3RyeUZ1bGxEYXRhLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5sb2dpblVzZXJPcmdJZHMuaW5kZXhPZihpdGVtPy5pZGVudGlmaWVyKSA+IC0xKSB7XG4gICAgICAgICAgZmlsdGVyZWRNaW5pc3RyeURhdGEucHVzaChpdGVtKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICB0aGlzLm1pbmlzdHJ5RGF0YSA9IGZpbHRlcmVkTWluaXN0cnlEYXRhXG4gICAgICB0aGlzLm9yaWdpbmFsTWluaXN0cnlEYXRhID0gZmlsdGVyZWRNaW5pc3RyeURhdGFcbiAgICAgIHRoaXMuZmlsdGVyZWRMaXN0ID0gZmlsdGVyZWRNaW5pc3RyeURhdGE7XG4gICAgICBjb25zb2xlLmxvZygndGhpcy5maWx0ZXJlZExpc3QtLScsIHRoaXMuZmlsdGVyZWRMaXN0KVxuICAgIH0pXG4gIH1cblxuICByb3V0ZVRvSW5pdGlhbCgpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9haS9pbml0aWFsJ10pO1xuICB9XG5cblxuICBmaWx0ZXJMaXN0KHZhbHVlOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IHNlYXJjaCA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcblxuICAgICAgY2FzZSAnc3RhdHVzJzpcbiAgICAgICAgdGhpcy5maWx0ZXJlZFN0YXR1cyA9IHRoaXMuc3RhdHVzLmZpbHRlcih2ID0+IHYubGFiZWw/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGltZSc6XG4gICAgICAgIHRoaXMuZmlsdGVyZWRUaW1lID0gdGhpcy50aW1lLmZpbHRlcih2ID0+IHYubGFiZWw/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyU2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICB0aGlzLnBhZ2VJbmRleCA9IGV2ZW50LnBhZ2VJbmRleDtcbiAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50LnBhZ2VTaXplO1xuXG4gIHRoaXMuZ2V0QXBwcm92YWxSZXF1ZXN0cygpO1xufVxuXG5zaG93UmVqZWN0UG9wdXAoZWxlbWVudCkge1xuICBjb25zb2xlLmxvZygnZWxlbWVudCcsIGVsZW1lbnQpXG4gIHRoaXMuc2hvd1JlamVjdFBvcHVwRmxhZyA9IHRydWVcbiAgdGhpcy5yZWplY3Rpb25EZXRhaWwgPSBlbGVtZW50XG59XG5cbmNsb3NlUmVqZWN0UG9wdXAoKSB7XG4gIHRoaXMuc2hvd1JlamVjdFBvcHVwRmxhZyA9IGZhbHNlXG59XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJ1cGxvYWQtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRpbmcgbXQtMTAgbWItMTAgbWwtMTAgY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICAgIDxwIChjbGljayk9XCJyb3V0ZVRvSW5pdGlhbCgpXCI+PG1hdC1pY29uIHN0eWxlPVwidmVydGljYWwtYWxpZ246IG1pZGRsZTtcIj5hcnJvd19iYWNrPC9tYXQtaWNvbj48c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBsLTEwXCI+QmFjayB0byBSb2xlIE1hcHBpbmcgR2VuZXJhdGlvbjwvc3Bhbj48L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG4gICAgPG1hdC1jYXJkIGNsYXNzPVwibWF0LWNhcmQtY29udGFpbmVyIG10LTIwXCIgW2Zvcm1Hcm91cF09XCJyb2xlTWFwcGluZ0Zvcm1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgPHA+QXBwcm92YWwgUmVxdWVzdHM8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJlZGl0LXNlY3Rpb24gbXQtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC1tYXAtcm91dGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC1tYXAtZmxleC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC1tYXAtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLW1hcHBpbmctcm91dGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57e2NicFBsYW5GaW5hbE9iaj8ubWluaXN0cnk/Lm9yZ05hbWV9fSA8c3BhbiAqbmdJZj1cImNicFBsYW5GaW5hbE9iaj8uZGVwYXJ0bWVudF9uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIHt7Y2JwUGxhbkZpbmFsT2JqPy5kZXBhcnRtZW50X25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0LXBsYW4gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicm91dGVUb0luaXRpYWwoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj5FZGl0XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+IC0tPlxuXG5cblxuXG5cbiAgICA8L21hdC1jYXJkPlxuICAgIDxtYXQtY2FyZCBjbGFzcz1cIlwiIHN0eWxlPVwiei1pbmRleDogMDtwYWRkaW5nOjZweCAwXCI+XG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaCBmbGV4IG1hcmdpbi1yaWdodC1tIGZpbHRlci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtZmlsdGVyIGgtNCB3LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz1cIjIyIDMgMiAzIDEwIDEyLjQ2IDEwIDE5IDE0IDIxIDE0IDEyLjQ2IDIyIDNcIj48L3BvbHlnb24+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxiPiBGaWx0ZXJzPC9iPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTUwXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyc2VhcmNoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3ItNjAgc2VhcmNoLWljb24gbWF0LWljb24gbm90cmFuc2xhdGUgbWF0ZXJpYWwtaWNvbnMgbWF0LWljb24tbm8tY29sb3JcIj5zZWFyY2g8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInNpbnB1dCBjb2xvci02MCB3LWZ1bGxcIiBsYWJlbD1cIlwiIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJnZXRBcHByb3ZhbFJlcXVlc3RzKClcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBSZXF1ZXN0IE5hbWVcIiB0eXBlPVwiU3RhbmRhcmRcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1hbmQtYnV0dG9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwibGFuZ3VhZ2Utc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bWF0LWxhYmVsIHN0eWxlPVwiZm9udC13ZWlnaHQ6IG5vcm1hbDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVyRm9ybS5nZXQoJ3N0YXR1cycpPy52YWx1ZSA/ICcnIDogJ1NlbGVjdCBTdGF0dXMnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+IC0tPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwic3RhdHVzXCIgcGFuZWxDbGFzcz1cInNlbGVjdC1zZWFyY2gtcGFuZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImdldEFwcHJvdmFsUmVxdWVzdHMoKVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU2VhcmNoIGJveCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBwYWRkaW5nOiA1cHg7d2lkdGg6IDkyJTttYXJnaW46IDVweDtcIiBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggU3RhdHVzXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cImZpbHRlckxpc3QoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSwgJ3N0YXR1cycpXCIgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFZhbHVlcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHIgb2YgZmlsdGVyZWRTdGF0dXNcIiBbdmFsdWVdPVwicj8uY29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcj8ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1hbmQtYnV0dG9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwibGFuZ3VhZ2Utc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bWF0LWxhYmVsIHN0eWxlPVwiZm9udC13ZWlnaHQ6IG5vcm1hbDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVyRm9ybS5nZXQoJ3RpbWUnKT8udmFsdWUgPyAnJyA6ICdTZWxlY3QgVGltZScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD4gLS0+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJ0aW1lXCIgcGFuZWxDbGFzcz1cInNlbGVjdC1zZWFyY2gtcGFuZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImFwcGx5RmlsdGVycygpXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWFyY2ggYm94IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJib3JkZXI6MXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDVweDt3aWR0aDogOTIlO21hcmdpbjogNXB4O1wiIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBUaW1lXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cImZpbHRlckxpc3QoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSwgJ3RpbWUnKVwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBWYWx1ZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCByIG9mIGZpbHRlcmVkVGltZVwiIFt2YWx1ZV09XCJyPy5jb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByPy5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDxwIGNsYXNzPVwibXQtMTVcIiBzdHlsZT1cImZvbnQtZmFtaWx5OiAnTGF0byc7IGZvbnQtc2l6ZTogMThweDsgbWFyZ2luLWxlZnQ6IDEwcHg7bWFyZ2luLXRvcDogMTVweDtcIj5cbiAgICAgICAgICAgIHt7dG90YWxSZWNvcmRzfX0gQXBwcm92YWwgUmVxdWVzdHM8L3A+XG4gICAgICAgIDx0YWJsZSBzdHlsZT1cImJvcmRlci1yYWRpdXM6IDI1cHggMjVweCAwIDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1wiIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcbiAgICAgICAgICAgIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16MiBmdWxsLXdpZHRoLXRhYmxlIG10LTEwXCI+XG5cbiAgICAgICAgICAgIDwhLS0gRG9jdW1lbnQgQ29sdW1uIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJyZXF1ZXN0X2lkXCI+XG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gUmVxdWVzdCBOYW1lIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJlcXVlc3RcIiBzdHlsZT1cIndpZHRoOiAyNSU7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jLXRpdGxlXCIgKm5nSWY9XCJyZXF1ZXN0LnJlcXVlc3RfbmFtZVwiPnt7IHJlcXVlc3QucmVxdWVzdF9uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jLXRpdGxlXCIgKm5nSWY9XCIhcmVxdWVzdC5yZXF1ZXN0X25hbWVcIj57eyByZXF1ZXN0LnJlcXVlc3RfbmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuXG4gICAgICAgICAgICA8IS0tIFN1bW1hcnkgVGV4dCBDb2x1bW4gLS0+XG4gICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3VtbWFyeV90ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gU3VtbWFyeSA8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBkb2NcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvYy1zdW1tYXJ5LXRleHRcIiBzdHlsZT1cIndpZHRoOiA4MCU7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWFya2Rvd24gW2RhdGFdPVwiZG9jPy5zdW1tYXJ5X3RleHQgfCBzbGljZSA6IDAgOiAyMDBcIj48L21hcmtkb3duPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxuXG4gICAgICAgICAgICA8IS0tIERhdGUgQ29sdW1uIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkYXRlXCI+XG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gRGF0ZSAmIFRpbWU8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByZXF1ZXN0XCIgc3R5bGU9XCJ3aWR0aDogMTIlO1wiPiB7eyByZXF1ZXN0LmNyZWF0ZWRfYXQgfCBkYXRlOiAnTU1NIGQsIHkgaGg6bW06c3MgYSd9fVxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkZXNpZ25hdGlvblwiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IE5vLiBvZiBEZXNpZ25hdGlvbiA8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByZXF1ZXN0XCIgc3R5bGU9XCJ3aWR0aDogMTAlOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVzaWduYXRpb24tY291bnRcIj57e3JlcXVlc3Q/LmRlc2lnbmF0aW9uX2NvdW50fX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICAgIDwhLS0gU3VtbWFyeSBTdGF0dXMgQ29sdW1uIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdGF0dXNcIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBSZXF1ZXN0IFN0YXR1cyA8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByZXF1ZXN0XCIgc3R5bGU9XCJ3aWR0aDogMTAlO1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJlcXVlc3Quc3RhdHVzID09PSAnZHJhZnQnIHx8IHJlcXVlc3Quc3RhdHVzID09PSAnRFJBRlQnIHx8IHJlcXVlc3Quc3RhdHVzID09PSAncmV2b2tlJyB8fCByZXF1ZXN0LnN0YXR1cyA9PT0gJ1JFVk9LRScgfHwgcmVxdWVzdC5zdGF0dXMgPT09ICdSRVZPS0VEJyB8fCByZXF1ZXN0LnN0YXR1cyA9PT0gJ3Jldm9rZWQnXCIgY2xhc3M9XCJkcmFmdFwiPiBSZXZva2VkIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZXF1ZXN0LnN0YXR1cyA9PT0gJ2FwcHJvdmVkJyB8fCByZXF1ZXN0LnN0YXR1cyA9PT0gJ0FQUFJPVkVEJ1wiIGNsYXNzPVwic3VjY2Vzc1wiPiB7eyByZXF1ZXN0LnN0YXR1cyB8IHRpdGxlY2FzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJlcXVlc3Quc3RhdHVzID09PSAncGVuZGluZycgfHwgcmVxdWVzdC5zdGF0dXMgPT09ICdQRU5ESU5HJ1wiIGNsYXNzPVwiaW4tcHJvZ3Jlc3NcIj4ge3sgcmVxdWVzdC5zdGF0dXMgfFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVjYXNlIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZXF1ZXN0LnN0YXR1cyA9PT0gJ3JlamVjdGVkJyB8fCByZXF1ZXN0LnN0YXR1cyA9PT0gJ1JFSkVDVEVEJ1wiIGNsYXNzPVwicmVqZWN0ZWRcIj4ge3sgcmVxdWVzdC5zdGF0dXMgfFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVjYXNlIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInNob3dSZWplY3RQb3B1cChyZXF1ZXN0KVwiICpuZ0lmPVwicmVxdWVzdC5zdGF0dXMgPT09ICdyZWplY3RlZCcgfHwgcmVxdWVzdC5zdGF0dXMgPT09ICdSRUpFQ1RFRCdcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4O2N1cnNvcjogcG9pbnRlcjtcIj48bWF0LWljb24gY2xhc3M9XCJ2ZXJ0aWNhbC1taWRkbGVcIj5yZW1vdmVfcmVkX2V5ZTwvbWF0LWljb24+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPCEtLSBBY3Rpb25zIENvbHVtbiAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IEFjdGlvbnMgPC90aD5cbiAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcmVxdWVzdFwiIHN0eWxlPVwid2lkdGg6IDE1JTtcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tYWN0aXZlXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInZpZXdSZXF1ZXN0KHJlcXVlc3QpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlZpZXcvUmV2aWV3IFJlcXVlc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlldyBSZXF1ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxNXB4O1wiIGNsYXNzPVwiYnRuLWdyYXlcIiAqbmdJZj1cInJlcXVlc3Quc3RhdHVzID09PSAnUEVORElORycgfHwgcmVxdWVzdC5zdGF0dXMgPT09ICdwZW5kaW5nJ1wiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJldm9rZUFwcHJvdmFsUmVxdWVzdChyZXF1ZXN0KVwiIG1hdFRvb2x0aXA9XCJSZXZva2UgUmVxdWVzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV2b2tlIFJlcXVlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG5cblxuXG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8IS0tIEhlYWRlciBhbmQgUm93IERlZmluaXRpb25zIC0tPlxuICAgICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiPjwvdHI+XG5cbiAgICAgICAgICAgIDwhLS0gTm8gRGF0YSBNZXNzYWdlIC0tPlxuXG4gICAgICAgIDwvdGFibGU+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJkYXRhU291cmNlLmRhdGEubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJuby1kYXRhLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgIE5vIHJlY29yZCBmb3VuZFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBQYWdpbmF0aW9uIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMVwiPlxuICAgICAgICAgICAgPCEtLSA8bWF0LXBhZ2luYXRvciBjbGFzcz1cImN1c3RvbS1wYWdpbmF0aW9uXCIgW3BhZ2VTaXplXT1cIjVcIiBbcGFnZVNpemVPcHRpb25zXT1cIls1LCAxMCwgMjBdXCI+PC9tYXQtcGFnaW5hdG9yPiAtLT5cbiAgICAgICAgICAgIDxtYXQtcGFnaW5hdG9yIFtsZW5ndGhdPVwidG90YWxSZWNvcmRzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCIgW3BhZ2VJbmRleF09XCJwYWdlSW5kZXhcIlxuICAgICAgICAgICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwiWzUsIDEwLCAyMF1cIiAocGFnZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9tYXQtcGFnaW5hdG9yPlxuICAgICAgICA8L2Rpdj5cblxuXG4gICAgPC9tYXQtY2FyZD5cbjwvZGl2PlxuXG48IS0tIFBvcHVwIE92ZXJsYXkgLS0+XG48ZGl2IGNsYXNzPVwicG9wdXAtb3ZlcmxheVwiICpuZ0lmPVwic2hvd1JlamVjdFBvcHVwRmxhZ1wiPlxuICA8ZGl2IGNsYXNzPVwicG9wdXAtY2FyZFwiPlxuICAgIFxuICAgIDwhLS0gQ2xvc2UgQnV0dG9uIC0tPlxuICAgIDxidXR0b24gY2xhc3M9XCJjbG9zZS1idG5cIiAoY2xpY2spPVwiY2xvc2VSZWplY3RQb3B1cCgpXCI+JnRpbWVzOzwvYnV0dG9uPlxuXG4gICAgPCEtLSBUaXRsZSAtLT5cbiAgICA8aDI+UmVqZWN0aW9uIFJlYXNvbjwvaDI+XG5cbiAgICA8IS0tIFN1YnRpdGxlIC0tPlxuICAgIDxwIGNsYXNzPVwic3VidGl0bGVcIj5cbiAgICAgIFRoaXMgcmVxdWVzdCB3YXMgcmVqZWN0ZWQgZm9yIHRoZSBmb2xsb3dpbmcgcmVhc29uOlxuICAgIDwvcD5cblxuICAgIDwhLS0gRXJyb3IgQm94IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJlcnJvci1ib3hcIj5cbiAgICAgIHt7cmVqZWN0aW9uRGV0YWlsPy5yZXZpZXdlcl9jb21tZW50c319XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInBvcHVwLW92ZXJsYXlcIiAqbmdJZj1cInNob3dSZXZva2VSZXF1ZXN0UG9wdXBGbGFnXCI+XG4gIDxkaXYgY2xhc3M9XCJwb3B1cC1jYXJkXCI+XG4gICAgXG4gICAgPCEtLSBDbG9zZSBCdXR0b24gLS0+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ0blwiIChjbGljayk9XCJjbG9zZVJldm9rZVBvcHVwKClcIj4mdGltZXM7PC9idXR0b24+XG5cbiAgICA8IS0tIFRpdGxlIC0tPlxuICAgIDxoMj5SZXZva2UgUmVxdWVzdDwvaDI+XG5cbiAgICA8IS0tIFN1YnRpdGxlIC0tPlxuICAgIDxwIGNsYXNzPVwic3VidGl0bGVcIj5cbiAgICAgPHN0cm9uZz5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmV2b2tlIHRoaXMgcmVxdWVzdD8gPC9zdHJvbmc+PGJyPjxicj5cbiAgICAgT25jZSByZXZva2VkLCB5b3Ugd2lsbCBub3QgYmUgYWJsZSB0byBtYWtlIGFueSBjaGFuZ2VzIHRvIHRoaXMgcmVxdWVzdC4gSWYgeW91IHdpc2ggdG8gcHJvY2VlZCBsYXRlciwgeW91IHdpbGwgbmVlZCB0byBjcmVhdGUgYSBuZXcgcmVxdWVzdCBhbmQgc3VibWl0IGl0IGFnYWluLCBEbyB5b3Ugd2FudCB0byBjb250aW51ZT8gIDxicj48YnI+XG4gICAgIFxuICAgIDwvcD5cbiAgIFxuXG4gICA8ZGl2IGNsYXNzPVwicG9wdXAtZm9vdGVyXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tYWN0aXZlLWdyYXlcIiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdmFsdWU9XCJOb1wiIChjbGljayk9XCJjbG9zZVJldm9rZVBvcHVwKClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTEwXCI+XG4gICAgICAgICAgICA8YnV0dG9uICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tYWN0aXZlXCIgKGNsaWNrKT1cInJldm9rZUFwcHJvdmFsUmVxdWVzdENvbmZpcm0oKVwiPlxuXG4gICAgICAgICAgICAgICAgWWVzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG48L2Rpdj5cblxuXG48ZGl2IGNsYXNzPVwib3ZlcmxheS1sb2FkZXJcIiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICA8bWF0LXNwaW5uZXIgZGlhbWV0ZXI9XCI1MFwiPjwvbWF0LXNwaW5uZXI+XG48L2Rpdj4iXX0=
|
|
448
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtcmVxdWVzdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL2NvbXBvbmVudHMvYXBwcm92YWwtcmVxdWVzdHMvYXBwcm92YWwtcmVxdWVzdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL2NvbXBvbmVudHMvYXBwcm92YWwtcmVxdWVzdHMvYXBwcm92YWwtcmVxdWVzdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHckQsT0FBTyxFQUFlLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFReEUsTUFBTSxPQUFPLHlCQUF5QjtJQTREcEMsWUFBbUIsTUFBaUIsRUFBUyxhQUE0QixFQUNoRSxRQUFxQixFQUNwQixFQUFlLEVBQ2hCLE1BQWM7UUFISixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQVMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDaEUsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNwQixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUE1RHZCLGVBQVUsR0FBRyxJQUFJLGtCQUFrQixDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLHlCQUFvQixHQUFXLFVBQVUsQ0FBQztRQUMxQyxpQkFBWSxH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QjtRQUNkLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUE7SUFDbEMsQ0FBQzsrR0FsZlkseUJBQXlCO21HQUF6Qix5QkFBeUIsd0dBRXpCLFlBQVksZ0RDcEJ6QixnelpBaVNNOzs0RkQvUU8seUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHVCQUF1QjtxTUFNUixTQUFTO3NCQUFqQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IHR5cGUgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyBlbGVtZW50IH0gZnJvbSAncHJvdHJhY3Rvcic7XG5pbXBvcnQgeyBMaXN0UG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9saXN0LXBvcHVwL2xpc3QtcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9tb2R1bGVzL3NoYXJlZC9zZXJ2aWNlcy9zaGFyZWQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hcHByb3ZhbC1yZXF1ZXN0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHByb3ZhbC1yZXF1ZXN0cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FwcHJvdmFsLXJlcXVlc3RzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxSZXF1ZXN0c0NvbXBvbmVudCB7XG5cbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcbiAgZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8YW55PihbXSk7XG4gIHNlbGVjdGVkTWluaXN0cnlUeXBlOiBzdHJpbmcgPSAnbWluaXN0cnknO1xuICBtaW5pc3RyeURhdGE6IGFueSA9IFtdXG4gIG1pbmlzdHJ5RnVsbERhdGE6IGFueSA9IFtdXG4gIHJvbGVNYXBwaW5nRm9ybSE6IEZvcm1Hcm91cDtcbiAgZGlzYWJsZUJ0biA9IHRydWVcbiAgc2VhcmNoVGV4dCA9ICcnO1xuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFsncmVxdWVzdF9pZCcsICdkYXRlJywgJ2Rlc2lnbmF0aW9uJywgJ3N0YXR1cycsICdhY3Rpb25zJ107XG4gIGNicEZpbmFsT2JqOiBhbnkgPSB7fVxuICBkZXBhcnRtZW50RGF0YTogYW55ID0gW11cbiAgYXBwcm92YWxSZXF1ZXN0cyA9IFtcbiAgICAvLyB7XG4gICAgLy8gICBuYW1lOiAnV29yayBBbGxvY2F0aW9uJyxcbiAgICAvLyAgIG9yaWdpbmFsTmFtZTogJ0FDQlBfTWluaXN0cnlfb2ZfV29tZW5fYW5kX0NoaWxkX0RldmVsb3BtZW50X0V4dHJhY3QuLi4nLFxuICAgIC8vICAgc2l6ZTogNC41LFxuICAgIC8vICAgZGF0ZTogJ09jdCAxMywgMjAyNSdcbiAgICAvLyB9LFxuICAgIC8vIHtcbiAgICAvLyAgIG5hbWU6ICdTY3JlZW5zaG90IDIwMjUtMTAtMDggYXQgMTInLFxuICAgIC8vICAgb3JpZ2luYWxOYW1lOiAnU2NyZWVuc2hvdCAyMDI1LTEwLTA4IGF0IDEyLjU0LjE4IFBNLnBuZycsXG4gICAgLy8gICBzaXplOiAzMzEuOCxcbiAgICAvLyAgIGRhdGU6ICdPY3QgMTMsIDIwMjUnXG4gICAgLy8gfVxuICBdO1xuICBsb2FkaW5nID0gZmFsc2VcbiAgZmlsdGVyZWRNaW5pc3RyeURhdGE6IGFueSA9IFtdXG4gIHNlYXJjaENvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgcGFuZWxPcGVuID0gZmFsc2U7XG4gIGRlcGFydG1lbnRQYW5lbE9wZW4gPSBmYWxzZVxuICBmaWx0ZXJlZExpc3QgPSBbXTtcbiAgZmlsdGVyZWREZXBhcnRtZW50TGlzdCA9IFtdO1xuICBsb2dpblVzZXJPcmdJZHMgPSBbXVxuICBvcmlnaW5hbE1pbmlzdHJ5RGF0YSA9IFtdXG4gIGNicFBsYW5GaW5hbE9iajogYW55XG4gIGZpbHRlckZvcm0hOiBGb3JtR3JvdXA7XG4gIHN0YXR1cyA9IFtcbiAgICB7IFwiY29kZVwiOiBcIlwiLCBsYWJlbDogXCJBbGwgU3RhdHVzXCIgfSxcbiAgICB7IFwiY29kZVwiOiBcInBlbmRpbmdcIiwgbGFiZWw6IFwiUGVuZGluZ1wiIH0sXG4gICAgeyBcImNvZGVcIjogXCJhcHByb3ZlZFwiLCBsYWJlbDogXCJBcHByb3ZlZFwiIH0sXG4gICAgeyBcImNvZGVcIjogXCJyZWplY3RlZFwiLCBsYWJlbDogXCJSZWplY3RlZFwiIH0sXG4gICAgeyBcImNvZGVcIjogXCJkcmFmdFwiLCBsYWJlbDogXCJSZXZva2VkXCIgfSxcbiAgXTtcbiAgdGltZSA9IFtcbiAgICB7IFwiY29kZVwiOiBcIlwiLCBsYWJlbDogXCJBbGwgVGltZVwiIH0sXG4gICAgeyBcImNvZGVcIjogXCJsYXN0XzdfZGF5c1wiLCBsYWJlbDogXCJMYXN0IDcgRGF5c1wiIH0sXG4gICAgeyBcImNvZGVcIjogXCJsYXN0XzMwX2RheXNcIiwgbGFiZWw6IFwiTGFzdCAzMCBEYXlzXCIgfSxcbiAgICB7IFwiY29kZVwiOiBcImxhc3RfOTBfZGF5c1wiLCBsYWJlbDogXCJMYXN0IDkwIERheXNcIiB9XG4gIF07XG4gIGZpbHRlcmVkU3RhdHVzID0gWy4uLnRoaXMuc3RhdHVzXTtcbiAgZmlsdGVyZWRUaW1lID0gWy4uLnRoaXMudGltZV07XG4gIHBhZ2VJbmRleCA9IDA7XG4gIHBhZ2VTaXplID0gMTA7XG4gIHRvdGFsUmVjb3JkcyA9IDA7XG4gIHNob3dSZWplY3RQb3B1cEZsYWcgPSBmYWxzZVxuICBzaG93UmV2b2tlUmVxdWVzdFBvcHVwRmxhZyA9IGZhbHNlXG4gIHJlamVjdGlvbkRldGFpbDphbnlcbiAgcmV2b2tlUmVxdWVzdGVkUmVxdWVzdDphbnkgXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZywgcHVibGljIHNoYXJlZFNlcnZpY2U6IFNoYXJlZFNlcnZpY2UsXG4gICAgcHVibGljIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXJcbiAgKSB7XG4gICAgdGhpcy5yb2xlTWFwcGluZ0Zvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG1pbmlzdHJ5VHlwZTogWydtaW5pc3RyeScsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgbWluaXN0cnk6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIHNlY3RvcnM6IFtbXV0sXG4gICAgICBkZXBhcnRtZW50czogW1tdXVxuXG4gICAgfSk7XG4gICAgdGhpcy5maWx0ZXJGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBzdGF0dXM6IFsnJ10sXG4gICAgICB0aW1lOiBbJyddLFxuICAgICAgc2VhcmNoOiBbJyddXG4gICAgfSk7XG4gICAgLy8gdGhpcy5jYnBGaW5hbE9iaiA9IHRoaXMuc2hhcmVkU2VydmljZS5nZXRDQlBQbGFuTG9jYWxTdG9yYWdlKClcbiAgICB0aGlzLmdldE1pbmlzdHJ5RGF0YSgpXG5cblxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jYnBQbGFuRmluYWxPYmogPSB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0Q0JQUGxhbkxvY2FsU3RvcmFnZSgpXG4gICAgY29uc29sZS5sb2coJ2NicEZpbmFsT2JqLS0nLCB0aGlzLmNicEZpbmFsT2JqKVxuICAgIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHNlYXJjaFRleHQgPT4ge1xuICAgICAgaWYgKHNlYXJjaFRleHQpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJNaW5pc3RyeURhdGEoc2VhcmNoVGV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZpbHRlcmVkTWluaXN0cnlEYXRhID0gdGhpcy5taW5pc3RyeURhdGFcbiAgICAgIH1cblxuICAgIH0pO1xuICAgIHRoaXMuc2hhcmVkU2VydmljZS5zdW1tYXJ5VHJpZ2dlckV4ZWN1dGVkLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICBpZiAoZGF0YSAmJiBkYXRhPy5maWxlX2lkKSB7XG4gICAgICAgIHRoaXMuZ2V0QXBwcm92YWxSZXF1ZXN0cygpXG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAodGhpcy5jYnBQbGFuRmluYWxPYmogJiYgdGhpcy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkgJiYgdGhpcy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkuaWRlbnRpZmllcikge1xuICAgICAgdGhpcy5nZXRBcHByb3ZhbFJlcXVlc3RzKClcbiAgICB9XG4gIH1cblxuICAvLyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gIC8vICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnaW5hdG9yO1xuICAvLyB9XG5cbiBnZXRBcHByb3ZhbFJlcXVlc3RzKCkge1xuXG4gIGxldCByZXFCb2R5OiBhbnkgPSB7XG4gICAgc3RhdGVfY2VudGVyX2lkOiB0aGlzLmNicFBsYW5GaW5hbE9iaj8ubWluaXN0cnk/LmlkZW50aWZpZXIsXG4gICAgaW5jbHVkZV9zdW1tYXJ5OiB0cnVlLFxuICAgIHBhZ2U6IHRoaXMucGFnZUluZGV4ICsgMSxcbiAgICBwYWdlX3NpemU6IHRoaXMucGFnZVNpemVcbiAgfTtcblxuICBjb25zdCBzZWFyY2ggPSB0aGlzLmZpbHRlckZvcm0uZ2V0KCdzZWFyY2gnKT8udmFsdWU7XG4gIGNvbnN0IHN0YXR1cyA9IHRoaXMuZmlsdGVyRm9ybS5nZXQoJ3N0YXR1cycpPy52YWx1ZTtcbiAgY29uc3QgdGltZSA9IHRoaXMuZmlsdGVyRm9ybS5nZXQoJ3RpbWUnKT8udmFsdWU7XG5cbiAgaWYgKHNlYXJjaCkge1xuICAgIHJlcUJvZHkuc2VhcmNoID0gc2VhcmNoO1xuICB9XG5cbiAgaWYgKHN0YXR1cykge1xuICAgIHJlcUJvZHkuc3RhdHVzID0gc3RhdHVzO1xuICB9XG5cbiAgLy8gVGltZSBmaWx0ZXJcbiAgaWYgKHRpbWUpIHtcblxuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICBsZXQgZnJvbURhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgaWYgKHRpbWUgPT09ICdsYXN0XzdfZGF5cycpIHtcbiAgICAgIGZyb21EYXRlLnNldERhdGUodG9kYXkuZ2V0RGF0ZSgpIC0gNyk7XG4gICAgfVxuXG4gICAgaWYgKHRpbWUgPT09ICdsYXN0XzMwX2RheXMnKSB7XG4gICAgICBmcm9tRGF0ZS5zZXREYXRlKHRvZGF5LmdldERhdGUoKSAtIDMwKTtcbiAgICB9XG5cbiAgICBpZiAodGltZSA9PT0gJ2xhc3RfOTBfZGF5cycpIHtcbiAgICAgIGZyb21EYXRlLnNldERhdGUodG9kYXkuZ2V0RGF0ZSgpIC0gOTApO1xuICAgIH1cblxuICAgIHJlcUJvZHkuZnJvbV9kYXRlID0gZnJvbURhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xuICAgIHJlcUJvZHkudG9fZGF0ZSA9IHRvZGF5LnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgfVxuXG4gIGlmICh0aGlzLmNicFBsYW5GaW5hbE9iaj8uZGVwYXJ0bWVudHMpIHtcbiAgICByZXFCb2R5LmRlcGFydG1lbnRfaWQgPSB0aGlzLmNicFBsYW5GaW5hbE9iai5kZXBhcnRtZW50cztcbiAgfVxuXG4gIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldEFwcHJvdmFsUmVxdWVzdHMocmVxQm9keSkuc3Vic2NyaWJlKChyZXMpID0+IHtcblxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgdGhpcy5hcHByb3ZhbFJlcXVlc3RzID0gcmVzPy5pdGVtcyB8fCBbXTtcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuYXBwcm92YWxSZXF1ZXN0cztcbiAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHJlcz8udG90YWwgfHwgMDtcblxuICB9KTtcbn1cblxuXG5cbiAgZmlsdGVyZWRhcHByb3ZhbFJlcXVlc3RzKCkge1xuICAgIGxldCBkYXRhID0gWy4uLnRoaXMuYXBwcm92YWxSZXF1ZXN0c107XG5cbiAgICBjb25zdCBzZWFyY2ggPSB0aGlzLmZpbHRlckZvcm0uZ2V0KCdzZWFyY2gnKT8udmFsdWU/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5maWx0ZXJGb3JtLmdldCgnc3RhdHVzJyk/LnZhbHVlO1xuICAgIGNvbnN0IHRpbWUgPSB0aGlzLmZpbHRlckZvcm0uZ2V0KCd0aW1lJyk/LnZhbHVlO1xuICAgIC8vIFNlYXJjaCBGaWx0ZXJcbiAgICBpZiAoc2VhcmNoKSB7XG4gICAgICBkYXRhID0gZGF0YS5maWx0ZXIociA9PlxuICAgICAgICAoci5yZXF1ZXN0X25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBTdGF0dXMgRmlsdGVyXG4gICAgaWYgKHN0YXR1cykge1xuICAgICAgZGF0YSA9IGRhdGEuZmlsdGVyKHIgPT4gci5zdGF0dXMgPT09IHN0YXR1cyk7XG4gICAgfVxuXG4gICAgLy8gVGltZSBGaWx0ZXJcbiAgICBpZiAodGltZSkge1xuICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcblxuICAgICAgZGF0YSA9IGRhdGEuZmlsdGVyKHIgPT4ge1xuICAgICAgICBjb25zdCBjcmVhdGVkID0gbmV3IERhdGUoci5jcmVhdGVkX2F0KTtcbiAgICAgICAgY29uc3QgZGlmZkRheXMgPVxuICAgICAgICAgIChub3cuZ2V0VGltZSgpIC0gY3JlYXRlZC5nZXRUaW1lKCkpIC8gKDEwMDAgKiAzNjAwICogMjQpO1xuXG4gICAgICAgIGlmICh0aW1lID09PSAnbGFzdF83X2RheXMnKSByZXR1cm4gZGlmZkRheXMgPD0gNztcbiAgICAgICAgaWYgKHRpbWUgPT09ICdsYXN0XzMwX2RheXMnKSByZXR1cm4gZGlmZkRheXMgPD0gMzA7XG4gICAgICAgIGlmICh0aW1lID09PSAnbGFzdF85MF9kYXlzJykgcmV0dXJuIGRpZmZEYXlzIDw9IDkwO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBkZWxldGVEb2N1bWVudChkb2NUb0RlbGV0ZTogYW55KSB7XG4gICAgdGhpcy5hcHByb3ZhbFJlcXVlc3RzID0gdGhpcy5hcHByb3ZhbFJlcXVlc3RzLmZpbHRlcihkb2MgPT4gZG9jICE9PSBkb2NUb0RlbGV0ZSk7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgIHRoaXMuc2hhcmVkU2VydmljZS5kZWxldGVTdW1tYXJ5KGRvY1RvRGVsZXRlPy5maWxlX2lkKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuZGVsZXRlRmlsZShkb2NUb0RlbGV0ZT8uZmlsZV9pZCkuc3Vic2NyaWJlKChkcmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgICAgICAgIGlmIChkcmVzKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdEb2N1bWVudCBEZWxldGVkIFN1Y2Nlc3NmdWxseScsICdYJywge1xuICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1zdWNjZXNzJ11cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5nZXRBcHByb3ZhbFJlcXVlc3RzKClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignRXJyb3IgV2hpbGUgRGVsZXRpbmcgRG9jdW1lbnQnLCAnWCcsIHtcbiAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItZXJyb3InXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmdldEFwcHJvdmFsUmVxdWVzdHMoKVxuICAgICAgICAgIH1cblxuICAgICAgICB9KVxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ0RvY3VtZW50IFN1bW1hcnkgRGVsZXRlZCBTdWNjZXNzZnVsbHknLCAnWCcsIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLXN1Y2Nlc3MnXVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignRXJyb3IgV2hpbGUgRGVsZXRpbmcgRG9jdW1lbnQgU3VtbWFyeScsICdYJywge1xuICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItZXJyb3InXVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KVxuXG4gIH1cblxuICBhcHBseUZpbHRlcnMoKSB7XG4gICAgY29uc3QgZmlsdGVyZWQgPSB0aGlzLmZpbHRlcmVkYXBwcm92YWxSZXF1ZXN0cygpO1xuXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBmaWx0ZXJlZDtcblxuICAgIGlmICh0aGlzLnBhZ2luYXRvcikge1xuICAgICAgdGhpcy5wYWdpbmF0b3IuZmlyc3RQYWdlKCk7XG4gICAgfVxuICB9XG4gIG9uTWluaXN0cnlUeXBlQ2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5yb2xlTWFwcGluZ0Zvcm0ucmVzZXQoKVxuXG4gICAgLy8gY29uc29sZS5sb2coJ2V2ZW50JywgZXZlbnQpXG4gICAgdGhpcy5nZXRNaW5pc3RyeURhdGEoKVxuICAgIHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmpbJ21pbmlzdHJ5VHlwZSddID0gZXZlbnQudmFsdWVcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2JwUGxhbkZpbmFsT2JqJywgSlNPTi5zdHJpbmdpZnkodGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9iaikpXG4gICAgdGhpcy5zZWxlY3RlZE1pbmlzdHJ5VHlwZSA9IGV2ZW50Py52YWx1ZVxuICAgIHRoaXMucm9sZU1hcHBpbmdGb3JtLmdldCgnc2VjdG9ycycpPy5zZXRWYWx1ZShbXSk7XG5cbiAgICB0aGlzLnJvbGVNYXBwaW5nRm9ybS5jb250cm9scy5taW5pc3RyeVR5cGUuc2V0VmFsdWUodGhpcy5zZWxlY3RlZE1pbmlzdHJ5VHlwZSlcbiAgfVxuXG4gIG9uTWluaXN0cnlDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHNlbGVjdGVkTWluaXN0cnlJZCA9IGV2ZW50LnZhbHVlO1xuXG4gICAgLy8gY29uc29sZS5sb2coJ1NlbGVjdGVkIE1pbmlzdHJ5IElEOicsIHNlbGVjdGVkTWluaXN0cnlJZCk7XG5cbiAgICAvLyBZb3UgY2FuIGFjY2VzcyB0aGUgc2VsZWN0ZWQgb2JqZWN0IGlmIG5lZWRlZFxuICAgIGNvbnN0IHNlbGVjdGVkTWluaXN0cnkgPSB0aGlzLm1pbmlzdHJ5RGF0YS5maW5kKGl0ZW0gPT4gaXRlbS5pZGVudGlmaWVyID09PSBzZWxlY3RlZE1pbmlzdHJ5SWQpO1xuICAgIGNvbnNvbGUubG9nKCdTZWxlY3RlZCBNaW5pc3RyeTonLCBzZWxlY3RlZE1pbmlzdHJ5KTsgYGBcbiAgICB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqWydtaW5pc3RyeSddID0geyBpZGVudGlmaWVyOiBzZWxlY3RlZE1pbmlzdHJ5SWQ/LmlkZW50aWZpZXIsIG5hbWU6IHNlbGVjdGVkTWluaXN0cnlJZD8ub3JnTmFtZSB9XG4gICAgaWYgKHNlbGVjdGVkTWluaXN0cnlJZCAmJiB0aGlzLnNlbGVjdGVkTWluaXN0cnlUeXBlID09PSAnc3RhdGUnKSB7XG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0RGVwYXJ0bWVudExpc3Qoc2VsZWN0ZWRNaW5pc3RyeUlkKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmRlcGFydG1lbnREYXRhID0gcmVzXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZE1pbmlzdHJ5VHlwZSA9PT0gJ3N0YXRlJykge1xuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9ialsnbWluaXN0cnlUeXBlJ10gPSB0aGlzLnJvbGVNYXBwaW5nRm9ybS5jb250cm9scy5taW5pc3RyeVR5cGUudmFsdWVcbiAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmpbJ21pbmlzdHJ5J10gPSB7IGlkZW50aWZpZXI6IHNlbGVjdGVkTWluaXN0cnk/LmlkZW50aWZpZXIsIG5hbWU6IHNlbGVjdGVkTWluaXN0cnk/Lm9yZ05hbWUgfVxuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9ialsnZGVwYXJ0bWVudHMnXSA9IHRoaXMucm9sZU1hcHBpbmdGb3JtLmNvbnRyb2xzLmRlcGFydG1lbnRzLnZhbHVlXG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqWydzZWN0b3JzJ10gPSB0aGlzLnJvbGVNYXBwaW5nRm9ybS5jb250cm9scy5zZWN0b3JzLnZhbHVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmpbJ21pbmlzdHJ5VHlwZSddID0gdGhpcy5yb2xlTWFwcGluZ0Zvcm0uY29udHJvbHMubWluaXN0cnlUeXBlLnZhbHVlXG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqWydtaW5pc3RyeSddID0geyBpZGVudGlmaWVyOiBzZWxlY3RlZE1pbmlzdHJ5Py5pZGVudGlmaWVyLCBuYW1lOiBzZWxlY3RlZE1pbmlzdHJ5Py5vcmdOYW1lIH1cbiAgICB9XG4gICAgY29uc29sZS5sb2coJ3RoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmonLCB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqKVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYnBQbGFuRmluYWxPYmonLCBKU09OLnN0cmluZ2lmeSh0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqKSlcbiAgICBjb25zb2xlLmxvZygndGhpcy5yb2xlTWFwcGluZ0Zvcm0nLCB0aGlzLnJvbGVNYXBwaW5nRm9ybSlcbiAgfVxuXG5cblxuICBmaWx0ZXJNaW5pc3RyeURhdGEoc2VhcmNoVGV4dCkge1xuXG4gICAgaWYgKHNlYXJjaFRleHQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdzZWFyaFRlY3QsICcsIHNlYXJjaFRleHQpXG4gICAgICBjb25zdCBzZWFyY2ggPSBzZWFyY2hUZXh0Py50cmltKCkudG9Mb3dlckNhc2UoKSB8fCAnJztcbiAgICAgIHRoaXMuZmlsdGVyZWRNaW5pc3RyeURhdGEgPSAhc2VhcmNoXG4gICAgICAgID8gWy4uLnRoaXMubWluaXN0cnlEYXRhXVxuICAgICAgICA6IHRoaXMubWluaXN0cnlEYXRhLmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgaXRlbS5vcmdOYW1lPy50cmltKCkudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHNlYXJjaClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgfVxuXG4gIGdldE1pbmlzdHJ5RGF0YSgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldE1pbmlzdHJ5RGF0YSh0aGlzLnNlbGVjdGVkTWluaXN0cnlUeXBlKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgIGNvbnNvbGUubG9nKCdkYXRhLS0nLCBkYXRhKVxuICAgICAgdGhpcy5taW5pc3RyeUZ1bGxEYXRhID0gZGF0YVxuICAgICAgdGhpcy5taW5pc3RyeURhdGEgPSBbXVxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRNaW5pc3RyeVR5cGUgPT09ICdtaW5pc3RyeScpIHtcbiAgICAgICAgZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0/LnNiT3JnVHlwZSA9PT0gJ21pbmlzdHJ5Jykge1xuICAgICAgICAgICAgdGhpcy5taW5pc3RyeURhdGEucHVzaChpdGVtKVxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE1pbmlzdHJ5RGF0YSA9IFsuLi50aGlzLm1pbmlzdHJ5RGF0YV07XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkTWluaXN0cnlUeXBlID09PSAnc3RhdGUnKSB7XG4gICAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtPy5zYk9yZ1R5cGUgPT09ICdzdGF0ZScpIHtcbiAgICAgICAgICAgIHRoaXMubWluaXN0cnlEYXRhLnB1c2goaXRlbSlcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRNaW5pc3RyeURhdGEgPSBbLi4udGhpcy5taW5pc3RyeURhdGFdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHRoaXMuZ2V0VXNlclByb2ZpbGVEYXRhKClcbiAgICB9KVxuXG4gICAgY29uc29sZS5sb2coJ3RoaXMubWluaXN0cnlEYXRhLS0nLCB0aGlzLm1pbmlzdHJ5RGF0YSlcbiAgICBjb25zb2xlLmxvZygndGhpcy5maWx0ZXJlZE1pbmlzdHJ5RGF0YS0tJywgdGhpcy5maWx0ZXJlZE1pbmlzdHJ5RGF0YSlcbiAgfVxuXG4gIHJvdXRlVG9NYWluKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FpLyddKTtcbiAgfVxuXG4gIHZpZXdTdW1tYXJ5KGRvYykge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oTGlzdFBvcHVwQ29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogJzgwMHB4JyxcbiAgICAgIGRhdGE6IHsgZWxlbWVudDogZG9jLCB0eXBlOiAnZG9jLXN1bW1hcnknIH0sXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICBtYXhIZWlnaHQ6ICc4MHZoJ1xuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIC8vIE5vIG5lZWQgdG8gZG8gYW55dGhpbmcgc3BlY2lhbCBoZXJlIHRvIHJlc2V0IGlubGluZSBleHBhbmRlZCBzdGF0ZVxuICAgICAgLy8gQmVjYXVzZSB5b3UncmUgdXNpbmcgZGlhbG9nLCBub3QgaW5saW5lIGV4cGFuZCDigJMgdmlldyByZW1haW5zIGluIGluaXRpYWwgKGNvbGxhcHNlZCkgc3RhdGVcbiAgICB9KTtcbiAgfVxuXG4gIHZpZXdSZXF1ZXN0KHJlcXVlc3Q6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdyZXF1ZXN0LS0nLCByZXF1ZXN0KVxuICAgIHRoaXMubG9hZGluZyA9IHRydWVcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9haS9yZXZpZXctcmVxdWVzdCcsIHJlcXVlc3QuaWRdKTtcbiAgfVxuXG4gIHJldm9rZUFwcHJvdmFsUmVxdWVzdChyZXF1ZXN0OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dSZXZva2VSZXF1ZXN0UG9wdXBGbGFnID0gdHJ1ZVxuICAgIHRoaXMucmV2b2tlUmVxdWVzdGVkUmVxdWVzdCA9IHJlcXVlc3RcbiAgICBjb25zb2xlLmxvZygncmVxdWVzdC0tJywgcmVxdWVzdClcbiAgIFxuICB9XG5cbiAgcmV2b2tlQXBwcm92YWxSZXF1ZXN0Q29uZmlybSgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gICAgbGV0IHJlcUJvZHkgPVxuICAgIHtcbiAgICAgIFwicmVxdWVzdF9pZFwiOiB0aGlzLnJldm9rZVJlcXVlc3RlZFJlcXVlc3Q/LmlkXG4gICAgfVxuXG4gICAgdGhpcy5zaGFyZWRTZXJ2aWNlLnJldm9rZUFwcHJvdmFsUmVxdWVzdChyZXFCb2R5KS5zdWJzY3JpYmUoe1xuXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ3JlcycsIHJlcylcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignUmVxdWVzdCBSZXZva2VkIFN1Y2Nlc3NmdWxseScsICdYJywge1xuICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItc3VjY2VzcyddXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNob3dSZXZva2VSZXF1ZXN0UG9wdXBGbGFnID0gZmFsc2VcbiAgICAgICAgdGhpcy5nZXRBcHByb3ZhbFJlcXVlc3RzKClcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ0ZhaWxlZCB0byByZXZva2UgdGhlIGFwcHJvdmFsIHJlcXVlc3QuJywgJ1gnLCB7XG4gICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1lcnJvciddXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2xvc2VSZXZva2VQb3B1cCgpIHtcbiAgICB0aGlzLnNob3dSZXZva2VSZXF1ZXN0UG9wdXBGbGFnID0gZmFsc2VcbiAgfVxuICBvbk9wZW5lZChvcGVuZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnBhbmVsT3BlbiA9IG9wZW5lZDtcbiAgfVxuXG4gIG9uT3BlbmVkRGVwYXJ0bWVudChvcGVuZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRlcGFydG1lbnRQYW5lbE9wZW4gPSBvcGVuZWRcbiAgfVxuXG4gIGZpbHRlckRhdGEoZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0ICYmIGV2ZW50LnRhcmdldC52YWx1ZSkge1xuICAgICAgY29uc3QgcyA9IGV2ZW50LnRhcmdldC52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICB0aGlzLmZpbHRlcmVkTGlzdCA9IHRoaXMubWluaXN0cnlEYXRhLmZpbHRlcih4ID0+XG4gICAgICAgIHgub3JnTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHMpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkTGlzdCA9IHRoaXMubWluaXN0cnlEYXRhXG4gICAgfVxuXG4gIH1cblxuICBmaWx0ZXJEZXBhcnRtZW50RGF0YShldmVudCkge1xuICAgIGlmIChldmVudCAmJiBldmVudC50YXJnZXQgJiYgZXZlbnQudGFyZ2V0LnZhbHVlKSB7XG4gICAgICBjb25zdCBzID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIHRoaXMuZmlsdGVyZWREZXBhcnRtZW50TGlzdCA9IHRoaXMuZGVwYXJ0bWVudERhdGEuZmlsdGVyKHggPT5cbiAgICAgICAgeC5vcmdOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocylcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWREZXBhcnRtZW50TGlzdCA9IHRoaXMuZGVwYXJ0bWVudERhdGFcbiAgICB9XG5cbiAgfVxuXG4gIGdldFVzZXJQcm9maWxlRGF0YSgpIHtcbiAgICB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0VXNlclByb2ZpbGUoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdkYXRhLS0nLCBkYXRhKVxuICAgICAgdGhpcy5sb2dpblVzZXJPcmdJZHMgPSBkYXRhPy5vcmdhbml6YXRpb25faWRzXG4gICAgICBsZXQgZmlsdGVyZWRNaW5pc3RyeURhdGEgPSBbXVxuICAgICAgY29uc29sZS5sb2coJ3RoaXMubWluaXN0cnlGdWxsRGF0YS0tJywgdGhpcy5taW5pc3RyeUZ1bGxEYXRhKVxuICAgICAgdGhpcy5taW5pc3RyeUZ1bGxEYXRhLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5sb2dpblVzZXJPcmdJZHMuaW5kZXhPZihpdGVtPy5pZGVudGlmaWVyKSA+IC0xKSB7XG4gICAgICAgICAgZmlsdGVyZWRNaW5pc3RyeURhdGEucHVzaChpdGVtKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICB0aGlzLm1pbmlzdHJ5RGF0YSA9IGZpbHRlcmVkTWluaXN0cnlEYXRhXG4gICAgICB0aGlzLm9yaWdpbmFsTWluaXN0cnlEYXRhID0gZmlsdGVyZWRNaW5pc3RyeURhdGFcbiAgICAgIHRoaXMuZmlsdGVyZWRMaXN0ID0gZmlsdGVyZWRNaW5pc3RyeURhdGE7XG4gICAgICBjb25zb2xlLmxvZygndGhpcy5maWx0ZXJlZExpc3QtLScsIHRoaXMuZmlsdGVyZWRMaXN0KVxuICAgIH0pXG4gIH1cblxuICByb3V0ZVRvSW5pdGlhbCgpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9haS9pbml0aWFsJ10pO1xuICB9XG5cblxuICBmaWx0ZXJMaXN0KHZhbHVlOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IHNlYXJjaCA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcblxuICAgICAgY2FzZSAnc3RhdHVzJzpcbiAgICAgICAgdGhpcy5maWx0ZXJlZFN0YXR1cyA9IHRoaXMuc3RhdHVzLmZpbHRlcih2ID0+IHYubGFiZWw/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGltZSc6XG4gICAgICAgIHRoaXMuZmlsdGVyZWRUaW1lID0gdGhpcy50aW1lLmZpbHRlcih2ID0+IHYubGFiZWw/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyU2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICB0aGlzLnBhZ2VJbmRleCA9IGV2ZW50LnBhZ2VJbmRleDtcbiAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50LnBhZ2VTaXplO1xuXG4gIHRoaXMuZ2V0QXBwcm92YWxSZXF1ZXN0cygpO1xufVxuXG5zaG93UmVqZWN0UG9wdXAoZWxlbWVudCkge1xuICBjb25zb2xlLmxvZygnZWxlbWVudCcsIGVsZW1lbnQpXG4gIHRoaXMuc2hvd1JlamVjdFBvcHVwRmxhZyA9IHRydWVcbiAgdGhpcy5yZWplY3Rpb25EZXRhaWwgPSBlbGVtZW50XG59XG5cbmNsb3NlUmVqZWN0UG9wdXAoKSB7XG4gIHRoaXMuc2hvd1JlamVjdFBvcHVwRmxhZyA9IGZhbHNlXG59XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJ1cGxvYWQtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRpbmcgbXQtMTAgbWItMTAgbWwtMTAgY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICAgIDxwIChjbGljayk9XCJyb3V0ZVRvSW5pdGlhbCgpXCI+PG1hdC1pY29uIHN0eWxlPVwidmVydGljYWwtYWxpZ246IG1pZGRsZTtcIj5hcnJvd19iYWNrPC9tYXQtaWNvbj48c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBsLTEwXCI+QmFjayB0byBSb2xlIE1hcHBpbmcgR2VuZXJhdGlvbjwvc3Bhbj48L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG4gICAgPG1hdC1jYXJkIGNsYXNzPVwibWF0LWNhcmQtY29udGFpbmVyIG10LTIwXCIgW2Zvcm1Hcm91cF09XCJyb2xlTWFwcGluZ0Zvcm1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgPHA+QXBwcm92YWwgUmVxdWVzdHM8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJlZGl0LXNlY3Rpb24gbXQtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC1tYXAtcm91dGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC1tYXAtZmxleC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC1tYXAtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLW1hcHBpbmctcm91dGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57e2NicFBsYW5GaW5hbE9iaj8ubWluaXN0cnk/Lm9yZ05hbWV9fSA8c3BhbiAqbmdJZj1cImNicFBsYW5GaW5hbE9iaj8uZGVwYXJ0bWVudF9uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIHt7Y2JwUGxhbkZpbmFsT2JqPy5kZXBhcnRtZW50X25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0LXBsYW4gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicm91dGVUb0luaXRpYWwoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj5FZGl0XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+IC0tPlxuXG5cblxuXG5cbiAgICA8L21hdC1jYXJkPlxuICAgIDxtYXQtY2FyZCBjbGFzcz1cIlwiIHN0eWxlPVwiei1pbmRleDogMDtwYWRkaW5nOjZweCAwXCI+XG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaCBmbGV4IG1hcmdpbi1yaWdodC1tIGZpbHRlci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImx1Y2lkZSBsdWNpZGUtZmlsdGVyIGgtNCB3LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwb2x5Z29uIHBvaW50cz1cIjIyIDMgMiAzIDEwIDEyLjQ2IDEwIDE5IDE0IDIxIDE0IDEyLjQ2IDIyIDNcIj48L3BvbHlnb24+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxiPiBGaWx0ZXJzPC9iPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTUwXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyc2VhcmNoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sb3ItNjAgc2VhcmNoLWljb24gbWF0LWljb24gbm90cmFuc2xhdGUgbWF0ZXJpYWwtaWNvbnMgbWF0LWljb24tbm8tY29sb3JcIj5zZWFyY2g8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInNpbnB1dCBjb2xvci02MCB3LWZ1bGxcIiBsYWJlbD1cIlwiIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJnZXRBcHByb3ZhbFJlcXVlc3RzKClcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBSZXF1ZXN0IE5hbWVcIiB0eXBlPVwiU3RhbmRhcmRcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1hbmQtYnV0dG9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwibGFuZ3VhZ2Utc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bWF0LWxhYmVsIHN0eWxlPVwiZm9udC13ZWlnaHQ6IG5vcm1hbDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVyRm9ybS5nZXQoJ3N0YXR1cycpPy52YWx1ZSA/ICcnIDogJ1NlbGVjdCBTdGF0dXMnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+IC0tPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwic3RhdHVzXCIgcGFuZWxDbGFzcz1cInNlbGVjdC1zZWFyY2gtcGFuZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImdldEFwcHJvdmFsUmVxdWVzdHMoKVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU2VhcmNoIGJveCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBwYWRkaW5nOiA1cHg7d2lkdGg6IDkyJTttYXJnaW46IDVweDtcIiBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggU3RhdHVzXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cImZpbHRlckxpc3QoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSwgJ3N0YXR1cycpXCIgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFZhbHVlcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHIgb2YgZmlsdGVyZWRTdGF0dXNcIiBbdmFsdWVdPVwicj8uY29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcj8ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1hbmQtYnV0dG9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwibGFuZ3VhZ2Utc2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bWF0LWxhYmVsIHN0eWxlPVwiZm9udC13ZWlnaHQ6IG5vcm1hbDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVyRm9ybS5nZXQoJ3RpbWUnKT8udmFsdWUgPyAnJyA6ICdTZWxlY3QgVGltZScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD4gLS0+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJ0aW1lXCIgcGFuZWxDbGFzcz1cInNlbGVjdC1zZWFyY2gtcGFuZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImFwcGx5RmlsdGVycygpXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWFyY2ggYm94IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9XCJib3JkZXI6MXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDVweDt3aWR0aDogOTIlO21hcmdpbjogNXB4O1wiIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBUaW1lXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cImZpbHRlckxpc3QoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSwgJ3RpbWUnKVwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBWYWx1ZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCByIG9mIGZpbHRlcmVkVGltZVwiIFt2YWx1ZV09XCJyPy5jb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByPy5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDxwIGNsYXNzPVwibXQtMTVcIiBzdHlsZT1cImZvbnQtZmFtaWx5OiAnTGF0byc7IGZvbnQtc2l6ZTogMThweDsgbWFyZ2luLWxlZnQ6IDEwcHg7bWFyZ2luLXRvcDogMTVweDtcIj5cbiAgICAgICAgICAgIHt7dG90YWxSZWNvcmRzfX0gQXBwcm92YWwgUmVxdWVzdHM8L3A+XG4gICAgICAgIDx0YWJsZSBzdHlsZT1cImJvcmRlci1yYWRpdXM6IDI1cHggMjVweCAwIDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1wiIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcbiAgICAgICAgICAgIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16MiBmdWxsLXdpZHRoLXRhYmxlIG10LTEwXCI+XG5cbiAgICAgICAgICAgIDwhLS0gRG9jdW1lbnQgQ29sdW1uIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJyZXF1ZXN0X2lkXCI+XG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gUmVxdWVzdCBOYW1lIDwvdGg+XG4gICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJlcXVlc3RcIiBzdHlsZT1cIndpZHRoOiAyNSU7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jLXRpdGxlXCIgKm5nSWY9XCJyZXF1ZXN0LnJlcXVlc3RfbmFtZVwiPnt7IHJlcXVlc3QucmVxdWVzdF9uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jLXRpdGxlXCIgKm5nSWY9XCIhcmVxdWVzdC5yZXF1ZXN0X25hbWVcIj57eyByZXF1ZXN0LnJlcXVlc3RfbmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuXG4gICAgICAgICAgICA8IS0tIFN1bW1hcnkgVGV4dCBDb2x1bW4gLS0+XG4gICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwic3VtbWFyeV90ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gU3VtbWFyeSA8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBkb2NcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvYy1zdW1tYXJ5LXRleHRcIiBzdHlsZT1cIndpZHRoOiA4MCU7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWFya2Rvd24gW2RhdGFdPVwiZG9jPy5zdW1tYXJ5X3RleHQgfCBzbGljZSA6IDAgOiAyMDBcIj48L21hcmtkb3duPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxuXG4gICAgICAgICAgICA8IS0tIERhdGUgQ29sdW1uIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkYXRlXCI+XG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gRGF0ZSAmIFRpbWU8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByZXF1ZXN0XCIgc3R5bGU9XCJ3aWR0aDogMTIlO1wiPiB7eyByZXF1ZXN0LmNyZWF0ZWRfYXQgfCBkYXRlOiAnTU1NIGQsIHkgaGg6bW06c3MgYSd9fVxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkZXNpZ25hdGlvblwiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IE5vLiBvZiBEZXNpZ25hdGlvbiA8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByZXF1ZXN0XCIgc3R5bGU9XCJ3aWR0aDogMTAlOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGVzaWduYXRpb24tY291bnRcIj57e3JlcXVlc3Q/LmRlc2lnbmF0aW9uX2NvdW50fX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICAgIDwhLS0gU3VtbWFyeSBTdGF0dXMgQ29sdW1uIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzdGF0dXNcIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBSZXF1ZXN0IFN0YXR1cyA8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByZXF1ZXN0XCIgc3R5bGU9XCJ3aWR0aDogMTAlO1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJlcXVlc3Quc3RhdHVzID09PSAnZHJhZnQnIHx8IHJlcXVlc3Quc3RhdHVzID09PSAnRFJBRlQnIHx8IHJlcXVlc3Quc3RhdHVzID09PSAncmV2b2tlJyB8fCByZXF1ZXN0LnN0YXR1cyA9PT0gJ1JFVk9LRScgfHwgcmVxdWVzdC5zdGF0dXMgPT09ICdSRVZPS0VEJyB8fCByZXF1ZXN0LnN0YXR1cyA9PT0gJ3Jldm9rZWQnXCIgY2xhc3M9XCJkcmFmdFwiPiBSZXZva2VkIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZXF1ZXN0LnN0YXR1cyA9PT0gJ2FwcHJvdmVkJyB8fCByZXF1ZXN0LnN0YXR1cyA9PT0gJ0FQUFJPVkVEJ1wiIGNsYXNzPVwic3VjY2Vzc1wiPiB7eyByZXF1ZXN0LnN0YXR1cyB8IHRpdGxlY2FzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJlcXVlc3Quc3RhdHVzID09PSAncGVuZGluZycgfHwgcmVxdWVzdC5zdGF0dXMgPT09ICdQRU5ESU5HJ1wiIGNsYXNzPVwiaW4tcHJvZ3Jlc3NcIj4ge3sgcmVxdWVzdC5zdGF0dXMgfFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVjYXNlIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZXF1ZXN0LnN0YXR1cyA9PT0gJ3JlamVjdGVkJyB8fCByZXF1ZXN0LnN0YXR1cyA9PT0gJ1JFSkVDVEVEJ1wiIGNsYXNzPVwicmVqZWN0ZWRcIj4ge3sgcmVxdWVzdC5zdGF0dXMgfFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVjYXNlIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInNob3dSZWplY3RQb3B1cChyZXF1ZXN0KVwiICpuZ0lmPVwicmVxdWVzdC5zdGF0dXMgPT09ICdyZWplY3RlZCcgfHwgcmVxdWVzdC5zdGF0dXMgPT09ICdSRUpFQ1RFRCdcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxMHB4O2N1cnNvcjogcG9pbnRlcjtcIj48bWF0LWljb24gY2xhc3M9XCJ2ZXJ0aWNhbC1taWRkbGVcIj5yZW1vdmVfcmVkX2V5ZTwvbWF0LWljb24+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPCEtLSBBY3Rpb25zIENvbHVtbiAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+IEFjdGlvbnMgPC90aD5cbiAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcmVxdWVzdFwiIHN0eWxlPVwid2lkdGg6IDE1JTtcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tYWN0aXZlXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInZpZXdSZXF1ZXN0KHJlcXVlc3QpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlZpZXcvUmV2aWV3IFJlcXVlc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlldyBSZXF1ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAxNXB4O1wiIGNsYXNzPVwiYnRuLWdyYXlcIiAqbmdJZj1cInJlcXVlc3Quc3RhdHVzID09PSAnUEVORElORycgfHwgcmVxdWVzdC5zdGF0dXMgPT09ICdwZW5kaW5nJ1wiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJldm9rZUFwcHJvdmFsUmVxdWVzdChyZXF1ZXN0KVwiIG1hdFRvb2x0aXA9XCJSZXZva2UgUmVxdWVzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV2b2tlIFJlcXVlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG5cblxuXG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8IS0tIEhlYWRlciBhbmQgUm93IERlZmluaXRpb25zIC0tPlxuICAgICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cbiAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiPjwvdHI+XG5cbiAgICAgICAgICAgIDwhLS0gTm8gRGF0YSBNZXNzYWdlIC0tPlxuXG4gICAgICAgIDwvdGFibGU+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJkYXRhU291cmNlLmRhdGEubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJuby1kYXRhLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgIE5vIHJlY29yZCBmb3VuZFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBQYWdpbmF0aW9uIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMVwiPlxuICAgICAgICAgICAgPCEtLSA8bWF0LXBhZ2luYXRvciBjbGFzcz1cImN1c3RvbS1wYWdpbmF0aW9uXCIgW3BhZ2VTaXplXT1cIjVcIiBbcGFnZVNpemVPcHRpb25zXT1cIls1LCAxMCwgMjBdXCI+PC9tYXQtcGFnaW5hdG9yPiAtLT5cbiAgICAgICAgICAgIDxtYXQtcGFnaW5hdG9yIFtsZW5ndGhdPVwidG90YWxSZWNvcmRzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCIgW3BhZ2VJbmRleF09XCJwYWdlSW5kZXhcIlxuICAgICAgICAgICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwiWzUsIDEwLCAyMF1cIiAocGFnZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9tYXQtcGFnaW5hdG9yPlxuICAgICAgICA8L2Rpdj5cblxuXG4gICAgPC9tYXQtY2FyZD5cbjwvZGl2PlxuXG48IS0tIFBvcHVwIE92ZXJsYXkgLS0+XG48ZGl2IGNsYXNzPVwicG9wdXAtb3ZlcmxheVwiICpuZ0lmPVwic2hvd1JlamVjdFBvcHVwRmxhZ1wiPlxuICA8ZGl2IGNsYXNzPVwicG9wdXAtY2FyZFwiPlxuICAgIFxuICAgIDwhLS0gQ2xvc2UgQnV0dG9uIC0tPlxuICAgIDxidXR0b24gY2xhc3M9XCJjbG9zZS1idG5cIiAoY2xpY2spPVwiY2xvc2VSZWplY3RQb3B1cCgpXCI+JnRpbWVzOzwvYnV0dG9uPlxuXG4gICAgPCEtLSBUaXRsZSAtLT5cbiAgICA8aDI+UmVqZWN0aW9uIFJlYXNvbjwvaDI+XG5cbiAgICA8IS0tIFN1YnRpdGxlIC0tPlxuICAgIDxwIGNsYXNzPVwic3VidGl0bGVcIj5cbiAgICAgIFRoaXMgcmVxdWVzdCB3YXMgcmVqZWN0ZWQgZm9yIHRoZSBmb2xsb3dpbmcgcmVhc29uOlxuICAgIDwvcD5cblxuICAgIDwhLS0gRXJyb3IgQm94IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJlcnJvci1ib3hcIj5cbiAgICAgIHt7cmVqZWN0aW9uRGV0YWlsPy5yZXZpZXdlcl9jb21tZW50c319XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInBvcHVwLW92ZXJsYXlcIiAqbmdJZj1cInNob3dSZXZva2VSZXF1ZXN0UG9wdXBGbGFnXCI+XG4gIDxkaXYgY2xhc3M9XCJwb3B1cC1jYXJkXCI+XG4gICAgXG4gICAgPCEtLSBDbG9zZSBCdXR0b24gLS0+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ0blwiIChjbGljayk9XCJjbG9zZVJldm9rZVBvcHVwKClcIj4mdGltZXM7PC9idXR0b24+XG5cbiAgICA8IS0tIFRpdGxlIC0tPlxuICAgIDxoMj5SZXZva2UgUmVxdWVzdDwvaDI+XG5cbiAgICA8IS0tIFN1YnRpdGxlIC0tPlxuICAgIDxwIGNsYXNzPVwic3VidGl0bGVcIj5cbiAgICAgPHN0cm9uZz5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmV2b2tlIHRoaXMgcmVxdWVzdD8gPC9zdHJvbmc+PGJyPjxicj5cbiAgICAgT25jZSByZXZva2VkLCB5b3Ugd2lsbCBub3QgYmUgYWJsZSB0byBtYWtlIGFueSBjaGFuZ2VzIHRvIHRoaXMgcmVxdWVzdC4gSWYgeW91IHdpc2ggdG8gcHJvY2VlZCBsYXRlciwgeW91IHdpbGwgbmVlZCB0byBjcmVhdGUgYSBuZXcgcmVxdWVzdCBhbmQgc3VibWl0IGl0IGFnYWluLCBEbyB5b3Ugd2FudCB0byBjb250aW51ZT8gIDxicj48YnI+XG4gICAgIFxuICAgIDwvcD5cbiAgIFxuXG4gICA8ZGl2IGNsYXNzPVwicG9wdXAtZm9vdGVyXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tYWN0aXZlLWdyYXlcIiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdmFsdWU9XCJOb1wiIChjbGljayk9XCJjbG9zZVJldm9rZVBvcHVwKClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1sLTEwXCI+XG4gICAgICAgICAgICA8YnV0dG9uICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAgICAgICAgY2xhc3M9XCJidG4tYWN0aXZlXCIgKGNsaWNrKT1cInJldm9rZUFwcHJvdmFsUmVxdWVzdENvbmZpcm0oKVwiPlxuXG4gICAgICAgICAgICAgICAgWWVzXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG48L2Rpdj5cblxuXG48ZGl2IGNsYXNzPVwib3ZlcmxheS1sb2FkZXJcIiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICA8bWF0LXNwaW5uZXIgZGlhbWV0ZXI9XCI1MFwiPjwvbWF0LXNwaW5uZXI+XG48L2Rpdj4iXX0=
|
|
@@ -86,11 +86,11 @@ export class DesignationApprovalRequestFormComponent {
|
|
|
86
86
|
this.approvalRequestForm = this.fb.group({
|
|
87
87
|
division_name: [this.role_mapping_ids?.wing_division_section || '', [
|
|
88
88
|
Validators.required,
|
|
89
|
-
Validators.pattern(/^[A-Za-z0-9
|
|
89
|
+
Validators.pattern(/^[A-Za-z0-9 ,()-]+$/)
|
|
90
90
|
]],
|
|
91
91
|
request_name: [this.role_mapping_ids?.designation_name || '', [
|
|
92
92
|
Validators.required,
|
|
93
|
-
Validators.pattern(/^[A-Za-z0-9
|
|
93
|
+
Validators.pattern(/^[A-Za-z0-9 /-]+$/)
|
|
94
94
|
]],
|
|
95
95
|
// searchmdo: [''],
|
|
96
96
|
});
|
|
@@ -396,4 +396,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
396
396
|
type: ViewChild,
|
|
397
397
|
args: ['mdo', { read: ElementRef }]
|
|
398
398
|
}] } });
|
|
399
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduYXRpb24tYXBwcm92YWwtcmVxdWVzdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi9jYnAtYWkvc3JjL2xpYi9jb21wb25lbnRzL2Rlc2lnbmF0aW9uLWFwcHJvdmFsLXJlcXVlc3QtZm9ybS9kZXNpZ25hdGlvbi1hcHByb3ZhbC1yZXF1ZXN0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL2NvbXBvbmVudHMvZGVzaWduYXRpb24tYXBwcm92YWwtcmVxdWVzdC1mb3JtL2Rlc2lnbmF0aW9uLWFwcHJvdmFsLXJlcXVlc3QtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBcUMsVUFBVSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUYsT0FBTyxFQUFrRCxRQUFRLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQTs7Ozs7Ozs7Ozs7QUFRM0IsTUFBTSxPQUFPLHVDQUF1QztJQWtCbEQsWUFBbUIsU0FBZ0UsRUFDakQsSUFBUyxFQUNqQyxFQUFlLEVBQ2YsS0FBd0IsRUFDeEIsYUFBNEIsRUFDNUIsUUFBcUI7UUFMWixjQUFTLEdBQVQsU0FBUyxDQUF1RDtRQUNqRCxTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ2pDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtR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QXdHTTs7NEZEM0ZPLHVDQUF1QztrQkFMbkQsU0FBUzsrQkFDRSx1Q0FBdUM7OzBCQXVCOUMsTUFBTTsyQkFBQyxlQUFlOzRKQWZlLE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1BcnJheSwgVmFsaWRhdG9ycywgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaW5hbGl6ZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyBmb3JrSm9pbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9tb2R1bGVzL3NoYXJlZC9zZXJ2aWNlcy9zaGFyZWQuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZGVzaWduYXRpb24tYXBwcm92YWwtcmVxdWVzdC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rlc2lnbmF0aW9uLWFwcHJvdmFsLXJlcXVlc3QtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rlc2lnbmF0aW9uLWFwcHJvdmFsLXJlcXVlc3QtZm9ybS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERlc2lnbmF0aW9uQXBwcm92YWxSZXF1ZXN0Rm9ybUNvbXBvbmVudCB7XG4gIGFwcHJvdmFsUmVxdWVzdEZvcm06IEZvcm1Hcm91cDtcbiAgY2JwUGxhbkZpbmFsT2JqOiBhbnlcbiAgbG9hZGluZyA9IGZhbHNlXG4gIEBWaWV3Q2hpbGQoJ21kbycsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBtZG9SZWY/OiBFbGVtZW50UmVmXG4gIG1kb0ZpbHRlckVuYWJsZSA9IGZhbHNlXG4gIGlzTG9hZGluZ01vcmVtZG9zID0gZmFsc2U7XG4gIG1kb09mZnNldCA9IDBcbiAgb2Rjc21kb0NvdW50ID0gMFxuICBkZWZhdWx0U2VhcmNobWRvQ291bnQgPSAwXG4gIG1kb0xpc3RMb2FkQ291bnQgPSA1MFxuICBtZG9EZWZhdWx0TG9hZENvdW50ID0gNTBcbiAgbm9Nb3JlTGVnYWN5bWRvcyA9IGZhbHNlXG4gIG1kb1NlYXJjaFRleHQgPSAnJ1xuICBtZG9Jbml0SW5Qcm9ncmVzcyA9IGZhbHNlXG4gIHNjcm9sbExpc3RlbmVyQXR0YWNoZWQgPSBmYWxzZVxuICBtYXN0ZXJEYXRhOiBhbnkgPSB7fVxuICByb2xlX21hcHBpbmdfaWRzOmFueVxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGVzaWduYXRpb25BcHByb3ZhbFJlcXVlc3RGb3JtQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHNoYXJlZFNlcnZpY2U6IFNoYXJlZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIpIHtcbiAgICAgIHRoaXMucm9sZV9tYXBwaW5nX2lkcyA9IGRhdGFcbiAgICB0aGlzLm1hc3RlckRhdGEgPSB7XG4gICAgICBtZG9CYWNrdXA6IFtdLFxuICAgICAgbWRvRmlsdGVyZWQ6IFtdLCAvLyBmaWx0ZXJlZCBzZWFyY2ggcmVzdWx0c1xuICAgIH07XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcbiAgICAvLyBjb25zb2xlLmxvZygndGhpcy5yb2xlX21hcHBpbmdfaWRzLS0nLHRoaXMucm9sZV9tYXBwaW5nX2lkcylcblxuICAgIC8vIGNvbnN0IHNlYXJjaENvbnRyb2wgPSB0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdzZWFyY2htZG8nKTtcblxuICAgIC8vIGlmIChzZWFyY2hDb250cm9sKSB7XG4gICAgLy8gICBzZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgIC8vICAgICAucGlwZShcbiAgICAvLyAgICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAvLyAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIC8vICAgICAgIHN0YXJ0V2l0aCgnJylcbiAgICAvLyAgICAgKVxuICAgIC8vICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgLy8gICAgICAgY29uc3QgdHh0ID0gcmVzPy50b1N0cmluZygpPy50cmltKCkgPz8gJyc7XG5cbiAgICAvLyAgICAgICBpZiAodHh0Py5sZW5ndGgpIHtcbiAgICAvLyAgICAgICAgIHRoaXMubWRvRmlsdGVyRW5hYmxlID0gdHJ1ZTtcbiAgICAvLyAgICAgICAgIHRoaXMubWFzdGVyRGF0YS5tZG9GaWx0ZXJlZCA9XG4gICAgLy8gICAgICAgICAgIHRoaXMubWFzdGVyRGF0YS5tZG9CYWNrdXAuZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgLy8gICAgICAgICAgICAgaXRlbS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModHh0LnRvTG93ZXJDYXNlKCkpXG4gICAgLy8gICAgICAgICAgICk7XG5cbiAgICAvLyAgICAgICAgIC8vIHNob3cgaW5pdGlhbCBwYWdlIG9mIGZpbHRlcmVkIHJlc3VsdHNcbiAgICAvLyAgICAgICAgIHRoaXMubWFzdGVyRGF0YS5tZG8gPSB0aGlzLm1hc3RlckRhdGEubWRvRmlsdGVyZWQuc2xpY2UoMCwgdGhpcy5tZG9MaXN0TG9hZENvdW50KTtcblxuICAgIC8vICAgICAgIH0gZWxzZSB7XG4gICAgLy8gICAgICAgICB0aGlzLm1kb0ZpbHRlckVuYWJsZSA9IGZhbHNlO1xuXG4gICAgLy8gICAgICAgICAvLyBzaG93IGZpcnN0IHBhZ2UgZnJvbSBiYWNrdXBcbiAgICAvLyAgICAgICAgIHRoaXMubWFzdGVyRGF0YS5tZG8gPSB0aGlzLm1hc3RlckRhdGEubWRvQmFja3VwLnNsaWNlKDAsIHRoaXMubWRvRGVmYXVsdExvYWRDb3VudCk7XG4gICAgLy8gICAgICAgICB0aGlzLm1kb0xpc3RMb2FkQ291bnQgPSB0aGlzLm1kb0RlZmF1bHRMb2FkQ291bnQ7XG4gICAgLy8gICAgICAgICB0aGlzLm1kb09mZnNldCA9IDA7XG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICB9KTtcbiAgICAvLyB9XG5cblxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMubWFzdGVyRGF0YVsnbWRvQmFja3VwJ10pXG4gICAgLy8gaWYgKCF0aGlzLm1hc3RlckRhdGFbJ21kb0JhY2t1cCddLmxlbmd0aCkge1xuICAgIC8vICAgdGhpcy5nZXRtZG9TYWZlKClcbiAgICAvLyB9XG5cbiAgfVxuXG4gIC8vIHByaXZhdGUgZ2V0bWRvU2FmZSgpOiB2b2lkIHtcbiAgLy8gICBpZiAodGhpcy5tZG9Jbml0SW5Qcm9ncmVzcyB8fCB0aGlzLmlzTG9hZGluZ01vcmVtZG9zKSB7XG4gIC8vICAgICByZXR1cm5cbiAgLy8gICB9XG4gIC8vICAgdGhpcy5tZG9Jbml0SW5Qcm9ncmVzcyA9IHRydWVcbiAgLy8gICB0aGlzLmdldG1kbygpXG4gIC8vIH1cblxuICBpbml0aWFsaXplRm9ybSgpIHtcbiAgICB0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGRpdmlzaW9uX25hbWU6IFt0aGlzLnJvbGVfbWFwcGluZ19pZHM/LndpbmdfZGl2aXNpb25fc2VjdGlvbiB8fCAnJywgW1xuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgIFZhbGlkYXRvcnMucGF0dGVybigvXltBLVphLXowLTkgXy8tXSskLylcbiAgICBdXSxcbiAgICAgIHJlcXVlc3RfbmFtZTogW3RoaXMucm9sZV9tYXBwaW5nX2lkcz8uZGVzaWduYXRpb25fbmFtZSB8fCAnJywgW1xuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgIFZhbGlkYXRvcnMucGF0dGVybigvXltBLVphLXowLTkgXy8tXSskLylcbiAgICBdXSxcbiAgICAvLyAgc2VhcmNobWRvOiBbJyddLFxuICAgIH0pO1xuICB9XG5cblxuXG4gIGNhbmNlbEZvcm0oKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKVxuICB9XG5cbiAgc2F2ZURlc2lnbmF0aW9uKCkge1xuICAgIGNvbnN0IGRpdmlzaW9uX25hbWU6IHN0cmluZyA9IHRoaXMuYXBwcm92YWxSZXF1ZXN0Rm9ybS5nZXQoJ2RpdmlzaW9uX25hbWUnKT8udmFsdWU7XG5cbiAgICAvLyBpZiAoIXNlbGVjdGVkbWRvKSB7XG4gICAgLy8gICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1BsZWFzZSBzZWxlY3QgYW4gbWRvIGxlYWRlci9hZG1pbicsICdYJywgeyBkdXJhdGlvbjogMzAwMCB9KTtcbiAgICAvLyAgIHJldHVybjtcbiAgICAvLyB9XG5cbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgYmFzZU9iaiA9IHtcbiAgICAgIHJvbGVtYXBwaW5nX2lkOiB0aGlzLnJvbGVfbWFwcGluZ19pZHM/LmlkLFxuICAgICAgZGVzaWduYXRpb25fbmFtZTogdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLnZhbHVlLnJlcXVlc3RfbmFtZSxcbiAgICAgIHdpbmdfZGl2aXNpb25fc2VjdGlvbjogdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLnZhbHVlLmRpdmlzaW9uX25hbWUsXG4gICAgfTtcblxuICAgIC8vIGlmICh0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqPy5taW5pc3RyeT8uc2JPcmdUeXBlID09PSAnc3RhdGUnICYmIHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudF9uYW1lKSB7XG4gICAgLy8gICBiYXNlT2JqWydkZXBhcnRtZW50X2lkJ10gPSB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRzO1xuICAgIC8vICAvLyBiYXNlT2JqWydkZXBhcnRtZW50X25hbWUnXSA9IHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudF9uYW1lO1xuICAgIC8vIH1cblxuICAgIC8vIGlmICh0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqPy5taW5pc3RyeT8uc2JPcmdUeXBlID09PSAnbWluaXN0cnknICYmIHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudF9uYW1lKSB7XG4gICAgLy8gICBiYXNlT2JqWydkZXBhcnRtZW50X2lkJ10gPSB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRzO1xuICAgIC8vICAvLyBiYXNlT2JqWydkZXBhcnRtZW50X25hbWUnXSA9IHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudF9uYW1lO1xuICAgIC8vIH1cblxuICAgIC8vIENyZWF0ZSBhbiBhcnJheSBvZiBvYnNlcnZhYmxlcywgb25lIHBlciBtZG9cbiAgICBjb25zdCByZXEgPSB7XG4gICAgICAuLi5iYXNlT2JqLFxuICAgICAvLyBtZG9faWQ6IHNlbGVjdGVkbWRvXG4gICAgfTtcblxuICAgIHRoaXMuc2hhcmVkU2VydmljZS5zYXZlRGVzaWduYXRpb25BcHByb3ZhbFJlcXVlc3QocmVxKVxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5sb2FkaW5nID0gZmFsc2UpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ0Rlc2lnbmF0aW9uIFJlcXVlc3Qgc2VudCBzdWNjZXNzZnVsbHknLCAnWCcsIHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1zdWNjZXNzJ11cbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgnc2F2ZWQnKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvcicsIGVycm9yKVxuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbigoZXJyb3I/LmVycm9yPy5kZXRhaWwgfHwgJ0ZhaWxlZCB0byBzZW5kIHJlcXVlc3QnKSwgJ1gnLCB7XG4gICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItZXJyb3InXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGNsb3NlRGlhbG9nKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKClcbiAgfVxuXG4gIGdldG1kbyhzZWFyY2hUZXh0Pzogc3RyaW5nLCBvZmZzZXQ/OiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyBjbGVhciBhbnkgcHJldmlvdXMgZGVidWcgaG9va3NcbiAgICBpZiAoIXNlYXJjaFRleHQgfHwgc2VhcmNoVGV4dD8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBub29wXG4gICAgfVxuXG4gICAgY29uc3QgcmVxT2Zmc2V0ID0gKHR5cGVvZiBvZmZzZXQgPT09ICdudW1iZXInKSA/IG9mZnNldCA6IHRoaXMubWRvT2Zmc2V0XG4gICAgbGV0IHJlcUxpbWl0ID0gdGhpcy5tZG9EZWZhdWx0TG9hZENvdW50XG4gICAgY29uc3QgcGFnZUluZGV4ID0gcmVxTGltaXQgPiAwID8gTWF0aC5mbG9vcihyZXFPZmZzZXQgLyByZXFMaW1pdCkgOiAwXG4gICAgLy8gaWYgd2UncmUgcmVxdWVzdGluZyBmcm9tIGZpcnN0IHBhZ2UsIGNsZWFyIHRoZSBuby1tb3JlLWRhdGEgZ3VhcmRcbiAgICBpZiAocGFnZUluZGV4ID09PSAwKSB7XG4gICAgICB0aGlzLm5vTW9yZUxlZ2FjeW1kb3MgPSBmYWxzZVxuICAgICAgcmVxTGltaXQgPSA1MFxuICAgIH1cbiAgICAvLyBjb25zdCByZXF1ZXN0Qm9keTogYW55ID0ge1xuICAgIC8vICAgZmlsdGVyQ3JpdGVyaWFNYXA6IHtcbiAgICAvLyAgICAgc3RhdHVzOiAnQWN0aXZlJ1xuICAgIC8vICAgfSxcbiAgICAvLyAgIHJlcXVlc3RlZEZpZWxkczogW10sXG4gICAgLy8gICBwYWdlTnVtYmVyOiBwYWdlSW5kZXgsXG4gICAgLy8gICBwYWdlU2l6ZTogcmVxTGltaXQsXG4gICAgLy8gfVxuXG4gICAgY29uc3QgcmVxdWVzdEJvZHk6IGFueSA9IHtcbiAgICAgIFwicmVxdWVzdFwiOiB7XG4gICAgICAgIFwiZmlsdGVyc1wiOiB7XG4gICAgICAgICAgXCJvcmdhbmlzYXRpb25zLnJvbGVzXCI6IFtcbiAgICAgICAgICAgIFwiTURPX0xFQURFUlwiLFxuICAgICAgICAgICAgXCJNRE9fQURNSU5cIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgXCJyb290T3JnSWRcIjogdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9iai5kZXBhcnRtZW50cyA/IHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHMgOiB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqLm1pbmlzdHJ5LmlkZW50aWZpZXIgXG4gICAgICAgIH0sXG4gICAgICAgIFwiZmllbGRzXCI6IFtcbiAgICAgICAgICBcImZpcnN0TmFtZVwiLFxuICAgICAgICAgIFwibGFzdE5hbWVcIixcbiAgICAgICAgICBcImlkXCIsXG4gICAgICAgICAgXCJyb290T3JnSWRcIixcbiAgICAgICAgICBcIm9yZ2FuaXNhdGlvbnNcIixcbiAgICAgICAgICBcInJvbGVzXCJcbiAgICAgICAgXSxcbiAgICAgICAgcGFnZU51bWJlcjogcGFnZUluZGV4LFxuICAgICAgICBwYWdlU2l6ZTogcmVxTGltaXQsXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzZWFyY2hUZXh0Py5sZW5ndGgpIHtcbiAgICAgIHJlcXVlc3RCb2R5WydyZXF1ZXN0J11bJ3F1ZXJ5J10gPSBzZWFyY2hUZXh0XG4gICAgICAvLyB3aGVuIHNlYXJjaGluZywgc3RhcnQgZnJvbSBmaXJzdCBwYWdlXG4gICAgICByZXF1ZXN0Qm9keS5wYWdlTnVtYmVyID0gMFxuICAgICAgLy8gYWxsb3cgbGFyZ2VyIHBhZ2UgZm9yIHNlYXJjaCBpZiBuZWVkZWRcbiAgICAgIHJlcXVlc3RCb2R5LnBhZ2VTaXplID0gcGFnZUluZGV4ID09PSAwID8gNTAgOiB0aGlzLm1kb0xpc3RMb2FkQ291bnRcbiAgICAgIC8vIHJlc2V0IGd1YXJkIHdoZW4gcGVyZm9ybWluZyBhIGZyZXNoIHNlYXJjaFxuICAgICAgdGhpcy5ub01vcmVMZWdhY3ltZG9zID0gZmFsc2VcbiAgICB9XG5cbiAgICAvLyBpbmRpY2F0ZSBsb2FkaW5nIHN0YXRlIHNvIHNjcm9sbCBoYW5kbGVycyBkb24ndCB0cmlnZ2VyIHBhcmFsbGVsIGNhbGxzXG4gICAgdGhpcy5pc0xvYWRpbmdNb3JlbWRvcyA9IHRydWVcbiAgICBjb25zb2xlLmxvZygncmVxdWVzdEJvZHknLCByZXF1ZXN0Qm9keSlcbiAgICB0aGlzLnNoYXJlZFNlcnZpY2Uuc2VhcmNoUHVibGljbWRvKHJlcXVlc3RCb2R5KS5waXBlKGZpbmFsaXplKCgpID0+IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZW1kb3MgPSBmYWxzZVxuICAgICAgdGhpcy5tZG9Jbml0SW5Qcm9ncmVzcyA9IGZhbHNlXG4gICAgfSkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGVudCA9IF8uZ2V0KHJlcywgJ2FkbWlucycsIFtdKVxuICAgICAgICAgIGNvbnNvbGUubG9nKCdjb250ZW50LS0nLCBjb250ZW50KVxuICAgICAgICAgIGNvbnN0IG1hcHBlZCA9IGNvbnRlbnQubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogaXRlbT8uaWQsXG4gICAgICAgICAgICBuYW1lOiBgJHtpdGVtPy5maXJzdF9uYW1lfSAke2l0ZW0/Lmxhc3RfbmFtZX1gIHx8ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiBpdGVtPy5zdGF0dXMgfHwgJ0FjdGl2ZScsXG4gICAgICAgICAgICByb2xlX3R5cGU6IGl0ZW0/LnJvbGVfdHlwZSxcbiAgICAgICAgICAgIGRlcGFydG1lbnRfbmFtZTogaXRlbT8uZGVwYXJ0bWVudF9uYW1lXG5cbiAgICAgICAgICB9KSlcblxuICAgICAgICAgIC8vIHRvdGFsIGNvdW50IG1heSBiZSBwcmVzZW50IGluIGRpZmZlcmVudCBrZXlzIGRlcGVuZGluZyBvbiBBUEkgdmVyc2lvbi5cbiAgICAgICAgICAvLyBQcmVmZXIgJ3Jlc3VsdC5yZXN1bHQudG90YWxjb3VudCcgKGxlZ2FjeSBsb3dlci1jYXNlKSB0aGVuIGRhdGEudG90YWxDb3VudCwgdGhlbiB0b3RhbENvdW50XG4gICAgICAgICAgY29uc3QgdG90YWwgPSBfLmdldChyZXMsICdjb3VudCcsIF8uZ2V0KHJlcywgJ2NvdW50JywgXy5nZXQocmVzLCAnY291bnQnLCAwKSkpXG4gICAgICAgICAgdGhpcy5kZWZhdWx0U2VhcmNobWRvQ291bnQgPSB0b3RhbFxuXG4gICAgICAgICAgLy8gSWYgb2Zmc2V0IGlzIHplcm8gKGZpcnN0IHBhZ2UpIHJlcGxhY2UgYmFja3VwLCBvdGhlcndpc2UgYXBwZW5kICsgZGVkdXBlXG4gICAgICAgICAgaWYgKCF0aGlzLm1hc3RlckRhdGFbJ21kb0JhY2t1cCddIHx8IHJlcU9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhWydtZG9CYWNrdXAnXSA9IG1hcHBlZFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjb21iaW5lZCA9ICh0aGlzLm1hc3RlckRhdGFbJ21kb0JhY2t1cCddIHx8IFtdKS5jb25jYXQobWFwcGVkKVxuICAgICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhWydtZG9CYWNrdXAnXSA9IF8udW5pcUJ5KGNvbWJpbmVkLCAoaXQ6IGFueSkgPT4gKGl0Py5uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIElmIHNlcnZlciByZXR1cm5lZCBubyBuZXcgaXRlbXMsIG1hcmsgYXMgbm8tbW9yZS1kYXRhIHRvIHN0b3AgZnVydGhlciBzY3JvbGwgcmVxdWVzdHNcbiAgICAgICAgICBpZiAoIW1hcHBlZCB8fCBtYXBwZWQ/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5ub01vcmVMZWdhY3ltZG9zID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIElmIHdlJ3ZlIGxvYWRlZCBhdCBsZWFzdCB0aGUgdG90YWwgY291bnQsIG1hcmsgbm8tbW9yZS1kYXRhXG4gICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdFNlYXJjaG1kb0NvdW50ICYmICh0aGlzLm1hc3RlckRhdGFbJ21kb0JhY2t1cCddIHx8IFtdKS5sZW5ndGggPj0gdGhpcy5kZWZhdWx0U2VhcmNobWRvQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMubm9Nb3JlTGVnYWN5bWRvcyA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBFbnN1cmUgdmlzaWJsZSBsaXN0IG1hdGNoZXMgdGhlIHJlcXVlc3RlZCBkaXNwbGF5IGNvdW50XG4gICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhWydtZG8nXSA9ICh0aGlzLm1hc3RlckRhdGFbJ21kb0JhY2t1cCddIHx8IFtdKS5zbGljZSgwLCB0aGlzLm1kb0xpc3RMb2FkQ291bnQpXG4gICAgICAgICAgLy8gbG9hZGluZyBmbGFnIGNsZWFyZWQgaW4gZmluYWxpemUoKVxuICAgICAgICAgIHRoaXMuY2hlY2tDdXJyZW50bWRvUHJlc2VudCgpXG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgLy8gU3RvcCBmdXJ0aGVyIGF1dG9tYXRpYyBjYWxscyBvbiByZXBlYXRlZCBlcnJvcnMgdG8gYXZvaWQgdGlnaHQgbG9vcHNcbiAgICAgICAgICAvLyBsb2FkaW5nIGZsYWcgY2xlYXJlZCBpbiBmaW5hbGl6ZSgpXG4gICAgICAgICAgdGhpcy5ub01vcmVMZWdhY3ltZG9zID0gdHJ1ZVxuICAgICAgICAgIC8vIHRoaXMubWF0U25hY2tCYXIub3BlbignVW5hYmxlIHRvIGZldGNoIG1kbyBkZXRhaWxzLCBwbGVhc2UgdHJ5IGFnYWluIGxhdGVyIScpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cbmNoZWNrQ3VycmVudG1kb1ByZXNlbnQoKSB7XG4gIGNvbnN0IHNlbGVjdGVkbWRvID0gdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnZGl2aXNpb25fbmFtZScpPy52YWx1ZTtcblxuICBpZiAoIXNlbGVjdGVkbWRvIHx8ICF0aGlzLm1hc3RlckRhdGE/Lm1kbykgcmV0dXJuO1xuXG4gIGNvbnN0IGV4aXN0cyA9IHRoaXMubWFzdGVyRGF0YS5tZG8uc29tZShcbiAgICAoaXRlbTogYW55KSA9PiBpdGVtPy5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZG1kbz8udG9Mb3dlckNhc2UoKVxuICApO1xuXG4gIGlmICghZXhpc3RzKSB7XG4gICAgY29uc3QgbmV3bWRvID0ge1xuICAgICAgbmFtZTogc2VsZWN0ZWRtZG8sXG4gICAgICBzdGF0dXM6ICdBY3RpdmUnLFxuICAgICAgaWQ6ICdjdXN0b20tJyArIERhdGUubm93KClcbiAgICB9O1xuXG4gICAgdGhpcy5tYXN0ZXJEYXRhLm1kb0JhY2t1cCA9IHRoaXMubWFzdGVyRGF0YS5tZG9CYWNrdXAgfHwgW107XG4gICAgdGhpcy5tYXN0ZXJEYXRhLm1kb0JhY2t1cC51bnNoaWZ0KG5ld21kbyk7XG4gICAgdGhpcy5tYXN0ZXJEYXRhLm1kby51bnNoaWZ0KG5ld21kbyk7XG4gIH1cbn1cbiAgb25tZG9Ecm9wZG93bkNsb3NlZCgpOiB2b2lkIHtcbiAgICAvLyBLZWVwIHRoZSBtZG8gdmFsdWUgYnV0IGNsZWFyIHRoZSBzZWFyY2ggaW5wdXRcbiAgICBjb25zdCBjdXJyZW50bWRvID0gdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnZGl2aXNpb25fbmFtZScpIS52YWx1ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYXBwcm92YWxSZXF1ZXN0Rm9ybS5nZXQoJ3NlYXJjaG1kbycpKSB7XG4gICAgICAgIHRoaXMuYXBwcm92YWxSZXF1ZXN0Rm9ybS5nZXQoJ3NlYXJjaG1kbycpIS5zZXRWYWx1ZSgnJylcbiAgICAgIH1cbiAgICAgIC8vIEVuc3VyZSB0aGUgbWRvIHZhbHVlIHJlbWFpbnMgc2VsZWN0ZWRcbiAgICAgIGlmIChjdXJyZW50bWRvKSB7XG4gICAgICAgIGNvbnN0IG1kb0NvbnRyb2wgPSB0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdkaXZpc2lvbl9uYW1lJyk7XG4gICAgICAgIGlmIChtZG9Db250cm9sKSB7XG4gICAgICAgICAgbWRvQ29udHJvbC5zZXRWYWx1ZShjdXJyZW50bWRvKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgMTAwKVxuICB9XG5cbiAgbWRvU2VhcmNoKGV2dDogYW55KSB7XG4gICAgY29uc3Qgc2VhcmNoVGV4dCA9IGV2dD8udGFyZ2V0Py52YWx1ZVxuICAgIGNvbnN0IHR4dCA9IChzZWFyY2hUZXh0IHx8ICcnKS50b1N0cmluZygpLnRyaW0oKVxuICAgIGlmICh0aGlzLmlzTG9hZGluZ01vcmVtZG9zKSByZXR1cm5cblxuICAgIHRoaXMubWRvU2VhcmNoVGV4dCA9IHR4dFxuICAgIGlmICh0eHQ/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5tZG9GaWx0ZXJFbmFibGUgPSB0cnVlXG4gICAgICB0aGlzLmlzTG9hZGluZ01vcmVtZG9zID0gdHJ1ZVxuICAgICAgdGhpcy5nZXRtZG8odHh0LCAwKVxuICAgIH0gZWxzZSBpZiAodGhpcy5tYXN0ZXJEYXRhICYmIHRoaXMubWFzdGVyRGF0YT8ubWRvQmFja3VwKSB7XG4gICAgICB0aGlzLm1hc3RlckRhdGEubWRvID0gdGhpcy5tYXN0ZXJEYXRhPy5tZG9CYWNrdXAuc2xpY2UoMCwgdGhpcy5tZG9EZWZhdWx0TG9hZENvdW50KVxuICAgICAgdGhpcy5tZG9GaWx0ZXJFbmFibGUgPSBmYWxzZVxuICAgICAgdGhpcy5jaGVja0N1cnJlbnRtZG9QcmVzZW50KClcbiAgICB9XG4gIH1cbiAgc2V0dXBTY3JvbGxMaXN0ZW5lcihvcGVuZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAob3BlbmVkKSB7XG4gICAgICBpZiAoIXRoaXMuc2Nyb2xsTGlzdGVuZXJBdHRhY2hlZCkge1xuICAgICAgICB0aGlzLnNjcm9sbExpc3RlbmVyQXR0YWNoZWQgPSB0cnVlXG5cbiAgICAgICAgdGhpcy5tZG9GaWx0ZXJFbmFibGUgPSBmYWxzZVxuICAgICAgICB0aGlzLm1kb0xpc3RMb2FkQ291bnQgPSB0aGlzLm1kb0RlZmF1bHRMb2FkQ291bnRcbiAgICAgICAgdGhpcy5tZG9PZmZzZXQgPSAwXG5cbiAgICAgICAgdGhpcy5pc0xvYWRpbmdNb3JlbWRvcyA9IHRydWVcbiAgICAgICAgdGhpcy5nZXRtZG8odW5kZWZpbmVkLCAwKVxuXG4gICAgICAgIC8vIENsZWFyIHNlYXJjaCBib3ggb25jZVxuICAgICAgICBpZiAodGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnc2VhcmNobWRvJykpIHtcbiAgICAgICAgICB0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdzZWFyY2htZG8nKSEuc2V0VmFsdWUoJycpXG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBzZWFyY2hJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWFyY2gtaW5wdXQnKSBhcyBIVE1MSW5wdXRFbGVtZW50XG4gICAgICAgICAgaWYgKHNlYXJjaElucHV0KSB7XG4gICAgICAgICAgICBzZWFyY2hJbnB1dC5mb2N1cygpXG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMDApXG5cbiAgICAgICAgLy8gQXR0YWNoIHNjcm9sbCBsaXN0ZW5lciBzYWZlbHlcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWF0LXNlbGVjdC1wYW5lbC5zZWFyY2gtcGFuZWwnKSBhcyBIVE1MRWxlbWVudCB8IG51bGxcbiAgICAgICAgICBpZiAocGFuZWwpIHtcbiAgICAgICAgICAgIC8vIGFsaWduIHBhbmVsIHdpZHRoIHRvIHRyaWdnZXJcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJFbCA9IHRoaXMubWRvUmVmICYmIHRoaXMubWRvUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcbiAgICAgICAgICAgICAgaWYgKHRyaWdnZXJFbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSB0cmlnZ2VyRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgICAgICAgICAvLyBzZXQgd2lkdGggYW5kIGxlZnQgc28gcGFuZWwgYWxpZ25zIGV4YWN0bHkgYmVsb3cgdGhlIHRyaWdnZXJcbiAgICAgICAgICAgICAgICBwYW5lbC5zdHlsZS53aWR0aCA9IGAke01hdGgucm91bmQocmVjdC53aWR0aCl9cHhgXG4gICAgICAgICAgICAgICAgLy8gbGVhdmUgbGVmdCB0byBvdmVybGF5IHBvc2l0aW9uaW5nIGJ1dCBudWRnZSBpZiBuZWNlc3NhcnlcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIGxlZnQgcmVsYXRpdmUgdG8gdmlld3BvcnQgYW5kIGFwcGx5IHRvIHBhbmVsXG4gICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmxheUxlZnQgPSByZWN0LmxlZnRcbiAgICAgICAgICAgICAgICBwYW5lbC5zdHlsZS5sZWZ0ID0gYCR7TWF0aC5yb3VuZChvdmVybGF5TGVmdCl9cHhgXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgLy8gaWdub3JlIERPTSBlcnJvcnMgaW4gU1NSIG9yIHVuZXhwZWN0ZWQgY2FzZXNcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsSGFuZGxlciA9IHRoaXMub25tZG9TZWxlY3RTY3JvbGwuYmluZCh0aGlzKVxuICAgICAgICAgICAgcGFuZWwuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc2Nyb2xsSGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9LCAxNTApXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERyb3Bkb3duIGNsb3NlZCDigJQgcmVzZXQgc2Nyb2xsIGZsYWcgc28gaXQgY2FuIHJlYXR0YWNoIG5leHQgdGltZVxuICAgICAgdGhpcy5zY3JvbGxMaXN0ZW5lckF0dGFjaGVkID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICBvbm1kb1NlbGVjdFNjcm9sbChldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IGV2ZW50Py50YXJnZXRcbiAgICBpZiAoIXRoaXMubWRvRmlsdGVyRW5hYmxlKSB7XG4gICAgICAvLyBDaGVjayBpZiB1c2VyIGhhcyBzY3JvbGxlZCB0byB0aGUgYm90dG9tICh3aXRoIGEgc21hbGwgdGhyZXNob2xkKVxuICAgICAgaWYgKGVsZW1lbnQuc2Nyb2xsVG9wICsgZWxlbWVudD8uY2xpZW50SGVpZ2h0ID49IGVsZW1lbnQ/LnNjcm9sbEhlaWdodCAtIDUpIHtcbiAgICAgICAgLy8gT25seSBsb2FkIG1vcmUgaWYgbm90IGFscmVhZHkgbG9hZGluZyBhbmQgaWYgdGhlcmUgYXJlIHBvdGVudGlhbGx5IG1vcmUgaXRlbXNcbiAgICAgICAgaWYgKCF0aGlzLmlzTG9hZGluZ01vcmVtZG9zKSB7XG4gICAgICAgICAgLy8gSWYgb3JnIHVzZXMgSUdPVCBtZG8gdGF4b25vbXksIHJlcXVlc3QgbW9yZSBmcm9tIHRoZSBBUEkgYnkgaW5jcmVhc2luZyB0aGUgbGltaXRcbiAgICAgICAgICBpZiAodGhpcy5tYXN0ZXJEYXRhPy5tZG9CYWNrdXA/Lmxlbmd0aCA+IHRoaXMubWFzdGVyRGF0YT8ubWRvPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIExvY2FsIHBhZ2luYXRpb246IGV4cGFuZCB0aGUgc2xpY2VkIGxpc3RcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZW1kb3MgPSB0cnVlXG4gICAgICAgICAgICB0aGlzLm1kb0xpc3RMb2FkQ291bnQgKz0gdGhpcy5tZG9EZWZhdWx0TG9hZENvdW50XG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGZpbHRlcmVkIGxpc3Qgd2l0aCBtb3JlIGl0ZW1zXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhLm1kbyA9IHRoaXMubWFzdGVyRGF0YT8ubWRvQmFja3VwPy5zbGljZSgwLCB0aGlzLm1kb0xpc3RMb2FkQ291bnQpXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tDdXJyZW50bWRvUHJlc2VudCgpXG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZW1kb3MgPSBmYWxzZVxuICAgICAgICAgICAgfSwgNTAwKSAvLyBTbWFsbCB0aW1lb3V0IHRvIHNpbXVsYXRlIGxvYWRpbmcgYW5kIHByZXZlbnQgbXVsdGlwbGUgdHJpZ2dlcnNcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTGVnYWN5IChzZXJ2ZXIpIHBhZ2luYXRpb246IHJlcXVlc3QgbmV4dCBwYWdlIGlmIHRvdGFsIG5vdCByZWFjaGVkXG4gICAgICAgICAgICBjb25zdCBsb2FkZWRMZWdhY3kgPSAodGhpcy5tYXN0ZXJEYXRhPy5tZG9CYWNrdXAgfHwgW10pLmxlbmd0aFxuICAgICAgICAgICAgaWYgKCF0aGlzLm5vTW9yZUxlZ2FjeW1kb3MgJiYgdGhpcy5kZWZhdWx0U2VhcmNobWRvQ291bnQgJiYgbG9hZGVkTGVnYWN5IDwgdGhpcy5kZWZhdWx0U2VhcmNobWRvQ291bnQpIHtcbiAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdNb3JlbWRvcyA9IHRydWVcbiAgICAgICAgICAgICAgdGhpcy5tZG9PZmZzZXQgPSAodGhpcy5tZG9PZmZzZXQgfHwgMCkgKyB0aGlzLm1kb0RlZmF1bHRMb2FkQ291bnRcbiAgICAgICAgICAgICAgLy8gaW5jcmVhc2UgZGlzcGxheSBjb3VudCB0byBpbmNsdWRlIG5ld2x5IGZldGNoZWQgaXRlbXNcbiAgICAgICAgICAgICAgdGhpcy5tZG9MaXN0TG9hZENvdW50ICs9IHRoaXMubWRvRGVmYXVsdExvYWRDb3VudFxuICAgICAgICAgICAgICB0aGlzLmdldG1kbyh1bmRlZmluZWQsIHRoaXMubWRvT2Zmc2V0KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBzZWFyY2htZG9Db250cm9sKCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnc2VhcmNobWRvJykgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuXG59XG4iLCI8ZGl2IGNsYXNzPVwidmlldy1jYnAtcGxhblwiPlxuICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPlNlbmQgZm9yIERlc2lnbmF0aW9uIE5hbWUgQXBwcm92YWw8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRpbmdcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gc2VuZCB0aGlzIGRlc2lnbmF0aW9uIGZvciBhZGRpbmcgaW4gaUdPVCBkZXNpZ25hdGlvbiBNYXN0ZXI/PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjbG9zZURpYWxvZygpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1jb250YWluZXJcIiBbZm9ybUdyb3VwXT1cImFwcHJvdmFsUmVxdWVzdEZvcm1cIj5cbiAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibXQtMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8cD5EZXNpZ25hdGlvbiBOYW1lIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNCBhZGRpdGlvbmFsLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwicmVxdWVzdF9uYW1lXCIgW3ZhbHVlXT1cInJvbGVfbWFwcGluZ19pZHM/LmRlc2lnbmF0aW9uX25hbWVcIiBwbGFjZWhvbGRlcj1cIkVudGVyIGEgbmFtZSBmb3IgdGhpcyByZXF1ZXN0Li4uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMjVweDsgYm9yZGVyOiAxcHggc29saWQgI2NjYzsgcGFkZGluZzogOHB4IDEycHg7IHdpZHRoOjEwMCU7Zm9udC1zaXplOiAxNHB4O2ZvbnQtZmFtaWx5OiAnTGF0byc7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgncmVxdWVzdF9uYW1lJyk/LnRvdWNoZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdyZXF1ZXN0X25hbWUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIERlc2lnbmF0aW9uIE5hbWUgaXMgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdyZXF1ZXN0X25hbWUnKT8udG91Y2hlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWxSZXF1ZXN0Rm9ybS5nZXQoJ3JlcXVlc3RfbmFtZScpPy5oYXNFcnJvcigncGF0dGVybicpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBPbmx5IGxldHRlcnMsIG51bWJlcnMsIHNwYWNlcywgdW5kZXJzY29yZSBhbmQgaHlwaGVuIGFyZSBhbGxvd2VkXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPkVudGVyIERpdmlzaW9uL1dpbmcgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNCBhZGRpdGlvbmFsLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZGl2aXNpb25fbmFtZVwiIFt2YWx1ZV09XCJyb2xlX21hcHBpbmdfaWRzPy53aW5nX2RpdmlzaW9uX3NlY3Rpb25cIiBwbGFjZWhvbGRlcj1cIkVudGVyIERpdmlzaW9uL1dpbmcuLi5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJib3JkZXItcmFkaXVzOiAyNXB4OyBib3JkZXI6IDFweCBzb2xpZCAjY2NjOyBwYWRkaW5nOiA4cHggMTJweDsgd2lkdGg6MTAwJTtmb250LXNpemU6IDE0cHg7Zm9udC1mYW1pbHk6ICdMYXRvJztcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdkaXZpc2lvbl9uYW1lJyk/LnRvdWNoZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdkaXZpc2lvbl9uYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBEaXZpc2lvbi9XaW5nIGlzIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnZGl2aXNpb25fbmFtZScpPy50b3VjaGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnZGl2aXNpb25fbmFtZScpPy5oYXNFcnJvcigncGF0dGVybicpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBPbmx5IGxldHRlcnMsIG51bWJlcnMsIHNwYWNlcywgdW5kZXJzY29yZSBhbmQgaHlwaGVuIGFyZSBhbGxvd2VkXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXQtMiBzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPlVwbG9hZCBEb2N1bWVudCAoUERGL1dvcmQvRXhjZWwvVFhUKTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS11cGxvYWQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwidXBsb2FkRG9jXCIgY2xhc3M9XCJmaWxlLXVwbG9hZC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLXVwbG9hZC1pY29uXCI+8J+Tjjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHVwbG9hZGVkRmlsZT8ubmFtZSB8fCAnQ2hvb3NlIGEgZmlsZSAoUERGLCBXb3JkLCBFeGNlbCwgVFhUKScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZmlsZS11cGxvYWQtaGludFwiPk1heCBmaWxlIHNpemU6IDI1TUI8L3NtYWxsPlxuXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInVwbG9hZERvY1wiIHR5cGU9XCJmaWxlXCIgKGNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQ9XCIucGRmLC5kb2MsLmRvY3gsLnhscywueGxzeCwudHh0XCIgY2xhc3M9XCJmaWxlLXVwbG9hZC1pbnB1dFwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInVwbG9hZEVycm9yXCIgY2xhc3M9XCJlcnJvclwiPnt7IHVwbG9hZEVycm9yIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgPC9tYXQtY2FyZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZm9vdGVyXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tYWN0aXZlXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiQ2FuY2VsXCIgKGNsaWNrKT1cImNhbmNlbEZvcm0oKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJhcHByb3ZhbFJlcXVlc3RGb3JtPy5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJhcHByb3ZhbFJlcXVlc3RGb3JtPy5pbnZhbGlkID8gJ2J0bi1kaXNhYmxlJzonYnRuLWFjdGl2ZSdcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZURlc2lnbmF0aW9uKClcIiA+PG1hdC1pY29uPnNlbmQ8L21hdC1pY29uPiBTZW5kIFJlcXVlc3Q8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJvdmVybGF5LWxvYWRlclwiICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjUwXCI+PC9tYXQtc3Bpbm5lcj5cbjwvZGl2PiJdfQ==
|
|
399
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduYXRpb24tYXBwcm92YWwtcmVxdWVzdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi9jYnAtYWkvc3JjL2xpYi9jb21wb25lbnRzL2Rlc2lnbmF0aW9uLWFwcHJvdmFsLXJlcXVlc3QtZm9ybS9kZXNpZ25hdGlvbi1hcHByb3ZhbC1yZXF1ZXN0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL2NvbXBvbmVudHMvZGVzaWduYXRpb24tYXBwcm92YWwtcmVxdWVzdC1mb3JtL2Rlc2lnbmF0aW9uLWFwcHJvdmFsLXJlcXVlc3QtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBcUMsVUFBVSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUYsT0FBTyxFQUFrRCxRQUFRLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQTs7Ozs7Ozs7Ozs7QUFRM0IsTUFBTSxPQUFPLHVDQUF1QztJQWtCbEQsWUFBbUIsU0FBZ0UsRUFDakQsSUFBUyxFQUNqQyxFQUFlLEVBQ2YsS0FBd0IsRUFDeEIsYUFBNEIsRUFDNUIsUUFBcUI7UUFMWixjQUFTLEdBQVQsU0FBUyxDQUF1RDtRQUNqRCxTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ2pDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtR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QXdHTTs7NEZEM0ZPLHVDQUF1QztrQkFMbkQsU0FBUzsrQkFDRSx1Q0FBdUM7OzBCQXVCOUMsTUFBTTsyQkFBQyxlQUFlOzRKQWZlLE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1BcnJheSwgVmFsaWRhdG9ycywgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaW5hbGl6ZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyBmb3JrSm9pbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9tb2R1bGVzL3NoYXJlZC9zZXJ2aWNlcy9zaGFyZWQuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZGVzaWduYXRpb24tYXBwcm92YWwtcmVxdWVzdC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rlc2lnbmF0aW9uLWFwcHJvdmFsLXJlcXVlc3QtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rlc2lnbmF0aW9uLWFwcHJvdmFsLXJlcXVlc3QtZm9ybS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERlc2lnbmF0aW9uQXBwcm92YWxSZXF1ZXN0Rm9ybUNvbXBvbmVudCB7XG4gIGFwcHJvdmFsUmVxdWVzdEZvcm06IEZvcm1Hcm91cDtcbiAgY2JwUGxhbkZpbmFsT2JqOiBhbnlcbiAgbG9hZGluZyA9IGZhbHNlXG4gIEBWaWV3Q2hpbGQoJ21kbycsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBtZG9SZWY/OiBFbGVtZW50UmVmXG4gIG1kb0ZpbHRlckVuYWJsZSA9IGZhbHNlXG4gIGlzTG9hZGluZ01vcmVtZG9zID0gZmFsc2U7XG4gIG1kb09mZnNldCA9IDBcbiAgb2Rjc21kb0NvdW50ID0gMFxuICBkZWZhdWx0U2VhcmNobWRvQ291bnQgPSAwXG4gIG1kb0xpc3RMb2FkQ291bnQgPSA1MFxuICBtZG9EZWZhdWx0TG9hZENvdW50ID0gNTBcbiAgbm9Nb3JlTGVnYWN5bWRvcyA9IGZhbHNlXG4gIG1kb1NlYXJjaFRleHQgPSAnJ1xuICBtZG9Jbml0SW5Qcm9ncmVzcyA9IGZhbHNlXG4gIHNjcm9sbExpc3RlbmVyQXR0YWNoZWQgPSBmYWxzZVxuICBtYXN0ZXJEYXRhOiBhbnkgPSB7fVxuICByb2xlX21hcHBpbmdfaWRzOmFueVxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGVzaWduYXRpb25BcHByb3ZhbFJlcXVlc3RGb3JtQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHNoYXJlZFNlcnZpY2U6IFNoYXJlZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIpIHtcbiAgICAgIHRoaXMucm9sZV9tYXBwaW5nX2lkcyA9IGRhdGFcbiAgICB0aGlzLm1hc3RlckRhdGEgPSB7XG4gICAgICBtZG9CYWNrdXA6IFtdLFxuICAgICAgbWRvRmlsdGVyZWQ6IFtdLCAvLyBmaWx0ZXJlZCBzZWFyY2ggcmVzdWx0c1xuICAgIH07XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcbiAgICAvLyBjb25zb2xlLmxvZygndGhpcy5yb2xlX21hcHBpbmdfaWRzLS0nLHRoaXMucm9sZV9tYXBwaW5nX2lkcylcblxuICAgIC8vIGNvbnN0IHNlYXJjaENvbnRyb2wgPSB0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdzZWFyY2htZG8nKTtcblxuICAgIC8vIGlmIChzZWFyY2hDb250cm9sKSB7XG4gICAgLy8gICBzZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgIC8vICAgICAucGlwZShcbiAgICAvLyAgICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAvLyAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIC8vICAgICAgIHN0YXJ0V2l0aCgnJylcbiAgICAvLyAgICAgKVxuICAgIC8vICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgLy8gICAgICAgY29uc3QgdHh0ID0gcmVzPy50b1N0cmluZygpPy50cmltKCkgPz8gJyc7XG5cbiAgICAvLyAgICAgICBpZiAodHh0Py5sZW5ndGgpIHtcbiAgICAvLyAgICAgICAgIHRoaXMubWRvRmlsdGVyRW5hYmxlID0gdHJ1ZTtcbiAgICAvLyAgICAgICAgIHRoaXMubWFzdGVyRGF0YS5tZG9GaWx0ZXJlZCA9XG4gICAgLy8gICAgICAgICAgIHRoaXMubWFzdGVyRGF0YS5tZG9CYWNrdXAuZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgLy8gICAgICAgICAgICAgaXRlbS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModHh0LnRvTG93ZXJDYXNlKCkpXG4gICAgLy8gICAgICAgICAgICk7XG5cbiAgICAvLyAgICAgICAgIC8vIHNob3cgaW5pdGlhbCBwYWdlIG9mIGZpbHRlcmVkIHJlc3VsdHNcbiAgICAvLyAgICAgICAgIHRoaXMubWFzdGVyRGF0YS5tZG8gPSB0aGlzLm1hc3RlckRhdGEubWRvRmlsdGVyZWQuc2xpY2UoMCwgdGhpcy5tZG9MaXN0TG9hZENvdW50KTtcblxuICAgIC8vICAgICAgIH0gZWxzZSB7XG4gICAgLy8gICAgICAgICB0aGlzLm1kb0ZpbHRlckVuYWJsZSA9IGZhbHNlO1xuXG4gICAgLy8gICAgICAgICAvLyBzaG93IGZpcnN0IHBhZ2UgZnJvbSBiYWNrdXBcbiAgICAvLyAgICAgICAgIHRoaXMubWFzdGVyRGF0YS5tZG8gPSB0aGlzLm1hc3RlckRhdGEubWRvQmFja3VwLnNsaWNlKDAsIHRoaXMubWRvRGVmYXVsdExvYWRDb3VudCk7XG4gICAgLy8gICAgICAgICB0aGlzLm1kb0xpc3RMb2FkQ291bnQgPSB0aGlzLm1kb0RlZmF1bHRMb2FkQ291bnQ7XG4gICAgLy8gICAgICAgICB0aGlzLm1kb09mZnNldCA9IDA7XG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICB9KTtcbiAgICAvLyB9XG5cblxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMubWFzdGVyRGF0YVsnbWRvQmFja3VwJ10pXG4gICAgLy8gaWYgKCF0aGlzLm1hc3RlckRhdGFbJ21kb0JhY2t1cCddLmxlbmd0aCkge1xuICAgIC8vICAgdGhpcy5nZXRtZG9TYWZlKClcbiAgICAvLyB9XG5cbiAgfVxuXG4gIC8vIHByaXZhdGUgZ2V0bWRvU2FmZSgpOiB2b2lkIHtcbiAgLy8gICBpZiAodGhpcy5tZG9Jbml0SW5Qcm9ncmVzcyB8fCB0aGlzLmlzTG9hZGluZ01vcmVtZG9zKSB7XG4gIC8vICAgICByZXR1cm5cbiAgLy8gICB9XG4gIC8vICAgdGhpcy5tZG9Jbml0SW5Qcm9ncmVzcyA9IHRydWVcbiAgLy8gICB0aGlzLmdldG1kbygpXG4gIC8vIH1cblxuICBpbml0aWFsaXplRm9ybSgpIHtcbiAgICB0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGRpdmlzaW9uX25hbWU6IFt0aGlzLnJvbGVfbWFwcGluZ19pZHM/LndpbmdfZGl2aXNpb25fc2VjdGlvbiB8fCAnJywgW1xuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgIFZhbGlkYXRvcnMucGF0dGVybigvXltBLVphLXowLTkgLCgpLV0rJC8pXG4gICAgXV0sXG4gICAgICByZXF1ZXN0X25hbWU6IFt0aGlzLnJvbGVfbWFwcGluZ19pZHM/LmRlc2lnbmF0aW9uX25hbWUgfHwgJycsIFtcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oL15bQS1aYS16MC05IC8tXSskLylcbiAgICBdXSxcbiAgICAvLyAgc2VhcmNobWRvOiBbJyddLFxuICAgIH0pO1xuICB9XG5cblxuXG4gIGNhbmNlbEZvcm0oKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKVxuICB9XG5cbiAgc2F2ZURlc2lnbmF0aW9uKCkge1xuICAgIGNvbnN0IGRpdmlzaW9uX25hbWU6IHN0cmluZyA9IHRoaXMuYXBwcm92YWxSZXF1ZXN0Rm9ybS5nZXQoJ2RpdmlzaW9uX25hbWUnKT8udmFsdWU7XG5cbiAgICAvLyBpZiAoIXNlbGVjdGVkbWRvKSB7XG4gICAgLy8gICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1BsZWFzZSBzZWxlY3QgYW4gbWRvIGxlYWRlci9hZG1pbicsICdYJywgeyBkdXJhdGlvbjogMzAwMCB9KTtcbiAgICAvLyAgIHJldHVybjtcbiAgICAvLyB9XG5cbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgYmFzZU9iaiA9IHtcbiAgICAgIHJvbGVtYXBwaW5nX2lkOiB0aGlzLnJvbGVfbWFwcGluZ19pZHM/LmlkLFxuICAgICAgZGVzaWduYXRpb25fbmFtZTogdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLnZhbHVlLnJlcXVlc3RfbmFtZSxcbiAgICAgIHdpbmdfZGl2aXNpb25fc2VjdGlvbjogdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLnZhbHVlLmRpdmlzaW9uX25hbWUsXG4gICAgfTtcblxuICAgIC8vIGlmICh0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqPy5taW5pc3RyeT8uc2JPcmdUeXBlID09PSAnc3RhdGUnICYmIHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudF9uYW1lKSB7XG4gICAgLy8gICBiYXNlT2JqWydkZXBhcnRtZW50X2lkJ10gPSB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRzO1xuICAgIC8vICAvLyBiYXNlT2JqWydkZXBhcnRtZW50X25hbWUnXSA9IHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudF9uYW1lO1xuICAgIC8vIH1cblxuICAgIC8vIGlmICh0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqPy5taW5pc3RyeT8uc2JPcmdUeXBlID09PSAnbWluaXN0cnknICYmIHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudF9uYW1lKSB7XG4gICAgLy8gICBiYXNlT2JqWydkZXBhcnRtZW50X2lkJ10gPSB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRzO1xuICAgIC8vICAvLyBiYXNlT2JqWydkZXBhcnRtZW50X25hbWUnXSA9IHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudF9uYW1lO1xuICAgIC8vIH1cblxuICAgIC8vIENyZWF0ZSBhbiBhcnJheSBvZiBvYnNlcnZhYmxlcywgb25lIHBlciBtZG9cbiAgICBjb25zdCByZXEgPSB7XG4gICAgICAuLi5iYXNlT2JqLFxuICAgICAvLyBtZG9faWQ6IHNlbGVjdGVkbWRvXG4gICAgfTtcblxuICAgIHRoaXMuc2hhcmVkU2VydmljZS5zYXZlRGVzaWduYXRpb25BcHByb3ZhbFJlcXVlc3QocmVxKVxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5sb2FkaW5nID0gZmFsc2UpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ0Rlc2lnbmF0aW9uIFJlcXVlc3Qgc2VudCBzdWNjZXNzZnVsbHknLCAnWCcsIHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1zdWNjZXNzJ11cbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgnc2F2ZWQnKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvcicsIGVycm9yKVxuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbigoZXJyb3I/LmVycm9yPy5kZXRhaWwgfHwgJ0ZhaWxlZCB0byBzZW5kIHJlcXVlc3QnKSwgJ1gnLCB7XG4gICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItZXJyb3InXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGNsb3NlRGlhbG9nKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKClcbiAgfVxuXG4gIGdldG1kbyhzZWFyY2hUZXh0Pzogc3RyaW5nLCBvZmZzZXQ/OiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyBjbGVhciBhbnkgcHJldmlvdXMgZGVidWcgaG9va3NcbiAgICBpZiAoIXNlYXJjaFRleHQgfHwgc2VhcmNoVGV4dD8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBub29wXG4gICAgfVxuXG4gICAgY29uc3QgcmVxT2Zmc2V0ID0gKHR5cGVvZiBvZmZzZXQgPT09ICdudW1iZXInKSA/IG9mZnNldCA6IHRoaXMubWRvT2Zmc2V0XG4gICAgbGV0IHJlcUxpbWl0ID0gdGhpcy5tZG9EZWZhdWx0TG9hZENvdW50XG4gICAgY29uc3QgcGFnZUluZGV4ID0gcmVxTGltaXQgPiAwID8gTWF0aC5mbG9vcihyZXFPZmZzZXQgLyByZXFMaW1pdCkgOiAwXG4gICAgLy8gaWYgd2UncmUgcmVxdWVzdGluZyBmcm9tIGZpcnN0IHBhZ2UsIGNsZWFyIHRoZSBuby1tb3JlLWRhdGEgZ3VhcmRcbiAgICBpZiAocGFnZUluZGV4ID09PSAwKSB7XG4gICAgICB0aGlzLm5vTW9yZUxlZ2FjeW1kb3MgPSBmYWxzZVxuICAgICAgcmVxTGltaXQgPSA1MFxuICAgIH1cbiAgICAvLyBjb25zdCByZXF1ZXN0Qm9keTogYW55ID0ge1xuICAgIC8vICAgZmlsdGVyQ3JpdGVyaWFNYXA6IHtcbiAgICAvLyAgICAgc3RhdHVzOiAnQWN0aXZlJ1xuICAgIC8vICAgfSxcbiAgICAvLyAgIHJlcXVlc3RlZEZpZWxkczogW10sXG4gICAgLy8gICBwYWdlTnVtYmVyOiBwYWdlSW5kZXgsXG4gICAgLy8gICBwYWdlU2l6ZTogcmVxTGltaXQsXG4gICAgLy8gfVxuXG4gICAgY29uc3QgcmVxdWVzdEJvZHk6IGFueSA9IHtcbiAgICAgIFwicmVxdWVzdFwiOiB7XG4gICAgICAgIFwiZmlsdGVyc1wiOiB7XG4gICAgICAgICAgXCJvcmdhbmlzYXRpb25zLnJvbGVzXCI6IFtcbiAgICAgICAgICAgIFwiTURPX0xFQURFUlwiLFxuICAgICAgICAgICAgXCJNRE9fQURNSU5cIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgXCJyb290T3JnSWRcIjogdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9iai5kZXBhcnRtZW50cyA/IHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHMgOiB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqLm1pbmlzdHJ5LmlkZW50aWZpZXIgXG4gICAgICAgIH0sXG4gICAgICAgIFwiZmllbGRzXCI6IFtcbiAgICAgICAgICBcImZpcnN0TmFtZVwiLFxuICAgICAgICAgIFwibGFzdE5hbWVcIixcbiAgICAgICAgICBcImlkXCIsXG4gICAgICAgICAgXCJyb290T3JnSWRcIixcbiAgICAgICAgICBcIm9yZ2FuaXNhdGlvbnNcIixcbiAgICAgICAgICBcInJvbGVzXCJcbiAgICAgICAgXSxcbiAgICAgICAgcGFnZU51bWJlcjogcGFnZUluZGV4LFxuICAgICAgICBwYWdlU2l6ZTogcmVxTGltaXQsXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzZWFyY2hUZXh0Py5sZW5ndGgpIHtcbiAgICAgIHJlcXVlc3RCb2R5WydyZXF1ZXN0J11bJ3F1ZXJ5J10gPSBzZWFyY2hUZXh0XG4gICAgICAvLyB3aGVuIHNlYXJjaGluZywgc3RhcnQgZnJvbSBmaXJzdCBwYWdlXG4gICAgICByZXF1ZXN0Qm9keS5wYWdlTnVtYmVyID0gMFxuICAgICAgLy8gYWxsb3cgbGFyZ2VyIHBhZ2UgZm9yIHNlYXJjaCBpZiBuZWVkZWRcbiAgICAgIHJlcXVlc3RCb2R5LnBhZ2VTaXplID0gcGFnZUluZGV4ID09PSAwID8gNTAgOiB0aGlzLm1kb0xpc3RMb2FkQ291bnRcbiAgICAgIC8vIHJlc2V0IGd1YXJkIHdoZW4gcGVyZm9ybWluZyBhIGZyZXNoIHNlYXJjaFxuICAgICAgdGhpcy5ub01vcmVMZWdhY3ltZG9zID0gZmFsc2VcbiAgICB9XG5cbiAgICAvLyBpbmRpY2F0ZSBsb2FkaW5nIHN0YXRlIHNvIHNjcm9sbCBoYW5kbGVycyBkb24ndCB0cmlnZ2VyIHBhcmFsbGVsIGNhbGxzXG4gICAgdGhpcy5pc0xvYWRpbmdNb3JlbWRvcyA9IHRydWVcbiAgICBjb25zb2xlLmxvZygncmVxdWVzdEJvZHknLCByZXF1ZXN0Qm9keSlcbiAgICB0aGlzLnNoYXJlZFNlcnZpY2Uuc2VhcmNoUHVibGljbWRvKHJlcXVlc3RCb2R5KS5waXBlKGZpbmFsaXplKCgpID0+IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZW1kb3MgPSBmYWxzZVxuICAgICAgdGhpcy5tZG9Jbml0SW5Qcm9ncmVzcyA9IGZhbHNlXG4gICAgfSkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGVudCA9IF8uZ2V0KHJlcywgJ2FkbWlucycsIFtdKVxuICAgICAgICAgIGNvbnNvbGUubG9nKCdjb250ZW50LS0nLCBjb250ZW50KVxuICAgICAgICAgIGNvbnN0IG1hcHBlZCA9IGNvbnRlbnQubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogaXRlbT8uaWQsXG4gICAgICAgICAgICBuYW1lOiBgJHtpdGVtPy5maXJzdF9uYW1lfSAke2l0ZW0/Lmxhc3RfbmFtZX1gIHx8ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiBpdGVtPy5zdGF0dXMgfHwgJ0FjdGl2ZScsXG4gICAgICAgICAgICByb2xlX3R5cGU6IGl0ZW0/LnJvbGVfdHlwZSxcbiAgICAgICAgICAgIGRlcGFydG1lbnRfbmFtZTogaXRlbT8uZGVwYXJ0bWVudF9uYW1lXG5cbiAgICAgICAgICB9KSlcblxuICAgICAgICAgIC8vIHRvdGFsIGNvdW50IG1heSBiZSBwcmVzZW50IGluIGRpZmZlcmVudCBrZXlzIGRlcGVuZGluZyBvbiBBUEkgdmVyc2lvbi5cbiAgICAgICAgICAvLyBQcmVmZXIgJ3Jlc3VsdC5yZXN1bHQudG90YWxjb3VudCcgKGxlZ2FjeSBsb3dlci1jYXNlKSB0aGVuIGRhdGEudG90YWxDb3VudCwgdGhlbiB0b3RhbENvdW50XG4gICAgICAgICAgY29uc3QgdG90YWwgPSBfLmdldChyZXMsICdjb3VudCcsIF8uZ2V0KHJlcywgJ2NvdW50JywgXy5nZXQocmVzLCAnY291bnQnLCAwKSkpXG4gICAgICAgICAgdGhpcy5kZWZhdWx0U2VhcmNobWRvQ291bnQgPSB0b3RhbFxuXG4gICAgICAgICAgLy8gSWYgb2Zmc2V0IGlzIHplcm8gKGZpcnN0IHBhZ2UpIHJlcGxhY2UgYmFja3VwLCBvdGhlcndpc2UgYXBwZW5kICsgZGVkdXBlXG4gICAgICAgICAgaWYgKCF0aGlzLm1hc3RlckRhdGFbJ21kb0JhY2t1cCddIHx8IHJlcU9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhWydtZG9CYWNrdXAnXSA9IG1hcHBlZFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjb21iaW5lZCA9ICh0aGlzLm1hc3RlckRhdGFbJ21kb0JhY2t1cCddIHx8IFtdKS5jb25jYXQobWFwcGVkKVxuICAgICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhWydtZG9CYWNrdXAnXSA9IF8udW5pcUJ5KGNvbWJpbmVkLCAoaXQ6IGFueSkgPT4gKGl0Py5uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIElmIHNlcnZlciByZXR1cm5lZCBubyBuZXcgaXRlbXMsIG1hcmsgYXMgbm8tbW9yZS1kYXRhIHRvIHN0b3AgZnVydGhlciBzY3JvbGwgcmVxdWVzdHNcbiAgICAgICAgICBpZiAoIW1hcHBlZCB8fCBtYXBwZWQ/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5ub01vcmVMZWdhY3ltZG9zID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIElmIHdlJ3ZlIGxvYWRlZCBhdCBsZWFzdCB0aGUgdG90YWwgY291bnQsIG1hcmsgbm8tbW9yZS1kYXRhXG4gICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdFNlYXJjaG1kb0NvdW50ICYmICh0aGlzLm1hc3RlckRhdGFbJ21kb0JhY2t1cCddIHx8IFtdKS5sZW5ndGggPj0gdGhpcy5kZWZhdWx0U2VhcmNobWRvQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMubm9Nb3JlTGVnYWN5bWRvcyA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBFbnN1cmUgdmlzaWJsZSBsaXN0IG1hdGNoZXMgdGhlIHJlcXVlc3RlZCBkaXNwbGF5IGNvdW50XG4gICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhWydtZG8nXSA9ICh0aGlzLm1hc3RlckRhdGFbJ21kb0JhY2t1cCddIHx8IFtdKS5zbGljZSgwLCB0aGlzLm1kb0xpc3RMb2FkQ291bnQpXG4gICAgICAgICAgLy8gbG9hZGluZyBmbGFnIGNsZWFyZWQgaW4gZmluYWxpemUoKVxuICAgICAgICAgIHRoaXMuY2hlY2tDdXJyZW50bWRvUHJlc2VudCgpXG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgLy8gU3RvcCBmdXJ0aGVyIGF1dG9tYXRpYyBjYWxscyBvbiByZXBlYXRlZCBlcnJvcnMgdG8gYXZvaWQgdGlnaHQgbG9vcHNcbiAgICAgICAgICAvLyBsb2FkaW5nIGZsYWcgY2xlYXJlZCBpbiBmaW5hbGl6ZSgpXG4gICAgICAgICAgdGhpcy5ub01vcmVMZWdhY3ltZG9zID0gdHJ1ZVxuICAgICAgICAgIC8vIHRoaXMubWF0U25hY2tCYXIub3BlbignVW5hYmxlIHRvIGZldGNoIG1kbyBkZXRhaWxzLCBwbGVhc2UgdHJ5IGFnYWluIGxhdGVyIScpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cbmNoZWNrQ3VycmVudG1kb1ByZXNlbnQoKSB7XG4gIGNvbnN0IHNlbGVjdGVkbWRvID0gdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnZGl2aXNpb25fbmFtZScpPy52YWx1ZTtcblxuICBpZiAoIXNlbGVjdGVkbWRvIHx8ICF0aGlzLm1hc3RlckRhdGE/Lm1kbykgcmV0dXJuO1xuXG4gIGNvbnN0IGV4aXN0cyA9IHRoaXMubWFzdGVyRGF0YS5tZG8uc29tZShcbiAgICAoaXRlbTogYW55KSA9PiBpdGVtPy5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZG1kbz8udG9Mb3dlckNhc2UoKVxuICApO1xuXG4gIGlmICghZXhpc3RzKSB7XG4gICAgY29uc3QgbmV3bWRvID0ge1xuICAgICAgbmFtZTogc2VsZWN0ZWRtZG8sXG4gICAgICBzdGF0dXM6ICdBY3RpdmUnLFxuICAgICAgaWQ6ICdjdXN0b20tJyArIERhdGUubm93KClcbiAgICB9O1xuXG4gICAgdGhpcy5tYXN0ZXJEYXRhLm1kb0JhY2t1cCA9IHRoaXMubWFzdGVyRGF0YS5tZG9CYWNrdXAgfHwgW107XG4gICAgdGhpcy5tYXN0ZXJEYXRhLm1kb0JhY2t1cC51bnNoaWZ0KG5ld21kbyk7XG4gICAgdGhpcy5tYXN0ZXJEYXRhLm1kby51bnNoaWZ0KG5ld21kbyk7XG4gIH1cbn1cbiAgb25tZG9Ecm9wZG93bkNsb3NlZCgpOiB2b2lkIHtcbiAgICAvLyBLZWVwIHRoZSBtZG8gdmFsdWUgYnV0IGNsZWFyIHRoZSBzZWFyY2ggaW5wdXRcbiAgICBjb25zdCBjdXJyZW50bWRvID0gdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnZGl2aXNpb25fbmFtZScpIS52YWx1ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYXBwcm92YWxSZXF1ZXN0Rm9ybS5nZXQoJ3NlYXJjaG1kbycpKSB7XG4gICAgICAgIHRoaXMuYXBwcm92YWxSZXF1ZXN0Rm9ybS5nZXQoJ3NlYXJjaG1kbycpIS5zZXRWYWx1ZSgnJylcbiAgICAgIH1cbiAgICAgIC8vIEVuc3VyZSB0aGUgbWRvIHZhbHVlIHJlbWFpbnMgc2VsZWN0ZWRcbiAgICAgIGlmIChjdXJyZW50bWRvKSB7XG4gICAgICAgIGNvbnN0IG1kb0NvbnRyb2wgPSB0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdkaXZpc2lvbl9uYW1lJyk7XG4gICAgICAgIGlmIChtZG9Db250cm9sKSB7XG4gICAgICAgICAgbWRvQ29udHJvbC5zZXRWYWx1ZShjdXJyZW50bWRvKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgMTAwKVxuICB9XG5cbiAgbWRvU2VhcmNoKGV2dDogYW55KSB7XG4gICAgY29uc3Qgc2VhcmNoVGV4dCA9IGV2dD8udGFyZ2V0Py52YWx1ZVxuICAgIGNvbnN0IHR4dCA9IChzZWFyY2hUZXh0IHx8ICcnKS50b1N0cmluZygpLnRyaW0oKVxuICAgIGlmICh0aGlzLmlzTG9hZGluZ01vcmVtZG9zKSByZXR1cm5cblxuICAgIHRoaXMubWRvU2VhcmNoVGV4dCA9IHR4dFxuICAgIGlmICh0eHQ/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5tZG9GaWx0ZXJFbmFibGUgPSB0cnVlXG4gICAgICB0aGlzLmlzTG9hZGluZ01vcmVtZG9zID0gdHJ1ZVxuICAgICAgdGhpcy5nZXRtZG8odHh0LCAwKVxuICAgIH0gZWxzZSBpZiAodGhpcy5tYXN0ZXJEYXRhICYmIHRoaXMubWFzdGVyRGF0YT8ubWRvQmFja3VwKSB7XG4gICAgICB0aGlzLm1hc3RlckRhdGEubWRvID0gdGhpcy5tYXN0ZXJEYXRhPy5tZG9CYWNrdXAuc2xpY2UoMCwgdGhpcy5tZG9EZWZhdWx0TG9hZENvdW50KVxuICAgICAgdGhpcy5tZG9GaWx0ZXJFbmFibGUgPSBmYWxzZVxuICAgICAgdGhpcy5jaGVja0N1cnJlbnRtZG9QcmVzZW50KClcbiAgICB9XG4gIH1cbiAgc2V0dXBTY3JvbGxMaXN0ZW5lcihvcGVuZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAob3BlbmVkKSB7XG4gICAgICBpZiAoIXRoaXMuc2Nyb2xsTGlzdGVuZXJBdHRhY2hlZCkge1xuICAgICAgICB0aGlzLnNjcm9sbExpc3RlbmVyQXR0YWNoZWQgPSB0cnVlXG5cbiAgICAgICAgdGhpcy5tZG9GaWx0ZXJFbmFibGUgPSBmYWxzZVxuICAgICAgICB0aGlzLm1kb0xpc3RMb2FkQ291bnQgPSB0aGlzLm1kb0RlZmF1bHRMb2FkQ291bnRcbiAgICAgICAgdGhpcy5tZG9PZmZzZXQgPSAwXG5cbiAgICAgICAgdGhpcy5pc0xvYWRpbmdNb3JlbWRvcyA9IHRydWVcbiAgICAgICAgdGhpcy5nZXRtZG8odW5kZWZpbmVkLCAwKVxuXG4gICAgICAgIC8vIENsZWFyIHNlYXJjaCBib3ggb25jZVxuICAgICAgICBpZiAodGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnc2VhcmNobWRvJykpIHtcbiAgICAgICAgICB0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdzZWFyY2htZG8nKSEuc2V0VmFsdWUoJycpXG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBzZWFyY2hJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWFyY2gtaW5wdXQnKSBhcyBIVE1MSW5wdXRFbGVtZW50XG4gICAgICAgICAgaWYgKHNlYXJjaElucHV0KSB7XG4gICAgICAgICAgICBzZWFyY2hJbnB1dC5mb2N1cygpXG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMDApXG5cbiAgICAgICAgLy8gQXR0YWNoIHNjcm9sbCBsaXN0ZW5lciBzYWZlbHlcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWF0LXNlbGVjdC1wYW5lbC5zZWFyY2gtcGFuZWwnKSBhcyBIVE1MRWxlbWVudCB8IG51bGxcbiAgICAgICAgICBpZiAocGFuZWwpIHtcbiAgICAgICAgICAgIC8vIGFsaWduIHBhbmVsIHdpZHRoIHRvIHRyaWdnZXJcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJFbCA9IHRoaXMubWRvUmVmICYmIHRoaXMubWRvUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcbiAgICAgICAgICAgICAgaWYgKHRyaWdnZXJFbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSB0cmlnZ2VyRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgICAgICAgICAvLyBzZXQgd2lkdGggYW5kIGxlZnQgc28gcGFuZWwgYWxpZ25zIGV4YWN0bHkgYmVsb3cgdGhlIHRyaWdnZXJcbiAgICAgICAgICAgICAgICBwYW5lbC5zdHlsZS53aWR0aCA9IGAke01hdGgucm91bmQocmVjdC53aWR0aCl9cHhgXG4gICAgICAgICAgICAgICAgLy8gbGVhdmUgbGVmdCB0byBvdmVybGF5IHBvc2l0aW9uaW5nIGJ1dCBudWRnZSBpZiBuZWNlc3NhcnlcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIGxlZnQgcmVsYXRpdmUgdG8gdmlld3BvcnQgYW5kIGFwcGx5IHRvIHBhbmVsXG4gICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmxheUxlZnQgPSByZWN0LmxlZnRcbiAgICAgICAgICAgICAgICBwYW5lbC5zdHlsZS5sZWZ0ID0gYCR7TWF0aC5yb3VuZChvdmVybGF5TGVmdCl9cHhgXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgLy8gaWdub3JlIERPTSBlcnJvcnMgaW4gU1NSIG9yIHVuZXhwZWN0ZWQgY2FzZXNcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsSGFuZGxlciA9IHRoaXMub25tZG9TZWxlY3RTY3JvbGwuYmluZCh0aGlzKVxuICAgICAgICAgICAgcGFuZWwuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc2Nyb2xsSGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9LCAxNTApXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERyb3Bkb3duIGNsb3NlZCDigJQgcmVzZXQgc2Nyb2xsIGZsYWcgc28gaXQgY2FuIHJlYXR0YWNoIG5leHQgdGltZVxuICAgICAgdGhpcy5zY3JvbGxMaXN0ZW5lckF0dGFjaGVkID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICBvbm1kb1NlbGVjdFNjcm9sbChldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IGV2ZW50Py50YXJnZXRcbiAgICBpZiAoIXRoaXMubWRvRmlsdGVyRW5hYmxlKSB7XG4gICAgICAvLyBDaGVjayBpZiB1c2VyIGhhcyBzY3JvbGxlZCB0byB0aGUgYm90dG9tICh3aXRoIGEgc21hbGwgdGhyZXNob2xkKVxuICAgICAgaWYgKGVsZW1lbnQuc2Nyb2xsVG9wICsgZWxlbWVudD8uY2xpZW50SGVpZ2h0ID49IGVsZW1lbnQ/LnNjcm9sbEhlaWdodCAtIDUpIHtcbiAgICAgICAgLy8gT25seSBsb2FkIG1vcmUgaWYgbm90IGFscmVhZHkgbG9hZGluZyBhbmQgaWYgdGhlcmUgYXJlIHBvdGVudGlhbGx5IG1vcmUgaXRlbXNcbiAgICAgICAgaWYgKCF0aGlzLmlzTG9hZGluZ01vcmVtZG9zKSB7XG4gICAgICAgICAgLy8gSWYgb3JnIHVzZXMgSUdPVCBtZG8gdGF4b25vbXksIHJlcXVlc3QgbW9yZSBmcm9tIHRoZSBBUEkgYnkgaW5jcmVhc2luZyB0aGUgbGltaXRcbiAgICAgICAgICBpZiAodGhpcy5tYXN0ZXJEYXRhPy5tZG9CYWNrdXA/Lmxlbmd0aCA+IHRoaXMubWFzdGVyRGF0YT8ubWRvPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIExvY2FsIHBhZ2luYXRpb246IGV4cGFuZCB0aGUgc2xpY2VkIGxpc3RcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZW1kb3MgPSB0cnVlXG4gICAgICAgICAgICB0aGlzLm1kb0xpc3RMb2FkQ291bnQgKz0gdGhpcy5tZG9EZWZhdWx0TG9hZENvdW50XG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGZpbHRlcmVkIGxpc3Qgd2l0aCBtb3JlIGl0ZW1zXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhLm1kbyA9IHRoaXMubWFzdGVyRGF0YT8ubWRvQmFja3VwPy5zbGljZSgwLCB0aGlzLm1kb0xpc3RMb2FkQ291bnQpXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tDdXJyZW50bWRvUHJlc2VudCgpXG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZW1kb3MgPSBmYWxzZVxuICAgICAgICAgICAgfSwgNTAwKSAvLyBTbWFsbCB0aW1lb3V0IHRvIHNpbXVsYXRlIGxvYWRpbmcgYW5kIHByZXZlbnQgbXVsdGlwbGUgdHJpZ2dlcnNcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTGVnYWN5IChzZXJ2ZXIpIHBhZ2luYXRpb246IHJlcXVlc3QgbmV4dCBwYWdlIGlmIHRvdGFsIG5vdCByZWFjaGVkXG4gICAgICAgICAgICBjb25zdCBsb2FkZWRMZWdhY3kgPSAodGhpcy5tYXN0ZXJEYXRhPy5tZG9CYWNrdXAgfHwgW10pLmxlbmd0aFxuICAgICAgICAgICAgaWYgKCF0aGlzLm5vTW9yZUxlZ2FjeW1kb3MgJiYgdGhpcy5kZWZhdWx0U2VhcmNobWRvQ291bnQgJiYgbG9hZGVkTGVnYWN5IDwgdGhpcy5kZWZhdWx0U2VhcmNobWRvQ291bnQpIHtcbiAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdNb3JlbWRvcyA9IHRydWVcbiAgICAgICAgICAgICAgdGhpcy5tZG9PZmZzZXQgPSAodGhpcy5tZG9PZmZzZXQgfHwgMCkgKyB0aGlzLm1kb0RlZmF1bHRMb2FkQ291bnRcbiAgICAgICAgICAgICAgLy8gaW5jcmVhc2UgZGlzcGxheSBjb3VudCB0byBpbmNsdWRlIG5ld2x5IGZldGNoZWQgaXRlbXNcbiAgICAgICAgICAgICAgdGhpcy5tZG9MaXN0TG9hZENvdW50ICs9IHRoaXMubWRvRGVmYXVsdExvYWRDb3VudFxuICAgICAgICAgICAgICB0aGlzLmdldG1kbyh1bmRlZmluZWQsIHRoaXMubWRvT2Zmc2V0KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBzZWFyY2htZG9Db250cm9sKCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnc2VhcmNobWRvJykgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuXG59XG4iLCI8ZGl2IGNsYXNzPVwidmlldy1jYnAtcGxhblwiPlxuICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPlNlbmQgZm9yIERlc2lnbmF0aW9uIE5hbWUgQXBwcm92YWw8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRpbmdcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gc2VuZCB0aGlzIGRlc2lnbmF0aW9uIGZvciBhZGRpbmcgaW4gaUdPVCBkZXNpZ25hdGlvbiBNYXN0ZXI/PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjbG9zZURpYWxvZygpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1jb250YWluZXJcIiBbZm9ybUdyb3VwXT1cImFwcHJvdmFsUmVxdWVzdEZvcm1cIj5cbiAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibXQtMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8cD5EZXNpZ25hdGlvbiBOYW1lIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNCBhZGRpdGlvbmFsLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwicmVxdWVzdF9uYW1lXCIgW3ZhbHVlXT1cInJvbGVfbWFwcGluZ19pZHM/LmRlc2lnbmF0aW9uX25hbWVcIiBwbGFjZWhvbGRlcj1cIkVudGVyIGEgbmFtZSBmb3IgdGhpcyByZXF1ZXN0Li4uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyLXJhZGl1czogMjVweDsgYm9yZGVyOiAxcHggc29saWQgI2NjYzsgcGFkZGluZzogOHB4IDEycHg7IHdpZHRoOjEwMCU7Zm9udC1zaXplOiAxNHB4O2ZvbnQtZmFtaWx5OiAnTGF0byc7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgncmVxdWVzdF9uYW1lJyk/LnRvdWNoZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdyZXF1ZXN0X25hbWUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIERlc2lnbmF0aW9uIE5hbWUgaXMgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdyZXF1ZXN0X25hbWUnKT8udG91Y2hlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwcm92YWxSZXF1ZXN0Rm9ybS5nZXQoJ3JlcXVlc3RfbmFtZScpPy5oYXNFcnJvcigncGF0dGVybicpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBPbmx5IGxldHRlcnMsIG51bWJlcnMsIHNwYWNlcywgdW5kZXJzY29yZSBhbmQgaHlwaGVuIGFyZSBhbGxvd2VkXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPkVudGVyIERpdmlzaW9uL1dpbmcgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNCBhZGRpdGlvbmFsLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZGl2aXNpb25fbmFtZVwiIFt2YWx1ZV09XCJyb2xlX21hcHBpbmdfaWRzPy53aW5nX2RpdmlzaW9uX3NlY3Rpb25cIiBwbGFjZWhvbGRlcj1cIkVudGVyIERpdmlzaW9uL1dpbmcuLi5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJib3JkZXItcmFkaXVzOiAyNXB4OyBib3JkZXI6IDFweCBzb2xpZCAjY2NjOyBwYWRkaW5nOiA4cHggMTJweDsgd2lkdGg6MTAwJTtmb250LXNpemU6IDE0cHg7Zm9udC1mYW1pbHk6ICdMYXRvJztcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdkaXZpc2lvbl9uYW1lJyk/LnRvdWNoZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdkaXZpc2lvbl9uYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBEaXZpc2lvbi9XaW5nIGlzIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnZGl2aXNpb25fbmFtZScpPy50b3VjaGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnZGl2aXNpb25fbmFtZScpPy5oYXNFcnJvcigncGF0dGVybicpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBPbmx5IGxldHRlcnMsIG51bWJlcnMsIHNwYWNlcywgdW5kZXJzY29yZSBhbmQgaHlwaGVuIGFyZSBhbGxvd2VkXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXQtMiBzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPlVwbG9hZCBEb2N1bWVudCAoUERGL1dvcmQvRXhjZWwvVFhUKTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS11cGxvYWQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwidXBsb2FkRG9jXCIgY2xhc3M9XCJmaWxlLXVwbG9hZC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLXVwbG9hZC1pY29uXCI+8J+Tjjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHVwbG9hZGVkRmlsZT8ubmFtZSB8fCAnQ2hvb3NlIGEgZmlsZSAoUERGLCBXb3JkLCBFeGNlbCwgVFhUKScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZmlsZS11cGxvYWQtaGludFwiPk1heCBmaWxlIHNpemU6IDI1TUI8L3NtYWxsPlxuXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInVwbG9hZERvY1wiIHR5cGU9XCJmaWxlXCIgKGNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQ9XCIucGRmLC5kb2MsLmRvY3gsLnhscywueGxzeCwudHh0XCIgY2xhc3M9XCJmaWxlLXVwbG9hZC1pbnB1dFwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInVwbG9hZEVycm9yXCIgY2xhc3M9XCJlcnJvclwiPnt7IHVwbG9hZEVycm9yIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgPC9tYXQtY2FyZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZm9vdGVyXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tYWN0aXZlXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiQ2FuY2VsXCIgKGNsaWNrKT1cImNhbmNlbEZvcm0oKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJhcHByb3ZhbFJlcXVlc3RGb3JtPy5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJhcHByb3ZhbFJlcXVlc3RGb3JtPy5pbnZhbGlkID8gJ2J0bi1kaXNhYmxlJzonYnRuLWFjdGl2ZSdcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZURlc2lnbmF0aW9uKClcIiA+PG1hdC1pY29uPnNlbmQ8L21hdC1pY29uPiBTZW5kIFJlcXVlc3Q8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJvdmVybGF5LWxvYWRlclwiICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjUwXCI+PC9tYXQtc3Bpbm5lcj5cbjwvZGl2PiJdfQ==
|