@one-paragon/angular-utilities 0.1.5 → 0.1.6

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.
@@ -6,7 +6,7 @@ import { TableBuilderConfigToken } from './TableBuilderConfig';
6
6
  import { isCustomFilter, isFilterInfo } from './filter-info';
7
7
  import { ComponentStore } from '@ngrx/component-store';
8
8
  import update from 'immutability-helper';
9
- import { last, map, tap } from 'rxjs/operators';
9
+ import { filter, last, map, tap } from 'rxjs/operators';
10
10
  import { moveItemInArray } from '@angular/cdk/drag-drop';
11
11
  import { notNull, onceWhen } from '../../rxjs/rxjs-operators';
12
12
  import { NotPersisitedTableSettings, PesrsistedTableSettings } from './table-builder-general-settings';
@@ -111,7 +111,7 @@ export class TableStore extends ComponentStore {
111
111
  this.removeFilter = this.updater((state, filterId) => update(state, { filters: { $unset: [filterId] } }));
112
112
  this.removeFilters = this.updater((state, filterIds) => update(state, { filters: { $unset: [...filterIds] } }));
113
113
  this.clearFilters = this.updater((state) => ({ ...state, filters: {} }));
114
- this.sorted$ = this.select(state => state.sorted);
114
+ this.sorted$ = this.state$.pipe(filter(stateIs(InitializationState.Ready)), map(state => state.sorted));
115
115
  this.createPreSort = (metaDatas) => {
116
116
  return Object.values(metaDatas).filter((metaData) => !!metaData.preSort)
117
117
  .sort(({ preSort: ps1 }, { preSort: ps2 }) => (ps1.precedence || Number.MAX_VALUE) - (ps2.precedence || Number.MAX_VALUE))
@@ -268,4 +268,4 @@ export const orderMetaData = (state) => {
268
268
  :
269
269
  Object.values(state.metaData).sort((a, b) => a.order - b.order);
270
270
  };
271
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jbGFzc2VzL3RhYmxlLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFtQyxNQUFNLGNBQWMsQ0FBQztBQUN2RyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQXNCLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkYsT0FBTyxFQUE0QixjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBRztBQUN6RCxPQUFPLE1BQU0sTUFBTSxxQkFBcUIsQ0FBQztBQUV6QyxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQXdCLDBCQUEwQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBRTdILE1BQU0sVUFBVSxPQUFPLENBQUMsbUJBQXdDO0lBQzlELE9BQU8sQ0FBQyxLQUFpQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEtBQUssbUJBQW1CLENBQUM7QUFDbEYsQ0FBQztBQUtELE1BQU0sT0FBTyxVQUFXLFNBQVEsY0FBMEI7SUFFeEQsWUFBNkMsTUFBMEI7UUFDdEUsS0FBSyxDQUFFLEVBQUUsR0FBRyxpQkFBaUIsRUFBRSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsRUFBQyxDQUFDLENBQUM7UUFjOUQsT0FBRSxHQUFHLENBQUksYUFBNEIsRUFBRSxJQUFzQixFQUFFLEVBQUU7WUFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNsQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQ1YsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFBO1FBTVEsY0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbEQsbUJBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUNuQyxJQUFJLENBQUMsTUFBTSxFQUNYLGFBQWEsQ0FDZCxDQUFDO1FBRUYsaUJBQVksR0FBRyxDQUFDLEdBQVcsRUFBeUIsRUFBRTtZQUNwRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFHLENBQUMsSUFBSSxDQUN0RCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRSxJQUFHLENBQUMsSUFBSTtnQkFBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFlBQVksQ0FBQyxDQUFBLENBQUEsQ0FBQyxDQUFDLEVBQzNFLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDZCxDQUFDLENBQUE7UUFFRCx5QkFBb0IsR0FBRyxDQUFDLEdBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0YsMEJBQXFCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFL0QscUJBQWdCLEdBQUksQ0FBQyxLQUFnQixFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQzthQUNyRixNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvRixzQkFBaUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZELGVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxRCxHQUFHLEtBQUs7WUFDUixVQUFVLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQztTQUMvRCxDQUFDLENBQUMsQ0FBQztRQUVLLGVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDM0MsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO2lCQUNoRCxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUM7aUJBQy9DLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUU7Z0JBQ2xCLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLEVBQUU7Z0JBQ3hDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ3JCLE1BQU0sRUFBRSxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUM7Z0JBQ3RCLFdBQVcsRUFBRyxFQUFDLElBQUksRUFBRSxFQUFDLE1BQU0sRUFBQyxFQUFFLEVBQUMsS0FBSyxFQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUMsRUFBRSxFQUFDLEVBQUM7YUFDbkQsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFFTSxlQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUQsR0FBRyxLQUFLO1lBQ1IsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQztTQUNyRCxDQUFDLENBQUMsQ0FBQztRQUVLLHFCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsV0FBOEMsRUFBRSxFQUFFO1lBRWpHLElBQUksYUFBYSxHQUFFLElBQUksR0FBRyxDQUN4QjtnQkFDRSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUM5RCxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7YUFDbkcsQ0FDRixDQUFDO1lBRUYsT0FBTyxNQUFNLENBQUUsS0FBSyxFQUFHLEVBQUUsVUFBVSxFQUFFLEVBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsRUFBQyxFQUFDLENBQUMsQ0FBQztRQUNwRSxDQUFDLENBQUMsQ0FBQztRQUdILHdCQUFtQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUMsU0FBOEMsRUFBRSxFQUFFO1lBQzFGLE1BQU0saUJBQWlCLEdBQUcsRUFBQyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFDLENBQUM7WUFDeEQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDckIsaUJBQWlCLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUM7WUFDOUMsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLEVBQUMsR0FBRyxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUMsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFDLE1BQU0sRUFBQyxpQkFBaUIsRUFBQyxFQUFDLENBQUM7UUFDbEYsQ0FBQyxDQUFDLENBQUM7UUFFSCx3QkFBbUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFDLEtBQXVDLEVBQUMsRUFBRTtZQUNsRixNQUFNLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBQyxHQUFHLEtBQUssQ0FBQztZQUNuQyxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QyxlQUFlLENBQUMsTUFBTSxFQUFDLFFBQVEsRUFBQyxRQUFRLENBQUMsQ0FBQztZQUUxQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFjLEVBQUMsT0FBTyxFQUFDLEtBQUssRUFBRSxFQUFFO2dCQUN0RSxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDL0IsT0FBTyxTQUFTLENBQUE7WUFDbEIsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ04sT0FBTSxDQUFDLEVBQUMsR0FBRyxLQUFLLEVBQUUsV0FBVyxFQUFDLEVBQUMsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFDLEtBQUssRUFBQyxnQkFBZ0IsRUFBQyxFQUFDLENBQUMsQ0FBQTtRQUMvRSxDQUFDLENBQUMsQ0FBQTtRQUdPLGFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBRSxDQUFDO1FBRWhELGVBQVUsR0FBRyxDQUFDLFFBQWdCLEVBQXNELEVBQUU7WUFDN0YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBRSxDQUFDO1FBQ3pELENBQUMsQ0FBQTtRQUNRLGNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFFLENBQUMsS0FBSyxFQUFFLE1BQWlDLEVBQUcsRUFBRTtZQUMvRSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBRU0sZUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUMsT0FBc0MsRUFBQyxFQUFFO1lBQ2pGLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQTtRQUdNLHNCQUFpQixHQUFHLENBQUMsS0FBZ0IsRUFBQyxPQUFxQyxFQUFlLEVBQUU7WUFFbEcsSUFBSSxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBRyxjQUFjLENBQUUsQ0FBQztZQUV0RCxJQUFJLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRS9DLE1BQU0sVUFBVSxHQUFHLFdBQVc7aUJBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUM7aUJBQ3JJLE1BQU0sQ0FBQyxDQUFDLFVBQThCLEVBQUMsTUFBTSxFQUFDLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO29CQUNwQixNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksRUFBRSxDQUFDO2lCQUMxQjtnQkFDRCxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQztnQkFDckMsT0FBTyxVQUFVLENBQUM7WUFDcEIsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRU4sYUFBYSxDQUFDLE9BQU8sQ0FBRSxJQUFJLENBQUMsRUFBRTtnQkFDNUIsSUFBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxFQUFFLENBQUM7aUJBQ3hCO2dCQUNELFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFBO1lBQ0osT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1IsT0FBTyxFQUFHLEVBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsVUFBVSxFQUFFO2FBQzdDLENBQUM7UUFDSixDQUFDLENBQUE7UUFFUSxpQkFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBZ0IsRUFBRSxFQUFFLENBQ2hFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBQyxPQUFPLEVBQUUsRUFBQyxNQUFNLEVBQUcsQ0FBQyxRQUFRLENBQUUsRUFBQyxFQUFDLENBQUMsQ0FDakQsQ0FBQztRQUVPLGtCQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBRSxDQUFDLEtBQUssRUFBRSxTQUFtQixFQUFFLEVBQUUsQ0FDcEUsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRyxDQUFDLEdBQUcsU0FBUyxDQUFFLEVBQUMsRUFBQyxDQUFDLENBQ3JELENBQUM7UUFFTyxpQkFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUMsRUFBRSxDQUM1QyxDQUFDLEVBQUMsR0FBRyxLQUFLLEVBQUMsT0FBTyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQTtRQUdqQixZQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV0RCxrQkFBYSxHQUFHLENBQUMsU0FBK0IsRUFBVSxFQUFFO1lBQzFELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBRSxRQUFRLEVBQStDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztpQkFDckgsSUFBSSxDQUFDLENBQUMsRUFBRyxPQUFPLEVBQUUsR0FBRyxFQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBRSxHQUFHLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDN0gsR0FBRyxDQUFDLENBQUUsRUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFDLEVBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzdFLENBQUMsQ0FBQTtRQUNRLFlBQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUEyQyxDQUFDLEtBQUssRUFBRSxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUMsRUFBRyxFQUFFO1lBQ3JHLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUUsQ0FBQztZQUMvRCxJQUFHLFNBQVMsRUFBRTtnQkFDWixTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDO2FBQzdDO1lBQ0QsT0FBTztnQkFDTCxHQUFHLEtBQUs7Z0JBQ1IsTUFBTSxFQUFFLFNBQVM7YUFDbEIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRU0sZUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUMsU0FBZ0IsRUFBQyxFQUFFO1lBQzNELE9BQU87Z0JBQ0wsR0FBRyxLQUFLO2dCQUNSLE1BQU0sRUFBRSxTQUFTO2FBQ2xCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUdILG9CQUFlLEdBQUcsQ0FBQyxLQUFpQixFQUFFLGtCQUF1QyxFQUFlLEVBQUU7WUFDNUYsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNoQyxNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNO2dCQUMxRSxDQUFDLENBQUMsS0FBSyxDQUFDLG1CQUFtQixLQUFLLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUM1RyxPQUFPLEVBQUMsR0FBRyxLQUFLLEVBQUUsR0FBRyxrQkFBa0IsRUFBRSxRQUFRLEVBQUcsTUFBTSxFQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFBO1FBRVEsZ0JBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFFLENBQUMsS0FBSyxFQUFFLFFBQWdCLEVBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLEtBQUssRUFBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0UsZ0JBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFzQixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFZdEUsa0NBQTZCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBRSxDQUFFLEtBQWlCLEVBQUUsY0FBbUMsRUFBZSxFQUFFO1lBQzlILE1BQU0sa0JBQWtCLEdBQXdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUMsY0FBYyxDQUFDLENBQUM7WUFDL0YsTUFBTSxRQUFRLEdBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNqRSxRQUFRLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixLQUFLLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7WUFDbEssT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFFSCw2QkFBd0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0Usa0JBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFDLGFBQW9CLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLEtBQUssRUFBQyxXQUFXLEVBQUUsRUFBQyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUMsS0FBSyxFQUFDLEVBQUMsS0FBSyxFQUFDLGFBQWEsRUFBQyxFQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUU7UUFFNUksY0FBUyxHQUFHLENBQUMsSUFBYyxFQUFFLEtBQWUsRUFBWSxFQUFFO1lBQ3hELE9BQU87Z0JBQ0gsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUNiLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXO2dCQUNsRCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUztnQkFDNUMsVUFBVSxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBQztnQkFDckQsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUs7Z0JBQ2hDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPO2dCQUN0Qyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsdUJBQXVCLElBQUksSUFBSSxDQUFDLHVCQUF1QjtnQkFDdEYsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUs7Z0JBQ2hDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRO2dCQUN6QyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUTtnQkFDekMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVU7Z0JBQy9DLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTO2dCQUM1QyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSzthQUNuQyxDQUFDO1FBQ0osQ0FBQyxDQUFBO1FBRVEsMEJBQXFCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBRSxDQUFDLEtBQUssRUFBRSxtQkFBeUMsRUFBRSxFQUFFO1lBQ2xHLE9BQU8sRUFBQyxHQUFHLEtBQUssRUFBRSxtQkFBbUIsRUFBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBYU0sZ0JBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQXlCLEVBQUcsRUFBRTtZQUN4RSxNQUFNLFFBQVEsR0FBRyxDQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBRTtpQkFDcEQsTUFBTSxDQUFDLENBQUMsSUFBMEIsRUFBQyxJQUFJLEVBQUUsRUFBRTtnQkFDMUMsSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQztpQkFDdEQ7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7aUJBQ3ZCO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ1QsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUMxQixJQUFHLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUN0QixNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN2QztZQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixJQUFJLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUUsbUJBQW1CLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7WUFDdkosT0FBTyxFQUFDLEdBQUcsS0FBSyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFDLEVBQUMsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsRUFBQyxDQUFDO1FBQzNHLENBQUMsQ0FBQyxDQUFDO1FBRUssb0JBQWUsR0FBRyxDQUFDLEtBQWdCLEVBQUMsR0FBeUIsRUFBdUIsRUFBRTtZQUM1RixNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0YsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUMvQyxJQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztnQkFDdEUsT0FBTyxFQUFFLENBQUE7YUFDVjtZQUNELE9BQU8sZ0JBQWdCLENBQUM7UUFDMUIsQ0FBQyxDQUFBO1FBRUQseUJBQW9CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBQyxFQUFFO1lBQzNDLE1BQU0sYUFBYSxHQUFHLEVBQUMsR0FBRyxLQUFLLENBQUMsc0JBQXNCLEVBQUMsQ0FBQztZQUN4RCxhQUFhLENBQUMsY0FBYyxHQUFHLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQztZQUM3RCxPQUFPLENBQUMsRUFBQyxHQUFHLEtBQUssRUFBQyxzQkFBc0IsRUFBRyxJQUFJLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxFQUFDLENBQUMsQ0FBQztRQUMxRixDQUFDLENBQUMsQ0FBQTtRQUVGLHlCQUFvQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUMsRUFBRTtZQUMzQyxNQUFNLGFBQWEsR0FBRyxFQUFDLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixFQUFDLENBQUM7WUFDeEQsYUFBYSxDQUFDLGNBQWMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUM7WUFDN0QsT0FBTyxDQUFDLEVBQUMsR0FBRyxLQUFLLEVBQUMsc0JBQXNCLEVBQUcsSUFBSSx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsRUFBQyxDQUFDLENBQUM7UUFDMUYsQ0FBQyxDQUFDLENBQUE7UUFHRixxQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFDLFFBQTZCLEVBQUMsRUFBRTtZQUNyRSxNQUFNLENBQUMsR0FBYztnQkFDbkIsR0FBRyxLQUFLO2dCQUNSLHNCQUFzQixFQUFHLElBQUksdUJBQXVCLENBQUMsUUFBUSxDQUFDO2dCQUM5RCwwQkFBMEIsRUFBRyxJQUFJLDBCQUEwQixDQUFDLFFBQVEsQ0FBQzthQUNwRSxDQUFDO1lBQ0osT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztRQUVILG1CQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNuQyxNQUFNLEVBQUUsR0FDTixFQUFDLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixFQUFDLEdBQUcsS0FBSyxDQUFDLDBCQUEwQixFQUFDLENBQUM7WUFDeEUsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQTtJQXpTRixDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3RCLEdBQUcsQ0FBRSxDQUFDLENBQUMsRUFBRTtZQUNQLE1BQU0sWUFBWSxHQUFHLEVBQUMsR0FBRyxDQUFDLEVBQXdCLENBQUE7WUFDbEQsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDO1lBQzdCLE9BQU8sWUFBWSxDQUFDLDBCQUEwQixDQUFDO1lBQy9DLE9BQU8sWUFBbUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQVFELE1BQU0sQ0FBQyxRQUFxQztRQUMxQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQXlLRCxtQkFBbUIsQ0FBQyxLQUFpQixFQUFDLE1BQTJCO1FBQy9ELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDcEosR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFTLENBQUMsQ0FBQztZQUN6RCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNQLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDOUUsT0FBTyxDQUFDLEVBQUMsR0FBRyxNQUFNLEVBQUMsT0FBTyxFQUFDLE1BQU0sRUFBQyxDQUFDLENBQUE7SUFDckMsQ0FBQztJQWtDRCxXQUFXLENBQUMsU0FBZ0MsRUFBRSxJQUFnQztRQUM1RSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBRSxJQUFpQztRQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxDQUFDOzt1R0FyUFUsVUFBVSxrQkFFRCx1QkFBdUI7MkdBRmhDLFVBQVUsY0FGVCxNQUFNOzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFHYyxNQUFNOzJCQUFDLHVCQUF1Qjs7QUE2UzdDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBZ0IsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTlILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEtBQWdCLEVBQUUsRUFBRTtJQUNoRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0QsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRyxDQUFDO1lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQU0sR0FBRyxDQUFDLENBQUMsS0FBTSxDQUFDLENBQUE7QUFDbEUsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmllbGRUeXBlLCBNZXRhRGF0YSwgU29ydERlZiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZic7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWZhdWx0VGFibGVTdGF0ZSwgSW5pdGlhbGl6YXRpb25TdGF0ZSwgUGVyc2lzdGVkVGFibGVTdGF0ZSwgVGFibGVTdGF0ZSB9IGZyb20gJy4vVGFibGVTdGF0ZSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIFByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFibGVCdWlsZGVyQ29uZmlnLCBUYWJsZUJ1aWxkZXJDb25maWdUb2tlbiB9IGZyb20gJy4vVGFibGVCdWlsZGVyQ29uZmlnJztcbmltcG9ydCB7IEN1c3RvbUZpbHRlciwgRmlsdGVySW5mbywgaXNDdXN0b21GaWx0ZXIsIGlzRmlsdGVySW5mbyB9IGZyb20gJy4vZmlsdGVyLWluZm8nO1xuaW1wb3J0IHsgU29ydCwgU29ydERpcmVjdGlvbiB9ICBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JyA7XG5pbXBvcnQgeyBDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BuZ3J4L2NvbXBvbmVudC1zdG9yZScgIDtcbmltcG9ydCB1cGRhdGUgZnJvbSAnaW1tdXRhYmlsaXR5LWhlbHBlcic7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kaWN0aW9uYXJ5JztcbmltcG9ydCB7IGxhc3QsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IG5vdE51bGwsIG9uY2VXaGVuIH0gZnJvbSAnLi4vLi4vcnhqcy9yeGpzLW9wZXJhdG9ycyc7XG5pbXBvcnQgeyBHZW5lcmFsVGFibGVTZXR0aW5ncywgTm90UGVyc2lzaXRlZFRhYmxlU2V0dGluZ3MsIFBlc3JzaXN0ZWRUYWJsZVNldHRpbmdzIH0gZnJvbSAnLi90YWJsZS1idWlsZGVyLWdlbmVyYWwtc2V0dGluZ3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVJcyhpbml0aWFsaXphdGlvblN0YXRlOiBJbml0aWFsaXphdGlvblN0YXRlKSB7XG4gIHJldHVybiAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPT09IGluaXRpYWxpemF0aW9uU3RhdGU7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVN0b3JlIGV4dGVuZHMgQ29tcG9uZW50U3RvcmU8VGFibGVTdGF0ZT4ge1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4pIGNvbmZpZzogVGFibGVCdWlsZGVyQ29uZmlnKSB7XG4gICBzdXBlciggeyAuLi5kZWZhdWx0VGFibGVTdGF0ZSwgLi4uY29uZmlnLmRlZmF1bHRUYWJsZVN0YXRlfSk7XG4gIH1cblxuICBnZXRTYXZhYmxlU3RhdGUoKSA6IE9ic2VydmFibGU8UGVyc2lzdGVkVGFibGVTdGF0ZT4ge1xuICAgIHJldHVybiAgdGhpcy5zdGF0ZSQucGlwZShcbiAgICAgIG1hcCggcyA9PiB7XG4gICAgICAgIGNvbnN0IHNhdmFibGVTdGF0ZSA9IHsuLi5zfSBhcyBQYXJ0aWFsPFRhYmxlU3RhdGU+XG4gICAgICAgIGRlbGV0ZSBzYXZhYmxlU3RhdGUubWV0YURhdGE7XG4gICAgICAgIGRlbGV0ZSBzYXZhYmxlU3RhdGUubm90UGVyc2lzaXRlZFRhYmxlU2V0dGluZ3M7XG4gICAgICAgIHJldHVybiBzYXZhYmxlU3RhdGUgYXMgUGVyc2lzdGVkVGFibGVTdGF0ZTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG9uID0gPFY+KHNyY09ic2VydmFibGU6IE9ic2VydmFibGU8Vj4sIGZ1bmM6IChvYmo6IFYpID0+IHZvaWQpID0+IHtcbiAgICB0aGlzLmVmZmVjdCgoKSA9PiBzcmNPYnNlcnZhYmxlLnBpcGUoXG4gICAgICB0YXAoZnVuYylcbiAgICApKVxuICB9XG5cbiAgb25MYXN0KGNhbGxiYWNrOiAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHZvaWQgKSB7XG4gICAgdGhpcy5vbih0aGlzLnN0YXRlJC5waXBlKGxhc3QoKSksY2FsbGJhY2spO1xuICB9XG5cbiAgcmVhZG9ubHkgbWV0YURhdGEkID0gdGhpcy5zZWxlY3QoIHN0YXRlID0+IHN0YXRlLm1ldGFEYXRhKTtcblxuICByZWFkb25seSBtZXRhRGF0YUFycmF5JCA9IHRoaXMuc2VsZWN0KFxuICAgIHRoaXMuc3RhdGUkLFxuICAgIG9yZGVyTWV0YURhdGFcbiAgKTtcblxuICBnZXRNZXRhRGF0YSQgPSAoa2V5OiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxNZXRhRGF0YT4gPT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdCggc3RhdGUgPT4gc3RhdGUubWV0YURhdGFba2V5XSAgKS5waXBlKFxuICAgICAgdGFwKG1ldGEgPT4ge2lmKCFtZXRhKWNvbnNvbGUud2FybihgTWV0YSBkYXRhIHdpdGgga2V5ICR7a2V5fSBub3QgZm91bmRgKX0pLFxuICAgICAgbm90TnVsbCgpKVxuICB9XG5cbiAgZ2V0VXNlckRlZmluZWRXaWR0aCQgPSAoa2V5OnN0cmluZykgPT4gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUudXNlckRlZmluZWQud2lkdGhzW2tleV0pO1xuICBnZXRVc2VyRGVmaW5lZFdpZHRocyQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC53aWR0aHMpO1xuXG4gIHByaXZhdGUgZGlzcGxheWVkQ29sdW1ucyA9ICAoc3RhdGU6VGFibGVTdGF0ZSkgPT4gb3JkZXJNZXRhRGF0YShzdGF0ZSkubWFwKG1kID0+IG1kLmtleSlcbiAgICAuZmlsdGVyKGtleSA9PiAhc3RhdGUuaGlkZGVuS2V5cy5pbmNsdWRlcyhrZXkpICYmIHN0YXRlLm1ldGFEYXRhW2tleV0uZmllbGRUeXBlICE9PSBGaWVsZFR5cGUuSGlkZGVuKTtcbiAgcmVhZG9ubHkgZGlzcGxheWVkQ29sdW1ucyQgPSB0aGlzLnNlbGVjdCh0aGlzLmRpc3BsYXllZENvbHVtbnMpO1xuICByZWFkb25seSBoaWRlQ29sdW1uID0gdGhpcy51cGRhdGVyKChzdGF0ZSwga2V5OiBzdHJpbmcpID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgaGlkZGVuS2V5czogWy4uLnN0YXRlLmhpZGRlbktleXMuZmlsdGVyKCBrID0+IGsgIT09IGtleSksIGtleV0sXG4gIH0pKTtcblxuICByZWFkb25seSByZXNldFN0YXRlID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGhpZGRlbkNvbHVtbnMgPSBPYmplY3QudmFsdWVzKHN0YXRlLm1ldGFEYXRhKVxuICAgICAgLmZpbHRlcihtZCA9PiBtZC5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5IaWRkZW4pXG4gICAgICAubWFwKG1kID0+IG1kLmtleSk7XG4gICAgY29uc3Qgc29ydGVkID0gdGhpcy5jcmVhdGVQcmVTb3J0KHN0YXRlLm1ldGFEYXRhKTtcbiAgICByZXR1cm4gdXBkYXRlKHN0YXRlLCB7XG4gICAgICAgaGlkZGVuS2V5czogeyAkc2V0OiBbLi4uaGlkZGVuQ29sdW1uc10gfSxcbiAgICAgICBmaWx0ZXJzOiB7ICRzZXQ6IHt9IH0sXG4gICAgICAgc29ydGVkOiB7JHNldDogc29ydGVkfSxcbiAgICAgICB1c2VyRGVmaW5lZCA6IHskc2V0OiB7d2lkdGhzOnt9LG9yZGVyOnt9LHRhYmxlOnt9fX0sXG4gICAgICB9KTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2hvd0NvbHVtbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogc3RyaW5nKSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIGhpZGRlbktleXM6IHN0YXRlLmhpZGRlbktleXMuZmlsdGVyKCBrID0+IGsgIT09IGtleSksXG4gIH0pKTtcblxuICByZWFkb25seSBzZXRIaWRkZW5Db2x1bW5zID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZGlzcGxheUNvbHM6IHtrZXk6IHN0cmluZywgdmlzaWJsZTogYm9vbGVhbn1bXSkgPT4ge1xuXG4gICAgdmFyIGhpZGRlbktleXNTZXQ9IG5ldyBTZXQ8c3RyaW5nPihcbiAgICAgIFtcbiAgICAgICAgLi4uZGlzcGxheUNvbHMuZmlsdGVyKGNvbCA9PiAhY29sLnZpc2libGUpLm1hcChjb2wgPT4gY29sLmtleSksXG4gICAgICAgIC4uLk9iamVjdC52YWx1ZXMoc3RhdGUubWV0YURhdGEpLmZpbHRlcihtZCA9PiBtZC5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5IaWRkZW4pLm1hcChtZCA9PiBtZC5rZXkpXG4gICAgICBdXG4gICAgKTtcblxuICAgIHJldHVybiB1cGRhdGUoIHN0YXRlICwgeyBoaWRkZW5LZXlzOiB7JHNldDogWy4uLmhpZGRlbktleXNTZXRdfX0pO1xuICB9KTtcblxuXG4gIHNldFVzZXJEZWZpbmVkV2lkdGggPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLGNvbFdpZHRoczp7a2V5OiBzdHJpbmcsIHdpZHRoSW5QaXhlbDpudW1iZXJ9W10pID0+IHtcbiAgICBjb25zdCB1c2VyRGVmaW5lZFdpZHRocyA9IHsuLi5zdGF0ZS51c2VyRGVmaW5lZC53aWR0aHN9O1xuICAgIGNvbFdpZHRocy5mb3JFYWNoKGN3ID0+IHtcbiAgICAgIHVzZXJEZWZpbmVkV2lkdGhzW2N3LmtleV0gPSBjdy53aWR0aEluUGl4ZWw7XG4gICAgfSk7XG4gICAgcmV0dXJuIHsuLi5zdGF0ZSwgdXNlckRlZmluZWQ6IHsuLi5zdGF0ZS51c2VyRGVmaW5lZCx3aWR0aHM6dXNlckRlZmluZWRXaWR0aHN9fTtcbiAgfSk7XG5cbiAgc2V0VXNlckRlZmluZWRPcmRlciA9IHRoaXMudXBkYXRlcigoc3RhdGUsbW92ZWQ6e25ld09yZGVyOm51bWJlcixvbGRPcmRlcjpudW1iZXJ9KT0+e1xuICAgIGNvbnN0IHtuZXdPcmRlciAsb2xkT3JkZXJ9ID0gbW92ZWQ7XG4gICAgY29uc3QgbWRzQXJyID0gb3JkZXJWaWV3YWJsZU1ldGFEYXRhKHN0YXRlKTtcbiAgICBtb3ZlSXRlbUluQXJyYXkobWRzQXJyLG9sZE9yZGVyLG5ld09yZGVyKTtcblxuICAgIGNvbnN0IHVzZXJEZWZpbmVkT3JkZXIgPSBtZHNBcnIucmVkdWNlKChhZ2dyZWdhdGU6IGFueSxjdXJyZW50LGluZGV4KSA9PiB7XG4gICAgICBhZ2dyZWdhdGVbY3VycmVudC5rZXldID0gaW5kZXg7XG4gICAgICByZXR1cm4gYWdncmVnYXRlXG4gICAgfSx7fSk7XG4gICAgcmV0dXJuKHsuLi5zdGF0ZSwgdXNlckRlZmluZWQ6ey4uLnN0YXRlLnVzZXJEZWZpbmVkLG9yZGVyOnVzZXJEZWZpbmVkT3JkZXJ9fSlcbiAgfSlcblxuXG4gIHJlYWRvbmx5IGZpbHRlcnMkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuZmlsdGVycyApO1xuXG4gIHJlYWRvbmx5IGdldEZpbHRlciQgPSAoZmlsdGVySWQ6IHN0cmluZykgOiBPYnNlcnZhYmxlPEZpbHRlckluZm8gfCBDdXN0b21GaWx0ZXIgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3QoIHN0YXRlID0+IHN0YXRlLmZpbHRlcnNbZmlsdGVySWRdICk7XG4gIH1cbiAgcmVhZG9ubHkgYWRkRmlsdGVyID0gdGhpcy51cGRhdGVyKCAoc3RhdGUsIGZpbHRlcjogRmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlciApID0+IHtcbiAgICByZXR1cm4gdGhpcy5hZGRGaWx0ZXJzVG9TdGF0ZShzdGF0ZSwgW2ZpbHRlcl0pO1xuICB9KTtcblxuICByZWFkb25seSBhZGRGaWx0ZXJzID0gdGhpcy51cGRhdGVyKChzdGF0ZSxmaWx0ZXJzOihGaWx0ZXJJbmZvIHwgQ3VzdG9tRmlsdGVyIClbXSk9PntcbiAgICByZXR1cm4gdGhpcy5hZGRGaWx0ZXJzVG9TdGF0ZShzdGF0ZSwgZmlsdGVycyk7XG4gIH0pXG5cblxuICBwcml2YXRlIGFkZEZpbHRlcnNUb1N0YXRlID0gKHN0YXRlOlRhYmxlU3RhdGUsZmlsdGVyczooRmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlcilbXSkgOiBUYWJsZVN0YXRlID0+IHtcblxuICAgIHZhciBjdXN0b21GaWx0ZXJzID0gZmlsdGVycy5maWx0ZXIoICBpc0N1c3RvbUZpbHRlciApO1xuXG4gICAgdmFyIGZpbHRlckluZm9zID0gZmlsdGVycy5maWx0ZXIoaXNGaWx0ZXJJbmZvKTtcblxuICAgIGNvbnN0IGZpbHRlcnNPYmogPSBmaWx0ZXJJbmZvc1xuICAgICAgLmZpbHRlcihmbHRyID0+IE9iamVjdC5rZXlzKHN0YXRlLm1ldGFEYXRhKS5zb21lKGtleSA9PiBrZXkgPT09IGZsdHIua2V5KSB8fCBjb25zb2xlLndhcm4oYE1ldGEgZGF0YSB3aXRoIGtleSAke2ZsdHIua2V5fSBub3QgZm91bmRgKSlcbiAgICAgIC5yZWR1Y2UoKGZpbHRlcnNPYmo6IHtbazogc3RyaW5nXTogYW55fSxmaWx0ZXIpPT57XG4gICAgICAgIGlmICghZmlsdGVyLmZpbHRlcklkKSB7XG4gICAgICAgICAgZmlsdGVyLmZpbHRlcklkID0gdXVpZCgpO1xuICAgICAgICB9XG4gICAgICAgIGZpbHRlcnNPYmpbZmlsdGVyLmZpbHRlcklkXSA9IGZpbHRlcjtcbiAgICAgICAgcmV0dXJuIGZpbHRlcnNPYmo7XG4gICAgICB9LHt9KTtcblxuICAgICAgY3VzdG9tRmlsdGVycy5mb3JFYWNoKCBmbHRyID0+IHtcbiAgICAgICAgaWYoIWZsdHIuZmlsdGVySWQpIHtcbiAgICAgICAgICBmbHRyLmZpbHRlcklkID0gdXVpZCgpO1xuICAgICAgICB9XG4gICAgICAgIGZpbHRlcnNPYmpbZmx0ci5maWx0ZXJJZF0gPSBmbHRyO1xuICAgICAgfSlcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBmaWx0ZXJzIDogey4uLnN0YXRlLmZpbHRlcnMsIC4uLmZpbHRlcnNPYmogfVxuICAgIH07XG4gIH1cblxuICByZWFkb25seSByZW1vdmVGaWx0ZXIgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgZmlsdGVySWQ6IHN0cmluZykgPT5cbiAgICB1cGRhdGUoc3RhdGUsIHtmaWx0ZXJzOiB7JHVuc2V0IDogW2ZpbHRlcklkIF19fSlcbiAgKTtcblxuICByZWFkb25seSByZW1vdmVGaWx0ZXJzID0gdGhpcy51cGRhdGVyKCAoc3RhdGUsIGZpbHRlcklkczogc3RyaW5nW10pID0+XG4gICAgdXBkYXRlKHN0YXRlLCB7ZmlsdGVyczogeyR1bnNldCA6IFsuLi5maWx0ZXJJZHMgXX19KVxuICApO1xuXG4gIHJlYWRvbmx5IGNsZWFyRmlsdGVycyA9IHRoaXMudXBkYXRlcigoc3RhdGUpPT5cbiAgICAoey4uLnN0YXRlLGZpbHRlcnM6e319KSlcblxuXG4gIHJlYWRvbmx5IHNvcnRlZCQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zb3J0ZWQpO1xuXG4gIGNyZWF0ZVByZVNvcnQgPSAobWV0YURhdGFzOiBEaWN0aW9uYXJ5PE1ldGFEYXRhPik6IFNvcnRbXSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMobWV0YURhdGFzKS5maWx0ZXIoKCBtZXRhRGF0YSApIDogbWV0YURhdGEgaXMgTWV0YURhdGEgJiB7cHJlU29ydDogU29ydERlZn0gPT4gISFtZXRhRGF0YS5wcmVTb3J0KVxuICAgIC5zb3J0KCh7ICBwcmVTb3J0OiBwczEgIH0sIHsgcHJlU29ydDogcHMyIH0gKSA9PiAocHMxLnByZWNlZGVuY2UgfHwgTnVtYmVyLk1BWF9WQUxVRSkgLSAoIHBzMi5wcmVjZWRlbmNlIHx8IE51bWJlci5NQVhfVkFMVUUpKVxuICAgIC5tYXAoKCB7a2V5LCBwcmVTb3J0fSApID0+ICh7IGFjdGl2ZToga2V5LCBkaXJlY3Rpb246IHByZVNvcnQuZGlyZWN0aW9uIH0pKVxuICB9XG4gIHJlYWRvbmx5IHNldFNvcnQgPSB0aGlzLnVwZGF0ZXI8e2tleTogc3RyaW5nLCBkaXJlY3Rpb24/OiBTb3J0RGlyZWN0aW9ufT4oKHN0YXRlLCB7a2V5LCBkaXJlY3Rpb259ICkgPT4ge1xuICAgIGNvbnN0IHNvcnRBcnJheSA9IHN0YXRlLnNvcnRlZC5maWx0ZXIoIHMgPT4gcy5hY3RpdmUgIT09IGtleSApO1xuICAgIGlmKGRpcmVjdGlvbikge1xuICAgICAgc29ydEFycmF5LnVuc2hpZnQoe2FjdGl2ZToga2V5LCBkaXJlY3Rpb259KTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgc29ydGVkOiBzb3J0QXJyYXksXG4gICAgfTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgc2V0QWxsU29ydCA9IHRoaXMudXBkYXRlcigoc3RhdGUsc29ydEFycmF5OlNvcnRbXSk9PntcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzb3J0ZWQ6IHNvcnRBcnJheSxcbiAgICB9O1xuICB9KTtcblxuXG4gIHVwZGF0ZVN0YXRlRnVuYyA9IChzdGF0ZTogVGFibGVTdGF0ZSwgaW5jb21pbmdUYWJsZVN0YXRlOiBQYXJ0aWFsPFRhYmxlU3RhdGU+KSA6IFRhYmxlU3RhdGUgPT4ge1xuICAgIGNvbnN0IG1ldGFEYXRhID0gc3RhdGUubWV0YURhdGE7XG4gICAgY29uc3Qgc29ydGVkID0gaW5jb21pbmdUYWJsZVN0YXRlLnNvcnRlZD8ubGVuZ3RoID8gaW5jb21pbmdUYWJsZVN0YXRlLnNvcnRlZFxuICAgICAgOiBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09PSBJbml0aWFsaXphdGlvblN0YXRlLkNyZWF0ZWQgPyB0aGlzLmNyZWF0ZVByZVNvcnQobWV0YURhdGEpIDogc3RhdGUuc29ydGVkO1xuICAgIHJldHVybiB7Li4uc3RhdGUsIC4uLmluY29taW5nVGFibGVTdGF0ZSwgbWV0YURhdGEgLCBzb3J0ZWR9O1xuICB9XG5cbiAgcmVhZG9ubHkgc2V0UGFnZVNpemUgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgcGFnZVNpemU6IG51bWJlcik9PiAoey4uLnN0YXRlLHBhZ2VTaXplfSkpO1xuXG4gIHJlYWRvbmx5IHVwZGF0ZVN0YXRlID0gdGhpcy51cGRhdGVyPFBhcnRpYWw8VGFibGVTdGF0ZT4+KHRoaXMudXBkYXRlU3RhdGVGdW5jKTtcblxuICBjbGVhblBlcnNpc3RlZFN0YXRlKHN0YXRlOiBUYWJsZVN0YXRlLHBTdGF0ZTogUGVyc2lzdGVkVGFibGVTdGF0ZSkge1xuICAgIGNvbnN0IG1ldGFzID0gT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhRGF0YSk7XG4gICAgY29uc3QgZmlsdGVycyA9IE9iamVjdC52YWx1ZXMocFN0YXRlLmZpbHRlcnMpLmZpbHRlcihmbHRyID0+IGlzQ3VzdG9tRmlsdGVyKGZsdHIpIHx8IG1ldGFzLnNvbWUobSA9PiBtLmtleSA9PT0gZmx0ci5rZXkpKS5yZWR1Y2UoKG9iajogYW55LCBmaWx0ZXIpID0+IHtcbiAgICAgIG9ialtmaWx0ZXIuZmlsdGVySWQhXSA9IHBTdGF0ZS5maWx0ZXJzW2ZpbHRlci5maWx0ZXJJZCFdO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LCB7fSk7XG4gICAgY29uc3Qgc29ydGVkID0gcFN0YXRlLnNvcnRlZC5maWx0ZXIocyA9PiBtZXRhcy5zb21lKG0gPT4gbS5rZXkgPT09IHMuYWN0aXZlKSk7XG4gICAgcmV0dXJuICh7Li4ucFN0YXRlLGZpbHRlcnMsc29ydGVkfSlcbiAgfVxuXG4gIHJlYWRvbmx5IHVwZGF0ZVN0YXRlRnJvbVBlcnNpc3RlZFN0YXRlID0gdGhpcy51cGRhdGVyKCAoIHN0YXRlOiBUYWJsZVN0YXRlLCBwZXJzaXN0ZWRTdGF0ZTogUGVyc2lzdGVkVGFibGVTdGF0ZSkgOiBUYWJsZVN0YXRlID0+IHtcbiAgICBjb25zdCBpbmNvbWluZ1RhYmxlU3RhdGU6IFBhcnRpYWw8VGFibGVTdGF0ZT4gPSB0aGlzLmNsZWFuUGVyc2lzdGVkU3RhdGUoc3RhdGUscGVyc2lzdGVkU3RhdGUpO1xuICAgIGNvbnN0IG5ld1N0YXRlID0gIHRoaXMudXBkYXRlU3RhdGVGdW5jKHN0YXRlLGluY29taW5nVGFibGVTdGF0ZSk7XG4gICAgbmV3U3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZSA9IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPT09IEluaXRpYWxpemF0aW9uU3RhdGUuTWV0YURhdGFMb2FkZWQgPyBJbml0aWFsaXphdGlvblN0YXRlLkxvYWRlZEZyb21TdG9yZSA6IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGU7XG4gICAgcmV0dXJuIG5ld1N0YXRlO1xuICB9KTtcblxuICBnZXRVc2VyRGVmaW5lZFRhYmxlU2l6ZSQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC50YWJsZS53aWR0aCk7XG4gIHNldFRhYmxlV2lkdGggPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLHdpZHRoSW5waXhlbHM6bnVtYmVyKSA9PiAoey4uLnN0YXRlLHVzZXJEZWZpbmVkOiB7Li4uc3RhdGUudXNlckRlZmluZWQsdGFibGU6e3dpZHRoOndpZHRoSW5waXhlbHN9fX0pKSA7XG5cbiAgbWVyZ2VNZXRhID0gKG9yaWc6IE1ldGFEYXRhLCBtZXJnZTogTWV0YURhdGEpOiBNZXRhRGF0YSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBvcmlnLmtleSxcbiAgICAgICAgZGlzcGxheU5hbWU6IG1lcmdlLmRpc3BsYXlOYW1lID8/IG9yaWcuZGlzcGxheU5hbWUsXG4gICAgICAgIGZpZWxkVHlwZTogbWVyZ2UuZmllbGRUeXBlIHx8IG9yaWcuZmllbGRUeXBlLFxuICAgICAgICBhZGRpdGlvbmFsOiB7Li4ub3JpZy5hZGRpdGlvbmFsLCAuLi5tZXJnZS5hZGRpdGlvbmFsfSxcbiAgICAgICAgb3JkZXI6IG1lcmdlLm9yZGVyID8/IG9yaWcub3JkZXIsXG4gICAgICAgIHByZVNvcnQ6IG1lcmdlLnByZVNvcnQgPz8gb3JpZy5wcmVTb3J0LFxuICAgICAgICBfaW50ZXJuYWxOb3RVc2VyRGVmaW5lZDogbWVyZ2UuX2ludGVybmFsTm90VXNlckRlZmluZWQgfHwgb3JpZy5faW50ZXJuYWxOb3RVc2VyRGVmaW5lZCxcbiAgICAgICAgd2lkdGg6IG1lcmdlLndpZHRoID8/IG9yaWcud2lkdGgsXG4gICAgICAgIG5vRXhwb3J0OiBtZXJnZS5ub0V4cG9ydCB8fCBvcmlnLm5vRXhwb3J0LFxuICAgICAgICBub0ZpbHRlcjogbWVyZ2Uubm9GaWx0ZXIgfHwgb3JpZy5ub0ZpbHRlcixcbiAgICAgICAgY3VzdG9tQ2VsbDogbWVyZ2UuY3VzdG9tQ2VsbCA/PyBvcmlnLmN1c3RvbUNlbGwsXG4gICAgICAgIHRyYW5zZm9ybTogbWVyZ2UudHJhbnNmb3JtID8/IG9yaWcudHJhbnNmb3JtLFxuICAgICAgICBjbGljazogbWVyZ2UuY2xpY2sgPz8gb3JpZy5jbGljayxcbiAgICB9O1xuICB9XG5cbiAgcmVhZG9ubHkgc2V0SW50aWFsaXphdGlvblN0YXRlID0gdGhpcy51cGRhdGVyKCAoc3RhdGUsIGluaXRpYWxpemF0aW9uU3RhdGU6ICBJbml0aWFsaXphdGlvblN0YXRlKSA9PiB7XG4gICAgcmV0dXJuIHsuLi5zdGF0ZSwgaW5pdGlhbGl6YXRpb25TdGF0ZX07XG4gIH0pO1xuXG4gIHJ1bk9uY2VXaGVuKHByZWRpY2F0ZTogUHJlZGljYXRlPFRhYmxlU3RhdGU+LCBmdW5jOiAoc3RhdGU6VGFibGVTdGF0ZSkgPT4gdm9pZCkge1xuICAgIGNvbnN0IG9icyA9IHRoaXMuc3RhdGUkLnBpcGUob25jZVdoZW4ocHJlZGljYXRlKSk7XG4gICAgdGhpcy5vbihvYnMsIChzdGF0ZSkgPT4ge1xuICAgICAgZnVuYyhzdGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBvblJlYWR5KCBmdW5jOiAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHZvaWQgKSB7XG4gICAgdGhpcy5ydW5PbmNlV2hlbihzdGF0ZUlzKEluaXRpYWxpemF0aW9uU3RhdGUuUmVhZHkpLGZ1bmMpO1xuICB9XG5cbiAgcmVhZG9ubHkgc2V0TWV0YURhdGEgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBtZDogTWV0YURhdGFbXSB8IE1ldGFEYXRhICkgPT4ge1xuICAgIGNvbnN0IG1ldGFEYXRhID0gKCBBcnJheS5pc0FycmF5KG1kKSA/IFsuLi5tZF0gOiBbbWRdIClcbiAgICAgIC5yZWR1Y2UoKHByZXY6IERpY3Rpb25hcnk8TWV0YURhdGE+LGN1cnIpID0+IHtcbiAgICAgICAgaWYocHJldltjdXJyLmtleV0pIHtcbiAgICAgICAgICBwcmV2W2N1cnIua2V5XSA9IHRoaXMubWVyZ2VNZXRhKHByZXZbY3Vyci5rZXldLGN1cnIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByZXZbY3Vyci5rZXldID0gY3VycjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgIH0gLHt9KTtcbiAgICBsZXQgc29ydGVkID0gc3RhdGUuc29ydGVkO1xuICAgIGlmKHNvcnRlZC5sZW5ndGggPT09IDApIHtcbiAgICAgIHNvcnRlZCA9IHRoaXMuY3JlYXRlUHJlU29ydChtZXRhRGF0YSk7XG4gICAgfVxuICAgIGNvbnN0IG9yZGVyID0gdGhpcy5pbml0aWFsaXplT3JkZXIoc3RhdGUsIG1ldGFEYXRhKTtcbiAgICBjb25zdCBpbml0aWFsaXphdGlvblN0YXRlID0gc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZSA9PSBJbml0aWFsaXphdGlvblN0YXRlLkNyZWF0ZWQgPyAgSW5pdGlhbGl6YXRpb25TdGF0ZS5NZXRhRGF0YUxvYWRlZCA6IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGU7XG4gICAgcmV0dXJuIHsuLi5zdGF0ZSwgaW5pdGlhbGl6YXRpb25TdGF0ZSwgbWV0YURhdGEsIHNvcnRlZCwgdXNlckRlZmluZWQ6ey4uLnN0YXRlLnVzZXJEZWZpbmVkLG9yZGVyOm9yZGVyfX07XG4gIH0pO1xuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZU9yZGVyID0gKHN0YXRlOlRhYmxlU3RhdGUsbWRzOiBEaWN0aW9uYXJ5PE1ldGFEYXRhPikgOiBEaWN0aW9uYXJ5PG51bWJlcj4gPT4ge1xuICAgIGNvbnN0IHZpZXdhYmxlTWV0YURhdGFBcnIgPSBPYmplY3QudmFsdWVzKG1kcykuZmlsdGVyKGEgPT4gYS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pO1xuICAgIGxldCB1c2VyRGVmaW5lZE9yZGVyID0gc3RhdGUudXNlckRlZmluZWQub3JkZXI7XG4gICAgaWYodmlld2FibGVNZXRhRGF0YUFyci5zb21lKG1ldGEgPT4gdXNlckRlZmluZWRPcmRlclttZXRhLmtleV0gPT0gbnVsbCkpe1xuICAgICAgcmV0dXJuIHt9XG4gICAgfVxuICAgIHJldHVybiB1c2VyRGVmaW5lZE9yZGVyO1xuICB9XG5cbiAgdG9nZ2xlQ29sbGFwc2VIZWFkZXIgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlKT0+e1xuICAgIGNvbnN0IHRhYmxlU2V0dGluZ3MgPSB7Li4uc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5nc307XG4gICAgdGFibGVTZXR0aW5ncy5jb2xsYXBzZUhlYWRlciA9ICF0YWJsZVNldHRpbmdzLmNvbGxhcHNlSGVhZGVyO1xuICAgIHJldHVybiAoey4uLnN0YXRlLHBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgOiBuZXcgUGVzcnNpc3RlZFRhYmxlU2V0dGluZ3ModGFibGVTZXR0aW5ncyl9KTtcbiAgfSlcblxuICB0b2dnbGVDb2xsYXBzZUZvb3RlciA9IHRoaXMudXBkYXRlcigoc3RhdGUpPT57XG4gICAgY29uc3QgdGFibGVTZXR0aW5ncyA9IHsuLi5zdGF0ZS5wZXJzaXN0ZWRUYWJsZVNldHRpbmdzfTtcbiAgICB0YWJsZVNldHRpbmdzLmNvbGxhcHNlRm9vdGVyID0gIXRhYmxlU2V0dGluZ3MuY29sbGFwc2VGb290ZXI7XG4gICAgcmV0dXJuICh7Li4uc3RhdGUscGVyc2lzdGVkVGFibGVTZXR0aW5ncyA6IG5ldyBQZXNyc2lzdGVkVGFibGVTZXR0aW5ncyh0YWJsZVNldHRpbmdzKX0pO1xuICB9KVxuXG5cbiAgc2V0VGFibGVTZXR0aW5ncyA9IHRoaXMudXBkYXRlcigoc3RhdGUsc2V0dGluZ3M6R2VuZXJhbFRhYmxlU2V0dGluZ3MpPT57XG4gICAgY29uc3QgczpUYWJsZVN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBwZXJzaXN0ZWRUYWJsZVNldHRpbmdzIDogbmV3IFBlc3JzaXN0ZWRUYWJsZVNldHRpbmdzKHNldHRpbmdzKSxcbiAgICAgIG5vdFBlcnNpc2l0ZWRUYWJsZVNldHRpbmdzIDogbmV3IE5vdFBlcnNpc2l0ZWRUYWJsZVNldHRpbmdzKHNldHRpbmdzKVxuICAgICAgfTtcbiAgICByZXR1cm4gcztcbiAgfSk7XG5cbiAgdGFibGVTZXR0aW5ncyQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiB7XG4gICAgY29uc3QgdHMgOiBQZXNyc2lzdGVkVGFibGVTZXR0aW5ncyAmIE5vdFBlcnNpc2l0ZWRUYWJsZVNldHRpbmdzID1cbiAgICAgIHsuLi5zdGF0ZS5wZXJzaXN0ZWRUYWJsZVNldHRpbmdzLC4uLnN0YXRlLm5vdFBlcnNpc2l0ZWRUYWJsZVNldHRpbmdzfTtcbiAgICByZXR1cm4gdHM7XG4gIH0pXG59XG5leHBvcnQgY29uc3Qgb3JkZXJWaWV3YWJsZU1ldGFEYXRhID0gKHN0YXRlOlRhYmxlU3RhdGUpID0+IG9yZGVyTWV0YURhdGEoc3RhdGUpLmZpbHRlcihhID0+IGEuZmllbGRUeXBlICE9PSBGaWVsZFR5cGUuSGlkZGVuKTtcblxuZXhwb3J0IGNvbnN0IG9yZGVyTWV0YURhdGEgPSAoc3RhdGU6VGFibGVTdGF0ZSkgPT4ge1xuICBjb25zdCB1c2VyT3JkZXJBcnIgPSBPYmplY3QuZW50cmllcyhzdGF0ZS51c2VyRGVmaW5lZC5vcmRlcik7XG4gIHJldHVybiB1c2VyT3JkZXJBcnIubGVuZ3RoID9cbiAgIE9iamVjdC52YWx1ZXMoc3RhdGUubWV0YURhdGEpLnNvcnQoKGEsYik9PiBzdGF0ZS51c2VyRGVmaW5lZC5vcmRlclthLmtleV0gLSBzdGF0ZS51c2VyRGVmaW5lZC5vcmRlcltiLmtleV0pXG4gICA6XG4gICBPYmplY3QudmFsdWVzKHN0YXRlLm1ldGFEYXRhKS5zb3J0KChhLGIpPT4gYS5vcmRlciEgLSBiLm9yZGVyISlcbn1cbiJdfQ==
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jbGFzc2VzL3RhYmxlLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFtQyxNQUFNLGNBQWMsQ0FBQztBQUN2RyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQXNCLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkYsT0FBTyxFQUE0QixjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBRztBQUN6RCxPQUFPLE1BQU0sTUFBTSxxQkFBcUIsQ0FBQztBQUV6QyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUF3QiwwQkFBMEIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQUU3SCxNQUFNLFVBQVUsT0FBTyxDQUFDLG1CQUF3QztJQUM5RCxPQUFPLENBQUMsS0FBaUIsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLG1CQUFtQixLQUFLLG1CQUFtQixDQUFDO0FBQ2xGLENBQUM7QUFLRCxNQUFN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QUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNHLENBQUM7WUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBTSxHQUFHLENBQUMsQ0FBQyxLQUFNLENBQUMsQ0FBQTtBQUNsRSxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWVsZFR5cGUsIE1ldGFEYXRhLCBTb3J0RGVmIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlZmF1bHRUYWJsZVN0YXRlLCBJbml0aWFsaXphdGlvblN0YXRlLCBQZXJzaXN0ZWRUYWJsZVN0YXRlLCBUYWJsZVN0YXRlIH0gZnJvbSAnLi9UYWJsZVN0YXRlJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJsZUJ1aWxkZXJDb25maWcsIFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuIH0gZnJvbSAnLi9UYWJsZUJ1aWxkZXJDb25maWcnO1xuaW1wb3J0IHsgQ3VzdG9tRmlsdGVyLCBGaWx0ZXJJbmZvLCBpc0N1c3RvbUZpbHRlciwgaXNGaWx0ZXJJbmZvIH0gZnJvbSAnLi9maWx0ZXItaW5mbyc7XG5pbXBvcnQgeyBTb3J0LCBTb3J0RGlyZWN0aW9uIH0gIGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnIDtcbmltcG9ydCB7IENvbXBvbmVudFN0b3JlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50LXN0b3JlJyAgO1xuaW1wb3J0IHVwZGF0ZSBmcm9tICdpbW11dGFiaWxpdHktaGVscGVyJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2RpY3Rpb25hcnknO1xuaW1wb3J0IHsgZmlsdGVyLCBsYXN0LCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBub3ROdWxsLCBvbmNlV2hlbiB9IGZyb20gJy4uLy4uL3J4anMvcnhqcy1vcGVyYXRvcnMnO1xuaW1wb3J0IHsgR2VuZXJhbFRhYmxlU2V0dGluZ3MsIE5vdFBlcnNpc2l0ZWRUYWJsZVNldHRpbmdzLCBQZXNyc2lzdGVkVGFibGVTZXR0aW5ncyB9IGZyb20gJy4vdGFibGUtYnVpbGRlci1nZW5lcmFsLXNldHRpbmdzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlSXMoaW5pdGlhbGl6YXRpb25TdGF0ZTogSW5pdGlhbGl6YXRpb25TdGF0ZSkge1xuICByZXR1cm4gKHN0YXRlOiBUYWJsZVN0YXRlKSA9PiBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09PSBpbml0aWFsaXphdGlvblN0YXRlO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVTdG9yZSBleHRlbmRzIENvbXBvbmVudFN0b3JlPFRhYmxlU3RhdGU+IHtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuKSBjb25maWc6IFRhYmxlQnVpbGRlckNvbmZpZykge1xuICAgc3VwZXIoIHsgLi4uZGVmYXVsdFRhYmxlU3RhdGUsIC4uLmNvbmZpZy5kZWZhdWx0VGFibGVTdGF0ZX0pO1xuICB9XG5cbiAgZ2V0U2F2YWJsZVN0YXRlKCkgOiBPYnNlcnZhYmxlPFBlcnNpc3RlZFRhYmxlU3RhdGU+IHtcbiAgICByZXR1cm4gIHRoaXMuc3RhdGUkLnBpcGUoXG4gICAgICBtYXAoIHMgPT4ge1xuICAgICAgICBjb25zdCBzYXZhYmxlU3RhdGUgPSB7Li4uc30gYXMgUGFydGlhbDxUYWJsZVN0YXRlPlxuICAgICAgICBkZWxldGUgc2F2YWJsZVN0YXRlLm1ldGFEYXRhO1xuICAgICAgICBkZWxldGUgc2F2YWJsZVN0YXRlLm5vdFBlcnNpc2l0ZWRUYWJsZVNldHRpbmdzO1xuICAgICAgICByZXR1cm4gc2F2YWJsZVN0YXRlIGFzIFBlcnNpc3RlZFRhYmxlU3RhdGU7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBvbiA9IDxWPihzcmNPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFY+LCBmdW5jOiAob2JqOiBWKSA9PiB2b2lkKSA9PiB7XG4gICAgdGhpcy5lZmZlY3QoKCkgPT4gc3JjT2JzZXJ2YWJsZS5waXBlKFxuICAgICAgdGFwKGZ1bmMpXG4gICAgKSlcbiAgfVxuXG4gIG9uTGFzdChjYWxsYmFjazogKHN0YXRlOiBUYWJsZVN0YXRlKSA9PiB2b2lkICkge1xuICAgIHRoaXMub24odGhpcy5zdGF0ZSQucGlwZShsYXN0KCkpLGNhbGxiYWNrKTtcbiAgfVxuXG4gIHJlYWRvbmx5IG1ldGFEYXRhJCA9IHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5tZXRhRGF0YSk7XG5cbiAgcmVhZG9ubHkgbWV0YURhdGFBcnJheSQgPSB0aGlzLnNlbGVjdChcbiAgICB0aGlzLnN0YXRlJCxcbiAgICBvcmRlck1ldGFEYXRhXG4gICk7XG5cbiAgZ2V0TWV0YURhdGEkID0gKGtleTogc3RyaW5nKSA6IE9ic2VydmFibGU8TWV0YURhdGE+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3QoIHN0YXRlID0+IHN0YXRlLm1ldGFEYXRhW2tleV0gICkucGlwZShcbiAgICAgIHRhcChtZXRhID0+IHtpZighbWV0YSljb25zb2xlLndhcm4oYE1ldGEgZGF0YSB3aXRoIGtleSAke2tleX0gbm90IGZvdW5kYCl9KSxcbiAgICAgIG5vdE51bGwoKSlcbiAgfVxuXG4gIGdldFVzZXJEZWZpbmVkV2lkdGgkID0gKGtleTpzdHJpbmcpID0+IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnVzZXJEZWZpbmVkLndpZHRoc1trZXldKTtcbiAgZ2V0VXNlckRlZmluZWRXaWR0aHMkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUudXNlckRlZmluZWQud2lkdGhzKTtcblxuICBwcml2YXRlIGRpc3BsYXllZENvbHVtbnMgPSAgKHN0YXRlOlRhYmxlU3RhdGUpID0+IG9yZGVyTWV0YURhdGEoc3RhdGUpLm1hcChtZCA9PiBtZC5rZXkpXG4gICAgLmZpbHRlcihrZXkgPT4gIXN0YXRlLmhpZGRlbktleXMuaW5jbHVkZXMoa2V5KSAmJiBzdGF0ZS5tZXRhRGF0YVtrZXldLmZpZWxkVHlwZSAhPT0gRmllbGRUeXBlLkhpZGRlbik7XG4gIHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnMkID0gdGhpcy5zZWxlY3QodGhpcy5kaXNwbGF5ZWRDb2x1bW5zKTtcbiAgcmVhZG9ubHkgaGlkZUNvbHVtbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogc3RyaW5nKSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIGhpZGRlbktleXM6IFsuLi5zdGF0ZS5oaWRkZW5LZXlzLmZpbHRlciggayA9PiBrICE9PSBrZXkpLCBrZXldLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgcmVzZXRTdGF0ZSA9IHRoaXMudXBkYXRlcigoc3RhdGUpID0+IHtcbiAgICBjb25zdCBoaWRkZW5Db2x1bW5zID0gT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhRGF0YSlcbiAgICAgIC5maWx0ZXIobWQgPT4gbWQuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuSGlkZGVuKVxuICAgICAgLm1hcChtZCA9PiBtZC5rZXkpO1xuICAgIGNvbnN0IHNvcnRlZCA9IHRoaXMuY3JlYXRlUHJlU29ydChzdGF0ZS5tZXRhRGF0YSk7XG4gICAgcmV0dXJuIHVwZGF0ZShzdGF0ZSwge1xuICAgICAgIGhpZGRlbktleXM6IHsgJHNldDogWy4uLmhpZGRlbkNvbHVtbnNdIH0sXG4gICAgICAgZmlsdGVyczogeyAkc2V0OiB7fSB9LFxuICAgICAgIHNvcnRlZDogeyRzZXQ6IHNvcnRlZH0sXG4gICAgICAgdXNlckRlZmluZWQgOiB7JHNldDoge3dpZHRoczp7fSxvcmRlcjp7fSx0YWJsZTp7fX19LFxuICAgICAgfSk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNob3dDb2x1bW4gPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBrZXk6IHN0cmluZykgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBoaWRkZW5LZXlzOiBzdGF0ZS5oaWRkZW5LZXlzLmZpbHRlciggayA9PiBrICE9PSBrZXkpLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgc2V0SGlkZGVuQ29sdW1ucyA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGRpc3BsYXlDb2xzOiB7a2V5OiBzdHJpbmcsIHZpc2libGU6IGJvb2xlYW59W10pID0+IHtcblxuICAgIHZhciBoaWRkZW5LZXlzU2V0PSBuZXcgU2V0PHN0cmluZz4oXG4gICAgICBbXG4gICAgICAgIC4uLmRpc3BsYXlDb2xzLmZpbHRlcihjb2wgPT4gIWNvbC52aXNpYmxlKS5tYXAoY29sID0+IGNvbC5rZXkpLFxuICAgICAgICAuLi5PYmplY3QudmFsdWVzKHN0YXRlLm1ldGFEYXRhKS5maWx0ZXIobWQgPT4gbWQuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuSGlkZGVuKS5tYXAobWQgPT4gbWQua2V5KVxuICAgICAgXVxuICAgICk7XG5cbiAgICByZXR1cm4gdXBkYXRlKCBzdGF0ZSAsIHsgaGlkZGVuS2V5czogeyRzZXQ6IFsuLi5oaWRkZW5LZXlzU2V0XX19KTtcbiAgfSk7XG5cblxuICBzZXRVc2VyRGVmaW5lZFdpZHRoID0gdGhpcy51cGRhdGVyKChzdGF0ZSxjb2xXaWR0aHM6e2tleTogc3RyaW5nLCB3aWR0aEluUGl4ZWw6bnVtYmVyfVtdKSA9PiB7XG4gICAgY29uc3QgdXNlckRlZmluZWRXaWR0aHMgPSB7Li4uc3RhdGUudXNlckRlZmluZWQud2lkdGhzfTtcbiAgICBjb2xXaWR0aHMuZm9yRWFjaChjdyA9PiB7XG4gICAgICB1c2VyRGVmaW5lZFdpZHRoc1tjdy5rZXldID0gY3cud2lkdGhJblBpeGVsO1xuICAgIH0pO1xuICAgIHJldHVybiB7Li4uc3RhdGUsIHVzZXJEZWZpbmVkOiB7Li4uc3RhdGUudXNlckRlZmluZWQsd2lkdGhzOnVzZXJEZWZpbmVkV2lkdGhzfX07XG4gIH0pO1xuXG4gIHNldFVzZXJEZWZpbmVkT3JkZXIgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLG1vdmVkOntuZXdPcmRlcjpudW1iZXIsb2xkT3JkZXI6bnVtYmVyfSk9PntcbiAgICBjb25zdCB7bmV3T3JkZXIgLG9sZE9yZGVyfSA9IG1vdmVkO1xuICAgIGNvbnN0IG1kc0FyciA9IG9yZGVyVmlld2FibGVNZXRhRGF0YShzdGF0ZSk7XG4gICAgbW92ZUl0ZW1JbkFycmF5KG1kc0FycixvbGRPcmRlcixuZXdPcmRlcik7XG5cbiAgICBjb25zdCB1c2VyRGVmaW5lZE9yZGVyID0gbWRzQXJyLnJlZHVjZSgoYWdncmVnYXRlOiBhbnksY3VycmVudCxpbmRleCkgPT4ge1xuICAgICAgYWdncmVnYXRlW2N1cnJlbnQua2V5XSA9IGluZGV4O1xuICAgICAgcmV0dXJuIGFnZ3JlZ2F0ZVxuICAgIH0se30pO1xuICAgIHJldHVybih7Li4uc3RhdGUsIHVzZXJEZWZpbmVkOnsuLi5zdGF0ZS51c2VyRGVmaW5lZCxvcmRlcjp1c2VyRGVmaW5lZE9yZGVyfX0pXG4gIH0pXG5cblxuICByZWFkb25seSBmaWx0ZXJzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmZpbHRlcnMgKTtcblxuICByZWFkb25seSBnZXRGaWx0ZXIkID0gKGZpbHRlcklkOiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxGaWx0ZXJJbmZvIHwgQ3VzdG9tRmlsdGVyIHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5maWx0ZXJzW2ZpbHRlcklkXSApO1xuICB9XG4gIHJlYWRvbmx5IGFkZEZpbHRlciA9IHRoaXMudXBkYXRlciggKHN0YXRlLCBmaWx0ZXI6IEZpbHRlckluZm8gfCBDdXN0b21GaWx0ZXIgKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYWRkRmlsdGVyc1RvU3RhdGUoc3RhdGUsIFtmaWx0ZXJdKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgYWRkRmlsdGVycyA9IHRoaXMudXBkYXRlcigoc3RhdGUsZmlsdGVyczooRmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlciApW10pPT57XG4gICAgcmV0dXJuIHRoaXMuYWRkRmlsdGVyc1RvU3RhdGUoc3RhdGUsIGZpbHRlcnMpO1xuICB9KVxuXG5cbiAgcHJpdmF0ZSBhZGRGaWx0ZXJzVG9TdGF0ZSA9IChzdGF0ZTpUYWJsZVN0YXRlLGZpbHRlcnM6KEZpbHRlckluZm8gfCBDdXN0b21GaWx0ZXIpW10pIDogVGFibGVTdGF0ZSA9PiB7XG5cbiAgICB2YXIgY3VzdG9tRmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKCAgaXNDdXN0b21GaWx0ZXIgKTtcblxuICAgIHZhciBmaWx0ZXJJbmZvcyA9IGZpbHRlcnMuZmlsdGVyKGlzRmlsdGVySW5mbyk7XG5cbiAgICBjb25zdCBmaWx0ZXJzT2JqID0gZmlsdGVySW5mb3NcbiAgICAgIC5maWx0ZXIoZmx0ciA9PiBPYmplY3Qua2V5cyhzdGF0ZS5tZXRhRGF0YSkuc29tZShrZXkgPT4ga2V5ID09PSBmbHRyLmtleSkgfHwgY29uc29sZS53YXJuKGBNZXRhIGRhdGEgd2l0aCBrZXkgJHtmbHRyLmtleX0gbm90IGZvdW5kYCkpXG4gICAgICAucmVkdWNlKChmaWx0ZXJzT2JqOiB7W2s6IHN0cmluZ106IGFueX0sZmlsdGVyKT0+e1xuICAgICAgICBpZiAoIWZpbHRlci5maWx0ZXJJZCkge1xuICAgICAgICAgIGZpbHRlci5maWx0ZXJJZCA9IHV1aWQoKTtcbiAgICAgICAgfVxuICAgICAgICBmaWx0ZXJzT2JqW2ZpbHRlci5maWx0ZXJJZF0gPSBmaWx0ZXI7XG4gICAgICAgIHJldHVybiBmaWx0ZXJzT2JqO1xuICAgICAgfSx7fSk7XG5cbiAgICAgIGN1c3RvbUZpbHRlcnMuZm9yRWFjaCggZmx0ciA9PiB7XG4gICAgICAgIGlmKCFmbHRyLmZpbHRlcklkKSB7XG4gICAgICAgICAgZmx0ci5maWx0ZXJJZCA9IHV1aWQoKTtcbiAgICAgICAgfVxuICAgICAgICBmaWx0ZXJzT2JqW2ZsdHIuZmlsdGVySWRdID0gZmx0cjtcbiAgICAgIH0pXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgZmlsdGVycyA6IHsuLi5zdGF0ZS5maWx0ZXJzLCAuLi5maWx0ZXJzT2JqIH1cbiAgICB9O1xuICB9XG5cbiAgcmVhZG9ubHkgcmVtb3ZlRmlsdGVyID0gdGhpcy51cGRhdGVyKCAoc3RhdGUsIGZpbHRlcklkOiBzdHJpbmcpID0+XG4gICAgdXBkYXRlKHN0YXRlLCB7ZmlsdGVyczogeyR1bnNldCA6IFtmaWx0ZXJJZCBdfX0pXG4gICk7XG5cbiAgcmVhZG9ubHkgcmVtb3ZlRmlsdGVycyA9IHRoaXMudXBkYXRlciggKHN0YXRlLCBmaWx0ZXJJZHM6IHN0cmluZ1tdKSA9PlxuICAgIHVwZGF0ZShzdGF0ZSwge2ZpbHRlcnM6IHskdW5zZXQgOiBbLi4uZmlsdGVySWRzIF19fSlcbiAgKTtcblxuICByZWFkb25seSBjbGVhckZpbHRlcnMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlKT0+XG4gICAgKHsuLi5zdGF0ZSxmaWx0ZXJzOnt9fSkpXG5cblxuICByZWFkb25seSBzb3J0ZWQkID0gdGhpcy5zdGF0ZSQucGlwZShcbiAgICBmaWx0ZXIoc3RhdGVJcyhJbml0aWFsaXphdGlvblN0YXRlLlJlYWR5KSksXG4gICAgbWFwKCBzdGF0ZSA9PiBzdGF0ZS5zb3J0ZWQpXG4gICk7XG5cbiAgY3JlYXRlUHJlU29ydCA9IChtZXRhRGF0YXM6IERpY3Rpb25hcnk8TWV0YURhdGE+KTogU29ydFtdID0+IHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhtZXRhRGF0YXMpLmZpbHRlcigoIG1ldGFEYXRhICkgOiBtZXRhRGF0YSBpcyBNZXRhRGF0YSAmIHtwcmVTb3J0OiBTb3J0RGVmfSA9PiAhIW1ldGFEYXRhLnByZVNvcnQpXG4gICAgLnNvcnQoKHsgIHByZVNvcnQ6IHBzMSAgfSwgeyBwcmVTb3J0OiBwczIgfSApID0+IChwczEucHJlY2VkZW5jZSB8fCBOdW1iZXIuTUFYX1ZBTFVFKSAtICggcHMyLnByZWNlZGVuY2UgfHwgTnVtYmVyLk1BWF9WQUxVRSkpXG4gICAgLm1hcCgoIHtrZXksIHByZVNvcnR9ICkgPT4gKHsgYWN0aXZlOiBrZXksIGRpcmVjdGlvbjogcHJlU29ydC5kaXJlY3Rpb24gfSkpXG4gIH1cbiAgcmVhZG9ubHkgc2V0U29ydCA9IHRoaXMudXBkYXRlcjx7a2V5OiBzdHJpbmcsIGRpcmVjdGlvbj86IFNvcnREaXJlY3Rpb259Pigoc3RhdGUsIHtrZXksIGRpcmVjdGlvbn0gKSA9PiB7XG4gICAgY29uc3Qgc29ydEFycmF5ID0gc3RhdGUuc29ydGVkLmZpbHRlciggcyA9PiBzLmFjdGl2ZSAhPT0ga2V5ICk7XG4gICAgaWYoZGlyZWN0aW9uKSB7XG4gICAgICBzb3J0QXJyYXkudW5zaGlmdCh7YWN0aXZlOiBrZXksIGRpcmVjdGlvbn0pO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzb3J0ZWQ6IHNvcnRBcnJheSxcbiAgICB9O1xuICB9KTtcblxuICByZWFkb25seSBzZXRBbGxTb3J0ID0gdGhpcy51cGRhdGVyKChzdGF0ZSxzb3J0QXJyYXk6U29ydFtdKT0+e1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHNvcnRlZDogc29ydEFycmF5LFxuICAgIH07XG4gIH0pO1xuXG5cbiAgdXBkYXRlU3RhdGVGdW5jID0gKHN0YXRlOiBUYWJsZVN0YXRlLCBpbmNvbWluZ1RhYmxlU3RhdGU6IFBhcnRpYWw8VGFibGVTdGF0ZT4pIDogVGFibGVTdGF0ZSA9PiB7XG4gICAgY29uc3QgbWV0YURhdGEgPSBzdGF0ZS5tZXRhRGF0YTtcbiAgICBjb25zdCBzb3J0ZWQgPSBpbmNvbWluZ1RhYmxlU3RhdGUuc29ydGVkPy5sZW5ndGggPyBpbmNvbWluZ1RhYmxlU3RhdGUuc29ydGVkXG4gICAgICA6IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPT09IEluaXRpYWxpemF0aW9uU3RhdGUuQ3JlYXRlZCA/IHRoaXMuY3JlYXRlUHJlU29ydChtZXRhRGF0YSkgOiBzdGF0ZS5zb3J0ZWQ7XG4gICAgcmV0dXJuIHsuLi5zdGF0ZSwgLi4uaW5jb21pbmdUYWJsZVN0YXRlLCBtZXRhRGF0YSAsIHNvcnRlZH07XG4gIH1cblxuICByZWFkb25seSBzZXRQYWdlU2l6ZSA9IHRoaXMudXBkYXRlciggKHN0YXRlLCBwYWdlU2l6ZTogbnVtYmVyKT0+ICh7Li4uc3RhdGUscGFnZVNpemV9KSk7XG5cbiAgcmVhZG9ubHkgdXBkYXRlU3RhdGUgPSB0aGlzLnVwZGF0ZXI8UGFydGlhbDxUYWJsZVN0YXRlPj4odGhpcy51cGRhdGVTdGF0ZUZ1bmMpO1xuXG4gIGNsZWFuUGVyc2lzdGVkU3RhdGUoc3RhdGU6IFRhYmxlU3RhdGUscFN0YXRlOiBQZXJzaXN0ZWRUYWJsZVN0YXRlKSB7XG4gICAgY29uc3QgbWV0YXMgPSBPYmplY3QudmFsdWVzKHN0YXRlLm1ldGFEYXRhKTtcbiAgICBjb25zdCBmaWx0ZXJzID0gT2JqZWN0LnZhbHVlcyhwU3RhdGUuZmlsdGVycykuZmlsdGVyKGZsdHIgPT4gaXNDdXN0b21GaWx0ZXIoZmx0cikgfHwgbWV0YXMuc29tZShtID0+IG0ua2V5ID09PSBmbHRyLmtleSkpLnJlZHVjZSgob2JqOiBhbnksIGZpbHRlcikgPT4ge1xuICAgICAgb2JqW2ZpbHRlci5maWx0ZXJJZCFdID0gcFN0YXRlLmZpbHRlcnNbZmlsdGVyLmZpbHRlcklkIV07XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sIHt9KTtcbiAgICBjb25zdCBzb3J0ZWQgPSBwU3RhdGUuc29ydGVkLmZpbHRlcihzID0+IG1ldGFzLnNvbWUobSA9PiBtLmtleSA9PT0gcy5hY3RpdmUpKTtcbiAgICByZXR1cm4gKHsuLi5wU3RhdGUsZmlsdGVycyxzb3J0ZWR9KVxuICB9XG5cbiAgcmVhZG9ubHkgdXBkYXRlU3RhdGVGcm9tUGVyc2lzdGVkU3RhdGUgPSB0aGlzLnVwZGF0ZXIoICggc3RhdGU6IFRhYmxlU3RhdGUsIHBlcnNpc3RlZFN0YXRlOiBQZXJzaXN0ZWRUYWJsZVN0YXRlKSA6IFRhYmxlU3RhdGUgPT4ge1xuICAgIGNvbnN0IGluY29taW5nVGFibGVTdGF0ZTogUGFydGlhbDxUYWJsZVN0YXRlPiA9IHRoaXMuY2xlYW5QZXJzaXN0ZWRTdGF0ZShzdGF0ZSxwZXJzaXN0ZWRTdGF0ZSk7XG4gICAgY29uc3QgbmV3U3RhdGUgPSAgdGhpcy51cGRhdGVTdGF0ZUZ1bmMoc3RhdGUsaW5jb21pbmdUYWJsZVN0YXRlKTtcbiAgICBuZXdTdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID0gc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZSA9PT0gSW5pdGlhbGl6YXRpb25TdGF0ZS5NZXRhRGF0YUxvYWRlZCA/IEluaXRpYWxpemF0aW9uU3RhdGUuTG9hZGVkRnJvbVN0b3JlIDogc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZTtcbiAgICByZXR1cm4gbmV3U3RhdGU7XG4gIH0pO1xuXG4gIGdldFVzZXJEZWZpbmVkVGFibGVTaXplJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnVzZXJEZWZpbmVkLnRhYmxlLndpZHRoKTtcbiAgc2V0VGFibGVXaWR0aCA9IHRoaXMudXBkYXRlcigoc3RhdGUsd2lkdGhJbnBpeGVsczpudW1iZXIpID0+ICh7Li4uc3RhdGUsdXNlckRlZmluZWQ6IHsuLi5zdGF0ZS51c2VyRGVmaW5lZCx0YWJsZTp7d2lkdGg6d2lkdGhJbnBpeGVsc319fSkpIDtcblxuICBtZXJnZU1ldGEgPSAob3JpZzogTWV0YURhdGEsIG1lcmdlOiBNZXRhRGF0YSk6IE1ldGFEYXRhID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IG9yaWcua2V5LFxuICAgICAgICBkaXNwbGF5TmFtZTogbWVyZ2UuZGlzcGxheU5hbWUgPz8gb3JpZy5kaXNwbGF5TmFtZSxcbiAgICAgICAgZmllbGRUeXBlOiBtZXJnZS5maWVsZFR5cGUgfHwgb3JpZy5maWVsZFR5cGUsXG4gICAgICAgIGFkZGl0aW9uYWw6IHsuLi5vcmlnLmFkZGl0aW9uYWwsIC4uLm1lcmdlLmFkZGl0aW9uYWx9LFxuICAgICAgICBvcmRlcjogbWVyZ2Uub3JkZXIgPz8gb3JpZy5vcmRlcixcbiAgICAgICAgcHJlU29ydDogbWVyZ2UucHJlU29ydCA/PyBvcmlnLnByZVNvcnQsXG4gICAgICAgIF9pbnRlcm5hbE5vdFVzZXJEZWZpbmVkOiBtZXJnZS5faW50ZXJuYWxOb3RVc2VyRGVmaW5lZCB8fCBvcmlnLl9pbnRlcm5hbE5vdFVzZXJEZWZpbmVkLFxuICAgICAgICB3aWR0aDogbWVyZ2Uud2lkdGggPz8gb3JpZy53aWR0aCxcbiAgICAgICAgbm9FeHBvcnQ6IG1lcmdlLm5vRXhwb3J0IHx8IG9yaWcubm9FeHBvcnQsXG4gICAgICAgIG5vRmlsdGVyOiBtZXJnZS5ub0ZpbHRlciB8fCBvcmlnLm5vRmlsdGVyLFxuICAgICAgICBjdXN0b21DZWxsOiBtZXJnZS5jdXN0b21DZWxsID8/IG9yaWcuY3VzdG9tQ2VsbCxcbiAgICAgICAgdHJhbnNmb3JtOiBtZXJnZS50cmFuc2Zvcm0gPz8gb3JpZy50cmFuc2Zvcm0sXG4gICAgICAgIGNsaWNrOiBtZXJnZS5jbGljayA/PyBvcmlnLmNsaWNrLFxuICAgIH07XG4gIH1cblxuICByZWFkb25seSBzZXRJbnRpYWxpemF0aW9uU3RhdGUgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgaW5pdGlhbGl6YXRpb25TdGF0ZTogIEluaXRpYWxpemF0aW9uU3RhdGUpID0+IHtcbiAgICByZXR1cm4gey4uLnN0YXRlLCBpbml0aWFsaXphdGlvblN0YXRlfTtcbiAgfSk7XG5cbiAgcnVuT25jZVdoZW4ocHJlZGljYXRlOiBQcmVkaWNhdGU8VGFibGVTdGF0ZT4sIGZ1bmM6IChzdGF0ZTpUYWJsZVN0YXRlKSA9PiB2b2lkKSB7XG4gICAgY29uc3Qgb2JzID0gdGhpcy5zdGF0ZSQucGlwZShvbmNlV2hlbihwcmVkaWNhdGUpKTtcbiAgICB0aGlzLm9uKG9icywgKHN0YXRlKSA9PiB7XG4gICAgICBmdW5jKHN0YXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uUmVhZHkoIGZ1bmM6IChzdGF0ZTogVGFibGVTdGF0ZSkgPT4gdm9pZCApIHtcbiAgICB0aGlzLnJ1bk9uY2VXaGVuKHN0YXRlSXMoSW5pdGlhbGl6YXRpb25TdGF0ZS5SZWFkeSksZnVuYyk7XG4gIH1cblxuICByZWFkb25seSBzZXRNZXRhRGF0YSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIG1kOiBNZXRhRGF0YVtdIHwgTWV0YURhdGEgKSA9PiB7XG4gICAgY29uc3QgbWV0YURhdGEgPSAoIEFycmF5LmlzQXJyYXkobWQpID8gWy4uLm1kXSA6IFttZF0gKVxuICAgICAgLnJlZHVjZSgocHJldjogRGljdGlvbmFyeTxNZXRhRGF0YT4sY3VycikgPT4ge1xuICAgICAgICBpZihwcmV2W2N1cnIua2V5XSkge1xuICAgICAgICAgIHByZXZbY3Vyci5rZXldID0gdGhpcy5tZXJnZU1ldGEocHJldltjdXJyLmtleV0sY3Vycik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJldltjdXJyLmtleV0gPSBjdXJyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgfSAse30pO1xuICAgIGxldCBzb3J0ZWQgPSBzdGF0ZS5zb3J0ZWQ7XG4gICAgaWYoc29ydGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgc29ydGVkID0gdGhpcy5jcmVhdGVQcmVTb3J0KG1ldGFEYXRhKTtcbiAgICB9XG4gICAgY29uc3Qgb3JkZXIgPSB0aGlzLmluaXRpYWxpemVPcmRlcihzdGF0ZSwgbWV0YURhdGEpO1xuICAgIGNvbnN0IGluaXRpYWxpemF0aW9uU3RhdGUgPSBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09IEluaXRpYWxpemF0aW9uU3RhdGUuQ3JlYXRlZCA/ICBJbml0aWFsaXphdGlvblN0YXRlLk1ldGFEYXRhTG9hZGVkIDogc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZTtcbiAgICByZXR1cm4gey4uLnN0YXRlLCBpbml0aWFsaXphdGlvblN0YXRlLCBtZXRhRGF0YSwgc29ydGVkLCB1c2VyRGVmaW5lZDp7Li4uc3RhdGUudXNlckRlZmluZWQsb3JkZXI6b3JkZXJ9fTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplT3JkZXIgPSAoc3RhdGU6VGFibGVTdGF0ZSxtZHM6IERpY3Rpb25hcnk8TWV0YURhdGE+KSA6IERpY3Rpb25hcnk8bnVtYmVyPiA9PiB7XG4gICAgY29uc3Qgdmlld2FibGVNZXRhRGF0YUFyciA9IE9iamVjdC52YWx1ZXMobWRzKS5maWx0ZXIoYSA9PiBhLmZpZWxkVHlwZSAhPT0gRmllbGRUeXBlLkhpZGRlbik7XG4gICAgbGV0IHVzZXJEZWZpbmVkT3JkZXIgPSBzdGF0ZS51c2VyRGVmaW5lZC5vcmRlcjtcbiAgICBpZih2aWV3YWJsZU1ldGFEYXRhQXJyLnNvbWUobWV0YSA9PiB1c2VyRGVmaW5lZE9yZGVyW21ldGEua2V5XSA9PSBudWxsKSl7XG4gICAgICByZXR1cm4ge31cbiAgICB9XG4gICAgcmV0dXJuIHVzZXJEZWZpbmVkT3JkZXI7XG4gIH1cblxuICB0b2dnbGVDb2xsYXBzZUhlYWRlciA9IHRoaXMudXBkYXRlcigoc3RhdGUpPT57XG4gICAgY29uc3QgdGFibGVTZXR0aW5ncyA9IHsuLi5zdGF0ZS5wZXJzaXN0ZWRUYWJsZVNldHRpbmdzfTtcbiAgICB0YWJsZVNldHRpbmdzLmNvbGxhcHNlSGVhZGVyID0gIXRhYmxlU2V0dGluZ3MuY29sbGFwc2VIZWFkZXI7XG4gICAgcmV0dXJuICh7Li4uc3RhdGUscGVyc2lzdGVkVGFibGVTZXR0aW5ncyA6IG5ldyBQZXNyc2lzdGVkVGFibGVTZXR0aW5ncyh0YWJsZVNldHRpbmdzKX0pO1xuICB9KVxuXG4gIHRvZ2dsZUNvbGxhcHNlRm9vdGVyID0gdGhpcy51cGRhdGVyKChzdGF0ZSk9PntcbiAgICBjb25zdCB0YWJsZVNldHRpbmdzID0gey4uLnN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3N9O1xuICAgIHRhYmxlU2V0dGluZ3MuY29sbGFwc2VGb290ZXIgPSAhdGFibGVTZXR0aW5ncy5jb2xsYXBzZUZvb3RlcjtcbiAgICByZXR1cm4gKHsuLi5zdGF0ZSxwZXJzaXN0ZWRUYWJsZVNldHRpbmdzIDogbmV3IFBlc3JzaXN0ZWRUYWJsZVNldHRpbmdzKHRhYmxlU2V0dGluZ3MpfSk7XG4gIH0pXG5cblxuICBzZXRUYWJsZVNldHRpbmdzID0gdGhpcy51cGRhdGVyKChzdGF0ZSxzZXR0aW5nczpHZW5lcmFsVGFibGVTZXR0aW5ncyk9PntcbiAgICBjb25zdCBzOlRhYmxlU3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgOiBuZXcgUGVzcnNpc3RlZFRhYmxlU2V0dGluZ3Moc2V0dGluZ3MpLFxuICAgICAgbm90UGVyc2lzaXRlZFRhYmxlU2V0dGluZ3MgOiBuZXcgTm90UGVyc2lzaXRlZFRhYmxlU2V0dGluZ3Moc2V0dGluZ3MpXG4gICAgICB9O1xuICAgIHJldHVybiBzO1xuICB9KTtcblxuICB0YWJsZVNldHRpbmdzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHtcbiAgICBjb25zdCB0cyA6IFBlc3JzaXN0ZWRUYWJsZVNldHRpbmdzICYgTm90UGVyc2lzaXRlZFRhYmxlU2V0dGluZ3MgPVxuICAgICAgey4uLnN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3MsLi4uc3RhdGUubm90UGVyc2lzaXRlZFRhYmxlU2V0dGluZ3N9O1xuICAgIHJldHVybiB0cztcbiAgfSlcbn1cbmV4cG9ydCBjb25zdCBvcmRlclZpZXdhYmxlTWV0YURhdGEgPSAoc3RhdGU6VGFibGVTdGF0ZSkgPT4gb3JkZXJNZXRhRGF0YShzdGF0ZSkuZmlsdGVyKGEgPT4gYS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pO1xuXG5leHBvcnQgY29uc3Qgb3JkZXJNZXRhRGF0YSA9IChzdGF0ZTpUYWJsZVN0YXRlKSA9PiB7XG4gIGNvbnN0IHVzZXJPcmRlckFyciA9IE9iamVjdC5lbnRyaWVzKHN0YXRlLnVzZXJEZWZpbmVkLm9yZGVyKTtcbiAgcmV0dXJuIHVzZXJPcmRlckFyci5sZW5ndGggP1xuICAgT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhRGF0YSkuc29ydCgoYSxiKT0+IHN0YXRlLnVzZXJEZWZpbmVkLm9yZGVyW2Eua2V5XSAtIHN0YXRlLnVzZXJEZWZpbmVkLm9yZGVyW2Iua2V5XSlcbiAgIDpcbiAgIE9iamVjdC52YWx1ZXMoc3RhdGUubWV0YURhdGEpLnNvcnQoKGEsYik9PiBhLm9yZGVyISAtIGIub3JkZXIhKVxufVxuIl19
@@ -1590,7 +1590,7 @@ class TableStore extends ComponentStore {
1590
1590
  this.removeFilter = this.updater((state, filterId) => update(state, { filters: { $unset: [filterId] } }));
1591
1591
  this.removeFilters = this.updater((state, filterIds) => update(state, { filters: { $unset: [...filterIds] } }));
1592
1592
  this.clearFilters = this.updater((state) => (Object.assign(Object.assign({}, state), { filters: {} })));
1593
- this.sorted$ = this.select(state => state.sorted);
1593
+ this.sorted$ = this.state$.pipe(filter(stateIs(InitializationState.Ready)), map(state => state.sorted));
1594
1594
  this.createPreSort = (metaDatas) => {
1595
1595
  return Object.values(metaDatas).filter((metaData) => !!metaData.preSort)
1596
1596
  .sort(({ preSort: ps1 }, { preSort: ps2 }) => (ps1.precedence || Number.MAX_VALUE) - (ps2.precedence || Number.MAX_VALUE))