igniteui-angular 15.1.27 → 15.1.29

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.
@@ -162,10 +162,10 @@ export class IgxPivotRowComponent extends IgxRowDirective {
162
162
  }
163
163
  }
164
164
  IgxPivotRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: IgxPivotRowComponent, deps: [{ token: IGX_GRID_BASE }, { token: i1.IgxGridSelectionService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
165
- IgxPivotRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: IgxPivotRowComponent, selector: "igx-pivot-row", inputs: { selected: "selected", data: "data" }, host: { properties: { "attr.aria-selected": "this.selected" } }, providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxPivotRowComponent) }], usesInheritance: true, ngImport: i0, template: "<ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\"\n [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForSizePropName]='\"calcPixelWidth\"'\n [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth'\n [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n <igx-grid-cell #cell class=\"igx-grid__td igx-grid__td--fw\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [class.igx-grid__td--bool]=\"col.dataType === 'boolean'\"\n [ngClass]=\"this.getCellClass(col) | igxPivotCellStyleClasses:data[col.field]:data:getColumnData(col):viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:pivotAggregationData[col.field]:pivotAggregationData:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\" [column]=\"col\"\n [formatter]=\"col.formatter\" [intRow]=\"this\" [active]=\"isCellActive(col.visibleIndex)\"\n [style.min-height.px]=\"cellHeight\" [rowData]=\"data\" [columnData]='getColumnData(col)'\n [style.min-width]=\"col.width\" [style.max-width]=\"col.width\"\n [style.flex-basis]=\"col.width\" [width]=\"col.getCellWidth()\" [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"pivotAggregationData[col.field] | dataMapper:col.field:grid.pipeTrigger:pivotAggregationData[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\" [lastSearchInfo]=\"grid.lastSearchInfo\"\n [cellSelectionMode]=\"grid.cellSelection\" [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-cell>\n</ng-template>\n\n<ng-template #rowSelectorBaseTemplate>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox [tabindex]=\"-1\" [readonly]=\"true\" [checked]=\"selected\" [disableRipple]=\"true\" [disabled]=\"deleted\"\n [disableTransitions]=\"grid.disableTransitions\" [aria-label]=\"rowCheckboxAriaLabel\">\n </igx-checkbox>\n </div>\n</ng-template>\n\n", dependencies: [{ kind: "component", type: i2.IgxGridCellComponent, selector: "igx-grid-cell", inputs: ["column", "intRow", "row", "rowData", "columnData", "cellTemplate", "cellValidationErrorTemplate", "pinnedIndicator", "value", "formatter", "visibleColumnIndex", "cellSelectionMode", "lastSearchInfo", "lastPinned", "firstPinned", "editMode", "width", "active", "displayPinnedChip"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.IgxGridForOfDirective, selector: "[igxGridFor][igxGridForOf]", inputs: ["igxGridForOf", "igxGridForOfUniqueSizeCache", "igxGridForOfVariableSizes"], outputs: ["dataChanging"] }, { kind: "component", type: i5.IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["id", "labelId", "value", "name", "tabindex", "labelPosition", "disableRipple", "required", "aria-labelledby", "aria-label", "indeterminate", "checked", "disabled", "invalid", "readonly", "disableTransitions"], outputs: ["change"] }, { kind: "pipe", type: i6.IgxGridNotGroupedPipe, name: "igxNotGrouped" }, { kind: "pipe", type: i6.IgxGridCellStylesPipe, name: "igxCellStyles" }, { kind: "pipe", type: i6.IgxGridDataMapperPipe, name: "dataMapper" }, { kind: "pipe", type: i6.IgxGridTransactionStatePipe, name: "transactionState" }, { kind: "pipe", type: i7.IgxPivotGridCellStyleClassesPipe, name: "igxPivotCellStyleClasses" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
165
+ IgxPivotRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: IgxPivotRowComponent, selector: "igx-pivot-row", inputs: { selected: "selected", data: "data" }, host: { properties: { "attr.aria-selected": "this.selected" } }, providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxPivotRowComponent) }], usesInheritance: true, ngImport: i0, template: "<ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\"\n [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForSizePropName]='\"calcPixelWidth\"'\n [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth'\n [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n <igx-grid-cell #cell class=\"igx-grid__td igx-grid__td--fw\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [class.igx-grid__td--bool]=\"col.dataType === 'boolean'\"\n [ngClass]=\"this.getCellClass(col) | igxPivotCellStyleClasses:data[col.field]:data:getColumnData(col):viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:pivotAggregationData[col.field]:pivotAggregationData:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\" [column]=\"col\"\n [formatter]=\"col.formatter\" [intRow]=\"this\" [active]=\"isCellActive(col.visibleIndex)\"\n [style.min-height.px]=\"cellHeight\" [rowData]=\"data\" [columnData]='getColumnData(col)'\n [style.min-width]=\"col.resolvedWidth\" [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\" [width]=\"col.getCellWidth()\" [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"pivotAggregationData[col.field] | dataMapper:col.field:grid.pipeTrigger:pivotAggregationData[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\" [lastSearchInfo]=\"grid.lastSearchInfo\"\n [cellSelectionMode]=\"grid.cellSelection\" [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-cell>\n</ng-template>\n\n<ng-template #rowSelectorBaseTemplate>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox [tabindex]=\"-1\" [readonly]=\"true\" [checked]=\"selected\" [disableRipple]=\"true\" [disabled]=\"deleted\"\n [disableTransitions]=\"grid.disableTransitions\" [aria-label]=\"rowCheckboxAriaLabel\">\n </igx-checkbox>\n </div>\n</ng-template>\n\n", dependencies: [{ kind: "component", type: i2.IgxGridCellComponent, selector: "igx-grid-cell", inputs: ["column", "intRow", "row", "rowData", "columnData", "cellTemplate", "cellValidationErrorTemplate", "pinnedIndicator", "value", "formatter", "visibleColumnIndex", "cellSelectionMode", "lastSearchInfo", "lastPinned", "firstPinned", "editMode", "width", "active", "displayPinnedChip"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.IgxGridForOfDirective, selector: "[igxGridFor][igxGridForOf]", inputs: ["igxGridForOf", "igxGridForOfUniqueSizeCache", "igxGridForOfVariableSizes"], outputs: ["dataChanging"] }, { kind: "component", type: i5.IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["id", "labelId", "value", "name", "tabindex", "labelPosition", "disableRipple", "required", "aria-labelledby", "aria-label", "indeterminate", "checked", "disabled", "invalid", "readonly", "disableTransitions"], outputs: ["change"] }, { kind: "pipe", type: i6.IgxGridNotGroupedPipe, name: "igxNotGrouped" }, { kind: "pipe", type: i6.IgxGridCellStylesPipe, name: "igxCellStyles" }, { kind: "pipe", type: i6.IgxGridDataMapperPipe, name: "dataMapper" }, { kind: "pipe", type: i6.IgxGridTransactionStatePipe, name: "transactionState" }, { kind: "pipe", type: i7.IgxPivotGridCellStyleClassesPipe, name: "igxPivotCellStyleClasses" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
166
166
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: IgxPivotRowComponent, decorators: [{
167
167
  type: Component,
168
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-pivot-row', providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxPivotRowComponent) }], template: "<ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\"\n [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForSizePropName]='\"calcPixelWidth\"'\n [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth'\n [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n <igx-grid-cell #cell class=\"igx-grid__td igx-grid__td--fw\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [class.igx-grid__td--bool]=\"col.dataType === 'boolean'\"\n [ngClass]=\"this.getCellClass(col) | igxPivotCellStyleClasses:data[col.field]:data:getColumnData(col):viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:pivotAggregationData[col.field]:pivotAggregationData:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\" [column]=\"col\"\n [formatter]=\"col.formatter\" [intRow]=\"this\" [active]=\"isCellActive(col.visibleIndex)\"\n [style.min-height.px]=\"cellHeight\" [rowData]=\"data\" [columnData]='getColumnData(col)'\n [style.min-width]=\"col.width\" [style.max-width]=\"col.width\"\n [style.flex-basis]=\"col.width\" [width]=\"col.getCellWidth()\" [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"pivotAggregationData[col.field] | dataMapper:col.field:grid.pipeTrigger:pivotAggregationData[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\" [lastSearchInfo]=\"grid.lastSearchInfo\"\n [cellSelectionMode]=\"grid.cellSelection\" [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-cell>\n</ng-template>\n\n<ng-template #rowSelectorBaseTemplate>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox [tabindex]=\"-1\" [readonly]=\"true\" [checked]=\"selected\" [disableRipple]=\"true\" [disabled]=\"deleted\"\n [disableTransitions]=\"grid.disableTransitions\" [aria-label]=\"rowCheckboxAriaLabel\">\n </igx-checkbox>\n </div>\n</ng-template>\n\n" }]
168
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-pivot-row', providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxPivotRowComponent) }], template: "<ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\"\n [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForSizePropName]='\"calcPixelWidth\"'\n [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth'\n [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n <igx-grid-cell #cell class=\"igx-grid__td igx-grid__td--fw\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [class.igx-grid__td--bool]=\"col.dataType === 'boolean'\"\n [ngClass]=\"this.getCellClass(col) | igxPivotCellStyleClasses:data[col.field]:data:getColumnData(col):viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:pivotAggregationData[col.field]:pivotAggregationData:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\" [column]=\"col\"\n [formatter]=\"col.formatter\" [intRow]=\"this\" [active]=\"isCellActive(col.visibleIndex)\"\n [style.min-height.px]=\"cellHeight\" [rowData]=\"data\" [columnData]='getColumnData(col)'\n [style.min-width]=\"col.resolvedWidth\" [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\" [width]=\"col.getCellWidth()\" [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"pivotAggregationData[col.field] | dataMapper:col.field:grid.pipeTrigger:pivotAggregationData[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\" [lastSearchInfo]=\"grid.lastSearchInfo\"\n [cellSelectionMode]=\"grid.cellSelection\" [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n </igx-grid-cell>\n</ng-template>\n\n<ng-template #rowSelectorBaseTemplate>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox [tabindex]=\"-1\" [readonly]=\"true\" [checked]=\"selected\" [disableRipple]=\"true\" [disabled]=\"deleted\"\n [disableTransitions]=\"grid.disableTransitions\" [aria-label]=\"rowCheckboxAriaLabel\">\n </igx-checkbox>\n </div>\n</ng-template>\n\n" }]
169
169
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
170
170
  type: Inject,
171
171
  args: [IGX_GRID_BASE]
@@ -177,4 +177,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
177
177
  }], data: [{
178
178
  type: Input
179
179
  }] } });
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3Qtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9waXZvdC1ncmlkL3Bpdm90LXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcGl2b3QtZ3JpZC9waXZvdC1yb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBRVQsVUFBVSxFQUNWLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUM3QixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLDBCQUEwQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7QUFRekMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGVBQWU7SUFDckQ7O09BRUc7SUFDSCxJQUVvQixRQUFRO1FBQ3hCLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN2QixLQUFLLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN0RCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDL0MsVUFBVSxHQUFHLElBQUksQ0FBQzthQUNyQjtTQUNKO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQzJDLElBQW1CLEVBQzFELGdCQUF5QyxF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QWxCaEIsb0JBQW9CLHlKQUZsQixDQUFDLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxpRENuQmxHLDYyRUErQkE7MkZEVmEsb0JBQW9CO2tCQU5oQyxTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsZUFBZSxhQUVkLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDLEVBQUUsQ0FBQzs7MEJBb0J6RixNQUFNOzJCQUFDLGFBQWE7MEtBWkwsUUFBUTtzQkFGM0IsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBNkdiLElBQUk7c0JBRHZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5wdXQsIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2NvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSUdYX0dSSURfQkFTRSwgUGl2b3RHcmlkVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZ3hSb3dEaXJlY3RpdmUgfSBmcm9tICcuLi9yb3cuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEdyaWRTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IElQaXZvdEdyaWRDb2x1bW4sIElQaXZvdEdyaWRSZWNvcmQgfSBmcm9tICcuL3Bpdm90LWdyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBpdm90VXRpbCB9IGZyb20gJy4vcGl2b3QtdXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnaWd4LXBpdm90LXJvdycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Bpdm90LXJvdy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJZ3hSb3dEaXJlY3RpdmUsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElneFBpdm90Um93Q29tcG9uZW50KSB9XVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hQaXZvdFJvd0NvbXBvbmVudCBleHRlbmRzIElneFJvd0RpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtc2VsZWN0ZWQnKVxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBpc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IHJvd0RpbSBvZiB0aGlzLmRhdGEuZGltZW5zaW9ucykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gUGl2b3RVdGlsLmdldFJlY29yZEtleSh0aGlzLmRhdGEsIHJvd0RpbSk7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmlzUGl2b3RSb3dTZWxlY3RlZChrZXkpKSB7XG4gICAgICAgICAgICAgICAgaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzU2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoSUdYX0dSSURfQkFTRSkgcHVibGljIG92ZXJyaWRlIGdyaWQ6IFBpdm90R3JpZFR5cGUsXG4gICAgICAgIHNlbGVjdGlvblNlcnZpY2U6IElneEdyaWRTZWxlY3Rpb25TZXJ2aWNlLFxuICAgICAgICBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIHZpZXdSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZ3JpZCwgc2VsZWN0aW9uU2VydmljZSwgZWxlbWVudCwgY2RyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB2aWV3SW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgYWRkUm93VUkoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGluRWRpdE1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHNldCBwaW5uZWQoX3ZhbHVlOiBib29sZWFuKSB7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBwaW5uZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGRlbGV0ZSgpIHtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGJlZ2luQWRkUm93KCkge1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgdXBkYXRlKF92YWx1ZTogYW55KSB7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBwaW4oKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIEBoaWRkZW5cbiAgICAqIEBpbnRlcm5hbFxuICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHVucGluKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiAgVGhlIHBpdm90IHJlY29yZCBkYXRhIHBhc3NlZCB0byB0aGUgcm93IGNvbXBvbmVudC5cbiAgICAqXG4gICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgKiAvLyBnZXQgdGhlIHBpdm90IHJvdyBkYXRhIGZvciB0aGUgZmlyc3Qgc2VsZWN0ZWQgcm93XG4gICAgKiBsZXQgc2VsZWN0ZWRSb3dEYXRhID0gdGhpcy5ncmlkLnNlbGVjdGVkUm93c1swXS5kYXRhO1xuICAgICogYGBgXG4gICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgZGF0YSgpOiBJUGl2b3RHcmlkUmVjb3JkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHNldCBkYXRhKHY6IElQaXZvdEdyaWRSZWNvcmQpIHtcbiAgICAgICAgdGhpcy5fZGF0YSA9IHY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcGl2b3RBZ2dyZWdhdGlvbkRhdGEoKSB7XG4gICAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9ucyA9IHRoaXMuZGF0YS5hZ2dyZWdhdGlvblZhbHVlcztcbiAgICAgICAgY29uc3Qgb2JqID0ge307XG4gICAgICAgIGFnZ3JlZ2F0aW9ucy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2VsbENsYXNzKGNvbDogSWd4Q29sdW1uQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZ3JpZC52YWx1ZXM7XG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzWzBdLnN0eWxlcztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb2xOYW1lID0gY29sLmZpZWxkLnNwbGl0KHRoaXMuZ3JpZC5waXZvdEtleXMuY29sdW1uRGltZW5zaW9uU2VwYXJhdG9yKTtcbiAgICAgICAgY29uc3QgbWVhc3VyZU5hbWUgPSBjb2xOYW1lW2NvbE5hbWUubGVuZ3RoIC0gMV07XG4gICAgICAgIHJldHVybiB2YWx1ZXMuZmluZCh2ID0+IHYubWVtYmVyID09PSBtZWFzdXJlTmFtZSk/LnN0eWxlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgaXNDZWxsQWN0aXZlKHZpc2libGVDb2x1bW5JbmRleCkge1xuICAgICAgICBjb25zdCBuYXYgPSB0aGlzLmdyaWQubmF2aWdhdGlvblxuICAgICAgICBjb25zdCBub2RlID0gbmF2LmFjdGl2ZU5vZGU7XG4gICAgICAgIHJldHVybiBub2RlICYmIE9iamVjdC5rZXlzKG5vZGUpLmxlbmd0aCAhPT0gMCA/XG4gICAgICAgICAgICAhbmF2LmlzUm93SGVhZGVyQWN0aXZlICYmXG4gICAgICAgICAgICBzdXBlci5pc0NlbGxBY3RpdmUodmlzaWJsZUNvbHVtbkluZGV4KSA6XG4gICAgICAgICAgICBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29sdW1uRGF0YShjb2w6IElneENvbHVtbkNvbXBvbmVudCkgOiBJUGl2b3RHcmlkQ29sdW1uIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IGNvbC5maWVsZC5zcGxpdCh0aGlzLmdyaWQucGl2b3RLZXlzLmNvbHVtbkRpbWVuc2lvblNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IGtleVZhbHVlTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICAgICAgY29uc3QgY29sRGltZW5zaW9ucyA9IFBpdm90VXRpbC5mbGF0dGVuKHRoaXMuZ3JpZC5jb2x1bW5EaW1lbnNpb25zKTtcbiAgICAgICAgZm9yIChjb25zdCBkaW0gb2YgY29sRGltZW5zaW9ucykge1xuICAgICAgICAgICAga2V5VmFsdWVNYXAuc2V0KGRpbS5tZW1iZXJOYW1lLCBwYXRoLnNoaWZ0KCkpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwaXZvdFZhbHVlO1xuICAgICAgICBpZiAodGhpcy5ncmlkLmhhc011bHRpcGxlVmFsdWVzKSB7XG4gICAgICAgICAgICBwaXZvdFZhbHVlID0gdGhpcy5ncmlkLnZhbHVlcy5maW5kKHggPT4geC5tZW1iZXIgPT09IHBhdGguc2hpZnQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwaXZvdFZhbHVlID0gdGhpcy5ncmlkLnZhbHVlcyA/IHRoaXMuZ3JpZC52YWx1ZXNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpZWxkOiBjb2wuZmllbGQsXG4gICAgICAgICAgICBkaW1lbnNpb25zOiB0aGlzLmdyaWQuY29sdW1uRGltZW5zaW9ucyxcbiAgICAgICAgICAgIGRpbWVuc2lvblZhbHVlczoga2V5VmFsdWVNYXAsXG4gICAgICAgICAgICB2YWx1ZTogcGl2b3RWYWx1ZVxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSBpZ3hHcmlkRm9yIGxldC1jb2wgW2lneEdyaWRGb3JPZl09XCJ1bnBpbm5lZENvbHVtbnMgfCBpZ3hOb3RHcm91cGVkXCJcbiAgICBbaWd4Rm9yU2Nyb2xsQ29udGFpbmVyXT1cImdyaWQucGFyZW50VmlydERpclwiIGxldC1jb2xJbmRleD1cImluZGV4XCIgW2lneEZvclNpemVQcm9wTmFtZV09J1wiY2FsY1BpeGVsV2lkdGhcIidcbiAgICBbaWd4Rm9yU2Nyb2xsT3JpZW50YXRpb25dPVwiJ2hvcml6b250YWwnXCIgW2lneEZvckNvbnRhaW5lclNpemVdPSdncmlkLnVucGlubmVkV2lkdGgnXG4gICAgW2lneEZvclRyYWNrQnldPSdncmlkLnRyYWNrQ29sdW1uQ2hhbmdlcycgI2lneERpclJlZj5cbiAgICA8aWd4LWdyaWQtY2VsbCAjY2VsbCBjbGFzcz1cImlneC1ncmlkX190ZCBpZ3gtZ3JpZF9fdGQtLWZ3XCJcbiAgICAgICAgW2NsYXNzLmlneC1ncmlkX190ZC0tZWRpdGVkXT1cImtleSB8IHRyYW5zYWN0aW9uU3RhdGU6Y29sLmZpZWxkOmdyaWQucm93RWRpdGFibGU6Z3JpZC50cmFuc2FjdGlvbnM6Z3JpZC5waXBlVHJpZ2dlcjpncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2UuY2VsbDpncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2Uucm93XCJcblxuICAgICAgICBbY2xhc3MuaWd4LWdyaWRfX3RkLS1udW1iZXJdPVwiY29sLmRhdGFUeXBlID09PSAnbnVtYmVyJyB8fCBjb2wuZGF0YVR5cGUgPT09ICdwZXJjZW50JyB8fCBjb2wuZGF0YVR5cGUgPT09ICdjdXJyZW5jeSdcIlxuICAgICAgICBbY2xhc3MuaWd4LWdyaWRfX3RkLS1ib29sXT1cImNvbC5kYXRhVHlwZSA9PT0gJ2Jvb2xlYW4nXCJcbiAgICAgICAgW25nQ2xhc3NdPVwidGhpcy5nZXRDZWxsQ2xhc3MoY29sKSB8IGlneFBpdm90Q2VsbFN0eWxlQ2xhc3NlczpkYXRhW2NvbC5maWVsZF06ZGF0YTpnZXRDb2x1bW5EYXRhKGNvbCk6dmlld0luZGV4OmdyaWQucGlwZVRyaWdnZXJcIlxuICAgICAgICBbbmdTdHlsZV09XCJjb2wuY2VsbFN0eWxlcyB8IGlneENlbGxTdHlsZXM6cGl2b3RBZ2dyZWdhdGlvbkRhdGFbY29sLmZpZWxkXTpwaXZvdEFnZ3JlZ2F0aW9uRGF0YTpjb2wuZmllbGQ6dmlld0luZGV4OmdyaWQucGlwZVRyaWdnZXJcIlxuICAgICAgICBbZWRpdE1vZGVdPVwiY29sLmVkaXRhYmxlICYmIHRoaXMuZ3JpZC5jcnVkU2VydmljZS50YXJnZXRJbkVkaXQoaW5kZXgsIGNvbC5pbmRleClcIiBbY29sdW1uXT1cImNvbFwiXG4gICAgICAgIFtmb3JtYXR0ZXJdPVwiY29sLmZvcm1hdHRlclwiIFtpbnRSb3ddPVwidGhpc1wiIFthY3RpdmVdPVwiaXNDZWxsQWN0aXZlKGNvbC52aXNpYmxlSW5kZXgpXCJcbiAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiY2VsbEhlaWdodFwiIFtyb3dEYXRhXT1cImRhdGFcIiBbY29sdW1uRGF0YV09J2dldENvbHVtbkRhdGEoY29sKSdcbiAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2wud2lkdGhcIiBbc3R5bGUubWF4LXdpZHRoXT1cImNvbC53aWR0aFwiXG4gICAgICAgIFtzdHlsZS5mbGV4LWJhc2lzXT1cImNvbC53aWR0aFwiIFt3aWR0aF09XCJjb2wuZ2V0Q2VsbFdpZHRoKClcIiBbdmlzaWJsZUNvbHVtbkluZGV4XT1cImNvbC52aXNpYmxlSW5kZXhcIlxuICAgICAgICBbdmFsdWVdPVwicGl2b3RBZ2dyZWdhdGlvbkRhdGFbY29sLmZpZWxkXSB8IGRhdGFNYXBwZXI6Y29sLmZpZWxkOmdyaWQucGlwZVRyaWdnZXI6cGl2b3RBZ2dyZWdhdGlvbkRhdGFbY29sLmZpZWxkXTpjb2wuaGFzTmVzdGVkUGF0aFwiXG4gICAgICAgIFtjZWxsVGVtcGxhdGVdPVwiY29sLmJvZHlUZW1wbGF0ZVwiIFtsYXN0U2VhcmNoSW5mb109XCJncmlkLmxhc3RTZWFyY2hJbmZvXCJcbiAgICAgICAgW2NlbGxTZWxlY3Rpb25Nb2RlXT1cImdyaWQuY2VsbFNlbGVjdGlvblwiIFtkaXNwbGF5UGlubmVkQ2hpcF09XCJzaG91bGREaXNwbGF5UGlubmVkQ2hpcChjb2wudmlzaWJsZUluZGV4KVwiXG4gICAgICAgIChwb2ludGVyZG93bik9XCJncmlkLm5hdmlnYXRpb24uZm9jdXNPdXRSb3dIZWFkZXIoJGV2ZW50KVwiPlxuICAgIDwvaWd4LWdyaWQtY2VsbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcm93U2VsZWN0b3JCYXNlVGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImlneC1ncmlkX19jYngtcGFkZGluZ1wiPlxuICAgICAgICA8aWd4LWNoZWNrYm94IFt0YWJpbmRleF09XCItMVwiIFtyZWFkb25seV09XCJ0cnVlXCIgW2NoZWNrZWRdPVwic2VsZWN0ZWRcIiBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cImRlbGV0ZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVUcmFuc2l0aW9uc109XCJncmlkLmRpc2FibGVUcmFuc2l0aW9uc1wiIFthcmlhLWxhYmVsXT1cInJvd0NoZWNrYm94QXJpYUxhYmVsXCI+XG4gICAgICAgIDwvaWd4LWNoZWNrYm94PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuIl19
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3Qtcm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9waXZvdC1ncmlkL3Bpdm90LXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcGl2b3QtZ3JpZC9waXZvdC1yb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBRVQsVUFBVSxFQUNWLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUM3QixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFpQixNQUFNLDBCQUEwQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7QUFRekMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGVBQWU7SUFDckQ7O09BRUc7SUFDSCxJQUVvQixRQUFRO1FBQ3hCLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN2QixLQUFLLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN0RCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDL0MsVUFBVSxHQUFHLElBQUksQ0FBQzthQUNyQjtTQUNKO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQzJDLElBQW1CLEVBQzFELGdCQUF5QyxFQUN6QyxPQUFnQyxFQUNoQyxHQUFzQixFQUNaLE9BQXlCO1FBRW5DLEtBQUssQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBTkwsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUloRCxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQWF2Qzs7O1dBR0c7UUFDYSxhQUFRLEdBQUcsS0FBSyxDQUFDO0lBZGpDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFvQixTQUFTO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBUUQ7OztPQUdHO0lBQ0gsSUFBb0IsUUFBUTtRQUN4QixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBb0IsVUFBVTtRQUMxQixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBb0IsTUFBTSxDQUFDLE1BQWU7SUFDMUMsQ0FBQztJQUVELElBQW9CLE1BQU07UUFDdEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7T0FHRztJQUNhLE1BQU07SUFDdEIsQ0FBQztJQUVEOzs7T0FHRztJQUNhLFdBQVc7SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNhLE1BQU0sQ0FBQyxNQUFXO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDYSxHQUFHO1FBQ2YsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7TUFHRTtJQUNjLEtBQUs7UUFDakIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7Ozs7O01BT0U7SUFDRixJQUNvQixJQUFJO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBb0IsSUFBSSxDQUFDLENBQW1CO1FBQ3hDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFXLG9CQUFvQjtRQUMzQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ2pELE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNmLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDaEMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVNLFlBQVksQ0FBQyxHQUF1QjtRQUN2QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNoQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztTQUMzQjtRQUNELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDOUUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDOUQsQ0FBQztJQUVlLFlBQVksQ0FBQyxrQkFBa0I7UUFDM0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUE7UUFDaEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUM1QixPQUFPLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMzQyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUI7Z0JBQ3RCLEtBQUssQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLEtBQUssQ0FBQztJQUNkLENBQUM7SUFFTSxhQUFhLENBQUMsR0FBdUI7UUFDeEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUMzRSxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUM5QyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRSxLQUFLLE1BQU0sR0FBRyxJQUFJLGFBQWEsRUFBRTtZQUM3QixXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDakQ7UUFDRCxJQUFJLFVBQVUsQ0FBQztRQUNmLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUM3QixVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUN0RTthQUFNO1lBQ0gsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ25FO1FBQ0QsT0FBTztZQUNILEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztZQUNoQixVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7WUFDdEMsZUFBZSxFQUFFLFdBQVc7WUFDNUIsS0FBSyxFQUFFLFVBQVU7U0FDcEIsQ0FBQztJQUNOLENBQUM7O2lIQTdLUSxvQkFBb0Isa0JBa0JqQixhQUFhO3FHQWxCaEIsb0JBQW9CLHlKQUZsQixDQUFDLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxpRENuQmxHLHE0RUErQkE7MkZEVmEsb0JBQW9CO2tCQU5oQyxTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsZUFBZSxhQUVkLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDLEVBQUUsQ0FBQzs7MEJBb0J6RixNQUFNOzJCQUFDLGFBQWE7MEtBWkwsUUFBUTtzQkFGM0IsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBNkdiLElBQUk7c0JBRHZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5wdXQsIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2NvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSUdYX0dSSURfQkFTRSwgUGl2b3RHcmlkVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZ3hSb3dEaXJlY3RpdmUgfSBmcm9tICcuLi9yb3cuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEdyaWRTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IElQaXZvdEdyaWRDb2x1bW4sIElQaXZvdEdyaWRSZWNvcmQgfSBmcm9tICcuL3Bpdm90LWdyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBpdm90VXRpbCB9IGZyb20gJy4vcGl2b3QtdXRpbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnaWd4LXBpdm90LXJvdycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Bpdm90LXJvdy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJZ3hSb3dEaXJlY3RpdmUsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElneFBpdm90Um93Q29tcG9uZW50KSB9XVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hQaXZvdFJvd0NvbXBvbmVudCBleHRlbmRzIElneFJvd0RpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtc2VsZWN0ZWQnKVxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGxldCBpc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IHJvd0RpbSBvZiB0aGlzLmRhdGEuZGltZW5zaW9ucykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gUGl2b3RVdGlsLmdldFJlY29yZEtleSh0aGlzLmRhdGEsIHJvd0RpbSk7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmlzUGl2b3RSb3dTZWxlY3RlZChrZXkpKSB7XG4gICAgICAgICAgICAgICAgaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGlzU2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoSUdYX0dSSURfQkFTRSkgcHVibGljIG92ZXJyaWRlIGdyaWQ6IFBpdm90R3JpZFR5cGUsXG4gICAgICAgIHNlbGVjdGlvblNlcnZpY2U6IElneEdyaWRTZWxlY3Rpb25TZXJ2aWNlLFxuICAgICAgICBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIHZpZXdSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZ3JpZCwgc2VsZWN0aW9uU2VydmljZSwgZWxlbWVudCwgY2RyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCB2aWV3SW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgYWRkUm93VUkoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGluRWRpdE1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHNldCBwaW5uZWQoX3ZhbHVlOiBib29sZWFuKSB7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBwaW5uZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGRlbGV0ZSgpIHtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGJlZ2luQWRkUm93KCkge1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgdXBkYXRlKF92YWx1ZTogYW55KSB7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBwaW4oKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAqIEBoaWRkZW5cbiAgICAqIEBpbnRlcm5hbFxuICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHVucGluKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiAgVGhlIHBpdm90IHJlY29yZCBkYXRhIHBhc3NlZCB0byB0aGUgcm93IGNvbXBvbmVudC5cbiAgICAqXG4gICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgKiAvLyBnZXQgdGhlIHBpdm90IHJvdyBkYXRhIGZvciB0aGUgZmlyc3Qgc2VsZWN0ZWQgcm93XG4gICAgKiBsZXQgc2VsZWN0ZWRSb3dEYXRhID0gdGhpcy5ncmlkLnNlbGVjdGVkUm93c1swXS5kYXRhO1xuICAgICogYGBgXG4gICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgZGF0YSgpOiBJUGl2b3RHcmlkUmVjb3JkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHNldCBkYXRhKHY6IElQaXZvdEdyaWRSZWNvcmQpIHtcbiAgICAgICAgdGhpcy5fZGF0YSA9IHY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcGl2b3RBZ2dyZWdhdGlvbkRhdGEoKSB7XG4gICAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9ucyA9IHRoaXMuZGF0YS5hZ2dyZWdhdGlvblZhbHVlcztcbiAgICAgICAgY29uc3Qgb2JqID0ge307XG4gICAgICAgIGFnZ3JlZ2F0aW9ucy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2VsbENsYXNzKGNvbDogSWd4Q29sdW1uQ29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZ3JpZC52YWx1ZXM7XG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzWzBdLnN0eWxlcztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb2xOYW1lID0gY29sLmZpZWxkLnNwbGl0KHRoaXMuZ3JpZC5waXZvdEtleXMuY29sdW1uRGltZW5zaW9uU2VwYXJhdG9yKTtcbiAgICAgICAgY29uc3QgbWVhc3VyZU5hbWUgPSBjb2xOYW1lW2NvbE5hbWUubGVuZ3RoIC0gMV07XG4gICAgICAgIHJldHVybiB2YWx1ZXMuZmluZCh2ID0+IHYubWVtYmVyID09PSBtZWFzdXJlTmFtZSk/LnN0eWxlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgaXNDZWxsQWN0aXZlKHZpc2libGVDb2x1bW5JbmRleCkge1xuICAgICAgICBjb25zdCBuYXYgPSB0aGlzLmdyaWQubmF2aWdhdGlvblxuICAgICAgICBjb25zdCBub2RlID0gbmF2LmFjdGl2ZU5vZGU7XG4gICAgICAgIHJldHVybiBub2RlICYmIE9iamVjdC5rZXlzKG5vZGUpLmxlbmd0aCAhPT0gMCA/XG4gICAgICAgICAgICAhbmF2LmlzUm93SGVhZGVyQWN0aXZlICYmXG4gICAgICAgICAgICBzdXBlci5pc0NlbGxBY3RpdmUodmlzaWJsZUNvbHVtbkluZGV4KSA6XG4gICAgICAgICAgICBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29sdW1uRGF0YShjb2w6IElneENvbHVtbkNvbXBvbmVudCkgOiBJUGl2b3RHcmlkQ29sdW1uIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IGNvbC5maWVsZC5zcGxpdCh0aGlzLmdyaWQucGl2b3RLZXlzLmNvbHVtbkRpbWVuc2lvblNlcGFyYXRvcik7XG4gICAgICAgIGNvbnN0IGtleVZhbHVlTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICAgICAgY29uc3QgY29sRGltZW5zaW9ucyA9IFBpdm90VXRpbC5mbGF0dGVuKHRoaXMuZ3JpZC5jb2x1bW5EaW1lbnNpb25zKTtcbiAgICAgICAgZm9yIChjb25zdCBkaW0gb2YgY29sRGltZW5zaW9ucykge1xuICAgICAgICAgICAga2V5VmFsdWVNYXAuc2V0KGRpbS5tZW1iZXJOYW1lLCBwYXRoLnNoaWZ0KCkpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwaXZvdFZhbHVlO1xuICAgICAgICBpZiAodGhpcy5ncmlkLmhhc011bHRpcGxlVmFsdWVzKSB7XG4gICAgICAgICAgICBwaXZvdFZhbHVlID0gdGhpcy5ncmlkLnZhbHVlcy5maW5kKHggPT4geC5tZW1iZXIgPT09IHBhdGguc2hpZnQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwaXZvdFZhbHVlID0gdGhpcy5ncmlkLnZhbHVlcyA/IHRoaXMuZ3JpZC52YWx1ZXNbMF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpZWxkOiBjb2wuZmllbGQsXG4gICAgICAgICAgICBkaW1lbnNpb25zOiB0aGlzLmdyaWQuY29sdW1uRGltZW5zaW9ucyxcbiAgICAgICAgICAgIGRpbWVuc2lvblZhbHVlczoga2V5VmFsdWVNYXAsXG4gICAgICAgICAgICB2YWx1ZTogcGl2b3RWYWx1ZVxuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSBpZ3hHcmlkRm9yIGxldC1jb2wgW2lneEdyaWRGb3JPZl09XCJ1bnBpbm5lZENvbHVtbnMgfCBpZ3hOb3RHcm91cGVkXCJcbiAgICBbaWd4Rm9yU2Nyb2xsQ29udGFpbmVyXT1cImdyaWQucGFyZW50VmlydERpclwiIGxldC1jb2xJbmRleD1cImluZGV4XCIgW2lneEZvclNpemVQcm9wTmFtZV09J1wiY2FsY1BpeGVsV2lkdGhcIidcbiAgICBbaWd4Rm9yU2Nyb2xsT3JpZW50YXRpb25dPVwiJ2hvcml6b250YWwnXCIgW2lneEZvckNvbnRhaW5lclNpemVdPSdncmlkLnVucGlubmVkV2lkdGgnXG4gICAgW2lneEZvclRyYWNrQnldPSdncmlkLnRyYWNrQ29sdW1uQ2hhbmdlcycgI2lneERpclJlZj5cbiAgICA8aWd4LWdyaWQtY2VsbCAjY2VsbCBjbGFzcz1cImlneC1ncmlkX190ZCBpZ3gtZ3JpZF9fdGQtLWZ3XCJcbiAgICAgICAgW2NsYXNzLmlneC1ncmlkX190ZC0tZWRpdGVkXT1cImtleSB8IHRyYW5zYWN0aW9uU3RhdGU6Y29sLmZpZWxkOmdyaWQucm93RWRpdGFibGU6Z3JpZC50cmFuc2FjdGlvbnM6Z3JpZC5waXBlVHJpZ2dlcjpncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2UuY2VsbDpncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2Uucm93XCJcblxuICAgICAgICBbY2xhc3MuaWd4LWdyaWRfX3RkLS1udW1iZXJdPVwiY29sLmRhdGFUeXBlID09PSAnbnVtYmVyJyB8fCBjb2wuZGF0YVR5cGUgPT09ICdwZXJjZW50JyB8fCBjb2wuZGF0YVR5cGUgPT09ICdjdXJyZW5jeSdcIlxuICAgICAgICBbY2xhc3MuaWd4LWdyaWRfX3RkLS1ib29sXT1cImNvbC5kYXRhVHlwZSA9PT0gJ2Jvb2xlYW4nXCJcbiAgICAgICAgW25nQ2xhc3NdPVwidGhpcy5nZXRDZWxsQ2xhc3MoY29sKSB8IGlneFBpdm90Q2VsbFN0eWxlQ2xhc3NlczpkYXRhW2NvbC5maWVsZF06ZGF0YTpnZXRDb2x1bW5EYXRhKGNvbCk6dmlld0luZGV4OmdyaWQucGlwZVRyaWdnZXJcIlxuICAgICAgICBbbmdTdHlsZV09XCJjb2wuY2VsbFN0eWxlcyB8IGlneENlbGxTdHlsZXM6cGl2b3RBZ2dyZWdhdGlvbkRhdGFbY29sLmZpZWxkXTpwaXZvdEFnZ3JlZ2F0aW9uRGF0YTpjb2wuZmllbGQ6dmlld0luZGV4OmdyaWQucGlwZVRyaWdnZXJcIlxuICAgICAgICBbZWRpdE1vZGVdPVwiY29sLmVkaXRhYmxlICYmIHRoaXMuZ3JpZC5jcnVkU2VydmljZS50YXJnZXRJbkVkaXQoaW5kZXgsIGNvbC5pbmRleClcIiBbY29sdW1uXT1cImNvbFwiXG4gICAgICAgIFtmb3JtYXR0ZXJdPVwiY29sLmZvcm1hdHRlclwiIFtpbnRSb3ddPVwidGhpc1wiIFthY3RpdmVdPVwiaXNDZWxsQWN0aXZlKGNvbC52aXNpYmxlSW5kZXgpXCJcbiAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiY2VsbEhlaWdodFwiIFtyb3dEYXRhXT1cImRhdGFcIiBbY29sdW1uRGF0YV09J2dldENvbHVtbkRhdGEoY29sKSdcbiAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2wucmVzb2x2ZWRXaWR0aFwiIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sLnJlc29sdmVkV2lkdGhcIlxuICAgICAgICBbc3R5bGUuZmxleC1iYXNpc109XCJjb2wucmVzb2x2ZWRXaWR0aFwiIFt3aWR0aF09XCJjb2wuZ2V0Q2VsbFdpZHRoKClcIiBbdmlzaWJsZUNvbHVtbkluZGV4XT1cImNvbC52aXNpYmxlSW5kZXhcIlxuICAgICAgICBbdmFsdWVdPVwicGl2b3RBZ2dyZWdhdGlvbkRhdGFbY29sLmZpZWxkXSB8IGRhdGFNYXBwZXI6Y29sLmZpZWxkOmdyaWQucGlwZVRyaWdnZXI6cGl2b3RBZ2dyZWdhdGlvbkRhdGFbY29sLmZpZWxkXTpjb2wuaGFzTmVzdGVkUGF0aFwiXG4gICAgICAgIFtjZWxsVGVtcGxhdGVdPVwiY29sLmJvZHlUZW1wbGF0ZVwiIFtsYXN0U2VhcmNoSW5mb109XCJncmlkLmxhc3RTZWFyY2hJbmZvXCJcbiAgICAgICAgW2NlbGxTZWxlY3Rpb25Nb2RlXT1cImdyaWQuY2VsbFNlbGVjdGlvblwiIFtkaXNwbGF5UGlubmVkQ2hpcF09XCJzaG91bGREaXNwbGF5UGlubmVkQ2hpcChjb2wudmlzaWJsZUluZGV4KVwiXG4gICAgICAgIChwb2ludGVyZG93bik9XCJncmlkLm5hdmlnYXRpb24uZm9jdXNPdXRSb3dIZWFkZXIoJGV2ZW50KVwiPlxuICAgIDwvaWd4LWdyaWQtY2VsbD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcm93U2VsZWN0b3JCYXNlVGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImlneC1ncmlkX19jYngtcGFkZGluZ1wiPlxuICAgICAgICA8aWd4LWNoZWNrYm94IFt0YWJpbmRleF09XCItMVwiIFtyZWFkb25seV09XCJ0cnVlXCIgW2NoZWNrZWRdPVwic2VsZWN0ZWRcIiBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cImRlbGV0ZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVUcmFuc2l0aW9uc109XCJncmlkLmRpc2FibGVUcmFuc2l0aW9uc1wiIFthcmlhLWxhYmVsXT1cInJvd0NoZWNrYm94QXJpYUxhYmVsXCI+XG4gICAgICAgIDwvaWd4LWNoZWNrYm94PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuIl19
@@ -70,10 +70,10 @@ export class IgxSummaryRowComponent {
70
70
  }
