igniteui-angular 13.1.0-rc.1 → 13.1.0-rc.2

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.
Files changed (62) hide show
  1. package/esm2020/lib/action-strip/grid-actions/grid-editing-actions.component.mjs +2 -2
  2. package/esm2020/lib/data-operations/pivot-sort-strategy.mjs +44 -0
  3. package/esm2020/lib/data-operations/pivot-strategy.mjs +2 -43
  4. package/esm2020/lib/grids/cell.component.mjs +1 -2
  5. package/esm2020/lib/grids/common/grid.interface.mjs +1 -1
  6. package/esm2020/lib/grids/filtering/excel-style/excel-style-search.component.mjs +6 -3
  7. package/esm2020/lib/grids/grid-base.directive.mjs +11 -11
  8. package/esm2020/lib/grids/hierarchical-grid/hierarchical-cell.component.mjs +2 -2
  9. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-api.service.mjs +3 -3
  10. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.mjs +10 -10
  11. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.mjs +3 -3
  12. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +31 -30
  13. package/esm2020/lib/grids/hierarchical-grid/hierarchical-grid.module.mjs +1 -1
  14. package/esm2020/lib/grids/hierarchical-grid/hierarchical-row.component.mjs +2 -2
  15. package/esm2020/lib/grids/hierarchical-grid/row-island.component.mjs +12 -13
  16. package/esm2020/lib/grids/pivot-grid/pivot-data-selector.component.mjs +2 -5
  17. package/esm2020/lib/grids/pivot-grid/pivot-grid-dimensions.mjs +2 -2
  18. package/esm2020/lib/grids/pivot-grid/pivot-grid.component.mjs +13 -13
  19. package/esm2020/lib/grids/pivot-grid/pivot-grid.pipes.mjs +7 -9
  20. package/esm2020/lib/grids/pivot-grid/pivot-header-row.component.mjs +6 -9
  21. package/esm2020/lib/grids/pivot-grid/pivot-row-dimension-content.component.mjs +9 -10
  22. package/esm2020/lib/grids/pivot-grid/pivot-row-dimension-header-group.component.mjs +1 -1
  23. package/esm2020/lib/grids/pivot-grid/pivot-row.component.mjs +1 -1
  24. package/esm2020/lib/grids/pivot-grid/pivot-sort-util.mjs +26 -0
  25. package/esm2020/lib/grids/pivot-grid/pivot-util.mjs +1 -23
  26. package/esm2020/lib/grids/resizing/pivot-grid/pivot-resize-handle.directive.mjs +1 -1
  27. package/esm2020/lib/grids/resizing/resize-handle.directive.mjs +1 -1
  28. package/esm2020/lib/grids/resizing/resizer.component.mjs +1 -1
  29. package/esm2020/lib/grids/resizing/resizing.service.mjs +1 -1
  30. package/esm2020/lib/grids/row.directive.mjs +1 -1
  31. package/esm2020/lib/grids/state.directive.mjs +2 -2
  32. package/esm2020/lib/grids/toolbar/grid-toolbar.base.mjs +1 -1
  33. package/esm2020/lib/grids/tree-grid/tree-grid.component.mjs +5 -7
  34. package/esm2020/lib/progressbar/progressbar.component.mjs +1 -2
  35. package/esm2020/lib/services/exporter-common/base-export-service.mjs +3 -3
  36. package/esm2020/public_api.mjs +2 -1
  37. package/fesm2015/igniteui-angular.mjs +276 -290
  38. package/fesm2015/igniteui-angular.mjs.map +1 -1
  39. package/fesm2020/igniteui-angular.mjs +276 -289
  40. package/fesm2020/igniteui-angular.mjs.map +1 -1
  41. package/lib/data-operations/pivot-sort-strategy.d.ts +16 -0
  42. package/lib/data-operations/pivot-strategy.d.ts +0 -14
  43. package/lib/grids/cell.component.d.ts +2 -2
  44. package/lib/grids/common/grid.interface.d.ts +3 -3
  45. package/lib/grids/grid-base.directive.d.ts +6 -7
  46. package/lib/grids/hierarchical-grid/hierarchical-grid-api.service.d.ts +1 -1
  47. package/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.d.ts +4 -8
  48. package/lib/grids/hierarchical-grid/hierarchical-grid.component.d.ts +11 -6
  49. package/lib/grids/hierarchical-grid/row-island.component.d.ts +5 -5
  50. package/lib/grids/pivot-grid/pivot-grid-dimensions.d.ts +1 -1
  51. package/lib/grids/pivot-grid/pivot-grid.component.d.ts +4 -2
  52. package/lib/grids/pivot-grid/pivot-grid.pipes.d.ts +2 -2
  53. package/lib/grids/pivot-grid/pivot-header-row.component.d.ts +1 -1
  54. package/lib/grids/pivot-grid/pivot-row-dimension-content.component.d.ts +6 -6
  55. package/lib/grids/pivot-grid/pivot-sort-util.d.ts +5 -0
  56. package/lib/grids/pivot-grid/pivot-util.d.ts +0 -1
  57. package/lib/grids/row.directive.d.ts +3 -3
  58. package/lib/grids/tree-grid/tree-grid.component.d.ts +2 -4
  59. package/lib/progressbar/progressbar.component.d.ts +1 -1
  60. package/package.json +1 -1
  61. package/public_api.d.ts +1 -0
  62. package/schematics/tsconfig.tsbuildinfo +1 -1
@@ -2,8 +2,6 @@ import { cloneValue } from '../../core/utils';
2
2
  import { DataUtil, GridColumnDataType } from '../../data-operations/data-util';
3
3
  import { FilteringLogic } from '../../data-operations/filtering-expression.interface';
4
4
  import { FilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
5
- import { DefaultPivotSortingStrategy } from '../../data-operations/pivot-strategy';
6
- import { SortingDirection } from '../../data-operations/sorting-strategy';
7
5
  import { IgxSorting } from '../common/strategy';
8
6
  import { IgxPivotAggregate, IgxPivotDateAggregate, IgxPivotNumericAggregate, IgxPivotTimeAggregate } from './pivot-grid-aggregate';
9
7
  import { PivotDimensionType } from './pivot-grid.interface';
@@ -405,25 +403,5 @@ export class PivotUtil {
405
403
  return IgxPivotAggregate.aggregators();
406
404
  }
407
405
  }
408
- static generateDimensionSortingExpressions(dimensions) {
409
- const expressions = [];
410
- PivotUtil.flatten(dimensions).forEach(x => {
411
- if (x.sortDirection) {
412
- expressions.push({
413
- dir: x.sortDirection,
414
- fieldName: x.memberName,
415
- strategy: DefaultPivotSortingStrategy.instance()
416
- });
417
- }
418
- else {
419
- expressions.push({
420
- dir: SortingDirection.None,
421
- fieldName: x.memberName,
422
- strategy: DefaultPivotSortingStrategy.instance()
423
- });
424
- }
425
- });
426
- return expressions;
427
- }
428
406
  }
