@fundamental-ngx/platform 0.44.0-rc.2 → 0.44.0-rc.3
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/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +31 -29
- package/esm2022/message-popover/components/message-view/message-view.component.mjs +12 -11
- package/esm2022/message-popover/message-popover.component.mjs +21 -22
- package/esm2022/settings-generator/layouts/base-settings-generator-layout.mjs +3 -3
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +8 -8
- package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +18 -17
- package/esm2022/settings-generator/settings-generator.component.mjs +14 -17
- package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +20 -21
- package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +14 -13
- package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +14 -11
- package/esm2022/table/components/table-header-row/table-header-row.component.mjs +7 -9
- package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +5 -7
- package/esm2022/table/components/table-row/table-row.component.mjs +31 -32
- package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +5 -4
- package/esm2022/table-helpers/directives/table-data-source.directive.mjs +8 -12
- package/esm2022/table-helpers/directives/table-header-resizer.directive.mjs +10 -11
- package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +9 -15
- package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +5 -8
- package/esm2022/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +13 -16
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs +54 -50
- package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +31 -33
- package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +27 -26
- package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +23 -35
- package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-table.mjs +56 -59
- package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs +15 -16
- package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
- package/fundamental-ngx-platform-v0.44.0-rc.3.tgz +0 -0
- package/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.d.ts +22 -21
- package/message-popover/components/message-view/message-view.component.d.ts +4 -5
- package/message-popover/message-popover.component.d.ts +7 -6
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/settings-generator/layouts/base-settings-generator-layout.d.ts +16 -17
- package/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.d.ts +3 -3
- package/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.d.ts +6 -7
- package/settings-generator/settings-generator.component.d.ts +8 -8
- package/smart-filter-bar/smart-filter-bar.component.d.ts +11 -12
- package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +3 -3
- package/table/components/table-column-resizer/table-column-resizer.component.d.ts +1 -1
- package/table/components/table-row/table-row.component.d.ts +10 -10
- package/table-helpers/directives/table-data-source.directive.d.ts +11 -13
- package/table-helpers/directives/table-header-resizer.directive.d.ts +3 -3
- package/table-helpers/directives/table-scrollable.directive.d.ts +1 -1
- package/table-helpers/directives/table-virtual-scroll.directive.d.ts +1 -1
- package/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.d.ts +1 -3
- package/fundamental-ngx-platform-v0.44.0-rc.2.tgz +0 -0
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, HostBinding, inject, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { debounceTime, distinctUntilChanged, startWith
|
|
1
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, HostBinding, inject, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { resizeObservable } from '@fundamental-ngx/cdk/utils';
|
|
3
|
+
import { debounceTime, distinctUntilChanged, startWith } from 'rxjs';
|
|
4
4
|
import { SettingsGeneratorContentComponent } from '../../settings-generator-content/settings-generator-content.component';
|
|
5
5
|
import { FDP_SETTINGS_GENERATOR_CONFIG } from '../../tokens';
|
|
6
6
|
import { BaseSettingsGeneratorLayout } from '../base-settings-generator-layout';
|
|
7
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "@angular/common";
|
|
9
10
|
import * as i2 from "@fundamental-ngx/core/list";
|
|
@@ -20,15 +21,15 @@ export class SettingsGeneratorSidebarLayoutComponent extends BaseSettingsGenerat
|
|
|
20
21
|
constructor() {
|
|
21
22
|
super();
|
|
22
23
|
/** @hidden */
|
|
23
|
-
this.
|
|
24
|
-
/** @hidden */
|
|
25
|
-
this._config = inject(FDP_SETTINGS_GENERATOR_CONFIG);
|
|
24
|
+
this._initialClass = 'fdp-settings-generator__sidebar-layout';
|
|
26
25
|
/**
|
|
27
26
|
* Selected settings section.
|
|
28
27
|
*/
|
|
29
28
|
this._selectedIndex = -1;
|
|
30
29
|
/** @hidden */
|
|
31
|
-
this.
|
|
30
|
+
this._destroyRef = inject(DestroyRef);
|
|
31
|
+
/** @hidden */
|
|
32
|
+
this._config = inject(FDP_SETTINGS_GENERATOR_CONFIG);
|
|
32
33
|
/** @hidden */
|
|
33
34
|
this._sidebarVisible = true;
|
|
34
35
|
/** @hidden */
|
|
@@ -38,7 +39,7 @@ export class SettingsGeneratorSidebarLayoutComponent extends BaseSettingsGenerat
|
|
|
38
39
|
/** @hidden */
|
|
39
40
|
ngOnInit() {
|
|
40
41
|
super.ngOnInit();
|
|
41
|
-
this._settingsGeneratorService.settings.pipe(
|
|
42
|
+
this._settingsGeneratorService.settings.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((settings) => {
|
|
42
43
|
if (this._isSidebarSettings(settings) && settings.sidebarWidth) {
|
|
43
44
|
this._sidebarWidth = this._getNormalizedSidebarWidth(settings.sidebarWidth);
|
|
44
45
|
this._cdr.detectChanges();
|
|
@@ -61,7 +62,7 @@ export class SettingsGeneratorSidebarLayoutComponent extends BaseSettingsGenerat
|
|
|
61
62
|
}
|
|
62
63
|
// Currently we support only 2 level nesting of form groups.
|
|
63
64
|
if (pathArray.length > 0) {
|
|
64
|
-
this.
|
|
65
|
+
this._settingsGeneratorContent.setActiveTab(pathArray[1]);
|
|
65
66
|
}
|
|
66
67
|
setTimeout(() => {
|
|
67
68
|
element.nativeElement.focus();
|
|
@@ -71,7 +72,7 @@ export class SettingsGeneratorSidebarLayoutComponent extends BaseSettingsGenerat
|
|
|
71
72
|
ngAfterViewInit() {
|
|
72
73
|
if (this._settingsGenerator.elementRef.nativeElement && this._config.sidebar?.mobileBreakpoint) {
|
|
73
74
|
resizeObservable(this._settingsGenerator.elementRef.nativeElement)
|
|
74
|
-
.pipe(startWith(null), debounceTime(30), distinctUntilChanged(),
|
|
75
|
+
.pipe(startWith(null), debounceTime(30), distinctUntilChanged(), takeUntilDestroyed(this._destroyRef))
|
|
75
76
|
.subscribe(() => {
|
|
76
77
|
const { width } = this._settingsGenerator.elementRef.nativeElement.getBoundingClientRect();
|
|
77
78
|
const isMobile = width <= this._config.sidebar.mobileBreakpoint;
|
|
@@ -116,19 +117,19 @@ export class SettingsGeneratorSidebarLayoutComponent extends BaseSettingsGenerat
|
|
|
116
117
|
return !!section.id;
|
|
117
118
|
}
|
|
118
119
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SettingsGeneratorSidebarLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
119
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: SettingsGeneratorSidebarLayoutComponent, selector: "fdp-settings-generator-sidebar-layout", host: { properties: { "class.fdp-settings-generator__sidebar-layout--mobile": "this._isMobile", "class": "this._initialClass" } },
|
|
120
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: SettingsGeneratorSidebarLayoutComponent, selector: "fdp-settings-generator-sidebar-layout", host: { properties: { "class.fdp-settings-generator__sidebar-layout--mobile": "this._isMobile", "class": "this._initialClass" } }, viewQueries: [{ propertyName: "_settingsGeneratorContent", first: true, predicate: ["settingsGeneratorContent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"fdp-settings-generator__sidebar\"\n [class.fdp-settings-generator__sidebar--hidden]=\"!_mobileSidebarVisible\"\n [style.width]=\"_mobileSidebarVisible ? null : _sidebarWidth.width\"\n [style.min-width]=\"_mobileSidebarVisible ? null : _sidebarWidth.minWidth\"\n [style.max-width]=\"_mobileSidebarVisible ? null : _sidebarWidth.maxWidth\"\n>\n <ul fd-list [byline]=\"true\" [navigationIndicator]=\"true\">\n <li\n (click)=\"_setSelectedIndex(i)\"\n fd-list-item\n [selected]=\"i === _selectedIndex\"\n *ngFor=\"let item of settings?.items; let i = index\"\n >\n <a fd-list-link [navigated]=\"i === _selectedIndex\">\n <span fd-list-thumbnail *ngIf=\"item.thumbnail\">\n <fdp-settings-generator-sidebar-icon\n [thumbnail]=\"item.thumbnail\"\n ></fdp-settings-generator-sidebar-icon>\n </span>\n <div fd-list-content>\n <ng-container *ngIf=\"item.title | fdkAsyncOrSync as titleValue; else titleElseBlock\">\n <div fd-list-title>{{ titleValue }}</div>\n </ng-container>\n <ng-template #titleElseBlock>\n <div fd-list-title>\n <fd-skeleton\n height=\"16px\"\n type=\"rectangle\"\n width=\"40%\"\n textLines=\"1\"\n style=\"margin: auto 0\"\n ></fd-skeleton>\n </div>\n </ng-template>\n <div fd-list-byline *ngIf=\"item.description\">\n <ng-container\n *ngIf=\"item.description | fdkAsyncOrSync as descriptionValue; else descriptionElseBlock\"\n >\n {{ descriptionValue }}\n </ng-container>\n <ng-template #descriptionElseBlock>\n <fd-skeleton type=\"text\" width=\"60%\" textLines=\"1\" style=\"margin: auto 0\"></fd-skeleton>\n </ng-template>\n </div>\n </div>\n </a>\n </li>\n </ul>\n</div>\n<div\n class=\"fdp-settings-generator__content\"\n [class.fdp-settings-generator__content--hidden]=\"_mobileSidebarVisible\"\n [style.width]=\"_mobileSidebarVisible ? null : 'calc(100% - ' + _sidebarWidth.width + ')'\"\n [style.min-width]=\"_mobileSidebarVisible ? null : 'calc(100% - ' + _sidebarWidth.minWidth + ')'\"\n [style.max-width]=\"_mobileSidebarVisible ? null : 'calc(100% - ' + _sidebarWidth.maxWidth + ')'\"\n>\n <ng-container *ngFor=\"let item of settings?.items; let i = index\">\n <fdp-settings-generator-content\n [attr.hidden]=\"i !== _selectedIndex ? true : null\"\n [settings]=\"item\"\n [mobile]=\"_isMobile\"\n (goBack)=\"_goBack()\"\n #settingsGeneratorContent\n ></fdp-settings-generator-content>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline", "unreadIndicator"], outputs: ["focusEscapeList"] }, { kind: "component", type: i2.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "byline", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i2.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "directive", type: i2.ListLinkDirective, selector: "[fd-list-link], [fdListLink]", inputs: ["navigationIndicator", "navigated", "focusable"] }, { kind: "directive", type: i2.ListBylineDirective, selector: "[fdListByline], [fd-list-byline]", inputs: ["twoCol", "wrap"] }, { kind: "directive", type: i2.ListContentDirective, selector: "[fdListContent], [fd-list-content]", inputs: ["twoCol"] }, { kind: "directive", type: i2.ListThumbnailDirective, selector: "[fdListThumbnail], [fd-list-thumbnail]" }, { kind: "component", type: i3.SkeletonComponent, selector: "fd-skeleton", inputs: ["animated", "type", "textLines", "width", "height"] }, { kind: "component", type: i4.SettingsGeneratorContentComponent, selector: "fdp-settings-generator-content", inputs: ["settings", "mobile"], outputs: ["goBack"] }, { kind: "component", type: i5.SettingsGeneratorSidebarIconComponent, selector: "fdp-settings-generator-sidebar-icon", inputs: ["thumbnail"] }, { kind: "pipe", type: i6.AsyncOrSyncPipe, name: "fdkAsyncOrSync" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
120
121
|
}
|
|
121
122
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SettingsGeneratorSidebarLayoutComponent, decorators: [{
|
|
122
123
|
type: Component,
|
|
123
|
-
args: [{ selector: 'fdp-settings-generator-sidebar-layout', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None,
|
|
124
|
-
}], ctorParameters: function () { return []; }, propDecorators: {
|
|
125
|
-
type: ViewChild,
|
|
126
|
-
args: ['settingsGeneratorContent']
|
|
127
|
-
}], _isMobile: [{
|
|
124
|
+
args: [{ selector: 'fdp-settings-generator-sidebar-layout', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"fdp-settings-generator__sidebar\"\n [class.fdp-settings-generator__sidebar--hidden]=\"!_mobileSidebarVisible\"\n [style.width]=\"_mobileSidebarVisible ? null : _sidebarWidth.width\"\n [style.min-width]=\"_mobileSidebarVisible ? null : _sidebarWidth.minWidth\"\n [style.max-width]=\"_mobileSidebarVisible ? null : _sidebarWidth.maxWidth\"\n>\n <ul fd-list [byline]=\"true\" [navigationIndicator]=\"true\">\n <li\n (click)=\"_setSelectedIndex(i)\"\n fd-list-item\n [selected]=\"i === _selectedIndex\"\n *ngFor=\"let item of settings?.items; let i = index\"\n >\n <a fd-list-link [navigated]=\"i === _selectedIndex\">\n <span fd-list-thumbnail *ngIf=\"item.thumbnail\">\n <fdp-settings-generator-sidebar-icon\n [thumbnail]=\"item.thumbnail\"\n ></fdp-settings-generator-sidebar-icon>\n </span>\n <div fd-list-content>\n <ng-container *ngIf=\"item.title | fdkAsyncOrSync as titleValue; else titleElseBlock\">\n <div fd-list-title>{{ titleValue }}</div>\n </ng-container>\n <ng-template #titleElseBlock>\n <div fd-list-title>\n <fd-skeleton\n height=\"16px\"\n type=\"rectangle\"\n width=\"40%\"\n textLines=\"1\"\n style=\"margin: auto 0\"\n ></fd-skeleton>\n </div>\n </ng-template>\n <div fd-list-byline *ngIf=\"item.description\">\n <ng-container\n *ngIf=\"item.description | fdkAsyncOrSync as descriptionValue; else descriptionElseBlock\"\n >\n {{ descriptionValue }}\n </ng-container>\n <ng-template #descriptionElseBlock>\n <fd-skeleton type=\"text\" width=\"60%\" textLines=\"1\" style=\"margin: auto 0\"></fd-skeleton>\n </ng-template>\n </div>\n </div>\n </a>\n </li>\n </ul>\n</div>\n<div\n class=\"fdp-settings-generator__content\"\n [class.fdp-settings-generator__content--hidden]=\"_mobileSidebarVisible\"\n [style.width]=\"_mobileSidebarVisible ? null : 'calc(100% - ' + _sidebarWidth.width + ')'\"\n [style.min-width]=\"_mobileSidebarVisible ? null : 'calc(100% - ' + _sidebarWidth.minWidth + ')'\"\n [style.max-width]=\"_mobileSidebarVisible ? null : 'calc(100% - ' + _sidebarWidth.maxWidth + ')'\"\n>\n <ng-container *ngFor=\"let item of settings?.items; let i = index\">\n <fdp-settings-generator-content\n [attr.hidden]=\"i !== _selectedIndex ? true : null\"\n [settings]=\"item\"\n [mobile]=\"_isMobile\"\n (goBack)=\"_goBack()\"\n #settingsGeneratorContent\n ></fdp-settings-generator-content>\n </ng-container>\n</div>\n" }]
|
|
125
|
+
}], ctorParameters: function () { return []; }, propDecorators: { _isMobile: [{
|
|
128
126
|
type: HostBinding,
|
|
129
127
|
args: ['class.fdp-settings-generator__sidebar-layout--mobile']
|
|
130
128
|
}], _initialClass: [{
|
|
131
129
|
type: HostBinding,
|
|
132
130
|
args: ['class']
|
|
131
|
+
}], _settingsGeneratorContent: [{
|
|
132
|
+
type: ViewChild,
|
|
133
|
+
args: ['settingsGeneratorContent']
|
|
133
134
|
}] } });
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtZ2VuZXJhdG9yLXNpZGViYXItbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zZXR0aW5ncy1nZW5lcmF0b3IvbGF5b3V0cy9zZXR0aW5ncy1nZW5lcmF0b3Itc2lkZWJhci1sYXlvdXQvc2V0dGluZ3MtZ2VuZXJhdG9yLXNpZGViYXItbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zZXR0aW5ncy1nZW5lcmF0b3IvbGF5b3V0cy9zZXR0aW5ncy1nZW5lcmF0b3Itc2lkZWJhci1sYXlvdXQvc2V0dGluZ3MtZ2VuZXJhdG9yLXNpZGViYXItbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFdBQVcsRUFDWCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQVksZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFTaEYsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFDMUgsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7Ozs7OztBQVNoRixNQUFNLE9BQU8sdUNBQ1QsU0FBUSwyQkFBMkI7SUFrQ25DLGNBQWM7SUFDZCxJQUFJLHFCQUFxQjtRQUNyQixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGVB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QyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYztJQUNkLE9BQU87UUFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsY0FBYztJQUNOLDBCQUEwQixDQUFDLEtBQXlDO1FBQ3hFLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzNGLENBQUM7SUFFRCxjQUFjO0lBQ04sa0JBQWtCLENBQUMsUUFBdUI7UUFDOUMsT0FBTyxRQUFRLEVBQUUsVUFBVSxLQUFLLFNBQVMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsY0FBYztJQUNOLHVCQUF1QixDQUFDLE9BQXFCO1FBQ2pELE9BQU8sQ0FBQyxDQUFFLE9BQWUsQ0FBQyxFQUFFLENBQUM7SUFDakMsQ0FBQzs4R0ExSVEsdUNBQXVDO2tHQUF2Qyx1Q0FBdUMsbU1BRnJDLENBQUMsZ0JBQWdCLENBQUMsdUxDOUJqQyw4ckdBbUVBOzsyRkRuQ2EsdUNBQXVDO2tCQVBuRCxTQUFTOytCQUNJLHVDQUF1QyxtQkFFaEMsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLGdCQUFnQixDQUFDOzBFQVFaLHdCQUF3QjtzQkFEeEMsU0FBUzt1QkFBQywwQkFBMEI7Z0JBa0JyQyxTQUFTO3NCQURSLFdBQVc7dUJBQUMsc0RBQXNEO2dCQUtsRCxhQUFhO3NCQUQ3QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgaW5qZWN0LFxuICAgIE9uSW5pdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZXN0cm95ZWRTZXJ2aWNlLCBOdWxsYWJsZSwgcmVzaXplT2JzZXJ2YWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTaWRlYmFyU2V0dGluZ3NHZW5lcmF0b3JDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2V0dGluZ3MtY29uZmlnLm1vZGVsJztcbmltcG9ydCB7XG4gICAgRm9ybVNldHRpbmdzSXRlbSxcbiAgICBHcm91cGVkRm9ybVNldHRpbmdzSXRlbSxcbiAgICBTZXR0aW5nc0l0ZW0sXG4gICAgU2lkZWJhclNldHRpbmdzTW9kZWwsXG4gICAgU2lkZWJhcldpZHRoQ29uZmlndXJhdGlvblxufSBmcm9tICcuLi8uLi9tb2RlbHMvc2V0dGluZ3MubW9kZWwnO1xuaW1wb3J0IHsgU2V0dGluZ3NHZW5lcmF0b3JDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2V0dGluZ3MtZ2VuZXJhdG9yLWNvbnRlbnQvc2V0dGluZ3MtZ2VuZXJhdG9yLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEZEUF9TRVRUSU5HU19HRU5FUkFUT1JfQ09ORklHIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcbmltcG9ydCB7IEJhc2VTZXR0aW5nc0dlbmVyYXRvckxheW91dCB9IGZyb20gJy4uL2Jhc2Utc2V0dGluZ3MtZ2VuZXJhdG9yLWxheW91dCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXNldHRpbmdzLWdlbmVyYXRvci1zaWRlYmFyLWxheW91dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmdzLWdlbmVyYXRvci1zaWRlYmFyLWxheW91dC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFtEZXN0cm95ZWRTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nc0dlbmVyYXRvclNpZGViYXJMYXlvdXRDb21wb25lbnRcbiAgICBleHRlbmRzIEJhc2VTZXR0aW5nc0dlbmVyYXRvckxheW91dFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0XG57XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdzZXR0aW5nc0dlbmVyYXRvckNvbnRlbnQnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2V0dGluZ3NHZW5lcmF0b3JDb250ZW50OiBTZXR0aW5nc0dlbmVyYXRvckNvbnRlbnRDb21wb25lbnQ7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2Rlc3Ryb3kkID0gaW5qZWN0KERlc3Ryb3llZFNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb25maWcgPSBpbmplY3Q8U2lkZWJhclNldHRpbmdzR2VuZXJhdG9yQ29uZmlnPihGRFBfU0VUVElOR1NfR0VORVJBVE9SX0NPTkZJRyk7XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RlZCBzZXR0aW5ncyBzZWN0aW9uLlxuICAgICAqL1xuICAgIF9zZWxlY3RlZEluZGV4ID0gLTE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zaWRlYmFyV2lkdGg6IFNpZGViYXJXaWR0aENvbmZpZ3VyYXRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmRwLXNldHRpbmdzLWdlbmVyYXRvcl9fc2lkZWJhci1sYXlvdXQtLW1vYmlsZScpXG4gICAgX2lzTW9iaWxlOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pbml0aWFsQ2xhc3MgPSAnZmRwLXNldHRpbmdzLWdlbmVyYXRvcl9fc2lkZWJhci1sYXlvdXQnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaWRlYmFyVmlzaWJsZSA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxTZWxlY3RlZEl0ZW1TZXQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9tb2JpbGVTaWRlYmFyVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTW9iaWxlICYmIHRoaXMuX3NpZGViYXJWaXNpYmxlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX3NpZGViYXJXaWR0aCA9IHRoaXMuX2dldE5vcm1hbGl6ZWRTaWRlYmFyV2lkdGgodGhpcy5fY29uZmlnLnNpZGViYXI/LndpZHRoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLl9zZXR0aW5nc0dlbmVyYXRvclNlcnZpY2Uuc2V0dGluZ3MucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKHNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNTaWRlYmFyU2V0dGluZ3Moc2V0dGluZ3MpICYmIHNldHRpbmdzLnNpZGViYXJXaWR0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NpZGViYXJXaWR0aCA9IHRoaXMuX2dldE5vcm1hbGl6ZWRTaWRlYmFyV2lkdGgoc2V0dGluZ3Muc2lkZWJhcldpZHRoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGZvY3VzRWxlbWVudEJ5UGF0aChwYXRoOiBzdHJpbmcsIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhdGhBcnJheSA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgLy8gV2UgYXJlIGludGVyZXN0ZWQgb25seSBpbiBzZWN0aW9ucyB3aXRoIElELlxuICAgICAgICBjb25zdCBzZWN0aW9uSW5kZXggPVxuICAgICAgICAgICAgdGhpcy5zZXR0aW5ncz8uaXRlbXMuZmluZEluZGV4KChzZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pc0Zvcm1HZW5lcmF0b3JTZWN0aW9uKHNlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlY3Rpb24uaWQgPT09IHBhdGhBcnJheVswXTtcbiAgICAgICAgICAgIH0pID8/IC0xO1xuXG4gICAgICAgIC8vIEZvY3VzIG9uIHNlY3Rpb24uXG4gICAgICAgIGlmIChzZWN0aW9uSW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRJbmRleChzZWN0aW9uSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3VycmVudGx5IHdlIHN1cHBvcnQgb25seSAyIGxldmVsIG5lc3Rpbmcgb2YgZm9ybSBncm91cHMuXG4gICAgICAgIGlmIChwYXRoQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zZXR0aW5nc0dlbmVyYXRvckNvbnRlbnQuc2V0QWN0aXZlVGFiKHBhdGhBcnJheVsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzR2VuZXJhdG9yLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCAmJiB0aGlzLl9jb25maWcuc2lkZWJhcj8ubW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgcmVzaXplT2JzZXJ2YWJsZSh0aGlzLl9zZXR0aW5nc0dlbmVyYXRvci5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAgICAgLnBpcGUoc3RhcnRXaXRoKG51bGwpLCBkZWJvdW5jZVRpbWUoMzApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHdpZHRoIH0gPSB0aGlzLl9zZXR0aW5nc0dlbmVyYXRvci5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTW9iaWxlID0gd2lkdGggPD0gdGhpcy5fY29uZmlnLnNpZGViYXIubW9iaWxlQnJlYWtwb2ludDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzTW9iaWxlID09PSBpc01vYmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldHRpbmdzR2VuZXJhdG9yU2VydmljZS5zZXRNb2JpbGVTdGF0ZShpc01vYmlsZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzTW9iaWxlID0gaXNNb2JpbGU7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVXNlciBvcGVuZWQgc2VjdGlvbiBwcmV2aW91c2x5LCBzbyBmb2N1cyBvbiB0aGF0IHNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzTW9iaWxlICYmIHRoaXMuX3NlbGVjdGVkSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2lkZWJhclZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIEluIG1vYmlsZSB2aWV3LCB3ZSBkb24ndCBuZWVkIHRvIHNldCBpbml0aWFsIGluZGV4LCBzaW5jZSB0aGUgc2VjdGlvbiB3b24ndCBiZSB2aXNpYmxlIHRvIHRoZSBlbmQgdXNlci5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFsU2VsZWN0ZWRJdGVtU2V0ICYmICF0aGlzLl9pc01vYmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0U2VsZWN0ZWRJbmRleCh0aGlzLl9zZWxlY3RlZEluZGV4ID4gLTEgPyB0aGlzLl9zZWxlY3RlZEluZGV4IDogMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbml0aWFsU2VsZWN0ZWRJdGVtU2V0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2V0U2VsZWN0ZWRJbmRleChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSBpbmRleDtcbiAgICAgICAgdGhpcy5fc2lkZWJhclZpc2libGUgPSBpbmRleCA9PT0gLTE7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBIaWRkZW4gKi9cbiAgICBfZ29CYWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZEluZGV4KC0xKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldE5vcm1hbGl6ZWRTaWRlYmFyV2lkdGgod2lkdGg6IHN0cmluZyB8IFNpZGViYXJXaWR0aENvbmZpZ3VyYXRpb24pOiBTaWRlYmFyV2lkdGhDb25maWd1cmF0aW9uIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB3aWR0aCA9PT0gJ3N0cmluZycgPyB7IG1pbldpZHRoOiB3aWR0aCwgbWF4V2lkdGg6IHdpZHRoLCB3aWR0aCB9IDogd2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc1NpZGViYXJTZXR0aW5ncyhzZXR0aW5nczogTnVsbGFibGU8YW55Pik6IHNldHRpbmdzIGlzIFNpZGViYXJTZXR0aW5nc01vZGVsPGFueT4ge1xuICAgICAgICByZXR1cm4gc2V0dGluZ3M/LmFwcGVhcmFuY2UgPT09ICdzaWRlYmFyJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzRm9ybUdlbmVyYXRvclNlY3Rpb24oc2VjdGlvbjogU2V0dGluZ3NJdGVtKTogc2VjdGlvbiBpcyBGb3JtU2V0dGluZ3NJdGVtIHwgR3JvdXBlZEZvcm1TZXR0aW5nc0l0ZW0ge1xuICAgICAgICByZXR1cm4gISEoc2VjdGlvbiBhcyBhbnkpLmlkO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZkcC1zZXR0aW5ncy1nZW5lcmF0b3JfX3NpZGViYXJcIlxuICAgIFtjbGFzcy5mZHAtc2V0dGluZ3MtZ2VuZXJhdG9yX19zaWRlYmFyLS1oaWRkZW5dPVwiIV9tb2JpbGVTaWRlYmFyVmlzaWJsZVwiXG4gICAgW3N0eWxlLndpZHRoXT1cIl9tb2JpbGVTaWRlYmFyVmlzaWJsZSA/IG51bGwgOiBfc2lkZWJhcldpZHRoLndpZHRoXCJcbiAgICBbc3R5bGUubWluLXdpZHRoXT1cIl9tb2JpbGVTaWRlYmFyVmlzaWJsZSA/IG51bGwgOiBfc2lkZWJhcldpZHRoLm1pbldpZHRoXCJcbiAgICBbc3R5bGUubWF4LXdpZHRoXT1cIl9tb2JpbGVTaWRlYmFyVmlzaWJsZSA/IG51bGwgOiBfc2lkZWJhcldpZHRoLm1heFdpZHRoXCJcbj5cbiAgICA8dWwgZmQtbGlzdCBbYnlsaW5lXT1cInRydWVcIiBbbmF2aWdhdGlvbkluZGljYXRvcl09XCJ0cnVlXCI+XG4gICAgICAgIDxsaVxuICAgICAgICAgICAgKGNsaWNrKT1cIl9zZXRTZWxlY3RlZEluZGV4KGkpXCJcbiAgICAgICAgICAgIGZkLWxpc3QtaXRlbVxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cImkgPT09IF9zZWxlY3RlZEluZGV4XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNldHRpbmdzPy5pdGVtczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxhIGZkLWxpc3QtbGluayBbbmF2aWdhdGVkXT1cImkgPT09IF9zZWxlY3RlZEluZGV4XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbGlzdC10aHVtYm5haWwgKm5nSWY9XCJpdGVtLnRodW1ibmFpbFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmRwLXNldHRpbmdzLWdlbmVyYXRvci1zaWRlYmFyLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aHVtYm5haWxdPVwiaXRlbS50aHVtYm5haWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZHAtc2V0dGluZ3MtZ2VuZXJhdG9yLXNpZGViYXItaWNvbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1saXN0LWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnRpdGxlIHwgZmRrQXN5bmNPclN5bmMgYXMgdGl0bGVWYWx1ZTsgZWxzZSB0aXRsZUVsc2VCbG9ja1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1saXN0LXRpdGxlPnt7IHRpdGxlVmFsdWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdGl0bGVFbHNlQmxvY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWxpc3QtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXNrZWxldG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2cHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmVjdGFuZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI0MCVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0TGluZXM9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW46IGF1dG8gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmQtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1saXN0LWJ5bGluZSAqbmdJZj1cIml0ZW0uZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uZGVzY3JpcHRpb24gfCBmZGtBc3luY09yU3luYyBhcyBkZXNjcmlwdGlvblZhbHVlOyBlbHNlIGRlc2NyaXB0aW9uRWxzZUJsb2NrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkZXNjcmlwdGlvblZhbHVlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVzY3JpcHRpb25FbHNlQmxvY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXNrZWxldG9uIHR5cGU9XCJ0ZXh0XCIgd2lkdGg9XCI2MCVcIiB0ZXh0TGluZXM9XCIxXCIgc3R5bGU9XCJtYXJnaW46IGF1dG8gMFwiPjwvZmQtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICA8L3VsPlxuPC9kaXY+XG48ZGl2XG4gICAgY2xhc3M9XCJmZHAtc2V0dGluZ3MtZ2VuZXJhdG9yX19jb250ZW50XCJcbiAgICBbY2xhc3MuZmRwLXNldHRpbmdzLWdlbmVyYXRvcl9fY29udGVudC0taGlkZGVuXT1cIl9tb2JpbGVTaWRlYmFyVmlzaWJsZVwiXG4gICAgW3N0eWxlLndpZHRoXT1cIl9tb2JpbGVTaWRlYmFyVmlzaWJsZSA/IG51bGwgOiAnY2FsYygxMDAlIC0gJyArIF9zaWRlYmFyV2lkdGgud2lkdGggKyAnKSdcIlxuICAgIFtzdHlsZS5taW4td2lkdGhdPVwiX21vYmlsZVNpZGViYXJWaXNpYmxlID8gbnVsbCA6ICdjYWxjKDEwMCUgLSAnICsgX3NpZGViYXJXaWR0aC5taW5XaWR0aCArICcpJ1wiXG4gICAgW3N0eWxlLm1heC13aWR0aF09XCJfbW9iaWxlU2lkZWJhclZpc2libGUgPyBudWxsIDogJ2NhbGMoMTAwJSAtICcgKyBfc2lkZWJhcldpZHRoLm1heFdpZHRoICsgJyknXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNldHRpbmdzPy5pdGVtczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8ZmRwLXNldHRpbmdzLWdlbmVyYXRvci1jb250ZW50XG4gICAgICAgICAgICBbYXR0ci5oaWRkZW5dPVwiaSAhPT0gX3NlbGVjdGVkSW5kZXggPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICAgICBbc2V0dGluZ3NdPVwiaXRlbVwiXG4gICAgICAgICAgICBbbW9iaWxlXT1cIl9pc01vYmlsZVwiXG4gICAgICAgICAgICAoZ29CYWNrKT1cIl9nb0JhY2soKVwiXG4gICAgICAgICAgICAjc2V0dGluZ3NHZW5lcmF0b3JDb250ZW50XG4gICAgICAgID48L2ZkcC1zZXR0aW5ncy1nZW5lcmF0b3ItY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtZ2VuZXJhdG9yLXNpZGViYXItbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zZXR0aW5ncy1nZW5lcmF0b3IvbGF5b3V0cy9zZXR0aW5ncy1nZW5lcmF0b3Itc2lkZWJhci1sYXlvdXQvc2V0dGluZ3MtZ2VuZXJhdG9yLXNpZGViYXItbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zZXR0aW5ncy1nZW5lcmF0b3IvbGF5b3V0cy9zZXR0aW5ncy1nZW5lcmF0b3Itc2lkZWJhci1sYXlvdXQvc2V0dGluZ3MtZ2VuZXJhdG9yLXNpZGViYXItbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFFVixXQUFXLEVBQ1gsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFZLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFTckUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFDMUgsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQVFoRSxNQUFNLE9BQU8sdUNBQ1QsU0FBUSwyQkFBMkI7SUFrQ25DLGNBQWM7SUFDZCxJQUFJLHFCQUFxQjtRQUNyQixPQUFP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QyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYztJQUNkLE9BQU87UUFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsY0FBYztJQUNOLDBCQUEwQixDQUFDLEtBQXlDO1FBQ3hFLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQzNGLENBQUM7SUFFRCxjQUFjO0lBQ04sa0JBQWtCLENBQUMsUUFBdUI7UUFDOUMsT0FBTyxRQUFRLEVBQUUsVUFBVSxLQUFLLFNBQVMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsY0FBYztJQUNOLHVCQUF1QixDQUFDLE9BQXFCO1FBQ2pELE9BQU8sQ0FBQyxDQUFFLE9BQWUsQ0FBQyxFQUFFLENBQUM7SUFDakMsQ0FBQzs4R0ExSVEsdUNBQXVDO2tHQUF2Qyx1Q0FBdUMsOFdDakNwRCw4ckdBbUVBOzsyRkRsQ2EsdUNBQXVDO2tCQU5uRCxTQUFTOytCQUNJLHVDQUF1QyxtQkFFaEMsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSTswRUFRckMsU0FBUztzQkFEUixXQUFXO3VCQUFDLHNEQUFzRDtnQkFLbEQsYUFBYTtzQkFEN0IsV0FBVzt1QkFBQyxPQUFPO2dCQUtILHlCQUF5QjtzQkFEekMsU0FBUzt1QkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBpbmplY3QsXG4gICAgT25Jbml0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE51bGxhYmxlLCByZXNpemVPYnNlcnZhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTaWRlYmFyU2V0dGluZ3NHZW5lcmF0b3JDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2V0dGluZ3MtY29uZmlnLm1vZGVsJztcbmltcG9ydCB7XG4gICAgRm9ybVNldHRpbmdzSXRlbSxcbiAgICBHcm91cGVkRm9ybVNldHRpbmdzSXRlbSxcbiAgICBTZXR0aW5nc0l0ZW0sXG4gICAgU2lkZWJhclNldHRpbmdzTW9kZWwsXG4gICAgU2lkZWJhcldpZHRoQ29uZmlndXJhdGlvblxufSBmcm9tICcuLi8uLi9tb2RlbHMvc2V0dGluZ3MubW9kZWwnO1xuaW1wb3J0IHsgU2V0dGluZ3NHZW5lcmF0b3JDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2V0dGluZ3MtZ2VuZXJhdG9yLWNvbnRlbnQvc2V0dGluZ3MtZ2VuZXJhdG9yLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEZEUF9TRVRUSU5HU19HRU5FUkFUT1JfQ09ORklHIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcbmltcG9ydCB7IEJhc2VTZXR0aW5nc0dlbmVyYXRvckxheW91dCB9IGZyb20gJy4uL2Jhc2Utc2V0dGluZ3MtZ2VuZXJhdG9yLWxheW91dCc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXNldHRpbmdzLWdlbmVyYXRvci1zaWRlYmFyLWxheW91dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmdzLWdlbmVyYXRvci1zaWRlYmFyLWxheW91dC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nc0dlbmVyYXRvclNpZGViYXJMYXlvdXRDb21wb25lbnRcbiAgICBleHRlbmRzIEJhc2VTZXR0aW5nc0dlbmVyYXRvckxheW91dFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0XG57XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkcC1zZXR0aW5ncy1nZW5lcmF0b3JfX3NpZGViYXItbGF5b3V0LS1tb2JpbGUnKVxuICAgIF9pc01vYmlsZTogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaW5pdGlhbENsYXNzID0gJ2ZkcC1zZXR0aW5ncy1nZW5lcmF0b3JfX3NpZGViYXItbGF5b3V0JztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnc2V0dGluZ3NHZW5lcmF0b3JDb250ZW50JylcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zZXR0aW5nc0dlbmVyYXRvckNvbnRlbnQ6IFNldHRpbmdzR2VuZXJhdG9yQ29udGVudENvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIFNlbGVjdGVkIHNldHRpbmdzIHNlY3Rpb24uXG4gICAgICovXG4gICAgX3NlbGVjdGVkSW5kZXggPSAtMTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zaWRlYmFyV2lkdGg6IFNpZGViYXJXaWR0aENvbmZpZ3VyYXRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnID0gaW5qZWN0PFNpZGViYXJTZXR0aW5nc0dlbmVyYXRvckNvbmZpZz4oRkRQX1NFVFRJTkdTX0dFTkVSQVRPUl9DT05GSUcpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaWRlYmFyVmlzaWJsZSA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxTZWxlY3RlZEl0ZW1TZXQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9tb2JpbGVTaWRlYmFyVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTW9iaWxlICYmIHRoaXMuX3NpZGViYXJWaXNpYmxlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuX3NpZGViYXJXaWR0aCA9IHRoaXMuX2dldE5vcm1hbGl6ZWRTaWRlYmFyV2lkdGgodGhpcy5fY29uZmlnLnNpZGViYXI/LndpZHRoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLl9zZXR0aW5nc0dlbmVyYXRvclNlcnZpY2Uuc2V0dGluZ3MucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgoc2V0dGluZ3MpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc1NpZGViYXJTZXR0aW5ncyhzZXR0aW5ncykgJiYgc2V0dGluZ3Muc2lkZWJhcldpZHRoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2lkZWJhcldpZHRoID0gdGhpcy5fZ2V0Tm9ybWFsaXplZFNpZGViYXJXaWR0aChzZXR0aW5ncy5zaWRlYmFyV2lkdGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZm9jdXNFbGVtZW50QnlQYXRoKHBhdGg6IHN0cmluZywgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGF0aEFycmF5ID0gcGF0aC5zcGxpdCgnLicpO1xuICAgICAgICAvLyBXZSBhcmUgaW50ZXJlc3RlZCBvbmx5IGluIHNlY3Rpb25zIHdpdGggSUQuXG4gICAgICAgIGNvbnN0IHNlY3Rpb25JbmRleCA9XG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzPy5pdGVtcy5maW5kSW5kZXgoKHNlY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2lzRm9ybUdlbmVyYXRvclNlY3Rpb24oc2VjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc2VjdGlvbi5pZCA9PT0gcGF0aEFycmF5WzBdO1xuICAgICAgICAgICAgfSkgPz8gLTE7XG5cbiAgICAgICAgLy8gRm9jdXMgb24gc2VjdGlvbi5cbiAgICAgICAgaWYgKHNlY3Rpb25JbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZEluZGV4KHNlY3Rpb25JbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDdXJyZW50bHkgd2Ugc3VwcG9ydCBvbmx5IDIgbGV2ZWwgbmVzdGluZyBvZiBmb3JtIGdyb3Vwcy5cbiAgICAgICAgaWYgKHBhdGhBcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXR0aW5nc0dlbmVyYXRvckNvbnRlbnQuc2V0QWN0aXZlVGFiKHBhdGhBcnJheVsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3NldHRpbmdzR2VuZXJhdG9yLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCAmJiB0aGlzLl9jb25maWcuc2lkZWJhcj8ubW9iaWxlQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgcmVzaXplT2JzZXJ2YWJsZSh0aGlzLl9zZXR0aW5nc0dlbmVyYXRvci5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAgICAgICAgICAgLnBpcGUoc3RhcnRXaXRoKG51bGwpLCBkZWJvdW5jZVRpbWUoMzApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgd2lkdGggfSA9IHRoaXMuX3NldHRpbmdzR2VuZXJhdG9yLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNb2JpbGUgPSB3aWR0aCA8PSB0aGlzLl9jb25maWcuc2lkZWJhci5tb2JpbGVCcmVha3BvaW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNNb2JpbGUgPT09IGlzTW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0dGluZ3NHZW5lcmF0b3JTZXJ2aWNlLnNldE1vYmlsZVN0YXRlKGlzTW9iaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXNNb2JpbGUgPSBpc01vYmlsZTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBVc2VyIG9wZW5lZCBzZWN0aW9uIHByZXZpb3VzbHksIHNvIGZvY3VzIG9uIHRoYXQgc2VjdGlvblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNNb2JpbGUgJiYgdGhpcy5fc2VsZWN0ZWRJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaWRlYmFyVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSW4gbW9iaWxlIHZpZXcsIHdlIGRvbid0IG5lZWQgdG8gc2V0IGluaXRpYWwgaW5kZXgsIHNpbmNlIHRoZSBzZWN0aW9uIHdvbid0IGJlIHZpc2libGUgdG8gdGhlIGVuZCB1c2VyLlxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2luaXRpYWxTZWxlY3RlZEl0ZW1TZXQgJiYgIXRoaXMuX2lzTW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXRTZWxlY3RlZEluZGV4KHRoaXMuX3NlbGVjdGVkSW5kZXggPiAtMSA/IHRoaXMuX3NlbGVjdGVkSW5kZXggOiAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxTZWxlY3RlZEl0ZW1TZXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTZWxlY3RlZEluZGV4KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IGluZGV4O1xuICAgICAgICB0aGlzLl9zaWRlYmFyVmlzaWJsZSA9IGluZGV4ID09PSAtMTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIF9nb0JhY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldFNlbGVjdGVkSW5kZXgoLTEpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Tm9ybWFsaXplZFNpZGViYXJXaWR0aCh3aWR0aDogc3RyaW5nIHwgU2lkZWJhcldpZHRoQ29uZmlndXJhdGlvbik6IFNpZGViYXJXaWR0aENvbmZpZ3VyYXRpb24ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHdpZHRoID09PSAnc3RyaW5nJyA/IHsgbWluV2lkdGg6IHdpZHRoLCBtYXhXaWR0aDogd2lkdGgsIHdpZHRoIH0gOiB3aWR0aDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzU2lkZWJhclNldHRpbmdzKHNldHRpbmdzOiBOdWxsYWJsZTxhbnk+KTogc2V0dGluZ3MgaXMgU2lkZWJhclNldHRpbmdzTW9kZWw8YW55PiB7XG4gICAgICAgIHJldHVybiBzZXR0aW5ncz8uYXBwZWFyYW5jZSA9PT0gJ3NpZGViYXInO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNGb3JtR2VuZXJhdG9yU2VjdGlvbihzZWN0aW9uOiBTZXR0aW5nc0l0ZW0pOiBzZWN0aW9uIGlzIEZvcm1TZXR0aW5nc0l0ZW0gfCBHcm91cGVkRm9ybVNldHRpbmdzSXRlbSB7XG4gICAgICAgIHJldHVybiAhIShzZWN0aW9uIGFzIGFueSkuaWQ7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZmRwLXNldHRpbmdzLWdlbmVyYXRvcl9fc2lkZWJhclwiXG4gICAgW2NsYXNzLmZkcC1zZXR0aW5ncy1nZW5lcmF0b3JfX3NpZGViYXItLWhpZGRlbl09XCIhX21vYmlsZVNpZGViYXJWaXNpYmxlXCJcbiAgICBbc3R5bGUud2lkdGhdPVwiX21vYmlsZVNpZGViYXJWaXNpYmxlID8gbnVsbCA6IF9zaWRlYmFyV2lkdGgud2lkdGhcIlxuICAgIFtzdHlsZS5taW4td2lkdGhdPVwiX21vYmlsZVNpZGViYXJWaXNpYmxlID8gbnVsbCA6IF9zaWRlYmFyV2lkdGgubWluV2lkdGhcIlxuICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiX21vYmlsZVNpZGViYXJWaXNpYmxlID8gbnVsbCA6IF9zaWRlYmFyV2lkdGgubWF4V2lkdGhcIlxuPlxuICAgIDx1bCBmZC1saXN0IFtieWxpbmVdPVwidHJ1ZVwiIFtuYXZpZ2F0aW9uSW5kaWNhdG9yXT1cInRydWVcIj5cbiAgICAgICAgPGxpXG4gICAgICAgICAgICAoY2xpY2spPVwiX3NldFNlbGVjdGVkSW5kZXgoaSlcIlxuICAgICAgICAgICAgZmQtbGlzdC1pdGVtXG4gICAgICAgICAgICBbc2VsZWN0ZWRdPVwiaSA9PT0gX3NlbGVjdGVkSW5kZXhcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2V0dGluZ3M/Lml0ZW1zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGEgZmQtbGlzdC1saW5rIFtuYXZpZ2F0ZWRdPVwiaSA9PT0gX3NlbGVjdGVkSW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBmZC1saXN0LXRodW1ibmFpbCAqbmdJZj1cIml0ZW0udGh1bWJuYWlsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtc2V0dGluZ3MtZ2VuZXJhdG9yLXNpZGViYXItaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgW3RodW1ibmFpbF09XCJpdGVtLnRodW1ibmFpbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZkcC1zZXR0aW5ncy1nZW5lcmF0b3Itc2lkZWJhci1pY29uPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWxpc3QtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udGl0bGUgfCBmZGtBc3luY09yU3luYyBhcyB0aXRsZVZhbHVlOyBlbHNlIHRpdGxlRWxzZUJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWxpc3QtdGl0bGU+e3sgdGl0bGVWYWx1ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0aXRsZUVsc2VCbG9jaz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtbGlzdC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtc2tlbGV0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyZWN0YW5nbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjQwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRMaW5lcz1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbjogYXV0byAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZC1za2VsZXRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWxpc3QtYnlsaW5lICpuZ0lmPVwiaXRlbS5kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5kZXNjcmlwdGlvbiB8IGZka0FzeW5jT3JTeW5jIGFzIGRlc2NyaXB0aW9uVmFsdWU7IGVsc2UgZGVzY3JpcHRpb25FbHNlQmxvY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRlc2NyaXB0aW9uVmFsdWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZXNjcmlwdGlvbkVsc2VCbG9jaz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtc2tlbGV0b24gdHlwZT1cInRleHRcIiB3aWR0aD1cIjYwJVwiIHRleHRMaW5lcz1cIjFcIiBzdHlsZT1cIm1hcmdpbjogYXV0byAwXCI+PC9mZC1za2VsZXRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L2xpPlxuICAgIDwvdWw+XG48L2Rpdj5cbjxkaXZcbiAgICBjbGFzcz1cImZkcC1zZXR0aW5ncy1nZW5lcmF0b3JfX2NvbnRlbnRcIlxuICAgIFtjbGFzcy5mZHAtc2V0dGluZ3MtZ2VuZXJhdG9yX19jb250ZW50LS1oaWRkZW5dPVwiX21vYmlsZVNpZGViYXJWaXNpYmxlXCJcbiAgICBbc3R5bGUud2lkdGhdPVwiX21vYmlsZVNpZGViYXJWaXNpYmxlID8gbnVsbCA6ICdjYWxjKDEwMCUgLSAnICsgX3NpZGViYXJXaWR0aC53aWR0aCArICcpJ1wiXG4gICAgW3N0eWxlLm1pbi13aWR0aF09XCJfbW9iaWxlU2lkZWJhclZpc2libGUgPyBudWxsIDogJ2NhbGMoMTAwJSAtICcgKyBfc2lkZWJhcldpZHRoLm1pbldpZHRoICsgJyknXCJcbiAgICBbc3R5bGUubWF4LXdpZHRoXT1cIl9tb2JpbGVTaWRlYmFyVmlzaWJsZSA/IG51bGwgOiAnY2FsYygxMDAlIC0gJyArIF9zaWRlYmFyV2lkdGgubWF4V2lkdGggKyAnKSdcIlxuPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2V0dGluZ3M/Lml0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxmZHAtc2V0dGluZ3MtZ2VuZXJhdG9yLWNvbnRlbnRcbiAgICAgICAgICAgIFthdHRyLmhpZGRlbl09XCJpICE9PSBfc2VsZWN0ZWRJbmRleCA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgICAgIFtzZXR0aW5nc109XCJpdGVtXCJcbiAgICAgICAgICAgIFttb2JpbGVdPVwiX2lzTW9iaWxlXCJcbiAgICAgICAgICAgIChnb0JhY2spPVwiX2dvQmFjaygpXCJcbiAgICAgICAgICAgICNzZXR0aW5nc0dlbmVyYXRvckNvbnRlbnRcbiAgICAgICAgPjwvZmRwLXNldHRpbmdzLWdlbmVyYXRvci1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, Inject, inject, Injector, Input, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { DestroyedService } from '@fundamental-ngx/cdk/utils';
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, ElementRef, HostBinding, Inject, inject, Injector, Input, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';
|
|
3
2
|
import { FormGeneratorService } from '@fundamental-ngx/platform/form';
|
|
4
3
|
import { SettingsGeneratorSidebarLayoutComponent } from './layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component';
|
|
5
4
|
import { SettingsGeneratorLayoutAccessorService } from './settings-generator-layout-accessor.service';
|
|
6
5
|
import { SettingsGeneratorService } from './settings-generator.service';
|
|
7
6
|
import { ThemeSelectorListComponent } from './controls/theme-selector-list/theme-selector-list.component';
|
|
8
|
-
import { BehaviorSubject, filter
|
|
7
|
+
import { BehaviorSubject, filter } from 'rxjs';
|
|
9
8
|
import { FDP_SETTINGS_GENERATOR, FDP_SETTINGS_GENERATOR_CONFIG } from './tokens';
|
|
9
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
import * as i1 from "@fundamental-ngx/platform/form";
|
|
12
12
|
import * as i2 from "./settings-generator-layout-accessor.service";
|
|
13
|
-
import * as i3 from "@fundamental-ngx/cdk/utils";
|
|
14
13
|
export class SettingsGeneratorComponent {
|
|
15
14
|
/**
|
|
16
15
|
* Settings configuration.
|
|
@@ -27,13 +26,15 @@ export class SettingsGeneratorComponent {
|
|
|
27
26
|
return this._settings;
|
|
28
27
|
}
|
|
29
28
|
/** @hidden */
|
|
30
|
-
constructor(_fgService, _settingsLayoutService, _injector, _cdr,
|
|
29
|
+
constructor(_fgService, _settingsLayoutService, _injector, _cdr, _destroyRef, _config) {
|
|
31
30
|
this._fgService = _fgService;
|
|
32
31
|
this._settingsLayoutService = _settingsLayoutService;
|
|
33
32
|
this._injector = _injector;
|
|
34
33
|
this._cdr = _cdr;
|
|
35
|
-
this.
|
|
34
|
+
this._destroyRef = _destroyRef;
|
|
36
35
|
this._config = _config;
|
|
36
|
+
/** @hidden */
|
|
37
|
+
this._initialClass = 'fdp-settings-generator';
|
|
37
38
|
/**
|
|
38
39
|
* Settings Generator Element Ref.
|
|
39
40
|
*/
|
|
@@ -41,8 +42,6 @@ export class SettingsGeneratorComponent {
|
|
|
41
42
|
/** @hidden */
|
|
42
43
|
this._settingsGeneratorService = inject(SettingsGeneratorService);
|
|
43
44
|
/** @hidden */
|
|
44
|
-
this._initialClass = 'fdp-settings-generator';
|
|
45
|
-
/** @hidden */
|
|
46
45
|
this._viewReady = new BehaviorSubject(false);
|
|
47
46
|
this._settingsLayoutService.addLayout('sidebar', SettingsGeneratorSidebarLayoutComponent);
|
|
48
47
|
this._fgService.addComponent(ThemeSelectorListComponent, ['theme-list']);
|
|
@@ -54,7 +53,7 @@ export class SettingsGeneratorComponent {
|
|
|
54
53
|
ngAfterViewInit() {
|
|
55
54
|
this._viewReady.next(true);
|
|
56
55
|
// We need to notify children components to update their classes.
|
|
57
|
-
this._settingsGeneratorService.mobileState$.pipe(
|
|
56
|
+
this._settingsGeneratorService.mobileState$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {
|
|
58
57
|
this._cdr.markForCheck();
|
|
59
58
|
});
|
|
60
59
|
}
|
|
@@ -94,10 +93,9 @@ export class SettingsGeneratorComponent {
|
|
|
94
93
|
this._cdr.detectChanges();
|
|
95
94
|
});
|
|
96
95
|
}
|
|
97
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SettingsGeneratorComponent, deps: [{ token: i1.FormGeneratorService }, { token: i2.SettingsGeneratorLayoutAccessorService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token:
|
|
96
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SettingsGeneratorComponent, deps: [{ token: i1.FormGeneratorService }, { token: i2.SettingsGeneratorLayoutAccessorService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i0.DestroyRef }, { token: FDP_SETTINGS_GENERATOR_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
97
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: SettingsGeneratorComponent, selector: "fdp-settings-generator", inputs: { settings: "settings" }, host: { properties: { "class": "this._initialClass" } }, providers: [
|
|
99
98
|
SettingsGeneratorService,
|
|
100
|
-
DestroyedService,
|
|
101
99
|
{
|
|
102
100
|
provide: FDP_SETTINGS_GENERATOR,
|
|
103
101
|
useExisting: SettingsGeneratorComponent
|
|
@@ -108,22 +106,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
108
106
|
type: Component,
|
|
109
107
|
args: [{ selector: 'fdp-settings-generator', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
110
108
|
SettingsGeneratorService,
|
|
111
|
-
DestroyedService,
|
|
112
109
|
{
|
|
113
110
|
provide: FDP_SETTINGS_GENERATOR,
|
|
114
111
|
useExisting: SettingsGeneratorComponent
|
|
115
112
|
}
|
|
116
113
|
], template: "<ng-container #renderer></ng-container>\n", styles: [".fdp-settings-generator{display:block}.fdp-settings-generator .fdp-settings-generator__title{padding:1.5rem 1rem 1rem}.fdp-settings-generator__sidebar{border-right:.0625rem solid var(--sapGroup_ContentBorderColor);background:var(--sapBaseColor)}.fdp-settings-generator__content{background:var(--sapBaseColor);flex-grow:1}.fdp-settings-generator__content-section{display:block}.fdp-settings-generator__content-section[hidden]{display:none}.fdp-settings-generator__sidebar-layout{display:flex;position:relative}.fdp-settings-generator__sidebar-layout--mobile .fdp-settings-generator__content{min-width:100%!important;width:100%!important;max-width:100%!important}.fdp-settings-generator__sidebar-layout--mobile .fdp-settings-generator__content--hidden{display:none}.fdp-settings-generator__sidebar-layout--mobile .fdp-settings-generator__sidebar{width:100%}.fdp-settings-generator__sidebar-layout--mobile .fdp-settings-generator__sidebar--hidden{display:none}\n"] }]
|
|
117
|
-
}], ctorParameters: function () { return [{ type: i1.FormGeneratorService }, { type: i2.SettingsGeneratorLayoutAccessorService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type:
|
|
114
|
+
}], ctorParameters: function () { return [{ type: i1.FormGeneratorService }, { type: i2.SettingsGeneratorLayoutAccessorService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i0.DestroyRef }, { type: undefined, decorators: [{
|
|
118
115
|
type: Inject,
|
|
119
116
|
args: [FDP_SETTINGS_GENERATOR_CONFIG]
|
|
120
|
-
}] }]; }, propDecorators: {
|
|
121
|
-
type: Input
|
|
122
|
-
}], _initialClass: [{
|
|
117
|
+
}] }]; }, propDecorators: { _initialClass: [{
|
|
123
118
|
type: HostBinding,
|
|
124
119
|
args: ['class']
|
|
125
120
|
}], _viewRef: [{
|
|
126
121
|
type: ViewChild,
|
|
127
122
|
args: ['renderer', { read: ViewContainerRef }]
|
|
123
|
+
}], settings: [{
|
|
124
|
+
type: Input
|
|
128
125
|
}] } });
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtZ2VuZXJhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zZXR0aW5ncy1nZW5lcmF0b3Ivc2V0dGluZ3MtZ2VuZXJhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zZXR0aW5ncy1nZW5lcmF0b3Ivc2V0dGluZ3MtZ2VuZXJhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFFTCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV0RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSx5RkFBeUYsQ0FBQztBQUdsSixPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RyxPQUFPLEVBQWdDLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDMUcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQTRCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7O0FBa0JqRixNQUFNLE9BQU8sMEJBQTBCO0lBS25DOztPQUVHO0lBQ0gsSUFDSSxRQUFRLENBQUMsS0FB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QixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Asd0JBQXdCO3dCQUN4QixnQkFBZ0I7d0JBQ2hCOzRCQUNJLE9BQU8sRUFBRSxzQkFBc0I7NEJBQy9CLFdBQVcsNEJBQTRCO3lCQUMxQztxQkFDSjs7MEJBeURJLE1BQU07MkJBQUMsNkJBQTZCOzRDQTlDckMsUUFBUTtzQkFEWCxLQUFLO2dCQXNCVyxhQUFhO3NCQUQ3QixXQUFXO3VCQUFDLE9BQU87Z0JBS0gsUUFBUTtzQkFEeEIsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVzdHJveWVkU2VydmljZSwgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBGb3JtR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vZm9ybSc7XG5pbXBvcnQgeyBCYXNlU2V0dGluZ3NHZW5lcmF0b3JMYXlvdXQgfSBmcm9tICcuL2xheW91dHMvYmFzZS1zZXR0aW5ncy1nZW5lcmF0b3ItbGF5b3V0JztcbmltcG9ydCB7IFNldHRpbmdzR2VuZXJhdG9yU2lkZWJhckxheW91dENvbXBvbmVudCB9IGZyb20gJy4vbGF5b3V0cy9zZXR0aW5ncy1nZW5lcmF0b3Itc2lkZWJhci1sYXlvdXQvc2V0dGluZ3MtZ2VuZXJhdG9yLXNpZGViYXItbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZXR0aW5nc0NvbmZpZyB9IGZyb20gJy4vbW9kZWxzL3NldHRpbmdzLWNvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBTZXR0aW5nc01vZGVsIH0gZnJvbSAnLi9tb2RlbHMvc2V0dGluZ3MubW9kZWwnO1xuaW1wb3J0IHsgU2V0dGluZ3NHZW5lcmF0b3JMYXlvdXRBY2Nlc3NvclNlcnZpY2UgfSBmcm9tICcuL3NldHRpbmdzLWdlbmVyYXRvci1sYXlvdXQtYWNjZXNzb3Iuc2VydmljZSc7XG5pbXBvcnQgeyBTZXR0aW5nc0dlbmVyYXRvclJldHVyblZhbHVlLCBTZXR0aW5nc0dlbmVyYXRvclNlcnZpY2UgfSBmcm9tICcuL3NldHRpbmdzLWdlbmVyYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFRoZW1lU2VsZWN0b3JMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9scy90aGVtZS1zZWxlY3Rvci1saXN0L3RoZW1lLXNlbGVjdG9yLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRkRQX1NFVFRJTkdTX0dFTkVSQVRPUiwgRkRQX1NFVFRJTkdTX0dFTkVSQVRPUl9DT05GSUcgfSBmcm9tICcuL3Rva2Vucyc7XG5pbXBvcnQgeyBTZXR0aW5nc0dlbmVyYXRvciB9IGZyb20gJy4vbW9kZWxzL3NldHRpbmdzLWdlbmVyYXRvci5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLXNldHRpbmdzLWdlbmVyYXRvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmdzLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2V0dGluZ3MtZ2VuZXJhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgU2V0dGluZ3NHZW5lcmF0b3JTZXJ2aWNlLFxuICAgICAgICBEZXN0cm95ZWRTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRFBfU0VUVElOR1NfR0VORVJBVE9SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFNldHRpbmdzR2VuZXJhdG9yQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdzR2VuZXJhdG9yQ29tcG9uZW50IGltcGxlbWVudHMgU2V0dGluZ3NHZW5lcmF0b3IsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogU2V0dGluZ3MgR2VuZXJhdG9yIEVsZW1lbnQgUmVmLlxuICAgICAqL1xuICAgIGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICAgIC8qKlxuICAgICAqIFNldHRpbmdzIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2V0dGluZ3ModmFsdWU6IE51bGxhYmxlPFNldHRpbmdzTW9kZWw+KSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdmFsdWUuYXBwZWFyYW5jZSA9IHZhbHVlLmFwcGVhcmFuY2UgfHwgKHRoaXMuX2NvbmZpZy5kZWZhdWx0TGF5b3V0IGFzIHN0cmluZyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fc2V0dGluZ3NHZW5lcmF0b3JTZXJ2aWNlLnNldHRpbmdzLm5leHQodmFsdWUpO1xuICAgICAgICB0aGlzLl9zZXRMYXlvdXQoKTtcbiAgICB9XG5cbiAgICBnZXQgc2V0dGluZ3MoKTogTnVsbGFibGU8U2V0dGluZ3NNb2RlbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3M7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXR0aW5nczogTnVsbGFibGU8U2V0dGluZ3NNb2RlbD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3NldHRpbmdzR2VuZXJhdG9yU2VydmljZSA9IGluamVjdChTZXR0aW5nc0dlbmVyYXRvclNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pbml0aWFsQ2xhc3MgPSAnZmRwLXNldHRpbmdzLWdlbmVyYXRvcic7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3JlbmRlcmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdmlld1JlZjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3VycmVudExheW91dDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF92aWV3UmVhZHkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmlld1JlYWR5U3ViOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xheW91dENvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPEJhc2VTZXR0aW5nc0dlbmVyYXRvckxheW91dD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9mZ1NlcnZpY2U6IEZvcm1HZW5lcmF0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9zZXR0aW5nc0xheW91dFNlcnZpY2U6IFNldHRpbmdzR2VuZXJhdG9yTGF5b3V0QWNjZXNzb3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkOiBEZXN0cm95ZWRTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KEZEUF9TRVRUSU5HU19HRU5FUkFUT1JfQ09ORklHKSBwcml2YXRlIHJlYWRvbmx5IF9jb25maWc6IFNldHRpbmdzQ29uZmlnXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3NldHRpbmdzTGF5b3V0U2VydmljZS5hZGRMYXlvdXQoJ3NpZGViYXInLCBTZXR0aW5nc0dlbmVyYXRvclNpZGViYXJMYXlvdXRDb21wb25lbnQpO1xuICAgICAgICB0aGlzLl9mZ1NlcnZpY2UuYWRkQ29tcG9uZW50KFRoZW1lU2VsZWN0b3JMaXN0Q29tcG9uZW50LCBbJ3RoZW1lLWxpc3QnXSk7XG4gICAgICAgIHRoaXMuX3NldHRpbmdzR2VuZXJhdG9yU2VydmljZS5vbkl0ZW1Gb2N1cy5zdWJzY3JpYmUoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sYXlvdXRDb21wb25lbnRSZWYuaW5zdGFuY2UuZm9jdXNFbGVtZW50QnlQYXRoKGVudHJ5LnBhdGgsIGVudHJ5LmVsZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlld1JlYWR5Lm5leHQodHJ1ZSk7XG5cbiAgICAgICAgLy8gV2UgbmVlZCB0byBub3RpZnkgY2hpbGRyZW4gY29tcG9uZW50cyB0byB1cGRhdGUgdGhlaXIgY2xhc3Nlcy5cbiAgICAgICAgdGhpcy5fc2V0dGluZ3NHZW5lcmF0b3JTZXJ2aWNlLm1vYmlsZVN0YXRlJC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZpZXdSZWFkeS5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl92aWV3UmVhZHlTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2xheW91dENvbXBvbmVudFJlZj8uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLl92aWV3UmVmPy5jbGVhcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2dyYW1tYXRpY2FsbHkgc3VibWl0IGlubmVyIGZvcm1zIG9mIHRoZSBzZXR0aW5ncyBnZW5lcmF0b3IuXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB3aXRoIHNldHRpbmdzIHZhbHVlIGdyb3VwZWQgYnkgbWFpbiBzZWN0aW9ucyBhbmQgaW5uZXIgc2VjdGlvbnMuXG4gICAgICovXG4gICAgc3VibWl0KCk6IE9ic2VydmFibGU8U2V0dGluZ3NHZW5lcmF0b3JSZXR1cm5WYWx1ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3NHZW5lcmF0b3JTZXJ2aWNlLnN1Ym1pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0TGF5b3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl92aWV3UmVhZHlTdWI/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgdGhpcy5fdmlld1JlYWR5U3ViID0gdGhpcy5fdmlld1JlYWR5LnBpcGUoZmlsdGVyKChyZWFkeSkgPT4gcmVhZHkpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNldHRpbmdzPy5hcHBlYXJhbmNlIHx8IHRoaXMuX2N1cnJlbnRMYXlvdXQgPT09IHRoaXMuc2V0dGluZ3MuYXBwZWFyYW5jZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbGF5b3V0Q29tcG9uZW50ID0gdGhpcy5fc2V0dGluZ3NMYXlvdXRTZXJ2aWNlLmdldExheW91dCh0aGlzLnNldHRpbmdzLmFwcGVhcmFuY2UpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dENvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgICAgIHByb3ZpZGVyczogW10sXG4gICAgICAgICAgICAgICAgcGFyZW50OiB0aGlzLl9pbmplY3RvclxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX2xheW91dENvbXBvbmVudFJlZj8uZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5fdmlld1JlZi5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5fbGF5b3V0Q29tcG9uZW50UmVmID0gdGhpcy5fdmlld1JlZi5jcmVhdGVDb21wb25lbnQobGF5b3V0Q29tcG9uZW50LCB7IGluamVjdG9yIH0pO1xuXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50TGF5b3V0ID0gdGhpcy5zZXR0aW5ncy5hcHBlYXJhbmNlO1xuXG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICNyZW5kZXJlcj48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MtZ2VuZXJhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zZXR0aW5ncy1nZW5lcmF0b3Ivc2V0dGluZ3MtZ2VuZXJhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi9zZXR0aW5ncy1nZW5lcmF0b3Ivc2V0dGluZ3MtZ2VuZXJhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBRUwsU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFdEUsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0seUZBQXlGLENBQUM7QUFHbEosT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdEcsT0FBTyxFQUFnQyx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUN6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFakYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFnQmhFLE1BQU0sT0FBTywwQkFBMEI7SUFhbkM7O09BRUc7SUFDSCxJQUNJLFFBQVEsQ0FBQyxLQUE4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LG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQLHdCQUF3Qjt3QkFDeEI7NEJBQ0ksT0FBTyxFQUFFLHNCQUFzQjs0QkFDL0IsV0FBVyw0QkFBNEI7eUJBQzFDO3FCQUNKOzswQkF5REksTUFBTTsyQkFBQyw2QkFBNkI7NENBcER4QixhQUFhO3NCQUQ3QixXQUFXO3VCQUFDLE9BQU87Z0JBSUgsUUFBUTtzQkFEeEIsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBWTdDLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRm9ybUdlbmVyYXRvclNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL2Zvcm0nO1xuaW1wb3J0IHsgQmFzZVNldHRpbmdzR2VuZXJhdG9yTGF5b3V0IH0gZnJvbSAnLi9sYXlvdXRzL2Jhc2Utc2V0dGluZ3MtZ2VuZXJhdG9yLWxheW91dCc7XG5pbXBvcnQgeyBTZXR0aW5nc0dlbmVyYXRvclNpZGViYXJMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL2xheW91dHMvc2V0dGluZ3MtZ2VuZXJhdG9yLXNpZGViYXItbGF5b3V0L3NldHRpbmdzLWdlbmVyYXRvci1zaWRlYmFyLWxheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2V0dGluZ3NDb25maWcgfSBmcm9tICcuL21vZGVscy9zZXR0aW5ncy1jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgU2V0dGluZ3NNb2RlbCB9IGZyb20gJy4vbW9kZWxzL3NldHRpbmdzLm1vZGVsJztcbmltcG9ydCB7IFNldHRpbmdzR2VuZXJhdG9yTGF5b3V0QWNjZXNzb3JTZXJ2aWNlIH0gZnJvbSAnLi9zZXR0aW5ncy1nZW5lcmF0b3ItbGF5b3V0LWFjY2Vzc29yLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2V0dGluZ3NHZW5lcmF0b3JSZXR1cm5WYWx1ZSwgU2V0dGluZ3NHZW5lcmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi9zZXR0aW5ncy1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBUaGVtZVNlbGVjdG9yTGlzdENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbHMvdGhlbWUtc2VsZWN0b3ItbGlzdC90aGVtZS1zZWxlY3Rvci1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGRFBfU0VUVElOR1NfR0VORVJBVE9SLCBGRFBfU0VUVElOR1NfR0VORVJBVE9SX0NPTkZJRyB9IGZyb20gJy4vdG9rZW5zJztcbmltcG9ydCB7IFNldHRpbmdzR2VuZXJhdG9yIH0gZnJvbSAnLi9tb2RlbHMvc2V0dGluZ3MtZ2VuZXJhdG9yLm1vZGVsJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtc2V0dGluZ3MtZ2VuZXJhdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2V0dGluZ3MtZ2VuZXJhdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zZXR0aW5ncy1nZW5lcmF0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBTZXR0aW5nc0dlbmVyYXRvclNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEUF9TRVRUSU5HU19HRU5FUkFUT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogU2V0dGluZ3NHZW5lcmF0b3JDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NHZW5lcmF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBTZXR0aW5nc0dlbmVyYXRvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2luaXRpYWxDbGFzcyA9ICdmZHAtc2V0dGluZ3MtZ2VuZXJhdG9yJztcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3JlbmRlcmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdmlld1JlZjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIC8qKlxuICAgICAqIFNldHRpbmdzIEdlbmVyYXRvciBFbGVtZW50IFJlZi5cbiAgICAgKi9cbiAgICBlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICAgIC8qKlxuICAgICAqIFNldHRpbmdzIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgc2V0dGluZ3ModmFsdWU6IE51bGxhYmxlPFNldHRpbmdzTW9kZWw+KSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdmFsdWUuYXBwZWFyYW5jZSA9IHZhbHVlLmFwcGVhcmFuY2UgfHwgKHRoaXMuX2NvbmZpZy5kZWZhdWx0TGF5b3V0IGFzIHN0cmluZyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0dGluZ3MgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fc2V0dGluZ3NHZW5lcmF0b3JTZXJ2aWNlLnNldHRpbmdzLm5leHQodmFsdWUpO1xuICAgICAgICB0aGlzLl9zZXRMYXlvdXQoKTtcbiAgICB9XG5cbiAgICBnZXQgc2V0dGluZ3MoKTogTnVsbGFibGU8U2V0dGluZ3NNb2RlbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3M7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXR0aW5nczogTnVsbGFibGU8U2V0dGluZ3NNb2RlbD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3NldHRpbmdzR2VuZXJhdG9yU2VydmljZSA9IGluamVjdChTZXR0aW5nc0dlbmVyYXRvclNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jdXJyZW50TGF5b3V0OiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdSZWFkeSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92aWV3UmVhZHlTdWI6IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGF5b3V0Q29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8QmFzZVNldHRpbmdzR2VuZXJhdG9yTGF5b3V0PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZnU2VydmljZTogRm9ybUdlbmVyYXRvclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3NldHRpbmdzTGF5b3V0U2VydmljZTogU2V0dGluZ3NHZW5lcmF0b3JMYXlvdXRBY2Nlc3NvclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZjogRGVzdHJveVJlZixcbiAgICAgICAgQEluamVjdChGRFBfU0VUVElOR1NfR0VORVJBVE9SX0NPTkZJRykgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnOiBTZXR0aW5nc0NvbmZpZ1xuICAgICkge1xuICAgICAgICB0aGlzLl9zZXR0aW5nc0xheW91dFNlcnZpY2UuYWRkTGF5b3V0KCdzaWRlYmFyJywgU2V0dGluZ3NHZW5lcmF0b3JTaWRlYmFyTGF5b3V0Q29tcG9uZW50KTtcbiAgICAgICAgdGhpcy5fZmdTZXJ2aWNlLmFkZENvbXBvbmVudChUaGVtZVNlbGVjdG9yTGlzdENvbXBvbmVudCwgWyd0aGVtZS1saXN0J10pO1xuICAgICAgICB0aGlzLl9zZXR0aW5nc0dlbmVyYXRvclNlcnZpY2Uub25JdGVtRm9jdXMuc3Vic2NyaWJlKChlbnRyeSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbGF5b3V0Q29tcG9uZW50UmVmLmluc3RhbmNlLmZvY3VzRWxlbWVudEJ5UGF0aChlbnRyeS5wYXRoLCBlbnRyeS5lbGVtZW50KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZpZXdSZWFkeS5uZXh0KHRydWUpO1xuXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gbm90aWZ5IGNoaWxkcmVuIGNvbXBvbmVudHMgdG8gdXBkYXRlIHRoZWlyIGNsYXNzZXMuXG4gICAgICAgIHRoaXMuX3NldHRpbmdzR2VuZXJhdG9yU2VydmljZS5tb2JpbGVTdGF0ZSQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZpZXdSZWFkeS5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl92aWV3UmVhZHlTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2xheW91dENvbXBvbmVudFJlZj8uZGVzdHJveSgpO1xuICAgICAgICB0aGlzLl92aWV3UmVmPy5jbGVhcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2dyYW1tYXRpY2FsbHkgc3VibWl0IGlubmVyIGZvcm1zIG9mIHRoZSBzZXR0aW5ncyBnZW5lcmF0b3IuXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB3aXRoIHNldHRpbmdzIHZhbHVlIGdyb3VwZWQgYnkgbWFpbiBzZWN0aW9ucyBhbmQgaW5uZXIgc2VjdGlvbnMuXG4gICAgICovXG4gICAgc3VibWl0KCk6IE9ic2VydmFibGU8U2V0dGluZ3NHZW5lcmF0b3JSZXR1cm5WYWx1ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3NHZW5lcmF0b3JTZXJ2aWNlLnN1Ym1pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0TGF5b3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl92aWV3UmVhZHlTdWI/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgdGhpcy5fdmlld1JlYWR5U3ViID0gdGhpcy5fdmlld1JlYWR5LnBpcGUoZmlsdGVyKChyZWFkeSkgPT4gcmVhZHkpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNldHRpbmdzPy5hcHBlYXJhbmNlIHx8IHRoaXMuX2N1cnJlbnRMYXlvdXQgPT09IHRoaXMuc2V0dGluZ3MuYXBwZWFyYW5jZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbGF5b3V0Q29tcG9uZW50ID0gdGhpcy5fc2V0dGluZ3NMYXlvdXRTZXJ2aWNlLmdldExheW91dCh0aGlzLnNldHRpbmdzLmFwcGVhcmFuY2UpO1xuXG4gICAgICAgICAgICBpZiAoIWxheW91dENvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgICAgICAgIHByb3ZpZGVyczogW10sXG4gICAgICAgICAgICAgICAgcGFyZW50OiB0aGlzLl9pbmplY3RvclxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX2xheW91dENvbXBvbmVudFJlZj8uZGVzdHJveSgpO1xuICAgICAgICAgICAgdGhpcy5fdmlld1JlZi5jbGVhcigpO1xuICAgICAgICAgICAgdGhpcy5fbGF5b3V0Q29tcG9uZW50UmVmID0gdGhpcy5fdmlld1JlZi5jcmVhdGVDb21wb25lbnQobGF5b3V0Q29tcG9uZW50LCB7IGluamVjdG9yIH0pO1xuXG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50TGF5b3V0ID0gdGhpcy5zZXR0aW5ncy5hcHBlYXJhbmNlO1xuXG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICNyZW5kZXJlcj48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|