adb-shared 3.0.29 → 3.0.30

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.
@@ -34,7 +34,7 @@ export class ADBHeaderComponent {
34
34
  ngOnInit() {
35
35
  this.url = window.location.href;
36
36
  const baseUrl = this.envService.environment.resourceUrl;
37
- const url = this.artfakta ? `${baseUrl}/assets/links.json}` : `${baseUrl}/assets/artportalen/links.json}`;
37
+ const url = this.artfakta ? '/assets/links.json' : '/assets/artportalen/links.json';
38
38
  this.subscription.add(this.httpClient.get(baseUrl + url).subscribe(result => {
39
39
  this.navigation = result;
40
40
  }));
@@ -51,7 +51,7 @@ export class ADBHeaderComponent {
51
51
  }
52
52
  loadTranslation(baseUrl, lang) {
53
53
  //TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)
54
- const url = this.artfakta ? `${baseUrl}/assets/i18n/${lang}.json}` : `${baseUrl}/assets/artportalen/i18n/${lang}.json}`;
54
+ const url = this.artfakta ? baseUrl + `/assets/i18n/${lang}.json` : baseUrl + `/assets/artportalen/i18n/${lang}.json`;
55
55
  this.subscription.add(this.httpClient.get(url).subscribe(translations => {
56
56
  this.trans.setTranslation(lang, translations, true);
57
57
  this.translationFinished = true;
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
104
104
  }], userName: [{
105
105
  type: Input
106
106
  }] } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvYWRiLWhlYWRlci9hZGItaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9hZGItaGVhZGVyL2FkYi1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBT3BDLE1BQU0sT0FBTyxrQkFBa0I7SUEwQjdCLFlBQ1UsVUFBc0IsRUFDdEIsVUFBOEIsRUFDL0IsS0FBdUI7UUFGdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQUMvQixVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQTVCeEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRTlDLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFhekIsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRTVCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFRckIsQ0FBQztJQXZCRCxJQUFhLFFBQVEsQ0FBQyxRQUFnQjtRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixNQUFNLFFB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Q29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbiB9IGZyb20gJy4vbmF2aWdhdGlvbi5tb2RlbCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWRiLWhlYWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FkYi1oZWFkZXIuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBREJIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgQE91dHB1dCgpIGxvZ2luQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbG9nb3V0Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZHJvcE1lbnVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBJbnB1dCgpIGFydGZha3RhID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzZXQgdXNlck5hbWUoZnVsbE5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5mdWxsTmFtZSA9IGZ1bGxOYW1lO1xyXG4gICAgY29uc3Qgc3BsaXR0ZWQgPSBmdWxsTmFtZS5zcGxpdCgnICcpO1xyXG4gICAgaWYgKHNwbGl0dGVkPy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGNvbnN0IGluaXRpYWxzID0gc3BsaXR0ZWQuc2hpZnQoKS5jaGFyQXQoMCkgKyBzcGxpdHRlZC5wb3AoKS5jaGFyQXQoMCk7XHJcbiAgICAgIHRoaXMuaW5pdGlhbHMgPSBpbml0aWFscy50b1VwcGVyQ2FzZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbml0aWFscyA9IHRoaXMuZnVsbE5hbWUgPyB0aGlzLmZ1bGxOYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpIDogdGhpcy5mdWxsTmFtZTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBmdWxsTmFtZTogc3RyaW5nO1xyXG4gIHRyYW5zbGF0aW9uRmluaXNoZWQgPSBmYWxzZTtcclxuICBpbml0aWFsczogc3RyaW5nO1xyXG4gIHNob3dNZW51ID0gZmFsc2U7XHJcbiAgc2hvd1VzZXJNZW51ID0gZmFsc2U7XHJcbiAgbmF2aWdhdGlvbjogTmF2aWdhdGlvbjtcclxuICB1cmw6IHN0cmluZztcclxuICBleHBhbmRlZExpbms6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgZW52U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgcHVibGljIHRyYW5zOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMudXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5lbnZTZXJ2aWNlLmVudmlyb25tZW50LnJlc291cmNlVXJsO1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5hcnRmYWt0YT9gJHtiYXNlVXJsfS9hc3NldHMvbGlua3MuanNvbn1gOmAke2Jhc2VVcmx9L2Fzc2V0cy9hcnRwb3J0YWxlbi9saW5rcy5qc29ufWA7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5odHRwQ2xpZW50LmdldDxOYXZpZ2F0aW9uPihiYXNlVXJsICsgdXJsKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgdGhpcy5uYXZpZ2F0aW9uID0gcmVzdWx0O1xyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5pbml0VHJhbnNsYXRpb25zKGJhc2VVcmwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0VHJhbnNsYXRpb25zKGJhc2VVcmw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudHJhbnMuc3RvcmUudHJhbnNsYXRpb25zW3RoaXMudHJhbnMuY3VycmVudExhbmddKSB7XHJcbiAgICAgIHRoaXMubG9hZFRyYW5zbGF0aW9uKGJhc2VVcmwsIHRoaXMudHJhbnMuY3VycmVudExhbmcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMudHJhbnMub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy50cmFuc2xhdGlvbkZpbmlzaGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubG9hZFRyYW5zbGF0aW9uKGJhc2VVcmwsIGV2ZW50LmxhbmcpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkVHJhbnNsYXRpb24oYmFzZVVybDogc3RyaW5nLCBsYW5nOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIC8vVE9ETzogUHJlcGFyZSBmb3IgZGlmZmVudHMgbGFuZyB0aGVuIGVuIHN2IChlbi1HQikgb3IgYWRkIG1vcmUgZmlsZXMgaW4gZGV2Y29tcG9uZW50c2VydmVyIDopXHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLmFydGZha3RhP2Ake2Jhc2VVcmx9L2Fzc2V0cy9pMThuLyR7bGFuZ30uanNvbn1gOmAke2Jhc2VVcmx9L2Fzc2V0cy9hcnRwb3J0YWxlbi9pMThuLyR7bGFuZ30uanNvbn1gO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaHR0cENsaWVudC5nZXQodXJsKS5zdWJzY3JpYmUodHJhbnNsYXRpb25zID0+IHtcclxuICAgICAgdGhpcy50cmFucy5zZXRUcmFuc2xhdGlvbihsYW5nLCB0cmFuc2xhdGlvbnMsIHRydWUpO1xyXG4gICAgICB0aGlzLnRyYW5zbGF0aW9uRmluaXNoZWQgPSB0cnVlO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgc2hvd01lbnVEcm9wZG93bihzaG93OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zaG93TWVudSAhPT0gc2hvdykge1xyXG4gICAgICB0aGlzLnNob3dNZW51ID0gc2hvdztcclxuICAgICAgdGhpcy5kcm9wTWVudUNoYW5nZS5lbWl0KHNob3cpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TGFuZ3VhZ2UobGFuZyk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFucy51c2UobGFuZyk7XHJcbiAgICB0aGlzLnNob3dNZW51ID0gZmFsc2U7XHJcbiAgICB0aGlzLmRyb3BNZW51Q2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgLy9UT0RPOiBzZXQgbG9jYWxzdG9yYWdlL2Nvb2tpZXMgb3IgcHJvYmFseSBldmVudCB0byBtYWluIGFwcFxyXG4gIH1cclxuXHJcbiAgb25FeHBhbmRMaW5rKGV2ZW50OiBhbnksIHRyYW5zSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZiAodGhpcy5leHBhbmRlZExpbmsgPT09IHRyYW5zSWQpIHtcclxuICAgICAgdGhpcy5leHBhbmRlZExpbmsgPSBudWxsO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cGFuZGVkTGluayA9IHRyYW5zSWQ7XHJcbiAgfVxyXG5cclxuICBsb2dpbigpOiB2b2lkIHtcclxuICAgIHRoaXMubG9naW5DbGlja2VkLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGxvZ291dCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9nb3V0Q2xpY2tlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvLyBwcml2YXRlIGluaXRBbGxUcmFuc2xhdGlvbnMoYmFzZVVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgLy8gICBjb25zdCB0cmFucyQgPSBmb3JrSm9pbihbdGhpcy5odHRwQ2xpZW50LmdldChiYXNlVXJsICsgJy9hc3NldHMvaTE4bi9lbi5qc29uJyksIHRoaXMuaHR0cENsaWVudC5nZXQoYmFzZVVybCArICcvYXNzZXRzL2kxOG4vc3YuanNvbicpXSlcclxuICAvLyAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0cmFucyQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgLy8gICAgIHRoaXMudHJhbnMuc2V0VHJhbnNsYXRpb24oJ2VuJywgcmVzdWx0WzBdLCB0cnVlKTtcclxuICAvLyAgICAgdGhpcy50cmFucy5zZXRUcmFuc2xhdGlvbignc3YnLCByZXN1bHRbMV0sIHRydWUpO1xyXG4gIC8vICAgfSkpO1xyXG4gIC8vIH1cclxufVxyXG5cclxuIiwiPGhlYWRlciBpZD1cInRvcC1oZWFkZXJcIiAoY2xpY2tPdXRzaWRlKT1cInNob3dVc2VyTWVudT1mYWxzZTtzaG93TWVudURyb3Bkb3duKGZhbHNlKTtcIj5cclxuICAgIDxuYXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIHB4LTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBqdXN0aWZ5LWNvbnRlbnQtbWQtc3RhcnRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ28gZC1ub25lIGQtbWQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5hcnRkYXRhYmFua2VuLnNlL1wiIHRhcmdldD1cIm5ld1wiPjxpbWcgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvbG9nby5zdmdcIiBzdHlsZT1cImhlaWdodDogMy4ycmVtO1wiPjwvYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2dvIHBzLTIgZC1zbS1ibG9jayBkLW1kLW5vbmUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ltYWdlcy9sb2dvX3NtX3doaXRlLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OiAycmVtO1wiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyYW5zbGF0aW9uRmluaXNoZWRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKCdBREJfSEVBREVSLlRJVExFJ3x0cmFuc2xhdGUpPT09J0FydGZha3RhJ1wiIGNsYXNzPVwiZC1ub25lIGQtbWQtYmxvY2tcIj48YSBocmVmPVwiaHR0cHM6Ly9hcnRmYWt0YS5zZS9hcnRiZXN0YW1uaW5nXCIgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tbm9uZVwiPjxzdHJvbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmlnZ2VyXCI+e3snQURCX0hFQURFUi5USVRMRSd8dHJhbnNsYXRlfX08L3N0cm9uZz48L2E+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIoJ0FEQl9IRUFERVIuVElUTEUnfHRyYW5zbGF0ZSk9PT0nQXJ0ZmFrdGEnXCIgY2xhc3M9XCJkLXNtLWJsb2NrIGQtbWQtbm9uZVwiPjxzdHJvbmcgY2xhc3M9XCJiaWdnZXJcIj57eydBREJfSEVBREVSLlRJVExFJ3x0cmFuc2xhdGV9fTwvc3Ryb25nPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKCdBREJfSEVBREVSLlRJVExFJ3x0cmFuc2xhdGUpIT09J0FydGZha3RhJ1wiPjxzdHJvbmcgY2xhc3M9XCJiaWdnZXJcIj57eydBREJfSEVBREVSLlRJVExFJ3x0cmFuc2xhdGV9fTwvc3Ryb25nPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInRyYW5zbGF0aW9uRmluaXNoZWRcIiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtbGctYmV0d2VlbiBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibmF2aWdhdGlvblwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPG5hdiBjbGFzcz1cImQtbm9uZSBhbGlnbi1pdGVtcy1jZW50ZXIgZC1sZy1mbGV4IHBlLTQgZ2FwLTRcIiAqbmdJZj1cIm5hdmlnYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsaW5rIG9mIG5hdmlnYXRpb24ubGlua3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bGluay51cmx9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fVwiICpuZ0lmPVwibGluay50b3BMaW5rXCIgW25nQ2xhc3NdPVwieydkLW5vbmUgZC14bC1ibG9jayc6bGluay50cmFuc0lkPT09J0FEQl9IRUFERVIuT0JTRVJWQVRJT04nfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsaW5rLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uYXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBweS0xIHB4LTIgYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2hvd1VzZXJNZW51ID0gZmFsc2U7c2hvd01lbnVEcm9wZG93bighc2hvd01lbnUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuTUVOWSd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtcy0xIGZhc1wiIFtuZ0NsYXNzXT1cInNob3dNZW51PydmYS1jaGV2cm9uLXVwJzonZmEtY2hldnJvbi1kb3duJ1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtbm9uZSBkLW1kLWJsb2NrIHBzLTRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpbml0aWFsc1wiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBpbml0aWFsc1wiIChjbGljayk9XCJzaG93VXNlck1lbnUgPSAhc2hvd1VzZXJNZW51O3Nob3dNZW51RHJvcGRvd24oZmFsc2UpXCI+e3tpbml0aWFsc319PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWluaXRpYWxzXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaG93VXNlck1lbnUgPSAhc2hvd1VzZXJNZW51O3Nob3dNZW51RHJvcGRvd24oZmFsc2UpXCIgY2xhc3M9XCJidG4gYnRuLWxpbmtcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLkxPR0lOJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uYXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudVwiICpuZ0lmPVwic2hvd1VzZXJNZW51XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtYm9keSBiZy13aGl0ZSBwLTNcIiBzdHlsZT1cIndpZHRoOjE1cmVtXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbml0aWFsc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1kYXJrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbml0aWFsc1wiPnt7aW5pdGlhbHN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7ZnVsbE5hbWV9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJteC1uMyB0ZXh0LW11dGVkXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJsb2dvdXQoKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGluayBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1zaWduLW91dC1hbHQgbWUtMVwiPjwvaT57eydBREJfSEVBREVSLkxPR09VVCd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbml0aWFsc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwibG9naW4oKVwiIGlkPVwic3RhcnQtbG9naW5cIj57eydBREJfSEVBREVSLkxPR0lOJ3x0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIm5hdmlnYXRpb25cIiBjbGFzcz1cImQtYmxvY2sgbXQtM1wiIGhyZWY9XCJ7e25hdmlnYXRpb24uY3JlYXRlQWNjb3VudExpbmt9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fSZyZXR1cm5Vcmw9e3t1cmx9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuQ1JFQVRFX1VTRVInfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudVwiICpuZ0lmPVwic2hvd01lbnVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1ib2R5XCIgKm5nSWY9XCJuYXZpZ2F0aW9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIHB0LTMgbWItMVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBmbGV4LXdyYXAgZ2FwLTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZC1tZC1ub25lIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiICpuZ0lmPVwiaW5pdGlhbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5pdGlhbHMgbWUtMlwiPnt7aW5pdGlhbHN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2dvdXQoKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5MT0dPVVQnfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgZC1tZC1ub25lXCIgKm5nSWY9XCIhaW5pdGlhbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2dpbigpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBpZD1cImxvZ2luXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5MT0dJTid8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bmF2aWdhdGlvbi5jcmVhdGVBY2NvdW50TGlua319P2xhbmc9e3t0cmFucy5jdXJyZW50TGFuZ319JnJldHVyblVybD17e3VybH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB0ZXh0LXdoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5DUkVBVEVfVVNFUid8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJ0cmFucy5jdXJyZW50TGFuZz09PSdlbidcIiAoY2xpY2spPVwic2V0TGFuZ3VhZ2UoJ3N2JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuSU5fU1dFRElTSCd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwidHJhbnMuY3VycmVudExhbmc9PT0nc3YnXCIgKGNsaWNrKT1cInNldExhbmd1YWdlKCdlbicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLklOX0VOR0xJU0gnfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLlNFUlZJQ0VTJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBpZD1cInNwbGFzaFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTMgZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBtcy0wIG1iLTAgcHMtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0xIGxpc3QtZ3JvdXAtaXRlbSBwLTAgcm91bmRlZFwiICpuZ0Zvcj1cImxldCBsaW5rIG9mIG5hdmlnYXRpb24ubGlua3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJsaW5rLnRyYW5zSWQ9PT1leHBhbmRlZExpbms/dHJ1ZTpmYWxzZVwiIHJvbGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bGluay51cmx9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fVwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWdyb3ctMSBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZmEtc3RhY2sgbWUtMVwiICpuZ0lmPVwibGluay5pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhcyBmYS1jaXJjbGUgZmEtc3RhY2stMnggdGV4dC1wcmltYXJ5XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYXMgZmEtc3RhY2stMXggZmEtaW52ZXJzZVwiIFtuZ0NsYXNzXT1cImxpbmsuaWNvblwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsaW5rLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZXhwYW5kIG1lLTJcIiAqbmdJZj1cImxpbmsuY2hpbGRyZW4/Lmxlbmd0aD4wXCIgKGNsaWNrKT1cIm9uRXhwYW5kTGluaygkZXZlbnQsbGluay50cmFuc0lkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLXVwXCIgW25nQ2xhc3NdPVwibGluay50cmFuc0lkPT09ZXhwYW5kZWRMaW5rPydkLWJsb2NrICc6J2Qtbm9uZSdcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93blwiIFtuZ0NsYXNzXT1cImxpbmsudHJhbnNJZCE9PWV4cGFuZGVkTGluaz8nZC1ibG9jayAnOidkLW5vbmUnXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCIgW25nQ2xhc3NdPVwibGluay50cmFuc0lkPT09ZXhwYW5kZWRMaW5rPydkLWJsb2NrJzonZC1ub25lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInB5LTEgbS0wXCIgW2NsYXNzLnB0LTBdPVwiZmlyc3RcIiAqbmdGb3I9XCJsZXQgc3ViTGluayBvZiBsaW5rLmNoaWxkcmVuO2xldCBmaXJzdCA9IGZpcnN0XCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6M3JlbTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJ3LTEwMCBkLWJsb2NrXCIgaHJlZj1cInt7c3ViTGluay51cmx9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdWJMaW5rLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5hdmlnYXRpb24uYWJvdXRcIiBjbGFzcz1cIm10LTIgbWItYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMVwiPnt7J0FEQl9IRUFERVIuQ09OVEFDVCd8dHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTEgcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSBwLTIgcm91bmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJmYS1zdGFja1wiICpuZ0lmPVwibmF2aWdhdGlvbi5hYm91dC5pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhcyBmYS1jaXJjbGUgZmEtc3RhY2stMnggdGV4dC1wcmltYXJ5XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYXMgZmEtc3RhY2stMXggZmEtaW52ZXJzZSBmYS1lbnZlbG9wZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJiZy13aGl0ZSBwLTJcIiBocmVmPVwibWFpbHRvOmFydGZha3RhQGFydGRhdGFiYW5rZW4uc2VcIj5hcnRmYWt0YUBhcnRkYXRhYmFua2VuLnNlPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSBwLTIgcm91bmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJmYS1zdGFja1wiICpuZ0lmPVwibmF2aWdhdGlvbi5hYm91dC5pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhcyBmYS1jaXJjbGUgZmEtc3RhY2stMnggdGV4dC1wcmltYXJ5XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYXMgZmEtc3RhY2stMXggZmEtaW52ZXJzZVwiIFtuZ0NsYXNzXT1cIm5hdmlnYXRpb24uYWJvdXQuaWNvblwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwibmF2aWdhdGlvbi5hYm91dC51cmxcIj57e25hdmlnYXRpb24uYWJvdXQudHJhbnNJZHx0cmFuc2xhdGV9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OjEwcmVtXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5ERVZFTE9QRURfQlknfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5hcnRkYXRhYmFua2VuLnNlL1wiIGNsYXNzPVwidGV4dC13aGl0ZVwiPjx1Pnt7J0FEQl9IRUFERVIuQVJUREFUQUJBTktFTid8dHJhbnNsYXRlfX08L3U+PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvaGVhZGVyPiJdfQ==
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvYWRiLWhlYWRlci9hZGItaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9hZGItaGVhZGVyL2FkYi1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBT3BDLE1BQU0sT0FBTyxrQkFBa0I7SUEwQjdCLFlBQ1UsVUFBc0IsRUFDdEIsVUFBOEIsRUFDL0IsS0FBdUI7UUFGdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQUMvQixVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQTVCeEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNsQyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRTlDLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFhekIsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRTVCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFRckIsQ0FBQztJQXZCRCxJQUFhLFFBQVEsQ0FBQyxRQUFnQjtRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixNQUFNLFFB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SHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4vZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb24gfSBmcm9tICcuL25hdmlnYXRpb24ubW9kZWwnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FkYi1oZWFkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGItaGVhZGVyLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQURCSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIEBPdXRwdXQoKSBsb2dpbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvZ291dENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRyb3BNZW51Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBASW5wdXQoKSBhcnRmYWt0YSA9IHRydWU7XHJcbiAgQElucHV0KCkgc2V0IHVzZXJOYW1lKGZ1bGxOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZnVsbE5hbWUgPSBmdWxsTmFtZTtcclxuICAgIGNvbnN0IHNwbGl0dGVkID0gZnVsbE5hbWUuc3BsaXQoJyAnKTtcclxuICAgIGlmIChzcGxpdHRlZD8ubGVuZ3RoID4gMSkge1xyXG4gICAgICBjb25zdCBpbml0aWFscyA9IHNwbGl0dGVkLnNoaWZ0KCkuY2hhckF0KDApICsgc3BsaXR0ZWQucG9wKCkuY2hhckF0KDApO1xyXG4gICAgICB0aGlzLmluaXRpYWxzID0gaW5pdGlhbHMudG9VcHBlckNhc2UoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5pdGlhbHMgPSB0aGlzLmZ1bGxOYW1lID8gdGhpcy5mdWxsTmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSA6IHRoaXMuZnVsbE5hbWU7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgZnVsbE5hbWU6IHN0cmluZztcclxuICB0cmFuc2xhdGlvbkZpbmlzaGVkID0gZmFsc2U7XHJcbiAgaW5pdGlhbHM6IHN0cmluZztcclxuICBzaG93TWVudSA9IGZhbHNlO1xyXG4gIHNob3dVc2VyTWVudSA9IGZhbHNlO1xyXG4gIG5hdmlnYXRpb246IE5hdmlnYXRpb247XHJcbiAgdXJsOiBzdHJpbmc7XHJcbiAgZXhwYW5kZWRMaW5rOiBzdHJpbmc7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGVudlNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSxcclxuICAgIHB1YmxpYyB0cmFuczogVHJhbnNsYXRlU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xyXG4gICAgY29uc3QgYmFzZVVybCA9IHRoaXMuZW52U2VydmljZS5lbnZpcm9ubWVudC5yZXNvdXJjZVVybDtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuYXJ0ZmFrdGEgPyAnL2Fzc2V0cy9saW5rcy5qc29uJyA6ICcvYXNzZXRzL2FydHBvcnRhbGVuL2xpbmtzLmpzb24nO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaHR0cENsaWVudC5nZXQ8TmF2aWdhdGlvbj4oYmFzZVVybCArIHVybCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbiA9IHJlc3VsdDtcclxuICAgIH0pKTtcclxuICAgIHRoaXMuaW5pdFRyYW5zbGF0aW9ucyhiYXNlVXJsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFRyYW5zbGF0aW9ucyhiYXNlVXJsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRyYW5zLnN0b3JlLnRyYW5zbGF0aW9uc1t0aGlzLnRyYW5zLmN1cnJlbnRMYW5nXSkge1xyXG4gICAgICB0aGlzLmxvYWRUcmFuc2xhdGlvbihiYXNlVXJsLCB0aGlzLnRyYW5zLmN1cnJlbnRMYW5nKTtcclxuICAgIH1cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnRyYW5zLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRpb25GaW5pc2hlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmxvYWRUcmFuc2xhdGlvbihiYXNlVXJsLCBldmVudC5sYW5nKTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFRyYW5zbGF0aW9uKGJhc2VVcmw6IHN0cmluZywgbGFuZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAvL1RPRE86IFByZXBhcmUgZm9yIGRpZmZlbnRzIGxhbmcgdGhlbiBlbiBzdiAoZW4tR0IpIG9yIGFkZCBtb3JlIGZpbGVzIGluIGRldmNvbXBvbmVudHNlcnZlciA6KVxyXG4gICAgY29uc3QgdXJsID0gdGhpcy5hcnRmYWt0YSA/IGJhc2VVcmwgKyBgL2Fzc2V0cy9pMThuLyR7bGFuZ30uanNvbmAgOiBiYXNlVXJsICsgYC9hc3NldHMvYXJ0cG9ydGFsZW4vaTE4bi8ke2xhbmd9Lmpzb25gO1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaHR0cENsaWVudC5nZXQodXJsKS5zdWJzY3JpYmUodHJhbnNsYXRpb25zID0+IHtcclxuICAgICAgdGhpcy50cmFucy5zZXRUcmFuc2xhdGlvbihsYW5nLCB0cmFuc2xhdGlvbnMsIHRydWUpO1xyXG4gICAgICB0aGlzLnRyYW5zbGF0aW9uRmluaXNoZWQgPSB0cnVlO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgc2hvd01lbnVEcm9wZG93bihzaG93OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zaG93TWVudSAhPT0gc2hvdykge1xyXG4gICAgICB0aGlzLnNob3dNZW51ID0gc2hvdztcclxuICAgICAgdGhpcy5kcm9wTWVudUNoYW5nZS5lbWl0KHNob3cpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TGFuZ3VhZ2UobGFuZyk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFucy51c2UobGFuZyk7XHJcbiAgICB0aGlzLnNob3dNZW51ID0gZmFsc2U7XHJcbiAgICB0aGlzLmRyb3BNZW51Q2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgLy9UT0RPOiBzZXQgbG9jYWxzdG9yYWdlL2Nvb2tpZXMgb3IgcHJvYmFseSBldmVudCB0byBtYWluIGFwcFxyXG4gIH1cclxuXHJcbiAgb25FeHBhbmRMaW5rKGV2ZW50OiBhbnksIHRyYW5zSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBpZiAodGhpcy5leHBhbmRlZExpbmsgPT09IHRyYW5zSWQpIHtcclxuICAgICAgdGhpcy5leHBhbmRlZExpbmsgPSBudWxsO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cGFuZGVkTGluayA9IHRyYW5zSWQ7XHJcbiAgfVxyXG5cclxuICBsb2dpbigpOiB2b2lkIHtcclxuICAgIHRoaXMubG9naW5DbGlja2VkLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGxvZ291dCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9nb3V0Q2xpY2tlZC5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAvLyBwcml2YXRlIGluaXRBbGxUcmFuc2xhdGlvbnMoYmFzZVVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgLy8gICBjb25zdCB0cmFucyQgPSBmb3JrSm9pbihbdGhpcy5odHRwQ2xpZW50LmdldChiYXNlVXJsICsgJy9hc3NldHMvaTE4bi9lbi5qc29uJyksIHRoaXMuaHR0cENsaWVudC5nZXQoYmFzZVVybCArICcvYXNzZXRzL2kxOG4vc3YuanNvbicpXSlcclxuICAvLyAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0cmFucyQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgLy8gICAgIHRoaXMudHJhbnMuc2V0VHJhbnNsYXRpb24oJ2VuJywgcmVzdWx0WzBdLCB0cnVlKTtcclxuICAvLyAgICAgdGhpcy50cmFucy5zZXRUcmFuc2xhdGlvbignc3YnLCByZXN1bHRbMV0sIHRydWUpO1xyXG4gIC8vICAgfSkpO1xyXG4gIC8vIH1cclxufVxyXG5cclxuIiwiPGhlYWRlciBpZD1cInRvcC1oZWFkZXJcIiAoY2xpY2tPdXRzaWRlKT1cInNob3dVc2VyTWVudT1mYWxzZTtzaG93TWVudURyb3Bkb3duKGZhbHNlKTtcIj5cclxuICAgIDxuYXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIHB4LTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBqdXN0aWZ5LWNvbnRlbnQtbWQtc3RhcnRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ28gZC1ub25lIGQtbWQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5hcnRkYXRhYmFua2VuLnNlL1wiIHRhcmdldD1cIm5ld1wiPjxpbWcgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvbG9nby5zdmdcIiBzdHlsZT1cImhlaWdodDogMy4ycmVtO1wiPjwvYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2dvIHBzLTIgZC1zbS1ibG9jayBkLW1kLW5vbmUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ltYWdlcy9sb2dvX3NtX3doaXRlLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OiAycmVtO1wiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyYW5zbGF0aW9uRmluaXNoZWRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKCdBREJfSEVBREVSLlRJVExFJ3x0cmFuc2xhdGUpPT09J0FydGZha3RhJ1wiIGNsYXNzPVwiZC1ub25lIGQtbWQtYmxvY2tcIj48YSBocmVmPVwiaHR0cHM6Ly9hcnRmYWt0YS5zZS9hcnRiZXN0YW1uaW5nXCIgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tbm9uZVwiPjxzdHJvbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmlnZ2VyXCI+e3snQURCX0hFQURFUi5USVRMRSd8dHJhbnNsYXRlfX08L3N0cm9uZz48L2E+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIoJ0FEQl9IRUFERVIuVElUTEUnfHRyYW5zbGF0ZSk9PT0nQXJ0ZmFrdGEnXCIgY2xhc3M9XCJkLXNtLWJsb2NrIGQtbWQtbm9uZVwiPjxzdHJvbmcgY2xhc3M9XCJiaWdnZXJcIj57eydBREJfSEVBREVSLlRJVExFJ3x0cmFuc2xhdGV9fTwvc3Ryb25nPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiKCdBREJfSEVBREVSLlRJVExFJ3x0cmFuc2xhdGUpIT09J0FydGZha3RhJ1wiPjxzdHJvbmcgY2xhc3M9XCJiaWdnZXJcIj57eydBREJfSEVBREVSLlRJVExFJ3x0cmFuc2xhdGV9fTwvc3Ryb25nPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInRyYW5zbGF0aW9uRmluaXNoZWRcIiBjbGFzcz1cImZsZXgtZ3Jvdy0xIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtbGctYmV0d2VlbiBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibmF2aWdhdGlvblwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPG5hdiBjbGFzcz1cImQtbm9uZSBhbGlnbi1pdGVtcy1jZW50ZXIgZC1sZy1mbGV4IHBlLTQgZ2FwLTRcIiAqbmdJZj1cIm5hdmlnYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsaW5rIG9mIG5hdmlnYXRpb24ubGlua3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bGluay51cmx9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fVwiICpuZ0lmPVwibGluay50b3BMaW5rXCIgW25nQ2xhc3NdPVwieydkLW5vbmUgZC14bC1ibG9jayc6bGluay50cmFuc0lkPT09J0FEQl9IRUFERVIuT0JTRVJWQVRJT04nfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsaW5rLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uYXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBweS0xIHB4LTIgYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2hvd1VzZXJNZW51ID0gZmFsc2U7c2hvd01lbnVEcm9wZG93bighc2hvd01lbnUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuTUVOWSd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtcy0xIGZhc1wiIFtuZ0NsYXNzXT1cInNob3dNZW51PydmYS1jaGV2cm9uLXVwJzonZmEtY2hldnJvbi1kb3duJ1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtbm9uZSBkLW1kLWJsb2NrIHBzLTRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpbml0aWFsc1wiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBpbml0aWFsc1wiIChjbGljayk9XCJzaG93VXNlck1lbnUgPSAhc2hvd1VzZXJNZW51O3Nob3dNZW51RHJvcGRvd24oZmFsc2UpXCI+e3tpbml0aWFsc319PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWluaXRpYWxzXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzaG93VXNlck1lbnUgPSAhc2hvd1VzZXJNZW51O3Nob3dNZW51RHJvcGRvd24oZmFsc2UpXCIgY2xhc3M9XCJidG4gYnRuLWxpbmtcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLkxPR0lOJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uYXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudVwiICpuZ0lmPVwic2hvd1VzZXJNZW51XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtYm9keSBiZy13aGl0ZSBwLTNcIiBzdHlsZT1cIndpZHRoOjE1cmVtXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbml0aWFsc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1kYXJrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbml0aWFsc1wiPnt7aW5pdGlhbHN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt7ZnVsbE5hbWV9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJteC1uMyB0ZXh0LW11dGVkXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJsb2dvdXQoKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGluayBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1zaWduLW91dC1hbHQgbWUtMVwiPjwvaT57eydBREJfSEVBREVSLkxPR09VVCd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbml0aWFsc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwibG9naW4oKVwiIGlkPVwic3RhcnQtbG9naW5cIj57eydBREJfSEVBREVSLkxPR0lOJ3x0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YSAqbmdJZj1cIm5hdmlnYXRpb25cIiBjbGFzcz1cImQtYmxvY2sgbXQtM1wiIGhyZWY9XCJ7e25hdmlnYXRpb24uY3JlYXRlQWNjb3VudExpbmt9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fSZyZXR1cm5Vcmw9e3t1cmx9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuQ1JFQVRFX1VTRVInfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWVudVwiICpuZ0lmPVwic2hvd01lbnVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVudS1ib2R5XCIgKm5nSWY9XCJuYXZpZ2F0aW9uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIHB0LTMgbWItMVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBmbGV4LXdyYXAgZ2FwLTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZC1tZC1ub25lIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiICpuZ0lmPVwiaW5pdGlhbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5pdGlhbHMgbWUtMlwiPnt7aW5pdGlhbHN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2dvdXQoKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5MT0dPVVQnfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgZC1tZC1ub25lXCIgKm5nSWY9XCIhaW5pdGlhbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2dpbigpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBpZD1cImxvZ2luXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5MT0dJTid8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bmF2aWdhdGlvbi5jcmVhdGVBY2NvdW50TGlua319P2xhbmc9e3t0cmFucy5jdXJyZW50TGFuZ319JnJldHVyblVybD17e3VybH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB0ZXh0LXdoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5DUkVBVEVfVVNFUid8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJ0cmFucy5jdXJyZW50TGFuZz09PSdlbidcIiAoY2xpY2spPVwic2V0TGFuZ3VhZ2UoJ3N2JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuSU5fU1dFRElTSCd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwidHJhbnMuY3VycmVudExhbmc9PT0nc3YnXCIgKGNsaWNrKT1cInNldExhbmd1YWdlKCdlbicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLklOX0VOR0xJU0gnfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLlNFUlZJQ0VTJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBpZD1cInNwbGFzaFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTMgZC1mbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBtcy0wIG1iLTAgcHMtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0xIGxpc3QtZ3JvdXAtaXRlbSBwLTAgcm91bmRlZFwiICpuZ0Zvcj1cImxldCBsaW5rIG9mIG5hdmlnYXRpb24ubGlua3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJsaW5rLnRyYW5zSWQ9PT1leHBhbmRlZExpbms/dHJ1ZTpmYWxzZVwiIHJvbGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bGluay51cmx9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fVwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWdyb3ctMSBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZmEtc3RhY2sgbWUtMVwiICpuZ0lmPVwibGluay5pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhcyBmYS1jaXJjbGUgZmEtc3RhY2stMnggdGV4dC1wcmltYXJ5XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYXMgZmEtc3RhY2stMXggZmEtaW52ZXJzZVwiIFtuZ0NsYXNzXT1cImxpbmsuaWNvblwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tsaW5rLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZXhwYW5kIG1lLTJcIiAqbmdJZj1cImxpbmsuY2hpbGRyZW4/Lmxlbmd0aD4wXCIgKGNsaWNrKT1cIm9uRXhwYW5kTGluaygkZXZlbnQsbGluay50cmFuc0lkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLXVwXCIgW25nQ2xhc3NdPVwibGluay50cmFuc0lkPT09ZXhwYW5kZWRMaW5rPydkLWJsb2NrICc6J2Qtbm9uZSdcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93blwiIFtuZ0NsYXNzXT1cImxpbmsudHJhbnNJZCE9PWV4cGFuZGVkTGluaz8nZC1ibG9jayAnOidkLW5vbmUnXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCIgW25nQ2xhc3NdPVwibGluay50cmFuc0lkPT09ZXhwYW5kZWRMaW5rPydkLWJsb2NrJzonZC1ub25lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInB5LTEgbS0wXCIgW2NsYXNzLnB0LTBdPVwiZmlyc3RcIiAqbmdGb3I9XCJsZXQgc3ViTGluayBvZiBsaW5rLmNoaWxkcmVuO2xldCBmaXJzdCA9IGZpcnN0XCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6M3JlbTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJ3LTEwMCBkLWJsb2NrXCIgaHJlZj1cInt7c3ViTGluay51cmx9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdWJMaW5rLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5hdmlnYXRpb24uYWJvdXRcIiBjbGFzcz1cIm10LTIgbWItYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMVwiPnt7J0FEQl9IRUFERVIuQ09OVEFDVCd8dHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTEgcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSBwLTIgcm91bmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJmYS1zdGFja1wiICpuZ0lmPVwibmF2aWdhdGlvbi5hYm91dC5pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhcyBmYS1jaXJjbGUgZmEtc3RhY2stMnggdGV4dC1wcmltYXJ5XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYXMgZmEtc3RhY2stMXggZmEtaW52ZXJzZSBmYS1lbnZlbG9wZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJiZy13aGl0ZSBwLTJcIiBocmVmPVwibWFpbHRvOmFydGZha3RhQGFydGRhdGFiYW5rZW4uc2VcIj5hcnRmYWt0YUBhcnRkYXRhYmFua2VuLnNlPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTYgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSBwLTIgcm91bmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJmYS1zdGFja1wiICpuZ0lmPVwibmF2aWdhdGlvbi5hYm91dC5pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhcyBmYS1jaXJjbGUgZmEtc3RhY2stMnggdGV4dC1wcmltYXJ5XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYXMgZmEtc3RhY2stMXggZmEtaW52ZXJzZVwiIFtuZ0NsYXNzXT1cIm5hdmlnYXRpb24uYWJvdXQuaWNvblwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwibmF2aWdhdGlvbi5hYm91dC51cmxcIj57e25hdmlnYXRpb24uYWJvdXQudHJhbnNJZHx0cmFuc2xhdGV9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiaGVpZ2h0OjEwcmVtXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5ERVZFTE9QRURfQlknfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5hcnRkYXRhYmFua2VuLnNlL1wiIGNsYXNzPVwidGV4dC13aGl0ZVwiPjx1Pnt7J0FEQl9IRUFERVIuQVJUREFUQUJBTktFTid8dHJhbnNsYXRlfX08L3U+PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvaGVhZGVyPiJdfQ==
@@ -2,14 +2,16 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { Subscription } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common/http";
5
- import * as i2 from "@ngx-translate/core";
6
- import * as i3 from "../../directives/click-outside.directive";
7
- import * as i4 from "@angular/common";
8
- import * as i5 from "../adb-dropdown/adb-dropdown.directive";
9
- import * as i6 from "../pagers/infinite-scroll.component";
5
+ import * as i2 from "./environment.service";
6
+ import * as i3 from "@ngx-translate/core";
7
+ import * as i4 from "../../directives/click-outside.directive";
8
+ import * as i5 from "@angular/common";
9
+ import * as i6 from "../adb-dropdown/adb-dropdown.directive";
10
+ import * as i7 from "../pagers/infinite-scroll.component";
10
11
  export class ADBNavComponent {
11
- constructor(httpClient, trans) {
12
+ constructor(httpClient, envService, trans) {
12
13
  this.httpClient = httpClient;
14
+ this.envService = envService;
13
15
  this.trans = trans;
14
16
  this.subscription = new Subscription();
15
17
  this.loginClicked = new EventEmitter();
@@ -36,8 +38,10 @@ export class ADBNavComponent {
36
38
  ;
37
39
  ngOnInit() {
38
40
  this.url = window.location.href;
39
- const baseUrl = 'https://sharedcomponents-dev.artdata.slu.se';
40
- this.subscription.add(this.httpClient.get(baseUrl + '/assets/links-ap3.json').subscribe(result => {
41
+ const baseUrl = this.envService.environment.resourceUrl;
42
+ const url = this.artfakta ? '/assets/links-ap3.json' : '/assets/artportalen/links-ap3.json';
43
+ console.log('banana', baseUrl + url);
44
+ this.subscription.add(this.httpClient.get(baseUrl + url).subscribe(result => {
41
45
  this.navigation = result;
42
46
  }));
43
47
  this.initTranslations(baseUrl);
@@ -56,7 +60,8 @@ export class ADBNavComponent {
56
60
  }
57
61
  loadTranslation(baseUrl, lang) {
58
62
  //TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)
59
- this.subscription.add(this.httpClient.get(baseUrl + `/assets/i18n/${lang}.json`).subscribe(translations => {
63
+ const url = this.artfakta ? baseUrl + `/assets/i18n/${lang}.json` : baseUrl + `/assets/artportalen/i18n/${lang}.json`;
64
+ this.subscription.add(this.httpClient.get(url).subscribe(translations => {
60
65
  this.trans.setTranslation(lang, translations, true);
61
66
  this.translationFinished = true;
62
67
  }));
@@ -92,12 +97,12 @@ export class ADBNavComponent {
92
97
  this.subscription.unsubscribe();
93
98
  }
94
99
  }
95
- /** @nocollapse */ ADBNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ADBNavComponent, deps: [{ token: i1.HttpClient }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
96
- /** @nocollapse */ ADBNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: ADBNavComponent, selector: "adb-nav", inputs: { showPattern: "showPattern", userName: "userName", artfakta: "artfakta" }, outputs: { loginClicked: "loginClicked", logoutClicked: "logoutClicked", dropMenuChange: "dropMenuChange" }, ngImport: i0, template: "<!-- position-static -->\r\n<div class=\"bg-primary sticky-sm-top p-2\" [attr.id]=\"showPattern&&!showMenu?'pattern':''\" [class.shrink]=\"shrink\" (adbClickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <header id=\"extra-header\">\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <nav class=\"d-flex gap-2\">\r\n <div class=\"me-5\" style=\"display: block;margin-top: -0.4rem;\">\r\n <a href=\"https://www.artdatabanken.se/\" target=\"new\"><img src=\"/assets/images/logo.svg\" style=\"height: 2.5rem;\"></a>\r\n </div>\r\n <a class=\"text-white fw-bold fs-3\" href=\"/\">ARTFAKTA</a>\r\n </nav>\r\n <ng-container *ngIf=\"translationFinished\">\r\n <div class=\"ms-auto d-flex gap-2\">\r\n <div class=\"btn-group d-block no-caret\">\r\n <button adbDropdown class=\"px-1 py-0 btn btn-primary btn-sm dropdown-toggle\"><span class=\"far fa-globe\"></span></button>\r\n <ul class=\"dropdown-menu dropdown-menu-end py-1 bg-primary\">\r\n <li>\r\n <button type=\"button\" [class.pe-none]=\"trans.currentLang==='sv'\" (click)=\"setLanguage('sv')\" class=\"btn btn-link py-0 px-2 text-white\">\r\n <span [class.fw-bold]=\"trans.currentLang==='sv'\">{{'ADB_HEADER.IN_SWEDISH'|translate}}</span>\r\n </button>\r\n </li>\r\n <div class=\"dropdown-divider my-1 opacity-25 bg-white\"></div>\r\n <li>\r\n <button type=\"button\" [class.pe-none]=\"trans.currentLang==='en'\" (click)=\"setLanguage('en')\" class=\"btn btn-link py-0 px-2 text-white\">\r\n <span [class.fw-bold]=\"trans.currentLang==='en'\">{{'ADB_HEADER.IN_ENGLISH'|translate}}</span>\r\n </button>\r\n </li>\r\n </ul>\r\n </div>\r\n <a class=\"ms-auto text-white d-none d-md-block\" [href]=\"navigation.artportalenUrl\">\r\n {{'ADB_HEADER.ARTPORTALEN_TITLE'|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" [href]=\"navigation.supportUrl\">Support</a>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n </header>\r\n <header class=\"d-flex align-items-center flex-wrap gap-2\" *ngIf=\"translationFinished\">\r\n <nav *ngIf=\"navigation\" class=\"d-flex align-items-center gap-2\">\r\n <a href=\"https://www.artdatabanken.se/\" class=\"home-link\" target=\"new\" style=\"margin-top: -0.4rem;\"><img src=\"/assets/images/logo_sm_white.png\" style=\"height: 1.6rem;\"></a>\r\n <a class=\"text-white fw-bold me-3 home-link\" href=\"{{navigation.artfakta.url}}\">\r\n {{navigation.artfakta.transId|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" href=\"{{navigation.artinfo.url}}\">\r\n {{navigation.artinfo.transId|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" href=\"{{navigation.observations.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" href=\"{{navigation.nameAndRelationship.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.nameAndRelationship.transId|translate}}\r\n </a>\r\n </nav>\r\n <div class=\"ms-auto\">\r\n <div class=\"btn-group no-caret d-none d-md-block\">\r\n <button type=\"button\" adbDropdown class=\"btn btn-primary btn-sm dropdown-toggle\" [class.initials]=\"initials\" (click)=\"showMenuDropdown(!showMenu)\">\r\n <ng-container *ngIf=\"initials\">{{initials}}</ng-container>\r\n <ng-container *ngIf=\"!initials\">{{'ADB_HEADER.LOGIN'|translate}}</ng-container>\r\n </button>\r\n <ul class=\"dropdown-menu dropdown-menu-end py-1 bg-primary text-white\">\r\n <ng-container *ngIf=\"initials\">\r\n <li class=\"px-2 pb-1\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0 text-white\">\r\n <span class=\"fas fa-sign-out-alt me-1\"></span>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </li>\r\n <hr class=\"my-0\">\r\n <li class=\"pt-1 px-2\">\r\n <span class=\"fas fa-user me-1\"></span>\r\n {{fullName}}\r\n </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <li>\r\n <div class=\"text-center \">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n </li>\r\n <li>\r\n <a *ngIf=\"navigation\" class=\"d-block text-center mt-2 text-white\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n <div class=\"d-block d-md-none\">\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </header>\r\n <div class=\"mobile-menu d-flex flex-column d-md-none bg-primary text-white\" *ngIf=\"showMenu&&navigation\">\r\n <div class=\"p-2\">\r\n <div class=\"d-flex justify-content-between align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex justify-content-between gap-2\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary text-white\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"px-2\">\r\n <hr class=\"my-0\">\r\n <ul class=\"list-unstyled\">\r\n <li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.artinfo.url}}\">\r\n {{navigation.artinfo.transId|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.observations.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.nameAndRelationship.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.nameAndRelationship.transId|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" [href]=\"navigation.artportalenUrl\">\r\n {{'ADB_HEADER.ARTPORTALEN_TITLE'|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <small class=\"d-block text-white py-2\">\r\n {{'ADB_HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\"><u>{{'ADB_HEADER.ARTDATABANKEN'|translate}}</u></a>\r\n </small>\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"mt-auto splash-height\" id=\"pattern\"></div>\r\n </div>\r\n</div>\r\n<div (onVisible)=\"onHideTop(false)\" (onHidden)=\"onHideTop(true)\" style=\"height:0px\"></div>", directives: [{ type: i3.ClickOutsideDirective, selector: "[adbClickOutside]", outputs: ["adbClickOutside"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.AdbDropdownDirective, selector: "[adbDropdown]", inputs: ["insideClick"], outputs: ["adbDropdown"], exportAs: ["adbDropdown"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.InfiniteScrollComponent, selector: "[onVisible]", outputs: ["onVisible", "onHidden"] }], pipes: { "translate": i2.TranslatePipe } });
100
+ /** @nocollapse */ ADBNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ADBNavComponent, deps: [{ token: i1.HttpClient }, { token: i2.EnvironmentService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
101
+ /** @nocollapse */ ADBNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: ADBNavComponent, selector: "adb-nav", inputs: { showPattern: "showPattern", userName: "userName", artfakta: "artfakta" }, outputs: { loginClicked: "loginClicked", logoutClicked: "logoutClicked", dropMenuChange: "dropMenuChange" }, ngImport: i0, template: "<!-- position-static -->\r\n<div class=\"bg-primary sticky-sm-top p-2\" [attr.id]=\"showPattern&&!showMenu?'pattern':''\" [class.shrink]=\"shrink\" (adbClickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <header id=\"extra-header\">\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <nav class=\"d-flex gap-2\">\r\n <div class=\"me-5\" style=\"display: block;margin-top: -0.4rem;\">\r\n <a href=\"https://www.artdatabanken.se/\" target=\"new\"><img src=\"/assets/images/logo.svg\" style=\"height: 2.5rem;\"></a>\r\n </div>\r\n <a class=\"text-white fw-bold fs-3\" href=\"/\">ARTFAKTA</a>\r\n </nav>\r\n <ng-container *ngIf=\"translationFinished\">\r\n <div class=\"ms-auto d-flex gap-2\">\r\n <div class=\"btn-group d-block no-caret\">\r\n <button adbDropdown class=\"px-1 py-0 btn btn-primary btn-sm dropdown-toggle\"><span class=\"far fa-globe\"></span></button>\r\n <ul class=\"dropdown-menu dropdown-menu-end py-1 bg-primary\">\r\n <li>\r\n <button type=\"button\" [class.pe-none]=\"trans.currentLang==='sv'\" (click)=\"setLanguage('sv')\" class=\"btn btn-link py-0 px-2 text-white\">\r\n <span [class.fw-bold]=\"trans.currentLang==='sv'\">{{'ADB_HEADER.IN_SWEDISH'|translate}}</span>\r\n </button>\r\n </li>\r\n <div class=\"dropdown-divider my-1 opacity-25 bg-white\"></div>\r\n <li>\r\n <button type=\"button\" [class.pe-none]=\"trans.currentLang==='en'\" (click)=\"setLanguage('en')\" class=\"btn btn-link py-0 px-2 text-white\">\r\n <span [class.fw-bold]=\"trans.currentLang==='en'\">{{'ADB_HEADER.IN_ENGLISH'|translate}}</span>\r\n </button>\r\n </li>\r\n </ul>\r\n </div>\r\n <a class=\"ms-auto text-white d-none d-md-block\" [href]=\"navigation.artportalenUrl\">\r\n {{'ADB_HEADER.ARTPORTALEN_TITLE'|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" [href]=\"navigation.supportUrl\">Support</a>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n </header>\r\n <header class=\"d-flex align-items-center flex-wrap gap-2\" *ngIf=\"translationFinished\">\r\n <nav *ngIf=\"navigation\" class=\"d-flex align-items-center gap-2\">\r\n <a href=\"https://www.artdatabanken.se/\" class=\"home-link\" target=\"new\" style=\"margin-top: -0.4rem;\"><img src=\"/assets/images/logo_sm_white.png\" style=\"height: 1.6rem;\"></a>\r\n <a class=\"text-white fw-bold me-3 home-link\" href=\"{{navigation.artfakta.url}}\">\r\n {{navigation.artfakta.transId|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" href=\"{{navigation.artinfo.url}}\">\r\n {{navigation.artinfo.transId|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" href=\"{{navigation.observations.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" href=\"{{navigation.nameAndRelationship.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.nameAndRelationship.transId|translate}}\r\n </a>\r\n </nav>\r\n <div class=\"ms-auto\">\r\n <div class=\"btn-group no-caret d-none d-md-block\">\r\n <button type=\"button\" adbDropdown class=\"btn btn-primary btn-sm dropdown-toggle\" [class.initials]=\"initials\" (click)=\"showMenuDropdown(!showMenu)\">\r\n <ng-container *ngIf=\"initials\">{{initials}}</ng-container>\r\n <ng-container *ngIf=\"!initials\">{{'ADB_HEADER.LOGIN'|translate}}</ng-container>\r\n </button>\r\n <ul class=\"dropdown-menu dropdown-menu-end py-1 bg-primary text-white\">\r\n <ng-container *ngIf=\"initials\">\r\n <li class=\"px-2 pb-1\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0 text-white\">\r\n <span class=\"fas fa-sign-out-alt me-1\"></span>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </li>\r\n <hr class=\"my-0\">\r\n <li class=\"pt-1 px-2\">\r\n <span class=\"fas fa-user me-1\"></span>\r\n {{fullName}}\r\n </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <li>\r\n <div class=\"text-center \">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n </li>\r\n <li>\r\n <a *ngIf=\"navigation\" class=\"d-block text-center mt-2 text-white\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n <div class=\"d-block d-md-none\">\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </header>\r\n <div class=\"mobile-menu d-flex flex-column d-md-none bg-primary text-white\" *ngIf=\"showMenu&&navigation\">\r\n <div class=\"p-2\">\r\n <div class=\"d-flex justify-content-between align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex justify-content-between gap-2\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary text-white\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"px-2\">\r\n <hr class=\"my-0\">\r\n <ul class=\"list-unstyled\">\r\n <li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.artinfo.url}}\">\r\n {{navigation.artinfo.transId|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.observations.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.nameAndRelationship.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.nameAndRelationship.transId|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" [href]=\"navigation.artportalenUrl\">\r\n {{'ADB_HEADER.ARTPORTALEN_TITLE'|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <small class=\"d-block text-white py-2\">\r\n {{'ADB_HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\"><u>{{'ADB_HEADER.ARTDATABANKEN'|translate}}</u></a>\r\n </small>\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"mt-auto splash-height\" id=\"pattern\"></div>\r\n </div>\r\n</div>\r\n<div (onVisible)=\"onHideTop(false)\" (onHidden)=\"onHideTop(true)\" style=\"height:0px\"></div>", directives: [{ type: i4.ClickOutsideDirective, selector: "[adbClickOutside]", outputs: ["adbClickOutside"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.AdbDropdownDirective, selector: "[adbDropdown]", inputs: ["insideClick"], outputs: ["adbDropdown"], exportAs: ["adbDropdown"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.InfiniteScrollComponent, selector: "[onVisible]", outputs: ["onVisible", "onHidden"] }], pipes: { "translate": i3.TranslatePipe } });
97
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ADBNavComponent, decorators: [{
98
103
  type: Component,
99
104
  args: [{ selector: 'adb-nav', template: "<!-- position-static -->\r\n<div class=\"bg-primary sticky-sm-top p-2\" [attr.id]=\"showPattern&&!showMenu?'pattern':''\" [class.shrink]=\"shrink\" (adbClickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <header id=\"extra-header\">\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <nav class=\"d-flex gap-2\">\r\n <div class=\"me-5\" style=\"display: block;margin-top: -0.4rem;\">\r\n <a href=\"https://www.artdatabanken.se/\" target=\"new\"><img src=\"/assets/images/logo.svg\" style=\"height: 2.5rem;\"></a>\r\n </div>\r\n <a class=\"text-white fw-bold fs-3\" href=\"/\">ARTFAKTA</a>\r\n </nav>\r\n <ng-container *ngIf=\"translationFinished\">\r\n <div class=\"ms-auto d-flex gap-2\">\r\n <div class=\"btn-group d-block no-caret\">\r\n <button adbDropdown class=\"px-1 py-0 btn btn-primary btn-sm dropdown-toggle\"><span class=\"far fa-globe\"></span></button>\r\n <ul class=\"dropdown-menu dropdown-menu-end py-1 bg-primary\">\r\n <li>\r\n <button type=\"button\" [class.pe-none]=\"trans.currentLang==='sv'\" (click)=\"setLanguage('sv')\" class=\"btn btn-link py-0 px-2 text-white\">\r\n <span [class.fw-bold]=\"trans.currentLang==='sv'\">{{'ADB_HEADER.IN_SWEDISH'|translate}}</span>\r\n </button>\r\n </li>\r\n <div class=\"dropdown-divider my-1 opacity-25 bg-white\"></div>\r\n <li>\r\n <button type=\"button\" [class.pe-none]=\"trans.currentLang==='en'\" (click)=\"setLanguage('en')\" class=\"btn btn-link py-0 px-2 text-white\">\r\n <span [class.fw-bold]=\"trans.currentLang==='en'\">{{'ADB_HEADER.IN_ENGLISH'|translate}}</span>\r\n </button>\r\n </li>\r\n </ul>\r\n </div>\r\n <a class=\"ms-auto text-white d-none d-md-block\" [href]=\"navigation.artportalenUrl\">\r\n {{'ADB_HEADER.ARTPORTALEN_TITLE'|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" [href]=\"navigation.supportUrl\">Support</a>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n </header>\r\n <header class=\"d-flex align-items-center flex-wrap gap-2\" *ngIf=\"translationFinished\">\r\n <nav *ngIf=\"navigation\" class=\"d-flex align-items-center gap-2\">\r\n <a href=\"https://www.artdatabanken.se/\" class=\"home-link\" target=\"new\" style=\"margin-top: -0.4rem;\"><img src=\"/assets/images/logo_sm_white.png\" style=\"height: 1.6rem;\"></a>\r\n <a class=\"text-white fw-bold me-3 home-link\" href=\"{{navigation.artfakta.url}}\">\r\n {{navigation.artfakta.transId|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" href=\"{{navigation.artinfo.url}}\">\r\n {{navigation.artinfo.transId|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" href=\"{{navigation.observations.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" href=\"{{navigation.nameAndRelationship.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.nameAndRelationship.transId|translate}}\r\n </a>\r\n </nav>\r\n <div class=\"ms-auto\">\r\n <div class=\"btn-group no-caret d-none d-md-block\">\r\n <button type=\"button\" adbDropdown class=\"btn btn-primary btn-sm dropdown-toggle\" [class.initials]=\"initials\" (click)=\"showMenuDropdown(!showMenu)\">\r\n <ng-container *ngIf=\"initials\">{{initials}}</ng-container>\r\n <ng-container *ngIf=\"!initials\">{{'ADB_HEADER.LOGIN'|translate}}</ng-container>\r\n </button>\r\n <ul class=\"dropdown-menu dropdown-menu-end py-1 bg-primary text-white\">\r\n <ng-container *ngIf=\"initials\">\r\n <li class=\"px-2 pb-1\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0 text-white\">\r\n <span class=\"fas fa-sign-out-alt me-1\"></span>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </li>\r\n <hr class=\"my-0\">\r\n <li class=\"pt-1 px-2\">\r\n <span class=\"fas fa-user me-1\"></span>\r\n {{fullName}}\r\n </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <li>\r\n <div class=\"text-center \">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n </li>\r\n <li>\r\n <a *ngIf=\"navigation\" class=\"d-block text-center mt-2 text-white\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n <div class=\"d-block d-md-none\">\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </header>\r\n <div class=\"mobile-menu d-flex flex-column d-md-none bg-primary text-white\" *ngIf=\"showMenu&&navigation\">\r\n <div class=\"p-2\">\r\n <div class=\"d-flex justify-content-between align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex justify-content-between gap-2\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary text-white\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"px-2\">\r\n <hr class=\"my-0\">\r\n <ul class=\"list-unstyled\">\r\n <li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.artinfo.url}}\">\r\n {{navigation.artinfo.transId|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.observations.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.nameAndRelationship.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.nameAndRelationship.transId|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" [href]=\"navigation.artportalenUrl\">\r\n {{'ADB_HEADER.ARTPORTALEN_TITLE'|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <small class=\"d-block text-white py-2\">\r\n {{'ADB_HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\"><u>{{'ADB_HEADER.ARTDATABANKEN'|translate}}</u></a>\r\n </small>\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"mt-auto splash-height\" id=\"pattern\"></div>\r\n </div>\r\n</div>\r\n<div (onVisible)=\"onHideTop(false)\" (onHidden)=\"onHideTop(true)\" style=\"height:0px\"></div>" }]
100
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.TranslateService }]; }, propDecorators: { loginClicked: [{
105
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EnvironmentService }, { type: i3.TranslateService }]; }, propDecorators: { loginClicked: [{
101
106
  type: Output
102
107
  }], logoutClicked: [{
103
108
  type: Output
@@ -110,4 +115,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
110
115
  }], artfakta: [{
111
116
  type: Input
112
117
  }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvYWRiLWhlYWRlci9hZGItbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9hZGItaGVhZGVyL2FkYi1uYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQTZCLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJILE9BQU8sRUFBYSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7O0FBTS9DLE1BQU0sT0FBTyxlQUFlO0lBNkJ4QixZQUNZLFVBQXNCLEVBQ3ZCLEtBQXVCO1FBRHRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdkIsVUFBSyxHQUFMLEtBQUssQ0FBa0I7UUE5QjFCLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM5QyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUU3Qix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFFNUIsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFZUixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBR3pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFPckIsQ0FBQztJQXJCRCxJQUFhLFFBQVEsQ0FBQyxRQUFnQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixN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QUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsNkRBQTZEO0lBQ2pFLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVSxFQUFFLE9BQWU7UUFDcEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ2hELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxPQUFPLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7SUFDaEMsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBS0QsV0FBVztRQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQzs7K0hBckdRLGVBQWU7bUhBQWYsZUFBZSxnUENUNUIsZzNTQTBKMEY7MkZEako3RSxlQUFlO2tCQUozQixTQUFTOytCQUNJLFNBQVM7Z0lBS1QsWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0UsV0FBVztzQkFBbkIsS0FBSztnQkFNTyxRQUFRO3NCQUFwQixLQUFLO2dCQVVHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhZGItbmF2JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hZGItbmF2LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQURCTmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgICBAT3V0cHV0KCkgbG9naW5DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIGxvZ291dENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgZHJvcE1lbnVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgICBASW5wdXQoKSBzaG93UGF0dGVybiA9IGZhbHNlO1xyXG4gICAgZnVsbE5hbWU6IHN0cmluZztcclxuICAgIHRyYW5zbGF0aW9uRmluaXNoZWQgPSBmYWxzZTtcclxuICAgIHNocmluazogYm9vbGVhbjtcclxuICAgIGxhc3RQb3NpdGlvbiA9IDA7XHJcblxyXG4gICAgQElucHV0KCkgc2V0IHVzZXJOYW1lKGZ1bGxOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmZ1bGxOYW1lID0gZnVsbE5hbWU7XHJcbiAgICAgICAgY29uc3Qgc3BsaXR0ZWQgPSBmdWxsTmFtZS5zcGxpdCgnICcpO1xyXG4gICAgICAgIGlmIChzcGxpdHRlZD8ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbml0aWFscyA9IHNwbGl0dGVkLnNoaWZ0KCkuY2hhckF0KDApICsgc3BsaXR0ZWQucG9wKCkuY2hhckF0KDApO1xyXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxzID0gaW5pdGlhbHMudG9VcHBlckNhc2UoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxzID0gdGhpcy5mdWxsTmFtZSA/IHRoaXMuZnVsbE5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgOiB0aGlzLmZ1bGxOYW1lO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBASW5wdXQoKSBhcnRmYWt0YSA9IHRydWU7XHJcblxyXG4gICAgaW5pdGlhbHM6IHN0cmluZztcclxuICAgIHNob3dNZW51ID0gZmFsc2U7XHJcbiAgICBzaG93VXNlck1lbnUgPSBmYWxzZTtcclxuICAgIG5hdmlnYXRpb246IE5hdmlnYXRpb247XHJcbiAgICB1cmw6IHN0cmluZztcclxuICAgIGV4cGFuZGVkTGluazogc3RyaW5nO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHB1YmxpYyB0cmFuczogVHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMudXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICAgICAgY29uc3QgYmFzZVVybCA9ICdodHRwczovL3NoYXJlZGNvbXBvbmVudHMtZGV2LmFydGRhdGEuc2x1LnNlJztcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5odHRwQ2xpZW50LmdldDxOYXZpZ2F0aW9uPihiYXNlVXJsICsgJy9hc3NldHMvbGlua3MtYXAzLmpzb24nKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uID0gcmVzdWx0O1xyXG4gICAgICAgIH0pKTtcclxuICAgICAgICB0aGlzLmluaXRUcmFuc2xhdGlvbnMoYmFzZVVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25IaWRlVG9wKHNob3c6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNocmluayA9IHNob3c7IFxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdFRyYW5zbGF0aW9ucyhiYXNlVXJsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy50cmFucy5zdG9yZS50cmFuc2xhdGlvbnNbdGhpcy50cmFucy5jdXJyZW50TGFuZ10pIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkVHJhbnNsYXRpb24oYmFzZVVybCwgdGhpcy50cmFucy5jdXJyZW50TGFuZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLnRyYW5zLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25GaW5pc2hlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRUcmFuc2xhdGlvbihiYXNlVXJsLCBldmVudC5sYW5nKTtcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBsb2FkVHJhbnNsYXRpb24oYmFzZVVybDogc3RyaW5nLCBsYW5nOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICAvL1RPRE86IFByZXBhcmUgZm9yIGRpZmZlbnRzIGxhbmcgdGhlbiBlbiBzdiAoZW4tR0IpIG9yIGFkZCBtb3JlIGZpbGVzIGluIGRldmNvbXBvbmVudHNlcnZlciA6KVxyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmh0dHBDbGllbnQuZ2V0KGJhc2VVcmwgKyBgL2Fzc2V0cy9pMThuLyR7bGFuZ30uanNvbmApLnN1YnNjcmliZSh0cmFuc2xhdGlvbnMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zLnNldFRyYW5zbGF0aW9uKGxhbmcsIHRyYW5zbGF0aW9ucywgdHJ1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25GaW5pc2hlZCA9IHRydWU7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dNZW51RHJvcGRvd24oc2hvdzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnNob3dNZW51ICE9PSBzaG93KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd01lbnUgPSBzaG93O1xyXG4gICAgICAgICAgICB0aGlzLmRyb3BNZW51Q2hhbmdlLmVtaXQoc2hvdyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldExhbmd1YWdlKGxhbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRyYW5zLnVzZShsYW5nKTtcclxuICAgICAgICB0aGlzLnNob3dNZW51ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kcm9wTWVudUNoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICAvL1RPRE86IHNldCBsb2NhbHN0b3JhZ2UvY29va2llcyBvciBwcm9iYWx5IGV2ZW50IHRvIG1haW4gYXBwXHJcbiAgICB9XHJcblxyXG4gICAgb25FeHBhbmRMaW5rKGV2ZW50OiBhbnksIHRyYW5zSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGlmICh0aGlzLmV4cGFuZGVkTGluayA9PT0gdHJhbnNJZCkge1xyXG4gICAgICAgICAgICB0aGlzLmV4cGFuZGVkTGluayA9IG51bGw7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5leHBhbmRlZExpbmsgPSB0cmFuc0lkO1xyXG4gICAgfVxyXG5cclxuICAgIGxvZ2luKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubG9naW5DbGlja2VkLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5sb2dvdXRDbGlja2VkLmVtaXQoKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5hdmlnYXRpb24ge1xyXG4gICAgYWJvdXQ6IExpbms7XHJcbiAgICBhcnRpbmZvOiBMaW5rO1xyXG4gICAgYXJ0ZmFrdGE6IExpbms7XHJcbiAgICBvYnNlcnZhdGlvbnM6IExpbms7XHJcbiAgICBuYW1lQW5kUmVsYXRpb25zaGlwOiBMaW5rO1xyXG4gICAgY3JlYXRlQWNjb3VudExpbms6IHN0cmluZztcclxuICAgIGFydGZha3RhVXJsOiBzdHJpbmc7XHJcbiAgICBhcnRwb3J0YWxlblVybDogc3RyaW5nO1xyXG4gICAgc3VwcG9ydFVybDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExpbmsge1xyXG4gICAgdHJhbnNJZDogc3RyaW5nO1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbiIsIjwhLS0gcG9zaXRpb24tc3RhdGljIC0tPlxyXG48ZGl2IGNsYXNzPVwiYmctcHJpbWFyeSBzdGlja3ktc20tdG9wIHAtMlwiIFthdHRyLmlkXT1cInNob3dQYXR0ZXJuJiYhc2hvd01lbnU/J3BhdHRlcm4nOicnXCIgW2NsYXNzLnNocmlua109XCJzaHJpbmtcIiAoYWRiQ2xpY2tPdXRzaWRlKT1cInNob3dVc2VyTWVudT1mYWxzZTtzaG93TWVudURyb3Bkb3duKGZhbHNlKTtcIj5cclxuICAgIDxoZWFkZXIgaWQ9XCJleHRyYS1oZWFkZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBnYXAtMlwiPlxyXG4gICAgICAgICAgICA8bmF2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtNVwiIHN0eWxlPVwiZGlzcGxheTogYmxvY2s7bWFyZ2luLXRvcDogLTAuNHJlbTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cuYXJ0ZGF0YWJhbmtlbi5zZS9cIiB0YXJnZXQ9XCJuZXdcIj48aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2xvZ28uc3ZnXCIgc3R5bGU9XCJoZWlnaHQ6IDIuNXJlbTtcIj48L2E+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC13aGl0ZSBmdy1ib2xkIGZzLTNcIiBocmVmPVwiL1wiPkFSVEZBS1RBPC9hPlxyXG4gICAgICAgICAgICA8L25hdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyYW5zbGF0aW9uRmluaXNoZWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy1hdXRvIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZC1ibG9jayBuby1jYXJldFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGFkYkRyb3Bkb3duIGNsYXNzPVwicHgtMSBweS0wIGJ0biBidG4tcHJpbWFyeSBidG4tc20gZHJvcGRvd24tdG9nZ2xlXCI+PHNwYW4gY2xhc3M9XCJmYXIgZmEtZ2xvYmVcIj48L3NwYW4+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1lbmQgcHktMSBiZy1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2NsYXNzLnBlLW5vbmVdPVwidHJhbnMuY3VycmVudExhbmc9PT0nc3YnXCIgKGNsaWNrKT1cInNldExhbmd1YWdlKCdzdicpXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHktMCBweC0yIHRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmZ3LWJvbGRdPVwidHJhbnMuY3VycmVudExhbmc9PT0nc3YnXCI+e3snQURCX0hFQURFUi5JTl9TV0VESVNIJ3x0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlciBteS0xIG9wYWNpdHktMjUgYmctd2hpdGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbY2xhc3MucGUtbm9uZV09XCJ0cmFucy5jdXJyZW50TGFuZz09PSdlbidcIiAoY2xpY2spPVwic2V0TGFuZ3VhZ2UoJ2VuJylcIiBjbGFzcz1cImJ0biBidG4tbGluayBweS0wIHB4LTIgdGV4dC13aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3MuZnctYm9sZF09XCJ0cmFucy5jdXJyZW50TGFuZz09PSdlbidcIj57eydBREJfSEVBREVSLklOX0VOR0xJU0gnfHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm1zLWF1dG8gdGV4dC13aGl0ZSBkLW5vbmUgZC1tZC1ibG9ja1wiIFtocmVmXT1cIm5hdmlnYXRpb24uYXJ0cG9ydGFsZW5VcmxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5BUlRQT1JUQUxFTl9USVRMRSd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0LXdoaXRlIGQtbm9uZSBkLW1kLWJsb2NrXCIgW2hyZWZdPVwibmF2aWdhdGlvbi5zdXBwb3J0VXJsXCI+U3VwcG9ydDwvYT5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2hlYWRlcj5cclxuICAgIDxoZWFkZXIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtd3JhcCBnYXAtMlwiICpuZ0lmPVwidHJhbnNsYXRpb25GaW5pc2hlZFwiPlxyXG4gICAgICAgIDxuYXYgKm5nSWY9XCJuYXZpZ2F0aW9uXCIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5hcnRkYXRhYmFua2VuLnNlL1wiIGNsYXNzPVwiaG9tZS1saW5rXCIgdGFyZ2V0PVwibmV3XCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAtMC40cmVtO1wiPjxpbWcgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvbG9nb19zbV93aGl0ZS5wbmdcIiBzdHlsZT1cImhlaWdodDogMS42cmVtO1wiPjwvYT5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0LXdoaXRlIGZ3LWJvbGQgbWUtMyBob21lLWxpbmtcIiBocmVmPVwie3tuYXZpZ2F0aW9uLmFydGZha3RhLnVybH19XCI+XHJcbiAgICAgICAgICAgICAgICB7e25hdmlnYXRpb24uYXJ0ZmFrdGEudHJhbnNJZHx0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC13aGl0ZSBkLW5vbmUgZC1tZC1ibG9ja1wiIGhyZWY9XCJ7e25hdmlnYXRpb24uYXJ0aW5mby51cmx9fVwiPlxyXG4gICAgICAgICAgICAgICAge3tuYXZpZ2F0aW9uLmFydGluZm8udHJhbnNJZHx0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC13aGl0ZSBkLW5vbmUgZC1tZC1ibG9ja1wiIGhyZWY9XCJ7e25hdmlnYXRpb24ub2JzZXJ2YXRpb25zLnVybH19P2xhbmc9e3t0cmFucy5jdXJyZW50TGFuZ319XCI+XHJcbiAgICAgICAgICAgICAgICB7e25hdmlnYXRpb24ub2JzZXJ2YXRpb25zLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cInRleHQtd2hpdGUgZC1ub25lIGQtbWQtYmxvY2tcIiBocmVmPVwie3tuYXZpZ2F0aW9uLm5hbWVBbmRSZWxhdGlvbnNoaXAudXJsfX0/bGFuZz17e3RyYW5zLmN1cnJlbnRMYW5nfX1cIj5cclxuICAgICAgICAgICAgICAgIHt7bmF2aWdhdGlvbi5uYW1lQW5kUmVsYXRpb25zaGlwLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgIDwvbmF2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcy1hdXRvXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgbm8tY2FyZXQgZC1ub25lIGQtbWQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGFkYkRyb3Bkb3duIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkcm9wZG93bi10b2dnbGVcIiBbY2xhc3MuaW5pdGlhbHNdPVwiaW5pdGlhbHNcIiAoY2xpY2spPVwic2hvd01lbnVEcm9wZG93bighc2hvd01lbnUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluaXRpYWxzXCI+e3tpbml0aWFsc319PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbml0aWFsc1wiPnt7J0FEQl9IRUFERVIuTE9HSU4nfHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1lbmQgcHktMSBiZy1wcmltYXJ5IHRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5pdGlhbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicHgtMiBwYi0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJsb2dvdXQoKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGluayBwLTAgdGV4dC13aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmFzIGZhLXNpZ24tb3V0LWFsdCBtZS0xXCI+PC9zcGFuPnt7J0FEQl9IRUFERVIuTE9HT1VUJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cIm15LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicHQtMSBweC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhcyBmYS11c2VyIG1lLTFcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Z1bGxOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWluaXRpYWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJsb2dpbigpXCIgaWQ9XCJzdGFydC1sb2dpblwiPnt7J0FEQl9IRUFERVIuTE9HSU4nfHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJuYXZpZ2F0aW9uXCIgY2xhc3M9XCJkLWJsb2NrIHRleHQtY2VudGVyIG10LTIgdGV4dC13aGl0ZVwiIGhyZWY9XCJ7e25hdmlnYXRpb24uY3JlYXRlQWNjb3VudExpbmt9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fSZyZXR1cm5Vcmw9e3t1cmx9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuQ1JFQVRFX1VTRVInfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtYmxvY2sgZC1tZC1ub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gcHktMSBweC0yIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInNob3dVc2VyTWVudSA9IGZhbHNlO3Nob3dNZW51RHJvcGRvd24oIXNob3dNZW51KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuTUVOWSd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1zLTEgZmFzXCIgW25nQ2xhc3NdPVwic2hvd01lbnU/J2ZhLWNoZXZyb24tdXAnOidmYS1jaGV2cm9uLWRvd24nXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9oZWFkZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9iaWxlLW1lbnUgZC1mbGV4IGZsZXgtY29sdW1uIGQtbWQtbm9uZSBiZy1wcmltYXJ5IHRleHQtd2hpdGVcIiAqbmdJZj1cInNob3dNZW51JiZuYXZpZ2F0aW9uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtMlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiICpuZ0lmPVwiaW5pdGlhbHNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5pdGlhbHMgbWUtMlwiPnt7aW5pdGlhbHN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2dvdXQoKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5MT0dPVVQnfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTJcIiAqbmdJZj1cIiFpbml0aWFsc1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImxvZ2luKClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIGlkPVwibG9naW5cIj5cclxuICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLkxPR0lOJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwie3tuYXZpZ2F0aW9uLmNyZWF0ZUFjY291bnRMaW5rfX0/bGFuZz17e3RyYW5zLmN1cnJlbnRMYW5nfX0mcmV0dXJuVXJsPXt7dXJsfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLkNSRUFURV9VU0VSJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMlwiPlxyXG4gICAgICAgICAgICA8aHIgY2xhc3M9XCJteS0wXCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWRcIj5cclxuICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImQtYmxvY2sgcHktMSB0ZXh0LXdoaXRlXCIgaHJlZj1cInt7bmF2aWdhdGlvbi5hcnRpbmZvLnVybH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bmF2aWdhdGlvbi5hcnRpbmZvLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGhyIGNsYXNzPVwibXktMFwiPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImQtYmxvY2sgcHktMSB0ZXh0LXdoaXRlXCIgaHJlZj1cInt7bmF2aWdhdGlvbi5vYnNlcnZhdGlvbnMudXJsfX0/bGFuZz17e3RyYW5zLmN1cnJlbnRMYW5nfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tuYXZpZ2F0aW9uLm9ic2VydmF0aW9ucy50cmFuc0lkfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cIm15LTBcIj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkLWJsb2NrIHB5LTEgdGV4dC13aGl0ZVwiIGhyZWY9XCJ7e25hdmlnYXRpb24ubmFtZUFuZFJlbGF0aW9uc2hpcC51cmx9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e25hdmlnYXRpb24ubmFtZUFuZFJlbGF0aW9uc2hpcC50cmFuc0lkfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cIm15LTBcIj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkLWJsb2NrIHB5LTEgdGV4dC13aGl0ZVwiIFtocmVmXT1cIm5hdmlnYXRpb24uYWJvdXQudXJsXCI+e3tuYXZpZ2F0aW9uLmFib3V0LnRyYW5zSWR8dHJhbnNsYXRlfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGhyIGNsYXNzPVwibXktMFwiPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImQtYmxvY2sgcHktMSB0ZXh0LXdoaXRlXCIgW2hyZWZdPVwibmF2aWdhdGlvbi5hcnRwb3J0YWxlblVybFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLkFSVFBPUlRBTEVOX1RJVExFJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJteS0wXCI+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImQtYmxvY2sgdGV4dC13aGl0ZSBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuREVWRUxPUEVEX0JZJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cuYXJ0ZGF0YWJhbmtlbi5zZS9cIiBjbGFzcz1cInRleHQtd2hpdGVcIj48dT57eydBREJfSEVBREVSLkFSVERBVEFCQU5LRU4nfHRyYW5zbGF0ZX19PC91PjwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtYXV0byBzcGxhc2gtaGVpZ2h0XCIgaWQ9XCJwYXR0ZXJuXCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgKG9uVmlzaWJsZSk9XCJvbkhpZGVUb3AoZmFsc2UpXCIgKG9uSGlkZGVuKT1cIm9uSGlkZVRvcCh0cnVlKVwiIHN0eWxlPVwiaGVpZ2h0OjBweFwiPjwvZGl2PiJdfQ==
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvYWRiLWhlYWRlci9hZGItbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9hZGItaGVhZGVyL2FkYi1uYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQTZCLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJILE9BQU8sRUFBYSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQU8vQyxNQUFNLE9BQU8sZUFBZTtJQTZCeEIsWUFDWSxVQUFzQixFQUN0QixVQUE4QixFQUMvQixLQUF1QjtRQUZ0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQW9CO1FBQy9CLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBL0IxQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDOUMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFN0Isd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRTVCLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBWVIsYUFBUSxHQUFHLElBQUksQ0FBQztRQUd6QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBUXJCLENBQUM7SUF0QkQsSUFBYSxRQUFRLENBQUMsUUFBZ0I7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxJQUFJLFFBQVEsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3RCLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMxQzthQUFNO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN6RjtJQUNMLENBQUM7SUFBQSxDQUFDO0lBZUYsUUFBUTtRQUNKLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDaEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO1FBQ3hELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxvQ0FBb0MsQ0FBQztRQUM1RixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUE7UUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQWEsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNwRixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBYTtRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsT0FBZTtRQUNwQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3ZELElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDekQ7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM5RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVPLGVBQWUsQ0FBQyxPQUFlLEVBQUUsSUFBWTtRQUNqRCwrRkFBK0Y7UUFDL0YsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLGdCQUFnQixJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLDRCQUE0QixJQUFJLE9BQU8sQ0FBQztRQUN0SCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDcEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBYTtRQUMxQixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFJO1FBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsNkRBQTZEO0lBQ2pFLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVSxFQUFFLE9BQWU7UUFDcEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ2hELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxPQUFPLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7SUFDaEMsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBS0QsV0FBVztRQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQzs7K0hBekdRLGVBQWU7bUhBQWYsZUFBZSxnUENWNUIsZzNTQTBKMEY7MkZEaEo3RSxlQUFlO2tCQUozQixTQUFTOytCQUNJLFNBQVM7aUtBS1QsWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0UsV0FBVztzQkFBbkIsS0FBSztnQkFNTyxRQUFRO3NCQUFwQixLQUFLO2dCQVVHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4vZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhZGItbmF2JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hZGItbmF2LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQURCTmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgICBAT3V0cHV0KCkgbG9naW5DbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIGxvZ291dENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgZHJvcE1lbnVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgICBASW5wdXQoKSBzaG93UGF0dGVybiA9IGZhbHNlO1xyXG4gICAgZnVsbE5hbWU6IHN0cmluZztcclxuICAgIHRyYW5zbGF0aW9uRmluaXNoZWQgPSBmYWxzZTtcclxuICAgIHNocmluazogYm9vbGVhbjtcclxuICAgIGxhc3RQb3NpdGlvbiA9IDA7XHJcblxyXG4gICAgQElucHV0KCkgc2V0IHVzZXJOYW1lKGZ1bGxOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmZ1bGxOYW1lID0gZnVsbE5hbWU7XHJcbiAgICAgICAgY29uc3Qgc3BsaXR0ZWQgPSBmdWxsTmFtZS5zcGxpdCgnICcpO1xyXG4gICAgICAgIGlmIChzcGxpdHRlZD8ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbml0aWFscyA9IHNwbGl0dGVkLnNoaWZ0KCkuY2hhckF0KDApICsgc3BsaXR0ZWQucG9wKCkuY2hhckF0KDApO1xyXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxzID0gaW5pdGlhbHMudG9VcHBlckNhc2UoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxzID0gdGhpcy5mdWxsTmFtZSA/IHRoaXMuZnVsbE5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgOiB0aGlzLmZ1bGxOYW1lO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBASW5wdXQoKSBhcnRmYWt0YSA9IHRydWU7XHJcblxyXG4gICAgaW5pdGlhbHM6IHN0cmluZztcclxuICAgIHNob3dNZW51ID0gZmFsc2U7XHJcbiAgICBzaG93VXNlck1lbnUgPSBmYWxzZTtcclxuICAgIG5hdmlnYXRpb246IE5hdmlnYXRpb247XHJcbiAgICB1cmw6IHN0cmluZztcclxuICAgIGV4cGFuZGVkTGluazogc3RyaW5nO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgZW52U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyB0cmFuczogVHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMudXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICAgICAgY29uc3QgYmFzZVVybCA9IHRoaXMuZW52U2VydmljZS5lbnZpcm9ubWVudC5yZXNvdXJjZVVybDtcclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmFydGZha3RhID8gJy9hc3NldHMvbGlua3MtYXAzLmpzb24nIDogJy9hc3NldHMvYXJ0cG9ydGFsZW4vbGlua3MtYXAzLmpzb24nO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdiYW5hbmEnLGJhc2VVcmwgKyB1cmwpXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaHR0cENsaWVudC5nZXQ8TmF2aWdhdGlvbj4oYmFzZVVybCArIHVybCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbiA9IHJlc3VsdDtcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy5pbml0VHJhbnNsYXRpb25zKGJhc2VVcmwpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uSGlkZVRvcChzaG93OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zaHJpbmsgPSBzaG93OyBcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRUcmFuc2xhdGlvbnMoYmFzZVVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJhbnMuc3RvcmUudHJhbnNsYXRpb25zW3RoaXMudHJhbnMuY3VycmVudExhbmddKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFRyYW5zbGF0aW9uKGJhc2VVcmwsIHRoaXMudHJhbnMuY3VycmVudExhbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy50cmFucy5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uRmluaXNoZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkVHJhbnNsYXRpb24oYmFzZVVybCwgZXZlbnQubGFuZyk7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbG9hZFRyYW5zbGF0aW9uKGJhc2VVcmw6IHN0cmluZywgbGFuZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgLy9UT0RPOiBQcmVwYXJlIGZvciBkaWZmZW50cyBsYW5nIHRoZW4gZW4gc3YgKGVuLUdCKSBvciBhZGQgbW9yZSBmaWxlcyBpbiBkZXZjb21wb25lbnRzZXJ2ZXIgOilcclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmFydGZha3RhID8gYmFzZVVybCArIGAvYXNzZXRzL2kxOG4vJHtsYW5nfS5qc29uYCA6IGJhc2VVcmwgKyBgL2Fzc2V0cy9hcnRwb3J0YWxlbi9pMThuLyR7bGFuZ30uanNvbmA7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaHR0cENsaWVudC5nZXQodXJsKS5zdWJzY3JpYmUodHJhbnNsYXRpb25zID0+IHtcclxuICAgICAgICAgICAgdGhpcy50cmFucy5zZXRUcmFuc2xhdGlvbihsYW5nLCB0cmFuc2xhdGlvbnMsIHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uRmluaXNoZWQgPSB0cnVlO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93TWVudURyb3Bkb3duKHNob3c6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zaG93TWVudSAhPT0gc2hvdykge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dNZW51ID0gc2hvdztcclxuICAgICAgICAgICAgdGhpcy5kcm9wTWVudUNoYW5nZS5lbWl0KHNob3cpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRMYW5ndWFnZShsYW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50cmFucy51c2UobGFuZyk7XHJcbiAgICAgICAgdGhpcy5zaG93TWVudSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZHJvcE1lbnVDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgLy9UT0RPOiBzZXQgbG9jYWxzdG9yYWdlL2Nvb2tpZXMgb3IgcHJvYmFseSBldmVudCB0byBtYWluIGFwcFxyXG4gICAgfVxyXG5cclxuICAgIG9uRXhwYW5kTGluayhldmVudDogYW55LCB0cmFuc0lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICBpZiAodGhpcy5leHBhbmRlZExpbmsgPT09IHRyYW5zSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5leHBhbmRlZExpbmsgPSBudWxsO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRMaW5rID0gdHJhbnNJZDtcclxuICAgIH1cclxuXHJcbiAgICBsb2dpbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxvZ2luQ2xpY2tlZC5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9nb3V0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubG9nb3V0Q2xpY2tlZC5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOYXZpZ2F0aW9uIHtcclxuICAgIGFib3V0OiBMaW5rO1xyXG4gICAgYXJ0aW5mbzogTGluaztcclxuICAgIGFydGZha3RhOiBMaW5rO1xyXG4gICAgb2JzZXJ2YXRpb25zOiBMaW5rO1xyXG4gICAgbmFtZUFuZFJlbGF0aW9uc2hpcDogTGluaztcclxuICAgIGNyZWF0ZUFjY291bnRMaW5rOiBzdHJpbmc7XHJcbiAgICBhcnRmYWt0YVVybDogc3RyaW5nO1xyXG4gICAgYXJ0cG9ydGFsZW5Vcmw6IHN0cmluZztcclxuICAgIHN1cHBvcnRVcmw6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMaW5rIHtcclxuICAgIHRyYW5zSWQ6IHN0cmluZztcclxuICAgIHVybDogc3RyaW5nO1xyXG59XHJcblxyXG4iLCI8IS0tIHBvc2l0aW9uLXN0YXRpYyAtLT5cclxuPGRpdiBjbGFzcz1cImJnLXByaW1hcnkgc3RpY2t5LXNtLXRvcCBwLTJcIiBbYXR0ci5pZF09XCJzaG93UGF0dGVybiYmIXNob3dNZW51PydwYXR0ZXJuJzonJ1wiIFtjbGFzcy5zaHJpbmtdPVwic2hyaW5rXCIgKGFkYkNsaWNrT3V0c2lkZSk9XCJzaG93VXNlck1lbnU9ZmFsc2U7c2hvd01lbnVEcm9wZG93bihmYWxzZSk7XCI+XHJcbiAgICA8aGVhZGVyIGlkPVwiZXh0cmEtaGVhZGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPG5hdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLTVcIiBzdHlsZT1cImRpc3BsYXk6IGJsb2NrO21hcmdpbi10b3A6IC0wLjRyZW07XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3LmFydGRhdGFiYW5rZW4uc2UvXCIgdGFyZ2V0PVwibmV3XCI+PGltZyBzcmM9XCIvYXNzZXRzL2ltYWdlcy9sb2dvLnN2Z1wiIHN0eWxlPVwiaGVpZ2h0OiAyLjVyZW07XCI+PC9hPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cInRleHQtd2hpdGUgZnctYm9sZCBmcy0zXCIgaHJlZj1cIi9cIj5BUlRGQUtUQTwvYT5cclxuICAgICAgICAgICAgPC9uYXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0cmFuc2xhdGlvbkZpbmlzaGVkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtYXV0byBkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGQtYmxvY2sgbm8tY2FyZXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhZGJEcm9wZG93biBjbGFzcz1cInB4LTEgcHktMCBidG4gYnRuLXByaW1hcnkgYnRuLXNtIGRyb3Bkb3duLXRvZ2dsZVwiPjxzcGFuIGNsYXNzPVwiZmFyIGZhLWdsb2JlXCI+PC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtZW5kIHB5LTEgYmctcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFtjbGFzcy5wZS1ub25lXT1cInRyYW5zLmN1cnJlbnRMYW5nPT09J3N2J1wiIChjbGljayk9XCJzZXRMYW5ndWFnZSgnc3YnKVwiIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHB5LTAgcHgtMiB0ZXh0LXdoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5mdy1ib2xkXT1cInRyYW5zLmN1cnJlbnRMYW5nPT09J3N2J1wiPnt7J0FEQl9IRUFERVIuSU5fU1dFRElTSCd8dHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXIgbXktMSBvcGFjaXR5LTI1IGJnLXdoaXRlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2NsYXNzLnBlLW5vbmVdPVwidHJhbnMuY3VycmVudExhbmc9PT0nZW4nXCIgKGNsaWNrKT1cInNldExhbmd1YWdlKCdlbicpXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHktMCBweC0yIHRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmZ3LWJvbGRdPVwidHJhbnMuY3VycmVudExhbmc9PT0nZW4nXCI+e3snQURCX0hFQURFUi5JTl9FTkdMSVNIJ3x0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJtcy1hdXRvIHRleHQtd2hpdGUgZC1ub25lIGQtbWQtYmxvY2tcIiBbaHJlZl09XCJuYXZpZ2F0aW9uLmFydHBvcnRhbGVuVXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuQVJUUE9SVEFMRU5fVElUTEUnfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC13aGl0ZSBkLW5vbmUgZC1tZC1ibG9ja1wiIFtocmVmXT1cIm5hdmlnYXRpb24uc3VwcG9ydFVybFwiPlN1cHBvcnQ8L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9oZWFkZXI+XHJcbiAgICA8aGVhZGVyIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LXdyYXAgZ2FwLTJcIiAqbmdJZj1cInRyYW5zbGF0aW9uRmluaXNoZWRcIj5cclxuICAgICAgICA8bmF2ICpuZ0lmPVwibmF2aWdhdGlvblwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cuYXJ0ZGF0YWJhbmtlbi5zZS9cIiBjbGFzcz1cImhvbWUtbGlua1wiIHRhcmdldD1cIm5ld1wiIHN0eWxlPVwibWFyZ2luLXRvcDogLTAuNHJlbTtcIj48aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2xvZ29fc21fd2hpdGUucG5nXCIgc3R5bGU9XCJoZWlnaHQ6IDEuNnJlbTtcIj48L2E+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC13aGl0ZSBmdy1ib2xkIG1lLTMgaG9tZS1saW5rXCIgaHJlZj1cInt7bmF2aWdhdGlvbi5hcnRmYWt0YS51cmx9fVwiPlxyXG4gICAgICAgICAgICAgICAge3tuYXZpZ2F0aW9uLmFydGZha3RhLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cInRleHQtd2hpdGUgZC1ub25lIGQtbWQtYmxvY2tcIiBocmVmPVwie3tuYXZpZ2F0aW9uLmFydGluZm8udXJsfX1cIj5cclxuICAgICAgICAgICAgICAgIHt7bmF2aWdhdGlvbi5hcnRpbmZvLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cInRleHQtd2hpdGUgZC1ub25lIGQtbWQtYmxvY2tcIiBocmVmPVwie3tuYXZpZ2F0aW9uLm9ic2VydmF0aW9ucy51cmx9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fVwiPlxyXG4gICAgICAgICAgICAgICAge3tuYXZpZ2F0aW9uLm9ic2VydmF0aW9ucy50cmFuc0lkfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0LXdoaXRlIGQtbm9uZSBkLW1kLWJsb2NrXCIgaHJlZj1cInt7bmF2aWdhdGlvbi5uYW1lQW5kUmVsYXRpb25zaGlwLnVybH19P2xhbmc9e3t0cmFucy5jdXJyZW50TGFuZ319XCI+XHJcbiAgICAgICAgICAgICAgICB7e25hdmlnYXRpb24ubmFtZUFuZFJlbGF0aW9uc2hpcC50cmFuc0lkfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICA8L25hdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXMtYXV0b1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIG5vLWNhcmV0IGQtbm9uZSBkLW1kLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBhZGJEcm9wZG93biBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gZHJvcGRvd24tdG9nZ2xlXCIgW2NsYXNzLmluaXRpYWxzXT1cImluaXRpYWxzXCIgKGNsaWNrKT1cInNob3dNZW51RHJvcGRvd24oIXNob3dNZW51KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbml0aWFsc1wiPnt7aW5pdGlhbHN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5pdGlhbHNcIj57eydBREJfSEVBREVSLkxPR0lOJ3x0cmFuc2xhdGV9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtZW5kIHB5LTEgYmctcHJpbWFyeSB0ZXh0LXdoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluaXRpYWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInB4LTIgcGItMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibG9nb3V0KClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wIHRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhcyBmYS1zaWduLW91dC1hbHQgbWUtMVwiPjwvc3Bhbj57eydBREJfSEVBREVSLkxPR09VVCd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJteS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInB0LTEgcHgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYXMgZmEtdXNlciBtZS0xXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tmdWxsTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbml0aWFsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwibG9naW4oKVwiIGlkPVwic3RhcnQtbG9naW5cIj57eydBREJfSEVBREVSLkxPR0lOJ3x0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwibmF2aWdhdGlvblwiIGNsYXNzPVwiZC1ibG9jayB0ZXh0LWNlbnRlciBtdC0yIHRleHQtd2hpdGVcIiBocmVmPVwie3tuYXZpZ2F0aW9uLmNyZWF0ZUFjY291bnRMaW5rfX0/bGFuZz17e3RyYW5zLmN1cnJlbnRMYW5nfX0mcmV0dXJuVXJsPXt7dXJsfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLkNSRUFURV9VU0VSJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWJsb2NrIGQtbWQtbm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIHB5LTEgcHgtMiBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzaG93VXNlck1lbnUgPSBmYWxzZTtzaG93TWVudURyb3Bkb3duKCFzaG93TWVudSlcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLk1FTlknfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtcy0xIGZhc1wiIFtuZ0NsYXNzXT1cInNob3dNZW51PydmYS1jaGV2cm9uLXVwJzonZmEtY2hldnJvbi1kb3duJ1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvaGVhZGVyPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1tZW51IGQtZmxleCBmbGV4LWNvbHVtbiBkLW1kLW5vbmUgYmctcHJpbWFyeSB0ZXh0LXdoaXRlXCIgKm5nSWY9XCJzaG93TWVudSYmbmF2aWdhdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIiAqbmdJZj1cImluaXRpYWxzXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluaXRpYWxzIG1lLTJcIj57e2luaXRpYWxzfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibG9nb3V0KClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuTE9HT1VUJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC0yXCIgKm5nSWY9XCIhaW5pdGlhbHNcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2dpbigpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiBpZD1cImxvZ2luXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5MT0dJTid8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bmF2aWdhdGlvbi5jcmVhdGVBY2NvdW50TGlua319P2xhbmc9e3t0cmFucy5jdXJyZW50TGFuZ319JnJldHVyblVybD17e3VybH19XCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB0ZXh0LXdoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5DUkVBVEVfVVNFUid8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInB4LTJcIj5cclxuICAgICAgICAgICAgPGhyIGNsYXNzPVwibXktMFwiPlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCI+XHJcbiAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkLWJsb2NrIHB5LTEgdGV4dC13aGl0ZVwiIGhyZWY9XCJ7e25hdmlnYXRpb24uYXJ0aW5mby51cmx9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e25hdmlnYXRpb24uYXJ0aW5mby50cmFuc0lkfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cIm15LTBcIj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkLWJsb2NrIHB5LTEgdGV4dC13aGl0ZVwiIGhyZWY9XCJ7e25hdmlnYXRpb24ub2JzZXJ2YXRpb25zLnVybH19P2xhbmc9e3t0cmFucy5jdXJyZW50TGFuZ319XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bmF2aWdhdGlvbi5vYnNlcnZhdGlvbnMudHJhbnNJZHx0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJteS0wXCI+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZC1ibG9jayBweS0xIHRleHQtd2hpdGVcIiBocmVmPVwie3tuYXZpZ2F0aW9uLm5hbWVBbmRSZWxhdGlvbnNoaXAudXJsfX0/bGFuZz17e3RyYW5zLmN1cnJlbnRMYW5nfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tuYXZpZ2F0aW9uLm5hbWVBbmRSZWxhdGlvbnNoaXAudHJhbnNJZHx0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJteS0wXCI+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZC1ibG9jayBweS0xIHRleHQtd2hpdGVcIiBbaHJlZl09XCJuYXZpZ2F0aW9uLmFib3V0LnVybFwiPnt7bmF2aWdhdGlvbi5hYm91dC50cmFuc0lkfHRyYW5zbGF0ZX19PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cIm15LTBcIj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkLWJsb2NrIHB5LTEgdGV4dC13aGl0ZVwiIFtocmVmXT1cIm5hdmlnYXRpb24uYXJ0cG9ydGFsZW5VcmxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5BUlRQT1JUQUxFTl9USVRMRSd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGhyIGNsYXNzPVwibXktMFwiPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJkLWJsb2NrIHRleHQtd2hpdGUgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLkRFVkVMT1BFRF9CWSd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3LmFydGRhdGFiYW5rZW4uc2UvXCIgY2xhc3M9XCJ0ZXh0LXdoaXRlXCI+PHU+e3snQURCX0hFQURFUi5BUlREQVRBQkFOS0VOJ3x0cmFuc2xhdGV9fTwvdT48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LWF1dG8gc3BsYXNoLWhlaWdodFwiIGlkPVwicGF0dGVyblwiPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IChvblZpc2libGUpPVwib25IaWRlVG9wKGZhbHNlKVwiIChvbkhpZGRlbik9XCJvbkhpZGVUb3AodHJ1ZSlcIiBzdHlsZT1cImhlaWdodDowcHhcIj48L2Rpdj4iXX0=