@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
234 lines • 20 kB
JavaScript
import { __decorate, __metadata, __param } from "tslib";
import { Pipe, Inject, LOCALE_ID } from '@angular/core';
import { GridBaseAPIService } from '../api.service';
import { DataUtil } from '../../data-operations/data-util';
import { cloneArray } from '../../core/utils';
import { DatePipe, DecimalPipe } from '@angular/common';
/**
* @hidden
* @internal
*/
let IgxGridCellStyleClassesPipe = class IgxGridCellStyleClassesPipe {
transform(cssClasses, value, data, field, index) {
if (!cssClasses) {
return '';
}
const result = [];
for (const cssClass of Object.keys(cssClasses)) {
const callbackOrValue = cssClasses[cssClass];
const apply = typeof callbackOrValue === 'function' ? callbackOrValue(data, field, value, index) : callbackOrValue;
if (apply) {
result.push(cssClass);
}
}
return result.join(' ');
}
};
IgxGridCellStyleClassesPipe = __decorate([
Pipe({
name: 'igxCellStyleClasses'
})
], IgxGridCellStyleClassesPipe);
export { IgxGridCellStyleClassesPipe };
/**
* @hidden
* @internal
*/
let IgxGridCellStylesPipe = class IgxGridCellStylesPipe {
transform(styles, value, data, field, index) {
const css = {};
if (!styles) {
return css;
}
for (const prop of Object.keys(styles)) {
const res = styles[prop];
css[prop] = typeof res === 'function' ? res(data, field, value, index) : res;
}
return css;
}
};
IgxGridCellStylesPipe = __decorate([
Pipe({
name: 'igxCellStyles'
})
], IgxGridCellStylesPipe);
export { IgxGridCellStylesPipe };
/**
* @hidden
* @internal
*/
let IgxGridNotGroupedPipe = class IgxGridNotGroupedPipe {
transform(value) {
return value.filter(item => !item.columnGroup);
}
};
IgxGridNotGroupedPipe = __decorate([
Pipe({
name: 'igxNotGrouped'
})
], IgxGridNotGroupedPipe);
export { IgxGridNotGroupedPipe };
/**
* @hidden
* @internal
*/
let IgxGridTopLevelColumns = class IgxGridTopLevelColumns {
transform(value) {
return value.filter(item => item.level === 0);
}
};
IgxGridTopLevelColumns = __decorate([
Pipe({
name: 'igxTopLevel'
})
], IgxGridTopLevelColumns);
export { IgxGridTopLevelColumns };
/**
* @hidden
* @internal
*/
let IgxGridFilterConditionPipe = class IgxGridFilterConditionPipe {
transform(value) {
return value.split(/(?=[A-Z])/).join(' ');
}
};
IgxGridFilterConditionPipe = __decorate([
Pipe({
name: 'filterCondition',
pure: true
})
], IgxGridFilterConditionPipe);
export { IgxGridFilterConditionPipe };
/**
* @hidden
* @internal
*/
let IgxGridTransactionPipe = class IgxGridTransactionPipe {
constructor(gridAPI) {
this.gridAPI = gridAPI;
}
transform(collection, id, pipeTrigger) {
const grid = this.gridAPI.grid;
if (grid.transactions.enabled) {
const result = DataUtil.mergeTransactions(cloneArray(collection), grid.transactions.getAggregatedChanges(true), grid.primaryKey);
return result;
}
return collection;
}
};
IgxGridTransactionPipe.ctorParameters = () => [
{ type: GridBaseAPIService }
];
IgxGridTransactionPipe = __decorate([
Pipe({
name: 'gridTransaction',
pure: true
}),
__metadata("design:paramtypes", [GridBaseAPIService])
], IgxGridTransactionPipe);
export { IgxGridTransactionPipe };
/**
* @hidden
* @internal
*/
let IgxGridPaginatorOptionsPipe = class IgxGridPaginatorOptionsPipe {
transform(values) {
return Array.from(new Set([...values])).sort((a, b) => a - b);
}
};
IgxGridPaginatorOptionsPipe = __decorate([
Pipe({
name: 'paginatorOptions',
pure: true,
})
], IgxGridPaginatorOptionsPipe);
export { IgxGridPaginatorOptionsPipe };
/**
* @hidden
* @internal
*/
let IgxHasVisibleColumnsPipe = class IgxHasVisibleColumnsPipe {
transform(values, hasVisibleColumns) {
if (!(values && values.length)) {
return values;
}
return hasVisibleColumns ? values : [];
}
};
IgxHasVisibleColumnsPipe = __decorate([
Pipe({
name: 'visibleColumns',
pure: true
})
], IgxHasVisibleColumnsPipe);
export { IgxHasVisibleColumnsPipe };
/**
* @hidden
* @internal
*/
let IgxDatePipeComponent = class IgxDatePipeComponent extends DatePipe {
constructor(locale) {
// D.P. constructor duplication due to es6 compilation, might be obsolete in the future
super(locale);
this.DEFAULT_DATE_FORMAT = 'mediumDate';
}
transform(value, locale) {
if (value && value instanceof Date) {
if (locale) {
return super.transform(value, this.DEFAULT_DATE_FORMAT, undefined, locale);
}
else {
return super.transform(value);
}
}
else {
return value;
}
}
};
IgxDatePipeComponent.ctorParameters = () => [
{ type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }
];
IgxDatePipeComponent = __decorate([
Pipe({
name: 'igxdate'
}),
__param(0, Inject(LOCALE_ID)),
__metadata("design:paramtypes", [String])
], IgxDatePipeComponent);
export { IgxDatePipeComponent };
/**
* @hidden
* @internal
*/
let IgxDecimalPipeComponent = class IgxDecimalPipeComponent extends DecimalPipe {
constructor(locale) {
// D.P. constructor duplication due to es6 compilation, might be obsolete in the future
super(locale);
}
transform(value, locale) {
if (value && typeof value === 'number') {
if (locale) {
return super.transform(value, undefined, locale);
}
else {
return super.transform(value);
}
}
else {
return value;
}
}
};
IgxDecimalPipeComponent.ctorParameters = () => [
{ type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }
];
IgxDecimalPipeComponent = __decorate([
Pipe({
name: 'igxdecimal'
}),
__param(0, Inject(LOCALE_ID)),
__metadata("design:paramtypes", [String])
], IgxDecimalPipeComponent);
export { IgxDecimalPipeComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pZ25pdGV1aS1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL2dyaWRzL2NvbW1vbi9waXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEQ7OztHQUdHO0FBSUgsSUFBYSwyQkFBMkIsR0FBeEMsTUFBYSwyQkFBMkI7SUFFcEMsU0FBUyxDQUFDLFVBQW1DLEVBQUUsS0FBVSxFQUFFLElBQVMsRUFBRSxLQUFhLEVBQUUsS0FBYTtRQUM5RixJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2IsT0FBTyxFQUFFLENBQUM7U0FDYjtRQUVELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUVsQixLQUFLLE1BQU0sUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDNUMsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sS0FBSyxHQUFHLE9BQU8sZUFBZSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7WUFDbkgsSUFBSSxLQUFLLEVBQUU7Z0JBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN6QjtTQUNKO1FBRUQsT0FBTyxNQUFNLENBQUMs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S0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUNwQyxJQUFJLE1BQU0sRUFBRTtnQkFDUixPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNwRDtpQkFBTTtnQkFDSCxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDakM7U0FDSjthQUFNO1lBQ0gsT0FBTyxLQUFLLENBQUM7U0FDaEI7SUFDTCxDQUFDO0NBQ0osQ0FBQTs7eUNBZmdCLE1BQU0sU0FBQyxTQUFTOztBQURwQix1QkFBdUI7SUFIbkMsSUFBSSxDQUFDO1FBQ0YsSUFBSSxFQUFFLFlBQVk7S0FDckIsQ0FBQztJQUVlLFdBQUEsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBOztHQURyQix1QkFBdUIsQ0FnQm5DO1NBaEJZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIEluamVjdCwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHcmlkQmFzZUFQSVNlcnZpY2UgfSBmcm9tICcuLi9hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hHcmlkQmFzZURpcmVjdGl2ZSB9IGZyb20gJy4uL2dyaWQtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGF0YVV0aWwgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZGF0YS11dGlsJztcbmltcG9ydCB7IGNsb25lQXJyYXkgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEdyaWRUeXBlIH0gZnJvbSAnLi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEYXRlUGlwZSwgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2lneENlbGxTdHlsZUNsYXNzZXMnXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRDZWxsU3R5bGVDbGFzc2VzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgdHJhbnNmb3JtKGNzc0NsYXNzZXM6IHsgW3Byb3A6IHN0cmluZ106IGFueSB9LCB2YWx1ZTogYW55LCBkYXRhOiBhbnksIGZpZWxkOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWNzc0NsYXNzZXMpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgY3NzQ2xhc3Mgb2YgT2JqZWN0LmtleXMoY3NzQ2xhc3NlcykpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrT3JWYWx1ZSA9IGNzc0NsYXNzZXNbY3NzQ2xhc3NdO1xuICAgICAgICAgICAgY29uc3QgYXBwbHkgPSB0eXBlb2YgY2FsbGJhY2tPclZhbHVlID09PSAnZnVuY3Rpb24nID8gY2FsbGJhY2tPclZhbHVlKGRhdGEsIGZpZWxkLCB2YWx1ZSwgaW5kZXgpIDogY2FsbGJhY2tPclZhbHVlO1xuICAgICAgICAgICAgaWYgKGFwcGx5KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goY3NzQ2xhc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCcgJyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2lneENlbGxTdHlsZXMnXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRDZWxsU3R5bGVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgdHJhbnNmb3JtKHN0eWxlczogeyBbcHJvcDogc3RyaW5nXTogYW55IH0sIHZhbHVlOiBhbnksIGRhdGE6IGFueSwgZmllbGQ6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHsgW3Byb3A6IHN0cmluZ106IGFueSB9IHtcbiAgICAgICAgY29uc3QgY3NzID0ge307XG4gICAgICAgIGlmICghc3R5bGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gY3NzO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKHN0eWxlcykpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHN0eWxlc1twcm9wXTtcbiAgICAgICAgICAgIGNzc1twcm9wXSA9IHR5cGVvZiByZXMgPT09ICdmdW5jdGlvbicgPyByZXMoZGF0YSwgZmllbGQsIHZhbHVlLCBpbmRleCkgOiByZXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3NzO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdpZ3hOb3RHcm91cGVkJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkTm90R3JvdXBlZFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICAgIHRyYW5zZm9ybSh2YWx1ZTogYW55W10pOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5maWx0ZXIoaXRlbSA9PiAhaXRlbS5jb2x1bW5Hcm91cCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2lneFRvcExldmVsJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkVG9wTGV2ZWxDb2x1bW5zIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueVtdKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdmFsdWUuZmlsdGVyKGl0ZW0gPT4gaXRlbS5sZXZlbCA9PT0gMCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2ZpbHRlckNvbmRpdGlvbicsXG4gICAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkRmlsdGVyQ29uZGl0aW9uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnNwbGl0KC8oPz1bQS1aXSkvKS5qb2luKCcgJyk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2dyaWRUcmFuc2FjdGlvbicsXG4gICAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkVHJhbnNhY3Rpb25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdyaWRBUEk6IEdyaWRCYXNlQVBJU2VydmljZTxJZ3hHcmlkQmFzZURpcmVjdGl2ZSAmIEdyaWRUeXBlPikgeyB9XG5cbiAgICB0cmFuc2Zvcm0oY29sbGVjdGlvbjogYW55W10sIGlkOiBzdHJpbmcsIHBpcGVUcmlnZ2VyOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZ3JpZDogSWd4R3JpZEJhc2VEaXJlY3RpdmUgPSB0aGlzLmdyaWRBUEkuZ3JpZDtcblxuICAgICAgICBpZiAoIGdyaWQudHJhbnNhY3Rpb25zLmVuYWJsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IERhdGFVdGlsLm1lcmdlVHJhbnNhY3Rpb25zKFxuICAgICAgICAgICAgICAgIGNsb25lQXJyYXkoY29sbGVjdGlvbiksXG4gICAgICAgICAgICAgICAgZ3JpZC50cmFuc2FjdGlvbnMuZ2V0QWdncmVnYXRlZENoYW5nZXModHJ1ZSksXG4gICAgICAgICAgICAgICAgZ3JpZC5wcmltYXJ5S2V5KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ3BhZ2luYXRvck9wdGlvbnMnLFxuICAgIHB1cmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRQYWdpbmF0b3JPcHRpb25zUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWVzOiBBcnJheTxudW1iZXI+KSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQoWy4uLnZhbHVlc10pKS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ3Zpc2libGVDb2x1bW5zJyxcbiAgICBwdXJlOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEhhc1Zpc2libGVDb2x1bW5zUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybSh2YWx1ZXM6IGFueVtdLCBoYXNWaXNpYmxlQ29sdW1ucykge1xuICAgICAgICBpZiAoISh2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc1Zpc2libGVDb2x1bW5zID8gdmFsdWVzIDogW107XG4gICAgfVxuXG59XG5cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdpZ3hkYXRlJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hEYXRlUGlwZUNvbXBvbmVudCBleHRlbmRzIERhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfREFURV9GT1JNQVQgPSAnbWVkaXVtRGF0ZSc7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9JRCkgbG9jYWxlOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gRC5QLiBjb25zdHJ1Y3RvciBkdXBsaWNhdGlvbiBkdWUgdG8gZXM2IGNvbXBpbGF0aW9uLCBtaWdodCBiZSBvYnNvbGV0ZSBpbiB0aGUgZnV0dXJlXG4gICAgICAgIHN1cGVyKGxvY2FsZSk7XG4gICAgfVxuICAgIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBsb2NhbGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIudHJhbnNmb3JtKHZhbHVlLCB0aGlzLkRFRkFVTFRfREFURV9GT1JNQVQsIHVuZGVmaW5lZCwgbG9jYWxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLnRyYW5zZm9ybSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnaWd4ZGVjaW1hbCdcbn0pXG5leHBvcnQgY2xhc3MgSWd4RGVjaW1hbFBpcGVDb21wb25lbnQgZXh0ZW5kcyBEZWNpbWFsUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoTE9DQUxFX0lEKSBsb2NhbGU6IHN0cmluZykge1xuICAgICAgICAvLyBELlAuIGNvbnN0cnVjdG9yIGR1cGxpY2F0aW9uIGR1ZSB0byBlczYgY29tcGlsYXRpb24sIG1pZ2h0IGJlIG9ic29sZXRlIGluIHRoZSBmdXR1cmVcbiAgICAgICAgc3VwZXIobG9jYWxlKTtcbiAgICB9XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGxvY2FsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIudHJhbnNmb3JtKHZhbHVlLCB1bmRlZmluZWQsIGxvY2FsZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci50cmFuc2Zvcm0odmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19