ctt-puro 0.71.7 → 0.71.9

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.
@@ -30,7 +30,7 @@ export class PuroGrid3colPlusFilterComponent {
30
30
  this.option.set(value);
31
31
  }
32
32
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroGrid3colPlusFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroGrid3colPlusFilterComponent, isStandalone: true, selector: "lib-puro-grid3col-plus-filter", inputs: { pretitle: "pretitle", title: "title", filter: "filter", items: "items", button: "button", backgroundImg: "backgroundImg", exp: "exp", tags: "tags", textColors: "textColors" }, ngImport: i0, template: "<section class=\"events events__list generalMargin\" [style.--bg-url]=\"cssBgUrl\">\n <div class=\"events__container\">\n <div class=\"events__headingSection\">\n @if (pretitle) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.pretitle || 'p'\"\n cssClass=\"events__subHeading\"\n [color]=\"textColors?.pretitle\"\n [content]=\"pretitle\"\n ></lib-puro-dynamic-heading>\n }\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'h2'\"\n cssClass=\"events__heading\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n @if (filter) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n (change)=\"selectOption($event)\"\n >\n <option [value]=\"0\" selected>\n {{ filter.placeholder }}\n </option>\n @for (option of filter.options || []; track $index) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n <div class=\"events__list--inner\">\n @for (item of itemsDisplayed() || []; track $index) {\n <div class=\"events__box\">\n @if (item.title) {\n <div class=\"events__heading photo\">\n {{ item.title }}\n </div>\n }\n <div class=\"events__inner\">\n @if (item.links && item.links.length > 0) {\n <a\n [linkType]=\"item?.links?.[0]?.linkType\"\n [href]=\"item?.links?.[0]?.url\"\n >\n <div\n class=\"events__graphic js-slider_fix-arrows-zone\"\n >\n @if (item.img) {\n <img\n [src]=\"item.img.src\"\n width=\"509\"\n height=\"510\"\n class=\"events__graphic--img\"\n [alt]=\"item.img.alt\" loading=\"lazy\" />\n }\n </div>\n </a>\n } @else {\n <div\n class=\"events__graphic js-slider_fix-arrows-zone\"\n >\n @if (item.img) {\n <img\n [src]=\"item.img.src\"\n width=\"509\"\n height=\"510\"\n class=\"events__graphic--img\"\n [alt]=\"item.img.alt\" loading=\"lazy\" />\n }\n </div>\n }\n @if (exp) {\n <div class=\"events__info-location\">\n @if (item.ndTitle) {\n <span class=\"events__subHeading photo\">{{\n item.ndTitle\n }}</span>\n }\n </div>\n } @else {\n <div class=\"events__info\">\n @if (item.ndTitle) {\n <span class=\"events__subHeading photo\">{{\n item.ndTitle\n }}</span>\n }\n @if (item.icon) {\n <div class=\"events__icon\">\n <i class=\"{{ item.icon }}\"></i>\n </div>\n }\n @if (item.date) {\n <span class=\"events__date\">{{\n item.date\n }}</span>\n }\n </div>\n }\n <div class=\"btn__group\">\n @for (link of item.links || []; track $index) {\n @if (link) {\n <a\n [linkType]=\"link.linkType\"\n [href]=\"link.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"link.label\"\n ><span>{{ link.label }}</span></a\n >\n }\n }\n @for (button of item.buttons || []; track $index) {\n @if (button) {\n <a\n [linkType]=\"button.linkType\"\n [href]=\"button.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"button.label\"\n ><span>{{ button.label }}</span></a\n >\n }\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n @if (button) {\n <div class=\"btn__group\">\n <a\n [linkType]=\"button.linkType\"\n [href]=\"button.url\"\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"button.label\"\n ><span>{{ button.label }}</span></a\n >\n </div>\n }\n</section>\n", styles: [".events__list:before{content:\"\";position:absolute;display:block;top:-11.5rem;left:-51.5rem;width:101.8rem;transform:scale(1) rotate(90deg);aspect-ratio:1;background:var(--bg-url) center center no-repeat;background-size:100%;opacity:.15}.btn.btn__secondary--outline:hover{background-color:var(--cl-text-white);color:var(--cl-title);border-color:var(--cl-text-white)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }, { kind: "directive", type: AutoImageZoomWrapperDirective, selector: "img[src]" }, { kind: "component", type: PuroDynamicHeadingComponent, selector: "lib-puro-dynamic-heading", inputs: ["tag", "wrapper", "cssClass", "content", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroGrid3colPlusFilterComponent, isStandalone: true, selector: "lib-puro-grid3col-plus-filter", inputs: { pretitle: "pretitle", title: "title", filter: "filter", items: "items", button: "button", backgroundImg: "backgroundImg", exp: "exp", tags: "tags", textColors: "textColors" }, ngImport: i0, template: "<section class=\"events events__list generalMargin\" [style.--bg-url]=\"cssBgUrl\">\n <div class=\"events__container\">\n <div class=\"events__headingSection\">\n @if (pretitle) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.pretitle || 'p'\"\n cssClass=\"events__subHeading\"\n [color]=\"textColors?.pretitle\"\n [content]=\"pretitle\"\n ></lib-puro-dynamic-heading>\n }\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'h2'\"\n cssClass=\"events__heading\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n @if (filter) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n (change)=\"selectOption($event)\"\n >\n <option [value]=\"0\" selected>\n {{ filter.placeholder }}\n </option>\n @for (option of filter.options || []; track $index) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n <div class=\"events__list--inner\">\n @for (item of itemsDisplayed() || []; track $index) {\n <div class=\"events__box\">\n @if (item.title) {\n <div class=\"events__heading photo\">\n {{ item.title }}\n </div>\n }\n <div class=\"events__inner\">\n @if (item.links && item.links.length > 0) {\n <a\n [linkType]=\"item?.links?.[0]?.linkType\"\n [href]=\"item?.links?.[0]?.url\"\n >\n <div\n class=\"events__graphic js-slider_fix-arrows-zone\"\n >\n @if (item.img) {\n <img\n [src]=\"item.img.src\"\n width=\"509\"\n height=\"510\"\n class=\"events__graphic--img\"\n [alt]=\"item.img.alt\" loading=\"lazy\" />\n }\n </div>\n </a>\n } @else {\n <div\n class=\"events__graphic js-slider_fix-arrows-zone\"\n >\n @if (item.img) {\n <img\n [src]=\"item.img.src\"\n width=\"509\"\n height=\"510\"\n class=\"events__graphic--img\"\n [alt]=\"item.img.alt\" loading=\"lazy\" />\n }\n </div>\n }\n @if (exp) {\n <div class=\"events__info-location\">\n @if (item.ndTitle) {\n <span class=\"events__subHeading photo\">{{\n item.ndTitle\n }}</span>\n }\n </div>\n } @else {\n <div class=\"events__info\">\n @if (item.ndTitle) {\n <span class=\"events__subHeading photo\">{{\n item.ndTitle\n }}</span>\n }\n @if (item.icon) {\n <div class=\"events__icon\">\n <i class=\"{{ item.icon }}\"></i>\n </div>\n }\n @if (item.date) {\n <span class=\"events__date\">{{\n item.date\n }}</span>\n }\n </div>\n }\n <div class=\"btn__group\">\n @for (link of item.links || []; track $index) {\n @if (link) {\n <a\n [linkType]=\"link.linkType\"\n [href]=\"link.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"link.label\"\n ><span>{{ link.label }}</span></a\n >\n }\n }\n @for (button of item.buttons || []; track $index) {\n @if (button) {\n <a\n [linkType]=\"button.linkType\"\n [href]=\"button.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"button.label\"\n ><span>{{ button.label }}</span></a\n >\n }\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n @if (button) {\n <div class=\"btn__group\">\n <a\n [linkType]=\"button.linkType\"\n [href]=\"button.url\"\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"button.label\"\n ><span>{{ button.label }}</span></a\n >\n </div>\n }\n</section>\n", styles: [".events__list:before{content:\"\";position:absolute;display:block;top:-11.5rem;left:-51.5rem;width:101.8rem;transform:scale(1) rotate(90deg);aspect-ratio:1;background:var(--bg-url) center center no-repeat;background-size:100%;opacity:.15}.btn.btn__secondary--outline:hover{background-color:var(--cl-text-white);color:var(--cl-title);border-color:var(--cl-text-white)}.events__heading{font-size:45px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }, { kind: "directive", type: AutoImageZoomWrapperDirective, selector: "img[src]" }, { kind: "component", type: PuroDynamicHeadingComponent, selector: "lib-puro-dynamic-heading", inputs: ["tag", "wrapper", "cssClass", "content", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34
34
  }
35
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroGrid3colPlusFilterComponent, decorators: [{
36
36
  type: Component,
@@ -39,7 +39,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
39
39
  PuroLinkTypeDirective,
40
40
  AutoImageZoomWrapperDirective,
41
41
  PuroDynamicHeadingComponent,
42
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"events events__list generalMargin\" [style.--bg-url]=\"cssBgUrl\">\n <div class=\"events__container\">\n <div class=\"events__headingSection\">\n @if (pretitle) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.pretitle || 'p'\"\n cssClass=\"events__subHeading\"\n [color]=\"textColors?.pretitle\"\n [content]=\"pretitle\"\n ></lib-puro-dynamic-heading>\n }\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'h2'\"\n cssClass=\"events__heading\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n @if (filter) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n (change)=\"selectOption($event)\"\n >\n <option [value]=\"0\" selected>\n {{ filter.placeholder }}\n </option>\n @for (option of filter.options || []; track $index) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n <div class=\"events__list--inner\">\n @for (item of itemsDisplayed() || []; track $index) {\n <div class=\"events__box\">\n @if (item.title) {\n <div class=\"events__heading photo\">\n {{ item.title }}\n </div>\n }\n <div class=\"events__inner\">\n @if (item.links && item.links.length > 0) {\n <a\n [linkType]=\"item?.links?.[0]?.linkType\"\n [href]=\"item?.links?.[0]?.url\"\n >\n <div\n class=\"events__graphic js-slider_fix-arrows-zone\"\n >\n @if (item.img) {\n <img\n [src]=\"item.img.src\"\n width=\"509\"\n height=\"510\"\n class=\"events__graphic--img\"\n [alt]=\"item.img.alt\" loading=\"lazy\" />\n }\n </div>\n </a>\n } @else {\n <div\n class=\"events__graphic js-slider_fix-arrows-zone\"\n >\n @if (item.img) {\n <img\n [src]=\"item.img.src\"\n width=\"509\"\n height=\"510\"\n class=\"events__graphic--img\"\n [alt]=\"item.img.alt\" loading=\"lazy\" />\n }\n </div>\n }\n @if (exp) {\n <div class=\"events__info-location\">\n @if (item.ndTitle) {\n <span class=\"events__subHeading photo\">{{\n item.ndTitle\n }}</span>\n }\n </div>\n } @else {\n <div class=\"events__info\">\n @if (item.ndTitle) {\n <span class=\"events__subHeading photo\">{{\n item.ndTitle\n }}</span>\n }\n @if (item.icon) {\n <div class=\"events__icon\">\n <i class=\"{{ item.icon }}\"></i>\n </div>\n }\n @if (item.date) {\n <span class=\"events__date\">{{\n item.date\n }}</span>\n }\n </div>\n }\n <div class=\"btn__group\">\n @for (link of item.links || []; track $index) {\n @if (link) {\n <a\n [linkType]=\"link.linkType\"\n [href]=\"link.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"link.label\"\n ><span>{{ link.label }}</span></a\n >\n }\n }\n @for (button of item.buttons || []; track $index) {\n @if (button) {\n <a\n [linkType]=\"button.linkType\"\n [href]=\"button.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"button.label\"\n ><span>{{ button.label }}</span></a\n >\n }\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n @if (button) {\n <div class=\"btn__group\">\n <a\n [linkType]=\"button.linkType\"\n [href]=\"button.url\"\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"button.label\"\n ><span>{{ button.label }}</span></a\n >\n </div>\n }\n</section>\n", styles: [".events__list:before{content:\"\";position:absolute;display:block;top:-11.5rem;left:-51.5rem;width:101.8rem;transform:scale(1) rotate(90deg);aspect-ratio:1;background:var(--bg-url) center center no-repeat;background-size:100%;opacity:.15}.btn.btn__secondary--outline:hover{background-color:var(--cl-text-white);color:var(--cl-title);border-color:var(--cl-text-white)}\n"] }]
42
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"events events__list generalMargin\" [style.--bg-url]=\"cssBgUrl\">\n <div class=\"events__container\">\n <div class=\"events__headingSection\">\n @if (pretitle) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.pretitle || 'p'\"\n cssClass=\"events__subHeading\"\n [color]=\"textColors?.pretitle\"\n [content]=\"pretitle\"\n ></lib-puro-dynamic-heading>\n }\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'h2'\"\n cssClass=\"events__heading\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n @if (filter) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n (change)=\"selectOption($event)\"\n >\n <option [value]=\"0\" selected>\n {{ filter.placeholder }}\n </option>\n @for (option of filter.options || []; track $index) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n <div class=\"events__list--inner\">\n @for (item of itemsDisplayed() || []; track $index) {\n <div class=\"events__box\">\n @if (item.title) {\n <div class=\"events__heading photo\">\n {{ item.title }}\n </div>\n }\n <div class=\"events__inner\">\n @if (item.links && item.links.length > 0) {\n <a\n [linkType]=\"item?.links?.[0]?.linkType\"\n [href]=\"item?.links?.[0]?.url\"\n >\n <div\n class=\"events__graphic js-slider_fix-arrows-zone\"\n >\n @if (item.img) {\n <img\n [src]=\"item.img.src\"\n width=\"509\"\n height=\"510\"\n class=\"events__graphic--img\"\n [alt]=\"item.img.alt\" loading=\"lazy\" />\n }\n </div>\n </a>\n } @else {\n <div\n class=\"events__graphic js-slider_fix-arrows-zone\"\n >\n @if (item.img) {\n <img\n [src]=\"item.img.src\"\n width=\"509\"\n height=\"510\"\n class=\"events__graphic--img\"\n [alt]=\"item.img.alt\" loading=\"lazy\" />\n }\n </div>\n }\n @if (exp) {\n <div class=\"events__info-location\">\n @if (item.ndTitle) {\n <span class=\"events__subHeading photo\">{{\n item.ndTitle\n }}</span>\n }\n </div>\n } @else {\n <div class=\"events__info\">\n @if (item.ndTitle) {\n <span class=\"events__subHeading photo\">{{\n item.ndTitle\n }}</span>\n }\n @if (item.icon) {\n <div class=\"events__icon\">\n <i class=\"{{ item.icon }}\"></i>\n </div>\n }\n @if (item.date) {\n <span class=\"events__date\">{{\n item.date\n }}</span>\n }\n </div>\n }\n <div class=\"btn__group\">\n @for (link of item.links || []; track $index) {\n @if (link) {\n <a\n [linkType]=\"link.linkType\"\n [href]=\"link.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"link.label\"\n ><span>{{ link.label }}</span></a\n >\n }\n }\n @for (button of item.buttons || []; track $index) {\n @if (button) {\n <a\n [linkType]=\"button.linkType\"\n [href]=\"button.url\"\n class=\"btn__link\"\n [attr.aria-label]=\"button.label\"\n ><span>{{ button.label }}</span></a\n >\n }\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n @if (button) {\n <div class=\"btn__group\">\n <a\n [linkType]=\"button.linkType\"\n [href]=\"button.url\"\n class=\"btn btn__primary--outline\"\n [attr.aria-label]=\"button.label\"\n ><span>{{ button.label }}</span></a\n >\n </div>\n }\n</section>\n", styles: [".events__list:before{content:\"\";position:absolute;display:block;top:-11.5rem;left:-51.5rem;width:101.8rem;transform:scale(1) rotate(90deg);aspect-ratio:1;background:var(--bg-url) center center no-repeat;background-size:100%;opacity:.15}.btn.btn__secondary--outline:hover{background-color:var(--cl-text-white);color:var(--cl-title);border-color:var(--cl-text-white)}.events__heading{font-size:45px}\n"] }]
43
43
  }], propDecorators: { pretitle: [{
44
44
  type: Input
45
45
  }], title: [{
@@ -59,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
59
59
  }], textColors: [{
60
60
  type: Input
61
61
  }] } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1ncmlkM2NvbC1wbHVzLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvY29tcG9uZW50cy9wdXJvLWdyaWQzY29sLXBsdXMtZmlsdGVyL3B1cm8tZ3JpZDNjb2wtcGx1cy1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1ncmlkM2NvbC1wbHVzLWZpbHRlci9wdXJvLWdyaWQzY29sLXBsdXMtZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUVMLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0gsNkJBQTZCLEVBQzdCLHFCQUFxQixHQUN4QixNQUFNLGtCQUFrQixDQUFDO0FBUTFCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQWdCaEYsTUFBTSxPQUFPLCtCQUErQjtJQWQ1QztRQTRCcUIsV0FBTSxHQUFHLE1BQU0sQ0FBa0IsR0FBRyxDQUFDLENBQUM7UUFDdEMsZUFBVSxHQUFHLE1BQU0sQ0FFbEMsU0FBUyxDQUFDLENBQUM7UUFFYixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBUWQsbUJBQWMsR0FBRyxRQUFRLENBQTJDLEdBQUcsRUFBRTtZQUNyRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUM7WUFFOUMsSUFBSSxRQUFRLEtBQUssR0FBRztnQkFBRSxPQUFPLEdBQUcsQ0FBQztZQUVqQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7S0FNTjtJQXBDRyxJQUFhLEtBQUssQ0FBQyxLQUErQztRQUM5RCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBY0QsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDdEQ7SUFDTCxDQUFDO0lBV0QsWUFBWSxDQUFDLEdBQVU7UUFDbkIsTUFBTSxLQUFLLEdBQUksR0FBRyxDQUFDLE1BQTRCLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQztRQUM3RCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDOytHQXZDUSwrQkFBK0I7bUdBQS9CLCtCQUErQixtUkNyQzVDLHVrT0E0SkEsMGFEaklRLFlBQVksK0JBQ1oscUJBQXFCLDRJQUVyQiw2QkFBNkIscURBQzdCLDJCQUEyQjs7NEZBTXRCLCtCQUErQjtrQkFkM0MsU0FBUzsrQkFDSSwrQkFBK0IsY0FDN0IsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1oscUJBQXFCO3dCQUVyQiw2QkFBNkI7d0JBQzdCLDJCQUEyQjtxQkFDOUIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDTyxLQUFLO3NCQUFqQixLQUFLO2dCQUlHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgICBBdXRvSW1hZ2Vab29tV3JhcHBlckRpcmVjdGl2ZSxcbiAgICBQdXJvTGlua1R5cGVEaXJlY3RpdmUsXG59IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHtcbiAgICBQdXJvQnV0dG9uSSxcbiAgICBQdXJvSW1hZ2VJLFxuICAgIFB1cm9UYWdzSSxcbiAgICBQdXJvVGV4dHNDb2xvcnNJLFxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFB1cm9Ecm9wZG93bkkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3B1cm8tZHJvcGRvd24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFB1cm9EeW5hbWljSGVhZGluZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9wdXJvLWR5bmFtaWMtaGVhZGluZyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLXB1cm8tZ3JpZDNjb2wtcGx1cy1maWx0ZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFB1cm9MaW5rVHlwZURpcmVjdGl2ZSxcblxuICAgICAgICBBdXRvSW1hZ2Vab29tV3JhcHBlckRpcmVjdGl2ZSxcbiAgICAgICAgUHVyb0R5bmFtaWNIZWFkaW5nQ29tcG9uZW50LFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cm8tZ3JpZDNjb2wtcGx1cy1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLWdyaWQzY29sLXBsdXMtZmlsdGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUHVyb0dyaWQzY29sUGx1c0ZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgcHJldGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgZmlsdGVyPzogUHVyb0Ryb3Bkb3duSTtcbiAgICBASW5wdXQoKSBzZXQgaXRlbXMoaXRlbXM6IFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtW10gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zLnNldChpdGVtcyk7XG4gICAgICAgIHRoaXMub3B0aW9uLnNldCgnMCcpO1xuICAgIH1cbiAgICBASW5wdXQoKSBidXR0b24/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBiYWNrZ3JvdW5kSW1nPzogUHVyb0ltYWdlSTtcbiAgICBASW5wdXQoKSBleHA/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHRhZ3M/OiBQdXJvVGFnc0k7XG4gICAgQElucHV0KCkgdGV4dENvbG9ycz86IFB1cm9UZXh0c0NvbG9yc0k7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbiA9IHNpZ25hbDxzdHJpbmcgfCBudW1iZXI+KCcwJyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0b3RhbEl0ZW1zID0gc2lnbmFsPFxuICAgICAgICBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySXRlbVtdIHwgdW5kZWZpbmVkXG4gICAgPih1bmRlZmluZWQpO1xuXG4gICAgY3NzQmdVcmwgPSAnJztcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5iYWNrZ3JvdW5kSW1nPy5zcmMpIHtcbiAgICAgICAgICAgIHRoaXMuY3NzQmdVcmwgPSBgdXJsKFwiJHt0aGlzLmJhY2tncm91bmRJbWcuc3JjfVwiKWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpdGVtc0Rpc3BsYXllZCA9IGNvbXB1dGVkPFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtW10gfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICAgICAgY29uc3QgYWxsID0gdGhpcy50b3RhbEl0ZW1zKCkgPz8gW107XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gU3RyaW5nKHRoaXMub3B0aW9uKCkgPz8gJzAnKTtcblxuICAgICAgICBpZiAoc2VsZWN0ZWQgPT09ICcwJykgcmV0dXJuIGFsbDtcblxuICAgICAgICByZXR1cm4gYWxsLmZpbHRlcigoaSkgPT4gU3RyaW5nKGkuZmlsdGVyUGFyZW50KSA9PT0gc2VsZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgc2VsZWN0T3B0aW9uKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSAoZXZ0LnRhcmdldCBhcyBIVE1MU2VsZWN0RWxlbWVudCkudmFsdWUgfHwgJzAnO1xuICAgICAgICB0aGlzLm9wdGlvbi5zZXQodmFsdWUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySXRlbSB7XG4gICAgaW1nPzogUHVyb0ltYWdlSTtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBuZFRpdGxlPzogc3RyaW5nO1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgZGF0ZT86IHN0cmluZztcbiAgICBmaWx0ZXI/OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgZmlsdGVyUGFyZW50Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGJ1dHRvbnM/OiBQdXJvQnV0dG9uSVtdO1xuICAgIGxpbmtzPzogUHVyb0J1dHRvbklbXTtcbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwiZXZlbnRzIGV2ZW50c19fbGlzdCBnZW5lcmFsTWFyZ2luXCIgW3N0eWxlLi0tYmctdXJsXT1cImNzc0JnVXJsXCI+XG4gICAgPGRpdiBjbGFzcz1cImV2ZW50c19fY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldmVudHNfX2hlYWRpbmdTZWN0aW9uXCI+XG4gICAgICAgICAgICBAaWYgKHByZXRpdGxlKSB7XG4gICAgICAgICAgICAgICAgPGxpYi1wdXJvLWR5bmFtaWMtaGVhZGluZ1xuICAgICAgICAgICAgICAgICAgICBbdGFnXT1cInRhZ3M/LnByZXRpdGxlIHx8ICdwJ1wiXG4gICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzPVwiZXZlbnRzX19zdWJIZWFkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInRleHRDb2xvcnM/LnByZXRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwicHJldGl0bGVcIlxuICAgICAgICAgICAgICAgID48L2xpYi1wdXJvLWR5bmFtaWMtaGVhZGluZz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAodGl0bGUpIHtcbiAgICAgICAgICAgICAgICA8bGliLXB1cm8tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgIFt0YWddPVwidGFncz8udGl0bGUgfHwgJ2gyJ1wiXG4gICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzPVwiZXZlbnRzX19oZWFkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInRleHRDb2xvcnM/LnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwidGl0bGVcIlxuICAgICAgICAgICAgICAgID48L2xpYi1wdXJvLWR5bmFtaWMtaGVhZGluZz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2dyb3VwIHdpdGhJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdE9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiMFwiIHNlbGVjdGVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpbHRlci5wbGFjZWhvbGRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgZmlsdGVyLm9wdGlvbnMgfHwgW107IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi5jb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjc2VsZWN0LWFycm93XCI+PC91c2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50c19fbGlzdC0taW5uZXJcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXNEaXNwbGF5ZWQoKSB8fCBbXTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50c19fYm94XCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50c19faGVhZGluZyBwaG90b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudHNfX2lubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0ubGlua3MgJiYgaXRlbS5saW5rcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cIml0ZW0/LmxpbmtzPy5bMF0/LmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiaXRlbT8ubGlua3M/LlswXT8udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXZlbnRzX19ncmFwaGljIGpzLXNsaWRlcl9maXgtYXJyb3dzLXpvbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaW1nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW0uaW1nLnNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiNTA5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNTEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldmVudHNfX2dyYXBoaWMtLWltZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbS5pbWcuYWx0XCIgbG9hZGluZz1cImxhenlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXZlbnRzX19ncmFwaGljIGpzLXNsaWRlcl9maXgtYXJyb3dzLXpvbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmltZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaXRlbS5pbWcuc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjUwOVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNTEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV2ZW50c19fZ3JhcGhpYy0taW1nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0uaW1nLmFsdFwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChleHApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnRzX19pbmZvLWxvY2F0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5uZFRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV2ZW50c19fc3ViSGVhZGluZyBwaG90b1wiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5uZFRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50c19faW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0ubmRUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJldmVudHNfX3N1YkhlYWRpbmcgcGhvdG9cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubmRUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudHNfX2ljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInt7IGl0ZW0uaWNvbiB9fVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5kYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV2ZW50c19fZGF0ZVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5kYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bl9fZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChsaW5rIG9mIGl0ZW0ubGlua3MgfHwgW107IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGxpbmspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImxpbmsubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImxpbmsudXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bl9fbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsaW5rLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PHNwYW4+e3sgbGluay5sYWJlbCB9fTwvc3Bhbj48L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChidXR0b24gb2YgaXRlbS5idXR0b25zIHx8IFtdOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChidXR0b24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImJ1dHRvbi5saW5rVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiYnV0dG9uLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG5fX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PHNwYW4+e3sgYnV0dG9uLmxhYmVsIH19PC9zcGFuPjwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGJ1dHRvbikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuX19ncm91cFwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwiYnV0dG9uLmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICBbaHJlZl09XCJidXR0b24udXJsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnktLW91dGxpbmVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICA+PHNwYW4+e3sgYnV0dG9uLmxhYmVsIH19PC9zcGFuPjwvYVxuICAgICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L3NlY3Rpb24+XG4iXX0=
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1ncmlkM2NvbC1wbHVzLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wdXJvL3NyYy9saWIvY29tcG9uZW50cy9wdXJvLWdyaWQzY29sLXBsdXMtZmlsdGVyL3B1cm8tZ3JpZDNjb2wtcGx1cy1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1ncmlkM2NvbC1wbHVzLWZpbHRlci9wdXJvLWdyaWQzY29sLXBsdXMtZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUVMLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0gsNkJBQTZCLEVBQzdCLHFCQUFxQixHQUN4QixNQUFNLGtCQUFrQixDQUFDO0FBUTFCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOztBQWdCaEYsTUFBTSxPQUFPLCtCQUErQjtJQWQ1QztRQTRCcUIsV0FBTSxHQUFHLE1BQU0sQ0FBa0IsR0FBRyxDQUFDLENBQUM7UUFDdEMsZUFBVSxHQUFHLE1BQU0sQ0FFbEMsU0FBUyxDQUFDLENBQUM7UUFFYixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBUWQsbUJBQWMsR0FBRyxRQUFRLENBQTJDLEdBQUcsRUFBRTtZQUNyRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksR0FBRyxDQUFDLENBQUM7WUFFOUMsSUFBSSxRQUFRLEtBQUssR0FBRztnQkFBRSxPQUFPLEdBQUcsQ0FBQztZQUVqQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7S0FNTjtJQXBDRyxJQUFhLEtBQUssQ0FBQyxLQUErQztRQUM5RCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBY0QsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDdEQ7SUFDTCxDQUFDO0lBV0QsWUFBWSxDQUFDLEdBQVU7UUFDbkIsTUFBTSxLQUFLLEdBQUksR0FBRyxDQUFDLE1BQTRCLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQztRQUM3RCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDOytHQXZDUSwrQkFBK0I7bUdBQS9CLCtCQUErQixtUkNyQzVDLHVrT0E0SkEsMGNEaklRLFlBQVksK0JBQ1oscUJBQXFCLDRJQUVyQiw2QkFBNkIscURBQzdCLDJCQUEyQjs7NEZBTXRCLCtCQUErQjtrQkFkM0MsU0FBUzsrQkFDSSwrQkFBK0IsY0FDN0IsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1oscUJBQXFCO3dCQUVyQiw2QkFBNkI7d0JBQzdCLDJCQUEyQjtxQkFDOUIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDTyxLQUFLO3NCQUFqQixLQUFLO2dCQUlHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBjb21wdXRlZCxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgICBBdXRvSW1hZ2Vab29tV3JhcHBlckRpcmVjdGl2ZSxcbiAgICBQdXJvTGlua1R5cGVEaXJlY3RpdmUsXG59IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHtcbiAgICBQdXJvQnV0dG9uSSxcbiAgICBQdXJvSW1hZ2VJLFxuICAgIFB1cm9UYWdzSSxcbiAgICBQdXJvVGV4dHNDb2xvcnNJLFxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFB1cm9Ecm9wZG93bkkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3B1cm8tZHJvcGRvd24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFB1cm9EeW5hbWljSGVhZGluZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9wdXJvLWR5bmFtaWMtaGVhZGluZyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLXB1cm8tZ3JpZDNjb2wtcGx1cy1maWx0ZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFB1cm9MaW5rVHlwZURpcmVjdGl2ZSxcblxuICAgICAgICBBdXRvSW1hZ2Vab29tV3JhcHBlckRpcmVjdGl2ZSxcbiAgICAgICAgUHVyb0R5bmFtaWNIZWFkaW5nQ29tcG9uZW50LFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cm8tZ3JpZDNjb2wtcGx1cy1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLWdyaWQzY29sLXBsdXMtZmlsdGVyLmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUHVyb0dyaWQzY29sUGx1c0ZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgcHJldGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgZmlsdGVyPzogUHVyb0Ryb3Bkb3duSTtcbiAgICBASW5wdXQoKSBzZXQgaXRlbXMoaXRlbXM6IFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtW10gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zLnNldChpdGVtcyk7XG4gICAgICAgIHRoaXMub3B0aW9uLnNldCgnMCcpO1xuICAgIH1cbiAgICBASW5wdXQoKSBidXR0b24/OiBQdXJvQnV0dG9uSTtcbiAgICBASW5wdXQoKSBiYWNrZ3JvdW5kSW1nPzogUHVyb0ltYWdlSTtcbiAgICBASW5wdXQoKSBleHA/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHRhZ3M/OiBQdXJvVGFnc0k7XG4gICAgQElucHV0KCkgdGV4dENvbG9ycz86IFB1cm9UZXh0c0NvbG9yc0k7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbiA9IHNpZ25hbDxzdHJpbmcgfCBudW1iZXI+KCcwJyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0b3RhbEl0ZW1zID0gc2lnbmFsPFxuICAgICAgICBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySXRlbVtdIHwgdW5kZWZpbmVkXG4gICAgPih1bmRlZmluZWQpO1xuXG4gICAgY3NzQmdVcmwgPSAnJztcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5iYWNrZ3JvdW5kSW1nPy5zcmMpIHtcbiAgICAgICAgICAgIHRoaXMuY3NzQmdVcmwgPSBgdXJsKFwiJHt0aGlzLmJhY2tncm91bmRJbWcuc3JjfVwiKWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpdGVtc0Rpc3BsYXllZCA9IGNvbXB1dGVkPFB1cm9HcmlkM0NvbFBsdXNGaWx0ZXJJdGVtW10gfCB1bmRlZmluZWQ+KCgpID0+IHtcbiAgICAgICAgY29uc3QgYWxsID0gdGhpcy50b3RhbEl0ZW1zKCkgPz8gW107XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gU3RyaW5nKHRoaXMub3B0aW9uKCkgPz8gJzAnKTtcblxuICAgICAgICBpZiAoc2VsZWN0ZWQgPT09ICcwJykgcmV0dXJuIGFsbDtcblxuICAgICAgICByZXR1cm4gYWxsLmZpbHRlcigoaSkgPT4gU3RyaW5nKGkuZmlsdGVyUGFyZW50KSA9PT0gc2VsZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgc2VsZWN0T3B0aW9uKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSAoZXZ0LnRhcmdldCBhcyBIVE1MU2VsZWN0RWxlbWVudCkudmFsdWUgfHwgJzAnO1xuICAgICAgICB0aGlzLm9wdGlvbi5zZXQodmFsdWUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdXJvR3JpZDNDb2xQbHVzRmlsdGVySXRlbSB7XG4gICAgaW1nPzogUHVyb0ltYWdlSTtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBuZFRpdGxlPzogc3RyaW5nO1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgZGF0ZT86IHN0cmluZztcbiAgICBmaWx0ZXI/OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgZmlsdGVyUGFyZW50Pzogc3RyaW5nIHwgbnVtYmVyO1xuICAgIGJ1dHRvbnM/OiBQdXJvQnV0dG9uSVtdO1xuICAgIGxpbmtzPzogUHVyb0J1dHRvbklbXTtcbn1cbiIsIjxzZWN0aW9uIGNsYXNzPVwiZXZlbnRzIGV2ZW50c19fbGlzdCBnZW5lcmFsTWFyZ2luXCIgW3N0eWxlLi0tYmctdXJsXT1cImNzc0JnVXJsXCI+XG4gICAgPGRpdiBjbGFzcz1cImV2ZW50c19fY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldmVudHNfX2hlYWRpbmdTZWN0aW9uXCI+XG4gICAgICAgICAgICBAaWYgKHByZXRpdGxlKSB7XG4gICAgICAgICAgICAgICAgPGxpYi1wdXJvLWR5bmFtaWMtaGVhZGluZ1xuICAgICAgICAgICAgICAgICAgICBbdGFnXT1cInRhZ3M/LnByZXRpdGxlIHx8ICdwJ1wiXG4gICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzPVwiZXZlbnRzX19zdWJIZWFkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInRleHRDb2xvcnM/LnByZXRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwicHJldGl0bGVcIlxuICAgICAgICAgICAgICAgID48L2xpYi1wdXJvLWR5bmFtaWMtaGVhZGluZz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAodGl0bGUpIHtcbiAgICAgICAgICAgICAgICA8bGliLXB1cm8tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgIFt0YWddPVwidGFncz8udGl0bGUgfHwgJ2gyJ1wiXG4gICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzPVwiZXZlbnRzX19oZWFkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInRleHRDb2xvcnM/LnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwidGl0bGVcIlxuICAgICAgICAgICAgICAgID48L2xpYi1wdXJvLWR5bmFtaWMtaGVhZGluZz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1fX2dyb3VwIHdpdGhJY29uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybV9fY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdE9wdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiMFwiIHNlbGVjdGVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpbHRlci5wbGFjZWhvbGRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgZmlsdGVyLm9wdGlvbnMgfHwgW107IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi5jb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24tcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGhyZWY9XCIjc2VsZWN0LWFycm93XCI+PC91c2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50c19fbGlzdC0taW5uZXJcIj5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXNEaXNwbGF5ZWQoKSB8fCBbXTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50c19fYm94XCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50c19faGVhZGluZyBwaG90b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudHNfX2lubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0ubGlua3MgJiYgaXRlbS5saW5rcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cIml0ZW0/LmxpbmtzPy5bMF0/LmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiaXRlbT8ubGlua3M/LlswXT8udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXZlbnRzX19ncmFwaGljIGpzLXNsaWRlcl9maXgtYXJyb3dzLXpvbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaW1nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIml0ZW0uaW1nLnNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiNTA5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNTEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldmVudHNfX2dyYXBoaWMtLWltZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthbHRdPVwiaXRlbS5pbWcuYWx0XCIgbG9hZGluZz1cImxhenlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXZlbnRzX19ncmFwaGljIGpzLXNsaWRlcl9maXgtYXJyb3dzLXpvbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmltZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaXRlbS5pbWcuc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjUwOVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNTEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV2ZW50c19fZ3JhcGhpYy0taW1nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cIml0ZW0uaW1nLmFsdFwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChleHApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnRzX19pbmZvLWxvY2F0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5uZFRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV2ZW50c19fc3ViSGVhZGluZyBwaG90b1wiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5uZFRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50c19faW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0ubmRUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJldmVudHNfX3N1YkhlYWRpbmcgcGhvdG9cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubmRUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudHNfX2ljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInt7IGl0ZW0uaWNvbiB9fVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5kYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV2ZW50c19fZGF0ZVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5kYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bl9fZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChsaW5rIG9mIGl0ZW0ubGlua3MgfHwgW107IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGxpbmspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImxpbmsubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImxpbmsudXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bl9fbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsaW5rLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PHNwYW4+e3sgbGluay5sYWJlbCB9fTwvc3Bhbj48L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChidXR0b24gb2YgaXRlbS5idXR0b25zIHx8IFtdOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChidXR0b24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImJ1dHRvbi5saW5rVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiYnV0dG9uLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG5fX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PHNwYW4+e3sgYnV0dG9uLmxhYmVsIH19PC9zcGFuPjwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGJ1dHRvbikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuX19ncm91cFwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwiYnV0dG9uLmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICBbaHJlZl09XCJidXR0b24udXJsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnktLW91dGxpbmVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICA+PHNwYW4+e3sgYnV0dG9uLmxhYmVsIH19PC9zcGFuPjwvYVxuICAgICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L3NlY3Rpb24+XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { CommonModule } from '@angular/common';
1
+ import { CommonModule, DOCUMENT } from '@angular/common';
2
2
  import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output, } from '@angular/core';