429
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9waXZvdC1ncmlkL3Bpdm90LXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDdEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDNUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkYsT0FBTyxFQUFzQixnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlGLE9BQU8sRUFBd0IsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkksT0FBTyxFQUFxRyxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRS9KLE1BQU0sT0FBTyxTQUFTO0lBRWxCLGtFQUFrRTtJQUMzRCxNQUFNLENBQUMsYUFBYSxDQUFDLElBQXdCLEVBQUUsU0FBMEIsRUFBRSxTQUFxQjtRQUNuRyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQiw0QkFBNEI7WUFDNUIsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRTtnQkFDdkMsNEJBQTRCO2dCQUM1QixHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVB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RUFBRSxDQUFDLENBQUMsYUFBYTtvQkFDcEIsU0FBUyxFQUFFLENBQUMsQ0FBQyxVQUFVO29CQUN2QixRQUFRLEVBQUUsMkJBQTJCLENBQUMsUUFBUSxFQUFFO2lCQUNuRCxDQUFDLENBQUM7YUFDTjtpQkFBTTtnQkFDSCxXQUFXLENBQUMsSUFBSSxDQUFDO29CQUNiLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJO29CQUMxQixTQUFTLEVBQUUsQ0FBQyxDQUFDLFVBQVU7b0JBQ3ZCLFFBQVEsRUFBRSwyQkFBMkIsQ0FBQyxRQUFRLEVBQUU7aUJBQ25ELENBQUMsQ0FBQzthQUNOO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZVZhbHVlIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBEYXRhVXRpbCwgR3JpZENvbHVtbkRhdGFUeXBlIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2RhdGEtdXRpbCc7XG5pbXBvcnQgeyBGaWx0ZXJpbmdMb2dpYyB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2ZpbHRlcmluZy1leHByZXNzaW9ucy10cmVlJztcbmltcG9ydCB7IERlZmF1bHRQaXZvdFNvcnRpbmdTdHJhdGVneSB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9waXZvdC1zdHJhdGVneSc7XG5pbXBvcnQgeyBJU29ydGluZ0V4cHJlc3Npb24sIFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvc29ydGluZy1zdHJhdGVneSc7XG5pbXBvcnQgeyBQaXZvdEdyaWRUeXBlIH0gZnJvbSAnLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElHcmlkU29ydGluZ1N0cmF0ZWd5LCBJZ3hTb3J0aW5nIH0gZnJvbSAnLi4vY29tbW9uL3N0cmF0ZWd5JztcbmltcG9ydCB7IElneFBpdm90QWdncmVnYXRlLCBJZ3hQaXZvdERhdGVBZ2dyZWdhdGUsIElneFBpdm90TnVtZXJpY0FnZ3JlZ2F0ZSwgSWd4UGl2b3RUaW1lQWdncmVnYXRlIH0gZnJvbSAnLi9waXZvdC1ncmlkLWFnZ3JlZ2F0ZSc7XG5pbXBvcnQgeyBJUGl2b3RBZ2dyZWdhdG9yLCBJUGl2b3RDb25maWd1cmF0aW9uLCBJUGl2b3REaW1lbnNpb24sIElQaXZvdEdyaWRSZWNvcmQsIElQaXZvdEtleXMsIElQaXZvdFZhbHVlLCBQaXZvdERpbWVuc2lvblR5cGUgfSBmcm9tICcuL3Bpdm90LWdyaWQuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIFBpdm90VXRpbCB7XG5cbiAgICAvLyBnbyB0aHJvdWdoIGFsbCBjaGlsZHJlbiBhbmQgYXBwbHkgbmV3IGRpbWVuc2lvbiBncm91cHMgYXMgY2hpbGRcbiAgICBwdWJsaWMgc3RhdGljIHByb2Nlc3NHcm91cHMocmVjczogSVBpdm90R3JpZFJlY29yZFtdLCBkaW1lbnNpb246IElQaXZvdERpbWVuc2lvbiwgcGl2b3RLZXlzOiBJUGl2b3RLZXlzKSB7XG4gICAgICAgIGZvciAoY29uc3QgcmVjIG9mIHJlY3MpIHtcbiAgICAgICAgICAgIC8vIHByb2Nlc3MgZXhpc3RpbmcgY2hpbGRyZW5cbiAgICAgICAgICAgIGlmIChyZWMuY2hpbGRyZW4gJiYgcmVjLmNoaWxkcmVuLnNpemUgPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gcHJvY2VzcyBoaWVyYXJjaHkgaW4gZGVwdFxuICAgICAgICAgICAgICAgIHJlYy5jaGlsZHJlbi5mb3JFYWNoKCh2YWx1ZXMsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NHcm91cHModmFsdWVzLCBkaW1lbnNpb24sIHBpdm90S2V5cyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBhZGQgY2hpbGRyZW4gZm9yIGN1cnJlbnQgZGltZW5zaW9uXG4gICAgICAgICAgICBjb25zdCBoaWVyYXJjaHlGaWVsZHMgPSBQaXZvdFV0aWxcbiAgICAgICAgICAgICAgICAuZ2V0RmllbGRzSGllcmFyY2h5KHJlYy5yZWNvcmRzLCBbZGltZW5zaW9uXSwgUGl2b3REaW1lbnNpb25UeXBlLlJvdywgcGl2b3RLZXlzKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmZyb20oaGllcmFyY2h5RmllbGRzLnZhbHVlcygpKS5maW5kKHggPT4geC5kaW1lbnNpb24ubWVtYmVyTmFtZSA9PT0gZGltZW5zaW9uLm1lbWJlck5hbWUpO1xuICAgICAgICAgICAgY29uc3Qgc2libGluZ0RhdGEgPSBQaXZvdFV0aWxcbiAgICAgICAgICAgICAgICAucHJvY2Vzc0hpZXJhcmNoeShoaWVyYXJjaHlGaWVsZHMsIHBpdm90S2V5cywgMCk7XG4gICAgICAgICAgICByZWMuY2hpbGRyZW4uc2V0KGRpbWVuc2lvbi5tZW1iZXJOYW1lLCBzaWJsaW5nRGF0YSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZsYXR0ZW5Hcm91cHMoZGF0YTogSVBpdm90R3JpZFJlY29yZFtdLCBkaW1lbnNpb246IElQaXZvdERpbWVuc2lvbiwgZXhwYW5zaW9uU3RhdGVzLCBkZWZhdWx0RXhwYW5kOiBib29sZWFuLCBwYXJlbnQ/OiBJUGl2b3REaW1lbnNpb24sIHBhcmVudFJlYz86IElQaXZvdEdyaWRSZWNvcmQpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCByZWMgPSBkYXRhW2ldO1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSBkaW1lbnNpb24ubWVtYmVyTmFtZTtcbiAgICAgICAgICAgIGlmICghZmllbGQpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHJlY29yZHNEYXRhID0gcmVjLmNoaWxkcmVuLmdldChmaWVsZCk7XG4gICAgICAgICAgICBpZiAoIXJlY29yZHNEYXRhICYmIHBhcmVudCkge1xuICAgICAgICAgICAgICAgIC8vIGNoZWNrIHBhcmVudFxuICAgICAgICAgICAgICAgIHJlY29yZHNEYXRhID0gcmVjLmNoaWxkcmVuLmdldChwYXJlbnQubWVtYmVyTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZHNEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpbWVuc2lvbiA9IHBhcmVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXJlbnRSZWMpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRSZWMuZGltZW5zaW9uVmFsdWVzLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudC5tZW1iZXJOYW1lICE9PSBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYy5kaW1lbnNpb25WYWx1ZXMuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGltID0gcGFyZW50UmVjLmRpbWVuc2lvbnMuZmluZCh4ID0+IHgubWVtYmVyTmFtZSA9PT0ga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYy5kaW1lbnNpb25zLnVuc2hpZnQoZGltKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgY29uc3QgZXhwYW5zaW9uUm93S2V5ID0gUGl2b3RVdGlsLmdldFJlY29yZEtleShyZWMsIGRpbWVuc2lvbik7XG4gICAgICAgICAgICBjb25zdCBpc0V4cGFuZGVkID0gZXhwYW5zaW9uU3RhdGVzLmdldChleHBhbnNpb25Sb3dLZXkpID09PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgICAgIGRlZmF1bHRFeHBhbmQgOlxuICAgICAgICAgICAgICAgIGV4cGFuc2lvblN0YXRlcy5nZXQoZXhwYW5zaW9uUm93S2V5KTtcbiAgICAgICAgICAgIGNvbnN0IHNob3VsZEV4cGFuZCA9IGlzRXhwYW5kZWQgfHwgIWRpbWVuc2lvbi5jaGlsZExldmVsIHx8ICFyZWMuZGltZW5zaW9uVmFsdWVzLmdldChkaW1lbnNpb24ubWVtYmVyTmFtZSk7XG4gICAgICAgICAgICBpZiAoc2hvdWxkRXhwYW5kICYmIHJlY29yZHNEYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRpbWVuc2lvbi5jaGlsZExldmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmxhdHRlbkdyb3VwcyhyZWNvcmRzRGF0YSwgZGltZW5zaW9uLmNoaWxkTGV2ZWwsIGV4cGFuc2lvblN0YXRlcywgZGVmYXVsdEV4cGFuZCwgZGltZW5zaW9uLCByZWMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvcHkgcGFyZW50IHZhbHVlcyBhbmQgZGltcyBpbiBjaGlsZFxuICAgICAgICAgICAgICAgICAgICByZWNvcmRzRGF0YS5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVjLmRpbWVuc2lvblZhbHVlcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpbWVuc2lvbi5tZW1iZXJOYW1lICE9PSBrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5kaW1lbnNpb25WYWx1ZXMuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaW0gPSByZWMuZGltZW5zaW9ucy5maW5kKHkgPT4geS5tZW1iZXJOYW1lID09PSBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LmRpbWVuc2lvbnMudW5zaGlmdChkaW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGRhdGEuc3BsaWNlKGkgKyAxLCAwLCAuLi5yZWNvcmRzRGF0YSk7XG4gICAgICAgICAgICAgICAgaSArPSByZWNvcmRzRGF0YS5sZW5ndGg7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGFzc2lnbkxldmVscyhkaW1zKSB7XG4gICAgICAgIGZvciAoY29uc3QgZGltIG9mIGRpbXMpIHtcbiAgICAgICAgICAgIGxldCBjdXJyRGltID0gZGltO1xuICAgICAgICAgICAgbGV0IGx2bCA9IDA7XG4gICAgICAgICAgICB3aGlsZSAoY3VyckRpbS5jaGlsZExldmVsKSB7XG4gICAgICAgICAgICAgICAgY3VyckRpbS5sZXZlbCA9IGx2bDtcbiAgICAgICAgICAgICAgICBjdXJyRGltID0gY3VyckRpbS5jaGlsZExldmVsO1xuICAgICAgICAgICAgICAgIGx2bCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3VyckRpbS5sZXZlbCA9IGx2bDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGdldEZpZWxkc0hpZXJhcmNoeShkYXRhOiBhbnlbXSwgZGltZW5zaW9uczogSVBpdm90RGltZW5zaW9uW10sXG4gICAgICAgIGRpbWVuc2lvblR5cGU6IFBpdm90RGltZW5zaW9uVHlwZSwgcGl2b3RLZXlzOiBJUGl2b3RLZXlzKTogTWFwPHN0cmluZywgYW55PiB7XG4gICAgICAgIGNvbnN0IGhpZXJhcmNoeSA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgICAgIGZvciAoY29uc3QgcmVjIG9mIGRhdGEpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHMgPSBkaW1lbnNpb25UeXBlID09PSBQaXZvdERpbWVuc2lvblR5cGUuQ29sdW1uID9cbiAgICAgICAgICAgICAgICB0aGlzLmV4dHJhY3RWYWx1ZXNGb3JDb2x1bW4oZGltZW5zaW9ucywgcmVjLCBwaXZvdEtleXMpIDpcbiAgICAgICAgICAgICAgICB0aGlzLmV4dHJhY3RWYWx1ZXNGb3JSb3coZGltZW5zaW9ucywgcmVjLCBwaXZvdEtleXMpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIHZhbHMpIHsgLy8gdGhpcyBzaG91bGQgZ28gaW4gZGVwdGggYWxzbyB2YWxzLmNoaWxkcmVuXG4gICAgICAgICAgICAgICAgaWYgKGhpZXJhcmNoeS5nZXQodmFsLnZhbHVlKSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlIaWVyYXJjaHlDaGlsZHJlbihoaWVyYXJjaHksIHZhbCwgcmVjLCBwaXZvdEtleXMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoeS5zZXQodmFsLnZhbHVlLCBjbG9uZVZhbHVlKHZhbCkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5SGllcmFyY2h5Q2hpbGRyZW4oaGllcmFyY2h5LCB2YWwsIHJlYywgcGl2b3RLZXlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhpZXJhcmNoeTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHNvcnQoZGF0YTogSVBpdm90R3JpZFJlY29yZFtdLCBleHByZXNzaW9uczogSVNvcnRpbmdFeHByZXNzaW9uW10sIHNvcnRpbmc6IElHcmlkU29ydGluZ1N0cmF0ZWd5ID0gbmV3IElneFNvcnRpbmcoKSk6IGFueVtdIHtcbiAgICAgICAgZGF0YS5mb3JFYWNoKHJlYyA9PiB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IHJlYy5jaGlsZHJlbjtcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydCh4LCBleHByZXNzaW9ucywgc29ydGluZyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gRGF0YVV0aWwuc29ydChkYXRhLCBleHByZXNzaW9ucywgc29ydGluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBleHRyYWN0VmFsdWVGcm9tRGltZW5zaW9uKGRpbTogSVBpdm90RGltZW5zaW9uLCByZWNEYXRhOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIGRpbS5tZW1iZXJGdW5jdGlvbiA/IGRpbS5tZW1iZXJGdW5jdGlvbi5jYWxsKG51bGwsIHJlY0RhdGEpIDogcmVjRGF0YVtkaW0ubWVtYmVyTmFtZV07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXREaW1lbnNpb25EZXB0aChkaW06IElQaXZvdERpbWVuc2lvbik6IG51bWJlciB7XG4gICAgICAgIGxldCBsdmwgPSAwO1xuICAgICAgICB3aGlsZSAoZGltLmNoaWxkTGV2ZWwpIHtcbiAgICAgICAgICAgIGx2bCsrO1xuICAgICAgICAgICAgZGltID0gZGltLmNoaWxkTGV2ZWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGx2bDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGV4dHJhY3RWYWx1ZXNGb3JSb3coZGltczogSVBpdm90RGltZW5zaW9uW10sIHJlY0RhdGE6IGFueSwgcGl2b3RLZXlzOiBJUGl2b3RLZXlzKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgICAgIGZvciAoY29uc3QgY29sIG9mIGRpbXMpIHtcbiAgICAgICAgICAgIGlmIChyZWNEYXRhW3Bpdm90S2V5cy5sZXZlbF0gJiYgcmVjRGF0YVtwaXZvdEtleXMubGV2ZWxdID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkRGF0YSA9IHJlY0RhdGFbcGl2b3RLZXlzLnJlY29yZHNdO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEZpZWxkc0hpZXJhcmNoeShjaGlsZERhdGEsIFtjb2xdLCBQaXZvdERpbWVuc2lvblR5cGUuUm93LCBwaXZvdEtleXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZXh0cmFjdFZhbHVlRnJvbURpbWVuc2lvbihjb2wsIHJlY0RhdGEpO1xuICAgICAgICAgICAgY29uc3Qgb2JqVmFsdWUgPSB7fTtcbiAgICAgICAgICAgIG9ialZhbHVlWyd2YWx1ZSddID0gdmFsdWU7XG4gICAgICAgICAgICBvYmpWYWx1ZVsnZGltZW5zaW9uJ10gPSBjb2w7XG4gICAgICAgICAgICBpZiAoY29sLmNoaWxkTGV2ZWwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFZhbHVlcyA9IHRoaXMuZXh0cmFjdFZhbHVlc0ZvclJvdyhbY29sLmNoaWxkTGV2ZWxdLCByZWNEYXRhLCBwaXZvdEtleXMpO1xuICAgICAgICAgICAgICAgIG9ialZhbHVlW3Bpdm90S2V5cy5jaGlsZHJlbl0gPSBjaGlsZFZhbHVlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbHVlcy5zZXQodmFsdWUsIG9ialZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBleHRyYWN0VmFsdWVzRm9yQ29sdW1uKGRpbXM6IElQaXZvdERpbWVuc2lvbltdLCByZWNEYXRhOiBhbnksIHBpdm90S2V5czogSVBpdm90S2V5cywgcGF0aCA9IFtdKSB7XG4gICAgICAgIGNvbnN0IHZhbHMgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICAgICAgICBsZXQgbHZsQ29sbGVjdGlvbiA9IHZhbHM7XG4gICAgICAgIGNvbnN0IGZsYXR0ZW5lZERpbXMgPSB0aGlzLmZsYXR0ZW4oZGltcyk7XG4gICAgICAgIGZvciAoY29uc3QgY29sIG9mIGZsYXR0ZW5lZERpbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5leHRyYWN0VmFsdWVGcm9tRGltZW5zaW9uKGNvbCwgcmVjRGF0YSk7XG4gICAgICAgICAgICBwYXRoLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBwYXRoLmpvaW4ocGl2b3RLZXlzLmNvbHVtbkRpbWVuc2lvblNlcGFyYXRvcik7XG4gICAgICAgICAgICBjb25zdCBuZXdPYmogPSB7IHZhbHVlOiBuZXdWYWx1ZSwgZXhwYW5kYWJsZTogY29sLmV4cGFuZGFibGUsIGNoaWxkcmVuOiBudWxsLCBkaW1lbnNpb246IGNvbCB9O1xuICAgICAgICAgICAgaWYgKCFuZXdPYmouY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBuZXdPYmouY2hpbGRyZW4gPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbHZsQ29sbGVjdGlvbi5zZXQobmV3VmFsdWUsIG5ld09iaik7XG4gICAgICAgICAgICBsdmxDb2xsZWN0aW9uID0gbmV3T2JqLmNoaWxkcmVuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWxzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZmxhdHRlbihhcnIsIGx2bCA9IDApIHtcbiAgICAgICAgY29uc3QgbmV3QXJyID0gYXJyLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmxldmVsID0gbHZsO1xuICAgICAgICAgICAgYWNjLnB1c2goaXRlbSk7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZExldmVsKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5leHBhbmRhYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBhY2MgPSBhY2MuY29uY2F0KHRoaXMuZmxhdHRlbihbaXRlbS5jaGlsZExldmVsXSwgbHZsICsgMSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwgW10pO1xuICAgICAgICByZXR1cm4gbmV3QXJyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXBwbHlBZ2dyZWdhdGlvbnMocmVjOiBJUGl2b3RHcmlkUmVjb3JkLCBoaWVyYXJjaGllcywgdmFsdWVzLCBwaXZvdEtleXM6IElQaXZvdEtleXMpIHtcbiAgICAgICAgaWYgKGhpZXJhcmNoaWVzLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIC8vIG5vIGNvbHVtbiBncm91cHNcbiAgICAgICAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9uUmVzdWx0ID0gdGhpcy5hZ2dyZWdhdGUocmVjLnJlY29yZHMsIHZhbHVlcyk7XG4gICAgICAgICAgICB0aGlzLmFwcGx5QWdncmVnYXRpb25SZWNvcmREYXRhKGFnZ3JlZ2F0aW9uUmVzdWx0LCB1bmRlZmluZWQsIHJlYywgcGl2b3RLZXlzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBoaWVyYXJjaGllcy5mb3JFYWNoKChoaWVyYXJjaHkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gaGllcmFyY2h5W3Bpdm90S2V5cy5jaGlsZHJlbl07XG4gICAgICAgICAgICBpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4uc2l6ZSA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGx5QWdncmVnYXRpb25zKHJlYywgY2hpbGRyZW4sIHZhbHVlcywgcGl2b3RLZXlzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFJlY29yZHMgPSB0aGlzLmNvbGxlY3RSZWNvcmRzKGNoaWxkcmVuLCBwaXZvdEtleXMpO1xuICAgICAgICAgICAgICAgIGhpZXJhcmNoeVtwaXZvdEtleXMuYWdncmVnYXRpb25zXSA9IHRoaXMuYWdncmVnYXRlKGNoaWxkUmVjb3JkcywgdmFsdWVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGx5QWdncmVnYXRpb25SZWNvcmREYXRhKGhpZXJhcmNoeVtwaXZvdEtleXMuYWdncmVnYXRpb25zXSwgaGllcmFyY2h5LnZhbHVlLCByZWMsIHBpdm90S2V5cyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhpZXJhcmNoeVtwaXZvdEtleXMucmVjb3Jkc10pIHtcbiAgICAgICAgICAgICAgICBoaWVyYXJjaHlbcGl2b3RLZXlzLmFnZ3JlZ2F0aW9uc10gPSB0aGlzLmFnZ3JlZ2F0ZShoaWVyYXJjaHlbcGl2b3RLZXlzLnJlY29yZHNdLCB2YWx1ZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlBZ2dyZWdhdGlvblJlY29yZERhdGEoaGllcmFyY2h5W3Bpdm90S2V5cy5hZ2dyZWdhdGlvbnNdLCBoaWVyYXJjaHkudmFsdWUsIHJlYywgcGl2b3RLZXlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBhcHBseUFnZ3JlZ2F0aW9uUmVjb3JkRGF0YShhZ2dyZWdhdGlvbkRhdGE6IGFueSwgZ3JvdXBOYW1lOiBzdHJpbmcsIHJlYzogSVBpdm90R3JpZFJlY29yZCwgcGl2b3RLZXlzOiBJUGl2b3RLZXlzKSB7XG4gICAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9uS2V5cyA9IE9iamVjdC5rZXlzKGFnZ3JlZ2F0aW9uRGF0YSk7XG4gICAgICAgIGlmIChhZ2dyZWdhdGlvbktleXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgYWdncmVnYXRpb25LZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9uS2V5ID0gZ3JvdXBOYW1lID8gZ3JvdXBOYW1lICsgcGl2b3RLZXlzLmNvbHVtbkRpbWVuc2lvblNlcGFyYXRvciArIGtleSA6IGtleTtcbiAgICAgICAgICAgICAgICByZWMuYWdncmVnYXRpb25WYWx1ZXMuc2V0KGFnZ3JlZ2F0aW9uS2V5LCBhZ2dyZWdhdGlvbkRhdGFba2V5XSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlICBpZiAoYWdncmVnYXRpb25LZXlzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgYWdncmVnYXRpb25LZXkgPSBhZ2dyZWdhdGlvbktleXNbMF07XG4gICAgICAgICAgICByZWMuYWdncmVnYXRpb25WYWx1ZXMuc2V0KGdyb3VwTmFtZSB8fCBhZ2dyZWdhdGlvbktleSwgYWdncmVnYXRpb25EYXRhW2FnZ3JlZ2F0aW9uS2V5XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFnZ3JlZ2F0ZShyZWNvcmRzLCB2YWx1ZXM6IElQaXZvdFZhbHVlW10pIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIGZvciAoY29uc3QgcGl2b3RWYWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIHJlc3VsdFtwaXZvdFZhbHVlLm1lbWJlcl0gPSBwaXZvdFZhbHVlLmFnZ3JlZ2F0ZS5hZ2dyZWdhdG9yKHJlY29yZHMubWFwKHIgPT4gcltwaXZvdFZhbHVlLm1lbWJlcl0pLCByZWNvcmRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBwcm9jZXNzSGllcmFyY2h5KGhpZXJhcmNoaWVzLCBwaXZvdEtleXMsIGxldmVsID0gMCwgcm9vdERhdGEgPSBmYWxzZSk6IElQaXZvdEdyaWRSZWNvcmRbXSB7XG4gICAgICAgIGNvbnN0IGZsYXREYXRhOiBJUGl2b3RHcmlkUmVjb3JkW10gPSBbXTtcbiAgICAgICAgaGllcmFyY2hpZXMuZm9yRWFjaCgoaCwga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZCA9IGguZGltZW5zaW9uLm1lbWJlck5hbWU7XG4gICAgICAgICAgICBjb25zdCByZWM6IElQaXZvdEdyaWRSZWNvcmQgPSB7XG4gICAgICAgICAgICAgICAgZGltZW5zaW9uVmFsdWVzOiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpLFxuICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uVmFsdWVzOiBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBuZXcgTWFwPHN0cmluZywgSVBpdm90R3JpZFJlY29yZFtdPigpLFxuICAgICAgICAgICAgICAgIGRpbWVuc2lvbnM6IFtoLmRpbWVuc2lvbl1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWMuZGltZW5zaW9uVmFsdWVzLnNldChmaWVsZCwga2V5KTtcbiAgICAgICAgICAgIGlmIChoW3Bpdm90S2V5cy5yZWNvcmRzXSkge1xuICAgICAgICAgICAgICAgIHJlYy5yZWNvcmRzID0gdGhpcy5nZXREaXJlY3RMZWFmcyhoW3Bpdm90S2V5cy5yZWNvcmRzXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWMubGV2ZWwgPSBsZXZlbDtcbiAgICAgICAgICAgIGZsYXREYXRhLnB1c2gocmVjKTtcbiAgICAgICAgICAgIGlmIChoW3Bpdm90S2V5cy5jaGlsZHJlbl0gJiYgaFtwaXZvdEtleXMuY2hpbGRyZW5dLnNpemUgPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmVzdGVkRGF0YSA9IHRoaXMucHJvY2Vzc0hpZXJhcmNoeShoW3Bpdm90S2V5cy5jaGlsZHJlbl0sXG4gICAgICAgICAgICAgICAgICAgIHBpdm90S2V5cywgbGV2ZWwgKyAxLCByb290RGF0YSk7XG4gICAgICAgICAgICAgICAgcmVjLnJlY29yZHMgPSB0aGlzLmdldERpcmVjdExlYWZzKG5lc3RlZERhdGEpO1xuICAgICAgICAgICAgICAgIHJlYy5jaGlsZHJlbi5zZXQoZmllbGQsIG5lc3RlZERhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmxhdERhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXREaXJlY3RMZWFmcyhyZWNvcmRzOiBJUGl2b3RHcmlkUmVjb3JkW10pIHtcbiAgICAgICAgbGV0IGxlYWZzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcmVjIG9mIHJlY29yZHMpIHtcbiAgICAgICAgICAgIGlmIChyZWMucmVjb3Jkcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZWMucmVjb3Jkcy5maWx0ZXIoeCA9PiAheC5yZWNvcmRzICYmIGxlYWZzLmluZGV4T2YoeCkgPT09IC0xKTtcbiAgICAgICAgICAgICAgICBsZWFmcyA9IGxlYWZzLmNvbmNhdChkYXRhKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGVhZnMucHVzaChyZWMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsZWFmcztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFJlY29yZEtleShyZWM6IElQaXZvdEdyaWRSZWNvcmQsIGN1cnJlbnREaW06IElQaXZvdERpbWVuc2lvbiwpIHtcbiAgICAgICAgY29uc3QgcGFyZW50RmllbGRzID0gW107XG4gICAgICAgIGNvbnN0IGN1cnJlbnREaW1JbmRleCA9IHJlYy5kaW1lbnNpb25zLmZpbmRJbmRleCh4ID0+IHgubWVtYmVyTmFtZSA9PT0gY3VycmVudERpbS5tZW1iZXJOYW1lKSArIDE7XG4gICAgICAgIGNvbnN0IHByZXZEaW1zID0gcmVjLmRpbWVuc2lvbnMuc2xpY2UoMCwgY3VycmVudERpbUluZGV4KTtcbiAgICAgICAgZm9yIChjb25zdCBwcmV2IG9mIHByZXZEaW1zKSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2VmFsdWUgPSByZWMuZGltZW5zaW9uVmFsdWVzLmdldChwcmV2Lm1lbWJlck5hbWUpO1xuICAgICAgICAgICAgcGFyZW50RmllbGRzLnB1c2gocHJldlZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyZW50RmllbGRzLmpvaW4oJy0nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFRvdGFsTHZsKHJlYywgcGl2b3RLZXlzOiBJUGl2b3RLZXlzKSB7XG4gICAgICAgIGxldCB0b3RhbCA9IDA7XG4gICAgICAgIE9iamVjdC5rZXlzKHJlYykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgaWYgKGtleS5pbmRleE9mKHBpdm90S2V5cy5yb3dEaW1lbnNpb25TZXBhcmF0b3IgKyBwaXZvdEtleXMubGV2ZWwpICE9PSAtMSAmJlxuICAgICAgICAgICAgICAgIGtleS5pbmRleE9mKHBpdm90S2V5cy5sZXZlbCArIHBpdm90S2V5cy5yb3dEaW1lbnNpb25TZXBhcmF0b3IpID09PSAtMSAmJlxuICAgICAgICAgICAgICAgIGtleS5pbmRleE9mKHBpdm90S2V5cy5yZWNvcmRzKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICB0b3RhbCArPSByZWNba2V5XSB8fCAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRvdGFsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZmxhdHRlbkNvbHVtbkhpZXJhcmNoeShoaWVyYXJjaGllczogYW55LCB2YWx1ZXM6IElQaXZvdFZhbHVlW10sIHBpdm90S2V5czogSVBpdm90S2V5cykge1xuICAgICAgICBjb25zdCBmbGF0RGF0YSA9IFtdO1xuICAgICAgICBoaWVyYXJjaGllcy5mb3JFYWNoKChoLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9iaiA9IHt9O1xuICAgICAgICAgICAgY29uc3QgbXVsdGlwbGVWYWx1ZXMgPSB2YWx1ZXMubGVuZ3RoID4gMTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhbcGl2b3RLZXlzLmFnZ3JlZ2F0aW9uc10pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG11bHRpcGxlVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYmpba2V5ICsgcGl2b3RLZXlzLmNvbHVtbkRpbWVuc2lvblNlcGFyYXRvciArIHZhbHVlLm1lbWJlcl0gPSBoW3Bpdm90S2V5cy5hZ2dyZWdhdGlvbnNdW3ZhbHVlLm1lbWJlcl07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYmpba2V5XSA9IGhbcGl2b3RLZXlzLmFnZ3JlZ2F0aW9uc11bdmFsdWUubWVtYmVyXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvYmpbcGl2b3RLZXlzLnJlY29yZHNdID0gaFtwaXZvdEtleXMucmVjb3Jkc107XG4gICAgICAgICAgICAgICAgZmxhdERhdGEucHVzaChvYmopO1xuICAgICAgICAgICAgICAgIGlmIChoW3Bpdm90S2V5cy5jaGlsZHJlbl0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkcyA9IHRoaXMuZmxhdHRlbkNvbHVtbkhpZXJhcmNoeShoW3Bpdm90S2V5cy5jaGlsZHJlbl0sIHZhbHVlcywgcGl2b3RLZXlzKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlY29yZFtwaXZvdEtleXMucmVjb3Jkc107XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZEtleXMgPSBPYmplY3Qua2V5cyhyZWNvcmQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZEtleSBvZiBjaGlsZEtleXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpbY2hpbGRLZXldID0gcmVjb3JkW2NoaWxkS2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZsYXREYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYnVpbGRFeHByZXNzaW9uVHJlZShjb25maWc6IElQaXZvdENvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgY29uc3QgYWxsRGltZW5zaW9ucyA9IChjb25maWcucm93cyB8fCBbXSkuY29uY2F0KChjb25maWcuY29sdW1ucyB8fCBbXSkpLmNvbmNhdChjb25maWcuZmlsdGVycyB8fCBbXSkuZmlsdGVyKHggPT4geCAhPT0gbnVsbCAmJiB4ICE9PSB1bmRlZmluZWQpO1xuICAgICAgICBjb25zdCBlbmFibGVkRGltZW5zaW9ucyA9IGFsbERpbWVuc2lvbnMuZmlsdGVyKHggPT4geCAmJiB4LmVuYWJsZWQpO1xuXG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25zVHJlZSA9IG5ldyBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUoRmlsdGVyaW5nTG9naWMuQW5kKTtcbiAgICAgICAgLy8gYWRkIGV4cHJlc3Npb24gdHJlZXMgZnJvbSBhbGwgZmlsdGVyc1xuICAgICAgICBQaXZvdFV0aWwuZmxhdHRlbihlbmFibGVkRGltZW5zaW9ucykuZm9yRWFjaCgoeDogSVBpdm90RGltZW5zaW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAoeC5maWx0ZXIgJiYgeC5maWx0ZXIuZmlsdGVyaW5nT3BlcmFuZHMpIHtcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uc1RyZWUuZmlsdGVyaW5nT3BlcmFuZHMucHVzaCguLi54LmZpbHRlci5maWx0ZXJpbmdPcGVyYW5kcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBleHByZXNzaW9uc1RyZWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgY29sbGVjdFJlY29yZHMoY2hpbGRyZW4sIHBpdm90S2V5czogSVBpdm90S2V5cykge1xuICAgICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICAgIGNoaWxkcmVuLmZvckVhY2godmFsdWUgPT4gcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCh2YWx1ZVtwaXZvdEtleXMucmVjb3Jkc10pKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhcHBseUhpZXJhcmNoeUNoaWxkcmVuKGhpZXJhcmNoeSwgdmFsLCByZWMsIHBpdm90S2V5czogSVBpdm90S2V5cykge1xuICAgICAgICBjb25zdCByZWNvcmRzS2V5ID0gcGl2b3RLZXlzLnJlY29yZHM7XG4gICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gcGl2b3RLZXlzLmNoaWxkcmVuO1xuICAgICAgICBjb25zdCBjaGlsZENvbGxlY3Rpb24gPSB2YWxbY2hpbGRLZXldO1xuICAgICAgICBjb25zdCBoaWVyYXJjaHlWYWx1ZSA9IGhpZXJhcmNoeS5nZXQodmFsLnZhbHVlKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaGllcmFyY2h5VmFsdWVbY2hpbGRLZXldKSkge1xuICAgICAgICAgICAgaGllcmFyY2h5VmFsdWVbY2hpbGRLZXldID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNoaWxkQ29sbGVjdGlvbiB8fCBjaGlsZENvbGxlY3Rpb24uc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgZGltID0gaGllcmFyY2h5VmFsdWUuZGltZW5zaW9uO1xuICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IHRoaXMuZXh0cmFjdFZhbHVlRnJvbURpbWVuc2lvbihkaW0sIHJlYykgPT09IHZhbC52YWx1ZTtcbiAgICAgICAgICAgIGlmIChpc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhpZXJhcmNoeVZhbHVlW3JlY29yZHNLZXldKSB7XG4gICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoeVZhbHVlW3JlY29yZHNLZXldLnB1c2gocmVjKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlWYWx1ZVtyZWNvcmRzS2V5XSA9IFtyZWNdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGhpZXJhcmNoeUNoaWxkID0gaGllcmFyY2h5VmFsdWVbY2hpbGRLZXldO1xuICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCBjaGlsZF0gb2YgY2hpbGRDb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgbGV0IGhpZXJhcmNoeUNoaWxkVmFsdWUgPSBoaWVyYXJjaHlDaGlsZC5nZXQoY2hpbGQudmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICghaGllcmFyY2h5Q2hpbGRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlDaGlsZC5zZXQoY2hpbGQudmFsdWUsIGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgaGllcmFyY2h5Q2hpbGRWYWx1ZSA9IGNoaWxkO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChoaWVyYXJjaHlDaGlsZFZhbHVlW3JlY29yZHNLZXldKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvcHkgPSBPYmplY3QuYXNzaWduKHt9LCByZWMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVjW3JlY29yZHNLZXldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgYWxsIG5lc3RlZCBjaGlsZHJlbiBhcmUgdmFsaWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZFZhbHVlID0gaGllcmFyY2h5Q2hpbGRWYWx1ZS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpbWVuc2lvbiA9IGhpZXJhcmNoeUNoaWxkVmFsdWUuZGltZW5zaW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsaWRSZWNzID0gcmVjW3JlY29yZHNLZXldLmZpbHRlcih4ID0+IHRoaXMuZXh0cmFjdFZhbHVlRnJvbURpbWVuc2lvbihkaW1lbnNpb24sIHgpID09PSBuZXN0ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb3B5W3JlY29yZHNLZXldID0gdmFsaWRSZWNzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoeUNoaWxkVmFsdWVbcmVjb3Jkc0tleV0ucHVzaChjb3B5KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlDaGlsZFZhbHVlW3JlY29yZHNLZXldID0gW3JlY107XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkW2NoaWxkS2V5XSAmJiBjaGlsZFtjaGlsZEtleV0uc2l6ZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseUhpZXJhcmNoeUNoaWxkcmVuKGhpZXJhcmNoeUNoaWxkLCBjaGlsZCwgcmVjLCBwaXZvdEtleXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QWdncmVnYXRlTGlzdCh2YWw6IElQaXZvdFZhbHVlLCBncmlkOiBQaXZvdEdyaWRUeXBlKTogSVBpdm90QWdncmVnYXRvcltdIHtcbiAgICAgICAgaWYgKCF2YWwuYWdncmVnYXRlTGlzdCkge1xuICAgICAgICAgICAgbGV0IGRlZmF1bHRBZ2dyID0gdGhpcy5nZXRBZ2dyZWdhdG9yc0ZvclZhbHVlKHZhbCwgZ3JpZCk7XG4gICAgICAgICAgICBjb25zdCBpc0RlZmF1bHQgPSBkZWZhdWx0QWdnci5maW5kKFxuICAgICAgICAgICAgICAgICh4KSA9PiB4LmtleSA9PT0gdmFsLmFnZ3JlZ2F0ZS5rZXlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyByZXNvbHZlIGN1c3RvbSBhZ2dyZWdhdGlvbnNcbiAgICAgICAgICAgIGlmICghaXNEZWZhdWx0ICYmIGdyaWQuZGF0YVswXVt2YWwubWVtYmVyXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgZmllbGQgZXhpc3RzLCB0aGVuIHdlIGNhbiBhcHBseSBkZWZhdWx0IGFnZ3JlZ2F0aW9ucyBhbmQgYWRkIHRoZSBjdXN0b20gb25lLlxuICAgICAgICAgICAgICAgIGRlZmF1bHRBZ2dyLnVuc2hpZnQodmFsLmFnZ3JlZ2F0ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFpc0RlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgdGhpcyBpcyBhIGN1c3RvbSBhZ2dyZWdhdGlvbiB0aGF0IGlzIG5vdCBjb21wYXRpYmxlXG4gICAgICAgICAgICAgICAgLy8gd2l0aCB0aGUgZGVmYXVsdHMsIHNpbmNlIGl0IG9wZXJhdGVzIG9uIGZpZWxkIHRoYXQgaXMgbm90IGluIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgLy8gbGVhdmUgb25seSB0aGUgY3VzdG9tIG9uZS5cbiAgICAgICAgICAgICAgICBkZWZhdWx0QWdnciA9IFt2YWwuYWdncmVnYXRlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbC5hZ2dyZWdhdGVMaXN0ID0gZGVmYXVsdEFnZ3I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbC5hZ2dyZWdhdGVMaXN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QWdncmVnYXRvcnNGb3JWYWx1ZSh2YWx1ZTogSVBpdm90VmFsdWUsIGdyaWQ6IFBpdm90R3JpZFR5cGUpOiBJUGl2b3RBZ2dyZWdhdG9yW10ge1xuICAgICAgICBjb25zdCBkYXRhVHlwZSA9IHZhbHVlLmRhdGFUeXBlIHx8IGdyaWQucmVzb2x2ZURhdGFUeXBlcyhncmlkLmRhdGFbMF1bdmFsdWUubWVtYmVyXSk7XG4gICAgICAgIHN3aXRjaCAoZGF0YVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLk51bWJlcjpcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLkN1cnJlbmN5OlxuICAgICAgICAgICAgICAgIHJldHVybiBJZ3hQaXZvdE51bWVyaWNBZ2dyZWdhdGUuYWdncmVnYXRvcnMoKTtcbiAgICAgICAgICAgIGNhc2UgR3JpZENvbHVtbkRhdGFUeXBlLkRhdGU6XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5EYXRlVGltZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gSWd4UGl2b3REYXRlQWdncmVnYXRlLmFnZ3JlZ2F0b3JzKCk7XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5UaW1lOlxuICAgICAgICAgICAgICAgIHJldHVybiBJZ3hQaXZvdFRpbWVBZ2dyZWdhdGUuYWdncmVnYXRvcnMoKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIElneFBpdm90QWdncmVnYXRlLmFnZ3JlZ2F0b3JzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlRGltZW5zaW9uU29ydGluZ0V4cHJlc3Npb25zKGRpbWVuc2lvbnM6IElQaXZvdERpbWVuc2lvbltdKTogSVNvcnRpbmdFeHByZXNzaW9uW10ge1xuICAgICAgICBjb25zdCBleHByZXNzaW9uczogSVNvcnRpbmdFeHByZXNzaW9uW10gPSBbXTtcbiAgICAgICAgUGl2b3RVdGlsLmZsYXR0ZW4oZGltZW5zaW9ucykuZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgIGlmICh4LnNvcnREaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBleHByZXNzaW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZGlyOiB4LnNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogeC5tZW1iZXJOYW1lLFxuICAgICAgICAgICAgICAgICAgICBzdHJhdGVneTogRGVmYXVsdFBpdm90U29ydGluZ1N0cmF0ZWd5Lmluc3RhbmNlKClcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGRpcjogU29ydGluZ0RpcmVjdGlvbi5Ob25lLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IHgubWVtYmVyTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ3k6IERlZmF1bHRQaXZvdFNvcnRpbmdTdHJhdGVneS5pbnN0YW5jZSgpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZXhwcmVzc2lvbnM7XG4gICAgfVxufVxuIl19
407
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9waXZvdC1ncmlkL3Bpdm90LXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDdEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFHNUYsT0FBTyxFQUF3QixVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuSSxPQUFPLEVBQXFHLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFL0osTUFBTSxPQUFPLFNBQVM7SUFFbEIsa0VBQWtFO0lBQzNELE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBd0IsRUFBRSxTQUEwQixFQUFFLFNBQXFCO1FBQ25HLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLDRCQUE0QjtZQUM1QixJQUFJLEdBQUcsQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFO2dCQUN2Qyw0QkFBNEI7Z0JBQzVCLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ3JELENBQUMsQ0FBQyxDQUFD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QzthQUNqQztZQUNELEdBQUcsQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDO1NBQ25DO1FBQ0QsT0FBTyxHQUFHLENBQUMsYUFBYSxDQUFDO0lBQzdCLENBQUM7SUFFTSxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBa0IsRUFBRSxJQUFtQjtRQUN4RSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLFFBQVEsUUFBUSxFQUFFO1lBQ2QsS0FBSyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7WUFDL0IsS0FBSyxrQkFBa0IsQ0FBQyxRQUFRO2dCQUM1QixPQUFPLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2xELEtBQUssa0JBQWtCLENBQUMsSUFBSSxDQUFDO1lBQzdCLEtBQUssa0JBQWtCLENBQUMsUUFBUTtnQkFDNUIsT0FBTyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvQyxLQUFLLGtCQUFrQixDQUFDLElBQUk7Z0JBQ3hCLE9BQU8scUJBQXFCLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDL0M7Z0JBQ0ksT0FBTyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM5QztJQUNMLENBQUM7Q0FHSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsb25lVmFsdWUgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IERhdGFVdGlsLCBHcmlkQ29sdW1uRGF0YVR5cGUgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZGF0YS11dGlsJztcbmltcG9ydCB7IEZpbHRlcmluZ0xvZ2ljIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2ZpbHRlcmluZy1leHByZXNzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLWV4cHJlc3Npb25zLXRyZWUnO1xuaW1wb3J0IHsgSVNvcnRpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctc3RyYXRlZ3knO1xuaW1wb3J0IHsgUGl2b3RHcmlkVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJR3JpZFNvcnRpbmdTdHJhdGVneSwgSWd4U29ydGluZyB9IGZyb20gJy4uL2NvbW1vbi9zdHJhdGVneSc7XG5pbXBvcnQgeyBJZ3hQaXZvdEFnZ3JlZ2F0ZSwgSWd4UGl2b3REYXRlQWdncmVnYXRlLCBJZ3hQaXZvdE51bWVyaWNBZ2dyZWdhdGUsIElneFBpdm90VGltZUFnZ3JlZ2F0ZSB9IGZyb20gJy4vcGl2b3QtZ3JpZC1hZ2dyZWdhdGUnO1xuaW1wb3J0IHsgSVBpdm90QWdncmVnYXRvciwgSVBpdm90Q29uZmlndXJhdGlvbiwgSVBpdm90RGltZW5zaW9uLCBJUGl2b3RHcmlkUmVjb3JkLCBJUGl2b3RLZXlzLCBJUGl2b3RWYWx1ZSwgUGl2b3REaW1lbnNpb25UeXBlIH0gZnJvbSAnLi9waXZvdC1ncmlkLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBQaXZvdFV0aWwge1xuXG4gICAgLy8gZ28gdGhyb3VnaCBhbGwgY2hpbGRyZW4gYW5kIGFwcGx5IG5ldyBkaW1lbnNpb24gZ3JvdXBzIGFzIGNoaWxkXG4gICAgcHVibGljIHN0YXRpYyBwcm9jZXNzR3JvdXBzKHJlY3M6IElQaXZvdEdyaWRSZWNvcmRbXSwgZGltZW5zaW9uOiBJUGl2b3REaW1lbnNpb24sIHBpdm90S2V5czogSVBpdm90S2V5cykge1xuICAgICAgICBmb3IgKGNvbnN0IHJlYyBvZiByZWNzKSB7XG4gICAgICAgICAgICAvLyBwcm9jZXNzIGV4aXN0aW5nIGNoaWxkcmVuXG4gICAgICAgICAgICBpZiAocmVjLmNoaWxkcmVuICYmIHJlYy5jaGlsZHJlbi5zaXplID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIHByb2Nlc3MgaGllcmFyY2h5IGluIGRlcHRcbiAgICAgICAgICAgICAgICByZWMuY2hpbGRyZW4uZm9yRWFjaCgodmFsdWVzLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzR3JvdXBzKHZhbHVlcywgZGltZW5zaW9uLCBwaXZvdEtleXMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gYWRkIGNoaWxkcmVuIGZvciBjdXJyZW50IGRpbWVuc2lvblxuICAgICAgICAgICAgY29uc3QgaGllcmFyY2h5RmllbGRzID0gUGl2b3RVdGlsXG4gICAgICAgICAgICAgICAgLmdldEZpZWxkc0hpZXJhcmNoeShyZWMucmVjb3JkcywgW2RpbWVuc2lvbl0sIFBpdm90RGltZW5zaW9uVHlwZS5Sb3csIHBpdm90S2V5cyk7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5mcm9tKGhpZXJhcmNoeUZpZWxkcy52YWx1ZXMoKSkuZmluZCh4ID0+IHguZGltZW5zaW9uLm1lbWJlck5hbWUgPT09IGRpbWVuc2lvbi5tZW1iZXJOYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IHNpYmxpbmdEYXRhID0gUGl2b3RVdGlsXG4gICAgICAgICAgICAgICAgLnByb2Nlc3NIaWVyYXJjaHkoaGllcmFyY2h5RmllbGRzLCBwaXZvdEtleXMsIDApO1xuICAgICAgICAgICAgcmVjLmNoaWxkcmVuLnNldChkaW1lbnNpb24ubWVtYmVyTmFtZSwgc2libGluZ0RhdGEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmbGF0dGVuR3JvdXBzKGRhdGE6IElQaXZvdEdyaWRSZWNvcmRbXSwgZGltZW5zaW9uOiBJUGl2b3REaW1lbnNpb24sIGV4cGFuc2lvblN0YXRlcywgZGVmYXVsdEV4cGFuZDogYm9vbGVhbiwgcGFyZW50PzogSVBpdm90RGltZW5zaW9uLCBwYXJlbnRSZWM/OiBJUGl2b3RHcmlkUmVjb3JkKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcmVjID0gZGF0YVtpXTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZGltZW5zaW9uLm1lbWJlck5hbWU7XG4gICAgICAgICAgICBpZiAoIWZpZWxkKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCByZWNvcmRzRGF0YSA9IHJlYy5jaGlsZHJlbi5nZXQoZmllbGQpO1xuICAgICAgICAgICAgaWYgKCFyZWNvcmRzRGF0YSAmJiBwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBwYXJlbnRcbiAgICAgICAgICAgICAgICByZWNvcmRzRGF0YSA9IHJlYy5jaGlsZHJlbi5nZXQocGFyZW50Lm1lbWJlck5hbWUpO1xuICAgICAgICAgICAgICAgIGlmIChyZWNvcmRzRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBkaW1lbnNpb24gPSBwYXJlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocGFyZW50UmVjKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50UmVjLmRpbWVuc2lvblZhbHVlcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnQubWVtYmVyTmFtZSAhPT0ga2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWMuZGltZW5zaW9uVmFsdWVzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpbSA9IHBhcmVudFJlYy5kaW1lbnNpb25zLmZpbmQoeCA9PiB4Lm1lbWJlck5hbWUgPT09IGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWMuZGltZW5zaW9ucy51bnNoaWZ0KGRpbSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGNvbnN0IGV4cGFuc2lvblJvd0tleSA9IFBpdm90VXRpbC5nZXRSZWNvcmRLZXkocmVjLCBkaW1lbnNpb24pO1xuICAgICAgICAgICAgY29uc3QgaXNFeHBhbmRlZCA9IGV4cGFuc2lvblN0YXRlcy5nZXQoZXhwYW5zaW9uUm93S2V5KSA9PT0gdW5kZWZpbmVkID9cbiAgICAgICAgICAgICAgICBkZWZhdWx0RXhwYW5kIDpcbiAgICAgICAgICAgICAgICBleHBhbnNpb25TdGF0ZXMuZ2V0KGV4cGFuc2lvblJvd0tleSk7XG4gICAgICAgICAgICBjb25zdCBzaG91bGRFeHBhbmQgPSBpc0V4cGFuZGVkIHx8ICFkaW1lbnNpb24uY2hpbGRMZXZlbCB8fCAhcmVjLmRpbWVuc2lvblZhbHVlcy5nZXQoZGltZW5zaW9uLm1lbWJlck5hbWUpO1xuICAgICAgICAgICAgaWYgKHNob3VsZEV4cGFuZCAmJiByZWNvcmRzRGF0YSkge1xuICAgICAgICAgICAgICAgIGlmIChkaW1lbnNpb24uY2hpbGRMZXZlbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZsYXR0ZW5Hcm91cHMocmVjb3Jkc0RhdGEsIGRpbWVuc2lvbi5jaGlsZExldmVsLCBleHBhbnNpb25TdGF0ZXMsIGRlZmF1bHRFeHBhbmQsIGRpbWVuc2lvbiwgcmVjKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBjb3B5IHBhcmVudCB2YWx1ZXMgYW5kIGRpbXMgaW4gY2hpbGRcbiAgICAgICAgICAgICAgICAgICAgcmVjb3Jkc0RhdGEuZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYy5kaW1lbnNpb25WYWx1ZXMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaW1lbnNpb24ubWVtYmVyTmFtZSAhPT0ga2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHguZGltZW5zaW9uVmFsdWVzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGltID0gcmVjLmRpbWVuc2lvbnMuZmluZCh5ID0+IHkubWVtYmVyTmFtZSA9PT0ga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5kaW1lbnNpb25zLnVuc2hpZnQoZGltKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBkYXRhLnNwbGljZShpICsgMSwgMCwgLi4ucmVjb3Jkc0RhdGEpO1xuICAgICAgICAgICAgICAgIGkgKz0gcmVjb3Jkc0RhdGEubGVuZ3RoO1xuXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBhc3NpZ25MZXZlbHMoZGltcykge1xuICAgICAgICBmb3IgKGNvbnN0IGRpbSBvZiBkaW1zKSB7XG4gICAgICAgICAgICBsZXQgY3VyckRpbSA9IGRpbTtcbiAgICAgICAgICAgIGxldCBsdmwgPSAwO1xuICAgICAgICAgICAgd2hpbGUgKGN1cnJEaW0uY2hpbGRMZXZlbCkge1xuICAgICAgICAgICAgICAgIGN1cnJEaW0ubGV2ZWwgPSBsdmw7XG4gICAgICAgICAgICAgICAgY3VyckRpbSA9IGN1cnJEaW0uY2hpbGRMZXZlbDtcbiAgICAgICAgICAgICAgICBsdmwrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJEaW0ubGV2ZWwgPSBsdmw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBnZXRGaWVsZHNIaWVyYXJjaHkoZGF0YTogYW55W10sIGRpbWVuc2lvbnM6IElQaXZvdERpbWVuc2lvbltdLFxuICAgICAgICBkaW1lbnNpb25UeXBlOiBQaXZvdERpbWVuc2lvblR5cGUsIHBpdm90S2V5czogSVBpdm90S2V5cyk6IE1hcDxzdHJpbmcsIGFueT4ge1xuICAgICAgICBjb25zdCBoaWVyYXJjaHkgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICAgICAgICBmb3IgKGNvbnN0IHJlYyBvZiBkYXRhKSB7XG4gICAgICAgICAgICBjb25zdCB2YWxzID0gZGltZW5zaW9uVHlwZSA9PT0gUGl2b3REaW1lbnNpb25UeXBlLkNvbHVtbiA/XG4gICAgICAgICAgICAgICAgdGhpcy5leHRyYWN0VmFsdWVzRm9yQ29sdW1uKGRpbWVuc2lvbnMsIHJlYywgcGl2b3RLZXlzKSA6XG4gICAgICAgICAgICAgICAgdGhpcy5leHRyYWN0VmFsdWVzRm9yUm93KGRpbWVuc2lvbnMsIHJlYywgcGl2b3RLZXlzKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsXSBvZiB2YWxzKSB7IC8vIHRoaXMgc2hvdWxkIGdvIGluIGRlcHRoIGFsc28gdmFscy5jaGlsZHJlblxuICAgICAgICAgICAgICAgIGlmIChoaWVyYXJjaHkuZ2V0KHZhbC52YWx1ZSkgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5SGllcmFyY2h5Q2hpbGRyZW4oaGllcmFyY2h5LCB2YWwsIHJlYywgcGl2b3RLZXlzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHkuc2V0KHZhbC52YWx1ZSwgY2xvbmVWYWx1ZSh2YWwpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseUhpZXJhcmNoeUNoaWxkcmVuKGhpZXJhcmNoeSwgdmFsLCByZWMsIHBpdm90S2V5cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoaWVyYXJjaHk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzb3J0KGRhdGE6IElQaXZvdEdyaWRSZWNvcmRbXSwgZXhwcmVzc2lvbnM6IElTb3J0aW5nRXhwcmVzc2lvbltdLCBzb3J0aW5nOiBJR3JpZFNvcnRpbmdTdHJhdGVneSA9IG5ldyBJZ3hTb3J0aW5nKCkpOiBhbnlbXSB7XG4gICAgICAgIGRhdGEuZm9yRWFjaChyZWMgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSByZWMuY2hpbGRyZW47XG4gICAgICAgICAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvcnQoeCwgZXhwcmVzc2lvbnMsIHNvcnRpbmcpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIERhdGFVdGlsLnNvcnQoZGF0YSwgZXhwcmVzc2lvbnMsIHNvcnRpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZXh0cmFjdFZhbHVlRnJvbURpbWVuc2lvbihkaW06IElQaXZvdERpbWVuc2lvbiwgcmVjRGF0YTogYW55KSB7XG4gICAgICAgIHJldHVybiBkaW0ubWVtYmVyRnVuY3Rpb24gPyBkaW0ubWVtYmVyRnVuY3Rpb24uY2FsbChudWxsLCByZWNEYXRhKSA6IHJlY0RhdGFbZGltLm1lbWJlck5hbWVdO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGltZW5zaW9uRGVwdGgoZGltOiBJUGl2b3REaW1lbnNpb24pOiBudW1iZXIge1xuICAgICAgICBsZXQgbHZsID0gMDtcbiAgICAgICAgd2hpbGUgKGRpbS5jaGlsZExldmVsKSB7XG4gICAgICAgICAgICBsdmwrKztcbiAgICAgICAgICAgIGRpbSA9IGRpbS5jaGlsZExldmVsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsdmw7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBleHRyYWN0VmFsdWVzRm9yUm93KGRpbXM6IElQaXZvdERpbWVuc2lvbltdLCByZWNEYXRhOiBhbnksIHBpdm90S2V5czogSVBpdm90S2V5cykge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiBkaW1zKSB7XG4gICAgICAgICAgICBpZiAocmVjRGF0YVtwaXZvdEtleXMubGV2ZWxdICYmIHJlY0RhdGFbcGl2b3RLZXlzLmxldmVsXSA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZERhdGEgPSByZWNEYXRhW3Bpdm90S2V5cy5yZWNvcmRzXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRGaWVsZHNIaWVyYXJjaHkoY2hpbGREYXRhLCBbY29sXSwgUGl2b3REaW1lbnNpb25UeXBlLlJvdywgcGl2b3RLZXlzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmV4dHJhY3RWYWx1ZUZyb21EaW1lbnNpb24oY29sLCByZWNEYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IG9ialZhbHVlID0ge307XG4gICAgICAgICAgICBvYmpWYWx1ZVsndmFsdWUnXSA9IHZhbHVlO1xuICAgICAgICAgICAgb2JqVmFsdWVbJ2RpbWVuc2lvbiddID0gY29sO1xuICAgICAgICAgICAgaWYgKGNvbC5jaGlsZExldmVsKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRWYWx1ZXMgPSB0aGlzLmV4dHJhY3RWYWx1ZXNGb3JSb3coW2NvbC5jaGlsZExldmVsXSwgcmVjRGF0YSwgcGl2b3RLZXlzKTtcbiAgICAgICAgICAgICAgICBvYmpWYWx1ZVtwaXZvdEtleXMuY2hpbGRyZW5dID0gY2hpbGRWYWx1ZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWx1ZXMuc2V0KHZhbHVlLCBvYmpWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZXh0cmFjdFZhbHVlc0ZvckNvbHVtbihkaW1zOiBJUGl2b3REaW1lbnNpb25bXSwgcmVjRGF0YTogYW55LCBwaXZvdEtleXM6IElQaXZvdEtleXMsIHBhdGggPSBbXSkge1xuICAgICAgICBjb25zdCB2YWxzID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICAgICAgbGV0IGx2bENvbGxlY3Rpb24gPSB2YWxzO1xuICAgICAgICBjb25zdCBmbGF0dGVuZWREaW1zID0gdGhpcy5mbGF0dGVuKGRpbXMpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiBmbGF0dGVuZWREaW1zKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZXh0cmFjdFZhbHVlRnJvbURpbWVuc2lvbihjb2wsIHJlY0RhdGEpO1xuICAgICAgICAgICAgcGF0aC5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gcGF0aC5qb2luKHBpdm90S2V5cy5jb2x1bW5EaW1lbnNpb25TZXBhcmF0b3IpO1xuICAgICAgICAgICAgY29uc3QgbmV3T2JqID0geyB2YWx1ZTogbmV3VmFsdWUsIGV4cGFuZGFibGU6IGNvbC5leHBhbmRhYmxlLCBjaGlsZHJlbjogbnVsbCwgZGltZW5zaW9uOiBjb2wgfTtcbiAgICAgICAgICAgIGlmICghbmV3T2JqLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgbmV3T2JqLmNoaWxkcmVuID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGx2bENvbGxlY3Rpb24uc2V0KG5ld1ZhbHVlLCBuZXdPYmopO1xuICAgICAgICAgICAgbHZsQ29sbGVjdGlvbiA9IG5ld09iai5jaGlsZHJlbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFscztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZsYXR0ZW4oYXJyLCBsdmwgPSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld0FyciA9IGFyci5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xuICAgICAgICAgICAgaXRlbS5sZXZlbCA9IGx2bDtcbiAgICAgICAgICAgIGFjYy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgaWYgKGl0ZW0uY2hpbGRMZXZlbCkge1xuICAgICAgICAgICAgICAgIGl0ZW0uZXhwYW5kYWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYWNjID0gYWNjLmNvbmNhdCh0aGlzLmZsYXR0ZW4oW2l0ZW0uY2hpbGRMZXZlbF0sIGx2bCArIDEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIFtdKTtcbiAgICAgICAgcmV0dXJuIG5ld0FycjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGFwcGx5QWdncmVnYXRpb25zKHJlYzogSVBpdm90R3JpZFJlY29yZCwgaGllcmFyY2hpZXMsIHZhbHVlcywgcGl2b3RLZXlzOiBJUGl2b3RLZXlzKSB7XG4gICAgICAgIGlmIChoaWVyYXJjaGllcy5zaXplID09PSAwKSB7XG4gICAgICAgICAgICAvLyBubyBjb2x1bW4gZ3JvdXBzXG4gICAgICAgICAgICBjb25zdCBhZ2dyZWdhdGlvblJlc3VsdCA9IHRoaXMuYWdncmVnYXRlKHJlYy5yZWNvcmRzLCB2YWx1ZXMpO1xuICAgICAgICAgICAgdGhpcy5hcHBseUFnZ3JlZ2F0aW9uUmVjb3JkRGF0YShhZ2dyZWdhdGlvblJlc3VsdCwgdW5kZWZpbmVkLCByZWMsIHBpdm90S2V5cyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaGllcmFyY2hpZXMuZm9yRWFjaCgoaGllcmFyY2h5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGhpZXJhcmNoeVtwaXZvdEtleXMuY2hpbGRyZW5dO1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuICYmIGNoaWxkcmVuLnNpemUgPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBseUFnZ3JlZ2F0aW9ucyhyZWMsIGNoaWxkcmVuLCB2YWx1ZXMsIHBpdm90S2V5cyk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRSZWNvcmRzID0gdGhpcy5jb2xsZWN0UmVjb3JkcyhjaGlsZHJlbiwgcGl2b3RLZXlzKTtcbiAgICAgICAgICAgICAgICBoaWVyYXJjaHlbcGl2b3RLZXlzLmFnZ3JlZ2F0aW9uc10gPSB0aGlzLmFnZ3JlZ2F0ZShjaGlsZFJlY29yZHMsIHZhbHVlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBseUFnZ3JlZ2F0aW9uUmVjb3JkRGF0YShoaWVyYXJjaHlbcGl2b3RLZXlzLmFnZ3JlZ2F0aW9uc10sIGhpZXJhcmNoeS52YWx1ZSwgcmVjLCBwaXZvdEtleXMpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChoaWVyYXJjaHlbcGl2b3RLZXlzLnJlY29yZHNdKSB7XG4gICAgICAgICAgICAgICAgaGllcmFyY2h5W3Bpdm90S2V5cy5hZ2dyZWdhdGlvbnNdID0gdGhpcy5hZ2dyZWdhdGUoaGllcmFyY2h5W3Bpdm90S2V5cy5yZWNvcmRzXSwgdmFsdWVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGx5QWdncmVnYXRpb25SZWNvcmREYXRhKGhpZXJhcmNoeVtwaXZvdEtleXMuYWdncmVnYXRpb25zXSwgaGllcmFyY2h5LnZhbHVlLCByZWMsIHBpdm90S2V5cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGF0aWMgYXBwbHlBZ2dyZWdhdGlvblJlY29yZERhdGEoYWdncmVnYXRpb25EYXRhOiBhbnksIGdyb3VwTmFtZTogc3RyaW5nLCByZWM6IElQaXZvdEdyaWRSZWNvcmQsIHBpdm90S2V5czogSVBpdm90S2V5cykge1xuICAgICAgICBjb25zdCBhZ2dyZWdhdGlvbktleXMgPSBPYmplY3Qua2V5cyhhZ2dyZWdhdGlvbkRhdGEpO1xuICAgICAgICBpZiAoYWdncmVnYXRpb25LZXlzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGFnZ3JlZ2F0aW9uS2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZ2dyZWdhdGlvbktleSA9IGdyb3VwTmFtZSA/IGdyb3VwTmFtZSArIHBpdm90S2V5cy5jb2x1bW5EaW1lbnNpb25TZXBhcmF0b3IgKyBrZXkgOiBrZXk7XG4gICAgICAgICAgICAgICAgcmVjLmFnZ3JlZ2F0aW9uVmFsdWVzLnNldChhZ2dyZWdhdGlvbktleSwgYWdncmVnYXRpb25EYXRhW2tleV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSAgaWYgKGFnZ3JlZ2F0aW9uS2V5cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9uS2V5ID0gYWdncmVnYXRpb25LZXlzWzBdO1xuICAgICAgICAgICAgcmVjLmFnZ3JlZ2F0aW9uVmFsdWVzLnNldChncm91cE5hbWUgfHwgYWdncmVnYXRpb25LZXksIGFnZ3JlZ2F0aW9uRGF0YVthZ2dyZWdhdGlvbktleV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhZ2dyZWdhdGUocmVjb3JkcywgdmFsdWVzOiBJUGl2b3RWYWx1ZVtdKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHBpdm90VmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICByZXN1bHRbcGl2b3RWYWx1ZS5tZW1iZXJdID0gcGl2b3RWYWx1ZS5hZ2dyZWdhdGUuYWdncmVnYXRvcihyZWNvcmRzLm1hcChyID0+IHJbcGl2b3RWYWx1ZS5tZW1iZXJdKSwgcmVjb3Jkcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcHJvY2Vzc0hpZXJhcmNoeShoaWVyYXJjaGllcywgcGl2b3RLZXlzLCBsZXZlbCA9IDAsIHJvb3REYXRhID0gZmFsc2UpOiBJUGl2b3RHcmlkUmVjb3JkW10ge1xuICAgICAgICBjb25zdCBmbGF0RGF0YTogSVBpdm90R3JpZFJlY29yZFtdID0gW107XG4gICAgICAgIGhpZXJhcmNoaWVzLmZvckVhY2goKGgsIGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmllbGQgPSBoLmRpbWVuc2lvbi5tZW1iZXJOYW1lO1xuICAgICAgICAgICAgY29uc3QgcmVjOiBJUGl2b3RHcmlkUmVjb3JkID0ge1xuICAgICAgICAgICAgICAgIGRpbWVuc2lvblZhbHVlczogbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKSxcbiAgICAgICAgICAgICAgICBhZ2dyZWdhdGlvblZhbHVlczogbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogbmV3IE1hcDxzdHJpbmcsIElQaXZvdEdyaWRSZWNvcmRbXT4oKSxcbiAgICAgICAgICAgICAgICBkaW1lbnNpb25zOiBbaC5kaW1lbnNpb25dXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVjLmRpbWVuc2lvblZhbHVlcy5zZXQoZmllbGQsIGtleSk7XG4gICAgICAgICAgICBpZiAoaFtwaXZvdEtleXMucmVjb3Jkc10pIHtcbiAgICAgICAgICAgICAgICByZWMucmVjb3JkcyA9IHRoaXMuZ2V0RGlyZWN0TGVhZnMoaFtwaXZvdEtleXMucmVjb3Jkc10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVjLmxldmVsID0gbGV2ZWw7XG4gICAgICAgICAgICBmbGF0RGF0YS5wdXNoKHJlYyk7XG4gICAgICAgICAgICBpZiAoaFtwaXZvdEtleXMuY2hpbGRyZW5dICYmIGhbcGl2b3RLZXlzLmNoaWxkcmVuXS5zaXplID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5lc3RlZERhdGEgPSB0aGlzLnByb2Nlc3NIaWVyYXJjaHkoaFtwaXZvdEtleXMuY2hpbGRyZW5dLFxuICAgICAgICAgICAgICAgICAgICBwaXZvdEtleXMsIGxldmVsICsgMSwgcm9vdERhdGEpO1xuICAgICAgICAgICAgICAgIHJlYy5yZWNvcmRzID0gdGhpcy5nZXREaXJlY3RMZWFmcyhuZXN0ZWREYXRhKTtcbiAgICAgICAgICAgICAgICByZWMuY2hpbGRyZW4uc2V0KGZpZWxkLCBuZXN0ZWREYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZsYXREYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGlyZWN0TGVhZnMocmVjb3JkczogSVBpdm90R3JpZFJlY29yZFtdKSB7XG4gICAgICAgIGxldCBsZWFmcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHJlYyBvZiByZWNvcmRzKSB7XG4gICAgICAgICAgICBpZiAocmVjLnJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gcmVjLnJlY29yZHMuZmlsdGVyKHggPT4gIXgucmVjb3JkcyAmJiBsZWFmcy5pbmRleE9mKHgpID09PSAtMSk7XG4gICAgICAgICAgICAgICAgbGVhZnMgPSBsZWFmcy5jb25jYXQoZGF0YSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxlYWZzLnB1c2gocmVjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGVhZnM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRSZWNvcmRLZXkocmVjOiBJUGl2b3RHcmlkUmVjb3JkLCBjdXJyZW50RGltOiBJUGl2b3REaW1lbnNpb24sKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudEZpZWxkcyA9IFtdO1xuICAgICAgICBjb25zdCBjdXJyZW50RGltSW5kZXggPSByZWMuZGltZW5zaW9ucy5maW5kSW5kZXgoeCA9PiB4Lm1lbWJlck5hbWUgPT09IGN1cnJlbnREaW0ubWVtYmVyTmFtZSkgKyAxO1xuICAgICAgICBjb25zdCBwcmV2RGltcyA9IHJlYy5kaW1lbnNpb25zLnNsaWNlKDAsIGN1cnJlbnREaW1JbmRleCk7XG4gICAgICAgIGZvciAoY29uc3QgcHJldiBvZiBwcmV2RGltcykge1xuICAgICAgICAgICAgY29uc3QgcHJldlZhbHVlID0gcmVjLmRpbWVuc2lvblZhbHVlcy5nZXQocHJldi5tZW1iZXJOYW1lKTtcbiAgICAgICAgICAgIHBhcmVudEZpZWxkcy5wdXNoKHByZXZWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcmVudEZpZWxkcy5qb2luKCctJyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRUb3RhbEx2bChyZWMsIHBpdm90S2V5czogSVBpdm90S2V5cykge1xuICAgICAgICBsZXQgdG90YWwgPSAwO1xuICAgICAgICBPYmplY3Qua2V5cyhyZWMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkuaW5kZXhPZihwaXZvdEtleXMucm93RGltZW5zaW9uU2VwYXJhdG9yICsgcGl2b3RLZXlzLmxldmVsKSAhPT0gLTEgJiZcbiAgICAgICAgICAgICAgICBrZXkuaW5kZXhPZihwaXZvdEtleXMubGV2ZWwgKyBwaXZvdEtleXMucm93RGltZW5zaW9uU2VwYXJhdG9yKSA9PT0gLTEgJiZcbiAgICAgICAgICAgICAgICBrZXkuaW5kZXhPZihwaXZvdEtleXMucmVjb3JkcykgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgdG90YWwgKz0gcmVjW2tleV0gfHwgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0b3RhbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZsYXR0ZW5Db2x1bW5IaWVyYXJjaHkoaGllcmFyY2hpZXM6IGFueSwgdmFsdWVzOiBJUGl2b3RWYWx1ZVtdLCBwaXZvdEtleXM6IElQaXZvdEtleXMpIHtcbiAgICAgICAgY29uc3QgZmxhdERhdGEgPSBbXTtcbiAgICAgICAgaGllcmFyY2hpZXMuZm9yRWFjaCgoaCwga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvYmogPSB7fTtcbiAgICAgICAgICAgIGNvbnN0IG11bHRpcGxlVmFsdWVzID0gdmFsdWVzLmxlbmd0aCA+IDE7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgICAgICAgICAgIGlmIChoW3Bpdm90S2V5cy5hZ2dyZWdhdGlvbnNdKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtdWx0aXBsZVZhbHVlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqW2tleSArIHBpdm90S2V5cy5jb2x1bW5EaW1lbnNpb25TZXBhcmF0b3IgKyB2YWx1ZS5tZW1iZXJdID0gaFtwaXZvdEtleXMuYWdncmVnYXRpb25zXVt2YWx1ZS5tZW1iZXJdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqW2tleV0gPSBoW3Bpdm90S2V5cy5hZ2dyZWdhdGlvbnNdW3ZhbHVlLm1lbWJlcl07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb2JqW3Bpdm90S2V5cy5yZWNvcmRzXSA9IGhbcGl2b3RLZXlzLnJlY29yZHNdO1xuICAgICAgICAgICAgICAgIGZsYXREYXRhLnB1c2gob2JqKTtcbiAgICAgICAgICAgICAgICBpZiAoaFtwaXZvdEtleXMuY2hpbGRyZW5dKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZHMgPSB0aGlzLmZsYXR0ZW5Db2x1bW5IaWVyYXJjaHkoaFtwaXZvdEtleXMuY2hpbGRyZW5dLCB2YWx1ZXMsIHBpdm90S2V5cyk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZWNvcmRbcGl2b3RLZXlzLnJlY29yZHNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRLZXlzID0gT2JqZWN0LmtleXMocmVjb3JkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGRLZXkgb2YgY2hpbGRLZXlzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqW2NoaWxkS2V5XSA9IHJlY29yZFtjaGlsZEtleV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmbGF0RGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGJ1aWxkRXhwcmVzc2lvblRyZWUoY29uZmlnOiBJUGl2b3RDb25maWd1cmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGFsbERpbWVuc2lvbnMgPSAoY29uZmlnLnJvd3MgfHwgW10pLmNvbmNhdCgoY29uZmlnLmNvbHVtbnMgfHwgW10pKS5jb25jYXQoY29uZmlnLmZpbHRlcnMgfHwgW10pLmZpbHRlcih4ID0+IHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgZW5hYmxlZERpbWVuc2lvbnMgPSBhbGxEaW1lbnNpb25zLmZpbHRlcih4ID0+IHggJiYgeC5lbmFibGVkKTtcblxuICAgICAgICBjb25zdCBleHByZXNzaW9uc1RyZWUgPSBuZXcgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKEZpbHRlcmluZ0xvZ2ljLkFuZCk7XG4gICAgICAgIC8vIGFkZCBleHByZXNzaW9uIHRyZWVzIGZyb20gYWxsIGZpbHRlcnNcbiAgICAgICAgUGl2b3RVdGlsLmZsYXR0ZW4oZW5hYmxlZERpbWVuc2lvbnMpLmZvckVhY2goKHg6IElQaXZvdERpbWVuc2lvbikgPT4ge1xuICAgICAgICAgICAgaWYgKHguZmlsdGVyICYmIHguZmlsdGVyLmZpbHRlcmluZ09wZXJhbmRzKSB7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbnNUcmVlLmZpbHRlcmluZ09wZXJhbmRzLnB1c2goLi4ueC5maWx0ZXIuZmlsdGVyaW5nT3BlcmFuZHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZXhwcmVzc2lvbnNUcmVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGNvbGxlY3RSZWNvcmRzKGNoaWxkcmVuLCBwaXZvdEtleXM6IElQaXZvdEtleXMpIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKHZhbHVlID0+IHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodmFsdWVbcGl2b3RLZXlzLnJlY29yZHNdKSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlIaWVyYXJjaHlDaGlsZHJlbihoaWVyYXJjaHksIHZhbCwgcmVjLCBwaXZvdEtleXM6IElQaXZvdEtleXMpIHtcbiAgICAgICAgY29uc3QgcmVjb3Jkc0tleSA9IHBpdm90S2V5cy5yZWNvcmRzO1xuICAgICAgICBjb25zdCBjaGlsZEtleSA9IHBpdm90S2V5cy5jaGlsZHJlbjtcbiAgICAgICAgY29uc3QgY2hpbGRDb2xsZWN0aW9uID0gdmFsW2NoaWxkS2V5XTtcbiAgICAgICAgY29uc3QgaGllcmFyY2h5VmFsdWUgPSBoaWVyYXJjaHkuZ2V0KHZhbC52YWx1ZSk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGhpZXJhcmNoeVZhbHVlW2NoaWxkS2V5XSkpIHtcbiAgICAgICAgICAgIGhpZXJhcmNoeVZhbHVlW2NoaWxkS2V5XSA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjaGlsZENvbGxlY3Rpb24gfHwgY2hpbGRDb2xsZWN0aW9uLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRpbSA9IGhpZXJhcmNoeVZhbHVlLmRpbWVuc2lvbjtcbiAgICAgICAgICAgIGNvbnN0IGlzVmFsaWQgPSB0aGlzLmV4dHJhY3RWYWx1ZUZyb21EaW1lbnNpb24oZGltLCByZWMpID09PSB2YWwudmFsdWU7XG4gICAgICAgICAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgIGlmIChoaWVyYXJjaHlWYWx1ZVtyZWNvcmRzS2V5XSkge1xuICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlWYWx1ZVtyZWNvcmRzS2V5XS5wdXNoKHJlYyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaGllcmFyY2h5VmFsdWVbcmVjb3Jkc0tleV0gPSBbcmVjXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBoaWVyYXJjaHlDaGlsZCA9IGhpZXJhcmNoeVZhbHVlW2NoaWxkS2V5XTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2tleSwgY2hpbGRdIG9mIGNoaWxkQ29sbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIGxldCBoaWVyYXJjaHlDaGlsZFZhbHVlID0gaGllcmFyY2h5Q2hpbGQuZ2V0KGNoaWxkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoIWhpZXJhcmNoeUNoaWxkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaGllcmFyY2h5Q2hpbGQuc2V0KGNoaWxkLnZhbHVlLCBjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoeUNoaWxkVmFsdWUgPSBjaGlsZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaGllcmFyY2h5Q2hpbGRWYWx1ZVtyZWNvcmRzS2V5XSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb3B5ID0gT2JqZWN0LmFzc2lnbih7fSwgcmVjKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlY1tyZWNvcmRzS2V5XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IGFsbCBuZXN0ZWQgY2hpbGRyZW4gYXJlIHZhbGlkXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXN0ZWRWYWx1ZSA9IGhpZXJhcmNoeUNoaWxkVmFsdWUudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaW1lbnNpb24gPSBoaWVyYXJjaHlDaGlsZFZhbHVlLmRpbWVuc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkUmVjcyA9IHJlY1tyZWNvcmRzS2V5XS5maWx0ZXIoeCA9PiB0aGlzLmV4dHJhY3RWYWx1ZUZyb21EaW1lbnNpb24oZGltZW5zaW9uLCB4KSA9PT0gbmVzdGVkVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29weVtyZWNvcmRzS2V5XSA9IHZhbGlkUmVjcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlDaGlsZFZhbHVlW3JlY29yZHNLZXldLnB1c2goY29weSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaGllcmFyY2h5Q2hpbGRWYWx1ZVtyZWNvcmRzS2V5XSA9IFtyZWNdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjaGlsZFtjaGlsZEtleV0gJiYgY2hpbGRbY2hpbGRLZXldLnNpemUgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlIaWVyYXJjaHlDaGlsZHJlbihoaWVyYXJjaHlDaGlsZCwgY2hpbGQsIHJlYywgcGl2b3RLZXlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEFnZ3JlZ2F0ZUxpc3QodmFsOiBJUGl2b3RWYWx1ZSwgZ3JpZDogUGl2b3RHcmlkVHlwZSk6IElQaXZvdEFnZ3JlZ2F0b3JbXSB7XG4gICAgICAgIGlmICghdmFsLmFnZ3JlZ2F0ZUxpc3QpIHtcbiAgICAgICAgICAgIGxldCBkZWZhdWx0QWdnciA9IHRoaXMuZ2V0QWdncmVnYXRvcnNGb3JWYWx1ZSh2YWwsIGdyaWQpO1xuICAgICAgICAgICAgY29uc3QgaXNEZWZhdWx0ID0gZGVmYXVsdEFnZ3IuZmluZChcbiAgICAgICAgICAgICAgICAoeCkgPT4geC5rZXkgPT09IHZhbC5hZ2dyZWdhdGUua2V5XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgLy8gcmVzb2x2ZSBjdXN0b20gYWdncmVnYXRpb25zXG4gICAgICAgICAgICBpZiAoIWlzRGVmYXVsdCAmJiBncmlkLmRhdGFbMF1bdmFsLm1lbWJlcl0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIC8vIGlmIGZpZWxkIGV4aXN0cywgdGhlbiB3ZSBjYW4gYXBwbHkgZGVmYXVsdCBhZ2dyZWdhdGlvbnMgYW5kIGFkZCB0aGUgY3VzdG9tIG9uZS5cbiAgICAgICAgICAgICAgICBkZWZhdWx0QWdnci51bnNoaWZ0KHZhbC5hZ2dyZWdhdGUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghaXNEZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIHRoaXMgaXMgYSBjdXN0b20gYWdncmVnYXRpb24gdGhhdCBpcyBub3QgY29tcGF0aWJsZVxuICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIGRlZmF1bHRzLCBzaW5jZSBpdCBvcGVyYXRlcyBvbiBmaWVsZCB0aGF0IGlzIG5vdCBpbiB0aGUgZGF0YVxuICAgICAgICAgICAgICAgIC8vIGxlYXZlIG9ubHkgdGhlIGN1c3RvbSBvbmUuXG4gICAgICAgICAgICAgICAgZGVmYXVsdEFnZ3IgPSBbdmFsLmFnZ3JlZ2F0ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWwuYWdncmVnYXRlTGlzdCA9IGRlZmF1bHRBZ2dyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWwuYWdncmVnYXRlTGlzdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEFnZ3JlZ2F0b3JzRm9yVmFsdWUodmFsdWU6IElQaXZvdFZhbHVlLCBncmlkOiBQaXZvdEdyaWRUeXBlKTogSVBpdm90QWdncmVnYXRvcltdIHtcbiAgICAgICAgY29uc3QgZGF0YVR5cGUgPSB2YWx1ZS5kYXRhVHlwZSB8fCBncmlkLnJlc29sdmVEYXRhVHlwZXMoZ3JpZC5kYXRhWzBdW3ZhbHVlLm1lbWJlcl0pO1xuICAgICAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5OdW1iZXI6XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5DdXJyZW5jeTpcbiAgICAgICAgICAgICAgICByZXR1cm4gSWd4UGl2b3ROdW1lcmljQWdncmVnYXRlLmFnZ3JlZ2F0b3JzKCk7XG4gICAgICAgICAgICBjYXNlIEdyaWRDb2x1bW5EYXRhVHlwZS5EYXRlOlxuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIElneFBpdm90RGF0ZUFnZ3JlZ2F0ZS5hZ2dyZWdhdG9ycygpO1xuICAgICAgICAgICAgY2FzZSBHcmlkQ29sdW1uRGF0YVR5cGUuVGltZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gSWd4UGl2b3RUaW1lQWdncmVnYXRlLmFnZ3JlZ2F0b3JzKCk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBJZ3hQaXZvdEFnZ3JlZ2F0ZS5hZ2dyZWdhdG9ycygpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbiJdfQ==
@@ -51,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
51
51
  type: Input,
