ezlibrary_v2 2.0.0 → 2.0.2

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.
@@ -1,5 +1,7 @@
1
1
  import { Component, ViewChild } from '@angular/core';
2
2
  import { Cookie } from 'ng2-cookies/ng2-cookies';
3
+ // import { FlashMessagesService } from 'angular2-flash-messages';
4
+ import { NavigationEnd } from '@angular/router';
3
5
  import * as i0 from "@angular/core";
4
6
  import * as i1 from "@angular/router";
5
7
  import * as i2 from "../comman-service/comman-service.service";
@@ -350,16 +352,16 @@ export class EzHeaderComponent {
350
352
  }
351
353
  ngOnInit() {
352
354
  this.mdlk = JSON.parse(localStorage.getItem('mdlKey'));
353
- // this.cUrl = window.location.hash;
354
- // this.cUrl=this.cUrl.replace("#",'');
355
+ this.cUrl = window.location.hash;
356
+ this.cUrl = this.cUrl.replace("#", '');
355
357
  // Getting the final url
356
- // this.router.events
357
- // .filter(e => e instanceof NavigationEnd)
358
- // .subscribe((navEnd: NavigationEnd) => {
359
- // this.cUrl = navEnd.urlAfterRedirects;
360
- // this.menuList();
361
- // // console.log(this.cUrl);
362
- // });
358
+ this.router.events
359
+ .filter(e => e instanceof NavigationEnd)
360
+ .subscribe((navEnd) => {
361
+ this.cUrl = navEnd.urlAfterRedirects;
362
+ this.menuList();
363
+ // console.log(this.cUrl);
364
+ });
363
365
  // this.router.events.pipe(filter(e => e instanceof NavigationEnd))
364
366
  // .subscribe((navEnd: NavigationEnd) => {
365
367
  // this.cUrl = navEnd.urlAfterRedirects;
@@ -397,4 +399,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
397
399
  type: ViewChild,
398
400
  args: ['closebtn']
399
401
  }] } });
