UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

268 lines (267 loc) 18.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ElementRef, Input, EventEmitter, Output } from '@angular/core'; import { AbstractHasDataHelp } from '../../../AbstractHasDataHelp'; import { Option } from '../../../../decorator/Option.decorator'; import { EventUtils } from '../../../../share/utils/EventUtils'; import { COLUMN_CHANGE_EVENT, BEFORE_COLUMN_CHANGE_EVENT } from '../../../../share/CustomEventType'; var /** @type {?} */ TYPE_NAME = "phx-column-display"; var ColumnDisplay = /** @class */ (function (_super) { tslib_1.__extends(ColumnDisplay, _super); function ColumnDisplay(elementRef) { var _this = _super.call(this, elementRef) || this; _this.columnChangeEvent = new EventEmitter(); _this.beforeColumnChangeEvent = new EventEmitter(); _this.columns = []; return _this; } /** * @return {?} */ ColumnDisplay.prototype.ngOnInit = /** * @return {?} */ function () { _super.prototype.ngOnInit.call(this); }; /** * @param {?} column * @return {?} */ ColumnDisplay.prototype.setColumns = /** * @param {?} column * @return {?} */ function (column) { this.columns = column; }; /** * @return {?} */ ColumnDisplay.prototype.getColumns = /** * @return {?} */ function () { return this.columns; }; /** * @param {?} $event * @param {?} item * @return {?} */ ColumnDisplay.prototype.onColumnsDisplayChange = /** * @param {?} $event * @param {?} item * @return {?} */ function ($event, item) { var _this = this; if ($event !== null || $event !== undefined) { var /** @type {?} */ oldValue = $event.detail.data.oldValue; var /** @type {?} */ newValue = $event.detail.data.newValue; // update value item.show = newValue; // emit column change var /** @type {?} */ data_1 = { oldValue: oldValue, newValue: newValue, column: item }; EventUtils.handleBrowserEvent(this, 'beforeColumnChangeEvent', $event, null, function (event) { // doEvent }, function ($event) { // emitBeforeEvent // emitBeforeEvent _this.emitBeforeColumnChangeEvent($event); }, function ($event, result) { // emitAfterEvent // emitAfterEvent _this.emitColumnChangeEvent(data_1, $event); }, function ($event) { // doPrevented }); } }; /** * @param {?=} $event * @return {?} */ ColumnDisplay.prototype.emitBeforeColumnChangeEvent = /** * @param {?=} $event * @return {?} */ function ($event) { // emit event if (this.beforeColumnChangeEvent !== null) { var /** @type {?} */ data = {}; var /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_COLUMN_CHANGE_EVENT, this, data, null); this.beforeColumnChangeEvent.emit(ev); } }; /** * @param {?} data * @param {?=} $event * @return {?} */ ColumnDisplay.prototype.emitColumnChangeEvent = /** * @param {?} data * @param {?=} $event * @return {?} */ function (data, $event) { // emit event if (this.columnChangeEvent !== null) { var /** @type {?} */ ev = EventUtils.newCustomEvent(COLUMN_CHANGE_EVENT, this, data, null); this.columnChangeEvent.emit(ev); } }; /** * @return {?} */ ColumnDisplay.prototype.getBeforeColumnChangeEvent = /** * @return {?} */ function () { return this.beforeColumnChangeEvent; }; /** * @param {?} event * @return {?} */ ColumnDisplay.prototype.setBeforeColumnChangeEvent = /** * @param {?} event * @return {?} */ function (event) { this.beforeColumnChangeEvent = event; }; /** * @return {?} */ ColumnDisplay.prototype.getColumnChangeEvent = /** * @return {?} */ function () { return this.columnChangeEvent; }; /** * @param {?} event * @return {?} */ ColumnDisplay.prototype.setColumnChangeEvent = /** * @param {?} event * @return {?} */ function (event) { this.columnChangeEvent = event; }; /** * @return {?} */ ColumnDisplay.prototype.isSelfDataDirty = /** * @return {?} */ function () { return false; }; /** * @param {?} data * @return {?} */ ColumnDisplay.prototype.selfSaveData = /** * @param {?} data * @return {?} */ function (data) { }; /** * @return {?} */ ColumnDisplay.prototype.selfResetData = /** * @return {?} */ function () { }; ColumnDisplay.TYPE_NAME = TYPE_NAME; ColumnDisplay.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: TYPE_NAME, template: "<div class=\"phx-column-display\">\n <div *ngFor=\"let item of getColumns(); let i = index\">\n <div class=\"boder-column-display\">\n <material-checkbox [data]=\"item\" [label]=\"item.label\" [field]=\"'show'\" (phxChange)=\"onColumnsDisplayChange($event, item)\"></material-checkbox>\n </div>\n </div>\n</div>\n" },] }, ]; /** @nocollapse */ ColumnDisplay.ctorParameters = function () { return [ { type: ElementRef, }, ]; }; ColumnDisplay.propDecorators = { "dataParent": [{ type: Input },], "ignoreParentData": [{ type: Input },], "ignoreParentDisabled": [{ type: Input },], "delegateHistory": [{ type: Input },], "onDisabled": [{ type: Input },], "onEnabled": [{ type: Input },], "loadingEnabled": [{ type: Input },], "i18nKey": [{ type: Input },], "bypass": [{ type: Input, args: ['i18nBypass',] },], "options": [{ type: Input },], "data": [{ type: Input },], "columnChangeEvent": [{ type: Output, args: ['phxColumnChange',] },], "beforeColumnChangeEvent": [{ type: Output, args: ['phxbeforeColumnChange',] },], }; tslib_1.__decorate([ Option('columnChange'), tslib_1.__metadata("design:type", EventEmitter) ], ColumnDisplay.prototype, "columnChangeEvent", void 0); tslib_1.__decorate([ Option('beforeColumnChange'), tslib_1.__metadata("design:type", EventEmitter) ], ColumnDisplay.prototype, "beforeColumnChangeEvent", void 0); return ColumnDisplay; }(AbstractHasDataHelp)); export { ColumnDisplay }; function ColumnDisplay_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ ColumnDisplay.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ ColumnDisplay.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ ColumnDisplay.propDecorators; /** @type {?} */ ColumnDisplay.TYPE_NAME; /** @type {?} */ ColumnDisplay.prototype.dataParent; /** @type {?} */ ColumnDisplay.prototype.ignoreParentData; /** @type {?} */ ColumnDisplay.prototype.ignoreParentDisabled; /** @type {?} */ ColumnDisplay.prototype.delegateHistory; /** @type {?} */ ColumnDisplay.prototype.onDisabled; /** @type {?} */ ColumnDisplay.prototype.onEnabled; /** @type {?} */ ColumnDisplay.prototype.loadingEnabled; /** @type {?} */ ColumnDisplay.prototype.i18nKey; /** @type {?} */ ColumnDisplay.prototype.bypass; /** @type {?} */ ColumnDisplay.prototype.options; /** @type {?} */ ColumnDisplay.prototype.data; /** @type {?} */ ColumnDisplay.prototype.columnChangeEvent; /** @type {?} */ ColumnDisplay.prototype.beforeColumnChangeEvent; /** @type {?} */ ColumnDisplay.prototype.columns; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sdW1uRGlzcGxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvZWRpdG9yL2VkaXRvci5pbnRlcm5hbC9yZWNvcmQuaW50ZXJuYWwvQ29sdW1uRGlzcGxheS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBRSxLQUFLLEVBQWlDLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUtwRyxxQkFBTSxTQUFTLEdBQVcsb0JBQW9CLENBQUM7O0lBY1oseUNBQW1CO0lBb0NwRCx1QkFBWSxVQUFzQjtRQUFsQyxZQUNFLGtCQUFNLFVBQVUsQ0FBQyxTQUlsQjtRQUhDLEtBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLEtBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xELEtBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDOztLQUNuQjs7OztJQUVNLGdDQUFROzs7O1FBQ2IsaUJBQU0sUUFBUSxXQUFFLENBQUM7Ozs7OztJQUdaLGtDQUFVOzs7O2NBQUMsTUFBcUI7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7Ozs7O0lBR2pCLGtDQUFVOzs7O1FBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7Ozs7Ozs7SUFHZiw4Q0FBc0I7Ozs7O2NBQUMs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OzRCQUVsQixLQUFLO3lCQUVMLEtBQUs7c0NBS0wsTUFBTSxTQUFDLGlCQUFpQjs0Q0FHeEIsTUFBTSxTQUFDLHVCQUF1Qjs7O1FBSjlCLE1BQU0sQ0FBQyxjQUFjLENBQUM7MENBRU0sWUFBWTs7O1FBQ3hDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQzswQ0FFTSxZQUFZOzt3QkExRGpEO0VBeUJtQyxtQkFBbUI7U0FBekMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmLCBJbnB1dCwgSG9zdExpc3RlbmVyLCBUeXBlLCBWaWV3Q2hpbGQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEhhc0RhdGFIZWxwIH0gZnJvbSAnLi4vLi4vLi4vQWJzdHJhY3RIYXNEYXRhSGVscCc7XG5pbXBvcnQgeyBBYnN0cmFjdERhdGFFZGl0b3IgfSBmcm9tICcuLi8uLi9BYnN0cmFjdERhdGFFZGl0b3InO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGVjb3JhdG9yL09wdGlvbi5kZWNvcmF0b3InO1xuaW1wb3J0IHsgQ29sdW1uTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9SZWNvcmRWaWV3TW9kZWwnO1xuaW1wb3J0IHsgRXZlbnRVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlL3V0aWxzL0V2ZW50VXRpbHMnO1xuaW1wb3J0IHsgQ09MVU1OX0NIQU5HRV9FVkVOVCwgQkVGT1JFX0NPTFVNTl9DSEFOR0VfRVZFTlQgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZS9DdXN0b21FdmVudFR5cGUnO1xuaW1wb3J0IHsgSUhhc0RhdGEgfSBmcm9tICcuLi8uLi8uLi9JSGFzRGF0YSc7XG5cbmRlY2xhcmUgdmFyICQ6IGFueTtcblxuY29uc3QgVFlQRV9OQU1FOiBzdHJpbmcgPSBcInBoeC1jb2x1bW4tZGlzcGxheVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgc2VsZWN0b3I6IFRZUEVfTkFNRSxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwicGh4LWNvbHVtbi1kaXNwbGF5XCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0Q29sdW1ucygpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgPGRpdiBjbGFzcz1cImJvZGVyLWNvbHVtbi1kaXNwbGF5XCI+XG4gICAgICA8bWF0ZXJpYWwtY2hlY2tib3ggW2RhdGFdPVwiaXRlbVwiIFtsYWJlbF09XCJpdGVtLmxhYmVsXCIgW2ZpZWxkXT1cIidzaG93J1wiIChwaHhDaGFuZ2UpPVwib25Db2x1bW5zRGlzcGxheUNoYW5nZSgkZXZlbnQsIGl0ZW0pXCI+PC9tYXRlcmlhbC1jaGVja2JveD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbmBcbn0pXG5leHBvcnQgY2xhc3MgQ29sdW1uRGlzcGxheSBleHRlbmRzIEFic3RyYWN0SGFzRGF0YUhlbHAgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFlQRV9OQU1FOiBzdHJpbmcgPSBUWVBFX05BTUU7XG5cbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIGRhdGFQYXJlbnQ6IElIYXNEYXRhO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgaWdub3JlUGFyZW50RGF0YTogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIGlnbm9yZVBhcmVudERpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgZGVsZWdhdGVIaXN0b3J5OiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgb25EaXNhYmxlZDogRnVuY3Rpb247XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBvbkVuYWJsZWQ6IEZ1bmN0aW9uO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgbG9hZGluZ0VuYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBpMThuS2V5OiBzdHJpbmc7XG4gIEBJbnB1dCgnaTE4bkJ5cGFzcycpXG4gIHByb3RlY3RlZCBieXBhc3M6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBvcHRpb25zOiBhbnk7XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBkYXRhOiBhbnk7XG5cbiAgLy8gLS0tIGZyb20gc2VsZlxuICBAT3B0aW9uKCdjb2x1bW5DaGFuZ2UnKVxuICBAT3V0cHV0KCdwaHhDb2x1bW5DaGFuZ2UnKVxuICBwcm90ZWN0ZWQgY29sdW1uQ2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3B0aW9uKCdiZWZvcmVDb2x1bW5DaGFuZ2UnKVxuICBAT3V0cHV0KCdwaHhiZWZvcmVDb2x1bW5DaGFuZ2UnKVxuICBwcm90ZWN0ZWQgYmVmb3JlQ29sdW1uQ2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBwcml2YXRlIGNvbHVtbnM6IENvbHVtbk1vZGVsW107XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYpO1xuICAgIHRoaXMuY29sdW1uQ2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5iZWZvcmVDb2x1bW5DaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLmNvbHVtbnMgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgcHVibGljIHNldENvbHVtbnMoY29sdW1uOiBDb2x1bW5Nb2RlbFtdKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5zID0gY29sdW1uO1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbnMoKTogQ29sdW1uTW9kZWxbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucztcbiAgfVxuXG4gIHB1YmxpYyBvbkNvbHVtbnNEaXNwbGF5Q2hhbmdlKCRldmVudDogQ3VzdG9tRXZlbnQsIGl0ZW06IENvbHVtbk1vZGVsKTogdm9pZCB7XG4gICAgaWYoJGV2ZW50ICE9PSBudWxsIHx8ICRldmVudCAhPT0gdW5kZWZpbmVkKXtcbiAgICAgIGxldCBvbGRWYWx1ZSA9ICRldmVudC5kZXRhaWwuZGF0YS5vbGRWYWx1ZTtcbiAgICAgIGxldCBuZXdWYWx1ZSA9ICRldmVudC5kZXRhaWwuZGF0YS5uZXdWYWx1ZTtcblxuICAgICAgLy8gdXBkYXRlIHZhbHVlXG4gICAgICBpdGVtLnNob3cgPSBuZXdWYWx1ZTtcblxuICAgICAgLy8gZW1pdCBjb2x1bW4gY2hhbmdlXG4gICAgICBsZXQgZGF0YTogYW55ID0ge1xuICAgICAgICBvbGRWYWx1ZTogb2xkVmFsdWUsXG4gICAgICAgIG5ld1ZhbHVlOiBuZXdWYWx1ZSxcbiAgICAgICAgY29sdW1uOiBpdGVtXG4gICAgICB9O1xuXG4gICAgICBFdmVudFV0aWxzLmhhbmRsZUJyb3dzZXJFdmVudCh0aGlzLCAnYmVmb3JlQ29sdW1uQ2hhbmdlRXZlbnQnLCAkZXZlbnQsIG51bGwsIChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgLy8gZG9FdmVudFxuICAgICAgfSwgKCRldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgLy8gZW1pdEJlZm9yZUV2ZW50XG4gICAgICAgIHRoaXMuZW1pdEJlZm9yZUNvbHVtbkNoYW5nZUV2ZW50KCRldmVudCk7XG4gICAgICB9LCAoJGV2ZW50OiBFdmVudCwgcmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgLy8gZW1pdEFmdGVyRXZlbnRcbiAgICAgICAgdGhpcy5lbWl0Q29sdW1uQ2hhbmdlRXZlbnQoZGF0YSwgJGV2ZW50KTtcbiAgICAgIH0sICgkZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIC8vIGRvUHJldmVudGVkXG4gICAgICB9KTtcbiAgICB9XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0QmVmb3JlQ29sdW1uQ2hhbmdlRXZlbnQoJGV2ZW50PzogYW55KTogdm9pZCB7XG4gICAgLy8gZW1pdCBldmVudFxuICAgIGlmICh0aGlzLmJlZm9yZUNvbHVtbkNoYW5nZUV2ZW50ICE9PSBudWxsKSB7XG4gICAgICBsZXQgZGF0YTogYW55ID0ge307XG4gICAgICBsZXQgZXYgPSBFdmVudFV0aWxzLm5ld0N1c3RvbUV2ZW50KEJFRk9SRV9DT0xVTU5fQ0hBTkdFX0VWRU5ULCB0aGlzLCBkYXRhLCBudWxsKTtcblxuICAgICAgdGhpcy5iZWZvcmVDb2x1bW5DaGFuZ2VFdmVudC5lbWl0KGV2KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdENvbHVtbkNoYW5nZUV2ZW50KGRhdGE6IGFueSwgJGV2ZW50PzogYW55KTogdm9pZCB7XG4gICAgLy8gZW1pdCBldmVudFxuICAgIGlmICh0aGlzLmNvbHVtbkNoYW5nZUV2ZW50ICE9PSBudWxsKSB7XG4gICAgICBsZXQgZXYgPSBFdmVudFV0aWxzLm5ld0N1c3RvbUV2ZW50KENPTFVNTl9DSEFOR0VfRVZFTlQsIHRoaXMsIGRhdGEsIG51bGwpO1xuXG4gICAgICB0aGlzLmNvbHVtbkNoYW5nZUV2ZW50LmVtaXQoZXYpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRCZWZvcmVDb2x1bW5DaGFuZ2VFdmVudCgpOiBFdmVudEVtaXR0ZXI8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuYmVmb3JlQ29sdW1uQ2hhbmdlRXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgc2V0QmVmb3JlQ29sdW1uQ2hhbmdlRXZlbnQoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5iZWZvcmVDb2x1bW5DaGFuZ2VFdmVudCA9IGV2ZW50O1xuICB9XG5cbiAgcHVibGljIGdldENvbHVtbkNoYW5nZUV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5DaGFuZ2VFdmVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb2x1bW5DaGFuZ2VFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLmNvbHVtbkNoYW5nZUV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgaXNTZWxmRGF0YURpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxmU2F2ZURhdGEoZGF0YTogYW55KTogdm9pZCB7XG4gIH1cblxuICBwdWJsaWMgc2VsZlJlc2V0RGF0YSgpOiB2b2lkIHtcbiAgfVxufVxuIl19