@eo-sdk/client 10.4.0 → 10.5.0-rc.1
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/README.md +2 -2
- package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/dashboard.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts +57 -0
- package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts +62 -0
- package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/charts-widget/icharts.d.ts +11 -0
- package/app/eo-client/dashboard/widgets/charts-widget/icharts.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts +4 -1
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts.map +1 -1
- package/app/eo-client/eo-client.module.d.ts +19 -16
- package/app/eo-client/eo-client.module.d.ts.map +1 -1
- package/app/eo-client/settings/settings.component.d.ts +2 -0
- package/app/eo-client/settings/settings.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts +2 -1
- package/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts.map +1 -1
- package/app/eo-framework/prepare-details/prepare-details.component.d.ts +1 -0
- package/app/eo-framework/prepare-details/prepare-details.component.d.ts.map +1 -1
- package/app/eo-framework/tree/tree.component.d.ts +2 -1
- package/app/eo-framework/tree/tree.component.d.ts.map +1 -1
- package/app/eo-framework-core/empty-state/empty-state.interface.d.ts +3 -3
- package/app/eo-framework-core/empty-state/empty-state.interface.d.ts.map +1 -1
- package/assets/_default/i18n/de.json +19 -2
- package/assets/_default/i18n/en.json +18 -1
- package/esm2020/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2020/app/eo-client/dashboard/dashboard.component.mjs +11 -3
- package/esm2020/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +200 -0
- package/esm2020/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +188 -0
- package/esm2020/app/eo-client/dashboard/widgets/charts-widget/icharts.mjs +2 -0
- package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +3 -3
- package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +20 -14
- package/esm2020/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +3 -3
- package/esm2020/app/eo-client/eo-client.module.mjs +16 -6
- package/esm2020/app/eo-client/object-state/object-state/object-state.component.mjs +2 -2
- package/esm2020/app/eo-client/settings/settings.component.mjs +16 -4
- package/esm2020/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +3 -3
- package/esm2020/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +1 -1
- package/esm2020/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +1 -1
- package/esm2020/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +3 -3
- package/esm2020/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +7 -4
- package/esm2020/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +1 -1
- package/esm2020/app/eo-framework/form-elements/reference/reference.component.mjs +3 -3
- package/esm2020/app/eo-framework/form-elements/string/string.component.mjs +3 -3
- package/esm2020/app/eo-framework/frame/frame.component.mjs +2 -2
- package/esm2020/app/eo-framework/grid/filters/codesystem-filter.component.mjs +3 -3
- package/esm2020/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +1 -1
- package/esm2020/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +1 -1
- package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +1 -1
- package/esm2020/app/eo-framework/prepare-details/prepare-details.component.mjs +10 -3
- package/esm2020/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +3 -3
- package/esm2020/app/eo-framework/tree/tree.component.mjs +15 -4
- package/esm2020/app/eo-framework-core/empty-state/empty-state.interface.mjs +1 -1
- package/esm2020/projects/eo-sdk/core/lib/service/storage/local-storage.service.mjs +12 -1
- package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.mjs +1 -1
- package/esm2020/projects/eo-sdk/core/lib/service/user/user.service.mjs +18 -1
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs +28 -0
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
- package/fesm2015/eo-sdk-client.mjs +468 -48
- package/fesm2015/eo-sdk-client.mjs.map +1 -1
- package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs +28 -0
- package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
- package/fesm2020/eo-sdk-client.mjs +456 -48
- package/fesm2020/eo-sdk-client.mjs.map +1 -1
- package/package.json +3 -2
- package/projects/eo-sdk/core/lib/service/storage/local-storage.service.d.ts +3 -0
- package/projects/eo-sdk/core/lib/service/storage/local-storage.service.d.ts.map +1 -1
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.d.ts.map +1 -1
- package/projects/eo-sdk/core/lib/service/user/user.service.d.ts +11 -0
- package/projects/eo-sdk/core/lib/service/user/user.service.d.ts.map +1 -1
- package/styles.css +1 -0
- package/styles.scss +1 -0
|
@@ -30,6 +30,7 @@ export class CodesystemComponent {
|
|
|
30
30
|
this.isValid = true;
|
|
31
31
|
this.autocompleteValues = [];
|
|
32
32
|
this.inputStyleClass = '';
|
|
33
|
+
this.emptyMessage = 'eo.error.structure.tree.not.available';
|
|
33
34
|
this.propagateChange = (_) => {
|
|
34
35
|
};
|
|
35
36
|
}
|
|
@@ -250,7 +251,7 @@ export class CodesystemComponent {
|
|
|
250
251
|
}
|
|
251
252
|
}
|
|
252
253
|
CodesystemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: CodesystemComponent, deps: [{ token: i1.SystemService }], target: i0.ɵɵFactoryTarget.Component });
|
|
253
|
-
CodesystemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: CodesystemComponent, selector: "eo-codesystem", inputs: { situation: "situation", pickerTitle: "pickerTitle", placeholder: "placeholder", codesystem: "codesystem", multiselect: "multiselect", readonly: "readonly", inputStyleClass: "inputStyleClass", filterFunction: "filterFunction", disablingFilterFunction: "disablingFilterFunction" }, providers: [
|
|
254
|
+
CodesystemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: CodesystemComponent, selector: "eo-codesystem", inputs: { situation: "situation", pickerTitle: "pickerTitle", placeholder: "placeholder", codesystem: "codesystem", multiselect: "multiselect", readonly: "readonly", inputStyleClass: "inputStyleClass", emptyMessage: "emptyMessage", filterFunction: "filterFunction", disablingFilterFunction: "disablingFilterFunction" }, providers: [
|
|
254
255
|
{
|
|
255
256
|
provide: NG_VALUE_ACCESSOR,
|
|
256
257
|
useExisting: forwardRef(() => CodesystemComponent),
|
|
@@ -261,7 +262,7 @@ CodesystemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
|
|
|
261
262
|
useExisting: forwardRef(() => CodesystemComponent),
|
|
262
263
|
multi: true
|
|
263
264
|
}
|
|
264
|
-
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }, { propertyName: "autoCompleteButton", first: true, predicate: ["button"], descendants: true }], ngImport: i0, template: "<eo-dialog [title]=\"pickerTitle || ''\" [(visible)]=\"display\" *ngIf=\"display\">\n <eo-tree [tree]=\"tree\" [isDisplayed]=\"display\" *ngIf=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" [readonly]=\"readonly\"\n [isDisplayed]=\"display\" (keyup.enter)=\"showDialog($event, false)\">\n </eo-tree>\n</eo-dialog>\n\n<div class=\"eo-codesystem\" *ngIf=\"codesystem\"\n [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length, readonly: readonly}\">\n\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\"\n [autocompleteValues]=\"autocompleteRes\" field=\"name\" [disabled]=\"readonly\" [placeholder]=\"placeholder\"\n [forceSelection]=\"true\" (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"multiselect\"\n (ngModelChange)=\"onAutocompleteValueChange($event)\"\n [(ngModel)]=\"selectedNodes\">\n </yvc-autocomplete>\n <button type=\"button\" #button (click)=\"showDialog($event, $event.detail)\" *ngIf=\"!readonly\"\n (keyup.arrowDown)=\"showDialog($event)\" (keyup.enter)=\"showDialog($event)\" (keyup.space)=\"showDialog($event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div
|
|
265
|
+
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }, { propertyName: "autoCompleteButton", first: true, predicate: ["button"], descendants: true }], ngImport: i0, template: "<eo-dialog [title]=\"pickerTitle || ''\" [(visible)]=\"display\" *ngIf=\"display\">\n <eo-tree [tree]=\"tree\" [isDisplayed]=\"display\" *ngIf=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" [readonly]=\"readonly\"\n [isDisplayed]=\"display\" [emptyMessage]=\"emptyMessage\" (keyup.enter)=\"showDialog($event, false)\">\n </eo-tree>\n</eo-dialog>\n\n<div class=\"eo-codesystem\" *ngIf=\"codesystem\"\n [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length, readonly: readonly}\">\n\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\"\n [autocompleteValues]=\"autocompleteRes\" field=\"name\" [disabled]=\"readonly\" [placeholder]=\"placeholder\"\n [forceSelection]=\"true\" (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"multiselect\"\n (ngModelChange)=\"onAutocompleteValueChange($event)\"\n [(ngModel)]=\"selectedNodes\">\n </yvc-autocomplete>\n <button type=\"button\" #button (click)=\"showDialog($event, $event.detail)\" *ngIf=\"!readonly\"\n (keyup.arrowDown)=\"showDialog($event)\" (keyup.enter)=\"showDialog($event, false)\" (keyup.space)=\"showDialog($event, false)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div>\n", styles: [".eo-codesystem{display:flex;align-items:center;justify-content:space-between}.eo-codesystem yvc-autocomplete{display:flex;flex:1;border:0;outline:0}.eo-codesystem>button{padding:0}.eo-codesystem>button eo-icon{width:16px;height:16px;margin:auto}.eo-codesystem.full ::ng-deep yvc-autocomplete .inputToken{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i5.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: i6.TreeComponent, selector: "eo-tree", inputs: ["options", "isDisplayed", "readonly", "emptyMessage", "selectionKey", "highlightedNodes", "tree", "treeUpdate"], outputs: ["expandedNodesChanged", "onSelected"] }, { kind: "component", type: i7.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] });
|
|
265
266
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: CodesystemComponent, decorators: [{
|
|
266
267
|
type: Component,
|
|
267
268
|
args: [{ selector: 'eo-codesystem', providers: [
|
|
@@ -275,7 +276,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
275
276
|
useExisting: forwardRef(() => CodesystemComponent),
|
|
276
277
|
multi: true
|
|
277
278
|
}
|
|
278
|
-
], template: "<eo-dialog [title]=\"pickerTitle || ''\" [(visible)]=\"display\" *ngIf=\"display\">\n <eo-tree [tree]=\"tree\" [isDisplayed]=\"display\" *ngIf=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" [readonly]=\"readonly\"\n [isDisplayed]=\"display\" (keyup.enter)=\"showDialog($event, false)\">\n </eo-tree>\n</eo-dialog>\n\n<div class=\"eo-codesystem\" *ngIf=\"codesystem\"\n [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length, readonly: readonly}\">\n\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\"\n [autocompleteValues]=\"autocompleteRes\" field=\"name\" [disabled]=\"readonly\" [placeholder]=\"placeholder\"\n [forceSelection]=\"true\" (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"multiselect\"\n (ngModelChange)=\"onAutocompleteValueChange($event)\"\n [(ngModel)]=\"selectedNodes\">\n </yvc-autocomplete>\n <button type=\"button\" #button (click)=\"showDialog($event, $event.detail)\" *ngIf=\"!readonly\"\n (keyup.arrowDown)=\"showDialog($event)\" (keyup.enter)=\"showDialog($event)\" (keyup.space)=\"showDialog($event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div
|
|
279
|
+
], template: "<eo-dialog [title]=\"pickerTitle || ''\" [(visible)]=\"display\" *ngIf=\"display\">\n <eo-tree [tree]=\"tree\" [isDisplayed]=\"display\" *ngIf=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (ngModelChange)=\"onTreeSelectionChanged($event)\" [readonly]=\"readonly\"\n [isDisplayed]=\"display\" [emptyMessage]=\"emptyMessage\" (keyup.enter)=\"showDialog($event, false)\">\n </eo-tree>\n</eo-dialog>\n\n<div class=\"eo-codesystem\" *ngIf=\"codesystem\"\n [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length, readonly: readonly}\">\n\n <yvc-autocomplete #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n (suggestionUnselect)=\"onAutoCompleteUnselect($event)\"\n [autocompleteValues]=\"autocompleteRes\" field=\"name\" [disabled]=\"readonly\" [placeholder]=\"placeholder\"\n [forceSelection]=\"true\" (autocompleteFnc)=\"autocompleteFn($event)\" [multiple]=\"multiselect\"\n (ngModelChange)=\"onAutocompleteValueChange($event)\"\n [(ngModel)]=\"selectedNodes\">\n </yvc-autocomplete>\n <button type=\"button\" #button (click)=\"showDialog($event, $event.detail)\" *ngIf=\"!readonly\"\n (keyup.arrowDown)=\"showDialog($event)\" (keyup.enter)=\"showDialog($event, false)\" (keyup.space)=\"showDialog($event, false)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div>\n", styles: [".eo-codesystem{display:flex;align-items:center;justify-content:space-between}.eo-codesystem yvc-autocomplete{display:flex;flex:1;border:0;outline:0}.eo-codesystem>button{padding:0}.eo-codesystem>button eo-icon{width:16px;height:16px;margin:auto}.eo-codesystem.full ::ng-deep yvc-autocomplete .inputToken{display:none}\n"] }]
|
|
279
280
|
}], ctorParameters: function () { return [{ type: i1.SystemService }]; }, propDecorators: { autoCompleteInput: [{
|
|
280
281
|
type: ViewChild,
|
|
281
282
|
args: ['autocomplete']
|
|
@@ -296,6 +297,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
296
297
|
type: Input
|
|
297
298
|
}], inputStyleClass: [{
|
|
298
299
|
type: Input
|
|
300
|
+
}], emptyMessage: [{
|
|
301
|
+
type: Input
|
|
299
302
|
}], filterFunction: [{
|
|
300
303
|
type: Input,
|
|
301
304
|
args: ['filterFunction']
|
|
@@ -303,4 +306,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
303
306
|
type: Input,
|
|
304
307
|
args: ['disablingFilterFunction']
|
|
305
308
|
}] } });
|
|
306
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXN5c3RlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2NvZGVzeXN0ZW0vY29kZXN5c3RlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2NvZGVzeXN0ZW0vY29kZXN5c3RlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBdUIsYUFBYSxFQUFFLGlCQUFpQixFQUFnQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUF1QnJILE1BQU0sT0FBTyxtQkFBbUI7SUFZOUIsSUFBSSxhQUFhLENBQUMsQ0FBTTtRQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFtQkQsSUFDSSxjQUFjLENBQUMsSUFBYztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQ0ksdUJBQXVCLENBQUMsSUFBYztRQUN4QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUEzQ2hELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDUixVQUFLLEdBQUcsS0FBSyxDQUFD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QVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztZQUNsRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsNE9DdEJILDIyQ0FxQk07MkZER08sbUJBQW1CO2tCQWpCL0IsU0FBUzsrQkFDRSxlQUFlLGFBR2Q7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7b0dBSTBCLGlCQUFpQjtzQkFBM0MsU0FBUzt1QkFBQyxjQUFjO2dCQUNKLGtCQUFrQjtzQkFBdEMsU0FBUzt1QkFBQyxRQUFRO2dCQXNCVixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQU1GLGNBQWM7c0JBRGpCLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQU9uQix1QkFBdUI7c0JBRDFCLEtBQUs7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0b3J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7SUNvZGVTeXN0ZW0sIFN5c3RlbVNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge0F1dG9Db21wbGV0ZX0gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZSc7XG5cbmltcG9ydCB7VHJlZU5vZGV9IGZyb20gJy4uLy4uL3RyZWUvdHJlZS5jb21wb25lbnQuaW50ZXJmYWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tY29kZXN5c3RlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2Rlc3lzdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29kZXN5c3RlbS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENvZGVzeXN0ZW1Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDb2Rlc3lzdGVtQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENvZGVzeXN0ZW1Db21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGUnKSBhdXRvQ29tcGxldGVJbnB1dDogQXV0b0NvbXBsZXRlO1xuICBAVmlld0NoaWxkKCdidXR0b24nKSBhdXRvQ29tcGxldGVCdXR0b247XG5cbiAgZGlzcGxheSA9IGZhbHNlO1xuICBwcml2YXRlIGRpcnR5ID0gZmFsc2U7XG4gIHByaXZhdGUgaXNWYWxpZCA9IHRydWU7XG4gIHZhbHVlO1xuICAvL2NvZGVzeXN0ZW1FbGVtZW50O1xuICB0cmVlOiBUcmVlTm9kZVtdO1xuICBwcml2YXRlIF9zZWxlY3RlZE5vZGVzOiBhbnk7XG4gIHNldCBzZWxlY3RlZE5vZGVzKG46IGFueSkge1xuICAgIHRoaXMuX3NlbGVjdGVkTm9kZXMgPSBzdHJ1Y3R1cmVkQ2xvbmUobik7XG4gIH1cbiAgZ2V0IHNlbGVjdGVkTm9kZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkTm9kZXM7XG4gIH1cblxuICBhdXRvY29tcGxldGVSZXM7XG4gIGF1dG9jb21wbGV0ZVZhbHVlczogVHJlZU5vZGVbXSA9IFtdO1xuXG4gIC8qKiBmaWx0ZXIgZnVuY3Rpb24gdGhhdCBjYW4gYmUgc2V0IGJ5IGZvcm0gc2NyaXB0IGRldmVsb3BlcnMuIFdoZW4gc2V0IHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBwcml2YXRlIGZpbHRlckZ1bmN0aW9uOiBGdW5jdGlvbjsgKi9cblxuICAvKiogY3VycmVudCBmb3JtIHNpdHVhdGlvbiAqL1xuICBASW5wdXQoKSBzaXR1YXRpb246IHN0cmluZztcbiAgQElucHV0KCkgcGlja2VyVGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcbiAgQElucHV0KCkgY29kZXN5c3RlbTogSUNvZGVTeXN0ZW07XG4gIEBJbnB1dCgpIG11bHRpc2VsZWN0OiBib29sZWFuO1xuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbjtcbiAgQElucHV0KCkgaW5wdXRTdHlsZUNsYXNzID0gJyc7XG5cbiAgcHJpdmF0ZSBfZmlsdGVyRnVuYzogRnVuY3Rpb247XG4gIHByaXZhdGUgX2Rpc2FibGluZ0ZpbHRlckZ1bmM6IEZ1bmN0aW9uO1xuXG4gIEBJbnB1dCgnZmlsdGVyRnVuY3Rpb24nKVxuICBzZXQgZmlsdGVyRnVuY3Rpb24oZnVuYzogRnVuY3Rpb24pIHtcbiAgICB0aGlzLl9maWx0ZXJGdW5jID0gZnVuYztcbiAgICB0aGlzLmJ1aWxkVHJlZSgpO1xuICB9XG5cbiAgQElucHV0KCdkaXNhYmxpbmdGaWx0ZXJGdW5jdGlvbicpXG4gIHNldCBkaXNhYmxpbmdGaWx0ZXJGdW5jdGlvbihmdW5jOiBGdW5jdGlvbikge1xuICAgIHRoaXMuX2Rpc2FibGluZ0ZpbHRlckZ1bmMgPSBmdW5jO1xuICAgIHRoaXMuYnVpbGRUcmVlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UpIHtcbiAgfVxuXG4gIHByb3RlY3RlZCBfZ2V0Q29kZXN5c3RlbUJ5UW5hbWUocW5hbWU6IHN0cmluZyk6IElDb2RlU3lzdGVtIHtcbiAgICBjb25zdCBjczogUGFydGlhbDxJQ29kZVN5c3RlbT4gPSB7fTtcbiAgICBjb25zdCBvYmplY3RUeXBlID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUocW5hbWUuc3BsaXQoJy4nKVswXSk7XG4gICAgaWYgKG9iamVjdFR5cGUgJiYgb2JqZWN0VHlwZS5lbGVtZW50cykge1xuICAgICAgY29uc3QgZWwgPSBvYmplY3RUeXBlLmVsZW1lbnRzLmZpbmQoZSA9PiBlLnFuYW1lID09PSBxbmFtZSkgfHwge307XG4gICAgICBPYmplY3QuYXNzaWduKGNzLCBlbC5jb2Rlc3lzdGVtKTtcbiAgICB9XG4gICAgY3MuZW50cmllcyA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRDb2Rlc3lzdGVtKHRoaXMuY29kZXN5c3RlbS5pZCkuZW50cmllcztcbiAgICByZXR1cm4gKGNzIGFzIElDb2RlU3lzdGVtKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8qKiBsb2FkIGNvZGVzeXN0ZW0gZW50cmllcyBpZiB0aGV5IGFyZW4ndCBhdHRhY2hlZCAqL1xuICAgIGlmICh0aGlzLmNvZGVzeXN0ZW0gJiYgIXRoaXMuY29kZXN5c3RlbS5lbnRyaWVzKSB7XG4gICAgICB0aGlzLmNvZGVzeXN0ZW0uZW50cmllcyA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRDb2Rlc3lzdGVtKHRoaXMuY29kZXN5c3RlbS5pZCkuZW50cmllcztcbiAgICB9XG4gICAgLy8gaW4gc2VhcmNoIHNpdHVhdGlvbiBjb2Rlc3lzdGVtcyBhcmUgYWx3YXlzIG11bHRpc2VsZWN0YWJsZVxuICAgIGlmICh0aGlzLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHRoaXMubXVsdGlzZWxlY3QgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmJ1aWxkVHJlZSgpO1xuICB9XG5cbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICB9O1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgbnVsbDtcbiAgICBjb25zdCB2YWx1ZXMgPSAhdGhpcy52YWx1ZSB8fCBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZSB8fCBbXSA6IFt0aGlzLnZhbHVlXTtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBub2RlcyA9ICF0aGlzLnNlbGVjdGVkTm9kZXMgfHwgQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkTm9kZXMpID8gdGhpcy5zZWxlY3RlZE5vZGVzIHx8IFtdIDogW3RoaXMuc2VsZWN0ZWROb2Rlc107XG5cbiAgICBpZiAodGhpcy5jb2Rlc3lzdGVtICYmIChub2Rlcy5sZW5ndGggIT09IHZhbHVlcy5sZW5ndGggfHwgbm9kZXMuc29tZSgobiwgaSkgPT4gbi5kYXRhLmRhdGEgIT09IHZhbHVlc1tpXSkpKSB7XG4gICAgICB0aGlzLmJ1aWxkVHJlZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gIH1cblxuICAvLyBoYW5kbGVyIGludm9rZWQgd2hlbiBhbiBlbnRyeSB3YXMgc2VsZWN0ZWQgdXNpbmcgdGhlIGF1dG9jb21wbGV0ZSBpbnB1dFxuICBvbkF1dG9Db21wbGV0ZVNlbGVjdChub2RlPykge1xuICAgIGNvbnN0IHdhc0ludmFsaWQgPSAhdGhpcy5pc1ZhbGlkO1xuICAgIHRoaXMuaXNWYWxpZCA9IHRydWU7XG4gICAgLy90aGlzLnVwZGF0ZVRyZWUoKTtcbiAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUod2FzSW52YWxpZCk7XG4gIH1cblxuICBvbkF1dG9jb21wbGV0ZVZhbHVlQ2hhbmdlKHY6IGFueSkge1xuICAgIGlmICh2ID09PSBudWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBudWxsXG4gICAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBoYW5kbGVyIGludm9rZWQgd2hlbiBhbiBlbnRyeSB3YXMgZGVzZWxlY3RlZCB1c2luZyB0aGUgYXV0b2NvbXBsZXRlIGlucHV0XG4gIG9uQXV0b0NvbXBsZXRlVW5zZWxlY3Qobm9kZT8pIHtcbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSB0aGlzLnNlbGVjdGVkTm9kZXMuZmlsdGVyKFxuICAgICAgc05vZGUgPT4gc05vZGUuaWQgIT09IG5vZGUuaWRcbiAgICApO1xuICAgIC8vdGhpcy51cGRhdGVUcmVlKCk7XG4gICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKCk7XG4gIH1cblxuICAvLyB0cmlnZ2VyZWQgd2hlbiB0aGUgc2VsZWN0aW9uIHdhcyBjaGFuZ2VkIGJ5XG4gIG9uVHJlZVNlbGVjdGlvbkNoYW5nZWQoZXZ0KSB7XG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAvLyBoaWRlIHRoZSBkaWFsb2dcbiAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB3YXNJbnZhbGlkID0gIXRoaXMuaXNWYWxpZDtcbiAgICB0aGlzLmlzVmFsaWQgPSB0cnVlO1xuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSh3YXNJbnZhbGlkKTtcbiAgfVxuXG4gIG9uQ2xlYXIoKSB7XG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuZCBwcm9wYWdhdGVzIHRoZSBmb3JtIGNvbnRyb2xzIHZhbHVlIGJhc2VkIG9uIHRoZSBjb21wb25lbnRzIGlubmVyIHZhbHVlcy4gUHJvcGFnYXRlcyBvbmx5XG4gICAqIHdoZW4gdGhlIHZhbHVlIGhhcyBjaGFuZ2VkLlxuICAgKiBAcGFyYW0gZm9yY2VQcm9wYWdhdGlvbiAtIGZvcmNlcyBwcm9wYWdhdGlvbiBldmVuIGlmIHRoZSB2YWx1ZSBoYXNuJ3QgYmVlbiBjaGFuZ2VkXG4gICAqL1xuICBwcml2YXRlIHNldEZvcm1Db250cm9sVmFsdWUoZm9yY2VQcm9wYWdhdGlvbj86IGJvb2xlYW4pIHtcbiAgICBsZXQgdjtcbiAgICBsZXQgY2hhbmdlZDogYm9vbGVhbjtcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdiA9IHRoaXMuc2VsZWN0ZWROb2Rlcy5tYXAobm9kZSA9PiBub2RlLmRhdGEuZGF0YSk7XG4gICAgICBjaGFuZ2VkID1cbiAgICAgICAgIXRoaXMudmFsdWUgfHxcbiAgICAgICAgIShcbiAgICAgICAgICB2Lmxlbmd0aCA9PT0gdGhpcy52YWx1ZS5sZW5ndGggJiZcbiAgICAgICAgICB2LmV2ZXJ5KHZhbCA9PiB0aGlzLnZhbHVlLnNvbWUoY3VyVmFsID0+IGN1clZhbCA9PT0gdmFsKSlcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdiA9IHRoaXMuc2VsZWN0ZWROb2RlcyA/IHRoaXMuc2VsZWN0ZWROb2Rlcy5kYXRhLmRhdGEgOiBudWxsO1xuICAgICAgY2hhbmdlZCA9IHYgIT09IHRoaXMudmFsdWU7XG4gICAgfVxuICAgIC8vIG9ubHkgcHJvcGFnYXRlIHRoZSBjaGFuZ2UgaWYgdGhlIHZhbHVlIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBjdXJyZW50IG9uZVxuICAgIC8vIG90aGVyd2lzZSB3ZSB3b3VsZCBhbHdheXMgc2V0IHRoZSBkaXJ0eSBmbGFnIGFsdGhvdWdoIG5vdGhpbmcgY2hhbmdlZFxuICAgIGlmIChjaGFuZ2VkIHx8IGZvcmNlUHJvcGFnYXRpb24pIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2O1xuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gYnVpbGQgdGhlIHRyZWUgZm9yIHRoZSBkaWFsb2dcbiAgcHJpdmF0ZSBidWlsZFRyZWUoKSB7XG5cbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSB0aGlzLm11bHRpc2VsZWN0ID8gW10gOiBudWxsO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlVmFsdWVzID0gW107XG4gICAgbGV0IHRyZWU6IFRyZWVOb2RlW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29kZXN5c3RlbS5lbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmFkZFRyZWVOb2RlKHRyZWUsIHRoaXMuY29kZXN5c3RlbS5lbnRyaWVzW2ldKTtcbiAgICB9XG4gICAgdGhpcy50cmVlID0gdHJlZTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkVHJlZU5vZGUocGFyZW50Tm9kZTogVHJlZU5vZGVbXSwgY29kZXN5c3RlbUVudHJ5KSB7XG4gICAgaWYgKHRoaXMuX2ZpbHRlckZ1bmMgJiYgIXRoaXMuX2ZpbHRlckZ1bmMoY29kZXN5c3RlbUVudHJ5KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbm9kZTogVHJlZU5vZGUgPSB0aGlzLmNzRW50cnlUb1RyZWVOb2RlKGNvZGVzeXN0ZW1FbnRyeSk7XG4gICAgaWYgKG5vZGUuc2VsZWN0YWJsZSkge1xuICAgICAgLyoqIGFkZCBzZWxlY3RhYmxlIG5vZGVzIHRvIGF1dG9jb21wbGV0ZSB2YWx1ZXMgKi9cbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlVmFsdWVzLnB1c2gobm9kZSk7XG4gICAgfVxuICAgIGlmIChjb2Rlc3lzdGVtRW50cnkuc3ViZW50cmllcykge1xuICAgICAgbm9kZS5jaGlsZHJlbiA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvZGVzeXN0ZW1FbnRyeS5zdWJlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMuYWRkVHJlZU5vZGUobm9kZS5jaGlsZHJlbiwgY29kZXN5c3RlbUVudHJ5LnN1YmVudHJpZXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNoZWNrU2VsZWN0ZWQobm9kZSk7XG4gICAgcGFyZW50Tm9kZS5wdXNoKG5vZGUpO1xuICB9XG5cbiAgLy8gc29tZSBub2RlcyBhcmUgb25seSB2aXNpYmxlIGluIHNvbWUgY2FzZXMuXG4gIHByaXZhdGUgaXNIaWRkZW4oY29kZXN5c3RlbUVudHJ5KSB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLnNpdHVhdGlvbiA9PT0gJ0NSRUFURScgJiYgIWNvZGVzeXN0ZW1FbnRyeS5hbGxvd2Vkb25uZXcpIHx8XG4gICAgICAodGhpcy5zaXR1YXRpb24gPT09ICdFRElUJyAmJiAhY29kZXN5c3RlbUVudHJ5LmFsbG93ZWRvbnVwZGF0ZSkgfHxcbiAgICAgICh0aGlzLl9kaXNhYmxpbmdGaWx0ZXJGdW5jICYmIHRoaXMuX2Rpc2FibGluZ0ZpbHRlckZ1bmMoY29kZXN5c3RlbUVudHJ5KSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1NlbGVjdGVkKG5vZGU6IFRyZWVOb2RlKSB7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKG5vZGUuZGF0YS5kYXRhID09PSB0aGlzLnZhbHVlW2ldKSB7XG4gICAgICAgICAgbm9kZS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5vZGUuZGF0YS5kYXRhID09PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgIG5vZGUuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGF1dG9jb21wbGV0ZUZuKHRlcm06IHN0cmluZykge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gdGhpcy5hdXRvY29tcGxldGVWYWx1ZXMuZmlsdGVyKGFjTm9kZSA9PiB7XG4gICAgICBpZiAodGhpcy5fZmlsdGVyRnVuYyAmJiAhdGhpcy5fZmlsdGVyRnVuYyhhY05vZGUuZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gc2tpcCBub2RlcyB0aGF0IGFyZSBhbHJlYWR5IHNlbGVjdGVkXG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzLmZpbmQobm9kZSA9PiBhY05vZGUuZGF0YS5kYXRhID09PSBub2RlLmRhdGEuZGF0YSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNOb2RlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRlcm0udG9Mb3dlckNhc2UoKSkgIT09IC0xO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gdHJhbnNmb3JtIGNvZGVzeXN0ZW0gZW50cnkgdG8gdHJlZSBub2RlXG4gIHByaXZhdGUgY3NFbnRyeVRvVHJlZU5vZGUoY29kZXN5c3RlbUVudHJ5KTogVHJlZU5vZGUge1xuICAgIC8vIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgdHJlZSBub2RlIHNob3VsZCBiZSBzZWxlY3RhYmxlXG4gICAgbGV0IHNlbGVjdGFibGUgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5jb2Rlc3lzdGVtLmFsbGVsZW1lbnRzc2VsZWN0YWJsZSkge1xuICAgICAgLy8gY2FzZTogYWxsIGVsZW1lbnRzIGFyZSBzZWxlY3RhYmxlLiBUaGlzIG1lYW5zIHRoYXQgbm90IG9ubHkgbGVhZiBub2Rlc1xuICAgICAgLy8gYXJlIHNlbGVjdGFibGUgYnV0IGFsc28gdGhlaXIgcGFyZW50IG5vZGVzXG4gICAgICBzZWxlY3RhYmxlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY2FzZTogb25seSBsZWFmIG5vZGVzIGFyZSBzZWxlY3RhYmxlXG4gICAgICBzZWxlY3RhYmxlID0gIShcbiAgICAgICAgY29kZXN5c3RlbUVudHJ5LnN1YmVudHJpZXMgJiYgY29kZXN5c3RlbUVudHJ5LnN1YmVudHJpZXMubGVuZ3RoID4gMFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBjb2Rlc3lzdGVtRW50cnkuaWQsXG4gICAgICBuYW1lOiBjb2Rlc3lzdGVtRW50cnkuZGVmYXVsdHJlcHJlc2VudGF0aW9uLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgZXhwYW5kZWQ6IGZhbHNlLFxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgc2VsZWN0YWJsZTogc2VsZWN0YWJsZSAmJiAhdGhpcy5pc0hpZGRlbihjb2Rlc3lzdGVtRW50cnkpLFxuICAgICAgZGF0YTogY29kZXN5c3RlbUVudHJ5XG4gICAgfTtcbiAgfVxuXG4gIHNob3dEaWFsb2coZXZlbnQ/LCBkaXNwbGF5ID0gdHJ1ZSkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgLy9pZ25vcmUgc3ludGhldGl6ZWQgZXZlbnRzIG9uIGVudGVyXG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJiBldmVudC5kZXRhaWwgPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmRpc3BsYXkgPSAhIWRpc3BsYXk7XG4gIH1cblxuICAvLyByZXR1cm5zIG51bGwgd2hlbiB2YWxpZCBlbHNlIHRoZSB2YWxpZGF0aW9uIG9iamVjdFxuICBwdWJsaWMgdmFsaWRhdGUoYzogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZFxuICAgICAgPyBudWxsXG4gICAgICA6IHtcbiAgICAgICAgY29kZXN5c3RlbToge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICB9XG59XG4iLCI8ZW8tZGlhbG9nIFt0aXRsZV09XCJwaWNrZXJUaXRsZSB8fCAnJ1wiIFsodmlzaWJsZSldPVwiZGlzcGxheVwiICpuZ0lmPVwiZGlzcGxheVwiPlxuICA8ZW8tdHJlZSBbdHJlZV09XCJ0cmVlXCIgW2lzRGlzcGxheWVkXT1cImRpc3BsYXlcIiAqbmdJZj1cImRpc3BsYXlcIiBbb3B0aW9uc109XCJ7bXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0fVwiXG4gICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE5vZGVzXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25UcmVlU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICBbaXNEaXNwbGF5ZWRdPVwiZGlzcGxheVwiIChrZXl1cC5lbnRlcik9XCJzaG93RGlhbG9nKCRldmVudCwgZmFsc2UpXCI+XG4gIDwvZW8tdHJlZT5cbjwvZW8tZGlhbG9nPlxuXG48ZGl2IGNsYXNzPVwiZW8tY29kZXN5c3RlbVwiICpuZ0lmPVwiY29kZXN5c3RlbVwiXG4gIFtuZ0NsYXNzXT1cIntmdWxsOiBzZWxlY3RlZE5vZGVzICYmIHNlbGVjdGVkTm9kZXMubGVuZ3RoID09PSBhdXRvY29tcGxldGVWYWx1ZXMubGVuZ3RoLCByZWFkb25seTogcmVhZG9ubHl9XCI+XG5cbiAgPHl2Yy1hdXRvY29tcGxldGUgI2F1dG9jb21wbGV0ZSAoc3VnZ2VzdGlvblNlbGVjdCk9XCJvbkF1dG9Db21wbGV0ZVNlbGVjdCgkZXZlbnQpXCJcbiAgICAoc3VnZ2VzdGlvblVuc2VsZWN0KT1cIm9uQXV0b0NvbXBsZXRlVW5zZWxlY3QoJGV2ZW50KVwiXG4gICAgW2F1dG9jb21wbGV0ZVZhbHVlc109XCJhdXRvY29tcGxldGVSZXNcIiBmaWVsZD1cIm5hbWVcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFtmb3JjZVNlbGVjdGlvbl09XCJ0cnVlXCIgKGF1dG9jb21wbGV0ZUZuYyk9XCJhdXRvY29tcGxldGVGbigkZXZlbnQpXCIgW211bHRpcGxlXT1cIm11bHRpc2VsZWN0XCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJvbkF1dG9jb21wbGV0ZVZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWROb2Rlc1wiPlxuICA8L3l2Yy1hdXRvY29tcGxldGU+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNidXR0b24gKGNsaWNrKT1cInNob3dEaWFsb2coJGV2ZW50LCAkZXZlbnQuZGV0YWlsKVwiICpuZ0lmPVwiIXJlYWRvbmx5XCJcbiAgICAoa2V5dXAuYXJyb3dEb3duKT1cInNob3dEaWFsb2coJGV2ZW50KVwiIChrZXl1cC5lbnRlcik9XCJzaG93RGlhbG9nKCRldmVudClcIiAoa2V5dXAuc3BhY2UpPVwic2hvd0RpYWxvZygkZXZlbnQpXCI+XG4gICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfYXJyb3dfZG93bi5zdmcnXCI+PC9lby1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PiJdfQ==
|
|
309
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXN5c3RlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2NvZGVzeXN0ZW0vY29kZXN5c3RlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL2NvZGVzeXN0ZW0vY29kZXN5c3RlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBdUIsYUFBYSxFQUFFLGlCQUFpQixFQUFnQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUF1QnJILE1BQU0sT0FBTyxtQkFBbUI7SUFZOUIsSUFBSSxhQUFhLENBQUMsQ0FBTTtRQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFvQkQsSUFDSSxjQUFjLENBQUMsSUFBYztRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQ0ksdUJBQXVCLENBQUMsSUFBYztRQUN4QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUE1Q2hELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDUixVQUFLLEdBQUcsS0FBSyxDQUFD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LEVBQUUsYUFBYTtZQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO1lBQ2xELEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRiw0T0N0QkgsMjVDQXNCQTsyRkRFYSxtQkFBbUI7a0JBakIvQixTQUFTOytCQUNFLGVBQWUsYUFHZDt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvR0FJMEIsaUJBQWlCO3NCQUEzQyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0osa0JBQWtCO3NCQUF0QyxTQUFTO3VCQUFDLFFBQVE7Z0JBc0JWLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFNRixjQUFjO3NCQURqQixLQUFLO3VCQUFDLGdCQUFnQjtnQkFPbkIsdUJBQXVCO3NCQUQxQixLQUFLO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdG9yfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0lDb2RlU3lzdGVtLCBTeXN0ZW1TZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtBdXRvQ29tcGxldGV9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9hdXRvY29tcGxldGUnO1xuXG5pbXBvcnQge1RyZWVOb2RlfSBmcm9tICcuLi8uLi90cmVlL3RyZWUuY29tcG9uZW50LmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWNvZGVzeXN0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vY29kZXN5c3RlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvZGVzeXN0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDb2Rlc3lzdGVtQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ29kZXN5c3RlbUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDb2Rlc3lzdGVtQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlJykgYXV0b0NvbXBsZXRlSW5wdXQ6IEF1dG9Db21wbGV0ZTtcbiAgQFZpZXdDaGlsZCgnYnV0dG9uJykgYXV0b0NvbXBsZXRlQnV0dG9uO1xuXG4gIGRpc3BsYXkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBkaXJ0eSA9IGZhbHNlO1xuICBwcml2YXRlIGlzVmFsaWQgPSB0cnVlO1xuICB2YWx1ZTtcbiAgLy9jb2Rlc3lzdGVtRWxlbWVudDtcbiAgdHJlZTogVHJlZU5vZGVbXTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWROb2RlczogYW55O1xuICBzZXQgc2VsZWN0ZWROb2RlcyhuOiBhbnkpIHtcbiAgICB0aGlzLl9zZWxlY3RlZE5vZGVzID0gc3RydWN0dXJlZENsb25lKG4pO1xuICB9XG4gIGdldCBzZWxlY3RlZE5vZGVzKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZE5vZGVzO1xuICB9XG5cbiAgYXV0b2NvbXBsZXRlUmVzO1xuICBhdXRvY29tcGxldGVWYWx1ZXM6IFRyZWVOb2RlW10gPSBbXTtcblxuICAvKiogZmlsdGVyIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHNldCBieSBmb3JtIHNjcmlwdCBkZXZlbG9wZXJzLiBXaGVuIHNldCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcHJpdmF0ZSBmaWx0ZXJGdW5jdGlvbjogRnVuY3Rpb247ICovXG5cbiAgLyoqIGN1cnJlbnQgZm9ybSBzaXR1YXRpb24gKi9cbiAgQElucHV0KCkgc2l0dWF0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBpY2tlclRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvZGVzeXN0ZW06IElDb2RlU3lzdGVtO1xuICBASW5wdXQoKSBtdWx0aXNlbGVjdDogYm9vbGVhbjtcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlucHV0U3R5bGVDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBlbXB0eU1lc3NhZ2UgPSAnZW8uZXJyb3Iuc3RydWN0dXJlLnRyZWUubm90LmF2YWlsYWJsZSc7XG5cbiAgcHJpdmF0ZSBfZmlsdGVyRnVuYzogRnVuY3Rpb247XG4gIHByaXZhdGUgX2Rpc2FibGluZ0ZpbHRlckZ1bmM6IEZ1bmN0aW9uO1xuXG4gIEBJbnB1dCgnZmlsdGVyRnVuY3Rpb24nKVxuICBzZXQgZmlsdGVyRnVuY3Rpb24oZnVuYzogRnVuY3Rpb24pIHtcbiAgICB0aGlzLl9maWx0ZXJGdW5jID0gZnVuYztcbiAgICB0aGlzLmJ1aWxkVHJlZSgpO1xuICB9XG5cbiAgQElucHV0KCdkaXNhYmxpbmdGaWx0ZXJGdW5jdGlvbicpXG4gIHNldCBkaXNhYmxpbmdGaWx0ZXJGdW5jdGlvbihmdW5jOiBGdW5jdGlvbikge1xuICAgIHRoaXMuX2Rpc2FibGluZ0ZpbHRlckZ1bmMgPSBmdW5jO1xuICAgIHRoaXMuYnVpbGRUcmVlKCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UpIHtcbiAgfVxuXG4gIHByb3RlY3RlZCBfZ2V0Q29kZXN5c3RlbUJ5UW5hbWUocW5hbWU6IHN0cmluZyk6IElDb2RlU3lzdGVtIHtcbiAgICBjb25zdCBjczogUGFydGlhbDxJQ29kZVN5c3RlbT4gPSB7fTtcbiAgICBjb25zdCBvYmplY3RUeXBlID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9iamVjdFR5cGUocW5hbWUuc3BsaXQoJy4nKVswXSk7XG4gICAgaWYgKG9iamVjdFR5cGUgJiYgb2JqZWN0VHlwZS5lbGVtZW50cykge1xuICAgICAgY29uc3QgZWwgPSBvYmplY3RUeXBlLmVsZW1lbnRzLmZpbmQoZSA9PiBlLnFuYW1lID09PSBxbmFtZSkgfHwge307XG4gICAgICBPYmplY3QuYXNzaWduKGNzLCBlbC5jb2Rlc3lzdGVtKTtcbiAgICB9XG4gICAgY3MuZW50cmllcyA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRDb2Rlc3lzdGVtKHRoaXMuY29kZXN5c3RlbS5pZCkuZW50cmllcztcbiAgICByZXR1cm4gKGNzIGFzIElDb2RlU3lzdGVtKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8qKiBsb2FkIGNvZGVzeXN0ZW0gZW50cmllcyBpZiB0aGV5IGFyZW4ndCBhdHRhY2hlZCAqL1xuICAgIGlmICh0aGlzLmNvZGVzeXN0ZW0gJiYgIXRoaXMuY29kZXN5c3RlbS5lbnRyaWVzKSB7XG4gICAgICB0aGlzLmNvZGVzeXN0ZW0uZW50cmllcyA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRDb2Rlc3lzdGVtKHRoaXMuY29kZXN5c3RlbS5pZCkuZW50cmllcztcbiAgICB9XG4gICAgLy8gaW4gc2VhcmNoIHNpdHVhdGlvbiBjb2Rlc3lzdGVtcyBhcmUgYWx3YXlzIG11bHRpc2VsZWN0YWJsZVxuICAgIGlmICh0aGlzLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIHRoaXMubXVsdGlzZWxlY3QgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmJ1aWxkVHJlZSgpO1xuICB9XG5cbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICB9O1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZGlydHkgPSBmYWxzZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgbnVsbDtcbiAgICBjb25zdCB2YWx1ZXMgPSAhdGhpcy52YWx1ZSB8fCBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZSB8fCBbXSA6IFt0aGlzLnZhbHVlXTtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBub2RlcyA9ICF0aGlzLnNlbGVjdGVkTm9kZXMgfHwgQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkTm9kZXMpID8gdGhpcy5zZWxlY3RlZE5vZGVzIHx8IFtdIDogW3RoaXMuc2VsZWN0ZWROb2Rlc107XG5cbiAgICBpZiAodGhpcy5jb2Rlc3lzdGVtICYmIChub2Rlcy5sZW5ndGggIT09IHZhbHVlcy5sZW5ndGggfHwgbm9kZXMuc29tZSgobiwgaSkgPT4gbi5kYXRhLmRhdGEgIT09IHZhbHVlc1tpXSkpKSB7XG4gICAgICB0aGlzLmJ1aWxkVHJlZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gIH1cblxuICAvLyBoYW5kbGVyIGludm9rZWQgd2hlbiBhbiBlbnRyeSB3YXMgc2VsZWN0ZWQgdXNpbmcgdGhlIGF1dG9jb21wbGV0ZSBpbnB1dFxuICBvbkF1dG9Db21wbGV0ZVNlbGVjdChub2RlPykge1xuICAgIGNvbnN0IHdhc0ludmFsaWQgPSAhdGhpcy5pc1ZhbGlkO1xuICAgIHRoaXMuaXNWYWxpZCA9IHRydWU7XG4gICAgLy90aGlzLnVwZGF0ZVRyZWUoKTtcbiAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUod2FzSW52YWxpZCk7XG4gIH1cblxuICBvbkF1dG9jb21wbGV0ZVZhbHVlQ2hhbmdlKHY6IGFueSkge1xuICAgIGlmICh2ID09PSBudWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBudWxsXG4gICAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBoYW5kbGVyIGludm9rZWQgd2hlbiBhbiBlbnRyeSB3YXMgZGVzZWxlY3RlZCB1c2luZyB0aGUgYXV0b2NvbXBsZXRlIGlucHV0XG4gIG9uQXV0b0NvbXBsZXRlVW5zZWxlY3Qobm9kZT8pIHtcbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSB0aGlzLnNlbGVjdGVkTm9kZXMuZmlsdGVyKFxuICAgICAgc05vZGUgPT4gc05vZGUuaWQgIT09IG5vZGUuaWRcbiAgICApO1xuICAgIC8vdGhpcy51cGRhdGVUcmVlKCk7XG4gICAgdGhpcy5zZXRGb3JtQ29udHJvbFZhbHVlKCk7XG4gIH1cblxuICAvLyB0cmlnZ2VyZWQgd2hlbiB0aGUgc2VsZWN0aW9uIHdhcyBjaGFuZ2VkIGJ5XG4gIG9uVHJlZVNlbGVjdGlvbkNoYW5nZWQoZXZ0KSB7XG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAvLyBoaWRlIHRoZSBkaWFsb2dcbiAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB3YXNJbnZhbGlkID0gIXRoaXMuaXNWYWxpZDtcbiAgICB0aGlzLmlzVmFsaWQgPSB0cnVlO1xuICAgIHRoaXMuc2V0Rm9ybUNvbnRyb2xWYWx1ZSh3YXNJbnZhbGlkKTtcbiAgfVxuXG4gIG9uQ2xlYXIoKSB7XG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnNldEZvcm1Db250cm9sVmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuZCBwcm9wYWdhdGVzIHRoZSBmb3JtIGNvbnRyb2xzIHZhbHVlIGJhc2VkIG9uIHRoZSBjb21wb25lbnRzIGlubmVyIHZhbHVlcy4gUHJvcGFnYXRlcyBvbmx5XG4gICAqIHdoZW4gdGhlIHZhbHVlIGhhcyBjaGFuZ2VkLlxuICAgKiBAcGFyYW0gZm9yY2VQcm9wYWdhdGlvbiAtIGZvcmNlcyBwcm9wYWdhdGlvbiBldmVuIGlmIHRoZSB2YWx1ZSBoYXNuJ3QgYmVlbiBjaGFuZ2VkXG4gICAqL1xuICBwcml2YXRlIHNldEZvcm1Db250cm9sVmFsdWUoZm9yY2VQcm9wYWdhdGlvbj86IGJvb2xlYW4pIHtcbiAgICBsZXQgdjtcbiAgICBsZXQgY2hhbmdlZDogYm9vbGVhbjtcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdiA9IHRoaXMuc2VsZWN0ZWROb2Rlcy5tYXAobm9kZSA9PiBub2RlLmRhdGEuZGF0YSk7XG4gICAgICBjaGFuZ2VkID1cbiAgICAgICAgIXRoaXMudmFsdWUgfHxcbiAgICAgICAgIShcbiAgICAgICAgICB2Lmxlbmd0aCA9PT0gdGhpcy52YWx1ZS5sZW5ndGggJiZcbiAgICAgICAgICB2LmV2ZXJ5KHZhbCA9PiB0aGlzLnZhbHVlLnNvbWUoY3VyVmFsID0+IGN1clZhbCA9PT0gdmFsKSlcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdiA9IHRoaXMuc2VsZWN0ZWROb2RlcyA/IHRoaXMuc2VsZWN0ZWROb2Rlcy5kYXRhLmRhdGEgOiBudWxsO1xuICAgICAgY2hhbmdlZCA9IHYgIT09IHRoaXMudmFsdWU7XG4gICAgfVxuICAgIC8vIG9ubHkgcHJvcGFnYXRlIHRoZSBjaGFuZ2UgaWYgdGhlIHZhbHVlIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBjdXJyZW50IG9uZVxuICAgIC8vIG90aGVyd2lzZSB3ZSB3b3VsZCBhbHdheXMgc2V0IHRoZSBkaXJ0eSBmbGFnIGFsdGhvdWdoIG5vdGhpbmcgY2hhbmdlZFxuICAgIGlmIChjaGFuZ2VkIHx8IGZvcmNlUHJvcGFnYXRpb24pIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2O1xuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gYnVpbGQgdGhlIHRyZWUgZm9yIHRoZSBkaWFsb2dcbiAgcHJpdmF0ZSBidWlsZFRyZWUoKSB7XG5cbiAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSB0aGlzLm11bHRpc2VsZWN0ID8gW10gOiBudWxsO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlVmFsdWVzID0gW107XG4gICAgbGV0IHRyZWU6IFRyZWVOb2RlW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29kZXN5c3RlbS5lbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmFkZFRyZWVOb2RlKHRyZWUsIHRoaXMuY29kZXN5c3RlbS5lbnRyaWVzW2ldKTtcbiAgICB9XG4gICAgdGhpcy50cmVlID0gdHJlZTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkVHJlZU5vZGUocGFyZW50Tm9kZTogVHJlZU5vZGVbXSwgY29kZXN5c3RlbUVudHJ5KSB7XG4gICAgaWYgKHRoaXMuX2ZpbHRlckZ1bmMgJiYgIXRoaXMuX2ZpbHRlckZ1bmMoY29kZXN5c3RlbUVudHJ5KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbm9kZTogVHJlZU5vZGUgPSB0aGlzLmNzRW50cnlUb1RyZWVOb2RlKGNvZGVzeXN0ZW1FbnRyeSk7XG4gICAgaWYgKG5vZGUuc2VsZWN0YWJsZSkge1xuICAgICAgLyoqIGFkZCBzZWxlY3RhYmxlIG5vZGVzIHRvIGF1dG9jb21wbGV0ZSB2YWx1ZXMgKi9cbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlVmFsdWVzLnB1c2gobm9kZSk7XG4gICAgfVxuICAgIGlmIChjb2Rlc3lzdGVtRW50cnkuc3ViZW50cmllcykge1xuICAgICAgbm9kZS5jaGlsZHJlbiA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvZGVzeXN0ZW1FbnRyeS5zdWJlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMuYWRkVHJlZU5vZGUobm9kZS5jaGlsZHJlbiwgY29kZXN5c3RlbUVudHJ5LnN1YmVudHJpZXNbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNoZWNrU2VsZWN0ZWQobm9kZSk7XG4gICAgcGFyZW50Tm9kZS5wdXNoKG5vZGUpO1xuICB9XG5cbiAgLy8gc29tZSBub2RlcyBhcmUgb25seSB2aXNpYmxlIGluIHNvbWUgY2FzZXMuXG4gIHByaXZhdGUgaXNIaWRkZW4oY29kZXN5c3RlbUVudHJ5KSB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLnNpdHVhdGlvbiA9PT0gJ0NSRUFURScgJiYgIWNvZGVzeXN0ZW1FbnRyeS5hbGxvd2Vkb25uZXcpIHx8XG4gICAgICAodGhpcy5zaXR1YXRpb24gPT09ICdFRElUJyAmJiAhY29kZXN5c3RlbUVudHJ5LmFsbG93ZWRvbnVwZGF0ZSkgfHxcbiAgICAgICh0aGlzLl9kaXNhYmxpbmdGaWx0ZXJGdW5jICYmIHRoaXMuX2Rpc2FibGluZ0ZpbHRlckZ1bmMoY29kZXN5c3RlbUVudHJ5KSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1NlbGVjdGVkKG5vZGU6IFRyZWVOb2RlKSB7XG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKG5vZGUuZGF0YS5kYXRhID09PSB0aGlzLnZhbHVlW2ldKSB7XG4gICAgICAgICAgbm9kZS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5vZGUuZGF0YS5kYXRhID09PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgIG5vZGUuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGF1dG9jb21wbGV0ZUZuKHRlcm06IHN0cmluZykge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gdGhpcy5hdXRvY29tcGxldGVWYWx1ZXMuZmlsdGVyKGFjTm9kZSA9PiB7XG4gICAgICBpZiAodGhpcy5fZmlsdGVyRnVuYyAmJiAhdGhpcy5fZmlsdGVyRnVuYyhhY05vZGUuZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gc2tpcCBub2RlcyB0aGF0IGFyZSBhbHJlYWR5IHNlbGVjdGVkXG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzLmZpbmQobm9kZSA9PiBhY05vZGUuZGF0YS5kYXRhID09PSBub2RlLmRhdGEuZGF0YSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNOb2RlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRlcm0udG9Mb3dlckNhc2UoKSkgIT09IC0xO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gdHJhbnNmb3JtIGNvZGVzeXN0ZW0gZW50cnkgdG8gdHJlZSBub2RlXG4gIHByaXZhdGUgY3NFbnRyeVRvVHJlZU5vZGUoY29kZXN5c3RlbUVudHJ5KTogVHJlZU5vZGUge1xuICAgIC8vIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgdHJlZSBub2RlIHNob3VsZCBiZSBzZWxlY3RhYmxlXG4gICAgbGV0IHNlbGVjdGFibGUgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5jb2Rlc3lzdGVtLmFsbGVsZW1lbnRzc2VsZWN0YWJsZSkge1xuICAgICAgLy8gY2FzZTogYWxsIGVsZW1lbnRzIGFyZSBzZWxlY3RhYmxlLiBUaGlzIG1lYW5zIHRoYXQgbm90IG9ubHkgbGVhZiBub2Rlc1xuICAgICAgLy8gYXJlIHNlbGVjdGFibGUgYnV0IGFsc28gdGhlaXIgcGFyZW50IG5vZGVzXG4gICAgICBzZWxlY3RhYmxlID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY2FzZTogb25seSBsZWFmIG5vZGVzIGFyZSBzZWxlY3RhYmxlXG4gICAgICBzZWxlY3RhYmxlID0gIShcbiAgICAgICAgY29kZXN5c3RlbUVudHJ5LnN1YmVudHJpZXMgJiYgY29kZXN5c3RlbUVudHJ5LnN1YmVudHJpZXMubGVuZ3RoID4gMFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBjb2Rlc3lzdGVtRW50cnkuaWQsXG4gICAgICBuYW1lOiBjb2Rlc3lzdGVtRW50cnkuZGVmYXVsdHJlcHJlc2VudGF0aW9uLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgZXhwYW5kZWQ6IGZhbHNlLFxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgc2VsZWN0YWJsZTogc2VsZWN0YWJsZSAmJiAhdGhpcy5pc0hpZGRlbihjb2Rlc3lzdGVtRW50cnkpLFxuICAgICAgZGF0YTogY29kZXN5c3RlbUVudHJ5XG4gICAgfTtcbiAgfVxuXG4gIHNob3dEaWFsb2coZXZlbnQ/LCBkaXNwbGF5ID0gdHJ1ZSkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgLy9pZ25vcmUgc3ludGhldGl6ZWQgZXZlbnRzIG9uIGVudGVyXG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJyAmJiBldmVudC5kZXRhaWwgPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmRpc3BsYXkgPSAhIWRpc3BsYXk7XG4gIH1cblxuICAvLyByZXR1cm5zIG51bGwgd2hlbiB2YWxpZCBlbHNlIHRoZSB2YWxpZGF0aW9uIG9iamVjdFxuICBwdWJsaWMgdmFsaWRhdGUoYzogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZFxuICAgICAgPyBudWxsXG4gICAgICA6IHtcbiAgICAgICAgY29kZXN5c3RlbToge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICB9XG59XG4iLCI8ZW8tZGlhbG9nIFt0aXRsZV09XCJwaWNrZXJUaXRsZSB8fCAnJ1wiIFsodmlzaWJsZSldPVwiZGlzcGxheVwiICpuZ0lmPVwiZGlzcGxheVwiPlxuICA8ZW8tdHJlZSBbdHJlZV09XCJ0cmVlXCIgW2lzRGlzcGxheWVkXT1cImRpc3BsYXlcIiAqbmdJZj1cImRpc3BsYXlcIiBbb3B0aW9uc109XCJ7bXVsdGlzZWxlY3Q6IG11bHRpc2VsZWN0fVwiXG4gICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE5vZGVzXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25UcmVlU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICBbaXNEaXNwbGF5ZWRdPVwiZGlzcGxheVwiIFtlbXB0eU1lc3NhZ2VdPVwiZW1wdHlNZXNzYWdlXCIgKGtleXVwLmVudGVyKT1cInNob3dEaWFsb2coJGV2ZW50LCBmYWxzZSlcIj5cbiAgPC9lby10cmVlPlxuPC9lby1kaWFsb2c+XG5cbjxkaXYgY2xhc3M9XCJlby1jb2Rlc3lzdGVtXCIgKm5nSWY9XCJjb2Rlc3lzdGVtXCJcbiAgW25nQ2xhc3NdPVwie2Z1bGw6IHNlbGVjdGVkTm9kZXMgJiYgc2VsZWN0ZWROb2Rlcy5sZW5ndGggPT09IGF1dG9jb21wbGV0ZVZhbHVlcy5sZW5ndGgsIHJlYWRvbmx5OiByZWFkb25seX1cIj5cblxuICA8eXZjLWF1dG9jb21wbGV0ZSAjYXV0b2NvbXBsZXRlIChzdWdnZXN0aW9uU2VsZWN0KT1cIm9uQXV0b0NvbXBsZXRlU2VsZWN0KCRldmVudClcIlxuICAgIChzdWdnZXN0aW9uVW5zZWxlY3QpPVwib25BdXRvQ29tcGxldGVVbnNlbGVjdCgkZXZlbnQpXCJcbiAgICBbYXV0b2NvbXBsZXRlVmFsdWVzXT1cImF1dG9jb21wbGV0ZVJlc1wiIGZpZWxkPVwibmFtZVwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgW2ZvcmNlU2VsZWN0aW9uXT1cInRydWVcIiAoYXV0b2NvbXBsZXRlRm5jKT1cImF1dG9jb21wbGV0ZUZuKCRldmVudClcIiBbbXVsdGlwbGVdPVwibXVsdGlzZWxlY3RcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQXV0b2NvbXBsZXRlVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZE5vZGVzXCI+XG4gIDwveXZjLWF1dG9jb21wbGV0ZT5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI2J1dHRvbiAoY2xpY2spPVwic2hvd0RpYWxvZygkZXZlbnQsICRldmVudC5kZXRhaWwpXCIgKm5nSWY9XCIhcmVhZG9ubHlcIlxuICAgIChrZXl1cC5hcnJvd0Rvd24pPVwic2hvd0RpYWxvZygkZXZlbnQpXCIgKGtleXVwLmVudGVyKT1cInNob3dEaWFsb2coJGV2ZW50LCBmYWxzZSlcIiAoa2V5dXAuc3BhY2UpPVwic2hvd0RpYWxvZygkZXZlbnQsIGZhbHNlKVwiPlxuICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2Fycm93X2Rvd24uc3ZnJ1wiPjwvZW8taWNvbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -264,7 +264,7 @@ DynamicListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
|
|
|
264
264
|
useExisting: forwardRef(() => DynamicListComponent),
|
|
265
265
|
multi: true,
|
|
266
266
|
}
|
|
267
|
-
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }, { propertyName: "autoCompleteButton", first: true, predicate: ["button"], descendants: true }], ngImport: i0, template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [(visible)]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length)}\"\n [styleClass]=\"'dynlist-dialog'\" *ngIf=\"display\">\n\n <eo-tree [tree]=\"tree\" *ngIf=\"display && tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (keyup.enter)=\"showDialog($event, false)\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\">\n </eo-tree>\n\n <div class=\"empty\" *ngIf=\"!(list?.entries?.length)\">\n <div translate>eo.form.property.dynamic.list.empty</div>\n </div>\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n [disabled]=\"readonly\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [forceSelection]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" field=\"{{valueField}}\" \n (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\">\n\n <!-- (onClear)=\"onClear()\" -->\n\n <ng-template let-item #chipTemplate>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n <!-- <div class=\"description\">{{item[descriptionField]}}</div> -->\n </div>\n </ng-template>\n </yvc-autocomplete>\n\n <button #button class=\"ui-button\" *ngIf=\"!readonly\" [disabled]=\"readonly\" (click)=\"showDialog($event, $event.detail)\"\n (keyup.arrowDown)=\"showDialog($event)\" (keyup.enter)=\"showDialog($event)\" (keyup.space)=\"showDialog($event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div>", styles: [".rtl .form-element .form-field>div label{text-align:left!important}:host .eo-dynamic-list{display:flex;align-items:center;justify-content:space-between}:host .eo-dynamic-list .description{padding-left:0!important}:host .eo-dynamic-list yvc-autocomplete{flex:1;border:0;outline:0}:host .eo-dynamic-list>button{padding:0}:host .eo-dynamic-list>button eo-icon{width:16px;height:16px;margin:auto}:host .eo-dynamic-list.full ::ng-deep yvc-autocomplete .inputToken{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i5.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: i6.TreeComponent, selector: "eo-tree", inputs: ["options", "isDisplayed", "readonly", "selectionKey", "highlightedNodes", "tree", "treeUpdate"], outputs: ["expandedNodesChanged", "onSelected"] }, { kind: "component", type: i7.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] });
|
|
267
|
+
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }, { propertyName: "autoCompleteButton", first: true, predicate: ["button"], descendants: true }], ngImport: i0, template: "<eo-dialog #listDialog [title]=\"pickerTitle\" [(visible)]=\"display\" [ngClass]=\"{empty: !(list?.entries?.length)}\"\n [styleClass]=\"'dynlist-dialog'\" *ngIf=\"display\">\n\n <eo-tree [tree]=\"tree\" *ngIf=\"display && tree\" [isDisplayed]=\"display\" [options]=\"{multiselect: multiselect}\"\n [(ngModel)]=\"selectedNodes\" (keyup.enter)=\"showDialog($event, false)\"\n (ngModelChange)=\"onTreeSelectionChanged($event)\">\n </eo-tree>\n\n <div class=\"empty\" *ngIf=\"!(list?.entries?.length)\">\n <div translate>eo.form.property.dynamic.list.empty</div>\n </div>\n</eo-dialog>\n\n<div class=\"eo-dynamic-list\" [ngClass]=\"{full: selectedNodes && selectedNodes.length === autocompleteValues.length}\">\n\n <yvc-autocomplete [(ngModel)]=\"selectedNodes\" #autocomplete (suggestionSelect)=\"onAutoCompleteSelect($event)\"\n [disabled]=\"readonly\" (suggestionUnselect)=\"onAutoCompleteUnselect($event)\" [forceSelection]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" field=\"{{valueField}}\" \n (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"multiselect\">\n\n <!-- (onClear)=\"onClear()\" -->\n\n <ng-template let-item #chipTemplate>\n <div>\n <div class=\"value\">{{item[valueField]}}</div>\n <!-- <div class=\"description\">{{item[descriptionField]}}</div> -->\n </div>\n </ng-template>\n </yvc-autocomplete>\n\n <button #button class=\"ui-button\" *ngIf=\"!readonly\" [disabled]=\"readonly\" (click)=\"showDialog($event, $event.detail)\"\n (keyup.arrowDown)=\"showDialog($event)\" (keyup.enter)=\"showDialog($event)\" (keyup.space)=\"showDialog($event)\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_arrow_down.svg'\"></eo-icon>\n </button>\n</div>", styles: [".rtl .form-element .form-field>div label{text-align:left!important}:host .eo-dynamic-list{display:flex;align-items:center;justify-content:space-between}:host .eo-dynamic-list .description{padding-left:0!important}:host .eo-dynamic-list yvc-autocomplete{flex:1;border:0;outline:0}:host .eo-dynamic-list>button{padding:0}:host .eo-dynamic-list>button eo-icon{width:16px;height:16px;margin:auto}:host .eo-dynamic-list.full ::ng-deep yvc-autocomplete .inputToken{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i5.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: i6.TreeComponent, selector: "eo-tree", inputs: ["options", "isDisplayed", "readonly", "emptyMessage", "selectionKey", "highlightedNodes", "tree", "treeUpdate"], outputs: ["expandedNodesChanged", "onSelected"] }, { kind: "component", type: i7.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] });
|
|
268
268
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DynamicListComponent, decorators: [{
|
|
269
269
|
type: Component,
|
|
270
270
|
args: [{ selector: 'eo-dynamic-list', providers: [
|
|
@@ -189,7 +189,7 @@ ReferenceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
|
|
|
189
189
|
useExisting: forwardRef(() => ReferenceComponent),
|
|
190
190
|
multi: true
|
|
191
191
|
}
|
|
192
|
-
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<div class=\"eo-form-reference\" [ngClass]=\"{acInputHidden: !multiselect && !!innerValue.length}\">\n\n <yvc-autocomplete [ngModel]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n (suggestionUnselect)=\"onUnselect($event)\" [disabled]=\"readonly\" [multiple]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" [field]=\"'value'\" [forceSelection]=\"true\" (blur)=\"onAutoCompleteBlur()\"\n (keyup.enter)=\"onKeyUpEnter($event)\" (autocompleteFnc)=\"autocompleteFn($event)\">\n\n <!-- template for the suggest list -->\n <ng-template let-item #autocompleteOptionTemplate>\n <span class=\"yvc-autocomplete-token-label\" title=\"{{item.value}} ({{item.title}})\">\n <strong>{{item.value}}</strong>\n <span>{{item.title}}</span>\n </span>\n </ng-template>\n\n <!-- template for the selected items -->\n <ng-template let-item #chipTemplate>\n <a class=\"link router-link\" [routerLink]=\"['/result']\" [queryParams]=\"getItemLinkParams(item)\">\n <svg focusable=\"false\" class=\"ref-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8\n 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\">\n </path>\n </svg>\n </a>\n <span class=\"yvc-autocomplete-token-label\">{{item.value}}</span>\n\n </ng-template>\n </yvc-autocomplete>\n</div
|
|
192
|
+
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<div class=\"eo-form-reference\" [ngClass]=\"{acInputHidden: !multiselect && !!innerValue.length}\">\n\n <yvc-autocomplete [ngModel]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n (suggestionUnselect)=\"onUnselect($event)\" [disabled]=\"readonly\" [multiple]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" [field]=\"'value'\" [forceSelection]=\"true\" (blur)=\"onAutoCompleteBlur()\"\n (keyup.enter)=\"onKeyUpEnter($event)\" (autocompleteFnc)=\"autocompleteFn($event)\">\n\n <!-- template for the suggest list -->\n <ng-template let-item #autocompleteOptionTemplate>\n <span class=\"yvc-autocomplete-token-label\" title=\"{{item.value}} ({{item.title}})\">\n <strong>{{item.value}}</strong>\n <span>{{item.title}}</span>\n </span>\n </ng-template>\n\n <!-- template for the selected items -->\n <ng-template let-item #chipTemplate>\n <a class=\"link router-link\" [routerLink]=\"['/result']\" [queryParams]=\"getItemLinkParams(item)\">\n <svg focusable=\"false\" class=\"ref-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8\n 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\">\n </path>\n </svg>\n </a>\n <span class=\"yvc-autocomplete-token-label\">{{item.value}}</span>\n\n </ng-template>\n </yvc-autocomplete>\n</div>", styles: [".eo-form-reference{display:flex;align-items:center;justify-content:space-between}.eo-form-reference yvc-autocomplete{flex:1 1 auto;border:0;outline:0}.eo-form-reference a.link eo-icon{width:18px;height:18px}.yvc-autocomplete-token-label{display:flex;flex-flow:column}.yvc-autocomplete-token-label>span{font-size:var(--font-hint)}:host ::ng-deep .eo-form-reference.acInputHidden .inputToken{width:0!important;margin:0;padding:0}:host ::ng-deep .eo-form-reference.acInputHidden .inputToken input{width:0!important}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i6.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] });
|
|
193
193
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ReferenceComponent, decorators: [{
|
|
194
194
|
type: Component,
|
|
195
195
|
args: [{ selector: 'eo-reference', providers: [
|
|
@@ -203,7 +203,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
203
203
|
useExisting: forwardRef(() => ReferenceComponent),
|
|
204
204
|
multi: true
|
|
205
205
|
}
|
|
206
|
-
], template: "<div class=\"eo-form-reference\" [ngClass]=\"{acInputHidden: !multiselect && !!innerValue.length}\">\n\n <yvc-autocomplete [ngModel]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n (suggestionUnselect)=\"onUnselect($event)\" [disabled]=\"readonly\" [multiple]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" [field]=\"'value'\" [forceSelection]=\"true\" (blur)=\"onAutoCompleteBlur()\"\n (keyup.enter)=\"onKeyUpEnter($event)\" (autocompleteFnc)=\"autocompleteFn($event)\">\n\n <!-- template for the suggest list -->\n <ng-template let-item #autocompleteOptionTemplate>\n <span class=\"yvc-autocomplete-token-label\" title=\"{{item.value}} ({{item.title}})\">\n <strong>{{item.value}}</strong>\n <span>{{item.title}}</span>\n </span>\n </ng-template>\n\n <!-- template for the selected items -->\n <ng-template let-item #chipTemplate>\n <a class=\"link router-link\" [routerLink]=\"['/result']\" [queryParams]=\"getItemLinkParams(item)\">\n <svg focusable=\"false\" class=\"ref-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8\n 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\">\n </path>\n </svg>\n </a>\n <span class=\"yvc-autocomplete-token-label\">{{item.value}}</span>\n\n </ng-template>\n </yvc-autocomplete>\n</div
|
|
206
|
+
], template: "<div class=\"eo-form-reference\" [ngClass]=\"{acInputHidden: !multiselect && !!innerValue.length}\">\n\n <yvc-autocomplete [ngModel]=\"innerValue\" #autocomplete (suggestionSelect)=\"onSelect($event)\"\n (suggestionUnselect)=\"onUnselect($event)\" [disabled]=\"readonly\" [multiple]=\"true\"\n [autocompleteValues]=\"autocompleteRes\" [field]=\"'value'\" [forceSelection]=\"true\" (blur)=\"onAutoCompleteBlur()\"\n (keyup.enter)=\"onKeyUpEnter($event)\" (autocompleteFnc)=\"autocompleteFn($event)\">\n\n <!-- template for the suggest list -->\n <ng-template let-item #autocompleteOptionTemplate>\n <span class=\"yvc-autocomplete-token-label\" title=\"{{item.value}} ({{item.title}})\">\n <strong>{{item.value}}</strong>\n <span>{{item.title}}</span>\n </span>\n </ng-template>\n\n <!-- template for the selected items -->\n <ng-template let-item #chipTemplate>\n <a class=\"link router-link\" [routerLink]=\"['/result']\" [queryParams]=\"getItemLinkParams(item)\">\n <svg focusable=\"false\" class=\"ref-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\n viewBox=\"0 0 24 24\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8\n 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\">\n </path>\n </svg>\n </a>\n <span class=\"yvc-autocomplete-token-label\">{{item.value}}</span>\n\n </ng-template>\n </yvc-autocomplete>\n</div>", styles: [".eo-form-reference{display:flex;align-items:center;justify-content:space-between}.eo-form-reference yvc-autocomplete{flex:1 1 auto;border:0;outline:0}.eo-form-reference a.link eo-icon{width:18px;height:18px}.yvc-autocomplete-token-label{display:flex;flex-flow:column}.yvc-autocomplete-token-label>span{font-size:var(--font-hint)}:host ::ng-deep .eo-form-reference.acInputHidden .inputToken{width:0!important;margin:0;padding:0}:host ::ng-deep .eo-form-reference.acInputHidden .inputToken input{width:0!important}\n"] }]
|
|
207
207
|
}], ctorParameters: function () { return [{ type: i1.SearchService }]; }, propDecorators: { autoCompleteInput: [{
|
|
208
208
|
type: ViewChild,
|
|
209
209
|
args: ['autocomplete']
|
|
@@ -220,4 +220,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
220
220
|
}], onReferenceClicked: [{
|
|
221
221
|
type: Output
|
|
222
222
|
}] } });
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvcmVmZXJlbmNlL3JlZmVyZW5jZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL3JlZmVyZW5jZS9yZWZlcmVuY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFFTCxpQkFBaUIsRUFHakIsYUFBYSxFQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFnQixLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7O0FBb0JsRCxNQUFNLE9BQU8sa0JBQWtCO0lBcUI3QixZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVJ0Qyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBS2xELHVCQUF1QjtRQUN2QixlQUFVLEdBQXFDLEVBQUUsQ0FBQztRQUtsRCxvQkFBZSxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7UUFDakMsQ0FBQyxDQUFBO0lBSEQsQ0FBQztJQUtELGFBQWEsQ0FBQyxZQUFZLEVBQUUsS0FBSztRQUMvQixPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsQyxPQUFPO2dCQUNMLEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNKLEtBQUssRUFB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QkFBM0MsU0FBUzt1QkFBQyxjQUFjO2dCQUVoQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdG9yLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIE5HX1ZBTElEQVRPUlNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtTZWFyY2hTZXJ2aWNlLCBVdGlsc30gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7QXV0b0NvbXBsZXRlfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tcmVmZXJlbmNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlZmVyZW5jZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlZmVyZW5jZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJlZmVyZW5jZUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJlZmVyZW5jZUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBSZWZlcmVuY2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcblxuICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGUnKSBhdXRvQ29tcGxldGVJbnB1dDogQXV0b0NvbXBsZXRlO1xuXG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuICBASW5wdXQoKSBtdWx0aXNlbGVjdDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFByb3BlcnR5IHRvIHNlYXJjaCBmb3IsIGFzd2VsbCBhcyB0aGUgb2JqZWN0IHR5cGVcbiAgICovXG4gIEBJbnB1dCgpIHJlZmVyZW5jZToge2VsZW1lbnQ6IHN0cmluZywgdHlwZTogc3RyaW5nfTtcbiAgQElucHV0KCkgbWluTGVuZ3RoOiBudW1iZXI7XG4gIEBJbnB1dCgpIG1heExlbmd0aDogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKSBvblJlZmVyZW5jZUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgYXV0b2NvbXBsZXRlUmVzOiBhbnlbXTtcbiAgLy8gbW9kZWwgdmFsdWVcbiAgcHJpdmF0ZSB2YWx1ZTtcbiAgLy8gaW5uZXIgbmctbW9kZWwgdmFsdWVcbiAgaW5uZXJWYWx1ZToge3ZhbHVlOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmd9W10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UpIHtcbiAgfVxuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gIH1cblxuICB0cmFuZm9ybVZhbHVlKHZhbHVlSXNBcnJheSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWVJc0FycmF5ID8gdmFsdWUubWFwKHYgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgIHRpdGxlOiBudWxsXG4gICAgICB9XG4gICAgfSkgOiBbe1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgdGl0bGU6IG51bGxcbiAgICB9XTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCB2YWx1ZUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZUlzQXJyYXkgPyBBcnJheS5mcm9tKG5ldyBTZXQodmFsdWUpKSA6IHZhbHVlO1xuXG4gICAgICAvLyB0cmFuc2Zvcm0gdmFsdWUgdG8gaW5uZXIgdmFsdWVcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHRoaXMudHJhbmZvcm1WYWx1ZSh2YWx1ZUlzQXJyYXksIHRoaXMudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IFtdO1xuICAgIH1cblxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIGF1dG9jb21wbGV0ZVJlc3VsdChyZXMgPSBudWxsLCBxdWVyeSA9ICcnKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IFtdO1xuICAgIGlmIChyZXMgJiYgcmVzLmhpdHMgJiYgcmVzLmhpdHMudG90YWwudmFsdWUpIHtcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXMuaGl0cy5oaXRzXG4gICAgICAgIC5maWx0ZXIoaCA9PiAhdmFsdWUuaW5jbHVkZXMoaC5fc291cmNlW3RoaXMucmVmZXJlbmNlLmVsZW1lbnRdKSlcbiAgICAgICAgLm1hcChoID0+ICh7dmFsdWU6IGguX3NvdXJjZVt0aGlzLnJlZmVyZW5jZS5lbGVtZW50XSwgdGl0bGU6IGguX3NvdXJjZS50aXRsZX0pKTtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gVXRpbHMudW5pcUJ5KHJlc3VsdHMsICd2YWx1ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZVJlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGF1dG9jb21wbGV0ZUZuKHRlcm06IHN0cmluZykge1xuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0IHx8ICF0aGlzLmlubmVyVmFsdWUubGVuZ3RoKSB7XG4gICAgICBjb25zdCB7dHlwZSwgZWxlbWVudH0gPSB0aGlzLnJlZmVyZW5jZTtcbiAgICAgIGNvbnN0IHEgPSB7XG4gICAgICAgIGZpbHRlcnM6IHt9LFxuICAgICAgICB0eXBlczogW3R5cGVdLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAndGl0bGUnLFxuICAgICAgICAgIGVsZW1lbnRcbiAgICAgICAgXSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICAgIG9yZGVyOiAnYXNjJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgLy8gdG9kbzogYWRkIGNvbmRpdGlvbiB0byByZW1vdmUgdGhlIHZhbHVlcyB0aGF0IGFyZSBhbHJlYWR5IHNldCB3aGVuIHJlZ2V4IG9wZXJhdG9yIGlzIHN1cHBvcnRlZFxuICAgICAgcS5maWx0ZXJzW2VsZW1lbnRdID0ge1xuICAgICAgICBvOiAnZXEnLFxuICAgICAgICB2MTogYCR7dGVybX0qYFxuICAgICAgfTtcblxuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlXG4gICAgICAgIC5leGVjdXRlUXVlcnkocSlcbiAgICAgICAgLnN1YnNjcmliZShyZXMgPT4gdGhpcy5hdXRvY29tcGxldGVSZXN1bHQocmVzLCB0ZXJtKSwgKCkgPT4gdGhpcy5hdXRvY29tcGxldGVSZXN1bHQobnVsbCwgdGVybSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzdWx0KG51bGwsIHRlcm0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGhhbmRsZSBzZWxlY3Rpb24gY2hhbmdlcyB0byB0aGUgbW9kZWxcbiAgb25VbnNlbGVjdChpdGVtKSB7XG4gICAgdGhpcy5pbm5lclZhbHVlID0gdGhpcy5pbm5lclZhbHVlLmZpbHRlcihpdiA9PiBpdi52YWx1ZSAhPT0gaXRlbS52YWx1ZSk7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMubXVsdGlzZWxlY3QgPyBVdGlscy51bmlxQnkodGhpcy5pbm5lclZhbHVlLCAndmFsdWUnKS5tYXAoaXYgPT4gaXYudmFsdWUpIDogbnVsbDtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuY2xlYXJJbm5lcklucHV0KCk7XG4gICAgfVxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgLy8gaGFuZGxlIHNlbGVjdGlvbiBjaGFuZ2VzIHRvIHRoZSBtb2RlbFxuICBvblNlbGVjdChzZWxlY3RlZEl0ZW0pIHtcblxuICAgIGlmICh0eXBlb2Ygc2VsZWN0ZWRJdGVtID09PSAnc3RyaW5nJykgc2VsZWN0ZWRJdGVtID0ge1xuICAgICAgdmFsdWU6IHNlbGVjdGVkSXRlbSxcbiAgICAgIHRpdGxlOiBzZWxlY3RlZEl0ZW1cbiAgICB9XG5cbiAgICB0aGlzLmlubmVyVmFsdWUucHVzaChzZWxlY3RlZEl0ZW0pO1xuICAgIHRoaXMuaW5uZXJWYWx1ZSA9IFV0aWxzLnVuaXFCeSh0aGlzLmlubmVyVmFsdWUsICd2YWx1ZScpO1xuXG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmlubmVyVmFsdWUubWFwKGl2ID0+IGl2LnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZVswXS52YWx1ZTtcbiAgICB9XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBvbkF1dG9Db21wbGV0ZUJsdXIoKSB7XG4gICAgdGhpcy5jbGVhcklubmVySW5wdXQoKTtcbiAgfVxuXG4gIG9uS2V5VXBFbnRlcihldmVudCkge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKTtcbiAgICBpZiAoaW5wdXQubGVuZ3RoKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0KHt2YWx1ZTogaW5wdXQsIHRpdGxlOiBpbnB1dH0pO1xuICAgIH1cbiAgICB0aGlzLmNsZWFySW5uZXJJbnB1dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhcklubmVySW5wdXQoKSB7XG4gICAgdGhpcy5hdXRvQ29tcGxldGVJbnB1dC5jbGVhcklucHV0KCk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVSZXN1bHQoKTtcbiAgfVxuXG4gIGdldEl0ZW1MaW5rUGFyYW1zKGl0ZW0pIHtcbiAgICBjb25zdCBxdWVyeSA9IHtcbiAgICAgIHR5cGVzOiBbdGhpcy5yZWZlcmVuY2UudHlwZV0sXG4gICAgICBmaWx0ZXJzOiB7fVxuICAgIH07XG4gICAgcXVlcnkuZmlsdGVyc1t0aGlzLnJlZmVyZW5jZS5lbGVtZW50XSA9IHtcbiAgICAgIG86ICdlcScsXG4gICAgICB2MTogaXRlbS52YWx1ZVxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHF1ZXJ5OiBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkocXVlcnkpKVxuICAgIH07XG4gIH1cblxuICAvLyByZXR1cm5zIG51bGwgd2hlbiB2YWxpZCBlbHNlIHRoZSB2YWxpZGF0aW9uIG9iamVjdFxuICBwdWJsaWMgdmFsaWRhdGUoYzogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgbGV0IGVycjtcblxuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IDAgJiYgISF0aGlzLnZhbHVlLmZpbmQodiA9PiB2Lmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoKSkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnbWlubGVuZ3RoJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiAhIXRoaXMudmFsdWUuZmluZCh2ID0+IHYubGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydtYXhsZW5ndGgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiB0aGlzLnZhbHVlLmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydtaW5sZW5ndGgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiB0aGlzLm1heExlbmd0aCkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnbWF4bGVuZ3RoJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVyciA/IGVyciA6IG51bGw7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlby1mb3JtLXJlZmVyZW5jZVwiIFtuZ0NsYXNzXT1cInthY0lucHV0SGlkZGVuOiAhbXVsdGlzZWxlY3QgJiYgISFpbm5lclZhbHVlLmxlbmd0aH1cIj5cblxuICA8eXZjLWF1dG9jb21wbGV0ZSBbbmdNb2RlbF09XCJpbm5lclZhbHVlXCIgI2F1dG9jb21wbGV0ZSAoc3VnZ2VzdGlvblNlbGVjdCk9XCJvblNlbGVjdCgkZXZlbnQpXCJcbiAgICAoc3VnZ2VzdGlvblVuc2VsZWN0KT1cIm9uVW5zZWxlY3QoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIFttdWx0aXBsZV09XCJ0cnVlXCJcbiAgICBbYXV0b2NvbXBsZXRlVmFsdWVzXT1cImF1dG9jb21wbGV0ZVJlc1wiIFtmaWVsZF09XCIndmFsdWUnXCIgW2ZvcmNlU2VsZWN0aW9uXT1cInRydWVcIiAoYmx1cik9XCJvbkF1dG9Db21wbGV0ZUJsdXIoKVwiXG4gICAgKGtleXVwLmVudGVyKT1cIm9uS2V5VXBFbnRlcigkZXZlbnQpXCIgKGF1dG9jb21wbGV0ZUZuYyk9XCJhdXRvY29tcGxldGVGbigkZXZlbnQpXCI+XG5cbiAgICA8IS0tIHRlbXBsYXRlIGZvciB0aGUgc3VnZ2VzdCBsaXN0IC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSAjYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU+XG4gICAgICA8c3BhbiBjbGFzcz1cInl2Yy1hdXRvY29tcGxldGUtdG9rZW4tbGFiZWxcIiB0aXRsZT1cInt7aXRlbS52YWx1ZX19ICh7e2l0ZW0udGl0bGV9fSlcIj5cbiAgICAgICAgPHN0cm9uZz57e2l0ZW0udmFsdWV9fTwvc3Ryb25nPlxuICAgICAgICA8c3Bhbj57e2l0ZW0udGl0bGV9fTwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSB0ZW1wbGF0ZSBmb3IgdGhlIHNlbGVjdGVkIGl0ZW1zIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSAjY2hpcFRlbXBsYXRlPlxuICAgICAgPGEgY2xhc3M9XCJsaW5rIHJvdXRlci1saW5rXCIgW3JvdXRlckxpbmtdPVwiWycvcmVzdWx0J11cIiBbcXVlcnlQYXJhbXNdPVwiZ2V0SXRlbUxpbmtQYXJhbXMoaXRlbSlcIj5cbiAgICAgICAgPHN2ZyBmb2N1c2FibGU9XCJmYWxzZVwiIGNsYXNzPVwicmVmLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0zLjkgMTJjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFoNFY3SDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDVoNHYtMS45SDdjLTEuNzEgMC0zLjEtMS4zOS0zLjEtMy4xek04XG4gICAgICAgICAgMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01elwiPlxuICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2E+XG4gICAgICA8c3BhbiBjbGFzcz1cInl2Yy1hdXRvY29tcGxldGUtdG9rZW4tbGFiZWxcIj57e2l0ZW0udmFsdWV9fTwvc3Bhbj5cblxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwveXZjLWF1dG9jb21wbGV0ZT5cbjwvZGl2PlxuIl19
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvcmVmZXJlbmNlL3JlZmVyZW5jZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL3JlZmVyZW5jZS9yZWZlcmVuY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFFTCxpQkFBaUIsRUFHakIsYUFBYSxFQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFnQixLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7Ozs7Ozs7O0FBb0JsRCxNQUFNLE9BQU8sa0JBQWtCO0lBcUI3QixZQUFvQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVJ0Qyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBS2xELHVCQUF1QjtRQUN2QixlQUFVLEdBQXFDLEVBQUUsQ0FBQztRQUtsRCxvQkFBZSxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7UUFDakMsQ0FBQyxDQUFBO0lBSEQsQ0FBQztJQUtELGFBQWEsQ0FBQyxZQUFZLEVBQUUsS0FBSztRQUMvQixPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsQyxPQUFPO2dCQUNMLEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNKLEtBQUssRUFB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QkFBM0MsU0FBUzt1QkFBQyxjQUFjO2dCQUVoQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdG9yLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIE5HX1ZBTElEQVRPUlNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtTZWFyY2hTZXJ2aWNlLCBVdGlsc30gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7QXV0b0NvbXBsZXRlfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tcmVmZXJlbmNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlZmVyZW5jZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlZmVyZW5jZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJlZmVyZW5jZUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJlZmVyZW5jZUNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBSZWZlcmVuY2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcblxuICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGUnKSBhdXRvQ29tcGxldGVJbnB1dDogQXV0b0NvbXBsZXRlO1xuXG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuO1xuICBASW5wdXQoKSBtdWx0aXNlbGVjdDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFByb3BlcnR5IHRvIHNlYXJjaCBmb3IsIGFzd2VsbCBhcyB0aGUgb2JqZWN0IHR5cGVcbiAgICovXG4gIEBJbnB1dCgpIHJlZmVyZW5jZToge2VsZW1lbnQ6IHN0cmluZywgdHlwZTogc3RyaW5nfTtcbiAgQElucHV0KCkgbWluTGVuZ3RoOiBudW1iZXI7XG4gIEBJbnB1dCgpIG1heExlbmd0aDogbnVtYmVyO1xuXG4gIEBPdXRwdXQoKSBvblJlZmVyZW5jZUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgYXV0b2NvbXBsZXRlUmVzOiBhbnlbXTtcbiAgLy8gbW9kZWwgdmFsdWVcbiAgcHJpdmF0ZSB2YWx1ZTtcbiAgLy8gaW5uZXIgbmctbW9kZWwgdmFsdWVcbiAgaW5uZXJWYWx1ZToge3ZhbHVlOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmd9W10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UpIHtcbiAgfVxuXG4gIHByb3BhZ2F0ZUNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gIH1cblxuICB0cmFuZm9ybVZhbHVlKHZhbHVlSXNBcnJheSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWVJc0FycmF5ID8gdmFsdWUubWFwKHYgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgIHRpdGxlOiBudWxsXG4gICAgICB9XG4gICAgfSkgOiBbe1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgdGl0bGU6IG51bGxcbiAgICB9XTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCB2YWx1ZUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZUlzQXJyYXkgPyBBcnJheS5mcm9tKG5ldyBTZXQodmFsdWUpKSA6IHZhbHVlO1xuXG4gICAgICAvLyB0cmFuc2Zvcm0gdmFsdWUgdG8gaW5uZXIgdmFsdWVcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHRoaXMudHJhbmZvcm1WYWx1ZSh2YWx1ZUlzQXJyYXksIHRoaXMudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IFtdO1xuICAgIH1cblxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIGF1dG9jb21wbGV0ZVJlc3VsdChyZXMgPSBudWxsLCBxdWVyeSA9ICcnKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IFtdO1xuICAgIGlmIChyZXMgJiYgcmVzLmhpdHMgJiYgcmVzLmhpdHMudG90YWwudmFsdWUpIHtcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSByZXMuaGl0cy5oaXRzXG4gICAgICAgIC5maWx0ZXIoaCA9PiAhdmFsdWUuaW5jbHVkZXMoaC5fc291cmNlW3RoaXMucmVmZXJlbmNlLmVsZW1lbnRdKSlcbiAgICAgICAgLm1hcChoID0+ICh7dmFsdWU6IGguX3NvdXJjZVt0aGlzLnJlZmVyZW5jZS5lbGVtZW50XSwgdGl0bGU6IGguX3NvdXJjZS50aXRsZX0pKTtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gVXRpbHMudW5pcUJ5KHJlc3VsdHMsICd2YWx1ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZVJlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGF1dG9jb21wbGV0ZUZuKHRlcm06IHN0cmluZykge1xuICAgIGlmICh0aGlzLm11bHRpc2VsZWN0IHx8ICF0aGlzLmlubmVyVmFsdWUubGVuZ3RoKSB7XG4gICAgICBjb25zdCB7dHlwZSwgZWxlbWVudH0gPSB0aGlzLnJlZmVyZW5jZTtcbiAgICAgIGNvbnN0IHEgPSB7XG4gICAgICAgIGZpbHRlcnM6IHt9LFxuICAgICAgICB0eXBlczogW3R5cGVdLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAndGl0bGUnLFxuICAgICAgICAgIGVsZW1lbnRcbiAgICAgICAgXSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIHRpdGxlOiB7XG4gICAgICAgICAgICAgIG9yZGVyOiAnYXNjJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgLy8gdG9kbzogYWRkIGNvbmRpdGlvbiB0byByZW1vdmUgdGhlIHZhbHVlcyB0aGF0IGFyZSBhbHJlYWR5IHNldCB3aGVuIHJlZ2V4IG9wZXJhdG9yIGlzIHN1cHBvcnRlZFxuICAgICAgcS5maWx0ZXJzW2VsZW1lbnRdID0ge1xuICAgICAgICBvOiAnZXEnLFxuICAgICAgICB2MTogYCR7dGVybX0qYFxuICAgICAgfTtcblxuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlXG4gICAgICAgIC5leGVjdXRlUXVlcnkocSlcbiAgICAgICAgLnN1YnNjcmliZShyZXMgPT4gdGhpcy5hdXRvY29tcGxldGVSZXN1bHQocmVzLCB0ZXJtKSwgKCkgPT4gdGhpcy5hdXRvY29tcGxldGVSZXN1bHQobnVsbCwgdGVybSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzdWx0KG51bGwsIHRlcm0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIGhhbmRsZSBzZWxlY3Rpb24gY2hhbmdlcyB0byB0aGUgbW9kZWxcbiAgb25VbnNlbGVjdChpdGVtKSB7XG4gICAgdGhpcy5pbm5lclZhbHVlID0gdGhpcy5pbm5lclZhbHVlLmZpbHRlcihpdiA9PiBpdi52YWx1ZSAhPT0gaXRlbS52YWx1ZSk7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMubXVsdGlzZWxlY3QgPyBVdGlscy51bmlxQnkodGhpcy5pbm5lclZhbHVlLCAndmFsdWUnKS5tYXAoaXYgPT4gaXYudmFsdWUpIDogbnVsbDtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuY2xlYXJJbm5lcklucHV0KCk7XG4gICAgfVxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgLy8gaGFuZGxlIHNlbGVjdGlvbiBjaGFuZ2VzIHRvIHRoZSBtb2RlbFxuICBvblNlbGVjdChzZWxlY3RlZEl0ZW0pIHtcblxuICAgIGlmICh0eXBlb2Ygc2VsZWN0ZWRJdGVtID09PSAnc3RyaW5nJykgc2VsZWN0ZWRJdGVtID0ge1xuICAgICAgdmFsdWU6IHNlbGVjdGVkSXRlbSxcbiAgICAgIHRpdGxlOiBzZWxlY3RlZEl0ZW1cbiAgICB9XG5cbiAgICB0aGlzLmlubmVyVmFsdWUucHVzaChzZWxlY3RlZEl0ZW0pO1xuICAgIHRoaXMuaW5uZXJWYWx1ZSA9IFV0aWxzLnVuaXFCeSh0aGlzLmlubmVyVmFsdWUsICd2YWx1ZScpO1xuXG4gICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmlubmVyVmFsdWUubWFwKGl2ID0+IGl2LnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZVswXS52YWx1ZTtcbiAgICB9XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBvbkF1dG9Db21wbGV0ZUJsdXIoKSB7XG4gICAgdGhpcy5jbGVhcklubmVySW5wdXQoKTtcbiAgfVxuXG4gIG9uS2V5VXBFbnRlcihldmVudCkge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRyaW0oKTtcbiAgICBpZiAoaW5wdXQubGVuZ3RoKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0KHt2YWx1ZTogaW5wdXQsIHRpdGxlOiBpbnB1dH0pO1xuICAgIH1cbiAgICB0aGlzLmNsZWFySW5uZXJJbnB1dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhcklubmVySW5wdXQoKSB7XG4gICAgdGhpcy5hdXRvQ29tcGxldGVJbnB1dC5jbGVhcklucHV0KCk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVSZXN1bHQoKTtcbiAgfVxuXG4gIGdldEl0ZW1MaW5rUGFyYW1zKGl0ZW0pIHtcbiAgICBjb25zdCBxdWVyeSA9IHtcbiAgICAgIHR5cGVzOiBbdGhpcy5yZWZlcmVuY2UudHlwZV0sXG4gICAgICBmaWx0ZXJzOiB7fVxuICAgIH07XG4gICAgcXVlcnkuZmlsdGVyc1t0aGlzLnJlZmVyZW5jZS5lbGVtZW50XSA9IHtcbiAgICAgIG86ICdlcScsXG4gICAgICB2MTogaXRlbS52YWx1ZVxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHF1ZXJ5OiBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkocXVlcnkpKVxuICAgIH07XG4gIH1cblxuICAvLyByZXR1cm5zIG51bGwgd2hlbiB2YWxpZCBlbHNlIHRoZSB2YWxpZGF0aW9uIG9iamVjdFxuICBwdWJsaWMgdmFsaWRhdGUoYzogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgbGV0IGVycjtcblxuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IDAgJiYgISF0aGlzLnZhbHVlLmZpbmQodiA9PiB2Lmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoKSkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnbWlubGVuZ3RoJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiAhIXRoaXMudmFsdWUuZmluZCh2ID0+IHYubGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydtYXhsZW5ndGgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiB0aGlzLnZhbHVlLmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoKSB7XG4gICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgZXJyWydtaW5sZW5ndGgnXSA9IHtcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiB0aGlzLm1heExlbmd0aCkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnbWF4bGVuZ3RoJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGVyciA/IGVyciA6IG51bGw7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlby1mb3JtLXJlZmVyZW5jZVwiIFtuZ0NsYXNzXT1cInthY0lucHV0SGlkZGVuOiAhbXVsdGlzZWxlY3QgJiYgISFpbm5lclZhbHVlLmxlbmd0aH1cIj5cblxuICA8eXZjLWF1dG9jb21wbGV0ZSBbbmdNb2RlbF09XCJpbm5lclZhbHVlXCIgI2F1dG9jb21wbGV0ZSAoc3VnZ2VzdGlvblNlbGVjdCk9XCJvblNlbGVjdCgkZXZlbnQpXCJcbiAgICAoc3VnZ2VzdGlvblVuc2VsZWN0KT1cIm9uVW5zZWxlY3QoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIFttdWx0aXBsZV09XCJ0cnVlXCJcbiAgICBbYXV0b2NvbXBsZXRlVmFsdWVzXT1cImF1dG9jb21wbGV0ZVJlc1wiIFtmaWVsZF09XCIndmFsdWUnXCIgW2ZvcmNlU2VsZWN0aW9uXT1cInRydWVcIiAoYmx1cik9XCJvbkF1dG9Db21wbGV0ZUJsdXIoKVwiXG4gICAgKGtleXVwLmVudGVyKT1cIm9uS2V5VXBFbnRlcigkZXZlbnQpXCIgKGF1dG9jb21wbGV0ZUZuYyk9XCJhdXRvY29tcGxldGVGbigkZXZlbnQpXCI+XG5cbiAgICA8IS0tIHRlbXBsYXRlIGZvciB0aGUgc3VnZ2VzdCBsaXN0IC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSAjYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU+XG4gICAgICA8c3BhbiBjbGFzcz1cInl2Yy1hdXRvY29tcGxldGUtdG9rZW4tbGFiZWxcIiB0aXRsZT1cInt7aXRlbS52YWx1ZX19ICh7e2l0ZW0udGl0bGV9fSlcIj5cbiAgICAgICAgPHN0cm9uZz57e2l0ZW0udmFsdWV9fTwvc3Ryb25nPlxuICAgICAgICA8c3Bhbj57e2l0ZW0udGl0bGV9fTwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSB0ZW1wbGF0ZSBmb3IgdGhlIHNlbGVjdGVkIGl0ZW1zIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSAjY2hpcFRlbXBsYXRlPlxuICAgICAgPGEgY2xhc3M9XCJsaW5rIHJvdXRlci1saW5rXCIgW3JvdXRlckxpbmtdPVwiWycvcmVzdWx0J11cIiBbcXVlcnlQYXJhbXNdPVwiZ2V0SXRlbUxpbmtQYXJhbXMoaXRlbSlcIj5cbiAgICAgICAgPHN2ZyBmb2N1c2FibGU9XCJmYWxzZVwiIGNsYXNzPVwicmVmLWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0zLjkgMTJjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFoNFY3SDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDVoNHYtMS45SDdjLTEuNzEgMC0zLjEtMS4zOS0zLjEtMy4xek04XG4gICAgICAgICAgMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01elwiPlxuICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2E+XG4gICAgICA8c3BhbiBjbGFzcz1cInl2Yy1hdXRvY29tcGxldGUtdG9rZW4tbGFiZWxcIj57e2l0ZW0udmFsdWV9fTwvc3Bhbj5cblxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwveXZjLWF1dG9jb21wbGV0ZT5cbjwvZGl2PiJdfQ==
|
|
@@ -208,7 +208,7 @@ StringComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versio
|
|
|
208
208
|
useExisting: forwardRef(() => StringComponent),
|
|
209
209
|
multi: true
|
|
210
210
|
}
|
|
211
|
-
], ngImport: i0, template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\" type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\"\n [disabled]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n\n <!-- single line input with autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && !multiselect && autocomplete\" #autocomplete [(ngModel)]=\"value\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" (blur)=\"onBlur()\"\n (suggestionSelect)=\"onValueChange($event)\" (ngModelChange)=\"onValueChange($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n </yvc-autocomplete>\n\n <!-- single line input with multiselect-->\n <yvc-chips *ngIf=\"!multiline && multiselect && !autocomplete\" [(ngModel)]=\"value\" [disabled]=\"readonly\"\n (blur)=\"onBlur()\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-chips>\n\n <!-- single line input with multiselect and autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && multiselect && autocomplete\" [autocompleteValues]=\"autocompleteRes\"\n [multiple]=\"true\" [disabled]=\"readonly\" (blur)=\"onBlur()\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-autocomplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" *ngIf=\"multiline\" (blur)=\"onBlur()\" [(ngModel)]=\"value\"\n [readonly]=\"readonly\" [disabled]=\"readonly\" (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a target=\"_blank\" href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M180.309-212.001q-27.008 0-45.658-18.662-18.65-18.662-18.65-45.686v-407.626q0-27.024 18.65-45.524t45.658-18.5h599.382q27.008 0 45.658 18.662 18.65 18.662 18.65 45.686v407.626q0 27.024-18.65 45.524t-45.658 18.5H180.309ZM480-449.694 168-633.309v357q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462h599.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-357L480-449.694ZM480-517l305.846-179H174.154L480-517ZM168-633.309V-696-276.309q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462H168v-369.309Z\" />\n </svg>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M480-116.001q-75.154 0-141.499-28.462-66.346-28.461-115.962-78.076-49.615-49.616-78.076-115.962Q116.001-404.846 116.001-480q0-75.769 28.462-141.807 28.461-66.038 78.076-115.654 49.616-49.615 115.962-78.076Q404.846-843.999 480-843.999q75.769 0 141.807 28.462 66.038 28.461 115.654 78.076 49.615 49.616 78.076 115.654Q843.999-555.769 843.999-480q0 75.154-28.462 141.499-28.461 66.346-78.076 115.962-49.616 49.615-115.654 78.076Q555.769-116.001 480-116.001Zm0-53.845q21.616-21.616 40.539-70.424 18.923-48.808 29.077-108.808H410.384q10.923 61.539 29.462 110.347 18.538 48.808 40.154 68.885Zm-64.46-5q-19-30-34.308-75.539t-23.462-98.693H197.076q31.693 69.309 89.501 115.194 57.809 45.885 128.963 59.038Zm128.92 0q71.154-13.153 128.963-59.038 57.808-45.885 89.501-115.194H602.23Q592.153-295.539 576.845-250q-15.308 45.539-32.385 75.154Zm79.463-226.23h173.693q4.231-21.308 6.039-40.731 1.808-19.424 1.808-38.193t-1.808-38.693q-1.808-19.923-6.039-40.231H623.923q1.231 19.385 1.154 40.385-.077 21-.077 40.539t.077 39.539q.077 20-1.154 37.385Zm-218.308 0h148.77q2.769-22.308 3.462-41.347.692-19.038.692-37.577 0-18.539-.692-38.077-.693-19.539-3.462-40.847h-148.77q-2.769 21.308-3.462 40.847-.692 19.538-.692 38.077 0 18.539.692 38.077.693 19.539 3.462 40.847Zm-243.231 0h173.693q-1.231-19.385-1.154-40.385.077-21 .077-40.539t-.077-39.539q-.077-20 1.154-37.385H162.384q-4.231 21.308-6.039 40.731-1.808 19.424-1.808 38.193t1.808 38.193q1.808 19.423 6.039 40.731ZM602.23-610.922h160.694Q730.846-681 674-726.116q-56.847-45.115-129.54-59.423 19 31.923 33.923 76.885 14.924 44.962 23.847 97.732Zm-191.846 0h139.232q-10.923-61.154-30.039-110.924-19.115-49.769-39.577-68.308-20.462 18.539-39.577 68.308-19.116 49.77-30.039 110.924Zm-213.308 0H357.77q8.923-52.77 23.847-97.732 14.923-44.962 33.923-76.885-73.077 14.308-129.732 59.616-56.654 45.308-88.732 115.001Z\" />\n </svg>\n </a>\n </div>\n\n</div
|
|
211
|
+
], ngImport: i0, template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\" type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\"\n [disabled]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n\n <!-- single line input with autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && !multiselect && autocomplete\" #autocomplete [(ngModel)]=\"value\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" (blur)=\"onBlur()\"\n (suggestionSelect)=\"onValueChange($event)\" (ngModelChange)=\"onValueChange($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n </yvc-autocomplete>\n\n <!-- single line input with multiselect-->\n <yvc-chips *ngIf=\"!multiline && multiselect && !autocomplete\" [(ngModel)]=\"value\" [disabled]=\"readonly\"\n (blur)=\"onBlur()\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-chips>\n\n <!-- single line input with multiselect and autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && multiselect && autocomplete\" [autocompleteValues]=\"autocompleteRes\"\n [multiple]=\"true\" [disabled]=\"readonly\" (blur)=\"onBlur()\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-autocomplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" *ngIf=\"multiline\" (blur)=\"onBlur()\" [(ngModel)]=\"value\"\n [readonly]=\"readonly\" [disabled]=\"readonly\" (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a target=\"_blank\" href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M180.309-212.001q-27.008 0-45.658-18.662-18.65-18.662-18.65-45.686v-407.626q0-27.024 18.65-45.524t45.658-18.5h599.382q27.008 0 45.658 18.662 18.65 18.662 18.65 45.686v407.626q0 27.024-18.65 45.524t-45.658 18.5H180.309ZM480-449.694 168-633.309v357q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462h599.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-357L480-449.694ZM480-517l305.846-179H174.154L480-517ZM168-633.309V-696-276.309q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462H168v-369.309Z\" />\n </svg>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M480-116.001q-75.154 0-141.499-28.462-66.346-28.461-115.962-78.076-49.615-49.616-78.076-115.962Q116.001-404.846 116.001-480q0-75.769 28.462-141.807 28.461-66.038 78.076-115.654 49.616-49.615 115.962-78.076Q404.846-843.999 480-843.999q75.769 0 141.807 28.462 66.038 28.461 115.654 78.076 49.615 49.616 78.076 115.654Q843.999-555.769 843.999-480q0 75.154-28.462 141.499-28.461 66.346-78.076 115.962-49.616 49.615-115.654 78.076Q555.769-116.001 480-116.001Zm0-53.845q21.616-21.616 40.539-70.424 18.923-48.808 29.077-108.808H410.384q10.923 61.539 29.462 110.347 18.538 48.808 40.154 68.885Zm-64.46-5q-19-30-34.308-75.539t-23.462-98.693H197.076q31.693 69.309 89.501 115.194 57.809 45.885 128.963 59.038Zm128.92 0q71.154-13.153 128.963-59.038 57.808-45.885 89.501-115.194H602.23Q592.153-295.539 576.845-250q-15.308 45.539-32.385 75.154Zm79.463-226.23h173.693q4.231-21.308 6.039-40.731 1.808-19.424 1.808-38.193t-1.808-38.693q-1.808-19.923-6.039-40.231H623.923q1.231 19.385 1.154 40.385-.077 21-.077 40.539t.077 39.539q.077 20-1.154 37.385Zm-218.308 0h148.77q2.769-22.308 3.462-41.347.692-19.038.692-37.577 0-18.539-.692-38.077-.693-19.539-3.462-40.847h-148.77q-2.769 21.308-3.462 40.847-.692 19.538-.692 38.077 0 18.539.692 38.077.693 19.539 3.462 40.847Zm-243.231 0h173.693q-1.231-19.385-1.154-40.385.077-21 .077-40.539t-.077-39.539q-.077-20 1.154-37.385H162.384q-4.231 21.308-6.039 40.731-1.808 19.424-1.808 38.193t1.808 38.193q1.808 19.423 6.039 40.731ZM602.23-610.922h160.694Q730.846-681 674-726.116q-56.847-45.115-129.54-59.423 19 31.923 33.923 76.885 14.924 44.962 23.847 97.732Zm-191.846 0h139.232q-10.923-61.154-30.039-110.924-19.115-49.769-39.577-68.308-20.462 18.539-39.577 68.308-19.116 49.77-30.039 110.924Zm-213.308 0H357.77q8.923-52.77 23.847-97.732 14.923-44.962 33.923-76.885-73.077 14.308-129.732 59.616-56.654 45.308-88.732 115.001Z\" />\n </svg>\n </a>\n </div>\n\n</div>", styles: [".eo-form-string{display:flex;flex-flow:row nowrap;align-items:center}.eo-form-string yvc-chips,.eo-form-string yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-form-string .classify a{color:var(--text-color-hint);display:flex;flex-flow:column;align-items:center;justify-content:center}.eo-form-string .classify a:hover,.eo-form-string .classify a:focus,.eo-form-string .classify a:focus-visible{color:var(--color-accent);outline:0}.eo-form-string .classify a svg{fill:currentColor}.eo-form-string .classify.empty{display:none}.eo-form-string .input-textarea{width:100%;resize:vertical;border:0;background-color:transparent;color:var(--text-color-body)}.eo-form-string .input-textarea.size-small{height:4em}.eo-form-string .input-textarea.size-medium{height:6em}.eo-form-string .input-textarea.size-large{height:8em}:host ::ng-deep input{width:100%;background:transparent;border:0;padding:.25em}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.Chips, selector: "yvc-chips", inputs: ["field", "placeholder", "max", "disabled"] }, { kind: "component", type: i5.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }] });
|
|
212
212
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: StringComponent, decorators: [{
|
|
213
213
|
type: Component,
|
|
214
214
|
args: [{ selector: 'eo-string', providers: [
|
|
@@ -222,7 +222,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
222
222
|
useExisting: forwardRef(() => StringComponent),
|
|
223
223
|
multi: true
|
|
224
224
|
}
|
|
225
|
-
], template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\" type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\"\n [disabled]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n\n <!-- single line input with autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && !multiselect && autocomplete\" #autocomplete [(ngModel)]=\"value\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" (blur)=\"onBlur()\"\n (suggestionSelect)=\"onValueChange($event)\" (ngModelChange)=\"onValueChange($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n </yvc-autocomplete>\n\n <!-- single line input with multiselect-->\n <yvc-chips *ngIf=\"!multiline && multiselect && !autocomplete\" [(ngModel)]=\"value\" [disabled]=\"readonly\"\n (blur)=\"onBlur()\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-chips>\n\n <!-- single line input with multiselect and autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && multiselect && autocomplete\" [autocompleteValues]=\"autocompleteRes\"\n [multiple]=\"true\" [disabled]=\"readonly\" (blur)=\"onBlur()\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-autocomplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" *ngIf=\"multiline\" (blur)=\"onBlur()\" [(ngModel)]=\"value\"\n [readonly]=\"readonly\" [disabled]=\"readonly\" (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a target=\"_blank\" href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M180.309-212.001q-27.008 0-45.658-18.662-18.65-18.662-18.65-45.686v-407.626q0-27.024 18.65-45.524t45.658-18.5h599.382q27.008 0 45.658 18.662 18.65 18.662 18.65 45.686v407.626q0 27.024-18.65 45.524t-45.658 18.5H180.309ZM480-449.694 168-633.309v357q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462h599.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-357L480-449.694ZM480-517l305.846-179H174.154L480-517ZM168-633.309V-696-276.309q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462H168v-369.309Z\" />\n </svg>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M480-116.001q-75.154 0-141.499-28.462-66.346-28.461-115.962-78.076-49.615-49.616-78.076-115.962Q116.001-404.846 116.001-480q0-75.769 28.462-141.807 28.461-66.038 78.076-115.654 49.616-49.615 115.962-78.076Q404.846-843.999 480-843.999q75.769 0 141.807 28.462 66.038 28.461 115.654 78.076 49.615 49.616 78.076 115.654Q843.999-555.769 843.999-480q0 75.154-28.462 141.499-28.461 66.346-78.076 115.962-49.616 49.615-115.654 78.076Q555.769-116.001 480-116.001Zm0-53.845q21.616-21.616 40.539-70.424 18.923-48.808 29.077-108.808H410.384q10.923 61.539 29.462 110.347 18.538 48.808 40.154 68.885Zm-64.46-5q-19-30-34.308-75.539t-23.462-98.693H197.076q31.693 69.309 89.501 115.194 57.809 45.885 128.963 59.038Zm128.92 0q71.154-13.153 128.963-59.038 57.808-45.885 89.501-115.194H602.23Q592.153-295.539 576.845-250q-15.308 45.539-32.385 75.154Zm79.463-226.23h173.693q4.231-21.308 6.039-40.731 1.808-19.424 1.808-38.193t-1.808-38.693q-1.808-19.923-6.039-40.231H623.923q1.231 19.385 1.154 40.385-.077 21-.077 40.539t.077 39.539q.077 20-1.154 37.385Zm-218.308 0h148.77q2.769-22.308 3.462-41.347.692-19.038.692-37.577 0-18.539-.692-38.077-.693-19.539-3.462-40.847h-148.77q-2.769 21.308-3.462 40.847-.692 19.538-.692 38.077 0 18.539.692 38.077.693 19.539 3.462 40.847Zm-243.231 0h173.693q-1.231-19.385-1.154-40.385.077-21 .077-40.539t-.077-39.539q-.077-20 1.154-37.385H162.384q-4.231 21.308-6.039 40.731-1.808 19.424-1.808 38.193t1.808 38.193q1.808 19.423 6.039 40.731ZM602.23-610.922h160.694Q730.846-681 674-726.116q-56.847-45.115-129.54-59.423 19 31.923 33.923 76.885 14.924 44.962 23.847 97.732Zm-191.846 0h139.232q-10.923-61.154-30.039-110.924-19.115-49.769-39.577-68.308-20.462 18.539-39.577 68.308-19.116 49.77-30.039 110.924Zm-213.308 0H357.77q8.923-52.77 23.847-97.732 14.923-44.962 33.923-76.885-73.077 14.308-129.732 59.616-56.654 45.308-88.732 115.001Z\" />\n </svg>\n </a>\n </div>\n\n</div
|
|
225
|
+
], template: "<div class=\"eo-form-string\">\n\n <input *ngIf=\"!multiline && !multiselect && !autocomplete\" type=\"text\" (blur)=\"onBlur()\" [readonly]=\"readonly\"\n [disabled]=\"readonly\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" />\n\n <!-- single line input with autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && !multiselect && autocomplete\" #autocomplete [(ngModel)]=\"value\"\n [disabled]=\"readonly\" [autocompleteValues]=\"autocompleteRes\" (blur)=\"onBlur()\"\n (suggestionSelect)=\"onValueChange($event)\" (ngModelChange)=\"onValueChange($event)\"\n (autocompleteFnc)=\"autocompleteFn($event)\">\n </yvc-autocomplete>\n\n <!-- single line input with multiselect-->\n <yvc-chips *ngIf=\"!multiline && multiselect && !autocomplete\" [(ngModel)]=\"value\" [disabled]=\"readonly\"\n (blur)=\"onBlur()\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-chips>\n\n <!-- single line input with multiselect and autocomplete -->\n <yvc-autocomplete *ngIf=\"!multiline && multiselect && autocomplete\" [autocompleteValues]=\"autocompleteRes\"\n [multiple]=\"true\" [disabled]=\"readonly\" (blur)=\"onBlur()\" (autocompleteFnc)=\"autocompleteFn($event)\"\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\n </yvc-autocomplete>\n\n <!-- multi line text inputs -->\n <textarea class=\"input-textarea size-{{size}}\" *ngIf=\"multiline\" (blur)=\"onBlur()\" [(ngModel)]=\"value\"\n [readonly]=\"readonly\" [disabled]=\"readonly\" (ngModelChange)=\"onValueChange($event)\"></textarea>\n\n <div class=\"classify\" [ngClass]=\"{empty: !value || situation === 'SEARCH'}\">\n <a target=\"_blank\" href=\"mailto:{{formatedValue}}\" *ngIf=\"classification === 'email' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M180.309-212.001q-27.008 0-45.658-18.662-18.65-18.662-18.65-45.686v-407.626q0-27.024 18.65-45.524t45.658-18.5h599.382q27.008 0 45.658 18.662 18.65 18.662 18.65 45.686v407.626q0 27.024-18.65 45.524t-45.658 18.5H180.309ZM480-449.694 168-633.309v357q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462h599.382q5.385 0 8.847-3.462 3.462-3.462 3.462-8.847v-357L480-449.694ZM480-517l305.846-179H174.154L480-517ZM168-633.309V-696-276.309q0 5.385 3.462 8.847 3.462 3.462 8.847 3.462H168v-369.309Z\" />\n </svg>\n </a>\n <a target=\"_blank\" href=\"{{value}}\" *ngIf=\"classification === 'url' && valid\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\">\n <path\n d=\"M480-116.001q-75.154 0-141.499-28.462-66.346-28.461-115.962-78.076-49.615-49.616-78.076-115.962Q116.001-404.846 116.001-480q0-75.769 28.462-141.807 28.461-66.038 78.076-115.654 49.616-49.615 115.962-78.076Q404.846-843.999 480-843.999q75.769 0 141.807 28.462 66.038 28.461 115.654 78.076 49.615 49.616 78.076 115.654Q843.999-555.769 843.999-480q0 75.154-28.462 141.499-28.461 66.346-78.076 115.962-49.616 49.615-115.654 78.076Q555.769-116.001 480-116.001Zm0-53.845q21.616-21.616 40.539-70.424 18.923-48.808 29.077-108.808H410.384q10.923 61.539 29.462 110.347 18.538 48.808 40.154 68.885Zm-64.46-5q-19-30-34.308-75.539t-23.462-98.693H197.076q31.693 69.309 89.501 115.194 57.809 45.885 128.963 59.038Zm128.92 0q71.154-13.153 128.963-59.038 57.808-45.885 89.501-115.194H602.23Q592.153-295.539 576.845-250q-15.308 45.539-32.385 75.154Zm79.463-226.23h173.693q4.231-21.308 6.039-40.731 1.808-19.424 1.808-38.193t-1.808-38.693q-1.808-19.923-6.039-40.231H623.923q1.231 19.385 1.154 40.385-.077 21-.077 40.539t.077 39.539q.077 20-1.154 37.385Zm-218.308 0h148.77q2.769-22.308 3.462-41.347.692-19.038.692-37.577 0-18.539-.692-38.077-.693-19.539-3.462-40.847h-148.77q-2.769 21.308-3.462 40.847-.692 19.538-.692 38.077 0 18.539.692 38.077.693 19.539 3.462 40.847Zm-243.231 0h173.693q-1.231-19.385-1.154-40.385.077-21 .077-40.539t-.077-39.539q-.077-20 1.154-37.385H162.384q-4.231 21.308-6.039 40.731-1.808 19.424-1.808 38.193t1.808 38.193q1.808 19.423 6.039 40.731ZM602.23-610.922h160.694Q730.846-681 674-726.116q-56.847-45.115-129.54-59.423 19 31.923 33.923 76.885 14.924 44.962 23.847 97.732Zm-191.846 0h139.232q-10.923-61.154-30.039-110.924-19.115-49.769-39.577-68.308-20.462 18.539-39.577 68.308-19.116 49.77-30.039 110.924Zm-213.308 0H357.77q8.923-52.77 23.847-97.732 14.923-44.962 33.923-76.885-73.077 14.308-129.732 59.616-56.654 45.308-88.732 115.001Z\" />\n </svg>\n </a>\n </div>\n\n</div>", styles: [".eo-form-string{display:flex;flex-flow:row nowrap;align-items:center}.eo-form-string yvc-chips,.eo-form-string yvc-autocomplete{width:100%;border:0;outline:0!important}.eo-form-string .classify a{color:var(--text-color-hint);display:flex;flex-flow:column;align-items:center;justify-content:center}.eo-form-string .classify a:hover,.eo-form-string .classify a:focus,.eo-form-string .classify a:focus-visible{color:var(--color-accent);outline:0}.eo-form-string .classify a svg{fill:currentColor}.eo-form-string .classify.empty{display:none}.eo-form-string .input-textarea{width:100%;resize:vertical;border:0;background-color:transparent;color:var(--text-color-body)}.eo-form-string .input-textarea.size-small{height:4em}.eo-form-string .input-textarea.size-medium{height:6em}.eo-form-string .input-textarea.size-large{height:8em}:host ::ng-deep input{width:100%;background:transparent;border:0;padding:.25em}\n"] }]
|
|
226
226
|
}], ctorParameters: function () { return [{ type: i1.BackendService }, { type: i1.EnvironmentService }]; }, propDecorators: { autocomplete: [{
|
|
227
227
|
type: Input
|
|
228
228
|
}], multiselect: [{
|
|
@@ -248,4 +248,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
248
248
|
}], maxLength: [{
|
|
249
249
|
type: Input
|
|
250
250
|
}] } });
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvc3RyaW5nL3N0cmluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL3N0cmluZy9zdHJpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFJTCxpQkFBaUIsRUFDakIsYUFBYSxFQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFxQyxLQUFLLEVBQWlCLE1BQU0sY0FBYyxDQUFDOzs7Ozs7O0FBb0J2RixNQUFNLE9BQU8sZUFBZTtJQUcxQixJQUNJLFlBQVksQ0FBQyxPQUFnQjtRQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFzQkQsWUFBb0IsT0FBdUIsRUFBVSxVQUE4QjtRQUEvRCxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFVLGVBQVUsR0FBVixVQUFVLENBQW9CO1FBR25GLG9CQUFlLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRTtRQUM3QixDQUFDLENBQUM7SUFIRixDQUFDO0lBS0QsWUFBWSxDQUFDLEtBQUs7UUFDaEIsMENBQTBDO1FBQzFDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hDLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87SUFDekIsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFHO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsY0FBYyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLFNBQVM7UUFDZixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDaEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUM7YUFDcEQ7aUJBQU07Z0JBQ0wsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUM7YUFDM0M7U0FDRjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLGdDQUFnQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTzthQUNULE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO2FBQ2xCLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNmLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNYLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHNCQUFzQixDQUFDLE1BQU07UUFFbkMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUMvQixPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxJQUFJLE9BQU8sQ0FBQztZQUNaLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxPQUFPLEVBQUU7Z0JBQ25DLE9BQU8sR0FBRywyTUFBMk0sQ0FBQzthQUN2TjtpQkFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssS0FBSyxFQUFFO2dCQUN4QyxPQUFPLEdBQUcsdUZBQXVGLENBQUM7YUFDbkc7WUFDRCxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLEdBQUcsQ0FBQztRQUNSLDhCQUE4QjtRQUM5QixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUM1QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDaEYsR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDVCxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUc7d0JBQ2IsS0FBSyxFQUFFLEtBQUs7cUJBQ2IsQ0FBQTtpQkFDRjthQUNGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3hDLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQ1QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHO3dCQUNiLEtBQUssRUFBRSxLQUFLO3FCQUNiLENBQUE7aUJBQ0Y7YUFDRjtTQUNGO1FBQ0QsbUNBQW1DO1FBQ25DLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUNuQyxHQUFHLEdBQUcsRUFBRSxDQUFDO3dCQUNULEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUc7NEJBQzVDLEtBQUssRUFBRSxLQUFLO3lCQUNiLENBQUM7cUJBQ0g7aUJBQ0Y7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDNUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDVCxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHO3dCQUM1QyxLQUFLLEVBQUUsS0FBSztxQkFDYixDQUFDO2lCQUNIO2FBQ0Y7U0FDRjtRQUNELHdDQUF3QztRQUN4QyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDckMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNwQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDOUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDVCxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUc7d0JBQ2pCLEtBQUssRUFBRSxLQUFLO3FCQUNiLENBQUE7aUJBQ0Y7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQzlFLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQ1QsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHO3dCQUNqQixLQUFLLEVBQUUsS0FBSztxQkFDYixDQUFBO2lCQUNGO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDL0QsR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDVCxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUc7d0JBQ2pCLEtBQUssRUFBRSxLQUFLO3FCQUNiLENBQUE7aUJBQ0Y7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUN0QyxHQUFHLEdBQUcsRUFBRSxDQUFDO29CQUNULEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRzt3QkFDakIsS0FBSyxFQUFFLEtBQUs7cUJBQ2IsQ0FBQTtpQkFDRjthQUNGO1NBQ0Y7UUFDRCx1Q0FBdUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUN4QixJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO3dCQUNoQyxHQUFHLEdBQUcsRUFBRSxDQUFDO3dCQUNULEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHOzRCQUN2QixLQUFLLEVBQUUsS0FBSzt5QkFDYixDQUFBO3FCQUNGO2lCQUNGO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO29CQUNsRCxHQUFHLEdBQUcsRUFBRSxDQUFDO29CQUNULEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHO3dCQUN2QixLQUFLLEVBQUUsS0FBSztxQkFDYixDQUFBO2lCQUNGO2FBQ0Y7U0FDRjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDbEIsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxxREFBcUQ7SUFDOUMsUUFBUSxDQUFDLENBQXFCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFCLENBQUM7OzRHQXhOVSxlQUFlO2dHQUFmLGVBQWUsd1VBYmY7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDOUMsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNEO1lBQ0UsT0FBTyxFQUFFLGFBQWE7WUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDOUMsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLDBCQzFCSCxtNklBMkNBOzJGRGZhLGVBQWU7a0JBakIzQixTQUFTOytCQUNFLFdBQVcsYUFHVjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQzs0QkFDOUMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtzSUFNRyxZQUFZO3NCQURmLEtBQUs7Z0JBU0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIFZhbGlkYXRvcixcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5HX1ZBTElEQVRPUlNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtCYWNrZW5kU2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlLCBVdGlscywgRm9ybWF0ZWRNYWlsVG99IGZyb20gJ0Blby1zZGsvY29yZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tc3RyaW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0cmluZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0cmluZy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFN0cmluZ0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFN0cmluZ0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTdHJpbmdDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcblxuICBwcml2YXRlIF9hdXRvY29tcGxldGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHNldCBhdXRvY29tcGxldGUoYXV0b0NvbTogYm9vbGVhbikge1xuICAgIHRoaXMuX2F1dG9jb21wbGV0ZSA9IGF1dG9Db207XG4gIH1cblxuICBnZXQgYXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9hdXRvY29tcGxldGU7XG4gIH1cblxuICBASW5wdXQoKSBtdWx0aXNlbGVjdDogYm9vbGVhbjtcbiAgQElucHV0KCkgbXVsdGlsaW5lOiBib29sZWFuO1xuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbjtcbiAgQElucHV0KCkgYXV0b2ZvY3VzOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGNsYXNzaWZpY2F0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNpdHVhdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSByZWdleDogc3RyaW5nO1xuICBASW5wdXQoKSBxbmFtZTogc3RyaW5nO1xuICAvLyBjb3VsZCBiZSBzbWFsbCwgbWVkaXVtLCBsYXJnZVxuICBASW5wdXQoKSBzaXplOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG1pbkxlbmd0aDogbnVtYmVyO1xuICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlcjtcblxuICBhdXRvY29tcGxldGVSZXM6IGFueVtdO1xuICBmb3JtYXRlZFZhbHVlOiBGb3JtYXRlZE1haWxUbztcbiAgLy8gbW9kZWwgdmFsdWVcbiAgdmFsdWU7XG4gIHZhbGlkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsIHByaXZhdGUgZW52U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlKSB7XG4gIH1cblxuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7XG4gIH07XG5cbiAgb25LZXlVcEVudGVyKGV2ZW50KSB7XG4gICAgLy8gYXBwbGllcyB0byBtdWx0aXNlbGVjdCBhbmQgYXV0b2NvbXBsZXRlXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQudmFsdWUudHJpbSgpO1xuICAgIGlmIChpbnB1dCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlIDogW107XG4gICAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWUsIGlucHV0XTtcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtYXRlZFZhbHVlID0gVXRpbHMuZm9ybWF0TWFpbFRvKHZhbHVlLCB0aGlzLmNsYXNzaWZpY2F0aW9uID09PSAnZW1haWwnKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgbnVsbDtcbiAgICB0aGlzLl92YWxpZGF0ZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIG9uVmFsdWVDaGFuZ2UoZXZ0KSB7XG4gICAgdGhpcy5mb3JtYXRlZFZhbHVlID0gVXRpbHMuZm9ybWF0TWFpbFRvKGV2dCwgdGhpcy5jbGFzc2lmaWNhdGlvbiA9PT0gJ2VtYWlsJyk7XG4gICAgdGhpcy52YWx1ZSA9IGV2dC5sZW5ndGggPyBldnQgOiBudWxsO1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIGlmICh0aGlzLnRyaW1WYWx1ZSgpKSB7XG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJpbXMgdGhlIGN1cnJlbnQgdmFsdWUgYW5kIHJldHVybnMgd2V0aGVyIG9yIG5vdCBpdCBoYXMgYmVlbiB0cmltbWVkXG4gICAqL1xuICBwcml2YXRlIHRyaW1WYWx1ZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoQmVmb3JlID0gdGhpcy52YWx1ZS5qb2luKCcnKS5sZW5ndGg7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLm1hcCh2ID0+IHYudHJpbSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUuam9pbignJykubGVuZ3RoICE9PSBsZW5ndGhCZWZvcmU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBsZW5ndGhCZWZvcmUgPSB0aGlzLnZhbHVlLmxlbmd0aDtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUudHJpbSgpO1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5sZW5ndGggIT09IGxlbmd0aEJlZm9yZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgYXV0b2NvbXBsZXRlRm4odGVybTogc3RyaW5nKSB7XG4gICAgY29uc3QgdXJpID0gYC9hdXRvY29tcGxldGUvZWxlbWVudD9wcmVmaXg9JHtlbmNvZGVVUklDb21wb25lbnQodGVybSl9JnFuYW1lPSR7dGhpcy5xbmFtZX1gO1xuICAgIGNvbnN0IGJhc2UgPSB0aGlzLmJhY2tlbmQuZ2V0U2VhcmNoQmFzZSgpO1xuICAgIHRoaXMuYmFja2VuZFxuICAgICAgLmdldEpzb24odXJpLCBiYXNlKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICBsZXQgciA9IFtdO1xuICAgICAgICByZXMuZm9yRWFjaChpID0+IHIucHVzaChpLnZhbHVlKSk7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gcjtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUNsYXNzaWZpY2F0aW9uKHN0cmluZyk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKHRoaXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBwYXR0ZXJuO1xuICAgICAgaWYgKHRoaXMuY2xhc3NpZmljYXRpb24gPT09ICdlbWFpbCcpIHtcbiAgICAgICAgcGF0dGVybiA9IC9eKD86KC4rPylcXHMqPChcXHcrKShbXFwtKy5dW1xcd10rKSpAKFxcd1tcXC1cXHddKlxcLil7MSw1fShbQS1aYS16XXsyLDZ9KT58W1wiJ117MX0oLis/KVtcIiddezF9XFxzKjwoXFx3KykoW1xcLSsuXVtcXHddKykqQChcXHdbXFwtXFx3XSpcXC4pezEsNX0oW0EtWmEtel17Miw2fSk+fChcXHcrKShbXFwtKy5dW1xcd10rKSpAKFxcd1tcXC1cXHddKlxcLil7MSw1fShbQS1aYS16XXsyLDZ9KSkkLztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jbGFzc2lmaWNhdGlvbiA9PT0gJ3VybCcpIHtcbiAgICAgICAgcGF0dGVybiA9IC8oaHR0cHxmdHB8aHR0cHMpOlxcL1xcL1tcXHctXSsoXFwuW1xcdy1dKykrKFtcXHcuLEA/Xj0lJmFtcDs6XFwvfisjLV0qW1xcd0A/Xj0lJmFtcDtcXC9+KyMtXSk/LztcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXR0ZXJuID8gcGF0dGVybi50ZXN0KHN0cmluZykgOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3ZhbGlkYXRlKCkge1xuICAgIGxldCBlcnI7XG4gICAgLy8gdmFsaWRhdGUgcmVndWxhciBleHByZXNzaW9uXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy5yZWdleCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiAhIXRoaXMudmFsdWUuZmluZCh2ID0+ICFSZWdFeHAodGhpcy5yZWdleCkudGVzdCh2KSkpIHtcbiAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICBlcnJbJ3JlZ2V4J10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghUmVnRXhwKHRoaXMucmVnZXgpLnRlc3QodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICBlcnJbJ3JlZ2V4J10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdmFsaWRhdGUgY2xhc3NpZmljYXRpb24gc2V0dGluZ3NcbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLmNsYXNzaWZpY2F0aW9uKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICBmb3IgKGxldCB2IG9mIHRoaXMudmFsdWUpIHtcbiAgICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVDbGFzc2lmaWNhdGlvbih2KSkge1xuICAgICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgICBlcnJbJ2NsYXNzaWZpY2F0aW9uJyArIHRoaXMuY2xhc3NpZmljYXRpb25dID0ge1xuICAgICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVDbGFzc2lmaWNhdGlvbih0aGlzLnZhbHVlKSkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnY2xhc3NpZmljYXRpb24nICsgdGhpcy5jbGFzc2lmaWNhdGlvbl0gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHZhbGlkYXRlIGxlbmd0aCBoZXJlIHdoZW4gbXVsdGlzZWxlY3RcbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlICE9PSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiAwICYmICEhdGhpcy52YWx1ZS5maW5kKHYgPT4gdi5sZW5ndGggPCB0aGlzLm1pbkxlbmd0aCkpIHtcbiAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICBlcnJbJ21pbmxlbmd0aCddID0ge1xuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IDAgJiYgISF0aGlzLnZhbHVlLmZpbmQodiA9PiB2Lmxlbmd0aCA+IHRoaXMubWF4TGVuZ3RoKSkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnbWF4bGVuZ3RoJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IDAgJiYgdGhpcy52YWx1ZS5sZW5ndGggPCB0aGlzLm1pbkxlbmd0aCkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnbWlubGVuZ3RoJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICBlcnJbJ21heGxlbmd0aCddID0ge1xuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHZhbGlkYXRlIGludmFsaWQgaWYgb25seSB3aGl0ZXNwYWNlc1xuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIGZvciAobGV0IHYgb2YgdGhpcy52YWx1ZSkge1xuICAgICAgICAgIGlmICh2Lmxlbmd0aCAmJiAhdi50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICAgIGVyclsnb25seVdoaXRlc3BhY2VzJ10gPSB7XG4gICAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoICYmICF0aGlzLnZhbHVlLnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICBlcnJbJ29ubHlXaGl0ZXNwYWNlcyddID0ge1xuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudmFsaWQgPSAhZXJyO1xuICAgIHJldHVybiBlcnIgfHwgbnVsbDtcbiAgfVxuXG4gIC8vIHJldHVybnMgbnVsbCB3aGVuIHZhbGlkIGVsc2UgdGhlIHZhbGlkYXRpb24gb2JqZWN0XG4gIHB1YmxpYyB2YWxpZGF0ZShjOiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImVvLWZvcm0tc3RyaW5nXCI+XG5cbiAgPGlucHV0ICpuZ0lmPVwiIW11bHRpbGluZSAmJiAhbXVsdGlzZWxlY3QgJiYgIWF1dG9jb21wbGV0ZVwiIHR5cGU9XCJ0ZXh0XCIgKGJsdXIpPVwib25CbHVyKClcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIFsobmdNb2RlbCldPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIiAvPlxuXG4gIDwhLS0gc2luZ2xlIGxpbmUgaW5wdXQgd2l0aCBhdXRvY29tcGxldGUgLS0+XG4gIDx5dmMtYXV0b2NvbXBsZXRlICpuZ0lmPVwiIW11bHRpbGluZSAmJiAhbXVsdGlzZWxlY3QgJiYgYXV0b2NvbXBsZXRlXCIgI2F1dG9jb21wbGV0ZSBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiBbYXV0b2NvbXBsZXRlVmFsdWVzXT1cImF1dG9jb21wbGV0ZVJlc1wiIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAoc3VnZ2VzdGlvblNlbGVjdCk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIiAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgIChhdXRvY29tcGxldGVGbmMpPVwiYXV0b2NvbXBsZXRlRm4oJGV2ZW50KVwiPlxuICA8L3l2Yy1hdXRvY29tcGxldGU+XG5cbiAgPCEtLSBzaW5nbGUgbGluZSBpbnB1dCB3aXRoIG11bHRpc2VsZWN0LS0+XG4gIDx5dmMtY2hpcHMgKm5nSWY9XCIhbXVsdGlsaW5lICYmIG11bHRpc2VsZWN0ICYmICFhdXRvY29tcGxldGVcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCJcbiAgICAoYmx1cik9XCJvbkJsdXIoKVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPlxuICA8L3l2Yy1jaGlwcz5cblxuICA8IS0tIHNpbmdsZSBsaW5lIGlucHV0IHdpdGggbXVsdGlzZWxlY3QgYW5kIGF1dG9jb21wbGV0ZSAtLT5cbiAgPHl2Yy1hdXRvY29tcGxldGUgKm5nSWY9XCIhbXVsdGlsaW5lICYmIG11bHRpc2VsZWN0ICYmIGF1dG9jb21wbGV0ZVwiIFthdXRvY29tcGxldGVWYWx1ZXNdPVwiYXV0b2NvbXBsZXRlUmVzXCJcbiAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIChibHVyKT1cIm9uQmx1cigpXCIgKGF1dG9jb21wbGV0ZUZuYyk9XCJhdXRvY29tcGxldGVGbigkZXZlbnQpXCJcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XG4gIDwveXZjLWF1dG9jb21wbGV0ZT5cblxuICA8IS0tIG11bHRpIGxpbmUgdGV4dCBpbnB1dHMgLS0+XG4gIDx0ZXh0YXJlYSBjbGFzcz1cImlucHV0LXRleHRhcmVhIHNpemUte3tzaXplfX1cIiAqbmdJZj1cIm11bHRpbGluZVwiIChibHVyKT1cIm9uQmx1cigpXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+PC90ZXh0YXJlYT5cblxuICA8ZGl2IGNsYXNzPVwiY2xhc3NpZnlcIiBbbmdDbGFzc109XCJ7ZW1wdHk6ICF2YWx1ZSB8fCBzaXR1YXRpb24gPT09ICdTRUFSQ0gnfVwiPlxuICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJtYWlsdG86e3tmb3JtYXRlZFZhbHVlfX1cIiAqbmdJZj1cImNsYXNzaWZpY2F0aW9uID09PSAnZW1haWwnICYmIHZhbGlkXCI+XG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjBcIj5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTE4MC4zMDktMjEyLjAwMXEtMjcuMDA4IDAtNDUuNjU4LTE4LjY2Mi0xOC42NS0xOC42NjItMTguNjUtNDUuNjg2di00MDcuNjI2cTAtMjcuMDI0IDE4LjY1LTQ1LjUyNHQ0NS42NTgtMTguNWg1OTkuMzgycTI3LjAwOCAwIDQ1LjY1OCAxOC42NjIgMTguNjUgMTguNjYyIDE4LjY1IDQ1LjY4NnY0MDcuNjI2cTAgMjcuMDI0LTE4LjY1IDQ1LjUyNHQtNDUuNjU4IDE4LjVIMTgwLjMwOVpNNDgwLTQ0OS42OTQgMTY4LTYzMy4zMDl2MzU3cTAgNS4zODUgMy40NjIgOC44NDcgMy40NjIgMy40NjIgOC44NDcgMy40NjJoNTk5LjM4MnE1LjM4NSAwIDguODQ3LTMuNDYyIDMuNDYyLTMuNDYyIDMuNDYyLTguODQ3di0zNTdMNDgwLTQ0OS42OTRaTTQ4MC01MTdsMzA1Ljg0Ni0xNzlIMTc0LjE1NEw0ODAtNTE3Wk0xNjgtNjMzLjMwOVYtNjk2LTI3Ni4zMDlxMCA1LjM4NSAzLjQ2MiA4Ljg0NyAzLjQ2MiAzLjQ2MiA4Ljg0NyAzLjQ2MkgxNjh2LTM2OS4zMDlaXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvYT5cbiAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwie3t2YWx1ZX19XCIgKm5nSWY9XCJjbGFzc2lmaWNhdGlvbiA9PT0gJ3VybCcgJiYgdmFsaWRcIj5cbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCIgd2lkdGg9XCIyMFwiPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNNDgwLTExNi4wMDFxLTc1LjE1NCAwLTE0MS40OTktMjguNDYyLTY2LjM0Ni0yOC40NjEtMTE1Ljk2Mi03OC4wNzYtNDkuNjE1LTQ5LjYxNi03OC4wNzYtMTE1Ljk2MlExMTYuMDAxLTQwNC44NDYgMTE2LjAwMS00ODBxMC03NS43NjkgMjguNDYyLTE0MS44MDcgMjguNDYxLTY2LjAzOCA3OC4wNzYtMTE1LjY1NCA0OS42MTYtNDkuNjE1IDExNS45NjItNzguMDc2UTQwNC44NDYtODQzLjk5OSA0ODAtODQzLjk5OXE3NS43NjkgMCAxNDEuODA3IDI4LjQ2MiA2Ni4wMzggMjguNDYxIDExNS42NTQgNzguMDc2IDQ5LjYxNSA0OS42MTYgNzguMDc2IDExNS42NTRRODQzLjk5OS01NTUuNzY5IDg0My45OTktNDgwcTAgNzUuMTU0LTI4LjQ2MiAxNDEuNDk5LTI4LjQ2MSA2Ni4zNDYtNzguMDc2IDExNS45NjItNDkuNjE2IDQ5LjYxNS0xMTUuNjU0IDc4LjA3NlE1NTUuNzY5LTExNi4wMDEgNDgwLTExNi4wMDFabTAtNTMuODQ1cTIxLjYxNi0yMS42MTYgNDAuNTM5LTcwLjQyNCAxOC45MjMtNDguODA4IDI5LjA3Ny0xMDguODA4SDQxMC4zODRxMTAuOTIzIDYxLjUzOSAyOS40NjIgMTEwLjM0NyAxOC41MzggNDguODA4IDQwLjE1NCA2OC44ODVabS02NC40Ni01cS0xOS0zMC0zNC4zMDgtNzUuNTM5dC0yMy40NjItOTguNjkzSDE5Ny4wNzZxMzEuNjkzIDY5LjMwOSA4OS41MDEgMTE1LjE5NCA1Ny44MDkgNDUuODg1IDEyOC45NjMgNTkuMDM4Wm0xMjguOTIgMHE3MS4xNTQtMTMuMTUzIDEyOC45NjMtNTkuMDM4IDU3LjgwOC00NS44ODUgODkuNTAxLTExNS4xOTRINjAyLjIzUTU5Mi4xNTMtMjk1LjUzOSA1NzYuODQ1LTI1MHEtMTUuMzA4IDQ1LjUzOS0zMi4zODUgNzUuMTU0Wm03OS40NjMtMjI2LjIzaDE3My42OTNxNC4yMzEtMjEuMzA4IDYuMDM5LTQwLjczMSAxLjgwOC0xOS40MjQgMS44MDgtMzguMTkzdC0xLjgwOC0zOC42OTNxLTEuODA4LTE5LjkyMy02LjAzOS00MC4yMzFINjIzLjkyM3ExLjIzMSAxOS4zODUgMS4xNTQgNDAuMzg1LS4wNzcgMjEtLjA3NyA0MC41Mzl0LjA3NyAzOS41MzlxLjA3NyAyMC0xLjE1NCAzNy4zODVabS0yMTguMzA4IDBoMTQ4Ljc3cTIuNzY5LTIyLjMwOCAzLjQ2Mi00MS4zNDcuNjkyLTE5LjAzOC42OTItMzcuNTc3IDAtMTguNTM5LS42OTItMzguMDc3LS42OTMtMTkuNTM5LTMuNDYyLTQwLjg0N2gtMTQ4Ljc3cS0yLjc2OSAyMS4zMDgtMy40NjIgNDAuODQ3LS42OTIgMTkuNTM4LS42OTIgMzguMDc3IDAgMTguNTM5LjY5MiAzOC4wNzcuNjkzIDE5LjUzOSAzLjQ2MiA0MC44NDdabS0yNDMuMjMxIDBoMTczLjY5M3EtMS4yMzEtMTkuMzg1LTEuMTU0LTQwLjM4NS4wNzctMjEgLjA3Ny00MC41Mzl0LS4wNzctMzkuNTM5cS0uMDc3LTIwIDEuMTU0LTM3LjM4NUgxNjIuMzg0cS00LjIzMSAyMS4zMDgtNi4wMzkgNDAuNzMxLTEuODA4IDE5LjQyNC0xLjgwOCAzOC4xOTN0MS44MDggMzguMTkzcTEuODA4IDE5LjQyMyA2LjAzOSA0MC43MzFaTTYwMi4yMy02MTAuOTIyaDE2MC42OTRRNzMwLjg0Ni02ODEgNjc0LTcyNi4xMTZxLTU2Ljg0Ny00NS4xMTUtMTI5LjU0LTU5LjQyMyAxOSAzMS45MjMgMzMuOTIzIDc2Ljg4NSAxNC45MjQgNDQuOTYyIDIzLjg0NyA5Ny43MzJabS0xOTEuODQ2IDBoMTM5LjIzMnEtMTAuOTIzLTYxLjE1NC0zMC4wMzktMTEwLjkyNC0xOS4xMTUtNDkuNzY5LTM5LjU3Ny02OC4zMDgtMjAuNDYyIDE4LjUzOS0zOS41NzcgNjguMzA4LTE5LjExNiA0OS43Ny0zMC4wMzkgMTEwLjkyNFptLTIxMy4zMDggMEgzNTcuNzdxOC45MjMtNTIuNzcgMjMuODQ3LTk3LjczMiAxNC45MjMtNDQuOTYyIDMzLjkyMy03Ni44ODUtNzMuMDc3IDE0LjMwOC0xMjkuNzMyIDU5LjYxNi01Ni42NTQgNDUuMzA4LTg4LjczMiAxMTUuMDAxWlwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2E+XG4gIDwvZGl2PlxuXG48L2Rpdj5cbiJdfQ==
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2Zvcm0tZWxlbWVudHMvc3RyaW5nL3N0cmluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9mb3JtLWVsZW1lbnRzL3N0cmluZy9zdHJpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFJTCxpQkFBaUIsRUFDakIsYUFBYSxFQUNkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFxQyxLQUFLLEVBQWlCLE1BQU0sY0FBYyxDQUFDOzs7Ozs7O0FBb0J2RixNQUFNLE9BQU8sZUFBZTtJQUcxQixJQUNJLFlBQVksQ0FBQyxPQUFnQjtRQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFzQkQsWUFBb0IsT0FBdUIsRUFBVSxVQUE4QjtRQUEvRCxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFVLGVBQVUsR0FBVixVQUFVLENBQW9CO1FBR25GLG9CQUFlLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRTtRQUM3QixDQUFDLENBQUM7SUFIRixDQUFDO0lBS0QsWUFBWSxDQUFDLEtBQUs7UUFDaEIsMENBQTBDO1FBQzFDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hDLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87SUFDekIsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFHO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsY0FBYyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLFNBQVM7UUFDZixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDaEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUM7YUFDcEQ7aUJBQU07Z0JBQ0wsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUM7YUFDM0M7U0FDRjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLGdDQUFnQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsT0FBTzthQUNULE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO2FBQ2xCLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNmLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNYLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHNCQUFzQixDQUFDLE1BQU07UUFFbkMsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUMvQixPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxJQUFJLE9BQU8sQ0FBQztZQUNaLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxPQUFPLEVBQUU7Z0JBQ25DLE9BQU8sR0FBRywyTUFBMk0sQ0FBQzthQUN2TjtpQkFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssS0FBSyxFQUFFO2dCQUN4QyxPQUFPLEdBQUcsdUZBQXVGLENBQUM7YUFDbkc7WUFDRCxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLEdBQUcsQ0FBQztRQUNSLDhCQUE4QjtRQUM5QixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUM1QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDaEYsR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDVCxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUc7d0JBQ2IsS0FBSyxFQUFFLEtBQUs7cUJBQ2IsQ0FBQTtpQkFDRjthQUNGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3hDLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQ1QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHO3dCQUNiLEtBQUssRUFBRSxLQUFLO3FCQUNiLENBQUE7aUJBQ0Y7YUFDRjtTQUNGO1FBQ0QsbUNBQW1DO1FBQ25DLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUNuQyxHQUFHLEdBQUcsRUFBRSxDQUFDO3dCQUNULEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUc7NEJBQzVDLEtBQUssRUFBRSxLQUFLO3lCQUNiLENBQUM7cUJBQ0g7aUJBQ0Y7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDNUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDVCxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHO3dCQUM1QyxLQUFLLEVBQUUsS0FBSztxQkFDYixDQUFDO2lCQUNIO2FBQ0Y7U0FDRjtRQUNELHdDQUF3QztRQUN4QyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDckMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNwQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDOUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDVCxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUc7d0JBQ2pCLEtBQUssRUFBRSxLQUFLO3FCQUNiLENBQUE7aUJBQ0Y7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQzlFLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQ1QsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHO3dCQUNqQixLQUFLLEVBQUUsS0FBSztxQkFDYixDQUFBO2lCQUNGO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDL0QsR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDVCxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUc7d0JBQ2pCLEtBQUssRUFBRSxLQUFLO3FCQUNiLENBQUE7aUJBQ0Y7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUN0QyxHQUFHLEdBQUcsRUFBRSxDQUFDO29CQUNULEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRzt3QkFDakIsS0FBSyxFQUFFLEtBQUs7cUJBQ2IsQ0FBQTtpQkFDRjthQUNGO1NBQ0Y7UUFDRCx1Q0FBdUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUN4QixJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO3dCQUNoQyxHQUFHLEdBQUcsRUFBRSxDQUFDO3dCQUNULEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHOzRCQUN2QixLQUFLLEVBQUUsS0FBSzt5QkFDYixDQUFBO3FCQUNGO2lCQUNGO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO29CQUNsRCxHQUFHLEdBQUcsRUFBRSxDQUFDO29CQUNULEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHO3dCQUN2QixLQUFLLEVBQUUsS0FBSztxQkFDYixDQUFBO2lCQUNGO2FBQ0Y7U0FDRjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUM7UUFDbEIsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxxREFBcUQ7SUFDOUMsUUFBUSxDQUFDLENBQXFCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFCLENBQUM7OzRHQXhOVSxlQUFlO2dHQUFmLGVBQWUsd1VBYmY7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDOUMsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNEO1lBQ0UsT0FBTyxFQUFFLGFBQWE7WUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDOUMsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLDBCQzFCSCxpNklBMENNOzJGRGRPLGVBQWU7a0JBakIzQixTQUFTOytCQUNFLFdBQVcsYUFHVjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQzs0QkFDOUMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtzSUFNRyxZQUFZO3NCQURmLEtBQUs7Z0JBU0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIFZhbGlkYXRvcixcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5HX1ZBTElEQVRPUlNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtCYWNrZW5kU2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlLCBVdGlscywgRm9ybWF0ZWRNYWlsVG99IGZyb20gJ0Blby1zZGsvY29yZSc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tc3RyaW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N0cmluZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0cmluZy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFN0cmluZ0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFN0cmluZ0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTdHJpbmdDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcblxuICBwcml2YXRlIF9hdXRvY29tcGxldGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHNldCBhdXRvY29tcGxldGUoYXV0b0NvbTogYm9vbGVhbikge1xuICAgIHRoaXMuX2F1dG9jb21wbGV0ZSA9IGF1dG9Db207XG4gIH1cblxuICBnZXQgYXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9hdXRvY29tcGxldGU7XG4gIH1cblxuICBASW5wdXQoKSBtdWx0aXNlbGVjdDogYm9vbGVhbjtcbiAgQElucHV0KCkgbXVsdGlsaW5lOiBib29sZWFuO1xuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbjtcbiAgQElucHV0KCkgYXV0b2ZvY3VzOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGNsYXNzaWZpY2F0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNpdHVhdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSByZWdleDogc3RyaW5nO1xuICBASW5wdXQoKSBxbmFtZTogc3RyaW5nO1xuICAvLyBjb3VsZCBiZSBzbWFsbCwgbWVkaXVtLCBsYXJnZVxuICBASW5wdXQoKSBzaXplOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG1pbkxlbmd0aDogbnVtYmVyO1xuICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlcjtcblxuICBhdXRvY29tcGxldGVSZXM6IGFueVtdO1xuICBmb3JtYXRlZFZhbHVlOiBGb3JtYXRlZE1haWxUbztcbiAgLy8gbW9kZWwgdmFsdWVcbiAgdmFsdWU7XG4gIHZhbGlkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsIHByaXZhdGUgZW52U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlKSB7XG4gIH1cblxuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7XG4gIH07XG5cbiAgb25LZXlVcEVudGVyKGV2ZW50KSB7XG4gICAgLy8gYXBwbGllcyB0byBtdWx0aXNlbGVjdCBhbmQgYXV0b2NvbXBsZXRlXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQudmFsdWUudHJpbSgpO1xuICAgIGlmIChpbnB1dCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlIDogW107XG4gICAgICB0aGlzLnZhbHVlID0gWy4uLnRoaXMudmFsdWUsIGlucHV0XTtcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mb3JtYXRlZFZhbHVlID0gVXRpbHMuZm9ybWF0TWFpbFRvKHZhbHVlLCB0aGlzLmNsYXNzaWZpY2F0aW9uID09PSAnZW1haWwnKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgfHwgbnVsbDtcbiAgICB0aGlzLl92YWxpZGF0ZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIG9uVmFsdWVDaGFuZ2UoZXZ0KSB7XG4gICAgdGhpcy5mb3JtYXRlZFZhbHVlID0gVXRpbHMuZm9ybWF0TWFpbFRvKGV2dCwgdGhpcy5jbGFzc2lmaWNhdGlvbiA9PT0gJ2VtYWlsJyk7XG4gICAgdGhpcy52YWx1ZSA9IGV2dC5sZW5ndGggPyBldnQgOiBudWxsO1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIGlmICh0aGlzLnRyaW1WYWx1ZSgpKSB7XG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJpbXMgdGhlIGN1cnJlbnQgdmFsdWUgYW5kIHJldHVybnMgd2V0aGVyIG9yIG5vdCBpdCBoYXMgYmVlbiB0cmltbWVkXG4gICAqL1xuICBwcml2YXRlIHRyaW1WYWx1ZSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoQmVmb3JlID0gdGhpcy52YWx1ZS5qb2luKCcnKS5sZW5ndGg7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLm1hcCh2ID0+IHYudHJpbSgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUuam9pbignJykubGVuZ3RoICE9PSBsZW5ndGhCZWZvcmU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBsZW5ndGhCZWZvcmUgPSB0aGlzLnZhbHVlLmxlbmd0aDtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUudHJpbSgpO1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5sZW5ndGggIT09IGxlbmd0aEJlZm9yZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgYXV0b2NvbXBsZXRlRm4odGVybTogc3RyaW5nKSB7XG4gICAgY29uc3QgdXJpID0gYC9hdXRvY29tcGxldGUvZWxlbWVudD9wcmVmaXg9JHtlbmNvZGVVUklDb21wb25lbnQodGVybSl9JnFuYW1lPSR7dGhpcy5xbmFtZX1gO1xuICAgIGNvbnN0IGJhc2UgPSB0aGlzLmJhY2tlbmQuZ2V0U2VhcmNoQmFzZSgpO1xuICAgIHRoaXMuYmFja2VuZFxuICAgICAgLmdldEpzb24odXJpLCBiYXNlKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICBsZXQgciA9IFtdO1xuICAgICAgICByZXMuZm9yRWFjaChpID0+IHIucHVzaChpLnZhbHVlKSk7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gcjtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUNsYXNzaWZpY2F0aW9uKHN0cmluZyk6IGJvb2xlYW4ge1xuXG4gICAgaWYgKHRoaXMuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBwYXR0ZXJuO1xuICAgICAgaWYgKHRoaXMuY2xhc3NpZmljYXRpb24gPT09ICdlbWFpbCcpIHtcbiAgICAgICAgcGF0dGVybiA9IC9eKD86KC4rPylcXHMqPChcXHcrKShbXFwtKy5dW1xcd10rKSpAKFxcd1tcXC1cXHddKlxcLil7MSw1fShbQS1aYS16XXsyLDZ9KT58W1wiJ117MX0oLis/KVtcIiddezF9XFxzKjwoXFx3KykoW1xcLSsuXVtcXHddKykqQChcXHdbXFwtXFx3XSpcXC4pezEsNX0oW0EtWmEtel17Miw2fSk+fChcXHcrKShbXFwtKy5dW1xcd10rKSpAKFxcd1tcXC1cXHddKlxcLil7MSw1fShbQS1aYS16XXsyLDZ9KSkkLztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jbGFzc2lmaWNhdGlvbiA9PT0gJ3VybCcpIHtcbiAgICAgICAgcGF0dGVybiA9IC8oaHR0cHxmdHB8aHR0cHMpOlxcL1xcL1tcXHctXSsoXFwuW1xcdy1dKykrKFtcXHcuLEA/Xj0lJmFtcDs6XFwvfisjLV0qW1xcd0A/Xj0lJmFtcDtcXC9+KyMtXSk/LztcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXR0ZXJuID8gcGF0dGVybi50ZXN0KHN0cmluZykgOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3ZhbGlkYXRlKCkge1xuICAgIGxldCBlcnI7XG4gICAgLy8gdmFsaWRhdGUgcmVndWxhciBleHByZXNzaW9uXG4gICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy5yZWdleCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCAmJiAhIXRoaXMudmFsdWUuZmluZCh2ID0+ICFSZWdFeHAodGhpcy5yZWdleCkudGVzdCh2KSkpIHtcbiAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICBlcnJbJ3JlZ2V4J10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghUmVnRXhwKHRoaXMucmVnZXgpLnRlc3QodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICBlcnJbJ3JlZ2V4J10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdmFsaWRhdGUgY2xhc3NpZmljYXRpb24gc2V0dGluZ3NcbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLmNsYXNzaWZpY2F0aW9uKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICBmb3IgKGxldCB2IG9mIHRoaXMudmFsdWUpIHtcbiAgICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVDbGFzc2lmaWNhdGlvbih2KSkge1xuICAgICAgICAgICAgZXJyID0ge307XG4gICAgICAgICAgICBlcnJbJ2NsYXNzaWZpY2F0aW9uJyArIHRoaXMuY2xhc3NpZmljYXRpb25dID0ge1xuICAgICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVDbGFzc2lmaWNhdGlvbih0aGlzLnZhbHVlKSkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnY2xhc3NpZmljYXRpb24nICsgdGhpcy5jbGFzc2lmaWNhdGlvbl0gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHZhbGlkYXRlIGxlbmd0aCBoZXJlIHdoZW4gbXVsdGlzZWxlY3RcbiAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlICE9PSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiAwICYmICEhdGhpcy52YWx1ZS5maW5kKHYgPT4gdi5sZW5ndGggPCB0aGlzLm1pbkxlbmd0aCkpIHtcbiAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICBlcnJbJ21pbmxlbmd0aCddID0ge1xuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IDAgJiYgISF0aGlzLnZhbHVlLmZpbmQodiA9PiB2Lmxlbmd0aCA+IHRoaXMubWF4TGVuZ3RoKSkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnbWF4bGVuZ3RoJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IDAgJiYgdGhpcy52YWx1ZS5sZW5ndGggPCB0aGlzLm1pbkxlbmd0aCkge1xuICAgICAgICAgIGVyciA9IHt9O1xuICAgICAgICAgIGVyclsnbWlubGVuZ3RoJ10gPSB7XG4gICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gdGhpcy5tYXhMZW5ndGgpIHtcbiAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICBlcnJbJ21heGxlbmd0aCddID0ge1xuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHZhbGlkYXRlIGludmFsaWQgaWYgb25seSB3aGl0ZXNwYWNlc1xuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgIGZvciAobGV0IHYgb2YgdGhpcy52YWx1ZSkge1xuICAgICAgICAgIGlmICh2Lmxlbmd0aCAmJiAhdi50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICAgIGVyclsnb25seVdoaXRlc3BhY2VzJ10gPSB7XG4gICAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoICYmICF0aGlzLnZhbHVlLnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgICAgICBlcnIgPSB7fTtcbiAgICAgICAgICBlcnJbJ29ubHlXaGl0ZXNwYWNlcyddID0ge1xuICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudmFsaWQgPSAhZXJyO1xuICAgIHJldHVybiBlcnIgfHwgbnVsbDtcbiAgfVxuXG4gIC8vIHJldHVybnMgbnVsbCB3aGVuIHZhbGlkIGVsc2UgdGhlIHZhbGlkYXRpb24gb2JqZWN0XG4gIHB1YmxpYyB2YWxpZGF0ZShjOiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRhdGUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImVvLWZvcm0tc3RyaW5nXCI+XG5cbiAgPGlucHV0ICpuZ0lmPVwiIW11bHRpbGluZSAmJiAhbXVsdGlzZWxlY3QgJiYgIWF1dG9jb21wbGV0ZVwiIHR5cGU9XCJ0ZXh0XCIgKGJsdXIpPVwib25CbHVyKClcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIFsobmdNb2RlbCldPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIiAvPlxuXG4gIDwhLS0gc2luZ2xlIGxpbmUgaW5wdXQgd2l0aCBhdXRvY29tcGxldGUgLS0+XG4gIDx5dmMtYXV0b2NvbXBsZXRlICpuZ0lmPVwiIW11bHRpbGluZSAmJiAhbXVsdGlzZWxlY3QgJiYgYXV0b2NvbXBsZXRlXCIgI2F1dG9jb21wbGV0ZSBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIiBbYXV0b2NvbXBsZXRlVmFsdWVzXT1cImF1dG9jb21wbGV0ZVJlc1wiIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAoc3VnZ2VzdGlvblNlbGVjdCk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIiAobmdNb2RlbENoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgIChhdXRvY29tcGxldGVGbmMpPVwiYXV0b2NvbXBsZXRlRm4oJGV2ZW50KVwiPlxuICA8L3l2Yy1hdXRvY29tcGxldGU+XG5cbiAgPCEtLSBzaW5nbGUgbGluZSBpbnB1dCB3aXRoIG11bHRpc2VsZWN0LS0+XG4gIDx5dmMtY2hpcHMgKm5nSWY9XCIhbXVsdGlsaW5lICYmIG11bHRpc2VsZWN0ICYmICFhdXRvY29tcGxldGVcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCJcbiAgICAoYmx1cik9XCJvbkJsdXIoKVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPlxuICA8L3l2Yy1jaGlwcz5cblxuICA8IS0tIHNpbmdsZSBsaW5lIGlucHV0IHdpdGggbXVsdGlzZWxlY3QgYW5kIGF1dG9jb21wbGV0ZSAtLT5cbiAgPHl2Yy1hdXRvY29tcGxldGUgKm5nSWY9XCIhbXVsdGlsaW5lICYmIG11bHRpc2VsZWN0ICYmIGF1dG9jb21wbGV0ZVwiIFthdXRvY29tcGxldGVWYWx1ZXNdPVwiYXV0b2NvbXBsZXRlUmVzXCJcbiAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiIChibHVyKT1cIm9uQmx1cigpXCIgKGF1dG9jb21wbGV0ZUZuYyk9XCJhdXRvY29tcGxldGVGbigkZXZlbnQpXCJcbiAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+XG4gIDwveXZjLWF1dG9jb21wbGV0ZT5cblxuICA8IS0tIG11bHRpIGxpbmUgdGV4dCBpbnB1dHMgLS0+XG4gIDx0ZXh0YXJlYSBjbGFzcz1cImlucHV0LXRleHRhcmVhIHNpemUte3tzaXplfX1cIiAqbmdJZj1cIm11bHRpbGluZVwiIChibHVyKT1cIm9uQmx1cigpXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgKG5nTW9kZWxDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCI+PC90ZXh0YXJlYT5cblxuICA8ZGl2IGNsYXNzPVwiY2xhc3NpZnlcIiBbbmdDbGFzc109XCJ7ZW1wdHk6ICF2YWx1ZSB8fCBzaXR1YXRpb24gPT09ICdTRUFSQ0gnfVwiPlxuICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJtYWlsdG86e3tmb3JtYXRlZFZhbHVlfX1cIiAqbmdJZj1cImNsYXNzaWZpY2F0aW9uID09PSAnZW1haWwnICYmIHZhbGlkXCI+XG4gICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjBcIj5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTE4MC4zMDktMjEyLjAwMXEtMjcuMDA4IDAtNDUuNjU4LTE4LjY2Mi0xOC42NS0xOC42NjItMTguNjUtNDUuNjg2di00MDcuNjI2cTAtMjcuMDI0IDE4LjY1LTQ1LjUyNHQ0NS42NTgtMTguNWg1OTkuMzgycTI3LjAwOCAwIDQ1LjY1OCAxOC42NjIgMTguNjUgMTguNjYyIDE4LjY1IDQ1LjY4NnY0MDcuNjI2cTAgMjcuMDI0LTE4LjY1IDQ1LjUyNHQtNDUuNjU4IDE4LjVIMTgwLjMwOVpNNDgwLTQ0OS42OTQgMTY4LTYzMy4zMDl2MzU3cTAgNS4zODUgMy40NjIgOC44NDcgMy40NjIgMy40NjIgOC44NDcgMy40NjJoNTk5LjM4MnE1LjM4NSAwIDguODQ3LTMuNDYyIDMuNDYyLTMuNDYyIDMuNDYyLTguODQ3di0zNTdMNDgwLTQ0OS42OTRaTTQ4MC01MTdsMzA1Ljg0Ni0xNzlIMTc0LjE1NEw0ODAtNTE3Wk0xNjgtNjMzLjMwOVYtNjk2LTI3Ni4zMDlxMCA1LjM4NSAzLjQ2MiA4Ljg0NyAzLjQ2MiAzLjQ2MiA4Ljg0NyAzLjQ2MkgxNjh2LTM2OS4zMDlaXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvYT5cbiAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwie3t2YWx1ZX19XCIgKm5nSWY9XCJjbGFzc2lmaWNhdGlvbiA9PT0gJ3VybCcgJiYgdmFsaWRcIj5cbiAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCIgd2lkdGg9XCIyMFwiPlxuICAgICAgICA8cGF0aFxuICAgICAgICAgIGQ9XCJNNDgwLTExNi4wMDFxLTc1LjE1NCAwLTE0MS40OTktMjguNDYyLTY2LjM0Ni0yOC40NjEtMTE1Ljk2Mi03OC4wNzYtNDkuNjE1LTQ5LjYxNi03OC4wNzYtMTE1Ljk2MlExMTYuMDAxLTQwNC44NDYgMTE2LjAwMS00ODBxMC03NS43NjkgMjguNDYyLTE0MS44MDcgMjguNDYxLTY2LjAzOCA3OC4wNzYtMTE1LjY1NCA0OS42MTYtNDkuNjE1IDExNS45NjItNzguMDc2UTQwNC44NDYtODQzLjk5OSA0ODAtODQzLjk5OXE3NS43NjkgMCAxNDEuODA3IDI4LjQ2MiA2Ni4wMzggMjguNDYxIDExNS42NTQgNzguMDc2IDQ5LjYxNSA0OS42MTYgNzguMDc2IDExNS42NTRRODQzLjk5OS01NTUuNzY5IDg0My45OTktNDgwcTAgNzUuMTU0LTI4LjQ2MiAxNDEuNDk5LTI4LjQ2MSA2Ni4zNDYtNzguMDc2IDExNS45NjItNDkuNjE2IDQ5LjYxNS0xMTUuNjU0IDc4LjA3NlE1NTUuNzY5LTExNi4wMDEgNDgwLTExNi4wMDFabTAtNTMuODQ1cTIxLjYxNi0yMS42MTYgNDAuNTM5LTcwLjQyNCAxOC45MjMtNDguODA4IDI5LjA3Ny0xMDguODA4SDQxMC4zODRxMTAuOTIzIDYxLjUzOSAyOS40NjIgMTEwLjM0NyAxOC41MzggNDguODA4IDQwLjE1NCA2OC44ODVabS02NC40Ni01cS0xOS0zMC0zNC4zMDgtNzUuNTM5dC0yMy40NjItOTguNjkzSDE5Ny4wNzZxMzEuNjkzIDY5LjMwOSA4OS41MDEgMTE1LjE5NCA1Ny44MDkgNDUuODg1IDEyOC45NjMgNTkuMDM4Wm0xMjguOTIgMHE3MS4xNTQtMTMuMTUzIDEyOC45NjMtNTkuMDM4IDU3LjgwOC00NS44ODUgODkuNTAxLTExNS4xOTRINjAyLjIzUTU5Mi4xNTMtMjk1LjUzOSA1NzYuODQ1LTI1MHEtMTUuMzA4IDQ1LjUzOS0zMi4zODUgNzUuMTU0Wm03OS40NjMtMjI2LjIzaDE3My42OTNxNC4yMzEtMjEuMzA4IDYuMDM5LTQwLjczMSAxLjgwOC0xOS40MjQgMS44MDgtMzguMTkzdC0xLjgwOC0zOC42OTNxLTEuODA4LTE5LjkyMy02LjAzOS00MC4yMzFINjIzLjkyM3ExLjIzMSAxOS4zODUgMS4xNTQgNDAuMzg1LS4wNzcgMjEtLjA3NyA0MC41Mzl0LjA3NyAzOS41MzlxLjA3NyAyMC0xLjE1NCAzNy4zODVabS0yMTguMzA4IDBoMTQ4Ljc3cTIuNzY5LTIyLjMwOCAzLjQ2Mi00MS4zNDcuNjkyLTE5LjAzOC42OTItMzcuNTc3IDAtMTguNTM5LS42OTItMzguMDc3LS42OTMtMTkuNTM5LTMuNDYyLTQwLjg0N2gtMTQ4Ljc3cS0yLjc2OSAyMS4zMDgtMy40NjIgNDAuODQ3LS42OTIgMTkuNTM4LS42OTIgMzguMDc3IDAgMTguNTM5LjY5MiAzOC4wNzcuNjkzIDE5LjUzOSAzLjQ2MiA0MC44NDdabS0yNDMuMjMxIDBoMTczLjY5M3EtMS4yMzEtMTkuMzg1LTEuMTU0LTQwLjM4NS4wNzctMjEgLjA3Ny00MC41Mzl0LS4wNzctMzkuNTM5cS0uMDc3LTIwIDEuMTU0LTM3LjM4NUgxNjIuMzg0cS00LjIzMSAyMS4zMDgtNi4wMzkgNDAuNzMxLTEuODA4IDE5LjQyNC0xLjgwOCAzOC4xOTN0MS44MDggMzguMTkzcTEuODA4IDE5LjQyMyA2LjAzOSA0MC43MzFaTTYwMi4yMy02MTAuOTIyaDE2MC42OTRRNzMwLjg0Ni02ODEgNjc0LTcyNi4xMTZxLTU2Ljg0Ny00NS4xMTUtMTI5LjU0LTU5LjQyMyAxOSAzMS45MjMgMzMuOTIzIDc2Ljg4NSAxNC45MjQgNDQuOTYyIDIzLjg0NyA5Ny43MzJabS0xOTEuODQ2IDBoMTM5LjIzMnEtMTAuOTIzLTYxLjE1NC0zMC4wMzktMTEwLjkyNC0xOS4xMTUtNDkuNzY5LTM5LjU3Ny02OC4zMDgtMjAuNDYyIDE4LjUzOS0zOS41NzcgNjguMzA4LTE5LjExNiA0OS43Ny0zMC4wMzkgMTEwLjkyNFptLTIxMy4zMDggMEgzNTcuNzdxOC45MjMtNTIuNzcgMjMuODQ3LTk3LjczMiAxNC45MjMtNDQuOTYyIDMzLjkyMy03Ni44ODUtNzMuMDc3IDE0LjMwOC0xMjkuNzMyIDU5LjYxNi01Ni42NTQgNDUuMzA4LTg4LjczMiAxMTUuMDAxWlwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2E+XG4gIDwvZGl2PlxuXG48L2Rpdj4iXX0=
|