@softheon/armature 17.14.0 → 17.15.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/ag-grid-components/package.json +3 -0
- package/ag-grid-components/src/column-options-modal/column-options.component.d.ts +11 -4
- package/ag-grid-components/src/sof-table/sof-table.component.d.ts +12 -2
- package/esm2022/ag-grid-components/src/column-options-modal/column-options.component.mjs +3 -3
- package/esm2022/ag-grid-components/src/sof-table/sof-table.component.mjs +22 -11
- package/esm2022/lib/base-components/sof-badge/sof-badge.component.mjs +17 -12
- package/esm2022/lib/base-components/sof-links/sof-link.component.mjs +8 -8
- package/esm2022/lib/base-components/sof-utility-button/sof-utility-button.component.mjs +14 -9
- package/fesm2022/softheon-armature-ag-grid-components.mjs +23 -12
- package/fesm2022/softheon-armature-ag-grid-components.mjs.map +1 -1
- package/fesm2022/softheon-armature.mjs +36 -26
- package/fesm2022/softheon-armature.mjs.map +1 -1
- package/lib/base-components/sof-badge/sof-badge.component.d.ts +7 -7
- package/lib/base-components/sof-links/sof-link.component.d.ts +4 -4
- package/lib/base-components/sof-utility-button/sof-utility-button.component.d.ts +6 -3
- package/package.json +1 -1
|
@@ -25,19 +25,26 @@ export interface ColumnOptionsData {
|
|
|
25
25
|
tableName?: string;
|
|
26
26
|
/** column data returned from the agGrid api */
|
|
27
27
|
columnData?: Array<ColumnData>;
|
|
28
|
+
/** column data from saved user preference or initial `columnData` */
|
|
28
29
|
initialColumnData?: Array<ColumnData>;
|
|
30
|
+
/**
|
|
31
|
+
* To display the text on the column options modal, which states -
|
|
32
|
+
* `"Options will be saved for the next time you log in."`
|
|
33
|
+
*/
|
|
34
|
+
showSaveColumnOptionsText?: boolean;
|
|
29
35
|
}
|
|
30
36
|
/**
|
|
31
37
|
* Column data
|
|
32
38
|
* @description column data derived from the agGrid api, adds id property to type `HandleInput`
|
|
33
39
|
* @property `id: string` columns unique id
|
|
34
|
-
* @
|
|
40
|
+
* @property `text: string` columns header text
|
|
41
|
+
* @property `isChecked: boolean` column not hidden
|
|
35
42
|
*/
|
|
36
43
|
export interface ColumnData {
|
|
37
|
-
/**
|
|
44
|
+
/** columns unique id */
|
|
38
45
|
id?: string;
|
|
39
|
-
/**
|
|
46
|
+
/** columns header text */
|
|
40
47
|
text?: string;
|
|
41
|
-
/**
|
|
48
|
+
/** column not hidden */
|
|
42
49
|
isChecked?: boolean;
|
|
43
50
|
}
|
|
@@ -17,11 +17,21 @@ export declare class SofTableComponent implements OnInit, OnChanges {
|
|
|
17
17
|
enableFilter: boolean;
|
|
18
18
|
/** Enable Column options modal selection */
|
|
19
19
|
enableColumnOptions: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* To display the text on the column options modal, which states -
|
|
22
|
+
* `"Options will be saved for the next time you log in."`
|
|
23
|
+
* @default false
|
|
24
|
+
* @description set to true if set-up for saving preferences to User data.
|
|
25
|
+
* @note You can still save preferences to _local_ or _session_ storage
|
|
26
|
+
* using the `savedColumnState` input, and `updatedColumnState` output event.
|
|
27
|
+
* @see The Demo site is saving to local storage.
|
|
28
|
+
*/
|
|
29
|
+
showSaveColumnOptionsText: boolean;
|
|
20
30
|
/** Name/label of the table */
|
|
21
31
|
tableName: string;
|
|
22
32
|
/** Users saved column options state */
|
|
23
33
|
private savedColumnState;
|
|
24
|
-
/** Output updated column options event to save to user */
|
|
34
|
+
/** Output updated column options event to save to user or browser storage */
|
|
25
35
|
updatedColumnState: EventEmitter<ApplyColumnStateParams>;
|
|
26
36
|
/** the search input */
|
|
27
37
|
gridSearchTextInput: ElementRef<HTMLInputElement>;
|
|
@@ -125,7 +135,7 @@ export declare class SofTableComponent implements OnInit, OnChanges {
|
|
|
125
135
|
*/
|
|
126
136
|
private columnStateToData;
|
|
127
137
|
static ɵfac: i0.ɵɵFactoryDeclaration<SofTableComponent, never>;
|
|
128
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SofTableComponent, "sof-table", never, { "rowData": { "alias": "rowData"; "required": false; }; "colDefs": { "alias": "colDefs"; "required": false; }; "sizeMode": { "alias": "sizeMode"; "required": false; }; "paginationPageSizeSelector": { "alias": "paginationPageSizeSelector"; "required": false; }; "enableSearch": { "alias": "enableSearch"; "required": false; }; "enableFilter": { "alias": "enableFilter"; "required": false; }; "enableColumnOptions": { "alias": "enableColumnOptions"; "required": false; }; "tableName": { "alias": "tableName"; "required": false; }; "savedColumnState": { "alias": "savedColumnState"; "required": false; }; }, { "updatedColumnState": "updatedColumnState"; }, never, ["[sof-table-right-buttons]"], false, never>;
|
|
138
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SofTableComponent, "sof-table", never, { "rowData": { "alias": "rowData"; "required": false; }; "colDefs": { "alias": "colDefs"; "required": false; }; "sizeMode": { "alias": "sizeMode"; "required": false; }; "paginationPageSizeSelector": { "alias": "paginationPageSizeSelector"; "required": false; }; "enableSearch": { "alias": "enableSearch"; "required": false; }; "enableFilter": { "alias": "enableFilter"; "required": false; }; "enableColumnOptions": { "alias": "enableColumnOptions"; "required": false; }; "showSaveColumnOptionsText": { "alias": "showSaveColumnOptionsText"; "required": false; }; "tableName": { "alias": "tableName"; "required": false; }; "savedColumnState": { "alias": "savedColumnState"; "required": false; }; }, { "updatedColumnState": "updatedColumnState"; }, never, ["[sof-table-right-buttons]"], false, never>;
|
|
129
139
|
}
|
|
130
140
|
/** Used for setting filter values */
|
|
131
141
|
declare class SofTableFilter {
|
|
@@ -32,10 +32,10 @@ export class SofColumnOptionsComponent {
|
|
|
32
32
|
this.data.columnData = structuredClone(this.data.initialColumnData);
|
|
33
33
|
}
|
|
34
34
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: SofColumnOptionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: SofColumnOptionsComponent, selector: "sof-column-options", ngImport: i0, template: "<div class=\"column-options-header\">\r\n <i class=\"ph-bold ph-square-split-horizontal\" aria-hidden=\"true\"></i>\r\n <h2 id=\"column-options-heading\">{{'armature.sof-table.column-options' | translate}}</h2>\r\n <button \r\n mat-dialog-close m-l-auto \r\n disableRipple=\"true\" id=\"column-options-close\" aria-label=\"close\">\r\n <i class=\"ph-bold ph-x close\" aria-hidden=\"true\"></i>\r\n </button>\r\n</div>\r\n<div class=\"column-options-container\">\r\n <div class=\"column-options-description\">\r\n <p
|
|
35
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: SofColumnOptionsComponent, selector: "sof-column-options", ngImport: i0, template: "<div class=\"column-options-header\">\r\n <i class=\"ph-bold ph-square-split-horizontal\" aria-hidden=\"true\"></i>\r\n <h2 id=\"column-options-heading\">{{'armature.sof-table.column-options' | translate}}</h2>\r\n <button \r\n mat-dialog-close m-l-auto \r\n disableRipple=\"true\" id=\"column-options-close\" aria-label=\"close\">\r\n <i class=\"ph-bold ph-x close\" aria-hidden=\"true\"></i>\r\n </button>\r\n</div>\r\n<div class=\"column-options-container\">\r\n <div class=\"column-options-description\">\r\n <p>\r\n {{'armature.sof-table.column-options-description' | translate}} \r\n {{ data.showSaveColumnOptionsText ? ('armature.sof-table.column-options-description-saving' | translate) : ''}}\r\n </p>\r\n <p class=\"table-label\">{{data.tableName | translate}} {{'armature.sof-table.columns' | translate}}</p>\r\n </div>\r\n <div \r\n class=\"column-options-selections\"\r\n [class.no-saving-text]=\"!data.showSaveColumnOptionsText\">\r\n <sof-handle [handleList]=\"data.columnData\"/>\r\n </div>\r\n <div class=\"column-options-bottom\">\r\n <button\r\n (click)=\"resetColumnData()\"\r\n mat-flat-button color=\"tertiary\" \r\n size=\"small\" class=\"sof-button-v2\" m-r-auto\r\n id=\"column-options-reset\">\r\n {{'armature.sof-table.reset' | translate}}\r\n </button>\r\n <button \r\n mat-flat-button mat-dialog-close \r\n color=\"secondary\" size=\"small\" class=\"sof-button-v2\"\r\n id=\"column-options-cancel\">\r\n {{'armature.sof-table.cancel' | translate}}\r\n </button>\r\n <button \r\n (click)=\"applyUpdatedColumnState()\"\r\n mat-flat-button color=\"primary\" \r\n size=\"small\" class=\"sof-button-v2\"\r\n id=\"column-options-update\">\r\n {{'armature.sof-table.update' | translate}}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: ["*{box-sizing:border-box}.column-options-header{display:flex;align-items:center;height:56px;padding:0 24px;border-bottom:1px solid #FAFAFA}.column-options-header i{font-size:20px}.column-options-header i:not(.close){margin-right:16px}.column-options-header h2{font-size:18px!important}.column-options-header button{height:20px;width:20px;padding:0;background:none;border:none;cursor:pointer}.column-options-container{padding:24px}.column-options-container .column-options-description p{margin:0 0 16px;font-size:16px;line-height:24px}.column-options-container .column-options-description p.table-label{font-size:14px;color:#0009;margin-bottom:0;line-height:21px}.column-options-container .column-options-selections{max-height:calc(100vh - 300px);overflow-y:scroll;scrollbar-width:none}.column-options-container .column-options-selections.no-saving-text{max-height:calc(100vh - 276px)}.column-options-container .column-options-bottom{display:flex;gap:16px;margin-top:24px}\n"], dependencies: [{ kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.SofHandleComponent, selector: "sof-handle", inputs: ["checkmarkColor", "handleList", "labelText"], outputs: ["orderChanged", "checkboxToggled"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
36
36
|
}
|
|
37
37
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: SofColumnOptionsComponent, decorators: [{
|
|
38
38
|
type: Component,
|
|
39
|
-
args: [{ selector: 'sof-column-options', template: "<div class=\"column-options-header\">\r\n <i class=\"ph-bold ph-square-split-horizontal\" aria-hidden=\"true\"></i>\r\n <h2 id=\"column-options-heading\">{{'armature.sof-table.column-options' | translate}}</h2>\r\n <button \r\n mat-dialog-close m-l-auto \r\n disableRipple=\"true\" id=\"column-options-close\" aria-label=\"close\">\r\n <i class=\"ph-bold ph-x close\" aria-hidden=\"true\"></i>\r\n </button>\r\n</div>\r\n<div class=\"column-options-container\">\r\n <div class=\"column-options-description\">\r\n <p
|
|
39
|
+
args: [{ selector: 'sof-column-options', template: "<div class=\"column-options-header\">\r\n <i class=\"ph-bold ph-square-split-horizontal\" aria-hidden=\"true\"></i>\r\n <h2 id=\"column-options-heading\">{{'armature.sof-table.column-options' | translate}}</h2>\r\n <button \r\n mat-dialog-close m-l-auto \r\n disableRipple=\"true\" id=\"column-options-close\" aria-label=\"close\">\r\n <i class=\"ph-bold ph-x close\" aria-hidden=\"true\"></i>\r\n </button>\r\n</div>\r\n<div class=\"column-options-container\">\r\n <div class=\"column-options-description\">\r\n <p>\r\n {{'armature.sof-table.column-options-description' | translate}} \r\n {{ data.showSaveColumnOptionsText ? ('armature.sof-table.column-options-description-saving' | translate) : ''}}\r\n </p>\r\n <p class=\"table-label\">{{data.tableName | translate}} {{'armature.sof-table.columns' | translate}}</p>\r\n </div>\r\n <div \r\n class=\"column-options-selections\"\r\n [class.no-saving-text]=\"!data.showSaveColumnOptionsText\">\r\n <sof-handle [handleList]=\"data.columnData\"/>\r\n </div>\r\n <div class=\"column-options-bottom\">\r\n <button\r\n (click)=\"resetColumnData()\"\r\n mat-flat-button color=\"tertiary\" \r\n size=\"small\" class=\"sof-button-v2\" m-r-auto\r\n id=\"column-options-reset\">\r\n {{'armature.sof-table.reset' | translate}}\r\n </button>\r\n <button \r\n mat-flat-button mat-dialog-close \r\n color=\"secondary\" size=\"small\" class=\"sof-button-v2\"\r\n id=\"column-options-cancel\">\r\n {{'armature.sof-table.cancel' | translate}}\r\n </button>\r\n <button \r\n (click)=\"applyUpdatedColumnState()\"\r\n mat-flat-button color=\"primary\" \r\n size=\"small\" class=\"sof-button-v2\"\r\n id=\"column-options-update\">\r\n {{'armature.sof-table.update' | translate}}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: ["*{box-sizing:border-box}.column-options-header{display:flex;align-items:center;height:56px;padding:0 24px;border-bottom:1px solid #FAFAFA}.column-options-header i{font-size:20px}.column-options-header i:not(.close){margin-right:16px}.column-options-header h2{font-size:18px!important}.column-options-header button{height:20px;width:20px;padding:0;background:none;border:none;cursor:pointer}.column-options-container{padding:24px}.column-options-container .column-options-description p{margin:0 0 16px;font-size:16px;line-height:24px}.column-options-container .column-options-description p.table-label{font-size:14px;color:#0009;margin-bottom:0;line-height:21px}.column-options-container .column-options-selections{max-height:calc(100vh - 300px);overflow-y:scroll;scrollbar-width:none}.column-options-container .column-options-selections.no-saving-text{max-height:calc(100vh - 276px)}.column-options-container .column-options-bottom{display:flex;gap:16px;margin-top:24px}\n"] }]
|
|
40
40
|
}] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLW9wdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJtYXR1cmUvYWctZ3JpZC1jb21wb25lbnRzL3NyYy9jb2x1bW4tb3B0aW9ucy1tb2RhbC9jb2x1bW4tb3B0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcm1hdHVyZS9hZy1ncmlkLWNvbXBvbmVudHMvc3JjL2NvbHVtbi1vcHRpb25zLW1vZGFsL2NvbHVtbi1vcHRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQUd6RSxrQ0FBa0M7QUFNbEMsTUFBTSxPQUFPLHlCQUF5QjtJQUx0QztRQU9FLHVCQUF1QjtRQUNmLGNBQVMsR0FBNEMsTUFBTSxDQUFDLENBQUEsWUFBdUMsQ0FBQSxDQUFDLENBQUM7UUFFN0csa0JBQWtCO1FBQ1gsU0FBSSxHQUFzQixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7S0FxQjFEO0lBbkJDLG9DQUFvQztJQUM3Qix1QkFBdUI7UUFDNUIsTUFBTSxXQUFXLEdBQXVCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzFFLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUNoQixJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUzthQUN4QixDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLGtCQUFrQixHQUEyQjtZQUNqRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUN2QixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQscURBQXFEO0lBQzlDLGVBQWU7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN0RSxDQUFDOzhHQTFCVSx5QkFBeUI7a0dBQXpCLHlCQUF5QiwwRENWdEMsNjFEQTZDQTs7MkZEbkNhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBBcHBseUNvbHVtblN0YXRlUGFyYW1zLCBDb2x1bW5TdGF0ZSB9IGZyb20gXCJhZy1ncmlkLWNvbW11bml0eVwiO1xyXG5cclxuLyoqIFRhYmxlIENvbHVtbiBvcHRpb25zIGRpYWxvZyAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NvZi1jb2x1bW4tb3B0aW9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi1vcHRpb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY29sdW1uLW9wdGlvbnMuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTb2ZDb2x1bW5PcHRpb25zQ29tcG9uZW50IHtcclxuXHJcbiAgLyoqIGRpYWxvZyByZWZlcmVuY2UgKi9cclxuICBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFNvZkNvbHVtbk9wdGlvbnNDb21wb25lbnQ+ID0gaW5qZWN0KE1hdERpYWxvZ1JlZjxTb2ZDb2x1bW5PcHRpb25zQ29tcG9uZW50Pik7XHJcblxyXG4gIC8qKiBkaWFsb2cgZGF0YSAqL1xyXG4gIHB1YmxpYyBkYXRhOiBDb2x1bW5PcHRpb25zRGF0YSA9IGluamVjdChNQVRfRElBTE9HX0RBVEEpO1xyXG5cclxuICAvKiogZW1pdCB0aGUgdXBkYXRlZCBjb2x1bW4gc3RhdGUgKi9cclxuICBwdWJsaWMgYXBwbHlVcGRhdGVkQ29sdW1uU3RhdGUoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb2x1bW5TdGF0ZTogQXJyYXk8Q29sdW1uU3RhdGU+ID0gdGhpcy5kYXRhLmNvbHVtbkRhdGEubWFwKChjb2x1bW4pID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBjb2xJZDogY29sdW1uLmlkLFxyXG4gICAgICAgIGhpZGU6ICFjb2x1bW4uaXNDaGVja2VkXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgdXBkYXRlZENvbHVtblN0YXRlOiBBcHBseUNvbHVtblN0YXRlUGFyYW1zID0ge1xyXG4gICAgICBzdGF0ZTogWy4uLmNvbHVtblN0YXRlXSxcclxuICAgICAgYXBwbHlPcmRlcjogdHJ1ZVxyXG4gICAgfTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHVwZGF0ZWRDb2x1bW5TdGF0ZSk7XHJcbiAgfVxyXG5cclxuICAvKiogcmVzZXQgdGhlIGNvbHVtbiBkYXRhIHRvIGl0cyBmaXJzdCBzYXZlZCB2YWx1ZSAqL1xyXG4gIHB1YmxpYyByZXNldENvbHVtbkRhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGEuY29sdW1uRGF0YSA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmRhdGEuaW5pdGlhbENvbHVtbkRhdGEpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqIFxyXG4gKiBDb2x1bW4gb3B0aW9ucyBtb2RhbCBkYXRhXHJcbiAqIEBkZXNjcmlwdGlvbiBkYXRhIHBhc3NlZCBmcm9tIHRoZSAnU29mVGFibGVDb21wb25lbnQnXHJcbiAqIEBwcm9wZXJ0eSBgdGFibGVOYW1lOiBzdHJpbmdgIG5hbWUgb2YgdGhlIHRhYmxlIHVzaW5nIHRoZSBjb2x1bW4gb3B0aW9uc1xyXG4gKiBAcHJvcGVydHkgYGNvbHVtbkRhdGE6IEFycmF5PENvbHVtbkRhdGE+YCBjb2x1bW4gZGF0YSByZXR1cm5lZCBmcm9tIHRoZSBhZ0dyaWQgYXBpXHJcbiAqIEBwcm9wZXJ0eSBgaW5pdGlhbENvbHVtbkRhdGE6IEFycmF5PENvbHVtbkRhdGE+YCBjb2x1bW4gZGF0YSBmcm9tIHNhdmVkIHVzZXIgcHJlZmVyZW5jZSBvciBpbml0aWFsIGBjb2x1bW5EYXRhYCBcclxuICogQHNlZSB7QGxpbmsgQ29sdW1uRGF0YX1cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uT3B0aW9uc0RhdGEge1xyXG4gIC8qKiBuYW1lIG9mIHRoZSB0YWJsZSB1c2luZyB0aGUgY29sdW1uIG9wdGlvbnMgKi9cclxuICB0YWJsZU5hbWU/OiBzdHJpbmc7XHJcbiAgLyoqIGNvbHVtbiBkYXRhIHJldHVybmVkIGZyb20gdGhlIGFnR3JpZCBhcGkgKi9cclxuICBjb2x1bW5EYXRhPzogQXJyYXk8Q29sdW1uRGF0YT47XHJcbiAgLyoqIGNvbHVtbiBkYXRhIGZyb20gc2F2ZWQgdXNlciBwcmVmZXJlbmNlIG9yIGluaXRpYWwgYGNvbHVtbkRhdGFgICovXHJcbiAgaW5pdGlhbENvbHVtbkRhdGE/OiBBcnJheTxDb2x1bW5EYXRhPjtcclxuICAvKiogXHJcbiAgICogVG8gZGlzcGxheSB0aGUgdGV4dCBvbiB0aGUgY29sdW1uIG9wdGlvbnMgbW9kYWwsIHdoaWNoIHN0YXRlcyAtXHJcbiAgICogYFwiT3B0aW9ucyB3aWxsIGJlIHNhdmVkIGZvciB0aGUgbmV4dCB0aW1lIHlvdSBsb2cgaW4uXCJgXHJcbiAgKi9cclxuICBzaG93U2F2ZUNvbHVtbk9wdGlvbnNUZXh0PzogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqIFxyXG4gKiBDb2x1bW4gZGF0YSBcclxuICogQGRlc2NyaXB0aW9uIGNvbHVtbiBkYXRhIGRlcml2ZWQgZnJvbSB0aGUgYWdHcmlkIGFwaSwgYWRkcyBpZCBwcm9wZXJ0eSB0byB0eXBlIGBIYW5kbGVJbnB1dGBcclxuICogQHByb3BlcnR5IGBpZDogc3RyaW5nYCBjb2x1bW5zIHVuaXF1ZSBpZFxyXG4gKiBAcHJvcGVydHkgYHRleHQ6IHN0cmluZ2AgY29sdW1ucyBoZWFkZXIgdGV4dFxyXG4gKiBAcHJvcGVydHkgYGlzQ2hlY2tlZDogYm9vbGVhbmAgY29sdW1uIG5vdCBoaWRkZW5cclxuKi9cclxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5EYXRhIHtcclxuICAvKiogY29sdW1ucyB1bmlxdWUgaWQgKi9cclxuICBpZD86IHN0cmluZztcclxuICAvKiogY29sdW1ucyBoZWFkZXIgdGV4dCAqL1xyXG4gIHRleHQ/OiBzdHJpbmc7XHJcbiAgLyoqIGNvbHVtbiBub3QgaGlkZGVuICovXHJcbiAgaXNDaGVja2VkPzogYm9vbGVhbjtcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29sdW1uLW9wdGlvbnMtaGVhZGVyXCI+XHJcbiAgPGkgY2xhc3M9XCJwaC1ib2xkIHBoLXNxdWFyZS1zcGxpdC1ob3Jpem9udGFsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gIDxoMiBpZD1cImNvbHVtbi1vcHRpb25zLWhlYWRpbmdcIj57eydhcm1hdHVyZS5zb2YtdGFibGUuY29sdW1uLW9wdGlvbnMnIHwgdHJhbnNsYXRlfX08L2gyPlxyXG4gIDxidXR0b24gXHJcbiAgICBtYXQtZGlhbG9nLWNsb3NlIG0tbC1hdXRvIFxyXG4gICAgZGlzYWJsZVJpcHBsZT1cInRydWVcIiBpZD1cImNvbHVtbi1vcHRpb25zLWNsb3NlXCIgYXJpYS1sYWJlbD1cImNsb3NlXCI+XHJcbiAgICA8aSBjbGFzcz1cInBoLWJvbGQgcGgteCBjbG9zZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICA8L2J1dHRvbj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJjb2x1bW4tb3B0aW9ucy1jb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLW9wdGlvbnMtZGVzY3JpcHRpb25cIj5cclxuICAgIDxwPlxyXG4gICAgICB7eydhcm1hdHVyZS5zb2YtdGFibGUuY29sdW1uLW9wdGlvbnMtZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlfX0gXHJcbiAgICAgIHt7IGRhdGEuc2hvd1NhdmVDb2x1bW5PcHRpb25zVGV4dCA/ICgnYXJtYXR1cmUuc29mLXRhYmxlLmNvbHVtbi1vcHRpb25zLWRlc2NyaXB0aW9uLXNhdmluZycgfCB0cmFuc2xhdGUpIDogJyd9fVxyXG4gICAgPC9wPlxyXG4gICAgPHAgY2xhc3M9XCJ0YWJsZS1sYWJlbFwiPnt7ZGF0YS50YWJsZU5hbWUgfCB0cmFuc2xhdGV9fSB7eydhcm1hdHVyZS5zb2YtdGFibGUuY29sdW1ucycgfCB0cmFuc2xhdGV9fTwvcD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IFxyXG4gICAgY2xhc3M9XCJjb2x1bW4tb3B0aW9ucy1zZWxlY3Rpb25zXCJcclxuICAgIFtjbGFzcy5uby1zYXZpbmctdGV4dF09XCIhZGF0YS5zaG93U2F2ZUNvbHVtbk9wdGlvbnNUZXh0XCI+XHJcbiAgICA8c29mLWhhbmRsZSBbaGFuZGxlTGlzdF09XCJkYXRhLmNvbHVtbkRhdGFcIi8+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1vcHRpb25zLWJvdHRvbVwiPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICAoY2xpY2spPVwicmVzZXRDb2x1bW5EYXRhKClcIlxyXG4gICAgICBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJ0ZXJ0aWFyeVwiIFxyXG4gICAgICBzaXplPVwic21hbGxcIiBjbGFzcz1cInNvZi1idXR0b24tdjJcIiBtLXItYXV0b1xyXG4gICAgICBpZD1cImNvbHVtbi1vcHRpb25zLXJlc2V0XCI+XHJcbiAgICAgIHt7J2FybWF0dXJlLnNvZi10YWJsZS5yZXNldCcgfCB0cmFuc2xhdGV9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIFxyXG4gICAgICBtYXQtZmxhdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZSBcclxuICAgICAgY29sb3I9XCJzZWNvbmRhcnlcIiBzaXplPVwic21hbGxcIiBjbGFzcz1cInNvZi1idXR0b24tdjJcIlxyXG4gICAgICBpZD1cImNvbHVtbi1vcHRpb25zLWNhbmNlbFwiPlxyXG4gICAgICB7eydhcm1hdHVyZS5zb2YtdGFibGUuY2FuY2VsJyB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gXHJcbiAgICAgIChjbGljayk9XCJhcHBseVVwZGF0ZWRDb2x1bW5TdGF0ZSgpXCJcclxuICAgICAgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFxyXG4gICAgICBzaXplPVwic21hbGxcIiBjbGFzcz1cInNvZi1idXR0b24tdjJcIlxyXG4gICAgICBpZD1cImNvbHVtbi1vcHRpb25zLXVwZGF0ZVwiPlxyXG4gICAgICB7eydhcm1hdHVyZS5zb2YtdGFibGUudXBkYXRlJyB8IHRyYW5zbGF0ZX19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|