71
71
  }
72
72
  IgxSummaryRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: IgxSummaryRowComponent, deps: [{ token: IGX_GRID_BASE }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
73
- IgxSummaryRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: IgxSummaryRowComponent, selector: "igx-grid-summary-row", inputs: { summaries: "summaries", gridID: "gridID", index: "index", firstCellIndentation: "firstCellIndentation" }, host: { properties: { "attr.data-rowIndex": "this.dataRowIndex" } }, providers: [IgxForOfSyncService], viewQueries: [{ propertyName: "virtDirRow", first: true, predicate: ["igxDirRef"], descendants: true, read: IgxGridForOfDirective }, { propertyName: "_summaryCells", predicate: IgxSummaryCellComponent, descendants: true, read: IgxSummaryCellComponent }], ngImport: i0, template: "<ng-container *ngIf=\"summaries.size\">\n <ng-container *ngIf=\"grid.summariesMargin\">\n <div\n class=\"igx-grid__summaries-patch\"\n [style.min-width.px]=\"grid.summariesMargin\"\n [style.flex-basis.px]=\"grid.summariesMargin\"\n (pointerdown)=\"$event.preventDefault()\"\n ></div>\n </ng-container>\n <ng-container *ngIf=\"pinnedColumns.length > 0 && grid.isPinningToStart\">\n <ng-container *ngTemplateOutlet=\"summaryCellTemplate; context: getContext(this)\"></ng-container>\n </ng-container>\n <ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\" [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]=\"grid.unpinnedWidth\" [igxForTrackBy]=\"grid.trackColumnChanges\" [igxForSizePropName]='\"calcPixelWidth\"' #igxDirRef>\n <igx-grid-summary-cell\n class=\"igx-grid-summary igx-grid-summary--fw\"\n role=\"cell\"\n [class.igx-grid-summary--cosy]=\"grid.displayDensity === 'cosy'\"\n [class.igx-grid-summary--compact]=\"grid.displayDensity === 'compact'\"\n [class.igx-grid-summary--empty]=\"!col.hasSummary\"\n [class.igx-grid-summary--pinned-last]=\"col.isLastPinned\"\n [column]=\"col\"\n [rowIndex]=\"index\"\n [firstCellIndentation]=\"firstCellIndentation\"\n [summaryResults]=\"getColumnSummaries(col.field)\"\n [summaryTemplate]=\"col.summaryTemplate\"\n [hasSummary]=\"col.hasSummary\"\n [density]=\"grid.displayDensity\"\n [summaryFormatter]=\"col.summaryFormatter\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [style.max-height.px]=\"minHeight\"\n [style.min-height.px]=\"minHeight\"\n [style.min-width]=\"col.getCellWidth()\"\n [style.max-width]=\"col.getCellWidth()\"\n [style.flex-basis]=\"col.getCellWidth()\">\n </igx-grid-summary-cell>\n </ng-template>\n <ng-container *ngIf=\"pinnedColumns.length > 0 && !grid.isPinningToStart\">\n <ng-container *ngTemplateOutlet=\"summaryCellTemplate; context: getContext(this)\"></ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #summaryCellTemplate let-col>\n <igx-grid-summary-cell *ngFor=\"let col of pinnedColumns | igxNotGrouped\"\n role=\"cell\"\n class=\"igx-grid-summary igx-grid-summary--fw igx-grid-summary--pinned\"\n [class.igx-grid-summary--cosy]=\"grid.displayDensity === 'cosy'\"\n [class.igx-grid-summary--compact]=\"grid.displayDensity === 'compact'\"\n [class.igx-grid-summary--empty]=\"!col.hasSummary\"\n [class.igx-grid-summary--pinned-first]=\"col.isFirstPinned\"\n [class.igx-grid-summary--pinned-last]=\"col.isLastPinned\"\n [column]=\"col\"\n [firstCellIndentation]=\"firstCellIndentation\"\n [rowIndex]=\"index\"\n [summaryResults]=\"getColumnSummaries(col.field)\"\n [summaryTemplate]=\"col.summaryTemplate\"\n [hasSummary]=\"col.hasSummary\"\n [density]=\"grid.displayDensity\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [style.max-height.px]=\"minHeight\"\n [style.min-height.px]=\"minHeight\"\n [style.min-width]=\"col.getCellWidth()\"\n [style.max-width]=\"col.getCellWidth()\"\n [style.flex-basis]=\"col.getCellWidth()\"\n [style.left]=\"col.rightPinnedOffset\">\n </igx-grid-summary-cell>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.IgxGridForOfDirective, selector: "[igxGridFor][igxGridForOf]", inputs: ["igxGridForOf", "igxGridForOfUniqueSizeCache", "igxGridForOfVariableSizes"], outputs: ["dataChanging"] }, { kind: "component", type: i3.IgxSummaryCellComponent, selector: "igx-grid-summary-cell", inputs: ["summaryResults", "column", "firstCellIndentation", "hasSummary", "density", "summaryFormatter", "summaryTemplate", "active", "rowIndex"] }, { kind: "pipe", type: i4.IgxGridNotGroupedPipe, name: "igxNotGrouped" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
73
+ IgxSummaryRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: IgxSummaryRowComponent, selector: "igx-grid-summary-row", inputs: { summaries: "summaries", gridID: "gridID", index: "index", firstCellIndentation: "firstCellIndentation" }, host: { properties: { "attr.data-rowIndex": "this.dataRowIndex" } }, providers: [IgxForOfSyncService], viewQueries: [{ propertyName: "virtDirRow", first: true, predicate: ["igxDirRef"], descendants: true, read: IgxGridForOfDirective }, { propertyName: "_summaryCells", predicate: IgxSummaryCellComponent, descendants: true, read: IgxSummaryCellComponent }], ngImport: i0, template: "<ng-container *ngIf=\"summaries.size\">\n <ng-container *ngIf=\"grid.summariesMargin\">\n <div\n class=\"igx-grid__summaries-patch\"\n [style.min-width.px]=\"grid.summariesMargin\"\n [style.flex-basis.px]=\"grid.summariesMargin\"\n (pointerdown)=\"$event.preventDefault()\"\n ></div>\n </ng-container>\n <ng-container *ngIf=\"pinnedColumns.length > 0 && grid.isPinningToStart\">\n <ng-container *ngTemplateOutlet=\"summaryCellTemplate; context: getContext(this)\"></ng-container>\n </ng-container>\n <ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\" [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]=\"grid.unpinnedWidth\" [igxForTrackBy]=\"grid.trackColumnChanges\" [igxForSizePropName]='\"calcPixelWidth\"' #igxDirRef>\n <igx-grid-summary-cell\n class=\"igx-grid-summary igx-grid-summary--fw\"\n role=\"cell\"\n [class.igx-grid-summary--cosy]=\"grid.displayDensity === 'cosy'\"\n [class.igx-grid-summary--compact]=\"grid.displayDensity === 'compact'\"\n [class.igx-grid-summary--empty]=\"!col.hasSummary\"\n [class.igx-grid-summary--pinned-last]=\"col.isLastPinned\"\n [column]=\"col\"\n [rowIndex]=\"index\"\n [firstCellIndentation]=\"firstCellIndentation\"\n [summaryResults]=\"getColumnSummaries(col.field)\"\n [summaryTemplate]=\"col.summaryTemplate\"\n [hasSummary]=\"col.hasSummary\"\n [density]=\"grid.displayDensity\"\n [summaryFormatter]=\"col.summaryFormatter\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [style.max-height.px]=\"minHeight\"\n [style.min-height.px]=\"minHeight\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\">\n </igx-grid-summary-cell>\n </ng-template>\n <ng-container *ngIf=\"pinnedColumns.length > 0 && !grid.isPinningToStart\">\n <ng-container *ngTemplateOutlet=\"summaryCellTemplate; context: getContext(this)\"></ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #summaryCellTemplate let-col>\n <igx-grid-summary-cell *ngFor=\"let col of pinnedColumns | igxNotGrouped\"\n role=\"cell\"\n class=\"igx-grid-summary igx-grid-summary--fw igx-grid-summary--pinned\"\n [class.igx-grid-summary--cosy]=\"grid.displayDensity === 'cosy'\"\n [class.igx-grid-summary--compact]=\"grid.displayDensity === 'compact'\"\n [class.igx-grid-summary--empty]=\"!col.hasSummary\"\n [class.igx-grid-summary--pinned-first]=\"col.isFirstPinned\"\n [class.igx-grid-summary--pinned-last]=\"col.isLastPinned\"\n [column]=\"col\"\n [firstCellIndentation]=\"firstCellIndentation\"\n [rowIndex]=\"index\"\n [summaryResults]=\"getColumnSummaries(col.field)\"\n [summaryTemplate]=\"col.summaryTemplate\"\n [hasSummary]=\"col.hasSummary\"\n [density]=\"grid.displayDensity\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [style.max-height.px]=\"minHeight\"\n [style.min-height.px]=\"minHeight\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\"\n [style.left]=\"col.rightPinnedOffset\">\n </igx-grid-summary-cell>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.IgxGridForOfDirective, selector: "[igxGridFor][igxGridForOf]", inputs: ["igxGridForOf", "igxGridForOfUniqueSizeCache", "igxGridForOfVariableSizes"], outputs: ["dataChanging"] }, { kind: "component", type: i3.IgxSummaryCellComponent, selector: "igx-grid-summary-cell", inputs: ["summaryResults", "column", "firstCellIndentation", "hasSummary", "density", "summaryFormatter", "summaryTemplate", "active", "rowIndex"] }, { kind: "pipe", type: i4.IgxGridNotGroupedPipe, name: "igxNotGrouped" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
74
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: IgxSummaryRowComponent, decorators: [{
75
75
  type: Component,
76
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-grid-summary-row', providers: [IgxForOfSyncService], template: "<ng-container *ngIf=\"summaries.size\">\n <ng-container *ngIf=\"grid.summariesMargin\">\n <div\n class=\"igx-grid__summaries-patch\"\n [style.min-width.px]=\"grid.summariesMargin\"\n [style.flex-basis.px]=\"grid.summariesMargin\"\n (pointerdown)=\"$event.preventDefault()\"\n ></div>\n </ng-container>\n <ng-container *ngIf=\"pinnedColumns.length > 0 && grid.isPinningToStart\">\n <ng-container *ngTemplateOutlet=\"summaryCellTemplate; context: getContext(this)\"></ng-container>\n </ng-container>\n <ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\" [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]=\"grid.unpinnedWidth\" [igxForTrackBy]=\"grid.trackColumnChanges\" [igxForSizePropName]='\"calcPixelWidth\"' #igxDirRef>\n <igx-grid-summary-cell\n class=\"igx-grid-summary igx-grid-summary--fw\"\n role=\"cell\"\n [class.igx-grid-summary--cosy]=\"grid.displayDensity === 'cosy'\"\n [class.igx-grid-summary--compact]=\"grid.displayDensity === 'compact'\"\n [class.igx-grid-summary--empty]=\"!col.hasSummary\"\n [class.igx-grid-summary--pinned-last]=\"col.isLastPinned\"\n [column]=\"col\"\n [rowIndex]=\"index\"\n [firstCellIndentation]=\"firstCellIndentation\"\n [summaryResults]=\"getColumnSummaries(col.field)\"\n [summaryTemplate]=\"col.summaryTemplate\"\n [hasSummary]=\"col.hasSummary\"\n [density]=\"grid.displayDensity\"\n [summaryFormatter]=\"col.summaryFormatter\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [style.max-height.px]=\"minHeight\"\n [style.min-height.px]=\"minHeight\"\n [style.min-width]=\"col.getCellWidth()\"\n [style.max-width]=\"col.getCellWidth()\"\n [style.flex-basis]=\"col.getCellWidth()\">\n </igx-grid-summary-cell>\n </ng-template>\n <ng-container *ngIf=\"pinnedColumns.length > 0 && !grid.isPinningToStart\">\n <ng-container *ngTemplateOutlet=\"summaryCellTemplate; context: getContext(this)\"></ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #summaryCellTemplate let-col>\n <igx-grid-summary-cell *ngFor=\"let col of pinnedColumns | igxNotGrouped\"\n role=\"cell\"\n class=\"igx-grid-summary igx-grid-summary--fw igx-grid-summary--pinned\"\n [class.igx-grid-summary--cosy]=\"grid.displayDensity === 'cosy'\"\n [class.igx-grid-summary--compact]=\"grid.displayDensity === 'compact'\"\n [class.igx-grid-summary--empty]=\"!col.hasSummary\"\n [class.igx-grid-summary--pinned-first]=\"col.isFirstPinned\"\n [class.igx-grid-summary--pinned-last]=\"col.isLastPinned\"\n [column]=\"col\"\n [firstCellIndentation]=\"firstCellIndentation\"\n [rowIndex]=\"index\"\n [summaryResults]=\"getColumnSummaries(col.field)\"\n [summaryTemplate]=\"col.summaryTemplate\"\n [hasSummary]=\"col.hasSummary\"\n [density]=\"grid.displayDensity\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [style.max-height.px]=\"minHeight\"\n [style.min-height.px]=\"minHeight\"\n [style.min-width]=\"col.getCellWidth()\"\n [style.max-width]=\"col.getCellWidth()\"\n [style.flex-basis]=\"col.getCellWidth()\"\n [style.left]=\"col.rightPinnedOffset\">\n </igx-grid-summary-cell>\n</ng-template>\n" }]
76
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-grid-summary-row', providers: [IgxForOfSyncService], template: "<ng-container *ngIf=\"summaries.size\">\n <ng-container *ngIf=\"grid.summariesMargin\">\n <div\n class=\"igx-grid__summaries-patch\"\n [style.min-width.px]=\"grid.summariesMargin\"\n [style.flex-basis.px]=\"grid.summariesMargin\"\n (pointerdown)=\"$event.preventDefault()\"\n ></div>\n </ng-container>\n <ng-container *ngIf=\"pinnedColumns.length > 0 && grid.isPinningToStart\">\n <ng-container *ngTemplateOutlet=\"summaryCellTemplate; context: getContext(this)\"></ng-container>\n </ng-container>\n <ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\" [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]=\"grid.unpinnedWidth\" [igxForTrackBy]=\"grid.trackColumnChanges\" [igxForSizePropName]='\"calcPixelWidth\"' #igxDirRef>\n <igx-grid-summary-cell\n class=\"igx-grid-summary igx-grid-summary--fw\"\n role=\"cell\"\n [class.igx-grid-summary--cosy]=\"grid.displayDensity === 'cosy'\"\n [class.igx-grid-summary--compact]=\"grid.displayDensity === 'compact'\"\n [class.igx-grid-summary--empty]=\"!col.hasSummary\"\n [class.igx-grid-summary--pinned-last]=\"col.isLastPinned\"\n [column]=\"col\"\n [rowIndex]=\"index\"\n [firstCellIndentation]=\"firstCellIndentation\"\n [summaryResults]=\"getColumnSummaries(col.field)\"\n [summaryTemplate]=\"col.summaryTemplate\"\n [hasSummary]=\"col.hasSummary\"\n [density]=\"grid.displayDensity\"\n [summaryFormatter]=\"col.summaryFormatter\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [style.max-height.px]=\"minHeight\"\n [style.min-height.px]=\"minHeight\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\">\n </igx-grid-summary-cell>\n </ng-template>\n <ng-container *ngIf=\"pinnedColumns.length > 0 && !grid.isPinningToStart\">\n <ng-container *ngTemplateOutlet=\"summaryCellTemplate; context: getContext(this)\"></ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #summaryCellTemplate let-col>\n <igx-grid-summary-cell *ngFor=\"let col of pinnedColumns | igxNotGrouped\"\n role=\"cell\"\n class=\"igx-grid-summary igx-grid-summary--fw igx-grid-summary--pinned\"\n [class.igx-grid-summary--cosy]=\"grid.displayDensity === 'cosy'\"\n [class.igx-grid-summary--compact]=\"grid.displayDensity === 'compact'\"\n [class.igx-grid-summary--empty]=\"!col.hasSummary\"\n [class.igx-grid-summary--pinned-first]=\"col.isFirstPinned\"\n [class.igx-grid-summary--pinned-last]=\"col.isLastPinned\"\n [column]=\"col\"\n [firstCellIndentation]=\"firstCellIndentation\"\n [rowIndex]=\"index\"\n [summaryResults]=\"getColumnSummaries(col.field)\"\n [summaryTemplate]=\"col.summaryTemplate\"\n [hasSummary]=\"col.hasSummary\"\n [density]=\"grid.displayDensity\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [style.max-height.px]=\"minHeight\"\n [style.min-height.px]=\"minHeight\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\"\n [style.left]=\"col.rightPinnedOffset\">\n </igx-grid-summary-cell>\n</ng-template>\n" }]
77
77
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
78
78
  type: Inject,
