@datorama/core 21.4.0-rc.10 → 21.4.0-rc.13
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/bundles/datorama-core.umd.js +14 -11
- package/bundles/datorama-core.umd.js.map +1 -1
- package/bundles/datorama-core.umd.min.js +2 -2
- package/bundles/datorama-core.umd.min.js.map +1 -1
- package/datorama-core.metadata.json +1 -1
- package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +3 -3
- package/esm2015/lib/grid-v2/grid-filter/grid-filter.component.js +8 -4
- package/esm2015/lib/grid-v2/grid-filter/grid-filter.types.js +1 -1
- package/esm2015/lib/grid-v2/grid-store/grid.query.js +4 -3
- package/esm2015/lib/grid-v2/grid-store/grid.service.js +5 -5
- package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +3 -3
- package/esm5/lib/grid-v2/grid-filter/grid-filter.component.js +6 -4
- package/esm5/lib/grid-v2/grid-filter/grid-filter.types.js +1 -1
- package/esm5/lib/grid-v2/grid-store/grid.query.js +4 -3
- package/esm5/lib/grid-v2/grid-store/grid.service.js +5 -5
- package/fesm2015/datorama-core.js +16 -11
- package/fesm2015/datorama-core.js.map +1 -1
- package/fesm5/datorama-core.js +14 -11
- package/fesm5/datorama-core.js.map +1 -1
- package/lib/grid-v2/grid-controller/grid-controller.component.d.ts +1 -1
- package/lib/grid-v2/grid-filter/grid-filter.types.d.ts +1 -1
- package/lib/grid-v2/grid-store/grid.service.d.ts +1 -1
- package/package.json +1 -1
|
@@ -67,4 +67,4 @@ export var DatoGridFilterOptionsMap = (_a = {},
|
|
|
67
67
|
export function isRangeCondition(item) {
|
|
68
68
|
return item.condition === DatoFilterConditions.IN_RANGE;
|
|
69
69
|
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1maWx0ZXIudHlwZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZGF0b3JhbWEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9ncmlkLXYyL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7QUFPSCxNQUFNLENBQU4sSUFBWSxtQkFLWDtBQUxELFdBQVksbUJBQW1CO0lBQzdCLHdDQUFpQixDQUFBO0lBQ2pCLHdDQUFpQixDQUFBO0lBQ2pCLG9DQUFhLENBQUE7SUFDYixvQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUxXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFLOUI7QUFFRCxNQUFNLENBQU4sSUFBWSxzQkFHWDtBQUhELFdBQVksc0JBQXNCO0lBQ2hDLCtDQUFxQixDQUFBO0lBQ3JCLHFEQUEyQixDQUFBO0FBQzdCLENBQUMsRUFIVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBR2pDO0FBRUQsTUFBTSxDQUFOLElBQVksb0JBZ0JYO0FBaEJELFdBQVksb0JBQW9CO0lBQzlCLHlDQUFpQixDQUFBO0lBQ2pCLGlEQUF5QixDQUFBO0lBQ3pCLHFEQUE2QixDQUFBO0lBQzdCLHlEQUFpQyxDQUFBO0lBQ2pDLCtDQUF1QixDQUFBO0lBQ3ZCLG1EQUEyQixDQUFBO0lBQzNCLDZDQUFxQixDQUFBO0lBQ3JCLDZDQUFxQixDQUFBO0lBQ3JCLHFEQUE2QixDQUFBO0lBQzdCLG1EQUEyQixDQUFBO0lBQzNCLCtDQUF1QixDQUFBO0lBQ3ZCLDJDQUFtQixDQUFBO0lBQ25CLG1EQUEyQixDQUFBO0lBQzNCLDZDQUFxQixDQUFBO0lBQ3JCLCtDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFoQlcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQWdCL0I7QUFPRCxNQUFNLENBQUMsSUFBTSx5QkFBeUIsR0FBRztJQUN2QyxvQkFBb0IsQ0FBQyxRQUFRO0lBQzdCLG9CQUFvQixDQUFDLE1BQU07SUFDM0Isb0JBQW9CLENBQUMsU0FBUztJQUM5QixvQkFBb0IsQ0FBQyxZQUFZO0NBQ2xDLENBQUM7QUFDRixNQUFNLENBQUMsSUFBTSwyQkFBMkIsR0FBRztJQUN6QyxvQkFBb0IsQ0FBQyxRQUFRO0lBQzdCLG9CQUFvQixDQUFDLFlBQVk7SUFDakMsb0JBQW9CLENBQUMsTUFBTTtJQUMzQixvQkFBb0IsQ0FBQyxVQUFVO0lBQy9CLG9CQUFvQixDQUFDLFdBQVc7SUFDaEMsb0JBQW9CLENBQUMsU0FBUztDQUMvQixDQUFDO0FBQ0YsTUFBTSxDQUFDLElBQU0sMkJBQTJCLEdBQUc7SUFDekMsb0JBQW9CLENBQUMsTUFBTTtJQUMzQixvQkFBb0IsQ0FBQyxVQUFVO0lBQy9CLG9CQUFvQixDQUFDLFNBQVM7SUFDOUIsb0JBQW9CLENBQUMsV0FBVztJQUNoQyxvQkFBb0IsQ0FBQyxZQUFZO0lBQ2pDLG9CQUFvQixDQUFDLGNBQWM7SUFDbkMsb0JBQW9CLENBQUMsUUFBUTtDQUM5QixDQUFDO0FBRUYsTUFBTSxDQUFDLElBQU0sd0JBQXdCO0lBQ25DLEdBQUMsbUJBQW1CLENBQUMsTUFBTSxJQUFHLDJCQUEyQjtJQUN6RCxHQUFDLG1CQUFtQixDQUFDLE1BQU0sSUFBRywyQkFBMkI7SUFDekQsR0FBQyxtQkFBbUIsQ0FBQyxJQUFJLElBQUcseUJBQXlCO09BQ3RELENBQUM7QUFFRixNQUFNLFVBQVUsZ0JBQWdCLENBQUksSUFBSTtJQUN0QyxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssb0JBQW9CLENBQUMsUUFBUSxDQUFDO0FBQzFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBIYXNoTWFwIH0gZnJvbSAnQGRhdG9yYW1hL2FraXRhJztcbmltcG9ydCB7IE9wZXJhdG9yVHlwZXMgfSBmcm9tICcuLi8uLi9vcGVyYXRvci10b2dnbGVyL29wZXJhdG9yLXRvZ2dsZXIudHlwZXMnO1xuXG50eXBlIFN0cmluZ09yTnVtYmVyID0gc3RyaW5nIHwgbnVtYmVyO1xuXG5leHBvcnQgZW51bSBEYXRvR3JpZEZpbHRlclR5cGVzIHtcbiAgU3RyaW5nID0gJ1N0cmluZycsXG4gIE51bWJlciA9ICdOdW1iZXInLFxuICBEYXRlID0gJ0RhdGUnLFxuICBOb25lID0gJ05vbmUnXG59XG5cbmV4cG9ydCBlbnVtIERhdG9HcmlkRmlsdGVyU2VjdGlvbnMge1xuICBCeV9WYWx1ZSA9ICdCeV9WYWx1ZScsXG4gIENvbmRpdGlvbmFsID0gJ0NvbmRpdGlvbmFsJ1xufVxuXG5leHBvcnQgZW51bSBEYXRvRmlsdGVyQ29uZGl0aW9ucyB7XG4gIEVRVUFMUyA9ICdFUVVBTFMnLFxuICBOT1RfRVFVQUxTID0gJ05PVF9FUVVBTFMnLFxuICBHUkVBVEVSX1RIQU4gPSAnR1JFQVRFUl9USEFOJyxcbiAgR1JFQVRFUl9FUVVBTFMgPSAnR1JFQVRFUl9FUVVBTFMnLFxuICBMRVNTX1RIQU4gPSAnTEVTU19USEFOJyxcbiAgTEVTU19FUVVBTFMgPSAnTEVTU19FUVVBTFMnLFxuICBJTl9SQU5HRSA9ICdJTl9SQU5HRScsXG4gIENPTlRBSU5TID0gJ0NPTlRBSU5TJyxcbiAgTk9UX0NPTlRBSU5TID0gJ05PVF9DT05UQUlOUycsXG4gIFNUQVJUU19XSVRIID0gJ1NUQVJUU19XSVRIJyxcbiAgRU5EU19XSVRIID0gJ0VORFNfV0lUSCcsXG4gIElOX0xJU1QgPSAnSU5fTElTVCcsXG4gIE5PVF9JTl9MSVNUID0gJ05PVF9JTl9MSVNUJyxcbiAgSVNfRU1QVFkgPSAnSVNfRU1QVFknLFxuICBOT1RfRU1QVFkgPSAnTk9UX0VNUFRZJ1xufVxuXG5leHBvcnQgdHlwZSBTaW5nbGVWYWx1ZUNvbmRpdGlvbnMgPSBFeGNsdWRlPFxuICBEYXRvRmlsdGVyQ29uZGl0aW9ucyxcbiAgRGF0b0ZpbHRlckNvbmRpdGlvbnMuSU5fUkFOR0UgfCBEYXRvRmlsdGVyQ29uZGl0aW9ucy5JTl9MSVNUIHwgRGF0b0ZpbHRlckNvbmRpdGlvbnMuTk9UX0lOX0xJU1Rcbj47XG5cbmV4cG9ydCBjb25zdCBEYXRvR3JpZERhdGVGaWx0ZXJPcHRpb25zID0gW1xuICBEYXRvRmlsdGVyQ29uZGl0aW9ucy5JTl9SQU5HRSxcbiAgRGF0b0ZpbHRlckNvbmRpdGlvbnMuRVFVQUxTLFxuICBEYXRvRmlsdGVyQ29uZGl0aW9ucy5MRVNTX1RIQU4sXG4gIERhdG9GaWx0ZXJDb25kaXRpb25zLkdSRUFURVJfVEhBTlxuXTtcbmV4cG9ydCBjb25zdCBEYXRvR3JpZFN0cmluZ0ZpbHRlck9wdGlvbnMgPSBbXG4gIERhdG9GaWx0ZXJDb25kaXRpb25zLkNPTlRBSU5TLFxuICBEYXRvRmlsdGVyQ29uZGl0aW9ucy5OT1RfQ09OVEFJTlMsXG4gIERhdG9GaWx0ZXJDb25kaXRpb25zLkVRVUFMUyxcbiAgRGF0b0ZpbHRlckNvbmRpdGlvbnMuTk9UX0VRVUFMUyxcbiAgRGF0b0ZpbHRlckNvbmRpdGlvbnMuU1RBUlRTX1dJVEgsXG4gIERhdG9GaWx0ZXJDb25kaXRpb25zLkVORFNfV0lUSFxuXTtcbmV4cG9ydCBjb25zdCBEYXRvR3JpZE51bWJlckZpbHRlck9wdGlvbnMgPSBbXG4gIERhdG9GaWx0ZXJDb25kaXRpb25zLkVRVUFMUyxcbiAgRGF0b0ZpbHRlckNvbmRpdGlvbnMuTk9UX0VRVUFMUyxcbiAgRGF0b0ZpbHRlckNvbmRpdGlvbnMuTEVTU19USEFOLFxuICBEYXRvRmlsdGVyQ29uZGl0aW9ucy5MRVNTX0VRVUFMUyxcbiAgRGF0b0ZpbHRlckNvbmRpdGlvbnMuR1JFQVRFUl9USEFOLFxuICBEYXRvRmlsdGVyQ29uZGl0aW9ucy5HUkVBVEVSX0VRVUFMUyxcbiAgRGF0b0ZpbHRlckNvbmRpdGlvbnMuSU5fUkFOR0Vcbl07XG5cbmV4cG9ydCBjb25zdCBEYXRvR3JpZEZpbHRlck9wdGlvbnNNYXAgPSB7XG4gIFtEYXRvR3JpZEZpbHRlclR5cGVzLlN0cmluZ106IERhdG9HcmlkU3RyaW5nRmlsdGVyT3B0aW9ucyxcbiAgW0RhdG9HcmlkRmlsdGVyVHlwZXMuTnVtYmVyXTogRGF0b0dyaWROdW1iZXJGaWx0ZXJPcHRpb25zLFxuICBbRGF0b0dyaWRGaWx0ZXJUeXBlcy5EYXRlXTogRGF0b0dyaWREYXRlRmlsdGVyT3B0aW9uc1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmFuZ2VDb25kaXRpb248VD4oaXRlbSk6IGl0ZW0gaXMgVCB7XG4gIHJldHVybiBpdGVtLmNvbmRpdGlvbiA9PT0gRGF0b0ZpbHRlckNvbmRpdGlvbnMuSU5fUkFOR0U7XG59XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkUmFuZ2VGaWx0ZXJDb25kaXRpb24gPSB7XG4gIGNvbmRpdGlvbjogRGF0b0ZpbHRlckNvbmRpdGlvbnMuSU5fUkFOR0U7XG4gIHZhbHVlOiBTdHJpbmdPck51bWJlciB8IGFueTtcbiAgcmFuZ2VFbmQ6IFN0cmluZ09yTnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRGaWx0ZXJDb25kaXRpb24gPSB7XG4gIGNvbmRpdGlvbjogU2luZ2xlVmFsdWVDb25kaXRpb25zO1xuICB2YWx1ZTogU3RyaW5nT3JOdW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBEYXRvR3JpZEZpbHRlciA9IHtcbiAgY29sSWQ/OiBzdHJpbmc7XG4gIGJ5VmFsdWU/OiB7XG4gICAgY29uZGl0aW9uOiBEYXRvRmlsdGVyQ29uZGl0aW9ucy5JTl9MSVNUIHwgRGF0b0ZpbHRlckNvbmRpdGlvbnMuTk9UX0lOX0xJU1Q7XG4gICAgdmFsdWVzOiBTdHJpbmdPck51bWJlcltdO1xuICB9O1xuICBjb25kaXRpb25hbD86IERhdG9HcmlkQ29uZGl0aW9uYWxGaWx0ZXI7XG4gIHBpdm90S2V5cz86IHN0cmluZ1tdO1xuICBwaXZvdEZpZWxkc01hcD86IEhhc2hNYXA8c3RyaW5nPjtcbn07XG5cbmV4cG9ydCB0eXBlIERhdG9HcmlkQ29uZGl0aW9uYWxGaWx0ZXIgPSB7XG4gIHR5cGU6IERhdG9HcmlkRmlsdGVyVHlwZXM7XG4gIG9wZXJhdG9yOiBPcGVyYXRvclR5cGVzO1xuICBjb25kaXRpb25zOiAoRGF0b0dyaWRGaWx0ZXJDb25kaXRpb24gfCBEYXRvR3JpZFJhbmdlRmlsdGVyQ29uZGl0aW9uKVtdO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0b0dyaWRFeHRlcm5hbEZpbHRlciA9IHtcbiAgZmllbGQ6IHN0cmluZztcbiAgZmlsdGVyOiBEYXRvR3JpZEZpbHRlcjtcbiAgcGl2b3RGaWVsZHNNYXA/OiBIYXNoTWFwPHN0cmluZz47XG59O1xuXG5leHBvcnQgdHlwZSBEYXRvR3JpZEZpbHRlcnNNYXAgPSBIYXNoTWFwPERhdG9HcmlkRmlsdGVyPjtcblxuZXhwb3J0IHR5cGUgU2VydmVyU2lkZVBhZ2luYXRpb25SYW5nZUNvbmRpdGlvbiA9IHtcbiAgY29uZGl0aW9uOiBEYXRvRmlsdGVyQ29uZGl0aW9ucy5JTl9SQU5HRTtcbiAgc3RhcnQ6IFN0cmluZ09yTnVtYmVyO1xuICBlbmQ6IFN0cmluZ09yTnVtYmVyO1xuICBjb2x1bW4/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgU2VydmVyU2lkZVBhZ2luYXRpb25MaXN0Q29uZGl0aW9uID0ge1xuICBjb25kaXRpb246IERhdG9GaWx0ZXJDb25kaXRpb25zLklOX0xJU1QgfCBEYXRvRmlsdGVyQ29uZGl0aW9ucy5OT1RfSU5fTElTVDtcbiAgdmFsdWVzOiBTdHJpbmdPck51bWJlcltdO1xuICBjb2x1bW4/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBTZXJ2ZXJTaWRlUGFnaW5hdGlvbkNvbmRpdGlvbiA9IHtcbiAgY29uZGl0aW9uOiBTaW5nbGVWYWx1ZUNvbmRpdGlvbnM7XG4gIHZhbHVlOiBTdHJpbmdPck51bWJlcjtcbiAgY29sdW1uPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgU2VydmVyU2lkZVBhZ2luYXRpb25GaWx0ZXJzQXJyYXkgPSAoXG4gIHwgU2VydmVyU2lkZVBhZ2luYXRpb25GaWx0ZXJcbiAgfCBTZXJ2ZXJTaWRlUGFnaW5hdGlvbkNvbmRpdGlvblxuICB8IFNlcnZlclNpZGVQYWdpbmF0aW9uUmFuZ2VDb25kaXRpb25cbiAgfCBTZXJ2ZXJTaWRlUGFnaW5hdGlvbkxpc3RDb25kaXRpb24pW107XG5cbmV4cG9ydCB0eXBlIFNlcnZlclNpZGVQYWdpbmF0aW9uRmlsdGVyID0ge1xuICBvcGVyYXRvcjogT3BlcmF0b3JUeXBlcztcbiAgZmlsdGVyczogU2VydmVyU2lkZVBhZ2luYXRpb25GaWx0ZXJzQXJyYXk7XG59O1xuXG5leHBvcnQgdHlwZSBTZXJ2ZXJTaWRlUGFnaW5hdGlvbkZpbHRlcnMgPSBIYXNoTWFwPFNlcnZlclNpZGVQYWdpbmF0aW9uRmlsdGVyPjtcbmV4cG9ydCB0eXBlIExpc3RJdGVtID0geyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH07XG4iXX0=
|
|
@@ -149,8 +149,9 @@ var GridQuery = /** @class */ (function (_super) {
|
|
|
149
149
|
GridQuery.prototype.filterChanged = function () {
|
|
150
150
|
return this.selectFilter().pipe(map(function (filter) {
|
|
151
151
|
return Object.keys(filter).reduce(function (filters, field) {
|
|
152
|
-
|
|
153
|
-
|
|
152
|
+
var datoFilter = filter[field];
|
|
153
|
+
if (datoFilter) {
|
|
154
|
+
filters.push({ field: field, filter: datoFilter });
|
|
154
155
|
}
|
|
155
156
|
return filters;
|
|
156
157
|
}, []);
|
|
@@ -233,4 +234,4 @@ var GridQuery = /** @class */ (function (_super) {
|
|
|
233
234
|
return GridQuery;
|
|
234
235
|
}(Query));
|
|
235
236
|
export { GridQuery };
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1zdG9yZS9ncmlkLnF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQVUsTUFBTSxFQUFXLE1BQU0sbUJBQW1CLENBQUM7QUFHNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUV0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3pDO0lBQStCLDZCQUFxQjtJQTZDbEQsbUJBQXNCLEtBQWdCO1FBQXRDLFlBQ0Usa0JBQU0sS0FBSyxDQUFDLFNBQ2I7UUFGcUIsV0FBSyxHQUFMLEtBQUssQ0FBVztRQTFDdEMsV0FBVztRQUNYLGdCQUFVLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsZ0JBQVUsR0FBRyxLQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLEVBQUwsQ0FBSyxDQUFDLENBQUMsQ0FBQztRQUN6RSxXQUFXO1FBQ1gsdUJBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQTRCLENBQUM7UUFDNUQsdUJBQWlCLEdBQUcsS0FBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFELHFCQUFlLEdBQW9CLEtBQUksQ0FBQyxXQUFXLENBQUM7WUFDbEQsT0FBQSxLQUFLLENBQUMsS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsS0FBSSxDQUFDLGlCQUFpQixDQUFDO1FBQW5ILENBQW1ILENBQ3BILENBQUM7UUFDRix5QkFBbUIsR0FBRyxLQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3JDLE9BQUEsU0FBUyxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBQyxFQUFPO29CQUFMLFlBQUc7Z0JBQU8sT0FBQSxHQUFHLENBQUMsZUFBZSxFQUFFO1lBQXJCLENBQXFCLENBQUMsQ0FBQztRQUF0RyxDQUFzRyxDQUN2RyxDQUFDO1FBRUYsd0JBQWtCLEdBQXNDLEtBQUksQ0FBQyxXQUFXLENBQUM7WUFDdkUsT0FBTyxLQUFLLENBQ1YsS0FBSSxDQUFDLG1CQUFtQixFQUN4QixLQUFJLENBQUMsZUFBZSxFQUNwQixLQUFJLENBQUMsNEJBQTRCLEVBQUUsRUFDbkMsS0FBSSxDQUFDLFdBQVcsQ0FBQyxjQUFNLE9BQUEsS0FBSyxDQUFDLEtBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBL0QsQ0FBK0QsQ0FBQyxDQUN4RixDQUFDLElBQUksQ0FDSixHQUFHLENBQUM7Z0JBQ0YsSUFBTSxjQUFjLEdBQUcsS0FBSSxDQUFDLFlBQVk7b0JBQ3RDLENBQUMsQ0FBQyxLQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUztvQkFDakMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3pDLElBQU0saUJBQWlCLEdBQUcsS0FBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBRXRELElBQU0sZUFBZSxHQUFHLEtBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUNsRCxJQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFVBQUMsSUFBYSxJQUFLLE9BQUEsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFqQixDQUFpQixDQUFDLENBQUMsQ0FBQztnQkFDakcsSUFBTSxxQkFBcUIsR0FDekIsQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLElBQUkscUJBQXFCLEtBQUssSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUM5RSxDQUFDLEtBQUksQ0FBQyw0QkFBNEIsSUFBSSxPQUFPLENBQUMsS0FBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztnQkFFOUYsT0FBTyxFQUFFLGNBQWMsZ0JBQUEsRUFBRSxpQkFBaUIsbUJBQUEsRUFBRSxxQkFBcUIsdUJBQUEsRUFBRSxxQkFBcUIsdUJBQUEsRUFBRSxDQUFDO1lBQzdGLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILG1CQUFhLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssQ0FBQyxRQUFRLEVBQWQsQ0FBYyxDQUFDLENBQUMsSUFBSSxDQUN2RCxHQUFHLENBQUMsVUFBQyxFQUF3QztnQkFBdEMsa0JBQU0sRUFBRSwwQkFBVTtZQUF5QixPQUFBLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVU7UUFBaEMsQ0FBZ0MsQ0FBQyxDQUNwRixDQUFDO1FBQ0Ysc0JBQWdCLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQW5DLENBQW1DLENBQUMsQ0FBQzs7SUFJN0UsQ0FBQztJQUVELHNCQUFJLHVDQUFnQjthQUFwQjtZQUNFLE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLG9CQUFvQixDQUFDO1FBQzlDLENBQUM7OztPQUFBO0lBRUQsc0JBQUksbUNBQVk7YUFBaEI7WUFDRSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7UUFDdkMsQ0FBQzs7O09BQUE7SUFFRCxzQkFBSSxtREFBNEI7YUFBaEM7WUFDRSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQztRQUNwRCxDQUFDOzs7T0FBQTtJQUVELHNCQUFJLG9DQUFhO2FBQWpCO1lBQ0UsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUNoRCxDQUFDOzs7T0FBQTtJQUVELGtDQUFjLEdBQWQ7UUFDRSxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0lBQy9DLENBQUM7SUFFRCwwQ0FBc0IsR0FBdEI7UUFDRSxJQUFNLE9BQU8sR0FBRyxVQUFBLE1BQU0sSUFBSSxPQUFBLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBakIsQ0FBaUIsQ0FBQztRQUNwQyxJQUFBLDBCQUFPLENBQWM7UUFDN0IsSUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDcEQsSUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdDLElBQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ25ELElBQU0sYUFBYSxHQUFHLFlBQVk7YUFDL0IsTUFBTSxDQUFDLFVBQUEsTUFBTSxJQUFJLE9BQUEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUF2RCxDQUF1RCxDQUFDO2FBQ3pFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoQixJQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQy9DLElBQU0sUUFBUSxHQUFxQjtZQUNqQyxhQUFhLEVBQUUsYUFBYSxDQUFDLGFBQWE7WUFDMUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDcEIsYUFBYSxlQUFBO1lBQ2IsY0FBYyxFQUFFLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQzNDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3hCLGFBQWEsRUFBRSxPQUFPLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQzdELFlBQVksRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUN6QyxZQUFZLEVBQUUsSUFBSTtZQUNsQixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDO1FBRUYsSUFBSSxhQUFhLENBQUMsYUFBYSxtQkFBNkIsRUFBRTtZQUM1RCxRQUFRLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN6RDtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCwyQkFBTyxHQUFQO1FBQ0UsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUU7WUFDaEMsSUFBQSw2Q0FBNEUsRUFBMUUsY0FBSSxFQUFFLGdCQUFvRSxDQUFDO1lBQ25GLElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRCxJQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFckQsSUFBSSxhQUFhLEVBQUU7Z0JBQ2pCLElBQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsR0FBRyxDQUFDLFVBQUEsTUFBTSxJQUFJLE9BQUEsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFsQixDQUFrQixDQUFDLENBQUMsQ0FBQztnQkFDMUcsSUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRSxJQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7Z0JBRTlFLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLElBQUksTUFBQSxFQUFFLGFBQWEsZUFBQSxFQUFFLENBQUM7YUFDL0U7aUJBQU0sSUFBSSxNQUFNLEVBQUU7Z0JBQ2pCLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLElBQUksTUFBQSxFQUFFLENBQUM7YUFDekQ7U0FDRjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLEVBQWtCLENBQUM7U0FDM0Q7SUFDSCxDQUFDO0lBRUQsOEJBQVUsR0FBVjtRQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFuQixDQUFtQixDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGVBQWU7SUFDZiwyQkFBTyxHQUFQLFVBQVEsR0FBZ0IsRUFBRSxPQUFrQjtRQUMxQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFNRCxtQ0FBZSxHQUFmLFVBQW1CLFlBQXNCO1FBQ3ZDLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzdDLE9BQU8sWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBTUQsdUNBQW1CLEdBQW5CLFVBQW9CLFlBQXNCO1FBQ3hDLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDOUMsT0FBTyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCw2QkFBUyxHQUFUO1FBQ0UsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUN6QyxDQUFDO0lBRUQsZ0NBQVksR0FBWjtRQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFyQixDQUFxQixDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELGlDQUFhLEdBQWI7UUFDRSxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQzdCLEdBQUcsQ0FBQyxVQUFBLE1BQU07WUFDUixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQUMsT0FBTyxFQUFFLEtBQUs7Z0JBQy9DLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLE9BQUEsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDM0Q7Z0JBRUQsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxpQ0FBYSxHQUFiO1FBQ0UsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsb0NBQWdCLEdBQWhCO1FBQ0UsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQUMsS0FBcUIsSUFBSyxPQUFBLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUF6QixDQUF5QixDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUlELCtCQUFXLEdBQVgsVUFBcUIsTUFBNEI7UUFDL0MsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzVFLENBQUM7SUFFRCwrQkFBVyxHQUFYO1FBQ0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELGtDQUFjLEdBQWQ7UUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBK0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdFLENBQUM7SUFFRCxnREFBNEIsR0FBNUI7UUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBQyxLQUFxQixJQUFLLE9BQUEsS0FBSyxDQUFDLG9CQUFvQixFQUExQixDQUEwQixDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELHdDQUFvQixHQUFwQjtRQUNFLElBQUksSUFBSSxDQUFDLDRCQUE0QixFQUFFO1lBQy9CLElBQUEsMEJBQTRELEVBQTFELHdCQUFTLEVBQUUsZ0RBQStDLENBQUM7WUFDbkUsT0FBTyxTQUFTLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDaEQ7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsc0NBQWtCLEdBQWxCO1FBQ0UsSUFBTSxRQUFRLEdBQWMsRUFBRSxDQUFDO1FBQy9CLElBQU0sV0FBVyxHQUFHLFVBQUMsSUFBYTtZQUNoQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQztRQUNGLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQzNCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzlDLElBQU0sV0FBVyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ3BELElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQy9DLElBQU0sY0FBYyxHQUFHLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFDOUMsSUFBSSxhQUFhLEdBQUcsY0FBYyxHQUFHLFFBQVEsQ0FBQztRQUM5QyxJQUFJLGFBQWEsR0FBRyxTQUFTLEVBQUU7WUFDN0IsYUFBYSxHQUFHLFNBQVMsQ0FBQztTQUMzQjtRQUNELElBQU0sYUFBYSxHQUFHLFVBQUMsSUFBYTtZQUNsQyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksY0FBYyxFQUFFO2dCQUNwRSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkI7UUFDSCxDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEcsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGlDQUFhLEdBQWI7UUFDRSxPQUFPLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCwwQ0FBc0IsR0FBdEI7UUFDRSxPQUFPLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELHNDQUFrQixHQUFsQjtRQUNFLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFBLE1BQU0sSUFBSSxPQUFBLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBdEIsQ0FBc0IsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxnREFBNEIsR0FBNUI7UUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLENBQUMsb0JBQW9CLENBQUMsb0JBQW9CLEVBQS9DLENBQStDLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsc0NBQWtCLEdBQWxCLFVBQW1CLEtBQWE7UUFDOUIsSUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRWhFLE9BQU8sZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQUEsR0FBRyxJQUFJLE9BQUEsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLEtBQUssRUFBeEIsQ0FBd0IsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFTyxpREFBNkIsR0FBckMsVUFBc0MsT0FBaUI7UUFDckQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUNuQixVQUFDLE1BQWMsSUFBSyxPQUFBLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxpQkFBaUIsRUFBcEYsQ0FBb0YsQ0FDekcsQ0FBQztJQUNKLENBQUM7O2dCQS9NNEIsU0FBUzs7SUE3QzNCLFNBQVM7UUFEckIsVUFBVSxFQUFFO3lDQThDa0IsU0FBUztPQTdDM0IsU0FBUyxDQTZQckI7SUFBRCxnQkFBQztDQUFBLEFBN1BELENBQStCLEtBQUssR0E2UG5DO1NBN1BZLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzRW1wdHksIFF1ZXJ5IH0gZnJvbSAnQGRhdG9yYW1hL2FraXRhJztcbmltcG9ydCB7IEdyaWRTdG9yZSB9IGZyb20gJy4vZ3JpZC5zdG9yZSc7XG5pbXBvcnQgeyBEYXRvR3JpZFNldHRpbmdzLCBHcmlkU3RvcmVTdGF0ZSwgU2VydmVyU2lkZVBhZ2luYXRpb25Db25maWcgfSBmcm9tICcuL2dyaWQuc3RvcmUudHlwZXMnO1xuaW1wb3J0IHsgQ29sdW1uLCBFdmVudHMsIFJvd05vZGUgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBEYXRvR3JpZEFwaSB9IGZyb20gJy4uL2dyaWQtY29udHJvbGxlci9ncmlkLWNvbnRyb2xsZXIudHlwZXMnO1xuaW1wb3J0IHsgQWdHcmlkTmcyIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbUV2ZW50LCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIERhdG9HcmlkQWxpZ25tZW50LFxuICBEYXRvR3JpZERhdGFDaGFuZ2VkRXZlbnQsXG4gIERhdG9HcmlkT3B0aW9ucyxcbiAgRGF0b0dyaWRTb3J0LFxuICBHcmlkUm93c1NlbGVjdGlvbkRhdGFcbn0gZnJvbSAnLi4vZ3JpZC9ncmlkLXYyLnR5cGVzJztcbmltcG9ydCB7IERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXIsIERhdG9HcmlkRmlsdGVyc01hcCB9IGZyb20gJy4uL2dyaWQtZmlsdGVyL2dyaWQtZmlsdGVyLnR5cGVzJztcbmltcG9ydCB7IGdldENvbEZpZWxkLCBnZXRDb2x1bW5zU2l6ZXMgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgSGFzaE1hcCB9IGZyb20gJy4uLy4uL3V0aWxzL3R5cGVzJztcbmltcG9ydCB7IHNpemUgfSBmcm9tICcuLi8uLi91dGlscy9jb2xsZWN0aW9uJztcbmltcG9ydCB7IHVuaXEgfSBmcm9tICcuLi8uLi91dGlscy9hcnJheSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHcmlkUXVlcnkgZXh0ZW5kcyBRdWVyeTxHcmlkU3RvcmVTdGF0ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBhcGk6IERhdG9HcmlkQXBpO1xuICBncmlkUmVmOiBBZ0dyaWROZzI7XG4gIC8vQGludGVybmFsXG4gIF9ncmlkUmVhZHkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgZ3JpZFJlYWR5JCA9IHRoaXMuX2dyaWRSZWFkeS5hc09ic2VydmFibGUoKS5waXBlKGZpbHRlcihyZWFkeSA9PiByZWFkeSkpO1xuICAvL0BpbnRlcm5hbFxuICBfc2VydmVyRGF0YUxvYWRlZCA9IG5ldyBTdWJqZWN0PERhdG9HcmlkRGF0YUNoYW5nZWRFdmVudD4oKTtcbiAgc2VydmVyRGF0YUxvYWRlZCQgPSB0aGlzLl9zZXJ2ZXJEYXRhTG9hZGVkLmFzT2JzZXJ2YWJsZSgpO1xuICByb3dEYXRhQ2hhbmdlZCQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMud2FpdEZvckdyaWQoKCkgPT5cbiAgICBtZXJnZSh0aGlzLmdyaWRSZWYucm93RGF0YUNoYW5nZWQsIHRoaXMuZ3JpZFJlZi5yb3dEYXRhVXBkYXRlZCwgdGhpcy5ncmlkUmVmLmZpbHRlckNoYW5nZWQsIHRoaXMuc2VydmVyRGF0YUxvYWRlZCQpXG4gICk7XG4gIHNlbGVjdGVkUm93c0NoYW5nZSQgPSB0aGlzLndhaXRGb3JHcmlkKCgpID0+XG4gICAgZnJvbUV2ZW50KHRoaXMuYXBpLmdyaWQsIEV2ZW50cy5FVkVOVF9TRUxFQ1RJT05fQ0hBTkdFRCkucGlwZShtYXAoKHsgYXBpIH0pID0+IGFwaS5nZXRTZWxlY3RlZFJvd3MoKSkpXG4gICk7XG5cbiAgcm93c1NlbGVjdGlvbkRhdGEkOiBPYnNlcnZhYmxlPEdyaWRSb3dzU2VsZWN0aW9uRGF0YT4gPSB0aGlzLndhaXRGb3JHcmlkKCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICB0aGlzLnNlbGVjdGVkUm93c0NoYW5nZSQsXG4gICAgICB0aGlzLnJvd0RhdGFDaGFuZ2VkJCxcbiAgICAgIHRoaXMuc2VsZWN0U2VydmVyUGFnaW5hdGlvbkNvbmZpZygpLFxuICAgICAgdGhpcy53YWl0Rm9yR3JpZCgoKSA9PiBtZXJnZSh0aGlzLmdyaWRSZWYuc29ydENoYW5nZWQsIHRoaXMuZ3JpZFJlZi5wYWdpbmF0aW9uQ2hhbmdlZCkpXG4gICAgKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgY29uc3QgdG90YWxSb3dzQ291bnQgPSB0aGlzLmlzU2VydmVyU2lkZVxuICAgICAgICAgID8gdGhpcy5zZXJ2ZXJTaWRlQ29uZmlnLnRvdGFsUm93c1xuICAgICAgICAgIDogdGhpcy5hcGkuZ3JpZC5nZXREaXNwbGF5ZWRSb3dDb3VudCgpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFJvd3NDb3VudCA9IHRoaXMuZ2V0U2VsZWN0ZWRSb3dzQ291bnQoKTtcblxuICAgICAgICBjb25zdCBjdXJyZW50UGFnZVJvd3MgPSB0aGlzLmdldEN1cnJlbnRQYWdlUm93cygpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFBhZ2VSb3dzQ291bnQgPSBzaXplKGN1cnJlbnRQYWdlUm93cy5maWx0ZXIoKG5vZGU6IFJvd05vZGUpID0+IG5vZGUuaXNTZWxlY3RlZCgpKSk7XG4gICAgICAgIGNvbnN0IGlzQWxsUGFnZVJvd3NTZWxlY3RlZCA9XG4gICAgICAgICAgKHNlbGVjdGVkUGFnZVJvd3NDb3VudCA+IDAgJiYgc2VsZWN0ZWRQYWdlUm93c0NvdW50ID09PSBzaXplKGN1cnJlbnRQYWdlUm93cykpIHx8XG4gICAgICAgICAgKHRoaXMuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZCAmJiBpc0VtcHR5KHRoaXMuc2VydmVyU2lkZUNvbmZpZy5leGNsdWRlZEZyb21TZWxlY3RBbGwpKTtcblxuICAgICAgICByZXR1cm4geyB0b3RhbFJvd3NDb3VudCwgc2VsZWN0ZWRSb3dzQ291bnQsIHNlbGVjdGVkUGFnZVJvd3NDb3VudCwgaXNBbGxQYWdlUm93c1NlbGVjdGVkIH07XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIGZpbHRlckFjdGl2ZSQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5ncykucGlwZShcbiAgICBtYXAoKHsgZmlsdGVyLCBzZWFyY2hUZXJtIH06IERhdG9HcmlkU2V0dGluZ3MpID0+IHNpemUoZmlsdGVyKSA+IDAgfHwgISFzZWFyY2hUZXJtKVxuICApO1xuICBzZXJ2ZXJTaWRlRXJyb3IkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2VydmVyU2lkZVBhZ2luYXRpb24uaGFzRXJyb3IpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzdG9yZTogR3JpZFN0b3JlKSB7XG4gICAgc3VwZXIoc3RvcmUpO1xuICB9XG5cbiAgZ2V0IHNlcnZlclNpZGVDb25maWcoKTogU2VydmVyU2lkZVBhZ2luYXRpb25Db25maWcge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2VydmVyU2lkZVBhZ2luYXRpb247XG4gIH1cblxuICBnZXQgaXNTZXJ2ZXJTaWRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZlclNpZGVDb25maWcuZW5hYmxlZDtcbiAgfVxuXG4gIGdldCBpc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZlclNpZGVDb25maWcuc2VsZWN0QWxsUm93c0VuYWJsZWQ7XG4gIH1cblxuICBnZXQgZ3JpZEFsaWdubWVudCgpOiBEYXRvR3JpZEFsaWdubWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5ncmlkQWxpZ25tZW50O1xuICB9XG5cbiAgZ2V0Q29sdW1uU2l6ZXMoKTogSGFzaE1hcDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzLmNvbHVtbnNTaXplcztcbiAgfVxuXG4gIGdldEN1cnJlbnRHcmlkU2V0dGluZ3MoKTogRGF0b0dyaWRTZXR0aW5ncyB7XG4gICAgY29uc3QgdG9Db2xJZCA9IGNvbHVtbiA9PiBjb2x1bW4uZ2V0Q29sSWQoKTtcbiAgICBjb25zdCB7IGNvbHVtbnMgfSA9IHRoaXMuYXBpO1xuICAgIGNvbnN0IGdyb3VwZWRDb2x1bW5zID0gY29sdW1ucy5nZXRSb3dHcm91cENvbHVtbnMoKTtcbiAgICBjb25zdCBjb2x1bW5zT3JkZXIgPSBjb2x1bW5zLmdldEFsbENvbHVtbnMoKTtcbiAgICBjb25zdCBhbGxHcmlkQ29sdW1ucyA9IGNvbHVtbnMuZ2V0QWxsR3JpZENvbHVtbnMoKTtcbiAgICBjb25zdCBoaWRkZW5Db2x1bW5zID0gY29sdW1uc09yZGVyXG4gICAgICAuZmlsdGVyKGNvbHVtbiA9PiAhY29sdW1uLmlzVmlzaWJsZSgpICYmICFncm91cGVkQ29sdW1ucy5pbmNsdWRlcyhjb2x1bW4pKVxuICAgICAgLm1hcCh0b0NvbElkKTtcbiAgICBjb25zdCBzdG9yZVNldHRpbmdzID0gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzO1xuICAgIGNvbnN0IHNldHRpbmdzOiBEYXRvR3JpZFNldHRpbmdzID0ge1xuICAgICAgZ3JpZEFsaWdubWVudDogc3RvcmVTZXR0aW5ncy5ncmlkQWxpZ25tZW50LFxuICAgICAgc29ydDogdGhpcy5nZXRTb3J0KCksXG4gICAgICBoaWRkZW5Db2x1bW5zLFxuICAgICAgZ3JvdXBlZENvbHVtbnM6IGdyb3VwZWRDb2x1bW5zLm1hcCh0b0NvbElkKSxcbiAgICAgIGZpbHRlcjogdGhpcy5nZXRGaWx0ZXIoKSxcbiAgICAgIHBpbm5lZENvbHVtbnM6IGNvbHVtbnMuZ2V0RGlzcGxheWVkTGVmdENvbHVtbnMoKS5tYXAodG9Db2xJZCksXG4gICAgICBjb2x1bW5zT3JkZXI6IGFsbEdyaWRDb2x1bW5zLm1hcCh0b0NvbElkKSxcbiAgICAgIGNvbHVtbnNTaXplczogbnVsbCxcbiAgICAgIHNlYXJjaFRlcm06IG51bGxcbiAgICB9O1xuXG4gICAgaWYgKHN0b3JlU2V0dGluZ3MuZ3JpZEFsaWdubWVudCA9PT0gRGF0b0dyaWRBbGlnbm1lbnQuQ1VTVE9NKSB7XG4gICAgICBzZXR0aW5ncy5jb2x1bW5zU2l6ZXMgPSBnZXRDb2x1bW5zU2l6ZXMoYWxsR3JpZENvbHVtbnMpO1xuICAgIH1cblxuICAgIHJldHVybiBzZXR0aW5ncztcbiAgfVxuXG4gIGdldFNvcnQoKTogRGF0b0dyaWRTb3J0IHtcbiAgICBpZiAodGhpcy5ncmlkUmVmLmdyaWRPcHRpb25zLnBpdm90TW9kZSkge1xuICAgICAgY29uc3QgeyBzb3J0LCBjb2xJZCB9ID0gKHRoaXMuYXBpLmdyaWQuZ2V0U29ydE1vZGVsKCkucG9wKCkgYXMgRGF0b0dyaWRTb3J0KSB8fCB7fTtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuYXBpLmNvbHVtbnMuZ2V0Q29sdW1uKGNvbElkKTtcbiAgICAgIGNvbnN0IHBpdm90ZWRDb2x1bW4gPSB0aGlzLmdldFNlY29uZGFyeUNvbHVtbihjb2xJZCk7XG5cbiAgICAgIGlmIChwaXZvdGVkQ29sdW1uKSB7XG4gICAgICAgIGNvbnN0IHVuaXF1ZVBpdm90UGFyZW50cyA9IHVuaXEodGhpcy5hcGkuY29sdW1ucy5nZXRTZWNvbmRhcnlDb2x1bW5zKCkubWFwKGNvbHVtbiA9PiBjb2x1bW4uZ2V0UGFyZW50KCkpKTtcbiAgICAgICAgY29uc3Qgc2Vjb25kYXJ5Q29sdW1uID0gdGhpcy5nZXRTZWNvbmRhcnlDb2x1bW4ocGl2b3RlZENvbHVtbi5nZXRDb2xJZCgpKTtcbiAgICAgICAgY29uc3QgcGl2b3RDb2xJbmRleCA9IHVuaXF1ZVBpdm90UGFyZW50cy5pbmRleE9mKHNlY29uZGFyeUNvbHVtbi5nZXRQYXJlbnQoKSk7XG5cbiAgICAgICAgcmV0dXJuIHsgY29sSWQ6IGdldENvbEZpZWxkKHBpdm90ZWRDb2x1bW4uZ2V0Q29sRGVmKCkpLCBzb3J0LCBwaXZvdENvbEluZGV4IH07XG4gICAgICB9IGVsc2UgaWYgKGNvbHVtbikge1xuICAgICAgICByZXR1cm4geyBjb2xJZDogZ2V0Q29sRmllbGQoY29sdW1uLmdldENvbERlZigpKSwgc29ydCB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5hcGkuZ3JpZC5nZXRTb3J0TW9kZWwoKS5wb3AoKSBhcyBEYXRvR3JpZFNvcnQ7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0U29ydCgpOiBPYnNlcnZhYmxlPERhdG9HcmlkU29ydD4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5ncy5zb3J0KTtcbiAgfVxuXG4gIC8qIEBpbnRlcm5hbCAqL1xuICBfc2V0QXBpKGFwaTogRGF0b0dyaWRBcGksIGdyaWRSZWY6IEFnR3JpZE5nMikge1xuICAgIHRoaXMuYXBpID0gYXBpO1xuICAgIHRoaXMuZ3JpZFJlZiA9IGdyaWRSZWY7XG4gIH1cblxuICAvKiogUmV0dXJucyBqdXN0IHRoZSByb3dzIGRhdGEgKi9cbiAgZ2V0U2VsZWN0ZWRSb3dzPFQ+KCk6IFRbXTtcbiAgZ2V0U2VsZWN0ZWRSb3dzPFQ+KG9ubHlGaXJzdFJvdzogdHJ1ZSk6IFQgfCB1bmRlZmluZWQ7XG4gIGdldFNlbGVjdGVkUm93czxUPihvbmx5Rmlyc3RSb3c6IGZhbHNlKTogVFtdO1xuICBnZXRTZWxlY3RlZFJvd3M8VD4ob25seUZpcnN0Um93PzogYm9vbGVhbik6IFRbXSB8IFQge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmFwaS5ncmlkLmdldFNlbGVjdGVkUm93cygpO1xuICAgIHJldHVybiBvbmx5Rmlyc3RSb3cgPyByb3dzWzBdIDogcm93cztcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBlbnRpcmUgcm93IG5vZGUgKi9cbiAgZ2V0U2VsZWN0ZWRSb3dOb2RlcygpOiBSb3dOb2RlW107XG4gIGdldFNlbGVjdGVkUm93Tm9kZXMob25seUZpcnN0Um93OiB0cnVlKTogUm93Tm9kZSB8IHVuZGVmaW5lZDtcbiAgZ2V0U2VsZWN0ZWRSb3dOb2Rlcyhvbmx5Rmlyc3RSb3c6IGZhbHNlKTogUm93Tm9kZVtdO1xuICBnZXRTZWxlY3RlZFJvd05vZGVzKG9ubHlGaXJzdFJvdz86IGJvb2xlYW4pOiBSb3dOb2RlW10gfCBSb3dOb2RlIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5hcGkuZ3JpZC5nZXRTZWxlY3RlZE5vZGVzKCk7XG4gICAgcmV0dXJuIG9ubHlGaXJzdFJvdyA/IHJvd3NbMF0gOiByb3dzO1xuICB9XG5cbiAgZ2V0RmlsdGVyKCk6IERhdG9HcmlkRmlsdGVyc01hcCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5maWx0ZXI7XG4gIH1cblxuICBzZWxlY3RGaWx0ZXIoKTogT2JzZXJ2YWJsZTxEYXRvR3JpZEZpbHRlcnNNYXA+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2V0dGluZ3MuZmlsdGVyKTtcbiAgfVxuXG4gIGZpbHRlckNoYW5nZWQoKTogT2JzZXJ2YWJsZTxEYXRvR3JpZEV4dGVybmFsRmlsdGVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RGaWx0ZXIoKS5waXBlKFxuICAgICAgbWFwKGZpbHRlciA9PiB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhmaWx0ZXIpLnJlZHVjZSgoZmlsdGVycywgZmllbGQpID0+IHtcbiAgICAgICAgICBpZiAoZmlsdGVyW2ZpZWxkXSkge1xuICAgICAgICAgICAgZmlsdGVycy5wdXNoKHsgY29sSWQ6ICcnLCBmaWVsZCwgZmlsdGVyOiBmaWx0ZXJbZmllbGRdIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgICAgICB9LCBbXSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXRTZWFyY2hUZXJtKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5zZWFyY2hUZXJtO1xuICB9XG5cbiAgc2VsZWN0U2VhcmNoVGVybSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdCgoc3RhdGU6IEdyaWRTdG9yZVN0YXRlKSA9PiBzdGF0ZS5zZXR0aW5ncy5zZWFyY2hUZXJtKTtcbiAgfVxuXG4gIHdhaXRGb3JHcmlkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHdhaXRGb3JHcmlkPFQgPSBhbnk+KHNvdXJjZTogKCkgPT4gT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD47XG4gIHdhaXRGb3JHcmlkPFQgPSBhbnk+KHNvdXJjZT86ICgpID0+IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+IHwgT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHNvdXJjZSA/IHRoaXMuZ3JpZFJlYWR5JC5waXBlKHN3aXRjaE1hcChzb3VyY2UpKSA6IHRoaXMuZ3JpZFJlYWR5JDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2dyaWRSZWFkeS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3NlcnZlckRhdGFMb2FkZWQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGdldEdyaWRPcHRpb25zKCk6IERhdG9HcmlkT3B0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZFJlZiA/ICh0aGlzLmdyaWRSZWYuZ3JpZE9wdGlvbnMgYXMgRGF0b0dyaWRPcHRpb25zKSA6IG51bGw7XG4gIH1cblxuICBzZWxlY3RTZXJ2ZXJQYWdpbmF0aW9uQ29uZmlnKCk6IE9ic2VydmFibGU8U2VydmVyU2lkZVBhZ2luYXRpb25Db25maWc+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3QoKHN0YXRlOiBHcmlkU3RvcmVTdGF0ZSkgPT4gc3RhdGUuc2VydmVyU2lkZVBhZ2luYXRpb24pO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRSb3dzQ291bnQoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5pc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkKSB7XG4gICAgICBjb25zdCB7IHRvdGFsUm93cywgZXhjbHVkZWRGcm9tU2VsZWN0QWxsIH0gPSB0aGlzLnNlcnZlclNpZGVDb25maWc7XG4gICAgICByZXR1cm4gdG90YWxSb3dzIC0gc2l6ZShleGNsdWRlZEZyb21TZWxlY3RBbGwpO1xuICAgIH1cbiAgICByZXR1cm4gc2l6ZSh0aGlzLmdldFNlbGVjdGVkUm93cygpKTtcbiAgfVxuXG4gIGdldEN1cnJlbnRQYWdlUm93cygpOiBSb3dOb2RlW10ge1xuICAgIGNvbnN0IHBhZ2VSb3dzOiBSb3dOb2RlW10gPSBbXTtcbiAgICBjb25zdCBwdXNoUGFnZVJvdyA9IChub2RlOiBSb3dOb2RlKSA9PiB7XG4gICAgICBwYWdlUm93cy5wdXNoKG5vZGUpO1xuICAgIH07XG4gICAgY29uc3QgZ3JpZCA9IHRoaXMuYXBpLmdyaWQ7XG4gICAgY29uc3QgcGFnZVNpemUgPSBncmlkLnBhZ2luYXRpb25HZXRQYWdlU2l6ZSgpO1xuICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gZ3JpZC5wYWdpbmF0aW9uR2V0Q3VycmVudFBhZ2UoKTtcbiAgICBjb25zdCB0b3RhbFJvd3MgPSBncmlkLnBhZ2luYXRpb25HZXRSb3dDb3VudCgpO1xuICAgIGNvbnN0IGZpcnN0UGFnZUluZGV4ID0gY3VycmVudFBhZ2UgKiBwYWdlU2l6ZTtcbiAgICBsZXQgbGFzdFBhZ2VJbmRleCA9IGZpcnN0UGFnZUluZGV4ICsgcGFnZVNpemU7XG4gICAgaWYgKGxhc3RQYWdlSW5kZXggPiB0b3RhbFJvd3MpIHtcbiAgICAgIGxhc3RQYWdlSW5kZXggPSB0b3RhbFJvd3M7XG4gICAgfVxuICAgIGNvbnN0IHBlcmZvcm1BY3Rpb24gPSAobm9kZTogUm93Tm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUucm93SW5kZXggPCBsYXN0UGFnZUluZGV4ICYmIG5vZGUucm93SW5kZXggPj0gZmlyc3RQYWdlSW5kZXgpIHtcbiAgICAgICAgcHVzaFBhZ2VSb3cobm9kZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLmlzU2VydmVyU2lkZSA/IGdyaWQuZm9yRWFjaE5vZGUocGVyZm9ybUFjdGlvbikgOiBncmlkLmZvckVhY2hOb2RlQWZ0ZXJGaWx0ZXJBbmRTb3J0KHBlcmZvcm1BY3Rpb24pO1xuICAgIHJldHVybiBwYWdlUm93cztcbiAgfVxuXG4gIGdldEFsbENvbHVtbnMoKTogQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckNoZWNrYm94U2VsZWN0aW9uQ29sdW1uKHRoaXMuYXBpLmNvbHVtbnMuZ2V0QWxsQ29sdW1ucygpKTtcbiAgfVxuXG4gIGdldEFsbERpc3BsYXllZENvbHVtbnMoKTogQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckNoZWNrYm94U2VsZWN0aW9uQ29sdW1uKHRoaXMuYXBpLmNvbHVtbnMuZ2V0QWxsRGlzcGxheWVkQ29sdW1ucygpKTtcbiAgfVxuXG4gIGdldEFsbFBpdm90Q29sdW1ucygpOiBDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsQ29sdW1ucygpLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmlzUGl2b3RBY3RpdmUoKSk7XG4gIH1cblxuICBzZWxlY3RJc1NlbGVjdEFsbFJvd3NFbmFibGVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXJ2ZXJTaWRlUGFnaW5hdGlvbi5zZWxlY3RBbGxSb3dzRW5hYmxlZCk7XG4gIH1cblxuICBnZXRTZWNvbmRhcnlDb2x1bW4oY29sSWQ6IHN0cmluZyk6IENvbHVtbiB7XG4gICAgY29uc3Qgc2Vjb25kYXJ5Q29sdW1ucyA9IHRoaXMuYXBpLmNvbHVtbnMuZ2V0U2Vjb25kYXJ5Q29sdW1ucygpO1xuXG4gICAgcmV0dXJuIHNlY29uZGFyeUNvbHVtbnMgJiYgc2Vjb25kYXJ5Q29sdW1ucy5maW5kKGNvbCA9PiBjb2wuZ2V0Q29sSWQoKSA9PT0gY29sSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJDaGVja2JveFNlbGVjdGlvbkNvbHVtbihjb2x1bW5zOiBDb2x1bW5bXSk6IENvbHVtbltdIHtcbiAgICByZXR1cm4gY29sdW1ucy5maWx0ZXIoXG4gICAgICAoY29sdW1uOiBDb2x1bW4pID0+ICFjb2x1bW4uZ2V0VXNlclByb3ZpZGVkQ29sRGVmKCkgfHwgIWNvbHVtbi5nZXRVc2VyUHJvdmlkZWRDb2xEZWYoKS5jaGVja2JveFNlbGVjdGlvblxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1zdG9yZS9ncmlkLnF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQVUsTUFBTSxFQUFXLE1BQU0sbUJBQW1CLENBQUM7QUFHNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUV0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3pDO0lBQStCLDZCQUFxQjtJQTZDbEQsbUJBQXNCLEtBQWdCO1FBQXRDLFlBQ0Usa0JBQU0sS0FBSyxDQUFDLFNBQ2I7UUFGcUIsV0FBSyxHQUFMLEtBQUssQ0FBVztRQTFDdEMsV0FBVztRQUNYLGdCQUFVLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsZ0JBQVUsR0FBRyxLQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxLQUFLLEVBQUwsQ0FBSyxDQUFDLENBQUMsQ0FBQztRQUN6RSxXQUFXO1FBQ1gsdUJBQWlCLEdBQUcs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bGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFbXB0eSwgUXVlcnkgfSBmcm9tICdAZGF0b3JhbWEvYWtpdGEnO1xuaW1wb3J0IHsgR3JpZFN0b3JlIH0gZnJvbSAnLi9ncmlkLnN0b3JlJztcbmltcG9ydCB7IERhdG9HcmlkU2V0dGluZ3MsIEdyaWRTdG9yZVN0YXRlLCBTZXJ2ZXJTaWRlUGFnaW5hdGlvbkNvbmZpZyB9IGZyb20gJy4vZ3JpZC5zdG9yZS50eXBlcyc7XG5pbXBvcnQgeyBDb2x1bW4sIEV2ZW50cywgUm93Tm9kZSB9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IERhdG9HcmlkQXBpIH0gZnJvbSAnLi4vZ3JpZC1jb250cm9sbGVyL2dyaWQtY29udHJvbGxlci50eXBlcyc7XG5pbXBvcnQgeyBBZ0dyaWROZzIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgRGF0b0dyaWRBbGlnbm1lbnQsXG4gIERhdG9HcmlkRGF0YUNoYW5nZWRFdmVudCxcbiAgRGF0b0dyaWRPcHRpb25zLFxuICBEYXRvR3JpZFNvcnQsXG4gIEdyaWRSb3dzU2VsZWN0aW9uRGF0YVxufSBmcm9tICcuLi9ncmlkL2dyaWQtdjIudHlwZXMnO1xuaW1wb3J0IHsgRGF0b0dyaWRFeHRlcm5hbEZpbHRlciwgRGF0b0dyaWRGaWx0ZXJzTWFwIH0gZnJvbSAnLi4vZ3JpZC1maWx0ZXIvZ3JpZC1maWx0ZXIudHlwZXMnO1xuaW1wb3J0IHsgZ2V0Q29sRmllbGQsIGdldENvbHVtbnNTaXplcyB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBIYXNoTWFwIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgc2l6ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgdW5pcSB9IGZyb20gJy4uLy4uL3V0aWxzL2FycmF5JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdyaWRRdWVyeSBleHRlbmRzIFF1ZXJ5PEdyaWRTdG9yZVN0YXRlPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGFwaTogRGF0b0dyaWRBcGk7XG4gIGdyaWRSZWY6IEFnR3JpZE5nMjtcbiAgLy9AaW50ZXJuYWxcbiAgX2dyaWRSZWFkeSA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBncmlkUmVhZHkkID0gdGhpcy5fZ3JpZFJlYWR5LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZmlsdGVyKHJlYWR5ID0+IHJlYWR5KSk7XG4gIC8vQGludGVybmFsXG4gIF9zZXJ2ZXJEYXRhTG9hZGVkID0gbmV3IFN1YmplY3Q8RGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50PigpO1xuICBzZXJ2ZXJEYXRhTG9hZGVkJCA9IHRoaXMuX3NlcnZlckRhdGFMb2FkZWQuYXNPYnNlcnZhYmxlKCk7XG4gIHJvd0RhdGFDaGFuZ2VkJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy53YWl0Rm9yR3JpZCgoKSA9PlxuICAgIG1lcmdlKHRoaXMuZ3JpZFJlZi5yb3dEYXRhQ2hhbmdlZCwgdGhpcy5ncmlkUmVmLnJvd0RhdGFVcGRhdGVkLCB0aGlzLmdyaWRSZWYuZmlsdGVyQ2hhbmdlZCwgdGhpcy5zZXJ2ZXJEYXRhTG9hZGVkJClcbiAgKTtcbiAgc2VsZWN0ZWRSb3dzQ2hhbmdlJCA9IHRoaXMud2FpdEZvckdyaWQoKCkgPT5cbiAgICBmcm9tRXZlbnQodGhpcy5hcGkuZ3JpZCwgRXZlbnRzLkVWRU5UX1NFTEVDVElPTl9DSEFOR0VEKS5waXBlKG1hcCgoeyBhcGkgfSkgPT4gYXBpLmdldFNlbGVjdGVkUm93cygpKSlcbiAgKTtcblxuICByb3dzU2VsZWN0aW9uRGF0YSQ6IE9ic2VydmFibGU8R3JpZFJvd3NTZWxlY3Rpb25EYXRhPiA9IHRoaXMud2FpdEZvckdyaWQoKCkgPT4ge1xuICAgIHJldHVybiBtZXJnZShcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzQ2hhbmdlJCxcbiAgICAgIHRoaXMucm93RGF0YUNoYW5nZWQkLFxuICAgICAgdGhpcy5zZWxlY3RTZXJ2ZXJQYWdpbmF0aW9uQ29uZmlnKCksXG4gICAgICB0aGlzLndhaXRGb3JHcmlkKCgpID0+IG1lcmdlKHRoaXMuZ3JpZFJlZi5zb3J0Q2hhbmdlZCwgdGhpcy5ncmlkUmVmLnBhZ2luYXRpb25DaGFuZ2VkKSlcbiAgICApLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICBjb25zdCB0b3RhbFJvd3NDb3VudCA9IHRoaXMuaXNTZXJ2ZXJTaWRlXG4gICAgICAgICAgPyB0aGlzLnNlcnZlclNpZGVDb25maWcudG90YWxSb3dzXG4gICAgICAgICAgOiB0aGlzLmFwaS5ncmlkLmdldERpc3BsYXllZFJvd0NvdW50KCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUm93c0NvdW50ID0gdGhpcy5nZXRTZWxlY3RlZFJvd3NDb3VudCgpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlUm93cyA9IHRoaXMuZ2V0Q3VycmVudFBhZ2VSb3dzKCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUGFnZVJvd3NDb3VudCA9IHNpemUoY3VycmVudFBhZ2VSb3dzLmZpbHRlcigobm9kZTogUm93Tm9kZSkgPT4gbm9kZS5pc1NlbGVjdGVkKCkpKTtcbiAgICAgICAgY29uc3QgaXNBbGxQYWdlUm93c1NlbGVjdGVkID1cbiAgICAgICAgICAoc2VsZWN0ZWRQYWdlUm93c0NvdW50ID4gMCAmJiBzZWxlY3RlZFBhZ2VSb3dzQ291bnQgPT09IHNpemUoY3VycmVudFBhZ2VSb3dzKSkgfHxcbiAgICAgICAgICAodGhpcy5pc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkICYmIGlzRW1wdHkodGhpcy5zZXJ2ZXJTaWRlQ29uZmlnLmV4Y2x1ZGVkRnJvbVNlbGVjdEFsbCkpO1xuXG4gICAgICAgIHJldHVybiB7IHRvdGFsUm93c0NvdW50LCBzZWxlY3RlZFJvd3NDb3VudCwgc2VsZWN0ZWRQYWdlUm93c0NvdW50LCBpc0FsbFBhZ2VSb3dzU2VsZWN0ZWQgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfSk7XG5cbiAgZmlsdGVyQWN0aXZlJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnNldHRpbmdzKS5waXBlKFxuICAgIG1hcCgoeyBmaWx0ZXIsIHNlYXJjaFRlcm0gfTogRGF0b0dyaWRTZXR0aW5ncykgPT4gc2l6ZShmaWx0ZXIpID4gMCB8fCAhIXNlYXJjaFRlcm0pXG4gICk7XG4gIHNlcnZlclNpZGVFcnJvciQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXJ2ZXJTaWRlUGFnaW5hdGlvbi5oYXNFcnJvcik7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHN0b3JlOiBHcmlkU3RvcmUpIHtcbiAgICBzdXBlcihzdG9yZSk7XG4gIH1cblxuICBnZXQgc2VydmVyU2lkZUNvbmZpZygpOiBTZXJ2ZXJTaWRlUGFnaW5hdGlvbkNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXJ2ZXJTaWRlUGFnaW5hdGlvbjtcbiAgfVxuXG4gIGdldCBpc1NlcnZlclNpZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmVyU2lkZUNvbmZpZy5lbmFibGVkO1xuICB9XG5cbiAgZ2V0IGlzU2VydmVyU2VsZWN0QWxsUm93c0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmVyU2lkZUNvbmZpZy5zZWxlY3RBbGxSb3dzRW5hYmxlZDtcbiAgfVxuXG4gIGdldCBncmlkQWxpZ25tZW50KCk6IERhdG9HcmlkQWxpZ25tZW50IHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzLmdyaWRBbGlnbm1lbnQ7XG4gIH1cblxuICBnZXRDb2x1bW5TaXplcygpOiBIYXNoTWFwPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2V0dGluZ3MuY29sdW1uc1NpemVzO1xuICB9XG5cbiAgZ2V0Q3VycmVudEdyaWRTZXR0aW5ncygpOiBEYXRvR3JpZFNldHRpbmdzIHtcbiAgICBjb25zdCB0b0NvbElkID0gY29sdW1uID0+IGNvbHVtbi5nZXRDb2xJZCgpO1xuICAgIGNvbnN0IHsgY29sdW1ucyB9ID0gdGhpcy5hcGk7XG4gICAgY29uc3QgZ3JvdXBlZENvbHVtbnMgPSBjb2x1bW5zLmdldFJvd0dyb3VwQ29sdW1ucygpO1xuICAgIGNvbnN0IGNvbHVtbnNPcmRlciA9IGNvbHVtbnMuZ2V0QWxsQ29sdW1ucygpO1xuICAgIGNvbnN0IGFsbEdyaWRDb2x1bW5zID0gY29sdW1ucy5nZXRBbGxHcmlkQ29sdW1ucygpO1xuICAgIGNvbnN0IGhpZGRlbkNvbHVtbnMgPSBjb2x1bW5zT3JkZXJcbiAgICAgIC5maWx0ZXIoY29sdW1uID0+ICFjb2x1bW4uaXNWaXNpYmxlKCkgJiYgIWdyb3VwZWRDb2x1bW5zLmluY2x1ZGVzKGNvbHVtbikpXG4gICAgICAubWFwKHRvQ29sSWQpO1xuICAgIGNvbnN0IHN0b3JlU2V0dGluZ3MgPSB0aGlzLmdldFZhbHVlKCkuc2V0dGluZ3M7XG4gICAgY29uc3Qgc2V0dGluZ3M6IERhdG9HcmlkU2V0dGluZ3MgPSB7XG4gICAgICBncmlkQWxpZ25tZW50OiBzdG9yZVNldHRpbmdzLmdyaWRBbGlnbm1lbnQsXG4gICAgICBzb3J0OiB0aGlzLmdldFNvcnQoKSxcbiAgICAgIGhpZGRlbkNvbHVtbnMsXG4gICAgICBncm91cGVkQ29sdW1uczogZ3JvdXBlZENvbHVtbnMubWFwKHRvQ29sSWQpLFxuICAgICAgZmlsdGVyOiB0aGlzLmdldEZpbHRlcigpLFxuICAgICAgcGlubmVkQ29sdW1uczogY29sdW1ucy5nZXREaXNwbGF5ZWRMZWZ0Q29sdW1ucygpLm1hcCh0b0NvbElkKSxcbiAgICAgIGNvbHVtbnNPcmRlcjogYWxsR3JpZENvbHVtbnMubWFwKHRvQ29sSWQpLFxuICAgICAgY29sdW1uc1NpemVzOiBudWxsLFxuICAgICAgc2VhcmNoVGVybTogbnVsbFxuICAgIH07XG5cbiAgICBpZiAoc3RvcmVTZXR0aW5ncy5ncmlkQWxpZ25tZW50ID09PSBEYXRvR3JpZEFsaWdubWVudC5DVVNUT00pIHtcbiAgICAgIHNldHRpbmdzLmNvbHVtbnNTaXplcyA9IGdldENvbHVtbnNTaXplcyhhbGxHcmlkQ29sdW1ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldHRpbmdzO1xuICB9XG5cbiAgZ2V0U29ydCgpOiBEYXRvR3JpZFNvcnQge1xuICAgIGlmICh0aGlzLmdyaWRSZWYuZ3JpZE9wdGlvbnMucGl2b3RNb2RlKSB7XG4gICAgICBjb25zdCB7IHNvcnQsIGNvbElkIH0gPSAodGhpcy5hcGkuZ3JpZC5nZXRTb3J0TW9kZWwoKS5wb3AoKSBhcyBEYXRvR3JpZFNvcnQpIHx8IHt9O1xuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5hcGkuY29sdW1ucy5nZXRDb2x1bW4oY29sSWQpO1xuICAgICAgY29uc3QgcGl2b3RlZENvbHVtbiA9IHRoaXMuZ2V0U2Vjb25kYXJ5Q29sdW1uKGNvbElkKTtcblxuICAgICAgaWYgKHBpdm90ZWRDb2x1bW4pIHtcbiAgICAgICAgY29uc3QgdW5pcXVlUGl2b3RQYXJlbnRzID0gdW5pcSh0aGlzLmFwaS5jb2x1bW5zLmdldFNlY29uZGFyeUNvbHVtbnMoKS5tYXAoY29sdW1uID0+IGNvbHVtbi5nZXRQYXJlbnQoKSkpO1xuICAgICAgICBjb25zdCBzZWNvbmRhcnlDb2x1bW4gPSB0aGlzLmdldFNlY29uZGFyeUNvbHVtbihwaXZvdGVkQ29sdW1uLmdldENvbElkKCkpO1xuICAgICAgICBjb25zdCBwaXZvdENvbEluZGV4ID0gdW5pcXVlUGl2b3RQYXJlbnRzLmluZGV4T2Yoc2Vjb25kYXJ5Q29sdW1uLmdldFBhcmVudCgpKTtcblxuICAgICAgICByZXR1cm4geyBjb2xJZDogZ2V0Q29sRmllbGQocGl2b3RlZENvbHVtbi5nZXRDb2xEZWYoKSksIHNvcnQsIHBpdm90Q29sSW5kZXggfTtcbiAgICAgIH0gZWxzZSBpZiAoY29sdW1uKSB7XG4gICAgICAgIHJldHVybiB7IGNvbElkOiBnZXRDb2xGaWVsZChjb2x1bW4uZ2V0Q29sRGVmKCkpLCBzb3J0IH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmFwaS5ncmlkLmdldFNvcnRNb2RlbCgpLnBvcCgpIGFzIERhdG9HcmlkU29ydDtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RTb3J0KCk6IE9ic2VydmFibGU8RGF0b0dyaWRTb3J0PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnNldHRpbmdzLnNvcnQpO1xuICB9XG5cbiAgLyogQGludGVybmFsICovXG4gIF9zZXRBcGkoYXBpOiBEYXRvR3JpZEFwaSwgZ3JpZFJlZjogQWdHcmlkTmcyKSB7XG4gICAgdGhpcy5hcGkgPSBhcGk7XG4gICAgdGhpcy5ncmlkUmVmID0gZ3JpZFJlZjtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGp1c3QgdGhlIHJvd3MgZGF0YSAqL1xuICBnZXRTZWxlY3RlZFJvd3M8VD4oKTogVFtdO1xuICBnZXRTZWxlY3RlZFJvd3M8VD4ob25seUZpcnN0Um93OiB0cnVlKTogVCB8IHVuZGVmaW5lZDtcbiAgZ2V0U2VsZWN0ZWRSb3dzPFQ+KG9ubHlGaXJzdFJvdzogZmFsc2UpOiBUW107XG4gIGdldFNlbGVjdGVkUm93czxUPihvbmx5Rmlyc3RSb3c/OiBib29sZWFuKTogVFtdIHwgVCB7XG4gICAgY29uc3Qgcm93cyA9IHRoaXMuYXBpLmdyaWQuZ2V0U2VsZWN0ZWRSb3dzKCk7XG4gICAgcmV0dXJuIG9ubHlGaXJzdFJvdyA/IHJvd3NbMF0gOiByb3dzO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIGVudGlyZSByb3cgbm9kZSAqL1xuICBnZXRTZWxlY3RlZFJvd05vZGVzKCk6IFJvd05vZGVbXTtcbiAgZ2V0U2VsZWN0ZWRSb3dOb2Rlcyhvbmx5Rmlyc3RSb3c6IHRydWUpOiBSb3dOb2RlIHwgdW5kZWZpbmVkO1xuICBnZXRTZWxlY3RlZFJvd05vZGVzKG9ubHlGaXJzdFJvdzogZmFsc2UpOiBSb3dOb2RlW107XG4gIGdldFNlbGVjdGVkUm93Tm9kZXMob25seUZpcnN0Um93PzogYm9vbGVhbik6IFJvd05vZGVbXSB8IFJvd05vZGUge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmFwaS5ncmlkLmdldFNlbGVjdGVkTm9kZXMoKTtcbiAgICByZXR1cm4gb25seUZpcnN0Um93ID8gcm93c1swXSA6IHJvd3M7XG4gIH1cblxuICBnZXRGaWx0ZXIoKTogRGF0b0dyaWRGaWx0ZXJzTWFwIHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzLmZpbHRlcjtcbiAgfVxuXG4gIHNlbGVjdEZpbHRlcigpOiBPYnNlcnZhYmxlPERhdG9HcmlkRmlsdGVyc01hcD4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5ncy5maWx0ZXIpO1xuICB9XG5cbiAgZmlsdGVyQ2hhbmdlZCgpOiBPYnNlcnZhYmxlPERhdG9HcmlkRXh0ZXJuYWxGaWx0ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdEZpbHRlcigpLnBpcGUoXG4gICAgICBtYXAoZmlsdGVyID0+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGZpbHRlcikucmVkdWNlKChmaWx0ZXJzLCBmaWVsZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdG9GaWx0ZXIgPSBmaWx0ZXJbZmllbGRdO1xuXG4gICAgICAgICAgaWYgKGRhdG9GaWx0ZXIpIHtcbiAgICAgICAgICAgIGZpbHRlcnMucHVzaCh7IGZpZWxkLCBmaWx0ZXI6IGRhdG9GaWx0ZXIgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGZpbHRlcnM7XG4gICAgICAgIH0sIFtdKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldFNlYXJjaFRlcm0oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzLnNlYXJjaFRlcm07XG4gIH1cblxuICBzZWxlY3RTZWFyY2hUZXJtKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KChzdGF0ZTogR3JpZFN0b3JlU3RhdGUpID0+IHN0YXRlLnNldHRpbmdzLnNlYXJjaFRlcm0pO1xuICB9XG5cbiAgd2FpdEZvckdyaWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgd2FpdEZvckdyaWQ8VCA9IGFueT4oc291cmNlOiAoKSA9PiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPjtcbiAgd2FpdEZvckdyaWQ8VCA9IGFueT4oc291cmNlPzogKCkgPT4gT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gc291cmNlID8gdGhpcy5ncmlkUmVhZHkkLnBpcGUoc3dpdGNoTWFwKHNvdXJjZSkpIDogdGhpcy5ncmlkUmVhZHkkO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZ3JpZFJlYWR5LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc2VydmVyRGF0YUxvYWRlZC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0R3JpZE9wdGlvbnMoKTogRGF0b0dyaWRPcHRpb25zIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkUmVmID8gKHRoaXMuZ3JpZFJlZi5ncmlkT3B0aW9ucyBhcyBEYXRvR3JpZE9wdGlvbnMpIDogbnVsbDtcbiAgfVxuXG4gIHNlbGVjdFNlcnZlclBhZ2luYXRpb25Db25maWcoKTogT2JzZXJ2YWJsZTxTZXJ2ZXJTaWRlUGFnaW5hdGlvbkNvbmZpZz4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdCgoc3RhdGU6IEdyaWRTdG9yZVN0YXRlKSA9PiBzdGF0ZS5zZXJ2ZXJTaWRlUGFnaW5hdGlvbik7XG4gIH1cblxuICBnZXRTZWxlY3RlZFJvd3NDb3VudCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLmlzU2VydmVyU2VsZWN0QWxsUm93c0VuYWJsZWQpIHtcbiAgICAgIGNvbnN0IHsgdG90YWxSb3dzLCBleGNsdWRlZEZyb21TZWxlY3RBbGwgfSA9IHRoaXMuc2VydmVyU2lkZUNvbmZpZztcbiAgICAgIHJldHVybiB0b3RhbFJvd3MgLSBzaXplKGV4Y2x1ZGVkRnJvbVNlbGVjdEFsbCk7XG4gICAgfVxuICAgIHJldHVybiBzaXplKHRoaXMuZ2V0U2VsZWN0ZWRSb3dzKCkpO1xuICB9XG5cbiAgZ2V0Q3VycmVudFBhZ2VSb3dzKCk6IFJvd05vZGVbXSB7XG4gICAgY29uc3QgcGFnZVJvd3M6IFJvd05vZGVbXSA9IFtdO1xuICAgIGNvbnN0IHB1c2hQYWdlUm93ID0gKG5vZGU6IFJvd05vZGUpID0+IHtcbiAgICAgIHBhZ2VSb3dzLnB1c2gobm9kZSk7XG4gICAgfTtcbiAgICBjb25zdCBncmlkID0gdGhpcy5hcGkuZ3JpZDtcbiAgICBjb25zdCBwYWdlU2l6ZSA9IGdyaWQucGFnaW5hdGlvbkdldFBhZ2VTaXplKCk7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSBncmlkLnBhZ2luYXRpb25HZXRDdXJyZW50UGFnZSgpO1xuICAgIGNvbnN0IHRvdGFsUm93cyA9IGdyaWQucGFnaW5hdGlvbkdldFJvd0NvdW50KCk7XG4gICAgY29uc3QgZmlyc3RQYWdlSW5kZXggPSBjdXJyZW50UGFnZSAqIHBhZ2VTaXplO1xuICAgIGxldCBsYXN0UGFnZUluZGV4ID0gZmlyc3RQYWdlSW5kZXggKyBwYWdlU2l6ZTtcbiAgICBpZiAobGFzdFBhZ2VJbmRleCA+IHRvdGFsUm93cykge1xuICAgICAgbGFzdFBhZ2VJbmRleCA9IHRvdGFsUm93cztcbiAgICB9XG4gICAgY29uc3QgcGVyZm9ybUFjdGlvbiA9IChub2RlOiBSb3dOb2RlKSA9PiB7XG4gICAgICBpZiAobm9kZS5yb3dJbmRleCA8IGxhc3RQYWdlSW5kZXggJiYgbm9kZS5yb3dJbmRleCA+PSBmaXJzdFBhZ2VJbmRleCkge1xuICAgICAgICBwdXNoUGFnZVJvdyhub2RlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuaXNTZXJ2ZXJTaWRlID8gZ3JpZC5mb3JFYWNoTm9kZShwZXJmb3JtQWN0aW9uKSA6IGdyaWQuZm9yRWFjaE5vZGVBZnRlckZpbHRlckFuZFNvcnQocGVyZm9ybUFjdGlvbik7XG4gICAgcmV0dXJuIHBhZ2VSb3dzO1xuICB9XG5cbiAgZ2V0QWxsQ29sdW1ucygpOiBDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyQ2hlY2tib3hTZWxlY3Rpb25Db2x1bW4odGhpcy5hcGkuY29sdW1ucy5nZXRBbGxDb2x1bW5zKCkpO1xuICB9XG5cbiAgZ2V0QWxsRGlzcGxheWVkQ29sdW1ucygpOiBDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyQ2hlY2tib3hTZWxlY3Rpb25Db2x1bW4odGhpcy5hcGkuY29sdW1ucy5nZXRBbGxEaXNwbGF5ZWRDb2x1bW5zKCkpO1xuICB9XG5cbiAgZ2V0QWxsUGl2b3RDb2x1bW5zKCk6IENvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxDb2x1bW5zKCkuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uaXNQaXZvdEFjdGl2ZSgpKTtcbiAgfVxuXG4gIHNlbGVjdElzU2VsZWN0QWxsUm93c0VuYWJsZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnNlcnZlclNpZGVQYWdpbmF0aW9uLnNlbGVjdEFsbFJvd3NFbmFibGVkKTtcbiAgfVxuXG4gIGdldFNlY29uZGFyeUNvbHVtbihjb2xJZDogc3RyaW5nKTogQ29sdW1uIHtcbiAgICBjb25zdCBzZWNvbmRhcnlDb2x1bW5zID0gdGhpcy5hcGkuY29sdW1ucy5nZXRTZWNvbmRhcnlDb2x1bW5zKCk7XG5cbiAgICByZXR1cm4gc2Vjb25kYXJ5Q29sdW1ucyAmJiBzZWNvbmRhcnlDb2x1bW5zLmZpbmQoY29sID0+IGNvbC5nZXRDb2xJZCgpID09PSBjb2xJZCk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckNoZWNrYm94U2VsZWN0aW9uQ29sdW1uKGNvbHVtbnM6IENvbHVtbltdKTogQ29sdW1uW10ge1xuICAgIHJldHVybiBjb2x1bW5zLmZpbHRlcihcbiAgICAgIChjb2x1bW46IENvbHVtbikgPT4gIWNvbHVtbi5nZXRVc2VyUHJvdmlkZWRDb2xEZWYoKSB8fCAhY29sdW1uLmdldFVzZXJQcm92aWRlZENvbERlZigpLmNoZWNrYm94U2VsZWN0aW9uXG4gICAgKTtcbiAgfVxufVxuIl19
|