@wizishop/wizi-block 14.1.17-beta → 14.1.18-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/components/blocks/blocks.component.mjs +7 -69
- package/esm2020/lib/components/components.module.mjs +3 -10
- package/esm2020/lib/services/utils/content.service.mjs +12 -11
- package/fesm2015/wizishop-wizi-block.mjs +24 -91
- package/fesm2015/wizishop-wizi-block.mjs.map +1 -1
- package/fesm2020/wizishop-wizi-block.mjs +24 -91
- package/fesm2020/wizishop-wizi-block.mjs.map +1 -1
- package/lib/components/blocks/blocks.component.d.ts +0 -3
- package/lib/components/components.module.d.ts +1 -3
- package/lib/services/utils/content.service.d.ts +1 -0
- package/package.json +1 -2
- package/wizi-block.scss +0 -37
|
@@ -13,13 +13,10 @@ import * as i4 from "../../services/utils/external-config.service";
|
|
|
13
13
|
import * as i5 from "@angular/common";
|
|
14
14
|
import * as i6 from "@angular/cdk/drag-drop";
|
|
15
15
|
import * as i7 from "../../shared/components/structure-tools/structure-tools.component";
|
|
16
|
-
import * as i8 from "
|
|
17
|
-
import * as i9 from "
|
|
18
|
-
import * as i10 from "
|
|
19
|
-
import * as i11 from "@
|
|
20
|
-
import * as i12 from "../previews/previews.component";
|
|
21
|
-
import * as i13 from "../container-block/container-block.component";
|
|
22
|
-
import * as i14 from "@ngx-translate/core";
|
|
16
|
+
import * as i8 from "@wizishop/ng-wizi-bulma";
|
|
17
|
+
import * as i9 from "../previews/previews.component";
|
|
18
|
+
import * as i10 from "../container-block/container-block.component";
|
|
19
|
+
import * as i11 from "@ngx-translate/core";
|
|
23
20
|
export class BlocksComponent {
|
|
24
21
|
constructor(wiziBlockService, resolver, contentService, configService, externalConfigService) {
|
|
25
22
|
this.wiziBlockService = wiziBlockService;
|
|
@@ -33,8 +30,6 @@ export class BlocksComponent {
|
|
|
33
30
|
this.blockHover = false;
|
|
34
31
|
this.configActive = false;
|
|
35
32
|
this.parsedContent = [];
|
|
36
|
-
this.isLoading = false;
|
|
37
|
-
this.allWiziblocksLoaded = false;
|
|
38
33
|
}
|
|
39
34
|
ngOnInit() {
|
|
40
35
|
this.translation = this.wiziBlockService.getTranslation();
|
|
@@ -88,9 +83,6 @@ export class BlocksComponent {
|
|
|
88
83
|
}
|
|
89
84
|
baseDto.type = v.type();
|
|
90
85
|
this.contentService.setContents(baseDto);
|
|
91
|
-
setTimeout(() => {
|
|
92
|
-
this.goToLastElement();
|
|
93
|
-
}, 100);
|
|
94
86
|
if (baseDto.forms.length) {
|
|
95
87
|
this.configService.config = baseDto;
|
|
96
88
|
}
|
|
@@ -113,60 +105,6 @@ export class BlocksComponent {
|
|
|
113
105
|
}
|
|
114
106
|
});
|
|
115
107
|
}
|
|
116
|
-
goToLastElement() {
|
|
117
|
-
setTimeout(() => {
|
|
118
|
-
if (!this.allWiziblocksLoaded) {
|
|
119
|
-
this.isLoading = true;
|
|
120
|
-
}
|
|
121
|
-
const wiziblocksList = document.getElementsByClassName('wb-blocks__container');
|
|
122
|
-
const childElement = (wiziblocksList[wiziblocksList.length - 1]);
|
|
123
|
-
const parent = (document.getElementsByClassName('wb-content')[0].getElementsByClassName('cdk-virtual-scroll-viewport')[0]);
|
|
124
|
-
const parentViewableArea = {
|
|
125
|
-
height: parent.clientHeight,
|
|
126
|
-
width: parent.clientWidth
|
|
127
|
-
};
|
|
128
|
-
const parentBoundingClientRect = parent.getBoundingClientRect();
|
|
129
|
-
const childBoundingClientRect = childElement.getBoundingClientRect();
|
|
130
|
-
var isViewable = (childBoundingClientRect.top >= parentBoundingClientRect.top)
|
|
131
|
-
&& (childBoundingClientRect.bottom <= parentBoundingClientRect.top + parentViewableArea.height);
|
|
132
|
-
const currentScroll = parent.scrollTop + parentViewableArea.height;
|
|
133
|
-
const maxHeightElement = (parent.getElementsByClassName('cdk-virtual-scroll-content-wrapper')[0]);
|
|
134
|
-
const maxHeight = maxHeightElement.offsetHeight;
|
|
135
|
-
console.log('is viewable ?');
|
|
136
|
-
console.log('child top ' + childBoundingClientRect.top);
|
|
137
|
-
console.log('child bottom ' + childBoundingClientRect.bottom);
|
|
138
|
-
console.log('parent top ' + parentBoundingClientRect.top);
|
|
139
|
-
console.log('parent height ' + parentViewableArea.height);
|
|
140
|
-
console.log(childBoundingClientRect.top >= parentBoundingClientRect.top);
|
|
141
|
-
console.log(childBoundingClientRect.bottom <= parentBoundingClientRect.top + parentViewableArea.height);
|
|
142
|
-
console.log('maxHeight ' + maxHeight);
|
|
143
|
-
console.log('current scroll ' + currentScroll);
|
|
144
|
-
console.log(currentScroll >= maxHeight);
|
|
145
|
-
if (isViewable || (currentScroll >= maxHeight)) {
|
|
146
|
-
// Second check if last element is viewable
|
|
147
|
-
setTimeout(() => {
|
|
148
|
-
let checkCurrentScroll = parent.scrollTop + parentViewableArea.height;
|
|
149
|
-
let checkMaxHeight = maxHeightElement.offsetHeight;
|
|
150
|
-
if ((checkCurrentScroll >= checkMaxHeight)) {
|
|
151
|
-
console.log('viewable');
|
|
152
|
-
this.isLoading = false;
|
|
153
|
-
this.allWiziblocksLoaded = true;
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
console.log('not viewable after second check');
|
|
157
|
-
this.goToLastElement();
|
|
158
|
-
}
|
|
159
|
-
}, 100);
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
console.log('not viewable');
|
|
163
|
-
parent.scrollTop = (childBoundingClientRect.top + parent.scrollTop) - parentBoundingClientRect.top;
|
|
164
|
-
if (!this.allWiziblocksLoaded) {
|
|
165
|
-
this.goToLastElement();
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}, 250);
|
|
169
|
-
}
|
|
170
108
|
isHiddenBLocks(id) {
|
|
171
109
|
if (this.dynamicHidden.includes(id)) {
|
|
172
110
|
return true;
|
|
@@ -183,10 +121,10 @@ export class BlocksComponent {
|
|
|
183
121
|
}
|
|
184
122
|
}
|
|
185
123
|
BlocksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BlocksComponent, deps: [{ token: i1.WiziBlockService }, { token: i0.ComponentFactoryResolver }, { token: i2.ContentService }, { token: i3.ConfigService }, { token: i4.ExternalConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
186
|
-
BlocksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: BlocksComponent, selector: "wb-blocks", inputs: { contents: "contents", dynamicHidden: "dynamicHidden", selectedConfig: "selectedConfig" }, ngImport: i0, template: "<div\n class=\"wb-blocks\"\n cdkDropList\n (cdkDropListDropped)=\"onDrop($event)\"\n id=\"block-content\"\n *ngIf=\"contents.length > 0\"\n [@animateListFromLeft]=\"contents.length\"\n [ngClass]=\"{ hover: blockHover }\"\n>\n <a\n class=\"button is-hidden-button is-danger is-rounded is-tooltip-info\"\n [ngClass]=\"{ 'is-danger': hideConfig, 'is-dark is-outlined': !hideConfig }\"\n (click)=\"setHideConfig()\"\n [nwbToolTip]=\"(!hideConfig ? 'wb.blocks.html.1' : 'wb.blocks.html.2') | translate\"\n nwbToolTipPosition=\"left\"\n ><i class=\"fal fa-eye\" *ngIf=\"!hideConfig\"></i><i class=\"fal fa-eye-slash\" *ngIf=\"hideConfig\"></i\n ></a>\n <wb-previews [contents]=\"parsedContent\" *ngIf=\"preview && hideConfig\"></wb-previews>\n <
|
|
124
|
+
BlocksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: BlocksComponent, selector: "wb-blocks", inputs: { contents: "contents", dynamicHidden: "dynamicHidden", selectedConfig: "selectedConfig" }, ngImport: i0, template: "<div\n class=\"wb-blocks\"\n cdkDropList\n (cdkDropListDropped)=\"onDrop($event)\"\n id=\"block-content\"\n *ngIf=\"contents.length > 0\"\n [@animateListFromLeft]=\"contents.length\"\n [ngClass]=\"{ hover: blockHover }\"\n>\n <a\n class=\"button is-hidden-button is-danger is-rounded is-tooltip-info\"\n [ngClass]=\"{ 'is-danger': hideConfig, 'is-dark is-outlined': !hideConfig }\"\n (click)=\"setHideConfig()\"\n [nwbToolTip]=\"(!hideConfig ? 'wb.blocks.html.1' : 'wb.blocks.html.2') | translate\"\n nwbToolTipPosition=\"left\"\n ><i class=\"fal fa-eye\" *ngIf=\"!hideConfig\"></i><i class=\"fal fa-eye-slash\" *ngIf=\"hideConfig\"></i\n ></a>\n <wb-previews [contents]=\"parsedContent\" *ngIf=\"preview && hideConfig\"></wb-previews>\n <div class=\"wb-blocks__container\" *ngFor=\"let content of contents\" cdkDrag>\n <div\n class=\"wb-component\"\n [ngClass]=\"{\n 'is-inactive': hideConfig,\n 'border-grey': isHiddenBLocks(content.block.uuid),\n 'border-blue': selectedConfig === content.block.uuid\n }\"\n >\n <wb-structure-tools\n [dynamicHiddenStructure]=\"isHiddenBLocks(content.block.uuid)\"\n [uuid]=\"content.block.uuid\"\n [isHover]=\"blockHover\"\n [isAlwaysHover]=\"selectedConfig === content.block.uuid\"\n (configIsActivated)=\"switchHover($event)\"\n cdkDragHandle\n ></wb-structure-tools>\n <div class=\"wb-component__container\">\n <wb-container-block [content]=\"content\"></wb-container-block>\n </div>\n </div>\n </div>\n</div>\n<div class=\"wb-blocks-empty\" *ngIf=\"contents.length === 0\">\n <img src=\"assets/blocks/images/icons/Icon_Drag.svg\" />\n <p>{{ translation.select_component | translate }}</p>\n <p>{{ translation.doc_component | translate }}</p>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.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: i6.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: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i7.StructureToolsComponent, selector: "wb-structure-tools", inputs: ["uuid", "dynamicHiddenStructure", "isHover", "isAlwaysHover"], outputs: ["configIsActivated"] }, { kind: "directive", type: i8.NwbToolTipDirective, selector: "[nwbToolTip]", inputs: ["nwbToolTip", "nwbToolTipPosition", "nwbToolTipIsMultiline"] }, { kind: "component", type: i9.PreviewsComponent, selector: "wb-previews", inputs: ["contents"] }, { kind: "component", type: i10.ContainerBlockComponent, selector: "wb-container-block", inputs: ["content"] }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }], animations: [animateListFromLeft('100ms ease-in-out')] });
|
|
187
125
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: BlocksComponent, decorators: [{
|
|
188
126
|
type: Component,
|
|
189
|
-
args: [{ selector: 'wb-blocks', animations: [animateListFromLeft('100ms ease-in-out')], template: "<div\n class=\"wb-blocks\"\n cdkDropList\n (cdkDropListDropped)=\"onDrop($event)\"\n id=\"block-content\"\n *ngIf=\"contents.length > 0\"\n [@animateListFromLeft]=\"contents.length\"\n [ngClass]=\"{ hover: blockHover }\"\n>\n <a\n class=\"button is-hidden-button is-danger is-rounded is-tooltip-info\"\n [ngClass]=\"{ 'is-danger': hideConfig, 'is-dark is-outlined': !hideConfig }\"\n (click)=\"setHideConfig()\"\n [nwbToolTip]=\"(!hideConfig ? 'wb.blocks.html.1' : 'wb.blocks.html.2') | translate\"\n nwbToolTipPosition=\"left\"\n ><i class=\"fal fa-eye\" *ngIf=\"!hideConfig\"></i><i class=\"fal fa-eye-slash\" *ngIf=\"hideConfig\"></i\n ></a>\n <wb-previews [contents]=\"parsedContent\" *ngIf=\"preview && hideConfig\"></wb-previews>\n <
|
|
127
|
+
args: [{ selector: 'wb-blocks', animations: [animateListFromLeft('100ms ease-in-out')], template: "<div\n class=\"wb-blocks\"\n cdkDropList\n (cdkDropListDropped)=\"onDrop($event)\"\n id=\"block-content\"\n *ngIf=\"contents.length > 0\"\n [@animateListFromLeft]=\"contents.length\"\n [ngClass]=\"{ hover: blockHover }\"\n>\n <a\n class=\"button is-hidden-button is-danger is-rounded is-tooltip-info\"\n [ngClass]=\"{ 'is-danger': hideConfig, 'is-dark is-outlined': !hideConfig }\"\n (click)=\"setHideConfig()\"\n [nwbToolTip]=\"(!hideConfig ? 'wb.blocks.html.1' : 'wb.blocks.html.2') | translate\"\n nwbToolTipPosition=\"left\"\n ><i class=\"fal fa-eye\" *ngIf=\"!hideConfig\"></i><i class=\"fal fa-eye-slash\" *ngIf=\"hideConfig\"></i\n ></a>\n <wb-previews [contents]=\"parsedContent\" *ngIf=\"preview && hideConfig\"></wb-previews>\n <div class=\"wb-blocks__container\" *ngFor=\"let content of contents\" cdkDrag>\n <div\n class=\"wb-component\"\n [ngClass]=\"{\n 'is-inactive': hideConfig,\n 'border-grey': isHiddenBLocks(content.block.uuid),\n 'border-blue': selectedConfig === content.block.uuid\n }\"\n >\n <wb-structure-tools\n [dynamicHiddenStructure]=\"isHiddenBLocks(content.block.uuid)\"\n [uuid]=\"content.block.uuid\"\n [isHover]=\"blockHover\"\n [isAlwaysHover]=\"selectedConfig === content.block.uuid\"\n (configIsActivated)=\"switchHover($event)\"\n cdkDragHandle\n ></wb-structure-tools>\n <div class=\"wb-component__container\">\n <wb-container-block [content]=\"content\"></wb-container-block>\n </div>\n </div>\n </div>\n</div>\n<div class=\"wb-blocks-empty\" *ngIf=\"contents.length === 0\">\n <img src=\"assets/blocks/images/icons/Icon_Drag.svg\" />\n <p>{{ translation.select_component | translate }}</p>\n <p>{{ translation.doc_component | translate }}</p>\n</div>\n" }]
|
|
190
128
|
}], ctorParameters: function () { return [{ type: i1.WiziBlockService }, { type: i0.ComponentFactoryResolver }, { type: i2.ContentService }, { type: i3.ConfigService }, { type: i4.ExternalConfigService }]; }, propDecorators: { contents: [{
|
|
191
129
|
type: Input
|
|
192
130
|
}], dynamicHidden: [{
|
|
@@ -194,4 +132,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
194
132
|
}], selectedConfig: [{
|
|
195
133
|
type: Input
|
|
196
134
|
}] } });
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemktYmxvY2svc3JjL2xpYi9jb21wb25lbnRzL2Jsb2Nrcy9ibG9ja3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL2NvbXBvbmVudHMvYmxvY2tzL2Jsb2Nrcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNwRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBT3JGLE1BQU0sT0FBTyxlQUFlO0lBcUJ4QixZQUNZLGdCQUFrQyxFQUNsQyxRQUFrQyxFQUNsQyxjQUE4QixFQUM5QixhQUE0QixFQUM1QixxQkFBNEM7UUFKNUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUNsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXpCL0MsYUFBUSxHQUFlLEVBQUUsQ0FBQztRQUMxQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUc1QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBTW5CLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUzQix3QkFBbUIsR0FBWSxLQUFLLENBQUM7SUFRbEMsQ0FBQztJQUVKLFFBQVE7UUFDSixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUUxRCxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDaEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUMvRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFO1lBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO2FBQU07WUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztTQUN4QjtJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSztRQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSTtRQUNmLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ25ELElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDbkIsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO29CQUNqQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzVCLElBQUksT0FBTyxFQUFFO3dCQUNULE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQzt3QkFDekQsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTs0QkFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO3lCQUN2Qzt3QkFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7cUJBQ3pDO2lCQUNKO2FBQ0o7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlLENBQUMsUUFBUSxFQUFFLE9BQU87UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbkQsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRTtnQkFDNUIsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO29CQUNqQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzVCLElBQUksT0FBTyxFQUFFO3dCQUNULElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsRUFBRTs0QkFDbEQsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQ0FDOUIsSUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLHFCQUFxQixFQUFFO29DQUNyQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztpQ0FDOUQ7NEJBQ0wsQ0FBQyxDQUFDLENBQUM7eUJBQ047d0JBRUQsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUN6QyxVQUFVLENBQUMsR0FBRyxFQUFFOzRCQUNaLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzt3QkFDM0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUNSLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7NEJBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQzt5QkFDdkM7d0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO3dCQUN0QyxJQUFJLE9BQU8sRUFBRTs0QkFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQzt5QkFDekM7cUJBQ0o7eUJBQU07d0JBQ0gsSUFBSSxPQUFPLEVBQUU7NEJBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7eUJBQ2pFO3FCQUNKO2lCQUNKO3FCQUFNO29CQUNILElBQUksT0FBTyxFQUFFO3dCQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDO3FCQUNsRTtpQkFDSjthQUNKO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZTtRQUNYLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO2dCQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQzthQUN6QjtZQUNELE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQy9FLE1BQU0sWUFBWSxHQUFHLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQWdCLENBQUM7WUFDaEYsTUFBTSxNQUFNLEdBQUcsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztZQUMxSSxNQUFNLGtCQUFrQixHQUFHO2dCQUN2QixNQUFNLEVBQUUsTUFBTSxDQUFDLFlBQVk7Z0JBQzNCLEtBQUssRUFBRSxNQUFNLENBQUMsV0FBVzthQUM1QixDQUFBO1lBQ0QsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUNoRSxNQUFNLHVCQUF1QixHQUFHLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3JFLElBQUksVUFBVSxHQUFHLENBQUMsdUJBQXVCLENBQUMsR0FBRyxJQUFJLHdCQUF3QixDQUFDLEdBQUcsQ0FBQzttQkFDM0QsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLElBQUksd0JBQXdCLENBQUMsR0FBRyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hILE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDO1lBQ25FLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBZ0IsQ0FBQztZQUNqSCxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7WUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksR0FBRyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4RCxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUM3RCxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxRCxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsR0FBRyxJQUFJLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsTUFBTSxJQUFJLHdCQUF3QixDQUFDLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUV4RyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUMsQ0FBQztZQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxDQUFDO1lBQy9DLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxJQUFJLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksVUFBVSxJQUFJLENBQUMsYUFBYSxJQUFJLFNBQVMsQ0FBQyxFQUFFO2dCQUM1QywyQ0FBMkM7Z0JBQzNDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ1osSUFBSSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztvQkFDdEUsSUFBSSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxDQUFDO29CQUNuRCxJQUFJLENBQUMsa0JBQWtCLElBQUksY0FBYyxDQUFDLEVBQUU7d0JBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO3dCQUN2QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO3FCQUNuQzt5QkFBTTt3QkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7d0JBQy9DLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztxQkFDMUI7Z0JBQ0wsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQ1g7aUJBQU07Z0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDNUIsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsd0JBQXdCLENBQUMsR0FBRyxDQUFDO2dCQUNuRyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO29CQUMzQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7aUJBQzFCO2FBQ0o7UUFDTCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQsY0FBYyxDQUFDLEVBQUU7UUFDYixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQXlCO1FBQzVCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNyRCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ3pGO2FBQU07WUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNoRjtJQUNMLENBQUM7OzRHQWpMUSxlQUFlO2dHQUFmLGVBQWUscUpDZjVCLGk3RUFvREEsZzhFRHZDZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDOzJGQUU3QyxlQUFlO2tCQUwzQixTQUFTOytCQUNJLFdBQVcsY0FFVCxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7Mk9BRzdDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENka0RyYWdEcm9wIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBXaXppQmxvY2tTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd2l6aS1ibG9jay5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uc0R0byB9IGZyb20gJy4uLy4uL2R0b3MvY29uZmlncy90cmFuc2xhdGlvbnMvdHJhbnNsYXRpb25zLmR0byc7XG5pbXBvcnQgeyBhbmltYXRlTGlzdEZyb21MZWZ0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FuaW1hdGlvbnMvbGlzdC9hbmltYXRlLWxpc3QtZnJvbS1sZWZ0LmFuaW1hdGlvbic7XG5pbXBvcnQgeyBDb250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWxzL2NvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbHMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgRk9STV9OQU1FX1dJRFRIX0JMT0NLIH0gZnJvbSAnLi4vLi4vZHRvcy9mb3Jtcy9mb3Jtcy5kdG8nO1xuaW1wb3J0IHsgRXh0ZXJuYWxDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbHMvZXh0ZXJuYWwtY29uZmlnLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3diLWJsb2NrcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Jsb2Nrcy5jb21wb25lbnQuaHRtbCcsXG4gICAgYW5pbWF0aW9uczogW2FuaW1hdGVMaXN0RnJvbUxlZnQoJzEwMG1zIGVhc2UtaW4tb3V0JyldXG59KVxuZXhwb3J0IGNsYXNzIEJsb2Nrc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgY29udGVudHM6IEFycmF5PGFueT4gPSBbXTtcbiAgICBASW5wdXQoKSBkeW5hbWljSGlkZGVuID0gW107XG4gICAgQElucHV0KCkgc2VsZWN0ZWRDb25maWc6IGFueTtcblxuICAgIGhpZGVDb25maWcgPSBmYWxzZTtcblxuICAgIHRyYW5zbGF0aW9uOiBUcmFuc2xhdGlvbnNEdG87XG5cbiAgICBwcmV2aWV3OiBib29sZWFuO1xuXG4gICAgYmxvY2tIb3ZlciA9IGZhbHNlO1xuXG4gICAgY29uZmlnQWN0aXZlID0gZmFsc2U7XG5cbiAgICBwYXJzZWRDb250ZW50ID0gW107XG5cbiAgICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGFsbFdpemlibG9ja3NMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHdpemlCbG9ja1NlcnZpY2U6IFdpemlCbG9ja1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgcHJpdmF0ZSBjb250ZW50U2VydmljZTogQ29udGVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBleHRlcm5hbENvbmZpZ1NlcnZpY2U6IEV4dGVybmFsQ29uZmlnU2VydmljZVxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uID0gdGhpcy53aXppQmxvY2tTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZ1Nob3dFdmVudCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhpZGVDb25maWcgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0SGlkZUNvbmZpZygpIHtcbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWcgPSAhdGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWc7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZykge1xuICAgICAgICAgICAgdGhpcy5wYXJzZWRDb250ZW50ID0gdGhpcy5jb250ZW50U2VydmljZS5nZXRQYXJzZWRDb250ZW50KCk7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2hIb3ZlcihldmVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgICAgIHRoaXMuY29uZmlnQWN0aXZlID0gZXZlbnQ7XG4gICAgfVxuXG4gICAgYWRkVGhpcyhpbmRleCwgdHlwZSkge1xuICAgICAgICB0aGlzLndpemlCbG9ja1NlcnZpY2UuZ2V0QmxvY2tzU2VydmljZSgpLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgICAgIGlmICh2LnR5cGUoKSA9PT0gdHlwZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygdi5nZXRGb3JtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VEdG8gPSB2LmdldEZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VEdG8udHlwZSA9IHYudHlwZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5zZXRDb250ZW50c1dpdGhJbmRleChpbmRleCwgYmFzZUR0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZUR0by5mb3Jtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnID0gYmFzZUR0bztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5oaWRlQ29uZmlnID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZFRoaXNTZWxlY3RlZChzZWxlY3RlZCwgdmVyYm9zZSkge1xuICAgICAgICB0aGlzLndpemlCbG9ja1NlcnZpY2UuZ2V0QmxvY2tzU2VydmljZSgpLmZvckVhY2goKHYpID0+IHtcbiAgICAgICAgICAgIGlmICh2LnR5cGUoKSA9PT0gc2VsZWN0ZWQudHlwZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygdi5nZXRGb3JtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VEdG8gPSB2LmdldEZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmV4dGVybmFsQ29uZmlnU2VydmljZS5nZXRXaWR0aEJsb2NrKCkgIT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlRHRvLmZvcm1zLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuaWQgPT0gRk9STV9OQU1FX1dJRFRIX0JMT0NLKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnZhbHVlID0gdGhpcy5leHRlcm5hbENvbmZpZ1NlcnZpY2UuZ2V0V2lkdGhCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VEdG8udHlwZSA9IHYudHlwZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5zZXRDb250ZW50cyhiYXNlRHRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ29Ub0xhc3RFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8uZm9ybXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IGJhc2VEdG87XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQWRkIGEgY29udGVudCcsIGJhc2VEdG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdEdG8gZm9yIGNvbXBvbmVudCAnICsgdi50eXBlKCkgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Zvcm0gZm9yIGNvbXBvbmVudCAnICsgdi50eXBlKCkgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnb1RvTGFzdEVsZW1lbnQoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmFsbFdpemlibG9ja3NMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB3aXppYmxvY2tzTGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3diLWJsb2Nrc19fY29udGFpbmVyJyk7XG4gICAgICAgICAgICBjb25zdCBjaGlsZEVsZW1lbnQgPSAod2l6aWJsb2Nrc0xpc3Rbd2l6aWJsb2Nrc0xpc3QubGVuZ3RoIC0gMV0pIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3diLWNvbnRlbnQnKVswXS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQnKVswXSkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRWaWV3YWJsZUFyZWEgPSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBwYXJlbnQuY2xpZW50SGVpZ2h0LFxuICAgICAgICAgICAgICAgIHdpZHRoOiBwYXJlbnQuY2xpZW50V2lkdGhcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhcmVudEJvdW5kaW5nQ2xpZW50UmVjdCA9IHBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkQm91bmRpbmdDbGllbnRSZWN0ID0gY2hpbGRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgdmFyIGlzVmlld2FibGUgPSAoY2hpbGRCb3VuZGluZ0NsaWVudFJlY3QudG9wID49IHBhcmVudEJvdW5kaW5nQ2xpZW50UmVjdC50b3ApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGNoaWxkQm91bmRpbmdDbGllbnRSZWN0LmJvdHRvbSA8PSBwYXJlbnRCb3VuZGluZ0NsaWVudFJlY3QudG9wICsgcGFyZW50Vmlld2FibGVBcmVhLmhlaWdodCk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2Nyb2xsID0gcGFyZW50LnNjcm9sbFRvcCArIHBhcmVudFZpZXdhYmxlQXJlYS5oZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBtYXhIZWlnaHRFbGVtZW50ID0gKHBhcmVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyJylbMF0pIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gbWF4SGVpZ2h0RWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnaXMgdmlld2FibGUgPycpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NoaWxkIHRvcCAnICsgY2hpbGRCb3VuZGluZ0NsaWVudFJlY3QudG9wKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjaGlsZCBib3R0b20gJyArIGNoaWxkQm91bmRpbmdDbGllbnRSZWN0LmJvdHRvbSlcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwYXJlbnQgdG9wICcgKyBwYXJlbnRCb3VuZGluZ0NsaWVudFJlY3QudG9wKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdwYXJlbnQgaGVpZ2h0ICcgKyBwYXJlbnRWaWV3YWJsZUFyZWEuaGVpZ2h0KTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoaWxkQm91bmRpbmdDbGllbnRSZWN0LnRvcCA+PSBwYXJlbnRCb3VuZGluZ0NsaWVudFJlY3QudG9wKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoaWxkQm91bmRpbmdDbGllbnRSZWN0LmJvdHRvbSA8PSBwYXJlbnRCb3VuZGluZ0NsaWVudFJlY3QudG9wICsgcGFyZW50Vmlld2FibGVBcmVhLmhlaWdodCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdtYXhIZWlnaHQgJyArIG1heEhlaWdodCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY3VycmVudCBzY3JvbGwgJyArIGN1cnJlbnRTY3JvbGwpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coY3VycmVudFNjcm9sbCA+PSBtYXhIZWlnaHQpO1xuICAgICAgICAgICAgaWYgKGlzVmlld2FibGUgfHwgKGN1cnJlbnRTY3JvbGwgPj0gbWF4SGVpZ2h0KSkge1xuICAgICAgICAgICAgICAgIC8vIFNlY29uZCBjaGVjayBpZiBsYXN0IGVsZW1lbnQgaXMgdmlld2FibGVcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNoZWNrQ3VycmVudFNjcm9sbCA9IHBhcmVudC5zY3JvbGxUb3AgKyBwYXJlbnRWaWV3YWJsZUFyZWEuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICBsZXQgY2hlY2tNYXhIZWlnaHQgPSBtYXhIZWlnaHRFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChjaGVja0N1cnJlbnRTY3JvbGwgPj0gY2hlY2tNYXhIZWlnaHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygndmlld2FibGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbFdpemlibG9ja3NMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ25vdCB2aWV3YWJsZSBhZnRlciBzZWNvbmQgY2hlY2snKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ29Ub0xhc3RFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbm90IHZpZXdhYmxlJyk7XG4gICAgICAgICAgICAgICAgcGFyZW50LnNjcm9sbFRvcCA9IChjaGlsZEJvdW5kaW5nQ2xpZW50UmVjdC50b3AgKyBwYXJlbnQuc2Nyb2xsVG9wKSAtIHBhcmVudEJvdW5kaW5nQ2xpZW50UmVjdC50b3A7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmFsbFdpemlibG9ja3NMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nb1RvTGFzdEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDI1MCk7XG4gICAgfVxuXG4gICAgaXNIaWRkZW5CTG9ja3MoaWQpIHtcbiAgICAgICAgaWYgKHRoaXMuZHluYW1pY0hpZGRlbi5pbmNsdWRlcyhpZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPikge1xuICAgICAgICBpZiAoZXZlbnQuaXRlbS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFRoaXMoZXZlbnQuY3VycmVudEluZGV4LCBldmVudC5pdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50U2VydmljZS5yZW9yZGVyQ29udGVudHMoZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cIndiLWJsb2Nrc1wiXG4gICAgY2RrRHJvcExpc3RcbiAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICBpZD1cImJsb2NrLWNvbnRlbnRcIlxuICAgICpuZ0lmPVwiY29udGVudHMubGVuZ3RoID4gMFwiXG4gICAgW0BhbmltYXRlTGlzdEZyb21MZWZ0XT1cImNvbnRlbnRzLmxlbmd0aFwiXG4gICAgW25nQ2xhc3NdPVwieyBob3ZlcjogYmxvY2tIb3ZlciB9XCJcbj5cbiAgICA8YVxuICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1oaWRkZW4tYnV0dG9uIGlzLWRhbmdlciBpcy1yb3VuZGVkIGlzLXRvb2x0aXAtaW5mb1wiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWRhbmdlcic6IGhpZGVDb25maWcsICdpcy1kYXJrIGlzLW91dGxpbmVkJzogIWhpZGVDb25maWcgfVwiXG4gICAgICAgIChjbGljayk9XCJzZXRIaWRlQ29uZmlnKClcIlxuICAgICAgICBbbndiVG9vbFRpcF09XCIoIWhpZGVDb25maWcgPyAnd2IuYmxvY2tzLmh0bWwuMScgOiAnd2IuYmxvY2tzLmh0bWwuMicpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgbndiVG9vbFRpcFBvc2l0aW9uPVwibGVmdFwiXG4gICAgICAgID48aSBjbGFzcz1cImZhbCBmYS1leWVcIiAqbmdJZj1cIiFoaWRlQ29uZmlnXCI+PC9pPjxpIGNsYXNzPVwiZmFsIGZhLWV5ZS1zbGFzaFwiICpuZ0lmPVwiaGlkZUNvbmZpZ1wiPjwvaVxuICAgID48L2E+XG4gICAgPHdiLXByZXZpZXdzIFtjb250ZW50c109XCJwYXJzZWRDb250ZW50XCIgKm5nSWY9XCJwcmV2aWV3ICYmIGhpZGVDb25maWdcIj48L3diLXByZXZpZXdzPlxuICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgI3ZpcnR1YWxTY3JvbGwgYXBwZW5kT25seSBhdXRvc2l6ZSBtaW5CdWZmZXJQeD1cIjBcIiBtYXhCdWZmZXJQeD1cIjEwMDBcIiAqbmdJZj1cIiFwcmV2aWV3XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Yi1ibG9ja3NfX2NvbnRhaW5lclwiICpjZGtWaXJ0dWFsRm9yPVwibGV0IGNvbnRlbnQgb2YgY29udGVudHNcIiBjZGtEcmFnPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwid2ItY29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICdpcy1pbmFjdGl2ZSc6IGhpZGVDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICdib3JkZXItZ3JleSc6IGlzSGlkZGVuQkxvY2tzKGNvbnRlbnQuYmxvY2sudXVpZCksXG4gICAgICAgICAgICAgICAgICAgICdib3JkZXItYmx1ZSc6IHNlbGVjdGVkQ29uZmlnID09PSBjb250ZW50LmJsb2NrLnV1aWRcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8d2Itc3RydWN0dXJlLXRvb2xzXG4gICAgICAgICAgICAgICAgICAgIFtkeW5hbWljSGlkZGVuU3RydWN0dXJlXT1cImlzSGlkZGVuQkxvY2tzKGNvbnRlbnQuYmxvY2sudXVpZClcIlxuICAgICAgICAgICAgICAgICAgICBbdXVpZF09XCJjb250ZW50LmJsb2NrLnV1aWRcIlxuICAgICAgICAgICAgICAgICAgICBbaXNIb3Zlcl09XCJibG9ja0hvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzQWx3YXlzSG92ZXJdPVwic2VsZWN0ZWRDb25maWcgPT09IGNvbnRlbnQuYmxvY2sudXVpZFwiXG4gICAgICAgICAgICAgICAgICAgIChjb25maWdJc0FjdGl2YXRlZCk9XCJzd2l0Y2hIb3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgICAgID48L3diLXN0cnVjdHVyZS10b29scz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItY29tcG9uZW50X19jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHdiLWNvbnRhaW5lci1ibG9jayBbY29udGVudF09XCJjb250ZW50XCI+PC93Yi1jb250YWluZXItYmxvY2s+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gICAgPGRpdiBjbGFzcz1cIndiLWJsb2Nrc19fbG9hZGVyXCIgKm5nSWY9XCJpc0xvYWRpbmdcIj5cbiAgICAgICAgPHdiLWxvYWRlciBbbmdDbGFzc109XCJ7ICdpcy1hY3RpdmUnOiBpc0xvYWRpbmcgfVwiPjwvd2ItbG9hZGVyPlxuICAgICAgICA8cD57eyAnd2IubG9hZGluZycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3Yi1ibG9ja3MtZW1wdHlcIiAqbmdJZj1cImNvbnRlbnRzLmxlbmd0aCA9PT0gMFwiPlxuICAgIDxpbWcgc3JjPVwiYXNzZXRzL2Jsb2Nrcy9pbWFnZXMvaWNvbnMvSWNvbl9EcmFnLnN2Z1wiIC8+XG4gICAgPHA+e3sgdHJhbnNsYXRpb24uc2VsZWN0X2NvbXBvbmVudCB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICA8cD57eyB0cmFuc2xhdGlvbi5kb2NfY29tcG9uZW50IHwgdHJhbnNsYXRlIH19PC9wPlxuPC9kaXY+XG4iXX0=
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemktYmxvY2svc3JjL2xpYi9jb21wb25lbnRzL2Jsb2Nrcy9ibG9ja3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL2NvbXBvbmVudHMvYmxvY2tzL2Jsb2Nrcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNwRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBT3JGLE1BQU0sT0FBTyxlQUFlO0lBaUJ4QixZQUNZLGdCQUFrQyxFQUNsQyxRQUFrQyxFQUNsQyxjQUE4QixFQUM5QixhQUE0QixFQUM1QixxQkFBNEM7UUFKNUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUNsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXJCL0MsYUFBUSxHQUFlLEVBQUUsQ0FBQztRQUMxQixrQkFBYSxHQUFHLEVBQUUsQ0FB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LENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUN6RjthQUFNO1lBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDaEY7SUFDTCxDQUFDOzs0R0FwSFEsZUFBZTtnR0FBZixlQUFlLHFKQ2Y1Qiw2K0RBOENBLGkrRERqQ2dCLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsQ0FBQzsyRkFFN0MsZUFBZTtrQkFMM0IsU0FBUzsrQkFDSSxXQUFXLGNBRVQsQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDOzJPQUc3QyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZGtEcmFnRHJvcCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgV2l6aUJsb2NrU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dpemktYmxvY2suc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGlvbnNEdG8gfSBmcm9tICcuLi8uLi9kdG9zL2NvbmZpZ3MvdHJhbnNsYXRpb25zL3RyYW5zbGF0aW9ucy5kdG8nO1xuaW1wb3J0IHsgYW5pbWF0ZUxpc3RGcm9tTGVmdCB9IGZyb20gJy4uLy4uL3NoYXJlZC9hbmltYXRpb25zL2xpc3QvYW5pbWF0ZS1saXN0LWZyb20tbGVmdC5hbmltYXRpb24nO1xuaW1wb3J0IHsgQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlscy9jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWxzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEZPUk1fTkFNRV9XSURUSF9CTE9DSyB9IGZyb20gJy4uLy4uL2R0b3MvZm9ybXMvZm9ybXMuZHRvJztcbmltcG9ydCB7IEV4dGVybmFsQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3V0aWxzL2V4dGVybmFsLWNvbmZpZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd3Yi1ibG9ja3MnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ibG9ja3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIGFuaW1hdGlvbnM6IFthbmltYXRlTGlzdEZyb21MZWZ0KCcxMDBtcyBlYXNlLWluLW91dCcpXVxufSlcbmV4cG9ydCBjbGFzcyBCbG9ja3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGNvbnRlbnRzOiBBcnJheTxhbnk+ID0gW107XG4gICAgQElucHV0KCkgZHluYW1pY0hpZGRlbiA9IFtdO1xuICAgIEBJbnB1dCgpIHNlbGVjdGVkQ29uZmlnOiBhbnk7XG5cbiAgICBoaWRlQ29uZmlnID0gZmFsc2U7XG5cbiAgICB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb25zRHRvO1xuXG4gICAgcHJldmlldzogYm9vbGVhbjtcblxuICAgIGJsb2NrSG92ZXIgPSBmYWxzZTtcblxuICAgIGNvbmZpZ0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgcGFyc2VkQ29udGVudCA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgd2l6aUJsb2NrU2VydmljZTogV2l6aUJsb2NrU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBwcml2YXRlIGNvbnRlbnRTZXJ2aWNlOiBDb250ZW50U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGV4dGVybmFsQ29uZmlnU2VydmljZTogRXh0ZXJuYWxDb25maWdTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb24gPSB0aGlzLndpemlCbG9ja1NlcnZpY2UuZ2V0VHJhbnNsYXRpb24oKTtcblxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnU2hvd0V2ZW50KCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGlkZUNvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS5oaWRlQ29uZmlnO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRIaWRlQ29uZmlnKCkge1xuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZyA9ICF0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZztcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5oaWRlQ29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlZENvbnRlbnQgPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmdldFBhcnNlZENvbnRlbnQoKTtcbiAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaEhvdmVyKGV2ZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgICAgICAgdGhpcy5jb25maWdBY3RpdmUgPSBldmVudDtcbiAgICB9XG5cbiAgICBhZGRUaGlzKGluZGV4LCB0eXBlKSB7XG4gICAgICAgIHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRCbG9ja3NTZXJ2aWNlKCkuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgaWYgKHYudHlwZSgpID09PSB0eXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2LmdldEZvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZUR0byA9IHYuZ2V0Rm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZUR0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUR0by50eXBlID0gdi50eXBlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLnNldENvbnRlbnRzV2l0aEluZGV4KGluZGV4LCBiYXNlRHRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlRHRvLmZvcm1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgPSBiYXNlRHRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkVGhpc1NlbGVjdGVkKHNlbGVjdGVkLCB2ZXJib3NlKSB7XG4gICAgICAgIHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRCbG9ja3NTZXJ2aWNlKCkuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgaWYgKHYudHlwZSgpID09PSBzZWxlY3RlZC50eXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2LmdldEZvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZUR0byA9IHYuZ2V0Rm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZUR0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxDb25maWdTZXJ2aWNlLmdldFdpZHRoQmxvY2soKSAhPSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VEdG8uZm9ybXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5pZCA9PSBGT1JNX05BTUVfV0lEVEhfQkxPQ0spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSB0aGlzLmV4dGVybmFsQ29uZmlnU2VydmljZS5nZXRXaWR0aEJsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUR0by50eXBlID0gdi50eXBlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLnNldENvbnRlbnRzKGJhc2VEdG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8uZm9ybXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IGJhc2VEdG87XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQWRkIGEgY29udGVudCcsIGJhc2VEdG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdEdG8gZm9yIGNvbXBvbmVudCAnICsgdi50eXBlKCkgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Zvcm0gZm9yIGNvbXBvbmVudCAnICsgdi50eXBlKCkgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpc0hpZGRlbkJMb2NrcyhpZCkge1xuICAgICAgICBpZiAodGhpcy5keW5hbWljSGlkZGVuLmluY2x1ZGVzKGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG9uRHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8YW55W10+KSB7XG4gICAgICAgIGlmIChldmVudC5pdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkVGhpcyhldmVudC5jdXJyZW50SW5kZXgsIGV2ZW50Lml0ZW0uZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnaWQnKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLnJlb3JkZXJDb250ZW50cyhldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwid2ItYmxvY2tzXCJcbiAgICBjZGtEcm9wTGlzdFxuICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wKCRldmVudClcIlxuICAgIGlkPVwiYmxvY2stY29udGVudFwiXG4gICAgKm5nSWY9XCJjb250ZW50cy5sZW5ndGggPiAwXCJcbiAgICBbQGFuaW1hdGVMaXN0RnJvbUxlZnRdPVwiY29udGVudHMubGVuZ3RoXCJcbiAgICBbbmdDbGFzc109XCJ7IGhvdmVyOiBibG9ja0hvdmVyIH1cIlxuPlxuICAgIDxhXG4gICAgICAgIGNsYXNzPVwiYnV0dG9uIGlzLWhpZGRlbi1idXR0b24gaXMtZGFuZ2VyIGlzLXJvdW5kZWQgaXMtdG9vbHRpcC1pbmZvXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtZGFuZ2VyJzogaGlkZUNvbmZpZywgJ2lzLWRhcmsgaXMtb3V0bGluZWQnOiAhaGlkZUNvbmZpZyB9XCJcbiAgICAgICAgKGNsaWNrKT1cInNldEhpZGVDb25maWcoKVwiXG4gICAgICAgIFtud2JUb29sVGlwXT1cIighaGlkZUNvbmZpZyA/ICd3Yi5ibG9ja3MuaHRtbC4xJyA6ICd3Yi5ibG9ja3MuaHRtbC4yJykgfCB0cmFuc2xhdGVcIlxuICAgICAgICBud2JUb29sVGlwUG9zaXRpb249XCJsZWZ0XCJcbiAgICAgICAgPjxpIGNsYXNzPVwiZmFsIGZhLWV5ZVwiICpuZ0lmPVwiIWhpZGVDb25maWdcIj48L2k+PGkgY2xhc3M9XCJmYWwgZmEtZXllLXNsYXNoXCIgKm5nSWY9XCJoaWRlQ29uZmlnXCI+PC9pXG4gICAgPjwvYT5cbiAgICA8d2ItcHJldmlld3MgW2NvbnRlbnRzXT1cInBhcnNlZENvbnRlbnRcIiAqbmdJZj1cInByZXZpZXcgJiYgaGlkZUNvbmZpZ1wiPjwvd2ItcHJldmlld3M+XG4gICAgPGRpdiBjbGFzcz1cIndiLWJsb2Nrc19fY29udGFpbmVyXCIgKm5nRm9yPVwibGV0IGNvbnRlbnQgb2YgY29udGVudHNcIiBjZGtEcmFnPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIndiLWNvbXBvbmVudFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2lzLWluYWN0aXZlJzogaGlkZUNvbmZpZyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWdyZXknOiBpc0hpZGRlbkJMb2Nrcyhjb250ZW50LmJsb2NrLnV1aWQpLFxuICAgICAgICAgICAgICAgICdib3JkZXItYmx1ZSc6IHNlbGVjdGVkQ29uZmlnID09PSBjb250ZW50LmJsb2NrLnV1aWRcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8d2Itc3RydWN0dXJlLXRvb2xzXG4gICAgICAgICAgICAgICAgW2R5bmFtaWNIaWRkZW5TdHJ1Y3R1cmVdPVwiaXNIaWRkZW5CTG9ja3MoY29udGVudC5ibG9jay51dWlkKVwiXG4gICAgICAgICAgICAgICAgW3V1aWRdPVwiY29udGVudC5ibG9jay51dWlkXCJcbiAgICAgICAgICAgICAgICBbaXNIb3Zlcl09XCJibG9ja0hvdmVyXCJcbiAgICAgICAgICAgICAgICBbaXNBbHdheXNIb3Zlcl09XCJzZWxlY3RlZENvbmZpZyA9PT0gY29udGVudC5ibG9jay51dWlkXCJcbiAgICAgICAgICAgICAgICAoY29uZmlnSXNBY3RpdmF0ZWQpPVwic3dpdGNoSG92ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgPjwvd2Itc3RydWN0dXJlLXRvb2xzPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbXBvbmVudF9fY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPHdiLWNvbnRhaW5lci1ibG9jayBbY29udGVudF09XCJjb250ZW50XCI+PC93Yi1jb250YWluZXItYmxvY2s+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3Yi1ibG9ja3MtZW1wdHlcIiAqbmdJZj1cImNvbnRlbnRzLmxlbmd0aCA9PT0gMFwiPlxuICAgIDxpbWcgc3JjPVwiYXNzZXRzL2Jsb2Nrcy9pbWFnZXMvaWNvbnMvSWNvbl9EcmFnLnN2Z1wiIC8+XG4gICAgPHA+e3sgdHJhbnNsYXRpb24uc2VsZWN0X2NvbXBvbmVudCB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICA8cD57eyB0cmFuc2xhdGlvbi5kb2NfY29tcG9uZW50IHwgdHJhbnNsYXRlIH19PC9wPlxuPC9kaXY+XG4iXX0=
|
|
@@ -8,8 +8,6 @@ import { PreviewsComponent } from './previews/previews.component';
|
|
|
8
8
|
import { NwbAllModule } from '@wizishop/ng-wizi-bulma';
|
|
9
9
|
import { ContainerBlockComponent } from './container-block/container-block.component';
|
|
10
10
|
import { TranslateModule } from '@ngx-translate/core';
|
|
11
|
-
import { ScrollingModule as ExperimentalScrollingModule } from '@angular/cdk-experimental/scrolling';
|
|
12
|
-
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
13
11
|
import * as i0 from "@angular/core";
|
|
14
12
|
import * as i1 from "@ngx-translate/core";
|
|
15
13
|
const components = [BlocksComponent, ConfigsComponent, PreviewsComponent, ContainerBlockComponent];
|
|
@@ -19,15 +17,12 @@ ComponentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version
|
|
|
19
17
|
ComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: ComponentsModule, declarations: [BlocksComponent, ConfigsComponent, PreviewsComponent, ContainerBlockComponent], imports: [SharedModule,
|
|
20
18
|
StructuresModule,
|
|
21
19
|
NwbAllModule,
|
|
22
|
-
ColorPickerModule, i1.TranslateModule,
|
|
23
|
-
ExperimentalScrollingModule], exports: [BlocksComponent, ConfigsComponent, PreviewsComponent, ContainerBlockComponent] });
|
|
20
|
+
ColorPickerModule, i1.TranslateModule], exports: [BlocksComponent, ConfigsComponent, PreviewsComponent, ContainerBlockComponent] });
|
|
24
21
|
ComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ComponentsModule, imports: [SharedModule,
|
|
25
22
|
StructuresModule,
|
|
26
23
|
NwbAllModule,
|
|
27
24
|
ColorPickerModule,
|
|
28
|
-
TranslateModule.forChild()
|
|
29
|
-
ScrollingModule,
|
|
30
|
-
ExperimentalScrollingModule] });
|
|
25
|
+
TranslateModule.forChild()] });
|
|
31
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ComponentsModule, decorators: [{
|
|
32
27
|
type: NgModule,
|
|
33
28
|
args: [{
|
|
@@ -38,10 +33,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
38
33
|
NwbAllModule,
|
|
39
34
|
ColorPickerModule,
|
|
40
35
|
TranslateModule.forChild(),
|
|
41
|
-
ScrollingModule,
|
|
42
|
-
ExperimentalScrollingModule
|
|
43
36
|
],
|
|
44
37
|
exports: components,
|
|
45
38
|
}]
|
|
46
39
|
}] });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy9saWIvY29tcG9uZW50cy9jb21wb25lbnRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBRXRELE1BQU0sVUFBVSxHQUFHLENBQUMsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixDQUFDLENBQUM7QUFhbkcsTUFBTSxPQUFPLGdCQUFnQjs7NkdBQWhCLGdCQUFnQjs4R0FBaEIsZ0JBQWdCLGlCQWJULGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsYUFLekYsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixZQUFZO1FBQ1osaUJBQWlCLGlDQVJMLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUI7OEdBYXBGLGdCQUFnQixZQVJyQixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixpQkFBaUI7UUFDakIsZUFBZSxDQUFDLFFBQVEsRUFBRTsyRkFJckIsZ0JBQWdCO2tCQVg1QixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxVQUFVO29CQUN4QixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixlQUFlLENBQUMsUUFBUSxFQUFFO3FCQUM3QjtvQkFDRCxPQUFPLEVBQUUsVUFBVTtpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NoYXJlZC5tb2R1bGUnO1xuaW1wb3J0IHsgQmxvY2tzQ29tcG9uZW50IH0gZnJvbSAnLi9ibG9ja3MvYmxvY2tzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdHJ1Y3R1cmVzTW9kdWxlIH0gZnJvbSAnLi4vc3RydWN0dXJlcy9zdHJ1Y3R1cmVzLm1vZHVsZSc7XG5pbXBvcnQgeyBDb25maWdzQ29tcG9uZW50IH0gZnJvbSAnLi9jb25maWdzL2NvbmZpZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IENvbG9yUGlja2VyTW9kdWxlIH0gZnJvbSAnbmd4LWNvbG9yLXBpY2tlcic7XG5pbXBvcnQgeyBQcmV2aWV3c0NvbXBvbmVudCB9IGZyb20gJy4vcHJldmlld3MvcHJldmlld3MuY29tcG9uZW50JztcbmltcG9ydCB7IE53YkFsbE1vZHVsZSB9IGZyb20gJ0B3aXppc2hvcC9uZy13aXppLWJ1bG1hJztcbmltcG9ydCB7IENvbnRhaW5lckJsb2NrQ29tcG9uZW50IH0gZnJvbSAnLi9jb250YWluZXItYmxvY2svY29udGFpbmVyLWJsb2NrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuY29uc3QgY29tcG9uZW50cyA9IFtCbG9ja3NDb21wb25lbnQsIENvbmZpZ3NDb21wb25lbnQsIFByZXZpZXdzQ29tcG9uZW50LCBDb250YWluZXJCbG9ja0NvbXBvbmVudF07XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBjb21wb25lbnRzLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgU2hhcmVkTW9kdWxlLFxuICAgICAgICBTdHJ1Y3R1cmVzTW9kdWxlLFxuICAgICAgICBOd2JBbGxNb2R1bGUsXG4gICAgICAgIENvbG9yUGlja2VyTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoKSxcbiAgICBdLFxuICAgIGV4cG9ydHM6IGNvbXBvbmVudHMsXG59KVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudHNNb2R1bGUge31cbiJdfQ==
|
|
@@ -17,19 +17,16 @@ export class ContentService {
|
|
|
17
17
|
this.contentsSource.next();
|
|
18
18
|
}
|
|
19
19
|
setContents(value) {
|
|
20
|
-
this._contents
|
|
20
|
+
this._contents.push(value);
|
|
21
21
|
this.contentsSource.next();
|
|
22
|
+
this.goToLastElement();
|
|
22
23
|
}
|
|
23
24
|
setContentsWithIndex(index, value) {
|
|
24
|
-
|
|
25
|
-
cloneArray.splice(index, 0, value);
|
|
26
|
-
this._contents = cloneArray;
|
|
25
|
+
this._contents.splice(index, 0, value);
|
|
27
26
|
this.contentsSource.next();
|
|
28
27
|
}
|
|
29
28
|
reorderContents(previousIndex, currentIndex) {
|
|
30
|
-
|
|
31
|
-
moveItemInArray(cloneArray, previousIndex, currentIndex);
|
|
32
|
-
this._contents = cloneArray;
|
|
29
|
+
moveItemInArray(this._contents, previousIndex, currentIndex);
|
|
33
30
|
this.contentsSource.next();
|
|
34
31
|
}
|
|
35
32
|
getContentByUUID(uuid) {
|
|
@@ -59,9 +56,7 @@ export class ContentService {
|
|
|
59
56
|
if (keyToCopy !== null) {
|
|
60
57
|
const toCopy = this.deepCopy(this._contents[keyToCopy]);
|
|
61
58
|
toCopy.block.uuid = uuidV4();
|
|
62
|
-
|
|
63
|
-
cloneArray.splice(keyToCopy + 1, 0, toCopy);
|
|
64
|
-
this._contents = cloneArray;
|
|
59
|
+
this._contents.splice(keyToCopy + 1, 0, toCopy);
|
|
65
60
|
}
|
|
66
61
|
this.contentsSource.next();
|
|
67
62
|
}
|
|
@@ -88,6 +83,12 @@ export class ContentService {
|
|
|
88
83
|
});
|
|
89
84
|
return content;
|
|
90
85
|
}
|
|
86
|
+
goToLastElement() {
|
|
87
|
+
setTimeout(() => {
|
|
88
|
+
const el = document.getElementById('wb-footer__block');
|
|
89
|
+
el.scrollIntoView({ behavior: 'smooth', block: 'end', inline: 'nearest' });
|
|
90
|
+
}, 400);
|
|
91
|
+
}
|
|
91
92
|
deepCopy(obj) {
|
|
92
93
|
let copy;
|
|
93
94
|
if (null == obj || 'object' !== typeof obj) {
|
|
@@ -122,4 +123,4 @@ ContentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", versi
|
|
|
122
123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ContentService, decorators: [{
|
|
123
124
|
type: Injectable
|
|
124
125
|
}] });
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL3NlcnZpY2VzL3V0aWxzL2NvbnRlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3pELE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUdwQyxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUdZLGNBQVMsR0FBK0IsRUFBRSxDQUFDO1FBRTNDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVyQyxpQkFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7S0EwSTdEO0lBeElHLElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBaUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQUssRUFBRSxLQUFLO1FBQzdCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQztRQUU1QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxlQUFlLENBQUMsYUFBYSxFQUFFLFlBQVk7UUFDdkMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsZUFBZSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7UUFFNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBSTtRQUNqQixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDdkMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0I7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBSSxFQUFFLFVBQVU7UUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7YUFDbEM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELHNCQUFzQixDQUFDLElBQUk7UUFDdkIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNqRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQzNDLFNBQVMsR0FBRyxLQUFLLENBQUM7YUFDckI7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksU0FBUyxLQUFLLElBQUksRUFBRTtZQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN4RCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUU3QixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO1NBQy9CO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBSTtRQUNwQixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDcEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDdkMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFNBQVM7UUFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBRW5CLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFHO1FBQ1IsSUFBSSxJQUFJLENBQUM7UUFFVCxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksUUFBUSxLQUFLLE9BQU8sR0FBRyxFQUFFO1lBQ3hDLE9BQU8sR0FBRyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLEdBQUcsWUFBWSxJQUFJLEVBQUU7WUFDckIsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUM1QixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsSUFBSSxHQUFHLFlBQVksS0FBSyxFQUFFO1lBQ3RCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDVixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUM1QyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNuQztZQUNELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLEdBQUcsWUFBWSxNQUFNLEVBQUU7WUFDdkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNWLEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxFQUFFO2dCQUNwQixJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2lCQUN6QzthQUNKO1lBQ0QsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztJQUNuRSxDQUFDOzsyR0EvSVEsY0FBYzsrR0FBZCxjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IEZvcm1zRHRvIH0gZnJvbSAnLi4vLi4vZHRvcy9mb3Jtcy9mb3Jtcy5kdG8nO1xuaW1wb3J0IHsgUGFyZW50QmxvY2tEdG8gfSBmcm9tICcuLi8uLi9kdG9zL2Jsb2Nrcy9wYXJlbnQtYmxvY2suZHRvJztcbmltcG9ydCB7IHY0IGFzIHV1aWRWNCB9IGZyb20gJ3V1aWQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29udGVudFNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBfY29udGVudHM6IEZvcm1zRHRvPFBhcmVudEJsb2NrRHRvPltdID0gW107XG5cbiAgICBwcml2YXRlIGNvbnRlbnRzU291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgY29udGVudHNEb25lID0gdGhpcy5jb250ZW50c1NvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICAgIGdldCBjb250ZW50cygpOiBGb3Jtc0R0bzxQYXJlbnRCbG9ja0R0bz5bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50cztcbiAgICB9XG5cbiAgICBzZXQgY29udGVudHModmFsdWU6IEZvcm1zRHRvPFBhcmVudEJsb2NrRHRvPltdKSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRzID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5jb250ZW50c1NvdXJjZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgc2V0Q29udGVudHModmFsdWUpIHtcbiAgICAgICAgdGhpcy5fY29udGVudHMgPSBbLi4udGhpcy5fY29udGVudHMsIHZhbHVlXTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBzZXRDb250ZW50c1dpdGhJbmRleChpbmRleCwgdmFsdWUpIHtcbiAgICAgICAgbGV0IGNsb25lQXJyYXkgPSB0aGlzLl9jb250ZW50cy5zbGljZSgwKTtcbiAgICAgICAgY2xvbmVBcnJheS5zcGxpY2UoaW5kZXgsIDAsIHZhbHVlKTtcbiAgICAgICAgdGhpcy5fY29udGVudHMgPSBjbG9uZUFycmF5O1xuXG4gICAgICAgIHRoaXMuY29udGVudHNTb3VyY2UubmV4dCgpO1xuICAgIH1cblxuICAgIHJlb3JkZXJDb250ZW50cyhwcmV2aW91c0luZGV4LCBjdXJyZW50SW5kZXgpIHtcbiAgICAgICAgbGV0IGNsb25lQXJyYXkgPSB0aGlzLl9jb250ZW50cy5zbGljZSgwKTtcbiAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGNsb25lQXJyYXksIHByZXZpb3VzSW5kZXgsIGN1cnJlbnRJbmRleCk7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRzID0gY2xvbmVBcnJheTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBnZXRDb250ZW50QnlVVUlEKHV1aWQpIHtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSBudWxsO1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50cykubWFwKGsgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRzW2tdLmJsb2NrLnV1aWQgPT09IHV1aWQpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50ID0gdGhpcy5fY29udGVudHNba107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH1cblxuICAgIHVwZGF0ZUJ5VVVJRCh1dWlkLCBuZXdDb250ZW50KSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuX2NvbnRlbnRzKS5tYXAoayA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29udGVudHNba10uYmxvY2sudXVpZCA9PT0gdXVpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRzW2tdID0gbmV3Q29udGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb250ZW50c1NvdXJjZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgZHVwbGljYXRlQ29udGVudEJ5VVVJRCh1dWlkKSB7XG4gICAgICAgIGxldCBrZXlUb0NvcHkgPSBudWxsO1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50cykuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29udGVudHNbaW5kZXhdLmJsb2NrLnV1aWQgPT09IHV1aWQpIHtcbiAgICAgICAgICAgICAgICBrZXlUb0NvcHkgPSBpbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGtleVRvQ29weSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgdG9Db3B5ID0gdGhpcy5kZWVwQ29weSh0aGlzLl9jb250ZW50c1trZXlUb0NvcHldKTtcbiAgICAgICAgICAgIHRvQ29weS5ibG9jay51dWlkID0gdXVpZFY0KCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCBjbG9uZUFycmF5ID0gdGhpcy5fY29udGVudHMuc2xpY2UoMCk7XG4gICAgICAgICAgICBjbG9uZUFycmF5LnNwbGljZShrZXlUb0NvcHkgKyAxLCAwLCB0b0NvcHkpO1xuICAgICAgICAgICAgdGhpcy5fY29udGVudHMgPSBjbG9uZUFycmF5O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb250ZW50c1NvdXJjZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlQ29udGVudEJ5VVVJRCh1dWlkKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRzID0gW107XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuX2NvbnRlbnRzKS5tYXAoayA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29udGVudHNba10uYmxvY2sudXVpZCAhPT0gdXVpZCkge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRzLnB1c2godGhpcy5fY29udGVudHNba10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jb250ZW50cyA9IGNvbnRlbnRzO1xuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBkZWxldGVBbGwoKSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRzID0gW107XG4gICAgfVxuXG4gICAgY29udGVudEV2ZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50c0RvbmU7XG4gICAgfVxuXG4gICAgZ2V0UGFyc2VkQ29udGVudCgpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IFtdO1xuXG4gICAgICAgIHRoaXMuY29udGVudHMuZm9yRWFjaChmb3JtID0+IHtcbiAgICAgICAgICAgIGNvbnRlbnQucHVzaChmb3JtLmJsb2NrKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgZGVlcENvcHkob2JqKSB7XG4gICAgICAgIGxldCBjb3B5O1xuXG4gICAgICAgIGlmIChudWxsID09IG9iaiB8fCAnb2JqZWN0JyAhPT0gdHlwZW9mIG9iaikge1xuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICBjb3B5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIGNvcHkuc2V0VGltZShvYmouZ2V0VGltZSgpKTtcbiAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICBjb3B5ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gb2JqLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29weVtpXSA9IHRoaXMuZGVlcENvcHkob2JqW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICAgICAgY29weSA9IHt9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBhdHRyIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoYXR0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29weVthdHRyXSA9IHRoaXMuZGVlcENvcHkob2JqW2F0dHJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29weTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGNvcHkgb2JqISBJdHMgdHlwZSBub3Qgc3VwcG9ydGVkLicpO1xuICAgIH1cbn1cbiJdfQ==
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL3NlcnZpY2VzL3V0aWxzL2NvbnRlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3pELE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUdwQyxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUdZLGNBQVMsR0FBK0IsRUFBRSxDQUFDO1FBRTNDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVyQyxpQkFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7S0E4STdEO0lBNUlHLElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBaUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTNCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBSyxFQUFFLEtBQUs7UUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxF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QUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ25DO1lBQ0QsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELElBQUksR0FBRyxZQUFZLE1BQU0sRUFBRTtZQUN2QixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1YsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUU7Z0JBQ3BCLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQ3pDO2FBQ0o7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7OzJHQW5KUSxjQUFjOytHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRm9ybXNEdG8gfSBmcm9tICcuLi8uLi9kdG9zL2Zvcm1zL2Zvcm1zLmR0byc7XG5pbXBvcnQgeyBQYXJlbnRCbG9ja0R0byB9IGZyb20gJy4uLy4uL2R0b3MvYmxvY2tzL3BhcmVudC1ibG9jay5kdG8nO1xuaW1wb3J0IHsgdjQgYXMgdXVpZFY0IH0gZnJvbSAndXVpZCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb250ZW50U2VydmljZSB7XG5cbiAgICBwcml2YXRlIF9jb250ZW50czogRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+W10gPSBbXTtcblxuICAgIHByaXZhdGUgY29udGVudHNTb3VyY2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJpdmF0ZSBjb250ZW50c0RvbmUgPSB0aGlzLmNvbnRlbnRzU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgZ2V0IGNvbnRlbnRzKCk6IEZvcm1zRHRvPFBhcmVudEJsb2NrRHRvPltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRzO1xuICAgIH1cblxuICAgIHNldCBjb250ZW50cyh2YWx1ZTogRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+W10pIHtcbiAgICAgICAgdGhpcy5fY29udGVudHMgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBzZXRDb250ZW50cyh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9jb250ZW50cy5wdXNoKHZhbHVlKTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcblxuICAgICAgICB0aGlzLmdvVG9MYXN0RWxlbWVudCgpO1xuICAgIH1cblxuICAgIHNldENvbnRlbnRzV2l0aEluZGV4KGluZGV4LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLl9jb250ZW50cy5zcGxpY2UoaW5kZXgsIDAsIHZhbHVlKTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICByZW9yZGVyQ29udGVudHMocHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4KSB7XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLl9jb250ZW50cywgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4KTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBnZXRDb250ZW50QnlVVUlEKHV1aWQpIHtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSBudWxsO1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50cykubWFwKGsgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRzW2tdLmJsb2NrLnV1aWQgPT09IHV1aWQpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50ID0gdGhpcy5fY29udGVudHNba107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH1cblxuICAgIHVwZGF0ZUJ5VVVJRCh1dWlkLCBuZXdDb250ZW50KSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuX2NvbnRlbnRzKS5tYXAoayA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29udGVudHNba10uYmxvY2sudXVpZCA9PT0gdXVpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRzW2tdID0gbmV3Q29udGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb250ZW50c1NvdXJjZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgZHVwbGljYXRlQ29udGVudEJ5VVVJRCh1dWlkKSB7XG4gICAgICAgIGxldCBrZXlUb0NvcHkgPSBudWxsO1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50cykuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29udGVudHNbaW5kZXhdLmJsb2NrLnV1aWQgPT09IHV1aWQpIHtcbiAgICAgICAgICAgICAgICBrZXlUb0NvcHkgPSBpbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGtleVRvQ29weSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgdG9Db3B5ID0gdGhpcy5kZWVwQ29weSh0aGlzLl9jb250ZW50c1trZXlUb0NvcHldKTtcbiAgICAgICAgICAgIHRvQ29weS5ibG9jay51dWlkID0gdXVpZFY0KCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRzLnNwbGljZShrZXlUb0NvcHkgKyAxLCAwLCB0b0NvcHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb250ZW50c1NvdXJjZS5uZXh0KCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlQ29udGVudEJ5VVVJRCh1dWlkKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRzID0gW107XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuX2NvbnRlbnRzKS5tYXAoayA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY29udGVudHNba10uYmxvY2sudXVpZCAhPT0gdXVpZCkge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRzLnB1c2godGhpcy5fY29udGVudHNba10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jb250ZW50cyA9IGNvbnRlbnRzO1xuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBkZWxldGVBbGwoKSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRzID0gW107XG4gICAgfVxuXG4gICAgY29udGVudEV2ZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50c0RvbmU7XG4gICAgfVxuXG4gICAgZ2V0UGFyc2VkQ29udGVudCgpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IFtdO1xuXG4gICAgICAgIHRoaXMuY29udGVudHMuZm9yRWFjaChmb3JtID0+IHtcbiAgICAgICAgICAgIGNvbnRlbnQucHVzaChmb3JtLmJsb2NrKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgZ29Ub0xhc3RFbGVtZW50KCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3diLWZvb3Rlcl9fYmxvY2snKTtcbiAgICAgICAgICAgIGVsLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2VuZCcsIGlubGluZTogJ25lYXJlc3QnIH0pO1xuICAgICAgICB9LCA0MDApO1xuICAgIH1cblxuXG4gICAgZGVlcENvcHkob2JqKSB7XG4gICAgICAgIGxldCBjb3B5O1xuXG4gICAgICAgIGlmIChudWxsID09IG9iaiB8fCAnb2JqZWN0JyAhPT0gdHlwZW9mIG9iaikge1xuICAgICAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICBjb3B5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIGNvcHkuc2V0VGltZShvYmouZ2V0VGltZSgpKTtcbiAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICBjb3B5ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gb2JqLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29weVtpXSA9IHRoaXMuZGVlcENvcHkob2JqW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICAgICAgY29weSA9IHt9O1xuICAgICAgICAgICAgZm9yIChjb25zdCBhdHRyIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoYXR0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29weVthdHRyXSA9IHRoaXMuZGVlcENvcHkob2JqW2F0dHJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29weTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGNvcHkgb2JqISBJdHMgdHlwZSBub3Qgc3VwcG9ydGVkLicpO1xuICAgIH1cbn1cbiJdfQ==
|