@bi8/am-data-table
Version:
ng update @angular/cli --migrate-only --from=1.7.4 ng update @angular/core yarn add ng-packagr yarn add @angular/material yarn add core-js yarn add @angular/flex-layout yarn add lodash yarn add material-design-icons yarn add roboto-fontface yarn
214 lines • 23.6 kB
JavaScript
import * as tslib_1 from "tslib";
import { BehaviorSubject } from "rxjs/BehaviorSubject";
import { DataSource } from "@angular/cdk/collections";
import 'rxjs/Rx';
export var Operation;
(function (Operation) {
Operation[Operation["gt"] = 0] = "gt";
Operation[Operation["lt"] = 1] = "lt";
Operation[Operation["gte"] = 2] = "gte";
Operation[Operation["lte"] = 3] = "lte";
Operation[Operation["eq"] = 4] = "eq";
Operation[Operation["ieq"] = 5] = "ieq";
Operation[Operation["neq"] = 6] = "neq";
Operation[Operation["ineq"] = 7] = "ineq";
Operation[Operation["like"] = 8] = "like";
Operation[Operation["ilike"] = 9] = "ilike"; // case insensitive like
})(Operation || (Operation = {}));
export var SortOrder;
(function (SortOrder) {
SortOrder[SortOrder["asc"] = 0] = "asc";
SortOrder[SortOrder["desc"] = 1] = "desc"; // Descending
})(SortOrder || (SortOrder = {}));
export function SelectionMapper(codeProperty, valueProperty, source$) {
return source$.map(function (response) {
response.results.forEach(function (item, index) {
item.code = item[codeProperty];
item.value = item[valueProperty];
});
return response.results;
});
}
export function StringSelectionMapper(source$) {
return source$.map(function (response) {
var values = [];
response.results.forEach(function (item, index) {
values.push({ code: item, value: item });
});
return values;
});
}
var FilterCriteriaUtils = /** @class */ (function () {
function FilterCriteriaUtils(ctx) {
this.ctx = ctx;
if (!ctx) {
this.ctx = {};
}
}
FilterCriteriaUtils.prototype.getContext = function () {
return this.ctx;
};
FilterCriteriaUtils.prototype.applyFilter = function (path, operation, value) {
if (!value) {
return;
}
var filter = {
path: path,
operation: operation,
value: value
};
if (!this.ctx.criteria) {
this.ctx.criteria = [];
}
this.ctx.criteria.push(filter);
return this;
};
FilterCriteriaUtils.prototype.format = function () {
var e_1, _a;
var result = {};
if (this.ctx.size) {
result.size = this.ctx.size;
}
if (this.ctx.page) {
result.page = this.ctx.page;
}
if (this.ctx.inclusive != undefined) {
result.inclusive = this.ctx.inclusive;
}
if (this.ctx.sortField != undefined) {
result.sortField = this.ctx.sortField;
}
switch (this.ctx.sortOrder) {
case SortOrder.asc:
result.sortOrder = 'asc';
break;
case SortOrder.desc:
result.sortOrder = 'desc';
break;
}
if (this.ctx.criteria && this.ctx.criteria.length > 0) {
result.criteria = [];
try {
for (var _b = tslib_1.__values(this.ctx.criteria), _c = _b.next(); !_c.done; _c = _b.next()) {
var filter = _c.value;
var fc = {
value: filter.value,
path: filter.path
};
switch (filter.operation) {
case Operation.eq:
fc.operation = '=';
break;
case Operation.gt:
fc.operation = '>';
break;
case Operation.gte:
fc.operation = '>=';
break;
case Operation.ilike:
fc.operation = 'ilike';
break;
case Operation.like:
fc.operation = 'like';
break;
case Operation.lt:
fc.operation = '<';
break;
case Operation.lte:
fc.operation = '<=';
break;
case Operation.ieq:
fc.operation = ':';
break;
case Operation.neq:
fc.operation = '!=';
break;
case Operation.ineq:
fc.operation = '!:';
break;
}
result.criteria.push(fc);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
}
return result;
};
return FilterCriteriaUtils;
}());
export { FilterCriteriaUtils };
var FunctionCriteriaLoader = /** @class */ (function () {
function FunctionCriteriaLoader(loadFn) {
this.loadFn = loadFn;
}
FunctionCriteriaLoader.prototype.prepare = function (criteria) {
var _this = this;
return this.loadFn(criteria).map(function (response) {
return _this.processResponse(response);
});
};
FunctionCriteriaLoader.prototype.processResponse = function (response) {
return {
total: response.total,
items: response.results
};
};
return FunctionCriteriaLoader;
}());
export { FunctionCriteriaLoader };
var CriteriaTableDB = /** @class */ (function () {
function CriteriaTableDB(loader, paginator) {
var _this = this;
this.loader = loader;
this.paginator = paginator;
this.dataSubject = new BehaviorSubject([]);
this.items = [];
this.lastCtx = {};
this.pageSize = 5;
this.pageIndex = 0;
this.totalSize = 0;
this.dataSource = new CriteriaTableDS(this.dataSubject);
this.paginator.page.subscribe(function (event) {
_this.pageSize = event.pageSize;
_this.pageIndex = event.pageIndex;
_this.reload(_this.lastCtx);
});
}
CriteriaTableDB.prototype.reload = function (ctx) {
var _this = this;
var criteria = ctx || {};
criteria.page = this.pageIndex;
criteria.size = this.pageSize;
this.lastCtx = criteria;
this.loader.prepare(criteria).subscribe(function (result) {
_this.items = result.items;
_this.totalSize = result.total;
_this.items = result.items;
_this.dataSubject.next(result.items);
});
};
return CriteriaTableDB;
}());
export { CriteriaTableDB };
var CriteriaTableDS = /** @class */ (function (_super) {
tslib_1.__extends(CriteriaTableDS, _super);
function CriteriaTableDS(subject) {
var _this = _super.call(this) || this;
_this.subject = subject;
return _this;
}
CriteriaTableDS.prototype.connect = function () {
return this.subject.asObservable();
};
CriteriaTableDS.prototype.disconnect = function () {
};
return CriteriaTableDS;
}(DataSource));
export { CriteriaTableDS };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jcml0ZXJpYS5kcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BiaTgvYW0tZGF0YS10YWJsZS8iLCJzb3VyY2VzIjpbImFwcC9tb2R1bGVzL2FtLWRhdGEtdGFibGUvZ3JpZC1jcml0ZXJpYS5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUVwRCxPQUFPLFNBQVMsQ0FBQztBQUVqQixNQUFNLENBQU4sSUFBWSxTQVdYO0FBWEQsV0FBWSxTQUFTO0lBQ25CLHFDQUFFLENBQUE7SUFDRixxQ0FBRSxDQUFBO0lBQ0YsdUNBQUcsQ0FBQTtJQUNILHVDQUFHLENBQUE7SUFDSCxxQ0FBRSxDQUFBO0lBQ0YsdUNBQUcsQ0FBQTtJQUNILHVDQUFHLENBQUE7SUFDSCx5Q0FBSSxDQUFBO0lBQ0oseUNBQUksQ0FBQTtJQUNKLDJDQUFLLENBQUEsQ0FBRyx3QkFBd0I7QUFDbEMsQ0FBQyxFQVhXLFNBQVMsS0FBVCxTQUFTLFFBV3BCO0FBRUQsTUFBTSxDQUFOLElBQVksU0FHWDtBQUhELFdBQVksU0FBUztJQUNuQix1Q0FBRyxDQUFBO0lBQ0gseUNBQUksQ0FBQSxDQUFHLGFBQWE7QUFDdEIsQ0FBQyxFQUhXLFNBQVMsS0FBVCxTQUFTLFFBR3BCO0FBaUJELE1BQU0sVUFBVSxlQUFlLENBQUMsWUFBb0IsRUFBRSxhQUFxQixFQUFFLE9BQTJCO0lBQ3RHLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFDLFFBQWM7UUFDaEMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFJLEVBQUUsS0FBSztZQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNu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Q0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsb0NBQVUsR0FBVjtJQUNBLENBQUM7SUFDSCxzQkFBQztBQUFELENBQUMsQUFYRCxDQUFxQyxVQUFVLEdBVzlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gXCJyeGpzL0JlaGF2aW9yU3ViamVjdFwiO1xyXG5pbXBvcnQge01hdFBhZ2luYXRvcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsXCI7XHJcbmltcG9ydCB7RGF0YVNvdXJjZX0gZnJvbSBcIkBhbmd1bGFyL2Nkay9jb2xsZWN0aW9uc1wiO1xyXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gXCJyeGpzL09ic2VydmFibGVcIjtcclxuaW1wb3J0ICdyeGpzL1J4JztcclxuXHJcbmV4cG9ydCBlbnVtIE9wZXJhdGlvbiB7XHJcbiAgZ3QsICAgICAvLyA+IEdyZWF0ZXIgVGhhblxyXG4gIGx0LCAgICAgLy8gPiBMb3dlciBUaGFuXHJcbiAgZ3RlLCAgICAvLyA+PSBHcmVhdGVyIG9yIEVxdWFsXHJcbiAgbHRlLCAgICAvLyA8PSBMb3dlciBvciBFcXVhbFxyXG4gIGVxLCAgICAgLy8gPVxyXG4gIGllcSwgICAgLy8gOiBjYXNlIGluc2Vuc2l0aXZlIGVxdWFsIChjYW4gb25seSBiZSBkb25lIG9uIHN0cmluZ3MpXHJcbiAgbmVxLCAgICAvLyAhPSBub3QgZXF1YWxcclxuICBpbmVxLCAgIC8vICE6IGNhc2UgaW5zZW5zaXRpdmUgbm90IGVxdWFsIChjYW4gb25seSBiZSBkb25lIG9uIHN0cmluZ3MpXHJcbiAgbGlrZSwgICAvLyBsaWtlXHJcbiAgaWxpa2UgICAvLyBjYXNlIGluc2Vuc2l0aXZlIGxpa2VcclxufVxyXG5cclxuZXhwb3J0IGVudW0gU29ydE9yZGVyIHtcclxuICBhc2MsICAgLy8gQXNjZW5kaW5nXHJcbiAgZGVzYyAgIC8vIERlc2NlbmRpbmdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hDb250ZXh0IHtcclxuICBzaXplPzogbnVtYmVyO1xyXG4gIHBhZ2U/OiBudW1iZXI7XHJcbiAgaW5jbHVzaXZlPzogYm9vbGVhbjtcclxuICBzb3J0RmllbGQ/OiBzdHJpbmc7XHJcbiAgc29ydE9yZGVyPzogU29ydE9yZGVyO1xyXG4gIGNyaXRlcmlhPzogRmlsdGVyQ3JpdGVyaWFbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJDcml0ZXJpYSB7XHJcbiAgcGF0aDogc3RyaW5nO1xyXG4gIG9wZXJhdGlvbjogT3BlcmF0aW9uO1xyXG4gIHZhbHVlOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBTZWxlY3Rpb25NYXBwZXIoY29kZVByb3BlcnR5OiBzdHJpbmcsIHZhbHVlUHJvcGVydHk6IHN0cmluZywgc291cmNlJDogT2JzZXJ2YWJsZTxPYmplY3Q+KSA6IE9ic2VydmFibGU8T2JqZWN0PiB7XHJcbiAgcmV0dXJuIHNvdXJjZSQubWFwKChyZXNwb25zZSA6IGFueSkgPT4ge1xyXG4gICAgcmVzcG9uc2UucmVzdWx0cy5mb3JFYWNoKChpdGVtLCBpbmRleCk9PntcclxuICAgICAgaXRlbS5jb2RlID0gaXRlbVtjb2RlUHJvcGVydHldO1xyXG4gICAgICBpdGVtLnZhbHVlID0gaXRlbVt2YWx1ZVByb3BlcnR5XTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3BvbnNlLnJlc3VsdHM7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBTdHJpbmdTZWxlY3Rpb25NYXBwZXIoc291cmNlJDogT2JzZXJ2YWJsZTxPYmplY3Q+KSA6IE9ic2VydmFibGU8T2JqZWN0PiB7XHJcbiAgcmV0dXJuIHNvdXJjZSQubWFwKChyZXNwb25zZSA6IGFueSkgPT4ge1xyXG4gICAgbGV0IHZhbHVlcyA9IFtdO1xyXG5cclxuICAgIHJlc3BvbnNlLnJlc3VsdHMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpPT57XHJcbiAgICAgIHZhbHVlcy5wdXNoKHsgY29kZTogaXRlbSwgdmFsdWU6IGl0ZW0gfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB2YWx1ZXM7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJDcml0ZXJpYVV0aWxzIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGN0eD86IFNlYXJjaENvbnRleHQpe1xyXG4gICAgaWYgKCFjdHgpe1xyXG4gICAgICB0aGlzLmN0eCA9IHt9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGV4dCgpIDogU2VhcmNoQ29udGV4dCB7XHJcbiAgICByZXR1cm4gdGhpcy5jdHg7XHJcbiAgfVxyXG5cclxuICBhcHBseUZpbHRlcihwYXRoOiBzdHJpbmcsIG9wZXJhdGlvbjogT3BlcmF0aW9uLCB2YWx1ZTogYW55KSA6IEZpbHRlckNyaXRlcmlhVXRpbHMge1xyXG4gICAgaWYgKCF2YWx1ZSl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZmlsdGVyOiBGaWx0ZXJDcml0ZXJpYSA9IHtcclxuICAgICAgcGF0aDogcGF0aCxcclxuICAgICAgb3BlcmF0aW9uOiBvcGVyYXRpb24sXHJcbiAgICAgIHZhbHVlOiB2YWx1ZVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoIXRoaXMuY3R4LmNyaXRlcmlhKXtcclxuICAgICAgdGhpcy5jdHguY3JpdGVyaWEgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmN0eC5jcml0ZXJpYS5wdXNoKGZpbHRlcik7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIGZvcm1hdCgpe1xyXG4gICAgbGV0IHJlc3VsdDogYW55ID0ge307XHJcbiAgICBpZiAodGhpcy5jdHguc2l6ZSkge1xyXG4gICAgICByZXN1bHQuc2l6ZSA9IHRoaXMuY3R4LnNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY3R4LnBhZ2Upe1xyXG4gICAgICByZXN1bHQucGFnZSA9IHRoaXMuY3R4LnBhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY3R4LmluY2x1c2l2ZSAhPSB1bmRlZmluZWQpe1xyXG4gICAgICByZXN1bHQuaW5jbHVzaXZlID0gdGhpcy5jdHguaW5jbHVzaXZlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmN0eC5zb3J0RmllbGQgIT0gdW5kZWZpbmVkKXtcclxuICAgICAgcmVzdWx0LnNvcnRGaWVsZCA9IHRoaXMuY3R4LnNvcnRGaWVsZDtcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuY3R4LnNvcnRPcmRlcil7XHJcbiAgICAgIGNhc2UgU29ydE9yZGVyLmFzYzpcclxuICAgICAgICByZXN1bHQuc29ydE9yZGVyID0gJ2FzYyc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU29ydE9yZGVyLmRlc2M6XHJcbiAgICAgICAgcmVzdWx0LnNvcnRPcmRlciA9ICdkZXNjJztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jdHguY3JpdGVyaWEgJiYgdGhpcy5jdHguY3JpdGVyaWEubGVuZ3RoID4gMCl7XHJcbiAgICAgIHJlc3VsdC5jcml0ZXJpYSA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBmaWx0ZXIgb2YgdGhpcy5jdHguY3JpdGVyaWEpe1xyXG4gICAgICAgIGxldCBmYzogYW55ID0ge1xyXG4gICAgICAgICAgdmFsdWU6IGZpbHRlci52YWx1ZSxcclxuICAgICAgICAgIHBhdGg6IGZpbHRlci5wYXRoXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIub3BlcmF0aW9uKXtcclxuICAgICAgICAgIGNhc2UgT3BlcmF0aW9uLmVxOlxyXG4gICAgICAgICAgICBmYy5vcGVyYXRpb24gPSAnPSc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBPcGVyYXRpb24uZ3Q6XHJcbiAgICAgICAgICAgIGZjLm9wZXJhdGlvbiA9ICc+JztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIE9wZXJhdGlvbi5ndGU6XHJcbiAgICAgICAgICAgIGZjLm9wZXJhdGlvbiA9ICc+PSc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBPcGVyYXRpb24uaWxpa2U6XHJcbiAgICAgICAgICAgIGZjLm9wZXJhdGlvbiA9ICdpbGlrZSc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBPcGVyYXRpb24ubGlrZTpcclxuICAgICAgICAgICAgZmMub3BlcmF0aW9uID0gJ2xpa2UnO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgT3BlcmF0aW9uLmx0OlxyXG4gICAgICAgICAgICBmYy5vcGVyYXRpb24gPSAnPCc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBPcGVyYXRpb24ubHRlOlxyXG4gICAgICAgICAgICBmYy5vcGVyYXRpb24gPSAnPD0nO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgT3BlcmF0aW9uLmllcTpcclxuICAgICAgICAgICAgZmMub3BlcmF0aW9uID0gJzonO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgT3BlcmF0aW9uLm5lcTpcclxuICAgICAgICAgICAgZmMub3BlcmF0aW9uID0gJyE9JztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIE9wZXJhdGlvbi5pbmVxOlxyXG4gICAgICAgICAgICBmYy5vcGVyYXRpb24gPSAnITonO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJlc3VsdC5jcml0ZXJpYS5wdXNoKGZjKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDcml0ZXJpYVNlYXJjaFNlcnZpY2Uge1xyXG4gIHNlYXJjaChjcml0ZXJpYTogYW55KSA6IE9ic2VydmFibGU8T2JqZWN0PlxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENyaXRlcmlhTG9hZEZuIHtcclxuICAoY3JpdGVyaWE6IGFueSk6IE9ic2VydmFibGU8T2JqZWN0PjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDcml0ZXJpYUxvYWRlciB7XHJcbiAgcHJlcGFyZShjcml0ZXJpYTogYW55KSA6IE9ic2VydmFibGU8T2JqZWN0PjtcclxuICBwcm9jZXNzUmVzcG9uc2UocmVzcG9uc2U6IGFueSkgOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGdW5jdGlvbkNyaXRlcmlhTG9hZGVyIGltcGxlbWVudHMgQ3JpdGVyaWFMb2FkZXIge1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBsb2FkRm46IENyaXRlcmlhTG9hZEZuKXtcclxuICB9XHJcblxyXG4gIHByZXBhcmUoY3JpdGVyaWE6IGFueSkgOiBPYnNlcnZhYmxlPE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMubG9hZEZuKGNyaXRlcmlhKS5tYXAoKHJlc3BvbnNlIDogYW55KT0+e1xyXG4gICAgICByZXR1cm4gdGhpcy5wcm9jZXNzUmVzcG9uc2UocmVzcG9uc2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzUmVzcG9uc2UocmVzcG9uc2Upe1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdG90YWw6IHJlc3BvbnNlLnRvdGFsLFxyXG4gICAgICBpdGVtczogcmVzcG9uc2UucmVzdWx0c1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENyaXRlcmlhVGFibGVEQiB7XHJcbiAgZGF0YVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XHJcbiAgZGF0YVNvdXJjZTogQ3JpdGVyaWFUYWJsZURTIHwgbnVsbDtcclxuICBpdGVtczogYW55ID0gW107XHJcbiAgbGFzdEN0eDogYW55ID0ge307XHJcblxyXG4gIHBhZ2VTaXplOiBudW1iZXIgPSA1O1xyXG4gIHBhZ2VJbmRleDogbnVtYmVyID0gMDtcclxuICB0b3RhbFNpemU6IG51bWJlciA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9hZGVyIDogQ3JpdGVyaWFMb2FkZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcil7XHJcblxyXG4gICAgdGhpcy5kYXRhU291cmNlID0gbmV3IENyaXRlcmlhVGFibGVEUyh0aGlzLmRhdGFTdWJqZWN0KTtcclxuICAgIHRoaXMucGFnaW5hdG9yLnBhZ2Uuc3Vic2NyaWJlKChldmVudCk9PntcclxuICAgICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50LnBhZ2VTaXplO1xyXG4gICAgICB0aGlzLnBhZ2VJbmRleCA9IGV2ZW50LnBhZ2VJbmRleDtcclxuICAgICAgdGhpcy5yZWxvYWQodGhpcy5sYXN0Q3R4KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVsb2FkKGN0eD86IGFueSl7XHJcbiAgICBsZXQgY3JpdGVyaWEgPSBjdHggfHwge307XHJcbiAgICBjcml0ZXJpYS5wYWdlID0gdGhpcy5wYWdlSW5kZXg7XHJcbiAgICBjcml0ZXJpYS5zaXplID0gdGhpcy5wYWdlU2l6ZTtcclxuICAgIHRoaXMubGFzdEN0eCA9IGNyaXRlcmlhO1xyXG5cclxuICAgIHRoaXMubG9hZGVyLnByZXBhcmUoY3JpdGVyaWEpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpPT57XHJcbiAgICAgIHRoaXMuaXRlbXMgPSByZXN1bHQuaXRlbXM7XHJcbiAgICAgIHRoaXMudG90YWxTaXplID0gcmVzdWx0LnRvdGFsO1xyXG4gICAgICB0aGlzLml0ZW1zID0gcmVzdWx0Lml0ZW1zO1xyXG4gICAgICB0aGlzLmRhdGFTdWJqZWN0Lm5leHQocmVzdWx0Lml0ZW1zKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENyaXRlcmlhVGFibGVEUyBleHRlbmRzIERhdGFTb3VyY2U8YW55W10+IHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4pIHtcclxuICAgIHN1cGVyICgpO1xyXG4gIH1cclxuXHJcbiAgY29ubmVjdCgpOiBPYnNlcnZhYmxlPGFueVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgZGlzY29ubmVjdCgpOiB2b2lkIHtcclxuICB9XHJcbn1cclxuIl19