3
3
  import { PuroActiveModalDirective, PuroLinkTypeDirective, } from '../../directives';
4
4
  import { PuroNavStickyDirective } from '../../directives/puro-nav-sticky/puro-nav-sticky.directive';
@@ -6,6 +6,7 @@ import * as i0 from "@angular/core";
6
6
  export class PuroHeaderComponent {
7
7
  constructor() {
8
8
  this.activeModalDtv = inject(PuroActiveModalDirective);
9
+ this.document = inject(DOCUMENT);
9
10
  this.isHotelsPage = false;
10
11
  this.isRestaurant = false;
11
12
  this.isDynamic = false;
@@ -83,8 +84,17 @@ export class PuroHeaderComponent {
83
84
  return '#purogroup-logo';
84
85
  }
85
86
  }
87
+ scrollToFooter() {
88
+ const footerElement = this.document.querySelector('lib-puro-footer-info');
89
+ if (footerElement) {
90
+ footerElement.scrollIntoView({
91
+ behavior: 'smooth',
92
+ block: 'start',
93
+ });
94
+ }
95
+ }
86
96
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
87
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroHeaderComponent, isStandalone: true, selector: "lib-puro-header", inputs: { titleMenu: "titleMenu", titleLang: "titleLang", navLinks: "navLinks", bottomLinks: "bottomLinks", siteId: "siteId", isHotelsPage: "isHotelsPage", isRestaurant: "isRestaurant", btnBook: "btnBook", btnCheckinOnline: "btnCheckinOnline", btnCheckin: "btnCheckin", isDynamic: "isDynamic", logoHotel: "logoHotel", linkHotel: "linkHotel", hotelBrand: "hotelBrand", backgroundImg: "backgroundImg", currentHotelId: "currentHotelId" }, outputs: { btnClick: "btnClick", btnClickCheckin: "btnClickCheckin", btnClickCheckinOnline: "btnClickCheckinOnline" }, providers: [PuroActiveModalDirective], ngImport: i0, template: "<header class=\"header\" navSticky [isDynamic]=\"isDynamic\">\n <div class=\"header__logo\">\n <a [href]=\"linkHotel\" linkType=\"internal\">\n @if (resolvedLogoImg) {\n <img\n [src]=\"resolvedLogoImg\"\n alt=\"Logo\"\n width=\"301\"\n height=\"32\"\n class=\"header__logo--img\"\n loading=\"lazy\"\n />\n } @else if (resolvedSvgHref) {\n <svg\n aria-hidden=\"true\"\n width=\"301\"\n height=\"32\"\n focusable=\"false\"\n class=\"header__logo--img\"\n >\n <use [attr.href]=\"resolvedSvgHref\"></use>\n </svg>\n }\n </a>\n </div>\n <div class=\"header__leftNav\">\n <div\n class=\"header__menu js-active-modal\"\n activeModal\n data-modal_name=\"navigation\"\n role=\"button\"\n [attr.aria-label]=\"titleMenu ?? 'Menu'\"\n >\n <i class=\"icon-83\"></i>\n @if (titleMenu) {\n <span>{{ titleMenu }}</span>\n }\n </div>\n <div\n class=\"header__language js-active-modal\"\n activeModal\n data-modal_name=\"language\"\n role=\"button\"\n [attr.aria-label]=\"titleLang ?? 'Language Menu'\"\n >\n @if (titleLang) {\n {{ titleLang }}\n }\n </div>\n </div>\n <!-- hide buttons when Puro Oasis Urbano -->\n\n @if (currentHotelId !== 20) {\n @if (currentHotelId === 5) {\n @if (showBook) {\n <a\n (click)=\"btnClick.emit()\"\n class=\"header__reserver\"\n role=\"button\"\n [attr.aria-label]=\"btnBook\"\n >\n <div class=\"btn btn__primary btn--lg\">\n <span>{{ btnBook }}</span>\n </div>\n </a>\n }\n } @else {\n @if (isHotelStickyContext) {\n <div class=\"header__reserver\">\n @if (showCheckinOnline) {\n <a\n (click)=\"btnClickCheckinOnline.emit()\"\n class=\"btn btn__primary btn--lg checkIn\"\n role=\"button\"\n [attr.aria-label]=\"btnCheckinOnline\"\n >\n <span>{{ btnCheckinOnline }}</span>\n </a>\n }\n\n @if (showCheckin) {\n <a\n (click)=\"btnClickCheckin.emit()\"\n class=\"header__checkIn\"\n role=\"button\"\n [attr.aria-label]=\"btnCheckin\"\n >\n {{ btnCheckin }}\n </a>\n }\n\n @if (showBook) {\n <a\n (click)=\"btnClick.emit()\"\n class=\"btn btn__primary btn--lg reservar\"\n role=\"button\"\n [attr.aria-label]=\"btnBook\"\n >\n <span>{{ btnBook }}</span>\n </a>\n }\n </div>\n } @else {\n @if (showBook) {\n <a\n (click)=\"btnClick.emit()\"\n class=\"header__reserver\"\n role=\"button\"\n [attr.aria-label]=\"btnBook\"\n >\n <div class=\"btn btn__primary btn--lg\">\n <span>{{ btnBook }}</span>\n </div>\n </a>\n }\n }\n }\n }\n</header>\n\n<div class=\"modal modal--solidCream modal--navigation\">\n <div class=\"modal__inner\">\n <div\n class=\"modal__body\"\n [style.--bg-url]=\"cssBgUrl\"\n [style.--logo-url]=\"cssLogoUrl\"\n >\n <div\n class=\"modal__close js-close\"\n activeModal\n data-modal_name=\"navigation\"\n role=\"button\"\n aria-label=\"Close Button\"\n >\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n class=\"modal__close--icon\"\n >\n <use href=\"#modal-close\"></use>\n </svg>\n </div>\n <div class=\"modal__nav\">\n <ul class=\"modal__nav--items\">\n @if (navLinks) {\n @for (link of navLinks; track $index) {\n <li class=\"modal__nav--link\">\n <a\n class=\"js-close\"\n activeModal\n data-modal_name=\"navigation\"\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >\n {{ link.label }}\n </a>\n </li>\n }\n }\n </ul>\n <ul class=\"modal__nav--itemsSmall\">\n @if (bottomLinks) {\n @for (link of bottomLinks; track $index) {\n @if (link.url === 'lang') {\n <li\n class=\"modal__nav--link js-active-modal\"\n activeModal\n data-modal_name=\"language\"\n role=\"button\"\n [attr.aria-label]=\"\n link.label ?? 'Language Menu'\n \"\n >\n <a>\n {{ link.label }}\n </a>\n </li>\n } @else {\n <li class=\"modal__nav--link\">\n <a\n class=\"js-close\"\n activeModal\n data-modal_name=\"navigation\"\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >\n {{ link.label }}\n </a>\n </li>\n }\n }\n }\n </ul>\n </div>\n </div>\n </div>\n</div>\n", styles: [".modal.modal--navigation .modal__body:after{background-image:var(--logo-url)}.modal.modal--navigation .modal__body:before{background-image:var(--bg-url)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }, { kind: "directive", type: PuroActiveModalDirective, selector: "[activeModal]" }, { kind: "directive", type: PuroNavStickyDirective, selector: "[navSticky]", inputs: ["isDynamic"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
97
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroHeaderComponent, isStandalone: true, selector: "lib-puro-header", inputs: { titleMenu: "titleMenu", titleLang: "titleLang", navLinks: "navLinks", bottomLinks: "bottomLinks", siteId: "siteId", isHotelsPage: "isHotelsPage", isRestaurant: "isRestaurant", btnBook: "btnBook", btnCheckinOnline: "btnCheckinOnline", btnCheckin: "btnCheckin", isDynamic: "isDynamic", logoHotel: "logoHotel", linkHotel: "linkHotel", hotelBrand: "hotelBrand", backgroundImg: "backgroundImg", currentHotelId: "currentHotelId" }, outputs: { btnClick: "btnClick", btnClickCheckin: "btnClickCheckin", btnClickCheckinOnline: "btnClickCheckinOnline" }, providers: [PuroActiveModalDirective], ngImport: i0, template: "<header class=\"header\" navSticky [isDynamic]=\"isDynamic\">\n <div class=\"header__logo\">\n <a [href]=\"linkHotel\" linkType=\"internal\">\n @if (resolvedLogoImg) {\n <img\n [src]=\"resolvedLogoImg\"\n alt=\"Logo\"\n width=\"301\"\n height=\"32\"\n class=\"header__logo--img\"\n loading=\"lazy\"\n />\n } @else if (resolvedSvgHref) {\n <svg\n aria-hidden=\"true\"\n width=\"301\"\n height=\"32\"\n focusable=\"false\"\n class=\"header__logo--img\"\n >\n <use [attr.href]=\"resolvedSvgHref\"></use>\n </svg>\n }\n </a>\n </div>\n <div class=\"header__leftNav\">\n <div\n class=\"header__menu js-active-modal\"\n activeModal\n data-modal_name=\"navigation\"\n role=\"button\"\n [attr.aria-label]=\"titleMenu ?? 'Menu'\"\n >\n <i class=\"icon-83\"></i>\n @if (titleMenu) {\n <span>{{ titleMenu }}</span>\n }\n </div>\n <div\n class=\"header__language js-active-modal\"\n activeModal\n data-modal_name=\"language\"\n role=\"button\"\n [attr.aria-label]=\"titleLang ?? 'Language Menu'\"\n >\n @if (titleLang) {\n {{ titleLang }}\n }\n </div>\n </div>\n <!-- hide buttons when Puro Oasis Urbano -->\n\n @if (currentHotelId !== 20) {\n @if (currentHotelId === 5) {\n @if (showBook) {\n <a\n (click)=\"btnClick.emit()\"\n class=\"header__reserver\"\n role=\"button\"\n [attr.aria-label]=\"btnBook\"\n >\n <div class=\"btn btn__primary btn--lg\">\n <span>{{ btnBook }}</span>\n </div>\n </a>\n }\n } @else {\n @if (isHotelStickyContext) {\n <div class=\"header__reserver\">\n @if (showCheckinOnline) {\n <a\n (click)=\"btnClickCheckinOnline.emit()\"\n class=\"btn btn__primary btn--lg checkIn\"\n role=\"button\"\n [attr.aria-label]=\"btnCheckinOnline\"\n >\n <span>{{ btnCheckinOnline }}</span>\n </a>\n }\n\n @if (showCheckin) {\n <a\n (click)=\"btnClickCheckin.emit()\"\n class=\"header__checkIn\"\n role=\"button\"\n [attr.aria-label]=\"btnCheckin\"\n >\n {{ btnCheckin }}\n </a>\n }\n\n @if (showBook) {\n <a\n (click)=\"btnClick.emit()\"\n class=\"btn btn__primary btn--lg reservar\"\n role=\"button\"\n [attr.aria-label]=\"btnBook\"\n >\n <span>{{ btnBook }}</span>\n </a>\n }\n </div>\n } @else {\n @if (showBook) {\n <a\n (click)=\"btnClick.emit()\"\n class=\"header__reserver\"\n role=\"button\"\n [attr.aria-label]=\"btnBook\"\n >\n <div class=\"btn btn__primary btn--lg\">\n <span>{{ btnBook }}</span>\n </div>\n </a>\n }\n }\n }\n }\n @if (currentHotelId === 20) {\n @if (showBook) {\n <a\n (click)=\"scrollToFooter()\"\n class=\"header__reserver\"\n role=\"button\"\n [attr.aria-label]=\"btnBook\"\n >\n <div class=\"btn btn__primary btn--lg\">\n <span>{{ btnBook }}</span>\n </div>\n </a>\n }\n }\n</header>\n\n<div class=\"modal modal--solidCream modal--navigation\">\n <div class=\"modal__inner\">\n <div\n class=\"modal__body\"\n [style.--bg-url]=\"cssBgUrl\"\n [style.--logo-url]=\"cssLogoUrl\"\n >\n <div\n class=\"modal__close js-close\"\n activeModal\n data-modal_name=\"navigation\"\n role=\"button\"\n aria-label=\"Close Button\"\n >\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n class=\"modal__close--icon\"\n >\n <use href=\"#modal-close\"></use>\n </svg>\n </div>\n <div class=\"modal__nav\">\n <ul class=\"modal__nav--items\">\n @if (navLinks) {\n @for (link of navLinks; track $index) {\n <li class=\"modal__nav--link\">\n <a\n class=\"js-close\"\n activeModal\n data-modal_name=\"navigation\"\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >\n {{ link.label }}\n </a>\n </li>\n }\n }\n </ul>\n <ul class=\"modal__nav--itemsSmall\">\n @if (bottomLinks) {\n @for (link of bottomLinks; track $index) {\n @if (link.url === 'lang') {\n <li\n class=\"modal__nav--link js-active-modal\"\n activeModal\n data-modal_name=\"language\"\n role=\"button\"\n [attr.aria-label]=\"\n link.label ?? 'Language Menu'\n \"\n >\n <a>\n {{ link.label }}\n </a>\n </li>\n } @else {\n <li class=\"modal__nav--link\">\n <a\n class=\"js-close\"\n activeModal\n data-modal_name=\"navigation\"\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >\n {{ link.label }}\n </a>\n </li>\n }\n }\n }\n </ul>\n </div>\n </div>\n </div>\n</div>\n", styles: [".modal.modal--navigation .modal__body:after{background-image:var(--logo-url)}.modal.modal--navigation .modal__body:before{background-image:var(--bg-url)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }, { kind: "directive", type: PuroActiveModalDirective, selector: "[activeModal]" }, { kind: "directive", type: PuroNavStickyDirective, selector: "[navSticky]", inputs: ["isDynamic"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
88
98
  }
89
99
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroHeaderComponent, decorators: [{
90
100
  type: Component,
@@ -93,7 +103,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
93
103
  PuroLinkTypeDirective,
94
104
  PuroActiveModalDirective,
95
105
  PuroNavStickyDirective,
96
- ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [PuroActiveModalDirective], template: "<header class=\"header\" navSticky [isDynamic]=\"isDynamic\">\n <div class=\"header__logo\">\n <a [href]=\"linkHotel\" linkType=\"internal\">\n @if (resolvedLogoImg) {\n <img\n [src]=\"resolvedLogoImg\"\n alt=\"Logo\"\n width=\"301\"\n height=\"32\"\n class=\"header__logo--img\"\n loading=\"lazy\"\n />\n } @else if (resolvedSvgHref) {\n <svg\n aria-hidden=\"true\"\n width=\"301\"\n height=\"32\"\n focusable=\"false\"\n class=\"header__logo--img\"\n >\n <use [attr.href]=\"resolvedSvgHref\"></use>\n </svg>\n }\n </a>\n </div>\n <div class=\"header__leftNav\">\n <div\n class=\"header__menu js-active-modal\"\n activeModal\n data-modal_name=\"navigation\"\n role=\"button\"\n [attr.aria-label]=\"titleMenu ?? 'Menu'\"\n >\n <i class=\"icon-83\"></i>\n @if (titleMenu) {\n <span>{{ titleMenu }}</span>\n }\n </div>\n <div\n class=\"header__language js-active-modal\"\n activeModal\n data-modal_name=\"language\"\n role=\"button\"\n [attr.aria-label]=\"titleLang ?? 'Language Menu'\"\n >\n @if (titleLang) {\n {{ titleLang }}\n }\n </div>\n </div>\n <!-- hide buttons when Puro Oasis Urbano -->\n\n @if (currentHotelId !== 20) {\n @if (currentHotelId === 5) {\n @if (showBook) {\n <a\n (click)=\"btnClick.emit()\"\n class=\"header__reserver\"\n role=\"button\"\n [attr.aria-label]=\"btnBook\"\n >\n <div class=\"btn btn__primary btn--lg\">\n <span>{{ btnBook }}</span>\n </div>\n </a>\n }\n } @else {\n @if (isHotelStickyContext) {\n <div class=\"header__reserver\">\n @if (showCheckinOnline) {\n <a\n (click)=\"btnClickCheckinOnline.emit()\"\n class=\"btn btn__primary btn--lg checkIn\"\n role=\"button\"\n [attr.aria-label]=\"btnCheckinOnline\"\n >\n <span>{{ btnCheckinOnline }}</span>\n </a>\n }\n\n @if (showCheckin) {\n <a\n (click)=\"btnClickCheckin.emit()\"\n class=\"header__checkIn\"\n role=\"button\"\n [attr.aria-label]=\"btnCheckin\"\n >\n {{ btnCheckin }}\n </a>\n }\n\n @if (showBook) {\n <a\n (click)=\"btnClick.emit()\"\n class=\"btn btn__primary btn--lg reservar\"\n role=\"button\"\n [attr.aria-label]=\"btnBook\"\n >\n <span>{{ btnBook }}</span>\n </a>\n }\n </div>\n } @else {\n @if (showBook) {\n <a\n (click)=\"btnClick.emit()\"\n class=\"header__reserver\"\n role=\"button\"\n [attr.aria-label]=\"btnBook\"\n >\n <div class=\"btn btn__primary btn--lg\">\n <span>{{ btnBook }}</span>\n </div>\n </a>\n }\n }\n }\n }\n</header>\n\n<div class=\"modal modal--solidCream modal--navigation\">\n <div class=\"modal__inner\">\n <div\n class=\"modal__body\"\n [style.--bg-url]=\"cssBgUrl\"\n [style.--logo-url]=\"cssLogoUrl\"\n >\n <div\n class=\"modal__close js-close\"\n activeModal\n data-modal_name=\"navigation\"\n role=\"button\"\n aria-label=\"Close Button\"\n >\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n class=\"modal__close--icon\"\n >\n <use href=\"#modal-close\"></use>\n </svg>\n </div>\n <div class=\"modal__nav\">\n <ul class=\"modal__nav--items\">\n @if (navLinks) {\n @for (link of navLinks; track $index) {\n <li class=\"modal__nav--link\">\n <a\n class=\"js-close\"\n activeModal\n data-modal_name=\"navigation\"\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >\n {{ link.label }}\n </a>\n </li>\n }\n }\n </ul>\n <ul class=\"modal__nav--itemsSmall\">\n @if (bottomLinks) {\n @for (link of bottomLinks; track $index) {\n @if (link.url === 'lang') {\n <li\n class=\"modal__nav--link js-active-modal\"\n activeModal\n data-modal_name=\"language\"\n role=\"button\"\n [attr.aria-label]=\"\n link.label ?? 'Language Menu'\n \"\n >\n <a>\n {{ link.label }}\n </a>\n </li>\n } @else {\n <li class=\"modal__nav--link\">\n <a\n class=\"js-close\"\n activeModal\n data-modal_name=\"navigation\"\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >\n {{ link.label }}\n </a>\n </li>\n }\n }\n }\n </ul>\n </div>\n </div>\n </div>\n</div>\n", styles: [".modal.modal--navigation .modal__body:after{background-image:var(--logo-url)}.modal.modal--navigation .modal__body:before{background-image:var(--bg-url)}\n"] }]
106
+ ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [PuroActiveModalDirective], template: "<header class=\"header\" navSticky [isDynamic]=\"isDynamic\">\n <div class=\"header__logo\">\n <a [href]=\"linkHotel\" linkType=\"internal\">\n @if (resolvedLogoImg) {\n <img\n [src]=\"resolvedLogoImg\"\n alt=\"Logo\"\n width=\"301\"\n height=\"32\"\n class=\"header__logo--img\"\n loading=\"lazy\"\n />\n } @else if (resolvedSvgHref) {\n <svg\n aria-hidden=\"true\"\n width=\"301\"\n height=\"32\"\n focusable=\"false\"\n class=\"header__logo--img\"\n >\n <use [attr.href]=\"resolvedSvgHref\"></use>\n </svg>\n }\n </a>\n </div>\n <div class=\"header__leftNav\">\n <div\n class=\"header__menu js-active-modal\"\n activeModal\n data-modal_name=\"navigation\"\n role=\"button\"\n [attr.aria-label]=\"titleMenu ?? 'Menu'\"\n >\n <i class=\"icon-83\"></i>\n @if (titleMenu) {\n <span>{{ titleMenu }}</span>\n }\n </div>\n <div\n class=\"header__language js-active-modal\"\n activeModal\n data-modal_name=\"language\"\n role=\"button\"\n [attr.aria-label]=\"titleLang ?? 'Language Menu'\"\n >\n @if (titleLang) {\n {{ titleLang }}\n }\n </div>\n </div>\n <!-- hide buttons when Puro Oasis Urbano -->\n\n @if (currentHotelId !== 20) {\n @if (currentHotelId === 5) {\n @if (showBook) {\n <a\n (click)=\"btnClick.emit()\"\n class=\"header__reserver\"\n role=\"button\"\n [attr.aria-label]=\"btnBook\"\n >\n <div class=\"btn btn__primary btn--lg\">\n <span>{{ btnBook }}</span>\n </div>\n </a>\n }\n } @else {\n @if (isHotelStickyContext) {\n <div class=\"header__reserver\">\n @if (showCheckinOnline) {\n <a\n (click)=\"btnClickCheckinOnline.emit()\"\n class=\"btn btn__primary btn--lg checkIn\"\n role=\"button\"\n [attr.aria-label]=\"btnCheckinOnline\"\n >\n <span>{{ btnCheckinOnline }}</span>\n </a>\n }\n\n @if (showCheckin) {\n <a\n (click)=\"btnClickCheckin.emit()\"\n class=\"header__checkIn\"\n role=\"button\"\n [attr.aria-label]=\"btnCheckin\"\n >\n {{ btnCheckin }}\n </a>\n }\n\n @if (showBook) {\n <a\n (click)=\"btnClick.emit()\"\n class=\"btn btn__primary btn--lg reservar\"\n role=\"button\"\n [attr.aria-label]=\"btnBook\"\n >\n <span>{{ btnBook }}</span>\n </a>\n }\n </div>\n } @else {\n @if (showBook) {\n <a\n (click)=\"btnClick.emit()\"\n class=\"header__reserver\"\n role=\"button\"\n [attr.aria-label]=\"btnBook\"\n >\n <div class=\"btn btn__primary btn--lg\">\n <span>{{ btnBook }}</span>\n </div>\n </a>\n }\n }\n }\n }\n @if (currentHotelId === 20) {\n @if (showBook) {\n <a\n (click)=\"scrollToFooter()\"\n class=\"header__reserver\"\n role=\"button\"\n [attr.aria-label]=\"btnBook\"\n >\n <div class=\"btn btn__primary btn--lg\">\n <span>{{ btnBook }}</span>\n </div>\n </a>\n }\n }\n</header>\n\n<div class=\"modal modal--solidCream modal--navigation\">\n <div class=\"modal__inner\">\n <div\n class=\"modal__body\"\n [style.--bg-url]=\"cssBgUrl\"\n [style.--logo-url]=\"cssLogoUrl\"\n >\n <div\n class=\"modal__close js-close\"\n activeModal\n data-modal_name=\"navigation\"\n role=\"button\"\n aria-label=\"Close Button\"\n >\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n class=\"modal__close--icon\"\n >\n <use href=\"#modal-close\"></use>\n </svg>\n </div>\n <div class=\"modal__nav\">\n <ul class=\"modal__nav--items\">\n @if (navLinks) {\n @for (link of navLinks; track $index) {\n <li class=\"modal__nav--link\">\n <a\n class=\"js-close\"\n activeModal\n data-modal_name=\"navigation\"\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >\n {{ link.label }}\n </a>\n </li>\n }\n }\n </ul>\n <ul class=\"modal__nav--itemsSmall\">\n @if (bottomLinks) {\n @for (link of bottomLinks; track $index) {\n @if (link.url === 'lang') {\n <li\n class=\"modal__nav--link js-active-modal\"\n activeModal\n data-modal_name=\"language\"\n role=\"button\"\n [attr.aria-label]=\"\n link.label ?? 'Language Menu'\n \"\n >\n <a>\n {{ link.label }}\n </a>\n </li>\n } @else {\n <li class=\"modal__nav--link\">\n <a\n class=\"js-close\"\n activeModal\n data-modal_name=\"navigation\"\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >\n {{ link.label }}\n </a>\n </li>\n }\n }\n }\n </ul>\n </div>\n </div>\n </div>\n</div>\n", styles: [".modal.modal--navigation .modal__body:after{background-image:var(--logo-url)}.modal.modal--navigation .modal__body:before{background-image:var(--bg-url)}\n"] }]
97
107
  }], propDecorators: { titleMenu: [{
98
108
  type: Input
99
109
  }], titleLang: [{
@@ -133,4 +143,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
133
143
  }], btnClickCheckinOnline: [{
134
144
  type: Output
135
145
  }] } });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1oZWFkZXIvcHVyby1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1oZWFkZXIvcHVyby1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsd0JBQXdCLEVBQ3hCLHFCQUFxQixHQUN4QixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDOztBQWlCcEcsTUFBTSxPQUFPLG1CQUFtQjtJQWRoQztRQWVZLG1CQUFjLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFTakQsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFJOUIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQU9qQixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5QixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckMsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU1QyxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLDRCQUF1QixHQUFHLElBQUksQ0FBQyxDQUFDLGlCQUFp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bUJBR2dCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyx3QkFBd0IsQ0FBQzs4QkFJNUIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBSUcsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIFB1cm9BY3RpdmVNb2RhbERpcmVjdGl2ZSxcbiAgICBQdXJvTGlua1R5cGVEaXJlY3RpdmUsXG59IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgUHVyb05hdlN0aWNreURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvcHVyby1uYXYtc3RpY2t5L3B1cm8tbmF2LXN0aWNreS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUHVyb0J1dHRvbkksIFB1cm9JbWFnZUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItcHVyby1oZWFkZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFB1cm9MaW5rVHlwZURpcmVjdGl2ZSxcbiAgICAgICAgUHVyb0FjdGl2ZU1vZGFsRGlyZWN0aXZlLFxuICAgICAgICBQdXJvTmF2U3RpY2t5RGlyZWN0aXZlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3B1cm8taGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vcHVyby1oZWFkZXIuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1B1cm9BY3RpdmVNb2RhbERpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFB1cm9IZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHByaXZhdGUgYWN0aXZlTW9kYWxEdHYgPSBpbmplY3QoUHVyb0FjdGl2ZU1vZGFsRGlyZWN0aXZlKTtcbiAgICBASW5wdXQoKSB0aXRsZU1lbnU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgdGl0bGVMYW5nPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG5hdkxpbmtzPzogUHVyb0J1dHRvbklbXTtcbiAgICBASW5wdXQoKSBib3R0b21MaW5rcz86IFB1cm9CdXR0b25JW107XG4gICAgQElucHV0KCkgc2l0ZUlkPzpcbiAgICAgICAgfCB0eXBlb2YgdGhpcy5TSVRFX0dST1VQXG4gICAgICAgIHwgdHlwZW9mIHRoaXMuU0lURV9CRUFDSFxuICAgICAgICB8IHR5cGVvZiB0aGlzLlNJVEVfSE9URUxTO1xuICAgIEBJbnB1dCgpIGlzSG90ZWxzUGFnZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGlzUmVzdGF1cmFudDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGJ0bkJvb2s/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgYnRuQ2hlY2tpbk9ubGluZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBidG5DaGVja2luPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGlzRHluYW1pYyA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGxvZ29Ib3RlbD86IHN0cmluZztcbiAgICBASW5wdXQoKSBsaW5rSG90ZWw/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgaG90ZWxCcmFuZD86IFB1cm9JbWFnZUk7XG4gICAgQElucHV0KCkgYmFja2dyb3VuZEltZz86IFB1cm9JbWFnZUk7XG4gICAgQElucHV0KCkgY3VycmVudEhvdGVsSWQ/OiBudW1iZXI7XG5cbiAgICBAT3V0cHV0KCkgYnRuQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGJ0bkNsaWNrQ2hlY2tpbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgYnRuQ2xpY2tDaGVja2luT25saW5lID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcmVhZG9ubHkgU0lURV9HUk9VUCA9IDE7XG4gICAgcmVhZG9ubHkgU0lURV9IT1RFTFMgPSAyO1xuICAgIHJlYWRvbmx5IFNJVEVfQkVBQ0ggPSAzO1xuICAgIHJlYWRvbmx5IEhJREVfUkVTVEFVUkFOVF9CVVRUT05TID0gdHJ1ZTsgLy8g4pqg77iPIFBST1ZJU0lPTkFMXG5cbiAgICBjc3NCZ1VybCA9ICcnO1xuICAgIGNzc0xvZ29VcmwgPSAnJztcbiAgICByZXNvbHZlZExvZ29JbWc/OiBzdHJpbmc7XG4gICAgcmVzb2x2ZWRTdmdIcmVmPzogc3RyaW5nO1xuXG4gICAgY2xpY2tCdG5Cb29rKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ0bkNsaWNrLmVtaXQoKTtcbiAgICAgICAgc3dpdGNoICh0aGlzLnNpdGVJZCkge1xuICAgICAgICAgICAgY2FzZSB0aGlzLlNJVEVfR1JPVVA6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHRoaXMuU0lURV9IT1RFTFM6XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVNb2RhbER0di5oYW5kbGVDbGljaygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSB0aGlzLlNJVEVfQkVBQ0g6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy9sb2dvc1xuICAgICAgICBpZiAodGhpcy5sb2dvSG90ZWwpIHtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZWRMb2dvSW1nID0gdGhpcy5sb2dvSG90ZWw7XG4gICAgICAgICAgICB0aGlzLnJlc29sdmVkU3ZnSHJlZiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZWRMb2dvSW1nID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy5yZXNvbHZlZFN2Z0hyZWYgPSB0aGlzLnJlc29sdmVTaXRlU3ZnKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvL2JhY2tncm91bmRzXG4gICAgICAgIGlmICh0aGlzLmhvdGVsQnJhbmQ/LnNyYykge1xuICAgICAgICAgICAgdGhpcy5jc3NMb2dvVXJsID0gYHVybChcIiR7dGhpcy5ob3RlbEJyYW5kLnNyY31cIilgO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmJhY2tncm91bmRJbWc/LnNyYykge1xuICAgICAgICAgICAgdGhpcy5jc3NCZ1VybCA9IGB1cmwoXCIke3RoaXMuYmFja2dyb3VuZEltZy5zcmN9XCIpYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBpc0dyb3VwU2l0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l0ZUlkID09PSB0aGlzLlNJVEVfR1JPVVA7XG4gICAgfVxuXG4gICAgZ2V0IGlzSG90ZWxTdGlja3lDb250ZXh0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0hvdGVsc1BhZ2UgJiYgIXRoaXMuaXNSZXN0YXVyYW50ICYmICF0aGlzLmlzR3JvdXBTaXRlO1xuICAgIH1cblxuICAgIGdldCBzaG93Qm9vaygpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmJ0bkJvb2spIHJldHVybiBmYWxzZTtcblxuICAgICAgICAvLyBTaSBlcyBTSVRFX0dST1VQIHNvbG8gbW9zdHJhciBzaSBlcyByZXN0YXVyYW50ZVxuICAgICAgICBpZiAodGhpcy5pc0dyb3VwU2l0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNSZXN0YXVyYW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dDaGVja2luT25saW5lKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0hvdGVsU3RpY2t5Q29udGV4dCAmJiAhIXRoaXMuYnRuQ2hlY2tpbk9ubGluZTtcbiAgICB9XG5cbiAgICBnZXQgc2hvd0NoZWNraW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzSG90ZWxTdGlja3lDb250ZXh0ICYmICEhdGhpcy5idG5DaGVja2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZVNpdGVTdmcoKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLnNpdGVJZCkge1xuICAgICAgICAgICAgY2FzZSB0aGlzLlNJVEVfSE9URUxTOlxuICAgICAgICAgICAgICAgIHJldHVybiAnI3B1cm8tbG9nbyc7XG4gICAgICAgICAgICBjYXNlIHRoaXMuU0lURV9CRUFDSDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJyNwdXJvYmVhY2gtbG9nbyc7XG4gICAgICAgICAgICBjYXNlIHRoaXMuU0lURV9HUk9VUDpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcjcHVyb2dyb3VwLWxvZ28nO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGhlYWRlciBjbGFzcz1cImhlYWRlclwiIG5hdlN0aWNreSBbaXNEeW5hbWljXT1cImlzRHluYW1pY1wiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJfX2xvZ29cIj5cbiAgICAgICAgPGEgW2hyZWZdPVwibGlua0hvdGVsXCIgbGlua1R5cGU9XCJpbnRlcm5hbFwiPlxuICAgICAgICAgICAgQGlmIChyZXNvbHZlZExvZ29JbWcpIHtcbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgIFtzcmNdPVwicmVzb2x2ZWRMb2dvSW1nXCJcbiAgICAgICAgICAgICAgICAgICAgYWx0PVwiTG9nb1wiXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMzAxXCJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMzJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlcl9fbG9nby0taW1nXCJcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9IEBlbHNlIGlmIChyZXNvbHZlZFN2Z0hyZWYpIHtcbiAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMzAxXCJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMzJcIlxuICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyX19sb2dvLS1pbWdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHVzZSBbYXR0ci5ocmVmXT1cInJlc29sdmVkU3ZnSHJlZlwiPjwvdXNlPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2E+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlcl9fbGVmdE5hdlwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImhlYWRlcl9fbWVudSBqcy1hY3RpdmUtbW9kYWxcIlxuICAgICAgICAgICAgYWN0aXZlTW9kYWxcbiAgICAgICAgICAgIGRhdGEtbW9kYWxfbmFtZT1cIm5hdmlnYXRpb25cIlxuICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRpdGxlTWVudSA/PyAnTWVudSdcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb24tODNcIj48L2k+XG4gICAgICAgICAgICBAaWYgKHRpdGxlTWVudSkge1xuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHRpdGxlTWVudSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyX19sYW5ndWFnZSBqcy1hY3RpdmUtbW9kYWxcIlxuICAgICAgICAgICAgYWN0aXZlTW9kYWxcbiAgICAgICAgICAgIGRhdGEtbW9kYWxfbmFtZT1cImxhbmd1YWdlXCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0aXRsZUxhbmcgPz8gJ0xhbmd1YWdlIE1lbnUnXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGlmICh0aXRsZUxhbmcpIHtcbiAgICAgICAgICAgICAgICB7eyB0aXRsZUxhbmcgfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBoaWRlIGJ1dHRvbnMgd2hlbiBQdXJvIE9hc2lzIFVyYmFubyAtLT5cblxuICAgIEBpZiAoY3VycmVudEhvdGVsSWQgIT09IDIwKSB7XG4gICAgICAgIEBpZiAoY3VycmVudEhvdGVsSWQgPT09IDUpIHtcbiAgICAgICAgICAgIEBpZiAoc2hvd0Jvb2spIHtcbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYnRuQ2xpY2suZW1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXJfX3Jlc2VydmVyXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnRuQm9va1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuIGJ0bl9fcHJpbWFyeSBidG4tLWxnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBidG5Cb29rIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGlmIChpc0hvdGVsU3RpY2t5Q29udGV4dCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJfX3Jlc2VydmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0NoZWNraW5PbmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJ0bkNsaWNrQ2hlY2tpbk9ubGluZS5lbWl0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9fcHJpbWFyeSBidG4tLWxnIGNoZWNrSW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnRuQ2hlY2tpbk9ubGluZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYnRuQ2hlY2tpbk9ubGluZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0NoZWNraW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJ0bkNsaWNrQ2hlY2tpbi5lbWl0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyX19jaGVja0luXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ0bkNoZWNraW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGJ0bkNoZWNraW4gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0Jvb2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJ0bkNsaWNrLmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5IGJ0bi0tbGcgcmVzZXJ2YXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnRuQm9va1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYnRuQm9vayB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgQGlmIChzaG93Qm9vaykge1xuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJ0bkNsaWNrLmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlcl9fcmVzZXJ2ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ0bkJvb2tcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuIGJ0bl9fcHJpbWFyeSBidG4tLWxnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYnRuQm9vayB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuPC9oZWFkZXI+XG5cbjxkaXYgY2xhc3M9XCJtb2RhbCBtb2RhbC0tc29saWRDcmVhbSBtb2RhbC0tbmF2aWdhdGlvblwiPlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbF9faW5uZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJtb2RhbF9fYm9keVwiXG4gICAgICAgICAgICBbc3R5bGUuLS1iZy11cmxdPVwiY3NzQmdVcmxcIlxuICAgICAgICAgICAgW3N0eWxlLi0tbG9nby11cmxdPVwiY3NzTG9nb1VybFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1vZGFsX19jbG9zZSBqcy1jbG9zZVwiXG4gICAgICAgICAgICAgICAgYWN0aXZlTW9kYWxcbiAgICAgICAgICAgICAgICBkYXRhLW1vZGFsX25hbWU9XCJuYXZpZ2F0aW9uXCJcbiAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgQnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtb2RhbF9fY2xvc2UtLWljb25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHVzZSBocmVmPVwiI21vZGFsLWNsb3NlXCI+PC91c2U+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbF9fbmF2XCI+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibW9kYWxfX25hdi0taXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChuYXZMaW5rcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAobGluayBvZiBuYXZMaW5rczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibW9kYWxfX25hdi0tbGlua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJqcy1jbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVNb2RhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1tb2RhbF9uYW1lPVwibmF2aWdhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJsaW5rLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwibGluay5saW5rVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxpbmsubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsaW5rLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJtb2RhbF9fbmF2LS1pdGVtc1NtYWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYm90dG9tTGlua3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGxpbmsgb2YgYm90dG9tTGlua3M7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobGluay51cmwgPT09ICdsYW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibW9kYWxfX25hdi0tbGluayBqcy1hY3RpdmUtbW9kYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlTW9kYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbW9kYWxfbmFtZT1cImxhbmd1YWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLmxhYmVsID8/ICdMYW5ndWFnZSBNZW51J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGE+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbGluay5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtb2RhbF9fbmF2LS1saW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwianMtY2xvc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZU1vZGFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1tb2RhbF9uYW1lPVwibmF2aWdhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwibGluay51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJsaW5rLmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxpbmsubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxpbmsubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyby1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1oZWFkZXIvcHVyby1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHVyby9zcmMvbGliL2NvbXBvbmVudHMvcHVyby1oZWFkZXIvcHVyby1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILHdCQUF3QixFQUN4QixxQkFBcUIsR0FDeEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQzs7QUFpQnBHLE1BQU0sT0FBTyxtQkFBbUI7SUFkaEM7UUFlWSxtQkFBYyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ2xELGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFVM0IsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFJOUIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQU9qQixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5QixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckMsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU1QyxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLDRCQUF1QixHQUFHLElBQUksQ0FBQyxDQUFDLGlCQUFpQjtRQUUxRCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsZUFBVSxHQUFHLEVBQUUsQ0FBQztLQXlGbkI7SUFyRkcsWUFBWTtRQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2pCLEtBQUssSUFBSSxDQUFDLFVBQVU7Z0JBQ2hCLE1BQU07WUFDVixLQUFLLElBQUksQ0FBQyxXQUFXO2dCQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNsQyxNQUFNO1lBQ1YsS0FBSyxJQUFJLENBQUMsVUFBVTtnQkFDaEIsTUFBTTtZQUVWO2dCQUNJLE1BQU07U0FDYjtJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osT0FBTztRQUNQLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7U0FDcEM7YUFBTTtZQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ2hEO1FBRUQsYUFBYTtRQUNiLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDckQ7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ3REO0lBQ0wsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLG9CQUFvQjtRQUNwQixPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFaEMsa0RBQWtEO1FBQ2xELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDNUI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDakIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNoRSxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDMUQsQ0FBQztJQUVPLGNBQWM7UUFDbEIsUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2pCLEtBQUssSUFBSSxDQUFDLFdBQVc7Z0JBQ2pCLE9BQU8sWUFBWSxDQUFDO1lBQ3hCLEtBQUssSUFBSSxDQUFDLFVBQVU7Z0JBQ2hCLE9BQU8saUJBQWlCLENBQUM7WUFDN0IsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ3JCO2dCQUNJLE9BQU8saUJBQWlCLENBQUM7U0FDaEM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNWLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUM3QyxzQkFBc0IsQ0FDekIsQ0FBQztRQUNGLElBQUksYUFBYSxFQUFFO1lBQ2YsYUFBYSxDQUFDLGNBQWMsQ0FBQztnQkFDekIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLEtBQUssRUFBRSxPQUFPO2FBQ2pCLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQzsrR0ExSFEsbUJBQW1CO21HQUFuQixtQkFBbUIseW1CQUZqQixDQUFDLHdCQUF3QixDQUFDLDBCQzdCekMsZzRQQXFOQSxvTkRoTVEsWUFBWSwrQkFDWixxQkFBcUIsNElBQ3JCLHdCQUF3QiwwREFDeEIsc0JBQXNCOzs0RkFPakIsbUJBQW1CO2tCQWQvQixTQUFTOytCQUNJLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDTCxZQUFZO3dCQUNaLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4QixzQkFBc0I7cUJBQ3pCLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsd0JBQXdCLENBQUM7OEJBTTVCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgUHVyb0FjdGl2ZU1vZGFsRGlyZWN0aXZlLFxuICAgIFB1cm9MaW5rVHlwZURpcmVjdGl2ZSxcbn0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBQdXJvTmF2U3RpY2t5RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9wdXJvLW5hdi1zdGlja3kvcHVyby1uYXYtc3RpY2t5LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQdXJvQnV0dG9uSSwgUHVyb0ltYWdlSSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1wdXJvLWhlYWRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUHVyb0xpbmtUeXBlRGlyZWN0aXZlLFxuICAgICAgICBQdXJvQWN0aXZlTW9kYWxEaXJlY3RpdmUsXG4gICAgICAgIFB1cm9OYXZTdGlja3lEaXJlY3RpdmUsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHVyby1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9wdXJvLWhlYWRlci5jb21wb25lbnQuc2NzcycsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbUHVyb0FjdGl2ZU1vZGFsRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgUHVyb0hlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSBhY3RpdmVNb2RhbER0diA9IGluamVjdChQdXJvQWN0aXZlTW9kYWxEaXJlY3RpdmUpO1xuICAgIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgQElucHV0KCkgdGl0bGVNZW51Pzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHRpdGxlTGFuZz86IHN0cmluZztcbiAgICBASW5wdXQoKSBuYXZMaW5rcz86IFB1cm9CdXR0b25JW107XG4gICAgQElucHV0KCkgYm90dG9tTGlua3M/OiBQdXJvQnV0dG9uSVtdO1xuICAgIEBJbnB1dCgpIHNpdGVJZD86XG4gICAgICAgIHwgdHlwZW9mIHRoaXMuU0lURV9HUk9VUFxuICAgICAgICB8IHR5cGVvZiB0aGlzLlNJVEVfQkVBQ0hcbiAgICAgICAgfCB0eXBlb2YgdGhpcy5TSVRFX0hPVEVMUztcbiAgICBASW5wdXQoKSBpc0hvdGVsc1BhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBpc1Jlc3RhdXJhbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBidG5Cb29rPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGJ0bkNoZWNraW5PbmxpbmU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgYnRuQ2hlY2tpbj86IHN0cmluZztcbiAgICBASW5wdXQoKSBpc0R5bmFtaWMgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBsb2dvSG90ZWw/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbGlua0hvdGVsPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGhvdGVsQnJhbmQ/OiBQdXJvSW1hZ2VJO1xuICAgIEBJbnB1dCgpIGJhY2tncm91bmRJbWc/OiBQdXJvSW1hZ2VJO1xuICAgIEBJbnB1dCgpIGN1cnJlbnRIb3RlbElkPzogbnVtYmVyO1xuXG4gICAgQE91dHB1dCgpIGJ0bkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBidG5DbGlja0NoZWNraW4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGJ0bkNsaWNrQ2hlY2tpbk9ubGluZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHJlYWRvbmx5IFNJVEVfR1JPVVAgPSAxO1xuICAgIHJlYWRvbmx5IFNJVEVfSE9URUxTID0gMjtcbiAgICByZWFkb25seSBTSVRFX0JFQUNIID0gMztcbiAgICByZWFkb25seSBISURFX1JFU1RBVVJBTlRfQlVUVE9OUyA9IHRydWU7IC8vIOKaoO+4jyBQUk9WSVNJT05BTFxuXG4gICAgY3NzQmdVcmwgPSAnJztcbiAgICBjc3NMb2dvVXJsID0gJyc7XG4gICAgcmVzb2x2ZWRMb2dvSW1nPzogc3RyaW5nO1xuICAgIHJlc29sdmVkU3ZnSHJlZj86IHN0cmluZztcblxuICAgIGNsaWNrQnRuQm9vaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5idG5DbGljay5lbWl0KCk7XG4gICAgICAgIHN3aXRjaCAodGhpcy5zaXRlSWQpIHtcbiAgICAgICAgICAgIGNhc2UgdGhpcy5TSVRFX0dST1VQOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSB0aGlzLlNJVEVfSE9URUxTOlxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlTW9kYWxEdHYuaGFuZGxlQ2xpY2soKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgdGhpcy5TSVRFX0JFQUNIOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vbG9nb3NcbiAgICAgICAgaWYgKHRoaXMubG9nb0hvdGVsKSB7XG4gICAgICAgICAgICB0aGlzLnJlc29sdmVkTG9nb0ltZyA9IHRoaXMubG9nb0hvdGVsO1xuICAgICAgICAgICAgdGhpcy5yZXNvbHZlZFN2Z0hyZWYgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc29sdmVkTG9nb0ltZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZWRTdmdIcmVmID0gdGhpcy5yZXNvbHZlU2l0ZVN2ZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9iYWNrZ3JvdW5kc1xuICAgICAgICBpZiAodGhpcy5ob3RlbEJyYW5kPy5zcmMpIHtcbiAgICAgICAgICAgIHRoaXMuY3NzTG9nb1VybCA9IGB1cmwoXCIke3RoaXMuaG90ZWxCcmFuZC5zcmN9XCIpYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5iYWNrZ3JvdW5kSW1nPy5zcmMpIHtcbiAgICAgICAgICAgIHRoaXMuY3NzQmdVcmwgPSBgdXJsKFwiJHt0aGlzLmJhY2tncm91bmRJbWcuc3JjfVwiKWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgaXNHcm91cFNpdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpdGVJZCA9PT0gdGhpcy5TSVRFX0dST1VQO1xuICAgIH1cblxuICAgIGdldCBpc0hvdGVsU3RpY2t5Q29udGV4dCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNIb3RlbHNQYWdlICYmICF0aGlzLmlzUmVzdGF1cmFudCAmJiAhdGhpcy5pc0dyb3VwU2l0ZTtcbiAgICB9XG5cbiAgICBnZXQgc2hvd0Jvb2soKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5idG5Cb29rKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgLy8gU2kgZXMgU0lURV9HUk9VUCBzb2xvIG1vc3RyYXIgc2kgZXMgcmVzdGF1cmFudGVcbiAgICAgICAgaWYgKHRoaXMuaXNHcm91cFNpdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzUmVzdGF1cmFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGdldCBzaG93Q2hlY2tpbk9ubGluZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNIb3RlbFN0aWNreUNvbnRleHQgJiYgISF0aGlzLmJ0bkNoZWNraW5PbmxpbmU7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dDaGVja2luKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0hvdGVsU3RpY2t5Q29udGV4dCAmJiAhIXRoaXMuYnRuQ2hlY2tpbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc29sdmVTaXRlU3ZnKCk6IHN0cmluZyB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5zaXRlSWQpIHtcbiAgICAgICAgICAgIGNhc2UgdGhpcy5TSVRFX0hPVEVMUzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJyNwdXJvLWxvZ28nO1xuICAgICAgICAgICAgY2FzZSB0aGlzLlNJVEVfQkVBQ0g6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcjcHVyb2JlYWNoLWxvZ28nO1xuICAgICAgICAgICAgY2FzZSB0aGlzLlNJVEVfR1JPVVA6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAnI3B1cm9ncm91cC1sb2dvJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNjcm9sbFRvRm9vdGVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb290ZXJFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgJ2xpYi1wdXJvLWZvb3Rlci1pbmZvJ1xuICAgICAgICApO1xuICAgICAgICBpZiAoZm9vdGVyRWxlbWVudCkge1xuICAgICAgICAgICAgZm9vdGVyRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxuICAgICAgICAgICAgICAgIGJsb2NrOiAnc3RhcnQnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8aGVhZGVyIGNsYXNzPVwiaGVhZGVyXCIgbmF2U3RpY2t5IFtpc0R5bmFtaWNdPVwiaXNEeW5hbWljXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlcl9fbG9nb1wiPlxuICAgICAgICA8YSBbaHJlZl09XCJsaW5rSG90ZWxcIiBsaW5rVHlwZT1cImludGVybmFsXCI+XG4gICAgICAgICAgICBAaWYgKHJlc29sdmVkTG9nb0ltZykge1xuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJyZXNvbHZlZExvZ29JbWdcIlxuICAgICAgICAgICAgICAgICAgICBhbHQ9XCJMb2dvXCJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIzMDFcIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIzMlwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyX19sb2dvLS1pbWdcIlxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKHJlc29sdmVkU3ZnSHJlZikge1xuICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIzMDFcIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIzMlwiXG4gICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXJfX2xvZ28tLWltZ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8dXNlIFthdHRyLmhyZWZdPVwicmVzb2x2ZWRTdmdIcmVmXCI+PC91c2U+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyX19sZWZ0TmF2XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyX19tZW51IGpzLWFjdGl2ZS1tb2RhbFwiXG4gICAgICAgICAgICBhY3RpdmVNb2RhbFxuICAgICAgICAgICAgZGF0YS1tb2RhbF9uYW1lPVwibmF2aWdhdGlvblwiXG4gICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGl0bGVNZW51ID8/ICdNZW51J1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbi04M1wiPjwvaT5cbiAgICAgICAgICAgIEBpZiAodGl0bGVNZW51KSB7XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgdGl0bGVNZW51IH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXJfX2xhbmd1YWdlIGpzLWFjdGl2ZS1tb2RhbFwiXG4gICAgICAgICAgICBhY3RpdmVNb2RhbFxuICAgICAgICAgICAgZGF0YS1tb2RhbF9uYW1lPVwibGFuZ3VhZ2VcIlxuICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRpdGxlTGFuZyA/PyAnTGFuZ3VhZ2UgTWVudSdcIlxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKHRpdGxlTGFuZykge1xuICAgICAgICAgICAgICAgIHt7IHRpdGxlTGFuZyB9fVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIGhpZGUgYnV0dG9ucyB3aGVuIFB1cm8gT2FzaXMgVXJiYW5vIC0tPlxuXG4gICAgQGlmIChjdXJyZW50SG90ZWxJZCAhPT0gMjApIHtcbiAgICAgICAgQGlmIChjdXJyZW50SG90ZWxJZCA9PT0gNSkge1xuICAgICAgICAgICAgQGlmIChzaG93Qm9vaykge1xuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJidG5DbGljay5lbWl0KClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlcl9fcmVzZXJ2ZXJcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidG5Cb29rXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5IGJ0bi0tbGdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGJ0bkJvb2sgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKGlzSG90ZWxTdGlja3lDb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlcl9fcmVzZXJ2ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93Q2hlY2tpbk9ubGluZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYnRuQ2xpY2tDaGVja2luT25saW5lLmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5IGJ0bi0tbGcgY2hlY2tJblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidG5DaGVja2luT25saW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBidG5DaGVja2luT25saW5lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93Q2hlY2tpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYnRuQ2xpY2tDaGVja2luLmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXJfX2NoZWNrSW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnRuQ2hlY2tpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYnRuQ2hlY2tpbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93Qm9vaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYnRuQ2xpY2suZW1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnkgYnRuLS1sZyByZXNlcnZhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidG5Cb29rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBidG5Cb29rIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICBAaWYgKHNob3dCb29rKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYnRuQ2xpY2suZW1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyX19yZXNlcnZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnRuQm9va1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5IGJ0bi0tbGdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBidG5Cb29rIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGlmIChjdXJyZW50SG90ZWxJZCA9PT0gMjApIHtcbiAgICAgICAgQGlmIChzaG93Qm9vaykge1xuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2Nyb2xsVG9Gb290ZXIoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXJfX3Jlc2VydmVyXCJcbiAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ0bkJvb2tcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4gYnRuX19wcmltYXJ5IGJ0bi0tbGdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgYnRuQm9vayB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgfVxuICAgIH1cbjwvaGVhZGVyPlxuXG48ZGl2IGNsYXNzPVwibW9kYWwgbW9kYWwtLXNvbGlkQ3JlYW0gbW9kYWwtLW5hdmlnYXRpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWxfX2lubmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibW9kYWxfX2JvZHlcIlxuICAgICAgICAgICAgW3N0eWxlLi0tYmctdXJsXT1cImNzc0JnVXJsXCJcbiAgICAgICAgICAgIFtzdHlsZS4tLWxvZ28tdXJsXT1cImNzc0xvZ29VcmxcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtb2RhbF9fY2xvc2UganMtY2xvc2VcIlxuICAgICAgICAgICAgICAgIGFjdGl2ZU1vZGFsXG4gICAgICAgICAgICAgICAgZGF0YS1tb2RhbF9uYW1lPVwibmF2aWdhdGlvblwiXG4gICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIEJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibW9kYWxfX2Nsb3NlLS1pY29uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDx1c2UgaHJlZj1cIiNtb2RhbC1jbG9zZVwiPjwvdXNlPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWxfX25hdlwiPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm1vZGFsX19uYXYtLWl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAobmF2TGlua3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGxpbmsgb2YgbmF2TGlua3M7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1vZGFsX19uYXYtLWxpbmtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwianMtY2xvc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlTW9kYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbW9kYWxfbmFtZT1cIm5hdmlnYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwibGluay51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImxpbmsubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsaW5rLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbGluay5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibW9kYWxfX25hdi0taXRlbXNTbWFsbFwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGJvdHRvbUxpbmtzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChsaW5rIG9mIGJvdHRvbUxpbmtzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGxpbmsudXJsID09PSAnbGFuZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1vZGFsX19uYXYtLWxpbmsganMtYWN0aXZlLW1vZGFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZU1vZGFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLW1vZGFsX25hbWU9XCJsYW5ndWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluay5sYWJlbCA/PyAnTGFuZ3VhZ2UgTWVudSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxpbmsubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibW9kYWxfX25hdi0tbGlua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImpzLWNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVNb2RhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtbW9kYWxfbmFtZT1cIm5hdmlnYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImxpbmsudXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwibGluay5saW5rVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsaW5rLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsaW5rLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19