52
52
  args: ['igxPivotResizeHandleHeader']
53
53
  }] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtcmVzaXplLWhhbmRsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcmVzaXppbmcvcGl2b3QtZ3JpZC9waXZvdC1yZXNpemUtaGFuZGxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUdULEtBQUssRUFFUixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBRXRFOzs7R0FHRztBQUVILE1BQU0sT0FBTyw2QkFBOEIsU0FBUSx3QkFBd0I7SUFvQnZFLFlBQXNCLElBQVksRUFDcEIsT0FBbUIsRUFDdEIsa0JBQWlEO1FBQ3hELEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFIdkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNwQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ3RCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBK0I7SUFFNUQsQ0FBQztJQXRCRDs7T0FFRztJQUNILElBQ1csV0FBVyxDQUFDLEtBQWlCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFBQSxDQUFDO0lBRUYsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBY0Q7O09BRUc7SUFDSSxhQUFhO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRDs7T0FFRztJQUNPLGlCQUFpQixDQUFDLEtBQUssR0FBRyxJQUFJO1FBQ3BDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDakUsQ0FBQzs7MEhBekNRLDZCQUE2Qjs4R0FBN0IsNkJBQTZCOzJGQUE3Qiw2QkFBNkI7a0JBRHpDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUU7a0tBT2xDLFdBQVc7c0JBRHJCLEtBQUs7dUJBQUMsc0JBQXNCO2dCQWF0QixjQUFjO3NCQURwQixLQUFLO3VCQUFDLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE5nWm9uZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbHVtblR5cGUgfSBmcm9tICcuLi8uLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGl2b3RSb3dIZWFkZXJHcm91cFR5cGUgfSBmcm9tICcuLi8uLi9waXZvdC1ncmlkL3Bpdm90LWdyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElneFBpdm90Q29sdW1uUmVzaXppbmdTZXJ2aWNlIH0gZnJvbSAnLi9waXZvdC1yZXNpemluZy5zZXJ2aWNlJ1xuaW1wb3J0IHsgSWd4UmVzaXplSGFuZGxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vcmVzaXplLWhhbmRsZS5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbaWd4UGl2b3RSZXNpemVIYW5kbGVdJyB9KVxuZXhwb3J0IGNsYXNzIElneFBpdm90UmVzaXplSGFuZGxlRGlyZWN0aXZlIGV4dGVuZHMgSWd4UmVzaXplSGFuZGxlRGlyZWN0aXZlIHtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneFBpdm90UmVzaXplSGFuZGxlJylcbiAgICBwdWJsaWMgc2V0IHBpdm90Q29sdW1uKHZhbHVlOiBDb2x1bW5UeXBlKSB7XG4gICAgICAgIHRoaXMuY29sdW1uID0gdmFsdWU7XG4gICAgfTtcblxuICAgIHB1YmxpYyBnZXQgcGl2b3RDb2x1bW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hQaXZvdFJlc2l6ZUhhbmRsZUhlYWRlcicpXG4gICAgcHVibGljIHJvd0hlYWRlckdyb3VwOiBQaXZvdFJvd0hlYWRlckdyb3VwVHlwZTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB6b25lOiBOZ1pvbmUsXG4gICAgICAgIHByb3RlY3RlZCBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgY29sUmVzaXppbmdTZXJ2aWNlOiBJZ3hQaXZvdENvbHVtblJlc2l6aW5nU2VydmljZSkge1xuICAgICAgICBzdXBlcih6b25lLCBlbGVtZW50LCBjb2xSZXNpemluZ1NlcnZpY2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgb25Eb3VibGVDbGljaygpIHtcbiAgICAgICAgdGhpcy5fZGJsQ2xpY2sgPSB0cnVlO1xuICAgICAgICB0aGlzLmluaXRSZXNpemVTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMucm93SGVhZGVyR3JvdXAuZ3JpZC5hdXRvU2l6ZVJvd0RpbWVuc2lvbih0aGlzLnJvd0hlYWRlckdyb3VwLnBhcmVudC5yb290RGltZW5zaW9uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGluaXRSZXNpemVTZXJ2aWNlKGV2ZW50ID0gbnVsbCkge1xuICAgICAgICBzdXBlci5pbml0UmVzaXplU2VydmljZShldmVudCk7XG4gICAgICAgIHRoaXMuY29sUmVzaXppbmdTZXJ2aWNlLnJvd0hlYWRlckdyb3VwID0gdGhpcy5yb3dIZWFkZXJHcm91cDtcbiAgICB9XG59XG4iXX0=
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtcmVzaXplLWhhbmRsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcmVzaXppbmcvcGl2b3QtZ3JpZC9waXZvdC1yZXNpemUtaGFuZGxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssRUFFUixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBRXRFOzs7R0FHRztBQUVILE1BQU0sT0FBTyw2QkFBOEIsU0FBUSx3QkFBd0I7SUFvQnZFLFlBQXNCLElBQVksRUFDcEIsT0FBbUIsRUFDdEIsa0JBQWlEO1FBQ3hELEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFIdkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNwQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ3RCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBK0I7SUFFNUQsQ0FBQztJQXRCRDs7T0FFRztJQUNILElBQ1csV0FBVyxDQUFDLEtBQWlCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFBQSxDQUFDO0lBRUYsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBY0Q7O09BRUc7SUFDSSxhQUFhO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRDs7T0FFRztJQUNPLGlCQUFpQixDQUFDLEtBQUssR0FBRyxJQUFJO1FBQ3BDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDakUsQ0FBQzs7MEhBekNRLDZCQUE2Qjs4R0FBN0IsNkJBQTZCOzJGQUE3Qiw2QkFBNkI7a0JBRHpDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUU7a0tBT2xDLFdBQVc7c0JBRHJCLEtBQUs7dUJBQUMsc0JBQXNCO2dCQWF0QixjQUFjO3NCQURwQixLQUFLO3VCQUFDLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgTmdab25lXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sdW1uVHlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQaXZvdFJvd0hlYWRlckdyb3VwVHlwZSB9IGZyb20gJy4uLy4uL3Bpdm90LWdyaWQvcGl2b3QtZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4UGl2b3RDb2x1bW5SZXNpemluZ1NlcnZpY2UgfSBmcm9tICcuL3Bpdm90LXJlc2l6aW5nLnNlcnZpY2UnXG5pbXBvcnQgeyBJZ3hSZXNpemVIYW5kbGVEaXJlY3RpdmUgfSBmcm9tICcuLi9yZXNpemUtaGFuZGxlLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tpZ3hQaXZvdFJlc2l6ZUhhbmRsZV0nIH0pXG5leHBvcnQgY2xhc3MgSWd4UGl2b3RSZXNpemVIYW5kbGVEaXJlY3RpdmUgZXh0ZW5kcyBJZ3hSZXNpemVIYW5kbGVEaXJlY3RpdmUge1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4UGl2b3RSZXNpemVIYW5kbGUnKVxuICAgIHB1YmxpYyBzZXQgcGl2b3RDb2x1bW4odmFsdWU6IENvbHVtblR5cGUpIHtcbiAgICAgICAgdGhpcy5jb2x1bW4gPSB2YWx1ZTtcbiAgICB9O1xuXG4gICAgcHVibGljIGdldCBwaXZvdENvbHVtbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneFBpdm90UmVzaXplSGFuZGxlSGVhZGVyJylcbiAgICBwdWJsaWMgcm93SGVhZGVyR3JvdXA6IFBpdm90Um93SGVhZGVyR3JvdXBUeXBlO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIHpvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJvdGVjdGVkIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIHB1YmxpYyBjb2xSZXNpemluZ1NlcnZpY2U6IElneFBpdm90Q29sdW1uUmVzaXppbmdTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKHpvbmUsIGVsZW1lbnQsIGNvbFJlc2l6aW5nU2VydmljZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBvbkRvdWJsZUNsaWNrKCkge1xuICAgICAgICB0aGlzLl9kYmxDbGljayA9IHRydWU7XG4gICAgICAgIHRoaXMuaW5pdFJlc2l6ZVNlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5yb3dIZWFkZXJHcm91cC5ncmlkLmF1dG9TaXplUm93RGltZW5zaW9uKHRoaXMucm93SGVhZGVyR3JvdXAucGFyZW50LnJvb3REaW1lbnNpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaW5pdFJlc2l6ZVNlcnZpY2UoZXZlbnQgPSBudWxsKSB7XG4gICAgICAgIHN1cGVyLmluaXRSZXNpemVTZXJ2aWNlKGV2ZW50KTtcbiAgICAgICAgdGhpcy5jb2xSZXNpemluZ1NlcnZpY2Uucm93SGVhZGVyR3JvdXAgPSB0aGlzLnJvd0hlYWRlckdyb3VwO1xuICAgIH1cbn1cbiJdfQ==
@@ -101,4 +101,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
101
101
  type: HostListener,
