@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,11 +1,12 @@
|
|
|
1
1
|
import { DOWN_ARROW, UP_ARROW } from '@angular/cdk/keycodes';
|
|
2
2
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, inject, Input, NgZone, Output, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { destroyObservable, FDK_FOCUSABLE_ITEM_DIRECTIVE, FDK_FOCUSABLE_LIST_DIRECTIVE, KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';
|
|
4
4
|
import { ContentDensityObserver } from '@fundamental-ngx/core/content-density';
|
|
5
5
|
import { TableRowDirective } from '@fundamental-ngx/core/table';
|
|
6
6
|
import { EditableTableCell, isTreeRowFirstCell, SelectionMode, TableColumnResizeService, TableDraggableDirective, TableRowService, TableService } from '@fundamental-ngx/platform/table-helpers';
|
|
7
7
|
import { fromEvent, merge, Subject } from 'rxjs';
|
|
8
8
|
import { filter, startWith, switchMap, takeUntil } from 'rxjs/operators';
|
|
9
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
9
10
|
import * as i0 from "@angular/core";
|
|
10
11
|
import * as i1 from "@angular/common";
|
|
11
12
|
import * as i2 from "@angular/forms";
|
|
@@ -44,16 +45,16 @@ export class TableRowComponent extends TableRowDirective {
|
|
|
44
45
|
/** @hidden */
|
|
45
46
|
this._tableColumnResizeService = inject(TableColumnResizeService);
|
|
46
47
|
/** @hidden */
|
|
48
|
+
this._fdpTableService = inject(TableService);
|
|
49
|
+
/** @hidden */
|
|
50
|
+
this._tableRowService = inject(TableRowService);
|
|
51
|
+
/** @hidden */
|
|
47
52
|
this._refreshChildRows$ = new Subject();
|
|
48
53
|
/** @hidden */
|
|
49
54
|
this._rtlService = inject(RtlService, {
|
|
50
55
|
optional: true
|
|
51
56
|
});
|
|
52
57
|
/** @hidden */
|
|
53
|
-
this._fdpTableService = inject(TableService);
|
|
54
|
-
/** @hidden */
|
|
55
|
-
this._tableRowService = inject(TableRowService);
|
|
56
|
-
/** @hidden */
|
|
57
58
|
this._cdr = inject(ChangeDetectorRef);
|
|
58
59
|
/** @hidden */
|
|
59
60
|
this._zone = inject(NgZone);
|
|
@@ -63,17 +64,17 @@ export class TableRowComponent extends TableRowDirective {
|
|
|
63
64
|
this._dndTableDirective = inject(TableDraggableDirective, {
|
|
64
65
|
optional: true
|
|
65
66
|
});
|
|
66
|
-
this._rtlService?.rtl.pipe(
|
|
67
|
+
this._rtlService?.rtl.pipe(takeUntilDestroyed()).subscribe((rtl) => {
|
|
67
68
|
this._rtl = rtl;
|
|
68
69
|
});
|
|
69
70
|
this._tableColumnResizeService.resizeInProgress$
|
|
70
|
-
.pipe(switchMap(() => this._tableColumnResizeService.markForCheck),
|
|
71
|
+
.pipe(switchMap(() => this._tableColumnResizeService.markForCheck), takeUntilDestroyed())
|
|
71
72
|
.subscribe(() => {
|
|
72
73
|
this._cdr.markForCheck();
|
|
73
74
|
});
|
|
74
75
|
this._zone.runOutsideAngular(() => {
|
|
75
76
|
fromEvent(this._elmRef.nativeElement, 'keydown')
|
|
76
|
-
.pipe(filter(() => !!this._dndTableDirective),
|
|
77
|
+
.pipe(filter(() => !!this._dndTableDirective), takeUntilDestroyed())
|
|
77
78
|
.subscribe((event) => {
|
|
78
79
|
this._onKeyDown(event);
|
|
79
80
|
});
|
|
@@ -82,7 +83,7 @@ export class TableRowComponent extends TableRowDirective {
|
|
|
82
83
|
/** @hidden */
|
|
83
84
|
ngOnInit() {
|
|
84
85
|
super.ngOnInit();
|
|
85
|
-
this._fdpTableService.visibleColumns$.pipe(
|
|
86
|
+
this._fdpTableService.visibleColumns$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((columns) => {
|
|
86
87
|
this._hasRowHeaderColumn = columns.some((c) => c.role === 'rowheader');
|
|
87
88
|
this._cdr.markForCheck();
|
|
88
89
|
});
|
|
@@ -90,7 +91,7 @@ export class TableRowComponent extends TableRowDirective {
|
|
|
90
91
|
/** @hidden */
|
|
91
92
|
ngAfterViewInit() {
|
|
92
93
|
super.ngAfterViewInit();
|
|
93
|
-
this._editableCells.changes.pipe(startWith(null),
|
|
94
|
+
this._editableCells.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {
|
|
94
95
|
const cells = this._editableCells.toArray();
|
|
95
96
|
if (cells.length > 0) {
|
|
96
97
|
this._tableRowService.updateEditableCells(this.row, cells);
|
|
@@ -115,9 +116,25 @@ export class TableRowComponent extends TableRowDirective {
|
|
|
115
116
|
this._tableRowService.removeEditableCells(this.row);
|
|
116
117
|
}
|
|
117
118
|
/** @hidden */
|
|
119
|
+
_toggleGroupRow() {
|
|
120
|
+
this._tableRowService.toggleRow({ type: 'toggleRow', row: this.row });
|
|
121
|
+
}
|
|
122
|
+
/** @hidden */
|
|
123
|
+
_toggleSingleSelectableRow() {
|
|
124
|
+
this._tableRowService.toggleRow({ type: 'toggleSingleSelectableRow', row: this.row });
|
|
125
|
+
}
|
|
126
|
+
/** @hidden */
|
|
127
|
+
_toggleMultiSelectRow(row, event) {
|
|
128
|
+
this._tableRowService.toggleRow({ ...{ row, event }, ...{ type: 'toggleMultiSelectRow' } });
|
|
129
|
+
}
|
|
130
|
+
/** @hidden */
|
|
131
|
+
_columnTrackBy(index, column) {
|
|
132
|
+
return column.name;
|
|
133
|
+
}
|
|
134
|
+
/** @hidden */
|
|
118
135
|
_listenToRowExpansion() {
|
|
119
136
|
this._refreshChildRows$.next();
|
|
120
|
-
const refresh = merge(this._refreshChildRows$, this.
|
|
137
|
+
const refresh = merge(this._refreshChildRows$, destroyObservable(this._destroyRef));
|
|
121
138
|
// Load items only once. Further loading will be covered by the lazy loading functionality.
|
|
122
139
|
this.row?.expanded$
|
|
123
140
|
?.pipe(filter((expanded) => expanded && this.row.children.length === 0), takeUntil(refresh))
|
|
@@ -137,29 +154,12 @@ export class TableRowComponent extends TableRowDirective {
|
|
|
137
154
|
}
|
|
138
155
|
this._dndTableDirective?.dragRowFromKeyboard(isArrowDown ? 'down' : 'up', event, this.index, event.shiftKey ? 'group' : 'shift');
|
|
139
156
|
}
|
|
140
|
-
/** @hidden */
|
|
141
|
-
_toggleGroupRow() {
|
|
142
|
-
this._tableRowService.toggleRow({ type: 'toggleRow', row: this.row });
|
|
143
|
-
}
|
|
144
|
-
/** @hidden */
|
|
145
|
-
_toggleSingleSelectableRow() {
|
|
146
|
-
this._tableRowService.toggleRow({ type: 'toggleSingleSelectableRow', row: this.row });
|
|
147
|
-
}
|
|
148
|
-
/** @hidden */
|
|
149
|
-
_toggleMultiSelectRow(row, event) {
|
|
150
|
-
this._tableRowService.toggleRow({ ...{ row, event }, ...{ type: 'toggleMultiSelectRow' } });
|
|
151
|
-
}
|
|
152
|
-
/** @hidden */
|
|
153
|
-
_columnTrackBy(index, column) {
|
|
154
|
-
return column.name;
|
|
155
|
-
}
|
|
156
157
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: TableRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
157
158
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: TableRowComponent, selector: "[fdp-table-row]", inputs: { rowId: "rowId", row: "row", index: "index", selectionMode: "selectionMode", selectableKey: "selectableKey", enableTristateMode: "enableTristateMode", fixed: "fixed", selectionColumnWidth: "selectionColumnWidth", freezeColumnsTo: "freezeColumnsTo", freezeEndColumnsTo: "freezeEndColumnsTo" }, outputs: { keyboardDrag: "keyboardDrag" }, host: { properties: { "attr.aria-rowindex": "this.index", "attr.aria-selected": "this._ariaSelected" } }, providers: [
|
|
158
159
|
{
|
|
159
160
|
provide: FDK_FOCUSABLE_LIST_DIRECTIVE,
|
|
160
161
|
useExisting: TableRowComponent
|
|
161
|
-
}
|
|
162
|
-
DestroyedService
|
|
162
|
+
}
|
|
163
163
|
], viewQueries: [{ propertyName: "_focusableViewCellItems", predicate: FDK_FOCUSABLE_ITEM_DIRECTIVE, descendants: true }, { propertyName: "_editableCells", predicate: EditableTableCell, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<td\n *ngIf=\"_fdpTableService._semanticHighlighting$ | async as semanticHighlighting\"\n fd-table-cell\n fd-table-status-indicator\n fdkDisabled\n [addDisabledClass]=\"false\"\n [status]=\"row.value[semanticHighlighting]\"\n></td>\n\n<!-- Row Selection Cell -->\n<ng-container [ngSwitch]=\"selectionMode\">\n <ng-container *ngSwitchCase=\"SELECTION_MODE.SINGLE\">\n <td\n *ngIf=\"row.value[selectableKey] !== false; else selectionMock\"\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [attr.role]=\"_hasRowHeaderColumn ? 'rowheader' : 'gridcell'\"\n fd-table-cell\n fd-table-cell-selectable\n [focusable]=\"true\"\n [style]=\"\n _contentDensityObserver\n | async\n | selectionCellStyles : _rtl : (_fdpTableService._semanticHighlightingColumnWidth$ | async)\n \"\n [attr.aria-selected]=\"row.checked\"\n (click)=\"_toggleSingleSelectableRow()\"\n (keydown.enter)=\"_toggleSingleSelectableRow()\"\n (keydown.space)=\"_toggleSingleSelectableRow()\"\n >\n <!-- hidden text for screenreader -->\n <span\n style=\"\n position: absolute !important;\n height: 1px;\n width: 1px;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n color: transparent;\n \"\n >\n <ng-container *ngIf=\"row.checked\">\n {{ 'platformTable.deselectSingleRow' | fdTranslate }}\n </ng-container>\n <ng-container *ngIf=\"!row.checked\">\n {{ 'platformTable.selectSingleRow' | fdTranslate }}\n </ng-container>\n </span>\n </td>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"SELECTION_MODE.MULTIPLE\">\n <td\n *ngIf=\"row.value[selectableKey] !== false; else selectionMock\"\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n role=\"cell\"\n fd-table-cell\n [focusable]=\"true\"\n (keydown.enter)=\"_toggleMultiSelectRow(row, $event)\"\n (keydown.space)=\"_toggleMultiSelectRow(row, $event)\"\n [style]=\"\n _contentDensityObserver\n | async\n | selectionCellStyles : _rtl : (_fdpTableService._semanticHighlightingColumnWidth$ | async)\n \"\n >\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [tristate]=\"enableTristateMode\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"row.checked$ | async\"\n (ngModelChange)=\"_toggleMultiSelectRow(row)\"\n ></fd-checkbox>\n </td>\n </ng-container>\n</ng-container>\n\n<ng-template #selectionMock>\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n ></td>\n</ng-template>\n\n<td\n *ngFor=\"\n let column of _fdpTableService.visibleColumns$ | async;\n let colIdx = index;\n last as isLast;\n trackBy: _columnTrackBy\n \"\n [fdpTableCellResizable]=\"\n colIdx\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength\n : (_fdpTableService._isShownNavigationColumn$ | async) === true\n \"\n [columnName]=\"column.name\"\n [focusable]=\"true\"\n [attr.role]=\"column.role\"\n [headers]=\"rowId + '__' + column.name\"\n [ngClass]=\"'fdp-table__col--' + column.name\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n row.isTree && colIdx === 0 ? 'fd-table__cell--expand' : '',\n isLast && (_fdpTableService._isShownNavigationColumn$ | async) === false ? 'is-last-child' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : _rtl\n : (_fdpTableService._semanticHighlightingColumnWidth$ | async)\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n \"\n [attr.aria-expanded]=\"_isTreeRowFirstCell(colIdx, row) ? row.expanded : null\"\n [attr.data-nesting-level]=\"colIdx === 0 ? row.level + 1 : null\"\n [cellFocusedEventAnnouncer]=\"null\"\n (cellFocused)=\"_tableRowService.cellFocused($event)\"\n (click)=\"_tableRowService.cellClicked({ index: colIdx, row })\"\n (keydown.enter)=\"_isTreeRowFirstCell(colIdx, row, $event) && _toggleGroupRow()\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n>\n <div [class.fd-table__text]=\"column.applyText\" [class.fd-table__text--no-wrap]=\"column.noWrap\">\n <span\n *ngIf=\"_isTreeRowFirstCell(colIdx, row)\"\n class=\"fd-table__expand\"\n [class.fd-table__expand--open]=\"row.expanded$ | async\"\n aria-hidden=\"true\"\n ></span>\n\n <ng-container *ngIf=\"row.state === 'readonly'; else editModeCell\">\n <ng-container *ngIf=\"column?.columnCellTemplate; else defaultTableCellTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n column.columnCellTemplate!;\n context: { $implicit: row.value, popping: false, rowIndex: row.index }\n \"\n ></ng-container>\n </ng-container>\n </ng-container>\n <ng-template #defaultTableCellTemplate>{{ row.value | valueByPath : column.key }}</ng-template>\n\n <ng-template #editModeCell>\n <ng-container *ngIf=\"column?.editableColumnCellTemplate; else defaultEditableTableCellTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n column.editableColumnCellTemplate!;\n context: { $implicit: row.value, popping: false, rowIndex: row.index }\n \"\n ></ng-container>\n </ng-container>\n\n <ng-template #defaultEditableTableCellTemplate>\n <fdp-table-editable-cell\n [row]=\"row\"\n [column]=\"column\"\n [columnValue]=\"row.value | valueByPath : column.key\"\n ></fdp-table-editable-cell>\n </ng-template>\n </ng-template>\n </div>\n</td>\n\n<ng-content></ng-content>\n\n<td\n *ngIf=\"_fdpTableService._isShownNavigationColumn$ | async\"\n fd-table-cell\n class=\"fdp-table__cell--navigation is-last-child\"\n fdkDisabled\n [addDisabledClass]=\"false\"\n>\n <i\n *ngIf=\"row.navigatable\"\n fd-table-icon\n [navigation]=\"true\"\n [class]=\"_rtl ? 'sap-icon--slim-arrow-left' : 'sap-icon--slim-arrow-right'\"\n class=\"fdp-table__navigation-indicator\"\n ></i>\n</td>\n\n<td\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"(_tableColumnResizeService.cellMockVisible$ | async) !== true\"\n fdkDisabled\n [addDisabledClass]=\"false\"\n></td>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { 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.TableCellDirective, selector: "[fdTableCell], [fd-table-cell]", inputs: ["noBorderX", "noBorderY", "activable", "focusable", "hoverable", "fitContent", "noPadding", "noData", "key"] }, { kind: "directive", type: i3.TableStatusIndicatorDirective, selector: "[fdTableStatusIndicator], [fd-table-status-indicator]", inputs: ["status"] }, { kind: "directive", type: i3.TableIconDirective, selector: "[fdTableIcon], [fd-table-icon]", inputs: ["class", "glyph", "navigation"] }, { kind: "component", type: i4.CheckboxComponent, selector: "fd-checkbox", inputs: ["ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "values", "standalone"], outputs: ["focusChange"] }, { kind: "directive", type: i5.DisabledBehaviorDirective, selector: "[fdkDisabled]", inputs: ["fdkDisabled", "addDisabledClass", "disabledClass"] }, { kind: "directive", type: i6.PlatformTableCellResizableDirective, selector: "[fdpTableCellResizable]", inputs: ["fdpTableCellResizable", "columnName"] }, { kind: "directive", type: i6.FdpCellSelectableDirective, selector: "[fdTableCellSelectable], [fd-table-cell-selectable]", inputs: ["enabled"] }, { kind: "component", type: i7.TableEditableCellComponent, selector: "fdp-table-editable-cell", inputs: ["row", "column", "columnValue"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.ValueByPathPipe, name: "valueByPath" }, { kind: "pipe", type: i8.FdTranslatePipe, name: "fdTranslate" }, { kind: "pipe", type: i6.SelectionCellStylesPipe, name: "selectionCellStyles" }, { kind: "pipe", type: i6.TableCellStylesPipe, name: "tableCellStyles" }, { kind: "pipe", type: i6.ColumnResizableSidePipe, name: "columnResizableSide" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
164
164
|
}
|
|
165
165
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: TableRowComponent, decorators: [{
|
|
@@ -168,8 +168,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
168
168
|
{
|
|
169
169
|
provide: FDK_FOCUSABLE_LIST_DIRECTIVE,
|
|
170
170
|
useExisting: TableRowComponent
|
|
171
|
-
}
|
|
172
|
-
DestroyedService
|
|
171
|
+
}
|
|
173
172
|
], template: "<td\n *ngIf=\"_fdpTableService._semanticHighlighting$ | async as semanticHighlighting\"\n fd-table-cell\n fd-table-status-indicator\n fdkDisabled\n [addDisabledClass]=\"false\"\n [status]=\"row.value[semanticHighlighting]\"\n></td>\n\n<!-- Row Selection Cell -->\n<ng-container [ngSwitch]=\"selectionMode\">\n <ng-container *ngSwitchCase=\"SELECTION_MODE.SINGLE\">\n <td\n *ngIf=\"row.value[selectableKey] !== false; else selectionMock\"\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n [attr.role]=\"_hasRowHeaderColumn ? 'rowheader' : 'gridcell'\"\n fd-table-cell\n fd-table-cell-selectable\n [focusable]=\"true\"\n [style]=\"\n _contentDensityObserver\n | async\n | selectionCellStyles : _rtl : (_fdpTableService._semanticHighlightingColumnWidth$ | async)\n \"\n [attr.aria-selected]=\"row.checked\"\n (click)=\"_toggleSingleSelectableRow()\"\n (keydown.enter)=\"_toggleSingleSelectableRow()\"\n (keydown.space)=\"_toggleSingleSelectableRow()\"\n >\n <!-- hidden text for screenreader -->\n <span\n style=\"\n position: absolute !important;\n height: 1px;\n width: 1px;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n color: transparent;\n \"\n >\n <ng-container *ngIf=\"row.checked\">\n {{ 'platformTable.deselectSingleRow' | fdTranslate }}\n </ng-container>\n <ng-container *ngIf=\"!row.checked\">\n {{ 'platformTable.selectSingleRow' | fdTranslate }}\n </ng-container>\n </span>\n </td>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"SELECTION_MODE.MULTIPLE\">\n <td\n *ngIf=\"row.value[selectableKey] !== false; else selectionMock\"\n class=\"fd-table__cell--checkbox\"\n [class.fd-table__cell--fixed]=\"fixed\"\n role=\"cell\"\n fd-table-cell\n [focusable]=\"true\"\n (keydown.enter)=\"_toggleMultiSelectRow(row, $event)\"\n (keydown.space)=\"_toggleMultiSelectRow(row, $event)\"\n [style]=\"\n _contentDensityObserver\n | async\n | selectionCellStyles : _rtl : (_fdpTableService._semanticHighlightingColumnWidth$ | async)\n \"\n >\n <fd-checkbox\n tabIndexValue=\"-1\"\n labelClass=\"fd-table__checkbox-label\"\n [tristate]=\"enableTristateMode\"\n [tristateSelectable]=\"false\"\n [ngModel]=\"row.checked$ | async\"\n (ngModelChange)=\"_toggleMultiSelectRow(row)\"\n ></fd-checkbox>\n </td>\n </ng-container>\n</ng-container>\n\n<ng-template #selectionMock>\n <td\n class=\"fd-table__cell--checkbox\"\n role=\"gridcell\"\n fd-table-cell\n fdkDisabled\n [addDisabledClass]=\"false\"\n [class.fd-table__cell--fixed]=\"fixed\"\n ></td>\n</ng-template>\n\n<td\n *ngFor=\"\n let column of _fdpTableService.visibleColumns$ | async;\n let colIdx = index;\n last as isLast;\n trackBy: _columnTrackBy\n \"\n [fdpTableCellResizable]=\"\n colIdx\n | columnResizableSide\n : _fdpTableService.visibleColumnsLength\n : (_fdpTableService._isShownNavigationColumn$ | async) === true\n \"\n [columnName]=\"column.name\"\n [focusable]=\"true\"\n [attr.role]=\"column.role\"\n [headers]=\"rowId + '__' + column.name\"\n [ngClass]=\"'fdp-table__col--' + column.name\"\n [ngClass]=\"[\n 'fdp-table__col--' + column.name,\n column._freezed ? 'fd-table__cell--fixed' : '',\n column.name === freezeColumnsTo ? 'fd-table__cell--fixed-last' : '',\n column._endFreezed ? 'fd-table__cell--fixed-end' : '',\n column.name === freezeEndColumnsTo ? 'fd-table__cell--fixed-end-last' : '',\n row.isTree && colIdx === 0 ? 'fd-table__cell--expand' : '',\n isLast && (_fdpTableService._isShownNavigationColumn$ | async) === false ? 'is-last-child' : ''\n ]\"\n [ngStyle]=\"\n column\n | tableCellStyles\n : _rtl\n : (_fdpTableService._semanticHighlightingColumnWidth$ | async)\n : selectionColumnWidth\n : column._freezed\n : column._endFreezed\n : _tableColumnResizeService.getPrevColumnsWidth(column.name)\n : _tableColumnResizeService.getColumnWidthStyle(column.name)\n : _tableColumnResizeService.getNextColumnsWidth(column.name)\n \"\n [attr.aria-expanded]=\"_isTreeRowFirstCell(colIdx, row) ? row.expanded : null\"\n [attr.data-nesting-level]=\"colIdx === 0 ? row.level + 1 : null\"\n [cellFocusedEventAnnouncer]=\"null\"\n (cellFocused)=\"_tableRowService.cellFocused($event)\"\n (click)=\"_tableRowService.cellClicked({ index: colIdx, row })\"\n (keydown.enter)=\"_isTreeRowFirstCell(colIdx, row, $event) && _toggleGroupRow()\"\n (keydown.arrowLeft)=\"_tableRowService.scrollToOverlappedCell()\"\n (keydown.arrowRight)=\"_tableRowService.scrollToOverlappedCell()\"\n>\n <div [class.fd-table__text]=\"column.applyText\" [class.fd-table__text--no-wrap]=\"column.noWrap\">\n <span\n *ngIf=\"_isTreeRowFirstCell(colIdx, row)\"\n class=\"fd-table__expand\"\n [class.fd-table__expand--open]=\"row.expanded$ | async\"\n aria-hidden=\"true\"\n ></span>\n\n <ng-container *ngIf=\"row.state === 'readonly'; else editModeCell\">\n <ng-container *ngIf=\"column?.columnCellTemplate; else defaultTableCellTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n column.columnCellTemplate!;\n context: { $implicit: row.value, popping: false, rowIndex: row.index }\n \"\n ></ng-container>\n </ng-container>\n </ng-container>\n <ng-template #defaultTableCellTemplate>{{ row.value | valueByPath : column.key }}</ng-template>\n\n <ng-template #editModeCell>\n <ng-container *ngIf=\"column?.editableColumnCellTemplate; else defaultEditableTableCellTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n column.editableColumnCellTemplate!;\n context: { $implicit: row.value, popping: false, rowIndex: row.index }\n \"\n ></ng-container>\n </ng-container>\n\n <ng-template #defaultEditableTableCellTemplate>\n <fdp-table-editable-cell\n [row]=\"row\"\n [column]=\"column\"\n [columnValue]=\"row.value | valueByPath : column.key\"\n ></fdp-table-editable-cell>\n </ng-template>\n </ng-template>\n </div>\n</td>\n\n<ng-content></ng-content>\n\n<td\n *ngIf=\"_fdpTableService._isShownNavigationColumn$ | async\"\n fd-table-cell\n class=\"fdp-table__cell--navigation is-last-child\"\n fdkDisabled\n [addDisabledClass]=\"false\"\n>\n <i\n *ngIf=\"row.navigatable\"\n fd-table-icon\n [navigation]=\"true\"\n [class]=\"_rtl ? 'sap-icon--slim-arrow-left' : 'sap-icon--slim-arrow-right'\"\n class=\"fdp-table__navigation-indicator\"\n ></i>\n</td>\n\n<td\n aria-hidden=\"true\"\n class=\"fd-table__cell fd-table__cell--mock\"\n [class.fd-table__cell--mock-borderless]=\"(_tableColumnResizeService.cellMockVisible$ | async) !== true\"\n fdkDisabled\n [addDisabledClass]=\"false\"\n></td>\n" }]
|
|
174
173
|
}], ctorParameters: function () { return []; }, propDecorators: { rowId: [{
|
|
175
174
|
type: Input
|
|
@@ -206,4 +205,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
206
205
|
type: HostBinding,
|
|
207
206
|
args: ['attr.aria-selected']
|
|
208
207
|
}] } });
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi90YWJsZS9jb21wb25lbnRzL3RhYmxlLXJvdy90YWJsZS1yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtcm93L3RhYmxlLXJvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFJTixNQUFNLEVBQ04sU0FBUyxFQUVULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGdCQUFnQixFQUNoQiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBRTVCLE9BQU8sRUFDUCxVQUFVLEVBQ2IsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixhQUFhLEVBR2Isd0JBQXdCLEVBQ3hCLHVCQUF1QixFQUd2QixlQUFlLEVBQ2YsWUFBWSxFQUNmLE1BQU0seUNBQXlDLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxF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QUFpQiw2ZUFSZjtZQUNQO2dCQUNJLE9BQU8sRUFBRSw0QkFBNEI7Z0JBQ3JDLFdBQVcsRUFBRSxpQkFBaUI7YUFDakM7WUFDRCxnQkFBZ0I7U0FDbkIsc0VBMERhLDRCQUE0QixvRUFNNUIsaUJBQWlCLDRGQzNIbkMscThQQTRNQTs7MkZEL0lhLGlCQUFpQjtrQkFkN0IsU0FBUzsrQkFFSSxpQkFBaUIsaUJBRVosaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsNEJBQTRCOzRCQUNyQyxXQUFXLG1CQUFtQjt5QkFDakM7d0JBQ0QsZ0JBQWdCO3FCQUNuQjswRUFLRCxLQUFLO3NCQURKLEtBQUs7Z0JBS04sR0FBRztzQkFERixLQUFLO2dCQU1OLEtBQUs7c0JBRkosV0FBVzt1QkFBQyxvQkFBb0I7O3NCQUNoQyxLQUFLO2dCQUtOLGFBQWE7c0JBRFosS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQVNOLEtBQUs7c0JBREosS0FBSztnQkFLTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQUtOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFPTixZQUFZO3NCQURYLE1BQU07Z0JBUUssdUJBQXVCO3NCQURsQyxZQUFZO3VCQUFDLDRCQUE0QjtnQkFPekIsY0FBYztzQkFEOUIsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBS25CLGFBQWE7c0JBRHhCLFdBQVc7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9XTl9BUlJPVywgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIERlc3Ryb3llZFNlcnZpY2UsXG4gICAgRkRLX0ZPQ1VTQUJMRV9JVEVNX0RJUkVDVElWRSxcbiAgICBGREtfRk9DVVNBQkxFX0xJU1RfRElSRUNUSVZFLFxuICAgIEZvY3VzYWJsZUl0ZW1EaXJlY3RpdmUsXG4gICAgS2V5VXRpbCxcbiAgICBSdGxTZXJ2aWNlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IFRhYmxlUm93RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RhYmxlJztcbmltcG9ydCB7XG4gICAgRWRpdGFibGVUYWJsZUNlbGwsXG4gICAgaXNUcmVlUm93Rmlyc3RDZWxsLFxuICAgIFNlbGVjdGlvbk1vZGUsXG4gICAgU2VsZWN0aW9uTW9kZVZhbHVlLFxuICAgIFRhYmxlQ29sdW1uLFxuICAgIFRhYmxlQ29sdW1uUmVzaXplU2VydmljZSxcbiAgICBUYWJsZURyYWdnYWJsZURpcmVjdGl2ZSxcbiAgICBUYWJsZVJvdyxcbiAgICBUYWJsZVJvd0tleWJvYXJkRHJhZyxcbiAgICBUYWJsZVJvd1NlcnZpY2UsXG4gICAgVGFibGVTZXJ2aWNlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vdGFibGUtaGVscGVycyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbZmRwLXRhYmxlLXJvd10nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZES19GT0NVU0FCTEVfTElTVF9ESVJFQ1RJVkUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVGFibGVSb3dDb21wb25lbnRcbiAgICAgICAgfSxcbiAgICAgICAgRGVzdHJveWVkU2VydmljZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVSb3dDb21wb25lbnQ8VD4gZXh0ZW5kcyBUYWJsZVJvd0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIC8qKiBSb3cgSUQuICovXG4gICAgQElucHV0KClcbiAgICByb3dJZDogc3RyaW5nO1xuXG4gICAgLyoqIFRhYmxlIFJvdy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHJvdzogVGFibGVSb3c8VD47XG5cbiAgICAvKiogUm93IGluZGV4LiAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXJvd2luZGV4JylcbiAgICBASW5wdXQoKVxuICAgIGluZGV4OiBudW1iZXI7XG5cbiAgICAvKiogU2VsZWN0aW9uIG1vZGUuICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3Rpb25Nb2RlOiBTZWxlY3Rpb25Nb2RlVmFsdWU7XG5cbiAgICAvKiogU2VsZWN0YWJsZSBmbGFnIGtleS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGFibGVLZXk6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRvIGVuYWJsZSBjaGVja2JveCB0cmlzdGF0ZSBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZW5hYmxlVHJpc3RhdGVNb2RlOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBmaXggdGhlIHRhYmxlIGhlYWRlciBhbmQgZm9vdGVyLiBEZWZhdWx0IGlzIHRydWUuXG4gICAgICogTm90ZSB0aGF0IGlmIHRoZSB0YWJsZSBjb250YWlucyBmcmVlemFibGUgY29sdW1ucywgdGhlIGhlYWRlciBhbmRcbiAgICAgKiBmb290ZXIgd2lsbCBiZSBmaXhlZCBhdXRvbWF0aWNhbGx5LCByZWdhcmRsZXNzIG9mIHRoaXMgaW5wdXQgdmFsdWUuXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIGZpeGVkOiBib29sZWFuO1xuXG4gICAgLyoqIFNlbGVjdGlvbiBjb2x1bW4gd2lkdGguICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3Rpb25Db2x1bW5XaWR0aDogbnVtYmVyO1xuXG4gICAgLyoqIFRoZSBjb2x1bW4gYG5hbWVgIHRvIGZyZWV6ZSBjb2x1bW5zIHVwIHRvIGFuZCBpbmNsdWRpbmcuICovXG4gICAgQElucHV0KClcbiAgICBmcmVlemVDb2x1bW5zVG86IHN0cmluZztcblxuICAgIC8qKiBUaGUgY29sdW1uIGBuYW1lYCB0byBmcmVlemUgY29sdW1ucyBhZnRlciBhbmQgaW5jbHVkaW5nLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZnJlZXplRW5kQ29sdW1uc1RvOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbWl0dGVkIHdoZW4ga2V5Ym9hcmQgZHJhZyBwZXJmb3JtZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAga2V5Ym9hcmREcmFnID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVJvd0tleWJvYXJkRHJhZz4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hhc1Jvd0hlYWRlckNvbHVtbiA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKEZES19GT0NVU0FCTEVfSVRFTV9ESVJFQ1RJVkUpXG4gICAgcHJpdmF0ZSBzZXQgX2ZvY3VzYWJsZVZpZXdDZWxsSXRlbXMoaXRlbXM6IFF1ZXJ5TGlzdDxGb2N1c2FibGVJdGVtRGlyZWN0aXZlPikge1xuICAgICAgICB0aGlzLnNldEl0ZW1zKGl0ZW1zKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oRWRpdGFibGVUYWJsZUNlbGwpXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWRpdGFibGVDZWxsczogUXVlcnlMaXN0PEVkaXRhYmxlVGFibGVDZWxsPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtc2VsZWN0ZWQnKVxuICAgIHByaXZhdGUgZ2V0IF9hcmlhU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMucm93LmNoZWNrZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcnRsID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9pc1RyZWVSb3dGaXJzdENlbGwgPSBpc1RyZWVSb3dGaXJzdENlbGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IFNFTEVDVElPTl9NT0RFID0gU2VsZWN0aW9uTW9kZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgPSBpbmplY3QoQ29udGVudERlbnNpdHlPYnNlcnZlcik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF90YWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UgPSBpbmplY3QoVGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVmcmVzaENoaWxkUm93cyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ydGxTZXJ2aWNlID0gaW5qZWN0KFJ0bFNlcnZpY2UsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2ZkcFRhYmxlU2VydmljZSA9IGluamVjdChUYWJsZVNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfdGFibGVSb3dTZXJ2aWNlID0gaW5qZWN0KFRhYmxlUm93U2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWxtUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kbmRUYWJsZURpcmVjdGl2ZSA9IGluamVjdChUYWJsZURyYWdnYWJsZURpcmVjdGl2ZSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fcnRsU2VydmljZT8ucnRsLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKChydGwpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3J0bCA9IHJ0bDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlLnJlc2l6ZUluUHJvZ3Jlc3MkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5fdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlLm1hcmtGb3JDaGVjayksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5fZWxtUmVmLm5hdGl2ZUVsZW1lbnQsICdrZXlkb3duJylcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+ICEhdGhpcy5fZG5kVGFibGVEaXJlY3RpdmUpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uS2V5RG93bihldmVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuX2ZkcFRhYmxlU2VydmljZS52aXNpYmxlQ29sdW1ucyQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKGNvbHVtbnMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2hhc1Jvd0hlYWRlckNvbHVtbiA9IGNvbHVtbnMuc29tZSgoYykgPT4gYy5yb2xlID09PSAncm93aGVhZGVyJyk7XG4gICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgdGhpcy5fZWRpdGFibGVDZWxscy5jaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKG51bGwpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLl9lZGl0YWJsZUNlbGxzLnRvQXJyYXkoKTtcbiAgICAgICAgICAgIGlmIChjZWxscy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGVSb3dTZXJ2aWNlLnVwZGF0ZUVkaXRhYmxlQ2VsbHModGhpcy5yb3csIGNlbGxzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGVSb3dTZXJ2aWNlLnJlbW92ZUVkaXRhYmxlQ2VsbHModGhpcy5yb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgICAgIGlmICgncm93JyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLl9saXN0ZW5Ub1Jvd0V4cGFuc2lvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaENoaWxkUm93cyQubmV4dCgpO1xuICAgICAgICB0aGlzLl9yZWZyZXNoQ2hpbGRSb3dzJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl90YWJsZVJvd1NlcnZpY2UucmVtb3ZlRWRpdGFibGVDZWxscyh0aGlzLnJvdyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub1Jvd0V4cGFuc2lvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVmcmVzaENoaWxkUm93cyQubmV4dCgpO1xuICAgICAgICBjb25zdCByZWZyZXNoID0gbWVyZ2UodGhpcy5fcmVmcmVzaENoaWxkUm93cyQsIHRoaXMuX2Rlc3Ryb3kkKTtcbiAgICAgICAgLy8gTG9hZCBpdGVtcyBvbmx5IG9uY2UuIEZ1cnRoZXIgbG9hZGluZyB3aWxsIGJlIGNvdmVyZWQgYnkgdGhlIGxhenkgbG9hZGluZyBmdW5jdGlvbmFsaXR5LlxuICAgICAgICB0aGlzLnJvdz8uZXhwYW5kZWQkXG4gICAgICAgICAgICA/LnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChleHBhbmRlZCkgPT4gZXhwYW5kZWQgJiYgdGhpcy5yb3cuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwocmVmcmVzaClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlUm93U2VydmljZS5sb2FkQ2hpbGRSb3dzKHRoaXMucm93KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzQXJyb3dEb3duID0gS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIERPV05fQVJST1cpO1xuICAgICAgICBjb25zdCBpc0Fycm93VXAgPSBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVVBfQVJST1cpO1xuXG4gICAgICAgIGlmICghZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzQXJyb3dEb3duICYmICFpc0Fycm93VXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2RuZFRhYmxlRGlyZWN0aXZlPy5kcmFnUm93RnJvbUtleWJvYXJkKFxuICAgICAgICAgICAgaXNBcnJvd0Rvd24gPyAnZG93bicgOiAndXAnLFxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICB0aGlzLmluZGV4LFxuICAgICAgICAgICAgZXZlbnQuc2hpZnRLZXkgPyAnZ3JvdXAnIDogJ3NoaWZ0J1xuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RvZ2dsZUdyb3VwUm93KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZVJvd1NlcnZpY2UudG9nZ2xlUm93KHsgdHlwZTogJ3RvZ2dsZVJvdycsIHJvdzogdGhpcy5yb3cgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdG9nZ2xlU2luZ2xlU2VsZWN0YWJsZVJvdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGVSb3dTZXJ2aWNlLnRvZ2dsZVJvdyh7IHR5cGU6ICd0b2dnbGVTaW5nbGVTZWxlY3RhYmxlUm93Jywgcm93OiB0aGlzLnJvdyB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90b2dnbGVNdWx0aVNlbGVjdFJvdyhyb3c6IFRhYmxlUm93PFQ+LCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlUm93U2VydmljZS50b2dnbGVSb3coeyAuLi57IHJvdywgZXZlbnQgfSwgLi4ueyB0eXBlOiAndG9nZ2xlTXVsdGlTZWxlY3RSb3cnIH0gfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29sdW1uVHJhY2tCeShpbmRleDogbnVtYmVyLCBjb2x1bW46IFRhYmxlQ29sdW1uKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5uYW1lO1xuICAgIH1cbn1cbiIsIjx0ZFxuICAgICpuZ0lmPVwiX2ZkcFRhYmxlU2VydmljZS5fc2VtYW50aWNIaWdobGlnaHRpbmckIHwgYXN5bmMgYXMgc2VtYW50aWNIaWdobGlnaHRpbmdcIlxuICAgIGZkLXRhYmxlLWNlbGxcbiAgICBmZC10YWJsZS1zdGF0dXMtaW5kaWNhdG9yXG4gICAgZmRrRGlzYWJsZWRcbiAgICBbYWRkRGlzYWJsZWRDbGFzc109XCJmYWxzZVwiXG4gICAgW3N0YXR1c109XCJyb3cudmFsdWVbc2VtYW50aWNIaWdobGlnaHRpbmddXCJcbj48L3RkPlxuXG48IS0tIFJvdyBTZWxlY3Rpb24gQ2VsbCAtLT5cbjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInNlbGVjdGlvbk1vZGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJTRUxFQ1RJT05fTU9ERS5TSU5HTEVcIj5cbiAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cInJvdy52YWx1ZVtzZWxlY3RhYmxlS2V5XSAhPT0gZmFsc2U7IGVsc2Ugc2VsZWN0aW9uTW9ja1wiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXRhYmxlX19jZWxsLS1jaGVja2JveFwiXG4gICAgICAgICAgICBbY2xhc3MuZmQtdGFibGVfX2NlbGwtLWZpeGVkXT1cImZpeGVkXCJcbiAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiX2hhc1Jvd0hlYWRlckNvbHVtbiA/ICdyb3doZWFkZXInIDogJ2dyaWRjZWxsJ1wiXG4gICAgICAgICAgICBmZC10YWJsZS1jZWxsXG4gICAgICAgICAgICBmZC10YWJsZS1jZWxsLXNlbGVjdGFibGVcbiAgICAgICAgICAgIFtmb2N1c2FibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc3R5bGVdPVwiXG4gICAgICAgICAgICAgICAgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXJcbiAgICAgICAgICAgICAgICAgICAgfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICB8IHNlbGVjdGlvbkNlbGxTdHlsZXMgOiBfcnRsIDogKF9mZHBUYWJsZVNlcnZpY2UuX3NlbWFudGljSGlnaGxpZ2h0aW5nQ29sdW1uV2lkdGgkIHwgYXN5bmMpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJyb3cuY2hlY2tlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiX3RvZ2dsZVNpbmdsZVNlbGVjdGFibGVSb3coKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJfdG9nZ2xlU2luZ2xlU2VsZWN0YWJsZVJvdygpXCJcbiAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIl90b2dnbGVTaW5nbGVTZWxlY3RhYmxlUm93KClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIGhpZGRlbiB0ZXh0IGZvciBzY3JlZW5yZWFkZXIgLS0+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgICAgY2xpcDogcmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93LmNoZWNrZWRcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtVGFibGUuZGVzZWxlY3RTaW5nbGVSb3cnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJvdy5jaGVja2VkXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVRhYmxlLnNlbGVjdFNpbmdsZVJvdycgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiU0VMRUNUSU9OX01PREUuTVVMVElQTEVcIj5cbiAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdJZj1cInJvdy52YWx1ZVtzZWxlY3RhYmxlS2V5XSAhPT0gZmFsc2U7IGVsc2Ugc2VsZWN0aW9uTW9ja1wiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXRhYmxlX19jZWxsLS1jaGVja2JveFwiXG4gICAgICAgICAgICBbY2xhc3MuZmQtdGFibGVfX2NlbGwtLWZpeGVkXT1cImZpeGVkXCJcbiAgICAgICAgICAgIHJvbGU9XCJjZWxsXCJcbiAgICAgICAgICAgIGZkLXRhYmxlLWNlbGxcbiAgICAgICAgICAgIFtmb2N1c2FibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJfdG9nZ2xlTXVsdGlTZWxlY3RSb3cocm93LCAkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIl90b2dnbGVNdWx0aVNlbGVjdFJvdyhyb3csICRldmVudClcIlxuICAgICAgICAgICAgW3N0eWxlXT1cIlxuICAgICAgICAgICAgICAgIF9jb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgICAgICAgICAgICAgICAgIHwgYXN5bmNcbiAgICAgICAgICAgICAgICAgICAgfCBzZWxlY3Rpb25DZWxsU3R5bGVzIDogX3J0bCA6IChfZmRwVGFibGVTZXJ2aWNlLl9zZW1hbnRpY0hpZ2hsaWdodGluZ0NvbHVtbldpZHRoJCB8IGFzeW5jKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGZkLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgdGFiSW5kZXhWYWx1ZT1cIi0xXCJcbiAgICAgICAgICAgICAgICBsYWJlbENsYXNzPVwiZmQtdGFibGVfX2NoZWNrYm94LWxhYmVsXCJcbiAgICAgICAgICAgICAgICBbdHJpc3RhdGVdPVwiZW5hYmxlVHJpc3RhdGVNb2RlXCJcbiAgICAgICAgICAgICAgICBbdHJpc3RhdGVTZWxlY3RhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJyb3cuY2hlY2tlZCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiX3RvZ2dsZU11bHRpU2VsZWN0Um93KHJvdylcIlxuICAgICAgICAgICAgPjwvZmQtY2hlY2tib3g+XG4gICAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNzZWxlY3Rpb25Nb2NrPlxuICAgIDx0ZFxuICAgICAgICBjbGFzcz1cImZkLXRhYmxlX19jZWxsLS1jaGVja2JveFwiXG4gICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXG4gICAgICAgIGZkLXRhYmxlLWNlbGxcbiAgICAgICAgZmRrRGlzYWJsZWRcbiAgICAgICAgW2FkZERpc2FibGVkQ2xhc3NdPVwiZmFsc2VcIlxuICAgICAgICBbY2xhc3MuZmQtdGFibGVfX2NlbGwtLWZpeGVkXT1cImZpeGVkXCJcbiAgICA+PC90ZD5cbjwvbmctdGVtcGxhdGU+XG5cbjx0ZFxuICAgICpuZ0Zvcj1cIlxuICAgICAgICBsZXQgY29sdW1uIG9mIF9mZHBUYWJsZVNlcnZpY2UudmlzaWJsZUNvbHVtbnMkIHwgYXN5bmM7XG4gICAgICAgIGxldCBjb2xJZHggPSBpbmRleDtcbiAgICAgICAgbGFzdCBhcyBpc0xhc3Q7XG4gICAgICAgIHRyYWNrQnk6IF9jb2x1bW5UcmFja0J5XG4gICAgXCJcbiAgICBbZmRwVGFibGVDZWxsUmVzaXphYmxlXT1cIlxuICAgICAgICBjb2xJZHhcbiAgICAgICAgICAgIHwgY29sdW1uUmVzaXphYmxlU2lkZVxuICAgICAgICAgICAgICAgIDogX2ZkcFRhYmxlU2VydmljZS52aXNpYmxlQ29sdW1uc0xlbmd0aFxuICAgICAgICAgICAgICAgIDogKF9mZHBUYWJsZVNlcnZpY2UuX2lzU2hvd25OYXZpZ2F0aW9uQ29sdW1uJCB8IGFzeW5jKSA9PT0gdHJ1ZVxuICAgIFwiXG4gICAgW2NvbHVtbk5hbWVdPVwiY29sdW1uLm5hbWVcIlxuICAgIFtmb2N1c2FibGVdPVwidHJ1ZVwiXG4gICAgW2F0dHIucm9sZV09XCJjb2x1bW4ucm9sZVwiXG4gICAgW2hlYWRlcnNdPVwicm93SWQgKyAnX18nICsgY29sdW1uLm5hbWVcIlxuICAgIFtuZ0NsYXNzXT1cIidmZHAtdGFibGVfX2NvbC0tJyArIGNvbHVtbi5uYW1lXCJcbiAgICBbbmdDbGFzc109XCJbXG4gICAgICAgICdmZHAtdGFibGVfX2NvbC0tJyArIGNvbHVtbi5uYW1lLFxuICAgICAgICBjb2x1bW4uX2ZyZWV6ZWQgPyAnZmQtdGFibGVfX2NlbGwtLWZpeGVkJyA6ICcnLFxuICAgICAgICBjb2x1bW4ubmFtZSA9PT0gZnJlZXplQ29sdW1uc1RvID8gJ2ZkLXRhYmxlX19jZWxsLS1maXhlZC1sYXN0JyA6ICcnLFxuICAgICAgICBjb2x1bW4uX2VuZEZyZWV6ZWQgPyAnZmQtdGFibGVfX2NlbGwtLWZpeGVkLWVuZCcgOiAnJyxcbiAgICAgICAgY29sdW1uLm5hbWUgPT09IGZyZWV6ZUVuZENvbHVtbnNUbyA/ICdmZC10YWJsZV9fY2VsbC0tZml4ZWQtZW5kLWxhc3QnIDogJycsXG4gICAgICAgIHJvdy5pc1RyZWUgJiYgY29sSWR4ID09PSAwID8gJ2ZkLXRhYmxlX19jZWxsLS1leHBhbmQnIDogJycsXG4gICAgICAgIGlzTGFzdCAmJiAoX2ZkcFRhYmxlU2VydmljZS5faXNTaG93bk5hdmlnYXRpb25Db2x1bW4kIHwgYXN5bmMpID09PSBmYWxzZSA/ICdpcy1sYXN0LWNoaWxkJyA6ICcnXG4gICAgXVwiXG4gICAgW25nU3R5bGVdPVwiXG4gICAgICAgIGNvbHVtblxuICAgICAgICAgICAgfCB0YWJsZUNlbGxTdHlsZXNcbiAgICAgICAgICAgICAgICA6IF9ydGxcbiAgICAgICAgICAgICAgICA6IChfZmRwVGFibGVTZXJ2aWNlLl9zZW1hbnRpY0hpZ2hsaWdodGluZ0NvbHVtbldpZHRoJCB8IGFzeW5jKVxuICAgICAgICAgICAgICAgIDogc2VsZWN0aW9uQ29sdW1uV2lkdGhcbiAgICAgICAgICAgICAgICA6IGNvbHVtbi5fZnJlZXplZFxuICAgICAgICAgICAgICAgIDogY29sdW1uLl9lbmRGcmVlemVkXG4gICAgICAgICAgICAgICAgOiBfdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlLmdldFByZXZDb2x1bW5zV2lkdGgoY29sdW1uLm5hbWUpXG4gICAgICAgICAgICAgICAgOiBfdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlLmdldENvbHVtbldpZHRoU3R5bGUoY29sdW1uLm5hbWUpXG4gICAgICAgICAgICAgICAgOiBfdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlLmdldE5leHRDb2x1bW5zV2lkdGgoY29sdW1uLm5hbWUpXG4gICAgXCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIl9pc1RyZWVSb3dGaXJzdENlbGwoY29sSWR4LCByb3cpID8gcm93LmV4cGFuZGVkIDogbnVsbFwiXG4gICAgW2F0dHIuZGF0YS1uZXN0aW5nLWxldmVsXT1cImNvbElkeCA9PT0gMCA/IHJvdy5sZXZlbCArIDEgOiBudWxsXCJcbiAgICBbY2VsbEZvY3VzZWRFdmVudEFubm91bmNlcl09XCJudWxsXCJcbiAgICAoY2VsbEZvY3VzZWQpPVwiX3RhYmxlUm93U2VydmljZS5jZWxsRm9jdXNlZCgkZXZlbnQpXCJcbiAgICAoY2xpY2spPVwiX3RhYmxlUm93U2VydmljZS5jZWxsQ2xpY2tlZCh7IGluZGV4OiBjb2xJZHgsIHJvdyB9KVwiXG4gICAgKGtleWRvd24uZW50ZXIpPVwiX2lzVHJlZVJvd0ZpcnN0Q2VsbChjb2xJZHgsIHJvdywgJGV2ZW50KSAmJiBfdG9nZ2xlR3JvdXBSb3coKVwiXG4gICAgKGtleWRvd24uYXJyb3dMZWZ0KT1cIl90YWJsZVJvd1NlcnZpY2Uuc2Nyb2xsVG9PdmVybGFwcGVkQ2VsbCgpXCJcbiAgICAoa2V5ZG93bi5hcnJvd1JpZ2h0KT1cIl90YWJsZVJvd1NlcnZpY2Uuc2Nyb2xsVG9PdmVybGFwcGVkQ2VsbCgpXCJcbj5cbiAgICA8ZGl2IFtjbGFzcy5mZC10YWJsZV9fdGV4dF09XCJjb2x1bW4uYXBwbHlUZXh0XCIgW2NsYXNzLmZkLXRhYmxlX190ZXh0LS1uby13cmFwXT1cImNvbHVtbi5ub1dyYXBcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICpuZ0lmPVwiX2lzVHJlZVJvd0ZpcnN0Q2VsbChjb2xJZHgsIHJvdylcIlxuICAgICAgICAgICAgY2xhc3M9XCJmZC10YWJsZV9fZXhwYW5kXCJcbiAgICAgICAgICAgIFtjbGFzcy5mZC10YWJsZV9fZXhwYW5kLS1vcGVuXT1cInJvdy5leHBhbmRlZCQgfCBhc3luY1wiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICA+PC9zcGFuPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3cuc3RhdGUgPT09ICdyZWFkb25seSc7IGVsc2UgZWRpdE1vZGVDZWxsXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uPy5jb2x1bW5DZWxsVGVtcGxhdGU7IGVsc2UgZGVmYXVsdFRhYmxlQ2VsbFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmNvbHVtbkNlbGxUZW1wbGF0ZSE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93LnZhbHVlLCBwb3BwaW5nOiBmYWxzZSwgcm93SW5kZXg6IHJvdy5pbmRleCB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUYWJsZUNlbGxUZW1wbGF0ZT57eyByb3cudmFsdWUgfCB2YWx1ZUJ5UGF0aCA6IGNvbHVtbi5rZXkgfX08L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZWRpdE1vZGVDZWxsPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbj8uZWRpdGFibGVDb2x1bW5DZWxsVGVtcGxhdGU7IGVsc2UgZGVmYXVsdEVkaXRhYmxlVGFibGVDZWxsVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uZWRpdGFibGVDb2x1bW5DZWxsVGVtcGxhdGUhO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdy52YWx1ZSwgcG9wcGluZzogZmFsc2UsIHJvd0luZGV4OiByb3cuaW5kZXggfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRFZGl0YWJsZVRhYmxlQ2VsbFRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxmZHAtdGFibGUtZWRpdGFibGUtY2VsbFxuICAgICAgICAgICAgICAgICAgICBbcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbHVtblZhbHVlXT1cInJvdy52YWx1ZSB8IHZhbHVlQnlQYXRoIDogY29sdW1uLmtleVwiXG4gICAgICAgICAgICAgICAgPjwvZmRwLXRhYmxlLWVkaXRhYmxlLWNlbGw+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuPC90ZD5cblxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG48dGRcbiAgICAqbmdJZj1cIl9mZHBUYWJsZVNlcnZpY2UuX2lzU2hvd25OYXZpZ2F0aW9uQ29sdW1uJCB8IGFzeW5jXCJcbiAgICBmZC10YWJsZS1jZWxsXG4gICAgY2xhc3M9XCJmZHAtdGFibGVfX2NlbGwtLW5hdmlnYXRpb24gaXMtbGFzdC1jaGlsZFwiXG4gICAgZmRrRGlzYWJsZWRcbiAgICBbYWRkRGlzYWJsZWRDbGFzc109XCJmYWxzZVwiXG4+XG4gICAgPGlcbiAgICAgICAgKm5nSWY9XCJyb3cubmF2aWdhdGFibGVcIlxuICAgICAgICBmZC10YWJsZS1pY29uXG4gICAgICAgIFtuYXZpZ2F0aW9uXT1cInRydWVcIlxuICAgICAgICBbY2xhc3NdPVwiX3J0bCA/ICdzYXAtaWNvbi0tc2xpbS1hcnJvdy1sZWZ0JyA6ICdzYXAtaWNvbi0tc2xpbS1hcnJvdy1yaWdodCdcIlxuICAgICAgICBjbGFzcz1cImZkcC10YWJsZV9fbmF2aWdhdGlvbi1pbmRpY2F0b3JcIlxuICAgID48L2k+XG48L3RkPlxuXG48dGRcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIGNsYXNzPVwiZmQtdGFibGVfX2NlbGwgZmQtdGFibGVfX2NlbGwtLW1vY2tcIlxuICAgIFtjbGFzcy5mZC10YWJsZV9fY2VsbC0tbW9jay1ib3JkZXJsZXNzXT1cIihfdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlLmNlbGxNb2NrVmlzaWJsZSQgfCBhc3luYykgIT09IHRydWVcIlxuICAgIGZka0Rpc2FibGVkXG4gICAgW2FkZERpc2FibGVkQ2xhc3NdPVwiZmFsc2VcIlxuPjwvdGQ+XG4iXX0=
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi90YWJsZS9jb21wb25lbnRzL3RhYmxlLXJvdy90YWJsZS1yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3RhYmxlL2NvbXBvbmVudHMvdGFibGUtcm93L3RhYmxlLXJvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFJTixNQUFNLEVBQ04sU0FBUyxFQUVULFlBQVksRUFDWixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGlCQUFpQixFQUNqQiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBRTVCLE9BQU8sRUFDUCxVQUFVLEVBQ2IsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixhQUFhLEVBR2Isd0JBQXdCLEVBQ3hCLHVCQUF1QixFQUd2QixlQUFlLEVBQ2YsWUFBWSxFQUNmLE1BQU0seUNBQXlDLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxF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QjtrR0FBakIsaUJBQWlCLDZlQVBmO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLDRCQUE0QjtnQkFDckMsV0FBVyxFQUFFLGlCQUFpQjthQUNqQztTQUNKLHNFQXVEYSw0QkFBNEIsb0VBTTVCLGlCQUFpQiw0RkN4SG5DLHE4UEE0TUE7OzJGRC9JYSxpQkFBaUI7a0JBYjdCLFNBQVM7K0JBRUksaUJBQWlCLGlCQUVaLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLDRCQUE0Qjs0QkFDckMsV0FBVyxtQkFBbUI7eUJBQ2pDO3FCQUNKOzBFQUtELEtBQUs7c0JBREosS0FBSztnQkFLTixHQUFHO3NCQURGLEtBQUs7Z0JBTU4sS0FBSztzQkFGSixXQUFXO3VCQUFDLG9CQUFvQjs7c0JBQ2hDLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLGFBQWE7c0JBRFosS0FBSztnQkFLTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBU04sS0FBSztzQkFESixLQUFLO2dCQUtOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQU9OLFlBQVk7c0JBRFgsTUFBTTtnQkFLSyx1QkFBdUI7c0JBRGxDLFlBQVk7dUJBQUMsNEJBQTRCO2dCQU96QixjQUFjO3NCQUQ5QixZQUFZO3VCQUFDLGlCQUFpQjtnQkFLbkIsYUFBYTtzQkFEeEIsV0FBVzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET1dOX0FSUk9XLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgZGVzdHJveU9ic2VydmFibGUsXG4gICAgRkRLX0ZPQ1VTQUJMRV9JVEVNX0RJUkVDVElWRSxcbiAgICBGREtfRk9DVVNBQkxFX0xJU1RfRElSRUNUSVZFLFxuICAgIEZvY3VzYWJsZUl0ZW1EaXJlY3RpdmUsXG4gICAgS2V5VXRpbCxcbiAgICBSdGxTZXJ2aWNlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IFRhYmxlUm93RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RhYmxlJztcbmltcG9ydCB7XG4gICAgRWRpdGFibGVUYWJsZUNlbGwsXG4gICAgaXNUcmVlUm93Rmlyc3RDZWxsLFxuICAgIFNlbGVjdGlvbk1vZGUsXG4gICAgU2VsZWN0aW9uTW9kZVZhbHVlLFxuICAgIFRhYmxlQ29sdW1uLFxuICAgIFRhYmxlQ29sdW1uUmVzaXplU2VydmljZSxcbiAgICBUYWJsZURyYWdnYWJsZURpcmVjdGl2ZSxcbiAgICBUYWJsZVJvdyxcbiAgICBUYWJsZVJvd0tleWJvYXJkRHJhZyxcbiAgICBUYWJsZVJvd1NlcnZpY2UsXG4gICAgVGFibGVTZXJ2aWNlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vdGFibGUtaGVscGVycyc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbZmRwLXRhYmxlLXJvd10nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1yb3cuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZES19GT0NVU0FCTEVfTElTVF9ESVJFQ1RJVkUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVGFibGVSb3dDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVSb3dDb21wb25lbnQ8VD4gZXh0ZW5kcyBUYWJsZVJvd0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIC8qKiBSb3cgSUQuICovXG4gICAgQElucHV0KClcbiAgICByb3dJZDogc3RyaW5nO1xuXG4gICAgLyoqIFRhYmxlIFJvdy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHJvdzogVGFibGVSb3c8VD47XG5cbiAgICAvKiogUm93IGluZGV4LiAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXJvd2luZGV4JylcbiAgICBASW5wdXQoKVxuICAgIGluZGV4OiBudW1iZXI7XG5cbiAgICAvKiogU2VsZWN0aW9uIG1vZGUuICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3Rpb25Nb2RlOiBTZWxlY3Rpb25Nb2RlVmFsdWU7XG5cbiAgICAvKiogU2VsZWN0YWJsZSBmbGFnIGtleS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlbGVjdGFibGVLZXk6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRvIGVuYWJsZSBjaGVja2JveCB0cmlzdGF0ZSBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZW5hYmxlVHJpc3RhdGVNb2RlOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBmaXggdGhlIHRhYmxlIGhlYWRlciBhbmQgZm9vdGVyLiBEZWZhdWx0IGlzIHRydWUuXG4gICAgICogTm90ZSB0aGF0IGlmIHRoZSB0YWJsZSBjb250YWlucyBmcmVlemFibGUgY29sdW1ucywgdGhlIGhlYWRlciBhbmRcbiAgICAgKiBmb290ZXIgd2lsbCBiZSBmaXhlZCBhdXRvbWF0aWNhbGx5LCByZWdhcmRsZXNzIG9mIHRoaXMgaW5wdXQgdmFsdWUuXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIGZpeGVkOiBib29sZWFuO1xuXG4gICAgLyoqIFNlbGVjdGlvbiBjb2x1bW4gd2lkdGguICovXG4gICAgQElucHV0KClcbiAgICBzZWxlY3Rpb25Db2x1bW5XaWR0aDogbnVtYmVyO1xuXG4gICAgLyoqIFRoZSBjb2x1bW4gYG5hbWVgIHRvIGZyZWV6ZSBjb2x1bW5zIHVwIHRvIGFuZCBpbmNsdWRpbmcuICovXG4gICAgQElucHV0KClcbiAgICBmcmVlemVDb2x1bW5zVG86IHN0cmluZztcblxuICAgIC8qKiBUaGUgY29sdW1uIGBuYW1lYCB0byBmcmVlemUgY29sdW1ucyBhZnRlciBhbmQgaW5jbHVkaW5nLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZnJlZXplRW5kQ29sdW1uc1RvOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBlbWl0dGVkIHdoZW4ga2V5Ym9hcmQgZHJhZyBwZXJmb3JtZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAga2V5Ym9hcmREcmFnID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVJvd0tleWJvYXJkRHJhZz4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZHJlbihGREtfRk9DVVNBQkxFX0lURU1fRElSRUNUSVZFKVxuICAgIHByaXZhdGUgc2V0IF9mb2N1c2FibGVWaWV3Q2VsbEl0ZW1zKGl0ZW1zOiBRdWVyeUxpc3Q8Rm9jdXNhYmxlSXRlbURpcmVjdGl2ZT4pIHtcbiAgICAgICAgdGhpcy5zZXRJdGVtcyhpdGVtcyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKEVkaXRhYmxlVGFibGVDZWxsKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRhYmxlQ2VsbHM6IFF1ZXJ5TGlzdDxFZGl0YWJsZVRhYmxlQ2VsbD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXNlbGVjdGVkJylcbiAgICBwcml2YXRlIGdldCBfYXJpYVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnJvdy5jaGVja2VkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hhc1Jvd0hlYWRlckNvbHVtbiA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcnRsID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9pc1RyZWVSb3dGaXJzdENlbGwgPSBpc1RyZWVSb3dGaXJzdENlbGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IFNFTEVDVElPTl9NT0RFID0gU2VsZWN0aW9uTW9kZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgPSBpbmplY3QoQ29udGVudERlbnNpdHlPYnNlcnZlcik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF90YWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UgPSBpbmplY3QoVGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2ZkcFRhYmxlU2VydmljZSA9IGluamVjdChUYWJsZVNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfdGFibGVSb3dTZXJ2aWNlID0gaW5qZWN0KFRhYmxlUm93U2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlZnJlc2hDaGlsZFJvd3MkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZSA9IGluamVjdChSdGxTZXJ2aWNlLCB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWxtUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kbmRUYWJsZURpcmVjdGl2ZSA9IGluamVjdChUYWJsZURyYWdnYWJsZURpcmVjdGl2ZSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5fcnRsU2VydmljZT8ucnRsLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgocnRsKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9ydGwgPSBydGw7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5yZXNpemVJblByb2dyZXNzJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5tYXJrRm9yQ2hlY2spLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pih0aGlzLl9lbG1SZWYubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLl9kbmRUYWJsZURpcmVjdGl2ZSksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uS2V5RG93bihldmVudCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuX2ZkcFRhYmxlU2VydmljZS52aXNpYmxlQ29sdW1ucyQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgoY29sdW1ucykgPT4ge1xuICAgICAgICAgICAgdGhpcy5faGFzUm93SGVhZGVyQ29sdW1uID0gY29sdW1ucy5zb21lKChjKSA9PiBjLnJvbGUgPT09ICdyb3doZWFkZXInKTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICB0aGlzLl9lZGl0YWJsZUNlbGxzLmNoYW5nZXMucGlwZShzdGFydFdpdGgobnVsbCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5fZWRpdGFibGVDZWxscy50b0FycmF5KCk7XG4gICAgICAgICAgICBpZiAoY2VsbHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlUm93U2VydmljZS51cGRhdGVFZGl0YWJsZUNlbGxzKHRoaXMucm93LCBjZWxscyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlUm93U2VydmljZS5yZW1vdmVFZGl0YWJsZUNlbGxzKHRoaXMucm93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgICAgICBpZiAoJ3JvdycgaW4gY2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy5fbGlzdGVuVG9Sb3dFeHBhbnNpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hDaGlsZFJvd3MkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaENoaWxkUm93cyQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fdGFibGVSb3dTZXJ2aWNlLnJlbW92ZUVkaXRhYmxlQ2VsbHModGhpcy5yb3cpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RvZ2dsZUdyb3VwUm93KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZVJvd1NlcnZpY2UudG9nZ2xlUm93KHsgdHlwZTogJ3RvZ2dsZVJvdycsIHJvdzogdGhpcy5yb3cgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdG9nZ2xlU2luZ2xlU2VsZWN0YWJsZVJvdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGVSb3dTZXJ2aWNlLnRvZ2dsZVJvdyh7IHR5cGU6ICd0b2dnbGVTaW5nbGVTZWxlY3RhYmxlUm93Jywgcm93OiB0aGlzLnJvdyB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90b2dnbGVNdWx0aVNlbGVjdFJvdyhyb3c6IFRhYmxlUm93PFQ+LCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlUm93U2VydmljZS50b2dnbGVSb3coeyAuLi57IHJvdywgZXZlbnQgfSwgLi4ueyB0eXBlOiAndG9nZ2xlTXVsdGlTZWxlY3RSb3cnIH0gfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29sdW1uVHJhY2tCeShpbmRleDogbnVtYmVyLCBjb2x1bW46IFRhYmxlQ29sdW1uKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5uYW1lO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9Sb3dFeHBhbnNpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hDaGlsZFJvd3MkLm5leHQoKTtcbiAgICAgICAgY29uc3QgcmVmcmVzaCA9IG1lcmdlKHRoaXMuX3JlZnJlc2hDaGlsZFJvd3MkLCBkZXN0cm95T2JzZXJ2YWJsZSh0aGlzLl9kZXN0cm95UmVmKSk7XG4gICAgICAgIC8vIExvYWQgaXRlbXMgb25seSBvbmNlLiBGdXJ0aGVyIGxvYWRpbmcgd2lsbCBiZSBjb3ZlcmVkIGJ5IHRoZSBsYXp5IGxvYWRpbmcgZnVuY3Rpb25hbGl0eS5cbiAgICAgICAgdGhpcy5yb3c/LmV4cGFuZGVkJFxuICAgICAgICAgICAgPy5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZXhwYW5kZWQpID0+IGV4cGFuZGVkICYmIHRoaXMucm93LmNoaWxkcmVuLmxlbmd0aCA9PT0gMCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHJlZnJlc2gpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJsZVJvd1NlcnZpY2UubG9hZENoaWxkUm93cyh0aGlzLnJvdyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpc0Fycm93RG93biA9IEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKTtcbiAgICAgICAgY29uc3QgaXNBcnJvd1VwID0gS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKTtcblxuICAgICAgICBpZiAoIWV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc0Fycm93RG93biAmJiAhaXNBcnJvd1VwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kbmRUYWJsZURpcmVjdGl2ZT8uZHJhZ1Jvd0Zyb21LZXlib2FyZChcbiAgICAgICAgICAgIGlzQXJyb3dEb3duID8gJ2Rvd24nIDogJ3VwJyxcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgdGhpcy5pbmRleCxcbiAgICAgICAgICAgIGV2ZW50LnNoaWZ0S2V5ID8gJ2dyb3VwJyA6ICdzaGlmdCdcbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCI8dGRcbiAgICAqbmdJZj1cIl9mZHBUYWJsZVNlcnZpY2UuX3NlbWFudGljSGlnaGxpZ2h0aW5nJCB8IGFzeW5jIGFzIHNlbWFudGljSGlnaGxpZ2h0aW5nXCJcbiAgICBmZC10YWJsZS1jZWxsXG4gICAgZmQtdGFibGUtc3RhdHVzLWluZGljYXRvclxuICAgIGZka0Rpc2FibGVkXG4gICAgW2FkZERpc2FibGVkQ2xhc3NdPVwiZmFsc2VcIlxuICAgIFtzdGF0dXNdPVwicm93LnZhbHVlW3NlbWFudGljSGlnaGxpZ2h0aW5nXVwiXG4+PC90ZD5cblxuPCEtLSBSb3cgU2VsZWN0aW9uIENlbGwgLS0+XG48bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJzZWxlY3Rpb25Nb2RlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiU0VMRUNUSU9OX01PREUuU0lOR0xFXCI+XG4gICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nSWY9XCJyb3cudmFsdWVbc2VsZWN0YWJsZUtleV0gIT09IGZhbHNlOyBlbHNlIHNlbGVjdGlvbk1vY2tcIlxuICAgICAgICAgICAgY2xhc3M9XCJmZC10YWJsZV9fY2VsbC0tY2hlY2tib3hcIlxuICAgICAgICAgICAgW2NsYXNzLmZkLXRhYmxlX19jZWxsLS1maXhlZF09XCJmaXhlZFwiXG4gICAgICAgICAgICBbYXR0ci5yb2xlXT1cIl9oYXNSb3dIZWFkZXJDb2x1bW4gPyAncm93aGVhZGVyJyA6ICdncmlkY2VsbCdcIlxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbFxuICAgICAgICAgICAgZmQtdGFibGUtY2VsbC1zZWxlY3RhYmxlXG4gICAgICAgICAgICBbZm9jdXNhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgW3N0eWxlXT1cIlxuICAgICAgICAgICAgICAgIF9jb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgICAgICAgICAgICAgICAgIHwgYXN5bmNcbiAgICAgICAgICAgICAgICAgICAgfCBzZWxlY3Rpb25DZWxsU3R5bGVzIDogX3J0bCA6IChfZmRwVGFibGVTZXJ2aWNlLl9zZW1hbnRpY0hpZ2hsaWdodGluZ0NvbHVtbldpZHRoJCB8IGFzeW5jKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwicm93LmNoZWNrZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIl90b2dnbGVTaW5nbGVTZWxlY3RhYmxlUm93KClcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiX3RvZ2dsZVNpbmdsZVNlbGVjdGFibGVSb3coKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJfdG9nZ2xlU2luZ2xlU2VsZWN0YWJsZVJvdygpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBoaWRkZW4gdGV4dCBmb3Igc2NyZWVucmVhZGVyIC0tPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxcHg7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICAgIGNsaXA6IHJlY3QoMXB4LCAxcHgsIDFweCwgMXB4KTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5jaGVja2VkXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybVRhYmxlLmRlc2VsZWN0U2luZ2xlUm93JyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyb3cuY2hlY2tlZFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1UYWJsZS5zZWxlY3RTaW5nbGVSb3cnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIlNFTEVDVElPTl9NT0RFLk1VTFRJUExFXCI+XG4gICAgICAgIDx0ZFxuICAgICAgICAgICAgKm5nSWY9XCJyb3cudmFsdWVbc2VsZWN0YWJsZUtleV0gIT09IGZhbHNlOyBlbHNlIHNlbGVjdGlvbk1vY2tcIlxuICAgICAgICAgICAgY2xhc3M9XCJmZC10YWJsZV9fY2VsbC0tY2hlY2tib3hcIlxuICAgICAgICAgICAgW2NsYXNzLmZkLXRhYmxlX19jZWxsLS1maXhlZF09XCJmaXhlZFwiXG4gICAgICAgICAgICByb2xlPVwiY2VsbFwiXG4gICAgICAgICAgICBmZC10YWJsZS1jZWxsXG4gICAgICAgICAgICBbZm9jdXNhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiX3RvZ2dsZU11bHRpU2VsZWN0Um93KHJvdywgJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJfdG9nZ2xlTXVsdGlTZWxlY3RSb3cocm93LCAkZXZlbnQpXCJcbiAgICAgICAgICAgIFtzdHlsZV09XCJcbiAgICAgICAgICAgICAgICBfY29udGVudERlbnNpdHlPYnNlcnZlclxuICAgICAgICAgICAgICAgICAgICB8IGFzeW5jXG4gICAgICAgICAgICAgICAgICAgIHwgc2VsZWN0aW9uQ2VsbFN0eWxlcyA6IF9ydGwgOiAoX2ZkcFRhYmxlU2VydmljZS5fc2VtYW50aWNIaWdobGlnaHRpbmdDb2x1bW5XaWR0aCQgfCBhc3luYylcbiAgICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxmZC1jaGVja2JveFxuICAgICAgICAgICAgICAgIHRhYkluZGV4VmFsdWU9XCItMVwiXG4gICAgICAgICAgICAgICAgbGFiZWxDbGFzcz1cImZkLXRhYmxlX19jaGVja2JveC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgW3RyaXN0YXRlXT1cImVuYWJsZVRyaXN0YXRlTW9kZVwiXG4gICAgICAgICAgICAgICAgW3RyaXN0YXRlU2VsZWN0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwicm93LmNoZWNrZWQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl90b2dnbGVNdWx0aVNlbGVjdFJvdyhyb3cpXCJcbiAgICAgICAgICAgID48L2ZkLWNoZWNrYm94PlxuICAgICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjc2VsZWN0aW9uTW9jaz5cbiAgICA8dGRcbiAgICAgICAgY2xhc3M9XCJmZC10YWJsZV9fY2VsbC0tY2hlY2tib3hcIlxuICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICBmZC10YWJsZS1jZWxsXG4gICAgICAgIGZka0Rpc2FibGVkXG4gICAgICAgIFthZGREaXNhYmxlZENsYXNzXT1cImZhbHNlXCJcbiAgICAgICAgW2NsYXNzLmZkLXRhYmxlX19jZWxsLS1maXhlZF09XCJmaXhlZFwiXG4gICAgPjwvdGQ+XG48L25nLXRlbXBsYXRlPlxuXG48dGRcbiAgICAqbmdGb3I9XCJcbiAgICAgICAgbGV0IGNvbHVtbiBvZiBfZmRwVGFibGVTZXJ2aWNlLnZpc2libGVDb2x1bW5zJCB8IGFzeW5jO1xuICAgICAgICBsZXQgY29sSWR4ID0gaW5kZXg7XG4gICAgICAgIGxhc3QgYXMgaXNMYXN0O1xuICAgICAgICB0cmFja0J5OiBfY29sdW1uVHJhY2tCeVxuICAgIFwiXG4gICAgW2ZkcFRhYmxlQ2VsbFJlc2l6YWJsZV09XCJcbiAgICAgICAgY29sSWR4XG4gICAgICAgICAgICB8IGNvbHVtblJlc2l6YWJsZVNpZGVcbiAgICAgICAgICAgICAgICA6IF9mZHBUYWJsZVNlcnZpY2UudmlzaWJsZUNvbHVtbnNMZW5ndGhcbiAgICAgICAgICAgICAgICA6IChfZmRwVGFibGVTZXJ2aWNlLl9pc1Nob3duTmF2aWdhdGlvbkNvbHVtbiQgfCBhc3luYykgPT09IHRydWVcbiAgICBcIlxuICAgIFtjb2x1bW5OYW1lXT1cImNvbHVtbi5uYW1lXCJcbiAgICBbZm9jdXNhYmxlXT1cInRydWVcIlxuICAgIFthdHRyLnJvbGVdPVwiY29sdW1uLnJvbGVcIlxuICAgIFtoZWFkZXJzXT1cInJvd0lkICsgJ19fJyArIGNvbHVtbi5uYW1lXCJcbiAgICBbbmdDbGFzc109XCInZmRwLXRhYmxlX19jb2wtLScgKyBjb2x1bW4ubmFtZVwiXG4gICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAnZmRwLXRhYmxlX19jb2wtLScgKyBjb2x1bW4ubmFtZSxcbiAgICAgICAgY29sdW1uLl9mcmVlemVkID8gJ2ZkLXRhYmxlX19jZWxsLS1maXhlZCcgOiAnJyxcbiAgICAgICAgY29sdW1uLm5hbWUgPT09IGZyZWV6ZUNvbHVtbnNUbyA/ICdmZC10YWJsZV9fY2VsbC0tZml4ZWQtbGFzdCcgOiAnJyxcbiAgICAgICAgY29sdW1uLl9lbmRGcmVlemVkID8gJ2ZkLXRhYmxlX19jZWxsLS1maXhlZC1lbmQnIDogJycsXG4gICAgICAgIGNvbHVtbi5uYW1lID09PSBmcmVlemVFbmRDb2x1bW5zVG8gPyAnZmQtdGFibGVfX2NlbGwtLWZpeGVkLWVuZC1sYXN0JyA6ICcnLFxuICAgICAgICByb3cuaXNUcmVlICYmIGNvbElkeCA9PT0gMCA/ICdmZC10YWJsZV9fY2VsbC0tZXhwYW5kJyA6ICcnLFxuICAgICAgICBpc0xhc3QgJiYgKF9mZHBUYWJsZVNlcnZpY2UuX2lzU2hvd25OYXZpZ2F0aW9uQ29sdW1uJCB8IGFzeW5jKSA9PT0gZmFsc2UgPyAnaXMtbGFzdC1jaGlsZCcgOiAnJ1xuICAgIF1cIlxuICAgIFtuZ1N0eWxlXT1cIlxuICAgICAgICBjb2x1bW5cbiAgICAgICAgICAgIHwgdGFibGVDZWxsU3R5bGVzXG4gICAgICAgICAgICAgICAgOiBfcnRsXG4gICAgICAgICAgICAgICAgOiAoX2ZkcFRhYmxlU2VydmljZS5fc2VtYW50aWNIaWdobGlnaHRpbmdDb2x1bW5XaWR0aCQgfCBhc3luYylcbiAgICAgICAgICAgICAgICA6IHNlbGVjdGlvbkNvbHVtbldpZHRoXG4gICAgICAgICAgICAgICAgOiBjb2x1bW4uX2ZyZWV6ZWRcbiAgICAgICAgICAgICAgICA6IGNvbHVtbi5fZW5kRnJlZXplZFxuICAgICAgICAgICAgICAgIDogX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5nZXRQcmV2Q29sdW1uc1dpZHRoKGNvbHVtbi5uYW1lKVxuICAgICAgICAgICAgICAgIDogX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5nZXRDb2x1bW5XaWR0aFN0eWxlKGNvbHVtbi5uYW1lKVxuICAgICAgICAgICAgICAgIDogX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5nZXROZXh0Q29sdW1uc1dpZHRoKGNvbHVtbi5uYW1lKVxuICAgIFwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJfaXNUcmVlUm93Rmlyc3RDZWxsKGNvbElkeCwgcm93KSA/IHJvdy5leHBhbmRlZCA6IG51bGxcIlxuICAgIFthdHRyLmRhdGEtbmVzdGluZy1sZXZlbF09XCJjb2xJZHggPT09IDAgPyByb3cubGV2ZWwgKyAxIDogbnVsbFwiXG4gICAgW2NlbGxGb2N1c2VkRXZlbnRBbm5vdW5jZXJdPVwibnVsbFwiXG4gICAgKGNlbGxGb2N1c2VkKT1cIl90YWJsZVJvd1NlcnZpY2UuY2VsbEZvY3VzZWQoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cIl90YWJsZVJvd1NlcnZpY2UuY2VsbENsaWNrZWQoeyBpbmRleDogY29sSWR4LCByb3cgfSlcIlxuICAgIChrZXlkb3duLmVudGVyKT1cIl9pc1RyZWVSb3dGaXJzdENlbGwoY29sSWR4LCByb3csICRldmVudCkgJiYgX3RvZ2dsZUdyb3VwUm93KClcIlxuICAgIChrZXlkb3duLmFycm93TGVmdCk9XCJfdGFibGVSb3dTZXJ2aWNlLnNjcm9sbFRvT3ZlcmxhcHBlZENlbGwoKVwiXG4gICAgKGtleWRvd24uYXJyb3dSaWdodCk9XCJfdGFibGVSb3dTZXJ2aWNlLnNjcm9sbFRvT3ZlcmxhcHBlZENlbGwoKVwiXG4+XG4gICAgPGRpdiBbY2xhc3MuZmQtdGFibGVfX3RleHRdPVwiY29sdW1uLmFwcGx5VGV4dFwiIFtjbGFzcy5mZC10YWJsZV9fdGV4dC0tbm8td3JhcF09XCJjb2x1bW4ubm9XcmFwXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIl9pc1RyZWVSb3dGaXJzdENlbGwoY29sSWR4LCByb3cpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtdGFibGVfX2V4cGFuZFwiXG4gICAgICAgICAgICBbY2xhc3MuZmQtdGFibGVfX2V4cGFuZC0tb3Blbl09XCJyb3cuZXhwYW5kZWQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPjwvc3Bhbj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93LnN0YXRlID09PSAncmVhZG9ubHknOyBlbHNlIGVkaXRNb2RlQ2VsbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbj8uY29sdW1uQ2VsbFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRUYWJsZUNlbGxUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5jb2x1bW5DZWxsVGVtcGxhdGUhO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdy52YWx1ZSwgcG9wcGluZzogZmFsc2UsIHJvd0luZGV4OiByb3cuaW5kZXggfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGFibGVDZWxsVGVtcGxhdGU+e3sgcm93LnZhbHVlIHwgdmFsdWVCeVBhdGggOiBjb2x1bW4ua2V5IH19PC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2VkaXRNb2RlQ2VsbD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4/LmVkaXRhYmxlQ29sdW1uQ2VsbFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRFZGl0YWJsZVRhYmxlQ2VsbFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmVkaXRhYmxlQ29sdW1uQ2VsbFRlbXBsYXRlITtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cudmFsdWUsIHBvcHBpbmc6IGZhbHNlLCByb3dJbmRleDogcm93LmluZGV4IH1cbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0RWRpdGFibGVUYWJsZUNlbGxUZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8ZmRwLXRhYmxlLWVkaXRhYmxlLWNlbGxcbiAgICAgICAgICAgICAgICAgICAgW3Jvd109XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2x1bW5WYWx1ZV09XCJyb3cudmFsdWUgfCB2YWx1ZUJ5UGF0aCA6IGNvbHVtbi5rZXlcIlxuICAgICAgICAgICAgICAgID48L2ZkcC10YWJsZS1lZGl0YWJsZS1jZWxsPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbjwvdGQ+XG5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuPHRkXG4gICAgKm5nSWY9XCJfZmRwVGFibGVTZXJ2aWNlLl9pc1Nob3duTmF2aWdhdGlvbkNvbHVtbiQgfCBhc3luY1wiXG4gICAgZmQtdGFibGUtY2VsbFxuICAgIGNsYXNzPVwiZmRwLXRhYmxlX19jZWxsLS1uYXZpZ2F0aW9uIGlzLWxhc3QtY2hpbGRcIlxuICAgIGZka0Rpc2FibGVkXG4gICAgW2FkZERpc2FibGVkQ2xhc3NdPVwiZmFsc2VcIlxuPlxuICAgIDxpXG4gICAgICAgICpuZ0lmPVwicm93Lm5hdmlnYXRhYmxlXCJcbiAgICAgICAgZmQtdGFibGUtaWNvblxuICAgICAgICBbbmF2aWdhdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgW2NsYXNzXT1cIl9ydGwgPyAnc2FwLWljb24tLXNsaW0tYXJyb3ctbGVmdCcgOiAnc2FwLWljb24tLXNsaW0tYXJyb3ctcmlnaHQnXCJcbiAgICAgICAgY2xhc3M9XCJmZHAtdGFibGVfX25hdmlnYXRpb24taW5kaWNhdG9yXCJcbiAgICA+PC9pPlxuPC90ZD5cblxuPHRkXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICBjbGFzcz1cImZkLXRhYmxlX19jZWxsIGZkLXRhYmxlX19jZWxsLS1tb2NrXCJcbiAgICBbY2xhc3MuZmQtdGFibGVfX2NlbGwtLW1vY2stYm9yZGVybGVzc109XCIoX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5jZWxsTW9ja1Zpc2libGUkIHwgYXN5bmMpICE9PSB0cnVlXCJcbiAgICBmZGtEaXNhYmxlZFxuICAgIFthZGREaXNhYmxlZENsYXNzXT1cImZhbHNlXCJcbj48L3RkPlxuIl19
|
|
@@ -4,7 +4,8 @@ import { TableCellDirective } from '@fundamental-ngx/core/table';
|
|
|
4
4
|
import equal from 'fast-deep-equal';
|
|
5
5
|
import { TableColumnResizeService } from '../services/table-column-resize.service';
|
|
6
6
|
import { fromEvent } from 'rxjs';
|
|
7
|
-
import { distinctUntilChanged, filter, map
|
|
7
|
+
import { distinctUntilChanged, filter, map } from 'rxjs/operators';
|
|
8
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
export const TABLE_CELL_RESIZABLE_THRESHOLD_PX = 4;
|
|
10
11
|
/**
|
|
@@ -38,12 +39,12 @@ export class PlatformTableCellResizableDirective extends TableCellDirective {
|
|
|
38
39
|
ngOnInit() {
|
|
39
40
|
this._zone.runOutsideAngular(() => {
|
|
40
41
|
fromEvent(this.elementRef.nativeElement, 'mousemove')
|
|
41
|
-
.pipe(filter(() => this._tableColumnResizeService?.resizeInProgress !== true), map((event) => this._getResizer(event) || { resizerPosition: 0, resizedColumn: this.columnName }), distinctUntilChanged((prev, curr) => equal(prev, curr)),
|
|
42
|
+
.pipe(filter(() => this._tableColumnResizeService?.resizeInProgress !== true), map((event) => this._getResizer(event) || { resizerPosition: 0, resizedColumn: this.columnName }), distinctUntilChanged((prev, curr) => equal(prev, curr)), takeUntilDestroyed(this._destroyRef))
|
|
42
43
|
.subscribe((data) => {
|
|
43
44
|
this._tableColumnResizeService.setInitialResizerPosition(data.resizerPosition, data.resizedColumn);
|
|
44
45
|
});
|
|
45
46
|
fromEvent(this.elementRef.nativeElement, 'focus')
|
|
46
|
-
.pipe(
|
|
47
|
+
.pipe(takeUntilDestroyed(this._destroyRef))
|
|
47
48
|
.subscribe(() => {
|
|
48
49
|
this._tableColumnResizeService.setInitialResizerPosition(0, this.columnName);
|
|
49
50
|
});
|
|
@@ -131,4 +132,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
131
132
|
}], columnName: [{
|
|
132
133
|
type: Input
|
|
133
134
|
}] } });
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1yZXNpemFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3RhYmxlLWhlbHBlcnMvZGlyZWN0aXZlcy90YWJsZS1jZWxsLXJlc2l6YWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFFLDRCQUE0QixFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBSTlFLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFHLENBQUMsQ0FBQztBQUVuRDs7R0FFRztBQW1CSCxNQUFNLE9BQU8sbUNBQ1QsU0FBUSxrQkFBa0I7SUFHMUIsa0RBQWtEO0lBQ2xELElBQ0ksYUFBYSxDQUFDLEtBQStCO1FBQzdDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBU0QsY0FBYztJQUNkLElBQVksTUFBTTtRQUNkLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksS0FBSyxDQUFDO0lBQ3JELENBQUM7SUFVRCxj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TyxFQUFFLGtCQUFrQjtnQkFDM0IsV0FBVyxFQUFFLG1DQUFtQzthQUNuRDtTQUNKOzsyRkFFUSxtQ0FBbUM7a0JBbEIvQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLDRCQUE0Qjs0QkFDckMsV0FBVyxxQ0FBcUM7eUJBQ25EO3dCQUNEOzRCQUNJLE9BQU8sRUFBRSxzQkFBc0I7NEJBQy9CLFdBQVcscUNBQXFDO3lCQUNuRDt3QkFDRDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLHFDQUFxQzt5QkFDbkQ7cUJBQ0o7aUJBQ0o7MEVBT08sYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyx1QkFBdUI7Z0JBVzlCLFVBQVU7c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRkRLX0ZPQ1VTQUJMRV9JVEVNX0RJUkVDVElWRSwgRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFRhYmxlQ2VsbERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90YWJsZSc7XG5pbXBvcnQgZXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uUmVzaXplU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RhYmxlLWNvbHVtbi1yZXNpemUuc2VydmljZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgdHlwZSBUYWJsZUNvbHVtblJlc2l6YWJsZVNpZGUgPSAnc3RhcnQnIHwgJ2VuZCcgfCAnYm90aCc7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9DRUxMX1JFU0laQUJMRV9USFJFU0hPTERfUFggPSA0O1xuXG4vKipcbiAqIFRyYWNrcyBtb3VzZSBtb3ZlbWVudCBvdmVyIHRoZSBjZWxsIGlmIHRoZSBtb3VzZSBwb2ludGVyIG5lYXIgdGhlIHNpZGUgb2YgdGhlIGNlbGwsIGluZm9ybXMgcmVzaXplIHNlcnZpY2UuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkcFRhYmxlQ2VsbFJlc2l6YWJsZV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZES19GT0NVU0FCTEVfSVRFTV9ESVJFQ1RJVkUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogUGxhdGZvcm1UYWJsZUNlbGxSZXNpemFibGVEaXJlY3RpdmVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBQbGF0Zm9ybVRhYmxlQ2VsbFJlc2l6YWJsZURpcmVjdGl2ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUYWJsZUNlbGxEaXJlY3RpdmUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogUGxhdGZvcm1UYWJsZUNlbGxSZXNpemFibGVEaXJlY3RpdmVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1UYWJsZUNlbGxSZXNpemFibGVEaXJlY3RpdmVcbiAgICBleHRlbmRzIFRhYmxlQ2VsbERpcmVjdGl2ZVxuICAgIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgICAvKiogRmlyc3QgY29sdW1uIGNhbiBiZSByZXNpemVkIG9ubHkgYnkgaXRzIGVuZCAqL1xuICAgIEBJbnB1dCgnZmRwVGFibGVDZWxsUmVzaXphYmxlJylcbiAgICBzZXQgcmVzaXphYmxlU2lkZSh2YWx1ZTogVGFibGVDb2x1bW5SZXNpemFibGVTaWRlKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3Jlc2l6YWJsZVNpZGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQ29sdW1uIG5hbWUgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbHVtbk5hbWU6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzaXphYmxlU2lkZTogVGFibGVDb2x1bW5SZXNpemFibGVTaWRlID0gJ2JvdGgnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGdldCBfaXNSdGwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydGxTZXJ2aWNlPy5ydGwuZ2V0VmFsdWUoKSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZSA9IGluamVjdChUYWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ydGxTZXJ2aWNlID0gaW5qZWN0KFJ0bFNlcnZpY2UsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdtb3VzZW1vdmUnKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5fdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlPy5yZXNpemVJblByb2dyZXNzICE9PSB0cnVlKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKChldmVudCkgPT4gdGhpcy5fZ2V0UmVzaXplcihldmVudCkgfHwgeyByZXNpemVyUG9zaXRpb246IDAsIHJlc2l6ZWRDb2x1bW46IHRoaXMuY29sdW1uTmFtZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXYsIGN1cnIpID0+IGVxdWFsKHByZXYsIGN1cnIpKSxcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5zZXRJbml0aWFsUmVzaXplclBvc2l0aW9uKGRhdGEucmVzaXplclBvc2l0aW9uLCBkYXRhLnJlc2l6ZWRDb2x1bW4pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZnJvbUV2ZW50PEZvY3VzRXZlbnQ+KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZm9jdXMnKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5zZXRJbml0aWFsUmVzaXplclBvc2l0aW9uKDAsIHRoaXMuY29sdW1uTmFtZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb2x1bW5OYW1lID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZT8ucmVnaXN0ZXJDb2x1bW5DZWxsKHRoaXMuY29sdW1uTmFtZSwgdGhpcy5lbGVtZW50UmVmKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZUNvbHVtblJlc2l6ZVNlcnZpY2U/LnVucmVnaXN0ZXJDb2x1bW5DZWxsKHRoaXMuY29sdW1uTmFtZSwgdGhpcy5lbGVtZW50UmVmKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFJlc2l6ZXIoZXZlbnQ6IE1vdXNlRXZlbnQpOiB7IHJlc2l6ZXJQb3NpdGlvbjogbnVtYmVyOyByZXNpemVkQ29sdW1uOiBzdHJpbmcgfSB8IG51bGwge1xuICAgICAgICBjb25zdCBlbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBlbFBvc2l0aW9uID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgbGV0IHJlc2l6ZXJQb3NpdGlvbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgICAgICBsZXQgcmVzaXplZENvbHVtbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IHBvaW50ZXJPbkxlZnQgPSB0aGlzLl9pc1J0bFxuICAgICAgICAgICAgPyBlbFBvc2l0aW9uLnJpZ2h0IC0gZXZlbnQuY2xpZW50WCA8IFRBQkxFX0NFTExfUkVTSVpBQkxFX1RIUkVTSE9MRF9QWFxuICAgICAgICAgICAgOiBldmVudC5jbGllbnRYIC0gZWxQb3NpdGlvbi5sZWZ0IDwgVEFCTEVfQ0VMTF9SRVNJWkFCTEVfVEhSRVNIT0xEX1BYO1xuXG4gICAgICAgIGlmIChwb2ludGVyT25MZWZ0ICYmIHRoaXMuX3Jlc2l6YWJsZVNpZGUgIT09ICdlbmQnKSB7XG4gICAgICAgICAgICByZXNpemVyUG9zaXRpb24gPSB0aGlzLl9pc1J0bFxuICAgICAgICAgICAgICAgID8gZWwucGFyZW50RWxlbWVudCEub2Zmc2V0V2lkdGggLSAoZWwub2Zmc2V0TGVmdCArIGVsLm9mZnNldFdpZHRoKVxuICAgICAgICAgICAgICAgIDogZWwub2Zmc2V0TGVmdDtcblxuICAgICAgICAgICAgcmVzaXplZENvbHVtbiA9IHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5nZXRQcmV2aW91c0NvbHVtbk5hbWUodGhpcy5jb2x1bW5OYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvaW50ZXJPblJpZ2h0ID0gdGhpcy5faXNSdGxcbiAgICAgICAgICAgID8gZXZlbnQuY2xpZW50WCAtIGVsUG9zaXRpb24ubGVmdCA8IFRBQkxFX0NFTExfUkVTSVpBQkxFX1RIUkVTSE9MRF9QWFxuICAgICAgICAgICAgOiBlbFBvc2l0aW9uLnJpZ2h0IC0gZXZlbnQuY2xpZW50WCA8IFRBQkxFX0NFTExfUkVTSVpBQkxFX1RIUkVTSE9MRF9QWDtcblxuICAgICAgICBpZiAocG9pbnRlck9uUmlnaHQgJiYgdGhpcy5fcmVzaXphYmxlU2lkZSAhPT0gJ3N0YXJ0Jykge1xuICAgICAgICAgICAgcmVzaXplclBvc2l0aW9uID0gdGhpcy5faXNSdGxcbiAgICAgICAgICAgICAgICA/IGVsLnBhcmVudEVsZW1lbnQhLm9mZnNldFdpZHRoIC0gZWwub2Zmc2V0TGVmdFxuICAgICAgICAgICAgICAgIDogZWwub2Zmc2V0TGVmdCArIGVsLm9mZnNldFdpZHRoO1xuXG4gICAgICAgICAgICByZXNpemVkQ29sdW1uID0gdGhpcy5jb2x1bW5OYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFyZXNpemVkQ29sdW1uKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IHJlc2l6ZXJQb3NpdGlvbjogcmVzaXplclBvc2l0aW9uISwgcmVzaXplZENvbHVtbiB9O1xuICAgIH1cbn1cbiJdfQ==
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1yZXNpemFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3RhYmxlLWhlbHBlcnMvZGlyZWN0aXZlcy90YWJsZS1jZWxsLXJlc2l6YWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFFLDRCQUE0QixFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxNQUFNLGlCQUFpQixDQUFDO0FBQ3BDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFJaEUsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsQ0FBQyxDQUFDO0FBRW5EOztHQUVHO0FBbUJILE1BQU0sT0FBTyxtQ0FDVCxTQUFRLGtCQUFrQjtJQUcxQixrREFBa0Q7SUFDbEQsSUFDSSxhQUFhLENBQUMsS0FBK0I7UUFDN0MsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFTRCxjQUFjO0lBQ2QsSUFBWSxNQUFNO1FBQ2QsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVB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QixXQUFXLEVBQUUsbUNBQW1DO2FBQ25EO1lBQ0Q7Z0JBQ0ksT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsV0FBVyxFQUFFLG1DQUFtQzthQUNuRDtTQUNKOzsyRkFFUSxtQ0FBbUM7a0JBbEIvQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLDRCQUE0Qjs0QkFDckMsV0FBVyxxQ0FBcUM7eUJBQ25EO3dCQUNEOzRCQUNJLE9BQU8sRUFBRSxzQkFBc0I7NEJBQy9CLFdBQVcscUNBQXFDO3lCQUNuRDt3QkFDRDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLHFDQUFxQzt5QkFDbkQ7cUJBQ0o7aUJBQ0o7MEVBT08sYUFBYTtzQkFEaEIsS0FBSzt1QkFBQyx1QkFBdUI7Z0JBVzlCLFVBQVU7c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRkRLX0ZPQ1VTQUJMRV9JVEVNX0RJUkVDVElWRSwgRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFRhYmxlQ2VsbERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90YWJsZSc7XG5pbXBvcnQgZXF1YWwgZnJvbSAnZmFzdC1kZWVwLWVxdWFsJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uUmVzaXplU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RhYmxlLWNvbHVtbi1yZXNpemUuc2VydmljZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuZXhwb3J0IHR5cGUgVGFibGVDb2x1bW5SZXNpemFibGVTaWRlID0gJ3N0YXJ0JyB8ICdlbmQnIHwgJ2JvdGgnO1xuXG5leHBvcnQgY29uc3QgVEFCTEVfQ0VMTF9SRVNJWkFCTEVfVEhSRVNIT0xEX1BYID0gNDtcblxuLyoqXG4gKiBUcmFja3MgbW91c2UgbW92ZW1lbnQgb3ZlciB0aGUgY2VsbCBpZiB0aGUgbW91c2UgcG9pbnRlciBuZWFyIHRoZSBzaWRlIG9mIHRoZSBjZWxsLCBpbmZvcm1zIHJlc2l6ZSBzZXJ2aWNlLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZHBUYWJsZUNlbGxSZXNpemFibGVdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGREtfRk9DVVNBQkxFX0lURU1fRElSRUNUSVZFLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFBsYXRmb3JtVGFibGVDZWxsUmVzaXphYmxlRGlyZWN0aXZlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZvY3VzYWJsZUl0ZW1EaXJlY3RpdmUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogUGxhdGZvcm1UYWJsZUNlbGxSZXNpemFibGVEaXJlY3RpdmVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVGFibGVDZWxsRGlyZWN0aXZlLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFBsYXRmb3JtVGFibGVDZWxsUmVzaXphYmxlRGlyZWN0aXZlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFBsYXRmb3JtVGFibGVDZWxsUmVzaXphYmxlRGlyZWN0aXZlXG4gICAgZXh0ZW5kcyBUYWJsZUNlbGxEaXJlY3RpdmVcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gICAgLyoqIEZpcnN0IGNvbHVtbiBjYW4gYmUgcmVzaXplZCBvbmx5IGJ5IGl0cyBlbmQgKi9cbiAgICBASW5wdXQoJ2ZkcFRhYmxlQ2VsbFJlc2l6YWJsZScpXG4gICAgc2V0IHJlc2l6YWJsZVNpZGUodmFsdWU6IFRhYmxlQ29sdW1uUmVzaXphYmxlU2lkZSkge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9yZXNpemFibGVTaWRlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIENvbHVtbiBuYW1lICovXG4gICAgQElucHV0KClcbiAgICBjb2x1bW5OYW1lOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2l6YWJsZVNpZGU6IFRhYmxlQ29sdW1uUmVzaXphYmxlU2lkZSA9ICdib3RoJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX2lzUnRsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnRsU2VydmljZT8ucnRsLmdldFZhbHVlKCkgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF90YWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UgPSBpbmplY3QoVGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZSA9IGluamVjdChSdGxTZXJ2aWNlLCB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbW91c2Vtb3ZlJylcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZT8ucmVzaXplSW5Qcm9ncmVzcyAhPT0gdHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoZXZlbnQpID0+IHRoaXMuX2dldFJlc2l6ZXIoZXZlbnQpIHx8IHsgcmVzaXplclBvc2l0aW9uOiAwLCByZXNpemVkQ29sdW1uOiB0aGlzLmNvbHVtbk5hbWUgfSksXG4gICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2LCBjdXJyKSA9PiBlcXVhbChwcmV2LCBjdXJyKSksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5zZXRJbml0aWFsUmVzaXplclBvc2l0aW9uKGRhdGEucmVzaXplclBvc2l0aW9uLCBkYXRhLnJlc2l6ZWRDb2x1bW4pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZnJvbUV2ZW50PEZvY3VzRXZlbnQ+KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZm9jdXMnKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlLnNldEluaXRpYWxSZXNpemVyUG9zaXRpb24oMCwgdGhpcy5jb2x1bW5OYW1lKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbk5hbWUgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlPy5yZWdpc3RlckNvbHVtbkNlbGwodGhpcy5jb2x1bW5OYW1lLCB0aGlzLmVsZW1lbnRSZWYpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZT8udW5yZWdpc3RlckNvbHVtbkNlbGwodGhpcy5jb2x1bW5OYW1lLCB0aGlzLmVsZW1lbnRSZWYpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0UmVzaXplcihldmVudDogTW91c2VFdmVudCk6IHsgcmVzaXplclBvc2l0aW9uOiBudW1iZXI7IHJlc2l6ZWRDb2x1bW46IHN0cmluZyB9IHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGVsUG9zaXRpb24gPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICBsZXQgcmVzaXplclBvc2l0aW9uOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgIGxldCByZXNpemVkQ29sdW1uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgY29uc3QgcG9pbnRlck9uTGVmdCA9IHRoaXMuX2lzUnRsXG4gICAgICAgICAgICA/IGVsUG9zaXRpb24ucmlnaHQgLSBldmVudC5jbGllbnRYIDwgVEFCTEVfQ0VMTF9SRVNJWkFCTEVfVEhSRVNIT0xEX1BYXG4gICAgICAgICAgICA6IGV2ZW50LmNsaWVudFggLSBlbFBvc2l0aW9uLmxlZnQgPCBUQUJMRV9DRUxMX1JFU0laQUJMRV9USFJFU0hPTERfUFg7XG5cbiAgICAgICAgaWYgKHBvaW50ZXJPbkxlZnQgJiYgdGhpcy5fcmVzaXphYmxlU2lkZSAhPT0gJ2VuZCcpIHtcbiAgICAgICAgICAgIHJlc2l6ZXJQb3NpdGlvbiA9IHRoaXMuX2lzUnRsXG4gICAgICAgICAgICAgICAgPyBlbC5wYXJlbnRFbGVtZW50IS5vZmZzZXRXaWR0aCAtIChlbC5vZmZzZXRMZWZ0ICsgZWwub2Zmc2V0V2lkdGgpXG4gICAgICAgICAgICAgICAgOiBlbC5vZmZzZXRMZWZ0O1xuXG4gICAgICAgICAgICByZXNpemVkQ29sdW1uID0gdGhpcy5fdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlLmdldFByZXZpb3VzQ29sdW1uTmFtZSh0aGlzLmNvbHVtbk5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcG9pbnRlck9uUmlnaHQgPSB0aGlzLl9pc1J0bFxuICAgICAgICAgICAgPyBldmVudC5jbGllbnRYIC0gZWxQb3NpdGlvbi5sZWZ0IDwgVEFCTEVfQ0VMTF9SRVNJWkFCTEVfVEhSRVNIT0xEX1BYXG4gICAgICAgICAgICA6IGVsUG9zaXRpb24ucmlnaHQgLSBldmVudC5jbGllbnRYIDwgVEFCTEVfQ0VMTF9SRVNJWkFCTEVfVEhSRVNIT0xEX1BYO1xuXG4gICAgICAgIGlmIChwb2ludGVyT25SaWdodCAmJiB0aGlzLl9yZXNpemFibGVTaWRlICE9PSAnc3RhcnQnKSB7XG4gICAgICAgICAgICByZXNpemVyUG9zaXRpb24gPSB0aGlzLl9pc1J0bFxuICAgICAgICAgICAgICAgID8gZWwucGFyZW50RWxlbWVudCEub2Zmc2V0V2lkdGggLSBlbC5vZmZzZXRMZWZ0XG4gICAgICAgICAgICAgICAgOiBlbC5vZmZzZXRMZWZ0ICsgZWwub2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgICAgIHJlc2l6ZWRDb2x1bW4gPSB0aGlzLmNvbHVtbk5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXJlc2l6ZWRDb2x1bW4pIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgcmVzaXplclBvc2l0aW9uOiByZXNpemVyUG9zaXRpb24hLCByZXNpemVkQ29sdW1uIH07XG4gICAgfVxufVxuIl19
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { Directive, EventEmitter, inject, Input, Output } from '@angular/core';
|
|
2
|
-
import { DestroyedService } from '@fundamental-ngx/cdk/utils';
|
|
3
2
|
import { DataSourceDirective, FD_DATA_SOURCE_TRANSFORMER, isDataSource } from '@fundamental-ngx/cdk/data-source';
|
|
4
3
|
import { BehaviorSubject, Subject, Subscription } from 'rxjs';
|
|
5
|
-
import { filter, startWith
|
|
4
|
+
import { filter, startWith } from 'rxjs/operators';
|
|
6
5
|
import { FDP_TABLE_STATE_DIRECTIVE } from '../constants';
|
|
7
6
|
import { TableDataSourceParser } from '../domain';
|
|
8
7
|
import { TableService } from '../services/table.service';
|
|
8
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export class TableDataSourceDirective extends DataSourceDirective {
|
|
11
11
|
constructor() {
|
|
12
12
|
super(...arguments);
|
|
13
|
-
/** @hidden */
|
|
14
|
-
this._childDsSubscription = new Subscription();
|
|
15
13
|
/** Event emitted when child data source instance being changed. */
|
|
16
14
|
this.childDataSourceChanged = new EventEmitter();
|
|
17
15
|
/** Event emitted when data loading is started. */
|
|
@@ -31,13 +29,13 @@ export class TableDataSourceDirective extends DataSourceDirective {
|
|
|
31
29
|
/** @hidden */
|
|
32
30
|
this._internalChildrenLoadingState = false;
|
|
33
31
|
/** @hidden */
|
|
32
|
+
this._childDsSubscription = new Subscription();
|
|
33
|
+
/** @hidden */
|
|
34
34
|
this.initialState = inject(FDP_TABLE_STATE_DIRECTIVE, {
|
|
35
35
|
optional: true
|
|
36
36
|
});
|
|
37
37
|
/** @hidden */
|
|
38
38
|
this._tableService = inject(TableService);
|
|
39
|
-
/** @hidden */
|
|
40
|
-
this._destroy$ = inject(DestroyedService);
|
|
41
39
|
}
|
|
42
40
|
/**
|
|
43
41
|
* Data source.
|
|
@@ -60,7 +58,7 @@ export class TableDataSourceDirective extends DataSourceDirective {
|
|
|
60
58
|
}
|
|
61
59
|
/** @hidden */
|
|
62
60
|
initializeDataSource() {
|
|
63
|
-
this.dataSourceChanged.pipe(startWith(true),
|
|
61
|
+
this.dataSourceChanged.pipe(startWith(true), takeUntilDestroyed(this._destroyRef)).subscribe(() => {
|
|
64
62
|
this._closeDataSource();
|
|
65
63
|
this._listenToDataSource();
|
|
66
64
|
});
|
|
@@ -96,11 +94,11 @@ export class TableDataSourceDirective extends DataSourceDirective {
|
|
|
96
94
|
this._tableService.setTableLoading(this._table.loadingState);
|
|
97
95
|
}));
|
|
98
96
|
this._childDsSubscription.add(this.childDataSource.dataLoading
|
|
99
|
-
.pipe(filter((state) => !!state),
|
|
97
|
+
.pipe(filter((state) => !!state), takeUntilDestroyed(this._destroyRef))
|
|
100
98
|
.subscribe((loadingStates) => {
|
|
101
99
|
loadingStates.forEach((state) => state.row?.childItemsLoading$.next(state.loading));
|
|
102
100
|
}));
|
|
103
|
-
this._childDsSubscription.add(this.childDataSource.dataChanges.pipe(
|
|
101
|
+
this._childDsSubscription.add(this.childDataSource.dataChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((data) => {
|
|
104
102
|
this.childItems$.next(data);
|
|
105
103
|
}));
|
|
106
104
|
}
|
|
@@ -161,7 +159,6 @@ export class TableDataSourceDirective extends DataSourceDirective {
|
|
|
161
159
|
}
|
|
162
160
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: TableDataSourceDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
163
161
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.0", type: TableDataSourceDirective, isStandalone: true, selector: "[fdpTableDataSource]", inputs: { childDataSource: "childDataSource" }, outputs: { childDataSourceChanged: "childDataSourceChanged", onDataRequested: "onDataRequested", onDataReceived: "onDataReceived" }, providers: [
|
|
164
|
-
DestroyedService,
|
|
165
162
|
{
|
|
166
163
|
provide: FD_DATA_SOURCE_TRANSFORMER,
|
|
167
164
|
useClass: TableDataSourceParser
|
|
@@ -174,7 +171,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
174
171
|
selector: '[fdpTableDataSource]',
|
|
175
172
|
standalone: true,
|
|
176
173
|
providers: [
|
|
177
|
-
DestroyedService,
|
|
178
174
|
{
|
|
179
175
|
provide: FD_DATA_SOURCE_TRANSFORMER,
|
|
180
176
|
useClass: TableDataSourceParser
|
|
@@ -190,4 +186,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
190
186
|
}], onDataReceived: [{
|
|
191
187
|
type: Output
|
|
192
188
|
}] } });
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS1zb3VyY2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3RhYmxlLWhlbHBlcnMvZGlyZWN0aXZlcy90YWJsZS1kYXRhLXNvdXJjZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDBCQUEwQixFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pILE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUF5QyxxQkFBcUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBY3pELE1BQU0sT0FBTyx3QkFBNEIsU0FBUSxtQkFBMEM7SUFYM0Y7O1FBOEJJLGNBQWM7UUFDTix5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRWxELG1FQUFtRTtRQUVuRSwyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWxELGtEQUFrRDtRQUV6QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFcEQsbURBQW1EO1FBRTFDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQVduRCxnQ0FB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U0FDSjs7MkZBRVEsd0JBQXdCO2tCQVhwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1AsZ0JBQWdCO3dCQUNoQjs0QkFDSSxPQUFPLEVBQUUsMEJBQTBCOzRCQUNuQyxRQUFRLEVBQUUscUJBQXFCO3lCQUNsQztxQkFDSjtpQkFDSjs4QkFPTyxlQUFlO3NCQURsQixLQUFLO2dCQW1CTixzQkFBc0I7c0JBRHJCLE1BQU07Z0JBS0UsZUFBZTtzQkFEdkIsTUFBTTtnQkFLRSxjQUFjO3NCQUR0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZXN0cm95ZWRTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZURpcmVjdGl2ZSwgRkRfREFUQV9TT1VSQ0VfVFJBTlNGT1JNRVIsIGlzRGF0YVNvdXJjZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2RhdGEtc291cmNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRkRQX1RBQkxFX1NUQVRFX0RJUkVDVElWRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDaGlsZFRhYmxlRGF0YVNvdXJjZSwgVGFibGVEYXRhU291cmNlLCBUYWJsZURhdGFTb3VyY2VQYXJzZXIgfSBmcm9tICcuLi9kb21haW4nO1xuaW1wb3J0IHsgVGFibGVJbml0aWFsU3RhdGUsIFRhYmxlUm93IH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFRhYmxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuLi90YWJsZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkcFRhYmxlRGF0YVNvdXJjZV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIERlc3Ryb3llZFNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0RBVEFfU09VUkNFX1RSQU5TRk9STUVSLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IFRhYmxlRGF0YVNvdXJjZVBhcnNlclxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZURhdGFTb3VyY2VEaXJlY3RpdmU8VD4gZXh0ZW5kcyBEYXRhU291cmNlRGlyZWN0aXZlPFQsIFRhYmxlRGF0YVNvdXJjZTxUPj4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIERhdGEgc291cmNlLlxuICAgICAqIEBwYXJhbSBzb3VyY2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjaGlsZERhdGFTb3VyY2Uoc291cmNlOiBDaGlsZFRhYmxlRGF0YVNvdXJjZTxUPiB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fY2hpbGREYXRhU291cmNlID0gc291cmNlO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplQ2hpbGREYXRhU291cmNlKCk7XG4gICAgICAgIHRoaXMuY2hpbGREYXRhU291cmNlQ2hhbmdlZC5uZXh0KCk7XG4gICAgfVxuXG4gICAgZ2V0IGNoaWxkRGF0YVNvdXJjZSgpOiBDaGlsZFRhYmxlRGF0YVNvdXJjZTxUPiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hpbGREYXRhU291cmNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2hpbGREYXRhU291cmNlOiBDaGlsZFRhYmxlRGF0YVNvdXJjZTxUPiB8IG51bGw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NoaWxkRHNTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGNoaWxkIGRhdGEgc291cmNlIGluc3RhbmNlIGJlaW5nIGNoYW5nZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgY2hpbGREYXRhU291cmNlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBsb2FkaW5nIGlzIHN0YXJ0ZWQuICovXG4gICAgQE91dHB1dCgpIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHJlYWRvbmx5IG9uRGF0YVJlcXVlc3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBsb2FkaW5nIGlzIGZpbmlzaGVkLiAqL1xuICAgIEBPdXRwdXQoKSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICByZWFkb25seSBvbkRhdGFSZWNlaXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0IHRvdGFsSXRlbXModmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLnRvdGFsSXRlbXMkLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIGdldCB0b3RhbEl0ZW1zKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvdGFsSXRlbXMkLnZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBUb3RhbCBpdGVtcyBjb3VudCBzdHJlYW0uICovXG4gICAgdG90YWxJdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG5cbiAgICAvKiogSXRlbXMgc3RyZWFtLiAqL1xuICAgIGl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VFtdPihbXSk7XG5cbiAgICAvKiogQ2hpbGQgaXRlbXMgc3RyZWFtLiAqL1xuICAgIGNoaWxkSXRlbXMkID0gbmV3IFN1YmplY3Q8TWFwPFRhYmxlUm93PFQ+LCBUW10+PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gZm9yIGRhdGEgc291cmNlIGhhbmRsaW5nICovXG4gICAgcHJpdmF0ZSBfdGFibGVEc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RhYmxlRGF0YVNvdXJjZTogVGFibGVEYXRhU291cmNlPFQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90YWJsZTogVGFibGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9maXJzdExvYWRpbmdEb25lID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pbnRlcm5hbExvYWRpbmdTdGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW50ZXJuYWxDaGlsZHJlbkxvYWRpbmdTdGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxTdGF0ZSA9IGluamVjdDxUYWJsZUluaXRpYWxTdGF0ZT4oRkRQX1RBQkxFX1NUQVRFX0RJUkVDVElWRSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF90YWJsZVNlcnZpY2UgPSBpbmplY3QoVGFibGVTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBpbmplY3QoRGVzdHJveWVkU2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGluaXRpYWxpemVEYXRhU291cmNlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2VDaGFuZ2VkLnBpcGUoc3RhcnRXaXRoKHRydWUpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2xvc2VEYXRhU291cmNlKCk7XG4gICAgICAgICAgICB0aGlzLl9saXN0ZW5Ub0RhdGFTb3VyY2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldFRhYmxlKHRhYmxlOiBUYWJsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZSA9IHRhYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBJbml0aWFsaXplcyB0aGUgY2hpbGQgZGF0YSBzb3VyY2UgdG8gZmV0Y2ggY2hpbGQgcm93cy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXplQ2hpbGREYXRhU291cmNlKCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNEYXRhU291cmNlKHRoaXMuY2hpbGREYXRhU291cmNlKSkge1xuICAgICAgICAgICAgdGhpcy5jaGlsZERhdGFTb3VyY2U/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2NoaWxkRHNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmNoaWxkRGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hpbGREc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgICAgICB0aGlzLl9jaGlsZERzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhU291cmNlLm9uRGF0YVJlcXVlc3RlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxDaGlsZHJlbkxvYWRpbmdTdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGVTZXJ2aWNlLnNldFRhYmxlTG9hZGluZyh0aGlzLl90YWJsZS5sb2FkaW5nU3RhdGUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9jaGlsZERzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhU291cmNlLm9uRGF0YVJlY2VpdmVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcm5hbENoaWxkcmVuTG9hZGluZ1N0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGVTZXJ2aWNlLnNldFRhYmxlTG9hZGluZyh0aGlzLl90YWJsZS5sb2FkaW5nU3RhdGUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9jaGlsZERzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhU291cmNlLmRhdGFMb2FkaW5nXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcigoc3RhdGUpID0+ICEhc3RhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgobG9hZGluZ1N0YXRlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nU3RhdGVzLmZvckVhY2goKHN0YXRlKSA9PiBzdGF0ZS5yb3c/LmNoaWxkSXRlbXNMb2FkaW5nJC5uZXh0KHN0YXRlLmxvYWRpbmcpKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2NoaWxkRHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5jaGlsZERhdGFTb3VyY2UuZGF0YUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRJdGVtcyQubmV4dChkYXRhKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRoaXMgaXMgYSBzaW5nbGUgcG9pbnQgb2YgZGF0YSBlbnRyeSB0byB0aGUgY29tcG9uZW50LiBXZSBkb24ndCB3YW50IHRvIHNldCBkYXRhIG9uIGRpZmZlcmVudFxuICAgICAqIHBsYWNlcy4gSWYgYW55IG5ldyBkYXRhIGNvbWVzIGluLCBvciB5b3UgZG8gYSBzZWFyY2gsIGFuZCB5b3Ugd2FudCB0byBwYXNzIGluaXRpYWwgZGF0YVxuICAgICAqIGl0cyBoZXJlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvRGF0YVNvdXJjZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgICAgICBjb25zdCBkYXRhU291cmNlU3RyZWFtID0gdGhpcy5kYXRhU291cmNlUHJvdmlkZXI7XG4gICAgICAgIGlmIChkYXRhU291cmNlU3RyZWFtID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgW1RhYmxlRGF0YVNvdXJjZV0gc291cmNlIGRpZCBub3QgbWF0Y2ggYW4gQXJyYXksIE9ic2VydmFibGUsIG5vciBEYXRhU291cmNlYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl90YWJsZURzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZWQkLnN1YnNjcmliZSgoaXRlbXMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMkLm5leHQoZGF0YVNvdXJjZVN0cmVhbS5kYXRhUHJvdmlkZXIudG90YWxJdGVtcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyQubmV4dChpdGVtcyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX3RhYmxlRHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgZGF0YVNvdXJjZVN0cmVhbS5vbkRhdGFSZXF1ZXN0ZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25EYXRhUmVxdWVzdGVkLmVtaXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcm5hbExvYWRpbmdTdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGVTZXJ2aWNlLnNldFRhYmxlTG9hZGluZyh0aGlzLl90YWJsZS5sb2FkaW5nU3RhdGUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICBkYXRhU291cmNlU3RyZWFtLm9uRGF0YVJlY2VpdmVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRGF0YVJlY2VpdmVkLmVtaXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcm5hbExvYWRpbmdTdGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpcnN0TG9hZGluZ0RvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlU2VydmljZS5zZXRUYWJsZUxvYWRpbmcodGhpcy5fdGFibGUubG9hZGluZ1N0YXRlKTtcblxuICAgICAgICAgICAgICAgIC8vIFJlc3RvcmUgbm9ybWFsIHBhZ2luYXRpb24gYWZ0ZXIgdGhlIGZpcnN0IGZldGNoIG9mIGRhdGEuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RhYmxlLl9sb2FkUHJldmlvdXNQYWdlcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuX3RhYmxlU2VydmljZS5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlU2VydmljZS5zZXRUYWJsZVN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4ue1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHRoaXMuaW5pdGlhbFN0YXRlPy5pbml0aWFsUGFnZSB8fCBzdGF0ZS5wYWdlLmN1cnJlbnRQYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogdGhpcy5fdGFibGUucGFnZVNpemUgfHwgc3RhdGUucGFnZS5wYWdlU2l6ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlLl9sb2FkUHJldmlvdXNQYWdlcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gaW5pdGlhbCBkYXRhIGZldGNoXG4gICAgICAgIGRhdGFTb3VyY2VTdHJlYW0uZmV0Y2godGhpcy5fdGFibGVTZXJ2aWNlLmdldFRhYmxlU3RhdGUoKSk7XG5cbiAgICAgICAgdGhpcy5fdGFibGVEYXRhU291cmNlID0gZGF0YVNvdXJjZVN0cmVhbTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Nsb3NlRGF0YVNvdXJjZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl90YWJsZURhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3RhYmxlRGF0YVNvdXJjZS5jbG9zZSgpO1xuXG4gICAgICAgIHRoaXMuX3RhYmxlRHNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3RhYmxlRHNTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIH1cbn1cbiJdfQ==
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS1zb3VyY2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL3RhYmxlLWhlbHBlcnMvZGlyZWN0aXZlcy90YWJsZS1kYXRhLXNvdXJjZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDBCQUEwQixFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pILE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6RCxPQUFPLEVBQXlDLHFCQUFxQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXpGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFZaEUsTUFBTSxPQUFPLHdCQUE0QixTQUFRLG1CQUEwQztJQVYzRjs7UUEwQkksbUVBQW1FO1FBRW5FLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFbEQsa0RBQWtEO1FBRXpDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVwRCxtREFBbUQ7UUFFMUMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRW5ELGdDQUFnQztRQUNoQyxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBRTdDLG9CQUFvQjtRQUNwQixXQUFNLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxDQUFDLENBQUM7UUFFdEMsMEJBQTBCO1FBQzFCLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQXlCLENBQUM7UUFLbkQsY0FBYztRQUNkLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUUxQixjQUFjO1FBQ2QsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBRTlCLGNBQWM7UUFDZCxrQ0FBNkIsR0FBRyxLQUFLLENBQUM7UUFLdEMsY0FBYztRQUNOLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFpQmxELGNBQWM7UUFDRyxpQkFBWSxHQUFHLE1BQU0sQ0FBb0IseUJBQXlCLEVBQUU7WUFDakYsUUFBUSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBRUgsY0FBYztRQUNHLGtCQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBMkl6RDtJQXRORzs7O09BR0c7SUFDSCxJQUNJLGVBQWUsQ0FBQyxNQUFzQztRQUN0RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDO1FBQy9CLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDakMsQ0FBQztJQXlDRCxjQUFjO0lBQ2QsSUFBSSxVQUFVLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBZ0JELGNBQWM7SUFDZCxvQkFBb0I7UUFDaEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5RixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELGNBQWM7SUFDZCxRQUFRLENBQUMsS0FBWTtRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssMEJBQTBCO1FBQzlCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUNwQyxJQUFJLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBRXBDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztTQUM1QztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3ZCLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRS9DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNsRCxJQUFJLENBQUMsNkJBQTZCLEdBQUcsSUFBSSxDQUFDO1lBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUVGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNqRCxJQUFJLENBQUMsNkJBQTZCLEdBQUcsS0FBSyxDQUFDO1lBQzNDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUVGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVzthQUMzQixJQUFJLENBQ0QsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQzFCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDdkM7YUFDQSxTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtZQUN6QixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN4RixDQUFDLENBQUMsQ0FDVCxDQUFDO1FBRUYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzNGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxtQkFBbUI7UUFDdkIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRS9DLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ2pELElBQUksZ0JBQWdCLEtBQUssU0FBUyxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsNkVBQTZFLENBQUMsQ0FBQztTQUNsRztRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUNMLENBQUM7UUFFRixJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUN6QixnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzlDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztZQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxDQUNMLENBQUM7UUFDRixJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUN6QixnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzdDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztZQUNuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFN0QsMkRBQTJEO1lBQzNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRTtnQkFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7b0JBQzdCLEdBQUcsS0FBSztvQkFDUixHQUFHO3dCQUNDLElBQUksRUFBRTs0QkFDRixXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXOzRCQUNyRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRO3lCQUN4RDtxQkFDSjtpQkFDSixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7YUFDMUM7UUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO1FBRUYscUJBQXFCO1FBQ3JCLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBQzdDLENBQUM7SUFFRCxjQUFjO0lBQ04sZ0JBQWdCO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDeEIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTlCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0lBQ3JDLENBQUM7OEdBdE5RLHdCQUF3QjtrR0FBeEIsd0JBQXdCLHdQQVB0QjtZQUNQO2dCQUNJLE9BQU8sRUFBRSwwQkFBMEI7Z0JBQ25DLFFBQVEsRUFBRSxxQkFBcUI7YUFDbEM7U0FDSjs7MkZBRVEsd0JBQXdCO2tCQVZwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLDBCQUEwQjs0QkFDbkMsUUFBUSxFQUFFLHFCQUFxQjt5QkFDbEM7cUJBQ0o7aUJBQ0o7OEJBT08sZUFBZTtzQkFEbEIsS0FBSztnQkFhTixzQkFBc0I7c0JBRHJCLE1BQU07Z0JBS0UsZUFBZTtzQkFEdkIsTUFBTTtnQkFLRSxjQUFjO3NCQUR0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlRGlyZWN0aXZlLCBGRF9EQVRBX1NPVVJDRV9UUkFOU0ZPUk1FUiwgaXNEYXRhU291cmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRkRQX1RBQkxFX1NUQVRFX0RJUkVDVElWRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDaGlsZFRhYmxlRGF0YVNvdXJjZSwgVGFibGVEYXRhU291cmNlLCBUYWJsZURhdGFTb3VyY2VQYXJzZXIgfSBmcm9tICcuLi9kb21haW4nO1xuaW1wb3J0IHsgVGFibGVJbml0aWFsU3RhdGUsIFRhYmxlUm93IH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFRhYmxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuLi90YWJsZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkcFRhYmxlRGF0YVNvdXJjZV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0RBVEFfU09VUkNFX1RSQU5TRk9STUVSLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IFRhYmxlRGF0YVNvdXJjZVBhcnNlclxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZURhdGFTb3VyY2VEaXJlY3RpdmU8VD4gZXh0ZW5kcyBEYXRhU291cmNlRGlyZWN0aXZlPFQsIFRhYmxlRGF0YVNvdXJjZTxUPj4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIERhdGEgc291cmNlLlxuICAgICAqIEBwYXJhbSBzb3VyY2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjaGlsZERhdGFTb3VyY2Uoc291cmNlOiBDaGlsZFRhYmxlRGF0YVNvdXJjZTxUPiB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fY2hpbGREYXRhU291cmNlID0gc291cmNlO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplQ2hpbGREYXRhU291cmNlKCk7XG4gICAgICAgIHRoaXMuY2hpbGREYXRhU291cmNlQ2hhbmdlZC5uZXh0KCk7XG4gICAgfVxuXG4gICAgZ2V0IGNoaWxkRGF0YVNvdXJjZSgpOiBDaGlsZFRhYmxlRGF0YVNvdXJjZTxUPiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hpbGREYXRhU291cmNlO1xuICAgIH1cblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gY2hpbGQgZGF0YSBzb3VyY2UgaW5zdGFuY2UgYmVpbmcgY2hhbmdlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBjaGlsZERhdGFTb3VyY2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBkYXRhIGxvYWRpbmcgaXMgc3RhcnRlZC4gKi9cbiAgICBAT3V0cHV0KCkgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcmVhZG9ubHkgb25EYXRhUmVxdWVzdGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBkYXRhIGxvYWRpbmcgaXMgZmluaXNoZWQuICovXG4gICAgQE91dHB1dCgpIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHJlYWRvbmx5IG9uRGF0YVJlY2VpdmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIFRvdGFsIGl0ZW1zIGNvdW50IHN0cmVhbS4gKi9cbiAgICB0b3RhbEl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcblxuICAgIC8qKiBJdGVtcyBzdHJlYW0uICovXG4gICAgaXRlbXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUW10+KFtdKTtcblxuICAgIC8qKiBDaGlsZCBpdGVtcyBzdHJlYW0uICovXG4gICAgY2hpbGRJdGVtcyQgPSBuZXcgU3ViamVjdDxNYXA8VGFibGVSb3c8VD4sIFRbXT4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90YWJsZURhdGFTb3VyY2U6IFRhYmxlRGF0YVNvdXJjZTxUPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2ZpcnN0TG9hZGluZ0RvbmUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2ludGVybmFsTG9hZGluZ1N0YXRlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pbnRlcm5hbENoaWxkcmVuTG9hZGluZ1N0YXRlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NoaWxkRGF0YVNvdXJjZTogQ2hpbGRUYWJsZURhdGFTb3VyY2U8VD4gfCBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jaGlsZERzU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXQgdG90YWxJdGVtcyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMudG90YWxJdGVtcyQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IHRvdGFsSXRlbXMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG90YWxJdGVtcyQudmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gZm9yIGRhdGEgc291cmNlIGhhbmRsaW5nICovXG4gICAgcHJpdmF0ZSBfdGFibGVEc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGFibGU6IFRhYmxlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxTdGF0ZSA9IGluamVjdDxUYWJsZUluaXRpYWxTdGF0ZT4oRkRQX1RBQkxFX1NUQVRFX0RJUkVDVElWRSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF90YWJsZVNlcnZpY2UgPSBpbmplY3QoVGFibGVTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaW5pdGlhbGl6ZURhdGFTb3VyY2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZUNoYW5nZWQucGlwZShzdGFydFdpdGgodHJ1ZSksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2Nsb3NlRGF0YVNvdXJjZSgpO1xuICAgICAgICAgICAgdGhpcy5fbGlzdGVuVG9EYXRhU291cmNlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX3RhYmxlRHNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzZXRUYWJsZSh0YWJsZTogVGFibGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGUgPSB0YWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogSW5pdGlhbGl6ZXMgdGhlIGNoaWxkIGRhdGEgc291cmNlIHRvIGZldGNoIGNoaWxkIHJvd3MuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZUNoaWxkRGF0YVNvdXJjZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzRGF0YVNvdXJjZSh0aGlzLmNoaWxkRGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhU291cmNlPy51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgICAgICB0aGlzLl9jaGlsZERzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5jaGlsZERhdGFTb3VyY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NoaWxkRHNTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5fY2hpbGREc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLmNoaWxkRGF0YVNvdXJjZS5vbkRhdGFSZXF1ZXN0ZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVybmFsQ2hpbGRyZW5Mb2FkaW5nU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlU2VydmljZS5zZXRUYWJsZUxvYWRpbmcodGhpcy5fdGFibGUubG9hZGluZ1N0YXRlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fY2hpbGREc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLmNoaWxkRGF0YVNvdXJjZS5vbkRhdGFSZWNlaXZlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxDaGlsZHJlbkxvYWRpbmdTdGF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlU2VydmljZS5zZXRUYWJsZUxvYWRpbmcodGhpcy5fdGFibGUubG9hZGluZ1N0YXRlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fY2hpbGREc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLmNoaWxkRGF0YVNvdXJjZS5kYXRhTG9hZGluZ1xuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKHN0YXRlKSA9PiAhIXN0YXRlKSxcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGxvYWRpbmdTdGF0ZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZ1N0YXRlcy5mb3JFYWNoKChzdGF0ZSkgPT4gc3RhdGUucm93Py5jaGlsZEl0ZW1zTG9hZGluZyQubmV4dChzdGF0ZS5sb2FkaW5nKSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9jaGlsZERzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhU291cmNlLmRhdGFDaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkSXRlbXMkLm5leHQoZGF0YSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUaGlzIGlzIGEgc2luZ2xlIHBvaW50IG9mIGRhdGEgZW50cnkgdG8gdGhlIGNvbXBvbmVudC4gV2UgZG9uJ3Qgd2FudCB0byBzZXQgZGF0YSBvbiBkaWZmZXJlbnRcbiAgICAgKiBwbGFjZXMuIElmIGFueSBuZXcgZGF0YSBjb21lcyBpbiwgb3IgeW91IGRvIGEgc2VhcmNoLCBhbmQgeW91IHdhbnQgdG8gcGFzcyBpbml0aWFsIGRhdGFcbiAgICAgKiBpdHMgaGVyZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0RhdGFTb3VyY2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlRHNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3RhYmxlRHNTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgZGF0YVNvdXJjZVN0cmVhbSA9IHRoaXMuZGF0YVNvdXJjZVByb3ZpZGVyO1xuICAgICAgICBpZiAoZGF0YVNvdXJjZVN0cmVhbSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtUYWJsZURhdGFTb3VyY2VdIHNvdXJjZSBkaWQgbm90IG1hdGNoIGFuIEFycmF5LCBPYnNlcnZhYmxlLCBub3IgRGF0YVNvdXJjZWApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICB0aGlzLmRhdGFDaGFuZ2VkJC5zdWJzY3JpYmUoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zJC5uZXh0KGRhdGFTb3VyY2VTdHJlYW0uZGF0YVByb3ZpZGVyLnRvdGFsSXRlbXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMkLm5leHQoaXRlbXMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl90YWJsZURzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIGRhdGFTb3VyY2VTdHJlYW0ub25EYXRhUmVxdWVzdGVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRGF0YVJlcXVlc3RlZC5lbWl0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxMb2FkaW5nU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlU2VydmljZS5zZXRUYWJsZUxvYWRpbmcodGhpcy5fdGFibGUubG9hZGluZ1N0YXRlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3RhYmxlRHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgZGF0YVNvdXJjZVN0cmVhbS5vbkRhdGFSZWNlaXZlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRhdGFSZWNlaXZlZC5lbWl0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxMb2FkaW5nU3RhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9maXJzdExvYWRpbmdEb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJsZVNlcnZpY2Uuc2V0VGFibGVMb2FkaW5nKHRoaXMuX3RhYmxlLmxvYWRpbmdTdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAvLyBSZXN0b3JlIG5vcm1hbCBwYWdpbmF0aW9uIGFmdGVyIHRoZSBmaXJzdCBmZXRjaCBvZiBkYXRhLlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl90YWJsZS5fbG9hZFByZXZpb3VzUGFnZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLl90YWJsZVNlcnZpY2UuZ2V0VGFibGVTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90YWJsZVNlcnZpY2Uuc2V0VGFibGVTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiB0aGlzLmluaXRpYWxTdGF0ZT8uaW5pdGlhbFBhZ2UgfHwgc3RhdGUucGFnZS5jdXJyZW50UGFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVNpemU6IHRoaXMuX3RhYmxlLnBhZ2VTaXplIHx8IHN0YXRlLnBhZ2UucGFnZVNpemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90YWJsZS5fbG9hZFByZXZpb3VzUGFnZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIGluaXRpYWwgZGF0YSBmZXRjaFxuICAgICAgICBkYXRhU291cmNlU3RyZWFtLmZldGNoKHRoaXMuX3RhYmxlU2VydmljZS5nZXRUYWJsZVN0YXRlKCkpO1xuXG4gICAgICAgIHRoaXMuX3RhYmxlRGF0YVNvdXJjZSA9IGRhdGFTb3VyY2VTdHJlYW07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jbG9zZURhdGFTb3VyY2UoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fdGFibGVEYXRhU291cmNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl90YWJsZURhdGFTb3VyY2UuY2xvc2UoKTtcblxuICAgICAgICB0aGlzLl90YWJsZURzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl90YWJsZURzU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICB9XG59XG4iXX0=
|