79
79
  args: [IGX_GRID_BASE]
@@ -95,4 +95,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
95
95
  type: ViewChild,
96
96
  args: ['igxDirRef', { read: IgxGridForOfDirective }]
97
97
  }] } });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VtbWFyeS1yb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3N1bW1hcmllcy9zdW1tYXJ5LXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvc3VtbWFyaWVzL3N1bW1hcnktcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFlBQVksRUFDWixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFFVCx1QkFBdUIsRUFHdkIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2xGLE9BQU8sRUFBd0IsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQVMvRSxNQUFNLE9BQU8sc0JBQXNCO0lBYy9CLElBQ1csWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFLRCxJQUFXLFlBQVk7UUFDbkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxTQUFTLEVBQTJCLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDckIsT0FBTyxHQUFHLENBQUM7U0FDZDtRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxRSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQVcsWUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDO0lBUWxDLFlBQTBDLElBQWMsRUFDckMsT0FBZ0MsRUFDaEMsR0FBc0I7UUFGQyxTQUFJLEdBQUosSUFBSSxDQUFVO1FBQ3JDLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBQ2hDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBakNsQyx5QkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBQztJQWlDVyxDQUFDO0lBRXRDLFNBQVM7UUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsVUFBa0I7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTFDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxZQUFZLENBQUMsa0JBQWtCO1FBQ2xDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN4RixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLGVBQWU7UUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNyQyxDQUFDO0lBRU0sVUFBVSxDQUFDLEdBQUc7UUFDakIsT0FBTztZQUNILFNBQVMsRUFBRSxHQUFHO1NBQ2pCLENBQUM7SUFDTixDQUFDOzttSEExRlEsc0JBQXNCLGtCQTJDWCxhQUFhO3VHQTNDeEIsc0JBQXNCLHdPQUZwQixDQUFDLG1CQUFtQixDQUFDLDhHQTBDQSxxQkFBcUIsZ0RBakJ2Qyx1QkFBdUIsMkJBQVUsdUJBQXVCLDZCQ2pEMUUsMm1IQWtFQTsyRkR4Q2Esc0JBQXNCO2tCQU5sQyxTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsc0JBQXNCLGFBRXJCLENBQUMsbUJBQW1CLENBQUM7OzBCQTZDbkIsTUFBTTsyQkFBQyxhQUFhO3FHQXhDMUIsU0FBUztzQkFEZixLQUFLO2dCQUlDLE1BQU07c0JBRFosS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsb0JBQW9CO3NCQUQxQixLQUFLO2dCQUlLLFlBQVk7c0JBRHRCLFdBQVc7dUJBQUMsb0JBQW9CO2dCQVUxQixhQUFhO3NCQURuQixZQUFZO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFO2dCQWtCakUsVUFBVTtzQkFEaEIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgUXVlcnlMaXN0LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERvQ2hlY2ssXG4gICAgSW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4U3VtbWFyeVJlc3VsdCB9IGZyb20gJy4vZ3JpZC1zdW1tYXJ5JztcbmltcG9ydCB7IElneFN1bW1hcnlDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi9zdW1tYXJ5LWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IElneEdyaWRGb3JPZkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9yLW9mL2Zvcl9vZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4Rm9yT2ZTeW5jU2VydmljZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9yLW9mL2Zvcl9vZi5zeW5jLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29sdW1uVHlwZSwgR3JpZFR5cGUsIElHWF9HUklEX0JBU0UgfSBmcm9tICcuLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnaWd4LWdyaWQtc3VtbWFyeS1yb3cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdW1tYXJ5LXJvdy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbSWd4Rm9yT2ZTeW5jU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4U3VtbWFyeVJvd0NvbXBvbmVudCBpbXBsZW1lbnRzIERvQ2hlY2sgIHtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHN1bW1hcmllczogTWFwPHN0cmluZywgSWd4U3VtbWFyeVJlc3VsdFtdPjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdyaWRJRDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGluZGV4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaXJzdENlbGxJbmRlbnRhdGlvbiA9IC0xO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtcm93SW5kZXgnKVxuICAgIHB1YmxpYyBnZXQgZGF0YVJvd0luZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRleDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1pbkhlaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5zdW1tYXJ5Um93SGVpZ2h0IC0gMTtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkcmVuKElneFN1bW1hcnlDZWxsQ29tcG9uZW50LCB7IHJlYWQ6IElneFN1bW1hcnlDZWxsQ29tcG9uZW50IH0pXG4gICAgcHVibGljIF9zdW1tYXJ5Q2VsbHM6IFF1ZXJ5TGlzdDxJZ3hTdW1tYXJ5Q2VsbENvbXBvbmVudD47XG5cbiAgICBwdWJsaWMgZ2V0IHN1bW1hcnlDZWxscygpOiBRdWVyeUxpc3Q8SWd4U3VtbWFyeUNlbGxDb21wb25lbnQ+IHtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IFF1ZXJ5TGlzdDxJZ3hTdW1tYXJ5Q2VsbENvbXBvbmVudD4oKTtcbiAgICAgICAgaWYgKCF0aGlzLl9zdW1tYXJ5Q2VsbHMpIHtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY0xpc3QgPSB0aGlzLl9zdW1tYXJ5Q2VsbHMuZmlsdGVyKGMgPT4gYy5uYXRpdmVFbGVtZW50LmlzQ29ubmVjdGVkKTtcbiAgICAgICAgcmVzLnJlc2V0KGNMaXN0KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgcHVibGljIHNldCBzdW1tYXJ5Q2VsbHMoY2VsbHMpIHsgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2lneERpclJlZicsIHsgcmVhZDogSWd4R3JpZEZvck9mRGlyZWN0aXZlIH0pXG4gICAgcHVibGljIHZpcnREaXJSb3c6IElneEdyaWRGb3JPZkRpcmVjdGl2ZTxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChJR1hfR1JJRF9CQVNFKSBwdWJsaWMgZ3JpZDogR3JpZFR5cGUsXG4gICAgICAgICAgICAgICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICAgICAgICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgcHVibGljIG5nRG9DaGVjaygpIHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbHVtblN1bW1hcmllcyhjb2x1bW5OYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLnN1bW1hcmllcy5nZXQoY29sdW1uTmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zdW1tYXJpZXMuZ2V0KGNvbHVtbk5hbWUpO1xuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBpc0NlbGxBY3RpdmUodmlzaWJsZUNvbHVtbkluZGV4KSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdyaWQubmF2aWdhdGlvbi5hY3RpdmVOb2RlO1xuICAgICAgICByZXR1cm4gbm9kZSA/IG5vZGUucm93ID09PSB0aGlzLmluZGV4ICYmIG5vZGUuY29sdW1uID09PSB2aXNpYmxlQ29sdW1uSW5kZXggOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBwaW5uZWRDb2x1bW5zKCk6IENvbHVtblR5cGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQucGlubmVkQ29sdW1ucztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCB1bnBpbm5lZENvbHVtbnMoKTogQ29sdW1uVHlwZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC51bnBpbm5lZENvbHVtbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbnRleHQocm93KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHJvd1xuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJzdW1tYXJpZXMuc2l6ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncmlkLnN1bW1hcmllc01hcmdpblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiaWd4LWdyaWRfX3N1bW1hcmllcy1wYXRjaFwiXG4gICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiZ3JpZC5zdW1tYXJpZXNNYXJnaW5cIlxuICAgICAgICBbc3R5bGUuZmxleC1iYXNpcy5weF09XCJncmlkLnN1bW1hcmllc01hcmdpblwiXG4gICAgICAgIChwb2ludGVyZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgID48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGlubmVkQ29sdW1ucy5sZW5ndGggPiAwICYmIGdyaWQuaXNQaW5uaW5nVG9TdGFydFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VtbWFyeUNlbGxUZW1wbGF0ZTsgY29udGV4dDogZ2V0Q29udGV4dCh0aGlzKVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSBpZ3hHcmlkRm9yIGxldC1jb2wgW2lneEdyaWRGb3JPZl09XCJ1bnBpbm5lZENvbHVtbnMgfCBpZ3hOb3RHcm91cGVkXCIgW2lneEZvclNjcm9sbENvbnRhaW5lcl09XCJncmlkLnBhcmVudFZpcnREaXJcIiBsZXQtY29sSW5kZXg9XCJpbmRleFwiIFtpZ3hGb3JTY3JvbGxPcmllbnRhdGlvbl09XCInaG9yaXpvbnRhbCdcIiBbaWd4Rm9yQ29udGFpbmVyU2l6ZV09XCJncmlkLnVucGlubmVkV2lkdGhcIiBbaWd4Rm9yVHJhY2tCeV09XCJncmlkLnRyYWNrQ29sdW1uQ2hhbmdlc1wiIFtpZ3hGb3JTaXplUHJvcE5hbWVdPSdcImNhbGNQaXhlbFdpZHRoXCInICNpZ3hEaXJSZWY+XG4gICAgICAgIDxpZ3gtZ3JpZC1zdW1tYXJ5LWNlbGxcbiAgICAgICAgICAgIGNsYXNzPVwiaWd4LWdyaWQtc3VtbWFyeSBpZ3gtZ3JpZC1zdW1tYXJ5LS1md1wiXG4gICAgICAgICAgICByb2xlPVwiY2VsbFwiXG4gICAgICAgICAgICBbY2xhc3MuaWd4LWdyaWQtc3VtbWFyeS0tY29zeV09XCJncmlkLmRpc3BsYXlEZW5zaXR5ID09PSAnY29zeSdcIlxuICAgICAgICAgICAgW2NsYXNzLmlneC1ncmlkLXN1bW1hcnktLWNvbXBhY3RdPVwiZ3JpZC5kaXNwbGF5RGVuc2l0eSA9PT0gJ2NvbXBhY3QnXCJcbiAgICAgICAgICAgIFtjbGFzcy5pZ3gtZ3JpZC1zdW1tYXJ5LS1lbXB0eV09XCIhY29sLmhhc1N1bW1hcnlcIlxuICAgICAgICAgICAgW2NsYXNzLmlneC1ncmlkLXN1bW1hcnktLXBpbm5lZC1sYXN0XT1cImNvbC5pc0xhc3RQaW5uZWRcIlxuICAgICAgICAgICAgW2NvbHVtbl09XCJjb2xcIlxuICAgICAgICAgICAgW3Jvd0luZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgIFtmaXJzdENlbGxJbmRlbnRhdGlvbl09XCJmaXJzdENlbGxJbmRlbnRhdGlvblwiXG4gICAgICAgICAgICBbc3VtbWFyeVJlc3VsdHNdPVwiZ2V0Q29sdW1uU3VtbWFyaWVzKGNvbC5maWVsZClcIlxuICAgICAgICAgICAgW3N1bW1hcnlUZW1wbGF0ZV09XCJjb2wuc3VtbWFyeVRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtoYXNTdW1tYXJ5XT1cImNvbC5oYXNTdW1tYXJ5XCJcbiAgICAgICAgICAgIFtkZW5zaXR5XT1cImdyaWQuZGlzcGxheURlbnNpdHlcIlxuICAgICAgICAgICAgW3N1bW1hcnlGb3JtYXR0ZXJdPVwiY29sLnN1bW1hcnlGb3JtYXR0ZXJcIlxuICAgICAgICAgICAgW2FjdGl2ZV09XCJpc0NlbGxBY3RpdmUoY29sLnZpc2libGVJbmRleClcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwibWluSGVpZ2h0XCJcbiAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cIm1pbkhlaWdodFwiXG4gICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbC5nZXRDZWxsV2lkdGgoKVwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbC5nZXRDZWxsV2lkdGgoKVwiXG4gICAgICAgICAgICBbc3R5bGUuZmxleC1iYXNpc109XCJjb2wuZ2V0Q2VsbFdpZHRoKClcIj5cbiAgICAgICAgPC9pZ3gtZ3JpZC1zdW1tYXJ5LWNlbGw+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGlubmVkQ29sdW1ucy5sZW5ndGggPiAwICYmICFncmlkLmlzUGlubmluZ1RvU3RhcnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1bW1hcnlDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IGdldENvbnRleHQodGhpcylcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3N1bW1hcnlDZWxsVGVtcGxhdGUgbGV0LWNvbD5cbiAgICA8aWd4LWdyaWQtc3VtbWFyeS1jZWxsICpuZ0Zvcj1cImxldCBjb2wgb2YgcGlubmVkQ29sdW1ucyB8IGlneE5vdEdyb3VwZWRcIlxuICAgICAgICAgICAgcm9sZT1cImNlbGxcIlxuICAgICAgICAgICAgY2xhc3M9XCJpZ3gtZ3JpZC1zdW1tYXJ5IGlneC1ncmlkLXN1bW1hcnktLWZ3IGlneC1ncmlkLXN1bW1hcnktLXBpbm5lZFwiXG4gICAgICAgICAgICBbY2xhc3MuaWd4LWdyaWQtc3VtbWFyeS0tY29zeV09XCJncmlkLmRpc3BsYXlEZW5zaXR5ID09PSAnY29zeSdcIlxuICAgICAgICAgICAgW2NsYXNzLmlneC1ncmlkLXN1bW1hcnktLWNvbXBhY3RdPVwiZ3JpZC5kaXNwbGF5RGVuc2l0eSA9PT0gJ2NvbXBhY3QnXCJcbiAgICAgICAgICAgIFtjbGFzcy5pZ3gtZ3JpZC1zdW1tYXJ5LS1lbXB0eV09XCIhY29sLmhhc1N1bW1hcnlcIlxuICAgICAgICAgICAgW2NsYXNzLmlneC1ncmlkLXN1bW1hcnktLXBpbm5lZC1maXJzdF09XCJjb2wuaXNGaXJzdFBpbm5lZFwiXG4gICAgICAgICAgICBbY2xhc3MuaWd4LWdyaWQtc3VtbWFyeS0tcGlubmVkLWxhc3RdPVwiY29sLmlzTGFzdFBpbm5lZFwiXG4gICAgICAgICAgICBbY29sdW1uXT1cImNvbFwiXG4gICAgICAgICAgICBbZmlyc3RDZWxsSW5kZW50YXRpb25dPVwiZmlyc3RDZWxsSW5kZW50YXRpb25cIlxuICAgICAgICAgICAgW3Jvd0luZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgIFtzdW1tYXJ5UmVzdWx0c109XCJnZXRDb2x1bW5TdW1tYXJpZXMoY29sLmZpZWxkKVwiXG4gICAgICAgICAgICBbc3VtbWFyeVRlbXBsYXRlXT1cImNvbC5zdW1tYXJ5VGVtcGxhdGVcIlxuICAgICAgICAgICAgW2hhc1N1bW1hcnldPVwiY29sLmhhc1N1bW1hcnlcIlxuICAgICAgICAgICAgW2RlbnNpdHldPVwiZ3JpZC5kaXNwbGF5RGVuc2l0eVwiXG4gICAgICAgICAgICBbYWN0aXZlXT1cImlzQ2VsbEFjdGl2ZShjb2wudmlzaWJsZUluZGV4KVwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJtaW5IZWlnaHRcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwibWluSGVpZ2h0XCJcbiAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sLmdldENlbGxXaWR0aCgpXCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sLmdldENlbGxXaWR0aCgpXCJcbiAgICAgICAgICAgIFtzdHlsZS5mbGV4LWJhc2lzXT1cImNvbC5nZXRDZWxsV2lkdGgoKVwiXG4gICAgICAgICAgICBbc3R5bGUubGVmdF09XCJjb2wucmlnaHRQaW5uZWRPZmZzZXRcIj5cbiAgICAgICAgPC9pZ3gtZ3JpZC1zdW1tYXJ5LWNlbGw+XG48L25nLXRlbXBsYXRlPlxuIl19
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VtbWFyeS1yb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3N1bW1hcmllcy9zdW1tYXJ5LXJvdy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvc3VtbWFyaWVzL3N1bW1hcnktcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFlBQVksRUFDWixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFFVCx1QkFBdUIsRUFHdkIsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2xGLE9BQU8sRUFBd0IsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQVMvRSxNQUFNLE9BQU8sc0JBQXNCO0lBYy9CLElBQ1csWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFLRCxJQUFXLFlBQVk7UUFDbkIsTUFBTSxHQUFHLEdBQUcsSUFBSSxTQUFTLEVBQTJCLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDckIsT0FBTyxHQUFHLENBQUM7U0FDZDtRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxRSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQVcsWUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDO0lBUWxDLFlBQTBDLElBQWMsRUFDckMsT0FBZ0MsRUFDaEMsR0FBc0I7UUFGQyxTQUFJLEdBQUosSUFBSSxDQUFVO1FBQ3JDLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBQ2hDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBakNsQyx5QkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBQztJQWlDVyxDQUFDO0lBRXRDLFNBQVM7UUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsVUFBa0I7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTFDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxZQUFZLENBQUMsa0JBQWtCO1FBQ2xDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN4RixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLGVBQWU7UUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNyQyxDQUFDO0lBRU0sVUFBVSxDQUFDLEdBQUc7UUFDakIsT0FBTztZQUNILFNBQVMsRUFBRSxHQUFHO1NBQ2pCLENBQUM7SUFDTixDQUFDOzttSEExRlEsc0JBQXNCLGtCQTJDWCxhQUFhO3VHQTNDeEIsc0JBQXNCLHdPQUZwQixDQUFDLG1CQUFtQixDQUFDLDhHQTBDQSxxQkFBcUIsZ0RBakJ2Qyx1QkFBdUIsMkJBQVUsdUJBQXVCLDZCQ2pEMUUscW1IQWtFQTsyRkR4Q2Esc0JBQXNCO2tCQU5sQyxTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsc0JBQXNCLGFBRXJCLENBQUMsbUJBQW1CLENBQUM7OzBCQTZDbkIsTUFBTTsyQkFBQyxhQUFhO3FHQXhDMUIsU0FBUztzQkFEZixLQUFLO2dCQUlDLE1BQU07c0JBRFosS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsb0JBQW9CO3NCQUQxQixLQUFLO2dCQUlLLFlBQVk7c0JBRHRCLFdBQVc7dUJBQUMsb0JBQW9CO2dCQVUxQixhQUFhO3NCQURuQixZQUFZO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFO2dCQWtCakUsVUFBVTtzQkFEaEIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgUXVlcnlMaXN0LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERvQ2hlY2ssXG4gICAgSW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4U3VtbWFyeVJlc3VsdCB9IGZyb20gJy4vZ3JpZC1zdW1tYXJ5JztcbmltcG9ydCB7IElneFN1bW1hcnlDZWxsQ29tcG9uZW50IH0gZnJvbSAnLi9zdW1tYXJ5LWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IElneEdyaWRGb3JPZkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9yLW9mL2Zvcl9vZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4Rm9yT2ZTeW5jU2VydmljZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZm9yLW9mL2Zvcl9vZi5zeW5jLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29sdW1uVHlwZSwgR3JpZFR5cGUsIElHWF9HUklEX0JBU0UgfSBmcm9tICcuLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnaWd4LWdyaWQtc3VtbWFyeS1yb3cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdW1tYXJ5LXJvdy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbSWd4Rm9yT2ZTeW5jU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4U3VtbWFyeVJvd0NvbXBvbmVudCBpbXBsZW1lbnRzIERvQ2hlY2sgIHtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHN1bW1hcmllczogTWFwPHN0cmluZywgSWd4U3VtbWFyeVJlc3VsdFtdPjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdyaWRJRDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGluZGV4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaXJzdENlbGxJbmRlbnRhdGlvbiA9IC0xO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtcm93SW5kZXgnKVxuICAgIHB1YmxpYyBnZXQgZGF0YVJvd0luZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRleDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1pbkhlaWdodCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5zdW1tYXJ5Um93SGVpZ2h0IC0gMTtcbiAgICB9XG5cbiAgICBAVmlld0NoaWxkcmVuKElneFN1bW1hcnlDZWxsQ29tcG9uZW50LCB7IHJlYWQ6IElneFN1bW1hcnlDZWxsQ29tcG9uZW50IH0pXG4gICAgcHVibGljIF9zdW1tYXJ5Q2VsbHM6IFF1ZXJ5TGlzdDxJZ3hTdW1tYXJ5Q2VsbENvbXBvbmVudD47XG5cbiAgICBwdWJsaWMgZ2V0IHN1bW1hcnlDZWxscygpOiBRdWVyeUxpc3Q8SWd4U3VtbWFyeUNlbGxDb21wb25lbnQ+IHtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IFF1ZXJ5TGlzdDxJZ3hTdW1tYXJ5Q2VsbENvbXBvbmVudD4oKTtcbiAgICAgICAgaWYgKCF0aGlzLl9zdW1tYXJ5Q2VsbHMpIHtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY0xpc3QgPSB0aGlzLl9zdW1tYXJ5Q2VsbHMuZmlsdGVyKGMgPT4gYy5uYXRpdmVFbGVtZW50LmlzQ29ubmVjdGVkKTtcbiAgICAgICAgcmVzLnJlc2V0KGNMaXN0KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgcHVibGljIHNldCBzdW1tYXJ5Q2VsbHMoY2VsbHMpIHsgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2lneERpclJlZicsIHsgcmVhZDogSWd4R3JpZEZvck9mRGlyZWN0aXZlIH0pXG4gICAgcHVibGljIHZpcnREaXJSb3c6IElneEdyaWRGb3JPZkRpcmVjdGl2ZTxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChJR1hfR1JJRF9CQVNFKSBwdWJsaWMgZ3JpZDogR3JpZFR5cGUsXG4gICAgICAgICAgICAgICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICAgICAgICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgcHVibGljIG5nRG9DaGVjaygpIHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbHVtblN1bW1hcmllcyhjb2x1bW5OYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLnN1bW1hcmllcy5nZXQoY29sdW1uTmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zdW1tYXJpZXMuZ2V0KGNvbHVtbk5hbWUpO1xuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBpc0NlbGxBY3RpdmUodmlzaWJsZUNvbHVtbkluZGV4KSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdyaWQubmF2aWdhdGlvbi5hY3RpdmVOb2RlO1xuICAgICAgICByZXR1cm4gbm9kZSA/IG5vZGUucm93ID09PSB0aGlzLmluZGV4ICYmIG5vZGUuY29sdW1uID09PSB2aXNpYmxlQ29sdW1uSW5kZXggOiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBwaW5uZWRDb2x1bW5zKCk6IENvbHVtblR5cGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQucGlubmVkQ29sdW1ucztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCB1bnBpbm5lZENvbHVtbnMoKTogQ29sdW1uVHlwZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC51bnBpbm5lZENvbHVtbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbnRleHQocm93KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHJvd1xuICAgICAgICB9O1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJzdW1tYXJpZXMuc2l6ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncmlkLnN1bW1hcmllc01hcmdpblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiaWd4LWdyaWRfX3N1bW1hcmllcy1wYXRjaFwiXG4gICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiZ3JpZC5zdW1tYXJpZXNNYXJnaW5cIlxuICAgICAgICBbc3R5bGUuZmxleC1iYXNpcy5weF09XCJncmlkLnN1bW1hcmllc01hcmdpblwiXG4gICAgICAgIChwb2ludGVyZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgID48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGlubmVkQ29sdW1ucy5sZW5ndGggPiAwICYmIGdyaWQuaXNQaW5uaW5nVG9TdGFydFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VtbWFyeUNlbGxUZW1wbGF0ZTsgY29udGV4dDogZ2V0Q29udGV4dCh0aGlzKVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSBpZ3hHcmlkRm9yIGxldC1jb2wgW2lneEdyaWRGb3JPZl09XCJ1bnBpbm5lZENvbHVtbnMgfCBpZ3hOb3RHcm91cGVkXCIgW2lneEZvclNjcm9sbENvbnRhaW5lcl09XCJncmlkLnBhcmVudFZpcnREaXJcIiBsZXQtY29sSW5kZXg9XCJpbmRleFwiIFtpZ3hGb3JTY3JvbGxPcmllbnRhdGlvbl09XCInaG9yaXpvbnRhbCdcIiBbaWd4Rm9yQ29udGFpbmVyU2l6ZV09XCJncmlkLnVucGlubmVkV2lkdGhcIiBbaWd4Rm9yVHJhY2tCeV09XCJncmlkLnRyYWNrQ29sdW1uQ2hhbmdlc1wiIFtpZ3hGb3JTaXplUHJvcE5hbWVdPSdcImNhbGNQaXhlbFdpZHRoXCInICNpZ3hEaXJSZWY+XG4gICAgICAgIDxpZ3gtZ3JpZC1zdW1tYXJ5LWNlbGxcbiAgICAgICAgICAgIGNsYXNzPVwiaWd4LWdyaWQtc3VtbWFyeSBpZ3gtZ3JpZC1zdW1tYXJ5LS1md1wiXG4gICAgICAgICAgICByb2xlPVwiY2VsbFwiXG4gICAgICAgICAgICBbY2xhc3MuaWd4LWdyaWQtc3VtbWFyeS0tY29zeV09XCJncmlkLmRpc3BsYXlEZW5zaXR5ID09PSAnY29zeSdcIlxuICAgICAgICAgICAgW2NsYXNzLmlneC1ncmlkLXN1bW1hcnktLWNvbXBhY3RdPVwiZ3JpZC5kaXNwbGF5RGVuc2l0eSA9PT0gJ2NvbXBhY3QnXCJcbiAgICAgICAgICAgIFtjbGFzcy5pZ3gtZ3JpZC1zdW1tYXJ5LS1lbXB0eV09XCIhY29sLmhhc1N1bW1hcnlcIlxuICAgICAgICAgICAgW2NsYXNzLmlneC1ncmlkLXN1bW1hcnktLXBpbm5lZC1sYXN0XT1cImNvbC5pc0xhc3RQaW5uZWRcIlxuICAgICAgICAgICAgW2NvbHVtbl09XCJjb2xcIlxuICAgICAgICAgICAgW3Jvd0luZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgIFtmaXJzdENlbGxJbmRlbnRhdGlvbl09XCJmaXJzdENlbGxJbmRlbnRhdGlvblwiXG4gICAgICAgICAgICBbc3VtbWFyeVJlc3VsdHNdPVwiZ2V0Q29sdW1uU3VtbWFyaWVzKGNvbC5maWVsZClcIlxuICAgICAgICAgICAgW3N1bW1hcnlUZW1wbGF0ZV09XCJjb2wuc3VtbWFyeVRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtoYXNTdW1tYXJ5XT1cImNvbC5oYXNTdW1tYXJ5XCJcbiAgICAgICAgICAgIFtkZW5zaXR5XT1cImdyaWQuZGlzcGxheURlbnNpdHlcIlxuICAgICAgICAgICAgW3N1bW1hcnlGb3JtYXR0ZXJdPVwiY29sLnN1bW1hcnlGb3JtYXR0ZXJcIlxuICAgICAgICAgICAgW2FjdGl2ZV09XCJpc0NlbGxBY3RpdmUoY29sLnZpc2libGVJbmRleClcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwibWluSGVpZ2h0XCJcbiAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cIm1pbkhlaWdodFwiXG4gICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoXT1cImNvbC5yZXNvbHZlZFdpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sLnJlc29sdmVkV2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLmZsZXgtYmFzaXNdPVwiY29sLnJlc29sdmVkV2lkdGhcIj5cbiAgICAgICAgPC9pZ3gtZ3JpZC1zdW1tYXJ5LWNlbGw+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGlubmVkQ29sdW1ucy5sZW5ndGggPiAwICYmICFncmlkLmlzUGlubmluZ1RvU3RhcnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1bW1hcnlDZWxsVGVtcGxhdGU7IGNvbnRleHQ6IGdldENvbnRleHQodGhpcylcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3N1bW1hcnlDZWxsVGVtcGxhdGUgbGV0LWNvbD5cbiAgICA8aWd4LWdyaWQtc3VtbWFyeS1jZWxsICpuZ0Zvcj1cImxldCBjb2wgb2YgcGlubmVkQ29sdW1ucyB8IGlneE5vdEdyb3VwZWRcIlxuICAgICAgICAgICAgcm9sZT1cImNlbGxcIlxuICAgICAgICAgICAgY2xhc3M9XCJpZ3gtZ3JpZC1zdW1tYXJ5IGlneC1ncmlkLXN1bW1hcnktLWZ3IGlneC1ncmlkLXN1bW1hcnktLXBpbm5lZFwiXG4gICAgICAgICAgICBbY2xhc3MuaWd4LWdyaWQtc3VtbWFyeS0tY29zeV09XCJncmlkLmRpc3BsYXlEZW5zaXR5ID09PSAnY29zeSdcIlxuICAgICAgICAgICAgW2NsYXNzLmlneC1ncmlkLXN1bW1hcnktLWNvbXBhY3RdPVwiZ3JpZC5kaXNwbGF5RGVuc2l0eSA9PT0gJ2NvbXBhY3QnXCJcbiAgICAgICAgICAgIFtjbGFzcy5pZ3gtZ3JpZC1zdW1tYXJ5LS1lbXB0eV09XCIhY29sLmhhc1N1bW1hcnlcIlxuICAgICAgICAgICAgW2NsYXNzLmlneC1ncmlkLXN1bW1hcnktLXBpbm5lZC1maXJzdF09XCJjb2wuaXNGaXJzdFBpbm5lZFwiXG4gICAgICAgICAgICBbY2xhc3MuaWd4LWdyaWQtc3VtbWFyeS0tcGlubmVkLWxhc3RdPVwiY29sLmlzTGFzdFBpbm5lZFwiXG4gICAgICAgICAgICBbY29sdW1uXT1cImNvbFwiXG4gICAgICAgICAgICBbZmlyc3RDZWxsSW5kZW50YXRpb25dPVwiZmlyc3RDZWxsSW5kZW50YXRpb25cIlxuICAgICAgICAgICAgW3Jvd0luZGV4XT1cImluZGV4XCJcbiAgICAgICAgICAgIFtzdW1tYXJ5UmVzdWx0c109XCJnZXRDb2x1bW5TdW1tYXJpZXMoY29sLmZpZWxkKVwiXG4gICAgICAgICAgICBbc3VtbWFyeVRlbXBsYXRlXT1cImNvbC5zdW1tYXJ5VGVtcGxhdGVcIlxuICAgICAgICAgICAgW2hhc1N1bW1hcnldPVwiY29sLmhhc1N1bW1hcnlcIlxuICAgICAgICAgICAgW2RlbnNpdHldPVwiZ3JpZC5kaXNwbGF5RGVuc2l0eVwiXG4gICAgICAgICAgICBbYWN0aXZlXT1cImlzQ2VsbEFjdGl2ZShjb2wudmlzaWJsZUluZGV4KVwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJtaW5IZWlnaHRcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwibWluSGVpZ2h0XCJcbiAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sLnJlc29sdmVkV2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2wucmVzb2x2ZWRXaWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUuZmxleC1iYXNpc109XCJjb2wucmVzb2x2ZWRXaWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubGVmdF09XCJjb2wucmlnaHRQaW5uZWRPZmZzZXRcIj5cbiAgICAgICAgPC9pZ3gtZ3JpZC1zdW1tYXJ5LWNlbGw+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -136,10 +136,10 @@ export class IgxTreeGridRowComponent extends IgxRowDirective {
136
136
  }
