@porscheinformatik/material-addons 14.0.1-beta.1 → 14.1.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.
Files changed (64) hide show
  1. package/esm2020/lib/button/button.mjs +7 -0
  2. package/esm2020/lib/button/button.module.mjs +26 -0
  3. package/esm2020/lib/button/danger-button/danger-button.component.mjs +28 -0
  4. package/esm2020/lib/button/flat-button/link-button.component.mjs +28 -0
  5. package/esm2020/lib/button/icon-button/icon-button.component.mjs +28 -0
  6. package/esm2020/lib/button/mad-basic-button.mjs +39 -0
  7. package/esm2020/lib/button/outline-button/outline-button.component.mjs +28 -0
  8. package/esm2020/lib/button/primary-button/primary-button.component.mjs +28 -0
  9. package/esm2020/lib/card/card.component.mjs +129 -0
  10. package/esm2020/lib/card/card.mjs +2 -0
  11. package/esm2020/lib/card/card.module.mjs +23 -0
  12. package/esm2020/lib/content-panel/content-header/content-header.component.mjs +11 -0
  13. package/esm2020/lib/content-panel/content-panel-container/content-panel-container.component.mjs +11 -0
  14. package/esm2020/lib/content-panel/content-panel-container-content/content-panel-container-content.component.mjs +11 -0
  15. package/esm2020/lib/content-panel/content-panel-container-footer/content-panel-container-footer.component.mjs +11 -0
  16. package/esm2020/lib/content-panel/content-panel.module.mjs +42 -0
  17. package/esm2020/lib/content-panel/main-container/main-container.component.mjs +11 -0
  18. package/esm2020/lib/data-table/data-table-action-type.mjs +6 -0
  19. package/esm2020/lib/data-table/data-table-action.mjs +2 -0
  20. package/esm2020/lib/data-table/data-table-column-definition.mjs +2 -0
  21. package/esm2020/lib/data-table/data-table-column.mjs +2 -0
  22. package/esm2020/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.mjs +103 -0
  23. package/esm2020/lib/data-table/data-table.component.mjs +504 -0
  24. package/esm2020/lib/data-table/data-table.mjs +3 -0
  25. package/esm2020/lib/data-table/data-table.module.mjs +81 -0
  26. package/esm2020/lib/flowbar/flowbar.component.mjs +190 -0
  27. package/esm2020/lib/flowbar/flowbar.module.mjs +19 -0
  28. package/esm2020/lib/material-action-button/material-action-button.component.mjs +34 -0
  29. package/esm2020/lib/material-action-button/material-action-button.module.mjs +22 -0
  30. package/esm2020/lib/material-addons.module.mjs +45 -0
  31. package/esm2020/lib/numeric-field/number-format.service.mjs +139 -0
  32. package/esm2020/lib/numeric-field/numeric-field.directive.mjs +295 -0
  33. package/esm2020/lib/numeric-field/numeric-field.mjs +2 -0
  34. package/esm2020/lib/numeric-field/numeric-field.module.mjs +24 -0
  35. package/esm2020/lib/quick-list/base-quick-list.component.mjs +101 -0
  36. package/esm2020/lib/quick-list/quick-list-compact/quick-list-compact.component.mjs +20 -0
  37. package/esm2020/lib/quick-list/quick-list.component.mjs +21 -0
  38. package/esm2020/lib/quick-list/quick-list.mjs +4 -0
  39. package/esm2020/lib/quick-list/quick-list.module.mjs +23 -0
  40. package/esm2020/lib/readonly/readonly-form-field/readonly-form-field.component.mjs +155 -0
  41. package/esm2020/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.mjs +185 -0
  42. package/esm2020/lib/readonly/readonly-form-field.module.mjs +24 -0
  43. package/esm2020/lib/stepper/mad-stepper-animation.mjs +13 -0
  44. package/esm2020/lib/stepper/step-header/step-header.component.mjs +78 -0
  45. package/esm2020/lib/stepper/stepper.component.mjs +160 -0
  46. package/esm2020/lib/stepper/stepper.module.mjs +23 -0
  47. package/esm2020/lib/table/column-header.mjs +2 -0
  48. package/esm2020/lib/table/table-action.mjs +2 -0
  49. package/esm2020/lib/table/table.component.mjs +130 -0
  50. package/esm2020/lib/table/table.mjs +2 -0
  51. package/esm2020/lib/table/table.module.mjs +56 -0
  52. package/esm2020/lib/throttle-click/throttle-click.directive.mjs +38 -0
  53. package/esm2020/lib/throttle-click/throttle-click.module.mjs +18 -0
  54. package/esm2020/lib/toolbar/toolbar-action.interface.mjs +2 -0
  55. package/esm2020/lib/toolbar/toolbar.component.mjs +78 -0
  56. package/esm2020/lib/toolbar/toolbar.module.mjs +56 -0
  57. package/esm2020/lib/toolbar/toolbar.service.mjs +124 -0
  58. package/esm2020/porscheinformatik-material-addons.mjs +5 -0
  59. package/esm2020/public_api.mjs +41 -0
  60. package/fesm2015/porscheinformatik-material-addons.mjs +2984 -0
  61. package/fesm2015/porscheinformatik-material-addons.mjs.map +1 -0
  62. package/fesm2020/porscheinformatik-material-addons.mjs +2962 -0
  63. package/fesm2020/porscheinformatik-material-addons.mjs.map +1 -0
  64. package/package.json +5 -2
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1jb2x1bW4tZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvbGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS1jb2x1bW4tZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVRhYmxlQ29sdW1uIH0gZnJvbSAnLi9kYXRhLXRhYmxlLWNvbHVtbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVRhYmxlQ29sdW1uRGVmaW5pdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcbiAgZGlzcGxheWVkQ29sdW1uczogRGF0YVRhYmxlQ29sdW1uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YVRhYmxlQ29sdW1uRGVmaW5pdGlvbkNoYW5nZSB7XG4gIGFjdGlvbjogc3RyaW5nO1xuICBkZWZpbml0aW9uOiBEYXRhVGFibGVDb2x1bW5EZWZpbml0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFUYWJsZURpYWxvZ0RhdGEge1xuICBhbGxDb2x1bW5zOiBEYXRhVGFibGVDb2x1bW5bXTtcbiAgZGVmaW5pdGlvbjogRGF0YVRhYmxlQ29sdW1uRGVmaW5pdGlvbjtcbiAgZGVsZXRlRGVmaW5pdGlvbkFsbG93ZWQ6IGJvb2xlYW47XG4gIGZpbHRlckNvbHVtbnNMYWJlbDogc3RyaW5nO1xuICBmaWx0ZXJDb2x1bW5zUGxhY2VIb2xkZXI6IHN0cmluZztcbiAgbm9EYXRhVGV4dDogc3RyaW5nO1xuICB0aXRsZUxhYmVsOiBzdHJpbmc7XG4gIHNlbGVjdGVkTGFiZWw6IHN0cmluZztcbiAgYXZhaWxhYmxlTGFiZWw6IHN0cmluZztcbiAgc2F2ZUxhYmVsOiBzdHJpbmc7XG4gIGRlbGV0ZUxhYmVsOiBzdHJpbmc7XG4gIGNhbmNlbExhYmVsOiBzdHJpbmc7XG4gIGluZm9UZXh0TGFiZWw6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1jb2x1bW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9kYXRhLXRhYmxlL2RhdGEtdGFibGUtY29sdW1uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIERhdGFUYWJsZUNvbHVtbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIG9yZGVyQnlOYW1lPzogc3RyaW5nO1xuICBkYXRhUHJvcGVydHlOYW1lOiBzdHJpbmc7XG4gIGlzU29ydGFibGU/OiBib29sZWFuO1xuICBpc1JpZ2h0QWxpZ25lZD86IGJvb2xlYW47XG4gIHRyYW5zZm9ybWVyPzogYW55O1xuICB0cmFuc2Zvcm1lclBhcmFtcz86IGFueVtdO1xufVxuIl19
@@ -0,0 +1,103 @@
1
+ import { Component, Inject } from '@angular/core';
2
+ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
3
+ import { moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/material/dialog";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "@angular/material/button";
8
+ import * as i4 from "@angular/material/icon";
9
+ import * as i5 from "@angular/material/form-field";
10
+ import * as i6 from "@angular/material/input";
11
+ import * as i7 from "../../button/primary-button/primary-button.component";
12
+ import * as i8 from "../../button/outline-button/outline-button.component";
13
+ import * as i9 from "../../button/danger-button/danger-button.component";
14
+ import * as i10 from "@angular/cdk/drag-drop";
15
+ import * as i11 from "@angular/forms";
16
+ import * as i12 from "@ngx-translate/core";
17
+ export class DataTableColumnsModalComponent {
18
+ constructor(dialogRef, data) {
19
+ this.dialogRef = dialogRef;
20
+ this.data = data;
21
+ this.selectedColumns = [];
22
+ this.availableColumns = [];
23
+ this.filteredAvailableColumns = [];
24
+ }
25
+ ngOnInit() {
26
+ this.definition = this.data.definition;
27
+ for (const column of this.data.allColumns) {
28
+ const columnId = column.id;
29
+ const selectedColumnIds = this.definition.displayedColumns.map(col => col.id);
30
+ if (selectedColumnIds.includes(columnId)) {
31
+ this.selectedColumns.push(column);
32
+ }
33
+ else {
34
+ this.availableColumns.push(column);
35
+ }
36
+ }
37
+ this.clearFilterValue();
38
+ }
39
+ onDrop(event) {
40
+ if (event.previousContainer === event.container) {
41
+ moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
42
+ }
43
+ else {
44
+ const itemIndex = this.findMatchingItemIndex(event.previousContainer, event.item);
45
+ transferArrayItem(event.previousContainer.data, event.container.data, itemIndex, event.currentIndex);
46
+ this.clearFilterValue();
47
+ this.availableColumns.sort((a, b) => a.label.localeCompare(b.label));
48
+ }
49
+ }
50
+ onSave() {
51
+ this.definition.displayedColumns = this.selectedColumns;
52
+ const saveChange = {
53
+ action: 'SAVE',
54
+ definition: this.definition,
55
+ };
56
+ this.dialogRef.close(saveChange);
57
+ }
58
+ onDelete() {
59
+ const deleteChange = {
60
+ action: 'DELETE',
61
+ definition: this.definition,
62
+ };
63
+ this.dialogRef.close(deleteChange);
64
+ }
65
+ onCancel() {
66
+ this.dialogRef.close();
67
+ }
68
+ updateFilterValue() {
69
+ if (this.searchFilter?.length > 0) {
70
+ this.filteredAvailableColumns = this.availableColumns.filter(c => c.label.toLowerCase().includes(this.searchFilter.toLowerCase()));
71
+ }
72
+ else {
73
+ this.filteredAvailableColumns = [...this.availableColumns];
74
+ }
75
+ }
76
+ findMatchingItemIndex(previousContainer, item) {
77
+ const itemId = item.element.nativeElement.id;
78
+ const previousContainerItems = [...previousContainer.data];
79
+ if (previousContainerItems?.length < 1) {
80
+ return 0;
81
+ }
82
+ for (let itemIndex = 0; itemIndex < previousContainerItems.length; itemIndex++) {
83
+ if (previousContainerItems[itemIndex].id === itemId) {
84
+ return itemIndex;
85
+ }
86
+ }
87
+ return 0;
88
+ }
89
+ clearFilterValue() {
90
+ this.searchFilter = '';
91
+ this.filteredAvailableColumns = [...this.availableColumns];
92
+ }
93
+ }
94
+ DataTableColumnsModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: DataTableColumnsModalComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
95
+ DataTableColumnsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: DataTableColumnsModalComponent, selector: "mad-data-table-columns-modal.component", ngImport: i0, template: "<h1 mat-dialog-title>{{ data?.titleLabel | translate }}</h1>\n<div mat-dialog-content>\n <div class=\"column-drag-main-content\">\n <div class=\"column-drag-container\">\n <div class=\"column-drag-info-area\">{{ data?.infoTextLabel | translate }}</div>\n <div class=\"column-drag-container-header\">{{ data?.selectedLabel | translate }}</div>\n <div\n cdkDropList\n #selectedList=\"cdkDropList\"\n [cdkDropListData]=\"selectedColumns\"\n [cdkDropListConnectedTo]=\"[availableList]\"\n class=\"column-drag-list selected-drag-list\"\n (cdkDropListDropped)=\"onDrop($event)\">\n <div class=\"column-drag-box\"\n *ngFor=\"let selectedColumn of selectedColumns; let i = index\"\n cdkDrag\n [id]=\"selectedColumn.id\"\n >\n {{i + 1}}. {{selectedColumn.label | translate }}\n </div>\n </div>\n </div>\n\n <div class=\"column-drag-container\">\n <div class=\"column-drag-info-area\">\n <!-- Table filter -->\n <mat-form-field>\n <mat-label>{{ data?.filterColumnsLabel | translate }}</mat-label>\n <input matInput autocomplete=\"off\" (keyup)=\"updateFilterValue()\"\n placeholder=\"{{ data?.filterColumnsPlaceHolder | translate }}\" [(ngModel)]=\"searchFilter\"/>\n <button *ngIf=\"searchFilter\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"clearFilterValue()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n <div class=\"column-drag-container-header\">{{ data?.availableLabel | translate }}</div>\n <div\n cdkDropList\n cdkDropListSortingDisabled\n #availableList=\"cdkDropList\"\n [cdkDropListData]=\"availableColumns\"\n [cdkDropListConnectedTo]=\"[selectedList]\"\n class=\"column-drag-list\"\n (cdkDropListDropped)=\"onDrop($event)\">\n <div *ngFor=\"let availableColumn of filteredAvailableColumns\" class=\"column-drag-box\" cdkDrag [id]=\"availableColumn.id\">\n {{availableColumn.label}}\n </div>\n </div>\n </div>\n </div>\n\n</div>\n<div mat-dialog-actions [align]=\"'end'\">\n <mad-outline-button (click)=\"onCancel()\">\n {{ data?.cancelLabel | translate }}\n </mad-outline-button>\n <mad-danger-button *ngIf=\"data?.deleteDefinitionAllowed\" (click)=\"onDelete()\">\n {{ data?.deleteLabel | translate }}\n </mad-danger-button>\n <mad-primary-button (click)=\"onSave()\" [disabled]=\"!(this.selectedColumns?.length > 0)\">\n {{ data?.saveLabel | translate }}\n </mad-primary-button>\n</div>\n", styles: [".column-drag-main-content{display:flex;flex-direction:row;width:544px;justify-content:space-between;padding:8px 8px 16px;margin-bottom:16px;border-bottom:1px solid whitesmoke}.column-drag-container{width:256px;max-width:100%;display:inline-block;vertical-align:top;font-size:small}.info-box{width:100%;font-size:small;margin-bottom:16px;color:#000000a8}.column-drag-info-area{width:100%;height:36px;margin-bottom:32px;color:#000000a8;font-size:small;display:flex;justify-content:right;align-items:stretch;flex-direction:column}.column-drag-list{border:solid 1px #ccc;height:200px;box-sizing:border-box;background:white;border-radius:4px;overflow:auto;display:block}.column-drag-container-header{font-weight:700;margin-bottom:4px}.column-drag-box{padding:12px 10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;height:40px;cursor:move;background:white;font-size:14px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.column-drag-box:last-child{border:none}.column-drag-list.cdk-drop-list-dragging .column-drag-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.PrimaryButtonComponent, selector: "mad-primary-button", inputs: ["type", "disabled", "title"] }, { kind: "component", type: i8.OutlineButtonComponent, selector: "mad-outline-button", inputs: ["type", "disabled", "title"] }, { kind: "component", type: i9.DangerButtonComponent, selector: "mad-danger-button", inputs: ["type", "disabled", "title"] }, { kind: "directive", type: i10.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i10.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }] });
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: DataTableColumnsModalComponent, decorators: [{
97
+ type: Component,
98
+ args: [{ selector: 'mad-data-table-columns-modal.component', template: "<h1 mat-dialog-title>{{ data?.titleLabel | translate }}</h1>\n<div mat-dialog-content>\n <div class=\"column-drag-main-content\">\n <div class=\"column-drag-container\">\n <div class=\"column-drag-info-area\">{{ data?.infoTextLabel | translate }}</div>\n <div class=\"column-drag-container-header\">{{ data?.selectedLabel | translate }}</div>\n <div\n cdkDropList\n #selectedList=\"cdkDropList\"\n [cdkDropListData]=\"selectedColumns\"\n [cdkDropListConnectedTo]=\"[availableList]\"\n class=\"column-drag-list selected-drag-list\"\n (cdkDropListDropped)=\"onDrop($event)\">\n <div class=\"column-drag-box\"\n *ngFor=\"let selectedColumn of selectedColumns; let i = index\"\n cdkDrag\n [id]=\"selectedColumn.id\"\n >\n {{i + 1}}. {{selectedColumn.label | translate }}\n </div>\n </div>\n </div>\n\n <div class=\"column-drag-container\">\n <div class=\"column-drag-info-area\">\n <!-- Table filter -->\n <mat-form-field>\n <mat-label>{{ data?.filterColumnsLabel | translate }}</mat-label>\n <input matInput autocomplete=\"off\" (keyup)=\"updateFilterValue()\"\n placeholder=\"{{ data?.filterColumnsPlaceHolder | translate }}\" [(ngModel)]=\"searchFilter\"/>\n <button *ngIf=\"searchFilter\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"clearFilterValue()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n <div class=\"column-drag-container-header\">{{ data?.availableLabel | translate }}</div>\n <div\n cdkDropList\n cdkDropListSortingDisabled\n #availableList=\"cdkDropList\"\n [cdkDropListData]=\"availableColumns\"\n [cdkDropListConnectedTo]=\"[selectedList]\"\n class=\"column-drag-list\"\n (cdkDropListDropped)=\"onDrop($event)\">\n <div *ngFor=\"let availableColumn of filteredAvailableColumns\" class=\"column-drag-box\" cdkDrag [id]=\"availableColumn.id\">\n {{availableColumn.label}}\n </div>\n </div>\n </div>\n </div>\n\n</div>\n<div mat-dialog-actions [align]=\"'end'\">\n <mad-outline-button (click)=\"onCancel()\">\n {{ data?.cancelLabel | translate }}\n </mad-outline-button>\n <mad-danger-button *ngIf=\"data?.deleteDefinitionAllowed\" (click)=\"onDelete()\">\n {{ data?.deleteLabel | translate }}\n </mad-danger-button>\n <mad-primary-button (click)=\"onSave()\" [disabled]=\"!(this.selectedColumns?.length > 0)\">\n {{ data?.saveLabel | translate }}\n </mad-primary-button>\n</div>\n", styles: [".column-drag-main-content{display:flex;flex-direction:row;width:544px;justify-content:space-between;padding:8px 8px 16px;margin-bottom:16px;border-bottom:1px solid whitesmoke}.column-drag-container{width:256px;max-width:100%;display:inline-block;vertical-align:top;font-size:small}.info-box{width:100%;font-size:small;margin-bottom:16px;color:#000000a8}.column-drag-info-area{width:100%;height:36px;margin-bottom:32px;color:#000000a8;font-size:small;display:flex;justify-content:right;align-items:stretch;flex-direction:column}.column-drag-list{border:solid 1px #ccc;height:200px;box-sizing:border-box;background:white;border-radius:4px;overflow:auto;display:block}.column-drag-container-header{font-weight:700;margin-bottom:4px}.column-drag-box{padding:12px 10px;border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;height:40px;cursor:move;background:white;font-size:14px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.column-drag-box:last-child{border:none}.column-drag-list.cdk-drop-list-dragging .column-drag-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
99
+ }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
100
+ type: Inject,
101
+ args: [MAT_DIALOG_DATA]
102
+ }] }]; } });
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1jb2x1bW5zLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvbGliL2RhdGEtdGFibGUvZGF0YS10YWJsZS1jb2x1bW5zLW1vZGFsL2RhdGEtdGFibGUtY29sdW1ucy1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9kYXRhLXRhYmxlL2RhdGEtdGFibGUtY29sdW1ucy1tb2RhbC9kYXRhLXRhYmxlLWNvbHVtbnMtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUd6RSxPQUFPLEVBQXFDLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7Ozs7OztBQU8vRyxNQUFNLE9BQU8sOEJBQThCO0lBT3pDLFlBQ1MsU0FBdUQsRUFFdkQsSUFBeUI7UUFGekIsY0FBUyxHQUFULFNBQVMsQ0FBOEM7UUFFdkQsU0FBSSxHQUFKLElBQUksQ0FBcUI7UUFQbEMsb0JBQWUsR0FBc0IsRUFBRSxDQUFDO1FBQ3hDLHFCQUFnQixHQUFzQixFQUFFLENBQUM7UUFDekMsNkJBQXdCLEdBQXNCLEVBQUUsQ0FBQztJQU05QyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDdkMsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN6QyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNC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QUFJLHNCQUFzQixFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdEMsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUNELEtBQUssSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUU7WUFDOUUsSUFBSSxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssTUFBTSxFQUFFO2dCQUNuRCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtTQUNGO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM3RCxDQUFDOzsySEFwRlUsOEJBQThCLDhDQVMvQixlQUFlOytHQVRkLDhCQUE4Qiw4RUNYM0Msb25GQStEQTsyRkRwRGEsOEJBQThCO2tCQUwxQyxTQUFTOytCQUNFLHdDQUF3Qzs7MEJBYS9DLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IERhdGFUYWJsZUNvbHVtbiB9IGZyb20gJy4uL2RhdGEtdGFibGUtY29sdW1uJztcbmltcG9ydCB7IERhdGFUYWJsZUNvbHVtbkRlZmluaXRpb24sIERhdGFUYWJsZUNvbHVtbkRlZmluaXRpb25DaGFuZ2UsIERhdGFUYWJsZURpYWxvZ0RhdGEgfSBmcm9tICcuLi9kYXRhLXRhYmxlLWNvbHVtbi1kZWZpbml0aW9uJztcbmltcG9ydCB7IENka0RyYWcsIENka0RyYWdEcm9wLCBDZGtEcm9wTGlzdCwgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYWQtZGF0YS10YWJsZS1jb2x1bW5zLW1vZGFsLmNvbXBvbmVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXRhYmxlLWNvbHVtbnMtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLXRhYmxlLWNvbHVtbnMtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlQ29sdW1uc01vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZGVmaW5pdGlvbjogRGF0YVRhYmxlQ29sdW1uRGVmaW5pdGlvbjtcbiAgc2VhcmNoRmlsdGVyOiBzdHJpbmc7XG4gIHNlbGVjdGVkQ29sdW1uczogRGF0YVRhYmxlQ29sdW1uW10gPSBbXTtcbiAgYXZhaWxhYmxlQ29sdW1uczogRGF0YVRhYmxlQ29sdW1uW10gPSBbXTtcbiAgZmlsdGVyZWRBdmFpbGFibGVDb2x1bW5zOiBEYXRhVGFibGVDb2x1bW5bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEYXRhVGFibGVDb2x1bW5zTW9kYWxDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKVxuICAgIHB1YmxpYyBkYXRhOiBEYXRhVGFibGVEaWFsb2dEYXRhLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kZWZpbml0aW9uID0gdGhpcy5kYXRhLmRlZmluaXRpb247XG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5kYXRhLmFsbENvbHVtbnMpIHtcbiAgICAgIGNvbnN0IGNvbHVtbklkID0gY29sdW1uLmlkO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRDb2x1bW5JZHM6IHN0cmluZ1tdID0gdGhpcy5kZWZpbml0aW9uLmRpc3BsYXllZENvbHVtbnMubWFwKGNvbCA9PiBjb2wuaWQpO1xuICAgICAgaWYgKHNlbGVjdGVkQ29sdW1uSWRzLmluY2x1ZGVzKGNvbHVtbklkKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucy5wdXNoKGNvbHVtbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmF2YWlsYWJsZUNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNsZWFyRmlsdGVyVmFsdWUoKTtcbiAgfVxuXG4gIG9uRHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8RGF0YVRhYmxlQ29sdW1uW10+KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyID09PSBldmVudC5jb250YWluZXIpIHtcbiAgICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaXRlbUluZGV4ID0gdGhpcy5maW5kTWF0Y2hpbmdJdGVtSW5kZXgoZXZlbnQucHJldmlvdXNDb250YWluZXIsIGV2ZW50Lml0ZW0pO1xuICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSwgZXZlbnQuY29udGFpbmVyLmRhdGEsIGl0ZW1JbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgIHRoaXMuY2xlYXJGaWx0ZXJWYWx1ZSgpO1xuICAgICAgdGhpcy5hdmFpbGFibGVDb2x1bW5zLnNvcnQoKGEsIGIpID0+IGEubGFiZWwubG9jYWxlQ29tcGFyZShiLmxhYmVsKSk7XG4gICAgfVxuICB9XG5cbiAgb25TYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuZGVmaW5pdGlvbi5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5zZWxlY3RlZENvbHVtbnM7XG4gICAgY29uc3Qgc2F2ZUNoYW5nZTogRGF0YVRhYmxlQ29sdW1uRGVmaW5pdGlvbkNoYW5nZSA9IHtcbiAgICAgIGFjdGlvbjogJ1NBVkUnLFxuICAgICAgZGVmaW5pdGlvbjogdGhpcy5kZWZpbml0aW9uLFxuICAgIH07XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoc2F2ZUNoYW5nZSk7XG4gIH1cblxuICBvbkRlbGV0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBkZWxldGVDaGFuZ2U6IERhdGFUYWJsZUNvbHVtbkRlZmluaXRpb25DaGFuZ2UgPSB7XG4gICAgICBhY3Rpb246ICdERUxFVEUnLFxuICAgICAgZGVmaW5pdGlvbjogdGhpcy5kZWZpbml0aW9uLFxuICAgIH07XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZGVsZXRlQ2hhbmdlKTtcbiAgfVxuXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cblxuICB1cGRhdGVGaWx0ZXJWYWx1ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWFyY2hGaWx0ZXI/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRBdmFpbGFibGVDb2x1bW5zID0gdGhpcy5hdmFpbGFibGVDb2x1bW5zLmZpbHRlcihjID0+IGMubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnNlYXJjaEZpbHRlci50b0xvd2VyQ2FzZSgpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRBdmFpbGFibGVDb2x1bW5zID0gWy4uLnRoaXMuYXZhaWxhYmxlQ29sdW1uc107XG4gICAgfVxuICB9XG5cbiAgZmluZE1hdGNoaW5nSXRlbUluZGV4KHByZXZpb3VzQ29udGFpbmVyOiBDZGtEcm9wTGlzdCwgaXRlbTogQ2RrRHJhZyk6IG51bWJlciB7XG4gICAgY29uc3QgaXRlbUlkID0gaXRlbS5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaWQ7XG4gICAgY29uc3QgcHJldmlvdXNDb250YWluZXJJdGVtcyA9IFsuLi5wcmV2aW91c0NvbnRhaW5lci5kYXRhXSBhcyBEYXRhVGFibGVDb2x1bW5bXTtcbiAgICBpZiAocHJldmlvdXNDb250YWluZXJJdGVtcz8ubGVuZ3RoIDwgMSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGZvciAobGV0IGl0ZW1JbmRleCA9IDA7IGl0ZW1JbmRleCA8IHByZXZpb3VzQ29udGFpbmVySXRlbXMubGVuZ3RoOyBpdGVtSW5kZXgrKykge1xuICAgICAgaWYgKHByZXZpb3VzQ29udGFpbmVySXRlbXNbaXRlbUluZGV4XS5pZCA9PT0gaXRlbUlkKSB7XG4gICAgICAgIHJldHVybiBpdGVtSW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgY2xlYXJGaWx0ZXJWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaEZpbHRlciA9ICcnO1xuICAgIHRoaXMuZmlsdGVyZWRBdmFpbGFibGVDb2x1bW5zID0gWy4uLnRoaXMuYXZhaWxhYmxlQ29sdW1uc107XG4gIH1cbn1cbiIsIjxoMSBtYXQtZGlhbG9nLXRpdGxlPnt7IGRhdGE/LnRpdGxlTGFiZWwgfCB0cmFuc2xhdGUgfX08L2gxPlxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tZHJhZy1tYWluLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWRyYWctY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWRyYWctaW5mby1hcmVhXCI+e3sgZGF0YT8uaW5mb1RleHRMYWJlbCB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1kcmFnLWNvbnRhaW5lci1oZWFkZXJcIj57eyBkYXRhPy5zZWxlY3RlZExhYmVsIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICNzZWxlY3RlZExpc3Q9XCJjZGtEcm9wTGlzdFwiXG4gICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwic2VsZWN0ZWRDb2x1bW5zXCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW2F2YWlsYWJsZUxpc3RdXCJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tZHJhZy1saXN0IHNlbGVjdGVkLWRyYWctbGlzdFwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wKCRldmVudClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1kcmFnLWJveFwiXG4gICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlbGVjdGVkQ29sdW1uIG9mIHNlbGVjdGVkQ29sdW1uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgY2RrRHJhZ1xuICAgICAgICAgICAgIFtpZF09XCJzZWxlY3RlZENvbHVtbi5pZFwiXG4gICAgICAgID5cbiAgICAgICAgICB7e2kgKyAxfX0uIHt7c2VsZWN0ZWRDb2x1bW4ubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tZHJhZy1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tZHJhZy1pbmZvLWFyZWFcIj5cbiAgICAgICAgPCEtLSBUYWJsZSBmaWx0ZXIgLS0+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LWxhYmVsPnt7IGRhdGE/LmZpbHRlckNvbHVtbnNMYWJlbCB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5dXApPVwidXBkYXRlRmlsdGVyVmFsdWUoKVwiXG4gICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgZGF0YT8uZmlsdGVyQ29sdW1uc1BsYWNlSG9sZGVyIHwgdHJhbnNsYXRlIH19XCIgWyhuZ01vZGVsKV09XCJzZWFyY2hGaWx0ZXJcIi8+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNlYXJjaEZpbHRlclwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkNsZWFyXCIgKGNsaWNrKT1cImNsZWFyRmlsdGVyVmFsdWUoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1kcmFnLWNvbnRhaW5lci1oZWFkZXJcIj57eyBkYXRhPy5hdmFpbGFibGVMYWJlbCB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICBjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZFxuICAgICAgICAjYXZhaWxhYmxlTGlzdD1cImNka0Ryb3BMaXN0XCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJhdmFpbGFibGVDb2x1bW5zXCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiW3NlbGVjdGVkTGlzdF1cIlxuICAgICAgICBjbGFzcz1cImNvbHVtbi1kcmFnLWxpc3RcIlxuICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcCgkZXZlbnQpXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGF2YWlsYWJsZUNvbHVtbiBvZiBmaWx0ZXJlZEF2YWlsYWJsZUNvbHVtbnNcIiBjbGFzcz1cImNvbHVtbi1kcmFnLWJveFwiIGNka0RyYWcgW2lkXT1cImF2YWlsYWJsZUNvbHVtbi5pZFwiPlxuICAgICAgICAgIHt7YXZhaWxhYmxlQ29sdW1uLmxhYmVsfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbjwvZGl2PlxuPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnMgW2FsaWduXT1cIidlbmQnXCI+XG4gIDxtYWQtb3V0bGluZS1idXR0b24gKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj5cbiAgICB7eyBkYXRhPy5jYW5jZWxMYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICA8L21hZC1vdXRsaW5lLWJ1dHRvbj5cbiAgPG1hZC1kYW5nZXItYnV0dG9uICpuZ0lmPVwiZGF0YT8uZGVsZXRlRGVmaW5pdGlvbkFsbG93ZWRcIiAoY2xpY2spPVwib25EZWxldGUoKVwiPlxuICAgIHt7IGRhdGE/LmRlbGV0ZUxhYmVsIHwgdHJhbnNsYXRlIH19XG4gIDwvbWFkLWRhbmdlci1idXR0b24+XG4gIDxtYWQtcHJpbWFyeS1idXR0b24gKGNsaWNrKT1cIm9uU2F2ZSgpXCIgW2Rpc2FibGVkXT1cIiEodGhpcy5zZWxlY3RlZENvbHVtbnM/Lmxlbmd0aCA+IDApXCI+XG4gICAge3sgZGF0YT8uc2F2ZUxhYmVsIHwgdHJhbnNsYXRlIH19XG4gIDwvbWFkLXByaW1hcnktYnV0dG9uPlxuPC9kaXY+XG4iXX0=