102
102
  args: ['dblclick']
103
103
  }] } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLWhhbmRsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcmVzaXppbmcvcmVzaXplLWhhbmRsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFFVCxLQUFLLEVBRUwsWUFBWSxFQUVmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU96RDs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sd0JBQXdCO0lBb0JqQyxZQUFzQixJQUFZLEVBQ3BCLE9BQW1CLEVBQ3RCLGtCQUE0QztRQUZqQyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ3BCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUEwQjtRQWR2RDs7V0FFRztRQUNPLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFNUI7O1dBRUc7UUFDSyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUV6QixrQkFBYSxHQUFHLEdBQUcsQ0FBQztJQUlzQixDQUFDO0lBRTVEOztPQUVHO0lBRUksV0FBVztRQUNkLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUVJLGFBQWE7UUFDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQzdCLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ25ELFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQ2hDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQzNCLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBaUIsRUFBRSxFQUFFO29CQUU5QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7d0JBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO3dCQUN2QixPQUFPO3FCQUNWO29CQUVELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7d0JBQ3BCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQzFEO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7WUFFSCxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUNqRCxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUNoQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUMzQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztnQkFDakQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QyxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssc0JBQXNCLENBQUMsS0FBSztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNPLGlCQUFpQixDQUFDLEtBQUssR0FBRyxJQUFJO1FBQ3BDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUU3QyxJQUFJLEtBQUssRUFBRTtZQUNQLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDaEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQzFEO0lBQ0wsQ0FBQzs7cUhBeEdRLHdCQUF3Qjt5R0FBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUU7NkpBT2pDLE1BQU07c0JBRFosS0FBSzt1QkFBQyxpQkFBaUI7Z0JBdUJqQixXQUFXO3NCQURqQixZQUFZO3VCQUFDLFdBQVc7Z0JBU2xCLGFBQWE7c0JBRG5CLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb2x1bW5UeXBlIH0gZnJvbSAnLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBpdm90Um93SGVhZGVyR3JvdXBUeXBlIH0gZnJvbSAnLi4vcGl2b3QtZ3JpZC9waXZvdC1ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5SZXNpemluZ1NlcnZpY2UgfSBmcm9tICcuL3Jlc2l6aW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4UGl2b3RDb2x1bW5SZXNpemluZ1NlcnZpY2UgfSBmcm9tICcuL3Bpdm90LWdyaWQvcGl2b3QtcmVzaXppbmcuc2VydmljZSdcblxuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbaWd4UmVzaXplSGFuZGxlXScgfSlcbmV4cG9ydCBjbGFzcyBJZ3hSZXNpemVIYW5kbGVEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBJbnB1dCgnaWd4UmVzaXplSGFuZGxlJylcbiAgICBwdWJsaWMgY29sdW1uOiBDb2x1bW5UeXBlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfZGJsQ2xpY2sgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgREVCT1VOQ0VfVElNRSA9IDIwMDtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB6b25lOiBOZ1pvbmUsXG4gICAgICAgIHByb3RlY3RlZCBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgY29sUmVzaXppbmdTZXJ2aWNlOiBJZ3hDb2x1bW5SZXNpemluZ1NlcnZpY2UpIHsgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlb3ZlcicpXG4gICAgcHVibGljIG9uTW91c2VPdmVyKCkge1xuICAgICAgICB0aGlzLmNvbFJlc2l6aW5nU2VydmljZS5yZXNpemVDdXJzb3IgPSAnY29sLXJlc2l6ZSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2RibGNsaWNrJylcbiAgICBwdWJsaWMgb25Eb3VibGVDbGljaygpIHtcbiAgICAgICAgdGhpcy5fZGJsQ2xpY2sgPSB0cnVlO1xuICAgICAgICB0aGlzLmluaXRSZXNpemVTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMuY29sUmVzaXppbmdTZXJ2aWNlLmF1dG9zaXplQ29sdW1uT25EYmxDbGljaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMuY29sdW1uLmNvbHVtbkdyb3VwICYmIHRoaXMuY29sdW1uLnJlc2l6YWJsZSkge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdtb3VzZWRvd24nKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5ERUJPVU5DRV9USU1FKSxcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgICAgICAgICAgKS5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2RibENsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYmxDbGljayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25SZXNpemVBcmVhTW91c2VEb3duKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uLmdyaWQucmVzaXplTGluZS5yZXNpemVyLm9uTW91c2Vkb3duKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZyb21FdmVudCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ21vdXNldXAnKS5waXBlKFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSh0aGlzLkRFQk9VTkNFX1RJTUUpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICAgICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29sUmVzaXppbmdTZXJ2aWNlLmlzQ29sdW1uUmVzaXppbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbFJlc2l6aW5nU2VydmljZS5zaG93UmVzaXplciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uLmdyaWQuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX29uUmVzaXplQXJlYU1vdXNlRG93bihldmVudCkge1xuICAgICAgICB0aGlzLmluaXRSZXNpemVTZXJ2aWNlKGV2ZW50KTtcblxuICAgICAgICB0aGlzLmNvbFJlc2l6aW5nU2VydmljZS5zaG93UmVzaXplciA9IHRydWU7XG4gICAgICAgIHRoaXMuY29sdW1uLmdyaWQuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGluaXRSZXNpemVTZXJ2aWNlKGV2ZW50ID0gbnVsbCkge1xuICAgICAgICB0aGlzLmNvbFJlc2l6aW5nU2VydmljZS5jb2x1bW4gPSB0aGlzLmNvbHVtbjtcblxuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY29sUmVzaXppbmdTZXJ2aWNlLmlzQ29sdW1uUmVzaXppbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jb2xSZXNpemluZ1NlcnZpY2Uuc3RhcnRSZXNpemVQb3MgPSBldmVudC5jbGllbnRYO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLWhhbmRsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcmVzaXppbmcvcmVzaXplLWhhbmRsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFFVCxLQUFLLEVBRUwsWUFBWSxFQUVmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUt6RDs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sd0JBQXdCO0lBb0JqQyxZQUFzQixJQUFZLEVBQ3BCLE9BQW1CLEVBQ3RCLGtCQUE0QztRQUZqQyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ3BCLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUEwQjtRQWR2RDs7V0FFRztRQUNPLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFNUI7O1dBRUc7UUFDSyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUV6QixrQkFBYSxHQUFHLEdBQUcsQ0FBQztJQUlzQixDQUFDO0lBRTVEOztPQUVHO0lBRUksV0FBVztRQUNkLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUVJLGFBQWE7UUFDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQzdCLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ25ELFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQ2hDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQzNCLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBaUIsRUFBRSxFQUFFO29CQUU5QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7d0JBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO3dCQUN2QixPQUFPO3FCQUNWO29CQUVELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7d0JBQ3BCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQzFEO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7WUFFSCxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUNqRCxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUNoQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUMzQixDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztnQkFDakQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QyxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssc0JBQXNCLENBQUMsS0FBSztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNPLGlCQUFpQixDQUFDLEtBQUssR0FBRyxJQUFJO1FBQ3BDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUU3QyxJQUFJLEtBQUssRUFBRTtZQUNQLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDaEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1NBQzFEO0lBQ0wsQ0FBQzs7cUhBeEdRLHdCQUF3Qjt5R0FBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUU7NkpBT2pDLE1BQU07c0JBRFosS0FBSzt1QkFBQyxpQkFBaUI7Z0JBdUJqQixXQUFXO3NCQURqQixZQUFZO3VCQUFDLFdBQVc7Z0JBU2xCLGFBQWE7c0JBRG5CLFlBQVk7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb2x1bW5UeXBlIH0gZnJvbSAnLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElneENvbHVtblJlc2l6aW5nU2VydmljZSB9IGZyb20gJy4vcmVzaXppbmcuc2VydmljZSc7XG5cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2lneFJlc2l6ZUhhbmRsZV0nIH0pXG5leHBvcnQgY2xhc3MgSWd4UmVzaXplSGFuZGxlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneFJlc2l6ZUhhbmRsZScpXG4gICAgcHVibGljIGNvbHVtbjogQ29sdW1uVHlwZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2RibENsaWNrID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IERFQk9VTkNFX1RJTUUgPSAyMDA7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgem9uZTogTmdab25lLFxuICAgICAgICBwcm90ZWN0ZWQgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIGNvbFJlc2l6aW5nU2VydmljZTogSWd4Q29sdW1uUmVzaXppbmdTZXJ2aWNlKSB7IH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZW92ZXInKVxuICAgIHB1YmxpYyBvbk1vdXNlT3ZlcigpIHtcbiAgICAgICAgdGhpcy5jb2xSZXNpemluZ1NlcnZpY2UucmVzaXplQ3Vyc29yID0gJ2NvbC1yZXNpemUnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdkYmxjbGljaycpXG4gICAgcHVibGljIG9uRG91YmxlQ2xpY2soKSB7XG4gICAgICAgIHRoaXMuX2RibENsaWNrID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pbml0UmVzaXplU2VydmljZSgpO1xuICAgICAgICB0aGlzLmNvbFJlc2l6aW5nU2VydmljZS5hdXRvc2l6ZUNvbHVtbk9uRGJsQ2xpY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbHVtbi5jb2x1bW5Hcm91cCAmJiB0aGlzLmNvbHVtbi5yZXNpemFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJykucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuREVCT1VOQ0VfVElNRSksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICAgICAgICAgICkuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9kYmxDbGljaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGJsQ2xpY2sgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5idXR0b24gPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29uUmVzaXplQXJlYU1vdXNlRG93bihldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbi5ncmlkLnJlc2l6ZUxpbmUucmVzaXplci5vbk1vdXNlZG93bihldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdtb3VzZXVwJykucGlwZShcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5ERUJPVU5DRV9USU1FKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbFJlc2l6aW5nU2VydmljZS5pc0NvbHVtblJlc2l6aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2xSZXNpemluZ1NlcnZpY2Uuc2hvd1Jlc2l6ZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbi5ncmlkLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9vblJlc2l6ZUFyZWFNb3VzZURvd24oZXZlbnQpIHtcbiAgICAgICAgdGhpcy5pbml0UmVzaXplU2VydmljZShldmVudCk7XG5cbiAgICAgICAgdGhpcy5jb2xSZXNpemluZ1NlcnZpY2Uuc2hvd1Jlc2l6ZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLmNvbHVtbi5ncmlkLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBpbml0UmVzaXplU2VydmljZShldmVudCA9IG51bGwpIHtcbiAgICAgICAgdGhpcy5jb2xSZXNpemluZ1NlcnZpY2UuY29sdW1uID0gdGhpcy5jb2x1bW47XG5cbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNvbFJlc2l6aW5nU2VydmljZS5pc0NvbHVtblJlc2l6aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY29sUmVzaXppbmdTZXJ2aWNlLnN0YXJ0UmVzaXplUG9zID0gZXZlbnQuY2xpZW50WDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -19,4 +19,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