137
137
  }
138
138
  IgxTreeGridRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: IgxTreeGridRowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
139
- IgxTreeGridRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: IgxTreeGridRowComponent, selector: "igx-tree-grid-row", inputs: { treeRow: "treeRow" }, host: { properties: { "attr.aria-expanded": "this.expanded" } }, providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxTreeGridRowComponent) }], viewQueries: [{ propertyName: "_cells", predicate: ["treeCell"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet='addRowUI ? addTemp : defaultTemp'></ng-container>\n\n<ng-template #addTemp>\n <div class='igx-grid__tr--inner' [class.igx-grid__tr--add-animate]='triggerAddAnimationClass' (animationend)='animationEndHandler()'>\n <ng-container *ngTemplateOutlet='defaultTemp'></ng-container>\n </div>\n</ng-template>\n<ng-template #defaultTemp>\n<ng-container *ngIf=\"rowDraggable\">\n <div [class]=\"resolveDragIndicatorClasses\" [igxRowDrag]=\"this\" (click)=\"$event.stopPropagation()\" [ghostTemplate]=\"this.grid.getDragGhostCustomTemplate()\">\n <ng-container *ngTemplateOutlet=\"this.grid.dragIndicatorIconTemplate ? this.grid.dragIndicatorIconTemplate : this.grid.dragIndicatorIconBase\"></ng-container>\n </div>\n</ng-container>\n<ng-container *ngIf=\"showRowSelectors\">\n <div class=\"igx-grid__cbx-selection igx-grid__tr-action\" (click)=\"onRowSelectorClick($event)\" (pointerdown)=\"$event.preventDefault()\">\n <ng-template *ngTemplateOutlet=\"\n this.grid.rowSelectorTemplate ? this.grid.rowSelectorTemplate : rowSelectorBaseTemplate;\n context: { $implicit: { index: viewIndex, rowID: key, key, selected: selected }}\">\n </ng-template>\n </div>\n</ng-container>\n<ng-container *ngIf=\"pinnedColumns.length > 0 && grid.isPinningToStart\">\n <ng-container *ngTemplateOutlet=\"pinnedCellsTemplate; context: this\"></ng-container>\n</ng-container>\n<ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\" [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth' [igxForSizePropName]=\"'calcPixelWidth'\" [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n <ng-template #cellTemplate>\n <igx-grid-cell\n class=\"igx-grid__td igx-grid__td--fw\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [class.igx-grid__td--bool]=\"col.dataType === 'boolean'\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [style.min-height.px]=\"cellHeight\"\n [rowData]=\"data\"\n [style.min-width]=\"col.width\"\n [style.max-width]=\"col.width\"\n [style.flex-basis]=\"col.width\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n #treeCell>\n </igx-grid-cell>\n </ng-template>\n <ng-template #treeCellTemplate>\n <igx-tree-grid-cell\n class=\"igx-grid__td igx-grid__td--fw igx-grid__td--tree-cell\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n [class.igx-grid__td--number]=\"(col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency') && col.visibleIndex !== 0\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [level]=\"treeRow.level\"\n [expanded]=\"expanded\"\n [showIndicator]=\"showIndicator\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [style.min-height.px]=\"cellHeight\"\n [rowData]=\"data\"\n [style.min-width]=\"col.width\"\n [style.max-width]=\"col.width\"\n [style.flex-basis]=\"col.width\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [isLoading]=\"isLoading\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n #treeCell>\n </igx-tree-grid-cell>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"col.visibleIndex === 0 ? treeCellTemplate : cellTemplate\"></ng-container>\n</ng-template>\n<ng-container *ngIf=\"pinnedColumns.length > 0 && !grid.isPinningToStart\">\n <ng-container *ngTemplateOutlet=\"pinnedCellsTemplate; context: this\"></ng-container>\n</ng-container>\n<ng-template #rowSelectorBaseTemplate>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox\n [tabindex]=\"-1\"\n [readonly]=\"true\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminate\"\n [disabled]=\"deleted\"\n [disableRipple]=\"true\"\n [disableTransitions]=\"grid.disableTransitions\"\n [aria-label]=\"rowCheckboxAriaLabel\">\n </igx-checkbox>\n </div>\n</ng-template>\n\n<ng-template #pinnedCellsTemplate let-col>\n <ng-template ngFor let-col [ngForOf]=\"pinnedColumns | igxNotGrouped\">\n <ng-template #cellTemplate>\n <igx-grid-cell\n class=\"igx-grid__td igx-grid__td--fw igx-grid__td--pinned\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [firstPinned]=\"col.isFirstPinned\"\n [lastPinned]=\"col.isLastPinned\"\n [style.min-height.px]=\"cellHeight\"\n [rowData]=\"data\"\n [style.min-width]=\"col.width\"\n [style.max-width]=\"col.width\"\n [style.flex-basis]=\"col.width\"\n [style.left]=\"col.rightPinnedOffset\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n #treeCell>\n </igx-grid-cell>\n </ng-template>\n <ng-template #treeCellTemplate>\n <igx-tree-grid-cell\n class=\"igx-grid__td igx-grid__td--fw igx-grid__td--tree-cell igx-grid__td--pinned\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n [class.igx-grid__td--number]=\"(col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency') && col.visibleIndex !== 0\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [level]=\"treeRow.level\"\n [expanded]=\"expanded\"\n [showIndicator]=\"showIndicator\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [lastPinned]=\"col.isLastPinned\"\n [style.min-height.px]=\"cellHeight\"\n [rowData]=\"data\"\n [style.min-width]=\"col.width\"\n [style.max-width]=\"col.width\"\n [style.flex-basis]=\"col.width\"\n [style.left]=\"col.rightPinnedOffset\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [isLoading]=\"isLoading\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n #treeCell>\n </igx-tree-grid-cell>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"col.visibleIndex === 0 ? treeCellTemplate : cellTemplate\"></ng-container>\n </ng-template>\n</ng-template>\n", dependencies: [{ kind: "component", type: i1.IgxGridCellComponent, selector: "igx-grid-cell", inputs: ["column", "intRow", "row", "rowData", "columnData", "cellTemplate", "cellValidationErrorTemplate", "pinnedIndicator", "value", "formatter", "visibleColumnIndex", "cellSelectionMode", "lastSearchInfo", "lastPinned", "firstPinned", "editMode", "width", "active", "displayPinnedChip"] }, { kind: "directive", type: i2.IgxRowDragDirective, selector: "[igxRowDrag]", inputs: ["igxRowDrag"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.IgxGridForOfDirective, selector: "[igxGridFor][igxGridForOf]", inputs: ["igxGridForOf", "igxGridForOfUniqueSizeCache", "igxGridForOfVariableSizes"], outputs: ["dataChanging"] }, { kind: "component", type: i5.IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["id", "labelId", "value", "name", "tabindex", "labelPosition", "disableRipple", "required", "aria-labelledby", "aria-label", "indeterminate", "checked", "disabled", "invalid", "readonly", "disableTransitions"], outputs: ["change"] }, { kind: "component", type: i6.IgxTreeGridCellComponent, selector: "igx-tree-grid-cell", inputs: ["level", "showIndicator", "isLoading", "row"] }, { kind: "pipe", type: i7.IgxGridNotGroupedPipe, name: "igxNotGrouped" }, { kind: "pipe", type: i7.IgxGridCellStylesPipe, name: "igxCellStyles" }, { kind: "pipe", type: i7.IgxGridCellStyleClassesPipe, name: "igxCellStyleClasses" }, { kind: "pipe", type: i7.IgxGridDataMapperPipe, name: "dataMapper" }, { kind: "pipe", type: i7.IgxGridTransactionStatePipe, name: "transactionState" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
139
+ IgxTreeGridRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.0", type: IgxTreeGridRowComponent, selector: "igx-tree-grid-row", inputs: { treeRow: "treeRow" }, host: { properties: { "attr.aria-expanded": "this.expanded" } }, providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxTreeGridRowComponent) }], viewQueries: [{ propertyName: "_cells", predicate: ["treeCell"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngTemplateOutlet='addRowUI ? addTemp : defaultTemp'></ng-container>\n\n<ng-template #addTemp>\n <div class='igx-grid__tr--inner' [class.igx-grid__tr--add-animate]='triggerAddAnimationClass' (animationend)='animationEndHandler()'>\n <ng-container *ngTemplateOutlet='defaultTemp'></ng-container>\n </div>\n</ng-template>\n<ng-template #defaultTemp>\n<ng-container *ngIf=\"rowDraggable\">\n <div [class]=\"resolveDragIndicatorClasses\" [igxRowDrag]=\"this\" (click)=\"$event.stopPropagation()\" [ghostTemplate]=\"this.grid.getDragGhostCustomTemplate()\">\n <ng-container *ngTemplateOutlet=\"this.grid.dragIndicatorIconTemplate ? this.grid.dragIndicatorIconTemplate : this.grid.dragIndicatorIconBase\"></ng-container>\n </div>\n</ng-container>\n<ng-container *ngIf=\"showRowSelectors\">\n <div class=\"igx-grid__cbx-selection igx-grid__tr-action\" (click)=\"onRowSelectorClick($event)\" (pointerdown)=\"$event.preventDefault()\">\n <ng-template *ngTemplateOutlet=\"\n this.grid.rowSelectorTemplate ? this.grid.rowSelectorTemplate : rowSelectorBaseTemplate;\n context: { $implicit: { index: viewIndex, rowID: key, key, selected: selected }}\">\n </ng-template>\n </div>\n</ng-container>\n<ng-container *ngIf=\"pinnedColumns.length > 0 && grid.isPinningToStart\">\n <ng-container *ngTemplateOutlet=\"pinnedCellsTemplate; context: this\"></ng-container>\n</ng-container>\n<ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\" [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth' [igxForSizePropName]=\"'calcPixelWidth'\" [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n <ng-template #cellTemplate>\n <igx-grid-cell\n class=\"igx-grid__td igx-grid__td--fw\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [class.igx-grid__td--bool]=\"col.dataType === 'boolean'\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [style.min-height.px]=\"cellHeight\"\n [rowData]=\"data\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n #treeCell>\n </igx-grid-cell>\n </ng-template>\n <ng-template #treeCellTemplate>\n <igx-tree-grid-cell\n class=\"igx-grid__td igx-grid__td--fw igx-grid__td--tree-cell\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n [class.igx-grid__td--number]=\"(col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency') && col.visibleIndex !== 0\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [level]=\"treeRow.level\"\n [expanded]=\"expanded\"\n [showIndicator]=\"showIndicator\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [style.min-height.px]=\"cellHeight\"\n [rowData]=\"data\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [isLoading]=\"isLoading\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n #treeCell>\n </igx-tree-grid-cell>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"col.visibleIndex === 0 ? treeCellTemplate : cellTemplate\"></ng-container>\n</ng-template>\n<ng-container *ngIf=\"pinnedColumns.length > 0 && !grid.isPinningToStart\">\n <ng-container *ngTemplateOutlet=\"pinnedCellsTemplate; context: this\"></ng-container>\n</ng-container>\n<ng-template #rowSelectorBaseTemplate>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox\n [tabindex]=\"-1\"\n [readonly]=\"true\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminate\"\n [disabled]=\"deleted\"\n [disableRipple]=\"true\"\n [disableTransitions]=\"grid.disableTransitions\"\n [aria-label]=\"rowCheckboxAriaLabel\">\n </igx-checkbox>\n </div>\n</ng-template>\n\n<ng-template #pinnedCellsTemplate let-col>\n <ng-template ngFor let-col [ngForOf]=\"pinnedColumns | igxNotGrouped\">\n <ng-template #cellTemplate>\n <igx-grid-cell\n class=\"igx-grid__td igx-grid__td--fw igx-grid__td--pinned\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [firstPinned]=\"col.isFirstPinned\"\n [lastPinned]=\"col.isLastPinned\"\n [style.min-height.px]=\"cellHeight\"\n [rowData]=\"data\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\"\n [style.left]=\"col.rightPinnedOffset\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n #treeCell>\n </igx-grid-cell>\n </ng-template>\n <ng-template #treeCellTemplate>\n <igx-tree-grid-cell\n class=\"igx-grid__td igx-grid__td--fw igx-grid__td--tree-cell igx-grid__td--pinned\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n [class.igx-grid__td--number]=\"(col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency') && col.visibleIndex !== 0\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [level]=\"treeRow.level\"\n [expanded]=\"expanded\"\n [showIndicator]=\"showIndicator\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [lastPinned]=\"col.isLastPinned\"\n [style.min-height.px]=\"cellHeight\"\n [rowData]=\"data\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\"\n [style.left]=\"col.rightPinnedOffset\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [isLoading]=\"isLoading\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n #treeCell>\n </igx-tree-grid-cell>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"col.visibleIndex === 0 ? treeCellTemplate : cellTemplate\"></ng-container>\n </ng-template>\n</ng-template>\n", dependencies: [{ kind: "component", type: i1.IgxGridCellComponent, selector: "igx-grid-cell", inputs: ["column", "intRow", "row", "rowData", "columnData", "cellTemplate", "cellValidationErrorTemplate", "pinnedIndicator", "value", "formatter", "visibleColumnIndex", "cellSelectionMode", "lastSearchInfo", "lastPinned", "firstPinned", "editMode", "width", "active", "displayPinnedChip"] }, { kind: "directive", type: i2.IgxRowDragDirective, selector: "[igxRowDrag]", inputs: ["igxRowDrag"] }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.IgxGridForOfDirective, selector: "[igxGridFor][igxGridForOf]", inputs: ["igxGridForOf", "igxGridForOfUniqueSizeCache", "igxGridForOfVariableSizes"], outputs: ["dataChanging"] }, { kind: "component", type: i5.IgxCheckboxComponent, selector: "igx-checkbox", inputs: ["id", "labelId", "value", "name", "tabindex", "labelPosition", "disableRipple", "required", "aria-labelledby", "aria-label", "indeterminate", "checked", "disabled", "invalid", "readonly", "disableTransitions"], outputs: ["change"] }, { kind: "component", type: i6.IgxTreeGridCellComponent, selector: "igx-tree-grid-cell", inputs: ["level", "showIndicator", "isLoading", "row"] }, { kind: "pipe", type: i7.IgxGridNotGroupedPipe, name: "igxNotGrouped" }, { kind: "pipe", type: i7.IgxGridCellStylesPipe, name: "igxCellStyles" }, { kind: "pipe", type: i7.IgxGridCellStyleClassesPipe, name: "igxCellStyleClasses" }, { kind: "pipe", type: i7.IgxGridDataMapperPipe, name: "dataMapper" }, { kind: "pipe", type: i7.IgxGridTransactionStatePipe, name: "transactionState" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
140
140
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImport: i0, type: IgxTreeGridRowComponent, decorators: [{
141
141
  type: Component,
142
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-tree-grid-row', providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxTreeGridRowComponent) }], template: "<ng-container *ngTemplateOutlet='addRowUI ? addTemp : defaultTemp'></ng-container>\n\n<ng-template #addTemp>\n <div class='igx-grid__tr--inner' [class.igx-grid__tr--add-animate]='triggerAddAnimationClass' (animationend)='animationEndHandler()'>\n <ng-container *ngTemplateOutlet='defaultTemp'></ng-container>\n </div>\n</ng-template>\n<ng-template #defaultTemp>\n<ng-container *ngIf=\"rowDraggable\">\n <div [class]=\"resolveDragIndicatorClasses\" [igxRowDrag]=\"this\" (click)=\"$event.stopPropagation()\" [ghostTemplate]=\"this.grid.getDragGhostCustomTemplate()\">\n <ng-container *ngTemplateOutlet=\"this.grid.dragIndicatorIconTemplate ? this.grid.dragIndicatorIconTemplate : this.grid.dragIndicatorIconBase\"></ng-container>\n </div>\n</ng-container>\n<ng-container *ngIf=\"showRowSelectors\">\n <div class=\"igx-grid__cbx-selection igx-grid__tr-action\" (click)=\"onRowSelectorClick($event)\" (pointerdown)=\"$event.preventDefault()\">\n <ng-template *ngTemplateOutlet=\"\n this.grid.rowSelectorTemplate ? this.grid.rowSelectorTemplate : rowSelectorBaseTemplate;\n context: { $implicit: { index: viewIndex, rowID: key, key, selected: selected }}\">\n </ng-template>\n </div>\n</ng-container>\n<ng-container *ngIf=\"pinnedColumns.length > 0 && grid.isPinningToStart\">\n <ng-container *ngTemplateOutlet=\"pinnedCellsTemplate; context: this\"></ng-container>\n</ng-container>\n<ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\" [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth' [igxForSizePropName]=\"'calcPixelWidth'\" [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n <ng-template #cellTemplate>\n <igx-grid-cell\n class=\"igx-grid__td igx-grid__td--fw\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [class.igx-grid__td--bool]=\"col.dataType === 'boolean'\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [style.min-height.px]=\"cellHeight\"\n [rowData]=\"data\"\n [style.min-width]=\"col.width\"\n [style.max-width]=\"col.width\"\n [style.flex-basis]=\"col.width\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n #treeCell>\n </igx-grid-cell>\n </ng-template>\n <ng-template #treeCellTemplate>\n <igx-tree-grid-cell\n class=\"igx-grid__td igx-grid__td--fw igx-grid__td--tree-cell\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n [class.igx-grid__td--number]=\"(col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency') && col.visibleIndex !== 0\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [level]=\"treeRow.level\"\n [expanded]=\"expanded\"\n [showIndicator]=\"showIndicator\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [style.min-height.px]=\"cellHeight\"\n [rowData]=\"data\"\n [style.min-width]=\"col.width\"\n [style.max-width]=\"col.width\"\n [style.flex-basis]=\"col.width\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [isLoading]=\"isLoading\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n #treeCell>\n </igx-tree-grid-cell>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"col.visibleIndex === 0 ? treeCellTemplate : cellTemplate\"></ng-container>\n</ng-template>\n<ng-container *ngIf=\"pinnedColumns.length > 0 && !grid.isPinningToStart\">\n <ng-container *ngTemplateOutlet=\"pinnedCellsTemplate; context: this\"></ng-container>\n</ng-container>\n<ng-template #rowSelectorBaseTemplate>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox\n [tabindex]=\"-1\"\n [readonly]=\"true\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminate\"\n [disabled]=\"deleted\"\n [disableRipple]=\"true\"\n [disableTransitions]=\"grid.disableTransitions\"\n [aria-label]=\"rowCheckboxAriaLabel\">\n </igx-checkbox>\n </div>\n</ng-template>\n\n<ng-template #pinnedCellsTemplate let-col>\n <ng-template ngFor let-col [ngForOf]=\"pinnedColumns | igxNotGrouped\">\n <ng-template #cellTemplate>\n <igx-grid-cell\n class=\"igx-grid__td igx-grid__td--fw igx-grid__td--pinned\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [firstPinned]=\"col.isFirstPinned\"\n [lastPinned]=\"col.isLastPinned\"\n [style.min-height.px]=\"cellHeight\"\n [rowData]=\"data\"\n [style.min-width]=\"col.width\"\n [style.max-width]=\"col.width\"\n [style.flex-basis]=\"col.width\"\n [style.left]=\"col.rightPinnedOffset\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n #treeCell>\n </igx-grid-cell>\n </ng-template>\n <ng-template #treeCellTemplate>\n <igx-tree-grid-cell\n class=\"igx-grid__td igx-grid__td--fw igx-grid__td--tree-cell igx-grid__td--pinned\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n [class.igx-grid__td--number]=\"(col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency') && col.visibleIndex !== 0\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [level]=\"treeRow.level\"\n [expanded]=\"expanded\"\n [showIndicator]=\"showIndicator\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [lastPinned]=\"col.isLastPinned\"\n [style.min-height.px]=\"cellHeight\"\n [rowData]=\"data\"\n [style.min-width]=\"col.width\"\n [style.max-width]=\"col.width\"\n [style.flex-basis]=\"col.width\"\n [style.left]=\"col.rightPinnedOffset\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [isLoading]=\"isLoading\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n #treeCell>\n </igx-tree-grid-cell>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"col.visibleIndex === 0 ? treeCellTemplate : cellTemplate\"></ng-container>\n </ng-template>\n</ng-template>\n" }]
142
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'igx-tree-grid-row', providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxTreeGridRowComponent) }], template: "<ng-container *ngTemplateOutlet='addRowUI ? addTemp : defaultTemp'></ng-container>\n\n<ng-template #addTemp>\n <div class='igx-grid__tr--inner' [class.igx-grid__tr--add-animate]='triggerAddAnimationClass' (animationend)='animationEndHandler()'>\n <ng-container *ngTemplateOutlet='defaultTemp'></ng-container>\n </div>\n</ng-template>\n<ng-template #defaultTemp>\n<ng-container *ngIf=\"rowDraggable\">\n <div [class]=\"resolveDragIndicatorClasses\" [igxRowDrag]=\"this\" (click)=\"$event.stopPropagation()\" [ghostTemplate]=\"this.grid.getDragGhostCustomTemplate()\">\n <ng-container *ngTemplateOutlet=\"this.grid.dragIndicatorIconTemplate ? this.grid.dragIndicatorIconTemplate : this.grid.dragIndicatorIconBase\"></ng-container>\n </div>\n</ng-container>\n<ng-container *ngIf=\"showRowSelectors\">\n <div class=\"igx-grid__cbx-selection igx-grid__tr-action\" (click)=\"onRowSelectorClick($event)\" (pointerdown)=\"$event.preventDefault()\">\n <ng-template *ngTemplateOutlet=\"\n this.grid.rowSelectorTemplate ? this.grid.rowSelectorTemplate : rowSelectorBaseTemplate;\n context: { $implicit: { index: viewIndex, rowID: key, key, selected: selected }}\">\n </ng-template>\n </div>\n</ng-container>\n<ng-container *ngIf=\"pinnedColumns.length > 0 && grid.isPinningToStart\">\n <ng-container *ngTemplateOutlet=\"pinnedCellsTemplate; context: this\"></ng-container>\n</ng-container>\n<ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\" [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth' [igxForSizePropName]=\"'calcPixelWidth'\" [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n <ng-template #cellTemplate>\n <igx-grid-cell\n class=\"igx-grid__td igx-grid__td--fw\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [class.igx-grid__td--bool]=\"col.dataType === 'boolean'\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [style.min-height.px]=\"cellHeight\"\n [rowData]=\"data\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n #treeCell>\n </igx-grid-cell>\n </ng-template>\n <ng-template #treeCellTemplate>\n <igx-tree-grid-cell\n class=\"igx-grid__td igx-grid__td--fw igx-grid__td--tree-cell\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n [class.igx-grid__td--number]=\"(col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency') && col.visibleIndex !== 0\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [level]=\"treeRow.level\"\n [expanded]=\"expanded\"\n [showIndicator]=\"showIndicator\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [style.min-height.px]=\"cellHeight\"\n [rowData]=\"data\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [isLoading]=\"isLoading\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n #treeCell>\n </igx-tree-grid-cell>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"col.visibleIndex === 0 ? treeCellTemplate : cellTemplate\"></ng-container>\n</ng-template>\n<ng-container *ngIf=\"pinnedColumns.length > 0 && !grid.isPinningToStart\">\n <ng-container *ngTemplateOutlet=\"pinnedCellsTemplate; context: this\"></ng-container>\n</ng-container>\n<ng-template #rowSelectorBaseTemplate>\n <div class=\"igx-grid__cbx-padding\">\n <igx-checkbox\n [tabindex]=\"-1\"\n [readonly]=\"true\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminate\"\n [disabled]=\"deleted\"\n [disableRipple]=\"true\"\n [disableTransitions]=\"grid.disableTransitions\"\n [aria-label]=\"rowCheckboxAriaLabel\">\n </igx-checkbox>\n </div>\n</ng-template>\n\n<ng-template #pinnedCellsTemplate let-col>\n <ng-template ngFor let-col [ngForOf]=\"pinnedColumns | igxNotGrouped\">\n <ng-template #cellTemplate>\n <igx-grid-cell\n class=\"igx-grid__td igx-grid__td--fw igx-grid__td--pinned\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [firstPinned]=\"col.isFirstPinned\"\n [lastPinned]=\"col.isLastPinned\"\n [style.min-height.px]=\"cellHeight\"\n [rowData]=\"data\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\"\n [style.left]=\"col.rightPinnedOffset\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n #treeCell>\n </igx-grid-cell>\n </ng-template>\n <ng-template #treeCellTemplate>\n <igx-tree-grid-cell\n class=\"igx-grid__td igx-grid__td--fw igx-grid__td--tree-cell igx-grid__td--pinned\"\n [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n [class.igx-grid__td--number]=\"(col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency') && col.visibleIndex !== 0\"\n [ngClass]=\"col.cellClasses | igxCellStyleClasses:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [ngStyle]=\"col.cellStyles | igxCellStyles:data[col.field]:data:col.field:viewIndex:grid.pipeTrigger\"\n [level]=\"treeRow.level\"\n [expanded]=\"expanded\"\n [showIndicator]=\"showIndicator\"\n [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\"\n [column]=\"col\"\n [formatter]=\"col.formatter\"\n [intRow]=\"this\"\n [lastPinned]=\"col.isLastPinned\"\n [style.min-height.px]=\"cellHeight\"\n [rowData]=\"data\"\n [style.min-width]=\"col.resolvedWidth\"\n [style.max-width]=\"col.resolvedWidth\"\n [style.flex-basis]=\"col.resolvedWidth\"\n [style.left]=\"col.rightPinnedOffset\"\n [width]=\"col.getCellWidth()\"\n [visibleColumnIndex]=\"col.visibleIndex\"\n [value]=\"data | dataMapper:col.field:grid.pipeTrigger:data[col.field]:col.hasNestedPath\"\n [isLoading]=\"isLoading\"\n [cellTemplate]=\"col.bodyTemplate\"\n [cellValidationErrorTemplate]=\"col.errorTemplate\"\n [lastSearchInfo]=\"grid.lastSearchInfo\"\n [active]=\"isCellActive(col.visibleIndex)\"\n [cellSelectionMode]=\"grid.cellSelection\"\n [displayPinnedChip]=\"shouldDisplayPinnedChip(col.visibleIndex)\"\n #treeCell>\n </igx-tree-grid-cell>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"col.visibleIndex === 0 ? treeCellTemplate : cellTemplate\"></ng-container>\n </ng-template>\n</ng-template>\n" }]
143
143
  }], propDecorators: { _cells: [{
144
144
  type: ViewChildren,
145
145
  args: ['treeCell']
@@ -149,4 +149,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.0", ngImpor
149
149
  type: HostBinding,
150
150
  args: ['attr.aria-expanded']
151
151
  }] } });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ncmlkLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvdHJlZS1ncmlkL3RyZWUtZ3JpZC1yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3RyZWUtZ3JpZC90cmVlLWdyaWQtcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQWEsV0FBVyxFQUFXLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7O0FBU25ELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxlQUFlO0lBV3hEOzs7Ozs7O09BT0c7SUFDSCxJQUNXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsT0FBTyxDQUFDLEtBQXNCO1FBQ3JDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxLQUFLLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFvQixNQUFNLENBQUMsS0FBYztRQUNyQyxJQUFJLEtBQUssRUFBRTtZQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM5QjthQUFNO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdB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QUZyQixDQUFDLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyx3SUNSckcsb21WQWdMQTsyRkR0S2EsdUJBQXVCO2tCQU5uQyxTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsbUJBQW1CLGFBRWxCLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDLEVBQUUsQ0FBQzs4QkFJOUUsTUFBTTtzQkFEeEIsWUFBWTt1QkFBQyxVQUFVO2dCQW1CYixPQUFPO3NCQURqQixLQUFLO2dCQWlFYyxRQUFRO3NCQUQzQixXQUFXO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBIb3N0QmluZGluZywgRG9DaGVjaywgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneFJvd0RpcmVjdGl2ZSB9IGZyb20gJy4uL3Jvdy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSVRyZWVHcmlkUmVjb3JkIH0gZnJvbSAnLi90cmVlLWdyaWQuaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnaWd4LXRyZWUtZ3JpZC1yb3cnLFxuICAgIHRlbXBsYXRlVXJsOiAndHJlZS1ncmlkLXJvdy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJZ3hSb3dEaXJlY3RpdmUsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElneFRyZWVHcmlkUm93Q29tcG9uZW50KSB9XVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hUcmVlR3JpZFJvd0NvbXBvbmVudCBleHRlbmRzIElneFJvd0RpcmVjdGl2ZSBpbXBsZW1lbnRzIERvQ2hlY2sge1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RyZWVDZWxsJylcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX2NlbGxzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBfdHJlZVJvdzogSVRyZWVHcmlkUmVjb3JkO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGBJVHJlZUdyaWRSZWNvcmRgIHBhc3NlZCB0byB0aGUgcm93IGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCByb3cgPSB0aGlzLmdyaWQuZ2V0Um93QnlLZXkoMSkgYXMgSWd4VHJlZUdyaWRSb3dDb21wb25lbnQ7XG4gICAgICogY29uc3QgdHJlZVJvdyA9IHJvdy50cmVlUm93O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCB0cmVlUm93KCk6IElUcmVlR3JpZFJlY29yZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmVlUm93O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdHJlZVJvdyh2YWx1ZTogSVRyZWVHcmlkUmVjb3JkKSB7XG4gICAgICAgIGlmICh0aGlzLl90cmVlUm93ICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdHJlZVJvdyA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5fdHJlZVJvdy5kYXRhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB3aGV0aGVyIHRoZSByb3cgaXMgcGlubmVkLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5ncmlkLnNlbGVjdGVkUm93c1swXS5waW5uZWQgPSB0cnVlO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBzZXQgcGlubmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5ncmlkLnBpblJvdyh0aGlzLmtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQudW5waW5Sb3codGhpcy5rZXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB3aGV0aGVyIHRoZSByb3cgaXMgcGlubmVkLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgaXNQaW5uZWQgPSByb3cucGlubmVkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgcGlubmVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmlzUmVjb3JkUGlubmVkKHRoaXMuX3RyZWVSb3cpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGlzUm9vdCgpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHRyZWVSZWMgPSB0aGlzLnRyZWVSb3c7XG4gICAgICAgIGNvbnN0IGlzUGlubmVkQXJlYSA9IHRoaXMucGlubmVkICYmICF0aGlzLmRpc2FibGVkO1xuICAgICAgICBpZiAoaXNQaW5uZWRBcmVhKSB7XG4gICAgICAgICAgICB0cmVlUmVjID0gdGhpcy5ncmlkLnVucGlubmVkUmVjb3Jkcy5maW5kKHggPT4geC5kYXRhID09PSB0aGlzLmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cmVlUmVjPy5sZXZlbCA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBoYXNDaGlsZHJlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgcm93IGNvbXBvbmVudCBpcyBleHBhbmRlZC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCByb3cgPSB0aGlzLmdyaWQuZ2V0Um93QnlLZXkoMSkgYXMgSWd4VHJlZUdyaWRSb3dDb21wb25lbnQ7XG4gICAgICogY29uc3QgZXhwYW5kZWQgPSByb3cuZXhwYW5kZWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZXhwYW5kZWQnKVxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmVlUm93LmV4cGFuZGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHJvdyBjb21wb25lbnQgaXMgZXhwYW5kZWQuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3Qgcm93ID0gdGhpcy5ncmlkLmdldFJvd0J5S2V5KDEpIGFzIElneFRyZWVHcmlkUm93Q29tcG9uZW50O1xuICAgICAqIHJvdy5leHBhbmRlZCA9IHRydWU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHNldCBleHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmdyaWQuZ3JpZEFQSS5zZXRfcm93X2V4cGFuc2lvbl9zdGF0ZSh0aGlzLl90cmVlUm93LmtleSwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHZpZXdJbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCArIHRoaXMuZ3JpZC5wYWdlICogdGhpcy5ncmlkLnBlclBhZ2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2hvd0luZGljYXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5sb2FkQ2hpbGRyZW5PbkRlbWFuZCA/XG4gICAgICAgICAgICB0aGlzLmdyaWQuZXhwYW5zaW9uU3RhdGVzLmhhcyh0aGlzLmtleSkgP1xuICAgICAgICAgICAgICAgIHRoaXMudHJlZVJvdy5jaGlsZHJlbiAmJiB0aGlzLnRyZWVSb3cuY2hpbGRyZW4ubGVuZ3RoIDpcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWQuaGFzQ2hpbGRyZW5LZXkgP1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFbdGhpcy5ncmlkLmhhc0NoaWxkcmVuS2V5XSA6XG4gICAgICAgICAgICAgICAgICAgIHRydWUgOlxuICAgICAgICAgICAgdGhpcy50cmVlUm93LmNoaWxkcmVuICYmIHRoaXMudHJlZVJvdy5jaGlsZHJlbi5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaW5kZXRlcm1pbmF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uU2VydmljZS5pc1Jvd0luSW5kZXRlcm1pbmF0ZVN0YXRlKHRoaXMua2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5nRG9DaGVjaygpIHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0aGlzLmdyaWQubG9hZENoaWxkcmVuT25EZW1hbmQgPyB0aGlzLmdyaWQubG9hZGluZ1Jvd3MuaGFzKHRoaXMua2V5KSA6IGZhbHNlO1xuICAgICAgICBzdXBlci5uZ0RvQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTcGF3bnMgdGhlIGFkZCBjaGlsZCByb3cgVUkgZm9yIHRoZSBzcGVjaWZpYyByb3cuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCByb3cgPSB0aGlzLmdyaWQuZ2V0Um93QnlLZXkoMSkgYXMgSWd4VHJlZUdyaWRSb3dDb21wb25lbnQ7XG4gICAgICogcm93LmJlZ2luQWRkQ2hpbGQoKTtcbiAgICAgKiBgYGBcbiAgICAgKiBAcGFyYW0gcm93SURcbiAgICAgKi9cbiAgICBwdWJsaWMgYmVnaW5BZGRDaGlsZCgpIHtcbiAgICAgICAgdGhpcy5ncmlkLmNydWRTZXJ2aWNlLmVudGVyQWRkUm93TW9kZSh0aGlzLCB0cnVlKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PSdhZGRSb3dVSSA/IGFkZFRlbXAgOiBkZWZhdWx0VGVtcCc+PC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjYWRkVGVtcD5cbiAgICA8ZGl2IGNsYXNzPSdpZ3gtZ3JpZF9fdHItLWlubmVyJyBbY2xhc3MuaWd4LWdyaWRfX3RyLS1hZGQtYW5pbWF0ZV09J3RyaWdnZXJBZGRBbmltYXRpb25DbGFzcycgKGFuaW1hdGlvbmVuZCk9J2FuaW1hdGlvbkVuZEhhbmRsZXIoKSc+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9J2RlZmF1bHRUZW1wJz48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRUZW1wPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd0RyYWdnYWJsZVwiPlxuICAgIDxkaXYgW2NsYXNzXT1cInJlc29sdmVEcmFnSW5kaWNhdG9yQ2xhc3Nlc1wiIFtpZ3hSb3dEcmFnXT1cInRoaXNcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgW2dob3N0VGVtcGxhdGVdPVwidGhpcy5ncmlkLmdldERyYWdHaG9zdEN1c3RvbVRlbXBsYXRlKClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRoaXMuZ3JpZC5kcmFnSW5kaWNhdG9ySWNvblRlbXBsYXRlID8gdGhpcy5ncmlkLmRyYWdJbmRpY2F0b3JJY29uVGVtcGxhdGUgOiB0aGlzLmdyaWQuZHJhZ0luZGljYXRvckljb25CYXNlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93Um93U2VsZWN0b3JzXCI+XG4gICAgPGRpdiBjbGFzcz1cImlneC1ncmlkX19jYngtc2VsZWN0aW9uIGlneC1ncmlkX190ci1hY3Rpb25cIiAoY2xpY2spPVwib25Sb3dTZWxlY3RvckNsaWNrKCRldmVudClcIiAocG9pbnRlcmRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICB0aGlzLmdyaWQucm93U2VsZWN0b3JUZW1wbGF0ZSA/IHRoaXMuZ3JpZC5yb3dTZWxlY3RvclRlbXBsYXRlIDogcm93U2VsZWN0b3JCYXNlVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyBpbmRleDogdmlld0luZGV4LCByb3dJRDoga2V5LCBrZXksIHNlbGVjdGVkOiBzZWxlY3RlZCB9fVwiPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwicGlubmVkQ29sdW1ucy5sZW5ndGggPiAwICYmIGdyaWQuaXNQaW5uaW5nVG9TdGFydFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwaW5uZWRDZWxsc1RlbXBsYXRlOyBjb250ZXh0OiB0aGlzXCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSBpZ3hHcmlkRm9yIGxldC1jb2wgW2lneEdyaWRGb3JPZl09XCJ1bnBpbm5lZENvbHVtbnMgfCBpZ3hOb3RHcm91cGVkXCIgW2lneEZvclNjcm9sbENvbnRhaW5lcl09XCJncmlkLnBhcmVudFZpcnREaXJcIiBsZXQtY29sSW5kZXg9XCJpbmRleFwiIFtpZ3hGb3JTY3JvbGxPcmllbnRhdGlvbl09XCInaG9yaXpvbnRhbCdcIiBbaWd4Rm9yQ29udGFpbmVyU2l6ZV09J2dyaWQudW5waW5uZWRXaWR0aCcgW2lneEZvclNpemVQcm9wTmFtZV09XCInY2FsY1BpeGVsV2lkdGgnXCIgW2lneEZvclRyYWNrQnldPSdncmlkLnRyYWNrQ29sdW1uQ2hhbmdlcycgI2lneERpclJlZj5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGxUZW1wbGF0ZT5cbiAgICAgICAgPGlneC1ncmlkLWNlbGxcbiAgICAgICAgICAgIGNsYXNzPVwiaWd4LWdyaWRfX3RkIGlneC1ncmlkX190ZC0tZndcIlxuICAgICAgICAgICAgW2NsYXNzLmlneC1ncmlkX190ZC0tZWRpdGVkXT1cImtleSB8IHRyYW5zYWN0aW9uU3RhdGU6Y29sLmZpZWxkOmdyaWQucm93RWRpdGFibGU6Z3JpZC50cmFuc2FjdGlvbnM6Z3JpZC5waXBlVHJpZ2dlcjpncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2UuY2VsbDpncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2Uucm93XCJcbiAgICAgICAgICAgIFtjbGFzcy5pZ3gtZ3JpZF9fdGQtLW51bWJlcl09XCJjb2wuZGF0YVR5cGUgPT09ICdudW1iZXInIHx8IGNvbC5kYXRhVHlwZSA9PT0gJ3BlcmNlbnQnIHx8IGNvbC5kYXRhVHlwZSA9PT0gJ2N1cnJlbmN5J1wiXG4gICAgICAgICAgICBbY2xhc3MuaWd4LWdyaWRfX3RkLS1ib29sXT1cImNvbC5kYXRhVHlwZSA9PT0gJ2Jvb2xlYW4nXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbC5jZWxsQ2xhc3NlcyB8IGlneENlbGxTdHlsZUNsYXNzZXM6ZGF0YVtjb2wuZmllbGRdOmRhdGE6Y29sLmZpZWxkOnZpZXdJbmRleDpncmlkLnBpcGVUcmlnZ2VyXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cImNvbC5jZWxsU3R5bGVzIHwgaWd4Q2VsbFN0eWxlczpkYXRhW2NvbC5maWVsZF06ZGF0YTpjb2wuZmllbGQ6dmlld0luZGV4OmdyaWQucGlwZVRyaWdnZXJcIlxuICAgICAgICAgICAgW2VkaXRNb2RlXT1cImNvbC5lZGl0YWJsZSAmJiB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UudGFyZ2V0SW5FZGl0KGluZGV4LCBjb2wuaW5kZXgpXCJcbiAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sXCJcbiAgICAgICAgICAgIFtmb3JtYXR0ZXJdPVwiY29sLmZvcm1hdHRlclwiXG4gICAgICAgICAgICBbaW50Um93XT1cInRoaXNcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiY2VsbEhlaWdodFwiXG4gICAgICAgICAgICBbcm93RGF0YV09XCJkYXRhXCJcbiAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5mbGV4LWJhc2lzXT1cImNvbC53aWR0aFwiXG4gICAgICAgICAgICBbd2lkdGhdPVwiY29sLmdldENlbGxXaWR0aCgpXCJcbiAgICAgICAgICAgIFt2aXNpYmxlQ29sdW1uSW5kZXhdPVwiY29sLnZpc2libGVJbmRleFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZGF0YSB8IGRhdGFNYXBwZXI6Y29sLmZpZWxkOmdyaWQucGlwZVRyaWdnZXI6ZGF0YVtjb2wuZmllbGRdOmNvbC5oYXNOZXN0ZWRQYXRoXCJcbiAgICAgICAgICAgIFtjZWxsVGVtcGxhdGVdPVwiY29sLmJvZHlUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbY2VsbFZhbGlkYXRpb25FcnJvclRlbXBsYXRlXT1cImNvbC5lcnJvclRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtsYXN0U2VhcmNoSW5mb109XCJncmlkLmxhc3RTZWFyY2hJbmZvXCJcbiAgICAgICAgICAgIFthY3RpdmVdPVwiaXNDZWxsQWN0aXZlKGNvbC52aXNpYmxlSW5kZXgpXCJcbiAgICAgICAgICAgIFtjZWxsU2VsZWN0aW9uTW9kZV09XCJncmlkLmNlbGxTZWxlY3Rpb25cIlxuICAgICAgICAgICAgW2Rpc3BsYXlQaW5uZWRDaGlwXT1cInNob3VsZERpc3BsYXlQaW5uZWRDaGlwKGNvbC52aXNpYmxlSW5kZXgpXCJcbiAgICAgICAgICAgICN0cmVlQ2VsbD5cbiAgICAgICAgPC9pZ3gtZ3JpZC1jZWxsPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICN0cmVlQ2VsbFRlbXBsYXRlPlxuICAgICAgICA8aWd4LXRyZWUtZ3JpZC1jZWxsXG4gICAgICAgICAgICBjbGFzcz1cImlneC1ncmlkX190ZCBpZ3gtZ3JpZF9fdGQtLWZ3IGlneC1ncmlkX190ZC0tdHJlZS1jZWxsXCJcbiAgICAgICAgICAgIFtjbGFzcy5pZ3gtZ3JpZF9fdGQtLWVkaXRlZF09XCJrZXkgfCB0cmFuc2FjdGlvblN0YXRlOmNvbC5maWVsZDpncmlkLnJvd0VkaXRhYmxlOmdyaWQudHJhbnNhY3Rpb25zOmdyaWQucGlwZVRyaWdnZXI6Z3JpZC5ncmlkQVBJLmNydWRTZXJ2aWNlLmNlbGw6Z3JpZC5ncmlkQVBJLmNydWRTZXJ2aWNlLnJvd1wiXG4gICAgICAgICAgICBbY2xhc3MuaWd4LWdyaWRfX3RkLS1udW1iZXJdPVwiKGNvbC5kYXRhVHlwZSA9PT0gJ251bWJlcicgfHwgY29sLmRhdGFUeXBlID09PSAncGVyY2VudCcgfHwgY29sLmRhdGFUeXBlID09PSAnY3VycmVuY3knKSAmJiBjb2wudmlzaWJsZUluZGV4ICE9PSAwXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbC5jZWxsQ2xhc3NlcyB8IGlneENlbGxTdHlsZUNsYXNzZXM6ZGF0YVtjb2wuZmllbGRdOmRhdGE6Y29sLmZpZWxkOnZpZXdJbmRleDpncmlkLnBpcGVUcmlnZ2VyXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cImNvbC5jZWxsU3R5bGVzIHwgaWd4Q2VsbFN0eWxlczpkYXRhW2NvbC5maWVsZF06ZGF0YTpjb2wuZmllbGQ6dmlld0luZGV4OmdyaWQucGlwZVRyaWdnZXJcIlxuICAgICAgICAgICAgW2xldmVsXT1cInRyZWVSb3cubGV2ZWxcIlxuICAgICAgICAgICAgW2V4cGFuZGVkXT1cImV4cGFuZGVkXCJcbiAgICAgICAgICAgIFtzaG93SW5kaWNhdG9yXT1cInNob3dJbmRpY2F0b3JcIlxuICAgICAgICAgICAgW2VkaXRNb2RlXT1cImNvbC5lZGl0YWJsZSAmJiB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UudGFyZ2V0SW5FZGl0KGluZGV4LCBjb2wuaW5kZXgpXCJcbiAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sXCJcbiAgICAgICAgICAgIFtmb3JtYXR0ZXJdPVwiY29sLmZvcm1hdHRlclwiXG4gICAgICAgICAgICBbaW50Um93XT1cInRoaXNcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiY2VsbEhlaWdodFwiXG4gICAgICAgICAgICBbcm93RGF0YV09XCJkYXRhXCJcbiAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5mbGV4LWJhc2lzXT1cImNvbC53aWR0aFwiXG4gICAgICAgICAgICBbd2lkdGhdPVwiY29sLmdldENlbGxXaWR0aCgpXCJcbiAgICAgICAgICAgIFt2aXNpYmxlQ29sdW1uSW5kZXhdPVwiY29sLnZpc2libGVJbmRleFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZGF0YSB8IGRhdGFNYXBwZXI6Y29sLmZpZWxkOmdyaWQucGlwZVRyaWdnZXI6ZGF0YVtjb2wuZmllbGRdOmNvbC5oYXNOZXN0ZWRQYXRoXCJcbiAgICAgICAgICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCJcbiAgICAgICAgICAgIFtjZWxsVGVtcGxhdGVdPVwiY29sLmJvZHlUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbY2VsbFZhbGlkYXRpb25FcnJvclRlbXBsYXRlXT1cImNvbC5lcnJvclRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtsYXN0U2VhcmNoSW5mb109XCJncmlkLmxhc3RTZWFyY2hJbmZvXCJcbiAgICAgICAgICAgIFthY3RpdmVdPVwiaXNDZWxsQWN0aXZlKGNvbC52aXNpYmxlSW5kZXgpXCJcbiAgICAgICAgICAgIFtjZWxsU2VsZWN0aW9uTW9kZV09XCJncmlkLmNlbGxTZWxlY3Rpb25cIlxuICAgICAgICAgICAgW2Rpc3BsYXlQaW5uZWRDaGlwXT1cInNob3VsZERpc3BsYXlQaW5uZWRDaGlwKGNvbC52aXNpYmxlSW5kZXgpXCJcbiAgICAgICAgICAgICN0cmVlQ2VsbD5cbiAgICAgICAgPC9pZ3gtdHJlZS1ncmlkLWNlbGw+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sLnZpc2libGVJbmRleCA9PT0gMCA/IHRyZWVDZWxsVGVtcGxhdGUgOiBjZWxsVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48bmctY29udGFpbmVyICpuZ0lmPVwicGlubmVkQ29sdW1ucy5sZW5ndGggPiAwICYmICFncmlkLmlzUGlubmluZ1RvU3RhcnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGlubmVkQ2VsbHNUZW1wbGF0ZTsgY29udGV4dDogdGhpc1wiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI3Jvd1NlbGVjdG9yQmFzZVRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJpZ3gtZ3JpZF9fY2J4LXBhZGRpbmdcIj5cbiAgICAgICAgPGlneC1jaGVja2JveFxuICAgICAgICAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkXCJcbiAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRlbGV0ZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZVRyYW5zaXRpb25zXT1cImdyaWQuZGlzYWJsZVRyYW5zaXRpb25zXCJcbiAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cInJvd0NoZWNrYm94QXJpYUxhYmVsXCI+XG4gICAgICAgIDwvaWd4LWNoZWNrYm94PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwaW5uZWRDZWxsc1RlbXBsYXRlIGxldC1jb2w+XG4gICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1jb2wgW25nRm9yT2ZdPVwicGlubmVkQ29sdW1ucyB8IGlneE5vdEdyb3VwZWRcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsVGVtcGxhdGU+XG4gICAgICAgICAgICA8aWd4LWdyaWQtY2VsbFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWd4LWdyaWRfX3RkIGlneC1ncmlkX190ZC0tZncgaWd4LWdyaWRfX3RkLS1waW5uZWRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pZ3gtZ3JpZF9fdGQtLWVkaXRlZF09XCJrZXkgfCB0cmFuc2FjdGlvblN0YXRlOmNvbC5maWVsZDpncmlkLnJvd0VkaXRhYmxlOmdyaWQudHJhbnNhY3Rpb25zOmdyaWQucGlwZVRyaWdnZXI6Z3JpZC5ncmlkQVBJLmNydWRTZXJ2aWNlLmNlbGw6Z3JpZC5ncmlkQVBJLmNydWRTZXJ2aWNlLnJvd1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlneC1ncmlkX190ZC0tbnVtYmVyXT1cImNvbC5kYXRhVHlwZSA9PT0gJ251bWJlcicgfHwgY29sLmRhdGFUeXBlID09PSAncGVyY2VudCcgfHwgY29sLmRhdGFUeXBlID09PSAnY3VycmVuY3knXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2wuY2VsbENsYXNzZXMgfCBpZ3hDZWxsU3R5bGVDbGFzc2VzOmRhdGFbY29sLmZpZWxkXTpkYXRhOmNvbC5maWVsZDp2aWV3SW5kZXg6Z3JpZC5waXBlVHJpZ2dlclwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiY29sLmNlbGxTdHlsZXMgfCBpZ3hDZWxsU3R5bGVzOmRhdGFbY29sLmZpZWxkXTpkYXRhOmNvbC5maWVsZDp2aWV3SW5kZXg6Z3JpZC5waXBlVHJpZ2dlclwiXG4gICAgICAgICAgICAgICAgW2VkaXRNb2RlXT1cImNvbC5lZGl0YWJsZSAmJiB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UudGFyZ2V0SW5FZGl0KGluZGV4LCBjb2wuaW5kZXgpXCJcbiAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1hdHRlcl09XCJjb2wuZm9ybWF0dGVyXCJcbiAgICAgICAgICAgICAgICBbaW50Um93XT1cInRoaXNcIlxuICAgICAgICAgICAgICAgIFtmaXJzdFBpbm5lZF09XCJjb2wuaXNGaXJzdFBpbm5lZFwiXG4gICAgICAgICAgICAgICAgW2xhc3RQaW5uZWRdPVwiY29sLmlzTGFzdFBpbm5lZFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiY2VsbEhlaWdodFwiXG4gICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwiZGF0YVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2wud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZmxleC1iYXNpc109XCJjb2wud2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cImNvbC5yaWdodFBpbm5lZE9mZnNldFwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cImNvbC5nZXRDZWxsV2lkdGgoKVwiXG4gICAgICAgICAgICAgICAgW3Zpc2libGVDb2x1bW5JbmRleF09XCJjb2wudmlzaWJsZUluZGV4XCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YSB8IGRhdGFNYXBwZXI6Y29sLmZpZWxkOmdyaWQucGlwZVRyaWdnZXI6ZGF0YVtjb2wuZmllbGRdOmNvbC5oYXNOZXN0ZWRQYXRoXCJcbiAgICAgICAgICAgICAgICBbY2VsbFRlbXBsYXRlXT1cImNvbC5ib2R5VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtjZWxsVmFsaWRhdGlvbkVycm9yVGVtcGxhdGVdPVwiY29sLmVycm9yVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtsYXN0U2VhcmNoSW5mb109XCJncmlkLmxhc3RTZWFyY2hJbmZvXCJcbiAgICAgICAgICAgICAgICBbYWN0aXZlXT1cImlzQ2VsbEFjdGl2ZShjb2wudmlzaWJsZUluZGV4KVwiXG4gICAgICAgICAgICAgICAgW2NlbGxTZWxlY3Rpb25Nb2RlXT1cImdyaWQuY2VsbFNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgW2Rpc3BsYXlQaW5uZWRDaGlwXT1cInNob3VsZERpc3BsYXlQaW5uZWRDaGlwKGNvbC52aXNpYmxlSW5kZXgpXCJcbiAgICAgICAgICAgICAgICAjdHJlZUNlbGw+XG4gICAgICAgICAgICA8L2lneC1ncmlkLWNlbGw+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RyZWVDZWxsVGVtcGxhdGU+XG4gICAgICAgICAgICA8aWd4LXRyZWUtZ3JpZC1jZWxsXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpZ3gtZ3JpZF9fdGQgaWd4LWdyaWRfX3RkLS1mdyBpZ3gtZ3JpZF9fdGQtLXRyZWUtY2VsbCBpZ3gtZ3JpZF9fdGQtLXBpbm5lZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlneC1ncmlkX190ZC0tZWRpdGVkXT1cImtleSB8IHRyYW5zYWN0aW9uU3RhdGU6Y29sLmZpZWxkOmdyaWQucm93RWRpdGFibGU6Z3JpZC50cmFuc2FjdGlvbnM6Z3JpZC5waXBlVHJpZ2dlcjpncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2UuY2VsbDpncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2Uucm93XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaWd4LWdyaWRfX3RkLS1udW1iZXJdPVwiKGNvbC5kYXRhVHlwZSA9PT0gJ251bWJlcicgfHwgY29sLmRhdGFUeXBlID09PSAncGVyY2VudCcgfHwgY29sLmRhdGFUeXBlID09PSAnY3VycmVuY3knKSAmJiBjb2wudmlzaWJsZUluZGV4ICE9PSAwXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2wuY2VsbENsYXNzZXMgfCBpZ3hDZWxsU3R5bGVDbGFzc2VzOmRhdGFbY29sLmZpZWxkXTpkYXRhOmNvbC5maWVsZDp2aWV3SW5kZXg6Z3JpZC5waXBlVHJpZ2dlclwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiY29sLmNlbGxTdHlsZXMgfCBpZ3hDZWxsU3R5bGVzOmRhdGFbY29sLmZpZWxkXTpkYXRhOmNvbC5maWVsZDp2aWV3SW5kZXg6Z3JpZC5waXBlVHJpZ2dlclwiXG4gICAgICAgICAgICAgICAgW2xldmVsXT1cInRyZWVSb3cubGV2ZWxcIlxuICAgICAgICAgICAgICAgIFtleHBhbmRlZF09XCJleHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgW3Nob3dJbmRpY2F0b3JdPVwic2hvd0luZGljYXRvclwiXG4gICAgICAgICAgICAgICAgW2VkaXRNb2RlXT1cImNvbC5lZGl0YWJsZSAmJiB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UudGFyZ2V0SW5FZGl0KGluZGV4LCBjb2wuaW5kZXgpXCJcbiAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1hdHRlcl09XCJjb2wuZm9ybWF0dGVyXCJcbiAgICAgICAgICAgICAgICBbaW50Um93XT1cInRoaXNcIlxuICAgICAgICAgICAgICAgIFtsYXN0UGlubmVkXT1cImNvbC5pc0xhc3RQaW5uZWRcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImNlbGxIZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtyb3dEYXRhXT1cImRhdGFcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoXT1cImNvbC53aWR0aFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZsZXgtYmFzaXNdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubGVmdF09XCJjb2wucmlnaHRQaW5uZWRPZmZzZXRcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCJjb2wuZ2V0Q2VsbFdpZHRoKClcIlxuICAgICAgICAgICAgICAgIFt2aXNpYmxlQ29sdW1uSW5kZXhdPVwiY29sLnZpc2libGVJbmRleFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEgfCBkYXRhTWFwcGVyOmNvbC5maWVsZDpncmlkLnBpcGVUcmlnZ2VyOmRhdGFbY29sLmZpZWxkXTpjb2wuaGFzTmVzdGVkUGF0aFwiXG4gICAgICAgICAgICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgIFtjZWxsVGVtcGxhdGVdPVwiY29sLmJvZHlUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2NlbGxWYWxpZGF0aW9uRXJyb3JUZW1wbGF0ZV09XCJjb2wuZXJyb3JUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2xhc3RTZWFyY2hJbmZvXT1cImdyaWQubGFzdFNlYXJjaEluZm9cIlxuICAgICAgICAgICAgICAgIFthY3RpdmVdPVwiaXNDZWxsQWN0aXZlKGNvbC52aXNpYmxlSW5kZXgpXCJcbiAgICAgICAgICAgICAgICBbY2VsbFNlbGVjdGlvbk1vZGVdPVwiZ3JpZC5jZWxsU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICBbZGlzcGxheVBpbm5lZENoaXBdPVwic2hvdWxkRGlzcGxheVBpbm5lZENoaXAoY29sLnZpc2libGVJbmRleClcIlxuICAgICAgICAgICAgICAgICN0cmVlQ2VsbD5cbiAgICAgICAgICAgIDwvaWd4LXRyZWUtZ3JpZC1jZWxsPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sLnZpc2libGVJbmRleCA9PT0gMCA/IHRyZWVDZWxsVGVtcGxhdGUgOiBjZWxsVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ncmlkLXJvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvdHJlZS1ncmlkL3RyZWUtZ3JpZC1yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL3RyZWUtZ3JpZC90cmVlLWdyaWQtcm93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQWEsV0FBVyxFQUFXLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7O0FBU25ELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxlQUFlO0lBV3hEOzs7Ozs7O09BT0c7SUFDSCxJQUNXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsT0FBTyxDQUFDLEtBQXNCO1FBQ3JDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxLQUFLLEVBQUU7WUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztTQUNsQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFvQixNQUFNLENBQUMsS0FBYztRQUNyQyxJQUFJLEtBQUssRUFBRTtZQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM5QjthQUFNO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdB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QUZyQixDQUFDLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyx3SUNSckcsb3NWQWdMQTsyRkR0S2EsdUJBQXVCO2tCQU5uQyxTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0sWUFDckMsbUJBQW1CLGFBRWxCLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDLEVBQUUsQ0FBQzs4QkFJOUUsTUFBTTtzQkFEeEIsWUFBWTt1QkFBQyxVQUFVO2dCQW1CYixPQUFPO3NCQURqQixLQUFLO2dCQWlFYyxRQUFRO3NCQUQzQixXQUFXO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBIb3N0QmluZGluZywgRG9DaGVjaywgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneFJvd0RpcmVjdGl2ZSB9IGZyb20gJy4uL3Jvdy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSVRyZWVHcmlkUmVjb3JkIH0gZnJvbSAnLi90cmVlLWdyaWQuaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnaWd4LXRyZWUtZ3JpZC1yb3cnLFxuICAgIHRlbXBsYXRlVXJsOiAndHJlZS1ncmlkLXJvdy5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJZ3hSb3dEaXJlY3RpdmUsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElneFRyZWVHcmlkUm93Q29tcG9uZW50KSB9XVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hUcmVlR3JpZFJvd0NvbXBvbmVudCBleHRlbmRzIElneFJvd0RpcmVjdGl2ZSBpbXBsZW1lbnRzIERvQ2hlY2sge1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RyZWVDZWxsJylcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX2NlbGxzOiBRdWVyeUxpc3Q8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBfdHJlZVJvdzogSVRyZWVHcmlkUmVjb3JkO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGBJVHJlZUdyaWRSZWNvcmRgIHBhc3NlZCB0byB0aGUgcm93IGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCByb3cgPSB0aGlzLmdyaWQuZ2V0Um93QnlLZXkoMSkgYXMgSWd4VHJlZUdyaWRSb3dDb21wb25lbnQ7XG4gICAgICogY29uc3QgdHJlZVJvdyA9IHJvdy50cmVlUm93O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCB0cmVlUm93KCk6IElUcmVlR3JpZFJlY29yZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmVlUm93O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdHJlZVJvdyh2YWx1ZTogSVRyZWVHcmlkUmVjb3JkKSB7XG4gICAgICAgIGlmICh0aGlzLl90cmVlUm93ICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdHJlZVJvdyA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5fdHJlZVJvdy5kYXRhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB3aGV0aGVyIHRoZSByb3cgaXMgcGlubmVkLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgYGZhbHNlYC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5ncmlkLnNlbGVjdGVkUm93c1swXS5waW5uZWQgPSB0cnVlO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBzZXQgcGlubmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5ncmlkLnBpblJvdyh0aGlzLmtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQudW5waW5Sb3codGhpcy5rZXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB3aGV0aGVyIHRoZSByb3cgaXMgcGlubmVkLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgaXNQaW5uZWQgPSByb3cucGlubmVkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgcGlubmVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmlzUmVjb3JkUGlubmVkKHRoaXMuX3RyZWVSb3cpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGlzUm9vdCgpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHRyZWVSZWMgPSB0aGlzLnRyZWVSb3c7XG4gICAgICAgIGNvbnN0IGlzUGlubmVkQXJlYSA9IHRoaXMucGlubmVkICYmICF0aGlzLmRpc2FibGVkO1xuICAgICAgICBpZiAoaXNQaW5uZWRBcmVhKSB7XG4gICAgICAgICAgICB0cmVlUmVjID0gdGhpcy5ncmlkLnVucGlubmVkUmVjb3Jkcy5maW5kKHggPT4geC5kYXRhID09PSB0aGlzLmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cmVlUmVjPy5sZXZlbCA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBoYXNDaGlsZHJlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgcm93IGNvbXBvbmVudCBpcyBleHBhbmRlZC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCByb3cgPSB0aGlzLmdyaWQuZ2V0Um93QnlLZXkoMSkgYXMgSWd4VHJlZUdyaWRSb3dDb21wb25lbnQ7XG4gICAgICogY29uc3QgZXhwYW5kZWQgPSByb3cuZXhwYW5kZWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZXhwYW5kZWQnKVxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmVlUm93LmV4cGFuZGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHJvdyBjb21wb25lbnQgaXMgZXhwYW5kZWQuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogY29uc3Qgcm93ID0gdGhpcy5ncmlkLmdldFJvd0J5S2V5KDEpIGFzIElneFRyZWVHcmlkUm93Q29tcG9uZW50O1xuICAgICAqIHJvdy5leHBhbmRlZCA9IHRydWU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHNldCBleHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmdyaWQuZ3JpZEFQSS5zZXRfcm93X2V4cGFuc2lvbl9zdGF0ZSh0aGlzLl90cmVlUm93LmtleSwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHZpZXdJbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmRleCArIHRoaXMuZ3JpZC5wYWdlICogdGhpcy5ncmlkLnBlclBhZ2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2hvd0luZGljYXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5sb2FkQ2hpbGRyZW5PbkRlbWFuZCA/XG4gICAgICAgICAgICB0aGlzLmdyaWQuZXhwYW5zaW9uU3RhdGVzLmhhcyh0aGlzLmtleSkgP1xuICAgICAgICAgICAgICAgIHRoaXMudHJlZVJvdy5jaGlsZHJlbiAmJiB0aGlzLnRyZWVSb3cuY2hpbGRyZW4ubGVuZ3RoIDpcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWQuaGFzQ2hpbGRyZW5LZXkgP1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFbdGhpcy5ncmlkLmhhc0NoaWxkcmVuS2V5XSA6XG4gICAgICAgICAgICAgICAgICAgIHRydWUgOlxuICAgICAgICAgICAgdGhpcy50cmVlUm93LmNoaWxkcmVuICYmIHRoaXMudHJlZVJvdy5jaGlsZHJlbi5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaW5kZXRlcm1pbmF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uU2VydmljZS5pc1Jvd0luSW5kZXRlcm1pbmF0ZVN0YXRlKHRoaXMua2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5nRG9DaGVjaygpIHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0aGlzLmdyaWQubG9hZENoaWxkcmVuT25EZW1hbmQgPyB0aGlzLmdyaWQubG9hZGluZ1Jvd3MuaGFzKHRoaXMua2V5KSA6IGZhbHNlO1xuICAgICAgICBzdXBlci5uZ0RvQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTcGF3bnMgdGhlIGFkZCBjaGlsZCByb3cgVUkgZm9yIHRoZSBzcGVjaWZpYyByb3cuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCByb3cgPSB0aGlzLmdyaWQuZ2V0Um93QnlLZXkoMSkgYXMgSWd4VHJlZUdyaWRSb3dDb21wb25lbnQ7XG4gICAgICogcm93LmJlZ2luQWRkQ2hpbGQoKTtcbiAgICAgKiBgYGBcbiAgICAgKiBAcGFyYW0gcm93SURcbiAgICAgKi9cbiAgICBwdWJsaWMgYmVnaW5BZGRDaGlsZCgpIHtcbiAgICAgICAgdGhpcy5ncmlkLmNydWRTZXJ2aWNlLmVudGVyQWRkUm93TW9kZSh0aGlzLCB0cnVlKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PSdhZGRSb3dVSSA/IGFkZFRlbXAgOiBkZWZhdWx0VGVtcCc+PC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjYWRkVGVtcD5cbiAgICA8ZGl2IGNsYXNzPSdpZ3gtZ3JpZF9fdHItLWlubmVyJyBbY2xhc3MuaWd4LWdyaWRfX3RyLS1hZGQtYW5pbWF0ZV09J3RyaWdnZXJBZGRBbmltYXRpb25DbGFzcycgKGFuaW1hdGlvbmVuZCk9J2FuaW1hdGlvbkVuZEhhbmRsZXIoKSc+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9J2RlZmF1bHRUZW1wJz48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2RlZmF1bHRUZW1wPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd0RyYWdnYWJsZVwiPlxuICAgIDxkaXYgW2NsYXNzXT1cInJlc29sdmVEcmFnSW5kaWNhdG9yQ2xhc3Nlc1wiIFtpZ3hSb3dEcmFnXT1cInRoaXNcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgW2dob3N0VGVtcGxhdGVdPVwidGhpcy5ncmlkLmdldERyYWdHaG9zdEN1c3RvbVRlbXBsYXRlKClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRoaXMuZ3JpZC5kcmFnSW5kaWNhdG9ySWNvblRlbXBsYXRlID8gdGhpcy5ncmlkLmRyYWdJbmRpY2F0b3JJY29uVGVtcGxhdGUgOiB0aGlzLmdyaWQuZHJhZ0luZGljYXRvckljb25CYXNlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93Um93U2VsZWN0b3JzXCI+XG4gICAgPGRpdiBjbGFzcz1cImlneC1ncmlkX19jYngtc2VsZWN0aW9uIGlneC1ncmlkX190ci1hY3Rpb25cIiAoY2xpY2spPVwib25Sb3dTZWxlY3RvckNsaWNrKCRldmVudClcIiAocG9pbnRlcmRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICB0aGlzLmdyaWQucm93U2VsZWN0b3JUZW1wbGF0ZSA/IHRoaXMuZ3JpZC5yb3dTZWxlY3RvclRlbXBsYXRlIDogcm93U2VsZWN0b3JCYXNlVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyBpbmRleDogdmlld0luZGV4LCByb3dJRDoga2V5LCBrZXksIHNlbGVjdGVkOiBzZWxlY3RlZCB9fVwiPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwicGlubmVkQ29sdW1ucy5sZW5ndGggPiAwICYmIGdyaWQuaXNQaW5uaW5nVG9TdGFydFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwaW5uZWRDZWxsc1RlbXBsYXRlOyBjb250ZXh0OiB0aGlzXCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbjxuZy10ZW1wbGF0ZSBpZ3hHcmlkRm9yIGxldC1jb2wgW2lneEdyaWRGb3JPZl09XCJ1bnBpbm5lZENvbHVtbnMgfCBpZ3hOb3RHcm91cGVkXCIgW2lneEZvclNjcm9sbENvbnRhaW5lcl09XCJncmlkLnBhcmVudFZpcnREaXJcIiBsZXQtY29sSW5kZXg9XCJpbmRleFwiIFtpZ3hGb3JTY3JvbGxPcmllbnRhdGlvbl09XCInaG9yaXpvbnRhbCdcIiBbaWd4Rm9yQ29udGFpbmVyU2l6ZV09J2dyaWQudW5waW5uZWRXaWR0aCcgW2lneEZvclNpemVQcm9wTmFtZV09XCInY2FsY1BpeGVsV2lkdGgnXCIgW2lneEZvclRyYWNrQnldPSdncmlkLnRyYWNrQ29sdW1uQ2hhbmdlcycgI2lneERpclJlZj5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGxUZW1wbGF0ZT5cbiAgICAgICAgPGlneC1ncmlkLWNlbGxcbiAgICAgICAgICAgIGNsYXNzPVwiaWd4LWdyaWRfX3RkIGlneC1ncmlkX190ZC0tZndcIlxuICAgICAgICAgICAgW2NsYXNzLmlneC1ncmlkX190ZC0tZWRpdGVkXT1cImtleSB8IHRyYW5zYWN0aW9uU3RhdGU6Y29sLmZpZWxkOmdyaWQucm93RWRpdGFibGU6Z3JpZC50cmFuc2FjdGlvbnM6Z3JpZC5waXBlVHJpZ2dlcjpncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2UuY2VsbDpncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2Uucm93XCJcbiAgICAgICAgICAgIFtjbGFzcy5pZ3gtZ3JpZF9fdGQtLW51bWJlcl09XCJjb2wuZGF0YVR5cGUgPT09ICdudW1iZXInIHx8IGNvbC5kYXRhVHlwZSA9PT0gJ3BlcmNlbnQnIHx8IGNvbC5kYXRhVHlwZSA9PT0gJ2N1cnJlbmN5J1wiXG4gICAgICAgICAgICBbY2xhc3MuaWd4LWdyaWRfX3RkLS1ib29sXT1cImNvbC5kYXRhVHlwZSA9PT0gJ2Jvb2xlYW4nXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbC5jZWxsQ2xhc3NlcyB8IGlneENlbGxTdHlsZUNsYXNzZXM6ZGF0YVtjb2wuZmllbGRdOmRhdGE6Y29sLmZpZWxkOnZpZXdJbmRleDpncmlkLnBpcGVUcmlnZ2VyXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cImNvbC5jZWxsU3R5bGVzIHwgaWd4Q2VsbFN0eWxlczpkYXRhW2NvbC5maWVsZF06ZGF0YTpjb2wuZmllbGQ6dmlld0luZGV4OmdyaWQucGlwZVRyaWdnZXJcIlxuICAgICAgICAgICAgW2VkaXRNb2RlXT1cImNvbC5lZGl0YWJsZSAmJiB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UudGFyZ2V0SW5FZGl0KGluZGV4LCBjb2wuaW5kZXgpXCJcbiAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sXCJcbiAgICAgICAgICAgIFtmb3JtYXR0ZXJdPVwiY29sLmZvcm1hdHRlclwiXG4gICAgICAgICAgICBbaW50Um93XT1cInRoaXNcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiY2VsbEhlaWdodFwiXG4gICAgICAgICAgICBbcm93RGF0YV09XCJkYXRhXCJcbiAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sLnJlc29sdmVkV2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2wucmVzb2x2ZWRXaWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUuZmxleC1iYXNpc109XCJjb2wucmVzb2x2ZWRXaWR0aFwiXG4gICAgICAgICAgICBbd2lkdGhdPVwiY29sLmdldENlbGxXaWR0aCgpXCJcbiAgICAgICAgICAgIFt2aXNpYmxlQ29sdW1uSW5kZXhdPVwiY29sLnZpc2libGVJbmRleFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZGF0YSB8IGRhdGFNYXBwZXI6Y29sLmZpZWxkOmdyaWQucGlwZVRyaWdnZXI6ZGF0YVtjb2wuZmllbGRdOmNvbC5oYXNOZXN0ZWRQYXRoXCJcbiAgICAgICAgICAgIFtjZWxsVGVtcGxhdGVdPVwiY29sLmJvZHlUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbY2VsbFZhbGlkYXRpb25FcnJvclRlbXBsYXRlXT1cImNvbC5lcnJvclRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtsYXN0U2VhcmNoSW5mb109XCJncmlkLmxhc3RTZWFyY2hJbmZvXCJcbiAgICAgICAgICAgIFthY3RpdmVdPVwiaXNDZWxsQWN0aXZlKGNvbC52aXNpYmxlSW5kZXgpXCJcbiAgICAgICAgICAgIFtjZWxsU2VsZWN0aW9uTW9kZV09XCJncmlkLmNlbGxTZWxlY3Rpb25cIlxuICAgICAgICAgICAgW2Rpc3BsYXlQaW5uZWRDaGlwXT1cInNob3VsZERpc3BsYXlQaW5uZWRDaGlwKGNvbC52aXNpYmxlSW5kZXgpXCJcbiAgICAgICAgICAgICN0cmVlQ2VsbD5cbiAgICAgICAgPC9pZ3gtZ3JpZC1jZWxsPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICN0cmVlQ2VsbFRlbXBsYXRlPlxuICAgICAgICA8aWd4LXRyZWUtZ3JpZC1jZWxsXG4gICAgICAgICAgICBjbGFzcz1cImlneC1ncmlkX190ZCBpZ3gtZ3JpZF9fdGQtLWZ3IGlneC1ncmlkX190ZC0tdHJlZS1jZWxsXCJcbiAgICAgICAgICAgIFtjbGFzcy5pZ3gtZ3JpZF9fdGQtLWVkaXRlZF09XCJrZXkgfCB0cmFuc2FjdGlvblN0YXRlOmNvbC5maWVsZDpncmlkLnJvd0VkaXRhYmxlOmdyaWQudHJhbnNhY3Rpb25zOmdyaWQucGlwZVRyaWdnZXI6Z3JpZC5ncmlkQVBJLmNydWRTZXJ2aWNlLmNlbGw6Z3JpZC5ncmlkQVBJLmNydWRTZXJ2aWNlLnJvd1wiXG4gICAgICAgICAgICBbY2xhc3MuaWd4LWdyaWRfX3RkLS1udW1iZXJdPVwiKGNvbC5kYXRhVHlwZSA9PT0gJ251bWJlcicgfHwgY29sLmRhdGFUeXBlID09PSAncGVyY2VudCcgfHwgY29sLmRhdGFUeXBlID09PSAnY3VycmVuY3knKSAmJiBjb2wudmlzaWJsZUluZGV4ICE9PSAwXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbC5jZWxsQ2xhc3NlcyB8IGlneENlbGxTdHlsZUNsYXNzZXM6ZGF0YVtjb2wuZmllbGRdOmRhdGE6Y29sLmZpZWxkOnZpZXdJbmRleDpncmlkLnBpcGVUcmlnZ2VyXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cImNvbC5jZWxsU3R5bGVzIHwgaWd4Q2VsbFN0eWxlczpkYXRhW2NvbC5maWVsZF06ZGF0YTpjb2wuZmllbGQ6dmlld0luZGV4OmdyaWQucGlwZVRyaWdnZXJcIlxuICAgICAgICAgICAgW2xldmVsXT1cInRyZWVSb3cubGV2ZWxcIlxuICAgICAgICAgICAgW2V4cGFuZGVkXT1cImV4cGFuZGVkXCJcbiAgICAgICAgICAgIFtzaG93SW5kaWNhdG9yXT1cInNob3dJbmRpY2F0b3JcIlxuICAgICAgICAgICAgW2VkaXRNb2RlXT1cImNvbC5lZGl0YWJsZSAmJiB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UudGFyZ2V0SW5FZGl0KGluZGV4LCBjb2wuaW5kZXgpXCJcbiAgICAgICAgICAgIFtjb2x1bW5dPVwiY29sXCJcbiAgICAgICAgICAgIFtmb3JtYXR0ZXJdPVwiY29sLmZvcm1hdHRlclwiXG4gICAgICAgICAgICBbaW50Um93XT1cInRoaXNcIlxuICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiY2VsbEhlaWdodFwiXG4gICAgICAgICAgICBbcm93RGF0YV09XCJkYXRhXCJcbiAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sLnJlc29sdmVkV2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2wucmVzb2x2ZWRXaWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUuZmxleC1iYXNpc109XCJjb2wucmVzb2x2ZWRXaWR0aFwiXG4gICAgICAgICAgICBbd2lkdGhdPVwiY29sLmdldENlbGxXaWR0aCgpXCJcbiAgICAgICAgICAgIFt2aXNpYmxlQ29sdW1uSW5kZXhdPVwiY29sLnZpc2libGVJbmRleFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiZGF0YSB8IGRhdGFNYXBwZXI6Y29sLmZpZWxkOmdyaWQucGlwZVRyaWdnZXI6ZGF0YVtjb2wuZmllbGRdOmNvbC5oYXNOZXN0ZWRQYXRoXCJcbiAgICAgICAgICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCJcbiAgICAgICAgICAgIFtjZWxsVGVtcGxhdGVdPVwiY29sLmJvZHlUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbY2VsbFZhbGlkYXRpb25FcnJvclRlbXBsYXRlXT1cImNvbC5lcnJvclRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtsYXN0U2VhcmNoSW5mb109XCJncmlkLmxhc3RTZWFyY2hJbmZvXCJcbiAgICAgICAgICAgIFthY3RpdmVdPVwiaXNDZWxsQWN0aXZlKGNvbC52aXNpYmxlSW5kZXgpXCJcbiAgICAgICAgICAgIFtjZWxsU2VsZWN0aW9uTW9kZV09XCJncmlkLmNlbGxTZWxlY3Rpb25cIlxuICAgICAgICAgICAgW2Rpc3BsYXlQaW5uZWRDaGlwXT1cInNob3VsZERpc3BsYXlQaW5uZWRDaGlwKGNvbC52aXNpYmxlSW5kZXgpXCJcbiAgICAgICAgICAgICN0cmVlQ2VsbD5cbiAgICAgICAgPC9pZ3gtdHJlZS1ncmlkLWNlbGw+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sLnZpc2libGVJbmRleCA9PT0gMCA/IHRyZWVDZWxsVGVtcGxhdGUgOiBjZWxsVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48bmctY29udGFpbmVyICpuZ0lmPVwicGlubmVkQ29sdW1ucy5sZW5ndGggPiAwICYmICFncmlkLmlzUGlubmluZ1RvU3RhcnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGlubmVkQ2VsbHNUZW1wbGF0ZTsgY29udGV4dDogdGhpc1wiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI3Jvd1NlbGVjdG9yQmFzZVRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJpZ3gtZ3JpZF9fY2J4LXBhZGRpbmdcIj5cbiAgICAgICAgPGlneC1jaGVja2JveFxuICAgICAgICAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkXCJcbiAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRlbGV0ZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZVRyYW5zaXRpb25zXT1cImdyaWQuZGlzYWJsZVRyYW5zaXRpb25zXCJcbiAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cInJvd0NoZWNrYm94QXJpYUxhYmVsXCI+XG4gICAgICAgIDwvaWd4LWNoZWNrYm94PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwaW5uZWRDZWxsc1RlbXBsYXRlIGxldC1jb2w+XG4gICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1jb2wgW25nRm9yT2ZdPVwicGlubmVkQ29sdW1ucyB8IGlneE5vdEdyb3VwZWRcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsVGVtcGxhdGU+XG4gICAgICAgICAgICA8aWd4LWdyaWQtY2VsbFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWd4LWdyaWRfX3RkIGlneC1ncmlkX190ZC0tZncgaWd4LWdyaWRfX3RkLS1waW5uZWRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5pZ3gtZ3JpZF9fdGQtLWVkaXRlZF09XCJrZXkgfCB0cmFuc2FjdGlvblN0YXRlOmNvbC5maWVsZDpncmlkLnJvd0VkaXRhYmxlOmdyaWQudHJhbnNhY3Rpb25zOmdyaWQucGlwZVRyaWdnZXI6Z3JpZC5ncmlkQVBJLmNydWRTZXJ2aWNlLmNlbGw6Z3JpZC5ncmlkQVBJLmNydWRTZXJ2aWNlLnJvd1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlneC1ncmlkX190ZC0tbnVtYmVyXT1cImNvbC5kYXRhVHlwZSA9PT0gJ251bWJlcicgfHwgY29sLmRhdGFUeXBlID09PSAncGVyY2VudCcgfHwgY29sLmRhdGFUeXBlID09PSAnY3VycmVuY3knXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2wuY2VsbENsYXNzZXMgfCBpZ3hDZWxsU3R5bGVDbGFzc2VzOmRhdGFbY29sLmZpZWxkXTpkYXRhOmNvbC5maWVsZDp2aWV3SW5kZXg6Z3JpZC5waXBlVHJpZ2dlclwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiY29sLmNlbGxTdHlsZXMgfCBpZ3hDZWxsU3R5bGVzOmRhdGFbY29sLmZpZWxkXTpkYXRhOmNvbC5maWVsZDp2aWV3SW5kZXg6Z3JpZC5waXBlVHJpZ2dlclwiXG4gICAgICAgICAgICAgICAgW2VkaXRNb2RlXT1cImNvbC5lZGl0YWJsZSAmJiB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UudGFyZ2V0SW5FZGl0KGluZGV4LCBjb2wuaW5kZXgpXCJcbiAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1hdHRlcl09XCJjb2wuZm9ybWF0dGVyXCJcbiAgICAgICAgICAgICAgICBbaW50Um93XT1cInRoaXNcIlxuICAgICAgICAgICAgICAgIFtmaXJzdFBpbm5lZF09XCJjb2wuaXNGaXJzdFBpbm5lZFwiXG4gICAgICAgICAgICAgICAgW2xhc3RQaW5uZWRdPVwiY29sLmlzTGFzdFBpbm5lZFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiY2VsbEhlaWdodFwiXG4gICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwiZGF0YVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCJjb2wucmVzb2x2ZWRXaWR0aFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aF09XCJjb2wucmVzb2x2ZWRXaWR0aFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZsZXgtYmFzaXNdPVwiY29sLnJlc29sdmVkV2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cImNvbC5yaWdodFBpbm5lZE9mZnNldFwiXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cImNvbC5nZXRDZWxsV2lkdGgoKVwiXG4gICAgICAgICAgICAgICAgW3Zpc2libGVDb2x1bW5JbmRleF09XCJjb2wudmlzaWJsZUluZGV4XCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YSB8IGRhdGFNYXBwZXI6Y29sLmZpZWxkOmdyaWQucGlwZVRyaWdnZXI6ZGF0YVtjb2wuZmllbGRdOmNvbC5oYXNOZXN0ZWRQYXRoXCJcbiAgICAgICAgICAgICAgICBbY2VsbFRlbXBsYXRlXT1cImNvbC5ib2R5VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtjZWxsVmFsaWRhdGlvbkVycm9yVGVtcGxhdGVdPVwiY29sLmVycm9yVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtsYXN0U2VhcmNoSW5mb109XCJncmlkLmxhc3RTZWFyY2hJbmZvXCJcbiAgICAgICAgICAgICAgICBbYWN0aXZlXT1cImlzQ2VsbEFjdGl2ZShjb2wudmlzaWJsZUluZGV4KVwiXG4gICAgICAgICAgICAgICAgW2NlbGxTZWxlY3Rpb25Nb2RlXT1cImdyaWQuY2VsbFNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgW2Rpc3BsYXlQaW5uZWRDaGlwXT1cInNob3VsZERpc3BsYXlQaW5uZWRDaGlwKGNvbC52aXNpYmxlSW5kZXgpXCJcbiAgICAgICAgICAgICAgICAjdHJlZUNlbGw+XG4gICAgICAgICAgICA8L2lneC1ncmlkLWNlbGw+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RyZWVDZWxsVGVtcGxhdGU+XG4gICAgICAgICAgICA8aWd4LXRyZWUtZ3JpZC1jZWxsXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpZ3gtZ3JpZF9fdGQgaWd4LWdyaWRfX3RkLS1mdyBpZ3gtZ3JpZF9fdGQtLXRyZWUtY2VsbCBpZ3gtZ3JpZF9fdGQtLXBpbm5lZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmlneC1ncmlkX190ZC0tZWRpdGVkXT1cImtleSB8IHRyYW5zYWN0aW9uU3RhdGU6Y29sLmZpZWxkOmdyaWQucm93RWRpdGFibGU6Z3JpZC50cmFuc2FjdGlvbnM6Z3JpZC5waXBlVHJpZ2dlcjpncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2UuY2VsbDpncmlkLmdyaWRBUEkuY3J1ZFNlcnZpY2Uucm93XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaWd4LWdyaWRfX3RkLS1udW1iZXJdPVwiKGNvbC5kYXRhVHlwZSA9PT0gJ251bWJlcicgfHwgY29sLmRhdGFUeXBlID09PSAncGVyY2VudCcgfHwgY29sLmRhdGFUeXBlID09PSAnY3VycmVuY3knKSAmJiBjb2wudmlzaWJsZUluZGV4ICE9PSAwXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb2wuY2VsbENsYXNzZXMgfCBpZ3hDZWxsU3R5bGVDbGFzc2VzOmRhdGFbY29sLmZpZWxkXTpkYXRhOmNvbC5maWVsZDp2aWV3SW5kZXg6Z3JpZC5waXBlVHJpZ2dlclwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiY29sLmNlbGxTdHlsZXMgfCBpZ3hDZWxsU3R5bGVzOmRhdGFbY29sLmZpZWxkXTpkYXRhOmNvbC5maWVsZDp2aWV3SW5kZXg6Z3JpZC5waXBlVHJpZ2dlclwiXG4gICAgICAgICAgICAgICAgW2xldmVsXT1cInRyZWVSb3cubGV2ZWxcIlxuICAgICAgICAgICAgICAgIFtleHBhbmRlZF09XCJleHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgW3Nob3dJbmRpY2F0b3JdPVwic2hvd0luZGljYXRvclwiXG4gICAgICAgICAgICAgICAgW2VkaXRNb2RlXT1cImNvbC5lZGl0YWJsZSAmJiB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UudGFyZ2V0SW5FZGl0KGluZGV4LCBjb2wuaW5kZXgpXCJcbiAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbFwiXG4gICAgICAgICAgICAgICAgW2Zvcm1hdHRlcl09XCJjb2wuZm9ybWF0dGVyXCJcbiAgICAgICAgICAgICAgICBbaW50Um93XT1cInRoaXNcIlxuICAgICAgICAgICAgICAgIFtsYXN0UGlubmVkXT1cImNvbC5pc0xhc3RQaW5uZWRcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImNlbGxIZWlnaHRcIlxuICAgICAgICAgICAgICAgIFtyb3dEYXRhXT1cImRhdGFcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGhdPVwiY29sLnJlc29sdmVkV2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiY29sLnJlc29sdmVkV2lkdGhcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5mbGV4LWJhc2lzXT1cImNvbC5yZXNvbHZlZFdpZHRoXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUubGVmdF09XCJjb2wucmlnaHRQaW5uZWRPZmZzZXRcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCJjb2wuZ2V0Q2VsbFdpZHRoKClcIlxuICAgICAgICAgICAgICAgIFt2aXNpYmxlQ29sdW1uSW5kZXhdPVwiY29sLnZpc2libGVJbmRleFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGEgfCBkYXRhTWFwcGVyOmNvbC5maWVsZDpncmlkLnBpcGVUcmlnZ2VyOmRhdGFbY29sLmZpZWxkXTpjb2wuaGFzTmVzdGVkUGF0aFwiXG4gICAgICAgICAgICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgIFtjZWxsVGVtcGxhdGVdPVwiY29sLmJvZHlUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2NlbGxWYWxpZGF0aW9uRXJyb3JUZW1wbGF0ZV09XCJjb2wuZXJyb3JUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2xhc3RTZWFyY2hJbmZvXT1cImdyaWQubGFzdFNlYXJjaEluZm9cIlxuICAgICAgICAgICAgICAgIFthY3RpdmVdPVwiaXNDZWxsQWN0aXZlKGNvbC52aXNpYmxlSW5kZXgpXCJcbiAgICAgICAgICAgICAgICBbY2VsbFNlbGVjdGlvbk1vZGVdPVwiZ3JpZC5jZWxsU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICBbZGlzcGxheVBpbm5lZENoaXBdPVwic2hvdWxkRGlzcGxheVBpbm5lZENoaXAoY29sLnZpc2libGVJbmRleClcIlxuICAgICAgICAgICAgICAgICN0cmVlQ2VsbD5cbiAgICAgICAgICAgIDwvaWd4LXRyZWUtZ3JpZC1jZWxsPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sLnZpc2libGVJbmRleCA9PT0gMCA/IHRyZWVDZWxsVGVtcGxhdGUgOiBjZWxsVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==