400
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V6LWxpYi9zcmMvbGliL2V6aGVhZGVyL2hlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lei1saWIvc3JjL2xpYi9lemhlYWRlci9oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7QUFlakQsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixZQUNVLE1BQWM7SUFDdEIsc0RBQXNEO0lBQzlDLEVBQXdCLEVBQ3pCLFFBQTBCO0lBQ2pDLG1EQUFtRDs7UUFKM0MsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUVkLE9BQUUsR0FBRixFQUFFLENBQXNCO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBS25DLFVBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ25CLE9BQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLFNBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9CLFlBQU8sR0FBRyxFQUFFLENBQUE7UUFDWixTQUFJLEdBQUcsRUFBRSxDQUFBO1FBQ1QsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFHakIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFRYixZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ1osUUFBRyxHQUFHLENBQUMsQ0FB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Z0JBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JCLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3hCLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzdCLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzFCLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLFlBQVksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3JDLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2xDLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2xDLFlBQVksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3BDLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2pDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQyxZQUFZLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBRTNDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNFLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFD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LElBQUksRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQyxRQUFRLEVBQUUsa0NBQWtDO1lBQzVDLFdBQVcsRUFBRSxrQ0FBa0M7WUFDL0MsU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQy9CLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztJQUdKLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3BFLElBQUksU0FBUyxJQUFJLE1BQU0sRUFBRTtZQUN2QixRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1NBQy9EO2FBQU07WUFDTCxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1NBRTlEO0lBQ0gsQ0FBQzs7K0dBcGFVLGlCQUFpQjttR0FBakIsaUJBQWlCLDBKQ2hCOUIsc2tSQXVLbUc7NEZEdkp0RixpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsY0FBYzsrSkFhRCxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvb2tpZSB9IGZyb20gJ25nMi1jb29raWVzL25nMi1jb29raWVzJztcclxuLy8gaW1wb3J0IHsgRmxhc2hNZXNzYWdlc1NlcnZpY2UgfSBmcm9tICdhbmd1bGFyMi1mbGFzaC1tZXNzYWdlcyc7XHJcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvbkVuZCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENvbW1hblNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbWFuLXNlcnZpY2UvY29tbWFuLXNlcnZpY2Uuc2VydmljZSc7XHJcbi8vIGltcG9ydCB7IFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvaHR0cCc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBHbG9ibGVFbnZTZXJ2aWNlIH0gZnJvbSAnLi4vZ2xvYmxlL2dsb2JsZS1lbnYuc2VydmljZSc7XHJcbi8vIGltcG9ydCB7IE5nNExvYWRpbmdTcGlubmVyU2VydmljZSB9IGZyb20gJ25nNC1sb2FkaW5nLXNwaW5uZXInO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzLWNvbXBhdC9vcGVyYXRvci9maWx0ZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZXpoZWFkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hlYWRlci5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEV6SGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgLy8gcHJpdmF0ZSBmbGFzaE1lc3NhZ2VzU2VydmljZTogRmxhc2hNZXNzYWdlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNzOiBDb21tYW5TZXJ2aWNlU2VydmljZSxcclxuICAgIHB1YmxpYyBnbG9ibEVudjogR2xvYmxlRW52U2VydmljZVxyXG4gICAgLy8gcHJpdmF0ZSBzcGlubmVyU2VydmljZTogTmc0TG9hZGluZ1NwaW5uZXJTZXJ2aWNlXHJcbiAgKSB7IH1cclxuICBAVmlld0NoaWxkKCdjbG9zZWJ0bicpIGNsb3NlYnRuOiBFbGVtZW50UmVmO1xyXG5cclxuICBjRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgZHMgPSBDb29raWUuZ2V0KCdfZHMnKTtcclxuICB1VXNyID0gQ29va2llLmdldCgnX3VzZXJuYW1lJyk7XHJcbiAgY29tcGFueSA9IFwiXCJcclxuICB5ZWFyID0gXCJcIlxyXG4gIHVzZXJEZXRhaWxzID0gW107XHJcbiAgaGlzdG9yeUxpbmtNYXAgPSB7fTtcclxuICBoaXN0b3J5TGluayA9IFtdO1xyXG4gIGNVcmw7XHJcbiAgaGVhZGVyO1xyXG4gIGFjY01lbnVMaXN0ID0ge307XHJcbiAgZmxhZyA9IGZhbHNlO1xyXG4gIGtleUxpc3QgPSBbXTtcclxuICBzZWFyY2hGO1xyXG4gIHVuYW1lO1xyXG4gIHFrU2NoO1xyXG4gIHNjaElkO1xyXG4gIHN0dHNBO1xyXG4gIGNvdW50O1xyXG4gIG50U2NoOiBib29sZWFuO1xyXG4gIHNyY2hDbnQgPSAwO1xyXG4gIGNudCA9IDA7XHJcbiAgZmVlZGJhY2tDb21tZW50ID0gJyc7XHJcblxyXG5cclxuXHJcbiAgY2xpY2tGaWx0ZXIoa2MpIHtcclxuXHJcbiAgICBpZiAoa2Mud2hpY2ggPT0gMTMpIHtcclxuICAgICAgLy8gdGhpcy5nZXRTcmNoQ291bnQodGhpcy5xa1NjaCk7XHJcbiAgICAgIHRoaXMucGFja2V0TG9va3VwU3JjQ291bnQodGhpcy5xa1NjaCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYmFja0hvbWUoKSB7XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuZ2xvYmxFbnYub3JpZ2luICsgXCIjaG9tZVwiO1xyXG4gIH1cclxuXHJcbiAgcm91dGVob21lKCkge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWydob21lJ10pKTtcclxuICAgIHdpbmRvdy5vcGVuKFwiLyNcIiArIHVybCwgJ0hvbWUnKTtcclxuICB9XHJcbiAgcGFja2V0TG9va3VwU3JjQ291bnQoZmdsc3RyKSB7XHJcbiAgICB0aGlzLnNyY2hDbnQgPSB0aGlzLnNyY2hDbnQgKyAxXHJcbiAgICBsZXQgbG9nRHRsID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncmVzcmVxcGFyYScpKTtcclxuICAgIGlmIChmZ2xzdHIgPT0gdW5kZWZpbmVkIHx8IGZnbHN0ciA9PSAnJykge1xyXG4gICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3coJ1BsZWFzZSBlbnRlciBTZWFyY2ggUGFyYW1ldGVyJywgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCByID0gdGhpcy5jcy5mb3JtYXRlU3RyKGZnbHN0cik7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncGFja2V0TG9va3VwU3RyJywgcik7XHJcblxyXG4gICAgaWYgKHRoaXMuY1VybCA9PSAnL3NvbGl0YWlyZXMnKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnc29saXRhaXJlcy9wYWNrZXQtbG9va3VwLyddLCB7IHF1ZXJ5UGFyYW1zOiB7IHNjaElkOiB0aGlzLnNyY2hDbnQgfSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybCh0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnc29saXRhaXJlcy9wYWNrZXQtbG9va3VwLyddLCB7IHF1ZXJ5UGFyYW1zOiB7IHNjaElkOiB0aGlzLnNyY2hDbnQgfSB9KSk7XHJcbiAgICAgIHdpbmRvdy5vcGVuKFwiL3NvbGl0YWlyZXMvI1wiICsgdXJsLCAnU29saXRhaXJlcycpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG5cclxuICBsb2dvdXQoKSB7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9ICdMb2dvdXQnXHJcbiAgICB0aGlzLmhlYWRlclsnbWV0aG9kJ10gPSAnbG9nT3V0JztcclxuICAgIC8vIGxldCBvcHRpb25zID0gbmV3IFJlcXVlc3RPcHRpb25zKHsgaGVhZGVyczogdGhpcy5oZWFkZXIgfSk7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9IG5ldyBIdHRwSGVhZGVycyh7IGhlYWRlcnM6IHRoaXMuaGVhZGVyIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IHRoaXMuaGVhZGVyIH07XHJcbiAgICB0aGlzLmNzLmxvZ291dChyZXFPYmosIG9wdGlvbnMpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICBsZXQgZHMgPSBDb29raWUuZ2V0KCdfZHMnKTtcclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfdXNlcm5hbWUnKTtcclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfbG9ndGltZScpO1xyXG4gICAgICAgIENvb2tpZS5kZWxldGUoJ19jaycpO1xyXG4gICAgICAgIENvb2tpZS5kZWxldGUoJ19sb2dpZCcpO1xyXG4gICAgICAgIENvb2tpZS5kZWxldGUoJ19hY2NDb21wYW55Jyk7XHJcbiAgICAgICAgQ29va2llLmRlbGV0ZSgnX2FjY3llYXInKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnT1RQJyk7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NsaWVudEtleScpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdsb2dJZG4nKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbWRsS2V5Jyk7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3VzZXJuYW1lJyk7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3NlbE1kJyk7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NoZycsICdmYWxzZScpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCd0cmFuc2FjdGlvbkluZm8nKTtcclxuXHJcbiAgICAgICAgQ29va2llLmRlbGV0ZSgnX3VzZXJuYW1lJywgdGhpcy5nbG9ibEVudi5wYXRobmFtZSwgdGhpcy5nbG9ibEVudi5ob3N0bmFtZSk7XHJcbiAgICAgICAgQ29va2llLmRlbGV0ZSgnX2xvZ3RpbWUnLCB0aGlzLmdsb2JsRW52LnBhdGhuYW1lLCB0aGlzLmdsb2JsRW52Lmhvc3RuYW1lKTtcclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfY2snLCB0aGlzLmdsb2JsRW52LnBhdGhuYW1lLCB0aGlzLmdsb2JsRW52Lmhvc3RuYW1lKTtcclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfbG9naWQnLCB0aGlzLmdsb2JsRW52LnBhdGhuYW1lLCB0aGlzLmdsb2JsRW52Lmhvc3RuYW1lKTtcclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfYWNjQ29tcGFueScsIHRoaXMuZ2xvYmxFbnYucGF0aG5hbWUsIHRoaXMuZ2xvYmxFbnYuaG9zdG5hbWUpO1xyXG4gICAgICAgIENvb2tpZS5kZWxldGUoJ19hY2N5ZWFyJywgdGhpcy5nbG9ibEVudi5wYXRobmFtZSwgdGhpcy5nbG9ibEVudi5ob3N0bmFtZSk7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmdsb2JsRW52Lm9yaWdpbjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3cocmVzcG9uc2UubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3coZXJyLm1lc3NhZ2UsIHsgY3NzQ2xhc3M6ICdhbGVydC1kYW5nZXInLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBtZW51TGlzdCgpIHtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIGxldCBtb2R1bGVLZXlzID0gdGhpcy5tZGxrW3RoaXMuY1VybC5zcGxpdCgnLycpWzFdXTtcclxuXHJcbiAgICBpZiAoQ29va2llLmdldCgnX2xvZ2lkJykgPT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgbGV0IGhlYWRlcjogYW55ID0ge1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAnY2xpZW50a2V5JzogQ29va2llLmdldCgnX2NrJyksXHJcbiAgICAgICdsb2dpbmlkJzogQ29va2llLmdldCgnX2xvZ2lkJyksXHJcbiAgICAgICdtZXRob2QnOiAnZ2V0TWVudUxpc3QnLFxyXG4gICAgICAnbW9kdWxla2V5JzogbW9kdWxlS2V5cyxcclxuICAgICAgJ3NvdXJjZSc6ICdxcydcclxuICAgIH1cclxuXHJcbiAgICByZXFPYmpbJ21vZHVsZUtleXMnXSA9IG1vZHVsZUtleXM7XHJcblxyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSBuZXcgUmVxdWVzdE9wdGlvbnMoeyBoZWFkZXJzOiBoZWFkZXIgfSk7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9IG5ldyBIdHRwSGVhZGVycyh7IGhlYWRlcnM6IGhlYWRlciB9KTtcclxuICAgIGxldCBvcHRpb25zID0geyBoZWFkZXJzOiB0aGlzLmhlYWRlciB9O1xyXG4gICAgY29uc29sZS5sb2cocmVxT2JqKTtcclxuICAgIHRoaXMuY3MubWVudUxpc3QocmVxT2JqLCBvcHRpb25zKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVxT2JqKTtcclxuICAgICAgICBsZXQgbG9jaGlzdG9yeU1hcCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2hpc3RvcnlMaW5rJykpIHx8IHt9O1xyXG4gICAgICAgIGxldCBsb2NoaXN0b3J5TGluayA9IGxvY2hpc3RvcnlNYXBbbW9kdWxlS2V5c10gfHwgW107XHJcbiAgICAgICAgdGhpcy5oaXN0b3J5TGlua01hcCA9IHt9O1xyXG4gICAgICAgIHRoaXMuaGlzdG9yeUxpbmsgPSBbXTtcclxuICAgICAgICBsZXQgbWVudUxpc3QgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgbGV0IGNudCA9IDBcclxuICAgICAgICBtZW51TGlzdC5mb3JFYWNoKGVsZSA9PiB7XHJcbiAgICAgICAgICBjbnQgPSBjbnQgKyBlbGUuU3ViTWVudS5sZW5ndGggKyAxO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxldCBkaXYgPSBjbnQgLyA0O1xyXG4gICAgICAgIGRpdiA9IE1hdGgucm91bmQoZGl2KTtcclxuICAgICAgICBpZiAoZGl2IDwgMSkge1xyXG4gICAgICAgICAgbGV0IG5ld01lbnVMaXN0ID0gW107XHJcbiAgICAgICAgICBtZW51TGlzdC5mb3JFYWNoKGVsZSA9PiB7XHJcbiAgICAgICAgICAgIGVsZVtcImlzaGRyXCJdID0gXCJZXCI7XHJcbiAgICAgICAgICAgIG5ld01lbnVMaXN0LnB1c2goZWxlKVxyXG4gICAgICAgICAgICBsZXQgZXh0bWVudV9pZG4gPSBlbGUubWVudV9pZG47XHJcbiAgICAgICAgICAgIGlmIChsb2NoaXN0b3J5TGluay5pbmRleE9mKGV4dG1lbnVfaWRuKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuaGlzdG9yeUxpbmsucHVzaChleHRtZW51X2lkbik7XHJcbiAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5TGlua01hcFtleHRtZW51X2lkbl0gPSBlbGVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbGUuU3ViTWVudS5mb3JFYWNoKHN1YmVsZSA9PiB7XHJcbiAgICAgICAgICAgICAgbmV3TWVudUxpc3QucHVzaChzdWJlbGUpXHJcbiAgICAgICAgICAgICAgZXh0bWVudV9pZG4gPSBzdWJlbGUubWVudV9pZG47XHJcblxyXG4gICAgICAgICAgICAgIGlmIChsb2NoaXN0b3J5TGluay5pbmRleE9mKGV4dG1lbnVfaWRuKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5TGluay5wdXNoKGV4dG1lbnVfaWRuKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlzdG9yeUxpbmtNYXBbZXh0bWVudV9pZG5dID0gc3ViZWxlO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmFjY01lbnVMaXN0WzFdID0gbmV3TWVudUxpc3Q7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBrZXkgPSAxO1xyXG4gICAgICAgICAgbGV0IG5ld01lbnVMaXN0ID0gW107XHJcbiAgICAgICAgICBsZXQgbHNDbnQgPSAwO1xyXG4gICAgICAgICAgbWVudUxpc3QuZm9yRWFjaChlbGUgPT4ge1xyXG4gICAgICAgICAgICBsc0NudCA9IGxzQ250ICsgZWxlLlN1Yk1lbnUubGVuZ3RoICsgMTtcclxuICAgICAgICAgICAgZWxlW1wiaXNoZHJcIl0gPSBcIllcIjtcclxuICAgICAgICAgICAgbmV3TWVudUxpc3QucHVzaChlbGUpXHJcbiAgICAgICAgICAgIGxldCBleHRtZW51X2lkbiA9IGVsZS5tZW51X2lkbjtcclxuICAgICAgICAgICAgaWYgKGxvY2hpc3RvcnlMaW5rLmluZGV4T2YoZXh0bWVudV9pZG4pICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5TGluay5wdXNoKGV4dG1lbnVfaWRuKTtcclxuICAgICAgICAgICAgICB0aGlzLmhpc3RvcnlMaW5rTWFwW2V4dG1lbnVfaWRuXSA9IGVsZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsZS5TdWJNZW51LmZvckVhY2goc3ViZWxlID0+IHtcclxuICAgICAgICAgICAgICBzdWJlbGVbXCJpc2hkclwiXSA9IFwiTlwiO1xyXG4gICAgICAgICAgICAgIG5ld01lbnVMaXN0LnB1c2goc3ViZWxlKVxyXG4gICAgICAgICAgICAgIGV4dG1lbnVfaWRuID0gc3ViZWxlLm1lbnVfaWRuO1xyXG5cclxuICAgICAgICAgICAgICBpZiAobG9jaGlzdG9yeUxpbmsuaW5kZXhPZihleHRtZW51X2lkbikgIT0gLTEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlzdG9yeUxpbmsucHVzaChleHRtZW51X2lkbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpc3RvcnlMaW5rTWFwW2V4dG1lbnVfaWRuXSA9IHN1YmVsZTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChsc0NudCA+PSBkaXYgJiYgbmV3TWVudUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWNjTWVudUxpc3Rba2V5XSA9IG5ld01lbnVMaXN0O1xyXG4gICAgICAgICAgICAgIGtleSA9IGtleSArIDE7XHJcbiAgICAgICAgICAgICAgbmV3TWVudUxpc3QgPSBbXTtcclxuICAgICAgICAgICAgICBsc0NudCA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmIChsc0NudCAhPSAwKVxyXG4gICAgICAgICAgICB0aGlzLmFjY01lbnVMaXN0W2tleV0gPSBuZXdNZW51TGlzdDtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICB0aGlzLmtleUxpc3QgPSBPYmplY3Qua2V5cyh0aGlzLmFjY01lbnVMaXN0KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3cocmVzcG9uc2UubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3coZXJyLm1lc3NhZ2UsIHsgY3NzQ2xhc3M6ICdhbGVydC1kYW5nZXInLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGxvZ091dEJveCgpIHtcclxuICAgIHZhciBkaXNwbGF5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21iLXNpZ25vdXQnKS5zdHlsZS5kaXNwbGF5O1xyXG5cclxuICAgIGlmIChkaXNwbGF5ID09ICdub25lJyB8fCBkaXNwbGF5ID09ICcnKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYi1zaWdub3V0Jykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWItc2lnbm91dCcpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlzcGFzc3dvcmRDaGFuZ2UgPSBmYWxzZTtcclxuICBDaGFuZ2VQYXNzd29yZCgpIHtcclxuXHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICBpZiAoQ29va2llLmdldCgnX2xvZ2lkJykgPT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgbGV0IGhlYWRlcjogYW55ID0ge1xyXG4gICAgICAnY2xpZW50a2V5JzogQ29va2llLmdldCgnX2NrJyksXHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICdtb2R1bGVrZXknOiB0aGlzLm1kbGtbdGhpcy5jVXJsLnNwbGl0KCcvJylbMV1dLFxyXG4gICAgICAnbG9naW5pZCc6IENvb2tpZS5nZXQoJ19sb2dpZCcpLFxyXG4gICAgICAnc291cmNlJzogJ3FzJ1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IFwiYXBwbGljYXRpb25BY2Nlc3NNYXN0ZXJcIjtcclxuICAgIHJlcU9ialtcInVzZXJuYW1lXCJdID0gdGhpcy51VXNyO1xyXG4gICAgaGVhZGVyW1wibWV0aG9kXCJdID0gXCJsb2FkQ2hhbmdlUGFzc1wiO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSBuZXcgUmVxdWVzdE9wdGlvbnMoeyBoZWFkZXJzOiBoZWFkZXIgfSk7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9IG5ldyBIdHRwSGVhZGVycyh7IGhlYWRlcnM6IGhlYWRlciB9KTtcclxuICAgIGxldCBvcHRpb25zID0geyBoZWFkZXJzOiB0aGlzLmhlYWRlciB9O1xyXG4gICAgdGhpcy5jcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ2NvbnRhY3QvbG9hZENvbnRhY3QnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgIHRoaXMudXNlckRldGFpbHMgPSByZXN1bHQudXNlckRldGFpbHM7XHJcbiAgICAgICAgdGhpcy5pc3Bhc3N3b3JkQ2hhbmdlID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFuZ2VQd2RCdG4nKS5jbGljaygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhyZXNwb25zZS5tZXNzYWdlLCB7XHJcbiAgICAgICAgLy8gICBjc3NDbGFzczogXCJhbGVydC1kYW5nZXJcIixcclxuICAgICAgICAvLyAgIHRpbWVvdXQ6IDMwMDBcclxuICAgICAgICAvLyB9KTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhlcnIubWVzc2FnZSwge1xyXG4gICAgICAgIC8vICAgY3NzQ2xhc3M6IFwiYWxlcnQtZGFuZ2VyXCIsXHJcbiAgICAgICAgLy8gICB0aW1lb3V0OiAzMDAwXHJcbiAgICAgICAgLy8gfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICB9XHJcbiAgcGFzc3dvcmRDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmlzcGFzc3dvcmRDaGFuZ2UgPSB0cnVlO1xyXG5cclxuICB9XHJcbiAgU2F2ZVBhc3N3b3JkKCkge1xyXG4gICAgaWYgKHRoaXMuaXNwYXNzd29yZENoYW5nZSkge1xyXG4gICAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgICAgaWYgKENvb2tpZS5nZXQoJ19sb2dpZCcpID09IG51bGwpIHJldHVybjtcclxuICAgICAgbGV0IGhlYWRlcjogYW55ID0ge1xyXG4gICAgICAgICdjbGllbnRrZXknOiBDb29raWUuZ2V0KCdfY2snKSxcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgICdtb2R1bGVrZXknOiB0aGlzLm1kbGtbdGhpcy5jVXJsLnNwbGl0KCcvJylbMV1dLFxyXG4gICAgICAgICdsb2dpbmlkJzogQ29va2llLmdldCgnX2xvZ2lkJyksXHJcbiAgICAgICAgJ3NvdXJjZSc6ICdxcydcclxuICAgICAgfVxyXG4gICAgICBkZWJ1Z2dlclxyXG4gICAgICBsZXQgdXNyRHRsID0gdGhpcy51c2VyRGV0YWlsc1swXTtcclxuICAgICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gXCJzZXRQYXNzd29yZEZvcm1cIjtcclxuICAgICAgcmVxT2JqW1widXNlcklkblwiXSA9IHVzckR0bC51c2VySWRuO1xyXG4gICAgICByZXFPYmpbXCJwYXNzd29yZFwiXSA9IHVzckR0bC5wYXNzd29yZDtcclxuICAgICAgaGVhZGVyW1wibWV0aG9kXCJdID0gXCJjaGFuZ2VQYXNzd29yZFwiO1xyXG4gICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXFPYmopKTtcclxuICAgICAgLy8gbGV0IG9wdGlvbnMgPSBuZXcgUmVxdWVzdE9wdGlvbnMoeyBoZWFkZXJzOiBoZWFkZXIgfSk7XHJcbiAgICAgIC8vIGxldCBvcHRpb25zID0gbmV3IEh0dHBIZWFkZXJzKHsgaGVhZGVyczogaGVhZGVyIH0pO1xyXG4gICAgICBsZXQgb3B0aW9ucyA9IHsgaGVhZGVyczogdGhpcy5oZWFkZXIgfTtcclxuICAgICAgdGhpcy5jcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ2NvbnRhY3QvbG9hZENvbnRhY3QnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuY2xvc2VidG4ubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLmlzcGFzc3dvcmRDaGFuZ2UgPSBmYWxzZTtcclxuICAgICAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhyZXNwb25zZS5tZXNzYWdlLCB7XHJcbiAgICAgICAgICAvLyAgIGNzc0NsYXNzOiBcImFsZXJ0LXN1Y2Nlc3NcIixcclxuICAgICAgICAgIC8vICAgdGltZW91dDogMzAwMFxyXG4gICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3cocmVzcG9uc2UubWVzc2FnZSwge1xyXG4gICAgICAgICAgLy8gICBjc3NDbGFzczogXCJhbGVydC1kYW5nZXJcIixcclxuICAgICAgICAgIC8vICAgdGltZW91dDogMzAwMFxyXG4gICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgLy8gdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KGVyci5tZXNzYWdlLCB7XHJcbiAgICAgICAgICAvLyAgIGNzc0NsYXNzOiBcImFsZXJ0LWRhbmdlclwiLFxyXG4gICAgICAgICAgLy8gICB0aW1lb3V0OiAzMDAwXHJcbiAgICAgICAgICAvLyB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgLy8gdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KFwiUGxlYXNlIHNwZWNpZnkgbmV3IHBhc3N3b3JkXCIsIHtcclxuICAgICAgLy8gICBjc3NDbGFzczogXCJhbGVydC1kYW5nZXJcIixcclxuICAgICAgLy8gICB0aW1lb3V0OiAzMDAwXHJcbiAgICAgIC8vIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG5cclxuICBTaG93TWVudSh0eXAsIG1lbnVkdGwpIHtcclxuICAgIHZhciBtZW51ZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21lbnVEaXYnKS5zdHlsZS5kaXNwbGF5O1xyXG4gICAgaWYgKG1lbnVkaXYgPT0gJ25vbmUnKVxyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVudURpdicpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gICAgZWxzZVxyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVudURpdicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICBpZiAodHlwID09ICdsbmsnKSB7XHJcbiAgICAgIGRlYnVnZ2VyXHJcbiAgICAgIGxldCBtZW51X2lkbiA9IG1lbnVkdGwubWVudV9pZG4gfHwgJyc7XHJcbiAgICAgIGxldCBtb2R1bGtleSA9IHRoaXMubWRsa1t0aGlzLmNVcmwuc3BsaXQoJy8nKVsxXV1cclxuICAgICAgbGV0IGhpc3RvcnlMaW5rbWFwID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaGlzdG9yeUxpbmsnKSkgfHwge307XHJcbiAgICAgIGxldCBtb2R1bGVMaW5rID0gaGlzdG9yeUxpbmttYXBbbW9kdWxrZXldIHx8IFtdO1xyXG4gICAgICBpZiAobWVudV9pZG4gIT0gJycpIHtcclxuICAgICAgICBkZWJ1Z2dlclxyXG4gICAgICAgIGlmIChtb2R1bGVMaW5rLmluZGV4T2YobWVudV9pZG4pICE9IC0xKSB7XHJcbiAgICAgICAgICBtb2R1bGVMaW5rLnNwbGljZShtb2R1bGVMaW5rLmluZGV4T2YobWVudV9pZG4pLCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbW9kdWxlTGluay5zcGxpY2UoMCwgMCwgbWVudV9pZG4pO1xyXG4gICAgICAgIGlmIChtb2R1bGVMaW5rLmxlbmd0aCA+IDEwKSB7XHJcbiAgICAgICAgICBsZXQgbnVtT2ZyZW1vdmUgPSBtb2R1bGVMaW5rLmxlbmd0aCAtIDEwO1xyXG4gICAgICAgICAgbW9kdWxlTGluay5zcGxpY2UoMTAsIG51bU9mcmVtb3ZlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaGlzdG9yeUxpbmttYXBbbW9kdWxrZXldID0gbW9kdWxlTGluaztcclxuICAgICAgICB0aGlzLmhpc3RvcnlMaW5rID0gbW9kdWxlTGluaztcclxuICAgICAgICB0aGlzLmhpc3RvcnlMaW5rTWFwW21lbnVfaWRuXSA9IG1lbnVkdGw7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2hpc3RvcnlMaW5rJywgSlNPTi5zdHJpbmdpZnkoaGlzdG9yeUxpbmttYXApKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBFZGl0Q29tcGFueSgpIHtcclxuICAgIENvb2tpZS5kZWxldGUoJ19hY2NDb21wYW55JywgdGhpcy5nbG9ibEVudi5wYXRobmFtZSwgdGhpcy5nbG9ibEVudi5ob3N0bmFtZSk7XHJcbiAgICBDb29raWUuZGVsZXRlKCdfYWNjeWVhcicsIHRoaXMuZ2xvYmxFbnYucGF0aG5hbWUsIHRoaXMuZ2xvYmxFbnYuaG9zdG5hbWUpO1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydmYWNvbXBhbnknXSk7XHJcbiAgfVxyXG4gIHJiaSA9IFwiXCI7XHJcbiAgYmFuayA9IFwiXCI7XHJcbiAgY3V0b21pbXAgPSBcIlwiO1xyXG4gIGN1dG9tZXhwID0gXCJcIjtcclxuICBtZGxrXHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5tZGxrID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWRsS2V5JykpO1xyXG4gICAgLy8gIHRoaXMuY1VybCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xyXG4gICAgLy8gIHRoaXMuY1VybD10aGlzLmNVcmwucmVwbGFjZShcIiNcIiwnJyk7XHJcblxyXG4gICAgLy8gR2V0dGluZyB0aGUgZmluYWwgdXJsXHJcbiAgICAvLyB0aGlzLnJvdXRlci5ldmVudHNcclxuICAgIC8vICAgLmZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxyXG4gICAgLy8gICAuc3Vic2NyaWJlKChuYXZFbmQ6IE5hdmlnYXRpb25FbmQpID0+IHtcclxuICAgIC8vICAgICB0aGlzLmNVcmwgPSBuYXZFbmQudXJsQWZ0ZXJSZWRpcmVjdHM7XHJcbiAgICAvLyAgICAgdGhpcy5tZW51TGlzdCgpO1xyXG4gICAgLy8gICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY1VybCk7XHJcbiAgICAvLyAgIH0pO1xyXG4gICAgLy8gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxyXG4gICAgLy8gLnN1YnNjcmliZSgobmF2RW5kOiBOYXZpZ2F0aW9uRW5kKSA9PiB7XHJcbiAgICAvLyAgIHRoaXMuY1VybCA9IG5hdkVuZC51cmxBZnRlclJlZGlyZWN0cztcclxuICAgIC8vICAgdGhpcy5tZW51TGlzdCgpO1xyXG4gICAgLy8gICAvLyBjb25zb2xlLmxvZyh0aGlzLmNVcmwpO1xyXG4gICAgLy8gfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuY1VybCA9PSAnJylcclxuICAgICAgdGhpcy5jVXJsID0gXCIvaG9tZVwiO1xyXG4gICAgdGhpcy5oZWFkZXIgPSB7XHJcbiAgICAgICdjbGllbnRrZXknOiBDb29raWUuZ2V0KCdfY2snKSxcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgJ2RzJzogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ0RTJyksXHJcbiAgICAgICdhcHBrZXknOiAnTzkxWUsqRHcka0U3ZE5wY1ZtR0x2THhXTUowQzAwZU8nLFxyXG4gICAgICAnbW9kdWxla2V5JzogJ1dIaTZTUkxZNiMkODJiekpmQDRJVXg5b0hTTGJuMnFIJywvLyBtZGxrW2NVcmwuc3BsaXQoJy8nKVsxXV0sXHJcbiAgICAgICdsb2dpbmlkJzogQ29va2llLmdldCgnX2xvZ2lkJyksXHJcbiAgICAgICdzb3VyY2UnOiAncXMnXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBPcGVuT3B0aW9uKCkge1xyXG4gICAgdmFyIGlzZGlzcGxheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb3Jlb3B0aW9uJykuc3R5bGUuZGlzcGxheTtcclxuICAgIGlmIChpc2Rpc3BsYXkgPT0gJ25vbmUnKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb3Jlb3B0aW9uJykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9yZW9wdGlvbicpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIjx1bCBjbGFzcz1cIngtbmF2aWdhdGlvbiB4LW5hdmlnYXRpb24taG9yaXpvbnRhbCB4LW5hdmlnYXRpb24tcGFuZWxcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDBweDt6LWluZGV4OiAxMDAwXCI+XHJcbiAgPGxpIHN0eWxlPVwiYmFja2dyb3VuZDogIzNiNTk5ODtcIj5cclxuICAgIDxhIChjbGljayk9XCJyb3V0ZWhvbWUoKVwiICpuZ0lmPVwiY1VybCAhPSAnL2hvbWUnXCIgY2xhc3M9XCJwcm9maWxlLW1pbmlcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkXCI+RVo8L3NwYW4+XHJcbiAgICA8L2E+XHJcbiAgPC9saT5cclxuICA8bGkgKm5nSWY9XCJjVXJsICE9ICcvaG9tZScgXCI+XHJcbiAgICA8bmF2IGNsYXNzPVwibmF2YmFyIG5hdmJhci1leHBhbmQtbWQgbmF2YmFyLWxpZ2h0IGJnLWxpZ2h0XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJuYXZiYXItY29sbGFwc2UganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXRvcFwiIGlkPVwibmF2YmFyQ29sbGFwc2VcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibmF2YmFyLW5hdlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1pdGVtIGRyb3Bkb3duXCIgc3R5bGU9XCJ6LWluZGV4OjEwXCI+XHJcbiAgICAgICAgICAgIDxhIChjbGljayk9XCJTaG93TWVudSgnYmFyJywnJylcIiBjbGFzcz1cIm5hdi1saW5rIGRyb3Bkb3duLXRvZ2dsZVwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogI2ZmZjsgZm9udC1zaXplOiAyMHB4O3BhZGRpbmc6MHB4IDttYXJnaW4tdG9wOiA1cHhcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCI+IDxpXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLWJhcnNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxyXG4gICAgICAgICAgICA8ZGl2IGlkPVwibWVudURpdlwiIGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI3XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaGlzdG9yeS1jb2x1bW4gY29sLW1kLTJcIj5cclxuICAgICAgICAgICAgICAgICAgPGgyPkhpc3Rvcnk8L2gyPlxyXG4gICAgICAgICAgICAgICAgICA8dWwgaWQ9XCJuYXYtaGlzdG9yeVwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJzZXJ2aWNlLWl0ZW1cIiAqbmdGb3I9XCJsZXQgbWVudV9pZG4gb2YgaGlzdG9yeUxpbmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjL3t7aGlzdG9yeUxpbmtNYXBbbWVudV9pZG5dWydsbmsnXX19XCIgY2xhc3M9XCJoZWFkZXJsaW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlNob3dNZW51KCdiYXInLCcnKVwiPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZXJ2aWNlLWxhYmVsXCI+e3toaXN0b3J5TGlua01hcFttZW51X2lkbl1bJ2hkciddfX08L3NwYW4+PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBjb2wtbWQtMTIgYXdzYy1zZXJ2aWNlcy1zZWFyY2hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYXdzYy1pbnB1dC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJhd3NjLXNlcnZpY2VzLXNlYXJjaC1hdXRvY29tcGxldGVcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiRmluZCBhIE1lbnUgYnkgbmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidWktYXV0b2NvbXBsZXRlLWlucHV0XCIgbmFtZT1cInNlYXJjaEZcIiBbKG5nTW9kZWwpXT1cInNlYXJjaEZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJhd3NjLXNlcnZpY2VzLWNvbnRhaW5lclwiIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQga2V5IG9mIGtleUxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWNjbWVudSBvZiBhY2NNZW51TGlzdFtrZXldIHwgdGFibGVTZWFyY2g6c2VhcmNoRjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImFjY21lbnUuaXNoZHI9PSdZJ1wiIGNsYXNzPVwiYXdzYy1oZWFkZXIgaWNvLWNvbXB1dGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjY21lbnUubG5rICE9JyMnICYmIGFjY21lbnUubG5rICE9JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFuZ2xlLWRvdWJsZS1yaWdodFwiIHN0eWxlPVwiZm9udC1zaXplOjIwcHg7Y29sb3I6d2hpdGU7XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjL3t7YWNjbWVudS5sbmt9fVwiIChjbGljayk9XCJTaG93TWVudSgnbG5rJyxhY2NtZW51KVwiIGNsYXNzPVwiaGVhZGVybGlua1wiPiA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlcnZpY2UtbGFiZWxcIj4ge3thY2NtZW51Lmhkcn19PC9zcGFuPiA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWNjbWVudS5sbmsgPT0nIycgfHwgYWNjbWVudS5sbmsgPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYW5nbGUtZG91YmxlLWRvd25cIiBzdHlsZT1cImZvbnQtc2l6ZToyMHB4O2NvbG9yOndoaXRlO1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2FjY21lbnUuaGRyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiYWNjbWVudS5pc2hkcj09J04nXCIgY2xhc3M9XCJzZXJ2aWNlLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiMve3thY2NtZW51Lmxua319XCIgKGNsaWNrKT1cIlNob3dNZW51KCdsbmsnLGFjY21lbnUpXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VydmljZS1sYWJlbFwiPnt7YWNjbWVudS5oZHJ9fTwvc3Bhbj48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uYXY+XHJcbiAgPC9saT5cclxuICA8bGkgY2xhc3M9XCJycy1ub25lXCIgW25nU3R5bGVdPVwieyd3aWR0aCcgOiBjVXJsID09ICcvaG9tZScgPyAnMjUwcHgnIDogJzBweCd9XCI+XHJcbiAgICAmbmJzcDtcclxuICA8L2xpPlxyXG4gIDxsaSBjbGFzcz1cInJzLW5vbmVcIiBzdHlsZT1cIm1hcmdpbjogMTBweDtcIj5cclxuICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmUgbXktMlwiPlxyXG4gICAgICA8dGV4dGFyZWEgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogcHJlO1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJTVE9ORSBJRC8gUkYgSUQgc2VhcmNoXCIgWyhuZ01vZGVsKV09XCJxa1NjaFwiXHJcbiAgICAgICAgaWQ9XCJmb2dnbGVcIiBuYW1lPVwiZm9vZ2xlXCIgY29scz1cIjQ1XCIgcm93cz1cIjFcIj48L3RleHRhcmVhPlxyXG4gICAgICA8c3BhbiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgXHJcbiAgICAgICAgdG9wOiAtMnB4O1xyXG4gICAgICAgIHJpZ2h0OiAyOHB4O1xyXG4gICAgICAgIGNvbG9yOiByZ2IoMTUwLCAxNDQsIDE0NCk7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgei1pbmRleDogNjtcclxuICAgICAgICB3aWR0aDogMzVweDtcclxuICAgICAgICBoZWlnaHQ6IDM2cHg7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDM0cHg7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIC8qIHBvaW50ZXItZXZlbnRzOiBub25lOyAqL1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTdweDtcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiIChjbGljayk9XCJwYWNrZXRMb29rdXBTcmNDb3VudChxa1NjaCk7XCI+PC9pPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiaGVscGMgbXItc20tMlwiIGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiIGRhdGEtcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICB0aXRsZT1cIlNUT05FIC8gQ0VSVCBOTyAvIEdJQSBSRCAxLjIwLTEuMzAgRiBWUzEgM0VYIE5cIj48aSBjbGFzcz1cImZhIGZhLWluZm9cIj48L2k+PC9zcGFuPlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvbGk+XHJcbiAgPGxpIGNsYXNzPVwicHVsbC1yaWdodFwiIGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiIGRhdGEtcGxhY2VtZW50PVwibGVmdFwiIHRpdGxlPVwiQ2hhbmdlIHBhc3N3b3JkXCI+XHJcbiAgICA8YSAoY2xpY2spPVwiQ2hhbmdlUGFzc3dvcmQoKVwiIHN0eWxlPVwicGFkZGluZzoxNXB4IDVweFwiIGNsYXNzPVwibWItY29udHJvbFwiPlxyXG4gICAgICA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogMThweFwiIGNsYXNzPVwiZmEgZmEta2V5XCI+PC9zcGFuPlxyXG4gICAgPC9hPlxyXG4gIDwvbGk+XHJcbiAgPGxpIGNsYXNzPVwicHVsbC1yaWdodFwiIGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiIGRhdGEtcGxhY2VtZW50PVwibGVmdFwiIHRpdGxlPVwiTG9nIE91dFwiPlxyXG4gICAgPGEgKGNsaWNrKT1cImxvZ091dEJveCgpXCIgY2xhc3M9XCJtYi1jb250cm9sXCIgc3R5bGU9XCJwYWRkaW5nOjE1cHggNXB4XCIgZGF0YS1ib3g9XCIjbWItc2lnbm91dFwiPlxyXG4gICAgICA8c3BhbiBzdHlsZT1cImZvbnQtc2l6ZTogMThweFwiIGNsYXNzPVwiZmEgZmEtc2lnbi1vdXRcIj48L3NwYW4+XHJcbiAgICA8L2E+XHJcbiAgPC9saT5cclxuICA8bGkgY2xhc3M9XCJwdWxsLXJpZ2h0XCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJ1ZFwiPiA8c3BhbiBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZVwiPnt7dVVzciArJyB8J319PC9zcGFuPiB7e2RzfX0gPC9sYWJlbD5cclxuICA8L2xpPlxyXG48L3VsPlxyXG48dWwgY2xhc3M9XCJ4LW5hdmlnYXRpb24geC1uYXZpZ2F0aW9uLWhvcml6b250YWwgeC1uYXZpZ2F0aW9uLXBhbmVsIHNyLW5vbmVcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNiZmJmYmZcIj5cclxuICA8bGkgc3R5bGU9XCJtYXJnaW46IDEwcHg7XCI+XHJcbiAgICA8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lIG15LTJcIj5cclxuICAgICAgPHRleHRhcmVhIHN0eWxlPVwid2hpdGUtc3BhY2U6IHByZTtcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiU1RPTkUgSUQvIFJGIElEIHNlYXJjaFwiIFsobmdNb2RlbCldPVwicWtTY2hcIlxyXG4gICAgICAgIGlkPVwiZm9nZ2xlXCIgbmFtZT1cImZvb2dsZVwiIGNvbHM9XCI0NVwiIHJvd3M9XCIxXCI+PC90ZXh0YXJlYT5cclxuICAgICAgPHNwYW4gc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IFxyXG4gICAgICB0b3A6IC0ycHg7XHJcbiAgICAgIHJpZ2h0OiAyOHB4O1xyXG4gICAgICBjb2xvcjogcmdiKDE1MCwgMTQ0LCAxNDQpO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcclxuICAgICAgei1pbmRleDogNjtcclxuICAgICAgd2lkdGg6IDMwcHg7XHJcbiAgICAgIGhlaWdodDogMzZweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDM0cHg7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgLyogcG9pbnRlci1ldmVudHM6IG5vbmU7ICovXHJcbiAgICAgIGZvbnQtc2l6ZTogMTdweDtcIj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiIChjbGljayk9XCJwYWNrZXRMb29rdXBTcmNDb3VudChxa1NjaCk7XCI+PC9pPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9saT5cclxuPC91bD5cclxuXHJcbjxkaXYgY2xhc3M9XCJtb2RhbFwiIGlkPVwiY2hhbmdlUHdkUG9wXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cInNtYWxsTW9kYWxIZWFkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICBkYXRhLWJhY2tkcm9wPVwic3RhdGljXCIgZGF0YS1rZXlib2FyZD1cImZhbHNlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiICNjbG9zZWJ0bj5cclxuICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5DbG9zZTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwic21hbGxNb2RhbEhlYWRcIj5DaGFuZ2UgUGFzc3dvcmQ8L2g0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB1c2VyIG9mIHVzZXJEZXRhaWxzOyBsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCIgY2xhc3M9XCJjb2wtbWQtMlwiIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdFwiPlVzZXJuYW1lIDogPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0XCI+e3t1c2VyPy51c2VybmFtZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDVweFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCIgY2xhc3M9XCJjb2wtbWQtMlwiIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdFwiPlBhc3N3b3JkOjwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBjbGFzcz1cImNvbC1tZC0xMFwiIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwicGFzc3dvcmRDaGFuZ2UoKVwiIFsobmdNb2RlbCldPVwidXNlci5wYXNzd29yZFwiIG5hbWU9XCJwYXNzd29yZFwiIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiICNjbG9zZWJ0biBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPkNsb3NlPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIlNhdmVQYXNzd29yZCgpXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiBhcHBBcHBOb0RibENsaWNrPkNvbmZpcm08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48YnV0dG9uIGlkPVwiY2hhbmdlUHdkQnRuXCIgW2hpZGRlbl09XCJ0cnVlXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI2NoYW5nZVB3ZFBvcFwiPjwvYnV0dG9uPiJdfQ==
402
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V6LWxpYi9zcmMvbGliL2V6aGVhZGVyL2hlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lei1saWIvc3JjL2xpYi9lemhlYWRlci9oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELGtFQUFrRTtBQUNsRSxPQUFPLEVBQVUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQWF4RCxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLFlBQ1UsTUFBYztJQUN0QixzREFBc0Q7SUFDOUMsRUFBd0IsRUFDekIsUUFBMEI7SUFDakMsbURBQW1EOztRQUozQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRWQsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFLbkMsVUFBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbkIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0IsWUFBTyxHQUFHLEVBQUUsQ0FBQTtRQUNaLFNBQUksR0FBRyxFQUFFLENBQUE7UUFDVCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUdqQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsWUFBTyxHQUFHLEVB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b250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29va2llIH0gZnJvbSAnbmcyLWNvb2tpZXMvbmcyLWNvb2tpZXMnO1xyXG4vLyBpbXBvcnQgeyBGbGFzaE1lc3NhZ2VzU2VydmljZSB9IGZyb20gJ2FuZ3VsYXIyLWZsYXNoLW1lc3NhZ2VzJztcclxuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ29tbWFuU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tYW4tc2VydmljZS9jb21tYW4tc2VydmljZS5zZXJ2aWNlJztcclxuLy8gaW1wb3J0IHsgUmVxdWVzdE9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9odHRwJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEdsb2JsZUVudlNlcnZpY2UgfSBmcm9tICcuLi9nbG9ibGUvZ2xvYmxlLWVudi5zZXJ2aWNlJztcclxuLy8gaW1wb3J0IHsgTmc0TG9hZGluZ1NwaW5uZXJTZXJ2aWNlIH0gZnJvbSAnbmc0LWxvYWRpbmctc3Bpbm5lcic7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMtY29tcGF0L29wZXJhdG9yL2ZpbHRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1lemhlYWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaGVhZGVyLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXpIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAvLyBwcml2YXRlIGZsYXNoTWVzc2FnZXNTZXJ2aWNlOiBGbGFzaE1lc3NhZ2VzU2VydmljZSxcclxuICAgIHByaXZhdGUgY3M6IENvbW1hblNlcnZpY2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIGdsb2JsRW52OiBHbG9ibGVFbnZTZXJ2aWNlXHJcbiAgICAvLyBwcml2YXRlIHNwaW5uZXJTZXJ2aWNlOiBOZzRMb2FkaW5nU3Bpbm5lclNlcnZpY2VcclxuICApIHsgfVxyXG4gIEBWaWV3Q2hpbGQoJ2Nsb3NlYnRuJykgY2xvc2VidG46IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNEYXRlID0gbmV3IERhdGUoKTtcclxuICBkcyA9IENvb2tpZS5nZXQoJ19kcycpO1xyXG4gIHVVc3IgPSBDb29raWUuZ2V0KCdfdXNlcm5hbWUnKTtcclxuICBjb21wYW55ID0gXCJcIlxyXG4gIHllYXIgPSBcIlwiXHJcbiAgdXNlckRldGFpbHMgPSBbXTtcclxuICBoaXN0b3J5TGlua01hcCA9IHt9O1xyXG4gIGhpc3RvcnlMaW5rID0gW107XHJcbiAgY1VybDtcclxuICBoZWFkZXI7XHJcbiAgYWNjTWVudUxpc3QgPSB7fTtcclxuICBmbGFnID0gZmFsc2U7XHJcbiAga2V5TGlzdCA9IFtdO1xyXG4gIHNlYXJjaEY7XHJcbiAgdW5hbWU7XHJcbiAgcWtTY2g7XHJcbiAgc2NoSWQ7XHJcbiAgc3R0c0E7XHJcbiAgY291bnQ7XHJcbiAgbnRTY2g6IGJvb2xlYW47XHJcbiAgc3JjaENudCA9IDA7XHJcbiAgY250ID0gMDtcclxuICBmZWVkYmFja0NvbW1lbnQgPSAnJztcclxuXHJcblxyXG5cclxuICBjbGlja0ZpbHRlcihrYykge1xyXG5cclxuICAgIGlmIChrYy53aGljaCA9PSAxMykge1xyXG4gICAgICAvLyB0aGlzLmdldFNyY2hDb3VudCh0aGlzLnFrU2NoKTtcclxuICAgICAgdGhpcy5wYWNrZXRMb29rdXBTcmNDb3VudCh0aGlzLnFrU2NoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBiYWNrSG9tZSgpIHtcclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5nbG9ibEVudi5vcmlnaW4gKyBcIiNob21lXCI7XHJcbiAgfVxyXG5cclxuICByb3V0ZWhvbWUoKSB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlci5zZXJpYWxpemVVcmwodGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJ2hvbWUnXSkpO1xyXG4gICAgd2luZG93Lm9wZW4oXCIvI1wiICsgdXJsLCAnSG9tZScpO1xyXG4gIH1cclxuICBwYWNrZXRMb29rdXBTcmNDb3VudChmZ2xzdHIpIHtcclxuICAgIHRoaXMuc3JjaENudCA9IHRoaXMuc3JjaENudCArIDFcclxuICAgIGxldCBsb2dEdGwgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyZXNyZXFwYXJhJykpO1xyXG4gICAgaWYgKGZnbHN0ciA9PSB1bmRlZmluZWQgfHwgZmdsc3RyID09ICcnKSB7XHJcbiAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdygnUGxlYXNlIGVudGVyIFNlYXJjaCBQYXJhbWV0ZXInLCB7IGNzc0NsYXNzOiAnYWxlcnQtZGFuZ2VyJywgdGltZW91dDogMzAwMCB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IHIgPSB0aGlzLmNzLmZvcm1hdGVTdHIoZmdsc3RyKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdwYWNrZXRMb29rdXBTdHInLCByKTtcclxuXHJcbiAgICBpZiAodGhpcy5jVXJsID09ICcvc29saXRhaXJlcycpIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydzb2xpdGFpcmVzL3BhY2tldC1sb29rdXAvJ10sIHsgcXVlcnlQYXJhbXM6IHsgc2NoSWQ6IHRoaXMuc3JjaENudCB9IH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWydzb2xpdGFpcmVzL3BhY2tldC1sb29rdXAvJ10sIHsgcXVlcnlQYXJhbXM6IHsgc2NoSWQ6IHRoaXMuc3JjaENudCB9IH0pKTtcclxuICAgICAgd2luZG93Lm9wZW4oXCIvc29saXRhaXJlcy8jXCIgKyB1cmwsICdTb2xpdGFpcmVzJyk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGxvZ291dCgpIHtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ0xvZ291dCdcclxuICAgIHRoaXMuaGVhZGVyWydtZXRob2QnXSA9ICdsb2dPdXQnO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSBuZXcgUmVxdWVzdE9wdGlvbnMoeyBoZWFkZXJzOiB0aGlzLmhlYWRlciB9KTtcclxuICAgIC8vIGxldCBvcHRpb25zID0gbmV3IEh0dHBIZWFkZXJzKHsgaGVhZGVyczogdGhpcy5oZWFkZXIgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHsgaGVhZGVyczogdGhpcy5oZWFkZXIgfTtcclxuICAgIHRoaXMuY3MubG9nb3V0KHJlcU9iaiwgb3B0aW9ucykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIGxldCBkcyA9IENvb2tpZS5nZXQoJ19kcycpO1xyXG4gICAgICAgIENvb2tpZS5kZWxldGUoJ191c2VybmFtZScpO1xyXG4gICAgICAgIENvb2tpZS5kZWxldGUoJ19sb2d0aW1lJyk7XHJcbiAgICAgICAgQ29va2llLmRlbGV0ZSgnX2NrJyk7XHJcbiAgICAgICAgQ29va2llLmRlbGV0ZSgnX2xvZ2lkJyk7XHJcbiAgICAgICAgQ29va2llLmRlbGV0ZSgnX2FjY0NvbXBhbnknKTtcclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfYWNjeWVhcicpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdPVFAnKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnY2xpZW50S2V5Jyk7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2xvZ0lkbicpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdtZGxLZXknKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndXNlcm5hbWUnKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnc2VsTWQnKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2hnJywgJ2ZhbHNlJyk7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3RyYW5zYWN0aW9uSW5mbycpO1xyXG5cclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfdXNlcm5hbWUnLCB0aGlzLmdsb2JsRW52LnBhdGhuYW1lLCB0aGlzLmdsb2JsRW52Lmhvc3RuYW1lKTtcclxuICAgICAgICBDb29raWUuZGVsZXRlKCdfbG9ndGltZScsIHRoaXMuZ2xvYmxFbnYucGF0aG5hbWUsIHRoaXMuZ2xvYmxFbnYuaG9zdG5hbWUpO1xyXG4gICAgICAgIENvb2tpZS5kZWxldGUoJ19jaycsIHRoaXMuZ2xvYmxFbnYucGF0aG5hbWUsIHRoaXMuZ2xvYmxFbnYuaG9zdG5hbWUpO1xyXG4gICAgICAgIENvb2tpZS5kZWxldGUoJ19sb2dpZCcsIHRoaXMuZ2xvYmxFbnYucGF0aG5hbWUsIHRoaXMuZ2xvYmxFbnYuaG9zdG5hbWUpO1xyXG4gICAgICAgIENvb2tpZS5kZWxldGUoJ19hY2NDb21wYW55JywgdGhpcy5nbG9ibEVudi5wYXRobmFtZSwgdGhpcy5nbG9ibEVudi5ob3N0bmFtZSk7XHJcbiAgICAgICAgQ29va2llLmRlbGV0ZSgnX2FjY3llYXInLCB0aGlzLmdsb2JsRW52LnBhdGhuYW1lLCB0aGlzLmdsb2JsRW52Lmhvc3RuYW1lKTtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuZ2xvYmxFbnYub3JpZ2luO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhyZXNwb25zZS5tZXNzYWdlLCB7IGNzc0NsYXNzOiAnYWxlcnQtZGFuZ2VyJywgdGltZW91dDogMzAwMCB9KTtcclxuICAgICAgfVxyXG4gICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhlcnIubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG1lbnVMaXN0KCkge1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgbGV0IG1vZHVsZUtleXMgPSB0aGlzLm1kbGtbdGhpcy5jVXJsLnNwbGl0KCcvJylbMV1dO1xyXG5cclxuICAgIGlmIChDb29raWUuZ2V0KCdfbG9naWQnKSA9PSBudWxsKSByZXR1cm47XHJcbiAgICBsZXQgaGVhZGVyOiBhbnkgPSB7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICdjbGllbnRrZXknOiBDb29raWUuZ2V0KCdfY2snKSxcclxuICAgICAgJ2xvZ2luaWQnOiBDb29raWUuZ2V0KCdfbG9naWQnKSxcclxuICAgICAgJ21ldGhvZCc6ICdnZXRNZW51TGlzdCcsXHJcbiAgICAgICdtb2R1bGVrZXknOiBtb2R1bGVLZXlzLFxyXG4gICAgICAnc291cmNlJzogJ3FzJ1xyXG4gICAgfVxyXG5cclxuICAgIHJlcU9ialsnbW9kdWxlS2V5cyddID0gbW9kdWxlS2V5cztcclxuXHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9IG5ldyBSZXF1ZXN0T3B0aW9ucyh7IGhlYWRlcnM6IGhlYWRlciB9KTtcclxuICAgIC8vIGxldCBvcHRpb25zID0gbmV3IEh0dHBIZWFkZXJzKHsgaGVhZGVyczogaGVhZGVyIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IHRoaXMuaGVhZGVyIH07XHJcbiAgICBjb25zb2xlLmxvZyhyZXFPYmopO1xyXG4gICAgdGhpcy5jcy5tZW51TGlzdChyZXFPYmosIG9wdGlvbnMpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhyZXFPYmopO1xyXG4gICAgICAgIGxldCBsb2NoaXN0b3J5TWFwID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaGlzdG9yeUxpbmsnKSkgfHwge307XHJcbiAgICAgICAgbGV0IGxvY2hpc3RvcnlMaW5rID0gbG9jaGlzdG9yeU1hcFttb2R1bGVLZXlzXSB8fCBbXTtcclxuICAgICAgICB0aGlzLmhpc3RvcnlMaW5rTWFwID0ge307XHJcbiAgICAgICAgdGhpcy5oaXN0b3J5TGluayA9IFtdO1xyXG4gICAgICAgIGxldCBtZW51TGlzdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICBsZXQgY250ID0gMFxyXG4gICAgICAgIG1lbnVMaXN0LmZvckVhY2goZWxlID0+IHtcclxuICAgICAgICAgIGNudCA9IGNudCArIGVsZS5TdWJNZW51Lmxlbmd0aCArIDE7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbGV0IGRpdiA9IGNudCAvIDQ7XHJcbiAgICAgICAgZGl2ID0gTWF0aC5yb3VuZChkaXYpO1xyXG4gICAgICAgIGlmIChkaXYgPCAxKSB7XHJcbiAgICAgICAgICBsZXQgbmV3TWVudUxpc3QgPSBbXTtcclxuICAgICAgICAgIG1lbnVMaXN0LmZvckVhY2goZWxlID0+IHtcclxuICAgICAgICAgICAgZWxlW1wiaXNoZHJcIl0gPSBcIllcIjtcclxuICAgICAgICAgICAgbmV3TWVudUxpc3QucHVzaChlbGUpXHJcbiAgICAgICAgICAgIGxldCBleHRtZW51X2lkbiA9IGVsZS5tZW51X2lkbjtcclxuICAgICAgICAgICAgaWYgKGxvY2hpc3RvcnlMaW5rLmluZGV4T2YoZXh0bWVudV9pZG4pICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5TGluay5wdXNoKGV4dG1lbnVfaWRuKTtcclxuICAgICAgICAgICAgICB0aGlzLmhpc3RvcnlMaW5rTWFwW2V4dG1lbnVfaWRuXSA9IGVsZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsZS5TdWJNZW51LmZvckVhY2goc3ViZWxlID0+IHtcclxuICAgICAgICAgICAgICBuZXdNZW51TGlzdC5wdXNoKHN1YmVsZSlcclxuICAgICAgICAgICAgICBleHRtZW51X2lkbiA9IHN1YmVsZS5tZW51X2lkbjtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKGxvY2hpc3RvcnlMaW5rLmluZGV4T2YoZXh0bWVudV9pZG4pICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpc3RvcnlMaW5rLnB1c2goZXh0bWVudV9pZG4pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5TGlua01hcFtleHRtZW51X2lkbl0gPSBzdWJlbGU7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuYWNjTWVudUxpc3RbMV0gPSBuZXdNZW51TGlzdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IGtleSA9IDE7XHJcbiAgICAgICAgICBsZXQgbmV3TWVudUxpc3QgPSBbXTtcclxuICAgICAgICAgIGxldCBsc0NudCA9IDA7XHJcbiAgICAgICAgICBtZW51TGlzdC5mb3JFYWNoKGVsZSA9PiB7XHJcbiAgICAgICAgICAgIGxzQ250ID0gbHNDbnQgKyBlbGUuU3ViTWVudS5sZW5ndGggKyAxO1xyXG4gICAgICAgICAgICBlbGVbXCJpc2hkclwiXSA9IFwiWVwiO1xyXG4gICAgICAgICAgICBuZXdNZW51TGlzdC5wdXNoKGVsZSlcclxuICAgICAgICAgICAgbGV0IGV4dG1lbnVfaWRuID0gZWxlLm1lbnVfaWRuO1xyXG4gICAgICAgICAgICBpZiAobG9jaGlzdG9yeUxpbmsuaW5kZXhPZihleHRtZW51X2lkbikgIT0gLTEpIHtcclxuICAgICAgICAgICAgICB0aGlzLmhpc3RvcnlMaW5rLnB1c2goZXh0bWVudV9pZG4pO1xyXG4gICAgICAgICAgICAgIHRoaXMuaGlzdG9yeUxpbmtNYXBbZXh0bWVudV9pZG5dID0gZWxlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxlLlN1Yk1lbnUuZm9yRWFjaChzdWJlbGUgPT4ge1xyXG4gICAgICAgICAgICAgIHN1YmVsZVtcImlzaGRyXCJdID0gXCJOXCI7XHJcbiAgICAgICAgICAgICAgbmV3TWVudUxpc3QucHVzaChzdWJlbGUpXHJcbiAgICAgICAgICAgICAgZXh0bWVudV9pZG4gPSBzdWJlbGUubWVudV9pZG47XHJcblxyXG4gICAgICAgICAgICAgIGlmIChsb2NoaXN0b3J5TGluay5pbmRleE9mKGV4dG1lbnVfaWRuKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaXN0b3J5TGluay5wdXNoKGV4dG1lbnVfaWRuKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlzdG9yeUxpbmtNYXBbZXh0bWVudV9pZG5dID0gc3ViZWxlO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKGxzQ250ID49IGRpdiAmJiBuZXdNZW51TGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hY2NNZW51TGlzdFtrZXldID0gbmV3TWVudUxpc3Q7XHJcbiAgICAgICAgICAgICAga2V5ID0ga2V5ICsgMTtcclxuICAgICAgICAgICAgICBuZXdNZW51TGlzdCA9IFtdO1xyXG4gICAgICAgICAgICAgIGxzQ250ID0gMDtcclxuICAgICAgICAgICAgfVxyXG5cclxuXHJcblxyXG5cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKGxzQ250ICE9IDApXHJcbiAgICAgICAgICAgIHRoaXMuYWNjTWVudUxpc3Rba2V5XSA9IG5ld01lbnVMaXN0O1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIHRoaXMua2V5TGlzdCA9IE9iamVjdC5rZXlzKHRoaXMuYWNjTWVudUxpc3QpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhyZXNwb25zZS5tZXNzYWdlLCB7IGNzc0NsYXNzOiAnYWxlcnQtZGFuZ2VyJywgdGltZW91dDogMzAwMCB9KTtcclxuICAgICAgfVxyXG4gICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhlcnIubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbG9nT3V0Qm94KCkge1xyXG4gICAgdmFyIGRpc3BsYXkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWItc2lnbm91dCcpLnN0eWxlLmRpc3BsYXk7XHJcblxyXG4gICAgaWYgKGRpc3BsYXkgPT0gJ25vbmUnIHx8IGRpc3BsYXkgPT0gJycpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21iLXNpZ25vdXQnKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYi1zaWdub3V0Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIH1cclxuICB9XHJcbiAgaXNwYXNzd29yZENoYW5nZSA9IGZhbHNlO1xyXG4gIENoYW5nZVBhc3N3b3JkKCkge1xyXG5cclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIGlmIChDb29raWUuZ2V0KCdfbG9naWQnKSA9PSBudWxsKSByZXR1cm47XHJcbiAgICBsZXQgaGVhZGVyOiBhbnkgPSB7XHJcbiAgICAgICdjbGllbnRrZXknOiBDb29raWUuZ2V0KCdfY2snKSxcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgJ21vZHVsZWtleSc6IHRoaXMubWRsa1t0aGlzLmNVcmwuc3BsaXQoJy8nKVsxXV0sXHJcbiAgICAgICdsb2dpbmlkJzogQ29va2llLmdldCgnX2xvZ2lkJyksXHJcbiAgICAgICdzb3VyY2UnOiAncXMnXHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gXCJhcHBsaWNhdGlvbkFjY2Vzc01hc3RlclwiO1xyXG4gICAgcmVxT2JqW1widXNlcm5hbWVcIl0gPSB0aGlzLnVVc3I7XHJcbiAgICBoZWFkZXJbXCJtZXRob2RcIl0gPSBcImxvYWRDaGFuZ2VQYXNzXCI7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9IG5ldyBSZXF1ZXN0T3B0aW9ucyh7IGhlYWRlcnM6IGhlYWRlciB9KTtcclxuICAgIC8vIGxldCBvcHRpb25zID0gbmV3IEh0dHBIZWFkZXJzKHsgaGVhZGVyczogaGVhZGVyIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IHRoaXMuaGVhZGVyIH07XHJcbiAgICB0aGlzLmNzLmxvYWQocmVxT2JqLCBvcHRpb25zLCAnY29udGFjdC9sb2FkQ29udGFjdCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgdGhpcy51c2VyRGV0YWlscyA9IHJlc3VsdC51c2VyRGV0YWlscztcclxuICAgICAgICB0aGlzLmlzcGFzc3dvcmRDaGFuZ2UgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYW5nZVB3ZEJ0bicpLmNsaWNrKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgLy8gdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KHJlc3BvbnNlLm1lc3NhZ2UsIHtcclxuICAgICAgICAvLyAgIGNzc0NsYXNzOiBcImFsZXJ0LWRhbmdlclwiLFxyXG4gICAgICAgIC8vICAgdGltZW91dDogMzAwMFxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgLy8gdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KGVyci5tZXNzYWdlLCB7XHJcbiAgICAgICAgLy8gICBjc3NDbGFzczogXCJhbGVydC1kYW5nZXJcIixcclxuICAgICAgICAvLyAgIHRpbWVvdXQ6IDMwMDBcclxuICAgICAgICAvLyB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gIH1cclxuICBwYXNzd29yZENoYW5nZSgpIHtcclxuICAgIHRoaXMuaXNwYXNzd29yZENoYW5nZSA9IHRydWU7XHJcblxyXG4gIH1cclxuICBTYXZlUGFzc3dvcmQoKSB7XHJcbiAgICBpZiAodGhpcy5pc3Bhc3N3b3JkQ2hhbmdlKSB7XHJcbiAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgICBpZiAoQ29va2llLmdldCgnX2xvZ2lkJykgPT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgICBsZXQgaGVhZGVyOiBhbnkgPSB7XHJcbiAgICAgICAgJ2NsaWVudGtleSc6IENvb2tpZS5nZXQoJ19jaycpLFxyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgJ21vZHVsZWtleSc6IHRoaXMubWRsa1t0aGlzLmNVcmwuc3BsaXQoJy8nKVsxXV0sXHJcbiAgICAgICAgJ2xvZ2luaWQnOiBDb29raWUuZ2V0KCdfbG9naWQnKSxcclxuICAgICAgICAnc291cmNlJzogJ3FzJ1xyXG4gICAgICB9XHJcbiAgICAgIGRlYnVnZ2VyXHJcbiAgICAgIGxldCB1c3JEdGwgPSB0aGlzLnVzZXJEZXRhaWxzWzBdO1xyXG4gICAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSBcInNldFBhc3N3b3JkRm9ybVwiO1xyXG4gICAgICByZXFPYmpbXCJ1c2VySWRuXCJdID0gdXNyRHRsLnVzZXJJZG47XHJcbiAgICAgIHJlcU9ialtcInBhc3N3b3JkXCJdID0gdXNyRHRsLnBhc3N3b3JkO1xyXG4gICAgICBoZWFkZXJbXCJtZXRob2RcIl0gPSBcImNoYW5nZVBhc3N3b3JkXCI7XHJcbiAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlcU9iaikpO1xyXG4gICAgICAvLyBsZXQgb3B0aW9ucyA9IG5ldyBSZXF1ZXN0T3B0aW9ucyh7IGhlYWRlcnM6IGhlYWRlciB9KTtcclxuICAgICAgLy8gbGV0IG9wdGlvbnMgPSBuZXcgSHR0cEhlYWRlcnMoeyBoZWFkZXJzOiBoZWFkZXIgfSk7XHJcbiAgICAgIGxldCBvcHRpb25zID0geyBoZWFkZXJzOiB0aGlzLmhlYWRlciB9O1xyXG4gICAgICB0aGlzLmNzLmxvYWQocmVxT2JqLCBvcHRpb25zLCAnY29udGFjdC9sb2FkQ29udGFjdCcpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5jbG9zZWJ0bi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMuaXNwYXNzd29yZENoYW5nZSA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KHJlc3BvbnNlLm1lc3NhZ2UsIHtcclxuICAgICAgICAgIC8vICAgY3NzQ2xhc3M6IFwiYWxlcnQtc3VjY2Vzc1wiLFxyXG4gICAgICAgICAgLy8gICB0aW1lb3V0OiAzMDAwXHJcbiAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIC8vIHRoaXMuZmxhc2hNZXNzYWdlc1NlcnZpY2Uuc2hvdyhyZXNwb25zZS5tZXNzYWdlLCB7XHJcbiAgICAgICAgICAvLyAgIGNzc0NsYXNzOiBcImFsZXJ0LWRhbmdlclwiLFxyXG4gICAgICAgICAgLy8gICB0aW1lb3V0OiAzMDAwXHJcbiAgICAgICAgICAvLyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8gdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3coZXJyLm1lc3NhZ2UsIHtcclxuICAgICAgICAgIC8vICAgY3NzQ2xhc3M6IFwiYWxlcnQtZGFuZ2VyXCIsXHJcbiAgICAgICAgICAvLyAgIHRpbWVvdXQ6IDMwMDBcclxuICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3coXCJQbGVhc2Ugc3BlY2lmeSBuZXcgcGFzc3dvcmRcIiwge1xyXG4gICAgICAvLyAgIGNzc0NsYXNzOiBcImFsZXJ0LWRhbmdlclwiLFxyXG4gICAgICAvLyAgIHRpbWVvdXQ6IDMwMDBcclxuICAgICAgLy8gfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcblxyXG4gIFNob3dNZW51KHR5cCwgbWVudWR0bCkge1xyXG4gICAgdmFyIG1lbnVkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVudURpdicpLnN0eWxlLmRpc3BsYXk7XHJcbiAgICBpZiAobWVudWRpdiA9PSAnbm9uZScpXHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZW51RGl2Jykuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICBlbHNlXHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZW51RGl2Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIGlmICh0eXAgPT0gJ2xuaycpIHtcclxuICAgICAgZGVidWdnZXJcclxuICAgICAgbGV0IG1lbnVfaWRuID0gbWVudWR0bC5tZW51X2lkbiB8fCAnJztcclxuICAgICAgbGV0IG1vZHVsa2V5ID0gdGhpcy5tZGxrW3RoaXMuY1VybC5zcGxpdCgnLycpWzFdXVxyXG4gICAgICBsZXQgaGlzdG9yeUxpbmttYXAgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdoaXN0b3J5TGluaycpKSB8fCB7fTtcclxuICAgICAgbGV0IG1vZHVsZUxpbmsgPSBoaXN0b3J5TGlua21hcFttb2R1bGtleV0gfHwgW107XHJcbiAgICAgIGlmIChtZW51X2lkbiAhPSAnJykge1xyXG4gICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgaWYgKG1vZHVsZUxpbmsuaW5kZXhPZihtZW51X2lkbikgIT0gLTEpIHtcclxuICAgICAgICAgIG1vZHVsZUxpbmsuc3BsaWNlKG1vZHVsZUxpbmsuaW5kZXhPZihtZW51X2lkbiksIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtb2R1bGVMaW5rLnNwbGljZSgwLCAwLCBtZW51X2lkbik7XHJcbiAgICAgICAgaWYgKG1vZHVsZUxpbmsubGVuZ3RoID4gMTApIHtcclxuICAgICAgICAgIGxldCBudW1PZnJlbW92ZSA9IG1vZHVsZUxpbmsubGVuZ3RoIC0gMTA7XHJcbiAgICAgICAgICBtb2R1bGVMaW5rLnNwbGljZSgxMCwgbnVtT2ZyZW1vdmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBoaXN0b3J5TGlua21hcFttb2R1bGtleV0gPSBtb2R1bGVMaW5rO1xyXG4gICAgICAgIHRoaXMuaGlzdG9yeUxpbmsgPSBtb2R1bGVMaW5rO1xyXG4gICAgICAgIHRoaXMuaGlzdG9yeUxpbmtNYXBbbWVudV9pZG5dID0gbWVudWR0bDtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaGlzdG9yeUxpbmsnLCBKU09OLnN0cmluZ2lmeShoaXN0b3J5TGlua21hcCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIEVkaXRDb21wYW55KCkge1xyXG4gICAgQ29va2llLmRlbGV0ZSgnX2FjY0NvbXBhbnknLCB0aGlzLmdsb2JsRW52LnBhdGhuYW1lLCB0aGlzLmdsb2JsRW52Lmhvc3RuYW1lKTtcclxuICAgIENvb2tpZS5kZWxldGUoJ19hY2N5ZWFyJywgdGhpcy5nbG9ibEVudi5wYXRobmFtZSwgdGhpcy5nbG9ibEVudi5ob3N0bmFtZSk7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2ZhY29tcGFueSddKTtcclxuICB9XHJcbiAgcmJpID0gXCJcIjtcclxuICBiYW5rID0gXCJcIjtcclxuICBjdXRvbWltcCA9IFwiXCI7XHJcbiAgY3V0b21leHAgPSBcIlwiO1xyXG4gIG1kbGtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLm1kbGsgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZGxLZXknKSk7XHJcbiAgICAgdGhpcy5jVXJsID0gd2luZG93LmxvY2F0aW9uLmhhc2g7XHJcbiAgICAgdGhpcy5jVXJsPXRoaXMuY1VybC5yZXBsYWNlKFwiI1wiLCcnKTtcclxuXHJcbiAgICAvLyBHZXR0aW5nIHRoZSBmaW5hbCB1cmxcclxuICAgIHRoaXMucm91dGVyLmV2ZW50c1xyXG4gICAgICAuZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKG5hdkVuZDogTmF2aWdhdGlvbkVuZCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY1VybCA9IG5hdkVuZC51cmxBZnRlclJlZGlyZWN0cztcclxuICAgICAgICB0aGlzLm1lbnVMaXN0KCk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jVXJsKTtcclxuICAgICAgfSk7XHJcbiAgICAvLyB0aGlzLnJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXHJcbiAgICAvLyAuc3Vic2NyaWJlKChuYXZFbmQ6IE5hdmlnYXRpb25FbmQpID0+IHtcclxuICAgIC8vICAgdGhpcy5jVXJsID0gbmF2RW5kLnVybEFmdGVyUmVkaXJlY3RzO1xyXG4gICAgLy8gICB0aGlzLm1lbnVMaXN0KCk7XHJcbiAgICAvLyAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY1VybCk7XHJcbiAgICAvLyB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5jVXJsID09ICcnKVxyXG4gICAgICB0aGlzLmNVcmwgPSBcIi9ob21lXCI7XHJcbiAgICB0aGlzLmhlYWRlciA9IHtcclxuICAgICAgJ2NsaWVudGtleSc6IENvb2tpZS5nZXQoJ19jaycpLFxyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAnZHMnOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnRFMnKSxcclxuICAgICAgJ2FwcGtleSc6ICdPOTFZSypEdyRrRTdkTnBjVm1HTHZMeFdNSjBDMDBlTycsXHJcbiAgICAgICdtb2R1bGVrZXknOiAnV0hpNlNSTFk2IyQ4MmJ6SmZANElVeDlvSFNMYm4ycUgnLC8vIG1kbGtbY1VybC5zcGxpdCgnLycpWzFdXSxcclxuICAgICAgJ2xvZ2luaWQnOiBDb29raWUuZ2V0KCdfbG9naWQnKSxcclxuICAgICAgJ3NvdXJjZSc6ICdxcydcclxuICAgIH07XHJcblxyXG5cclxuICB9XHJcblxyXG4gIE9wZW5PcHRpb24oKSB7XHJcbiAgICB2YXIgaXNkaXNwbGF5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vcmVvcHRpb24nKS5zdHlsZS5kaXNwbGF5O1xyXG4gICAgaWYgKGlzZGlzcGxheSA9PSAnbm9uZScpIHtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vcmVvcHRpb24nKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb3Jlb3B0aW9uJykuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPHVsIGNsYXNzPVwieC1uYXZpZ2F0aW9uIHgtbmF2aWdhdGlvbi1ob3Jpem9udGFsIHgtbmF2aWdhdGlvbi1wYW5lbFwiIHN0eWxlPVwicGFkZGluZy1yaWdodDogMHB4O3otaW5kZXg6IDEwMDBcIj5cclxuICA8bGkgc3R5bGU9XCJiYWNrZ3JvdW5kOiAjM2I1OTk4O1wiPlxyXG4gICAgPGEgKGNsaWNrKT1cInJvdXRlaG9tZSgpXCIgKm5nSWY9XCJjVXJsICE9ICcvaG9tZSdcIiBjbGFzcz1cInByb2ZpbGUtbWluaVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImhlYWRcIj5FWjwvc3Bhbj5cclxuICAgIDwvYT5cclxuICA8L2xpPlxyXG4gIDxsaSAqbmdJZj1cImNVcmwgIT0gJy9ob21lJyBcIj5cclxuICAgIDxuYXYgY2xhc3M9XCJuYXZiYXIgbmF2YmFyLWV4cGFuZC1tZCBuYXZiYXItbGlnaHQgYmctbGlnaHRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm5hdmJhci1jb2xsYXBzZSBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdG9wXCIgaWQ9XCJuYXZiYXJDb2xsYXBzZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYXZiYXItbmF2XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWl0ZW0gZHJvcGRvd25cIiBzdHlsZT1cInotaW5kZXg6MTBcIj5cclxuICAgICAgICAgICAgPGEgKGNsaWNrKT1cIlNob3dNZW51KCdiYXInLCcnKVwiIGNsYXNzPVwibmF2LWxpbmsgZHJvcGRvd24tdG9nZ2xlXCJcclxuICAgICAgICAgICAgICBzdHlsZT1cImNvbG9yOiAjZmZmOyBmb250LXNpemU6IDIwcHg7cGFkZGluZzowcHggO21hcmdpbi10b3A6IDVweFwiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIj4gPGlcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtYmFyc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XHJcbiAgICAgICAgICAgIDxkaXYgaWQ9XCJtZW51RGl2XCIgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO2JhY2tncm91bmQtY29sb3I6ICMxZDIxMjdcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1oaXN0b3J5LWNvbHVtbiBjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8aDI+SGlzdG9yeTwvaDI+XHJcbiAgICAgICAgICAgICAgICAgIDx1bCBpZD1cIm5hdi1oaXN0b3J5XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInNlcnZpY2UtaXRlbVwiICpuZ0Zvcj1cImxldCBtZW51X2lkbiBvZiBoaXN0b3J5TGlua1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiMve3toaXN0b3J5TGlua01hcFttZW51X2lkbl1bJ2xuayddfX1cIiBjbGFzcz1cImhlYWRlcmxpbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiU2hvd01lbnUoJ2JhcicsJycpXCI+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlcnZpY2UtbGFiZWxcIj57e2hpc3RvcnlMaW5rTWFwW21lbnVfaWRuXVsnaGRyJ119fTwvc3Bhbj48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGNvbC1tZC0xMiBhd3NjLXNlcnZpY2VzLXNlYXJjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJhd3NjLWlucHV0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cImF3c2Mtc2VydmljZXMtc2VhcmNoLWF1dG9jb21wbGV0ZVwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJGaW5kIGEgTWVudSBieSBuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1aS1hdXRvY29tcGxldGUtaW5wdXRcIiBuYW1lPVwic2VhcmNoRlwiIFsobmdNb2RlbCldPVwic2VhcmNoRlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImF3c2Mtc2VydmljZXMtY29udGFpbmVyXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBrZXkgb2Yga2V5TGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY2NtZW51IG9mIGFjY01lbnVMaXN0W2tleV0gfCB0YWJsZVNlYXJjaDpzZWFyY2hGO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiYWNjbWVudS5pc2hkcj09J1knXCIgY2xhc3M9XCJhd3NjLWhlYWRlciBpY28tY29tcHV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWNjbWVudS5sbmsgIT0nIycgJiYgYWNjbWVudS5sbmsgIT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYW5nbGUtZG91YmxlLXJpZ2h0XCIgc3R5bGU9XCJmb250LXNpemU6MjBweDtjb2xvcjp3aGl0ZTtcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiMve3thY2NtZW51Lmxua319XCIgKGNsaWNrKT1cIlNob3dNZW51KCdsbmsnLGFjY21lbnUpXCIgY2xhc3M9XCJoZWFkZXJsaW5rXCI+IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VydmljZS1sYWJlbFwiPiB7e2FjY21lbnUuaGRyfX08L3NwYW4+IDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY2NtZW51LmxuayA9PScjJyB8fCBhY2NtZW51LmxuayA9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hbmdsZS1kb3VibGUtZG93blwiIHN0eWxlPVwiZm9udC1zaXplOjIwcHg7Y29sb3I6d2hpdGU7XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YWNjbWVudS5oZHJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJhY2NtZW51LmlzaGRyPT0nTidcIiBjbGFzcz1cInNlcnZpY2UtaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiIy97e2FjY21lbnUubG5rfX1cIiAoY2xpY2spPVwiU2hvd01lbnUoJ2xuaycsYWNjbWVudSlcIj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZXJ2aWNlLWxhYmVsXCI+e3thY2NtZW51Lmhkcn19PC9zcGFuPjwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25hdj5cclxuICA8L2xpPlxyXG4gIDxsaSBjbGFzcz1cInJzLW5vbmVcIiBbbmdTdHlsZV09XCJ7J3dpZHRoJyA6IGNVcmwgPT0gJy9ob21lJyA/ICcyNTBweCcgOiAnMHB4J31cIj5cclxuICAgICZuYnNwO1xyXG4gIDwvbGk+XHJcbiAgPGxpIGNsYXNzPVwicnMtbm9uZVwiIHN0eWxlPVwibWFyZ2luOiAxMHB4O1wiPlxyXG4gICAgPGZvcm0gY2xhc3M9XCJmb3JtLWlubGluZSBteS0yXCI+XHJcbiAgICAgIDx0ZXh0YXJlYSBzdHlsZT1cIndoaXRlLXNwYWNlOiBwcmU7XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cIlNUT05FIElELyBSRiBJRCBzZWFyY2hcIiBbKG5nTW9kZWwpXT1cInFrU2NoXCJcclxuICAgICAgICBpZD1cImZvZ2dsZVwiIG5hbWU9XCJmb29nbGVcIiBjb2xzPVwiNDVcIiByb3dzPVwiMVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgIDxzcGFuIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyBcclxuICAgICAgICB0b3A6IC0ycHg7XHJcbiAgICAgICAgcmlnaHQ6IDI4cHg7XHJcbiAgICAgICAgY29sb3I6IHJnYigxNTAsIDE0NCwgMTQ0KTtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcclxuICAgICAgICB6LWluZGV4OiA2O1xyXG4gICAgICAgIHdpZHRoOiAzNXB4O1xyXG4gICAgICAgIGhlaWdodDogMzZweDtcclxuICAgICAgICBsaW5lLWhlaWdodDogMzRweDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgLyogcG9pbnRlci1ldmVudHM6IG5vbmU7ICovXHJcbiAgICAgICAgZm9udC1zaXplOiAxN3B4O1wiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoXCIgKGNsaWNrKT1cInBhY2tldExvb2t1cFNyY0NvdW50KHFrU2NoKTtcIj48L2k+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJoZWxwYyBtci1zbS0yXCIgZGF0YS10b2dnbGU9XCJ0b29sdGlwXCIgZGF0YS1wbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgIHRpdGxlPVwiU1RPTkUgLyBDRVJUIE5PIC8gR0lBIFJEIDEuMjAtMS4zMCBGIFZTMSAzRVggTlwiPjxpIGNsYXNzPVwiZmEgZmEtaW5mb1wiPjwvaT48L3NwYW4+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9saT5cclxuICA8bGkgY2xhc3M9XCJwdWxsLXJpZ2h0XCIgZGF0YS10b2dnbGU9XCJ0b29sdGlwXCIgZGF0YS1wbGFjZW1lbnQ9XCJsZWZ0XCIgdGl0bGU9XCJDaGFuZ2UgcGFzc3dvcmRcIj5cclxuICAgIDxhIChjbGljayk9XCJDaGFuZ2VQYXNzd29yZCgpXCIgc3R5bGU9XCJwYWRkaW5nOjE1cHggNXB4XCIgY2xhc3M9XCJtYi1jb250cm9sXCI+XHJcbiAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4XCIgY2xhc3M9XCJmYSBmYS1rZXlcIj48L3NwYW4+XHJcbiAgICA8L2E+XHJcbiAgPC9saT5cclxuICA8bGkgY2xhc3M9XCJwdWxsLXJpZ2h0XCIgZGF0YS10b2dnbGU9XCJ0b29sdGlwXCIgZGF0YS1wbGFjZW1lbnQ9XCJsZWZ0XCIgdGl0bGU9XCJMb2cgT3V0XCI+XHJcbiAgICA8YSAoY2xpY2spPVwibG9nT3V0Qm94KClcIiBjbGFzcz1cIm1iLWNvbnRyb2xcIiBzdHlsZT1cInBhZGRpbmc6MTVweCA1cHhcIiBkYXRhLWJveD1cIiNtYi1zaWdub3V0XCI+XHJcbiAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4XCIgY2xhc3M9XCJmYSBmYS1zaWduLW91dFwiPjwvc3Bhbj5cclxuICAgIDwvYT5cclxuICA8L2xpPlxyXG4gIDxsaSBjbGFzcz1cInB1bGwtcmlnaHRcIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInVkXCI+IDxzcGFuIGNsYXNzPVwidGV4dC1jYXBpdGFsaXplXCI+e3t1VXNyICsnIHwnfX08L3NwYW4+IHt7ZHN9fSA8L2xhYmVsPlxyXG4gIDwvbGk+XHJcbjwvdWw+XHJcbjx1bCBjbGFzcz1cIngtbmF2aWdhdGlvbiB4LW5hdmlnYXRpb24taG9yaXpvbnRhbCB4LW5hdmlnYXRpb24tcGFuZWwgc3Itbm9uZVwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2JmYmZiZlwiPlxyXG4gIDxsaSBzdHlsZT1cIm1hcmdpbjogMTBweDtcIj5cclxuICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmUgbXktMlwiPlxyXG4gICAgICA8dGV4dGFyZWEgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogcHJlO1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJTVE9ORSBJRC8gUkYgSUQgc2VhcmNoXCIgWyhuZ01vZGVsKV09XCJxa1NjaFwiXHJcbiAgICAgICAgaWQ9XCJmb2dnbGVcIiBuYW1lPVwiZm9vZ2xlXCIgY29scz1cIjQ1XCIgcm93cz1cIjFcIj48L3RleHRhcmVhPlxyXG4gICAgICA8c3BhbiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgXHJcbiAgICAgIHRvcDogLTJweDtcclxuICAgICAgcmlnaHQ6IDI4cHg7XHJcbiAgICAgIGNvbG9yOiByZ2IoMTUwLCAxNDQsIDE0NCk7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xyXG4gICAgICB6LWluZGV4OiA2O1xyXG4gICAgICB3aWR0aDogMzBweDtcclxuICAgICAgaGVpZ2h0OiAzNnB4O1xyXG4gICAgICBsaW5lLWhlaWdodDogMzRweDtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAvKiBwb2ludGVyLWV2ZW50czogbm9uZTsgKi9cclxuICAgICAgZm9udC1zaXplOiAxN3B4O1wiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoXCIgKGNsaWNrKT1cInBhY2tldExvb2t1cFNyY0NvdW50KHFrU2NoKTtcIj48L2k+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvZm9ybT5cclxuICA8L2xpPlxyXG48L3VsPlxyXG5cclxuPGRpdiBjbGFzcz1cIm1vZGFsXCIgaWQ9XCJjaGFuZ2VQd2RQb3BcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwic21hbGxNb2RhbEhlYWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gIGRhdGEtYmFja2Ryb3A9XCJzdGF0aWNcIiBkYXRhLWtleWJvYXJkPVwiZmFsc2VcIj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgI2Nsb3NlYnRuPlxyXG4gICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJzbWFsbE1vZGFsSGVhZFwiPkNoYW5nZSBQYXNzd29yZDwvaDQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHVzZXIgb2YgdXNlckRldGFpbHM7IGxldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIiBjbGFzcz1cImNvbC1tZC0yXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0XCI+VXNlcm5hbWUgOiA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTJcIiBzdHlsZT1cInRleHQtYWxpZ246IGxlZnRcIj57e3VzZXI/LnVzZXJuYW1lfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiIHN0eWxlPVwibWFyZ2luLXRvcDogNXB4XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIiBjbGFzcz1cImNvbC1tZC0yXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0XCI+UGFzc3dvcmQ6PC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGNsYXNzPVwiY29sLW1kLTEwXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJwYXNzd29yZENoYW5nZSgpXCIgWyhuZ01vZGVsKV09XCJ1c2VyLnBhc3N3b3JkXCIgbmFtZT1cInBhc3N3b3JkXCIgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCIgI2Nsb3NlYnRuIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiU2F2ZVBhc3N3b3JkKClcIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIGFwcEFwcE5vRGJsQ2xpY2s+Q29uZmlybTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxidXR0b24gaWQ9XCJjaGFuZ2VQd2RCdG5cIiBbaGlkZGVuXT1cInRydWVcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjY2hhbmdlUHdkUG9wXCI+PC9idXR0b24+Il19
@@ -3448,16 +3448,16 @@ class EzHeaderComponent {
3448
3448
  }
3449
3449
  ngOnInit() {
3450
3450
  this.mdlk = JSON.parse(localStorage.getItem('mdlKey'));
3451
- // this.cUrl = window.location.hash;
3452
- // this.cUrl=this.cUrl.replace("#",'');
3451
+ this.cUrl = window.location.hash;
3452
+ this.cUrl = this.cUrl.replace("#", '');
3453
3453
  // Getting the final url
3454
- // this.router.events
3455
- // .filter(e => e instanceof NavigationEnd)
3456
- // .subscribe((navEnd: NavigationEnd) => {
3457
- // this.cUrl = navEnd.urlAfterRedirects;
3458
- // this.menuList();
3459
- // // console.log(this.cUrl);
3460
- // });
3454
+ this.router.events
3455
+ .filter(e => e instanceof NavigationEnd)
3456
+ .subscribe((navEnd) => {
3457
+ this.cUrl = navEnd.urlAfterRedirects;
3458
+ this.menuList();
3459
+ // console.log(this.cUrl);
3460
+ });
3461
3461
  // this.router.events.pipe(filter(e => e instanceof NavigationEnd))
3462
3462
  // .subscribe((navEnd: NavigationEnd) => {
3463
3463
  // this.cUrl = navEnd.urlAfterRedirects;