19
19
  type: ViewChild,
20
20
  args: [IgxColumnResizerDirective, { static: true }]
21
21
  }] } });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcmVzaXppbmcvcmVzaXplci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcmVzaXppbmcvcmVzaXplci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFlLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFPaEUsTUFBTSxPQUFPLDZCQUE2QjtJQU90QyxZQUFtQixrQkFBNEM7UUFBNUMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUEwQjtJQUFJLENBQUM7OzBIQVAzRCw2QkFBNkI7OEdBQTdCLDZCQUE2Qiw4SkFJM0IseUJBQXlCLDhEQ2J4QywrWUFRQTsyRkRDYSw2QkFBNkI7a0JBTHpDLFNBQVM7c0NBQ1csdUJBQXVCLENBQUMsTUFBTSxZQUNyQyx5QkFBeUI7K0dBSzVCLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFJQyxPQUFPO3NCQURiLFNBQVM7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneENvbHVtblJlc2l6aW5nU2VydmljZSB9IGZyb20gJy4vcmVzaXppbmcuc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5SZXNpemVyRGlyZWN0aXZlIH0gZnJvbSAnLi9yZXNpemVyLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnaWd4LWdyaWQtY29sdW1uLXJlc2l6ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZXNpemVyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkQ29sdW1uUmVzaXplckNvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVzdHJpY3RSZXNpemVyVG9wOiBudW1iZXI7XG4gICAgXG4gICAgQFZpZXdDaGlsZChJZ3hDb2x1bW5SZXNpemVyRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyByZXNpemVyOiBJZ3hDb2x1bW5SZXNpemVyRGlyZWN0aXZlO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGNvbFJlc2l6aW5nU2VydmljZTogSWd4Q29sdW1uUmVzaXppbmdTZXJ2aWNlKSB7IH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpZ3gtZ3JpZC10aF9fcmVzaXplLWxpbmVcIlxuICAgIFtzdHlsZS5sZWZ0LnB4XT1cIi05OTk5OVwiIGlneFJlc2l6ZXJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImNvbFJlc2l6aW5nU2VydmljZS5yZXNpemVySGVpZ2h0XCJcbiAgICBbcmVzdHJpY3RIUmVzaXplTWF4XT1cImNvbFJlc2l6aW5nU2VydmljZS5yZXN0cmljdFJlc2l6ZU1heFwiXG4gICAgW3Jlc3RyaWN0SFJlc2l6ZU1pbl09XCJjb2xSZXNpemluZ1NlcnZpY2UucmVzdHJpY3RSZXNpemVNaW5cIlxuICAgIFtyZXN0cmljdFJlc2l6ZXJUb3BdPVwicmVzdHJpY3RSZXNpemVyVG9wXCJcbiAgICAocmVzaXplRW5kKT1cImNvbFJlc2l6aW5nU2VydmljZS5yZXNpemVDb2x1bW4oJGV2ZW50KVwiPlxuPC9kaXY+XG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcmVzaXppbmcvcmVzaXplci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcmVzaXppbmcvcmVzaXplci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFPaEUsTUFBTSxPQUFPLDZCQUE2QjtJQU90QyxZQUFtQixrQkFBNEM7UUFBNUMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUEwQjtJQUFJLENBQUM7OzBIQVAzRCw2QkFBNkI7OEdBQTdCLDZCQUE2Qiw4SkFJM0IseUJBQXlCLDhEQ2J4QywrWUFRQTsyRkRDYSw2QkFBNkI7a0JBTHpDLFNBQVM7c0NBQ1csdUJBQXVCLENBQUMsTUFBTSxZQUNyQyx5QkFBeUI7K0dBSzVCLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFJQyxPQUFPO3NCQURiLFNBQVM7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4Q29sdW1uUmVzaXppbmdTZXJ2aWNlIH0gZnJvbSAnLi9yZXNpemluZy5zZXJ2aWNlJztcbmltcG9ydCB7IElneENvbHVtblJlc2l6ZXJEaXJlY3RpdmUgfSBmcm9tICcuL3Jlc2l6ZXIuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc2VsZWN0b3I6ICdpZ3gtZ3JpZC1jb2x1bW4tcmVzaXplcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Jlc2l6ZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRDb2x1bW5SZXNpemVyQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZXN0cmljdFJlc2l6ZXJUb3A6IG51bWJlcjtcblxuICAgIEBWaWV3Q2hpbGQoSWd4Q29sdW1uUmVzaXplckRpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgcmVzaXplcjogSWd4Q29sdW1uUmVzaXplckRpcmVjdGl2ZTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjb2xSZXNpemluZ1NlcnZpY2U6IElneENvbHVtblJlc2l6aW5nU2VydmljZSkgeyB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaWd4LWdyaWQtdGhfX3Jlc2l6ZS1saW5lXCJcbiAgICBbc3R5bGUubGVmdC5weF09XCItOTk5OTlcIiBpZ3hSZXNpemVyXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJjb2xSZXNpemluZ1NlcnZpY2UucmVzaXplckhlaWdodFwiXG4gICAgW3Jlc3RyaWN0SFJlc2l6ZU1heF09XCJjb2xSZXNpemluZ1NlcnZpY2UucmVzdHJpY3RSZXNpemVNYXhcIlxuICAgIFtyZXN0cmljdEhSZXNpemVNaW5dPVwiY29sUmVzaXppbmdTZXJ2aWNlLnJlc3RyaWN0UmVzaXplTWluXCJcbiAgICBbcmVzdHJpY3RSZXNpemVyVG9wXT1cInJlc3RyaWN0UmVzaXplclRvcFwiXG4gICAgKHJlc2l6ZUVuZCk9XCJjb2xSZXNpemluZ1NlcnZpY2UucmVzaXplQ29sdW1uKCRldmVudClcIj5cbjwvZGl2PlxuIl19
