@wizishop/wizi-block 15.0.38-beta → 15.0.39-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/structures/witness/about-block/about-block.component.mjs +39 -16
- package/fesm2015/wizishop-wizi-block.mjs +26 -4
- package/fesm2015/wizishop-wizi-block.mjs.map +1 -1
- package/fesm2020/wizishop-wizi-block.mjs +26 -4
- package/fesm2020/wizishop-wizi-block.mjs.map +1 -1
- package/lib/structures/witness/about-block/about-block.component.d.ts +3 -1
- package/package.json +1 -1
- package/wizi-block.scss +7 -5
|
@@ -5,20 +5,22 @@ import { FORM_NAME_ELEMENTS, FORM_NAME_IMAGE_HEIGHT, FORM_NAME_IMAGE_URL, FORM_N
|
|
|
5
5
|
import { ImageMediaDto } from '../../../dtos/configs/medias/image/image-media.dto';
|
|
6
6
|
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
7
7
|
import { AboutElementDto } from '../../../dtos/configs/witness/about-element.dto';
|
|
8
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "@
|
|
10
|
-
import * as i2 from "@angular/
|
|
11
|
-
import * as i3 from "@angular/
|
|
12
|
-
import * as i4 from "
|
|
13
|
-
import * as i5 from "../../../shared/components/structure-config
|
|
14
|
-
import * as i6 from "../../../shared/components/structure-config-
|
|
15
|
-
import * as i7 from "
|
|
16
|
-
import * as i8 from "
|
|
17
|
-
import * as i9 from "../../../shared/directives/
|
|
18
|
-
import * as i10 from "
|
|
10
|
+
import * as i1 from "@ngx-translate/core";
|
|
11
|
+
import * as i2 from "@angular/common";
|
|
12
|
+
import * as i3 from "@angular/forms";
|
|
13
|
+
import * as i4 from "@angular/cdk/drag-drop";
|
|
14
|
+
import * as i5 from "../../../shared/components/structure-config/structure-config.component";
|
|
15
|
+
import * as i6 from "../../../shared/components/structure-config-input/structure-config-input.component";
|
|
16
|
+
import * as i7 from "../../../shared/components/structure-config-checkbox/structure-config-checkbox.component";
|
|
17
|
+
import * as i8 from "@wizishop/wizi-editor";
|
|
18
|
+
import * as i9 from "../../../shared/directives/get-size-image/get-size-image.directive";
|
|
19
|
+
import * as i10 from "../../../shared/directives/pictures-template/pictures-template.directive";
|
|
19
20
|
export class AboutBlockComponent extends StructuresComponent {
|
|
20
|
-
constructor() {
|
|
21
|
+
constructor(translateService) {
|
|
21
22
|
super();
|
|
23
|
+
this.translateService = translateService;
|
|
22
24
|
this.displayedTab = 0;
|
|
23
25
|
this.selectedKey = '';
|
|
24
26
|
this.moving = false;
|
|
@@ -31,6 +33,17 @@ export class AboutBlockComponent extends StructuresComponent {
|
|
|
31
33
|
this.contents.block.elements.push(new AboutElementDto());
|
|
32
34
|
this.contents.block.elements.push(new AboutElementDto());
|
|
33
35
|
}
|
|
36
|
+
for (let block of this.contents.block.elements) {
|
|
37
|
+
if (block.author_name.startsWith('wb.')) {
|
|
38
|
+
block.author_name = this.translateService.instant(block.author_name);
|
|
39
|
+
}
|
|
40
|
+
if (block.author_title.startsWith('wb.')) {
|
|
41
|
+
block.author_title = this.translateService.instant(block.author_title);
|
|
42
|
+
}
|
|
43
|
+
if (block.content.startsWith('wb.')) {
|
|
44
|
+
block.content = this.translateService.instant(block.content);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
34
47
|
this.contents.block.init = true;
|
|
35
48
|
this.subscribeToImage();
|
|
36
49
|
}
|
|
@@ -101,7 +114,17 @@ export class AboutBlockComponent extends StructuresComponent {
|
|
|
101
114
|
this.persist();
|
|
102
115
|
}
|
|
103
116
|
addDiapo() {
|
|
104
|
-
|
|
117
|
+
let newBlock = new AboutElementDto();
|
|
118
|
+
if (newBlock.author_name.startsWith('wb.')) {
|
|
119
|
+
newBlock.author_name = this.translateService.instant(newBlock.author_name);
|
|
120
|
+
}
|
|
121
|
+
if (newBlock.author_title.startsWith('wb.')) {
|
|
122
|
+
newBlock.author_title = this.translateService.instant(newBlock.author_title);
|
|
123
|
+
}
|
|
124
|
+
if (newBlock.content.startsWith('wb.')) {
|
|
125
|
+
newBlock.content = this.translateService.instant(newBlock.content);
|
|
126
|
+
}
|
|
127
|
+
this.contentBlock[FORM_NAME_ELEMENTS].push(newBlock);
|
|
105
128
|
this.showSlide(this.contentBlock[FORM_NAME_ELEMENTS].length - 1);
|
|
106
129
|
}
|
|
107
130
|
onDrop(event) {
|
|
@@ -137,13 +160,13 @@ export class AboutBlockComponent extends StructuresComponent {
|
|
|
137
160
|
}
|
|
138
161
|
}
|
|
139
162
|
}
|
|
140
|
-
AboutBlockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: AboutBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
141
|
-
AboutBlockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: AboutBlockComponent, selector: "wb-about-block", viewQueries: [{ propertyName: "slider", first: true, predicate: ["slider"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"wb-about-block\">\n <div class=\"wb-about-block__container\">\n <div class=\"wb-about-block__container__top\">\n <div class=\"wb-about-block__container__top__wrapper\">\n <div class=\"wb-about-block__container__top__wrapper__title\">\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div\n class=\"wb-about-block__container__top__wrapper__arrows\"\n *ngIf=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length > 2\"\n >\n <div class=\"wb-about-block__container__top__wrapper__arrows__left\" (click)=\"arrowLeftClicked()\">\n <i class=\"far fa-chevron-left\"></i>\n </div>\n <div class=\"wb-about-block__container__top__wrapper__arrows__right\" (click)=\"arrowRightClicked()\">\n <i class=\"far fa-chevron-right\"></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"wb-about-block__container__slider\">\n <div\n #slider\n class=\"wb-about-block__container__slider__wrapper\"\n [style.width]=\"50 * contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length + '%'\"\n >\n <div\n *ngFor=\"let slideC of contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS]; let i = index\"\n class=\"wb-about-block__container__slider__wrapper__element\"\n [style.background-color]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_BACKGROUND_COLOR]\"\n [ngClass]=\"displayedTab === i || displayedTab + 1 === i ? '' : 'hidden'\"\n >\n <div class=\"wb-about-block__container__slider__wrapper__element__tool-container\">\n <wb-structure-config\n [blockUUID]=\"uuid\"\n [position]=\"TYPE_CONFIG_POSITION_LEFT_TOP\"\n [isFullwidth]=\"true\"\n *ngIf=\"\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER].hasOwnProperty(FORM_NAME_IMAGE_URL) &&\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] !== ''\n \"\n >\n <wb-structure-config-input\n [label]=\"'wb.structures.template.9' | translate\"\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n ></wb-structure-config-input>\n <div class=\"columns\">\n <div class=\"column\">\n <wb-structure-config-input\n [label]=\"'wb.structures.template.10' | translate\"\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_URL]\"\n [placeholder]=\"'wb.structures.template.11' | translate\"\n (ngModelChange)=\"persist()\"\n ></wb-structure-config-input>\n </div>\n <div class=\"column\">\n <wb-structure-config-checkbox\n [label]=\"'wb.structures.template.12' | translate\"\n [(ngModel)]=\"\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_URL_TARGET]\n \"\n (ngModelChange)=\"persist()\"\n [off]=\"'_self'\"\n [on]=\"'_blank'\"\n ></wb-structure-config-checkbox>\n </div>\n </div>\n </wb-structure-config>\n </div>\n <div class=\"wb-about-block__container__slider__wrapper__element__container\">\n <div\n class=\"wb-about-block__container__slider__wrapper__element__container__image\"\n [ngClass]=\"{\n 'wb-about-block__container__slider__wrapper__element__container__image--small':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_SMALL,\n 'wb-about-block__container__slider__wrapper__element__container__image--medium':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_MEDIUM,\n 'wb-about-block__container__slider__wrapper__element__container__image--large':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_LARGE\n }\"\n >\n <div\n wbGetSizeImageDirective\n [dimensions]=\"sizes\"\n class=\"wb-about-block__container__slider__wrapper__element__container__image__img-element\"\n [style.background-image]=\"\n 'url(' +\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] +\n ')'\n \"\n *ngIf=\"\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER].hasOwnProperty(\n FORM_NAME_IMAGE_URL\n ) && contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] !== ''\n \"\n (click)=\"getMediaFor(i)\"\n >\n <div\n class=\"wb-about-block__container__slider__wrapper__element__container__image__img-element__hover\"\n ></div>\n </div>\n <div\n class=\"wb-about-block__container__slider__wrapper__element__container__image__noimages\"\n wbPicturesTemplateDirective\n [dimensions]=\"sizes\"\n (click)=\"getMediaFor(i)\"\n *ngIf=\"\n !contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER].hasOwnProperty(\n FORM_NAME_IMAGE_URL\n ) || contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] === ''\n \"\n [ngClass]=\"{\n 'wb-about-block__container__slider__wrapper__element__container__image__noimages--small':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_SMALL,\n 'wb-about-block__container__slider__wrapper__element__container__image__noimages--medium':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_MEDIUM,\n 'wb-about-block__container__slider__wrapper__element__container__image__noimages--large':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_LARGE\n }\"\n ></div>\n </div>\n <div class=\"wb-about-block__container__slider__wrapper__element__container__texts\">\n <div class=\"wb-about-block__container__slider__wrapper__element__container__texts__wrapper\">\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_AUTHOR_NAME]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_AUTHOR_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_CONTENT]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"wb-about-block__container__slider__wrapper__element__underline\"\n [style.background-color]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_UNDERLINE_COLOR]\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"wb-additionnal-tools wb-about-block__slider-thumbnails\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"onDrop($event)\"\n >\n <a\n class=\"wb-about-block__slider-thumbnails__selector\"\n *ngFor=\"let slideC of contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS]; let i = index\"\n (click)=\"showSlide(i)\"\n cdkDrag\n >\n <span></span>\n <span\n >{{ 'wb.structures.template.58' | translate: { nb: i + 1 } }}\n <i class=\"fal fa-times\" *ngIf=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length > 1\" (click)=\"removeDiapo(i)\"></i>\n </span>\n </a>\n <a\n class=\"wb-about-block__slider-thumbnails__add\"\n (click)=\"addDiapo()\"\n *ngIf=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length < 6\"\n >{{ 'wb.structures.template.30' | translate }}</a\n >\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i4.StructureConfigComponent, selector: "wb-structure-config", inputs: ["isActive", "blockUUID", "position", "isFullwidth", "small", "extraSmall"] }, { kind: "component", type: i5.StructureConfigInputComponent, selector: "wb-structure-config-input", inputs: ["label", "type", "placeholder", "resizeMiddleScreen"] }, { kind: "component", type: i6.StructureConfigCheckboxComponent, selector: "wb-structure-config-checkbox", inputs: ["label", "on", "off"] }, { kind: "component", type: i7.WiziEditorComponent, selector: "wz-editor", inputs: ["placeholder", "position"] }, { kind: "directive", type: i8.GetSizeImageDirective, selector: "[wbGetSizeImageDirective]", inputs: ["urlToParse", "dimensions"], outputs: ["onUpdate"] }, { kind: "directive", type: i9.PicturesTemplateDirective, selector: "[wbPicturesTemplateDirective]", inputs: ["dimensions", "classImageSize"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] });
|
|
163
|
+
AboutBlockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: AboutBlockComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
164
|
+
AboutBlockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: AboutBlockComponent, selector: "wb-about-block", viewQueries: [{ propertyName: "slider", first: true, predicate: ["slider"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"wb-about-block\">\n <div class=\"wb-about-block__container\">\n <div class=\"wb-about-block__container__top\">\n <div class=\"wb-about-block__container__top__wrapper\">\n <div class=\"wb-about-block__container__top__wrapper__title\">\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div\n class=\"wb-about-block__container__top__wrapper__arrows\"\n *ngIf=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length > 2\"\n >\n <div class=\"wb-about-block__container__top__wrapper__arrows__left\" (click)=\"arrowLeftClicked()\">\n <i class=\"far fa-chevron-left\"></i>\n </div>\n <div class=\"wb-about-block__container__top__wrapper__arrows__right\" (click)=\"arrowRightClicked()\">\n <i class=\"far fa-chevron-right\"></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"wb-about-block__container__slider\">\n <div\n #slider\n class=\"wb-about-block__container__slider__wrapper\"\n [style.width]=\"50 * contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length + '%'\"\n >\n <div\n *ngFor=\"let slideC of contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS]; let i = index\"\n class=\"wb-about-block__container__slider__wrapper__element\"\n [style.background-color]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_BACKGROUND_COLOR]\"\n [ngClass]=\"displayedTab === i || displayedTab + 1 === i ? '' : 'hidden'\"\n >\n <div class=\"wb-about-block__container__slider__wrapper__element__tool-container\">\n <wb-structure-config\n [blockUUID]=\"uuid\"\n [position]=\"TYPE_CONFIG_POSITION_LEFT_TOP\"\n [isFullwidth]=\"true\"\n *ngIf=\"\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER].hasOwnProperty(FORM_NAME_IMAGE_URL) &&\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] !== ''\n \"\n >\n <wb-structure-config-input\n [label]=\"'wb.structures.template.9' | translate\"\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n ></wb-structure-config-input>\n <div class=\"columns\">\n <div class=\"column\">\n <wb-structure-config-input\n [label]=\"'wb.structures.template.10' | translate\"\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_URL]\"\n [placeholder]=\"'wb.structures.template.11' | translate\"\n (ngModelChange)=\"persist()\"\n ></wb-structure-config-input>\n </div>\n <div class=\"column\">\n <wb-structure-config-checkbox\n [label]=\"'wb.structures.template.12' | translate\"\n [(ngModel)]=\"\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_URL_TARGET]\n \"\n (ngModelChange)=\"persist()\"\n [off]=\"'_self'\"\n [on]=\"'_blank'\"\n ></wb-structure-config-checkbox>\n </div>\n </div>\n </wb-structure-config>\n </div>\n <div class=\"wb-about-block__container__slider__wrapper__element__container\">\n <div\n class=\"wb-about-block__container__slider__wrapper__element__container__image\"\n [ngClass]=\"{\n 'wb-about-block__container__slider__wrapper__element__container__image--small':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_SMALL,\n 'wb-about-block__container__slider__wrapper__element__container__image--medium':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_MEDIUM,\n 'wb-about-block__container__slider__wrapper__element__container__image--large':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_LARGE\n }\"\n >\n <div\n wbGetSizeImageDirective\n [dimensions]=\"sizes\"\n class=\"wb-about-block__container__slider__wrapper__element__container__image__img-element\"\n [style.background-image]=\"\n 'url(' +\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] +\n ')'\n \"\n *ngIf=\"\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER].hasOwnProperty(\n FORM_NAME_IMAGE_URL\n ) && contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] !== ''\n \"\n (click)=\"getMediaFor(i)\"\n >\n <div\n class=\"wb-about-block__container__slider__wrapper__element__container__image__img-element__hover\"\n ></div>\n </div>\n <div\n class=\"wb-about-block__container__slider__wrapper__element__container__image__noimages\"\n wbPicturesTemplateDirective\n [dimensions]=\"sizes\"\n (click)=\"getMediaFor(i)\"\n *ngIf=\"\n !contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER].hasOwnProperty(\n FORM_NAME_IMAGE_URL\n ) || contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] === ''\n \"\n [ngClass]=\"{\n 'wb-about-block__container__slider__wrapper__element__container__image__noimages--small':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_SMALL,\n 'wb-about-block__container__slider__wrapper__element__container__image__noimages--medium':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_MEDIUM,\n 'wb-about-block__container__slider__wrapper__element__container__image__noimages--large':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_LARGE\n }\"\n ></div>\n </div>\n <div class=\"wb-about-block__container__slider__wrapper__element__container__texts\">\n <div class=\"wb-about-block__container__slider__wrapper__element__container__texts__wrapper\">\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_AUTHOR_NAME]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_AUTHOR_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_CONTENT]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"wb-about-block__container__slider__wrapper__element__underline\"\n [style.background-color]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_UNDERLINE_COLOR]\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"wb-additionnal-tools wb-about-block__slider-thumbnails\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"onDrop($event)\"\n >\n <a\n class=\"wb-about-block__slider-thumbnails__selector\"\n *ngFor=\"let slideC of contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS]; let i = index\"\n (click)=\"showSlide(i)\"\n cdkDrag\n >\n <span></span>\n <span\n >{{ 'wb.structures.template.58' | translate: { nb: i + 1 } }}\n <i class=\"fal fa-times\" *ngIf=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length > 1\" (click)=\"removeDiapo(i)\"></i>\n </span>\n </a>\n <a\n class=\"wb-about-block__slider-thumbnails__add\"\n (click)=\"addDiapo()\"\n *ngIf=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length < 6\"\n >{{ 'wb.structures.template.30' | translate }}</a\n >\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i5.StructureConfigComponent, selector: "wb-structure-config", inputs: ["isActive", "blockUUID", "position", "isFullwidth", "small", "extraSmall"] }, { kind: "component", type: i6.StructureConfigInputComponent, selector: "wb-structure-config-input", inputs: ["label", "type", "placeholder", "resizeMiddleScreen"] }, { kind: "component", type: i7.StructureConfigCheckboxComponent, selector: "wb-structure-config-checkbox", inputs: ["label", "on", "off"] }, { kind: "component", type: i8.WiziEditorComponent, selector: "wz-editor", inputs: ["placeholder", "position"] }, { kind: "directive", type: i9.GetSizeImageDirective, selector: "[wbGetSizeImageDirective]", inputs: ["urlToParse", "dimensions"], outputs: ["onUpdate"] }, { kind: "directive", type: i10.PicturesTemplateDirective, selector: "[wbPicturesTemplateDirective]", inputs: ["dimensions", "classImageSize"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
142
165
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: AboutBlockComponent, decorators: [{
|
|
143
166
|
type: Component,
|
|
144
167
|
args: [{ selector: AboutBlockService.selector(), template: "<div class=\"wb-about-block\">\n <div class=\"wb-about-block__container\">\n <div class=\"wb-about-block__container__top\">\n <div class=\"wb-about-block__container__top__wrapper\">\n <div class=\"wb-about-block__container__top__wrapper__title\">\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div\n class=\"wb-about-block__container__top__wrapper__arrows\"\n *ngIf=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length > 2\"\n >\n <div class=\"wb-about-block__container__top__wrapper__arrows__left\" (click)=\"arrowLeftClicked()\">\n <i class=\"far fa-chevron-left\"></i>\n </div>\n <div class=\"wb-about-block__container__top__wrapper__arrows__right\" (click)=\"arrowRightClicked()\">\n <i class=\"far fa-chevron-right\"></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"wb-about-block__container__slider\">\n <div\n #slider\n class=\"wb-about-block__container__slider__wrapper\"\n [style.width]=\"50 * contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length + '%'\"\n >\n <div\n *ngFor=\"let slideC of contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS]; let i = index\"\n class=\"wb-about-block__container__slider__wrapper__element\"\n [style.background-color]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_BACKGROUND_COLOR]\"\n [ngClass]=\"displayedTab === i || displayedTab + 1 === i ? '' : 'hidden'\"\n >\n <div class=\"wb-about-block__container__slider__wrapper__element__tool-container\">\n <wb-structure-config\n [blockUUID]=\"uuid\"\n [position]=\"TYPE_CONFIG_POSITION_LEFT_TOP\"\n [isFullwidth]=\"true\"\n *ngIf=\"\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER].hasOwnProperty(FORM_NAME_IMAGE_URL) &&\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] !== ''\n \"\n >\n <wb-structure-config-input\n [label]=\"'wb.structures.template.9' | translate\"\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n ></wb-structure-config-input>\n <div class=\"columns\">\n <div class=\"column\">\n <wb-structure-config-input\n [label]=\"'wb.structures.template.10' | translate\"\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_URL]\"\n [placeholder]=\"'wb.structures.template.11' | translate\"\n (ngModelChange)=\"persist()\"\n ></wb-structure-config-input>\n </div>\n <div class=\"column\">\n <wb-structure-config-checkbox\n [label]=\"'wb.structures.template.12' | translate\"\n [(ngModel)]=\"\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_URL_TARGET]\n \"\n (ngModelChange)=\"persist()\"\n [off]=\"'_self'\"\n [on]=\"'_blank'\"\n ></wb-structure-config-checkbox>\n </div>\n </div>\n </wb-structure-config>\n </div>\n <div class=\"wb-about-block__container__slider__wrapper__element__container\">\n <div\n class=\"wb-about-block__container__slider__wrapper__element__container__image\"\n [ngClass]=\"{\n 'wb-about-block__container__slider__wrapper__element__container__image--small':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_SMALL,\n 'wb-about-block__container__slider__wrapper__element__container__image--medium':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_MEDIUM,\n 'wb-about-block__container__slider__wrapper__element__container__image--large':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_LARGE\n }\"\n >\n <div\n wbGetSizeImageDirective\n [dimensions]=\"sizes\"\n class=\"wb-about-block__container__slider__wrapper__element__container__image__img-element\"\n [style.background-image]=\"\n 'url(' +\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] +\n ')'\n \"\n *ngIf=\"\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER].hasOwnProperty(\n FORM_NAME_IMAGE_URL\n ) && contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] !== ''\n \"\n (click)=\"getMediaFor(i)\"\n >\n <div\n class=\"wb-about-block__container__slider__wrapper__element__container__image__img-element__hover\"\n ></div>\n </div>\n <div\n class=\"wb-about-block__container__slider__wrapper__element__container__image__noimages\"\n wbPicturesTemplateDirective\n [dimensions]=\"sizes\"\n (click)=\"getMediaFor(i)\"\n *ngIf=\"\n !contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER].hasOwnProperty(\n FORM_NAME_IMAGE_URL\n ) || contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] === ''\n \"\n [ngClass]=\"{\n 'wb-about-block__container__slider__wrapper__element__container__image__noimages--small':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_SMALL,\n 'wb-about-block__container__slider__wrapper__element__container__image__noimages--medium':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_MEDIUM,\n 'wb-about-block__container__slider__wrapper__element__container__image__noimages--large':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_LARGE\n }\"\n ></div>\n </div>\n <div class=\"wb-about-block__container__slider__wrapper__element__container__texts\">\n <div class=\"wb-about-block__container__slider__wrapper__element__container__texts__wrapper\">\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_AUTHOR_NAME]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_AUTHOR_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_CONTENT]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"wb-about-block__container__slider__wrapper__element__underline\"\n [style.background-color]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_UNDERLINE_COLOR]\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"wb-additionnal-tools wb-about-block__slider-thumbnails\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"onDrop($event)\"\n >\n <a\n class=\"wb-about-block__slider-thumbnails__selector\"\n *ngFor=\"let slideC of contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS]; let i = index\"\n (click)=\"showSlide(i)\"\n cdkDrag\n >\n <span></span>\n <span\n >{{ 'wb.structures.template.58' | translate: { nb: i + 1 } }}\n <i class=\"fal fa-times\" *ngIf=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length > 1\" (click)=\"removeDiapo(i)\"></i>\n </span>\n </a>\n <a\n class=\"wb-about-block__slider-thumbnails__add\"\n (click)=\"addDiapo()\"\n *ngIf=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length < 6\"\n >{{ 'wb.structures.template.30' | translate }}</a\n >\n </div>\n</div>\n" }]
|
|
145
|
-
}], ctorParameters: function () { return []; }, propDecorators: { slider: [{
|
|
168
|
+
}], ctorParameters: function () { return [{ type: i1.TranslateService }]; }, propDecorators: { slider: [{
|
|
146
169
|
type: ViewChild,
|
|
147
170
|
args: ['slider']
|
|
148
171
|
}] } });
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQtYmxvY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL3N0cnVjdHVyZXMvd2l0bmVzcy9hYm91dC1ibG9jay9hYm91dC1ibG9jay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy9saWIvc3RydWN0dXJlcy93aXRuZXNzL2Fib3V0LWJsb2NrL2Fib3V0LWJsb2NrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTJDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUV6RixPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNuQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOzs7Ozs7Ozs7Ozs7QUFNbEYsTUFBTSxPQUFPLG1CQUFvQixTQUFRLG1CQUFrQztJQVd2RTtRQUNJLEtBQUssRUFBRSxDQUFDO1FBWFosaUJBQVksR0FBRyxDQUFDLENBQUM7UUFFakIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFakIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUlmLFVBQUssR0FBRyxTQUFTLENBQUM7UUFJZCxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDaEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLGVBQWUsRUFBRSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLGVBQWUsRUFBRSxDQUFDLENBQUM7U0FDNUQ7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssRUFBRSxFQUFFO2dCQUN6QixJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdEM7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ25DO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQUc7UUFDWCxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFHO1FBQ1QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNwRCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMxRCxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ1o7UUFDRCxNQUFNLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNyQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ2xHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBSztRQUNyQixNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUMxQyxhQUFhLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFFNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU5RixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELHNCQUFzQixDQUFDLEtBQUs7UUFDeEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRS9GLFlBQVksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUN6QyxZQUFZLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLFlBQVksQ0FBQztRQUN6RixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFHLEVBQUUsZ0JBQXFDO1FBQ3RELElBQUksZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsbUJBQW1CLENBQUMsRUFBRTtZQUN6RyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzFHLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDNUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ2xCO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFHO1FBQ1gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNELE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXpCLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVMsSUFBSTtZQUNyRSxPQUFPLElBQUksS0FBSyxTQUFTLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUU7WUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JCO2FBQU07WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMzQjtRQUNELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUs7UUFDUixlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRTtZQUN2QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLENBQUM7WUFDM0YsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDWDtJQUNMLENBQUM7SUFFRCxpQkFBaUI7UUFDYixJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdEUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2xGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLElBQUksYUFBYSxLQUFLLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLENBQUM7YUFDdEY7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7YUFDdkQ7WUFDRCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNYO0lBQ0wsQ0FBQzs7Z0hBN0lRLG1CQUFtQjtvR0FBbkIsbUJBQW1CLCtLQ3BCaEMsd3RYQThMQTsyRkQxS2EsbUJBQW1CO2tCQUovQixTQUFTOytCQUNJLGlCQUFpQixDQUFDLFFBQVEsRUFBRTswRUFVakIsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RydWN0dXJlc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3N0cnVjdHVyZXMuY29tcG9uZW50JztcbmltcG9ydCB7IEFib3V0QmxvY2tTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYmxvY2tzL3dpdG5lc3MvYWJvdXQtYmxvY2suc2VydmljZSc7XG5pbXBvcnQgeyBBYm91dEJsb2NrRHRvIH0gZnJvbSAnLi4vLi4vLi4vZHRvcy9ibG9ja3Mvd2l0bmVzcy9hYm91dC1ibG9jay5kdG8nO1xuaW1wb3J0IHtcbiAgICBGT1JNX05BTUVfRUxFTUVOVFMsXG4gICAgRk9STV9OQU1FX0lNQUdFX0hFSUdIVCxcbiAgICBGT1JNX05BTUVfSU1BR0VfVVJMLFxuICAgIEZPUk1fTkFNRV9JTUFHRV9XSURUSCxcbiAgICBGT1JNX05BTUVfU0xJREVSXG59IGZyb20gJy4uLy4uLy4uL2R0b3MvZm9ybXMvZm9ybXMuZHRvJztcbmltcG9ydCB7IEltYWdlTWVkaWFEdG8gfSBmcm9tICcuLi8uLi8uLi9kdG9zL2NvbmZpZ3MvbWVkaWFzL2ltYWdlL2ltYWdlLW1lZGlhLmR0byc7XG5pbXBvcnQgeyBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IE1lZGlhV2lkdGhIZWlnaHREdG8gfSBmcm9tICcuLi8uLi8uLi9kdG9zL2NvbmZpZ3MvbWVkaWFzL21lZGlhLXdpZHRoLWhlaWdodC5kdG8nO1xuaW1wb3J0IHsgQWJvdXRFbGVtZW50RHRvIH0gZnJvbSAnLi4vLi4vLi4vZHRvcy9jb25maWdzL3dpdG5lc3MvYWJvdXQtZWxlbWVudC5kdG8nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogQWJvdXRCbG9ja1NlcnZpY2Uuc2VsZWN0b3IoKSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWJvdXQtYmxvY2suY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEFib3V0QmxvY2tDb21wb25lbnQgZXh0ZW5kcyBTdHJ1Y3R1cmVzQ29tcG9uZW50PEFib3V0QmxvY2tEdG8+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGRpc3BsYXllZFRhYiA9IDA7XG5cbiAgICBzZWxlY3RlZEtleSA9ICcnO1xuXG4gICAgbW92aW5nID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKCdzbGlkZXInKSBzbGlkZXI7XG5cbiAgICBzaXplcyA9ICczMjB4MjYwJztcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnNldENvbXBvbmVudFNlcnZpY2UoQWJvdXRCbG9ja1NlcnZpY2UpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICBpZiAodGhpcy5jb250ZW50cy5ibG9jay5pbml0ID09PSB0cnVlICYmIHRoaXMuY29udGVudHMuYmxvY2suZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRzLmJsb2NrLmVsZW1lbnRzLnB1c2gobmV3IEFib3V0RWxlbWVudER0bygpKTtcbiAgICAgICAgICAgIHRoaXMuY29udGVudHMuYmxvY2suZWxlbWVudHMucHVzaChuZXcgQWJvdXRFbGVtZW50RHRvKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGVudHMuYmxvY2suaW5pdCA9IHRydWU7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9JbWFnZSgpO1xuICAgIH1cblxuICAgIHN1YnNjcmliZVRvSW1hZ2UoKSB7XG4gICAgICAgIHRoaXMuaW1hZ2Uuc3Vic2NyaWJlKG1lZGlhID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkS2V5ICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHRoaXMucmVwbGFjZVNsaWRlcldpdGhNZWRpYShtZWRpYSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQVNsaWRlcldpdGhNZWRpYShtZWRpYSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldE1lZGlhRm9yKGtleSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkS2V5ID0ga2V5O1xuICAgICAgICB0aGlzLmdldE1lZGlhKCk7XG4gICAgfVxuXG4gICAgc2hvd1NsaWRlKGtleSkge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50QmxvY2tbRk9STV9OQU1FX0VMRU1FTlRTXS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoa2V5ID09PSB0aGlzLmNvbnRlbnRCbG9ja1tGT1JNX05BTUVfRUxFTUVOVFNdLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGtleSAtPSAxO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vdmUgPSBrZXkgLSB0aGlzLmRpc3BsYXllZFRhYjtcbiAgICAgICAgY29uc3QgY3VycmVudE1hcmdpbiA9IHRoaXMuc2xpZGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWFyZ2luTGVmdC5yZXBsYWNlKCclJywgJycpO1xuICAgICAgICB0aGlzLm1vdmluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkVGFiID0ga2V5O1xuICAgICAgICB0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQgPSAoTnVtYmVyKGN1cnJlbnRNYXJnaW4pIC0gNTAgKiBtb3ZlKS50b1N0cmluZygpICsgJyUnO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubW92aW5nID0gZmFsc2U7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgfVxuXG4gICAgYWRkQVNsaWRlcldpdGhNZWRpYShtZWRpYSkge1xuICAgICAgICBjb25zdCBpbWFnZU1lZGlhRHRvID0gbmV3IEltYWdlTWVkaWFEdG8oKTtcbiAgICAgICAgaW1hZ2VNZWRpYUR0by5pbWFnZV91cmwgPSBtZWRpYS5pbWFnZV91cmw7XG4gICAgICAgIGltYWdlTWVkaWFEdG8uaWQgPSBtZWRpYS5pZDtcblxuICAgICAgICB0aGlzLmNvbnRlbnRCbG9ja1tGT1JNX05BTUVfRUxFTUVOVFNdW3RoaXMuc2VsZWN0ZWRLZXldW0ZPUk1fTkFNRV9TTElERVJdLnB1c2goaW1hZ2VNZWRpYUR0byk7XG5cbiAgICAgICAgdGhpcy5wZXJzaXN0KCk7XG4gICAgfVxuXG4gICAgcmVwbGFjZVNsaWRlcldpdGhNZWRpYShtZWRpYSkge1xuICAgICAgICBjb25zdCBjdXJyZW50SW1hZ2UgPSB0aGlzLmNvbnRlbnRCbG9ja1tGT1JNX05BTUVfRUxFTUVOVFNdW3RoaXMuc2VsZWN0ZWRLZXldW0ZPUk1fTkFNRV9TTElERVJdO1xuXG4gICAgICAgIGN1cnJlbnRJbWFnZS5pbWFnZV91cmwgPSBtZWRpYS5pbWFnZV91cmw7XG4gICAgICAgIGN1cnJlbnRJbWFnZS5pZCA9IG1lZGlhLmlkO1xuXG4gICAgICAgIHRoaXMuY29udGVudEJsb2NrW0ZPUk1fTkFNRV9FTEVNRU5UU11bdGhpcy5zZWxlY3RlZEtleV1bRk9STV9OQU1FX1NMSURFUl0gPSBjdXJyZW50SW1hZ2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSAnJztcblxuICAgICAgICB0aGlzLnBlcnNpc3QoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVUaGlzSW1hZ2Uoa2V5LCBpbWFnZVdpZHRoSGVpZ2h0OiBNZWRpYVdpZHRoSGVpZ2h0RHRvKSB7XG4gICAgICAgIGlmIChpbWFnZVdpZHRoSGVpZ2h0W0ZPUk1fTkFNRV9JTUFHRV9VUkxdID09PSB0aGlzLmNvbnRlbnRCbG9ja1tGT1JNX05BTUVfU0xJREVSXVtrZXldW0ZPUk1fTkFNRV9JTUFHRV9VUkxdKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRCbG9ja1tGT1JNX05BTUVfU0xJREVSXVtrZXldW0ZPUk1fTkFNRV9JTUFHRV9XSURUSF0gPSBpbWFnZVdpZHRoSGVpZ2h0W0ZPUk1fTkFNRV9JTUFHRV9XSURUSF07XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRCbG9ja1tGT1JNX05BTUVfU0xJREVSXVtrZXldW0ZPUk1fTkFNRV9JTUFHRV9IRUlHSFRdID0gaW1hZ2VXaWR0aEhlaWdodFtGT1JNX05BTUVfSU1BR0VfSEVJR0hUXTtcbiAgICAgICAgICAgIHRoaXMucGVyc2lzdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlRGlhcG8oa2V5KSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRBcnJheSA9IHRoaXMuY29udGVudEJsb2NrW0ZPUk1fTkFNRV9FTEVNRU5UU107XG4gICAgICAgIGRlbGV0ZSBlbGVtZW50QXJyYXlba2V5XTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRCbG9ja1tGT1JNX05BTUVfRUxFTUVOVFNdID0gZWxlbWVudEFycmF5LmZpbHRlcihmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbSAhPT0gdW5kZWZpbmVkO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoa2V5ID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dTbGlkZSgxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1NsaWRlKGtleSAtIDEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGVyc2lzdCgpO1xuICAgIH1cblxuICAgIGFkZERpYXBvKCkge1xuICAgICAgICB0aGlzLmNvbnRlbnRCbG9ja1tGT1JNX05BTUVfRUxFTUVOVFNdLnB1c2gobmV3IEFib3V0RWxlbWVudER0bygpKTtcbiAgICAgICAgdGhpcy5zaG93U2xpZGUodGhpcy5jb250ZW50QmxvY2tbRk9STV9OQU1FX0VMRU1FTlRTXS5sZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICBvbkRyb3AoZXZlbnQpIHtcbiAgICAgICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuY29udGVudEJsb2NrW0ZPUk1fTkFNRV9FTEVNRU5UU10sIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgIHRoaXMuc2hvd1NsaWRlKGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgIHRoaXMucGVyc2lzdCgpO1xuICAgIH1cblxuICAgIGFycm93TGVmdENsaWNrZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXllZFRhYiA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRNYXJnaW4gPSB0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQucmVwbGFjZSgnJScsICcnKTtcbiAgICAgICAgICAgIHRoaXMubW92aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkVGFiIC09IDE7XG4gICAgICAgICAgICB0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQgPSAoTnVtYmVyKGN1cnJlbnRNYXJnaW4pICsgNTApLnRvU3RyaW5nKCkgKyAnJSc7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFycm93UmlnaHRDbGlja2VkKCkge1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5ZWRUYWIgPCB0aGlzLmNvbnRlbnRCbG9ja1tGT1JNX05BTUVfRUxFTUVOVFNdLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRNYXJnaW4gPSB0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQucmVwbGFjZSgnJScsICcnKTtcbiAgICAgICAgICAgIHRoaXMubW92aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkVGFiICs9IDE7XG4gICAgICAgICAgICBpZiAoY3VycmVudE1hcmdpbiAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQgPSAoY3VycmVudE1hcmdpbiAtIDUwKS50b1N0cmluZygpICsgJyUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQgPSAnLTUwJSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3Yi1hYm91dC1ibG9ja1wiPlxuICAgIDxkaXYgY2xhc3M9XCJ3Yi1hYm91dC1ibG9ja19fY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1hYm91dC1ibG9ja19fY29udGFpbmVyX190b3BcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1hYm91dC1ibG9ja19fY29udGFpbmVyX190b3BfX3dyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fdG9wX193cmFwcGVyX190aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8d3otZWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX1RJVExFXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwZXJzaXN0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3Yi5zaGFyZWQuY29tcG9uZW50cy5xdWlsbC4xJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC93ei1lZGl0b3I+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndiLWFib3V0LWJsb2NrX19jb250YWluZXJfX3RvcF9fd3JhcHBlcl9fYXJyb3dzXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9FTEVNRU5UU10ubGVuZ3RoID4gMlwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fdG9wX193cmFwcGVyX19hcnJvd3NfX2xlZnRcIiAoY2xpY2spPVwiYXJyb3dMZWZ0Q2xpY2tlZCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1jaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fdG9wX193cmFwcGVyX19hcnJvd3NfX3JpZ2h0XCIgKGNsaWNrKT1cImFycm93UmlnaHRDbGlja2VkKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWNoZXZyb24tcmlnaHRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fc2xpZGVyXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgI3NsaWRlclxuICAgICAgICAgICAgICAgIGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fc2xpZGVyX193cmFwcGVyXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiNTAgKiBjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9FTEVNRU5UU10ubGVuZ3RoICsgJyUnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzbGlkZUMgb2YgY29udGVudHNbQkFTRV9CTE9DS19DT05URU5UXVtGT1JNX05BTUVfRUxFTUVOVFNdOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3Yi1hYm91dC1ibG9ja19fY29udGFpbmVyX19zbGlkZXJfX3dyYXBwZXJfX2VsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9CQUNLR1JPVU5EX0NPTE9SXVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRpc3BsYXllZFRhYiA9PT0gaSB8fCBkaXNwbGF5ZWRUYWIgKyAxID09PSBpID8gJycgOiAnaGlkZGVuJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fc2xpZGVyX193cmFwcGVyX19lbGVtZW50X190b29sLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHdiLXN0cnVjdHVyZS1jb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmxvY2tVVUlEXT1cInV1aWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJUWVBFX0NPTkZJR19QT1NJVElPTl9MRUZUX1RPUFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRnVsbHdpZHRoXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0VMRU1FTlRTXVtpXVtGT1JNX05BTUVfU0xJREVSXS5oYXNPd25Qcm9wZXJ0eShGT1JNX05BTUVfSU1BR0VfVVJMKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9FTEVNRU5UU11baV1bRk9STV9OQU1FX1NMSURFUl1bRk9STV9OQU1FX0lNQUdFX1VSTF0gIT09ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d2Itc3RydWN0dXJlLWNvbmZpZy1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3diLnN0cnVjdHVyZXMudGVtcGxhdGUuOScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0VMRU1FTlRTXVtpXVtGT1JNX05BTUVfU0xJREVSXVtGT1JNX05BTUVfVElUTEVdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicGVyc2lzdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC93Yi1zdHJ1Y3R1cmUtY29uZmlnLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3Yi1zdHJ1Y3R1cmUtY29uZmlnLWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIid3Yi5zdHJ1Y3R1cmVzLnRlbXBsYXRlLjEwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9FTEVNRU5UU11baV1bRk9STV9OQU1FX1NMSURFUl1bRk9STV9OQU1FX1VSTF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2Iuc3RydWN0dXJlcy50ZW1wbGF0ZS4xMScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInBlcnNpc3QoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC93Yi1zdHJ1Y3R1cmUtY29uZmlnLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdiLXN0cnVjdHVyZS1jb25maWctY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3diLnN0cnVjdHVyZXMudGVtcGxhdGUuMTInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9FTEVNRU5UU11baV1bRk9STV9OQU1FX1NMSURFUl1bRk9STV9OQU1FX1VSTF9UQVJHRVRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwZXJzaXN0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvZmZdPVwiJ19zZWxmJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29uXT1cIidfYmxhbmsnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3diLXN0cnVjdHVyZS1jb25maWctY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC93Yi1zdHJ1Y3R1cmUtY29uZmlnPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWFib3V0LWJsb2NrX19jb250YWluZXJfX3NsaWRlcl9fd3JhcHBlcl9fZWxlbWVudF9fY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3Yi1hYm91dC1ibG9ja19fY29udGFpbmVyX19zbGlkZXJfX3dyYXBwZXJfX2VsZW1lbnRfX2NvbnRhaW5lcl9faW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3diLWFib3V0LWJsb2NrX19jb250YWluZXJfX3NsaWRlcl9fd3JhcHBlcl9fZWxlbWVudF9fY29udGFpbmVyX19pbWFnZS0tc21hbGwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHNbQkFTRV9CTE9DS19DT05URU5UXVtGT1JNX05BTUVfSU1BR0VfTUFTS10gPT09IEZPUk1fVFlQRV9JTUFHRV9NQVNLX1NNQUxMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fc2xpZGVyX193cmFwcGVyX19lbGVtZW50X19jb250YWluZXJfX2ltYWdlLS1tZWRpdW0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHNbQkFTRV9CTE9DS19DT05URU5UXVtGT1JNX05BTUVfSU1BR0VfTUFTS10gPT09IEZPUk1fVFlQRV9JTUFHRV9NQVNLX01FRElVTSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3diLWFib3V0LWJsb2NrX19jb250YWluZXJfX3NsaWRlcl9fd3JhcHBlcl9fZWxlbWVudF9fY29udGFpbmVyX19pbWFnZS0tbGFyZ2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHNbQkFTRV9CTE9DS19DT05URU5UXVtGT1JNX05BTUVfSU1BR0VfTUFTS10gPT09IEZPUk1fVFlQRV9JTUFHRV9NQVNLX0xBUkdFXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YkdldFNpemVJbWFnZURpcmVjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGltZW5zaW9uc109XCJzaXplc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fc2xpZGVyX193cmFwcGVyX19lbGVtZW50X19jb250YWluZXJfX2ltYWdlX19pbWctZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VybCgnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0VMRU1FTlRTXVtpXVtGT1JNX05BTUVfU0xJREVSXVtGT1JNX05BTUVfSU1BR0VfVVJMXSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0VMRU1FTlRTXVtpXVtGT1JNX05BTUVfU0xJREVSXS5oYXNPd25Qcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGT1JNX05BTUVfSU1BR0VfVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICYmIGNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0VMRU1FTlRTXVtpXVtGT1JNX05BTUVfU0xJREVSXVtGT1JNX05BTUVfSU1BR0VfVVJMXSAhPT0gJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdldE1lZGlhRm9yKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fc2xpZGVyX193cmFwcGVyX19lbGVtZW50X19jb250YWluZXJfX2ltYWdlX19pbWctZWxlbWVudF9faG92ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndiLWFib3V0LWJsb2NrX19jb250YWluZXJfX3NsaWRlcl9fd3JhcHBlcl9fZWxlbWVudF9fY29udGFpbmVyX19pbWFnZV9fbm9pbWFnZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YlBpY3R1cmVzVGVtcGxhdGVEaXJlY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RpbWVuc2lvbnNdPVwic2l6ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ2V0TWVkaWFGb3IoaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0VMRU1FTlRTXVtpXVtGT1JNX05BTUVfU0xJREVSXS5oYXNPd25Qcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGT1JNX05BTUVfSU1BR0VfVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8IGNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0VMRU1FTlRTXVtpXVtGT1JNX05BTUVfU0xJREVSXVtGT1JNX05BTUVfSU1BR0VfVVJMXSA9PT0gJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3diLWFib3V0LWJsb2NrX19jb250YWluZXJfX3NsaWRlcl9fd3JhcHBlcl9fZWxlbWVudF9fY29udGFpbmVyX19pbWFnZV9fbm9pbWFnZXMtLXNtYWxsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9JTUFHRV9NQVNLXSA9PT0gRk9STV9UWVBFX0lNQUdFX01BU0tfU01BTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fc2xpZGVyX193cmFwcGVyX19lbGVtZW50X19jb250YWluZXJfX2ltYWdlX19ub2ltYWdlcy0tbWVkaXVtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9JTUFHRV9NQVNLXSA9PT0gRk9STV9UWVBFX0lNQUdFX01BU0tfTUVESVVNLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3diLWFib3V0LWJsb2NrX19jb250YWluZXJfX3NsaWRlcl9fd3JhcHBlcl9fZWxlbWVudF9fY29udGFpbmVyX19pbWFnZV9fbm9pbWFnZXMtLWxhcmdlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9JTUFHRV9NQVNLXSA9PT0gRk9STV9UWVBFX0lNQUdFX01BU0tfTEFSR0VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fc2xpZGVyX193cmFwcGVyX19lbGVtZW50X19jb250YWluZXJfX3RleHRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWFib3V0LWJsb2NrX19jb250YWluZXJfX3NsaWRlcl9fd3JhcHBlcl9fZWxlbWVudF9fY29udGFpbmVyX190ZXh0c19fd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHd6LWVkaXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudHNbQkFTRV9CTE9DS19DT05URU5UXVtGT1JNX05BTUVfRUxFTUVOVFNdW2ldW0ZPUk1fTkFNRV9BVVRIT1JfTkFNRV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInBlcnNpc3QoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3Yi5zaGFyZWQuY29tcG9uZW50cy5xdWlsbC4xJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3d6LWVkaXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3otZWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9FTEVNRU5UU11baV1bRk9STV9OQU1FX0FVVEhPUl9USVRMRV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInBlcnNpc3QoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3Yi5zaGFyZWQuY29tcG9uZW50cy5xdWlsbC4xJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3d6LWVkaXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3otZWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9FTEVNRU5UU11baV1bRk9STV9OQU1FX0NPTlRFTlRdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwZXJzaXN0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2Iuc2hhcmVkLmNvbXBvbmVudHMucXVpbGwuMScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93ei1lZGl0b3I+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndiLWFib3V0LWJsb2NrX19jb250YWluZXJfX3NsaWRlcl9fd3JhcHBlcl9fZWxlbWVudF9fdW5kZXJsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX1VOREVSTElORV9DT0xPUl1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIndiLWFkZGl0aW9ubmFsLXRvb2xzIHdiLWFib3V0LWJsb2NrX19zbGlkZXItdGh1bWJuYWlsc1wiXG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8YVxuICAgICAgICAgICAgY2xhc3M9XCJ3Yi1hYm91dC1ibG9ja19fc2xpZGVyLXRodW1ibmFpbHNfX3NlbGVjdG9yXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzbGlkZUMgb2YgY29udGVudHNbQkFTRV9CTE9DS19DT05URU5UXVtGT1JNX05BTUVfRUxFTUVOVFNdOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIChjbGljayk9XCJzaG93U2xpZGUoaSlcIlxuICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgID57eyAnd2Iuc3RydWN0dXJlcy50ZW1wbGF0ZS41OCcgfCB0cmFuc2xhdGU6IHsgbmI6IGkgKyAxIH0gfX1cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhbCBmYS10aW1lc1wiICpuZ0lmPVwiY29udGVudHNbQkFTRV9CTE9DS19DT05URU5UXVtGT1JNX05BTUVfRUxFTUVOVFNdLmxlbmd0aCA+IDFcIiAoY2xpY2spPVwicmVtb3ZlRGlhcG8oaSlcIj48L2k+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX3NsaWRlci10aHVtYm5haWxzX19hZGRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFkZERpYXBvKClcIlxuICAgICAgICAgICAgKm5nSWY9XCJjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9FTEVNRU5UU10ubGVuZ3RoIDwgNlwiXG4gICAgICAgICAgICA+e3sgJ3diLnN0cnVjdHVyZXMudGVtcGxhdGUuMzAnIHwgdHJhbnNsYXRlIH19PC9hXG4gICAgICAgID5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQtYmxvY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL3N0cnVjdHVyZXMvd2l0bmVzcy9hYm91dC1ibG9jay9hYm91dC1ibG9jay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy9saWIvc3RydWN0dXJlcy93aXRuZXNzL2Fib3V0LWJsb2NrL2Fib3V0LWJsb2NrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTJDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUV6RixPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNuQixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7QUFNdkQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLG1CQUFrQztJQVd2RSxZQUFvQixnQkFBa0M7UUFDbEQsS0FBSyxFQUFFLENBQUM7UUFEUSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBVnRELGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBRWpCLGdCQUFXLEdBQUcsRUFBRSxD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QUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUN4QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDWDtJQUNMLENBQUM7O2dIQWxLUSxtQkFBbUI7b0dBQW5CLG1CQUFtQiwrS0NyQmhDLHd0WEE4TEE7MkZEekthLG1CQUFtQjtrQkFKL0IsU0FBUzsrQkFDSSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUU7dUdBVWpCLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0cnVjdHVyZXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zdHJ1Y3R1cmVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBYm91dEJsb2NrU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Jsb2Nrcy93aXRuZXNzL2Fib3V0LWJsb2NrLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWJvdXRCbG9ja0R0byB9IGZyb20gJy4uLy4uLy4uL2R0b3MvYmxvY2tzL3dpdG5lc3MvYWJvdXQtYmxvY2suZHRvJztcbmltcG9ydCB7XG4gICAgRk9STV9OQU1FX0VMRU1FTlRTLFxuICAgIEZPUk1fTkFNRV9JTUFHRV9IRUlHSFQsXG4gICAgRk9STV9OQU1FX0lNQUdFX1VSTCxcbiAgICBGT1JNX05BTUVfSU1BR0VfV0lEVEgsXG4gICAgRk9STV9OQU1FX1NMSURFUlxufSBmcm9tICcuLi8uLi8uLi9kdG9zL2Zvcm1zL2Zvcm1zLmR0byc7XG5pbXBvcnQgeyBJbWFnZU1lZGlhRHRvIH0gZnJvbSAnLi4vLi4vLi4vZHRvcy9jb25maWdzL21lZGlhcy9pbWFnZS9pbWFnZS1tZWRpYS5kdG8nO1xuaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBNZWRpYVdpZHRoSGVpZ2h0RHRvIH0gZnJvbSAnLi4vLi4vLi4vZHRvcy9jb25maWdzL21lZGlhcy9tZWRpYS13aWR0aC1oZWlnaHQuZHRvJztcbmltcG9ydCB7IEFib3V0RWxlbWVudER0byB9IGZyb20gJy4uLy4uLy4uL2R0b3MvY29uZmlncy93aXRuZXNzL2Fib3V0LWVsZW1lbnQuZHRvJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IEFib3V0QmxvY2tTZXJ2aWNlLnNlbGVjdG9yKCksXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Fib3V0LWJsb2NrLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBYm91dEJsb2NrQ29tcG9uZW50IGV4dGVuZHMgU3RydWN0dXJlc0NvbXBvbmVudDxBYm91dEJsb2NrRHRvPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBkaXNwbGF5ZWRUYWIgPSAwO1xuXG4gICAgc2VsZWN0ZWRLZXkgPSAnJztcblxuICAgIG1vdmluZyA9IGZhbHNlO1xuXG4gICAgQFZpZXdDaGlsZCgnc2xpZGVyJykgc2xpZGVyO1xuXG4gICAgc2l6ZXMgPSAnMzIweDI2MCc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5zZXRDb21wb25lbnRTZXJ2aWNlKEFib3V0QmxvY2tTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgaWYgKHRoaXMuY29udGVudHMuYmxvY2suaW5pdCA9PT0gdHJ1ZSAmJiB0aGlzLmNvbnRlbnRzLmJsb2NrLmVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50cy5ibG9jay5lbGVtZW50cy5wdXNoKG5ldyBBYm91dEVsZW1lbnREdG8oKSk7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRzLmJsb2NrLmVsZW1lbnRzLnB1c2gobmV3IEFib3V0RWxlbWVudER0bygpKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBibG9jayBvZiB0aGlzLmNvbnRlbnRzLmJsb2NrLmVsZW1lbnRzKSB7XG4gICAgICAgICAgICBpZiAoYmxvY2suYXV0aG9yX25hbWUuc3RhcnRzV2l0aCgnd2IuJykpIHtcbiAgICAgICAgICAgICAgICBibG9jay5hdXRob3JfbmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGJsb2NrLmF1dGhvcl9uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChibG9jay5hdXRob3JfdGl0bGUuc3RhcnRzV2l0aCgnd2IuJykpIHtcbiAgICAgICAgICAgICAgICBibG9jay5hdXRob3JfdGl0bGUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChibG9jay5hdXRob3JfdGl0bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJsb2NrLmNvbnRlbnQuc3RhcnRzV2l0aCgnd2IuJykpIHtcbiAgICAgICAgICAgICAgICBibG9jay5jb250ZW50ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYmxvY2suY29udGVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250ZW50cy5ibG9jay5pbml0ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVUb0ltYWdlKCk7XG4gICAgfVxuXG4gICAgc3Vic2NyaWJlVG9JbWFnZSgpIHtcbiAgICAgICAgdGhpcy5pbWFnZS5zdWJzY3JpYmUobWVkaWEgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRLZXkgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXBsYWNlU2xpZGVyV2l0aE1lZGlhKG1lZGlhKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBU2xpZGVyV2l0aE1lZGlhKG1lZGlhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0TWVkaWFGb3Ioa2V5KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSBrZXk7XG4gICAgICAgIHRoaXMuZ2V0TWVkaWEoKTtcbiAgICB9XG5cbiAgICBzaG93U2xpZGUoa2V5KSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRCbG9ja1tGT1JNX05BTUVfRUxFTUVOVFNdLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkgPT09IHRoaXMuY29udGVudEJsb2NrW0ZPUk1fTkFNRV9FTEVNRU5UU10ubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAga2V5IC09IDE7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbW92ZSA9IGtleSAtIHRoaXMuZGlzcGxheWVkVGFiO1xuICAgICAgICBjb25zdCBjdXJyZW50TWFyZ2luID0gdGhpcy5zbGlkZXIubmF0aXZlRWxlbWVudC5zdHlsZS5tYXJnaW5MZWZ0LnJlcGxhY2UoJyUnLCAnJyk7XG4gICAgICAgIHRoaXMubW92aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kaXNwbGF5ZWRUYWIgPSBrZXk7XG4gICAgICAgIHRoaXMuc2xpZGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWFyZ2luTGVmdCA9IChOdW1iZXIoY3VycmVudE1hcmdpbikgLSA1MCAqIG1vdmUpLnRvU3RyaW5nKCkgKyAnJSc7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5tb3ZpbmcgPSBmYWxzZTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICB9XG5cbiAgICBhZGRBU2xpZGVyV2l0aE1lZGlhKG1lZGlhKSB7XG4gICAgICAgIGNvbnN0IGltYWdlTWVkaWFEdG8gPSBuZXcgSW1hZ2VNZWRpYUR0bygpO1xuICAgICAgICBpbWFnZU1lZGlhRHRvLmltYWdlX3VybCA9IG1lZGlhLmltYWdlX3VybDtcbiAgICAgICAgaW1hZ2VNZWRpYUR0by5pZCA9IG1lZGlhLmlkO1xuXG4gICAgICAgIHRoaXMuY29udGVudEJsb2NrW0ZPUk1fTkFNRV9FTEVNRU5UU11bdGhpcy5zZWxlY3RlZEtleV1bRk9STV9OQU1FX1NMSURFUl0ucHVzaChpbWFnZU1lZGlhRHRvKTtcblxuICAgICAgICB0aGlzLnBlcnNpc3QoKTtcbiAgICB9XG5cbiAgICByZXBsYWNlU2xpZGVyV2l0aE1lZGlhKG1lZGlhKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbWFnZSA9IHRoaXMuY29udGVudEJsb2NrW0ZPUk1fTkFNRV9FTEVNRU5UU11bdGhpcy5zZWxlY3RlZEtleV1bRk9STV9OQU1FX1NMSURFUl07XG5cbiAgICAgICAgY3VycmVudEltYWdlLmltYWdlX3VybCA9IG1lZGlhLmltYWdlX3VybDtcbiAgICAgICAgY3VycmVudEltYWdlLmlkID0gbWVkaWEuaWQ7XG5cbiAgICAgICAgdGhpcy5jb250ZW50QmxvY2tbRk9STV9OQU1FX0VMRU1FTlRTXVt0aGlzLnNlbGVjdGVkS2V5XVtGT1JNX05BTUVfU0xJREVSXSA9IGN1cnJlbnRJbWFnZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEtleSA9ICcnO1xuXG4gICAgICAgIHRoaXMucGVyc2lzdCgpO1xuICAgIH1cblxuICAgIHVwZGF0ZVRoaXNJbWFnZShrZXksIGltYWdlV2lkdGhIZWlnaHQ6IE1lZGlhV2lkdGhIZWlnaHREdG8pIHtcbiAgICAgICAgaWYgKGltYWdlV2lkdGhIZWlnaHRbRk9STV9OQU1FX0lNQUdFX1VSTF0gPT09IHRoaXMuY29udGVudEJsb2NrW0ZPUk1fTkFNRV9TTElERVJdW2tleV1bRk9STV9OQU1FX0lNQUdFX1VSTF0pIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudEJsb2NrW0ZPUk1fTkFNRV9TTElERVJdW2tleV1bRk9STV9OQU1FX0lNQUdFX1dJRFRIXSA9IGltYWdlV2lkdGhIZWlnaHRbRk9STV9OQU1FX0lNQUdFX1dJRFRIXTtcbiAgICAgICAgICAgIHRoaXMuY29udGVudEJsb2NrW0ZPUk1fTkFNRV9TTElERVJdW2tleV1bRk9STV9OQU1FX0lNQUdFX0hFSUdIVF0gPSBpbWFnZVdpZHRoSGVpZ2h0W0ZPUk1fTkFNRV9JTUFHRV9IRUlHSFRdO1xuICAgICAgICAgICAgdGhpcy5wZXJzaXN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW1vdmVEaWFwbyhrZXkpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudEFycmF5ID0gdGhpcy5jb250ZW50QmxvY2tbRk9STV9OQU1FX0VMRU1FTlRTXTtcbiAgICAgICAgZGVsZXRlIGVsZW1lbnRBcnJheVtrZXldO1xuXG4gICAgICAgIHRoaXMuY29udGVudEJsb2NrW0ZPUk1fTkFNRV9FTEVNRU5UU10gPSBlbGVtZW50QXJyYXkuZmlsdGVyKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtICE9PSB1bmRlZmluZWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChrZXkgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1NsaWRlKDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zaG93U2xpZGUoa2V5IC0gMSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wZXJzaXN0KCk7XG4gICAgfVxuXG4gICAgYWRkRGlhcG8oKSB7XG4gICAgICAgIGxldCBuZXdCbG9jayA9IG5ldyBBYm91dEVsZW1lbnREdG8oKTtcbiAgICAgICAgaWYgKG5ld0Jsb2NrLmF1dGhvcl9uYW1lLnN0YXJ0c1dpdGgoJ3diLicpKSB7XG4gICAgICAgICAgICBuZXdCbG9jay5hdXRob3JfbmFtZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KG5ld0Jsb2NrLmF1dGhvcl9uYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3QmxvY2suYXV0aG9yX3RpdGxlLnN0YXJ0c1dpdGgoJ3diLicpKSB7XG4gICAgICAgICAgICBuZXdCbG9jay5hdXRob3JfdGl0bGUgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChuZXdCbG9jay5hdXRob3JfdGl0bGUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdCbG9jay5jb250ZW50LnN0YXJ0c1dpdGgoJ3diLicpKSB7XG4gICAgICAgICAgICBuZXdCbG9jay5jb250ZW50ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQobmV3QmxvY2suY29udGVudCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250ZW50QmxvY2tbRk9STV9OQU1FX0VMRU1FTlRTXS5wdXNoKG5ld0Jsb2NrKTtcbiAgICAgICAgdGhpcy5zaG93U2xpZGUodGhpcy5jb250ZW50QmxvY2tbRk9STV9OQU1FX0VMRU1FTlRTXS5sZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICBvbkRyb3AoZXZlbnQpIHtcbiAgICAgICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuY29udGVudEJsb2NrW0ZPUk1fTkFNRV9FTEVNRU5UU10sIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgIHRoaXMuc2hvd1NsaWRlKGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgIHRoaXMucGVyc2lzdCgpO1xuICAgIH1cblxuICAgIGFycm93TGVmdENsaWNrZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXllZFRhYiA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRNYXJnaW4gPSB0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQucmVwbGFjZSgnJScsICcnKTtcbiAgICAgICAgICAgIHRoaXMubW92aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkVGFiIC09IDE7XG4gICAgICAgICAgICB0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQgPSAoTnVtYmVyKGN1cnJlbnRNYXJnaW4pICsgNTApLnRvU3RyaW5nKCkgKyAnJSc7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFycm93UmlnaHRDbGlja2VkKCkge1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5ZWRUYWIgPCB0aGlzLmNvbnRlbnRCbG9ja1tGT1JNX05BTUVfRUxFTUVOVFNdLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRNYXJnaW4gPSB0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQucmVwbGFjZSgnJScsICcnKTtcbiAgICAgICAgICAgIHRoaXMubW92aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkVGFiICs9IDE7XG4gICAgICAgICAgICBpZiAoY3VycmVudE1hcmdpbiAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQgPSAoY3VycmVudE1hcmdpbiAtIDUwKS50b1N0cmluZygpICsgJyUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlci5uYXRpdmVFbGVtZW50LnN0eWxlLm1hcmdpbkxlZnQgPSAnLTUwJSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3Yi1hYm91dC1ibG9ja1wiPlxuICAgIDxkaXYgY2xhc3M9XCJ3Yi1hYm91dC1ibG9ja19fY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1hYm91dC1ibG9ja19fY29udGFpbmVyX190b3BcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1hYm91dC1ibG9ja19fY29udGFpbmVyX190b3BfX3dyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fdG9wX193cmFwcGVyX190aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8d3otZWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX1RJVExFXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwZXJzaXN0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3Yi5zaGFyZWQuY29tcG9uZW50cy5xdWlsbC4xJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC93ei1lZGl0b3I+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndiLWFib3V0LWJsb2NrX19jb250YWluZXJfX3RvcF9fd3JhcHBlcl9fYXJyb3dzXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9FTEVNRU5UU10ubGVuZ3RoID4gMlwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fdG9wX193cmFwcGVyX19hcnJvd3NfX2xlZnRcIiAoY2xpY2spPVwiYXJyb3dMZWZ0Q2xpY2tlZCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1jaGV2cm9uLWxlZnRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fdG9wX193cmFwcGVyX19hcnJvd3NfX3JpZ2h0XCIgKGNsaWNrKT1cImFycm93UmlnaHRDbGlja2VkKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWNoZXZyb24tcmlnaHRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fc2xpZGVyXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgI3NsaWRlclxuICAgICAgICAgICAgICAgIGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fc2xpZGVyX193cmFwcGVyXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiNTAgKiBjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9FTEVNRU5UU10ubGVuZ3RoICsgJyUnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzbGlkZUMgb2YgY29udGVudHNbQkFTRV9CTE9DS19DT05URU5UXVtGT1JNX05BTUVfRUxFTUVOVFNdOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3Yi1hYm91dC1ibG9ja19fY29udGFpbmVyX19zbGlkZXJfX3dyYXBwZXJfX2VsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9CQUNLR1JPVU5EX0NPTE9SXVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImRpc3BsYXllZFRhYiA9PT0gaSB8fCBkaXNwbGF5ZWRUYWIgKyAxID09PSBpID8gJycgOiAnaGlkZGVuJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fc2xpZGVyX193cmFwcGVyX19lbGVtZW50X190b29sLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHdiLXN0cnVjdHVyZS1jb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmxvY2tVVUlEXT1cInV1aWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJUWVBFX0NPTkZJR19QT1NJVElPTl9MRUZUX1RPUFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRnVsbHdpZHRoXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0VMRU1FTlRTXVtpXVtGT1JNX05BTUVfU0xJREVSXS5oYXNPd25Qcm9wZXJ0eShGT1JNX05BTUVfSU1BR0VfVVJMKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9FTEVNRU5UU11baV1bRk9STV9OQU1FX1NMSURFUl1bRk9STV9OQU1FX0lNQUdFX1VSTF0gIT09ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d2Itc3RydWN0dXJlLWNvbmZpZy1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3diLnN0cnVjdHVyZXMudGVtcGxhdGUuOScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0VMRU1FTlRTXVtpXVtGT1JNX05BTUVfU0xJREVSXVtGT1JNX05BTUVfVElUTEVdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicGVyc2lzdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC93Yi1zdHJ1Y3R1cmUtY29uZmlnLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3Yi1zdHJ1Y3R1cmUtY29uZmlnLWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIid3Yi5zdHJ1Y3R1cmVzLnRlbXBsYXRlLjEwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9FTEVNRU5UU11baV1bRk9STV9OQU1FX1NMSURFUl1bRk9STV9OQU1FX1VSTF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2Iuc3RydWN0dXJlcy50ZW1wbGF0ZS4xMScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInBlcnNpc3QoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC93Yi1zdHJ1Y3R1cmUtY29uZmlnLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdiLXN0cnVjdHVyZS1jb25maWctY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3diLnN0cnVjdHVyZXMudGVtcGxhdGUuMTInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9FTEVNRU5UU11baV1bRk9STV9OQU1FX1NMSURFUl1bRk9STV9OQU1FX1VSTF9UQVJHRVRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwZXJzaXN0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvZmZdPVwiJ19zZWxmJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29uXT1cIidfYmxhbmsnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3diLXN0cnVjdHVyZS1jb25maWctY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC93Yi1zdHJ1Y3R1cmUtY29uZmlnPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWFib3V0LWJsb2NrX19jb250YWluZXJfX3NsaWRlcl9fd3JhcHBlcl9fZWxlbWVudF9fY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3Yi1hYm91dC1ibG9ja19fY29udGFpbmVyX19zbGlkZXJfX3dyYXBwZXJfX2VsZW1lbnRfX2NvbnRhaW5lcl9faW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3diLWFib3V0LWJsb2NrX19jb250YWluZXJfX3NsaWRlcl9fd3JhcHBlcl9fZWxlbWVudF9fY29udGFpbmVyX19pbWFnZS0tc21hbGwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHNbQkFTRV9CTE9DS19DT05URU5UXVtGT1JNX05BTUVfSU1BR0VfTUFTS10gPT09IEZPUk1fVFlQRV9JTUFHRV9NQVNLX1NNQUxMLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fc2xpZGVyX193cmFwcGVyX19lbGVtZW50X19jb250YWluZXJfX2ltYWdlLS1tZWRpdW0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHNbQkFTRV9CTE9DS19DT05URU5UXVtGT1JNX05BTUVfSU1BR0VfTUFTS10gPT09IEZPUk1fVFlQRV9JTUFHRV9NQVNLX01FRElVTSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3diLWFib3V0LWJsb2NrX19jb250YWluZXJfX3NsaWRlcl9fd3JhcHBlcl9fZWxlbWVudF9fY29udGFpbmVyX19pbWFnZS0tbGFyZ2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHNbQkFTRV9CTE9DS19DT05URU5UXVtGT1JNX05BTUVfSU1BR0VfTUFTS10gPT09IEZPUk1fVFlQRV9JTUFHRV9NQVNLX0xBUkdFXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YkdldFNpemVJbWFnZURpcmVjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGltZW5zaW9uc109XCJzaXplc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fc2xpZGVyX193cmFwcGVyX19lbGVtZW50X19jb250YWluZXJfX2ltYWdlX19pbWctZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VybCgnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0VMRU1FTlRTXVtpXVtGT1JNX05BTUVfU0xJREVSXVtGT1JNX05BTUVfSU1BR0VfVVJMXSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0VMRU1FTlRTXVtpXVtGT1JNX05BTUVfU0xJREVSXS5oYXNPd25Qcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGT1JNX05BTUVfSU1BR0VfVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICYmIGNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0VMRU1FTlRTXVtpXVtGT1JNX05BTUVfU0xJREVSXVtGT1JNX05BTUVfSU1BR0VfVVJMXSAhPT0gJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdldE1lZGlhRm9yKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fc2xpZGVyX193cmFwcGVyX19lbGVtZW50X19jb250YWluZXJfX2ltYWdlX19pbWctZWxlbWVudF9faG92ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndiLWFib3V0LWJsb2NrX19jb250YWluZXJfX3NsaWRlcl9fd3JhcHBlcl9fZWxlbWVudF9fY29udGFpbmVyX19pbWFnZV9fbm9pbWFnZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YlBpY3R1cmVzVGVtcGxhdGVEaXJlY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RpbWVuc2lvbnNdPVwic2l6ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ2V0TWVkaWFGb3IoaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0VMRU1FTlRTXVtpXVtGT1JNX05BTUVfU0xJREVSXS5oYXNPd25Qcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGT1JNX05BTUVfSU1BR0VfVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHx8IGNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX0VMRU1FTlRTXVtpXVtGT1JNX05BTUVfU0xJREVSXVtGT1JNX05BTUVfSU1BR0VfVVJMXSA9PT0gJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3diLWFib3V0LWJsb2NrX19jb250YWluZXJfX3NsaWRlcl9fd3JhcHBlcl9fZWxlbWVudF9fY29udGFpbmVyX19pbWFnZV9fbm9pbWFnZXMtLXNtYWxsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9JTUFHRV9NQVNLXSA9PT0gRk9STV9UWVBFX0lNQUdFX01BU0tfU01BTEwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fc2xpZGVyX193cmFwcGVyX19lbGVtZW50X19jb250YWluZXJfX2ltYWdlX19ub2ltYWdlcy0tbWVkaXVtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9JTUFHRV9NQVNLXSA9PT0gRk9STV9UWVBFX0lNQUdFX01BU0tfTUVESVVNLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3diLWFib3V0LWJsb2NrX19jb250YWluZXJfX3NsaWRlcl9fd3JhcHBlcl9fZWxlbWVudF9fY29udGFpbmVyX19pbWFnZV9fbm9pbWFnZXMtLWxhcmdlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9JTUFHRV9NQVNLXSA9PT0gRk9STV9UWVBFX0lNQUdFX01BU0tfTEFSR0VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX2NvbnRhaW5lcl9fc2xpZGVyX193cmFwcGVyX19lbGVtZW50X19jb250YWluZXJfX3RleHRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWFib3V0LWJsb2NrX19jb250YWluZXJfX3NsaWRlcl9fd3JhcHBlcl9fZWxlbWVudF9fY29udGFpbmVyX190ZXh0c19fd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHd6LWVkaXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29udGVudHNbQkFTRV9CTE9DS19DT05URU5UXVtGT1JNX05BTUVfRUxFTUVOVFNdW2ldW0ZPUk1fTkFNRV9BVVRIT1JfTkFNRV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInBlcnNpc3QoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3Yi5zaGFyZWQuY29tcG9uZW50cy5xdWlsbC4xJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3d6LWVkaXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3otZWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9FTEVNRU5UU11baV1bRk9STV9OQU1FX0FVVEhPUl9USVRMRV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInBlcnNpc3QoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3Yi5zaGFyZWQuY29tcG9uZW50cy5xdWlsbC4xJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3d6LWVkaXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3otZWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9FTEVNRU5UU11baV1bRk9STV9OQU1FX0NPTlRFTlRdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJwZXJzaXN0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2Iuc2hhcmVkLmNvbXBvbmVudHMucXVpbGwuMScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93ei1lZGl0b3I+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndiLWFib3V0LWJsb2NrX19jb250YWluZXJfX3NsaWRlcl9fd3JhcHBlcl9fZWxlbWVudF9fdW5kZXJsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImNvbnRlbnRzW0JBU0VfQkxPQ0tfQ09OVEVOVF1bRk9STV9OQU1FX1VOREVSTElORV9DT0xPUl1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cIndiLWFkZGl0aW9ubmFsLXRvb2xzIHdiLWFib3V0LWJsb2NrX19zbGlkZXItdGh1bWJuYWlsc1wiXG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8YVxuICAgICAgICAgICAgY2xhc3M9XCJ3Yi1hYm91dC1ibG9ja19fc2xpZGVyLXRodW1ibmFpbHNfX3NlbGVjdG9yXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzbGlkZUMgb2YgY29udGVudHNbQkFTRV9CTE9DS19DT05URU5UXVtGT1JNX05BTUVfRUxFTUVOVFNdOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIChjbGljayk9XCJzaG93U2xpZGUoaSlcIlxuICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgID57eyAnd2Iuc3RydWN0dXJlcy50ZW1wbGF0ZS41OCcgfCB0cmFuc2xhdGU6IHsgbmI6IGkgKyAxIH0gfX1cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhbCBmYS10aW1lc1wiICpuZ0lmPVwiY29udGVudHNbQkFTRV9CTE9DS19DT05URU5UXVtGT1JNX05BTUVfRUxFTUVOVFNdLmxlbmd0aCA+IDFcIiAoY2xpY2spPVwicmVtb3ZlRGlhcG8oaSlcIj48L2k+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGFcbiAgICAgICAgICAgIGNsYXNzPVwid2ItYWJvdXQtYmxvY2tfX3NsaWRlci10aHVtYm5haWxzX19hZGRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFkZERpYXBvKClcIlxuICAgICAgICAgICAgKm5nSWY9XCJjb250ZW50c1tCQVNFX0JMT0NLX0NPTlRFTlRdW0ZPUk1fTkFNRV9FTEVNRU5UU10ubGVuZ3RoIDwgNlwiXG4gICAgICAgICAgICA+e3sgJ3diLnN0cnVjdHVyZXMudGVtcGxhdGUuMzAnIHwgdHJhbnNsYXRlIH19PC9hXG4gICAgICAgID5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -23872,8 +23872,9 @@ class AboutElementDto {
|
|
|
23872
23872
|
_a$2 = FORM_NAME_SLIDER, _b$2 = FORM_NAME_AUTHOR_NAME, _c$1 = FORM_NAME_AUTHOR_TITLE, _d$1 = FORM_NAME_CONTENT;
|
|
23873
23873
|
|
|
23874
23874
|
class AboutBlockComponent extends StructuresComponent {
|
|
23875
|
-
constructor() {
|
|
23875
|
+
constructor(translateService) {
|
|
23876
23876
|
super();
|
|
23877
|
+
this.translateService = translateService;
|
|
23877
23878
|
this.displayedTab = 0;
|
|
23878
23879
|
this.selectedKey = '';
|
|
23879
23880
|
this.moving = false;
|
|
@@ -23886,6 +23887,17 @@ class AboutBlockComponent extends StructuresComponent {
|
|
|
23886
23887
|
this.contents.block.elements.push(new AboutElementDto());
|
|
23887
23888
|
this.contents.block.elements.push(new AboutElementDto());
|
|
23888
23889
|
}
|
|
23890
|
+
for (let block of this.contents.block.elements) {
|
|
23891
|
+
if (block.author_name.startsWith('wb.')) {
|
|
23892
|
+
block.author_name = this.translateService.instant(block.author_name);
|
|
23893
|
+
}
|
|
23894
|
+
if (block.author_title.startsWith('wb.')) {
|
|
23895
|
+
block.author_title = this.translateService.instant(block.author_title);
|
|
23896
|
+
}
|
|
23897
|
+
if (block.content.startsWith('wb.')) {
|
|
23898
|
+
block.content = this.translateService.instant(block.content);
|
|
23899
|
+
}
|
|
23900
|
+
}
|
|
23889
23901
|
this.contents.block.init = true;
|
|
23890
23902
|
this.subscribeToImage();
|
|
23891
23903
|
}
|
|
@@ -23956,7 +23968,17 @@ class AboutBlockComponent extends StructuresComponent {
|
|
|
23956
23968
|
this.persist();
|
|
23957
23969
|
}
|
|
23958
23970
|
addDiapo() {
|
|
23959
|
-
|
|
23971
|
+
let newBlock = new AboutElementDto();
|
|
23972
|
+
if (newBlock.author_name.startsWith('wb.')) {
|
|
23973
|
+
newBlock.author_name = this.translateService.instant(newBlock.author_name);
|
|
23974
|
+
}
|
|
23975
|
+
if (newBlock.author_title.startsWith('wb.')) {
|
|
23976
|
+
newBlock.author_title = this.translateService.instant(newBlock.author_title);
|
|
23977
|
+
}
|
|
23978
|
+
if (newBlock.content.startsWith('wb.')) {
|
|
23979
|
+
newBlock.content = this.translateService.instant(newBlock.content);
|
|
23980
|
+
}
|
|
23981
|
+
this.contentBlock[FORM_NAME_ELEMENTS].push(newBlock);
|
|
23960
23982
|
this.showSlide(this.contentBlock[FORM_NAME_ELEMENTS].length - 1);
|
|
23961
23983
|
}
|
|
23962
23984
|
onDrop(event) {
|
|
@@ -23992,12 +24014,12 @@ class AboutBlockComponent extends StructuresComponent {
|
|
|
23992
24014
|
}
|
|
23993
24015
|
}
|
|
23994
24016
|
}
|
|
23995
|
-
AboutBlockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: AboutBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
24017
|
+
AboutBlockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: AboutBlockComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
23996
24018
|
AboutBlockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: AboutBlockComponent, selector: "wb-about-block", viewQueries: [{ propertyName: "slider", first: true, predicate: ["slider"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"wb-about-block\">\n <div class=\"wb-about-block__container\">\n <div class=\"wb-about-block__container__top\">\n <div class=\"wb-about-block__container__top__wrapper\">\n <div class=\"wb-about-block__container__top__wrapper__title\">\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div\n class=\"wb-about-block__container__top__wrapper__arrows\"\n *ngIf=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length > 2\"\n >\n <div class=\"wb-about-block__container__top__wrapper__arrows__left\" (click)=\"arrowLeftClicked()\">\n <i class=\"far fa-chevron-left\"></i>\n </div>\n <div class=\"wb-about-block__container__top__wrapper__arrows__right\" (click)=\"arrowRightClicked()\">\n <i class=\"far fa-chevron-right\"></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"wb-about-block__container__slider\">\n <div\n #slider\n class=\"wb-about-block__container__slider__wrapper\"\n [style.width]=\"50 * contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length + '%'\"\n >\n <div\n *ngFor=\"let slideC of contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS]; let i = index\"\n class=\"wb-about-block__container__slider__wrapper__element\"\n [style.background-color]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_BACKGROUND_COLOR]\"\n [ngClass]=\"displayedTab === i || displayedTab + 1 === i ? '' : 'hidden'\"\n >\n <div class=\"wb-about-block__container__slider__wrapper__element__tool-container\">\n <wb-structure-config\n [blockUUID]=\"uuid\"\n [position]=\"TYPE_CONFIG_POSITION_LEFT_TOP\"\n [isFullwidth]=\"true\"\n *ngIf=\"\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER].hasOwnProperty(FORM_NAME_IMAGE_URL) &&\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] !== ''\n \"\n >\n <wb-structure-config-input\n [label]=\"'wb.structures.template.9' | translate\"\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n ></wb-structure-config-input>\n <div class=\"columns\">\n <div class=\"column\">\n <wb-structure-config-input\n [label]=\"'wb.structures.template.10' | translate\"\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_URL]\"\n [placeholder]=\"'wb.structures.template.11' | translate\"\n (ngModelChange)=\"persist()\"\n ></wb-structure-config-input>\n </div>\n <div class=\"column\">\n <wb-structure-config-checkbox\n [label]=\"'wb.structures.template.12' | translate\"\n [(ngModel)]=\"\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_URL_TARGET]\n \"\n (ngModelChange)=\"persist()\"\n [off]=\"'_self'\"\n [on]=\"'_blank'\"\n ></wb-structure-config-checkbox>\n </div>\n </div>\n </wb-structure-config>\n </div>\n <div class=\"wb-about-block__container__slider__wrapper__element__container\">\n <div\n class=\"wb-about-block__container__slider__wrapper__element__container__image\"\n [ngClass]=\"{\n 'wb-about-block__container__slider__wrapper__element__container__image--small':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_SMALL,\n 'wb-about-block__container__slider__wrapper__element__container__image--medium':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_MEDIUM,\n 'wb-about-block__container__slider__wrapper__element__container__image--large':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_LARGE\n }\"\n >\n <div\n wbGetSizeImageDirective\n [dimensions]=\"sizes\"\n class=\"wb-about-block__container__slider__wrapper__element__container__image__img-element\"\n [style.background-image]=\"\n 'url(' +\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] +\n ')'\n \"\n *ngIf=\"\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER].hasOwnProperty(\n FORM_NAME_IMAGE_URL\n ) && contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] !== ''\n \"\n (click)=\"getMediaFor(i)\"\n >\n <div\n class=\"wb-about-block__container__slider__wrapper__element__container__image__img-element__hover\"\n ></div>\n </div>\n <div\n class=\"wb-about-block__container__slider__wrapper__element__container__image__noimages\"\n wbPicturesTemplateDirective\n [dimensions]=\"sizes\"\n (click)=\"getMediaFor(i)\"\n *ngIf=\"\n !contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER].hasOwnProperty(\n FORM_NAME_IMAGE_URL\n ) || contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] === ''\n \"\n [ngClass]=\"{\n 'wb-about-block__container__slider__wrapper__element__container__image__noimages--small':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_SMALL,\n 'wb-about-block__container__slider__wrapper__element__container__image__noimages--medium':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_MEDIUM,\n 'wb-about-block__container__slider__wrapper__element__container__image__noimages--large':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_LARGE\n }\"\n ></div>\n </div>\n <div class=\"wb-about-block__container__slider__wrapper__element__container__texts\">\n <div class=\"wb-about-block__container__slider__wrapper__element__container__texts__wrapper\">\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_AUTHOR_NAME]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_AUTHOR_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_CONTENT]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"wb-about-block__container__slider__wrapper__element__underline\"\n [style.background-color]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_UNDERLINE_COLOR]\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"wb-additionnal-tools wb-about-block__slider-thumbnails\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"onDrop($event)\"\n >\n <a\n class=\"wb-about-block__slider-thumbnails__selector\"\n *ngFor=\"let slideC of contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS]; let i = index\"\n (click)=\"showSlide(i)\"\n cdkDrag\n >\n <span></span>\n <span\n >{{ 'wb.structures.template.58' | translate: { nb: i + 1 } }}\n <i class=\"fal fa-times\" *ngIf=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length > 1\" (click)=\"removeDiapo(i)\"></i>\n </span>\n </a>\n <a\n class=\"wb-about-block__slider-thumbnails__add\"\n (click)=\"addDiapo()\"\n *ngIf=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length < 6\"\n >{{ 'wb.structures.template.30' | translate }}</a\n >\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: StructureConfigComponent, selector: "wb-structure-config", inputs: ["isActive", "blockUUID", "position", "isFullwidth", "small", "extraSmall"] }, { kind: "component", type: StructureConfigInputComponent, selector: "wb-structure-config-input", inputs: ["label", "type", "placeholder", "resizeMiddleScreen"] }, { kind: "component", type: StructureConfigCheckboxComponent, selector: "wb-structure-config-checkbox", inputs: ["label", "on", "off"] }, { kind: "component", type: i6$1.WiziEditorComponent, selector: "wz-editor", inputs: ["placeholder", "position"] }, { kind: "directive", type: GetSizeImageDirective, selector: "[wbGetSizeImageDirective]", inputs: ["urlToParse", "dimensions"], outputs: ["onUpdate"] }, { kind: "directive", type: PicturesTemplateDirective, selector: "[wbPicturesTemplateDirective]", inputs: ["dimensions", "classImageSize"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
23997
24019
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: AboutBlockComponent, decorators: [{
|
|
23998
24020
|
type: Component,
|
|
23999
24021
|
args: [{ selector: AboutBlockService.selector(), template: "<div class=\"wb-about-block\">\n <div class=\"wb-about-block__container\">\n <div class=\"wb-about-block__container__top\">\n <div class=\"wb-about-block__container__top__wrapper\">\n <div class=\"wb-about-block__container__top__wrapper__title\">\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div\n class=\"wb-about-block__container__top__wrapper__arrows\"\n *ngIf=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length > 2\"\n >\n <div class=\"wb-about-block__container__top__wrapper__arrows__left\" (click)=\"arrowLeftClicked()\">\n <i class=\"far fa-chevron-left\"></i>\n </div>\n <div class=\"wb-about-block__container__top__wrapper__arrows__right\" (click)=\"arrowRightClicked()\">\n <i class=\"far fa-chevron-right\"></i>\n </div>\n </div>\n </div>\n </div>\n <div class=\"wb-about-block__container__slider\">\n <div\n #slider\n class=\"wb-about-block__container__slider__wrapper\"\n [style.width]=\"50 * contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length + '%'\"\n >\n <div\n *ngFor=\"let slideC of contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS]; let i = index\"\n class=\"wb-about-block__container__slider__wrapper__element\"\n [style.background-color]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_BACKGROUND_COLOR]\"\n [ngClass]=\"displayedTab === i || displayedTab + 1 === i ? '' : 'hidden'\"\n >\n <div class=\"wb-about-block__container__slider__wrapper__element__tool-container\">\n <wb-structure-config\n [blockUUID]=\"uuid\"\n [position]=\"TYPE_CONFIG_POSITION_LEFT_TOP\"\n [isFullwidth]=\"true\"\n *ngIf=\"\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER].hasOwnProperty(FORM_NAME_IMAGE_URL) &&\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] !== ''\n \"\n >\n <wb-structure-config-input\n [label]=\"'wb.structures.template.9' | translate\"\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_TITLE]\"\n (ngModelChange)=\"persist()\"\n ></wb-structure-config-input>\n <div class=\"columns\">\n <div class=\"column\">\n <wb-structure-config-input\n [label]=\"'wb.structures.template.10' | translate\"\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_URL]\"\n [placeholder]=\"'wb.structures.template.11' | translate\"\n (ngModelChange)=\"persist()\"\n ></wb-structure-config-input>\n </div>\n <div class=\"column\">\n <wb-structure-config-checkbox\n [label]=\"'wb.structures.template.12' | translate\"\n [(ngModel)]=\"\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_URL_TARGET]\n \"\n (ngModelChange)=\"persist()\"\n [off]=\"'_self'\"\n [on]=\"'_blank'\"\n ></wb-structure-config-checkbox>\n </div>\n </div>\n </wb-structure-config>\n </div>\n <div class=\"wb-about-block__container__slider__wrapper__element__container\">\n <div\n class=\"wb-about-block__container__slider__wrapper__element__container__image\"\n [ngClass]=\"{\n 'wb-about-block__container__slider__wrapper__element__container__image--small':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_SMALL,\n 'wb-about-block__container__slider__wrapper__element__container__image--medium':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_MEDIUM,\n 'wb-about-block__container__slider__wrapper__element__container__image--large':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_LARGE\n }\"\n >\n <div\n wbGetSizeImageDirective\n [dimensions]=\"sizes\"\n class=\"wb-about-block__container__slider__wrapper__element__container__image__img-element\"\n [style.background-image]=\"\n 'url(' +\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] +\n ')'\n \"\n *ngIf=\"\n contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER].hasOwnProperty(\n FORM_NAME_IMAGE_URL\n ) && contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] !== ''\n \"\n (click)=\"getMediaFor(i)\"\n >\n <div\n class=\"wb-about-block__container__slider__wrapper__element__container__image__img-element__hover\"\n ></div>\n </div>\n <div\n class=\"wb-about-block__container__slider__wrapper__element__container__image__noimages\"\n wbPicturesTemplateDirective\n [dimensions]=\"sizes\"\n (click)=\"getMediaFor(i)\"\n *ngIf=\"\n !contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER].hasOwnProperty(\n FORM_NAME_IMAGE_URL\n ) || contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_SLIDER][FORM_NAME_IMAGE_URL] === ''\n \"\n [ngClass]=\"{\n 'wb-about-block__container__slider__wrapper__element__container__image__noimages--small':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_SMALL,\n 'wb-about-block__container__slider__wrapper__element__container__image__noimages--medium':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_MEDIUM,\n 'wb-about-block__container__slider__wrapper__element__container__image__noimages--large':\n contents[BASE_BLOCK_CONTENT][FORM_NAME_IMAGE_MASK] === FORM_TYPE_IMAGE_MASK_LARGE\n }\"\n ></div>\n </div>\n <div class=\"wb-about-block__container__slider__wrapper__element__container__texts\">\n <div class=\"wb-about-block__container__slider__wrapper__element__container__texts__wrapper\">\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_AUTHOR_NAME]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_AUTHOR_TITLE]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n <div>\n <wz-editor\n [(ngModel)]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS][i][FORM_NAME_CONTENT]\"\n (ngModelChange)=\"persist()\"\n [placeholder]=\"'wb.shared.components.quill.1' | translate\"\n >\n </wz-editor>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"wb-about-block__container__slider__wrapper__element__underline\"\n [style.background-color]=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_UNDERLINE_COLOR]\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"wb-additionnal-tools wb-about-block__slider-thumbnails\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n (cdkDropListDropped)=\"onDrop($event)\"\n >\n <a\n class=\"wb-about-block__slider-thumbnails__selector\"\n *ngFor=\"let slideC of contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS]; let i = index\"\n (click)=\"showSlide(i)\"\n cdkDrag\n >\n <span></span>\n <span\n >{{ 'wb.structures.template.58' | translate: { nb: i + 1 } }}\n <i class=\"fal fa-times\" *ngIf=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length > 1\" (click)=\"removeDiapo(i)\"></i>\n </span>\n </a>\n <a\n class=\"wb-about-block__slider-thumbnails__add\"\n (click)=\"addDiapo()\"\n *ngIf=\"contents[BASE_BLOCK_CONTENT][FORM_NAME_ELEMENTS].length < 6\"\n >{{ 'wb.structures.template.30' | translate }}</a\n >\n </div>\n</div>\n" }]
|
|
24000
|
-
}], ctorParameters: function () { return []; }, propDecorators: { slider: [{
|
|
24022
|
+
}], ctorParameters: function () { return [{ type: i1.TranslateService }]; }, propDecorators: { slider: [{
|
|
24001
24023
|
type: ViewChild,
|
|
24002
24024
|
args: ['slider']
|
|
24003
24025
|
}] } });
|