UNPKG

ontimize-web-ngx

Version:
53 lines 14.5 kB
import { ChangeDetectionStrategy, Component, Inject, ViewChild, ViewEncapsulation } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { Util } from '../../../../../util/util'; import * as i0 from "@angular/core"; import * as i1 from "@angular/material/dialog"; import * as i2 from "@angular/flex-layout/flex"; import * as i3 from "@angular/material/button"; import * as i4 from "../../../../dual-list-selector/o-dual-list-selector.component"; import * as i5 from "../../../../../pipes/o-translate.pipe"; export class OTableGroupByColumnsDialogComponent { constructor(dialogRef, data) { this.dialogRef = dialogRef; this.columns = []; this.groupedColumns = []; this.groupedColumnTypes = []; if (Util.isArray(data.groupedColumns) && !Util.isArrayEmpty(data.groupedColumns)) { this.groupedColumns = data.groupedColumns.map((attr) => { const indexCol = data.columnsData.findIndex((col) => col.attr === attr); if (indexCol > -1) { return data.columnsData[indexCol]; } }); } const self = this; if (Util.isArray(data.columnsData)) { this.columns = data.columnsData.filter((oCol) => oCol.visible && oCol.groupable && self.groupedColumns.findIndex(x => x.attr === oCol.attr) === -1); } if (Util.isDefined(data.groupedColumnTypes)) { this.groupedColumnTypes = data.groupedColumnTypes; } } getGroupedColumns() { return this.dualListSelector.getSelectedItems().map((oCol) => oCol.attr); } getGroupedColumnTypes() { return this.dualListSelector.getGroupedColumnTypes(); } } OTableGroupByColumnsDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableGroupByColumnsDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); OTableGroupByColumnsDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableGroupByColumnsDialogComponent, selector: "o-table-group-by-columns-dialog", host: { properties: { "class.o-table-group-by-column-dialog": "true" } }, viewQueries: [{ propertyName: "dualListSelector", first: true, predicate: ["dualListSelector"], descendants: true }], ngImport: i0, template: "<span mat-dialog-title>{{ 'TABLE.BUTTONS.GROUPBY' | oTranslate }}</span>\n\n<mat-dialog-content>\n <o-dual-list-selector #dualListSelector [data-source]=\"columns\" [data-destination]=\"groupedColumns\" [grouped-column-types]=\"groupedColumnTypes\"\n key=\"attr\" display=\"title\" title-list-data-source=\"TABLE_GROUP_BY_COLUMNS_DIALOG.ALL_COLUMNS\"\n title-list-data-destination=\"TABLE_GROUP_BY_COLUMNS_DIALOG.GROUPED_COLUMNS\" description=\"TABLE_GROUP_BY_COLUMNS_DIALOG.DESCRIPTION\" fxFlexFill>\n </o-dual-list-selector>\n</mat-dialog-content>\n\n<mat-dialog-actions fxLayoutAlign=\"end center\">\n <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"false\" class=\"o-button-default cancel\">{{ 'CANCEL' | oTranslate }}</button>\n <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"true\" class=\"o-button-primary\">{{ 'ACCEPT' | oTranslate }}</button>\n</mat-dialog-actions>\n", styles: [".o-table-group-by-column-dialog{display:flex;flex-direction:column;height:100%}.o-table-group-by-column-dialog .mat-mdc-dialog-content{flex:1}\n"], dependencies: [{ kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i4.ODualListSelectorComponent, selector: "o-dual-list-selector", inputs: ["key", "display", "data-source", "data-destination", "title-list-data-source", "title-list-data-destination", "grouped-column-types", "description"] }, { kind: "pipe", type: i5.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableGroupByColumnsDialogComponent, decorators: [{ type: Component, args: [{ selector: 'o-table-group-by-columns-dialog', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { '[class.o-table-group-by-column-dialog]': 'true' }, template: "<span mat-dialog-title>{{ 'TABLE.BUTTONS.GROUPBY' | oTranslate }}</span>\n\n<mat-dialog-content>\n <o-dual-list-selector #dualListSelector [data-source]=\"columns\" [data-destination]=\"groupedColumns\" [grouped-column-types]=\"groupedColumnTypes\"\n key=\"attr\" display=\"title\" title-list-data-source=\"TABLE_GROUP_BY_COLUMNS_DIALOG.ALL_COLUMNS\"\n title-list-data-destination=\"TABLE_GROUP_BY_COLUMNS_DIALOG.GROUPED_COLUMNS\" description=\"TABLE_GROUP_BY_COLUMNS_DIALOG.DESCRIPTION\" fxFlexFill>\n </o-dual-list-selector>\n</mat-dialog-content>\n\n<mat-dialog-actions fxLayoutAlign=\"end center\">\n <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"false\" class=\"o-button-default cancel\">{{ 'CANCEL' | oTranslate }}</button>\n <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"true\" class=\"o-button-primary\">{{ 'ACCEPT' | oTranslate }}</button>\n</mat-dialog-actions>\n", styles: [".o-table-group-by-column-dialog{display:flex;flex-direction:column;height:100%}.o-table-group-by-column-dialog .mat-mdc-dialog-content{flex:1}\n"] }] }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA] }] }]; }, propDecorators: { dualListSelector: [{ type: ViewChild, args: ['dualListSelector'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1ncm91cC1ieS1jb2x1bW5zLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2RpYWxvZy9ncm91cC1ieS1jb2x1bW5zL28tdGFibGUtZ3JvdXAtYnktY29sdW1ucy1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9kaWFsb2cvZ3JvdXAtYnktY29sdW1ucy9vLXRhYmxlLWdyb3VwLWJ5LWNvbHVtbnMtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7OztBQWNoRCxNQUFNLE9BQU8sbUNBQW1DO0lBUTlDLFlBQ1MsU0FBNEQsRUFDMUMsSUFBUztRQUQzQixjQUFTLEdBQVQsU0FBUyxDQUFtRDtRQVA5RCxZQUFPLEdBQW1CLEVBQUUsQ0FBQztRQUM3QixtQkFBYyxHQUFtQixFQUFFLENBQUM7UUFDcEMsdUJBQWtCLEdBQTBCLEVBQUUsQ0FBQztRQVNwRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDaEYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFO2dCQUM3RCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztnQkFDakYsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDbkM7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUU5SjtRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRTtZQUMzQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3ZELENBQUM7O2lJQXRDVSxtQ0FBbUMsOENBVXBDLGVBQWU7cUhBVmQsbUNBQW1DLHVRQ2pCaEQseTVCQWFBOzRGRElhLG1DQUFtQztrQkFWL0MsU0FBUzsrQkFDRSxpQ0FBaUMsaUJBRzVCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0osd0NBQXdDLEVBQUUsTUFBTTtxQkFDakQ7OzBCQVlFLE1BQU07MkJBQUMsZUFBZTs0Q0FKTSxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBPR3JvdXBlZENvbHVtblR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgdHlwZSB7IE9Db2x1bW4gfSBmcm9tICcuLi8uLi8uLi9jb2x1bW4vby1jb2x1bW4uY2xhc3MnO1xuaW1wb3J0IHR5cGUgeyBPRHVhbExpc3RTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2R1YWwtbGlzdC1zZWxlY3Rvci9vLWR1YWwtbGlzdC1zZWxlY3Rvci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLXRhYmxlLWdyb3VwLWJ5LWNvbHVtbnMtZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICdvLXRhYmxlLWdyb3VwLWJ5LWNvbHVtbnMtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ28tdGFibGUtZ3JvdXAtYnktY29sdW1ucy1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tdGFibGUtZ3JvdXAtYnktY29sdW1uLWRpYWxvZ10nOiAndHJ1ZSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBPVGFibGVHcm91cEJ5Q29sdW1uc0RpYWxvZ0NvbXBvbmVudCB7XG5cbiAgcHVibGljIGNvbHVtbnM6IEFycmF5PE9Db2x1bW4+ID0gW107XG4gIHB1YmxpYyBncm91cGVkQ29sdW1uczogQXJyYXk8T0NvbHVtbj4gPSBbXTtcbiAgcHVibGljIGdyb3VwZWRDb2x1bW5UeXBlczogT0dyb3VwZWRDb2x1bW5UeXBlc1tdID0gW107XG5cbiAgQFZpZXdDaGlsZCgnZHVhbExpc3RTZWxlY3RvcicpIGR1YWxMaXN0U2VsZWN0b3I6IE9EdWFsTGlzdFNlbGVjdG9yQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxPVGFibGVHcm91cEJ5Q29sdW1uc0RpYWxvZ0NvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIGRhdGE6IGFueVxuICApIHtcblxuICAgIGlmIChVdGlsLmlzQXJyYXkoZGF0YS5ncm91cGVkQ29sdW1ucykgJiYgIVV0aWwuaXNBcnJheUVtcHR5KGRhdGEuZ3JvdXBlZENvbHVtbnMpKSB7XG4gICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zID0gZGF0YS5ncm91cGVkQ29sdW1ucy5tYXAoKGF0dHI6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBpbmRleENvbCA9IGRhdGEuY29sdW1uc0RhdGEuZmluZEluZGV4KChjb2w6IE9Db2x1bW4pID0+IGNvbC5hdHRyID09PSBhdHRyKTtcbiAgICAgICAgaWYgKGluZGV4Q29sID4gLTEpIHtcbiAgICAgICAgICByZXR1cm4gZGF0YS5jb2x1bW5zRGF0YVtpbmRleENvbF07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGlmIChVdGlsLmlzQXJyYXkoZGF0YS5jb2x1bW5zRGF0YSkpIHtcbiAgICAgIHRoaXMuY29sdW1ucyA9IGRhdGEuY29sdW1uc0RhdGEuZmlsdGVyKChvQ29sOiBPQ29sdW1uKSA9PiBvQ29sLnZpc2libGUgJiYgb0NvbC5ncm91cGFibGUgJiYgc2VsZi5ncm91cGVkQ29sdW1ucy5maW5kSW5kZXgoeCA9PiB4LmF0dHIgPT09IG9Db2wuYXR0cikgPT09IC0xKTtcblxuICAgIH1cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoZGF0YS5ncm91cGVkQ29sdW1uVHlwZXMpKSB7XG4gICAgICB0aGlzLmdyb3VwZWRDb2x1bW5UeXBlcyA9IGRhdGEuZ3JvdXBlZENvbHVtblR5cGVzO1xuICAgIH1cbiAgfVxuXG4gIGdldEdyb3VwZWRDb2x1bW5zKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmR1YWxMaXN0U2VsZWN0b3IuZ2V0U2VsZWN0ZWRJdGVtcygpLm1hcCgob0NvbDogT0NvbHVtbikgPT4gb0NvbC5hdHRyKTtcbiAgfVxuXG4gIGdldEdyb3VwZWRDb2x1bW5UeXBlcygpOiBPR3JvdXBlZENvbHVtblR5cGVzW10ge1xuICAgIHJldHVybiB0aGlzLmR1YWxMaXN0U2VsZWN0b3IuZ2V0R3JvdXBlZENvbHVtblR5cGVzKCk7XG4gIH1cbn1cbiIsIjxzcGFuIG1hdC1kaWFsb2ctdGl0bGU+e3sgJ1RBQkxFLkJVVFRPTlMuR1JPVVBCWScgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuXG48bWF0LWRpYWxvZy1jb250ZW50PlxuICA8by1kdWFsLWxpc3Qtc2VsZWN0b3IgI2R1YWxMaXN0U2VsZWN0b3IgW2RhdGEtc291cmNlXT1cImNvbHVtbnNcIiBbZGF0YS1kZXN0aW5hdGlvbl09XCJncm91cGVkQ29sdW1uc1wiIFtncm91cGVkLWNvbHVtbi10eXBlc109XCJncm91cGVkQ29sdW1uVHlwZXNcIlxuICAgIGtleT1cImF0dHJcIiBkaXNwbGF5PVwidGl0bGVcIiB0aXRsZS1saXN0LWRhdGEtc291cmNlPVwiVEFCTEVfR1JPVVBfQllfQ09MVU1OU19ESUFMT0cuQUxMX0NPTFVNTlNcIlxuICAgIHRpdGxlLWxpc3QtZGF0YS1kZXN0aW5hdGlvbj1cIlRBQkxFX0dST1VQX0JZX0NPTFVNTlNfRElBTE9HLkdST1VQRURfQ09MVU1OU1wiIGRlc2NyaXB0aW9uPVwiVEFCTEVfR1JPVVBfQllfQ09MVU1OU19ESUFMT0cuREVTQ1JJUFRJT05cIiBmeEZsZXhGaWxsPlxuICA8L28tZHVhbC1saXN0LXNlbGVjdG9yPlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgZnhMYXlvdXRBbGlnbj1cImVuZCBjZW50ZXJcIj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cImZhbHNlXCIgY2xhc3M9XCJvLWJ1dHRvbi1kZWZhdWx0IGNhbmNlbFwiPnt7ICdDQU5DRUwnIHwgb1RyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwidHJ1ZVwiIGNsYXNzPVwiby1idXR0b24tcHJpbWFyeVwiPnt7ICdBQ0NFUFQnIHwgb1RyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=