@fundamental-ngx/platform 0.43.0-rc.7 → 0.43.0-rc.8
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/esm2020/table-helpers/services/table.service.mjs +2 -1
- package/fesm2015/fundamental-ngx-platform-table-helpers.mjs +1 -0
- package/fesm2015/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-platform-table-helpers.mjs +1 -0
- package/fesm2020/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
- package/fundamental-ngx-platform-v0.43.0-rc.8.tgz +0 -0
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/fundamental-ngx-platform-v0.43.0-rc.7.tgz +0 -0
|
@@ -102,6 +102,7 @@ export class TableService {
|
|
|
102
102
|
const state = { ...prevState, sortBy: newSortRules };
|
|
103
103
|
if (!equal(prevSortRules, state.sortBy)) {
|
|
104
104
|
this.setTableState(setCurrentPageToState(state, 1));
|
|
105
|
+
this.buildSortRulesMap();
|
|
105
106
|
const evt = { current: state.sortBy, previous: prevSortRules };
|
|
106
107
|
this.needFetch$.next();
|
|
107
108
|
this.stateChange$.next({ type: 'sort', state: evt });
|
|
@@ -331,4 +332,4 @@ function setCurrentPageToState(state, currentPage) {
|
|
|
331
332
|
const newPageState = { ...state.page, currentPage };
|
|
332
333
|
return { ...state, page: newPageState };
|
|
333
334
|
}
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi90YWJsZS1oZWxwZXJzL3NlcnZpY2VzL3RhYmxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEtBQUssTUFBTSxpQkFBaUIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQWdDbkQsTUFBTSxPQUFPLFlBQVk7SUFEekI7UUFFSSwwQkFBMEI7UUFDakIsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hFLGNBQWM7UUFDTCwyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUNsRSxjQUFjO1FBQ0wsb0NBQStCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDL0UsY0FBYztRQUNMLDhCQUF5QixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLGNBQWM7UUFDTCxzQ0FBaUMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRSw4QkFBOEI7UUFDckIsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFDbEUsOEJBQThCO1FBQzlCLHlCQUFvQixHQUFHLENBQUMsQ0FBQztRQUN6Qiw4QkFBOEI7UUFDckIsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFDbEUsOEJBQThCO1FBQzlCLDBCQUFxQixHQUFHLENB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QUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQzs7eUdBN1hRLFlBQVk7NkdBQVosWUFBWTsyRkFBWixZQUFZO2tCQUR4QixVQUFVOztBQWlZWCxTQUFTLHFCQUFxQixDQUFDLEtBQWlCLEVBQUUsV0FBbUI7SUFDakUsTUFBTSxZQUFZLEdBQW1CLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3BFLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBERUZBVUxUX1RBQkxFX1NUQVRFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuaW1wb3J0IHsgQ29sbGVjdGlvbkZpbHRlciwgQ29sbGVjdGlvbkdyb3VwLCBDb2xsZWN0aW9uUGFnZSwgQ29sbGVjdGlvblNvcnQsIFRhYmxlU3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgQ29sdW1uc0NoYW5nZSxcbiAgICBGaWx0ZXJDaGFuZ2UsXG4gICAgRnJlZXplQ2hhbmdlLFxuICAgIEdyb3VwQ2hhbmdlLFxuICAgIFBhZ2VDaGFuZ2UsXG4gICAgU2VhcmNoQ2hhbmdlLFxuICAgIFNvcnRDaGFuZ2Vcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vdGFibGUtY29sdW1uJztcblxuZXhwb3J0IHR5cGUgVGFibGVTdGF0ZUNoYW5nZSA9XG4gICAgfCBUYWJsZVN0YXRlUHJvcGVydHk8J3NvcnQnLCBTb3J0Q2hhbmdlPlxuICAgIHwgVGFibGVTdGF0ZVByb3BlcnR5PCdwYWdlJywgUGFnZUNoYW5nZT5cbiAgICB8IFRhYmxlU3RhdGVQcm9wZXJ0eTwnZmlsdGVyJywgRmlsdGVyQ2hhbmdlPlxuICAgIHwgVGFibGVTdGF0ZVByb3BlcnR5PCdncm91cCcsIEdyb3VwQ2hhbmdlPlxuICAgIHwgVGFibGVTdGF0ZVByb3BlcnR5PCdmcmVlemUnLCBGcmVlemVDaGFuZ2U+XG4gICAgfCBUYWJsZVN0YXRlUHJvcGVydHk8J2NvbHVtbnMnLCBDb2x1bW5zQ2hhbmdlPlxuICAgIHwgVGFibGVTdGF0ZVByb3BlcnR5PCdzZWFyY2gnLCBTZWFyY2hDaGFuZ2U+O1xuXG5leHBvcnQgdHlwZSBUYWJsZVN0YXRlUHJvcGVydHk8XG4gICAgVCA9ICdzb3J0JyB8ICdwYWdlJyB8ICdmaWx0ZXInIHwgJ2dyb3VwJyB8ICdmcmVlemUnIHwgJ2NvbHVtbnMnIHwgJ3NlYXJjaCcsXG4gICAgUCA9IFNvcnRDaGFuZ2UgfCBQYWdlQ2hhbmdlIHwgRmlsdGVyQ2hhbmdlIHwgR3JvdXBDaGFuZ2UgfCBGcmVlemVDaGFuZ2UgfCBDb2x1bW5zQ2hhbmdlXG4+ID0ge1xuICAgIHR5cGU6IFQ7XG4gICAgc3RhdGU6IFA7XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGFibGVTZXJ2aWNlIHtcbiAgICAvKiogVGFibGUgc3RhdGUgc3RyZWFtLiAqL1xuICAgIHJlYWRvbmx5IHRhYmxlU3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdChERUZBVUxUX1RBQkxFX1NUQVRFKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9zZW1hbnRpY0hpZ2hsaWdodGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2lzRmlsdGVyaW5nRnJvbUhlYWRlckRpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2lzU2hvd25OYXZpZ2F0aW9uQ29sdW1uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3NlbWFudGljSGlnaGxpZ2h0aW5nQ29sdW1uV2lkdGgkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgwKTtcbiAgICAvKiogVmlzaWJsZSBjb2x1bW5zIHN0cmVhbS4gKi9cbiAgICByZWFkb25seSB2aXNpYmxlQ29sdW1ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhYmxlQ29sdW1uW10+KFtdKTtcbiAgICAvKiogVmlzaWJsZSBjb2x1bW5zIGxlbmd0aC4gKi9cbiAgICB2aXNpYmxlQ29sdW1uc0xlbmd0aCA9IDA7XG4gICAgLyoqIFBvcHBpbmcgY29sdW1ucyBzdHJlYW0uICovXG4gICAgcmVhZG9ubHkgcG9wcGluZ0NvbHVtbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZUNvbHVtbltdPihbXSk7XG4gICAgLyoqIFBvcHBpbmcgY29sdW1ucyBsZW5ndGguICovXG4gICAgX3BvcHBpbmdDb2x1bW5zTGVuZ3RoID0gMDtcbiAgICAvKiogVGFibGUgY29sdW1ucyBzdHJlYW0uICovXG4gICAgcmVhZG9ubHkgdGFibGVDb2x1bW5zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFibGVDb2x1bW5bXT4oW10pO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgdGFibGVTdGF0ZUNoYW5nZXMkID0gdGhpcy50YWJsZVN0YXRlJC5waXBlKHNraXAoMSkpO1xuICAgIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIHNlYXJjaCBzdGF0ZSBjaGFuZ2VzLiAqL1xuICAgIHJlYWRvbmx5IHNlYXJjaENoYW5nZSQgPSBuZXcgU3ViamVjdDxTZWFyY2hDaGFuZ2U+KCk7XG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gc29ydCBzdGF0ZSBjaGFuZ2VzLiAqL1xuICAgIHJlYWRvbmx5IHNvcnRDaGFuZ2UkID0gbmV3IFN1YmplY3Q8U29ydENoYW5nZT4oKTtcbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiBmaWx0ZXIgc3RhdGUgY2hhbmdlcy4gKi9cbiAgICByZWFkb25seSBmaWx0ZXJDaGFuZ2UkID0gbmV3IFN1YmplY3Q8RmlsdGVyQ2hhbmdlPigpO1xuICAgIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIGdyb3VwIHN0YXRlIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgZ3JvdXBDaGFuZ2UkID0gbmV3IFN1YmplY3Q8R3JvdXBDaGFuZ2U+KCk7XG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gZnJlZXplIHN0YXRlIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgZnJlZXplQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PEZyZWV6ZUNoYW5nZT4oKTtcbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiBjb2x1bW5zIHN0YXRlIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgY29sdW1uc0NoYW5nZSQgPSBuZXcgU3ViamVjdDxDb2x1bW5zQ2hhbmdlPigpO1xuICAgIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIHBhZ2Ugc3RhdGUgY2hhbmdlcy4gKi9cbiAgICByZWFkb25seSBwYWdlQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PFBhZ2VDaGFuZ2U+KCk7XG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gbmV3IGZldGNoIG9mIGRhdGEgaXMgbmVlZGVkLiAqL1xuICAgIHJlYWRvbmx5IG5lZWRGZXRjaCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgc3RhdGVDaGFuZ2UkID0gbmV3IFN1YmplY3Q8VGFibGVTdGF0ZUNoYW5nZT4oKTtcbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiBsb2FkaW5nIHN0YXRlIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgdGFibGVMb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIC8qKiBMaXN0ZW4gZm9yIHNvZnQgY2hhbmdlcyBpbiB0YWJsZSBzdWJjb21wb25lbnRzIChtb3N0bHkgdGFibGUgY29sdW1uKSAqL1xuICAgIHJlYWRvbmx5IG1hcmtGb3JDaGVjayQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKiBMaXN0ZW4gZm9yIGltbWVkaWF0ZSBjaGFuZ2VzIGluIHRhYmxlIHN1YmNvbXBvbmVudHMgKG1vc3RseSB0YWJsZSBjb2x1bW4pICovXG4gICAgcmVhZG9ubHkgZGV0ZWN0Q2hhbmdlcyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKiBTb3J0IHJ1bGVzIHN0cmVhbS4gKi9cbiAgICByZWFkb25seSBzb3J0UnVsZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXA8c3RyaW5nLCBDb2xsZWN0aW9uU29ydD4+KG5ldyBNYXAoKSk7XG4gICAgLyoqXG4gICAgICogRmlsdGVyIFJ1bGVzIE1hcCBzdHJlYW0uIFdoZXJlIGtleSBpcyBjb2x1bW4ga2V5LCBhbmQgdmFsdWUgaXMgdGhlIGFzc29jaWF0ZWQgZmlsdGVyIHJ1bGVzLlxuICAgICAqIE1hbnkgZmlsdGVycyBjYW4gYmUgYXBwbGllZCB0byBvbmUgY29sdW1uLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGZpbHRlclJ1bGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwPHN0cmluZywgQ29sbGVjdGlvbkZpbHRlcltdPj4obmV3IE1hcCgpKTtcblxuICAgIC8qKlxuICAgICAqIEdyb3VwIFJ1bGVzIE1hcCBzdHJlYW0uIFdoZXJlIGtleSBpcyBjb2x1bW4ga2V5IGFuZCB2YWx1ZSBpcyBhc3NvY2lhdGVkIGdyb3VwIHJ1bGVcbiAgICAgKi9cbiAgICByZWFkb25seSBncm91cFJ1bGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwPHN0cmluZywgQ29sbGVjdGlvbkdyb3VwPj4obmV3IE1hcCgpKTtcblxuICAgIC8qKiBHZXQgY3VycmVudCBzdGF0ZS9zZXR0aW5ncyBvZiB0aGUgVGFibGUuICovXG4gICAgZ2V0VGFibGVTdGF0ZSgpOiBUYWJsZVN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVTdGF0ZSQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogU2V0IGN1cnJlbnQgc3RhdGUvc2V0dGluZ3Mgb2YgdGhlIFRhYmxlLiAqL1xuICAgIHNldFRhYmxlU3RhdGUoc3RhdGU6IFRhYmxlU3RhdGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJsZVN0YXRlJC5uZXh0KHN0YXRlKTtcbiAgICB9XG5cbiAgICAvKiogU2V0IGN1cnJlbnQgbG9hZGluZyBzdGF0ZSBvZiB0aGUgVGFibGUuICovXG4gICAgc2V0VGFibGVMb2FkaW5nKGlzTG9hZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYmxlTG9hZGluZyQubmV4dChpc0xvYWRpbmcpO1xuICAgIH1cblxuICAgIC8qKiBOb3RpZnkgYWJvdXQgY2hhbmdlcyBpbiB0YWJsZSBzdWJjb21wb25lbnRzIChtb3N0bHkgdGFibGUgY29sdW1uKSBhbmQgZGV0ZWN0IHRoZW0gb24gbmV4dCBkZXRlY3RvciBjaGVjay4gKi9cbiAgICBtYXJrRm9yQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFya0ZvckNoZWNrJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIE5vdGlmeSBhYm91dCBjaGFuZ2VzIGluIHRhYmxlIHN1YmNvbXBvbmVudHMgKG1vc3RseSB0YWJsZSBjb2x1bW4pIGFuZCBkZXRlY3QgdGhlbSBpbW1lZGlhdGVseS4gKi9cbiAgICBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRldGVjdENoYW5nZXMkLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogU2VhcmNoICovXG4gICAgc2VhcmNoKHNlYXJjaElucHV0OiBTZWFyY2hJbnB1dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcblxuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBzZWFyY2hJbnB1dCB9O1xuXG4gICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZShzZXRDdXJyZW50UGFnZVRvU3RhdGUoc3RhdGUsIDEpKTtcblxuICAgICAgICBjb25zdCBldnQgPSB7IGN1cnJlbnQ6IHNlYXJjaElucHV0LCBwcmV2aW91czogcHJldlN0YXRlLnNlYXJjaElucHV0IH07XG5cbiAgICAgICAgdGhpcy5uZWVkRmV0Y2gkLm5leHQoKTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdzZWFyY2gnLCBzdGF0ZTogZXZ0IH0pO1xuICAgICAgICB0aGlzLnNlYXJjaENoYW5nZSQubmV4dChldnQpO1xuICAgIH1cblxuICAgIC8qKiBTZXQgbmV3IHNvcnQgcnVsZXMgKi9cbiAgICBzZXRTb3J0KHNvcnRSdWxlczogQ29sbGVjdGlvblNvcnRbXSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldlNvcnRSdWxlcyA9IChwcmV2U3RhdGUgJiYgcHJldlN0YXRlLnNvcnRCeSkgfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3U29ydFJ1bGVzOiBDb2xsZWN0aW9uU29ydFtdID0gc29ydFJ1bGVzID8gWy4uLnNvcnRSdWxlc10gOiBbXTtcblxuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBzb3J0Qnk6IG5ld1NvcnRSdWxlcyB9O1xuXG4gICAgICAgIGlmICghZXF1YWwocHJldlNvcnRSdWxlcywgc3RhdGUuc29ydEJ5KSkge1xuICAgICAgICAgICAgdGhpcy5zZXRUYWJsZVN0YXRlKHNldEN1cnJlbnRQYWdlVG9TdGF0ZShzdGF0ZSwgMSkpO1xuICAgICAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5zb3J0QnksIHByZXZpb3VzOiBwcmV2U29ydFJ1bGVzIH07XG5cbiAgICAgICAgICAgIHRoaXMubmVlZEZldGNoJC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlJC5uZXh0KHsgdHlwZTogJ3NvcnQnLCBzdGF0ZTogZXZ0IH0pO1xuICAgICAgICAgICAgdGhpcy5zb3J0Q2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQWRkIHNvcnQgcnVsZXMgdG8gdGhlIGV4aXN0aW5nIG9uZXMgKi9cbiAgICBhZGRTb3J0KHNvcnRSdWxlczogQ29sbGVjdGlvblNvcnRbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldlNvcnRSdWxlcyA9IChwcmV2U3RhdGUgJiYgcHJldlN0YXRlLnNvcnRCeSkgfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3U29ydFJ1bGVzOiBDb2xsZWN0aW9uU29ydFtdID0gW1xuICAgICAgICAgICAgLi4ucHJldlNvcnRSdWxlcy5maWx0ZXIoKGV4aXN0aW5nKSA9PiAhc29ydFJ1bGVzLmZpbmQoKHsgZmllbGQgfSkgPT4gZmllbGQgPT09IGV4aXN0aW5nLmZpZWxkKSksXG4gICAgICAgICAgICAuLi5zb3J0UnVsZXNcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBzb3J0Qnk6IG5ld1NvcnRSdWxlcyB9O1xuXG4gICAgICAgIGlmICghZXF1YWwocHJldlNvcnRSdWxlcywgc3RhdGUuc29ydEJ5KSkge1xuICAgICAgICAgICAgdGhpcy5zZXRUYWJsZVN0YXRlKHNldEN1cnJlbnRQYWdlVG9TdGF0ZShzdGF0ZSwgMSkpO1xuICAgICAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5zb3J0QnksIHByZXZpb3VzOiBwcmV2U29ydFJ1bGVzIH07XG4gICAgICAgICAgICB0aGlzLmJ1aWxkU29ydFJ1bGVzTWFwKCk7XG5cbiAgICAgICAgICAgIHRoaXMubmVlZEZldGNoJC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlJC5uZXh0KHsgdHlwZTogJ3NvcnQnLCBzdGF0ZTogZXZ0IH0pO1xuICAgICAgICAgICAgdGhpcy5zb3J0Q2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogU2V0IG5ldyBzb3J0IHJ1bGVzICovXG4gICAgc2V0RmlsdGVycyhmaWx0ZXJSdWxlczogQ29sbGVjdGlvbkZpbHRlcltdIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMuZ2V0VGFibGVTdGF0ZSgpO1xuICAgICAgICBjb25zdCBwcmV2RmlsdGVyUnVsZXMgPSAocHJldlN0YXRlICYmIHByZXZTdGF0ZS5maWx0ZXJCeSkgfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3RmlsdGVyUnVsZXM6IENvbGxlY3Rpb25GaWx0ZXJbXSA9IGZpbHRlclJ1bGVzID8gWy4uLmZpbHRlclJ1bGVzXSA6IFtdO1xuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBmaWx0ZXJCeTogbmV3RmlsdGVyUnVsZXMgfTtcblxuICAgICAgICBpZiAoIWVxdWFsKHByZXZGaWx0ZXJSdWxlcywgc3RhdGUuZmlsdGVyQnkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc2V0Q3VycmVudFBhZ2VUb1N0YXRlKHN0YXRlLCAxKSk7XG4gICAgICAgICAgICBjb25zdCBldnQgPSB7IGN1cnJlbnQ6IHN0YXRlLmZpbHRlckJ5LCBwcmV2aW91czogcHJldkZpbHRlclJ1bGVzIH07XG5cbiAgICAgICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJSdWxlc01hcCgpO1xuICAgICAgICAgICAgdGhpcy5uZWVkRmV0Y2gkLm5leHQoKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UkLm5leHQoeyB0eXBlOiAnZmlsdGVyJywgc3RhdGU6IGV2dCB9KTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQWRkIGZpbHRlciBydWxlcyB0byB0aGUgZXhpc3Rpbmcgb25lcyAqL1xuICAgIGFkZEZpbHRlcnMocnVsZXNUb0FkZDogQ29sbGVjdGlvbkZpbHRlcltdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMuZ2V0VGFibGVTdGF0ZSgpO1xuICAgICAgICBjb25zdCBwcmV2RmlsdGVyUnVsZXMgPSAocHJldlN0YXRlICYmIHByZXZTdGF0ZS5maWx0ZXJCeSkgfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3RmlsdGVyUnVsZXM6IENvbGxlY3Rpb25GaWx0ZXJbXSA9IFtcbiAgICAgICAgICAgIC4uLnByZXZGaWx0ZXJSdWxlcy5maWx0ZXIoKGV4aXN0aW5nKSA9PiAhcnVsZXNUb0FkZC5maW5kKCh7IGZpZWxkIH0pID0+IGZpZWxkID09PSBleGlzdGluZy5maWVsZCkpLFxuICAgICAgICAgICAgLi4ucnVsZXNUb0FkZFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHN0YXRlOiBUYWJsZVN0YXRlID0geyAuLi5wcmV2U3RhdGUsIGZpbHRlckJ5OiBuZXdGaWx0ZXJSdWxlcyB9O1xuXG4gICAgICAgIGlmICghZXF1YWwocHJldkZpbHRlclJ1bGVzLCBzdGF0ZS5maWx0ZXJCeSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZShzZXRDdXJyZW50UGFnZVRvU3RhdGUoc3RhdGUsIDEpKTtcbiAgICAgICAgICAgIGNvbnN0IGV2dCA9IHsgY3VycmVudDogc3RhdGUuZmlsdGVyQnksIHByZXZpb3VzOiBwcmV2RmlsdGVyUnVsZXMgfTtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJSdWxlc01hcCgpO1xuXG4gICAgICAgICAgICB0aGlzLm5lZWRGZXRjaCQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdmaWx0ZXInLCBzdGF0ZTogZXZ0IH0pO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UkLm5leHQoZXZ0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZW1vdmVzIGZpbHRlcnMgZm9yIHRoZSBwcm92aWRlZCBmaWVsZHMgKi9cbiAgICByZW1vdmVGaWx0ZXJzKGZpZWxkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHByZXZGaWx0ZXJSdWxlcyA9IChwcmV2U3RhdGUgJiYgcHJldlN0YXRlLmZpbHRlckJ5KSB8fCBbXTtcblxuICAgICAgICBjb25zdCBuZXdGaWx0ZXJSdWxlczogQ29sbGVjdGlvbkZpbHRlcltdID0gcHJldkZpbHRlclJ1bGVzLmZpbHRlcihcbiAgICAgICAgICAgIChleGlzdGluZykgPT4gIWZpZWxkcy5pbmNsdWRlcyhleGlzdGluZy5maWVsZClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBmaWx0ZXJCeTogbmV3RmlsdGVyUnVsZXMgfTtcblxuICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc2V0Q3VycmVudFBhZ2VUb1N0YXRlKHN0YXRlLCAxKSk7XG4gICAgICAgIGNvbnN0IGV2dCA9IHsgY3VycmVudDogc3RhdGUuZmlsdGVyQnksIHByZXZpb3VzOiBwcmV2RmlsdGVyUnVsZXMgfTtcbiAgICAgICAgdGhpcy5idWlsZEZpbHRlclJ1bGVzTWFwKCk7XG5cbiAgICAgICAgdGhpcy5uZWVkRmV0Y2gkLm5leHQoKTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdmaWx0ZXInLCBzdGF0ZTogZXZ0IH0pO1xuICAgICAgICB0aGlzLmZpbHRlckNoYW5nZSQubmV4dChldnQpO1xuICAgIH1cblxuICAgIC8qKiBTZXQgZ3JvdXAgcnVsZXMgKi9cbiAgICBzZXRHcm91cHMoZ3JvdXBzOiBDb2xsZWN0aW9uR3JvdXBbXSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldkdyb3VwcyA9IChwcmV2U3RhdGUgJiYgcHJldlN0YXRlLmdyb3VwQnkpIHx8IFtdO1xuXG4gICAgICAgIGNvbnN0IG5ld0dyb3VwczogQ29sbGVjdGlvbkdyb3VwW10gPSBncm91cHMgPyBbLi4uZ3JvdXBzXSA6IFtdO1xuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBncm91cEJ5OiBuZXdHcm91cHMgfTtcblxuICAgICAgICBpZiAoIWVxdWFsKHByZXZHcm91cHMsIHN0YXRlLmdyb3VwQnkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc3RhdGUpO1xuICAgICAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5ncm91cEJ5LCBwcmV2aW91czogcHJldkdyb3VwcyB9O1xuICAgICAgICAgICAgdGhpcy5idWlsZEdyb3VwUnVsZXNNYXAoKTtcblxuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdncm91cCcsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgICAgICB0aGlzLmdyb3VwQ2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQWRkIGdyb3VwIHJ1bGVzIHRvIHRoZSBleGlzdGluZyBvbmVzICovXG4gICAgYWRkR3JvdXBzKGdyb3Vwc1RvQWRkOiBDb2xsZWN0aW9uR3JvdXBbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldkdyb3VwcyA9IChwcmV2U3RhdGUgJiYgcHJldlN0YXRlLmdyb3VwQnkpIHx8IFtdO1xuXG4gICAgICAgIGNvbnN0IG5ld0dyb3VwczogQ29sbGVjdGlvbkdyb3VwW10gPSBbXG4gICAgICAgICAgICAuLi5wcmV2R3JvdXBzLmZpbHRlcigoZXhpc3RpbmcpID0+ICFncm91cHNUb0FkZC5maW5kKCh7IGZpZWxkIH0pID0+IGZpZWxkID09PSBleGlzdGluZy5maWVsZCkpLFxuICAgICAgICAgICAgLi4uZ3JvdXBzVG9BZGRcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBncm91cEJ5OiBuZXdHcm91cHMgfTtcblxuICAgICAgICBpZiAoIWVxdWFsKHByZXZHcm91cHMsIHN0YXRlLmdyb3VwQnkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc3RhdGUpO1xuICAgICAgICAgICAgdGhpcy5idWlsZEdyb3VwUnVsZXNNYXAoKTtcblxuICAgICAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5ncm91cEJ5LCBwcmV2aW91czogcHJldkdyb3VwcyB9O1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdncm91cCcsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgICAgICB0aGlzLmdyb3VwQ2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRnJlZXplIHRhYmxlIHRvIGNvbHVtbiAqL1xuICAgIGZyZWV6ZVRvKGNvbHVtbk5hbWU6IHN0cmluZyB8IG51bGwsIGVuZD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG5cbiAgICAgICAgaWYgKCFlbmQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZSh7IC4uLnByZXZTdGF0ZSwgZnJlZXplVG9Db2x1bW46IGNvbHVtbk5hbWUgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoeyAuLi5wcmV2U3RhdGUsIGZyZWV6ZVRvRW5kQ29sdW1uOiBjb2x1bW5OYW1lIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXZ0ID0ge1xuICAgICAgICAgICAgY3VycmVudDogY29sdW1uTmFtZSxcbiAgICAgICAgICAgIHByZXZpb3VzOiBlbmQgPyBwcmV2U3RhdGUuZnJlZXplVG9FbmRDb2x1bW4gOiBwcmV2U3RhdGUuZnJlZXplVG9Db2x1bW5cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlJC5uZXh0KHsgdHlwZTogJ2ZyZWV6ZScsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgIHRoaXMuZnJlZXplQ2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgfVxuXG4gICAgLyoqIFNldCB0YWJsZSBjb2x1bW5zICovXG4gICAgc2V0Q29sdW1ucyhjb2x1bW5zOiBzdHJpbmdbXSwga2V5czogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHByZXZDb2x1bW5zID0gKHByZXZTdGF0ZSAmJiBwcmV2U3RhdGUuY29sdW1ucykgfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3Q29sdW1ucyA9IFsuLi5jb2x1bW5zXTtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uS2V5cyA9IFsuLi5rZXlzXTtcbiAgICAgICAgY29uc3Qgc3RhdGU6IFRhYmxlU3RhdGUgPSB7IC4uLnByZXZTdGF0ZSwgY29sdW1uczogbmV3Q29sdW1ucywgY29sdW1uS2V5czogbmV3Q29sdW1uS2V5cyB9O1xuXG4gICAgICAgIGlmICghZXF1YWwocHJldkNvbHVtbnMsIHN0YXRlLmNvbHVtbnMpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc3RhdGUpO1xuXG4gICAgICAgICAgICBjb25zdCBldnQgPSB7IGN1cnJlbnQ6IHN0YXRlLmNvbHVtbnMsIHByZXZpb3VzOiBwcmV2Q29sdW1ucyB9O1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdjb2x1bW5zJywgc3RhdGU6IGV2dCB9KTtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc0NoYW5nZSQubmV4dChldnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFNldCBwYWdlICovXG4gICAgc2V0Q3VycmVudFBhZ2UoY3VycmVudFBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldlBhZ2VTdGF0ZSA9IHByZXZTdGF0ZS5wYWdlO1xuXG4gICAgICAgIGlmIChwcmV2UGFnZVN0YXRlLmN1cnJlbnRQYWdlID09PSBjdXJyZW50UGFnZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RhdGU6IFRhYmxlU3RhdGUgPSBzZXRDdXJyZW50UGFnZVRvU3RhdGUocHJldlN0YXRlLCBjdXJyZW50UGFnZSk7XG5cbiAgICAgICAgdGhpcy5zZXRUYWJsZVN0YXRlKHN0YXRlKTtcbiAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5wYWdlLCBwcmV2aW91czogcHJldlBhZ2VTdGF0ZSB9O1xuXG4gICAgICAgIHRoaXMubmVlZEZldGNoJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UkLm5leHQoeyB0eXBlOiAncGFnZScsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgIHRoaXMucGFnZUNoYW5nZSQubmV4dChldnQpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIGRlZmF1bHQgdGFibGUgc3RhdGUuICovXG4gICAgZ2V0RGVmYXVsdFN0YXRlKCk6IFRhYmxlU3RhdGUge1xuICAgICAgICBjb25zdCB0YWJsZVN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2x1bW5LZXlzOiB0YWJsZVN0YXRlLmNvbHVtbktleXMsXG4gICAgICAgICAgICBzb3J0Qnk6IFtdLFxuICAgICAgICAgICAgZmlsdGVyQnk6IFtdLFxuICAgICAgICAgICAgZ3JvdXBCeTogW10sXG4gICAgICAgICAgICBjb2x1bW5zOiB0YWJsZVN0YXRlLmNvbHVtbnMsXG4gICAgICAgICAgICBzZWFyY2hJbnB1dDoge1xuICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBudWxsLFxuICAgICAgICAgICAgICAgIHRleHQ6ICcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnJlZXplVG9Db2x1bW46IG51bGwsXG4gICAgICAgICAgICBmcmVlemVUb0VuZENvbHVtbjogbnVsbCxcbiAgICAgICAgICAgIHBhZ2U6IHtcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogMCxcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogMVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNoYXJlcyB2aXNpYmxlIGNvbHVtbnMgYXJyYXkgYWNyb3NzIGxpc3RlbmVycy5cbiAgICAgKiBAcGFyYW0gY29sdW1ucyBWaXNpYmxlIGNvbHVtbnMgdG8gc2hhcmUuXG4gICAgICovXG4gICAgc2V0VmlzaWJsZUNvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpc2libGVDb2x1bW5zJC5uZXh0KGNvbHVtbnMpO1xuICAgICAgICB0aGlzLnZpc2libGVDb2x1bW5zTGVuZ3RoID0gY29sdW1ucy5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hhcmVzIHBvcHBpbmcgY29sdW1ucyBhcnJheSBhY3Jvc3MgbGlzdGVuZXJzLlxuICAgICAqIEBwYXJhbSBjb2x1bW5zIFBvcHBpbmcgY29sdW1ucyB0byBzaGFyZS5cbiAgICAgKi9cbiAgICBzZXRQb3BwaW5nQ29sdW1ucyhjb2x1bW5zOiBUYWJsZUNvbHVtbltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMucG9wcGluZ0NvbHVtbnMkLm5leHQoY29sdW1ucyk7XG4gICAgICAgIHRoaXMuX3BvcHBpbmdDb2x1bW5zTGVuZ3RoID0gY29sdW1ucy5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBncm91cGluZyBydWxlcyBiYXNlZCBvbiB0aGUgdGFibGUgc3RhdGUuXG4gICAgICogQHBhcmFtIHN0YXRlIFRhYmxlIHN0YXRlLlxuICAgICAqL1xuICAgIGJ1aWxkR3JvdXBSdWxlc01hcChzdGF0ZSA9IHRoaXMuZ2V0VGFibGVTdGF0ZSgpKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGdyb3VwTWFwID0gbmV3IE1hcChzdGF0ZS5ncm91cEJ5Lm1hcCgocnVsZSkgPT4gW3J1bGUuZmllbGQsIHJ1bGVdKSk7XG4gICAgICAgIHRoaXMuZ3JvdXBSdWxlcyQubmV4dChncm91cE1hcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBzb3J0aW5nIHJ1bGVzIGJhc2VkIG9uIHRoZSB0YWJsZSBzdGF0ZS5cbiAgICAgKiBAcGFyYW0gc3RhdGUgVGFibGUgc3RhdGVcbiAgICAgKi9cbiAgICBidWlsZFNvcnRSdWxlc01hcChzdGF0ZSA9IHRoaXMuZ2V0VGFibGVTdGF0ZSgpKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc29ydFJ1bGVzJC5uZXh0KG5ldyBNYXAoc3RhdGUuc29ydEJ5LmZpbHRlcigocnVsZSkgPT4gcnVsZS5maWVsZCkubWFwKChydWxlKSA9PiBbcnVsZS5maWVsZCEsIHJ1bGVdKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgZmlsdGVyIHJ1bGVzIGJhc2VkIG9uIHRoZSB0YWJsZSBzdGF0ZS5cbiAgICAgKiBAcGFyYW0gc3RhdGUgVGFibGUgc3RhdGUuXG4gICAgICovXG4gICAgYnVpbGRGaWx0ZXJSdWxlc01hcChzdGF0ZSA9IHRoaXMuZ2V0VGFibGVTdGF0ZSgpKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyUnVsZXMkLm5leHQoXG4gICAgICAgICAgICBzdGF0ZS5maWx0ZXJCeS5yZWR1Y2UoKGhhc2gsIHJ1bGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBydWxlLmZpZWxkO1xuICAgICAgICAgICAgICAgIGlmICghaGFzaC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBoYXNoLnNldChrZXksIFtdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaGFzaC5nZXQoa2V5KT8ucHVzaChydWxlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFzaDtcbiAgICAgICAgICAgIH0sIG5ldyBNYXA8c3RyaW5nLCBDb2xsZWN0aW9uRmlsdGVyW10+KCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBiYXNlIHRhYmxlIGNvbmZpZy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RUYWJsZU1ldGFkYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkR3JvdXBSdWxlc01hcCgpO1xuICAgICAgICB0aGlzLmJ1aWxkU29ydFJ1bGVzTWFwKCk7XG4gICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJSdWxlc01hcCgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gc2V0Q3VycmVudFBhZ2VUb1N0YXRlKHN0YXRlOiBUYWJsZVN0YXRlLCBjdXJyZW50UGFnZTogbnVtYmVyKTogVGFibGVTdGF0ZSB7XG4gICAgY29uc3QgbmV3UGFnZVN0YXRlOiBDb2xsZWN0aW9uUGFnZSA9IHsgLi4uc3RhdGUucGFnZSwgY3VycmVudFBhZ2UgfTtcbiAgICByZXR1cm4geyAuLi5zdGF0ZSwgcGFnZTogbmV3UGFnZVN0YXRlIH07XG59XG4iXX0=
|
|
335
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vc3JjL2xpYi90YWJsZS1oZWxwZXJzL3NlcnZpY2VzL3RhYmxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEtBQUssTUFBTSxpQkFBaUIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQWdDbkQsTUFBTSxPQUFPLFlBQVk7SUFEekI7UUFFSSwwQkFBMEI7UUFDakIsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hFLGNBQWM7UUFDTCwyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUNsRSxjQUFjO1FBQ0wsb0NBQStCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDL0UsY0FBYztRQUNMLDhCQUF5QixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLGNBQWM7UUFDTCxzQ0FBaUMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRSw4QkFBOEI7UUFDckIsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFDbEUsOEJBQThCO1FBQzlCLHlCQUFvQixHQUFHLENBQUMsQ0FBQztRQUN6Qiw4QkFBOEI7UUFDckIsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFDbEUsOEJBQThCO1FBQzlCLDBCQUFxQixHQUFHLENB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QUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQzs7eUdBOVhRLFlBQVk7NkdBQVosWUFBWTsyRkFBWixZQUFZO2tCQUR4QixVQUFVOztBQWtZWCxTQUFTLHFCQUFxQixDQUFDLEtBQWlCLEVBQUUsV0FBbUI7SUFDakUsTUFBTSxZQUFZLEdBQW1CLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3BFLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBERUZBVUxUX1RBQkxFX1NUQVRFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuaW1wb3J0IHsgQ29sbGVjdGlvbkZpbHRlciwgQ29sbGVjdGlvbkdyb3VwLCBDb2xsZWN0aW9uUGFnZSwgQ29sbGVjdGlvblNvcnQsIFRhYmxlU3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgQ29sdW1uc0NoYW5nZSxcbiAgICBGaWx0ZXJDaGFuZ2UsXG4gICAgRnJlZXplQ2hhbmdlLFxuICAgIEdyb3VwQ2hhbmdlLFxuICAgIFBhZ2VDaGFuZ2UsXG4gICAgU2VhcmNoQ2hhbmdlLFxuICAgIFNvcnRDaGFuZ2Vcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vdGFibGUtY29sdW1uJztcblxuZXhwb3J0IHR5cGUgVGFibGVTdGF0ZUNoYW5nZSA9XG4gICAgfCBUYWJsZVN0YXRlUHJvcGVydHk8J3NvcnQnLCBTb3J0Q2hhbmdlPlxuICAgIHwgVGFibGVTdGF0ZVByb3BlcnR5PCdwYWdlJywgUGFnZUNoYW5nZT5cbiAgICB8IFRhYmxlU3RhdGVQcm9wZXJ0eTwnZmlsdGVyJywgRmlsdGVyQ2hhbmdlPlxuICAgIHwgVGFibGVTdGF0ZVByb3BlcnR5PCdncm91cCcsIEdyb3VwQ2hhbmdlPlxuICAgIHwgVGFibGVTdGF0ZVByb3BlcnR5PCdmcmVlemUnLCBGcmVlemVDaGFuZ2U+XG4gICAgfCBUYWJsZVN0YXRlUHJvcGVydHk8J2NvbHVtbnMnLCBDb2x1bW5zQ2hhbmdlPlxuICAgIHwgVGFibGVTdGF0ZVByb3BlcnR5PCdzZWFyY2gnLCBTZWFyY2hDaGFuZ2U+O1xuXG5leHBvcnQgdHlwZSBUYWJsZVN0YXRlUHJvcGVydHk8XG4gICAgVCA9ICdzb3J0JyB8ICdwYWdlJyB8ICdmaWx0ZXInIHwgJ2dyb3VwJyB8ICdmcmVlemUnIHwgJ2NvbHVtbnMnIHwgJ3NlYXJjaCcsXG4gICAgUCA9IFNvcnRDaGFuZ2UgfCBQYWdlQ2hhbmdlIHwgRmlsdGVyQ2hhbmdlIHwgR3JvdXBDaGFuZ2UgfCBGcmVlemVDaGFuZ2UgfCBDb2x1bW5zQ2hhbmdlXG4+ID0ge1xuICAgIHR5cGU6IFQ7XG4gICAgc3RhdGU6IFA7XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGFibGVTZXJ2aWNlIHtcbiAgICAvKiogVGFibGUgc3RhdGUgc3RyZWFtLiAqL1xuICAgIHJlYWRvbmx5IHRhYmxlU3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdChERUZBVUxUX1RBQkxFX1NUQVRFKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9zZW1hbnRpY0hpZ2hsaWdodGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2lzRmlsdGVyaW5nRnJvbUhlYWRlckRpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2lzU2hvd25OYXZpZ2F0aW9uQ29sdW1uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3NlbWFudGljSGlnaGxpZ2h0aW5nQ29sdW1uV2lkdGgkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgwKTtcbiAgICAvKiogVmlzaWJsZSBjb2x1bW5zIHN0cmVhbS4gKi9cbiAgICByZWFkb25seSB2aXNpYmxlQ29sdW1ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhYmxlQ29sdW1uW10+KFtdKTtcbiAgICAvKiogVmlzaWJsZSBjb2x1bW5zIGxlbmd0aC4gKi9cbiAgICB2aXNpYmxlQ29sdW1uc0xlbmd0aCA9IDA7XG4gICAgLyoqIFBvcHBpbmcgY29sdW1ucyBzdHJlYW0uICovXG4gICAgcmVhZG9ubHkgcG9wcGluZ0NvbHVtbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZUNvbHVtbltdPihbXSk7XG4gICAgLyoqIFBvcHBpbmcgY29sdW1ucyBsZW5ndGguICovXG4gICAgX3BvcHBpbmdDb2x1bW5zTGVuZ3RoID0gMDtcbiAgICAvKiogVGFibGUgY29sdW1ucyBzdHJlYW0uICovXG4gICAgcmVhZG9ubHkgdGFibGVDb2x1bW5zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFibGVDb2x1bW5bXT4oW10pO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgdGFibGVTdGF0ZUNoYW5nZXMkID0gdGhpcy50YWJsZVN0YXRlJC5waXBlKHNraXAoMSkpO1xuICAgIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIHNlYXJjaCBzdGF0ZSBjaGFuZ2VzLiAqL1xuICAgIHJlYWRvbmx5IHNlYXJjaENoYW5nZSQgPSBuZXcgU3ViamVjdDxTZWFyY2hDaGFuZ2U+KCk7XG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gc29ydCBzdGF0ZSBjaGFuZ2VzLiAqL1xuICAgIHJlYWRvbmx5IHNvcnRDaGFuZ2UkID0gbmV3IFN1YmplY3Q8U29ydENoYW5nZT4oKTtcbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiBmaWx0ZXIgc3RhdGUgY2hhbmdlcy4gKi9cbiAgICByZWFkb25seSBmaWx0ZXJDaGFuZ2UkID0gbmV3IFN1YmplY3Q8RmlsdGVyQ2hhbmdlPigpO1xuICAgIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIGdyb3VwIHN0YXRlIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgZ3JvdXBDaGFuZ2UkID0gbmV3IFN1YmplY3Q8R3JvdXBDaGFuZ2U+KCk7XG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gZnJlZXplIHN0YXRlIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgZnJlZXplQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PEZyZWV6ZUNoYW5nZT4oKTtcbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiBjb2x1bW5zIHN0YXRlIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgY29sdW1uc0NoYW5nZSQgPSBuZXcgU3ViamVjdDxDb2x1bW5zQ2hhbmdlPigpO1xuICAgIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIHBhZ2Ugc3RhdGUgY2hhbmdlcy4gKi9cbiAgICByZWFkb25seSBwYWdlQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PFBhZ2VDaGFuZ2U+KCk7XG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gbmV3IGZldGNoIG9mIGRhdGEgaXMgbmVlZGVkLiAqL1xuICAgIHJlYWRvbmx5IG5lZWRGZXRjaCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgc3RhdGVDaGFuZ2UkID0gbmV3IFN1YmplY3Q8VGFibGVTdGF0ZUNoYW5nZT4oKTtcbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiBsb2FkaW5nIHN0YXRlIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgdGFibGVMb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIC8qKiBMaXN0ZW4gZm9yIHNvZnQgY2hhbmdlcyBpbiB0YWJsZSBzdWJjb21wb25lbnRzIChtb3N0bHkgdGFibGUgY29sdW1uKSAqL1xuICAgIHJlYWRvbmx5IG1hcmtGb3JDaGVjayQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKiBMaXN0ZW4gZm9yIGltbWVkaWF0ZSBjaGFuZ2VzIGluIHRhYmxlIHN1YmNvbXBvbmVudHMgKG1vc3RseSB0YWJsZSBjb2x1bW4pICovXG4gICAgcmVhZG9ubHkgZGV0ZWN0Q2hhbmdlcyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIC8qKiBTb3J0IHJ1bGVzIHN0cmVhbS4gKi9cbiAgICByZWFkb25seSBzb3J0UnVsZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXA8c3RyaW5nLCBDb2xsZWN0aW9uU29ydD4+KG5ldyBNYXAoKSk7XG4gICAgLyoqXG4gICAgICogRmlsdGVyIFJ1bGVzIE1hcCBzdHJlYW0uIFdoZXJlIGtleSBpcyBjb2x1bW4ga2V5LCBhbmQgdmFsdWUgaXMgdGhlIGFzc29jaWF0ZWQgZmlsdGVyIHJ1bGVzLlxuICAgICAqIE1hbnkgZmlsdGVycyBjYW4gYmUgYXBwbGllZCB0byBvbmUgY29sdW1uLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGZpbHRlclJ1bGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwPHN0cmluZywgQ29sbGVjdGlvbkZpbHRlcltdPj4obmV3IE1hcCgpKTtcblxuICAgIC8qKlxuICAgICAqIEdyb3VwIFJ1bGVzIE1hcCBzdHJlYW0uIFdoZXJlIGtleSBpcyBjb2x1bW4ga2V5IGFuZCB2YWx1ZSBpcyBhc3NvY2lhdGVkIGdyb3VwIHJ1bGVcbiAgICAgKi9cbiAgICByZWFkb25seSBncm91cFJ1bGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwPHN0cmluZywgQ29sbGVjdGlvbkdyb3VwPj4obmV3IE1hcCgpKTtcblxuICAgIC8qKiBHZXQgY3VycmVudCBzdGF0ZS9zZXR0aW5ncyBvZiB0aGUgVGFibGUuICovXG4gICAgZ2V0VGFibGVTdGF0ZSgpOiBUYWJsZVN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVTdGF0ZSQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogU2V0IGN1cnJlbnQgc3RhdGUvc2V0dGluZ3Mgb2YgdGhlIFRhYmxlLiAqL1xuICAgIHNldFRhYmxlU3RhdGUoc3RhdGU6IFRhYmxlU3RhdGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJsZVN0YXRlJC5uZXh0KHN0YXRlKTtcbiAgICB9XG5cbiAgICAvKiogU2V0IGN1cnJlbnQgbG9hZGluZyBzdGF0ZSBvZiB0aGUgVGFibGUuICovXG4gICAgc2V0VGFibGVMb2FkaW5nKGlzTG9hZGluZzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYmxlTG9hZGluZyQubmV4dChpc0xvYWRpbmcpO1xuICAgIH1cblxuICAgIC8qKiBOb3RpZnkgYWJvdXQgY2hhbmdlcyBpbiB0YWJsZSBzdWJjb21wb25lbnRzIChtb3N0bHkgdGFibGUgY29sdW1uKSBhbmQgZGV0ZWN0IHRoZW0gb24gbmV4dCBkZXRlY3RvciBjaGVjay4gKi9cbiAgICBtYXJrRm9yQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWFya0ZvckNoZWNrJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIE5vdGlmeSBhYm91dCBjaGFuZ2VzIGluIHRhYmxlIHN1YmNvbXBvbmVudHMgKG1vc3RseSB0YWJsZSBjb2x1bW4pIGFuZCBkZXRlY3QgdGhlbSBpbW1lZGlhdGVseS4gKi9cbiAgICBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRldGVjdENoYW5nZXMkLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogU2VhcmNoICovXG4gICAgc2VhcmNoKHNlYXJjaElucHV0OiBTZWFyY2hJbnB1dCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcblxuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBzZWFyY2hJbnB1dCB9O1xuXG4gICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZShzZXRDdXJyZW50UGFnZVRvU3RhdGUoc3RhdGUsIDEpKTtcblxuICAgICAgICBjb25zdCBldnQgPSB7IGN1cnJlbnQ6IHNlYXJjaElucHV0LCBwcmV2aW91czogcHJldlN0YXRlLnNlYXJjaElucHV0IH07XG5cbiAgICAgICAgdGhpcy5uZWVkRmV0Y2gkLm5leHQoKTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdzZWFyY2gnLCBzdGF0ZTogZXZ0IH0pO1xuICAgICAgICB0aGlzLnNlYXJjaENoYW5nZSQubmV4dChldnQpO1xuICAgIH1cblxuICAgIC8qKiBTZXQgbmV3IHNvcnQgcnVsZXMgKi9cbiAgICBzZXRTb3J0KHNvcnRSdWxlczogQ29sbGVjdGlvblNvcnRbXSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldlNvcnRSdWxlcyA9IChwcmV2U3RhdGUgJiYgcHJldlN0YXRlLnNvcnRCeSkgfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3U29ydFJ1bGVzOiBDb2xsZWN0aW9uU29ydFtdID0gc29ydFJ1bGVzID8gWy4uLnNvcnRSdWxlc10gOiBbXTtcblxuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBzb3J0Qnk6IG5ld1NvcnRSdWxlcyB9O1xuXG4gICAgICAgIGlmICghZXF1YWwocHJldlNvcnRSdWxlcywgc3RhdGUuc29ydEJ5KSkge1xuICAgICAgICAgICAgdGhpcy5zZXRUYWJsZVN0YXRlKHNldEN1cnJlbnRQYWdlVG9TdGF0ZShzdGF0ZSwgMSkpO1xuICAgICAgICAgICAgdGhpcy5idWlsZFNvcnRSdWxlc01hcCgpO1xuICAgICAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5zb3J0QnksIHByZXZpb3VzOiBwcmV2U29ydFJ1bGVzIH07XG5cbiAgICAgICAgICAgIHRoaXMubmVlZEZldGNoJC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlJC5uZXh0KHsgdHlwZTogJ3NvcnQnLCBzdGF0ZTogZXZ0IH0pO1xuICAgICAgICAgICAgdGhpcy5zb3J0Q2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQWRkIHNvcnQgcnVsZXMgdG8gdGhlIGV4aXN0aW5nIG9uZXMgKi9cbiAgICBhZGRTb3J0KHNvcnRSdWxlczogQ29sbGVjdGlvblNvcnRbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldlNvcnRSdWxlcyA9IChwcmV2U3RhdGUgJiYgcHJldlN0YXRlLnNvcnRCeSkgfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3U29ydFJ1bGVzOiBDb2xsZWN0aW9uU29ydFtdID0gW1xuICAgICAgICAgICAgLi4ucHJldlNvcnRSdWxlcy5maWx0ZXIoKGV4aXN0aW5nKSA9PiAhc29ydFJ1bGVzLmZpbmQoKHsgZmllbGQgfSkgPT4gZmllbGQgPT09IGV4aXN0aW5nLmZpZWxkKSksXG4gICAgICAgICAgICAuLi5zb3J0UnVsZXNcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBzb3J0Qnk6IG5ld1NvcnRSdWxlcyB9O1xuXG4gICAgICAgIGlmICghZXF1YWwocHJldlNvcnRSdWxlcywgc3RhdGUuc29ydEJ5KSkge1xuICAgICAgICAgICAgdGhpcy5zZXRUYWJsZVN0YXRlKHNldEN1cnJlbnRQYWdlVG9TdGF0ZShzdGF0ZSwgMSkpO1xuICAgICAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5zb3J0QnksIHByZXZpb3VzOiBwcmV2U29ydFJ1bGVzIH07XG4gICAgICAgICAgICB0aGlzLmJ1aWxkU29ydFJ1bGVzTWFwKCk7XG5cbiAgICAgICAgICAgIHRoaXMubmVlZEZldGNoJC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlJC5uZXh0KHsgdHlwZTogJ3NvcnQnLCBzdGF0ZTogZXZ0IH0pO1xuICAgICAgICAgICAgdGhpcy5zb3J0Q2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogU2V0IG5ldyBzb3J0IHJ1bGVzICovXG4gICAgc2V0RmlsdGVycyhmaWx0ZXJSdWxlczogQ29sbGVjdGlvbkZpbHRlcltdIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMuZ2V0VGFibGVTdGF0ZSgpO1xuICAgICAgICBjb25zdCBwcmV2RmlsdGVyUnVsZXMgPSAocHJldlN0YXRlICYmIHByZXZTdGF0ZS5maWx0ZXJCeSkgfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3RmlsdGVyUnVsZXM6IENvbGxlY3Rpb25GaWx0ZXJbXSA9IGZpbHRlclJ1bGVzID8gWy4uLmZpbHRlclJ1bGVzXSA6IFtdO1xuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBmaWx0ZXJCeTogbmV3RmlsdGVyUnVsZXMgfTtcblxuICAgICAgICBpZiAoIWVxdWFsKHByZXZGaWx0ZXJSdWxlcywgc3RhdGUuZmlsdGVyQnkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc2V0Q3VycmVudFBhZ2VUb1N0YXRlKHN0YXRlLCAxKSk7XG4gICAgICAgICAgICBjb25zdCBldnQgPSB7IGN1cnJlbnQ6IHN0YXRlLmZpbHRlckJ5LCBwcmV2aW91czogcHJldkZpbHRlclJ1bGVzIH07XG5cbiAgICAgICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJSdWxlc01hcCgpO1xuICAgICAgICAgICAgdGhpcy5uZWVkRmV0Y2gkLm5leHQoKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UkLm5leHQoeyB0eXBlOiAnZmlsdGVyJywgc3RhdGU6IGV2dCB9KTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQWRkIGZpbHRlciBydWxlcyB0byB0aGUgZXhpc3Rpbmcgb25lcyAqL1xuICAgIGFkZEZpbHRlcnMocnVsZXNUb0FkZDogQ29sbGVjdGlvbkZpbHRlcltdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMuZ2V0VGFibGVTdGF0ZSgpO1xuICAgICAgICBjb25zdCBwcmV2RmlsdGVyUnVsZXMgPSAocHJldlN0YXRlICYmIHByZXZTdGF0ZS5maWx0ZXJCeSkgfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3RmlsdGVyUnVsZXM6IENvbGxlY3Rpb25GaWx0ZXJbXSA9IFtcbiAgICAgICAgICAgIC4uLnByZXZGaWx0ZXJSdWxlcy5maWx0ZXIoKGV4aXN0aW5nKSA9PiAhcnVsZXNUb0FkZC5maW5kKCh7IGZpZWxkIH0pID0+IGZpZWxkID09PSBleGlzdGluZy5maWVsZCkpLFxuICAgICAgICAgICAgLi4ucnVsZXNUb0FkZFxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHN0YXRlOiBUYWJsZVN0YXRlID0geyAuLi5wcmV2U3RhdGUsIGZpbHRlckJ5OiBuZXdGaWx0ZXJSdWxlcyB9O1xuXG4gICAgICAgIGlmICghZXF1YWwocHJldkZpbHRlclJ1bGVzLCBzdGF0ZS5maWx0ZXJCeSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZShzZXRDdXJyZW50UGFnZVRvU3RhdGUoc3RhdGUsIDEpKTtcbiAgICAgICAgICAgIGNvbnN0IGV2dCA9IHsgY3VycmVudDogc3RhdGUuZmlsdGVyQnksIHByZXZpb3VzOiBwcmV2RmlsdGVyUnVsZXMgfTtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJSdWxlc01hcCgpO1xuXG4gICAgICAgICAgICB0aGlzLm5lZWRGZXRjaCQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdmaWx0ZXInLCBzdGF0ZTogZXZ0IH0pO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UkLm5leHQoZXZ0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZW1vdmVzIGZpbHRlcnMgZm9yIHRoZSBwcm92aWRlZCBmaWVsZHMgKi9cbiAgICByZW1vdmVGaWx0ZXJzKGZpZWxkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHByZXZGaWx0ZXJSdWxlcyA9IChwcmV2U3RhdGUgJiYgcHJldlN0YXRlLmZpbHRlckJ5KSB8fCBbXTtcblxuICAgICAgICBjb25zdCBuZXdGaWx0ZXJSdWxlczogQ29sbGVjdGlvbkZpbHRlcltdID0gcHJldkZpbHRlclJ1bGVzLmZpbHRlcihcbiAgICAgICAgICAgIChleGlzdGluZykgPT4gIWZpZWxkcy5pbmNsdWRlcyhleGlzdGluZy5maWVsZClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBmaWx0ZXJCeTogbmV3RmlsdGVyUnVsZXMgfTtcblxuICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc2V0Q3VycmVudFBhZ2VUb1N0YXRlKHN0YXRlLCAxKSk7XG4gICAgICAgIGNvbnN0IGV2dCA9IHsgY3VycmVudDogc3RhdGUuZmlsdGVyQnksIHByZXZpb3VzOiBwcmV2RmlsdGVyUnVsZXMgfTtcbiAgICAgICAgdGhpcy5idWlsZEZpbHRlclJ1bGVzTWFwKCk7XG5cbiAgICAgICAgdGhpcy5uZWVkRmV0Y2gkLm5leHQoKTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdmaWx0ZXInLCBzdGF0ZTogZXZ0IH0pO1xuICAgICAgICB0aGlzLmZpbHRlckNoYW5nZSQubmV4dChldnQpO1xuICAgIH1cblxuICAgIC8qKiBTZXQgZ3JvdXAgcnVsZXMgKi9cbiAgICBzZXRHcm91cHMoZ3JvdXBzOiBDb2xsZWN0aW9uR3JvdXBbXSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldkdyb3VwcyA9IChwcmV2U3RhdGUgJiYgcHJldlN0YXRlLmdyb3VwQnkpIHx8IFtdO1xuXG4gICAgICAgIGNvbnN0IG5ld0dyb3VwczogQ29sbGVjdGlvbkdyb3VwW10gPSBncm91cHMgPyBbLi4uZ3JvdXBzXSA6IFtdO1xuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBncm91cEJ5OiBuZXdHcm91cHMgfTtcblxuICAgICAgICBpZiAoIWVxdWFsKHByZXZHcm91cHMsIHN0YXRlLmdyb3VwQnkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc3RhdGUpO1xuICAgICAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5ncm91cEJ5LCBwcmV2aW91czogcHJldkdyb3VwcyB9O1xuICAgICAgICAgICAgdGhpcy5idWlsZEdyb3VwUnVsZXNNYXAoKTtcblxuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdncm91cCcsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgICAgICB0aGlzLmdyb3VwQ2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQWRkIGdyb3VwIHJ1bGVzIHRvIHRoZSBleGlzdGluZyBvbmVzICovXG4gICAgYWRkR3JvdXBzKGdyb3Vwc1RvQWRkOiBDb2xsZWN0aW9uR3JvdXBbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldkdyb3VwcyA9IChwcmV2U3RhdGUgJiYgcHJldlN0YXRlLmdyb3VwQnkpIHx8IFtdO1xuXG4gICAgICAgIGNvbnN0IG5ld0dyb3VwczogQ29sbGVjdGlvbkdyb3VwW10gPSBbXG4gICAgICAgICAgICAuLi5wcmV2R3JvdXBzLmZpbHRlcigoZXhpc3RpbmcpID0+ICFncm91cHNUb0FkZC5maW5kKCh7IGZpZWxkIH0pID0+IGZpZWxkID09PSBleGlzdGluZy5maWVsZCkpLFxuICAgICAgICAgICAgLi4uZ3JvdXBzVG9BZGRcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBncm91cEJ5OiBuZXdHcm91cHMgfTtcblxuICAgICAgICBpZiAoIWVxdWFsKHByZXZHcm91cHMsIHN0YXRlLmdyb3VwQnkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc3RhdGUpO1xuICAgICAgICAgICAgdGhpcy5idWlsZEdyb3VwUnVsZXNNYXAoKTtcblxuICAgICAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5ncm91cEJ5LCBwcmV2aW91czogcHJldkdyb3VwcyB9O1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdncm91cCcsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgICAgICB0aGlzLmdyb3VwQ2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRnJlZXplIHRhYmxlIHRvIGNvbHVtbiAqL1xuICAgIGZyZWV6ZVRvKGNvbHVtbk5hbWU6IHN0cmluZyB8IG51bGwsIGVuZD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG5cbiAgICAgICAgaWYgKCFlbmQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZSh7IC4uLnByZXZTdGF0ZSwgZnJlZXplVG9Db2x1bW46IGNvbHVtbk5hbWUgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoeyAuLi5wcmV2U3RhdGUsIGZyZWV6ZVRvRW5kQ29sdW1uOiBjb2x1bW5OYW1lIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXZ0ID0ge1xuICAgICAgICAgICAgY3VycmVudDogY29sdW1uTmFtZSxcbiAgICAgICAgICAgIHByZXZpb3VzOiBlbmQgPyBwcmV2U3RhdGUuZnJlZXplVG9FbmRDb2x1bW4gOiBwcmV2U3RhdGUuZnJlZXplVG9Db2x1bW5cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlJC5uZXh0KHsgdHlwZTogJ2ZyZWV6ZScsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgIHRoaXMuZnJlZXplQ2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgfVxuXG4gICAgLyoqIFNldCB0YWJsZSBjb2x1bW5zICovXG4gICAgc2V0Q29sdW1ucyhjb2x1bW5zOiBzdHJpbmdbXSwga2V5czogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHByZXZDb2x1bW5zID0gKHByZXZTdGF0ZSAmJiBwcmV2U3RhdGUuY29sdW1ucykgfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3Q29sdW1ucyA9IFsuLi5jb2x1bW5zXTtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uS2V5cyA9IFsuLi5rZXlzXTtcbiAgICAgICAgY29uc3Qgc3RhdGU6IFRhYmxlU3RhdGUgPSB7IC4uLnByZXZTdGF0ZSwgY29sdW1uczogbmV3Q29sdW1ucywgY29sdW1uS2V5czogbmV3Q29sdW1uS2V5cyB9O1xuXG4gICAgICAgIGlmICghZXF1YWwocHJldkNvbHVtbnMsIHN0YXRlLmNvbHVtbnMpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc3RhdGUpO1xuXG4gICAgICAgICAgICBjb25zdCBldnQgPSB7IGN1cnJlbnQ6IHN0YXRlLmNvbHVtbnMsIHByZXZpb3VzOiBwcmV2Q29sdW1ucyB9O1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdjb2x1bW5zJywgc3RhdGU6IGV2dCB9KTtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc0NoYW5nZSQubmV4dChldnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFNldCBwYWdlICovXG4gICAgc2V0Q3VycmVudFBhZ2UoY3VycmVudFBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldlBhZ2VTdGF0ZSA9IHByZXZTdGF0ZS5wYWdlO1xuXG4gICAgICAgIGlmIChwcmV2UGFnZVN0YXRlLmN1cnJlbnRQYWdlID09PSBjdXJyZW50UGFnZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RhdGU6IFRhYmxlU3RhdGUgPSBzZXRDdXJyZW50UGFnZVRvU3RhdGUocHJldlN0YXRlLCBjdXJyZW50UGFnZSk7XG5cbiAgICAgICAgdGhpcy5zZXRUYWJsZVN0YXRlKHN0YXRlKTtcbiAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5wYWdlLCBwcmV2aW91czogcHJldlBhZ2VTdGF0ZSB9O1xuXG4gICAgICAgIHRoaXMubmVlZEZldGNoJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UkLm5leHQoeyB0eXBlOiAncGFnZScsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgIHRoaXMucGFnZUNoYW5nZSQubmV4dChldnQpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIGRlZmF1bHQgdGFibGUgc3RhdGUuICovXG4gICAgZ2V0RGVmYXVsdFN0YXRlKCk6IFRhYmxlU3RhdGUge1xuICAgICAgICBjb25zdCB0YWJsZVN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2x1bW5LZXlzOiB0YWJsZVN0YXRlLmNvbHVtbktleXMsXG4gICAgICAgICAgICBzb3J0Qnk6IFtdLFxuICAgICAgICAgICAgZmlsdGVyQnk6IFtdLFxuICAgICAgICAgICAgZ3JvdXBCeTogW10sXG4gICAgICAgICAgICBjb2x1bW5zOiB0YWJsZVN0YXRlLmNvbHVtbnMsXG4gICAgICAgICAgICBzZWFyY2hJbnB1dDoge1xuICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBudWxsLFxuICAgICAgICAgICAgICAgIHRleHQ6ICcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnJlZXplVG9Db2x1bW46IG51bGwsXG4gICAgICAgICAgICBmcmVlemVUb0VuZENvbHVtbjogbnVsbCxcbiAgICAgICAgICAgIHBhZ2U6IHtcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogMCxcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogMVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNoYXJlcyB2aXNpYmxlIGNvbHVtbnMgYXJyYXkgYWNyb3NzIGxpc3RlbmVycy5cbiAgICAgKiBAcGFyYW0gY29sdW1ucyBWaXNpYmxlIGNvbHVtbnMgdG8gc2hhcmUuXG4gICAgICovXG4gICAgc2V0VmlzaWJsZUNvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpc2libGVDb2x1bW5zJC5uZXh0KGNvbHVtbnMpO1xuICAgICAgICB0aGlzLnZpc2libGVDb2x1bW5zTGVuZ3RoID0gY29sdW1ucy5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hhcmVzIHBvcHBpbmcgY29sdW1ucyBhcnJheSBhY3Jvc3MgbGlzdGVuZXJzLlxuICAgICAqIEBwYXJhbSBjb2x1bW5zIFBvcHBpbmcgY29sdW1ucyB0byBzaGFyZS5cbiAgICAgKi9cbiAgICBzZXRQb3BwaW5nQ29sdW1ucyhjb2x1bW5zOiBUYWJsZUNvbHVtbltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMucG9wcGluZ0NvbHVtbnMkLm5leHQoY29sdW1ucyk7XG4gICAgICAgIHRoaXMuX3BvcHBpbmdDb2x1bW5zTGVuZ3RoID0gY29sdW1ucy5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBncm91cGluZyBydWxlcyBiYXNlZCBvbiB0aGUgdGFibGUgc3RhdGUuXG4gICAgICogQHBhcmFtIHN0YXRlIFRhYmxlIHN0YXRlLlxuICAgICAqL1xuICAgIGJ1aWxkR3JvdXBSdWxlc01hcChzdGF0ZSA9IHRoaXMuZ2V0VGFibGVTdGF0ZSgpKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGdyb3VwTWFwID0gbmV3IE1hcChzdGF0ZS5ncm91cEJ5Lm1hcCgocnVsZSkgPT4gW3J1bGUuZmllbGQsIHJ1bGVdKSk7XG4gICAgICAgIHRoaXMuZ3JvdXBSdWxlcyQubmV4dChncm91cE1hcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBzb3J0aW5nIHJ1bGVzIGJhc2VkIG9uIHRoZSB0YWJsZSBzdGF0ZS5cbiAgICAgKiBAcGFyYW0gc3RhdGUgVGFibGUgc3RhdGVcbiAgICAgKi9cbiAgICBidWlsZFNvcnRSdWxlc01hcChzdGF0ZSA9IHRoaXMuZ2V0VGFibGVTdGF0ZSgpKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc29ydFJ1bGVzJC5uZXh0KG5ldyBNYXAoc3RhdGUuc29ydEJ5LmZpbHRlcigocnVsZSkgPT4gcnVsZS5maWVsZCkubWFwKChydWxlKSA9PiBbcnVsZS5maWVsZCEsIHJ1bGVdKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgZmlsdGVyIHJ1bGVzIGJhc2VkIG9uIHRoZSB0YWJsZSBzdGF0ZS5cbiAgICAgKiBAcGFyYW0gc3RhdGUgVGFibGUgc3RhdGUuXG4gICAgICovXG4gICAgYnVpbGRGaWx0ZXJSdWxlc01hcChzdGF0ZSA9IHRoaXMuZ2V0VGFibGVTdGF0ZSgpKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyUnVsZXMkLm5leHQoXG4gICAgICAgICAgICBzdGF0ZS5maWx0ZXJCeS5yZWR1Y2UoKGhhc2gsIHJ1bGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBydWxlLmZpZWxkO1xuICAgICAgICAgICAgICAgIGlmICghaGFzaC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBoYXNoLnNldChrZXksIFtdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaGFzaC5nZXQoa2V5KT8ucHVzaChydWxlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFzaDtcbiAgICAgICAgICAgIH0sIG5ldyBNYXA8c3RyaW5nLCBDb2xsZWN0aW9uRmlsdGVyW10+KCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBiYXNlIHRhYmxlIGNvbmZpZy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RUYWJsZU1ldGFkYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkR3JvdXBSdWxlc01hcCgpO1xuICAgICAgICB0aGlzLmJ1aWxkU29ydFJ1bGVzTWFwKCk7XG4gICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJSdWxlc01hcCgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gc2V0Q3VycmVudFBhZ2VUb1N0YXRlKHN0YXRlOiBUYWJsZVN0YXRlLCBjdXJyZW50UGFnZTogbnVtYmVyKTogVGFibGVTdGF0ZSB7XG4gICAgY29uc3QgbmV3UGFnZVN0YXRlOiBDb2xsZWN0aW9uUGFnZSA9IHsgLi4uc3RhdGUucGFnZSwgY3VycmVudFBhZ2UgfTtcbiAgICByZXR1cm4geyAuLi5zdGF0ZSwgcGFnZTogbmV3UGFnZVN0YXRlIH07XG59XG4iXX0=
|
|
@@ -948,6 +948,7 @@ class TableService {
|
|
|
948
948
|
const state = Object.assign(Object.assign({}, prevState), { sortBy: newSortRules });
|
|
949
949
|
if (!equal(prevSortRules, state.sortBy)) {
|
|
950
950
|
this.setTableState(setCurrentPageToState(state, 1));
|
|
951
|
+
this.buildSortRulesMap();
|
|
951
952
|
const evt = { current: state.sortBy, previous: prevSortRules };
|
|
952
953
|
this.needFetch$.next();
|
|
953
954
|
this.stateChange$.next({ type: 'sort', state: evt });
|