@wizishop/wizi-block 15.0.16-beta → 15.0.17-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 +12 -67
- package/esm2020/lib/services/utils/content.service.mjs +10 -3
- package/esm2020/lib/wizi-block.component.mjs +104 -169
- package/fesm2015/wizishop-wizi-block.mjs +128 -245
- package/fesm2015/wizishop-wizi-block.mjs.map +1 -1
- package/fesm2020/wizishop-wizi-block.mjs +126 -237
- package/fesm2020/wizishop-wizi-block.mjs.map +1 -1
- package/lib/components/blocks/blocks.component.d.ts +3 -6
- package/lib/services/utils/content.service.d.ts +3 -2
- package/lib/wizi-block.component.d.ts +6 -12
- package/package.json +1 -1
- package/wizi-block.scss +0 -37
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
1
|
+
import { Component, ComponentFactoryResolver, Input } from '@angular/core';
|
|
2
2
|
import { WiziBlockService } from '../../services/wizi-block.service';
|
|
3
3
|
import { animateListFromLeft } from '../../shared/animations/list/animate-list-from-left.animation';
|
|
4
4
|
import { ContentService } from '../../services/utils/content.service';
|
|
@@ -13,14 +13,14 @@ 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 "@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";
|
|
21
20
|
export class BlocksComponent {
|
|
22
|
-
constructor(wiziBlockService, contentService, configService, externalConfigService) {
|
|
21
|
+
constructor(wiziBlockService, resolver, contentService, configService, externalConfigService) {
|
|
23
22
|
this.wiziBlockService = wiziBlockService;
|
|
23
|
+
this.resolver = resolver;
|
|
24
24
|
this.contentService = contentService;
|
|
25
25
|
this.configService = configService;
|
|
26
26
|
this.externalConfigService = externalConfigService;
|
|
@@ -30,8 +30,6 @@ export class BlocksComponent {
|
|
|
30
30
|
this.blockHover = false;
|
|
31
31
|
this.configActive = false;
|
|
32
32
|
this.parsedContent = [];
|
|
33
|
-
this.isLoading = false;
|
|
34
|
-
this.allBlocksLoaded = false;
|
|
35
33
|
}
|
|
36
34
|
ngOnInit() {
|
|
37
35
|
this.translation = this.wiziBlockService.getTranslation();
|
|
@@ -85,7 +83,6 @@ export class BlocksComponent {
|
|
|
85
83
|
}
|
|
86
84
|
baseDto.type = v.type();
|
|
87
85
|
this.contentService.setContents(baseDto);
|
|
88
|
-
this.goToLastElement();
|
|
89
86
|
if (baseDto.forms.length) {
|
|
90
87
|
this.configService.config = baseDto;
|
|
91
88
|
}
|
|
@@ -122,72 +119,20 @@ export class BlocksComponent {
|
|
|
122
119
|
this.contentService.reorderContents(event.previousIndex, event.currentIndex);
|
|
123
120
|
}
|
|
124
121
|
}
|
|
125
|
-
isLoaded(content) {
|
|
126
|
-
return (content instanceof (FormsDto));
|
|
127
|
-
}
|
|
128
122
|
trackWiziblock(index, content) {
|
|
129
123
|
return (content instanceof (FormsDto) ? content.block.uuid : content.uuid);
|
|
130
124
|
}
|
|
131
|
-
goToLastElement() {
|
|
132
|
-
if (!this.allBlocksLoaded) {
|
|
133
|
-
this.allBlocksLoaded = true;
|
|
134
|
-
for (let index = 0; index < this.contents.length; ++index) {
|
|
135
|
-
if (!(this.contents[index] instanceof (FormsDto))) {
|
|
136
|
-
this.allBlocksLoaded = false;
|
|
137
|
-
break;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
setTimeout(() => {
|
|
142
|
-
if (!this.allBlocksLoaded) {
|
|
143
|
-
this.isLoading = true;
|
|
144
|
-
}
|
|
145
|
-
const childElement = document.getElementsByClassName('wb-content__footer')[0];
|
|
146
|
-
const parent = document.getElementsByTagName('html')[0];
|
|
147
|
-
const parentViewableArea = {
|
|
148
|
-
top: parent.scrollTop,
|
|
149
|
-
bottom: parent.scrollTop + window.innerHeight
|
|
150
|
-
};
|
|
151
|
-
const childBoundingClientRect = childElement.getBoundingClientRect();
|
|
152
|
-
var isViewable = (childBoundingClientRect.top + parent.scrollTop >= parentViewableArea.top)
|
|
153
|
-
&& (childBoundingClientRect.bottom + parent.scrollTop <= parentViewableArea.bottom);
|
|
154
|
-
const currentScroll = parent.scrollTop;
|
|
155
|
-
const maxHeight = parent.offsetHeight;
|
|
156
|
-
if (isViewable || (currentScroll >= maxHeight)) {
|
|
157
|
-
// Second check if last element is viewable
|
|
158
|
-
setTimeout(() => {
|
|
159
|
-
let checkCurrentScroll = parent.scrollTop;
|
|
160
|
-
let checkMaxHeight = parent.offsetHeight - window.innerHeight;
|
|
161
|
-
if ((checkCurrentScroll >= checkMaxHeight)) {
|
|
162
|
-
this.isLoading = false;
|
|
163
|
-
this.allBlocksLoaded = true;
|
|
164
|
-
parent.style.scrollBehavior = "initial";
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
this.goToLastElement();
|
|
168
|
-
}
|
|
169
|
-
}, 100);
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
parent.style.scrollBehavior = "smooth";
|
|
173
|
-
parent.scrollTop = childBoundingClientRect.top + parent.scrollTop;
|
|
174
|
-
if (!this.allBlocksLoaded) {
|
|
175
|
-
this.goToLastElement();
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}, 250);
|
|
179
|
-
}
|
|
180
125
|
}
|
|
181
|
-
BlocksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: BlocksComponent, deps: [{ token: i1.WiziBlockService }, { token: i2.ContentService }, { token: i3.ConfigService }, { token: i4.ExternalConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
182
|
-
BlocksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", 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; trackBy: trackWiziblock\" cdkDrag>\n <
|
|
126
|
+
BlocksComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: BlocksComponent, deps: [{ token: i1.WiziBlockService }, { token: i0.ComponentFactoryResolver }, { token: i2.ContentService }, { token: i3.ConfigService }, { token: i4.ExternalConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
127
|
+
BlocksComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", 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; trackBy: trackWiziblock\" 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')] });
|
|
183
128
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: BlocksComponent, decorators: [{
|
|
184
129
|
type: Component,
|
|
185
|
-
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; trackBy: trackWiziblock\" cdkDrag>\n <
|
|
186
|
-
}], ctorParameters: function () { return [{ type: i1.WiziBlockService }, { type: i2.ContentService }, { type: i3.ConfigService }, { type: i4.ExternalConfigService }]; }, propDecorators: { contents: [{
|
|
130
|
+
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; trackBy: trackWiziblock\" 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" }]
|
|
131
|
+
}], ctorParameters: function () { return [{ type: i1.WiziBlockService }, { type: i0.ComponentFactoryResolver }, { type: i2.ContentService }, { type: i3.ConfigService }, { type: i4.ExternalConfigService }]; }, propDecorators: { contents: [{
|
|
187
132
|
type: Input
|
|
188
133
|
}], dynamicHidden: [{
|
|
189
134
|
type: Input
|
|
190
135
|
}], selectedConfig: [{
|
|
191
136
|
type: Input
|
|
192
137
|
}] } });
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemktYmxvY2svc3JjL2xpYi9jb21wb25lbnRzL2Jsb2Nrcy9ibG9ja3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL2NvbXBvbmVudHMvYmxvY2tzL2Jsb2Nrcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUEwQyxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFakcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDcEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBUXJGLE1BQU0sT0FBTyxlQUFlO0lBb0J4QixZQUNZLGdCQUFrQyxFQUNsQyxjQUE4QixFQUM5QixhQUE0QixFQUM1QixxQkFBNEM7UUFINUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXZCL0MsYUFBUSxHQUFlLEVBQUUsQ0FBQztRQUMxQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUc1QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBTW5CLGVBQVUs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Q0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO3FCQUMzQzt5QkFBTTt3QkFDSCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7cUJBQzFCO2dCQUNMLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNYO2lCQUFNO2dCQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztnQkFDdkMsTUFBTSxDQUFDLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7b0JBQ3ZCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztpQkFDMUI7YUFDSjtRQUNMLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7OzRHQS9LUSxlQUFlO2dHQUFmLGVBQWUscUpDaEI1QixxaEZBNERjLDBpRUQ5Q0UsQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDOzJGQUU3QyxlQUFlO2tCQUwzQixTQUFTOytCQUNJLFdBQVcsY0FFVCxDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7b01BRzdDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IFdpemlCbG9ja1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93aXppLWJsb2NrLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25zRHRvIH0gZnJvbSAnLi4vLi4vZHRvcy9jb25maWdzL3RyYW5zbGF0aW9ucy90cmFuc2xhdGlvbnMuZHRvJztcbmltcG9ydCB7IGFuaW1hdGVMaXN0RnJvbUxlZnQgfSBmcm9tICcuLi8uLi9zaGFyZWQvYW5pbWF0aW9ucy9saXN0L2FuaW1hdGUtbGlzdC1mcm9tLWxlZnQuYW5pbWF0aW9uJztcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbHMvY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlscy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBGb3Jtc0R0bywgRk9STV9OQU1FX1dJRFRIX0JMT0NLIH0gZnJvbSAnLi4vLi4vZHRvcy9mb3Jtcy9mb3Jtcy5kdG8nO1xuaW1wb3J0IHsgRXh0ZXJuYWxDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbHMvZXh0ZXJuYWwtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFyZW50QmxvY2tEdG8gfSBmcm9tICcuLi8uLi9kdG9zL2Jsb2Nrcy9wYXJlbnQtYmxvY2suZHRvJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd3Yi1ibG9ja3MnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ibG9ja3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIGFuaW1hdGlvbnM6IFthbmltYXRlTGlzdEZyb21MZWZ0KCcxMDBtcyBlYXNlLWluLW91dCcpXVxufSlcbmV4cG9ydCBjbGFzcyBCbG9ja3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGNvbnRlbnRzOiBBcnJheTxhbnk+ID0gW107XG4gICAgQElucHV0KCkgZHluYW1pY0hpZGRlbiA9IFtdO1xuICAgIEBJbnB1dCgpIHNlbGVjdGVkQ29uZmlnOiBhbnk7XG5cbiAgICBoaWRlQ29uZmlnID0gZmFsc2U7XG5cbiAgICB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb25zRHRvO1xuXG4gICAgcHJldmlldzogYm9vbGVhbjtcblxuICAgIGJsb2NrSG92ZXIgPSBmYWxzZTtcblxuICAgIGNvbmZpZ0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgcGFyc2VkQ29udGVudCA9IFtdO1xuXG4gICAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBhbGxCbG9ja3NMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHdpemlCbG9ja1NlcnZpY2U6IFdpemlCbG9ja1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29udGVudFNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZXh0ZXJuYWxDb25maWdTZXJ2aWNlOiBFeHRlcm5hbENvbmZpZ1NlcnZpY2VcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbiA9IHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRUcmFuc2xhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWdTaG93RXZlbnQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oaWRlQ29uZmlnID0gdGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWc7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldEhpZGVDb25maWcoKSB7XG4gICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5oaWRlQ29uZmlnID0gIXRoaXMuY29uZmlnU2VydmljZS5oaWRlQ29uZmlnO1xuICAgICAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWcpIHtcbiAgICAgICAgICAgIHRoaXMucGFyc2VkQ29udGVudCA9IHRoaXMuY29udGVudFNlcnZpY2UuZ2V0UGFyc2VkQ29udGVudCgpO1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlldyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoSG92ZXIoZXZlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coZXZlbnQpO1xuICAgICAgICB0aGlzLmNvbmZpZ0FjdGl2ZSA9IGV2ZW50O1xuICAgIH1cblxuICAgIGFkZFRoaXMoaW5kZXgsIHR5cGUpIHtcbiAgICAgICAgdGhpcy53aXppQmxvY2tTZXJ2aWNlLmdldEJsb2Nrc1NlcnZpY2UoKS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICBpZiAodi50eXBlKCkgPT09IHR5cGUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHYuZ2V0Rm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlRHRvID0gdi5nZXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiYXNlRHRvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYXNlRHRvLnR5cGUgPSB2LnR5cGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFNlcnZpY2Uuc2V0Q29udGVudHNXaXRoSW5kZXgoaW5kZXgsIGJhc2VEdG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8uZm9ybXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IGJhc2VEdG87XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRUaGlzU2VsZWN0ZWQoc2VsZWN0ZWQsIHZlcmJvc2UpIHtcbiAgICAgICAgdGhpcy53aXppQmxvY2tTZXJ2aWNlLmdldEJsb2Nrc1NlcnZpY2UoKS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICBpZiAodi50eXBlKCkgPT09IHNlbGVjdGVkLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHYuZ2V0Rm9ybSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlRHRvID0gdi5nZXRGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiYXNlRHRvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5leHRlcm5hbENvbmZpZ1NlcnZpY2UuZ2V0V2lkdGhCbG9jaygpICE9ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUR0by5mb3Jtcy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmlkID09IEZPUk1fTkFNRV9XSURUSF9CTE9DSykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9IHRoaXMuZXh0ZXJuYWxDb25maWdTZXJ2aWNlLmdldFdpZHRoQmxvY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBiYXNlRHRvLnR5cGUgPSB2LnR5cGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFNlcnZpY2Uuc2V0Q29udGVudHMoYmFzZUR0byk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdvVG9MYXN0RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8uZm9ybXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IGJhc2VEdG87XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQWRkIGEgY29udGVudCcsIGJhc2VEdG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdEdG8gZm9yIGNvbXBvbmVudCAnICsgdi50eXBlKCkgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Zvcm0gZm9yIGNvbXBvbmVudCAnICsgdi50eXBlKCkgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpc0hpZGRlbkJMb2NrcyhpZCkge1xuICAgICAgICBpZiAodGhpcy5keW5hbWljSGlkZGVuLmluY2x1ZGVzKGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG9uRHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8YW55W10+KSB7XG4gICAgICAgIGlmIChldmVudC5pdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkVGhpcyhldmVudC5jdXJyZW50SW5kZXgsIGV2ZW50Lml0ZW0uZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnaWQnKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLnJlb3JkZXJDb250ZW50cyhldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNMb2FkZWQoY29udGVudDogYW55KSB7XG4gICAgICAgIHJldHVybiAoY29udGVudCBpbnN0YW5jZW9mIEZvcm1zRHRvPFBhcmVudEJsb2NrRHRvPik7XG4gICAgfVxuXG4gICAgdHJhY2tXaXppYmxvY2soaW5kZXgsIGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIChjb250ZW50IGluc3RhbmNlb2YgRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+ID8gY29udGVudC5ibG9jay51dWlkIDogY29udGVudC51dWlkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdvVG9MYXN0RWxlbWVudCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmFsbEJsb2Nrc0xvYWRlZCkgeyAgIFxuICAgICAgICAgICAgdGhpcy5hbGxCbG9ja3NMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuY29udGVudHMubGVuZ3RoOyArK2luZGV4KSB7XG4gICAgICAgICAgICAgICAgaWYgKCEodGhpcy5jb250ZW50c1tpbmRleF0gaW5zdGFuY2VvZiBGb3Jtc0R0bzxQYXJlbnRCbG9ja0R0bz4pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzTG9hZGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5hbGxCbG9ja3NMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBjaGlsZEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd3Yi1jb250ZW50X19mb290ZXInKVswXSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnRWaWV3YWJsZUFyZWEgPSB7XG4gICAgICAgICAgICAgICAgdG9wOiBwYXJlbnQuc2Nyb2xsVG9wLFxuICAgICAgICAgICAgICAgIGJvdHRvbTogcGFyZW50LnNjcm9sbFRvcCArIHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY2hpbGRCb3VuZGluZ0NsaWVudFJlY3QgPSBjaGlsZEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICB2YXIgaXNWaWV3YWJsZSA9IChjaGlsZEJvdW5kaW5nQ2xpZW50UmVjdC50b3AgKyBwYXJlbnQuc2Nyb2xsVG9wID49IHBhcmVudFZpZXdhYmxlQXJlYS50b3ApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGNoaWxkQm91bmRpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhcmVudC5zY3JvbGxUb3AgPD0gcGFyZW50Vmlld2FibGVBcmVhLmJvdHRvbSk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2Nyb2xsID0gcGFyZW50LnNjcm9sbFRvcDtcbiAgICAgICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHBhcmVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICBpZiAoaXNWaWV3YWJsZSB8fCAoY3VycmVudFNjcm9sbCA+PSBtYXhIZWlnaHQpKSB7XG4gICAgICAgICAgICAgICAgLy8gU2Vjb25kIGNoZWNrIGlmIGxhc3QgZWxlbWVudCBpcyB2aWV3YWJsZVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY2hlY2tDdXJyZW50U2Nyb2xsID0gcGFyZW50LnNjcm9sbFRvcDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNoZWNrTWF4SGVpZ2h0ID0gcGFyZW50Lm9mZnNldEhlaWdodCAtIHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChjaGVja0N1cnJlbnRTY3JvbGwgPj0gY2hlY2tNYXhIZWlnaHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGxCbG9ja3NMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnN0eWxlLnNjcm9sbEJlaGF2aW9yID0gXCJpbml0aWFsXCI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdvVG9MYXN0RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyZW50LnN0eWxlLnNjcm9sbEJlaGF2aW9yID0gXCJzbW9vdGhcIjtcbiAgICAgICAgICAgICAgICBwYXJlbnQuc2Nyb2xsVG9wID0gY2hpbGRCb3VuZGluZ0NsaWVudFJlY3QudG9wICsgcGFyZW50LnNjcm9sbFRvcDtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuYWxsQmxvY2tzTG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ29Ub0xhc3RFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCAyNTApO1xuICAgIH1cblxuXG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJ3Yi1ibG9ja3NcIlxuICAgIGNka0Ryb3BMaXN0XG4gICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgaWQ9XCJibG9jay1jb250ZW50XCJcbiAgICAqbmdJZj1cImNvbnRlbnRzLmxlbmd0aCA+IDBcIlxuICAgIFtAYW5pbWF0ZUxpc3RGcm9tTGVmdF09XCJjb250ZW50cy5sZW5ndGhcIlxuICAgIFtuZ0NsYXNzXT1cInsgaG92ZXI6IGJsb2NrSG92ZXIgfVwiXG4+XG4gICAgPGFcbiAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtaGlkZGVuLWJ1dHRvbiBpcy1kYW5nZXIgaXMtcm91bmRlZCBpcy10b29sdGlwLWluZm9cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1kYW5nZXInOiBoaWRlQ29uZmlnLCAnaXMtZGFyayBpcy1vdXRsaW5lZCc6ICFoaWRlQ29uZmlnIH1cIlxuICAgICAgICAoY2xpY2spPVwic2V0SGlkZUNvbmZpZygpXCJcbiAgICAgICAgW253YlRvb2xUaXBdPVwiKCFoaWRlQ29uZmlnID8gJ3diLmJsb2Nrcy5odG1sLjEnIDogJ3diLmJsb2Nrcy5odG1sLjInKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIG53YlRvb2xUaXBQb3NpdGlvbj1cImxlZnRcIlxuICAgICAgICA+PGkgY2xhc3M9XCJmYWwgZmEtZXllXCIgKm5nSWY9XCIhaGlkZUNvbmZpZ1wiPjwvaT48aSBjbGFzcz1cImZhbCBmYS1leWUtc2xhc2hcIiAqbmdJZj1cImhpZGVDb25maWdcIj48L2lcbiAgICA+PC9hPlxuICAgIDx3Yi1wcmV2aWV3cyBbY29udGVudHNdPVwicGFyc2VkQ29udGVudFwiICpuZ0lmPVwicHJldmlldyAmJiBoaWRlQ29uZmlnXCI+PC93Yi1wcmV2aWV3cz5cbiAgICA8ZGl2IGNsYXNzPVwid2ItYmxvY2tzX19jb250YWluZXJcIiAqbmdGb3I9XCJsZXQgY29udGVudCBvZiBjb250ZW50czsgdHJhY2tCeTogdHJhY2tXaXppYmxvY2tcIiBjZGtEcmFnPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMb2FkZWQoY29udGVudCkgOyBlbHNlIGxvYWRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwid2ItY29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICdpcy1pbmFjdGl2ZSc6IGhpZGVDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICdib3JkZXItZ3JleSc6IGlzSGlkZGVuQkxvY2tzKGNvbnRlbnQuYmxvY2sudXVpZCksXG4gICAgICAgICAgICAgICAgICAgICdib3JkZXItYmx1ZSc6IHNlbGVjdGVkQ29uZmlnID09PSBjb250ZW50LmJsb2NrLnV1aWRcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8d2Itc3RydWN0dXJlLXRvb2xzXG4gICAgICAgICAgICAgICAgICAgIFtkeW5hbWljSGlkZGVuU3RydWN0dXJlXT1cImlzSGlkZGVuQkxvY2tzKGNvbnRlbnQuYmxvY2sudXVpZClcIlxuICAgICAgICAgICAgICAgICAgICBbdXVpZF09XCJjb250ZW50LmJsb2NrLnV1aWRcIlxuICAgICAgICAgICAgICAgICAgICBbaXNIb3Zlcl09XCJibG9ja0hvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzQWx3YXlzSG92ZXJdPVwic2VsZWN0ZWRDb25maWcgPT09IGNvbnRlbnQuYmxvY2sudXVpZFwiXG4gICAgICAgICAgICAgICAgICAgIChjb25maWdJc0FjdGl2YXRlZCk9XCJzd2l0Y2hIb3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgICAgID48L3diLXN0cnVjdHVyZS10b29scz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2ItY29tcG9uZW50X19jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHdiLWNvbnRhaW5lci1ibG9jayBbY29udGVudF09XCJjb250ZW50XCI+PC93Yi1jb250YWluZXItYmxvY2s+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIndiLWJsb2Nrc19fc2Nyb2xsXCIgKm5nSWY9XCJpc0xvYWRpbmdcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDx3Yi1sb2FkZXIgW25nQ2xhc3NdPVwieyAnaXMtYWN0aXZlJzogaXNMb2FkaW5nIH1cIj48L3diLWxvYWRlcj5cbiAgICAgICAgICAgIDxwPnt7ICd3Yi5sb2FkaW5nJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIndiLWJsb2Nrcy1lbXB0eVwiICpuZ0lmPVwiY29udGVudHMubGVuZ3RoID09PSAwXCI+XG4gICAgPGltZyBzcmM9XCJhc3NldHMvYmxvY2tzL2ltYWdlcy9pY29ucy9JY29uX0RyYWcuc3ZnXCIgLz5cbiAgICA8cD57eyB0cmFuc2xhdGlvbi5zZWxlY3RfY29tcG9uZW50IHwgdHJhbnNsYXRlIH19PC9wPlxuICAgIDxwPnt7IHRyYW5zbGF0aW9uLmRvY19jb21wb25lbnQgfCB0cmFuc2xhdGUgfX08L3A+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNsb2FkZXI+XG4gICAgPGRpdiBjbGFzcz1cIndiLWJsb2Nrc19fbG9hZGVyXCI+XG4gICAgICAgIDx3Yi1sb2FkZXI+PC93Yi1sb2FkZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3dpemktYmxvY2svc3JjL2xpYi9jb21wb25lbnRzL2Jsb2Nrcy9ibG9ja3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL2NvbXBvbmVudHMvYmxvY2tzL2Jsb2Nrcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNwRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVFyRixNQUFNLE9BQU8sZUFBZTtJQWlCeEIsWUFDWSxnQkFBa0MsRUFDbEMsUUFBa0MsRUFDbEMsY0FBOEIsRUFDOUIsYUFBNEIsRUFDNUIscUJBQTRDO1FBSjVDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBMEI7UUFDbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFyQi9DLGFBQVEsR0FBZSxFQUFFLENBQUM7UUFDMUIsa0JBQWEsR0FB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LENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDekY7YUFBTTtZQUNILElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ2hGO0lBQ0wsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTztRQUN6QixPQUFPLENBQUMsT0FBTyxhQUFZLFFBQXdCLENBQUEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RixDQUFDOzs0R0F4SFEsZUFBZTtnR0FBZixlQUFlLHFKQ2hCNUIsc2dFQThDQSxpK0REaENnQixDQUFDLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7MkZBRTdDLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0ksV0FBVyxjQUVULENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsQ0FBQzsyT0FHN0MsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IFdpemlCbG9ja1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93aXppLWJsb2NrLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25zRHRvIH0gZnJvbSAnLi4vLi4vZHRvcy9jb25maWdzL3RyYW5zbGF0aW9ucy90cmFuc2xhdGlvbnMuZHRvJztcbmltcG9ydCB7IGFuaW1hdGVMaXN0RnJvbUxlZnQgfSBmcm9tICcuLi8uLi9zaGFyZWQvYW5pbWF0aW9ucy9saXN0L2FuaW1hdGUtbGlzdC1mcm9tLWxlZnQuYW5pbWF0aW9uJztcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbHMvY29udGVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlscy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBGb3Jtc0R0bywgRk9STV9OQU1FX1dJRFRIX0JMT0NLIH0gZnJvbSAnLi4vLi4vZHRvcy9mb3Jtcy9mb3Jtcy5kdG8nO1xuaW1wb3J0IHsgRXh0ZXJuYWxDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbHMvZXh0ZXJuYWwtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFyZW50QmxvY2tEdG8gfSBmcm9tICcuLi8uLi9kdG9zL2Jsb2Nrcy9wYXJlbnQtYmxvY2suZHRvJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd3Yi1ibG9ja3MnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ibG9ja3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIGFuaW1hdGlvbnM6IFthbmltYXRlTGlzdEZyb21MZWZ0KCcxMDBtcyBlYXNlLWluLW91dCcpXVxufSlcbmV4cG9ydCBjbGFzcyBCbG9ja3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGNvbnRlbnRzOiBBcnJheTxhbnk+ID0gW107XG4gICAgQElucHV0KCkgZHluYW1pY0hpZGRlbiA9IFtdO1xuICAgIEBJbnB1dCgpIHNlbGVjdGVkQ29uZmlnOiBhbnk7XG5cbiAgICBoaWRlQ29uZmlnID0gZmFsc2U7XG5cbiAgICB0cmFuc2xhdGlvbjogVHJhbnNsYXRpb25zRHRvO1xuXG4gICAgcHJldmlldzogYm9vbGVhbjtcblxuICAgIGJsb2NrSG92ZXIgPSBmYWxzZTtcblxuICAgIGNvbmZpZ0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgcGFyc2VkQ29udGVudCA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgd2l6aUJsb2NrU2VydmljZTogV2l6aUJsb2NrU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBwcml2YXRlIGNvbnRlbnRTZXJ2aWNlOiBDb250ZW50U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGV4dGVybmFsQ29uZmlnU2VydmljZTogRXh0ZXJuYWxDb25maWdTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudHJhbnNsYXRpb24gPSB0aGlzLndpemlCbG9ja1NlcnZpY2UuZ2V0VHJhbnNsYXRpb24oKTtcblxuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnU2hvd0V2ZW50KCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGlkZUNvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZS5oaWRlQ29uZmlnO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRIaWRlQ29uZmlnKCkge1xuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZyA9ICF0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZztcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS5oaWRlQ29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlZENvbnRlbnQgPSB0aGlzLmNvbnRlbnRTZXJ2aWNlLmdldFBhcnNlZENvbnRlbnQoKTtcbiAgICAgICAgICAgIHRoaXMucHJldmlldyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaEhvdmVyKGV2ZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGV2ZW50KTtcbiAgICAgICAgdGhpcy5jb25maWdBY3RpdmUgPSBldmVudDtcbiAgICB9XG5cbiAgICBhZGRUaGlzKGluZGV4LCB0eXBlKSB7XG4gICAgICAgIHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRCbG9ja3NTZXJ2aWNlKCkuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgaWYgKHYudHlwZSgpID09PSB0eXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2LmdldEZvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZUR0byA9IHYuZ2V0Rm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZUR0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUR0by50eXBlID0gdi50eXBlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLnNldENvbnRlbnRzV2l0aEluZGV4KGluZGV4LCBiYXNlRHRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlRHRvLmZvcm1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb25maWcgPSBiYXNlRHRvO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmhpZGVDb25maWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkVGhpc1NlbGVjdGVkKHNlbGVjdGVkLCB2ZXJib3NlKSB7XG4gICAgICAgIHRoaXMud2l6aUJsb2NrU2VydmljZS5nZXRCbG9ja3NTZXJ2aWNlKCkuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgaWYgKHYudHlwZSgpID09PSBzZWxlY3RlZC50eXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2LmdldEZvcm0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZUR0byA9IHYuZ2V0Rm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZUR0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxDb25maWdTZXJ2aWNlLmdldFdpZHRoQmxvY2soKSAhPSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VEdG8uZm9ybXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5pZCA9PSBGT1JNX05BTUVfV0lEVEhfQkxPQ0spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSB0aGlzLmV4dGVybmFsQ29uZmlnU2VydmljZS5nZXRXaWR0aEJsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUR0by50eXBlID0gdi50eXBlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLnNldENvbnRlbnRzKGJhc2VEdG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VEdG8uZm9ybXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyA9IGJhc2VEdG87XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaGlkZUNvbmZpZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQWRkIGEgY29udGVudCcsIGJhc2VEdG8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdEdG8gZm9yIGNvbXBvbmVudCAnICsgdi50eXBlKCkgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Zvcm0gZm9yIGNvbXBvbmVudCAnICsgdi50eXBlKCkgKyAnIG5vdCBmb3VuZCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpc0hpZGRlbkJMb2NrcyhpZCkge1xuICAgICAgICBpZiAodGhpcy5keW5hbWljSGlkZGVuLmluY2x1ZGVzKGlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG9uRHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8YW55W10+KSB7XG4gICAgICAgIGlmIChldmVudC5pdGVtLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkVGhpcyhldmVudC5jdXJyZW50SW5kZXgsIGV2ZW50Lml0ZW0uZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnaWQnKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRTZXJ2aWNlLnJlb3JkZXJDb250ZW50cyhldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdHJhY2tXaXppYmxvY2soaW5kZXgsIGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIChjb250ZW50IGluc3RhbmNlb2YgRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+ID8gY29udGVudC5ibG9jay51dWlkIDogY29udGVudC51dWlkKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJ3Yi1ibG9ja3NcIlxuICAgIGNka0Ryb3BMaXN0XG4gICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgaWQ9XCJibG9jay1jb250ZW50XCJcbiAgICAqbmdJZj1cImNvbnRlbnRzLmxlbmd0aCA+IDBcIlxuICAgIFtAYW5pbWF0ZUxpc3RGcm9tTGVmdF09XCJjb250ZW50cy5sZW5ndGhcIlxuICAgIFtuZ0NsYXNzXT1cInsgaG92ZXI6IGJsb2NrSG92ZXIgfVwiXG4+XG4gICAgPGFcbiAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtaGlkZGVuLWJ1dHRvbiBpcy1kYW5nZXIgaXMtcm91bmRlZCBpcy10b29sdGlwLWluZm9cIlxuICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1kYW5nZXInOiBoaWRlQ29uZmlnLCAnaXMtZGFyayBpcy1vdXRsaW5lZCc6ICFoaWRlQ29uZmlnIH1cIlxuICAgICAgICAoY2xpY2spPVwic2V0SGlkZUNvbmZpZygpXCJcbiAgICAgICAgW253YlRvb2xUaXBdPVwiKCFoaWRlQ29uZmlnID8gJ3diLmJsb2Nrcy5odG1sLjEnIDogJ3diLmJsb2Nrcy5odG1sLjInKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIG53YlRvb2xUaXBQb3NpdGlvbj1cImxlZnRcIlxuICAgICAgICA+PGkgY2xhc3M9XCJmYWwgZmEtZXllXCIgKm5nSWY9XCIhaGlkZUNvbmZpZ1wiPjwvaT48aSBjbGFzcz1cImZhbCBmYS1leWUtc2xhc2hcIiAqbmdJZj1cImhpZGVDb25maWdcIj48L2lcbiAgICA+PC9hPlxuICAgIDx3Yi1wcmV2aWV3cyBbY29udGVudHNdPVwicGFyc2VkQ29udGVudFwiICpuZ0lmPVwicHJldmlldyAmJiBoaWRlQ29uZmlnXCI+PC93Yi1wcmV2aWV3cz5cbiAgICA8ZGl2IGNsYXNzPVwid2ItYmxvY2tzX19jb250YWluZXJcIiAqbmdGb3I9XCJsZXQgY29udGVudCBvZiBjb250ZW50czsgdHJhY2tCeTogdHJhY2tXaXppYmxvY2tcIiBjZGtEcmFnPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIndiLWNvbXBvbmVudFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ2lzLWluYWN0aXZlJzogaGlkZUNvbmZpZyxcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWdyZXknOiBpc0hpZGRlbkJMb2Nrcyhjb250ZW50LmJsb2NrLnV1aWQpLFxuICAgICAgICAgICAgICAgICdib3JkZXItYmx1ZSc6IHNlbGVjdGVkQ29uZmlnID09PSBjb250ZW50LmJsb2NrLnV1aWRcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8d2Itc3RydWN0dXJlLXRvb2xzXG4gICAgICAgICAgICAgICAgW2R5bmFtaWNIaWRkZW5TdHJ1Y3R1cmVdPVwiaXNIaWRkZW5CTG9ja3MoY29udGVudC5ibG9jay51dWlkKVwiXG4gICAgICAgICAgICAgICAgW3V1aWRdPVwiY29udGVudC5ibG9jay51dWlkXCJcbiAgICAgICAgICAgICAgICBbaXNIb3Zlcl09XCJibG9ja0hvdmVyXCJcbiAgICAgICAgICAgICAgICBbaXNBbHdheXNIb3Zlcl09XCJzZWxlY3RlZENvbmZpZyA9PT0gY29udGVudC5ibG9jay51dWlkXCJcbiAgICAgICAgICAgICAgICAoY29uZmlnSXNBY3RpdmF0ZWQpPVwic3dpdGNoSG92ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxuICAgICAgICAgICAgPjwvd2Itc3RydWN0dXJlLXRvb2xzPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndiLWNvbXBvbmVudF9fY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPHdiLWNvbnRhaW5lci1ibG9jayBbY29udGVudF09XCJjb250ZW50XCI+PC93Yi1jb250YWluZXItYmxvY2s+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3Yi1ibG9ja3MtZW1wdHlcIiAqbmdJZj1cImNvbnRlbnRzLmxlbmd0aCA9PT0gMFwiPlxuICAgIDxpbWcgc3JjPVwiYXNzZXRzL2Jsb2Nrcy9pbWFnZXMvaWNvbnMvSWNvbl9EcmFnLnN2Z1wiIC8+XG4gICAgPHA+e3sgdHJhbnNsYXRpb24uc2VsZWN0X2NvbXBvbmVudCB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICA8cD57eyB0cmFuc2xhdGlvbi5kb2NfY29tcG9uZW50IHwgdHJhbnNsYXRlIH19PC9wPlxuPC9kaXY+XG4iXX0=
|
|
@@ -19,6 +19,7 @@ export class ContentService {
|
|
|
19
19
|
setContents(value) {
|
|
20
20
|
this._contents.push(value);
|
|
21
21
|
this.contentsSource.next();
|
|
22
|
+
this.goToLastElement();
|
|
22
23
|
}
|
|
23
24
|
setContentsWithIndex(index, value) {
|
|
24
25
|
this._contents.splice(index, 0, value);
|
|
@@ -53,8 +54,8 @@ export class ContentService {
|
|
|
53
54
|
}
|
|
54
55
|
});
|
|
55
56
|
if (keyToCopy !== null) {
|
|
56
|
-
let toCopy = this.deepCopy(this._contents[keyToCopy]
|
|
57
|
-
toCopy.uuid = uuidV4();
|
|
57
|
+
let toCopy = this.deepCopy(this._contents[keyToCopy]);
|
|
58
|
+
toCopy.block.uuid = uuidV4();
|
|
58
59
|
this._contents.splice(keyToCopy + 1, 0, toCopy);
|
|
59
60
|
}
|
|
60
61
|
this.contentsSource.next();
|
|
@@ -82,6 +83,12 @@ export class ContentService {
|
|
|
82
83
|
});
|
|
83
84
|
return content;
|
|
84
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
|
+
}
|
|
85
92
|
deepCopy(obj) {
|
|
86
93
|
let copy;
|
|
87
94
|
if (null == obj || 'object' !== typeof obj) {
|
|
@@ -116,4 +123,4 @@ ContentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", versi
|
|
|
116
123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: ContentService, decorators: [{
|
|
117
124
|
type: Injectable
|
|
118
125
|
}] });
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL3NlcnZpY2VzL3V0aWxzL2NvbnRlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3pELE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUdwQyxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUdZLGNBQVMsR0FBdUMsRUFBRSxDQUFDO1FBRW5ELG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVyQyxpQkFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7S0FvSTdEO0lBbElHLElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBeUM7UUFDbEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSztRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FB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QUcsRUFBRTtnQkFDcEIsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDekM7YUFDSjtZQUNELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7SUFDbkUsQ0FBQzs7MkdBeklRLGNBQWM7K0dBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBGb3Jtc0R0byB9IGZyb20gJy4uLy4uL2R0b3MvZm9ybXMvZm9ybXMuZHRvJztcbmltcG9ydCB7IFBhcmVudEJsb2NrRHRvIH0gZnJvbSAnLi4vLi4vZHRvcy9ibG9ja3MvcGFyZW50LWJsb2NrLmR0byc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkVjQgfSBmcm9tICd1dWlkJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbnRlbnRTZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgX2NvbnRlbnRzOiAoRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+IHwgYW55KVtdID0gW107XG5cbiAgICBwcml2YXRlIGNvbnRlbnRzU291cmNlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHByaXZhdGUgY29udGVudHNEb25lID0gdGhpcy5jb250ZW50c1NvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICAgIGdldCBjb250ZW50cygpOiAoRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+IHwgYW55KVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRzO1xuICAgIH1cblxuICAgIHNldCBjb250ZW50cyh2YWx1ZTogKEZvcm1zRHRvPFBhcmVudEJsb2NrRHRvPiB8IGFueSlbXSkge1xuICAgICAgICB0aGlzLl9jb250ZW50cyA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMuY29udGVudHNTb3VyY2UubmV4dCgpO1xuICAgIH1cblxuICAgIHNldENvbnRlbnRzKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRzLnB1c2godmFsdWUpO1xuXG4gICAgICAgIHRoaXMuY29udGVudHNTb3VyY2UubmV4dCgpO1xuICAgIH1cblxuICAgIHNldENvbnRlbnRzV2l0aEluZGV4KGluZGV4LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLl9jb250ZW50cy5zcGxpY2UoaW5kZXgsIDAsIHZhbHVlKTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICByZW9yZGVyQ29udGVudHMocHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4KSB7XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLl9jb250ZW50cywgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4KTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBnZXRDb250ZW50QnlVVUlEKHV1aWQpIHtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSBudWxsO1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50cykubWFwKGsgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRzW2tdLmJsb2NrPy51dWlkID09PSB1dWlkKSB7XG4gICAgICAgICAgICAgICAgY29udGVudCA9IHRoaXMuX2NvbnRlbnRzW2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG5cbiAgICB1cGRhdGVCeVVVSUQodXVpZCwgbmV3Q29udGVudCkge1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50cykubWFwKGsgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRzW2tdLmJsb2NrPy51dWlkID09PSB1dWlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29udGVudHNba10gPSBuZXdDb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBkdXBsaWNhdGVDb250ZW50QnlVVUlEKHV1aWQpIHtcbiAgICAgICAgbGV0IGtleVRvQ29weSA9IG51bGw7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuX2NvbnRlbnRzKS5mb3JFYWNoKCh2YWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9jb250ZW50c1tpbmRleF0uYmxvY2s/LnV1aWQgPT09IHV1aWQpIHtcbiAgICAgICAgICAgICAgICBrZXlUb0NvcHkgPSBpbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGtleVRvQ29weSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IHRvQ29weSA9IHRoaXMuZGVlcENvcHkodGhpcy5fY29udGVudHNba2V5VG9Db3B5XS5ibG9jayk7XG4gICAgICAgICAgICB0b0NvcHkudXVpZCA9IHV1aWRWNCgpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB0aGlzLl9jb250ZW50cy5zcGxpY2Uoa2V5VG9Db3B5ICsgMSwgMCwgdG9Db3B5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICByZW1vdmVDb250ZW50QnlVVUlEKHV1aWQpIHtcbiAgICAgICAgY29uc3QgY29udGVudHMgPSBbXTtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5fY29udGVudHMpLm1hcChrID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9jb250ZW50c1trXS5ibG9jaz8udXVpZCAhPT0gdXVpZCkge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRzLnB1c2godGhpcy5fY29udGVudHNba10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jb250ZW50cyA9IGNvbnRlbnRzO1xuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBkZWxldGVBbGwoKSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRzID0gW107XG4gICAgfVxuXG4gICAgY29udGVudEV2ZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50c0RvbmU7XG4gICAgfVxuXG4gICAgZ2V0UGFyc2VkQ29udGVudCgpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IFtdO1xuXG4gICAgICAgIHRoaXMuY29udGVudHMuZm9yRWFjaChmb3JtID0+IHtcbiAgICAgICAgICAgIGNvbnRlbnQucHVzaChmb3JtLmJsb2NrKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG5cbiAgICBkZWVwQ29weShvYmopIHtcbiAgICAgICAgbGV0IGNvcHk7XG5cbiAgICAgICAgaWYgKG51bGwgPT0gb2JqIHx8ICdvYmplY3QnICE9PSB0eXBlb2Ygb2JqKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgIGNvcHkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgY29weS5zZXRUaW1lKG9iai5nZXRUaW1lKCkpO1xuICAgICAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIGNvcHkgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBvYmoubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb3B5W2ldID0gdGhpcy5kZWVwQ29weShvYmpbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICBjb3B5ID0ge307XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGF0dHIgaW4gb2JqKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShhdHRyKSkge1xuICAgICAgICAgICAgICAgICAgICBjb3B5W2F0dHJdID0gdGhpcy5kZWVwQ29weShvYmpbYXR0cl0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb3B5O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gY29weSBvYmohIEl0cyB0eXBlIG5vdCBzdXBwb3J0ZWQuJyk7XG4gICAgfVxufVxuIl19
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvbGliL3NlcnZpY2VzL3V0aWxzL2NvbnRlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBR3pELE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUdwQyxNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUdZLGNBQVMsR0FBK0IsRUFBRSxDQUFDO1FBRTNDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVyQyxpQkFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7S0E0STdEO0lBMUlHLElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsS0FBaUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTNCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBSyxFQUFFLEtBQUs7UUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxF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QUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ25DO1lBQ0QsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELElBQUksR0FBRyxZQUFZLE1BQU0sRUFBRTtZQUN2QixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1YsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUU7Z0JBQ3BCLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQ3pDO2FBQ0o7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7OzJHQWpKUSxjQUFjOytHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRm9ybXNEdG8gfSBmcm9tICcuLi8uLi9kdG9zL2Zvcm1zL2Zvcm1zLmR0byc7XG5pbXBvcnQgeyBQYXJlbnRCbG9ja0R0byB9IGZyb20gJy4uLy4uL2R0b3MvYmxvY2tzL3BhcmVudC1ibG9jay5kdG8nO1xuaW1wb3J0IHsgdjQgYXMgdXVpZFY0IH0gZnJvbSAndXVpZCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb250ZW50U2VydmljZSB7XG5cbiAgICBwcml2YXRlIF9jb250ZW50czogRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+W10gPSBbXTtcblxuICAgIHByaXZhdGUgY29udGVudHNTb3VyY2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgcHJpdmF0ZSBjb250ZW50c0RvbmUgPSB0aGlzLmNvbnRlbnRzU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgZ2V0IGNvbnRlbnRzKCk6IEZvcm1zRHRvPFBhcmVudEJsb2NrRHRvPltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRzO1xuICAgIH1cblxuICAgIHNldCBjb250ZW50cyh2YWx1ZTogRm9ybXNEdG88UGFyZW50QmxvY2tEdG8+W10pIHtcbiAgICAgICAgdGhpcy5fY29udGVudHMgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBzZXRDb250ZW50cyh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9jb250ZW50cy5wdXNoKHZhbHVlKTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcblxuICAgICAgICB0aGlzLmdvVG9MYXN0RWxlbWVudCgpO1xuICAgIH1cblxuICAgIHNldENvbnRlbnRzV2l0aEluZGV4KGluZGV4LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLl9jb250ZW50cy5zcGxpY2UoaW5kZXgsIDAsIHZhbHVlKTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICByZW9yZGVyQ29udGVudHMocHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4KSB7XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLl9jb250ZW50cywgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4KTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBnZXRDb250ZW50QnlVVUlEKHV1aWQpIHtcbiAgICAgICAgbGV0IGNvbnRlbnQgPSBudWxsO1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50cykubWFwKGsgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRzW2tdLmJsb2NrPy51dWlkID09PSB1dWlkKSB7XG4gICAgICAgICAgICAgICAgY29udGVudCA9IHRoaXMuX2NvbnRlbnRzW2tdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG5cbiAgICB1cGRhdGVCeVVVSUQodXVpZCwgbmV3Q29udGVudCkge1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50cykubWFwKGsgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRzW2tdLmJsb2NrPy51dWlkID09PSB1dWlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29udGVudHNba10gPSBuZXdDb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBkdXBsaWNhdGVDb250ZW50QnlVVUlEKHV1aWQpIHtcbiAgICAgICAgbGV0IGtleVRvQ29weSA9IG51bGw7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuX2NvbnRlbnRzKS5mb3JFYWNoKCh2YWx1ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9jb250ZW50c1tpbmRleF0uYmxvY2s/LnV1aWQgPT09IHV1aWQpIHtcbiAgICAgICAgICAgICAgICBrZXlUb0NvcHkgPSBpbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGtleVRvQ29weSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IHRvQ29weSA9IHRoaXMuZGVlcENvcHkodGhpcy5fY29udGVudHNba2V5VG9Db3B5XSk7XG4gICAgICAgICAgICB0b0NvcHkuYmxvY2sudXVpZCA9IHV1aWRWNCgpO1xuXG4gICAgICAgICAgICB0aGlzLl9jb250ZW50cy5zcGxpY2Uoa2V5VG9Db3B5ICsgMSwgMCwgdG9Db3B5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICByZW1vdmVDb250ZW50QnlVVUlEKHV1aWQpIHtcbiAgICAgICAgY29uc3QgY29udGVudHMgPSBbXTtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5fY29udGVudHMpLm1hcChrID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9jb250ZW50c1trXS5ibG9jaz8udXVpZCAhPT0gdXVpZCkge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRzLnB1c2godGhpcy5fY29udGVudHNba10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9jb250ZW50cyA9IGNvbnRlbnRzO1xuICAgICAgICB0aGlzLmNvbnRlbnRzU291cmNlLm5leHQoKTtcbiAgICB9XG5cbiAgICBkZWxldGVBbGwoKSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnRzID0gW107XG4gICAgfVxuXG4gICAgY29udGVudEV2ZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50c0RvbmU7XG4gICAgfVxuXG4gICAgZ2V0UGFyc2VkQ29udGVudCgpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IFtdO1xuXG4gICAgICAgIHRoaXMuY29udGVudHMuZm9yRWFjaChmb3JtID0+IHtcbiAgICAgICAgICAgIGNvbnRlbnQucHVzaChmb3JtLmJsb2NrKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgZ29Ub0xhc3RFbGVtZW50KCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3diLWZvb3Rlcl9fYmxvY2snKTtcbiAgICAgICAgICAgIGVsLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2VuZCcsIGlubGluZTogJ25lYXJlc3QnIH0pO1xuICAgICAgICB9LCA0MDApO1xuICAgIH1cblxuICAgIGRlZXBDb3B5KG9iaikge1xuICAgICAgICBsZXQgY29weTtcblxuICAgICAgICBpZiAobnVsbCA9PSBvYmogfHwgJ29iamVjdCcgIT09IHR5cGVvZiBvYmopIHtcbiAgICAgICAgICAgIHJldHVybiBvYmo7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgY29weSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBjb3B5LnNldFRpbWUob2JqLmdldFRpbWUoKSk7XG4gICAgICAgICAgICByZXR1cm4gY29weTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgY29weSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IG9iai5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgICAgIGNvcHlbaV0gPSB0aGlzLmRlZXBDb3B5KG9ialtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29weTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgICAgIGNvcHkgPSB7fTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYXR0ciBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGF0dHIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvcHlbYXR0cl0gPSB0aGlzLmRlZXBDb3B5KG9ialthdHRyXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBjb3B5IG9iaiEgSXRzIHR5cGUgbm90IHN1cHBvcnRlZC4nKTtcbiAgICB9XG59XG4iXX0=
|