@firestitch/list 12.8.2 → 12.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/classes/data-controller.d.ts +2 -1
- package/app/classes/reorder-controller.d.ts +5 -1
- package/app/classes/selection-controller.d.ts +5 -0
- package/app/components/body/body.component.d.ts +2 -2
- package/app/components/body/row/row.component.d.ts +2 -0
- package/app/components/list/list.component.d.ts +2 -0
- package/app/directives/draggable-list/draggable-list.directive.d.ts +12 -3
- package/app/directives/draggable-row/draggable-row.directive.d.ts +2 -0
- package/app/interfaces/listconfig.interface.d.ts +2 -0
- package/bundles/firestitch-list.umd.js +199 -39
- package/bundles/firestitch-list.umd.js.map +1 -1
- package/esm2015/app/classes/data-controller.js +23 -2
- package/esm2015/app/classes/reorder-controller.js +7 -2
- package/esm2015/app/classes/selection-controller.js +16 -2
- package/esm2015/app/components/body/body.component.js +4 -4
- package/esm2015/app/components/body/row/row.component.js +13 -3
- package/esm2015/app/components/head/head.component.js +2 -2
- package/esm2015/app/components/list/list.component.js +9 -3
- package/esm2015/app/directives/draggable-list/draggable-list.directive.js +97 -31
- package/esm2015/app/directives/draggable-row/draggable-row.directive.js +9 -1
- package/esm2015/app/interfaces/listconfig.interface.js +1 -1
- package/fesm2015/firestitch-list.js +169 -39
- package/fesm2015/firestitch-list.js.map +1 -1
- package/package.json +1 -1
|
@@ -48,6 +48,13 @@ export class FsRowComponent {
|
|
|
48
48
|
get isGroupFooterRow() {
|
|
49
49
|
return this.row.isGroupFooter;
|
|
50
50
|
}
|
|
51
|
+
get isDragDisabled() {
|
|
52
|
+
return !this.selected && this.reorderController.multiple && !!this.selection.selectedRows.size;
|
|
53
|
+
}
|
|
54
|
+
get isMultipleSelection() {
|
|
55
|
+
const multiple = this.reorderController.multiple;
|
|
56
|
+
return multiple && this.selected;
|
|
57
|
+
}
|
|
51
58
|
get rowCssClass() {
|
|
52
59
|
let cls = 'fs-list-row';
|
|
53
60
|
if (this.rowIndex % 2 !== 0)
|
|
@@ -130,7 +137,7 @@ export class FsRowComponent {
|
|
|
130
137
|
return index;
|
|
131
138
|
}
|
|
132
139
|
dragStart(event) {
|
|
133
|
-
if (this.reorderController.enabled) {
|
|
140
|
+
if (this.reorderController.enabled && !this.isDragDisabled) {
|
|
134
141
|
event.preventDefault();
|
|
135
142
|
event.stopPropagation();
|
|
136
143
|
this._draggableList.dragStart(this.el.nativeElement);
|
|
@@ -211,7 +218,7 @@ export class FsRowComponent {
|
|
|
211
218
|
}
|
|
212
219
|
}
|
|
213
220
|
FsRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowComponent, deps: [{ token: i0.ElementRef }, { token: i1.ReorderController }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }, { token: i2.FsListDraggableListDirective }], target: i0.ɵɵFactoryTarget.Component });
|
|
214
|
-
FsRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsRowComponent, selector: "[fs-list-row]", inputs: { row: "row", rowActionsRaw: "rowActionsRaw", groupActionsRaw: "groupActionsRaw", hasRowActions: "hasRowActions", rowEvents: "rowEvents", rowClass: "rowClass", restoreMode: "restoreMode", rowIndex: "rowIndex", columns: "columns", selection: "selection", rowRemoved: "rowRemoved" }, host: { properties: { "attr.role": "this.role", "class": "this.rowCssClass" } }, viewQueries: [{ propertyName: "cellRefs", predicate: ["td"], descendants: true }], ngImport: i0, template: "<!-- Drag -->\n<ng-container *ngIf=\"reorderController.leftReorderActivated$ | async\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Selection -->\n<ng-container *ngIf=\"selection\">\n <td class=\"fs-list-col fs-list-col-selection\">\n <ng-container *ngIf=\"!row.isGroupFooter\">\n <mat-checkbox (change)=\"selectRow($event)\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminateSelected\">\n </mat-checkbox>\n </ng-container>\n </td>\n</ng-container>\n\n<!-- Content -->\n<ng-container *ngFor=\"let column of columns; trackBy: trackByFn; let isFirst = first\">\n <td fs-cell\n *ngIf=\"(isGroupRow && !column.groupHeaderColspanned)\n || (isGroupFooterRow && !column.groupFooterColspanned)\n || (!isGroupRow && !isGroupFooterRow && !column.cellColspanned)\"\n [column]=\"column\"\n [row]=\"row\"\n [rowIndex]=\"rowIndex\"\n [class]=\"(isGroupRow && column.groupHeaderConfigs.classesString)\n || (isGroupFooterRow && column.groupFooterConfigs.classesString)\n || (!isGroupFooterRow && column.cellConfigs.classesString)\"\n [ngClass]=\"{ 'primary-col': isFirst }\"\n [attr.colspan]=\"(isGroupRow && column.groupHeaderConfigs.colspan)\n || (isGroupFooterRow && column.groupFooterConfigs.colspan)\n || column.cellConfigs.colspan\"\n [attr.width]=\"column.width\"\n >\n </td>\n</ng-container>\n\n<!-- Drag -->\n<ng-container *ngIf=\"reorderController.rightReorderActivated$ | async\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderController.manualReorderActivated$ | async)\" class=\"fs-list-col row-actions\">\n <ng-container *ngIf=\"!isGroupFooterRow\">\n <fs-list-row-actions [row]=\"row\"\n [index]=\"rowIndex\"\n [rowActions]=\"rowActions\"\n [menuRowActions]=\"menuRowActions\"\n [inlineRowActions]=\"inlineRowActions\"\n [restoreAction]=\"restoreAction\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\"\n ></fs-list-row-actions>\n </ng-container>\n</td>\n\n<ng-template #dragCell>\n <ng-container *ngIf=\"dragCellVisible && !isGroupFooterRow; else emptyCell\">\n <td class=\"fs-list-col drag-col\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\"\n >\n <mat-icon>drag_handle</mat-icon>\n </td>\n </ng-container>\n <ng-template #emptyCell>\n <td class=\"fs-list-col drag-col\"></td>\n </ng-template>\n</ng-template>\n", components: [{ type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i4.FsCellComponent, selector: "[fs-cell]", inputs: ["column", "row", "rowIndex"] }, { type: i5.FsRowActionsComponent, selector: "fs-list-row-actions", inputs: ["row", "index", "restoreMode", "rowActions", "rowRemoved", "menuRowActions", "inlineRowActions", "restoreAction"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i7.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
221
|
+
FsRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsRowComponent, selector: "[fs-list-row]", inputs: { row: "row", rowActionsRaw: "rowActionsRaw", groupActionsRaw: "groupActionsRaw", hasRowActions: "hasRowActions", rowEvents: "rowEvents", rowClass: "rowClass", restoreMode: "restoreMode", rowIndex: "rowIndex", columns: "columns", selection: "selection", rowRemoved: "rowRemoved" }, host: { properties: { "attr.role": "this.role", "class.multiple-selection": "this.isMultipleSelection", "class": "this.rowCssClass" } }, viewQueries: [{ propertyName: "cellRefs", predicate: ["td"], descendants: true }], ngImport: i0, template: "<!-- Drag -->\n<ng-container *ngIf=\"reorderController.leftReorderActivated$ | async\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Selection -->\n<ng-container *ngIf=\"selection && !(selection.disabled$ | async)\">\n <td class=\"fs-list-col fs-list-col-selection\">\n <ng-container *ngIf=\"!row.isGroupFooter\">\n <mat-checkbox (change)=\"selectRow($event)\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminateSelected\">\n </mat-checkbox>\n </ng-container>\n </td>\n</ng-container>\n\n<!-- Content -->\n<ng-container *ngFor=\"let column of columns; trackBy: trackByFn; let isFirst = first\">\n <td fs-cell\n *ngIf=\"(isGroupRow && !column.groupHeaderColspanned)\n || (isGroupFooterRow && !column.groupFooterColspanned)\n || (!isGroupRow && !isGroupFooterRow && !column.cellColspanned)\"\n [column]=\"column\"\n [row]=\"row\"\n [rowIndex]=\"rowIndex\"\n [class]=\"(isGroupRow && column.groupHeaderConfigs.classesString)\n || (isGroupFooterRow && column.groupFooterConfigs.classesString)\n || (!isGroupFooterRow && column.cellConfigs.classesString)\"\n [ngClass]=\"{ 'primary-col': isFirst }\"\n [attr.colspan]=\"(isGroupRow && column.groupHeaderConfigs.colspan)\n || (isGroupFooterRow && column.groupFooterConfigs.colspan)\n || column.cellConfigs.colspan\"\n [attr.width]=\"column.width\"\n >\n </td>\n</ng-container>\n\n<!-- Drag -->\n<ng-container *ngIf=\"reorderController.rightReorderActivated$ | async\">\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n</ng-container>\n\n<!-- Row Actions -->\n<td *ngIf=\"hasRowActions && !(reorderController.manualReorderActivated$ | async)\" class=\"fs-list-col row-actions\">\n <ng-container *ngIf=\"!isGroupFooterRow\">\n <fs-list-row-actions [row]=\"row\"\n [index]=\"rowIndex\"\n [rowActions]=\"rowActions\"\n [menuRowActions]=\"menuRowActions\"\n [inlineRowActions]=\"inlineRowActions\"\n [restoreAction]=\"restoreAction\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\"\n ></fs-list-row-actions>\n </ng-container>\n</td>\n\n<ng-template #dragCell>\n <ng-container *ngIf=\"dragCellVisible && !isGroupFooterRow; else emptyCell\">\n <td class=\"fs-list-col drag-col\"\n [class.drag-disabled]=\"isDragDisabled\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\"\n >\n <mat-icon>drag_handle</mat-icon>\n </td>\n </ng-container>\n <ng-template #emptyCell>\n <td class=\"fs-list-col drag-col\"></td>\n </ng-template>\n</ng-template>\n", components: [{ type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i4.FsCellComponent, selector: "[fs-cell]", inputs: ["column", "row", "rowIndex"] }, { type: i5.FsRowActionsComponent, selector: "fs-list-row-actions", inputs: ["row", "index", "restoreMode", "rowActions", "rowRemoved", "menuRowActions", "inlineRowActions", "restoreAction"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i7.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
215
222
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsRowComponent, decorators: [{
|
|
216
223
|
type: Component,
|
|
217
224
|
args: [{
|
|
@@ -247,8 +254,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
247
254
|
}], cellRefs: [{
|
|
248
255
|
type: ViewChildren,
|
|
249
256
|
args: ['td']
|
|
257
|
+
}], isMultipleSelection: [{
|
|
258
|
+
type: HostBinding,
|
|
259
|
+
args: ['class.multiple-selection']
|
|
250
260
|
}], rowCssClass: [{
|
|
251
261
|
type: HostBinding,
|
|
252
262
|
args: ['class']
|
|
253
263
|
}] } });
|
|
254
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9ib2R5L3Jvdy9yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2JvZHkvcm93L3Jvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsU0FBUyxFQUVULFdBQVcsRUFDWCxLQUFLLEVBSUwsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGVBQWUsRUFDaEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDOzs7Ozs7Ozs7QUFRM0csTUFBTSxPQUFPLGNBQWM7SUF5Q3pCLFlBQ1MsRUFBYyxFQUNkLGlCQUFvQyxFQUNuQyxNQUF5QixFQUN6QixRQUF5QixFQUN6QixTQUFvQixFQUNwQixjQUE0QztRQUw3QyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNuQyxXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFp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QUN6QixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQzthQUM3QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7NEdBdFBVLGNBQWM7Z0dBQWQsY0FBYywyZkN0QzNCLHNzRkF1RUE7NEZEakNhLGNBQWM7a0JBTDFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFdBQVcsRUFBRSxvQkFBb0I7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDtrUUFJUSxJQUFJO3NCQURWLFdBQVc7dUJBQUMsV0FBVztnQkFHUixHQUFHO3NCQUFsQixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUVVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUVVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxZQUFZO3VCQUFDLElBQUk7Z0JBNkNkLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEtleVZhbHVlRGlmZmVycyxcbiAgUmVuZGVyZXIyLFxuICBDb21wb25lbnQsXG4gIERvQ2hlY2ssXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgS2V5VmFsdWVEaWZmZXIsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2NvbHVtbi5tb2RlbCc7XG5pbXBvcnQge1xuICBSZW9yZGVyQ29udHJvbGxlcixcbiAgUmVvcmRlclBvc2l0aW9uLFxuICBSZW9yZGVyU3RyYXRlZ3lcbn0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9yZW9yZGVyLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgU2VsZWN0aW9uQ29udHJvbGxlciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvc2VsZWN0aW9uLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgUm93QWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Jvdy1hY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Jvdyc7XG5pbXBvcnQgeyBGc0xpc3REcmFnZ2FibGVMaXN0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9kcmFnZ2FibGUtbGlzdC9kcmFnZ2FibGUtbGlzdC5kaXJlY3RpdmUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1tmcy1saXN0LXJvd10nLFxuICB0ZW1wbGF0ZVVybDogJ3Jvdy5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEZzUm93Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBEb0NoZWNrLCBPbkRlc3Ryb3kge1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgcHVibGljIHJvbGUgPSAncm93JztcblxuICBASW5wdXQoKSBwdWJsaWMgcm93OiBSb3c7XG4gIEBJbnB1dCgpIHB1YmxpYyByb3dBY3Rpb25zUmF3OiBhbnkgW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGdyb3VwQWN0aW9uc1JhdzogYW55IFtdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBoYXNSb3dBY3Rpb25zID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyByb3dFdmVudHMgPSB7fTtcbiAgQElucHV0KCkgcHVibGljIHJvd0NsYXNzO1xuICBASW5wdXQoKSBwdWJsaWMgcmVzdG9yZU1vZGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSBwdWJsaWMgcm93SW5kZXg6IG51bWJlcjtcbiAgQElucHV0KCkgcHVibGljIGNvbHVtbnM6IENvbHVtbltdO1xuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0aW9uOiBTZWxlY3Rpb25Db250cm9sbGVyO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyByb3dSZW1vdmVkOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuXG4gIEBWaWV3Q2hpbGRyZW4oJ3RkJylcbiAgcHVibGljIGNlbGxSZWZzO1xuXG4gIHB1YmxpYyByZWFkb25seSBSZW9yZGVyUG9zaXRpb24gPSBSZW9yZGVyUG9zaXRpb247XG4gIHB1YmxpYyByZWFkb25seSBSZW9yZGVyU3RyYXRlZ3kgPSBSZW9yZGVyU3RyYXRlZ3k7XG5cbiAgcHVibGljIHJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG5cbiAgcHVibGljIG1lbnVSb3dBY3Rpb25zOiBSb3dBY3Rpb25bXSA9IFtdO1xuICBwdWJsaWMgaW5saW5lUm93QWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcbiAgcHVibGljIHJlc3RvcmVBY3Rpb246IFJvd0FjdGlvbjtcblxuICBwdWJsaWMgc2VsZWN0ZWQgPSBmYWxzZTtcbiAgcHVibGljIGluZGV0ZXJtaW5hdGVTZWxlY3RlZDogYm9vbGVhbiB8ICdpbmRldGVybWluYXRlJyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3Jvd0RpZmZlcjogS2V5VmFsdWVEaWZmZXI8YW55LCBhbnk+O1xuXG4gIHByaXZhdGUgX2V2ZW50TGlzdGVuZXJzID0gW107XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbDogRWxlbWVudFJlZixcbiAgICBwdWJsaWMgcmVvcmRlckNvbnRyb2xsZXI6IFJlb3JkZXJDb250cm9sbGVyLFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9kaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIF9kcmFnZ2FibGVMaXN0OiBGc0xpc3REcmFnZ2FibGVMaXN0RGlyZWN0aXZlLFxuICApIHtcbiAgICB0aGlzLl9yb3dEaWZmZXIgPSBfZGlmZmVycy5maW5kKHt9KS5jcmVhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNHcm91cFJvdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yb3cuaXNHcm91cDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNDaGlsZFJvdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yb3cuaXNDaGlsZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNHcm91cEZvb3RlclJvdygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yb3cuaXNHcm91cEZvb3RlcjtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgcm93Q3NzQ2xhc3MoKSB7XG4gICAgbGV0IGNscyA9ICdmcy1saXN0LXJvdyc7XG5cbiAgICBpZiAodGhpcy5yb3dJbmRleCAlIDIgIT09IDApIGNscyArPSAnIGZzLWxpc3Qtcm93LW9kZCc7XG4gICAgaWYgKHRoaXMucm93SW5kZXggJSAyID09PSAwKSBjbHMgKz0gJyBmcy1saXN0LXJvdy1ldmVuJztcblxuICAgIGlmICh0aGlzLnJvdyAmJiB0aGlzLnJvdy5pc0dyb3VwKSBjbHMgKz0gJyBmcy1saXN0LXJvdy1ncm91cCc7XG5cbiAgICBpZiAodGhpcy5yb3dDbGFzcykge1xuICAgICAgY29uc3Qgb3B0aW9uczogYW55ID0ge1xuICAgICAgICBpbmRleDogdGhpcy5yb3dJbmRleCxcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLnJvdy5pc0dyb3VwKSB7XG4gICAgICAgIG9wdGlvbnMuZ3JvdXBJbmRleCA9IHRoaXMucm93LmluZGV4O1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnJvdy5pc0NoaWxkKSB7XG4gICAgICAgIG9wdGlvbnMuZ3JvdXBJbmRleCA9IHRoaXMucm93LmluZGV4O1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHRDbGFzcyA9IHRoaXMucm93Q2xhc3ModGhpcy5yb3cuZGF0YSwgb3B0aW9ucyk7XG5cbiAgICAgIGlmICh0eXBlb2YgcmVzdWx0Q2xhc3MgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNscyArPSBgICR7cmVzdWx0Q2xhc3N9YDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlc3VsdENsYXNzID09PSAnb2JqZWN0Jykge1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocmVzdWx0Q2xhc3MpO1xuICAgICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgICAgICAgIGlmIChyZXN1bHRDbGFzc1trXSA9PT0gdHJ1ZSkgY2xzICs9IGAgJHtrfWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2xzO1xuICB9XG5cbiAgcHVibGljIGdldCBkcmFnQ2VsbFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnJvdy5pc0dyb3VwO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdFJvd0V2ZW50cygpO1xuICAgIHRoaXMuaW5pdFNlbGVjdGlvbigpO1xuXG4gICAgaWYgKHRoaXMucm93ICYmIHRoaXMucm93LmlzR3JvdXApIHtcbiAgICAgIGlmICh0aGlzLnJvdyAmJiB0aGlzLnJvdy5pc0dyb3VwICYmIHRoaXMuZ3JvdXBBY3Rpb25zUmF3KSB7XG4gICAgICAgIHRoaXMucm93QWN0aW9ucyA9IHRoaXMuZ3JvdXBBY3Rpb25zUmF3Lm1hcCgoYWN0aW9uKSA9PiBuZXcgUm93QWN0aW9uKGFjdGlvbikpO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5yb3dBY3Rpb25zUmF3KSB7XG4gICAgICB0aGlzLnJvd0FjdGlvbnMgPSB0aGlzLnJvd0FjdGlvbnNSYXcubWFwKChhY3Rpb24pID0+IG5ldyBSb3dBY3Rpb24oYWN0aW9uKSk7XG5cbiAgICAgIHRoaXMuZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0RvQ2hlY2soKSB7XG4gICAgaWYgKHRoaXMuX3Jvd0RpZmZlci5kaWZmKHRoaXMucm93KSkge1xuICAgICAgaWYgKHRoaXMucm93QWN0aW9ucykge1xuICAgICAgICB0aGlzLnJvd0FjdGlvbnMuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgYWN0aW9uLmNoZWNrU2hvd1N0YXR1cyh0aGlzLnJvdy5kYXRhLCB0aGlzLnJvd0luZGV4KTtcbiAgICAgICAgICBhY3Rpb24udXBkYXRlTGluayh0aGlzLnJvdy5kYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgobGlzdGVuZXIpID0+IHsgbGlzdGVuZXIoKSB9KTtcblxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCByb3cgYnkgY2hlY2tib3hcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBwdWJsaWMgc2VsZWN0Um93KGV2ZW50OiBNYXRDaGVja2JveENoYW5nZSkge1xuICAgIHRoaXMuc2VsZWN0aW9uLnJvd1NlbGVjdGlvbkNoYW5nZSh0aGlzLnJvdywgZXZlbnQuY2hlY2tlZCk7XG4gICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogVHJhY2sgQnkgZm9yIGltcHJvdmUgY2hhbmdlIGRldGVjdGlvblxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICovXG4gIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXgpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBwdWJsaWMgZHJhZ1N0YXJ0KGV2ZW50KSB7XG4gICAgaWYgKHRoaXMucmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICB0aGlzLl9kcmFnZ2FibGVMaXN0LmRyYWdTdGFydCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZXZlbnQgbGlzdGVuZXJzIGZvciByb3dcbiAgICovXG4gIHByaXZhdGUgaW5pdFJvd0V2ZW50cygpIHtcbiAgICBmb3IgKGNvbnN0IGV2ZW50IGluIHRoaXMucm93RXZlbnRzKSB7XG4gICAgICBpZiAodGhpcy5yb3dFdmVudHMuaGFzT3duUHJvcGVydHkoZXZlbnQpKSB7XG4gICAgICAgIGNvbnN0IGxpc3RlbmVyID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgZXZlbnQsIChldnQpID0+IHtcbiAgICAgICAgICAvLyBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAvLyBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMucmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5yb3dFdmVudHNbZXZlbnRdKHtcbiAgICAgICAgICAgICAgZXZlbnQ6IGV2dCxcbiAgICAgICAgICAgICAgcm93OiB0aGlzLnJvdy5kYXRhLFxuICAgICAgICAgICAgICByb3dJbmRleDogdGhpcy5yb3dJbmRleFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHNlbGVjdGlvbiBjaGFuZ2UgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIGluaXRTZWxlY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLnJvdyAmJiB0aGlzLnNlbGVjdGlvbi5pc1Jvd1NlbGVjdGVkKHRoaXMucm93LmRhdGEpO1xuXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25DaGFuZ2UkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIC8vIC8vIFdvdWxkIGxpa2UgdG8gcmVzcG9uZCBvbmx5IHdoZW4gY2hlY2tib3ggb24gdG9wIGlzIGNoYW5nZWRcbiAgICAgICAgICAvLyAvLyBvciB3YXMgY2xpY2tlZCBcIlNlbGVjdCBBbGxcIiBpbiBzZWxlY3Rpb24gZGlhbG9nXG4gICAgICAgICAgLy8gZmlsdGVyKCh7dHlwZX0pID0+IHtcbiAgICAgICAgICAvLyAgIHJldHVybiB0eXBlID09PSBTZWxlY3Rpb25DaGFuZ2VUeXBlLkFsbFZpc2libGVTZWxlY3Rpb25DaGFuZ2VcbiAgICAgICAgICAvLyAgICAgfHwgdHlwZSA9PT0gU2VsZWN0aW9uQ2hhbmdlVHlwZS5TZWxlY3RlZEFsbDtcbiAgICAgICAgICAvLyB9KSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLnJvdyAmJiB0aGlzLnNlbGVjdGlvbi5pc1Jvd1NlbGVjdGVkKHRoaXMucm93LmRhdGEpO1xuXG4gICAgICAgICAgaWYgKHRoaXMucm93Py5pc0dyb3VwKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmlzR3JvdXBTZWxlY3RlZCh0aGlzLnJvdyk7XG5cbiAgICAgICAgICAgIGlmIChncm91cFNlbGVjdGlvbiA9PT0gJ2luZGV0ZXJtaW5hdGUnKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gZ3JvdXBTZWxlY3Rpb247XG4gICAgICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpIHtcbiAgICB0aGlzLm1lbnVSb3dBY3Rpb25zID0gW107XG4gICAgdGhpcy5pbmxpbmVSb3dBY3Rpb25zID0gW107XG4gICAgdGhpcy5yZXN0b3JlQWN0aW9uID0gbnVsbDtcblxuICAgIHRoaXMucm93QWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcblxuICAgICAgaWYgKCFhY3Rpb24uaXNTaG93bikgeyByZXR1cm4gfVxuXG4gICAgICBpZiAoYWN0aW9uLm1lbnUgJiYgIWFjdGlvbi5yZXN0b3JlKSB7XG4gICAgICAgIHRoaXMubWVudVJvd0FjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgfSBlbHNlIGlmICghYWN0aW9uLm1lbnUgJiYgIWFjdGlvbi5yZXN0b3JlKSB7XG4gICAgICAgIHRoaXMuaW5saW5lUm93QWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICB9IGVsc2UgaWYgKGFjdGlvbi5yZXN0b3JlKSB7XG4gICAgICAgIHRoaXMucmVzdG9yZUFjdGlvbiA9IGFjdGlvbjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLSBEcmFnIC0tPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlb3JkZXJDb250cm9sbGVyLmxlZnRSZW9yZGVyQWN0aXZhdGVkJCB8IGFzeW5jXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcmFnQ2VsbFwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjwhLS0gU2VsZWN0aW9uIC0tPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGlvblwiPlxuICA8dGQgY2xhc3M9XCJmcy1saXN0LWNvbCBmcy1saXN0LWNvbC1zZWxlY3Rpb25cIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXJvdy5pc0dyb3VwRm9vdGVyXCI+XG4gICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwic2VsZWN0Um93KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVTZWxlY3RlZFwiPlxuICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdGQ+XG48L25nLWNvbnRhaW5lcj5cblxuPCEtLSBDb250ZW50IC0tPlxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlGbjsgbGV0IGlzRmlyc3QgPSBmaXJzdFwiPlxuICA8dGQgZnMtY2VsbFxuICAgICAgKm5nSWY9XCIoaXNHcm91cFJvdyAmJiAhY29sdW1uLmdyb3VwSGVhZGVyQ29sc3Bhbm5lZClcbiAgICAgICAgfHwgKGlzR3JvdXBGb290ZXJSb3cgJiYgIWNvbHVtbi5ncm91cEZvb3RlckNvbHNwYW5uZWQpXG4gICAgICAgIHx8ICghaXNHcm91cFJvdyAmJiAhaXNHcm91cEZvb3RlclJvdyAmJiAhY29sdW1uLmNlbGxDb2xzcGFubmVkKVwiXG4gICAgICBbY29sdW1uXT1cImNvbHVtblwiXG4gICAgICBbcm93XT1cInJvd1wiXG4gICAgICBbcm93SW5kZXhdPVwicm93SW5kZXhcIlxuICAgICAgW2NsYXNzXT1cIihpc0dyb3VwUm93ICYmIGNvbHVtbi5ncm91cEhlYWRlckNvbmZpZ3MuY2xhc3Nlc1N0cmluZylcbiAgICAgICAgfHwgKGlzR3JvdXBGb290ZXJSb3cgJiYgY29sdW1uLmdyb3VwRm9vdGVyQ29uZmlncy5jbGFzc2VzU3RyaW5nKVxuICAgICAgICB8fCAoIWlzR3JvdXBGb290ZXJSb3cgJiYgY29sdW1uLmNlbGxDb25maWdzLmNsYXNzZXNTdHJpbmcpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ3ByaW1hcnktY29sJzogaXNGaXJzdCB9XCJcbiAgICAgIFthdHRyLmNvbHNwYW5dPVwiKGlzR3JvdXBSb3cgJiYgY29sdW1uLmdyb3VwSGVhZGVyQ29uZmlncy5jb2xzcGFuKVxuICAgICAgICB8fCAoaXNHcm91cEZvb3RlclJvdyAmJiBjb2x1bW4uZ3JvdXBGb290ZXJDb25maWdzLmNvbHNwYW4pXG4gICAgICAgIHx8IGNvbHVtbi5jZWxsQ29uZmlncy5jb2xzcGFuXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImNvbHVtbi53aWR0aFwiXG4gID5cbiAgPC90ZD5cbjwvbmctY29udGFpbmVyPlxuXG48IS0tIERyYWcgLS0+XG48bmctY29udGFpbmVyICpuZ0lmPVwicmVvcmRlckNvbnRyb2xsZXIucmlnaHRSZW9yZGVyQWN0aXZhdGVkJCB8IGFzeW5jXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcmFnQ2VsbFwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjwhLS0gUm93IEFjdGlvbnMgLS0+XG48dGQgKm5nSWY9XCJoYXNSb3dBY3Rpb25zICYmICEocmVvcmRlckNvbnRyb2xsZXIubWFudWFsUmVvcmRlckFjdGl2YXRlZCQgfCBhc3luYylcIiBjbGFzcz1cImZzLWxpc3QtY29sIHJvdy1hY3Rpb25zXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNHcm91cEZvb3RlclJvd1wiPlxuICAgIDxmcy1saXN0LXJvdy1hY3Rpb25zIFtyb3ddPVwicm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXhdPVwicm93SW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dBY3Rpb25zXT1cInJvd0FjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFttZW51Um93QWN0aW9uc109XCJtZW51Um93QWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVJvd0FjdGlvbnNdPVwiaW5saW5lUm93QWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3Jlc3RvcmVBY3Rpb25dPVwicmVzdG9yZUFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3Jlc3RvcmVNb2RlXT1cInJlc3RvcmVNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcm93UmVtb3ZlZF09XCJyb3dSZW1vdmVkXCJcbiAgICA+PC9mcy1saXN0LXJvdy1hY3Rpb25zPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvdGQ+XG5cbjxuZy10ZW1wbGF0ZSAjZHJhZ0NlbGw+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkcmFnQ2VsbFZpc2libGUgJiYgIWlzR3JvdXBGb290ZXJSb3c7IGVsc2UgZW1wdHlDZWxsXCI+XG4gICAgPHRkIGNsYXNzPVwiZnMtbGlzdC1jb2wgZHJhZy1jb2xcIlxuICAgICAgICAobW91c2Vkb3duKT1cImRyYWdTdGFydCgkZXZlbnQpXCJcbiAgICAgICAgKHRvdWNoc3RhcnQpPVwiZHJhZ1N0YXJ0KCRldmVudClcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5kcmFnX2hhbmRsZTwvbWF0LWljb24+XG4gICAgPC90ZD5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjZW1wdHlDZWxsPlxuICAgIDx0ZCBjbGFzcz1cImZzLWxpc3QtY29sIGRyYWctY29sXCI+PC90ZD5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9ib2R5L3Jvdy9yb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2JvZHkvcm93L3Jvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsU0FBUyxFQUVULFdBQVcsRUFDWCxLQUFLLEVBSUwsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGVBQWUsRUFDaEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDOzs7Ozs7Ozs7QUFRM0csTUFBTSxPQUFPLGNBQWM7SUF5Q3pCLFlBQ1MsRUFBYyxFQUNkLGlCQUFvQyxFQUNuQyxNQUF5QixFQUN6QixRQUF5QixFQUN6QixTQUFvQixFQUNwQixjQUE0QztRQUw3QyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNuQyxXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFp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dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBLZXlWYWx1ZURpZmZlcnMsXG4gIFJlbmRlcmVyMixcbiAgQ29tcG9uZW50LFxuICBEb0NoZWNrLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIEtleVZhbHVlRGlmZmVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHtcbiAgUmVvcmRlckNvbnRyb2xsZXIsXG4gIFJlb3JkZXJQb3NpdGlvbixcbiAgUmVvcmRlclN0cmF0ZWd5XG59IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL3NlbGVjdGlvbi1jb250cm9sbGVyJztcbmltcG9ydCB7IFJvd0FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yb3ctYWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yb3cnO1xuaW1wb3J0IHsgRnNMaXN0RHJhZ2dhYmxlTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZHJhZ2dhYmxlLWxpc3QvZHJhZ2dhYmxlLWxpc3QuZGlyZWN0aXZlJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbZnMtbGlzdC1yb3ddJyxcbiAgdGVtcGxhdGVVcmw6ICdyb3cuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBGc1Jvd0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgRG9DaGVjaywgT25EZXN0cm95IHtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gIHB1YmxpYyByb2xlID0gJ3Jvdyc7XG5cbiAgQElucHV0KCkgcHVibGljIHJvdzogUm93O1xuICBASW5wdXQoKSBwdWJsaWMgcm93QWN0aW9uc1JhdzogYW55IFtdID0gW107XG4gIEBJbnB1dCgpIHB1YmxpYyBncm91cEFjdGlvbnNSYXc6IGFueSBbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgaGFzUm93QWN0aW9ucyA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgcm93RXZlbnRzID0ge307XG4gIEBJbnB1dCgpIHB1YmxpYyByb3dDbGFzcztcbiAgQElucHV0KCkgcHVibGljIHJlc3RvcmVNb2RlID0gZmFsc2U7XG5cbiAgQElucHV0KCkgcHVibGljIHJvd0luZGV4OiBudW1iZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb2x1bW5zOiBDb2x1bW5bXTtcbiAgQElucHV0KCkgcHVibGljIHNlbGVjdGlvbjogU2VsZWN0aW9uQ29udHJvbGxlcjtcblxuICBASW5wdXQoKSBwdWJsaWMgcm93UmVtb3ZlZDogRXZlbnRFbWl0dGVyPGFueT47XG5cblxuICBAVmlld0NoaWxkcmVuKCd0ZCcpXG4gIHB1YmxpYyBjZWxsUmVmcztcblxuICBwdWJsaWMgcmVhZG9ubHkgUmVvcmRlclBvc2l0aW9uID0gUmVvcmRlclBvc2l0aW9uO1xuICBwdWJsaWMgcmVhZG9ubHkgUmVvcmRlclN0cmF0ZWd5ID0gUmVvcmRlclN0cmF0ZWd5O1xuXG4gIHB1YmxpYyByb3dBY3Rpb25zOiBSb3dBY3Rpb25bXSA9IFtdO1xuXG4gIHB1YmxpYyBtZW51Um93QWN0aW9uczogUm93QWN0aW9uW10gPSBbXTtcbiAgcHVibGljIGlubGluZVJvd0FjdGlvbnM6IFJvd0FjdGlvbltdID0gW107XG4gIHB1YmxpYyByZXN0b3JlQWN0aW9uOiBSb3dBY3Rpb247XG5cbiAgcHVibGljIHNlbGVjdGVkID0gZmFsc2U7XG4gIHB1YmxpYyBpbmRldGVybWluYXRlU2VsZWN0ZWQ6IGJvb2xlYW4gfCAnaW5kZXRlcm1pbmF0ZScgPSBmYWxzZTtcblxuICBwcml2YXRlIF9yb3dEaWZmZXI6IEtleVZhbHVlRGlmZmVyPGFueSwgYW55PjtcblxuICBwcml2YXRlIF9ldmVudExpc3RlbmVycyA9IFtdO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHVibGljIHJlb3JkZXJDb250cm9sbGVyOiBSZW9yZGVyQ29udHJvbGxlcixcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLFxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBfZHJhZ2dhYmxlTGlzdDogRnNMaXN0RHJhZ2dhYmxlTGlzdERpcmVjdGl2ZSxcbiAgKSB7XG4gICAgdGhpcy5fcm93RGlmZmVyID0gX2RpZmZlcnMuZmluZCh7fSkuY3JlYXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzR3JvdXBSb3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucm93LmlzR3JvdXA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQ2hpbGRSb3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucm93LmlzQ2hpbGQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzR3JvdXBGb290ZXJSb3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucm93LmlzR3JvdXBGb290ZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRHJhZ0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5zZWxlY3RlZCAmJiB0aGlzLnJlb3JkZXJDb250cm9sbGVyLm11bHRpcGxlICYmICEhdGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWRSb3dzLnNpemU7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm11bHRpcGxlLXNlbGVjdGlvbicpXG4gIGdldCBpc011bHRpcGxlU2VsZWN0aW9uKCkge1xuICAgIGNvbnN0IG11bHRpcGxlID0gdGhpcy5yZW9yZGVyQ29udHJvbGxlci5tdWx0aXBsZTtcblxuICAgIHJldHVybiBtdWx0aXBsZSAmJiB0aGlzLnNlbGVjdGVkO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCByb3dDc3NDbGFzcygpIHtcbiAgICBsZXQgY2xzID0gJ2ZzLWxpc3Qtcm93JztcblxuICAgIGlmICh0aGlzLnJvd0luZGV4ICUgMiAhPT0gMCkgY2xzICs9ICcgZnMtbGlzdC1yb3ctb2RkJztcbiAgICBpZiAodGhpcy5yb3dJbmRleCAlIDIgPT09IDApIGNscyArPSAnIGZzLWxpc3Qtcm93LWV2ZW4nO1xuXG4gICAgaWYgKHRoaXMucm93ICYmIHRoaXMucm93LmlzR3JvdXApIGNscyArPSAnIGZzLWxpc3Qtcm93LWdyb3VwJztcblxuICAgIGlmICh0aGlzLnJvd0NsYXNzKSB7XG4gICAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB7XG4gICAgICAgIGluZGV4OiB0aGlzLnJvd0luZGV4LFxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMucm93LmlzR3JvdXApIHtcbiAgICAgICAgb3B0aW9ucy5ncm91cEluZGV4ID0gdGhpcy5yb3cuaW5kZXg7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMucm93LmlzQ2hpbGQpIHtcbiAgICAgICAgb3B0aW9ucy5ncm91cEluZGV4ID0gdGhpcy5yb3cuaW5kZXg7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdENsYXNzID0gdGhpcy5yb3dDbGFzcyh0aGlzLnJvdy5kYXRhLCBvcHRpb25zKTtcblxuICAgICAgaWYgKHR5cGVvZiByZXN1bHRDbGFzcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2xzICs9IGAgJHtyZXN1bHRDbGFzc31gO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzdWx0Q2xhc3MgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhyZXN1bHRDbGFzcyk7XG4gICAgICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdENsYXNzW2tdID09PSB0cnVlKSBjbHMgKz0gYCAke2t9YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjbHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRyYWdDZWxsVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMucm93LmlzR3JvdXA7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0Um93RXZlbnRzKCk7XG4gICAgdGhpcy5pbml0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5yb3cgJiYgdGhpcy5yb3cuaXNHcm91cCkge1xuICAgICAgaWYgKHRoaXMucm93ICYmIHRoaXMucm93LmlzR3JvdXAgJiYgdGhpcy5ncm91cEFjdGlvbnNSYXcpIHtcbiAgICAgICAgdGhpcy5yb3dBY3Rpb25zID0gdGhpcy5ncm91cEFjdGlvbnNSYXcubWFwKChhY3Rpb24pID0+IG5ldyBSb3dBY3Rpb24oYWN0aW9uKSk7XG5cbiAgICAgICAgdGhpcy5maWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnJvd0FjdGlvbnNSYXcpIHtcbiAgICAgIHRoaXMucm93QWN0aW9ucyA9IHRoaXMucm93QWN0aW9uc1Jhdy5tYXAoKGFjdGlvbikgPT4gbmV3IFJvd0FjdGlvbihhY3Rpb24pKTtcblxuICAgICAgdGhpcy5maWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nRG9DaGVjaygpIHtcbiAgICBpZiAodGhpcy5fcm93RGlmZmVyLmRpZmYodGhpcy5yb3cpKSB7XG4gICAgICBpZiAodGhpcy5yb3dBY3Rpb25zKSB7XG4gICAgICAgIHRoaXMucm93QWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgICAgICBhY3Rpb24uY2hlY2tTaG93U3RhdHVzKHRoaXMucm93LmRhdGEsIHRoaXMucm93SW5kZXgpO1xuICAgICAgICAgIGFjdGlvbi51cGRhdGVMaW5rKHRoaXMucm93LmRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5maWx0ZXJBY3Rpb25zQnlDYXRlZ29yaWVzKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9ldmVudExpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4geyBsaXN0ZW5lcigpIH0pO1xuXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0IHJvdyBieSBjaGVja2JveFxuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIHB1YmxpYyBzZWxlY3RSb3coZXZlbnQ6IE1hdENoZWNrYm94Q2hhbmdlKSB7XG4gICAgdGhpcy5zZWxlY3Rpb24ucm93U2VsZWN0aW9uQ2hhbmdlKHRoaXMucm93LCBldmVudC5jaGVja2VkKTtcbiAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFjayBCeSBmb3IgaW1wcm92ZSBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKi9cbiAgcHVibGljIHRyYWNrQnlGbihpbmRleCkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBkcmFnU3RhcnQoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5yZW9yZGVyQ29udHJvbGxlci5lbmFibGVkICYmICF0aGlzLmlzRHJhZ0Rpc2FibGVkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgIHRoaXMuX2RyYWdnYWJsZUxpc3QuZHJhZ1N0YXJ0KHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBldmVudCBsaXN0ZW5lcnMgZm9yIHJvd1xuICAgKi9cbiAgcHJpdmF0ZSBpbml0Um93RXZlbnRzKCkge1xuICAgIGZvciAoY29uc3QgZXZlbnQgaW4gdGhpcy5yb3dFdmVudHMpIHtcbiAgICAgIGlmICh0aGlzLnJvd0V2ZW50cy5oYXNPd25Qcm9wZXJ0eShldmVudCkpIHtcbiAgICAgICAgY29uc3QgbGlzdGVuZXIgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4odGhpcy5lbC5uYXRpdmVFbGVtZW50LCBldmVudCwgKGV2dCkgPT4ge1xuICAgICAgICAgIC8vIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIC8vIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgIGlmICghdGhpcy5yZW9yZGVyQ29udHJvbGxlci5lbmFibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnJvd0V2ZW50c1tldmVudF0oe1xuICAgICAgICAgICAgICBldmVudDogZXZ0LFxuICAgICAgICAgICAgICByb3c6IHRoaXMucm93LmRhdGEsXG4gICAgICAgICAgICAgIHJvd0luZGV4OiB0aGlzLnJvd0luZGV4XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gc2VsZWN0aW9uIGNoYW5nZSBldmVudHNcbiAgICovXG4gIHByaXZhdGUgaW5pdFNlbGVjdGlvbigpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLnJvdyAmJiB0aGlzLnNlbGVjdGlvbi5pc1Jvd1NlbGVjdGVkKHRoaXMucm93LmRhdGEpO1xuXG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25DaGFuZ2UkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIC8vIC8vIFdvdWxkIGxpa2UgdG8gcmVzcG9uZCBvbmx5IHdoZW4gY2hlY2tib3ggb24gdG9wIGlzIGNoYW5nZWRcbiAgICAgICAgICAvLyAvLyBvciB3YXMgY2xpY2tlZCBcIlNlbGVjdCBBbGxcIiBpbiBzZWxlY3Rpb24gZGlhbG9nXG4gICAgICAgICAgLy8gZmlsdGVyKCh7dHlwZX0pID0+IHtcbiAgICAgICAgICAvLyAgIHJldHVybiB0eXBlID09PSBTZWxlY3Rpb25DaGFuZ2VUeXBlLkFsbFZpc2libGVTZWxlY3Rpb25DaGFuZ2VcbiAgICAgICAgICAvLyAgICAgfHwgdHlwZSA9PT0gU2VsZWN0aW9uQ2hhbmdlVHlwZS5TZWxlY3RlZEFsbDtcbiAgICAgICAgICAvLyB9KSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLnJvdyAmJiB0aGlzLnNlbGVjdGlvbi5pc1Jvd1NlbGVjdGVkKHRoaXMucm93LmRhdGEpO1xuXG4gICAgICAgICAgaWYgKHRoaXMucm93Py5pc0dyb3VwKSB7XG4gICAgICAgICAgICBjb25zdCBncm91cFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmlzR3JvdXBTZWxlY3RlZCh0aGlzLnJvdyk7XG5cbiAgICAgICAgICAgIGlmIChncm91cFNlbGVjdGlvbiA9PT0gJ2luZGV0ZXJtaW5hdGUnKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gZ3JvdXBTZWxlY3Rpb247XG4gICAgICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyQWN0aW9uc0J5Q2F0ZWdvcmllcygpIHtcbiAgICB0aGlzLm1lbnVSb3dBY3Rpb25zID0gW107XG4gICAgdGhpcy5pbmxpbmVSb3dBY3Rpb25zID0gW107XG4gICAgdGhpcy5yZXN0b3JlQWN0aW9uID0gbnVsbDtcblxuICAgIHRoaXMucm93QWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcblxuICAgICAgaWYgKCFhY3Rpb24uaXNTaG93bikgeyByZXR1cm4gfVxuXG4gICAgICBpZiAoYWN0aW9uLm1lbnUgJiYgIWFjdGlvbi5yZXN0b3JlKSB7XG4gICAgICAgIHRoaXMubWVudVJvd0FjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgfSBlbHNlIGlmICghYWN0aW9uLm1lbnUgJiYgIWFjdGlvbi5yZXN0b3JlKSB7XG4gICAgICAgIHRoaXMuaW5saW5lUm93QWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICB9IGVsc2UgaWYgKGFjdGlvbi5yZXN0b3JlKSB7XG4gICAgICAgIHRoaXMucmVzdG9yZUFjdGlvbiA9IGFjdGlvbjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLSBEcmFnIC0tPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlb3JkZXJDb250cm9sbGVyLmxlZnRSZW9yZGVyQWN0aXZhdGVkJCB8IGFzeW5jXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcmFnQ2VsbFwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjwhLS0gU2VsZWN0aW9uIC0tPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGlvbiAmJiAhKHNlbGVjdGlvbi5kaXNhYmxlZCQgfCBhc3luYylcIj5cbiAgPHRkIGNsYXNzPVwiZnMtbGlzdC1jb2wgZnMtbGlzdC1jb2wtc2VsZWN0aW9uXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyb3cuaXNHcm91cEZvb3RlclwiPlxuICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cInNlbGVjdFJvdygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJpbmRldGVybWluYXRlU2VsZWN0ZWRcIj5cbiAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3RkPlxuPC9uZy1jb250YWluZXI+XG5cbjwhLS0gQ29udGVudCAtLT5cbjxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5Rm47IGxldCBpc0ZpcnN0ID0gZmlyc3RcIj5cbiAgPHRkIGZzLWNlbGxcbiAgICAgICpuZ0lmPVwiKGlzR3JvdXBSb3cgJiYgIWNvbHVtbi5ncm91cEhlYWRlckNvbHNwYW5uZWQpXG4gICAgICAgIHx8IChpc0dyb3VwRm9vdGVyUm93ICYmICFjb2x1bW4uZ3JvdXBGb290ZXJDb2xzcGFubmVkKVxuICAgICAgICB8fCAoIWlzR3JvdXBSb3cgJiYgIWlzR3JvdXBGb290ZXJSb3cgJiYgIWNvbHVtbi5jZWxsQ29sc3Bhbm5lZClcIlxuICAgICAgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgW3Jvd109XCJyb3dcIlxuICAgICAgW3Jvd0luZGV4XT1cInJvd0luZGV4XCJcbiAgICAgIFtjbGFzc109XCIoaXNHcm91cFJvdyAmJiBjb2x1bW4uZ3JvdXBIZWFkZXJDb25maWdzLmNsYXNzZXNTdHJpbmcpXG4gICAgICAgIHx8IChpc0dyb3VwRm9vdGVyUm93ICYmIGNvbHVtbi5ncm91cEZvb3RlckNvbmZpZ3MuY2xhc3Nlc1N0cmluZylcbiAgICAgICAgfHwgKCFpc0dyb3VwRm9vdGVyUm93ICYmIGNvbHVtbi5jZWxsQ29uZmlncy5jbGFzc2VzU3RyaW5nKVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdwcmltYXJ5LWNvbCc6IGlzRmlyc3QgfVwiXG4gICAgICBbYXR0ci5jb2xzcGFuXT1cIihpc0dyb3VwUm93ICYmIGNvbHVtbi5ncm91cEhlYWRlckNvbmZpZ3MuY29sc3BhbilcbiAgICAgICAgfHwgKGlzR3JvdXBGb290ZXJSb3cgJiYgY29sdW1uLmdyb3VwRm9vdGVyQ29uZmlncy5jb2xzcGFuKVxuICAgICAgICB8fCBjb2x1bW4uY2VsbENvbmZpZ3MuY29sc3BhblwiXG4gICAgICBbYXR0ci53aWR0aF09XCJjb2x1bW4ud2lkdGhcIlxuICA+XG4gIDwvdGQ+XG48L25nLWNvbnRhaW5lcj5cblxuPCEtLSBEcmFnIC0tPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlb3JkZXJDb250cm9sbGVyLnJpZ2h0UmVvcmRlckFjdGl2YXRlZCQgfCBhc3luY1wiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZHJhZ0NlbGxcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48IS0tIFJvdyBBY3Rpb25zIC0tPlxuPHRkICpuZ0lmPVwiaGFzUm93QWN0aW9ucyAmJiAhKHJlb3JkZXJDb250cm9sbGVyLm1hbnVhbFJlb3JkZXJBY3RpdmF0ZWQkIHwgYXN5bmMpXCIgY2xhc3M9XCJmcy1saXN0LWNvbCByb3ctYWN0aW9uc1wiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzR3JvdXBGb290ZXJSb3dcIj5cbiAgICA8ZnMtbGlzdC1yb3ctYWN0aW9ucyBbcm93XT1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV4XT1cInJvd0luZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcm93QWN0aW9uc109XCJyb3dBY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbbWVudVJvd0FjdGlvbnNdPVwibWVudVJvd0FjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVSb3dBY3Rpb25zXT1cImlubGluZVJvd0FjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXN0b3JlQWN0aW9uXT1cInJlc3RvcmVBY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXN0b3JlTW9kZV09XCJyZXN0b3JlTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd1JlbW92ZWRdPVwicm93UmVtb3ZlZFwiXG4gICAgPjwvZnMtbGlzdC1yb3ctYWN0aW9ucz5cbiAgPC9uZy1jb250YWluZXI+XG48L3RkPlxuXG48bmctdGVtcGxhdGUgI2RyYWdDZWxsPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZHJhZ0NlbGxWaXNpYmxlICYmICFpc0dyb3VwRm9vdGVyUm93OyBlbHNlIGVtcHR5Q2VsbFwiPlxuICAgIDx0ZCBjbGFzcz1cImZzLWxpc3QtY29sIGRyYWctY29sXCJcbiAgICAgICAgW2NsYXNzLmRyYWctZGlzYWJsZWRdPVwiaXNEcmFnRGlzYWJsZWRcIlxuICAgICAgICAobW91c2Vkb3duKT1cImRyYWdTdGFydCgkZXZlbnQpXCJcbiAgICAgICAgKHRvdWNoc3RhcnQpPVwiZHJhZ1N0YXJ0KCRldmVudClcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbj5kcmFnX2hhbmRsZTwvbWF0LWljb24+XG4gICAgPC90ZD5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjZW1wdHlDZWxsPlxuICAgIDx0ZCBjbGFzcz1cImZzLWxpc3QtY29sIGRyYWctY29sXCI+PC90ZD5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -67,7 +67,7 @@ export class FsHeadComponent {
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
FsHeadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHeadComponent, deps: [{ token: i1.ReorderController }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
70
|
-
FsHeadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsHeadComponent, selector: "[fs-list-head]", inputs: { sorting: "sorting", columns: "columns", hasRowActions: "hasRowActions", selection: "selection" }, viewQueries: [{ propertyName: "rowsContainer", first: true, predicate: ["rowsContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<tr class=\"fs-list-row\">\n <!-- Drag -->\n <th *ngIf=\"reorderController.leftReorderActivated$ | async\" class=\"fs-list-col drag-col\"></th>\n\n <!-- Selection -->\n <th *ngIf=\"selection\" class=\"fs-list-col fs-list-col-selection\">\n <mat-checkbox (change)=\"selectAll($event)\" [checked]=\"selectedAll\"></mat-checkbox>\n </th>\n\n <!-- Content -->\n <th fs-head-cell *ngFor=\"let column of columns; trackBy: trackByFn\"\n (click)=\"$event.stopPropagation(); sorting.sortBy(column)\"\n [column]=\"column\"\n [class.sorting]=\"column.sortable\"\n [ngClass]=\"column.headerConfigs.classesArray\"\n [attr.colspan]=\"column.headerConfigs.colspan\"\n [attr.width]=\"column.width\"></th>\n\n <!-- Drag -->\n <th *ngIf=\"reorderController.rightReorderActivated$ | async\" class=\"fs-list-col drag-col\"></th>\n\n <!-- Row Actions -->\n <th *ngIf=\"hasRowActions && !(reorderController.manualReorderActivated$ | async)\" class=\"fs-list-col row-actions\"></th>\n</tr>\n", components: [{ type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i3.FsHeadCellComponent, selector: "[fs-head-cell]" }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
70
|
+
FsHeadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsHeadComponent, selector: "[fs-list-head]", inputs: { sorting: "sorting", columns: "columns", hasRowActions: "hasRowActions", selection: "selection" }, viewQueries: [{ propertyName: "rowsContainer", first: true, predicate: ["rowsContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<tr class=\"fs-list-row\">\n <!-- Drag -->\n <th *ngIf=\"reorderController.leftReorderActivated$ | async\" class=\"fs-list-col drag-col\"></th>\n\n <!-- Selection -->\n <th *ngIf=\"selection && !(selection.disabled$ | async)\" class=\"fs-list-col fs-list-col-selection\">\n <mat-checkbox (change)=\"selectAll($event)\" [checked]=\"selectedAll\"></mat-checkbox>\n </th>\n\n <!-- Content -->\n <th fs-head-cell *ngFor=\"let column of columns; trackBy: trackByFn\"\n (click)=\"$event.stopPropagation(); sorting.sortBy(column)\"\n [column]=\"column\"\n [class.sorting]=\"column.sortable\"\n [ngClass]=\"column.headerConfigs.classesArray\"\n [attr.colspan]=\"column.headerConfigs.colspan\"\n [attr.width]=\"column.width\"></th>\n\n <!-- Drag -->\n <th *ngIf=\"reorderController.rightReorderActivated$ | async\" class=\"fs-list-col drag-col\"></th>\n\n <!-- Row Actions -->\n <th *ngIf=\"hasRowActions && !(reorderController.manualReorderActivated$ | async)\" class=\"fs-list-col row-actions\"></th>\n</tr>\n", components: [{ type: i2.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i3.FsHeadCellComponent, selector: "[fs-head-cell]" }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
71
71
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHeadComponent, decorators: [{
|
|
72
72
|
type: Component,
|
|
73
73
|
args: [{
|
|
@@ -87,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
87
87
|
type: ViewChild,
|
|
88
88
|
args: ['rowsContainer', { read: ViewContainerRef, static: true }]
|
|
89
89
|
}] } });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaGVhZC9oZWFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9oZWFkL2hlYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixlQUFlLEVBQ2hCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7OztBQVE5RixNQUFNLE9BQU8sZUFBZTtJQWMxQixZQUNTLGlCQUFvQyxFQUNuQyxLQUF3QjtRQUR6QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ25DLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBUjNCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ1gsb0JBQWUsR0FBRyxlQUFlLENBQUM7UUFDbEMsb0JBQWUsR0FBRyxlQUFlLENBQUM7UUFFMUMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFLL0IsQ0FBQztJQUVHLFFBQVE7UUFDYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUyxDQUFDLEtBQXdCO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTLENBQUMsS0FBSztRQUNwQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7T0FFRztJQUNLLFdBQVc7UUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlO2FBQ3pCLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0I7aUJBQzVCLElBQUksQ0FDSCxNQUFNLENBQ0osQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxDQUNWLElBQUksS0FBSyxtQkFBbUIsQ0FBQyx5QkFBeUI7bUJBQ25ELElBQUksS0FBSyxtQkFBbUIsQ0FBQyxXQUFXO21CQUN4QyxJQUFJLEtBQUssbUJBQW1CLENBQUMsa0JBQWtCLENBQ25ELENBQ0YsRUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjtpQkFDQSxTQUFTLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7Z0JBRTFCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNILENBQUM7OzZHQWhGVSxlQUFlO2lHQUFmLGVBQWUsNlBBTVUsZ0JBQWdCLDJDQ25DdEQsd2hDQXdCQTs0RkRLYSxlQUFlO2tCQUwzQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFdBQVcsRUFBRSxxQkFBcUI7b0JBQ2xDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDt3SUFFVSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFZ0UsYUFBYTtzQkFBbEYsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IENvbHVtbiB9IGZyb20gJy4uLy4uL21vZGVscy9jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgU29ydGluZ0NvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3NvcnRpbmctY29udHJvbGxlcic7XG5pbXBvcnQge1xuICBSZW9yZGVyQ29udHJvbGxlcixcbiAgUmVvcmRlclBvc2l0aW9uLFxuICBSZW9yZGVyU3RyYXRlZ3lcbn0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9yZW9yZGVyLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgU2VsZWN0aW9uQ29udHJvbGxlciwgU2VsZWN0aW9uQ2hhbmdlVHlwZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvc2VsZWN0aW9uLWNvbnRyb2xsZXInO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1tmcy1saXN0LWhlYWRdJyxcbiAgdGVtcGxhdGVVcmw6ICdoZWFkLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRnNIZWFkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBzb3J0aW5nOiBTb3J0aW5nQ29udHJvbGxlcjtcbiAgQElucHV0KCkgY29sdW1uczogQ29sdW1uW107XG4gIEBJbnB1dCgpIGhhc1Jvd0FjdGlvbnM6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHNlbGVjdGlvbjogU2VsZWN0aW9uQ29udHJvbGxlcjtcblxuICBAVmlld0NoaWxkKCdyb3dzQ29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSkgcm93c0NvbnRhaW5lcjtcblxuICBwdWJsaWMgc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgcHVibGljIHJlYWRvbmx5IFJlb3JkZXJQb3NpdGlvbiA9IFJlb3JkZXJQb3NpdGlvbjtcbiAgcHVibGljIHJlYWRvbmx5IFJlb3JkZXJTdHJhdGVneSA9IFJlb3JkZXJTdHJhdGVneTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlb3JkZXJDb250cm9sbGVyOiBSZW9yZGVyQ29udHJvbGxlcixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRTb3J0aW5nKCk7XG4gICAgdGhpcy5pbml0U2VsZWN0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0IEFsbCBWaXNpYmxlIFJvd3NcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBwdWJsaWMgc2VsZWN0QWxsKGV2ZW50OiBNYXRDaGVja2JveENoYW5nZSkge1xuICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdEFsbFZpc2libGVSb3dzKGV2ZW50LmNoZWNrZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrIEJ5IGZvciBpbXByb3ZlIGNoYW5nZSBkZXRlY3Rpb25cbiAgICogQHBhcmFtIGluZGV4XG4gICAqL1xuICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4KSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBzb3J0aW5nIGNoYW5nZVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0U29ydGluZygpIHtcbiAgICB0aGlzLnNvcnRpbmcuc29ydGluZ0NoYW5nZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBzZWxlY3Rpb24gY2hhbmdlXG4gICAqL1xuICBwcml2YXRlIGluaXRTZWxlY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25DaGFuZ2UkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgICh7dHlwZX0pID0+IChcbiAgICAgICAgICAgICAgdHlwZSA9PT0gU2VsZWN0aW9uQ2hhbmdlVHlwZS5BbGxWaXNpYmxlU2VsZWN0aW9uQ2hhbmdlXG4gICAgICAgICAgICAgIHx8IHR5cGUgPT09IFNlbGVjdGlvbkNoYW5nZVR5cGUuU2VsZWN0ZWRBbGxcbiAgICAgICAgICAgICAgfHwgdHlwZSA9PT0gU2VsZWN0aW9uQ2hhbmdlVHlwZS5Sb3dTZWxlY3Rpb25DaGFuZ2VcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoe3R5cGUsIHBheWxvYWQ6IHN0YXR1c30pID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQWxsID0gc3RhdHVzO1xuXG4gICAgICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8dHIgY2xhc3M9XCJmcy1saXN0LXJvd1wiPlxuICA8IS0tIERyYWcgLS0+XG4gIDx0aCAqbmdJZj1cInJlb3JkZXJDb250cm9sbGVyLmxlZnRSZW9yZGVyQWN0aXZhdGVkJCB8IGFzeW5jXCIgY2xhc3M9XCJmcy1saXN0LWNvbCBkcmFnLWNvbFwiPjwvdGg+XG5cbiAgPCEtLSBTZWxlY3Rpb24gLS0+XG4gIDx0aCAqbmdJZj1cInNlbGVjdGlvbiAmJiAhKHNlbGVjdGlvbi5kaXNhYmxlZCQgfCBhc3luYylcIiBjbGFzcz1cImZzLWxpc3QtY29sIGZzLWxpc3QtY29sLXNlbGVjdGlvblwiPlxuICAgIDxtYXQtY2hlY2tib3ggKGNoYW5nZSk9XCJzZWxlY3RBbGwoJGV2ZW50KVwiIFtjaGVja2VkXT1cInNlbGVjdGVkQWxsXCI+PC9tYXQtY2hlY2tib3g+XG4gIDwvdGg+XG5cbiAgPCEtLSBDb250ZW50IC0tPlxuICA8dGggZnMtaGVhZC1jZWxsICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNvcnRpbmcuc29ydEJ5KGNvbHVtbilcIlxuICAgICAgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgW2NsYXNzLnNvcnRpbmddPVwiY29sdW1uLnNvcnRhYmxlXCJcbiAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5oZWFkZXJDb25maWdzLmNsYXNzZXNBcnJheVwiXG4gICAgICBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbi5oZWFkZXJDb25maWdzLmNvbHNwYW5cIlxuICAgICAgW2F0dHIud2lkdGhdPVwiY29sdW1uLndpZHRoXCI+PC90aD5cblxuICA8IS0tIERyYWcgLS0+XG4gIDx0aCAqbmdJZj1cInJlb3JkZXJDb250cm9sbGVyLnJpZ2h0UmVvcmRlckFjdGl2YXRlZCQgfCBhc3luY1wiIGNsYXNzPVwiZnMtbGlzdC1jb2wgZHJhZy1jb2xcIj48L3RoPlxuXG4gIDwhLS0gUm93IEFjdGlvbnMgLS0+XG4gIDx0aCAqbmdJZj1cImhhc1Jvd0FjdGlvbnMgJiYgIShyZW9yZGVyQ29udHJvbGxlci5tYW51YWxSZW9yZGVyQWN0aXZhdGVkJCB8IGFzeW5jKVwiIGNsYXNzPVwiZnMtbGlzdC1jb2wgcm93LWFjdGlvbnNcIj48L3RoPlxuPC90cj5cbiJdfQ==
|