@@ -201,4 +201,4 @@ IgxColumnResizingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0
201
201
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: IgxColumnResizingService, decorators: [{
202
202
  type: Injectable
203
203
  }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXppbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9yZXNpemluZy9yZXNpemluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBSW5EOzs7R0FHRztBQUVILE1BQU0sT0FBTyx3QkFBd0I7SUF1QmpDLFlBQW9CLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO1FBYmhDOztXQUVHO1FBQ0ksaUJBQVksR0FBVyxJQUFJLENBQUM7UUFDbkM7O1dBRUc7UUFDSyxnQkFBVyxHQUFHLEtBQUssQ0FBQztJQU1RLENBQUM7SUFFckM7O09BRUc7SUFDSSw0QkFBNEI7UUFDL0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDOUUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxhQUFhO1FBQ3BCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFFeEQsb0hBQW9IO1FBQ3BILElBQUksc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRTtZQUMvQixzQkFBc0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7U0FDOUY7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRTtZQUN6QixNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLE1BQU0s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O1FBQ2pFLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM1QixNQUFNLFlBQVksR0FBRyxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO1lBQ3JGLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQ2xDLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ25HLElBQUksaUJBQWlCLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzFEO2lCQUFNO2dCQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3JEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztxSEE3TlEsd0JBQXdCO3lIQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sdW1uVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQaXZvdFJvd0hlYWRlckdyb3VwVHlwZSB9IGZyb20gJy4uL3Bpdm90LWdyaWQvcGl2b3QtZ3JpZC5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSWd4Q29sdW1uUmVzaXppbmdTZXJ2aWNlIHtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhcnRSZXNpemVQb3M6IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgdGhhdCBhIGNvbHVtbiBpcyBjdXJyZW50bHkgYmVpbmcgcmVzaXplZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNDb2x1bW5SZXNpemluZzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIHJlc2l6ZUN1cnNvcjogc3RyaW5nID0gbnVsbDtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgIHB1YmxpYyBzaG93UmVzaXplciA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFRoZSBjb2x1bW4gYmVpbmcgcmVzaXplZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29sdW1uOiBDb2x1bW5UeXBlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHsgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb2x1bW5IZWFkZXJSZW5kZXJlZFdpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW4uaGVhZGVyQ2VsbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHJlc2l6ZXJIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGhlaWdodCA9IHRoaXMuY29sdW1uLmdyaWQuZ2V0VmlzaWJsZUNvbnRlbnRIZWlnaHQoKTtcblxuICAgICAgICAvLyBDb2x1bW4gaGVpZ2h0IG11bHRpcGxpZXIgaW4gY2FzZSB0aGVyZSBhcmUgQ29sdW1uIExheW91dHMuIFRoZSByZXNpemVyIGhlaWdodCBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50IHJvd1N0YXJ0LlxuICAgICAgICBsZXQgY29sdW1uSGVpZ2h0TXVsdGlwbGllciA9IDE7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbi5jb2x1bW5MYXlvdXRDaGlsZCkge1xuICAgICAgICAgICAgY29sdW1uSGVpZ2h0TXVsdGlwbGllciA9IHRoaXMuY29sdW1uLmdyaWQubXVsdGlSb3dMYXlvdXRSb3dTaXplIC0gdGhpcy5jb2x1bW4ucm93U3RhcnQgKyAxO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29sdW1uLmxldmVsICE9PSAwKSB7XG4gICAgICAgICAgICBoZWlnaHQgLT0gdGhpcy5jb2x1bW4udG9wTGV2ZWxQYXJlbnQuaGVhZGVyR3JvdXAuaGVpZ2h0IC0gdGhpcy5jb2x1bW4uaGVhZGVyR3JvdXAuaGVpZ2h0ICogY29sdW1uSGVpZ2h0TXVsdGlwbGllcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBoZWlnaHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbWluaW1hbCBwb3NzaWJsZSB3aWR0aCB0byB3aGljaCB0aGUgY29sdW1uIGNhbiBiZSByZXNpemVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcmVzdHJpY3RSZXNpemVNaW4oKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgYWN0dWFsV2lkdGggPSB0aGlzLmdldENvbHVtbkhlYWRlclJlbmRlcmVkV2lkdGgoKTtcbiAgICAgICAgY29uc3QgbWluV2lkdGggPSB0aGlzLmNvbHVtbi5taW5XaWR0aFB4IDwgYWN0dWFsV2lkdGggPyB0aGlzLmNvbHVtbi5taW5XaWR0aFB4IDogYWN0dWFsV2lkdGg7XG5cbiAgICAgICAgcmV0dXJuIGFjdHVhbFdpZHRoIC0gbWluV2lkdGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbWF4aW1hbCBwb3NzaWJsZSB3aWR0aCB0byB3aGljaCB0aGUgY29sdW1uIGNhbiBiZSByZXNpemVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcmVzdHJpY3RSZXNpemVNYXgoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgYWN0dWFsV2lkdGggPSB0aGlzLmdldENvbHVtbkhlYWRlclJlbmRlcmVkV2lkdGgoKTtcbiAgICAgICAgY29uc3QgbWF4V2lkdGggPSB0aGlzLmNvbHVtbi5tYXhXaWR0aFB4O1xuICAgICAgICBpZiAodGhpcy5jb2x1bW4ubWF4V2lkdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBtYXhXaWR0aCAtIGFjdHVhbFdpZHRoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXV0b3NpemVzIHRoZSBjb2x1bW4gdG8gdGhlIGxvbmdlc3QgY3VycmVudGx5IHZpc2libGUgY2VsbCB2YWx1ZSwgaW5jbHVkaW5nIHRoZSBoZWFkZXIgY2VsbC5cbiAgICAgKiBJZiB0aGUgY29sdW1uIGhhcyBhIHByZWRpZmluZWQgbWF4V2lkdGggYW5kIHRoZSBhdXRvc2l6ZWQgY29sdW1uIHdpZHRoIHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIGl0LFxuICAgICAqIHRoZW4gdGhlIGNvbHVtbiBpcyBzaXplZCB0byBpdHMgbWF4V2lkdGguXG4gICAgICovXG4gICAgcHVibGljIGF1dG9zaXplQ29sdW1uT25EYmxDbGljaygpIHtcbiAgICAgICAgY29uc3QgY3VycmVudENvbFdpZHRoID0gdGhpcy5nZXRDb2x1bW5IZWFkZXJSZW5kZXJlZFdpZHRoKCk7XG4gICAgICAgIHRoaXMuY29sdW1uLndpZHRoID0gdGhpcy5jb2x1bW4uZ2V0QXV0b1NpemUoKTtcblxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHsgfSk7XG5cbiAgICAgICAgdGhpcy5jb2x1bW4uZ3JpZC5jb2x1bW5SZXNpemVkLmVtaXQoe1xuICAgICAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcbiAgICAgICAgICAgIHByZXZXaWR0aDogY3VycmVudENvbFdpZHRoLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBuZXdXaWR0aDogdGhpcy5jb2x1bW4ud2lkdGhcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzaXplcyB0aGUgY29sdW1uIHJlZ2FyaWRuZyB0byB0aGUgY29sdW1uIG1pbldpZHRoIGFuZCBtYXhXaWR0aC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVzaXplQ29sdW1uKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2hvd1Jlc2l6ZXIgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgZGlmZiA9IGV2ZW50LmNsaWVudFggLSB0aGlzLnN0YXJ0UmVzaXplUG9zO1xuXG4gICAgICAgIGNvbnN0IGNvbFdpZHRoID0gdGhpcy5jb2x1bW4ud2lkdGg7XG4gICAgICAgIGNvbnN0IGlzUGVyY2VudGFnZVdpZHRoID0gY29sV2lkdGggJiYgdHlwZW9mIGNvbFdpZHRoID09PSAnc3RyaW5nJyAmJiBjb2xXaWR0aC5pbmRleE9mKCclJykgIT09IC0xO1xuICAgICAgICBsZXQgY3VycmVudENvbFdpZHRoID0gcGFyc2VGbG9hdChjb2xXaWR0aCk7XG4gICAgICAgIGNvbnN0IGFjdHVhbFdpZHRoID0gdGhpcy5nZXRDb2x1bW5IZWFkZXJSZW5kZXJlZFdpZHRoKCk7XG4gICAgICAgIGN1cnJlbnRDb2xXaWR0aCA9IE51bWJlci5pc05hTihjdXJyZW50Q29sV2lkdGgpID8gcGFyc2VGbG9hdChhY3R1YWxXaWR0aCBhcyBhbnkpIDogY3VycmVudENvbFdpZHRoO1xuXG4gICAgICAgIGlmICh0aGlzLmNvbHVtbi5ncmlkLmhhc0NvbHVtbkxheW91dHMpIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplQ29sdW1uTGF5b3V0Rm9yKHRoaXMuY29sdW1uLCBkaWZmKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc1BlcmNlbnRhZ2VXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlUGVyY2VudGFnZVJlc2l6ZShkaWZmLCB0aGlzLmNvbHVtbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVQaXhlbFJlc2l6ZShkaWZmLCB0aGlzLmNvbHVtbik7XG4gICAgICAgIH1cblxuXG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4geyB9KTtcblxuICAgICAgICBpZiAoY3VycmVudENvbFdpZHRoICE9PSBwYXJzZUZsb2F0KHRoaXMuY29sdW1uLndpZHRoKSkge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW4uZ3JpZC5jb2x1bW5SZXNpemVkLmVtaXQoe1xuICAgICAgICAgICAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4sXG4gICAgICAgICAgICAgICAgcHJldldpZHRoOiBpc1BlcmNlbnRhZ2VXaWR0aCA/IGN1cnJlbnRDb2xXaWR0aCArICclJyA6IGN1cnJlbnRDb2xXaWR0aCArICdweCcsXG4gICAgICAgICAgICAgICAgbmV3V2lkdGg6IHRoaXMuY29sdW1uLndpZHRoXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNDb2x1bW5SZXNpemluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaGFuZGxlUGl4ZWxSZXNpemUoZGlmZjogbnVtYmVyLCBjb2x1bW46IENvbHVtblR5cGUpIHtcbiAgICAgICAgY29uc3QgY3VycmVudENvbFdpZHRoID0gcGFyc2VGbG9hdChjb2x1bW4ud2lkdGgpO1xuICAgICAgICBjb25zdCBjb2xNaW5XaWR0aCA9IGNvbHVtbi5taW5XaWR0aFB4O1xuICAgICAgICBjb25zdCBjb2xNYXhXaWR0aCA9IGNvbHVtbi5tYXhXaWR0aFB4O1xuICAgICAgICBpZiAoY3VycmVudENvbFdpZHRoICsgZGlmZiA8IGNvbE1pbldpZHRoKSB7XG4gICAgICAgICAgICBjb2x1bW4ud2lkdGggPSBjb2xNaW5XaWR0aCArICdweCc7XG4gICAgICAgIH0gZWxzZSBpZiAoY29sTWF4V2lkdGggJiYgKGN1cnJlbnRDb2xXaWR0aCArIGRpZmYgPiBjb2xNYXhXaWR0aCkpIHtcbiAgICAgICAgICAgIGNvbHVtbi53aWR0aCA9IGNvbE1heFdpZHRoICsgJ3B4JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbHVtbi53aWR0aCA9IChjdXJyZW50Q29sV2lkdGggKyBkaWZmKSArICdweCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2hhbmRsZVBlcmNlbnRhZ2VSZXNpemUoZGlmZjogbnVtYmVyLCBjb2x1bW46IENvbHVtblR5cGUpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFBlcmNlbnRXaWR0aCA9IHBhcnNlRmxvYXQoY29sdW1uLndpZHRoKTtcbiAgICAgICAgY29uc3QgZ3JpZEF2YWlsYWJsZVNpemUgPSBjb2x1bW4uZ3JpZC5jYWxjV2lkdGg7XG5cbiAgICAgICAgY29uc3QgZGlmZlBlcmNlbnRhZ2UgPSAoZGlmZiAvIGdyaWRBdmFpbGFibGVTaXplKSAqIDEwMDtcbiAgICAgICAgY29uc3QgY29sTWluV2lkdGggPSBjb2x1bW4ubWluV2lkdGhQZXJjZW50O1xuICAgICAgICBjb25zdCBjb2xNYXhXaWR0aCA9IGNvbHVtbi5tYXhXaWR0aFBlcmNlbnQ7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRQZXJjZW50V2lkdGggKyBkaWZmUGVyY2VudGFnZSA8IGNvbE1pbldpZHRoKSB7XG4gICAgICAgICAgICBjb2x1bW4ud2lkdGggPSBjb2xNaW5XaWR0aCArICclJztcbiAgICAgICAgfSBlbHNlIGlmIChjb2xNYXhXaWR0aCAmJiAoY3VycmVudFBlcmNlbnRXaWR0aCArIGRpZmZQZXJjZW50YWdlID4gY29sTWF4V2lkdGgpKSB7XG4gICAgICAgICAgICBjb2x1bW4ud2lkdGggPSBjb2xNYXhXaWR0aCArICclJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbHVtbi53aWR0aCA9IChjdXJyZW50UGVyY2VudFdpZHRoICsgZGlmZlBlcmNlbnRhZ2UpICsgJyUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldENvbE1pbldpZHRoKGNvbHVtbjogQ29sdW1uVHlwZSkge1xuICAgICAgICBsZXQgY3VycmVudENvbFdpZHRoID0gcGFyc2VGbG9hdChjb2x1bW4ud2lkdGgpO1xuICAgICAgICBjb25zdCBhY3R1YWxXaWR0aCA9IGNvbHVtbi5oZWFkZXJDZWxsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIGN1cnJlbnRDb2xXaWR0aCA9IE51bWJlci5pc05hTihjdXJyZW50Q29sV2lkdGgpIHx8IChjdXJyZW50Q29sV2lkdGggPCBhY3R1YWxXaWR0aCkgPyBhY3R1YWxXaWR0aCA6IGN1cnJlbnRDb2xXaWR0aDtcblxuICAgICAgICBjb25zdCBhY3R1YWxNaW5XaWR0aCA9IHBhcnNlRmxvYXQoY29sdW1uLm1pbldpZHRoKTtcbiAgICAgICAgcmV0dXJuIGFjdHVhbE1pbldpZHRoIDwgY3VycmVudENvbFdpZHRoID8gYWN0dWFsTWluV2lkdGggOiBjdXJyZW50Q29sV2lkdGg7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc2l6ZUNvbHVtbkxheW91dEZvcihjb2x1bW46IENvbHVtblR5cGUsIGRpZmY6IG51bWJlcikge1xuICAgICAgICBjb25zdCByZWxhdGl2ZUNvbHVtbnMgPSBjb2x1bW4uZ2V0UmVzaXphYmxlQ29sVW5kZXJFbmQoKTtcbiAgICAgICAgY29uc3QgY29tYmluZWRTcGFuID0gcmVsYXRpdmVDb2x1bW5zLnJlZHVjZSgoYWNjLCBjb2wpID0+IGFjYyArIGNvbC5zcGFuVXNlZCwgMCk7XG5cbiAgICAgICAgLy8gUmVzaXplIGZpcnN0IHRob3NlIHdobyBtaWdodCByZWFjaCBtaW4vbWF4IHdpZHRoXG4gICAgICAgIGxldCBjb2x1bW5zVG9SZXNpemUgPSBbLi4ucmVsYXRpdmVDb2x1bW5zXTtcbiAgICAgICAgbGV0IHVwZGF0ZWREaWZmID0gZGlmZjtcbiAgICAgICAgbGV0IHVwZGF0ZWRDb21iaW5lZFNwYW4gPSBjb21iaW5lZFNwYW47XG4gICAgICAgIGxldCBzZXRNaW5NYXhDb2xzID0gZmFsc2U7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIC8vIEN5Y2xlIHRoZW0gdW50aWwgdGhlcmUgYXJlIG5vdCBvbmVzIHRoYXQgcmVhY2ggbWluL21heCBzaXplLCBiZWNhdXNlIHRoZSBkaWZmIGFjY3VtdWxhdGVzIGFmdGVyIGVhY2ggY3ljbGUuXG4gICAgICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2Ugd2UgY2FuIGhhdmUgYXQgZmlyc3QgMiBjb2xzIHJlYWNoaW5nIG1pbiB3aWR0aCBhbmQgdGhlbiBhZnRlclxuICAgICAgICAgICAgLy8gcmVjYWxjdWxhdGluZyB0aGUgZGlmZiB0aGVyZSBtaWdodCBiZSAxIG1vcmUgdGhhdCByZWFjaGVzIG1pbiB3aWR0aC5cbiAgICAgICAgICAgIHNldE1pbk1heENvbHMgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBuZXdDb21iaW5lZFNwYW4gPSB1cGRhdGVkQ29tYmluZWRTcGFuO1xuICAgICAgICAgICAgY29uc3QgbmV3Q29sc1RvUmVzaXplID0gW107XG4gICAgICAgICAgICBjb2x1bW5zVG9SZXNpemUuZm9yRWFjaCgoY29sKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFJlc2l6ZVdpZHRoID0gcGFyc2VGbG9hdChjb2wudGFyZ2V0LmNhbGNXaWR0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzaXplU2NhbGVkID0gKGRpZmYgLyB1cGRhdGVkQ29tYmluZWRTcGFuKSAqIGNvbC50YXJnZXQuZ3JpZENvbHVtblNwYW47XG4gICAgICAgICAgICAgICAgY29uc3QgY29sV2lkdGggPSBjb2wudGFyZ2V0LndpZHRoO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUGVyY2VudGFnZVdpZHRoID0gY29sV2lkdGggJiYgdHlwZW9mIGNvbFdpZHRoID09PSAnc3RyaW5nJyAmJiBjb2xXaWR0aC5pbmRleE9mKCclJykgIT09IC0xO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbWluV2lkdGggPSBjb2wudGFyZ2V0Lm1pbldpZHRoUHg7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF4V2lkdGggPSBjb2wudGFyZ2V0Lm1heFdpZHRoUHg7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSZXNpemVXaWR0aCArIHJlc2l6ZVNjYWxlZCA8IG1pbldpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbC50YXJnZXQud2lkdGggPSBpc1BlcmNlbnRhZ2VXaWR0aCA/IGNvbC50YXJnZXQubWluV2lkdGhQZXJjZW50ICsgJyUnIDogbWluV2lkdGggKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVkRGlmZiArPSAoY3VycmVudFJlc2l6ZVdpZHRoIC0gbWluV2lkdGgpO1xuICAgICAgICAgICAgICAgICAgICBuZXdDb21iaW5lZFNwYW4gLT0gY29sLnNwYW5Vc2VkO1xuICAgICAgICAgICAgICAgICAgICBzZXRNaW5NYXhDb2xzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1heFdpZHRoICYmIChjdXJyZW50UmVzaXplV2lkdGggKyByZXNpemVTY2FsZWQgPiBtYXhXaWR0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29sLnRhcmdldC53aWR0aCA9IGlzUGVyY2VudGFnZVdpZHRoID8gY29sLnRhcmdldC5tYXhXaWR0aFBlcmNlbnQgKyAnJScgOiBjb2wudGFyZ2V0Lm1heFdpZHRoUHggKyAncHgnO1xuICAgICAgICAgICAgICAgICAgICB1cGRhdGVkRGlmZiAtPSAobWF4V2lkdGggLSBjdXJyZW50UmVzaXplV2lkdGgpO1xuICAgICAgICAgICAgICAgICAgICBuZXdDb21iaW5lZFNwYW4gLT0gY29sLnNwYW5Vc2VkO1xuICAgICAgICAgICAgICAgICAgICBzZXRNaW5NYXhDb2xzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBTYXZlIG5ldyBvbmVzIHRoYXQgY2FuIGJlIHJlc2l6ZWRcbiAgICAgICAgICAgICAgICAgICAgbmV3Q29sc1RvUmVzaXplLnB1c2goY29sKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdXBkYXRlZENvbWJpbmVkU3BhbiA9IG5ld0NvbWJpbmVkU3BhbjtcbiAgICAgICAgICAgIGNvbHVtbnNUb1Jlc2l6ZSA9IG5ld0NvbHNUb1Jlc2l6ZTtcbiAgICAgICAgfSB3aGlsZSAoc2V0TWluTWF4Q29scyk7XG5cbiAgICAgICAgLy8gVGhvc2UgbGVmdCB0aGF0IGRvbid0IHJlYWNoIG1pbi9tYXggc2l6ZSByZXNpemUgdGhlbSBub3JtYWxseS5cbiAgICAgICAgY29sdW1uc1RvUmVzaXplLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzaXplU2NhbGVkID0gKHVwZGF0ZWREaWZmIC8gdXBkYXRlZENvbWJpbmVkU3BhbikgKiBjb2wudGFyZ2V0LmdyaWRDb2x1bW5TcGFuO1xuICAgICAgICAgICAgY29uc3QgY29sV2lkdGggPSBjb2wudGFyZ2V0LndpZHRoO1xuICAgICAgICAgICAgY29uc3QgaXNQZXJjZW50YWdlV2lkdGggPSBjb2xXaWR0aCAmJiB0eXBlb2YgY29sV2lkdGggPT09ICdzdHJpbmcnICYmIGNvbFdpZHRoLmluZGV4T2YoJyUnKSAhPT0gLTE7XG4gICAgICAgICAgICBpZiAoaXNQZXJjZW50YWdlV2lkdGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVQZXJjZW50YWdlUmVzaXplKHJlc2l6ZVNjYWxlZCwgY29sLnRhcmdldCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZVBpeGVsUmVzaXplKHJlc2l6ZVNjYWxlZCwgY29sLnRhcmdldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXppbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9yZXNpemluZy9yZXNpemluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBR25EOzs7R0FHRztBQUVILE1BQU0sT0FBTyx3QkFBd0I7SUF1QmpDLFlBQW9CLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO1FBYmhDOztXQUVHO1FBQ0ksaUJBQVksR0FBVyxJQUFJLENBQUM7UUFDbkM7O1dBRUc7UUFDSyxnQkFBVyxHQUFHLEtBQUssQ0FBQztJQU1RLENBQUM7SUFFckM7O09BRUc7SUFDSSw0QkFBNEI7UUFDL0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDOUUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxhQUFhO1FBQ3BCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFFeEQsb0hBQW9IO1FBQ3BILElBQUksc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRTtZQUMvQixzQkFBc0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7U0FDOUY7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLENBQUMsRUFBRTtZQUN6QixNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLE1BQU0s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O1FBQ2pFLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM1QixNQUFNLFlBQVksR0FBRyxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO1lBQ3JGLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQ2xDLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ25HLElBQUksaUJBQWlCLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzFEO2lCQUFNO2dCQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3JEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztxSEE3TlEsd0JBQXdCO3lIQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sdW1uVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJZ3hDb2x1bW5SZXNpemluZ1NlcnZpY2Uge1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBzdGFydFJlc2l6ZVBvczogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyB0aGF0IGEgY29sdW1uIGlzIGN1cnJlbnRseSBiZWluZyByZXNpemVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBpc0NvbHVtblJlc2l6aW5nOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVzaXplQ3Vyc29yOiBzdHJpbmcgPSBudWxsO1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICAgcHVibGljIHNob3dSZXNpemVyID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogVGhlIGNvbHVtbiBiZWluZyByZXNpemVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb2x1bW46IENvbHVtblR5cGU7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSkgeyB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldENvbHVtbkhlYWRlclJlbmRlcmVkV2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5oZWFkZXJDZWxsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcmVzaXplckhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgaGVpZ2h0ID0gdGhpcy5jb2x1bW4uZ3JpZC5nZXRWaXNpYmxlQ29udGVudEhlaWdodCgpO1xuXG4gICAgICAgIC8vIENvbHVtbiBoZWlnaHQgbXVsdGlwbGllciBpbiBjYXNlIHRoZXJlIGFyZSBDb2x1bW4gTGF5b3V0cy4gVGhlIHJlc2l6ZXIgaGVpZ2h0IG5lZWQgdG8gdGFrZSBpbnRvIGFjY291bnQgcm93U3RhcnQuXG4gICAgICAgIGxldCBjb2x1bW5IZWlnaHRNdWx0aXBsaWVyID0gMTtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uLmNvbHVtbkxheW91dENoaWxkKSB7XG4gICAgICAgICAgICBjb2x1bW5IZWlnaHRNdWx0aXBsaWVyID0gdGhpcy5jb2x1bW4uZ3JpZC5tdWx0aVJvd0xheW91dFJvd1NpemUgLSB0aGlzLmNvbHVtbi5yb3dTdGFydCArIDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb2x1bW4ubGV2ZWwgIT09IDApIHtcbiAgICAgICAgICAgIGhlaWdodCAtPSB0aGlzLmNvbHVtbi50b3BMZXZlbFBhcmVudC5oZWFkZXJHcm91cC5oZWlnaHQgLSB0aGlzLmNvbHVtbi5oZWFkZXJHcm91cC5oZWlnaHQgKiBjb2x1bW5IZWlnaHRNdWx0aXBsaWVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGhlaWdodDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBtaW5pbWFsIHBvc3NpYmxlIHdpZHRoIHRvIHdoaWNoIHRoZSBjb2x1bW4gY2FuIGJlIHJlc2l6ZWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCByZXN0cmljdFJlc2l6ZU1pbigpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBhY3R1YWxXaWR0aCA9IHRoaXMuZ2V0Q29sdW1uSGVhZGVyUmVuZGVyZWRXaWR0aCgpO1xuICAgICAgICBjb25zdCBtaW5XaWR0aCA9IHRoaXMuY29sdW1uLm1pbldpZHRoUHggPCBhY3R1YWxXaWR0aCA/IHRoaXMuY29sdW1uLm1pbldpZHRoUHggOiBhY3R1YWxXaWR0aDtcblxuICAgICAgICByZXR1cm4gYWN0dWFsV2lkdGggLSBtaW5XaWR0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBtYXhpbWFsIHBvc3NpYmxlIHdpZHRoIHRvIHdoaWNoIHRoZSBjb2x1bW4gY2FuIGJlIHJlc2l6ZWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCByZXN0cmljdFJlc2l6ZU1heCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBhY3R1YWxXaWR0aCA9IHRoaXMuZ2V0Q29sdW1uSGVhZGVyUmVuZGVyZWRXaWR0aCgpO1xuICAgICAgICBjb25zdCBtYXhXaWR0aCA9IHRoaXMuY29sdW1uLm1heFdpZHRoUHg7XG4gICAgICAgIGlmICh0aGlzLmNvbHVtbi5tYXhXaWR0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG1heFdpZHRoIC0gYWN0dWFsV2lkdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBdXRvc2l6ZXMgdGhlIGNvbHVtbiB0byB0aGUgbG9uZ2VzdCBjdXJyZW50bHkgdmlzaWJsZSBjZWxsIHZhbHVlLCBpbmNsdWRpbmcgdGhlIGhlYWRlciBjZWxsLlxuICAgICAqIElmIHRoZSBjb2x1bW4gaGFzIGEgcHJlZGlmaW5lZCBtYXhXaWR0aCBhbmQgdGhlIGF1dG9zaXplZCBjb2x1bW4gd2lkdGggd2lsbCBiZWNvbWUgYmlnZ2VyIHRoYW4gaXQsXG4gICAgICogdGhlbiB0aGUgY29sdW1uIGlzIHNpemVkIHRvIGl0cyBtYXhXaWR0aC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXV0b3NpemVDb2x1bW5PbkRibENsaWNrKCkge1xuICAgICAgICBjb25zdCBjdXJyZW50Q29sV2lkdGggPSB0aGlzLmdldENvbHVtbkhlYWRlclJlbmRlcmVkV2lkdGgoKTtcbiAgICAgICAgdGhpcy5jb2x1bW4ud2lkdGggPSB0aGlzLmNvbHVtbi5nZXRBdXRvU2l6ZSgpO1xuXG4gICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4geyB9KTtcblxuICAgICAgICB0aGlzLmNvbHVtbi5ncmlkLmNvbHVtblJlc2l6ZWQuZW1pdCh7XG4gICAgICAgICAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgICAgICAgICAgcHJldldpZHRoOiBjdXJyZW50Q29sV2lkdGgudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIG5ld1dpZHRoOiB0aGlzLmNvbHVtbi53aWR0aFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNpemVzIHRoZSBjb2x1bW4gcmVnYXJpZG5nIHRvIHRoZSBjb2x1bW4gbWluV2lkdGggYW5kIG1heFdpZHRoLlxuICAgICAqL1xuICAgIHB1YmxpYyByZXNpemVDb2x1bW4oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zaG93UmVzaXplciA9IGZhbHNlO1xuICAgICAgICBjb25zdCBkaWZmID0gZXZlbnQuY2xpZW50WCAtIHRoaXMuc3RhcnRSZXNpemVQb3M7XG5cbiAgICAgICAgY29uc3QgY29sV2lkdGggPSB0aGlzLmNvbHVtbi53aWR0aDtcbiAgICAgICAgY29uc3QgaXNQZXJjZW50YWdlV2lkdGggPSBjb2xXaWR0aCAmJiB0eXBlb2YgY29sV2lkdGggPT09ICdzdHJpbmcnICYmIGNvbFdpZHRoLmluZGV4T2YoJyUnKSAhPT0gLTE7XG4gICAgICAgIGxldCBjdXJyZW50Q29sV2lkdGggPSBwYXJzZUZsb2F0KGNvbFdpZHRoKTtcbiAgICAgICAgY29uc3QgYWN0dWFsV2lkdGggPSB0aGlzLmdldENvbHVtbkhlYWRlclJlbmRlcmVkV2lkdGgoKTtcbiAgICAgICAgY3VycmVudENvbFdpZHRoID0gTnVtYmVyLmlzTmFOKGN1cnJlbnRDb2xXaWR0aCkgPyBwYXJzZUZsb2F0KGFjdHVhbFdpZHRoIGFzIGFueSkgOiBjdXJyZW50Q29sV2lkdGg7XG5cbiAgICAgICAgaWYgKHRoaXMuY29sdW1uLmdyaWQuaGFzQ29sdW1uTGF5b3V0cykge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVDb2x1bW5MYXlvdXRGb3IodGhpcy5jb2x1bW4sIGRpZmYpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzUGVyY2VudGFnZVdpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVQZXJjZW50YWdlUmVzaXplKGRpZmYsIHRoaXMuY29sdW1uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZVBpeGVsUmVzaXplKGRpZmYsIHRoaXMuY29sdW1uKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7IH0pO1xuXG4gICAgICAgIGlmIChjdXJyZW50Q29sV2lkdGggIT09IHBhcnNlRmxvYXQodGhpcy5jb2x1bW4ud2lkdGgpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbi5ncmlkLmNvbHVtblJlc2l6ZWQuZW1pdCh7XG4gICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcbiAgICAgICAgICAgICAgICBwcmV2V2lkdGg6IGlzUGVyY2VudGFnZVdpZHRoID8gY3VycmVudENvbFdpZHRoICsgJyUnIDogY3VycmVudENvbFdpZHRoICsgJ3B4JyxcbiAgICAgICAgICAgICAgICBuZXdXaWR0aDogdGhpcy5jb2x1bW4ud2lkdGhcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0NvbHVtblJlc2l6aW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9oYW5kbGVQaXhlbFJlc2l6ZShkaWZmOiBudW1iZXIsIGNvbHVtbjogQ29sdW1uVHlwZSkge1xuICAgICAgICBjb25zdCBjdXJyZW50Q29sV2lkdGggPSBwYXJzZUZsb2F0KGNvbHVtbi53aWR0aCk7XG4gICAgICAgIGNvbnN0IGNvbE1pbldpZHRoID0gY29sdW1uLm1pbldpZHRoUHg7XG4gICAgICAgIGNvbnN0IGNvbE1heFdpZHRoID0gY29sdW1uLm1heFdpZHRoUHg7XG4gICAgICAgIGlmIChjdXJyZW50Q29sV2lkdGggKyBkaWZmIDwgY29sTWluV2lkdGgpIHtcbiAgICAgICAgICAgIGNvbHVtbi53aWR0aCA9IGNvbE1pbldpZHRoICsgJ3B4JztcbiAgICAgICAgfSBlbHNlIGlmIChjb2xNYXhXaWR0aCAmJiAoY3VycmVudENvbFdpZHRoICsgZGlmZiA+IGNvbE1heFdpZHRoKSkge1xuICAgICAgICAgICAgY29sdW1uLndpZHRoID0gY29sTWF4V2lkdGggKyAncHgnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29sdW1uLndpZHRoID0gKGN1cnJlbnRDb2xXaWR0aCArIGRpZmYpICsgJ3B4JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfaGFuZGxlUGVyY2VudGFnZVJlc2l6ZShkaWZmOiBudW1iZXIsIGNvbHVtbjogQ29sdW1uVHlwZSkge1xuICAgICAgICBjb25zdCBjdXJyZW50UGVyY2VudFdpZHRoID0gcGFyc2VGbG9hdChjb2x1bW4ud2lkdGgpO1xuICAgICAgICBjb25zdCBncmlkQXZhaWxhYmxlU2l6ZSA9IGNvbHVtbi5ncmlkLmNhbGNXaWR0aDtcblxuICAgICAgICBjb25zdCBkaWZmUGVyY2VudGFnZSA9IChkaWZmIC8gZ3JpZEF2YWlsYWJsZVNpemUpICogMTAwO1xuICAgICAgICBjb25zdCBjb2xNaW5XaWR0aCA9IGNvbHVtbi5taW5XaWR0aFBlcmNlbnQ7XG4gICAgICAgIGNvbnN0IGNvbE1heFdpZHRoID0gY29sdW1uLm1heFdpZHRoUGVyY2VudDtcblxuICAgICAgICBpZiAoY3VycmVudFBlcmNlbnRXaWR0aCArIGRpZmZQZXJjZW50YWdlIDwgY29sTWluV2lkdGgpIHtcbiAgICAgICAgICAgIGNvbHVtbi53aWR0aCA9IGNvbE1pbldpZHRoICsgJyUnO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbE1heFdpZHRoICYmIChjdXJyZW50UGVyY2VudFdpZHRoICsgZGlmZlBlcmNlbnRhZ2UgPiBjb2xNYXhXaWR0aCkpIHtcbiAgICAgICAgICAgIGNvbHVtbi53aWR0aCA9IGNvbE1heFdpZHRoICsgJyUnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29sdW1uLndpZHRoID0gKGN1cnJlbnRQZXJjZW50V2lkdGggKyBkaWZmUGVyY2VudGFnZSkgKyAnJSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0Q29sTWluV2lkdGgoY29sdW1uOiBDb2x1bW5UeXBlKSB7XG4gICAgICAgIGxldCBjdXJyZW50Q29sV2lkdGggPSBwYXJzZUZsb2F0KGNvbHVtbi53aWR0aCk7XG4gICAgICAgIGNvbnN0IGFjdHVhbFdpZHRoID0gY29sdW1uLmhlYWRlckNlbGwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgY3VycmVudENvbFdpZHRoID0gTnVtYmVyLmlzTmFOKGN1cnJlbnRDb2xXaWR0aCkgfHwgKGN1cnJlbnRDb2xXaWR0aCA8IGFjdHVhbFdpZHRoKSA/IGFjdHVhbFdpZHRoIDogY3VycmVudENvbFdpZHRoO1xuXG4gICAgICAgIGNvbnN0IGFjdHVhbE1pbldpZHRoID0gcGFyc2VGbG9hdChjb2x1bW4ubWluV2lkdGgpO1xuICAgICAgICByZXR1cm4gYWN0dWFsTWluV2lkdGggPCBjdXJyZW50Q29sV2lkdGggPyBhY3R1YWxNaW5XaWR0aCA6IGN1cnJlbnRDb2xXaWR0aDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzaXplQ29sdW1uTGF5b3V0Rm9yKGNvbHVtbjogQ29sdW1uVHlwZSwgZGlmZjogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHJlbGF0aXZlQ29sdW1ucyA9IGNvbHVtbi5nZXRSZXNpemFibGVDb2xVbmRlckVuZCgpO1xuICAgICAgICBjb25zdCBjb21iaW5lZFNwYW4gPSByZWxhdGl2ZUNvbHVtbnMucmVkdWNlKChhY2MsIGNvbCkgPT4gYWNjICsgY29sLnNwYW5Vc2VkLCAwKTtcblxuICAgICAgICAvLyBSZXNpemUgZmlyc3QgdGhvc2Ugd2hvIG1pZ2h0IHJlYWNoIG1pbi9tYXggd2lkdGhcbiAgICAgICAgbGV0IGNvbHVtbnNUb1Jlc2l6ZSA9IFsuLi5yZWxhdGl2ZUNvbHVtbnNdO1xuICAgICAgICBsZXQgdXBkYXRlZERpZmYgPSBkaWZmO1xuICAgICAgICBsZXQgdXBkYXRlZENvbWJpbmVkU3BhbiA9IGNvbWJpbmVkU3BhbjtcbiAgICAgICAgbGV0IHNldE1pbk1heENvbHMgPSBmYWxzZTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgLy8gQ3ljbGUgdGhlbSB1bnRpbCB0aGVyZSBhcmUgbm90IG9uZXMgdGhhdCByZWFjaCBtaW4vbWF4IHNpemUsIGJlY2F1c2UgdGhlIGRpZmYgYWNjdW11bGF0ZXMgYWZ0ZXIgZWFjaCBjeWNsZS5cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSB3ZSBjYW4gaGF2ZSBhdCBmaXJzdCAyIGNvbHMgcmVhY2hpbmcgbWluIHdpZHRoIGFuZCB0aGVuIGFmdGVyXG4gICAgICAgICAgICAvLyByZWNhbGN1bGF0aW5nIHRoZSBkaWZmIHRoZXJlIG1pZ2h0IGJlIDEgbW9yZSB0aGF0IHJlYWNoZXMgbWluIHdpZHRoLlxuICAgICAgICAgICAgc2V0TWluTWF4Q29scyA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IG5ld0NvbWJpbmVkU3BhbiA9IHVwZGF0ZWRDb21iaW5lZFNwYW47XG4gICAgICAgICAgICBjb25zdCBuZXdDb2xzVG9SZXNpemUgPSBbXTtcbiAgICAgICAgICAgIGNvbHVtbnNUb1Jlc2l6ZS5mb3JFYWNoKChjb2wpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50UmVzaXplV2lkdGggPSBwYXJzZUZsb2F0KGNvbC50YXJnZXQuY2FsY1dpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNpemVTY2FsZWQgPSAoZGlmZiAvIHVwZGF0ZWRDb21iaW5lZFNwYW4pICogY29sLnRhcmdldC5ncmlkQ29sdW1uU3BhbjtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2xXaWR0aCA9IGNvbC50YXJnZXQud2lkdGg7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNQZXJjZW50YWdlV2lkdGggPSBjb2xXaWR0aCAmJiB0eXBlb2YgY29sV2lkdGggPT09ICdzdHJpbmcnICYmIGNvbFdpZHRoLmluZGV4T2YoJyUnKSAhPT0gLTE7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBtaW5XaWR0aCA9IGNvbC50YXJnZXQubWluV2lkdGhQeDtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXhXaWR0aCA9IGNvbC50YXJnZXQubWF4V2lkdGhQeDtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFJlc2l6ZVdpZHRoICsgcmVzaXplU2NhbGVkIDwgbWluV2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29sLnRhcmdldC53aWR0aCA9IGlzUGVyY2VudGFnZVdpZHRoID8gY29sLnRhcmdldC5taW5XaWR0aFBlcmNlbnQgKyAnJScgOiBtaW5XaWR0aCArICdweCc7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWREaWZmICs9IChjdXJyZW50UmVzaXplV2lkdGggLSBtaW5XaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgIG5ld0NvbWJpbmVkU3BhbiAtPSBjb2wuc3BhblVzZWQ7XG4gICAgICAgICAgICAgICAgICAgIHNldE1pbk1heENvbHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWF4V2lkdGggJiYgKGN1cnJlbnRSZXNpemVXaWR0aCArIHJlc2l6ZVNjYWxlZCA+IG1heFdpZHRoKSkge1xuICAgICAgICAgICAgICAgICAgICBjb2wudGFyZ2V0LndpZHRoID0gaXNQZXJjZW50YWdlV2lkdGggPyBjb2wudGFyZ2V0Lm1heFdpZHRoUGVyY2VudCArICclJyA6IGNvbC50YXJnZXQubWF4V2lkdGhQeCArICdweCc7XG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWREaWZmIC09IChtYXhXaWR0aCAtIGN1cnJlbnRSZXNpemVXaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgIG5ld0NvbWJpbmVkU3BhbiAtPSBjb2wuc3BhblVzZWQ7XG4gICAgICAgICAgICAgICAgICAgIHNldE1pbk1heENvbHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNhdmUgbmV3IG9uZXMgdGhhdCBjYW4gYmUgcmVzaXplZFxuICAgICAgICAgICAgICAgICAgICBuZXdDb2xzVG9SZXNpemUucHVzaChjb2wpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB1cGRhdGVkQ29tYmluZWRTcGFuID0gbmV3Q29tYmluZWRTcGFuO1xuICAgICAgICAgICAgY29sdW1uc1RvUmVzaXplID0gbmV3Q29sc1RvUmVzaXplO1xuICAgICAgICB9IHdoaWxlIChzZXRNaW5NYXhDb2xzKTtcblxuICAgICAgICAvLyBUaG9zZSBsZWZ0IHRoYXQgZG9uJ3QgcmVhY2ggbWluL21heCBzaXplIHJlc2l6ZSB0aGVtIG5vcm1hbGx5LlxuICAgICAgICBjb2x1bW5zVG9SZXNpemUuZm9yRWFjaCgoY29sKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNpemVTY2FsZWQgPSAodXBkYXRlZERpZmYgLyB1cGRhdGVkQ29tYmluZWRTcGFuKSAqIGNvbC50YXJnZXQuZ3JpZENvbHVtblNwYW47XG4gICAgICAgICAgICBjb25zdCBjb2xXaWR0aCA9IGNvbC50YXJnZXQud2lkdGg7XG4gICAgICAgICAgICBjb25zdCBpc1BlcmNlbnRhZ2VXaWR0aCA9IGNvbFdpZHRoICYmIHR5cGVvZiBjb2xXaWR0aCA9PT0gJ3N0cmluZycgJiYgY29sV2lkdGguaW5kZXhPZignJScpICE9PSAtMTtcbiAgICAgICAgICAgIGlmIChpc1BlcmNlbnRhZ2VXaWR0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZVBlcmNlbnRhZ2VSZXNpemUocmVzaXplU2NhbGVkLCBjb2wudGFyZ2V0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlUGl4ZWxSZXNpemUocmVzaXplU2NhbGVkLCBjb2wudGFyZ2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19