@netgrif/components-core 6.0.3 → 6.0.4

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 (84) hide show
  1. package/bundles/netgrif-components-core.umd.js +166 -61
  2. package/bundles/netgrif-components-core.umd.js.map +1 -1
  3. package/bundles/netgrif-components-core.umd.min.js +2 -2
  4. package/bundles/netgrif-components-core.umd.min.js.map +1 -1
  5. package/esm2015/lib/data-fields/file-field/abstract-file-field.component.js +2 -2
  6. package/esm2015/lib/groups/services/next-group.service.js +3 -2
  7. package/esm2015/lib/resources/abstract-endpoint/abstract-resource.service.js +3 -2
  8. package/esm2015/lib/resources/engine-endpoint/public/public-task-resource.service.js +1 -1
  9. package/esm2015/lib/search/models/category/case/case-dataset.js +3 -6
  10. package/esm2015/lib/search/models/category/case/case-simple-dataset.js +3 -3
  11. package/esm2015/lib/search/models/category/case/case-title.js +13 -3
  12. package/esm2015/lib/search/models/category/case/case-visual-id.js +13 -3
  13. package/esm2015/lib/search/models/category/category.js +10 -2
  14. package/esm2015/lib/search/models/operator/substring.js +3 -3
  15. package/esm2015/lib/search/search-keyword-resolver-service/search-index-resolver.service.js +18 -3
  16. package/esm2015/lib/search/search-service/search.service.js +3 -2
  17. package/esm2015/lib/side-menu/content-components/new-case/abstract-new-case.component.js +6 -1
  18. package/esm2015/lib/task/services/finish-task.service.js +18 -13
  19. package/esm2015/lib/task/services/task-data.service.js +2 -1
  20. package/esm2015/lib/user/services/user-list.service.js +4 -3
  21. package/esm2015/lib/utility/pagination/load-all-pages.js +4 -3
  22. package/esm2015/lib/utility/pagination/pagination-params.js +19 -0
  23. package/esm2015/lib/utility/pagination/pagination-sort.js +17 -0
  24. package/esm2015/lib/utility/public-api.js +3 -1
  25. package/esm2015/lib/utility/tests/mocks/mock-endpoint.js +4 -3
  26. package/esm2015/lib/view/abstract/sortable-view.js +4 -3
  27. package/esm2015/lib/view/case-view/service/case-view-service.js +6 -4
  28. package/esm2015/lib/view/public-api.js +3 -1
  29. package/esm2015/lib/view/task-view/service/task-view.service.js +6 -4
  30. package/esm2015/lib/view/tree-case-view/tree-component/case-tree.service.js +19 -5
  31. package/esm2015/lib/view/tree-case-view/tree-component/model/tree-case-view-configuration.js +2 -0
  32. package/esm2015/lib/view/tree-case-view/tree-component/model/tree-configuration-injection-token.js +3 -0
  33. package/esm2015/lib/view/workflow-view/workflow-view.service.js +4 -11
  34. package/esm5/lib/data-fields/file-field/abstract-file-field.component.js +2 -2
  35. package/esm5/lib/groups/services/next-group.service.js +3 -2
  36. package/esm5/lib/resources/abstract-endpoint/abstract-resource.service.js +3 -2
  37. package/esm5/lib/resources/engine-endpoint/public/public-task-resource.service.js +1 -1
  38. package/esm5/lib/search/models/category/case/case-dataset.js +3 -6
  39. package/esm5/lib/search/models/category/case/case-simple-dataset.js +3 -3
  40. package/esm5/lib/search/models/category/case/case-title.js +19 -4
  41. package/esm5/lib/search/models/category/case/case-visual-id.js +19 -4
  42. package/esm5/lib/search/models/category/category.js +10 -2
  43. package/esm5/lib/search/models/operator/substring.js +3 -3
  44. package/esm5/lib/search/search-keyword-resolver-service/search-index-resolver.service.js +17 -2
  45. package/esm5/lib/search/search-service/search.service.js +3 -2
  46. package/esm5/lib/side-menu/content-components/new-case/abstract-new-case.component.js +6 -1
  47. package/esm5/lib/task/services/finish-task.service.js +18 -13
  48. package/esm5/lib/task/services/task-data.service.js +2 -1
  49. package/esm5/lib/user/services/user-list.service.js +4 -3
  50. package/esm5/lib/utility/pagination/load-all-pages.js +4 -3
  51. package/esm5/lib/utility/pagination/pagination-params.js +19 -0
  52. package/esm5/lib/utility/pagination/pagination-sort.js +17 -0
  53. package/esm5/lib/utility/public-api.js +3 -1
  54. package/esm5/lib/utility/tests/mocks/mock-endpoint.js +4 -3
  55. package/esm5/lib/view/abstract/sortable-view.js +4 -3
  56. package/esm5/lib/view/case-view/service/case-view-service.js +6 -4
  57. package/esm5/lib/view/public-api.js +3 -1
  58. package/esm5/lib/view/task-view/service/task-view.service.js +6 -4
  59. package/esm5/lib/view/tree-case-view/tree-component/case-tree.service.js +19 -5
  60. package/esm5/lib/view/tree-case-view/tree-component/model/tree-case-view-configuration.js +2 -0
  61. package/esm5/lib/view/tree-case-view/tree-component/model/tree-configuration-injection-token.js +3 -0
  62. package/esm5/lib/view/workflow-view/workflow-view.service.js +4 -11
  63. package/fesm2015/netgrif-components-core.js +154 -61
  64. package/fesm2015/netgrif-components-core.js.map +1 -1
  65. package/fesm5/netgrif-components-core.js +165 -62
  66. package/fesm5/netgrif-components-core.js.map +1 -1
  67. package/lib/search/models/category/case/case-dataset.d.ts +0 -2
  68. package/lib/search/models/category/case/case-title.d.ts +4 -1
  69. package/lib/search/models/category/case/case-visual-id.d.ts +4 -1
  70. package/lib/search/models/category/category.d.ts +7 -0
  71. package/lib/search/search-keyword-resolver-service/search-index-resolver.service.d.ts +12 -0
  72. package/lib/side-menu/content-components/new-case/abstract-new-case.component.d.ts +1 -0
  73. package/lib/task/services/finish-task.service.d.ts +5 -0
  74. package/lib/utility/pagination/pagination-params.d.ts +17 -0
  75. package/lib/utility/pagination/pagination-sort.d.ts +13 -0
  76. package/lib/utility/public-api.d.ts +2 -0
  77. package/lib/view/public-api.d.ts +2 -0
  78. package/lib/view/tree-case-view/tree-component/case-tree.service.d.ts +4 -1
  79. package/lib/view/tree-case-view/tree-component/model/tree-case-view-configuration.d.ts +9 -0
  80. package/lib/view/tree-case-view/tree-component/model/tree-configuration-injection-token.d.ts +3 -0
  81. package/lib/view/workflow-view/workflow-view.service.d.ts +0 -1
  82. package/netgrif-components-core.metadata.json +1 -1
  83. package/package.json +2 -2
  84. package/schematics/collection.json +0 -3
@@ -14,6 +14,7 @@ import { SnackBarService } from '../../snack-bar/services/snack-bar.service';
14
14
  import { TranslateService } from '@ngx-translate/core';
15
15
  import { arrayToObservable } from '../../utility/array-to-observable';
16
16
  import { SearchIndexResolverService } from '../../search/search-keyword-resolver-service/search-index-resolver.service';
17
+ import { PaginationParams } from '../../utility/pagination/pagination-params';
17
18
  export class WorkflowViewService extends SortableView {
18
19
  constructor(_petriNetResource, _log, _dialogService, _snackBarService, _translate, resolver, injectedBaseFilter, confirmDelete) {
19
20
  super(resolver);
@@ -171,17 +172,9 @@ export class WorkflowViewService extends SortableView {
171
172
  // TODO 7.4.2020 - workflow sorting and searching
172
173
  return '';
173
174
  }
174
- addSortParams(params) {
175
- if (this._lastHeaderSearchState.sortDirection !== '') {
176
- return params.set('sort', `${this.getSortId()},${this._lastHeaderSearchState.sortDirection}`);
177
- }
178
- else {
179
- return params.set('sort', this.getDefaultSortParam());
180
- }
181
- }
182
175
  addPageParams(params, pagination) {
183
- params = params.set('size', pagination.size + '');
184
- params = params.set('page', pagination.number + '');
176
+ params = params.set(PaginationParams.PAGE_SIZE, `${pagination.size}`);
177
+ params = params.set(PaginationParams.PAGE_NUMBER, `${pagination.number}`);
185
178
  return params;
186
179
  }
187
180
  }
@@ -208,4 +201,4 @@ WorkflowViewService.ctorParameters = () => [
208
201
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [NAE_WORKFLOW_SERVICE_FILTER,] }] },
209
202
  { type: Boolean, decorators: [{ type: Optional }, { type: Inject, args: [NAE_WORKFLOW_SERVICE_CONFIRM_DELETE,] }] }
210
203
  ];
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctdmlldy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5ldGdyaWYvY29tcG9uZW50cy1jb3JlLyIsInNvdXJjZXMiOlsibGliL3ZpZXcvd29ya2Zsb3ctdmlldy93b3JrZmxvdy12aWV3LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQWEsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUNuRyxPQUFPLEVBQUMsZUFBZSxFQUFjLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDdEMsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRW5FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFHN0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBRXJFLE9BQU8sRUFBQyxtQ0FBbUMsRUFBRSwyQkFBMkIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzNILE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDM0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLGlCQUFpQixFQUFD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QUFFLFVBQVUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDcEQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQzs7O1lBL013Qyx1QkFBdUI7WUFDcEMsYUFBYTtZQUNILGFBQWE7WUFDWCxlQUFlO1lBQ3JCLGdCQUFnQjtZQUM1QiwwQkFBMEI7NENBQ25DLFFBQVEsWUFBSSxNQUFNLFNBQUMsMkJBQTJCOzBDQUM5QyxRQUFRLFlBQUksTUFBTSxTQUFDLG1DQUFtQzs7O1lBcEJ0RSxVQUFVOzs7WUFyQkgsdUJBQXVCO1lBSXZCLGFBQWE7WUFVYixhQUFhO1lBQ2IsZUFBZTtZQUNmLGdCQUFnQjtZQUVoQiwwQkFBMEI7NENBc0JqQixRQUFRLFlBQUksTUFBTSxTQUFDLDJCQUEyQjswQ0FDOUMsUUFBUSxZQUFJLE1BQU0sU0FBQyxtQ0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NvcnRhYmxlVmlld30gZnJvbSAnLi4vYWJzdHJhY3Qvc29ydGFibGUtdmlldyc7XG5pbXBvcnQge1BldHJpTmV0UmVzb3VyY2VTZXJ2aWNlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvZW5naW5lLWVuZHBvaW50L3BldHJpLW5ldC1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge05ldH0gZnJvbSAnLi4vLi4vcHJvY2Vzcy9uZXQnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBjb25jYXRNYXAsIG1hcCwgbWVyZ2VNYXAsIHNjYW4sIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtQZXRyaU5ldFJlZmVyZW5jZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9wZXRyaS1uZXQtcmVmZXJlbmNlJztcbmltcG9ydCB7SHR0cFBhcmFtc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtQYWdpbmF0aW9ufSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3BhZ2luYXRpb24nO1xuaW1wb3J0IHtMb2FkaW5nRW1pdHRlcn0gZnJvbSAnLi4vLi4vdXRpbGl0eS9sb2FkaW5nLWVtaXR0ZXInO1xuaW1wb3J0IHtQYWdlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3BhZ2UnO1xuaW1wb3J0IHtMaXN0UmFuZ2V9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQge2hhc0NvbnRlbnR9IGZyb20gJy4uLy4uL3V0aWxpdHkvcGFnaW5hdGlvbi9wYWdlLWhhcy1jb250ZW50JztcbmltcG9ydCB7UGV0cmlOZXRSZXF1ZXN0Qm9keX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9wZXRyaS1uZXQtcmVxdWVzdC1ib2R5JztcbmltcG9ydCB7TkFFX1dPUktGTE9XX1NFUlZJQ0VfQ09ORklSTV9ERUxFVEUsIE5BRV9XT1JLRkxPV19TRVJWSUNFX0ZJTFRFUn0gZnJvbSAnLi9tb2RlbHMvaW5qZWN0aW9uLXRva2VuLXdvcmtmbG93LXNlcnZpY2UnO1xuaW1wb3J0IHtEaWFsb2dTZXJ2aWNlfSBmcm9tICcuLi8uLi9kaWFsb2cvc2VydmljZXMvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHtTbmFja0JhclNlcnZpY2V9IGZyb20gJy4uLy4uL3NuYWNrLWJhci9zZXJ2aWNlcy9zbmFjay1iYXIuc2VydmljZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHthcnJheVRvT2JzZXJ2YWJsZX0gZnJvbSAnLi4vLi4vdXRpbGl0eS9hcnJheS10by1vYnNlcnZhYmxlJztcbmltcG9ydCB7U2VhcmNoSW5kZXhSZXNvbHZlclNlcnZpY2V9IGZyb20gJy4uLy4uL3NlYXJjaC9zZWFyY2gta2V5d29yZC1yZXNvbHZlci1zZXJ2aWNlL3NlYXJjaC1pbmRleC1yZXNvbHZlci5zZXJ2aWNlJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dWaWV3U2VydmljZSBleHRlbmRzIFNvcnRhYmxlVmlldyBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICAvLyBUT0RPIDE5LjEwLjIwMjAgLSBBZGQgc3VwcG9ydCBmb3IgcmVxdWVzdHMgd2l0aCBjb250ZXh0IChmaWx0ZXIpLCBzYW1lIGFzIENhc2UtIGFuZCBUYXNrVmlld1NlcnZpY2VzXG4gICAgcHJvdGVjdGVkIF9sb2FkaW5nJDogTG9hZGluZ0VtaXR0ZXI7XG4gICAgcHJvdGVjdGVkIF93b3JrZmxvd3MkOiBPYnNlcnZhYmxlPEFycmF5PE5ldD4+O1xuICAgIHByb3RlY3RlZCBfY2xlYXI6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIF9uZXh0UGFnZSQ6IEJlaGF2aW9yU3ViamVjdDxQYWdpbmF0aW9uPjtcbiAgICBwcm90ZWN0ZWQgX2VuZE9mRGF0YTogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX3BhZ2luYXRpb246IFBhZ2luYXRpb247XG4gICAgcHJvdGVjdGVkIF9iYXNlRmlsdGVyOiBQZXRyaU5ldFJlcXVlc3RCb2R5O1xuICAgIHByb3RlY3RlZCBfc2hvd0RlbGV0ZUNvbmZpcm1hdGlvbkRpYWxvZzogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfcGV0cmlOZXRSZXNvdXJjZTogUGV0cmlOZXRSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfc25hY2tCYXJTZXJ2aWNlOiBTbmFja0JhclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcmVzb2x2ZXI6IFNlYXJjaEluZGV4UmVzb2x2ZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX1dPUktGTE9XX1NFUlZJQ0VfRklMVEVSKSBpbmplY3RlZEJhc2VGaWx0ZXI6IFBldHJpTmV0UmVxdWVzdEJvZHksXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChOQUVfV09SS0ZMT1dfU0VSVklDRV9DT05GSVJNX0RFTEVURSkgY29uZmlybURlbGV0ZTogYm9vbGVhbikge1xuICAgICAgICBzdXBlcihyZXNvbHZlcik7XG4gICAgICAgIHRoaXMuX2xvYWRpbmckID0gbmV3IExvYWRpbmdFbWl0dGVyKCk7XG4gICAgICAgIHRoaXMuX2NsZWFyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2VuZE9mRGF0YSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uID0ge1xuICAgICAgICAgICAgc2l6ZTogMjUsXG4gICAgICAgICAgICB0b3RhbEVsZW1lbnRzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0b3RhbFBhZ2VzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBudW1iZXI6IC0xXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX25leHRQYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGFnaW5hdGlvbj4oXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9wYWdpbmF0aW9uLCB7bnVtYmVyOiAwfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9iYXNlRmlsdGVyID0gaW5qZWN0ZWRCYXNlRmlsdGVyICE9PSBudWxsID8gaW5qZWN0ZWRCYXNlRmlsdGVyIDoge307XG4gICAgICAgIHRoaXMuX3Nob3dEZWxldGVDb25maXJtYXRpb25EaWFsb2cgPSBjb25maXJtRGVsZXRlID09PSBudWxsIHx8IGNvbmZpcm1EZWxldGU7XG5cbiAgICAgICAgY29uc3Qgd29ya2Zsb3dzTWFwID0gdGhpcy5fbmV4dFBhZ2UkLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcChwID0+IHRoaXMubG9hZFBhZ2UocCkpLFxuICAgICAgICAgICAgbWFwKHBldHJpTmV0cyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NsZWFyKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIHNldCBhbiBlbXB0eSB2YWx1ZSB0byB0aGUgdmlydHVhbCBzY3JvbGwgYW5kIHRoZW4gcmVwbGFjZSBpdCBieSB0aGUgcmVhbCB2YWx1ZSBmb3JjaW5nIGl0IHRvIHJlZHJhdyBpdHMgY29udGVudFxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHRzID0gW3tjb250ZW50OiBbXSwgc3RvcExvYWRpbmc6IGZhbHNlfSwge2NvbnRlbnQ6IHBldHJpTmV0cywgc3RvcExvYWRpbmc6IHRydWV9XTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5VG9PYnNlcnZhYmxlKHJlc3VsdHMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih7Y29udGVudDogcGV0cmlOZXRzLCBzdG9wTG9hZGluZzogdHJ1ZX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY29uY2F0TWFwKG8gPT4gbyksXG4gICAgICAgICAgICBtYXAobyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG8uc3RvcExvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZyQub2ZmKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBvLmNvbnRlbnQ7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcChwZXRyaU5ldHMgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBwZXRyaU5ldHMucmVkdWNlKChhY2MsIGN1cikgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gey4uLmFjYywgW2N1ci5zdHJpbmdJZF06IGN1cn07XG4gICAgICAgICAgICAgICAgfSwge30pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzY2FuKChhY2MsIHBldHJpTmV0c01hcCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jbGVhcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jbGVhciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gey4uLnBldHJpTmV0c01hcH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB7Li4uYWNjLCAuLi5wZXRyaU5ldHNNYXB9O1xuICAgICAgICAgICAgfSwge30pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fd29ya2Zsb3dzJCA9IHdvcmtmbG93c01hcC5waXBlKFxuICAgICAgICAgICAgbWFwKHYgPT4gT2JqZWN0LnZhbHVlcyh2KSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fbG9hZGluZyQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fbmV4dFBhZ2UkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGluZyQuaXNBY3RpdmU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgd29ya2Zsb3dzJCgpOiBPYnNlcnZhYmxlPEFycmF5PE5ldD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtmbG93cyQ7XG4gICAgfVxuXG4gICAgcHVibGljIGxvYWRQYWdlKHBhZ2VSZXF1ZXN0OiBQYWdpbmF0aW9uKTogT2JzZXJ2YWJsZTxBcnJheTxOZXQ+PiB7XG4gICAgICAgIGlmIChwYWdlUmVxdWVzdC5udW1iZXIgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwYXJhbXM6IEh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgICAgICBwYXJhbXMgPSB0aGlzLmFkZFNvcnRQYXJhbXMocGFyYW1zKTtcbiAgICAgICAgcGFyYW1zID0gdGhpcy5hZGRQYWdlUGFyYW1zKHBhcmFtcywgcGFnZVJlcXVlc3QpO1xuICAgICAgICB0aGlzLl9sb2FkaW5nJC5vbigpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9wZXRyaU5ldFJlc291cmNlLnNlYXJjaFBldHJpTmV0cyh0aGlzLl9iYXNlRmlsdGVyLCBwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdMb2FkaW5nIFBldHJpIG5ldHMgaGFzIGZhaWxlZCEnLCBlcnIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBvZih7Y29udGVudDogW10sIHBhZ2luYXRpb246IHsuLi50aGlzLl9wYWdpbmF0aW9ufX0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuX3BhZ2luYXRpb24sIHJlcy5wYWdpbmF0aW9uKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFwKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW5kT2ZEYXRhID0gIWhhc0NvbnRlbnQocmVzKVxuICAgICAgICAgICAgICAgICAgICB8fCByZXMucGFnaW5hdGlvbi5udW1iZXIgPT09IHJlcy5wYWdpbmF0aW9uLnRvdGFsUGFnZXMgLSAxO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKG5ldHNQYWdlOiBQYWdlPFBldHJpTmV0UmVmZXJlbmNlPikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChoYXNDb250ZW50KG5ldHNQYWdlKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcnJheTogQXJyYXk8TmV0PiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBuZXRzUGFnZS5jb250ZW50LmZvckVhY2gobmV0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LnB1c2gobmV3IE5ldChuZXQpKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcnJheTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV4dFBhZ2UocmVuZGVyZWRSYW5nZTogTGlzdFJhbmdlLCB0b3RhbExvYWRlZDogbnVtYmVyLCBwYWdpbmF0aW9uPzogUGFnaW5hdGlvbikge1xuICAgICAgICBpZiAodGhpcy5fZW5kT2ZEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVuZGVyZWRSYW5nZS5lbmQgPT09IHRvdGFsTG9hZGVkKSB7XG4gICAgICAgICAgICBsZXQgcCA9IHBhZ2luYXRpb247XG4gICAgICAgICAgICBpZiAocCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX3BhZ2luYXRpb24pO1xuICAgICAgICAgICAgICAgIHAubnVtYmVyICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9uZXh0UGFnZSQubmV4dChwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWxvYWQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fd29ya2Zsb3dzJCB8fCAhdGhpcy5fcGFnaW5hdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZW5kT2ZEYXRhID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2NsZWFyID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX3BhZ2luYXRpb24pO1xuICAgICAgICBwLm51bWJlciA9IDA7XG4gICAgICAgIGNvbnN0IHJhbmdlID0ge1xuICAgICAgICAgICAgc3RhcnQ6IC0xLFxuICAgICAgICAgICAgZW5kOiAwXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubmV4dFBhZ2UocmFuZ2UsIDAsIHApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW5zIGEgZGlhbG9nIChpZiBjb25maWd1cmVkKSBhbmQgdGhlbiBhc2tzIHRoZSBzZXJ2aWNlIHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgd29ya2Zsb3cuXG4gICAgICogQHBhcmFtIHdvcmtmbG93IHRoZSB3b3JrZmxvdyB0aGF0IHNob3VsZCBiZSBkZWxldGVkXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZVdvcmtmbG93KHdvcmtmbG93OiBOZXQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3Nob3dEZWxldGVDb25maXJtYXRpb25EaWFsb2cpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpcm1hdGlvblRleHQgPSB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnd29ya2Zsb3cuZGVsZXRlJykudG9VcHBlckNhc2UoKTtcblxuICAgICAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuUHJvbXB0RGlhbG9nKFxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCd3b3JrZmxvdy5kaWFsb2cuaGVhZGVyJywge25hbWU6IHdvcmtmbG93LnRpdGxlLCB2ZXJzaW9uOiB3b3JrZmxvdy52ZXJzaW9ufSksXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ3dvcmtmbG93LmRpYWxvZy5jb250ZW50JyksXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ3dvcmtmbG93LmRpYWxvZy50eXBlVG9Db25maXJtJywge2RlbGV0ZTogY29uZmlybWF0aW9uVGV4dH0pKVxuICAgICAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCAmJiByZXN1bHQucHJvbXB0ID09PSBjb25maXJtYXRpb25UZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RlbGV0ZVdvcmtmbG93KHdvcmtmbG93KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zbmFja0JhclNlcnZpY2Uub3BlbkdlbmVyaWNTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnd29ya2Zsb3cuc25hY2tCYXIuZGVsZXRlQ2FuY2VsZWQnKSwgJ2luZm8nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2RlbGV0ZVdvcmtmbG93KHdvcmtmbG93KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbmRzIHRoZSB3b3JrZmxvdyBkZWxldGUgdG8gYmFja2VuZCBhbmQgcHJvY2Vzc2VzIHRoZSByZXN1bHQuXG4gICAgICogQHBhcmFtIHdvcmtmbG93IHRoZSB3b3JrZmxvdyB0aGF0IHNob3VsZCBiZSBkZWxldGVkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9kZWxldGVXb3JrZmxvdyh3b3JrZmxvdzogTmV0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BldHJpTmV0UmVzb3VyY2UuZGVsZXRlUGV0cmlOZXQod29ya2Zsb3cuc3RyaW5nSWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc25hY2tCYXJTZXJ2aWNlLm9wZW5TdWNjZXNzU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ3dvcmtmbG93LnNuYWNrQmFyLmRlbGV0ZVN1Y2Nlc3MnKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmluZm8oJ1Byb2Nlc3MgZGVsZXRlIHN1Y2Nlc3MuIFNlcnZlciByZXNwb25zZTogJyArIHJlc3BvbnNlLnN1Y2Nlc3MpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrQmFyU2VydmljZS5vcGVuRXJyb3JTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnd29ya2Zsb3cuc25hY2tCYXIuZGVsZXRlRXJyb3InKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdQcm9jZXNzIGRlbGV0ZSBmYWlsZWQuIFNlcnZlciByZXNwb25zZTogJyArIGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0TWV0YUZpZWxkU29ydElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sYXN0SGVhZGVyU2VhcmNoU3RhdGUuZmllbGRJZGVudGlmaWVyO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXREZWZhdWx0U29ydFBhcmFtKCk6IHN0cmluZyB7XG4gICAgICAgIC8vIFRPRE8gNy40LjIwMjAgLSB3b3JrZmxvdyBzb3J0aW5nIGFuZCBzZWFyY2hpbmdcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhZGRTb3J0UGFyYW1zKHBhcmFtczogSHR0cFBhcmFtcyk6IEh0dHBQYXJhbXMge1xuICAgICAgICBpZiAodGhpcy5fbGFzdEhlYWRlclNlYXJjaFN0YXRlLnNvcnREaXJlY3Rpb24gIT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyYW1zLnNldCgnc29ydCcsIGAke3RoaXMuZ2V0U29ydElkKCl9LCR7dGhpcy5fbGFzdEhlYWRlclNlYXJjaFN0YXRlLnNvcnREaXJlY3Rpb259YCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyYW1zLnNldCgnc29ydCcsIHRoaXMuZ2V0RGVmYXVsdFNvcnRQYXJhbSgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhZGRQYWdlUGFyYW1zKHBhcmFtczogSHR0cFBhcmFtcywgcGFnaW5hdGlvbjogUGFnaW5hdGlvbik6IEh0dHBQYXJhbXMge1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzaXplJywgcGFnaW5hdGlvbi5zaXplICsgJycpO1xuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwYWdlJywgcGFnaW5hdGlvbi5udW1iZXIgKyAnJyk7XG4gICAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfVxuXG59XG4iXX0=
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctdmlldy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5ldGdyaWYvY29tcG9uZW50cy1jb3JlLyIsInNvdXJjZXMiOlsibGliL3ZpZXcvd29ya2Zsb3ctdmlldy93b3JrZmxvdy12aWV3LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQWEsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUNuRyxPQUFPLEVBQUMsZUFBZSxFQUFjLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDdEMsT0FBTyxFQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRW5FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFHN0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBRXJFLE9BQU8sRUFBQyxtQ0FBbUMsRUFBRSwyQkFBMkIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQzNILE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDM0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLGlCQUFpQixFQUFD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QnRFLFVBQVU7OztZQXRCSCx1QkFBdUI7WUFJdkIsYUFBYTtZQVViLGFBQWE7WUFDYixlQUFlO1lBQ2YsZ0JBQWdCO1lBRWhCLDBCQUEwQjs0Q0F1QmpCLFFBQVEsWUFBSSxNQUFNLFNBQUMsMkJBQTJCOzBDQUM5QyxRQUFRLFlBQUksTUFBTSxTQUFDLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U29ydGFibGVWaWV3fSBmcm9tICcuLi9hYnN0cmFjdC9zb3J0YWJsZS12aWV3JztcbmltcG9ydCB7UGV0cmlOZXRSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvcGV0cmktbmV0LXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7TmV0fSBmcm9tICcuLi8uLi9wcm9jZXNzL25ldCc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIGNvbmNhdE1hcCwgbWFwLCBtZXJnZU1hcCwgc2NhbiwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge1BldHJpTmV0UmVmZXJlbmNlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3BldHJpLW5ldC1yZWZlcmVuY2UnO1xuaW1wb3J0IHtIdHRwUGFyYW1zfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1BhZ2luYXRpb259IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvcGFnaW5hdGlvbic7XG5pbXBvcnQge0xvYWRpbmdFbWl0dGVyfSBmcm9tICcuLi8uLi91dGlsaXR5L2xvYWRpbmctZW1pdHRlcic7XG5pbXBvcnQge1BhZ2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvcGFnZSc7XG5pbXBvcnQge0xpc3RSYW5nZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7aGFzQ29udGVudH0gZnJvbSAnLi4vLi4vdXRpbGl0eS9wYWdpbmF0aW9uL3BhZ2UtaGFzLWNvbnRlbnQnO1xuaW1wb3J0IHtQZXRyaU5ldFJlcXVlc3RCb2R5fSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL3BldHJpLW5ldC1yZXF1ZXN0LWJvZHknO1xuaW1wb3J0IHtOQUVfV09SS0ZMT1dfU0VSVklDRV9DT05GSVJNX0RFTEVURSwgTkFFX1dPUktGTE9XX1NFUlZJQ0VfRklMVEVSfSBmcm9tICcuL21vZGVscy9pbmplY3Rpb24tdG9rZW4td29ya2Zsb3ctc2VydmljZSc7XG5pbXBvcnQge0RpYWxvZ1NlcnZpY2V9IGZyb20gJy4uLy4uL2RpYWxvZy9zZXJ2aWNlcy9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQge1NuYWNrQmFyU2VydmljZX0gZnJvbSAnLi4vLi4vc25hY2stYmFyL3NlcnZpY2VzL3NuYWNrLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge2FycmF5VG9PYnNlcnZhYmxlfSBmcm9tICcuLi8uLi91dGlsaXR5L2FycmF5LXRvLW9ic2VydmFibGUnO1xuaW1wb3J0IHtTZWFyY2hJbmRleFJlc29sdmVyU2VydmljZX0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC1rZXl3b3JkLXJlc29sdmVyLXNlcnZpY2Uvc2VhcmNoLWluZGV4LXJlc29sdmVyLnNlcnZpY2UnO1xuaW1wb3J0IHtQYWdpbmF0aW9uUGFyYW1zfSBmcm9tICcuLi8uLi91dGlsaXR5L3BhZ2luYXRpb24vcGFnaW5hdGlvbi1wYXJhbXMnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd1ZpZXdTZXJ2aWNlIGV4dGVuZHMgU29ydGFibGVWaWV3IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIC8vIFRPRE8gMTkuMTAuMjAyMCAtIEFkZCBzdXBwb3J0IGZvciByZXF1ZXN0cyB3aXRoIGNvbnRleHQgKGZpbHRlciksIHNhbWUgYXMgQ2FzZS0gYW5kIFRhc2tWaWV3U2VydmljZXNcbiAgICBwcm90ZWN0ZWQgX2xvYWRpbmckOiBMb2FkaW5nRW1pdHRlcjtcbiAgICBwcm90ZWN0ZWQgX3dvcmtmbG93cyQ6IE9ic2VydmFibGU8QXJyYXk8TmV0Pj47XG4gICAgcHJvdGVjdGVkIF9jbGVhcjogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX25leHRQYWdlJDogQmVoYXZpb3JTdWJqZWN0PFBhZ2luYXRpb24+O1xuICAgIHByb3RlY3RlZCBfZW5kT2ZEYXRhOiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBfcGFnaW5hdGlvbjogUGFnaW5hdGlvbjtcbiAgICBwcm90ZWN0ZWQgX2Jhc2VGaWx0ZXI6IFBldHJpTmV0UmVxdWVzdEJvZHk7XG4gICAgcHJvdGVjdGVkIF9zaG93RGVsZXRlQ29uZmlybWF0aW9uRGlhbG9nOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9wZXRyaU5ldFJlc291cmNlOiBQZXRyaU5ldFJlc291cmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zbmFja0JhclNlcnZpY2U6IFNuYWNrQmFyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgICAgICByZXNvbHZlcjogU2VhcmNoSW5kZXhSZXNvbHZlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChOQUVfV09SS0ZMT1dfU0VSVklDRV9GSUxURVIpIGluamVjdGVkQmFzZUZpbHRlcjogUGV0cmlOZXRSZXF1ZXN0Qm9keSxcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BRV9XT1JLRkxPV19TRVJWSUNFX0NPTkZJUk1fREVMRVRFKSBjb25maXJtRGVsZXRlOiBib29sZWFuKSB7XG4gICAgICAgIHN1cGVyKHJlc29sdmVyKTtcbiAgICAgICAgdGhpcy5fbG9hZGluZyQgPSBuZXcgTG9hZGluZ0VtaXR0ZXIoKTtcbiAgICAgICAgdGhpcy5fY2xlYXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fZW5kT2ZEYXRhID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRpb24gPSB7XG4gICAgICAgICAgICBzaXplOiAyNSxcbiAgICAgICAgICAgIHRvdGFsRWxlbWVudHM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRvdGFsUGFnZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG51bWJlcjogLTFcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fbmV4dFBhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYWdpbmF0aW9uPihcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX3BhZ2luYXRpb24sIHtudW1iZXI6IDB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2Jhc2VGaWx0ZXIgPSBpbmplY3RlZEJhc2VGaWx0ZXIgIT09IG51bGwgPyBpbmplY3RlZEJhc2VGaWx0ZXIgOiB7fTtcbiAgICAgICAgdGhpcy5fc2hvd0RlbGV0ZUNvbmZpcm1hdGlvbkRpYWxvZyA9IGNvbmZpcm1EZWxldGUgPT09IG51bGwgfHwgY29uZmlybURlbGV0ZTtcblxuICAgICAgICBjb25zdCB3b3JrZmxvd3NNYXAgPSB0aGlzLl9uZXh0UGFnZSQucGlwZShcbiAgICAgICAgICAgIG1lcmdlTWFwKHAgPT4gdGhpcy5sb2FkUGFnZShwKSksXG4gICAgICAgICAgICBtYXAocGV0cmlOZXRzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2xlYXIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gd2Ugc2V0IGFuIGVtcHR5IHZhbHVlIHRvIHRoZSB2aXJ0dWFsIHNjcm9sbCBhbmQgdGhlbiByZXBsYWNlIGl0IGJ5IHRoZSByZWFsIHZhbHVlIGZvcmNpbmcgaXQgdG8gcmVkcmF3IGl0cyBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSBbe2NvbnRlbnQ6IFtdLCBzdG9wTG9hZGluZzogZmFsc2V9LCB7Y29udGVudDogcGV0cmlOZXRzLCBzdG9wTG9hZGluZzogdHJ1ZX1dO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXlUb09ic2VydmFibGUocmVzdWx0cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHtjb250ZW50OiBwZXRyaU5ldHMsIHN0b3BMb2FkaW5nOiB0cnVlfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjb25jYXRNYXAobyA9PiBvKSxcbiAgICAgICAgICAgIG1hcChvID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoby5zdG9wTG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2FkaW5nJC5vZmYoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG8uY29udGVudDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKHBldHJpTmV0cyA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBldHJpTmV0cy5yZWR1Y2UoKGFjYywgY3VyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7Li4uYWNjLCBbY3VyLnN0cmluZ0lkXTogY3VyfTtcbiAgICAgICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHNjYW4oKGFjYywgcGV0cmlOZXRzTWFwKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NsZWFyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NsZWFyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7Li4ucGV0cmlOZXRzTWFwfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsuLi5hY2MsIC4uLnBldHJpTmV0c01hcH07XG4gICAgICAgICAgICB9LCB7fSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl93b3JrZmxvd3MkID0gd29ya2Zsb3dzTWFwLnBpcGUoXG4gICAgICAgICAgICBtYXAodiA9PiBPYmplY3QudmFsdWVzKHYpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgICB0aGlzLl9sb2FkaW5nJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9uZXh0UGFnZSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC5pc0FjdGl2ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvYWRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB3b3JrZmxvd3MkKCk6IE9ic2VydmFibGU8QXJyYXk8TmV0Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fd29ya2Zsb3dzJDtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZFBhZ2UocGFnZVJlcXVlc3Q6IFBhZ2luYXRpb24pOiBPYnNlcnZhYmxlPEFycmF5PE5ldD4+IHtcbiAgICAgICAgaWYgKHBhZ2VSZXF1ZXN0Lm51bWJlciA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBhcmFtczogSHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgICAgIHBhcmFtcyA9IHRoaXMuYWRkU29ydFBhcmFtcyhwYXJhbXMpO1xuICAgICAgICBwYXJhbXMgPSB0aGlzLmFkZFBhZ2VQYXJhbXMocGFyYW1zLCBwYWdlUmVxdWVzdCk7XG4gICAgICAgIHRoaXMuX2xvYWRpbmckLm9uKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3BldHJpTmV0UmVzb3VyY2Uuc2VhcmNoUGV0cmlOZXRzKHRoaXMuX2Jhc2VGaWx0ZXIsIHBhcmFtcykucGlwZShcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0xvYWRpbmcgUGV0cmkgbmV0cyBoYXMgZmFpbGVkIScsIGVycik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHtjb250ZW50OiBbXSwgcGFnaW5hdGlvbjogey4uLnRoaXMuX3BhZ2luYXRpb259fSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRhcChyZXMgPT4ge1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fcGFnaW5hdGlvbiwgcmVzLnBhZ2luYXRpb24pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YXAocmVzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbmRPZkRhdGEgPSAhaGFzQ29udGVudChyZXMpXG4gICAgICAgICAgICAgICAgICAgIHx8IHJlcy5wYWdpbmF0aW9uLm51bWJlciA9PT0gcmVzLnBhZ2luYXRpb24udG90YWxQYWdlcyAtIDE7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcCgobmV0c1BhZ2U6IFBhZ2U8UGV0cmlOZXRSZWZlcmVuY2U+KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0NvbnRlbnQobmV0c1BhZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5OiBBcnJheTxOZXQ+ID0gW107XG4gICAgICAgICAgICAgICAgICAgIG5ldHNQYWdlLmNvbnRlbnQuZm9yRWFjaChuZXQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkucHVzaChuZXcgTmV0KG5ldCkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZXh0UGFnZShyZW5kZXJlZFJhbmdlOiBMaXN0UmFuZ2UsIHRvdGFsTG9hZGVkOiBudW1iZXIsIHBhZ2luYXRpb24/OiBQYWdpbmF0aW9uKSB7XG4gICAgICAgIGlmICh0aGlzLl9lbmRPZkRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZW5kZXJlZFJhbmdlLmVuZCA9PT0gdG90YWxMb2FkZWQpIHtcbiAgICAgICAgICAgIGxldCBwID0gcGFnaW5hdGlvbjtcbiAgICAgICAgICAgIGlmIChwID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBwID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fcGFnaW5hdGlvbik7XG4gICAgICAgICAgICAgICAgcC5udW1iZXIgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX25leHRQYWdlJC5uZXh0KHApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbG9hZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl93b3JrZmxvd3MkIHx8ICF0aGlzLl9wYWdpbmF0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9lbmRPZkRhdGEgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2xlYXIgPSB0cnVlO1xuICAgICAgICBjb25zdCBwID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fcGFnaW5hdGlvbik7XG4gICAgICAgIHAubnVtYmVyID0gMDtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSB7XG4gICAgICAgICAgICBzdGFydDogLTEsXG4gICAgICAgICAgICBlbmQ6IDBcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5uZXh0UGFnZShyYW5nZSwgMCwgcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgYSBkaWFsb2cgKGlmIGNvbmZpZ3VyZWQpIGFuZCB0aGVuIGFza3MgdGhlIHNlcnZpY2UgdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCB3b3JrZmxvdy5cbiAgICAgKiBAcGFyYW0gd29ya2Zsb3cgdGhlIHdvcmtmbG93IHRoYXQgc2hvdWxkIGJlIGRlbGV0ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlV29ya2Zsb3cod29ya2Zsb3c6IE5ldCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fc2hvd0RlbGV0ZUNvbmZpcm1hdGlvbkRpYWxvZykge1xuICAgICAgICAgICAgY29uc3QgY29uZmlybWF0aW9uVGV4dCA9IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCd3b3JrZmxvdy5kZWxldGUnKS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICAgICAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlLm9wZW5Qcm9tcHREaWFsb2coXG4gICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ3dvcmtmbG93LmRpYWxvZy5oZWFkZXInLCB7bmFtZTogd29ya2Zsb3cudGl0bGUsIHZlcnNpb246IHdvcmtmbG93LnZlcnNpb259KSxcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnd29ya2Zsb3cuZGlhbG9nLmNvbnRlbnQnKSxcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnd29ya2Zsb3cuZGlhbG9nLnR5cGVUb0NvbmZpcm0nLCB7ZGVsZXRlOiBjb25maXJtYXRpb25UZXh0fSkpXG4gICAgICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkICYmIHJlc3VsdC5wcm9tcHQgPT09IGNvbmZpcm1hdGlvblRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGVsZXRlV29ya2Zsb3cod29ya2Zsb3cpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrQmFyU2VydmljZS5vcGVuR2VuZXJpY1NuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCd3b3JrZmxvdy5zbmFja0Jhci5kZWxldGVDYW5jZWxlZCcpLCAnaW5mbycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZGVsZXRlV29ya2Zsb3cod29ya2Zsb3cpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VuZHMgdGhlIHdvcmtmbG93IGRlbGV0ZSB0byBiYWNrZW5kIGFuZCBwcm9jZXNzZXMgdGhlIHJlc3VsdC5cbiAgICAgKiBAcGFyYW0gd29ya2Zsb3cgdGhlIHdvcmtmbG93IHRoYXQgc2hvdWxkIGJlIGRlbGV0ZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2RlbGV0ZVdvcmtmbG93KHdvcmtmbG93OiBOZXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcGV0cmlOZXRSZXNvdXJjZS5kZWxldGVQZXRyaU5ldCh3b3JrZmxvdy5zdHJpbmdJZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zbmFja0JhclNlcnZpY2Uub3BlblN1Y2Nlc3NTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnd29ya2Zsb3cuc25hY2tCYXIuZGVsZXRlU3VjY2VzcycpKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuaW5mbygnUHJvY2VzcyBkZWxldGUgc3VjY2Vzcy4gU2VydmVyIHJlc3BvbnNlOiAnICsgcmVzcG9uc2Uuc3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc25hY2tCYXJTZXJ2aWNlLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCd3b3JrZmxvdy5zbmFja0Jhci5kZWxldGVFcnJvcicpKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ1Byb2Nlc3MgZGVsZXRlIGZhaWxlZC4gU2VydmVyIHJlc3BvbnNlOiAnICsgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRNZXRhRmllbGRTb3J0SWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RIZWFkZXJTZWFyY2hTdGF0ZS5maWVsZElkZW50aWZpZXI7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldERlZmF1bHRTb3J0UGFyYW0oKTogc3RyaW5nIHtcbiAgICAgICAgLy8gVE9ETyA3LjQuMjAyMCAtIHdvcmtmbG93IHNvcnRpbmcgYW5kIHNlYXJjaGluZ1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFkZFBhZ2VQYXJhbXMocGFyYW1zOiBIdHRwUGFyYW1zLCBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uKTogSHR0cFBhcmFtcyB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoUGFnaW5hdGlvblBhcmFtcy5QQUdFX1NJWkUsIGAke3BhZ2luYXRpb24uc2l6ZX1gKTtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldChQYWdpbmF0aW9uUGFyYW1zLlBBR0VfTlVNQkVSLCBgJHtwYWdpbmF0aW9uLm51bWJlcn1gKTtcbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9XG5cbn1cbiJdfQ==
@@ -286,7 +286,7 @@ var AbstractFileFieldComponent = /** @class */ (function (_super) {
286
286
  return;
287
287
  }
288
288
  this.state.downloading = true;
289
- this._taskResourceService.downloadFilePreview(this.taskId, this.dataField.stringId).subscribe(function (response) {
289
+ this._taskResourceService.downloadFilePreview(this.resolveParentTaskId(), this.dataField.stringId).subscribe(function (response) {
290
290
  if (response instanceof Blob) {
291
291
  _this._log.debug("Preview of file [" + _this.dataField.stringId + "] " + _this.dataField.value.name + " was successfully downloaded");
292
292
  _this.fileForPreview = new Blob([response], { type: 'application/octet-stream' });
@@ -412,4 +412,4 @@ var AbstractFileFieldComponent = /** @class */ (function (_super) {
412
412
  return AbstractFileFieldComponent;
413
413
  }(AbstractDataFieldComponent));
414
414
  export { AbstractFileFieldComponent };
415
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmlsZS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmV0Z3JpZi9jb21wb25lbnRzLWNvcmUvIiwic291cmNlcyI6WyJsaWIvZGF0YS1maWVsZHMvZmlsZS1maWVsZC9hYnN0cmFjdC1maWxlLWZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUE0QixNQUFNLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBWSxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUMxRixPQUFPLEVBQUMsWUFBWSxFQUFtQixNQUFNLDJDQUEyQyxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDM0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDbEYsT0FBTyxFQUFDLFlBQVksRUFBVSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFckMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQVloRSxJQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7QUFFMUIsSUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDO0FBRXhCLElBQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUV4Qjs7R0FFRztB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VUFBVSxDQUFDO0lBQ2xJLENBQUM7SUFFUyx3REFBbUIsR0FBN0I7UUFDSSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckYsQ0FBQztJQTViRDs7T0FFRztJQUNvQix1REFBNEIsR0FBRyxDQUFDLENBQUM7SUFDeEQ7O09BRUc7SUFDb0IsdURBQTRCLEdBQUcsTUFBTSxDQUFDO0lBQzdEOztPQUVHO0lBQ29CLHVEQUE0QixHQUFHLE9BQU8sQ0FBQzs7Z0JBN0MxRCxtQkFBbUI7Z0JBRW5CLGFBQWE7Z0JBQ2IsZUFBZTtnQkFDZixnQkFBZ0I7Z0JBT2hCLFlBQVk7OENBd0dPLFFBQVEsWUFBSSxNQUFNLFNBQUMsNkJBQTZCO2dCQTdHbkUsWUFBWTs7O3lCQTZDZixLQUFLOzRCQUlMLEtBQUs7K0JBSUwsU0FBUyxTQUFDLGlCQUFpQjswQkFJM0IsU0FBUyxTQUFDLFNBQVM7NkJBRW5CLFNBQVMsU0FBQyxVQUFVOztJQThaekIsaUNBQUM7Q0FBQSxBQS9iRCxDQUF5RCwwQkFBMEIsR0ErYmxGO1NBL2JxQiwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RmlsZUZpZWxkLCBGaWxlUHJldmlld1R5cGV9IGZyb20gJy4vbW9kZWxzL2ZpbGUtZmllbGQnO1xuaW1wb3J0IHtBYnN0cmFjdERhdGFGaWVsZENvbXBvbmVudH0gZnJvbSAnLi4vbW9kZWxzL2Fic3RyYWN0LWRhdGEtZmllbGQtY29tcG9uZW50JztcbmltcG9ydCB7VGFza1Jlc291cmNlU2VydmljZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2VuZ2luZS1lbmRwb2ludC90YXNrLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtQcm9ncmVzc1R5cGUsIFByb3ZpZGVyUHJvZ3Jlc3N9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9yZXNvdXJjZS1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7U25hY2tCYXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zbmFjay1iYXIvc2VydmljZXMvc25hY2stYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7TkFFX0lORk9STV9BQk9VVF9JTlZBTElEX0RBVEF9IGZyb20gJy4uL21vZGVscy9pbnZhbGlkLWRhdGEtcG9saWN5LXRva2VuJztcbmltcG9ydCB7RG9tU2FuaXRpemVyLCBTYWZlVXJsfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7UmVzaXplZEV2ZW50fSBmcm9tICdhbmd1bGFyLXJlc2l6ZS1ldmVudCc7XG5pbXBvcnQge3Rha2V9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaW50ZXJmYWNlL21lc3NhZ2UtcmVzb3VyY2UnO1xuaW1wb3J0IHtFdmVudFNlcnZpY2V9IGZyb20gJy4uLy4uL2V2ZW50L3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtDaGFuZ2VkRmllbGRzTWFwfSBmcm9tICcuLi8uLi9ldmVudC9zZXJ2aWNlcy9pbnRlcmZhY2VzL2NoYW5nZWQtZmllbGRzLW1hcCc7XG5pbXBvcnQge0ZpbGVGaWVsZElkQm9keX0gZnJvbSAnLi4vbW9kZWxzL2ZpbGUtZmllbGQtaWQtYm9keSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZVN0YXRlIHtcbiAgICBwcm9ncmVzczogbnVtYmVyO1xuICAgIHVwbG9hZGluZzogYm9vbGVhbjtcbiAgICBkb3dubG9hZGluZzogYm9vbGVhbjtcbiAgICBjb21wbGV0ZWQ6IGJvb2xlYW47XG4gICAgZXJyb3I6IGJvb2xlYW47XG59XG5cbmNvbnN0IHByZXZpZXcgPSAncHJldmlldyc7XG5cbmNvbnN0IGZpZWxkSGVpZ2h0ID0gMTA1O1xuXG5jb25zdCBmaWVsZFBhZGRpbmcgPSAxNjtcblxuLyoqXG4gKiBDb21wb25lbnQgdGhhdCBpcyBjcmVhdGVkIGluIHRoZSBib2R5IG9mIHRoZSB0YXNrIHBhbmVsIGFjY29yZCBvbiB0aGUgUGV0cmkgTmV0LCB3aGljaCBtdXN0IGJlIGJpbmQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RmlsZUZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3REYXRhRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgd2lkdGggb2YgdGhlIGRlZmF1bHQgZmlsZSBwcmV2aWV3IGJvcmRlciBpbiBwaXhlbHMuIFRoZSBgcHhgIHN0cmluZyBpcyBhcHBlbmRlZCBpbiB0aGUgY29kZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUFJFVklFV19CT1JERVJfV0lEVEggPSAwO1xuICAgIC8qKlxuICAgICAqIFRoZSBDU1Mgc3R5bGUgYXR0cmlidXRlIG9mIHRoZSBkZWZhdWx0IGZpbGUgcHJldmlldyBib3JkZXIuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1BSRVZJRVdfQk9SREVSX1NUWUxFID0gJ25vbmUnO1xuICAgIC8qKlxuICAgICAqIFRoZSBDU1MgY29sb3Igc3RyaW5nIG9mIHRoZSBkZWZhdWx0IGZpbGUgcHJldmlldyBib3JkZXIuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1BSRVZJRVdfQk9SREVSX0NPTE9SID0gJ2JsYWNrJztcblxuICAgIHB1YmxpYyBzdGF0ZTogRmlsZVN0YXRlO1xuICAgIC8qKlxuICAgICAqIFRhc2sgbW9uZ28gc3RyaW5nIGlkIGlzIGJpbmRpbmcgcHJvcGVydHkgZnJvbSBwYXJlbnQgY29tcG9uZW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyB0YXNrSWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBCaW5kaW5nIHByb3BlcnR5IGFzIGluc3RhbmNlIGZyb20gcGFyZW50IGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgZGF0YUZpZWxkOiBGaWxlRmllbGQ7XG4gICAgLyoqXG4gICAgICogRmlsZSBwaWNrZXIgZWxlbWVudCByZWZlcmVuY2UgZnJvbSBjb21wb25lbnQgdGVtcGxhdGUgdGhhdCBpcyBpbml0aWFsaXplZCBhZnRlciB2aWV3IGluaXQuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnZmlsZVVwbG9hZElucHV0JykgcHVibGljIGZpbGVVcGxvYWRFbDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgICAvKipcbiAgICAgKiBJbWFnZSBmaWVsZCB2aWV3IGVsZW1lbnQgcmVmZXJlbmNlIGZyb20gY29tcG9uZW50IHRlbXBsYXRlIHRoYXQgaXMgaW5pdGlhbGl6ZWQgYWZ0ZXIgdmlldyBpbml0LlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2ltYWdlRWwnKSBwdWJsaWMgaW1hZ2VFbDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoJ2ltYWdlRGl2JykgcHVibGljIGltYWdlRGl2RWw6IEVsZW1lbnRSZWY7XG4gICAgLyoqXG4gICAgICogSWYgZmlsZSBwcmV2aWV3IHNob3VsZCBiZSBkaXNwbGF5ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZmlsZVByZXZpZXcgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBJZiBmaWxlIHR5cGUgY2FuIGJlIGRpc3BsYXllZFxuICAgICAqL1xuICAgIHB1YmxpYyBpc0Rpc3BsYXlhYmxlID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogTWF4IGhlaWdodCBvZiBwcmV2aWV3XG4gICAgICovXG4gICAgcHJpdmF0ZSBtYXhIZWlnaHQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBTdG9yZSBmaWxlIGZvciBwcmV2aWV3XG4gICAgICovXG4gICAgcHJpdmF0ZSBmaWxlRm9yUHJldmlldzogQmxvYjtcbiAgICAvKipcbiAgICAgKiBVcmwgb2YgcHJldmlldyBmaWxlXG4gICAgICovXG4gICAgcHVibGljIHByZXZpZXdTb3VyY2U6IFNhZmVVcmw7XG4gICAgLyoqXG4gICAgICogU3RvcmUgZmlsZSB0byBzaG93L2Rvd25sb2FkXG4gICAgICovXG4gICAgcHJpdmF0ZSBmaWxlRm9yRG93bmxvYWQ6IEJsb2I7XG4gICAgLyoqXG4gICAgICogRnVsbCBzaXplIGZpbGUgdXJsXG4gICAgICovXG4gICAgcHVibGljIGZ1bGxTb3VyY2U6IEJlaGF2aW9yU3ViamVjdDxTYWZlVXJsPjtcbiAgICAvKipcbiAgICAgKiBFeHRlbnNpb24gb2YgZmlsZSB0byBwcmV2aWV3XG4gICAgICovXG4gICAgcHVibGljIHByZXZpZXdFeHRlbnNpb246IEZpbGVQcmV2aWV3VHlwZTtcblxuICAgIC8qKlxuICAgICAqIE9ubHkgaW5qZWN0IHNlcnZpY2VzLlxuICAgICAqIEBwYXJhbSBfdGFza1Jlc291cmNlU2VydmljZSBQcm92aWRlcyB0byBkb3dubG9hZCBhIGZpbGUgZnJvbSB0aGUgYmFja2VuZFxuICAgICAqIEBwYXJhbSBfbG9nIExvZ2dlciBzZXJ2aWNlXG4gICAgICogQHBhcmFtIF9zbmFja2JhciBTbmFja2JhciBzZXJ2aWNlIHRvIG5vdGlmeSB1c2VyXG4gICAgICogQHBhcmFtIF90cmFuc2xhdGUgVHJhbnNsYXRlIHNlcnZpY2UgZm9yIEkxOE5cbiAgICAgKiBAcGFyYW0gX2V2ZW50U2VydmljZSB1c2VkIGZvciBwYXJzaW5nIG9mIGJhY2tlbmQgcmVzcG9uc2VcbiAgICAgKiBAcGFyYW0gaW5mb3JtQWJvdXRJbnZhbGlkRGF0YSB3aGV0aGVyIHRoZSBiYWNrZW5kIHNob3VsZCBiZSBub3RpZmllZCBhYm91dCBpbnZhbGlkIHZhbHVlcy5cbiAgICAgKiBPcHRpb24gaW5qZWN0ZWQgdHJvdWdoIGBOQUVfSU5GT1JNX0FCT1VUX0lOVkFMSURfREFUQWAgSW5qZWN0aW9uVG9rZW5cbiAgICAgKiBAcGFyYW0gX3Nhbml0aXplciBTYW5pdGl6ZSB1cmwgb2YgaW1hZ2UgcHJldmlld1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3Rhc2tSZXNvdXJjZVNlcnZpY2U6IFRhc2tSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3NuYWNrYmFyOiBTbmFja0JhclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2V2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BRV9JTkZPUk1fQUJPVVRfSU5WQUxJRF9EQVRBKSBpbmZvcm1BYm91dEludmFsaWREYXRhOiBib29sZWFuIHwgbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcikge1xuICAgICAgICBzdXBlcihpbmZvcm1BYm91dEludmFsaWREYXRhKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuZGVmYXVsdFN0YXRlO1xuICAgICAgICB0aGlzLmZ1bGxTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNhZmVVcmw+KG51bGwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCA6XG4gICAgICogIC0gRmlsZSBmaWVsZCB0byBbRmlsZUZpZWxkU2VydmljZV17QGxpbmsgRmlsZUZpZWxkU2VydmljZX1cbiAgICAgKiAgLSBEaXNwbGF5IG5hbWVcbiAgICAgKi9cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5maWxlUHJldmlldyA9IHRoaXMuZGF0YUZpZWxkICYmIHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudCAmJiB0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQubmFtZVxuICAgICAgICAgICAgJiYgdGhpcy5kYXRhRmllbGQuY29tcG9uZW50Lm5hbWUgPT09IHByZXZpZXc7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5maWxlVXBsb2FkRWwpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQub25jaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWQoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmlsZVByZXZpZXcpIHtcbiAgICAgICAgICAgIGlmICghIXRoaXMuaW1hZ2VEaXZFbCkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplUHJldmlld0lmRGlzcGxheWFibGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5mdWxsU291cmNlLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNob29zZUZpbGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnVwbG9hZGluZyB8fCB0aGlzLmZvcm1Db250cm9sLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGwgYWZ0ZXIgY2xpY2sgb24gZmlsZSBmaWVsZC5cbiAgICAgKlxuICAgICAqIElmIGZpbGUgZmllbGQgaGFzIG5vIGZpbGUgdXBsb2FkZWRcbiAgICAgKiBbRmlsZXNVcGxvYWRDb21wb25lbnRde0BsaW5rIEFic3RyYWN0RmlsZXNVcGxvYWRDb21wb25lbnR9IHZpYSBbU2lkZU1lbnVde0BsaW5rIFNpZGVNZW51U2VydmljZX0gb3BlbnMuXG4gICAgICpcbiAgICAgKiBPdGhlcndpc2Ugb3BlbnMgYSBmaWxlIHBpY2tlciBmcm9tIHdoaWNoIHRoZSB1c2VyIGNhbiBzZWxlY3QgZmlsZXMuXG4gICAgICovXG4gICAgcHVibGljIHVwbG9hZCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzIHx8IHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWxlIGNhbm5vdCBiZSB1cGxvYWRlZC4gTm8gdGFzayBpcyBzZXQgdG8gdGhlIGZpZWxkLicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRhdGFGaWVsZC52YWx1ZSAmJlxuICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZSAmJlxuICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5maWxlcy5pdGVtKDApLm5hbWUgPT09IHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignVXNlciBjaG9zZSB0aGUgc2FtZSBmaWxlLiBVcGxvYWRpbmcgc2tpcHBlZCcpO1xuICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIodGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci53b250VXBsb2FkU2FtZUZpbGUnKSk7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGF0YUZpZWxkLm1heFVwbG9hZFNpemVJbkJ5dGVzICYmXG4gICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5tYXhVcGxvYWRTaXplSW5CeXRlcyA8IHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMuaXRlbSgwKS5zaXplKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbGUgY2Fubm90IGJlIHVwbG9hZGVkLiBNYXhpbXVtIHNpemUgb2YgZmlsZSBleGNlZWRlZC4nKTtcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKFxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIubWF4RmlsZXNTaXplRXhjZWVkZWQnKSArIHRoaXMuZGF0YUZpZWxkLm1heFVwbG9hZFNpemVJbkJ5dGVzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLmRlZmF1bHRTdGF0ZTtcbiAgICAgICAgdGhpcy5zdGF0ZS51cGxvYWRpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBmaWxlRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgY29uc3QgZmlsZVRvVXBsb2FkID0gdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5maWxlcy5pdGVtKDApIGFzIEZpbGU7XG4gICAgICAgIGNvbnN0IGRhdGE6IEZpbGVGaWVsZElkQm9keSA9IHt9O1xuICAgICAgICBkYXRhW3RoaXMucmVzb2x2ZVBhcmVudFRhc2tJZCgpXSA9IHRoaXMuZGF0YUZpZWxkLnN0cmluZ0lkO1xuICAgICAgICBmaWxlRm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZVRvVXBsb2FkKTtcbiAgICAgICAgZmlsZUZvcm1EYXRhLmFwcGVuZCgnZGF0YScsIG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShkYXRhKV0sIHt0eXBlOiAnYXBwbGljYXRpb24vanNvbid9KSk7XG4gICAgICAgIHRoaXMuX3Rhc2tSZXNvdXJjZVNlcnZpY2UudXBsb2FkRmlsZSh0aGlzLnRhc2tJZCwgdGhpcy5kYXRhRmllbGQuc3RyaW5nSWQsIGZpbGVGb3JtRGF0YSwgZmFsc2UpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogRXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS50eXBlICYmIChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS50eXBlID09PSBQcm9ncmVzc1R5cGUuVVBMT0FEKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykucHJvZ3Jlc3M7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhbmdlZEZpZWxkc01hcDogQ2hhbmdlZEZpZWxkc01hcCA9IHRoaXMuX2V2ZW50U2VydmljZS5wYXJzZUNoYW5nZWRGaWVsZHNGcm9tT3V0Y29tZVRyZWUocmVzcG9uc2Uub3V0Y29tZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLmVtaXRDaGFuZ2VkRmllbGRzKGNoYW5nZWRGaWVsZHNNYXApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoXG4gICAgICAgICAgICAgICAgICAgICAgICBgRmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7dGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5maWxlcy5pdGVtKDApLm5hbWV9IHdhcyBzdWNjZXNzZnVsbHkgdXBsb2FkZWRgXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5lcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuZG93bmxvYWRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lID0gZmlsZVRvVXBsb2FkLm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbGVQcmV2aWV3KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVQcmV2aWV3SWZEaXNwbGF5YWJsZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnVsbFNvdXJjZS5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUZvckRvd25sb2FkID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC50b3VjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYEZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke3RoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMuaXRlbSgwKX0gdXBsb2FkaW5nIGhhcyBmYWlsZWQhYCwgZXJyb3JcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZmlsZVVwbG9hZEZhaWxlZCcpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC50b3VjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGRvd25sb2FkKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2hlY2tGaWxlQmVmb3JlRG93bmxvYWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIXRoaXMuZmlsZUZvckRvd25sb2FkKSB7XG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkVmlhQW5jaG9yKHRoaXMuZmlsZUZvckRvd25sb2FkKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5kZWZhdWx0U3RhdGU7XG4gICAgICAgIHRoaXMuc3RhdGUuZG93bmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLl90YXNrUmVzb3VyY2VTZXJ2aWNlLmRvd25sb2FkRmlsZSh0aGlzLnJlc29sdmVQYXJlbnRUYXNrSWQoKSxcbiAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnN0cmluZ0lkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKCEocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSB8fCAocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSAhPT0gUHJvZ3Jlc3NUeXBlLkRPV05MT0FEKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKGBGaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkVmlhQW5jaG9yKHJlc3BvbnNlIGFzIEJsb2IpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbGVQcmV2aWV3KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdERvd25sb2FkRmlsZShyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZG93bmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5kb3dubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBEb3dubG9hZGluZyBmaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lfSBoYXMgZmFpbGVkIWAsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKFxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWUgKyAnICcgKyB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnZGF0YUZpZWxkLnNuYWNrQmFyLmRvd25sb2FkRmFpbCcpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5kb3dubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdERvd25sb2FkRmlsZShyZXNwb25zZTogQmxvYiB8IFByb3ZpZGVyUHJvZ3Jlc3MpIHtcbiAgICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgQmxvYikge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldmlld0V4dGVuc2lvbiA9PT0gRmlsZVByZXZpZXdUeXBlLnBkZikge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZUZvckRvd25sb2FkID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9wZGYnfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mdWxsU291cmNlLm5leHQodGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChVUkwuY3JlYXRlT2JqZWN0VVJMKHRoaXMuZmlsZUZvckRvd25sb2FkKSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JEb3dubG9hZCA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHt0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ30pO1xuICAgICAgICAgICAgICAgIHRoaXMuZnVsbFNvdXJjZS5uZXh0KHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKFVSTC5jcmVhdGVPYmplY3RVUkwodGhpcy5maWxlRm9yRG93bmxvYWQpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZG93bmxvYWRWaWFBbmNob3IoYmxvYjogQmxvYik6IHZvaWQge1xuICAgICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xuICAgICAgICBhLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTogbm9uZScpO1xuICAgICAgICBpZiAoIXRoaXMuZmlsZUZvckRvd25sb2FkKSB7XG4gICAgICAgICAgICBibG9iID0gbmV3IEJsb2IoW2Jsb2JdLCB7dHlwZTogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSd9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTCghIXRoaXMuZmlsZUZvckRvd25sb2FkID8gdGhpcy5maWxlRm9yRG93bmxvYWQgOiBibG9iKTtcbiAgICAgICAgYS5ocmVmID0gdXJsO1xuICAgICAgICBhLmRvd25sb2FkID0gdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZTtcbiAgICAgICAgYS5jbGljaygpO1xuICAgICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGVGaWxlKCkge1xuICAgICAgICBpZiAoIXRoaXMuZGF0YUZpZWxkLnZhbHVlIHx8ICF0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWxlIGNhbm5vdCBiZSBkZWxldGVkLiBObyB0YXNrIGlzIHNldCB0byB0aGUgZmllbGQuJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl90YXNrUmVzb3VyY2VTZXJ2aWNlLmRlbGV0ZUZpbGUodGhpcy50YXNrSWQsXG4gICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9IHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUgPSB7fTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC51cGRhdGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5kb3dubG9hZGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5mdWxsU291cmNlLm5leHQodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JEb3dubG9hZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdTb3VyY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlRm9yUHJldmlldyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoYEZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke2ZpbGVuYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBEZWxldGluZyBmaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lfSBoYXMgZmFpbGVkIWAsIHJlc3BvbnNlLmVycm9yKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0JhcihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZSArICcgJyArIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZmlsZURlbGV0ZUZhaWxlZCcpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmRhdGFGaWVsZC52YWx1ZSB8fCAhdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGRlZmF1bHRTdGF0ZSgpOiBGaWxlU3RhdGUge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJvZ3Jlc3M6IDAsXG4gICAgICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgZXJyb3I6IGZhbHNlLFxuICAgICAgICAgICAgdXBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGRvd25sb2FkaW5nOiBmYWxzZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdCBkaXNwbGF5IG5hbWUuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdERpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghIXRoaXMuZGF0YUZpZWxkKSB7XG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGFGaWVsZC52YWx1ZSAmJiAhIXRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoISF0aGlzLmRhdGFGaWVsZC5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFGaWVsZC5wbGFjZWhvbGRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5maWxlLm5vRmlsZScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgZmlsZSBmaWVsZCBpbWFnZSBmcm9tIGJhY2tlbmQgaWYgaXQgaXMgaW1hZ2UgdHlwZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaW5pdEZpbGVGaWVsZEltYWdlKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2hlY2tGaWxlQmVmb3JlRG93bmxvYWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGUuZG93bmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLl90YXNrUmVzb3VyY2VTZXJ2aWNlLmRvd25sb2FkRmlsZVByZXZpZXcodGhpcy50YXNrSWQsIHRoaXMuZGF0YUZpZWxkLnN0cmluZ0lkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgQmxvYikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZyhgUHJldmlldyBvZiBmaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JQcmV2aWV3ID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3U291cmNlID0gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoVVJMLmNyZWF0ZU9iamVjdFVSTCh0aGlzLmZpbGVGb3JQcmV2aWV3KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgPT0gbnVsbCB8fCByZXNwb25zZSBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmRvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgRG93bmxvYWRpbmcgZmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7dGhpcy5kYXRhRmllbGQudmFsdWUubmFtZX0gaGFzIGZhaWxlZCFgLCBlcnJvcik7XG4gICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0JhcihcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lICsgJyAnICsgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci5kb3dubG9hZEZhaWwnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuZG93bmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAwO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrRmlsZUJlZm9yZURvd25sb2FkKCkge1xuICAgICAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbGUgY2Fubm90IGJlIGRvd25sb2FkZWQuIE5vIHRhc2sgaXMgc2V0IHRvIHRoZSBmaWVsZC4nKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd1ByZXZpZXdEaWFsb2coKSB7XG4gICAgICAgIGlmICghdGhpcy5jaGVja0ZpbGVCZWZvcmVEb3dubG9hZCgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGFza1Jlc291cmNlU2VydmljZS5kb3dubG9hZEZpbGUodGhpcy50YXNrSWQsIHRoaXMuZGF0YUZpZWxkLnN0cmluZ0lkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgaWYgKCEocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSB8fCAocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSAhPT0gUHJvZ3Jlc3NUeXBlLkRPV05MT0FEKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKGBGaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWRgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXREb3dubG9hZEZpbGUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYERvd25sb2FkaW5nIGZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke3RoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWV9IGhhcyBmYWlsZWQhYCwgZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIoXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZSArICcgJyArIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZG93bmxvYWRGYWlsJylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gMDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZU1heFdpZHRoKGV2ZW50OiBSZXNpemVkRXZlbnQpIHtcbiAgICAgICAgaWYgKCEhdGhpcy5pbWFnZUVsKSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlRWwubmF0aXZlRWxlbWVudC5zdHlsZS5tYXhXaWR0aCA9IGV2ZW50Lm5ld1dpZHRoICsgJ3B4JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVByZXZpZXdJZkRpc3BsYXlhYmxlKCkge1xuICAgICAgICBjb25zdCBleHRlbnNpb24gPSB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lLnNwbGl0KCcuJykucmV2ZXJzZSgpWzBdO1xuICAgICAgICB0aGlzLmlzRGlzcGxheWFibGUgPSBPYmplY3QudmFsdWVzKEZpbGVQcmV2aWV3VHlwZSkuaW5jbHVkZXMoZXh0ZW5zaW9uIGFzIGFueSk7XG4gICAgICAgIGlmICh0aGlzLmlzRGlzcGxheWFibGUpIHtcbiAgICAgICAgICAgIHRoaXMucHJldmlld0V4dGVuc2lvbiA9IEZpbGVQcmV2aWV3VHlwZVtleHRlbnNpb25dO1xuICAgICAgICAgICAgdGhpcy5pbml0RmlsZUZpZWxkSW1hZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIZWlnaHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFGaWVsZC5sYXlvdXQgJiYgdGhpcy5kYXRhRmllbGQubGF5b3V0LnJvd3MgJiYgdGhpcy5kYXRhRmllbGQubGF5b3V0LnJvd3MgIT09IDEgP1xuICAgICAgICAgICAgKHRoaXMuZGF0YUZpZWxkLmxheW91dC5yb3dzKSAqIGZpZWxkSGVpZ2h0IC0gZmllbGRQYWRkaW5nIDogZmllbGRIZWlnaHQgLSBmaWVsZFBhZGRpbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFByZXZpZXdCb3JkZXJXaWR0aCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5ib3JkZXJQcm9wZXJ0eUVuYWJsZWQoJ2JvcmRlcldpZHRoJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQucHJvcGVydGllcy5ib3JkZXJXaWR0aCArICdweCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke0Fic3RyYWN0RmlsZUZpZWxkQ29tcG9uZW50LkRFRkFVTFRfUFJFVklFV19CT1JERVJfV0lEVEh9cHhgO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQcmV2aWV3Qm9yZGVyU3R5bGUoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuYm9yZGVyUHJvcGVydHlFbmFibGVkKCdib3JkZXJTdHlsZScpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhRmllbGQuY29tcG9uZW50LnByb3BlcnRpZXMuYm9yZGVyU3R5bGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEFic3RyYWN0RmlsZUZpZWxkQ29tcG9uZW50LkRFRkFVTFRfUFJFVklFV19CT1JERVJfU1RZTEU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFByZXZpZXdCb3JkZXJDb2xvcigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5ib3JkZXJQcm9wZXJ0eUVuYWJsZWQoJ2JvcmRlckNvbG9yJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQucHJvcGVydGllcy5ib3JkZXJDb2xvcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQWJzdHJhY3RGaWxlRmllbGRDb21wb25lbnQuREVGQVVMVF9QUkVWSUVXX0JPUkRFUl9DT0xPUjtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNCb3JkZXJMR0JUUSgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuYm9yZGVyUHJvcGVydHlFbmFibGVkKCdib3JkZXJMR0JUUScpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhRmllbGQuY29tcG9uZW50LnByb3BlcnRpZXMuYm9yZGVyTEdCVFEgPT09ICd0cnVlJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQm9yZGVyRGVmYXVsdCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuYm9yZGVyUHJvcGVydHlFbmFibGVkKCdib3JkZXJFbmFibGVkJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQucHJvcGVydGllcy5ib3JkZXJFbmFibGVkID09PSAndHJ1ZSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBib3JkZXJQcm9wZXJ0eUVuYWJsZWQocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQgJiYgISF0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQucHJvcGVydGllcyAmJiBwcm9wZXJ0eSBpbiB0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQucHJvcGVydGllcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZVBhcmVudFRhc2tJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gISF0aGlzLmRhdGFGaWVsZC5wYXJlbnRUYXNrSWQgPyB0aGlzLmRhdGFGaWVsZC5wYXJlbnRUYXNrSWQgOiB0aGlzLnRhc2tJZDtcbiAgICB9XG59XG4iXX0=
415
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmlsZS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmV0Z3JpZi9jb21wb25lbnRzLWNvcmUvIiwic291cmNlcyI6WyJsaWIvZGF0YS1maWVsZHMvZmlsZS1maWVsZC9hYnN0cmFjdC1maWxlLWZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUE0QixNQUFNLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBWSxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUMxRixPQUFPLEVBQUMsWUFBWSxFQUFtQixNQUFNLDJDQUEyQyxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDM0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDbEYsT0FBTyxFQUFDLFlBQVksRUFBVSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFckMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQVloRSxJQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7QUFFMUIsSUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDO0FBRXhCLElBQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUV4Qjs7R0FFRztB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UyxDQUFDLFVBQVUsQ0FBQztJQUNsSSxDQUFDO0lBRVMsd0RBQW1CLEdBQTdCO1FBQ0ksT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JGLENBQUM7SUE1YkQ7O09BRUc7SUFDb0IsdURBQTRCLEdBQUcsQ0FBQyxDQUFDO0lBQ3hEOztPQUVHO0lBQ29CLHVEQUE0QixHQUFHLE1BQU0sQ0FBQztJQUM3RDs7T0FFRztJQUNvQix1REFBNEIsR0FBRyxPQUFPLENBQUM7O2dCQTdDMUQsbUJBQW1CO2dCQUVuQixhQUFhO2dCQUNiLGVBQWU7Z0JBQ2YsZ0JBQWdCO2dCQU9oQixZQUFZOzhDQXdHTyxRQUFRLFlBQUksTUFBTSxTQUFDLDZCQUE2QjtnQkE3R25FLFlBQVk7Ozt5QkE2Q2YsS0FBSzs0QkFJTCxLQUFLOytCQUlMLFNBQVMsU0FBQyxpQkFBaUI7MEJBSTNCLFNBQVMsU0FBQyxTQUFTOzZCQUVuQixTQUFTLFNBQUMsVUFBVTs7SUE4WnpCLGlDQUFDO0NBQUEsQUEvYkQsQ0FBeUQsMEJBQTBCLEdBK2JsRjtTQS9icUIsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0ZpbGVGaWVsZCwgRmlsZVByZXZpZXdUeXBlfSBmcm9tICcuL21vZGVscy9maWxlLWZpZWxkJztcbmltcG9ydCB7QWJzdHJhY3REYXRhRmllbGRDb21wb25lbnR9IGZyb20gJy4uL21vZGVscy9hYnN0cmFjdC1kYXRhLWZpZWxkLWNvbXBvbmVudCc7XG5pbXBvcnQge1Rhc2tSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvdGFzay1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7UHJvZ3Jlc3NUeXBlLCBQcm92aWRlclByb2dyZXNzfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvcmVzb3VyY2UtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge1NuYWNrQmFyU2VydmljZX0gZnJvbSAnLi4vLi4vc25hY2stYmFyL3NlcnZpY2VzL3NuYWNrLWJhci5zZXJ2aWNlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge05BRV9JTkZPUk1fQUJPVVRfSU5WQUxJRF9EQVRBfSBmcm9tICcuLi9tb2RlbHMvaW52YWxpZC1kYXRhLXBvbGljeS10b2tlbic7XG5pbXBvcnQge0RvbVNhbml0aXplciwgU2FmZVVybH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1Jlc2l6ZWRFdmVudH0gZnJvbSAnYW5ndWxhci1yZXNpemUtZXZlbnQnO1xuaW1wb3J0IHt0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0V2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9tZXNzYWdlLXJlc291cmNlJztcbmltcG9ydCB7RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9ldmVudC9zZXJ2aWNlcy9ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7Q2hhbmdlZEZpZWxkc01hcH0gZnJvbSAnLi4vLi4vZXZlbnQvc2VydmljZXMvaW50ZXJmYWNlcy9jaGFuZ2VkLWZpZWxkcy1tYXAnO1xuaW1wb3J0IHtGaWxlRmllbGRJZEJvZHl9IGZyb20gJy4uL21vZGVscy9maWxlLWZpZWxkLWlkLWJvZHknO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVTdGF0ZSB7XG4gICAgcHJvZ3Jlc3M6IG51bWJlcjtcbiAgICB1cGxvYWRpbmc6IGJvb2xlYW47XG4gICAgZG93bmxvYWRpbmc6IGJvb2xlYW47XG4gICAgY29tcGxldGVkOiBib29sZWFuO1xuICAgIGVycm9yOiBib29sZWFuO1xufVxuXG5jb25zdCBwcmV2aWV3ID0gJ3ByZXZpZXcnO1xuXG5jb25zdCBmaWVsZEhlaWdodCA9IDEwNTtcblxuY29uc3QgZmllbGRQYWRkaW5nID0gMTY7XG5cbi8qKlxuICogQ29tcG9uZW50IHRoYXQgaXMgY3JlYXRlZCBpbiB0aGUgYm9keSBvZiB0aGUgdGFzayBwYW5lbCBhY2NvcmQgb24gdGhlIFBldHJpIE5ldCwgd2hpY2ggbXVzdCBiZSBiaW5kIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEZpbGVGaWVsZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RGF0YUZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLyoqXG4gICAgICogVGhlIHdpZHRoIG9mIHRoZSBkZWZhdWx0IGZpbGUgcHJldmlldyBib3JkZXIgaW4gcGl4ZWxzLiBUaGUgYHB4YCBzdHJpbmcgaXMgYXBwZW5kZWQgaW4gdGhlIGNvZGUuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1BSRVZJRVdfQk9SREVSX1dJRFRIID0gMDtcbiAgICAvKipcbiAgICAgKiBUaGUgQ1NTIHN0eWxlIGF0dHJpYnV0ZSBvZiB0aGUgZGVmYXVsdCBmaWxlIHByZXZpZXcgYm9yZGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9QUkVWSUVXX0JPUkRFUl9TVFlMRSA9ICdub25lJztcbiAgICAvKipcbiAgICAgKiBUaGUgQ1NTIGNvbG9yIHN0cmluZyBvZiB0aGUgZGVmYXVsdCBmaWxlIHByZXZpZXcgYm9yZGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9QUkVWSUVXX0JPUkRFUl9DT0xPUiA9ICdibGFjayc7XG5cbiAgICBwdWJsaWMgc3RhdGU6IEZpbGVTdGF0ZTtcbiAgICAvKipcbiAgICAgKiBUYXNrIG1vbmdvIHN0cmluZyBpZCBpcyBiaW5kaW5nIHByb3BlcnR5IGZyb20gcGFyZW50IGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdGFza0lkOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQmluZGluZyBwcm9wZXJ0eSBhcyBpbnN0YW5jZSBmcm9tIHBhcmVudCBjb21wb25lbnQuXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGRhdGFGaWVsZDogRmlsZUZpZWxkO1xuICAgIC8qKlxuICAgICAqIEZpbGUgcGlja2VyIGVsZW1lbnQgcmVmZXJlbmNlIGZyb20gY29tcG9uZW50IHRlbXBsYXRlIHRoYXQgaXMgaW5pdGlhbGl6ZWQgYWZ0ZXIgdmlldyBpbml0LlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVVcGxvYWRJbnB1dCcpIHB1YmxpYyBmaWxlVXBsb2FkRWw6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gICAgLyoqXG4gICAgICogSW1hZ2UgZmllbGQgdmlldyBlbGVtZW50IHJlZmVyZW5jZSBmcm9tIGNvbXBvbmVudCB0ZW1wbGF0ZSB0aGF0IGlzIGluaXRpYWxpemVkIGFmdGVyIHZpZXcgaW5pdC5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdpbWFnZUVsJykgcHVibGljIGltYWdlRWw6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdpbWFnZURpdicpIHB1YmxpYyBpbWFnZURpdkVsOiBFbGVtZW50UmVmO1xuICAgIC8qKlxuICAgICAqIElmIGZpbGUgcHJldmlldyBzaG91bGQgYmUgZGlzcGxheWVkXG4gICAgICovXG4gICAgcHVibGljIGZpbGVQcmV2aWV3ID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogSWYgZmlsZSB0eXBlIGNhbiBiZSBkaXNwbGF5ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNEaXNwbGF5YWJsZSA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIE1heCBoZWlnaHQgb2YgcHJldmlld1xuICAgICAqL1xuICAgIHByaXZhdGUgbWF4SGVpZ2h0OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogU3RvcmUgZmlsZSBmb3IgcHJldmlld1xuICAgICAqL1xuICAgIHByaXZhdGUgZmlsZUZvclByZXZpZXc6IEJsb2I7XG4gICAgLyoqXG4gICAgICogVXJsIG9mIHByZXZpZXcgZmlsZVxuICAgICAqL1xuICAgIHB1YmxpYyBwcmV2aWV3U291cmNlOiBTYWZlVXJsO1xuICAgIC8qKlxuICAgICAqIFN0b3JlIGZpbGUgdG8gc2hvdy9kb3dubG9hZFxuICAgICAqL1xuICAgIHByaXZhdGUgZmlsZUZvckRvd25sb2FkOiBCbG9iO1xuICAgIC8qKlxuICAgICAqIEZ1bGwgc2l6ZSBmaWxlIHVybFxuICAgICAqL1xuICAgIHB1YmxpYyBmdWxsU291cmNlOiBCZWhhdmlvclN1YmplY3Q8U2FmZVVybD47XG4gICAgLyoqXG4gICAgICogRXh0ZW5zaW9uIG9mIGZpbGUgdG8gcHJldmlld1xuICAgICAqL1xuICAgIHB1YmxpYyBwcmV2aWV3RXh0ZW5zaW9uOiBGaWxlUHJldmlld1R5cGU7XG5cbiAgICAvKipcbiAgICAgKiBPbmx5IGluamVjdCBzZXJ2aWNlcy5cbiAgICAgKiBAcGFyYW0gX3Rhc2tSZXNvdXJjZVNlcnZpY2UgUHJvdmlkZXMgdG8gZG93bmxvYWQgYSBmaWxlIGZyb20gdGhlIGJhY2tlbmRcbiAgICAgKiBAcGFyYW0gX2xvZyBMb2dnZXIgc2VydmljZVxuICAgICAqIEBwYXJhbSBfc25hY2tiYXIgU25hY2tiYXIgc2VydmljZSB0byBub3RpZnkgdXNlclxuICAgICAqIEBwYXJhbSBfdHJhbnNsYXRlIFRyYW5zbGF0ZSBzZXJ2aWNlIGZvciBJMThOXG4gICAgICogQHBhcmFtIF9ldmVudFNlcnZpY2UgdXNlZCBmb3IgcGFyc2luZyBvZiBiYWNrZW5kIHJlc3BvbnNlXG4gICAgICogQHBhcmFtIGluZm9ybUFib3V0SW52YWxpZERhdGEgd2hldGhlciB0aGUgYmFja2VuZCBzaG91bGQgYmUgbm90aWZpZWQgYWJvdXQgaW52YWxpZCB2YWx1ZXMuXG4gICAgICogT3B0aW9uIGluamVjdGVkIHRyb3VnaCBgTkFFX0lORk9STV9BQk9VVF9JTlZBTElEX0RBVEFgIEluamVjdGlvblRva2VuXG4gICAgICogQHBhcmFtIF9zYW5pdGl6ZXIgU2FuaXRpemUgdXJsIG9mIGltYWdlIHByZXZpZXdcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IocHJvdGVjdGVkIF90YXNrUmVzb3VyY2VTZXJ2aWNlOiBUYXNrUmVzb3VyY2VTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zbmFja2JhcjogU25hY2tCYXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9ldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChOQUVfSU5GT1JNX0FCT1VUX0lOVkFMSURfREFUQSkgaW5mb3JtQWJvdXRJbnZhbGlkRGF0YTogYm9vbGVhbiB8IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcbiAgICAgICAgc3VwZXIoaW5mb3JtQWJvdXRJbnZhbGlkRGF0YSk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLmRlZmF1bHRTdGF0ZTtcbiAgICAgICAgdGhpcy5mdWxsU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTYWZlVXJsPihudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgOlxuICAgICAqICAtIEZpbGUgZmllbGQgdG8gW0ZpbGVGaWVsZFNlcnZpY2Vde0BsaW5rIEZpbGVGaWVsZFNlcnZpY2V9XG4gICAgICogIC0gRGlzcGxheSBuYW1lXG4gICAgICovXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuZmlsZVByZXZpZXcgPSB0aGlzLmRhdGFGaWVsZCAmJiB0aGlzLmRhdGFGaWVsZC5jb21wb25lbnQgJiYgdGhpcy5kYXRhRmllbGQuY29tcG9uZW50Lm5hbWVcbiAgICAgICAgICAgICYmIHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5uYW1lID09PSBwcmV2aWV3O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsZVVwbG9hZEVsKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50Lm9uY2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpbGVQcmV2aWV3KSB7XG4gICAgICAgICAgICBpZiAoISF0aGlzLmltYWdlRGl2RWwpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVByZXZpZXdJZkRpc3BsYXlhYmxlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZnVsbFNvdXJjZS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaG9vc2VGaWxlKCkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS51cGxvYWRpbmcgfHwgdGhpcy5mb3JtQ29udHJvbC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxsIGFmdGVyIGNsaWNrIG9uIGZpbGUgZmllbGQuXG4gICAgICpcbiAgICAgKiBJZiBmaWxlIGZpZWxkIGhhcyBubyBmaWxlIHVwbG9hZGVkXG4gICAgICogW0ZpbGVzVXBsb2FkQ29tcG9uZW50XXtAbGluayBBYnN0cmFjdEZpbGVzVXBsb2FkQ29tcG9uZW50fSB2aWEgW1NpZGVNZW51XXtAbGluayBTaWRlTWVudVNlcnZpY2V9IG9wZW5zLlxuICAgICAqXG4gICAgICogT3RoZXJ3aXNlIG9wZW5zIGEgZmlsZSBwaWNrZXIgZnJvbSB3aGljaCB0aGUgdXNlciBjYW4gc2VsZWN0IGZpbGVzLlxuICAgICAqL1xuICAgIHB1YmxpYyB1cGxvYWQoKSB7XG4gICAgICAgIGlmICghdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC5maWxlcyB8fCB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy50YXNrSWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignRmlsZSBjYW5ub3QgYmUgdXBsb2FkZWQuIE5vIHRhc2sgaXMgc2V0IHRvIHRoZSBmaWVsZC4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kYXRhRmllbGQudmFsdWUgJiZcbiAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWUgJiZcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMuaXRlbSgwKS5uYW1lID09PSB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ1VzZXIgY2hvc2UgdGhlIHNhbWUgZmlsZS4gVXBsb2FkaW5nIHNraXBwZWQnKTtcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIud29udFVwbG9hZFNhbWVGaWxlJykpO1xuICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRhdGFGaWVsZC5tYXhVcGxvYWRTaXplSW5CeXRlcyAmJlxuICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQubWF4VXBsb2FkU2l6ZUluQnl0ZXMgPCB0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzLml0ZW0oMCkuc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWxlIGNhbm5vdCBiZSB1cGxvYWRlZC4gTWF4aW11bSBzaXplIG9mIGZpbGUgZXhjZWVkZWQuJyk7XG4gICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0JhcihcbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnZGF0YUZpZWxkLnNuYWNrQmFyLm1heEZpbGVzU2l6ZUV4Y2VlZGVkJykgKyB0aGlzLmRhdGFGaWVsZC5tYXhVcGxvYWRTaXplSW5CeXRlc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0gdGhpcy5kZWZhdWx0U3RhdGU7XG4gICAgICAgIHRoaXMuc3RhdGUudXBsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZmlsZUZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGNvbnN0IGZpbGVUb1VwbG9hZCA9IHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMuaXRlbSgwKSBhcyBGaWxlO1xuICAgICAgICBjb25zdCBkYXRhOiBGaWxlRmllbGRJZEJvZHkgPSB7fTtcbiAgICAgICAgZGF0YVt0aGlzLnJlc29sdmVQYXJlbnRUYXNrSWQoKV0gPSB0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZDtcbiAgICAgICAgZmlsZUZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGVUb1VwbG9hZCk7XG4gICAgICAgIGZpbGVGb3JtRGF0YS5hcHBlbmQoJ2RhdGEnLCBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkoZGF0YSldLCB7dHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nfSkpO1xuICAgICAgICB0aGlzLl90YXNrUmVzb3VyY2VTZXJ2aWNlLnVwbG9hZEZpbGUodGhpcy50YXNrSWQsIHRoaXMuZGF0YUZpZWxkLnN0cmluZ0lkLCBmaWxlRm9ybURhdGEsIGZhbHNlKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSAmJiAocmVzcG9uc2UgYXMgUHJvdmlkZXJQcm9ncmVzcykudHlwZSA9PT0gUHJvZ3Jlc3NUeXBlLlVQTE9BRCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gKHJlc3BvbnNlIGFzIFByb3ZpZGVyUHJvZ3Jlc3MpLnByb2dyZXNzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYW5nZWRGaWVsZHNNYXA6IENoYW5nZWRGaWVsZHNNYXAgPSB0aGlzLl9ldmVudFNlcnZpY2UucGFyc2VDaGFuZ2VkRmllbGRzRnJvbU91dGNvbWVUcmVlKHJlc3BvbnNlLm91dGNvbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5lbWl0Q2hhbmdlZEZpZWxkcyhjaGFuZ2VkRmllbGRzTWFwKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKFxuICAgICAgICAgICAgICAgICAgICAgICAgYEZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke3RoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQuZmlsZXMuaXRlbSgwKS5uYW1lfSB3YXMgc3VjY2Vzc2Z1bGx5IHVwbG9hZGVkYFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS51cGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLmRvd25sb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZSA9IGZpbGVUb1VwbG9hZC5uYW1lO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5maWxlUHJldmlldykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplUHJldmlld0lmRGlzcGxheWFibGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZ1bGxTb3VyY2UubmV4dCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JEb3dubG9hZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudG91Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC51cGRhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkRWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS51cGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBGaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmZpbGVVcGxvYWRFbC5uYXRpdmVFbGVtZW50LmZpbGVzLml0ZW0oMCl9IHVwbG9hZGluZyBoYXMgZmFpbGVkIWAsIGVycm9yXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0Jhcih0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnZGF0YUZpZWxkLnNuYWNrQmFyLmZpbGVVcGxvYWRGYWlsZWQnKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudG91Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBkb3dubG9hZCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNoZWNrRmlsZUJlZm9yZURvd25sb2FkKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISF0aGlzLmZpbGVGb3JEb3dubG9hZCkge1xuICAgICAgICAgICAgdGhpcy5kb3dubG9hZFZpYUFuY2hvcih0aGlzLmZpbGVGb3JEb3dubG9hZCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuZGVmYXVsdFN0YXRlO1xuICAgICAgICB0aGlzLnN0YXRlLmRvd25sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fdGFza1Jlc291cmNlU2VydmljZS5kb3dubG9hZEZpbGUodGhpcy5yZXNvbHZlUGFyZW50VGFza0lkKCksXG4gICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGlmICghKHJlc3BvbnNlIGFzIFByb3ZpZGVyUHJvZ3Jlc3MpLnR5cGUgfHwgKHJlc3BvbnNlIGFzIFByb3ZpZGVyUHJvZ3Jlc3MpLnR5cGUgIT09IFByb2dyZXNzVHlwZS5ET1dOTE9BRCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZyhgRmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7dGhpcy5kYXRhRmllbGQudmFsdWUubmFtZX0gd2FzIHN1Y2Nlc3NmdWxseSBkb3dubG9hZGVkYCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZFZpYUFuY2hvcihyZXNwb25zZSBhcyBCbG9iKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWxlUHJldmlldykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXREb3dubG9hZEZpbGUocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmRvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuZG93bmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgRG93bmxvYWRpbmcgZmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7dGhpcy5kYXRhRmllbGQudmFsdWUubmFtZX0gaGFzIGZhaWxlZCFgLCBlcnJvcik7XG4gICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuRXJyb3JTbmFja0JhcihcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lICsgJyAnICsgdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ2RhdGFGaWVsZC5zbmFja0Jhci5kb3dubG9hZEZhaWwnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuZG93bmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUucHJvZ3Jlc3MgPSAwO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXREb3dubG9hZEZpbGUocmVzcG9uc2U6IEJsb2IgfCBQcm92aWRlclByb2dyZXNzKSB7XG4gICAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXZpZXdFeHRlbnNpb24gPT09IEZpbGVQcmV2aWV3VHlwZS5wZGYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVGb3JEb3dubG9hZCA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHt0eXBlOiAnYXBwbGljYXRpb24vcGRmJ30pO1xuICAgICAgICAgICAgICAgIHRoaXMuZnVsbFNvdXJjZS5uZXh0KHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoVVJMLmNyZWF0ZU9iamVjdFVSTCh0aGlzLmZpbGVGb3JEb3dubG9hZCkpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlRm9yRG93bmxvYWQgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7dHlwZTogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSd9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZ1bGxTb3VyY2UubmV4dCh0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChVUkwuY3JlYXRlT2JqZWN0VVJMKHRoaXMuZmlsZUZvckRvd25sb2FkKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGRvd25sb2FkVmlhQW5jaG9yKGJsb2I6IEJsb2IpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcbiAgICAgICAgYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6IG5vbmUnKTtcbiAgICAgICAgaWYgKCF0aGlzLmZpbGVGb3JEb3dubG9hZCkge1xuICAgICAgICAgICAgYmxvYiA9IG5ldyBCbG9iKFtibG9iXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoISF0aGlzLmZpbGVGb3JEb3dubG9hZCA/IHRoaXMuZmlsZUZvckRvd25sb2FkIDogYmxvYik7XG4gICAgICAgIGEuaHJlZiA9IHVybDtcbiAgICAgICAgYS5kb3dubG9hZCA9IHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWU7XG4gICAgICAgIGEuY2xpY2soKTtcbiAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlRmlsZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFGaWVsZC52YWx1ZSB8fCAhdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy50YXNrSWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignRmlsZSBjYW5ub3QgYmUgZGVsZXRlZC4gTm8gdGFzayBpcyBzZXQgdG8gdGhlIGZpZWxkLicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdGFza1Jlc291cmNlU2VydmljZS5kZWxldGVGaWxlKHRoaXMudGFza0lkLFxuICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuc3RyaW5nSWQpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSB0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnZhbHVlID0ge307XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQuZG93bmxvYWRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZnVsbFNvdXJjZS5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlRm9yRG93bmxvYWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3U291cmNlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZUZvclByZXZpZXcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKGBGaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHtmaWxlbmFtZX0gd2FzIHN1Y2Nlc3NmdWxseSBkZWxldGVkYCk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgRGVsZXRpbmcgZmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7dGhpcy5kYXRhRmllbGQudmFsdWUubmFtZX0gaGFzIGZhaWxlZCFgLCByZXNwb25zZS5lcnJvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWUgKyAnICcgKyB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnZGF0YUZpZWxkLnNuYWNrQmFyLmZpbGVEZWxldGVGYWlsZWQnKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5kYXRhRmllbGQudmFsdWUgfHwgIXRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBkZWZhdWx0U3RhdGUoKTogRmlsZVN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb2dyZXNzOiAwLFxuICAgICAgICAgICAgY29tcGxldGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yOiBmYWxzZSxcbiAgICAgICAgICAgIHVwbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICBkb3dubG9hZGluZzogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3QgZGlzcGxheSBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3REaXNwbGF5TmFtZSgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoISF0aGlzLmRhdGFGaWVsZCkge1xuICAgICAgICAgICAgaWYgKCEhdGhpcy5kYXRhRmllbGQudmFsdWUgJiYgISF0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCEhdGhpcy5kYXRhRmllbGQucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhRmllbGQucGxhY2Vob2xkZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuZmlsZS5ub0ZpbGUnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplIGZpbGUgZmllbGQgaW1hZ2UgZnJvbSBiYWNrZW5kIGlmIGl0IGlzIGltYWdlIHR5cGUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGluaXRGaWxlRmllbGRJbWFnZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNoZWNrRmlsZUJlZm9yZURvd25sb2FkKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlLmRvd25sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fdGFza1Jlc291cmNlU2VydmljZS5kb3dubG9hZEZpbGVQcmV2aWV3KHRoaXMucmVzb2x2ZVBhcmVudFRhc2tJZCgpLCB0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZGVidWcoYFByZXZpZXcgb2YgZmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7dGhpcy5kYXRhRmllbGQudmFsdWUubmFtZX0gd2FzIHN1Y2Nlc3NmdWxseSBkb3dubG9hZGVkYCk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlRm9yUHJldmlldyA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHt0eXBlOiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ30pO1xuICAgICAgICAgICAgICAgIHRoaXMucHJldmlld1NvdXJjZSA9IHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKFVSTC5jcmVhdGVPYmplY3RVUkwodGhpcy5maWxlRm9yUHJldmlldykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlID09IG51bGwgfHwgcmVzcG9uc2UgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5kb3dubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYERvd25sb2FkaW5nIGZpbGUgWyR7dGhpcy5kYXRhRmllbGQuc3RyaW5nSWR9XSAke3RoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWV9IGhhcyBmYWlsZWQhYCwgZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIoXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZSArICcgJyArIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdkYXRhRmllbGQuc25hY2tCYXIuZG93bmxvYWRGYWlsJylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLmRvd25sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnByb2dyZXNzID0gMDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0ZpbGVCZWZvcmVEb3dubG9hZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdGaWxlIGNhbm5vdCBiZSBkb3dubG9hZGVkLiBObyB0YXNrIGlzIHNldCB0byB0aGUgZmllbGQuJyk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dQcmV2aWV3RGlhbG9nKCkge1xuICAgICAgICBpZiAoIXRoaXMuY2hlY2tGaWxlQmVmb3JlRG93bmxvYWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Rhc2tSZXNvdXJjZVNlcnZpY2UuZG93bmxvYWRGaWxlKHRoaXMudGFza0lkLCB0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGlmICghKHJlc3BvbnNlIGFzIFByb3ZpZGVyUHJvZ3Jlc3MpLnR5cGUgfHwgKHJlc3BvbnNlIGFzIFByb3ZpZGVyUHJvZ3Jlc3MpLnR5cGUgIT09IFByb2dyZXNzVHlwZS5ET1dOTE9BRCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvZy5kZWJ1ZyhgRmlsZSBbJHt0aGlzLmRhdGFGaWVsZC5zdHJpbmdJZH1dICR7dGhpcy5kYXRhRmllbGQudmFsdWUubmFtZX0gd2FzIHN1Y2Nlc3NmdWxseSBkb3dubG9hZGVkYCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RG93bmxvYWRGaWxlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBEb3dubG9hZGluZyBmaWxlIFske3RoaXMuZGF0YUZpZWxkLnN0cmluZ0lkfV0gJHt0aGlzLmRhdGFGaWVsZC52YWx1ZS5uYW1lfSBoYXMgZmFpbGVkIWAsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW5FcnJvclNuYWNrQmFyKFxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkLnZhbHVlLm5hbWUgKyAnICcgKyB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnZGF0YUZpZWxkLnNuYWNrQmFyLmRvd25sb2FkRmFpbCcpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5wcm9ncmVzcyA9IDA7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaGFuZ2VNYXhXaWR0aChldmVudDogUmVzaXplZEV2ZW50KSB7XG4gICAgICAgIGlmICghIXRoaXMuaW1hZ2VFbCkge1xuICAgICAgICAgICAgdGhpcy5pbWFnZUVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWF4V2lkdGggPSBldmVudC5uZXdXaWR0aCArICdweCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVQcmV2aWV3SWZEaXNwbGF5YWJsZSgpIHtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gdGhpcy5kYXRhRmllbGQudmFsdWUubmFtZS5zcGxpdCgnLicpLnJldmVyc2UoKVswXTtcbiAgICAgICAgdGhpcy5pc0Rpc3BsYXlhYmxlID0gT2JqZWN0LnZhbHVlcyhGaWxlUHJldmlld1R5cGUpLmluY2x1ZGVzKGV4dGVuc2lvbiBhcyBhbnkpO1xuICAgICAgICBpZiAodGhpcy5pc0Rpc3BsYXlhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXdFeHRlbnNpb24gPSBGaWxlUHJldmlld1R5cGVbZXh0ZW5zaW9uXTtcbiAgICAgICAgICAgIHRoaXMuaW5pdEZpbGVGaWVsZEltYWdlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SGVpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhRmllbGQubGF5b3V0ICYmIHRoaXMuZGF0YUZpZWxkLmxheW91dC5yb3dzICYmIHRoaXMuZGF0YUZpZWxkLmxheW91dC5yb3dzICE9PSAxID9cbiAgICAgICAgICAgICh0aGlzLmRhdGFGaWVsZC5sYXlvdXQucm93cykgKiBmaWVsZEhlaWdodCAtIGZpZWxkUGFkZGluZyA6IGZpZWxkSGVpZ2h0IC0gZmllbGRQYWRkaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQcmV2aWV3Qm9yZGVyV2lkdGgoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuYm9yZGVyUHJvcGVydHlFbmFibGVkKCdib3JkZXJXaWR0aCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhRmllbGQuY29tcG9uZW50LnByb3BlcnRpZXMuYm9yZGVyV2lkdGggKyAncHgnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtBYnN0cmFjdEZpbGVGaWVsZENvbXBvbmVudC5ERUZBVUxUX1BSRVZJRVdfQk9SREVSX1dJRFRIfXB4YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UHJldmlld0JvcmRlclN0eWxlKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmJvcmRlclByb3BlcnR5RW5hYmxlZCgnYm9yZGVyU3R5bGUnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5wcm9wZXJ0aWVzLmJvcmRlclN0eWxlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBBYnN0cmFjdEZpbGVGaWVsZENvbXBvbmVudC5ERUZBVUxUX1BSRVZJRVdfQk9SREVSX1NUWUxFO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQcmV2aWV3Qm9yZGVyQ29sb3IoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuYm9yZGVyUHJvcGVydHlFbmFibGVkKCdib3JkZXJDb2xvcicpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhRmllbGQuY29tcG9uZW50LnByb3BlcnRpZXMuYm9yZGVyQ29sb3I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEFic3RyYWN0RmlsZUZpZWxkQ29tcG9uZW50LkRFRkFVTFRfUFJFVklFV19CT1JERVJfQ09MT1I7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQm9yZGVyTEdCVFEoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmJvcmRlclByb3BlcnR5RW5hYmxlZCgnYm9yZGVyTEdCVFEnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YUZpZWxkLmNvbXBvbmVudC5wcm9wZXJ0aWVzLmJvcmRlckxHQlRRID09PSAndHJ1ZSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0JvcmRlckRlZmF1bHQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmJvcmRlclByb3BlcnR5RW5hYmxlZCgnYm9yZGVyRW5hYmxlZCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhRmllbGQuY29tcG9uZW50LnByb3BlcnRpZXMuYm9yZGVyRW5hYmxlZCA9PT0gJ3RydWUnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYm9yZGVyUHJvcGVydHlFbmFibGVkKHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5kYXRhRmllbGQuY29tcG9uZW50ICYmICEhdGhpcy5kYXRhRmllbGQuY29tcG9uZW50LnByb3BlcnRpZXMgJiYgcHJvcGVydHkgaW4gdGhpcy5kYXRhRmllbGQuY29tcG9uZW50LnByb3BlcnRpZXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVQYXJlbnRUYXNrSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5kYXRhRmllbGQucGFyZW50VGFza0lkID8gdGhpcy5kYXRhRmllbGQucGFyZW50VGFza0lkIDogdGhpcy50YXNrSWQ7XG4gICAgfVxufVxuIl19
@@ -5,6 +5,7 @@ import { SimpleFilter } from '../../filter/models/simple-filter';
5
5
  import { HttpParams } from '@angular/common/http';
6
6
  import { map, switchMap } from 'rxjs/operators';
7
7
  import { BehaviorSubject, of } from 'rxjs';
8
+ import { PaginationParams } from '../../utility/pagination/pagination-params';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "../../user/services/user.service";
10
11
  import * as i2 from "../../resources/engine-endpoint/case-resource.service";
@@ -29,7 +30,7 @@ var NextGroupService = /** @class */ (function () {
29
30
  return of([]);
30
31
  }
31
32
  var params = new HttpParams();
32
- params.set('size', "" + user.nextGroups.length);
33
+ params.set(PaginationParams.PAGE_SIZE, "" + user.nextGroups.length);
33
34
  return _this._caseResourceService.searchCases(SimpleFilter.fromCaseQuery({ stringId: user.nextGroups }), params)
34
35
  .pipe(map(function (page) { return page.content ? page.content : []; }), map(function (groups) { return groups.filter(function (group) { return group.author.fullName !== 'application engine'; }); }));
35
36
  })).subscribe(function (groups) {
@@ -132,4 +133,4 @@ var NextGroupService = /** @class */ (function () {
132
133
  return NextGroupService;
133
134
  }());
134
135
  export { NextGroupService };
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dC1ncm91cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5ldGdyaWYvY29tcG9uZW50cy1jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyb3Vwcy9zZXJ2aWNlcy9uZXh0LWdyb3VwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDN0QsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sdURBQXVELENBQUM7QUFDMUYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBQyxlQUFlLEVBQWMsRUFBRSxFQUFlLE1BQU0sTUFBTSxDQUFDOzs7O0FBRW5FOzs7Ozs7OztHQVFHO0FBQ0g7SUFVSSwwQkFBc0IsWUFBeUIsRUFBWSxvQkFBeUM7UUFBcEcsaUJBd0JDO1FBeEJxQixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUFZLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFDaEcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBYyxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksZUFBZSxDQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUN4QyxTQUFTLENBQUMsVUFBQSxJQUFJO1lBQ1YsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDekIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFD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RCxDQUFDOzs7T0FBQTtJQUtELHNCQUFJLHlDQUFXO1FBSGY7O1dBRUc7YUFDSDtZQUNJLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM1QixDQUFDOzs7T0FBQTs7Z0JBakZtQyxXQUFXO2dCQUFrQyxtQkFBbUI7Ozs7Z0JBVnZHLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OztnQkFuQk8sV0FBVztnQkFDWCxtQkFBbUI7OzJCQUYzQjtDQThHQyxBQTVGRCxJQTRGQztTQXpGWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1VzZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi91c2VyL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5pbXBvcnQge0Nhc2VSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvY2FzZS1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7U2ltcGxlRmlsdGVyfSBmcm9tICcuLi8uLi9maWx0ZXIvbW9kZWxzL3NpbXBsZS1maWx0ZXInO1xuaW1wb3J0IHtIdHRwUGFyYW1zfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge21hcCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0Nhc2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvY2FzZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogVGhpcyBzZXJ2aWNlIGFsbG93cyBhY2Nlc3MgdG8gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGdyb3VwcyBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCB1c2VyLlxuICpcbiAqIElmIG5vIHVzZXIgaXMgbG9nZ2VkIGFuIGVtcHR5IGFycmF5IGlzIHByb3ZpZGVkLlxuICpcbiAqIElmIGEgdXNlciBjYW4gYmUgb3duZXIgb2YgYXQgbW9zdCBvbmUgZ3JvdXAsIHRoaXMgc2VydmljZSBwcm92aWRlcyB1dGlsaXR5IG1ldGhvZHMgdG8gYWNjZXNzIHRoaXMgZ3JvdXAgZGlyZWN0bHkuXG4gKlxuICogVGhlIGdyb3VwcyBhcmUgYXNzdW1lZCB0byBiZSBpbnN0YW5jZXMgb2YgdGhlIGVuZ2luZSBncm91cCBwcm9jZXNzLCB0aGlzIGlzIG5ldmVyIGNoZWNrZWQgbm9yIGVuZm9yY2VkLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOZXh0R3JvdXBTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIHByb3RlY3RlZCBfbWVtYmVyR3JvdXBzJDogQmVoYXZpb3JTdWJqZWN0PEFycmF5PENhc2U+PjtcbiAgICBwcm90ZWN0ZWQgX293bmVyR3JvdXBzJDogQmVoYXZpb3JTdWJqZWN0PEFycmF5PENhc2U+PjtcblxuICAgIHByaXZhdGUgX3VzZXJTdWI6IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLCBwcm90ZWN0ZWQgX2Nhc2VSZXNvdXJjZVNlcnZpY2U6IENhc2VSZXNvdXJjZVNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5fb3duZXJHcm91cHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDYXNlPj4oW10pO1xuICAgICAgICB0aGlzLl9tZW1iZXJHcm91cHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDYXNlPj4oW10pO1xuXG4gICAgICAgIHRoaXMuX3VzZXJTdWIgPSB0aGlzLl91c2VyU2VydmljZS51c2VyJC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKHVzZXIgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdXNlciB8fCB1c2VyLmlkID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgICAgICAgICAgICAgcGFyYW1zLnNldCgnc2l6ZScsIGAkeyh1c2VyIGFzIGFueSkubmV4dEdyb3Vwcy5sZW5ndGh9YCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY2FzZVJlc291cmNlU2VydmljZS5zZWFyY2hDYXNlcyhTaW1wbGVGaWx0ZXIuZnJvbUNhc2VRdWVyeSh7c3RyaW5nSWQ6ICh1c2VyIGFzIGFueSkubmV4dEdyb3Vwc30pLCBwYXJhbXMpXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKHBhZ2UgPT4gcGFnZS5jb250ZW50ID8gcGFnZS5jb250ZW50IDogW10pLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKGdyb3VwcyA9PiBncm91cHMuZmlsdGVyKGdyb3VwID0+IGdyb3VwLmF1dGhvci5mdWxsTmFtZSAhPT0gJ2FwcGxpY2F0aW9uIGVuZ2luZScpKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKS5zdWJzY3JpYmUoZ3JvdXBzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG93bmVyR3JvdXBzID0gZ3JvdXBzLmZpbHRlcihnID0+IGcuYXV0aG9yLmVtYWlsID09PSB0aGlzLl91c2VyU2VydmljZS51c2VyLmVtYWlsKTtcbiAgICAgICAgICAgIHRoaXMuX293bmVyR3JvdXBzJC5uZXh0KG93bmVyR3JvdXBzKTtcbiAgICAgICAgICAgIHRoaXMuX21lbWJlckdyb3VwcyQubmV4dChncm91cHMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdXNlclN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9tZW1iZXJHcm91cHMkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX293bmVyR3JvdXBzJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIGFuIE9ic2VydmFibGUgb2YgYWxsIHRoZSBncm91cHMgdGhlIGN1cnJlbnRseSBsb2dnZWQgdXNlciBpcyBhIG1lbWJlciBvZlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbWVtYmVyR3JvdXBzJCgpOiBPYnNlcnZhYmxlPEFycmF5PENhc2U+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW1iZXJHcm91cHMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIGFuIE9ic2VydmFibGUgb2YgYWxsIHRoZSBncm91cHMgdGhlIGN1cnJlbnRseSBsb2dnZWQgdXNlciBpcyBhbiBvd25lciBvZlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgb3duZXJHcm91cHMkKCk6IE9ic2VydmFibGU8QXJyYXk8Q2FzZT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX293bmVyR3JvdXBzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBhbiBBcnJheSBvZiBhbGwgdGhlIGdyb3VwcyB0aGUgY3VycmVudGx5IGxvZ2dlZCB1c2VyIGlzIGEgbWVtYmVyIG9mXG4gICAgICovXG4gICAgcHVibGljIGdldCBtZW1iZXJHcm91cHMoKTogQXJyYXk8Q2FzZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWVtYmVyR3JvdXBzJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIGFuIEFycmF5IG9mIGFsbCB0aGUgZ3JvdXBzIHRoZSBjdXJyZW50bHkgbG9nZ2VkIHVzZXIgaXMgYW4gb3duZXIgb2ZcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG93bmVyR3JvdXBzKCk6IEFycmF5PENhc2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX293bmVyR3JvdXBzJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIGFuIE9ic2VydmFibGUgY29udGFpbmluZyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgW293bmVyR3JvdXBzJF17QGxpbmsgTmV4dEdyb3VwU2VydmljZSNvd25lckdyb3VwcyR9IG9ic2VydmFibGUsXG4gICAgICogb3IgYHVuZGVmaW5lZGAgaWYgdGhlIGNvbnRhaW5lZCBhcnJheSBpcyBlbXB0eVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZmlyc3RPd25lckdyb3VwJCgpOiBPYnNlcnZhYmxlPENhc2UgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX293bmVyR3JvdXBzJC5waXBlKG1hcChhcnJheSA9PiBhcnJheS5sZW5ndGggPiAwID8gYXJyYXlbMF0gOiB1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgW293bmVyR3JvdXBzXXtAbGluayBOZXh0R3JvdXBTZXJ2aWNlI293bmVyR3JvdXBzfSBhcnJheSwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIGFycmF5IGlzIGVtcHR5XG4gICAgICovXG4gICAgcHVibGljIGdldCBmaXJzdE93bmVyR3JvdXAoKTogQ2FzZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IG93bmVyR3JvdXBzID0gdGhpcy5vd25lckdyb3VwcztcbiAgICAgICAgcmV0dXJuIG93bmVyR3JvdXBzLmxlbmd0aCA+IDAgPyBvd25lckdyb3Vwc1swXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBpbiBOQUUgNS42LjAgLSB1c2UgW293bmVyR3JvdXBzXXtAbGluayBOZXh0R3JvdXBTZXJ2aWNlI293bmVyR3JvdXBzfSBpbnN0ZWFkXG4gICAgICovXG4gICAgZ2V0IGdyb3VwT2ZVc2VyKCk6IEFycmF5PENhc2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3duZXJHcm91cHM7XG4gICAgfVxufVxuIl19
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dC1ncm91cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5ldGdyaWYvY29tcG9uZW50cy1jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyb3Vwcy9zZXJ2aWNlcy9uZXh0LWdyb3VwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDN0QsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sdURBQXVELENBQUM7QUFDMUYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBQyxlQUFlLEVBQWMsRUFBRSxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDOzs7O0FBRTVFOzs7Ozs7OztHQVFHO0FBQ0g7SUFVSSwwQkFBc0IsWUFBeUIsRUFBWSxvQkFBeUM7UUFBcEcsaUJBd0JDO1FBeEJxQixpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUFZLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFDaEcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBYyxFQUFFLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksZUFBZSxDQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUN4QyxTQUFTLENBQUMsVUFBQSxJQUFJO1lBQ1YsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDekIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDakI7WUFFRCxJQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEtBQUksSUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFRLENBQUMsQ0FBQztZQUU3RSxPQUFPLEtBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxFQUFDLFFBQVEsRUFBRyxJQUFZLENBQUMsVUFBVSxFQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7aUJBQ2pILElBQUksQ0FDRCxHQUFHLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQWhDLENBQWdDLENBQUMsRUFDN0MsR0FBRyxDQUFDLFVBQUEsTUFBTSxJQUFJLE9BQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLG9CQUFvQixFQUE5QyxDQUE4QyxDQUFDLEVBQXRFLENBQXNFLENBQUMsQ0FDeEYsQ0FBQztRQUNWLENBQUMsQ0FBQyxDQUNMLENBQUMsU0FBUyxDQUFDLFVBQUEsTUFBTTtZQUNkLElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxLQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQS9DLENBQStDLENBQUMsQ0FBQztZQUN4RixLQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNyQyxLQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxzQ0FBVyxHQUFYO1FBQ0ksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUtELHNCQUFXLDJDQUFhO1FBSHhCOztXQUVHO2FBQ0g7WUFDSSxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUMsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVywwQ0FBWTtRQUh2Qjs7V0FFRzthQUNIO1lBQ0ksT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdDLENBQUM7OztPQUFBO0lBS0Qsc0JBQVcsMENBQVk7UUFIdkI7O1dBRUc7YUFDSDtZQUNJLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQyxDQUFDOzs7T0FBQTtJQUtELHNCQUFXLHlDQUFXO1FBSHRCOztXQUVHO2FBQ0g7WUFDSSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekMsQ0FBQzs7O09BQUE7SUFNRCxzQkFBVyw4Q0FBZ0I7UUFKM0I7OztXQUdHO2FBQ0g7WUFDSSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBdkMsQ0FBdUMsQ0FBQyxDQUFDLENBQUM7UUFDMUYsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyw2Q0FBZTtRQUgxQjs7V0FFRzthQUNIO1lBQ0ksSUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNyQyxPQUFPLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMvRCxDQUFDOzs7T0FBQTtJQUtELHNCQUFJLHlDQUFXO1FBSGY7O1dBRUc7YUFDSDtZQUNJLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM1QixDQUFDOzs7T0FBQTs7Z0JBakZtQyxXQUFXO2dCQUFrQyxtQkFBbUI7Ozs7Z0JBVnZHLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OztnQkFwQk8sV0FBVztnQkFDWCxtQkFBbUI7OzJCQUYzQjtDQStHQyxBQTVGRCxJQTRGQztTQXpGWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1VzZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi91c2VyL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XG5pbXBvcnQge0Nhc2VSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvY2FzZS1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7U2ltcGxlRmlsdGVyfSBmcm9tICcuLi8uLi9maWx0ZXIvbW9kZWxzL3NpbXBsZS1maWx0ZXInO1xuaW1wb3J0IHtIdHRwUGFyYW1zfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge21hcCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0Nhc2V9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvY2FzZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1BhZ2luYXRpb25QYXJhbXN9IGZyb20gJy4uLy4uL3V0aWxpdHkvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLXBhcmFtcyc7XG5cbi8qKlxuICogVGhpcyBzZXJ2aWNlIGFsbG93cyBhY2Nlc3MgdG8gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGdyb3VwcyBvZiB0aGUgY3VycmVudGx5IGxvZ2dlZCB1c2VyLlxuICpcbiAqIElmIG5vIHVzZXIgaXMgbG9nZ2VkIGFuIGVtcHR5IGFycmF5IGlzIHByb3ZpZGVkLlxuICpcbiAqIElmIGEgdXNlciBjYW4gYmUgb3duZXIgb2YgYXQgbW9zdCBvbmUgZ3JvdXAsIHRoaXMgc2VydmljZSBwcm92aWRlcyB1dGlsaXR5IG1ldGhvZHMgdG8gYWNjZXNzIHRoaXMgZ3JvdXAgZGlyZWN0bHkuXG4gKlxuICogVGhlIGdyb3VwcyBhcmUgYXNzdW1lZCB0byBiZSBpbnN0YW5jZXMgb2YgdGhlIGVuZ2luZSBncm91cCBwcm9jZXNzLCB0aGlzIGlzIG5ldmVyIGNoZWNrZWQgbm9yIGVuZm9yY2VkLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOZXh0R3JvdXBTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIHByb3RlY3RlZCBfbWVtYmVyR3JvdXBzJDogQmVoYXZpb3JTdWJqZWN0PEFycmF5PENhc2U+PjtcbiAgICBwcm90ZWN0ZWQgX293bmVyR3JvdXBzJDogQmVoYXZpb3JTdWJqZWN0PEFycmF5PENhc2U+PjtcblxuICAgIHByaXZhdGUgX3VzZXJTdWI6IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLCBwcm90ZWN0ZWQgX2Nhc2VSZXNvdXJjZVNlcnZpY2U6IENhc2VSZXNvdXJjZVNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5fb3duZXJHcm91cHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDYXNlPj4oW10pO1xuICAgICAgICB0aGlzLl9tZW1iZXJHcm91cHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDYXNlPj4oW10pO1xuXG4gICAgICAgIHRoaXMuX3VzZXJTdWIgPSB0aGlzLl91c2VyU2VydmljZS51c2VyJC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKHVzZXIgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdXNlciB8fCB1c2VyLmlkID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgICAgICAgICAgICAgcGFyYW1zLnNldChQYWdpbmF0aW9uUGFyYW1zLlBBR0VfU0laRSwgYCR7KHVzZXIgYXMgYW55KS5uZXh0R3JvdXBzLmxlbmd0aH1gKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jYXNlUmVzb3VyY2VTZXJ2aWNlLnNlYXJjaENhc2VzKFNpbXBsZUZpbHRlci5mcm9tQ2FzZVF1ZXJ5KHtzdHJpbmdJZDogKHVzZXIgYXMgYW55KS5uZXh0R3JvdXBzfSksIHBhcmFtcylcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAocGFnZSA9PiBwYWdlLmNvbnRlbnQgPyBwYWdlLmNvbnRlbnQgOiBbXSksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoZ3JvdXBzID0+IGdyb3Vwcy5maWx0ZXIoZ3JvdXAgPT4gZ3JvdXAuYXV0aG9yLmZ1bGxOYW1lICE9PSAnYXBwbGljYXRpb24gZW5naW5lJykpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApLnN1YnNjcmliZShncm91cHMgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3duZXJHcm91cHMgPSBncm91cHMuZmlsdGVyKGcgPT4gZy5hdXRob3IuZW1haWwgPT09IHRoaXMuX3VzZXJTZXJ2aWNlLnVzZXIuZW1haWwpO1xuICAgICAgICAgICAgdGhpcy5fb3duZXJHcm91cHMkLm5leHQob3duZXJHcm91cHMpO1xuICAgICAgICAgICAgdGhpcy5fbWVtYmVyR3JvdXBzJC5uZXh0KGdyb3Vwcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91c2VyU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX21lbWJlckdyb3VwcyQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fb3duZXJHcm91cHMkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYW4gT2JzZXJ2YWJsZSBvZiBhbGwgdGhlIGdyb3VwcyB0aGUgY3VycmVudGx5IGxvZ2dlZCB1c2VyIGlzIGEgbWVtYmVyIG9mXG4gICAgICovXG4gICAgcHVibGljIGdldCBtZW1iZXJHcm91cHMkKCk6IE9ic2VydmFibGU8QXJyYXk8Q2FzZT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21lbWJlckdyb3VwcyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYW4gT2JzZXJ2YWJsZSBvZiBhbGwgdGhlIGdyb3VwcyB0aGUgY3VycmVudGx5IGxvZ2dlZCB1c2VyIGlzIGFuIG93bmVyIG9mXG4gICAgICovXG4gICAgcHVibGljIGdldCBvd25lckdyb3VwcyQoKTogT2JzZXJ2YWJsZTxBcnJheTxDYXNlPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3duZXJHcm91cHMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIGFuIEFycmF5IG9mIGFsbCB0aGUgZ3JvdXBzIHRoZSBjdXJyZW50bHkgbG9nZ2VkIHVzZXIgaXMgYSBtZW1iZXIgb2ZcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG1lbWJlckdyb3VwcygpOiBBcnJheTxDYXNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW1iZXJHcm91cHMkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYW4gQXJyYXkgb2YgYWxsIHRoZSBncm91cHMgdGhlIGN1cnJlbnRseSBsb2dnZWQgdXNlciBpcyBhbiBvd25lciBvZlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgb3duZXJHcm91cHMoKTogQXJyYXk8Q2FzZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3duZXJHcm91cHMkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgYW4gT2JzZXJ2YWJsZSBjb250YWluaW5nIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBbb3duZXJHcm91cHMkXXtAbGluayBOZXh0R3JvdXBTZXJ2aWNlI293bmVyR3JvdXBzJH0gb2JzZXJ2YWJsZSxcbiAgICAgKiBvciBgdW5kZWZpbmVkYCBpZiB0aGUgY29udGFpbmVkIGFycmF5IGlzIGVtcHR5XG4gICAgICovXG4gICAgcHVibGljIGdldCBmaXJzdE93bmVyR3JvdXAkKCk6IE9ic2VydmFibGU8Q2FzZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3duZXJHcm91cHMkLnBpcGUobWFwKGFycmF5ID0+IGFycmF5Lmxlbmd0aCA+IDAgPyBhcnJheVswXSA6IHVuZGVmaW5lZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBbb3duZXJHcm91cHNde0BsaW5rIE5leHRHcm91cFNlcnZpY2Ujb3duZXJHcm91cHN9IGFycmF5LCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgYXJyYXkgaXMgZW1wdHlcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGZpcnN0T3duZXJHcm91cCgpOiBDYXNlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3Qgb3duZXJHcm91cHMgPSB0aGlzLm93bmVyR3JvdXBzO1xuICAgICAgICByZXR1cm4gb3duZXJHcm91cHMubGVuZ3RoID4gMCA/IG93bmVyR3JvdXBzWzBdIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIGluIE5BRSA1LjYuMCAtIHVzZSBbb3duZXJHcm91cHNde0BsaW5rIE5leHRHcm91cFNlcnZpY2Ujb3duZXJHcm91cHN9IGluc3RlYWRcbiAgICAgKi9cbiAgICBnZXQgZ3JvdXBPZlVzZXIoKTogQXJyYXk8Q2FzZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vd25lckdyb3VwcztcbiAgICB9XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
+ import { PaginationParams } from '../../utility/pagination/pagination-params';
1
2
  /**
2
3
  * The class that contains behavior common to all resource services.
3
4
  *
@@ -60,7 +61,7 @@ var AbstractResourceService = /** @class */ (function () {
60
61
  };
61
62
  return {
62
63
  content: this.changeType(r, propertiesParams),
63
- pagination: r.hasOwnProperty('page') ? r.page : defaultPage
64
+ pagination: r.hasOwnProperty(PaginationParams.PAGE_NUMBER) ? r.page : defaultPage
64
65
  };
65
66
  };
66
67
  /**
@@ -82,4 +83,4 @@ var AbstractResourceService = /** @class */ (function () {
82
83
  return AbstractResourceService;
83
84
  }());
84
85
  export { AbstractResourceService };
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtcmVzb3VyY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZXRncmlmL2NvbXBvbmVudHMtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9yZXNvdXJjZXMvYWJzdHJhY3QtZW5kcG9pbnQvYWJzdHJhY3QtcmVzb3VyY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQTs7OztHQUlHO0FBQ0g7SUFJSTs7Ozs7T0FLRztJQUNILGlDQUFzQixZQUFvQixFQUNWLGlCQUFtQyxFQUNuQyxjQUFvQztRQURwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLG1CQUFjLEdBQWQsY0FBYyxDQUFzQjtRQUNoRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsc0JBQWMsK0NBQVU7YUFBeEI7WUFDSSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDNUIsQ0FBQzs7O09BQUE7SUFFRDs7O09BR0c7SUFDTyxvREFBa0IsR0FBNUIsVUFBNkIsSUFBWTtRQUNyQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFFYixJQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLHVCQUF1QixDQUFDLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFFL0YsSUFBSSxjQUFjLFlBQVksS0FBSyxFQUFFO1lBQ2pDLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBQSxRQUFRO2dCQUMzQixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO29CQUN4QixHQUFHLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztpQkFDMUI7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxJQUFJLGNBQWMsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUM5QixHQUFHLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQzthQUNoQztTQUNKO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGlEQUFlLEdBQXpCLFVBQTZCLENBQU0sRUFBRSxnQkFBd0I7UUFDekQsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNKLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFDRCxJQUFNLFdBQVcsR0FBZTtZQUM1QixNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ1YsSUFBSSxFQUFFLENBQUM7WUFDUCxVQUFVLEVBQUUsQ0FBQztZQUNiLGFBQWEsRUFBRSxDQUFDO1NBQ25CLENBQUM7UUFFRixPQUFPO1lBQ0gsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQVcsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO1lBQ3ZELFVBQVUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXO1NBQzlELENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLDRDQUFVLEdBQXBCLFVBQXdCLENBQU0sRUFBRSxnQkFBd0I7UUFDcEQsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNKLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFDRCxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDL0IsT0FBTyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDekg7YUFBTTtZQUNILE9BQU8sQ0FBQyxDQUFDO1NBQ1o7SUFDTCxDQUFDO0lBQ0wsOEJBQUM7QUFBRCxDQUFDLEFBaEZELElBZ0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZXNvdXJjZVByb3ZpZGVyfSBmcm9tICcuLi9yZXNvdXJjZS1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7Q29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7UGFnZX0gZnJvbSAnLi4vaW50ZXJmYWNlL3BhZ2UnO1xuaW1wb3J0IHtQYWdpbmF0aW9ufSBmcm9tICcuLi9pbnRlcmZhY2UvcGFnaW5hdGlvbic7XG5cbi8qKlxuICogVGhlIGNsYXNzIHRoYXQgY29udGFpbnMgYmVoYXZpb3IgY29tbW9uIHRvIGFsbCByZXNvdXJjZSBzZXJ2aWNlcy5cbiAqXG4gKiBNb3N0bHkgZW5kcG9pbnQgVVJMIHJlc29sdXRpb24gYW5kIHV0aWxpdHkgZnVuY3Rpb25zIGZvciByZXNwb25zZSBwYXJzaW5nLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RSZXNvdXJjZVNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfU0VSVkVSX1VSTDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHJlc291cmNlTmFtZSB0aGUgaWRlbnRpZmllciBvZiB0aGUgZGVzaXJlZCBlbmRwb2ludCBmcm9tIGNvbmZpZ3VyYXRpb24sIGZvdW5kIGluXG4gICAgICoge0BsaW5rIFNldEF1dGhBbmRSZXNvdXJjZXNBZGRyZXNzfS5bcmVzb3VyY2VzXXtAbGluayBSZXNvdXJjZXN9LlxuICAgICAqIEBwYXJhbSBfcmVzb3VyY2VQcm92aWRlciBgUmVzb3VyY2VQcm92aWRlcmAgaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0gX2NvbmZpZ1NlcnZpY2UgYENvbmZpZ3VyYXRpb25TZXJ2aWNlYCBpbnN0YW5jZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihyZXNvdXJjZU5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9yZXNvdXJjZVByb3ZpZGVyOiBSZXNvdXJjZVByb3ZpZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NvbmZpZ1NlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuX1NFUlZFUl9VUkwgPSB0aGlzLmdldFJlc291cmNlQWRkcmVzcyhyZXNvdXJjZU5hbWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgU0VSVkVSX1VSTCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fU0VSVkVSX1VSTDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgVVJMIGZvcm0gbmFlLmpzb24gLSByZXNvdXJjZXNcbiAgICAgKiBAcGFyYW0gbmFtZSAtIElEIHByb3BlcnR5XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFJlc291cmNlQWRkcmVzcyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgVVJMID0gJyc7XG5cbiAgICAgICAgY29uc3QgcmVzb3VyY2VzQXJyYXkgPSB0aGlzLl9jb25maWdTZXJ2aWNlLmdldENvbmZpZ3VyYXRpb25TdWJ0cmVlKFsncHJvdmlkZXJzJywgJ3Jlc291cmNlcyddKTtcblxuICAgICAgICBpZiAocmVzb3VyY2VzQXJyYXkgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgcmVzb3VyY2VzQXJyYXkuZm9yRWFjaChyZXNvdXJjZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc291cmNlLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgVVJMID0gcmVzb3VyY2UuYWRkcmVzcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZXNBcnJheS5uYW1lID09PSBuYW1lKSB7XG4gICAgICAgICAgICAgICAgVVJMID0gcmVzb3VyY2VzQXJyYXkuYWRkcmVzcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gVVJMO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyBhIHJlc3BvbnNlIGByYCBpbnRvIGEge0BsaW5rIFBhZ2V9IGluc3RhbmNlXG4gICAgICogQHBhcmFtIHIgLSByZXNwb25zZSBvYmplY3RcbiAgICAgKiBAcGFyYW0gcHJvcGVydGllc1BhcmFtcyAtIHBsdXJhbCBmb3JtIG9mIHRoZSByZXNvdXJjZSBuYW1lLCB0aGF0IGlzIHVzZWQgdG8gZXh0cmFjdCB0aGUgZGF0YS4gRWcuIFwiY2FzZXNcIi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0UmVzb3VyY2VQYWdlPFQ+KHI6IGFueSwgcHJvcGVydGllc1BhcmFtczogc3RyaW5nKTogUGFnZTxUPiB7XG4gICAgICAgIGlmICghcikge1xuICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVmYXVsdFBhZ2U6IFBhZ2luYXRpb24gPSB7XG4gICAgICAgICAgICBudW1iZXI6IC0xLFxuICAgICAgICAgICAgc2l6ZTogMCxcbiAgICAgICAgICAgIHRvdGFsUGFnZXM6IDAsXG4gICAgICAgICAgICB0b3RhbEVsZW1lbnRzOiAwXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuY2hhbmdlVHlwZTxBcnJheTxUPj4ociwgcHJvcGVydGllc1BhcmFtcyksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiByLmhhc093blByb3BlcnR5KCdwYWdlJykgPyByLnBhZ2UgOiBkZWZhdWx0UGFnZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4dHJhY3RzIGRhdGEgZnJvbSB0aGUgcmVzcG9uc2UgYHJgIGludG8gYW4gb2JqZWN0IHdpdGggYmV0dGVyIHVzYWJpbGl0eS5cbiAgICAgKiBAcGFyYW0gciAtIHJlc3BvbnNlIG9iamVjdFxuICAgICAqIEBwYXJhbSBwcm9wZXJ0aWVzUGFyYW1zIC0gcGx1cmFsIGZvcm0gb2YgdGhlIHJlc291cmNlIG5hbWUsIHRoYXQgaXMgdXNlZCB0byBleHRyYWN0IHRoZSBkYXRhLiBFZy4gXCJjYXNlc1wiLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjaGFuZ2VUeXBlPFQ+KHI6IGFueSwgcHJvcGVydGllc1BhcmFtczogc3RyaW5nKTogVCB7XG4gICAgICAgIGlmICghcikge1xuICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHIuaGFzT3duUHJvcGVydHkoJ19lbWJlZGRlZCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvcGVydGllc1BhcmFtcyAmJiByLl9lbWJlZGRlZC5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0aWVzUGFyYW1zKSA/IHIuX2VtYmVkZGVkW3Byb3BlcnRpZXNQYXJhbXNdIDogci5fZW1iZWRkZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtcmVzb3VyY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZXRncmlmL2NvbXBvbmVudHMtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9yZXNvdXJjZXMvYWJzdHJhY3QtZW5kcG9pbnQvYWJzdHJhY3QtcmVzb3VyY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUU1RTs7OztHQUlHO0FBQ0g7SUFJSTs7Ozs7T0FLRztJQUNILGlDQUFzQixZQUFvQixFQUNWLGlCQUFtQyxFQUNuQyxjQUFvQztRQURwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLG1CQUFjLEdBQWQsY0FBYyxDQUFzQjtRQUNoRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsc0JBQWMsK0NBQVU7YUFBeEI7WUFDSSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDNUIsQ0FBQzs7O09BQUE7SUFFRDs7O09BR0c7SUFDTyxvREFBa0IsR0FBNUIsVUFBNkIsSUFBWTtRQUNyQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFFYixJQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLHVCQUF1QixDQUFDLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFFL0YsSUFBSSxjQUFjLFlBQVksS0FBSyxFQUFFO1lBQ2pDLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBQSxRQUFRO2dCQUMzQixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO29CQUN4QixHQUFHLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztpQkFDMUI7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxJQUFJLGNBQWMsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUM5QixHQUFHLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQzthQUNoQztTQUNKO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGlEQUFlLEdBQXpCLFVBQTZCLENBQU0sRUFBRSxnQkFBd0I7UUFDekQsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNKLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFDRCxJQUFNLFdBQVcsR0FBZTtZQUM1QixNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ1YsSUFBSSxFQUFFLENBQUM7WUFDUCxVQUFVLEVBQUUsQ0FBQztZQUNiLGFBQWEsRUFBRSxDQUFDO1NBQ25CLENBQUM7UUFFRixPQUFPO1lBQ0gsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQVcsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO1lBQ3ZELFVBQVUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXO1NBQ3BGLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLDRDQUFVLEdBQXBCLFVBQXdCLENBQU0sRUFBRSxnQkFBd0I7UUFDcEQsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNKLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFDRCxJQUFJLENBQUMsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDL0IsT0FBTyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDekg7YUFBTTtZQUNILE9BQU8sQ0FBQyxDQUFDO1NBQ1o7SUFDTCxDQUFDO0lBQ0wsOEJBQUM7QUFBRCxDQUFDLEFBaEZELElBZ0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtSZXNvdXJjZVByb3ZpZGVyfSBmcm9tICcuLi9yZXNvdXJjZS1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7Q29uZmlndXJhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24vY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7UGFnZX0gZnJvbSAnLi4vaW50ZXJmYWNlL3BhZ2UnO1xuaW1wb3J0IHtQYWdpbmF0aW9ufSBmcm9tICcuLi9pbnRlcmZhY2UvcGFnaW5hdGlvbic7XG5pbXBvcnQge1BhZ2luYXRpb25QYXJhbXN9IGZyb20gJy4uLy4uL3V0aWxpdHkvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLXBhcmFtcyc7XG5cbi8qKlxuICogVGhlIGNsYXNzIHRoYXQgY29udGFpbnMgYmVoYXZpb3IgY29tbW9uIHRvIGFsbCByZXNvdXJjZSBzZXJ2aWNlcy5cbiAqXG4gKiBNb3N0bHkgZW5kcG9pbnQgVVJMIHJlc29sdXRpb24gYW5kIHV0aWxpdHkgZnVuY3Rpb25zIGZvciByZXNwb25zZSBwYXJzaW5nLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RSZXNvdXJjZVNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfU0VSVkVSX1VSTDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHJlc291cmNlTmFtZSB0aGUgaWRlbnRpZmllciBvZiB0aGUgZGVzaXJlZCBlbmRwb2ludCBmcm9tIGNvbmZpZ3VyYXRpb24sIGZvdW5kIGluXG4gICAgICoge0BsaW5rIFNldEF1dGhBbmRSZXNvdXJjZXNBZGRyZXNzfS5bcmVzb3VyY2VzXXtAbGluayBSZXNvdXJjZXN9LlxuICAgICAqIEBwYXJhbSBfcmVzb3VyY2VQcm92aWRlciBgUmVzb3VyY2VQcm92aWRlcmAgaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0gX2NvbmZpZ1NlcnZpY2UgYENvbmZpZ3VyYXRpb25TZXJ2aWNlYCBpbnN0YW5jZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihyZXNvdXJjZU5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9yZXNvdXJjZVByb3ZpZGVyOiBSZXNvdXJjZVByb3ZpZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NvbmZpZ1NlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuX1NFUlZFUl9VUkwgPSB0aGlzLmdldFJlc291cmNlQWRkcmVzcyhyZXNvdXJjZU5hbWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgU0VSVkVSX1VSTCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fU0VSVkVSX1VSTDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgVVJMIGZvcm0gbmFlLmpzb24gLSByZXNvdXJjZXNcbiAgICAgKiBAcGFyYW0gbmFtZSAtIElEIHByb3BlcnR5XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldFJlc291cmNlQWRkcmVzcyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgVVJMID0gJyc7XG5cbiAgICAgICAgY29uc3QgcmVzb3VyY2VzQXJyYXkgPSB0aGlzLl9jb25maWdTZXJ2aWNlLmdldENvbmZpZ3VyYXRpb25TdWJ0cmVlKFsncHJvdmlkZXJzJywgJ3Jlc291cmNlcyddKTtcblxuICAgICAgICBpZiAocmVzb3VyY2VzQXJyYXkgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgICAgcmVzb3VyY2VzQXJyYXkuZm9yRWFjaChyZXNvdXJjZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc291cmNlLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgVVJMID0gcmVzb3VyY2UuYWRkcmVzcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZXNBcnJheS5uYW1lID09PSBuYW1lKSB7XG4gICAgICAgICAgICAgICAgVVJMID0gcmVzb3VyY2VzQXJyYXkuYWRkcmVzcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gVVJMO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyBhIHJlc3BvbnNlIGByYCBpbnRvIGEge0BsaW5rIFBhZ2V9IGluc3RhbmNlXG4gICAgICogQHBhcmFtIHIgLSByZXNwb25zZSBvYmplY3RcbiAgICAgKiBAcGFyYW0gcHJvcGVydGllc1BhcmFtcyAtIHBsdXJhbCBmb3JtIG9mIHRoZSByZXNvdXJjZSBuYW1lLCB0aGF0IGlzIHVzZWQgdG8gZXh0cmFjdCB0aGUgZGF0YS4gRWcuIFwiY2FzZXNcIi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0UmVzb3VyY2VQYWdlPFQ+KHI6IGFueSwgcHJvcGVydGllc1BhcmFtczogc3RyaW5nKTogUGFnZTxUPiB7XG4gICAgICAgIGlmICghcikge1xuICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVmYXVsdFBhZ2U6IFBhZ2luYXRpb24gPSB7XG4gICAgICAgICAgICBudW1iZXI6IC0xLFxuICAgICAgICAgICAgc2l6ZTogMCxcbiAgICAgICAgICAgIHRvdGFsUGFnZXM6IDAsXG4gICAgICAgICAgICB0b3RhbEVsZW1lbnRzOiAwXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuY2hhbmdlVHlwZTxBcnJheTxUPj4ociwgcHJvcGVydGllc1BhcmFtcyksXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiByLmhhc093blByb3BlcnR5KFBhZ2luYXRpb25QYXJhbXMuUEFHRV9OVU1CRVIpID8gci5wYWdlIDogZGVmYXVsdFBhZ2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyBkYXRhIGZyb20gdGhlIHJlc3BvbnNlIGByYCBpbnRvIGFuIG9iamVjdCB3aXRoIGJldHRlciB1c2FiaWxpdHkuXG4gICAgICogQHBhcmFtIHIgLSByZXNwb25zZSBvYmplY3RcbiAgICAgKiBAcGFyYW0gcHJvcGVydGllc1BhcmFtcyAtIHBsdXJhbCBmb3JtIG9mIHRoZSByZXNvdXJjZSBuYW1lLCB0aGF0IGlzIHVzZWQgdG8gZXh0cmFjdCB0aGUgZGF0YS4gRWcuIFwiY2FzZXNcIi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY2hhbmdlVHlwZTxUPihyOiBhbnksIHByb3BlcnRpZXNQYXJhbXM6IHN0cmluZyk6IFQge1xuICAgICAgICBpZiAoIXIpIHtcbiAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyLmhhc093blByb3BlcnR5KCdfZW1iZWRkZWQnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHByb3BlcnRpZXNQYXJhbXMgJiYgci5fZW1iZWRkZWQuaGFzT3duUHJvcGVydHkocHJvcGVydGllc1BhcmFtcykgPyByLl9lbWJlZGRlZFtwcm9wZXJ0aWVzUGFyYW1zXSA6IHIuX2VtYmVkZGVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -235,4 +235,4 @@ var PublicTaskResourceService = /** @class */ (function (_super) {
235
235
  return PublicTaskResourceService;
236
236
  }(TaskResourceService));
237
237
  export { PublicTaskResourceService };
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLXRhc2stcmVzb3VyY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZXRncmlmL2NvbXBvbmVudHMtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9yZXNvdXJjZXMvZW5naW5lLWVuZHBvaW50L3B1YmxpYy9wdWJsaWMtdGFzay1yZXNvdXJjZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFFdEUsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFTOUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7QUFJbkQ7SUFHK0MsNkNBQW1CO0lBRTlELG1DQUFzQixTQUEyQixFQUMzQixjQUFvQyxFQUNwQyxlQUFzQyxFQUN0QyxPQUFzQjtRQUg1QyxZQUlJLGtCQUFNLFNBQVMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxTQUM3RDtRQUxxQixlQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixvQkFBYyxHQUFkLGNBQWMsQ0FBc0I7UUFDcEMscUJBQWUsR0FBZixlQUFlLENBQXVCO1FBQ3RDLGFBQU8sR0FBUCxPQUFPLENBQWU7O0lBRTVDLENBQUM7SUFFRDs7O09BR0c7SUFDSCx5Q0FBeUM7SUFDbEMsOENBQVUsR0FBakIsVUFBa0IsTUFBYztRQUFoQyxpQkFHQztRQUZHLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7YUFDdEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUE3QixDQUE2QixDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gseUNBQXlDO0lBQ2xDLDhDQUFVLEdBQWpCLFVBQWtCLE1BQWM7UUFBaEMsaUJBR0M7UUFGRyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ3RFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILHlDQUF5QztJQUNsQyw4Q0FBVSxHQUFqQixVQUFrQixNQUFjO1FBQWhDLGlCQUdDO1FBRkcsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUN0RSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsS0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQTdCLENBQTZCLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7O09BR0c7SUFDSCx1Q0FBdUM7SUFDaEMscURBQWlCLEdBQXhCLFVBQXlCLE1BQWM7UUFBdkMsaUJBR0M7UUFGRyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ3BFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsdUNBQXVDO0lBQ2hDLDhDQUFVLEdBQWpCLFVBQWtCLE1BQWM7UUFBaEMsaUJBR0M7UUFGRyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7YUFDekUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFoQyxDQUFnQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksMkNBQU8sR0FBZCxVQUFlLE1BQWM7UUFBN0IsaUJBOEJDO1FBN0JHLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQy9CLEdBQUcsQ0FBQyxVQUFDLGVBQTRDO1lBQzdDLElBQU0sZUFBZSxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUUsZUFBZSxDQUFDLE9BQXFDLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ25ILElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFO2dCQUNqQyxPQUFPLEVBQUUsQ0FBQzthQUNiO1lBQ0QsSUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLGVBQWUsQ0FBQyxPQUFPLENBQUMsVUFBQSxpQkFBaUI7Z0JBQ3JDLElBQU0sVUFBVSxHQUEwQixFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO29CQUNyQyxPQUFPLENBQUMsV0FBVztpQkFDdEI7Z0JBQ0QsSUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxlQUFlO29CQUNuRSxNQUFNLENBQUMsSUFBSSxPQUFYLE1BQU0sV0FBUyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxHQUFFO2dCQUN4RSxDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBakIsQ0FBaUIsQ0FBQyxDQUFDO2dCQUN6QyxVQUFVLENBQUMsSUFBSSxPQUFmLFVBQVUsV0FBUyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQUEsaUJBQWlCLElBQUksT0FBQSxLQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUEvQyxDQUErQyxDQUFDLEdBQUU7Z0JBQ3JHLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ1IsTUFBTSxFQUFFLFVBQVU7b0JBQ2xCLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxPQUFPO29CQUNsQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsS0FBSztvQkFDOUIsTUFBTSxFQUFFLGlCQUFpQixDQUFDLE1BQU07b0JBQ2hDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxTQUFTO2lCQUN6QyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsdUNBQXVDO0lBQ2hDLDJDQUFPLEdBQWQsVUFBZSxNQUFjLEVBQUUsSUFBNEI7UUFBM0QsaUJBR0M7UUFGRyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxNQUFNLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO2FBQ2hGLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxxQ0FBcUM7SUFDOUIsNENBQVEsR0FBZixVQUFnQixXQUFtQixFQUFFLE1BQWU7UUFBcEQsaUJBWUM7UUFYRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLElBQUksRUFBRTtZQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7U0FDOUQ7UUFFRCxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUZBQXVGLENBQUMsQ0FBQztTQUM1RztRQUVELE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEYsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLENBQUM7YUFDbkcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxlQUFlLENBQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUF0QyxDQUFzQyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0VBQWdFO0lBQ2hFLHFFQUFxRTtJQUM5RCxnREFBWSxHQUFuQixVQUFvQixNQUFjLEVBQUUsT0FBZSxFQUFFLElBQWE7UUFDOUQsSUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWUsTUFBTSxjQUFTLE9BQU8sU0FBSSxJQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFlLE1BQU0sY0FBUyxPQUFTLENBQUM7UUFDL0csT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUM3RCxHQUFHLENBQUMsVUFBQSxLQUFLO1lBQ0wsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUNoQixLQUFLLGFBQWEsQ0FBQyxnQkFBZ0I7b0JBQy9CLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQyxLQUFLLGFBQWEsQ0FBQyxRQUFRO29CQUN2QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCO29CQUNJLE9BQU8sU0FBUyxDQUFDO2FBQ3hCO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsTUFBTSxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsQ0FBQyxDQUFDLEtBQUssRUFBUCxDQUFPLENBQUMsQ0FDM0IsQ0FBQztJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSCw0REFBNEQ7SUFDNUQsaUVBQWlFO0lBQzFELDhDQUFVLEdBQWpCLFVBQWtCLE1BQWMsRUFBRSxPQUFlLEVBQUUsSUFBWSxFQUFFLGFBQXNCO1FBRW5GLElBQU0sR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxpQkFBZSxNQUFNLGNBQVMsT0FBUyxDQUFDLENBQUMsQ0FBQyxpQkFBZSxNQUFNLGVBQVUsT0FBUyxDQUFDO1FBQ2hILE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBOEIsR0FBRyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUN0RyxHQUFHLENBQUMsVUFBQSxLQUFLO1lBQ0wsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUNoQixLQUFLLGFBQWEsQ0FBQyxjQUFjO29CQUM3QixPQUFPLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0MsS0FBSyxhQUFhLENBQUMsUUFBUTtvQkFDdkIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUN0QjtvQkFDSSxPQUFPLFNBQVMsQ0FBQzthQUN4QjtRQUNMLENBQUMsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLENBQUMsQ0FBQyxLQUFLLEVBQVAsQ0FBTyxDQUFDLENBQzNCLENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksOENBQVUsR0FBakIsVUFBa0IsTUFBYyxFQUFFLE9BQWUsRUFBRSxJQUFhO1FBQWhFLGlCQUtDO1FBSkcsSUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWUsTUFBTSxjQUFTLE9BQU8sU0FBSSxJQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFlLE1BQU0sY0FBUyxPQUFTLENBQUM7UUFDL0csT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUM1RCxHQUFHLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQyxDQUMxQyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7T0FHRztJQUNILCtDQUErQztJQUN4Qyx1REFBbUIsR0FBMUIsVUFBMkIsTUFBYyxFQUFFLE9BQWU7UUFDdEQsSUFBTSxHQUFHLEdBQUcsY0FBYyxHQUFHLE1BQU0sR0FBRyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUM3RCxHQUFHLENBQUMsVUFBQSxLQUFLO1lBQ0wsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUNoQixLQUFLLGFBQWEsQ0FBQyxnQkFBZ0I7b0JBQy9CLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQyxLQUFLLGFBQWEsQ0FBQyxRQUFRO29CQUN2QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCO29CQUNJLE9BQU8sU0FBUyxDQUFDO2FBQ3hCO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsTUFBTSxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsQ0FBQyxDQUFDLEtBQUssRUFBUCxDQUFPLENBQUMsQ0FDM0IsQ0FBQztJQUNOLENBQUM7O2dCQXZOZ0MsZ0JBQWdCO2dCQUNYLG9CQUFvQjtnQkFDbkIscUJBQXFCO2dCQUM3QixhQUFhOzs7O2dCQVIvQyxVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7Z0JBbkJpQyxnQkFBZ0I7Z0JBRDFDLG9CQUFvQjtnQkFEcEIscUJBQXFCO2dCQUdyQixhQUFhOztvQ0FMckI7Q0FrUEMsQUE3TkQsQ0FHK0MsbUJBQW1CLEdBME5qRTtTQTFOWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUYXNrUmVzb3VyY2VTZXJ2aWNlfSBmcm9tICcuLi90YXNrLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtGaWVsZENvbnZlcnRlclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3Rhc2stY29udGVudC9zZXJ2aWNlcy9maWVsZC1jb252ZXJ0ZXIuc2VydmljZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQge1BhcmFtcywgUHJvdmlkZXJQcm9ncmVzcywgUmVzb3VyY2VQcm92aWRlcn0gZnJvbSAnLi4vLi4vcmVzb3VyY2UtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtGaWx0ZXJUeXBlfSBmcm9tICcuLi8uLi8uLi9maWx0ZXIvbW9kZWxzL2ZpbHRlci10eXBlJztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICcuLi8uLi8uLi9maWx0ZXIvbW9kZWxzL2ZpbHRlcic7XG5pbXBvcnQge1BhZ2V9IGZyb20gJy4uLy4uL2ludGVyZmFjZS9wYWdlJztcbmltcG9ydCB7Q2hhbmdlZEZpZWxkQ29udGFpbmVyfSBmcm9tICcuLi8uLi9pbnRlcmZhY2UvY2hhbmdlZC1maWVsZC1jb250YWluZXInO1xuaW1wb3J0IHtUYXNrU2V0RGF0YVJlcXVlc3RCb2R5fSBmcm9tICcuLi8uLi9pbnRlcmZhY2UvdGFzay1zZXQtZGF0YS1yZXF1ZXN0LWJvZHknO1xuaW1wb3J0IHtUYXNrUmVmZXJlbmNlfSBmcm9tICcuLi8uLi9pbnRlcmZhY2UvdGFzay1yZWZlcmVuY2UnO1xuaW1wb3J0IHtEYXRhR3JvdXB9IGZyb20gJy4uLy4uL2ludGVyZmFjZS9kYXRhLWdyb3Vwcyc7XG5pbXBvcnQge0RhdGFGaWVsZH0gZnJvbSAnLi4vLi4vLi4vZGF0YS1maWVsZHMvbW9kZWxzL2Fic3RyYWN0LWRhdGEtZmllbGQnO1xuaW1wb3J0IHtUYXNrfSBmcm9tICcuLi8uLi9pbnRlcmZhY2UvdGFzayc7XG5pbXBvcnQge0h0dHBFdmVudFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlLCBNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uLy4uL2ludGVyZmFjZS9tZXNzYWdlLXJlc291cmNlJztcbmltcG9ydCB7R2V0RGF0YUdyb3Vwc0V2ZW50T3V0Y29tZX0gZnJvbSAnLi4vLi4vLi4vZXZlbnQvbW9kZWwvZXZlbnQtb3V0Y29tZXMvZGF0YS1vdXRjb21lcy9nZXQtZGF0YS1ncm91cHMtZXZlbnQtb3V0Y29tZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFB1YmxpY1Rhc2tSZXNvdXJjZVNlcnZpY2UgZXh0ZW5kcyBUYXNrUmVzb3VyY2VTZXJ2aWNlIHtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfcHJvdmlkZXI6IFJlc291cmNlUHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9jb25maWdTZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2ZpZWxkQ29udmVydGVyOiBGaWVsZENvbnZlcnRlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2dnZXI6IExvZ2dlclNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoX3Byb3ZpZGVyLCBfY29uZmlnU2VydmljZSwgX2ZpZWxkQ29udmVydGVyLCBfbG9nZ2VyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ24gdGFza1xuICAgICAqIEdFVFxuICAgICAqL1xuICAgIC8vIHt7YmFzZVVybH19L2FwaS9wdWJsaWMvdGFzay9hc3NpZ24vOmlkXG4gICAgcHVibGljIGFzc2lnblRhc2sodGFza0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvdmlkZXIuZ2V0JCgncHVibGljL3Rhc2svYXNzaWduLycgKyB0YXNrSWQsIHRoaXMuU0VSVkVSX1VSTClcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FuY2VsIHRhc2tcbiAgICAgKiBHRVRcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvcHVibGljL3Rhc2svY2FuY2VsLzppZFxuICAgIHB1YmxpYyBjYW5jZWxUYXNrKHRhc2tJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3ZpZGVyLmdldCQoJ3B1YmxpYy90YXNrL2NhbmNlbC8nICsgdGFza0lkLCB0aGlzLlNFUlZFUl9VUkwpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgdW5kZWZpbmVkKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmlzaCB0YXNrXG4gICAgICogR0VUXG4gICAgICovXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3B1YmxpYy90YXNrL2ZpbmlzaC86aWRcbiAgICBwdWJsaWMgZmluaXNoVGFzayh0YXNrSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm92aWRlci5nZXQkKCdwdWJsaWMvdGFzay9maW5pc2gvJyArIHRhc2tJZCwgdGhpcy5TRVJWRVJfVVJMKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGFza3Mgb2YgdGhlIGNhc2VcbiAgICAgKiBHRVRcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvcHVibGljL3Rhc2svY2FzZS86aWRcbiAgICBwdWJsaWMgZ2V0QWxsVGFza3NCeUNhc2UoY2FzZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5PFRhc2tSZWZlcmVuY2U+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm92aWRlci5nZXQkKCdwdWJsaWMvdGFzay9jYXNlLycgKyBjYXNlSWQsIHRoaXMuU0VSVkVSX1VSTClcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGFsbCB0YXNrIGRhdGFcbiAgICAgKlxuICAgICAqIEdFVFxuICAgICAqXG4gICAgICogSWYgeW91IGRvbid0IHdhbnQgdG8gcGFyc2UgdGhlIHJlc3BvbnNlIHlvdXJzZWxmIHVzZSBbZ2V0RGF0YV17QGxpbmsgVGFza1Jlc291cmNlU2VydmljZSNnZXREYXRhfSBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHJldHVybnMgdGhlIHJhdyBiYWNrZW5kIHJlc3BvbnNlIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgcHJvY2Vzc2luZ1xuICAgICAqL1xuICAgIC8vIHt7YmFzZVVybH19L2FwaS9wdWJsaWMvdGFzay86aWQvZGF0YVxuICAgIHB1YmxpYyByYXdHZXREYXRhKHRhc2tJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3ZpZGVyLmdldCQoJ3B1YmxpYy90YXNrLycgKyB0YXNrSWQgKyAnL2RhdGEnLCB0aGlzLlNFUlZFUl9VUkwpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgJ2RhdGFHcm91cHMnKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBHZXQgYWxsIHRhc2sgZGF0YVxuICAgICAqXG4gICAgICogIEdFVFxuICAgICAqXG4gICAgICogIElmIHlvdSB3YW50IHRvIHByb2Nlc3MgdGhlIHJhdyBiYWNrZW5kIHJlc3BvbnNlIHVzZSBbcmF3R2V0RGF0YV17QGxpbmsgVGFza1Jlc291cmNlU2VydmljZSNyYXdHZXREYXRhfSBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhc2tJZCBJRCBvZiB0aGUgdGFzayB3aG8ncyBkYXRhIHNob3VsZCBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgc2VydmVyXG4gICAgICogQHJldHVybnMgcHJvY2Vzc2VkIGRhdGEgZ3JvdXBzIG9mIHRoZSBnaXZlbiB0YXNrLiBJZiB0aGUgdGFzayBoYXMgbm8gZGF0YSBhbiBlbXB0eSBhcnJheSB3aWxsIGJlIHJldHVybmVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREYXRhKHRhc2tJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxBcnJheTxEYXRhR3JvdXA+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhd0dldERhdGEodGFza0lkKS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZU91dGNvbWU6IEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFHcm91cHNBcnJheSA9IHRoaXMuY2hhbmdlVHlwZSgocmVzcG9uc2VPdXRjb21lLm91dGNvbWUgYXMgR2V0RGF0YUdyb3Vwc0V2ZW50T3V0Y29tZSkuZGF0YSwgJ2RhdGFHcm91cHMnKTtcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YUdyb3Vwc0FycmF5KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgICAgIGRhdGFHcm91cHNBcnJheS5mb3JFYWNoKGRhdGFHcm91cFJlc291cmNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YUZpZWxkczogQXJyYXk8RGF0YUZpZWxkPGFueT4+ID0gW107XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0YUdyb3VwUmVzb3VyY2UuZmllbGRzLl9lbWJlZGRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBjb250aW51ZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhkYXRhR3JvdXBSZXNvdXJjZS5maWVsZHMuX2VtYmVkZGVkKS5mb3JFYWNoKGxvY2FsaXplZEZpZWxkcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHMucHVzaCguLi5kYXRhR3JvdXBSZXNvdXJjZS5maWVsZHMuX2VtYmVkZGVkW2xvY2FsaXplZEZpZWxkc10pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgZmllbGRzLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YUZpZWxkcy5wdXNoKC4uLmZpZWxkcy5tYXAoZGF0YUZpZWxkUmVzb3VyY2UgPT4gdGhpcy5fZmllbGRDb252ZXJ0ZXIudG9DbGFzcyhkYXRhRmllbGRSZXNvdXJjZSkpKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzOiBkYXRhRmllbGRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXRjaDogZGF0YUdyb3VwUmVzb3VyY2Uuc3RyZXRjaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBkYXRhR3JvdXBSZXNvdXJjZS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dDogZGF0YUdyb3VwUmVzb3VyY2UubGF5b3V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiBkYXRhR3JvdXBSZXNvdXJjZS5hbGlnbm1lbnRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRhc2sgZGF0YVxuICAgICAqIFBPU1RcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvcHVibGljL3Rhc2svOmlkL2RhdGFcbiAgICBwdWJsaWMgc2V0RGF0YSh0YXNrSWQ6IHN0cmluZywgYm9keTogVGFza1NldERhdGFSZXF1ZXN0Qm9keSk6IE9ic2VydmFibGU8RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm92aWRlci5wb3N0JCgncHVibGljL3Rhc2svJyArIHRhc2tJZCArICcvZGF0YScsIHRoaXMuU0VSVkVSX1VSTCwgYm9keSlcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VhcmNoZXMgdGFza3MgdHJvdWdoIHRoZSBNb25nbyBlbmRwb2ludC5cbiAgICAgKiBQT1NUXG4gICAgICogQHBhcmFtIGZpbHRlclBhcmFtIGZpbHRlciB1c2VkIHRvIHNlYXJjaCB0aGUgdGFza3MuIE11c3QgYmUgb2YgdHlwZSBgVEFTS2AuXG4gICAgICogTm90ZSB0aGF0IHRoZSBgcXVlcnlgIGF0dHJpYnV0ZSBvZiB0aGUgZmlsdGVyIGNhbm5vdCBiZSB1c2VkIHdpdGggdGhpcyBlbmRwb2ludC5cbiAgICAgKiBBdHRlbXB0aW5nIHRvIHVzZSBpdCB3aWxsIGRpc3BsYXkgYSB3YXJuaW5nIGFuZCByZW1vdmUgdGhlIGF0dHJpYnV0ZSBmcm9tIHRoZSByZXF1ZXN0LlxuICAgICAqIEBwYXJhbSBwYXJhbXMgQWRkaXRpb25hbCByZXF1ZXN0IHBhcmFtZXRlcnNcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvcHVibGljL3Rhc2svc2VhcmNoXG4gICAgcHVibGljIGdldFRhc2tzKGZpbHRlclBhcmFtOiBGaWx0ZXIsIHBhcmFtcz86IFBhcmFtcyk6IE9ic2VydmFibGU8UGFnZTxUYXNrPj4ge1xuICAgICAgICBpZiAoZmlsdGVyUGFyYW0udHlwZSAhPT0gRmlsdGVyVHlwZS5UQVNLKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb3ZpZGVkIGZpbHRlciBkb2VzblxcJ3QgaGF2ZSB0eXBlIFRBU0snKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbS5ib2R5Q29udGFpbnNRdWVyeSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldFRhc2tzIGVuZHBvaW50IGNhbm5vdCBiZSBxdWVyaWVkIHdpdGggZmlsdGVycyB0aGF0IGNvbnRhaW4gdGhlIFxcJ3F1ZXJ5XFwnIGF0dHJpYnV0ZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgcGFyYW1zID0gUmVzb3VyY2VQcm92aWRlci5jb21iaW5lUGFyYW1zKGZpbHRlclBhcmFtLmdldFJlcXVlc3RQYXJhbXMoKSwgcGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3ZpZGVyLnBvc3QkKCdwdWJsaWMvdGFzay9zZWFyY2gnLCB0aGlzLlNFUlZFUl9VUkwsIGZpbHRlclBhcmFtLmdldFJlcXVlc3RCb2R5KCksIHBhcmFtcylcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuZ2V0UmVzb3VyY2VQYWdlPFRhc2s+KHIsICd0YXNrcycpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRG93bmxvYWQgdGFzayBmaWxlIGZpZWxkIHZhbHVlXG4gICAgICogR0VUXG4gICAgICovXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3Rhc2svOmlkL2ZpbGUvOmZpZWxkICAgICAgICAgLSBmb3IgZmlsZSBmaWVsZFxuICAgIC8vIHt7YmFzZVVybH19L2FwaS90YXNrLzppZC9maWxlLzpmaWVsZC86bmFtZSAgIC0gZm9yIGZpbGUgbGlzdCBmaWVsZFxuICAgIHB1YmxpYyBkb3dubG9hZEZpbGUodGFza0lkOiBzdHJpbmcsIGZpZWxkSWQ6IHN0cmluZywgbmFtZT86IHN0cmluZyk6IE9ic2VydmFibGU8UHJvdmlkZXJQcm9ncmVzcyB8IEJsb2I+IHtcbiAgICAgICAgY29uc3QgdXJsID0gISFuYW1lID8gYHB1YmxpYy90YXNrLyR7dGFza0lkfS9maWxlLyR7ZmllbGRJZH0vJHtuYW1lfWAgOiBgcHVibGljL3Rhc2svJHt0YXNrSWR9L2ZpbGUvJHtmaWVsZElkfWA7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldEJsb2IkKHVybCwgdGhpcy5TRVJWRVJfVVJMKS5waXBlKFxuICAgICAgICAgICAgbWFwKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLkRvd25sb2FkUHJvZ3Jlc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VQcm92aWRlci5nZXRQcm9ncmVzcyhldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5ib2R5O1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpbHRlcih2YWx1ZSA9PiAhIXZhbHVlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwbG9hZCBmaWxlIGludG8gdGhlIHRhc2tcbiAgICAgKiBQT1NUXG4gICAgICovXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3Rhc2svOmlkL2ZpbGUvOmZpZWxkICAgICAtIGZvciBmaWxlIGZpZWxkXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3Rhc2svOmlkL2ZpbGVzLzpmaWVsZCAgICAtIGZvciBmaWxlIGxpc3QgZmllbGRcbiAgICBwdWJsaWMgdXBsb2FkRmlsZSh0YXNrSWQ6IHN0cmluZywgZmllbGRJZDogc3RyaW5nLCBib2R5OiBvYmplY3QsIG11bHRpcGxlRmlsZXM6IGJvb2xlYW4pOlxuICAgICAgICBPYnNlcnZhYmxlPFByb3ZpZGVyUHJvZ3Jlc3MgfCBFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2U+IHtcbiAgICAgICAgY29uc3QgdXJsID0gIW11bHRpcGxlRmlsZXMgPyBgcHVibGljL3Rhc2svJHt0YXNrSWR9L2ZpbGUvJHtmaWVsZElkfWAgOiBgcHVibGljL3Rhc2svJHt0YXNrSWR9L2ZpbGVzLyR7ZmllbGRJZH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5wb3N0V2l0aEV2ZW50JDxFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2U+KHVybCwgdGhpcy5TRVJWRVJfVVJMLCBib2R5KS5waXBlKFxuICAgICAgICAgICAgbWFwKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlUHJvdmlkZXIuZ2V0UHJvZ3Jlc3MoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQuYm9keTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBmaWx0ZXIodmFsdWUgPT4gISF2YWx1ZSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWxldGUgZmlsZSBmcm9tIHRoZSB0YXNrXG4gICAgICogREVMRVRFXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZUZpbGUodGFza0lkOiBzdHJpbmcsIGZpZWxkSWQ6IHN0cmluZywgbmFtZT86IHN0cmluZyk6IE9ic2VydmFibGU8TWVzc2FnZVJlc291cmNlPiB7XG4gICAgICAgIGNvbnN0IHVybCA9ICEhbmFtZSA/IGBwdWJsaWMvdGFzay8ke3Rhc2tJZH0vZmlsZS8ke2ZpZWxkSWR9LyR7bmFtZX1gIDogYHB1YmxpYy90YXNrLyR7dGFza0lkfS9maWxlLyR7ZmllbGRJZH1gO1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5kZWxldGUkKHVybCwgdGhpcy5TRVJWRVJfVVJMKS5waXBlKFxuICAgICAgICAgICAgbWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRG93bmxvYWQgdGFzayBmaWxlIHByZXZpZXcgZm9yIGZpZWxkIHZhbHVlXG4gICAgICogR0VUXG4gICAgICovXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3Rhc2svOmlkL2ZpbGVfcHJldmlldy86ZmllbGRcbiAgICBwdWJsaWMgZG93bmxvYWRGaWxlUHJldmlldyh0YXNrSWQ6IHN0cmluZywgZmllbGRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcm92aWRlclByb2dyZXNzIHwgQmxvYj4ge1xuICAgICAgICBjb25zdCB1cmwgPSAncHVibGljL3Rhc2svJyArIHRhc2tJZCArICcvZmlsZV9wcmV2aWV3LycgKyBmaWVsZElkO1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5nZXRCbG9iJCh1cmwsIHRoaXMuU0VSVkVSX1VSTCkucGlwZShcbiAgICAgICAgICAgIG1hcChldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5Eb3dubG9hZFByb2dyZXNzOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc291cmNlUHJvdmlkZXIuZ2V0UHJvZ3Jlc3MoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQuYm9keTtcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBmaWx0ZXIodmFsdWUgPT4gISF2YWx1ZSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLXRhc2stcmVzb3VyY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZXRncmlmL2NvbXBvbmVudHMtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9yZXNvdXJjZXMvZW5naW5lLWVuZHBvaW50L3B1YmxpYy9wdWJsaWMtdGFzay1yZXNvdXJjZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFFdEUsT0FBTyxFQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFTOUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7QUFJbkQ7SUFHK0MsNkNBQW1CO0lBRTlELG1DQUFzQixTQUEyQixFQUMzQixjQUFvQyxFQUNwQyxlQUFzQyxFQUN0QyxPQUFzQjtRQUg1QyxZQUlJLGtCQUFNLFNBQVMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxTQUM3RDtRQUxxQixlQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixvQkFBYyxHQUFkLGNBQWMsQ0FBc0I7UUFDcEMscUJBQWUsR0FBZixlQUFlLENBQXVCO1FBQ3RDLGFBQU8sR0FBUCxPQUFPLENBQWU7O0lBRTVDLENBQUM7SUFFRDs7O09BR0c7SUFDSCx5Q0FBeUM7SUFDbEMsOENBQVUsR0FBakIsVUFBa0IsTUFBYztRQUFoQyxpQkFHQztRQUZHLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7YUFDdEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUE3QixDQUE2QixDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gseUNBQXlDO0lBQ2xDLDhDQUFVLEdBQWpCLFVBQWtCLE1BQWM7UUFBaEMsaUJBR0M7UUFGRyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ3RFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILHlDQUF5QztJQUNsQyw4Q0FBVSxHQUFqQixVQUFrQixNQUFjO1FBQWhDLGlCQUdDO1FBRkcsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUN0RSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsS0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQTdCLENBQTZCLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7O09BR0c7SUFDSCx1Q0FBdUM7SUFDaEMscURBQWlCLEdBQXhCLFVBQXlCLE1BQWM7UUFBdkMsaUJBR0M7UUFGRyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQ3BFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsdUNBQXVDO0lBQ2hDLDhDQUFVLEdBQWpCLFVBQWtCLE1BQWM7UUFBaEMsaUJBR0M7UUFGRyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7YUFDekUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFoQyxDQUFnQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksMkNBQU8sR0FBZCxVQUFlLE1BQWM7UUFBN0IsaUJBOEJDO1FBN0JHLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQy9CLEdBQUcsQ0FBQyxVQUFDLGVBQTRDO1lBQzdDLElBQU0sZUFBZSxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUUsZUFBZSxDQUFDLE9BQXFDLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ25ILElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFO2dCQUNqQyxPQUFPLEVBQUUsQ0FBQzthQUNiO1lBQ0QsSUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLGVBQWUsQ0FBQyxPQUFPLENBQUMsVUFBQSxpQkFBaUI7Z0JBQ3JDLElBQU0sVUFBVSxHQUEwQixFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO29CQUNyQyxPQUFPLENBQUMsV0FBVztpQkFDdEI7Z0JBQ0QsSUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxlQUFlO29CQUNuRSxNQUFNLENBQUMsSUFBSSxPQUFYLE1BQU0sV0FBUyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxHQUFFO2dCQUN4RSxDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBakIsQ0FBaUIsQ0FBQyxDQUFDO2dCQUN6QyxVQUFVLENBQUMsSUFBSSxPQUFmLFVBQVUsV0FBUyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQUEsaUJBQWlCLElBQUksT0FBQSxLQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUEvQyxDQUErQyxDQUFDLEdBQUU7Z0JBQ3JHLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ1IsTUFBTSxFQUFFLFVBQVU7b0JBQ2xCLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxPQUFPO29CQUNsQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsS0FBSztvQkFDOUIsTUFBTSxFQUFFLGlCQUFpQixDQUFDLE1BQU07b0JBQ2hDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxTQUFTO2lCQUN6QyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsdUNBQXVDO0lBQ2hDLDJDQUFPLEdBQWQsVUFBZSxNQUFjLEVBQUUsSUFBNEI7UUFBM0QsaUJBR0M7UUFGRyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxNQUFNLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO2FBQ2hGLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxxQ0FBcUM7SUFDOUIsNENBQVEsR0FBZixVQUFnQixXQUFtQixFQUFFLE1BQWU7UUFBcEQsaUJBWUM7UUFYRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLElBQUksRUFBRTtZQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7U0FDOUQ7UUFFRCxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsdUZBQXVGLENBQUMsQ0FBQztTQUM1RztRQUVELE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEYsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLENBQUM7YUFDbkcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxlQUFlLENBQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUF0QyxDQUFzQyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0VBQWdFO0lBQ2hFLHFFQUFxRTtJQUM5RCxnREFBWSxHQUFuQixVQUFvQixNQUFjLEVBQUUsT0FBZSxFQUFFLElBQWE7UUFDOUQsSUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWUsTUFBTSxjQUFTLE9BQU8sU0FBSSxJQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFlLE1BQU0sY0FBUyxPQUFTLENBQUM7UUFDL0csT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUM3RCxHQUFHLENBQUMsVUFBQSxLQUFLO1lBQ0wsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUNoQixLQUFLLGFBQWEsQ0FBQyxnQkFBZ0I7b0JBQy9CLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQyxLQUFLLGFBQWEsQ0FBQyxRQUFRO29CQUN2QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCO29CQUNJLE9BQU8sU0FBUyxDQUFDO2FBQ3hCO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsTUFBTSxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsQ0FBQyxDQUFDLEtBQUssRUFBUCxDQUFPLENBQUMsQ0FDM0IsQ0FBQztJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSCw0REFBNEQ7SUFDNUQsaUVBQWlFO0lBQzFELDhDQUFVLEdBQWpCLFVBQWtCLE1BQWMsRUFBRSxPQUFlLEVBQUUsSUFBWSxFQUFFLGFBQXNCO1FBRW5GLElBQU0sR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxpQkFBZSxNQUFNLGNBQVMsT0FBUyxDQUFDLENBQUMsQ0FBQyxpQkFBZSxNQUFNLGVBQVUsT0FBUyxDQUFDO1FBQ2hILE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBOEIsR0FBRyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUN0RyxHQUFHLENBQUMsVUFBQSxLQUFLO1lBQ0wsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUNoQixLQUFLLGFBQWEsQ0FBQyxjQUFjO29CQUM3QixPQUFPLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0MsS0FBSyxhQUFhLENBQUMsUUFBUTtvQkFDdkIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUN0QjtvQkFDSSxPQUFPLFNBQVMsQ0FBQzthQUN4QjtRQUNMLENBQUMsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLENBQUMsQ0FBQyxLQUFLLEVBQVAsQ0FBTyxDQUFDLENBQzNCLENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksOENBQVUsR0FBakIsVUFBa0IsTUFBYyxFQUFFLE9BQWUsRUFBRSxJQUFhO1FBQWhFLGlCQUtDO1FBSkcsSUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWUsTUFBTSxjQUFTLE9BQU8sU0FBSSxJQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFlLE1BQU0sY0FBUyxPQUFTLENBQUM7UUFDL0csT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUM1RCxHQUFHLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBN0IsQ0FBNkIsQ0FBQyxDQUMxQyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7T0FHRztJQUNILCtDQUErQztJQUN4Qyx1REFBbUIsR0FBMUIsVUFBMkIsTUFBYyxFQUFFLE9BQWU7UUFDdEQsSUFBTSxHQUFHLEdBQUcsY0FBYyxHQUFHLE1BQU0sR0FBRyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUM3RCxHQUFHLENBQUMsVUFBQSxLQUFLO1lBQ0wsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUNoQixLQUFLLGFBQWEsQ0FBQyxnQkFBZ0I7b0JBQy9CLE9BQU8sZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQyxLQUFLLGFBQWEsQ0FBQyxRQUFRO29CQUN2QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCO29CQUNJLE9BQU8sU0FBUyxDQUFDO2FBQ3hCO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsTUFBTSxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsQ0FBQyxDQUFDLEtBQUssRUFBUCxDQUFPLENBQUMsQ0FDM0IsQ0FBQztJQUNOLENBQUM7O2dCQXZOZ0MsZ0JBQWdCO2dCQUNYLG9CQUFvQjtnQkFDbkIscUJBQXFCO2dCQUM3QixhQUFhOzs7O2dCQVIvQyxVQUFVLFNBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzs7Z0JBbkJpQyxnQkFBZ0I7Z0JBRDFDLG9CQUFvQjtnQkFEcEIscUJBQXFCO2dCQUdyQixhQUFhOztvQ0FMckI7Q0FrUEMsQUE3TkQsQ0FHK0MsbUJBQW1CLEdBME5qRTtTQTFOWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUYXNrUmVzb3VyY2VTZXJ2aWNlfSBmcm9tICcuLi90YXNrLXJlc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtGaWVsZENvbnZlcnRlclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3Rhc2stY29udGVudC9zZXJ2aWNlcy9maWVsZC1jb252ZXJ0ZXIuc2VydmljZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQge1BhcmFtcywgUHJvdmlkZXJQcm9ncmVzcywgUmVzb3VyY2VQcm92aWRlcn0gZnJvbSAnLi4vLi4vcmVzb3VyY2UtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtGaWx0ZXJUeXBlfSBmcm9tICcuLi8uLi8uLi9maWx0ZXIvbW9kZWxzL2ZpbHRlci10eXBlJztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICcuLi8uLi8uLi9maWx0ZXIvbW9kZWxzL2ZpbHRlcic7XG5pbXBvcnQge1BhZ2V9IGZyb20gJy4uLy4uL2ludGVyZmFjZS9wYWdlJztcbmltcG9ydCB7Q2hhbmdlZEZpZWxkQ29udGFpbmVyfSBmcm9tICcuLi8uLi9pbnRlcmZhY2UvY2hhbmdlZC1maWVsZC1jb250YWluZXInO1xuaW1wb3J0IHtUYXNrU2V0RGF0YVJlcXVlc3RCb2R5fSBmcm9tICcuLi8uLi9pbnRlcmZhY2UvdGFzay1zZXQtZGF0YS1yZXF1ZXN0LWJvZHknO1xuaW1wb3J0IHtUYXNrUmVmZXJlbmNlfSBmcm9tICcuLi8uLi9pbnRlcmZhY2UvdGFzay1yZWZlcmVuY2UnO1xuaW1wb3J0IHtEYXRhR3JvdXB9IGZyb20gJy4uLy4uL2ludGVyZmFjZS9kYXRhLWdyb3Vwcyc7XG5pbXBvcnQge0RhdGFGaWVsZH0gZnJvbSAnLi4vLi4vLi4vZGF0YS1maWVsZHMvbW9kZWxzL2Fic3RyYWN0LWRhdGEtZmllbGQnO1xuaW1wb3J0IHtUYXNrfSBmcm9tICcuLi8uLi9pbnRlcmZhY2UvdGFzayc7XG5pbXBvcnQge0h0dHBFdmVudFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlLCBNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uLy4uL2ludGVyZmFjZS9tZXNzYWdlLXJlc291cmNlJztcbmltcG9ydCB7R2V0RGF0YUdyb3Vwc0V2ZW50T3V0Y29tZX0gZnJvbSAnLi4vLi4vLi4vZXZlbnQvbW9kZWwvZXZlbnQtb3V0Y29tZXMvZGF0YS1vdXRjb21lcy9nZXQtZGF0YS1ncm91cHMtZXZlbnQtb3V0Y29tZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUHVibGljVGFza1Jlc291cmNlU2VydmljZSBleHRlbmRzIFRhc2tSZXNvdXJjZVNlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9wcm92aWRlcjogUmVzb3VyY2VQcm92aWRlcixcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NvbmZpZ1NlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfZmllbGRDb252ZXJ0ZXI6IEZpZWxkQ29udmVydGVyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZ2dlcjogTG9nZ2VyU2VydmljZSkge1xuICAgICAgICBzdXBlcihfcHJvdmlkZXIsIF9jb25maWdTZXJ2aWNlLCBfZmllbGRDb252ZXJ0ZXIsIF9sb2dnZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbiB0YXNrXG4gICAgICogR0VUXG4gICAgICovXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3B1YmxpYy90YXNrL2Fzc2lnbi86aWRcbiAgICBwdWJsaWMgYXNzaWduVGFzayh0YXNrSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm92aWRlci5nZXQkKCdwdWJsaWMvdGFzay9hc3NpZ24vJyArIHRhc2tJZCwgdGhpcy5TRVJWRVJfVVJMKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYW5jZWwgdGFza1xuICAgICAqIEdFVFxuICAgICAqL1xuICAgIC8vIHt7YmFzZVVybH19L2FwaS9wdWJsaWMvdGFzay9jYW5jZWwvOmlkXG4gICAgcHVibGljIGNhbmNlbFRhc2sodGFza0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvdmlkZXIuZ2V0JCgncHVibGljL3Rhc2svY2FuY2VsLycgKyB0YXNrSWQsIHRoaXMuU0VSVkVSX1VSTClcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmluaXNoIHRhc2tcbiAgICAgKiBHRVRcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvcHVibGljL3Rhc2svZmluaXNoLzppZFxuICAgIHB1YmxpYyBmaW5pc2hUYXNrKHRhc2tJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3ZpZGVyLmdldCQoJ3B1YmxpYy90YXNrL2ZpbmlzaC8nICsgdGFza0lkLCB0aGlzLlNFUlZFUl9VUkwpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgdW5kZWZpbmVkKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0YXNrcyBvZiB0aGUgY2FzZVxuICAgICAqIEdFVFxuICAgICAqL1xuICAgIC8vIHt7YmFzZVVybH19L2FwaS9wdWJsaWMvdGFzay9jYXNlLzppZFxuICAgIHB1YmxpYyBnZXRBbGxUYXNrc0J5Q2FzZShjYXNlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8QXJyYXk8VGFza1JlZmVyZW5jZT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3ZpZGVyLmdldCQoJ3B1YmxpYy90YXNrL2Nhc2UvJyArIGNhc2VJZCwgdGhpcy5TRVJWRVJfVVJMKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIHRhc2sgZGF0YVxuICAgICAqXG4gICAgICogR0VUXG4gICAgICpcbiAgICAgKiBJZiB5b3UgZG9uJ3Qgd2FudCB0byBwYXJzZSB0aGUgcmVzcG9uc2UgeW91cnNlbGYgdXNlIFtnZXREYXRhXXtAbGluayBUYXNrUmVzb3VyY2VTZXJ2aWNlI2dldERhdGF9IGluc3RlYWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB0aGUgcmF3IGJhY2tlbmQgcmVzcG9uc2Ugd2l0aG91dCBhbnkgYWRkaXRpb25hbCBwcm9jZXNzaW5nXG4gICAgICovXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3B1YmxpYy90YXNrLzppZC9kYXRhXG4gICAgcHVibGljIHJhd0dldERhdGEodGFza0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvdmlkZXIuZ2V0JCgncHVibGljL3Rhc2svJyArIHRhc2tJZCArICcvZGF0YScsIHRoaXMuU0VSVkVSX1VSTClcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCAnZGF0YUdyb3VwcycpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIEdldCBhbGwgdGFzayBkYXRhXG4gICAgICpcbiAgICAgKiAgR0VUXG4gICAgICpcbiAgICAgKiAgSWYgeW91IHdhbnQgdG8gcHJvY2VzcyB0aGUgcmF3IGJhY2tlbmQgcmVzcG9uc2UgdXNlIFtyYXdHZXREYXRhXXtAbGluayBUYXNrUmVzb3VyY2VTZXJ2aWNlI3Jhd0dldERhdGF9IGluc3RlYWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFza0lkIElEIG9mIHRoZSB0YXNrIHdobydzIGRhdGEgc2hvdWxkIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBzZXJ2ZXJcbiAgICAgKiBAcmV0dXJucyBwcm9jZXNzZWQgZGF0YSBncm91cHMgb2YgdGhlIGdpdmVuIHRhc2suIElmIHRoZSB0YXNrIGhhcyBubyBkYXRhIGFuIGVtcHR5IGFycmF5IHdpbGwgYmUgcmV0dXJuZWQuXG4gICAgICovXG4gICAgcHVibGljIGdldERhdGEodGFza0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5PERhdGFHcm91cD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3R2V0RGF0YSh0YXNrSWQpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHJlc3BvbnNlT3V0Y29tZTogRXZlbnRPdXRjb21lTWVzc2FnZVJlc291cmNlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YUdyb3Vwc0FycmF5ID0gdGhpcy5jaGFuZ2VUeXBlKChyZXNwb25zZU91dGNvbWUub3V0Y29tZSBhcyBHZXREYXRhR3JvdXBzRXZlbnRPdXRjb21lKS5kYXRhLCAnZGF0YUdyb3VwcycpO1xuICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhR3JvdXBzQXJyYXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgICAgICAgICAgZGF0YUdyb3Vwc0FycmF5LmZvckVhY2goZGF0YUdyb3VwUmVzb3VyY2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhRmllbGRzOiBBcnJheTxEYXRhRmllbGQ8YW55Pj4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRhR3JvdXBSZXNvdXJjZS5maWVsZHMuX2VtYmVkZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRzID0gW107XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGRhdGFHcm91cFJlc291cmNlLmZpZWxkcy5fZW1iZWRkZWQpLmZvckVhY2gobG9jYWxpemVkRmllbGRzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkcy5wdXNoKC4uLmRhdGFHcm91cFJlc291cmNlLmZpZWxkcy5fZW1iZWRkZWRbbG9jYWxpemVkRmllbGRzXSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZHMuc29ydCgoYSwgYikgPT4gYS5vcmRlciAtIGIub3JkZXIpO1xuICAgICAgICAgICAgICAgICAgICBkYXRhRmllbGRzLnB1c2goLi4uZmllbGRzLm1hcChkYXRhRmllbGRSZXNvdXJjZSA9PiB0aGlzLl9maWVsZENvbnZlcnRlci50b0NsYXNzKGRhdGFGaWVsZFJlc291cmNlKSkpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHM6IGRhdGFGaWVsZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJldGNoOiBkYXRhR3JvdXBSZXNvdXJjZS5zdHJldGNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRhdGFHcm91cFJlc291cmNlLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0OiBkYXRhR3JvdXBSZXNvdXJjZS5sYXlvdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnQ6IGRhdGFHcm91cFJlc291cmNlLmFsaWdubWVudFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdGFzayBkYXRhXG4gICAgICogUE9TVFxuICAgICAqL1xuICAgIC8vIHt7YmFzZVVybH19L2FwaS9wdWJsaWMvdGFzay86aWQvZGF0YVxuICAgIHB1YmxpYyBzZXREYXRhKHRhc2tJZDogc3RyaW5nLCBib2R5OiBUYXNrU2V0RGF0YVJlcXVlc3RCb2R5KTogT2JzZXJ2YWJsZTxFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3ZpZGVyLnBvc3QkKCdwdWJsaWMvdGFzay8nICsgdGFza0lkICsgJy9kYXRhJywgdGhpcy5TRVJWRVJfVVJMLCBib2R5KVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2hlcyB0YXNrcyB0cm91Z2ggdGhlIE1vbmdvIGVuZHBvaW50LlxuICAgICAqIFBPU1RcbiAgICAgKiBAcGFyYW0gZmlsdGVyUGFyYW0gZmlsdGVyIHVzZWQgdG8gc2VhcmNoIHRoZSB0YXNrcy4gTXVzdCBiZSBvZiB0eXBlIGBUQVNLYC5cbiAgICAgKiBOb3RlIHRoYXQgdGhlIGBxdWVyeWAgYXR0cmlidXRlIG9mIHRoZSBmaWx0ZXIgY2Fubm90IGJlIHVzZWQgd2l0aCB0aGlzIGVuZHBvaW50LlxuICAgICAqIEF0dGVtcHRpbmcgdG8gdXNlIGl0IHdpbGwgZGlzcGxheSBhIHdhcm5pbmcgYW5kIHJlbW92ZSB0aGUgYXR0cmlidXRlIGZyb20gdGhlIHJlcXVlc3QuXG4gICAgICogQHBhcmFtIHBhcmFtcyBBZGRpdGlvbmFsIHJlcXVlc3QgcGFyYW1ldGVyc1xuICAgICAqL1xuICAgIC8vIHt7YmFzZVVybH19L2FwaS9wdWJsaWMvdGFzay9zZWFyY2hcbiAgICBwdWJsaWMgZ2V0VGFza3MoZmlsdGVyUGFyYW06IEZpbHRlciwgcGFyYW1zPzogUGFyYW1zKTogT2JzZXJ2YWJsZTxQYWdlPFRhc2s+PiB7XG4gICAgICAgIGlmIChmaWx0ZXJQYXJhbS50eXBlICE9PSBGaWx0ZXJUeXBlLlRBU0spIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUHJvdmlkZWQgZmlsdGVyIGRvZXNuXFwndCBoYXZlIHR5cGUgVEFTSycpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbHRlclBhcmFtLmJvZHlDb250YWluc1F1ZXJ5KCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZ2V0VGFza3MgZW5kcG9pbnQgY2Fubm90IGJlIHF1ZXJpZWQgd2l0aCBmaWx0ZXJzIHRoYXQgY29udGFpbiB0aGUgXFwncXVlcnlcXCcgYXR0cmlidXRlJyk7XG4gICAgICAgIH1cblxuICAgICAgICBwYXJhbXMgPSBSZXNvdXJjZVByb3ZpZGVyLmNvbWJpbmVQYXJhbXMoZmlsdGVyUGFyYW0uZ2V0UmVxdWVzdFBhcmFtcygpLCBwYXJhbXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvdmlkZXIucG9zdCQoJ3B1YmxpYy90YXNrL3NlYXJjaCcsIHRoaXMuU0VSVkVSX1VSTCwgZmlsdGVyUGFyYW0uZ2V0UmVxdWVzdEJvZHkoKSwgcGFyYW1zKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5nZXRSZXNvdXJjZVBhZ2U8VGFzaz4ociwgJ3Rhc2tzJykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEb3dubG9hZCB0YXNrIGZpbGUgZmllbGQgdmFsdWVcbiAgICAgKiBHRVRcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay86aWQvZmlsZS86ZmllbGQgICAgICAgICAtIGZvciBmaWxlIGZpZWxkXG4gICAgLy8ge3tiYXNlVXJsfX0vYXBpL3Rhc2svOmlkL2ZpbGUvOmZpZWxkLzpuYW1lICAgLSBmb3IgZmlsZSBsaXN0IGZpZWxkXG4gICAgcHVibGljIGRvd25sb2FkRmlsZSh0YXNrSWQ6IHN0cmluZywgZmllbGRJZDogc3RyaW5nLCBuYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcm92aWRlclByb2dyZXNzIHwgQmxvYj4ge1xuICAgICAgICBjb25zdCB1cmwgPSAhIW5hbWUgPyBgcHVibGljL3Rhc2svJHt0YXNrSWR9L2ZpbGUvJHtmaWVsZElkfS8ke25hbWV9YCA6IGBwdWJsaWMvdGFzay8ke3Rhc2tJZH0vZmlsZS8ke2ZpZWxkSWR9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0QmxvYiQodXJsLCB0aGlzLlNFUlZFUl9VUkwpLnBpcGUoXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuRG93bmxvYWRQcm9ncmVzczpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZXNvdXJjZVByb3ZpZGVyLmdldFByb2dyZXNzKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmJvZHk7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmlsdGVyKHZhbHVlID0+ICEhdmFsdWUpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBsb2FkIGZpbGUgaW50byB0aGUgdGFza1xuICAgICAqIFBPU1RcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay86aWQvZmlsZS86ZmllbGQgICAgIC0gZm9yIGZpbGUgZmllbGRcbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay86aWQvZmlsZXMvOmZpZWxkICAgIC0gZm9yIGZpbGUgbGlzdCBmaWVsZFxuICAgIHB1YmxpYyB1cGxvYWRGaWxlKHRhc2tJZDogc3RyaW5nLCBmaWVsZElkOiBzdHJpbmcsIGJvZHk6IG9iamVjdCwgbXVsdGlwbGVGaWxlczogYm9vbGVhbik6XG4gICAgICAgIE9ic2VydmFibGU8UHJvdmlkZXJQcm9ncmVzcyB8IEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZT4ge1xuICAgICAgICBjb25zdCB1cmwgPSAhbXVsdGlwbGVGaWxlcyA/IGBwdWJsaWMvdGFzay8ke3Rhc2tJZH0vZmlsZS8ke2ZpZWxkSWR9YCA6IGBwdWJsaWMvdGFzay8ke3Rhc2tJZH0vZmlsZXMvJHtmaWVsZElkfWA7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLnBvc3RXaXRoRXZlbnQkPEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZT4odXJsLCB0aGlzLlNFUlZFUl9VUkwsIGJvZHkpLnBpcGUoXG4gICAgICAgICAgICBtYXAoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VQcm92aWRlci5nZXRQcm9ncmVzcyhldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5ib2R5O1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpbHRlcih2YWx1ZSA9PiAhIXZhbHVlKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZSBmaWxlIGZyb20gdGhlIHRhc2tcbiAgICAgKiBERUxFVEVcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlRmlsZSh0YXNrSWQ6IHN0cmluZywgZmllbGRJZDogc3RyaW5nLCBuYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxNZXNzYWdlUmVzb3VyY2U+IHtcbiAgICAgICAgY29uc3QgdXJsID0gISFuYW1lID8gYHB1YmxpYy90YXNrLyR7dGFza0lkfS9maWxlLyR7ZmllbGRJZH0vJHtuYW1lfWAgOiBgcHVibGljL3Rhc2svJHt0YXNrSWR9L2ZpbGUvJHtmaWVsZElkfWA7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmRlbGV0ZSQodXJsLCB0aGlzLlNFUlZFUl9VUkwpLnBpcGUoXG4gICAgICAgICAgICBtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgdW5kZWZpbmVkKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEb3dubG9hZCB0YXNrIGZpbGUgcHJldmlldyBmb3IgZmllbGQgdmFsdWVcbiAgICAgKiBHRVRcbiAgICAgKi9cbiAgICAvLyB7e2Jhc2VVcmx9fS9hcGkvdGFzay86aWQvZmlsZV9wcmV2aWV3LzpmaWVsZFxuICAgIHB1YmxpYyBkb3dubG9hZEZpbGVQcmV2aWV3KHRhc2tJZDogc3RyaW5nLCBmaWVsZElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFByb3ZpZGVyUHJvZ3Jlc3MgfCBCbG9iPiB7XG4gICAgICAgIGNvbnN0IHVybCA9ICdwdWJsaWMvdGFzay8nICsgdGFza0lkICsgJy9maWxlX3ByZXZpZXcvJyArIGZpZWxkSWQ7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldEJsb2IkKHVybCwgdGhpcy5TRVJWRVJfVVJMKS5waXBlKFxuICAgICAgICAgICAgbWFwKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLkRvd25sb2FkUHJvZ3Jlc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzb3VyY2VQcm92aWRlci5nZXRQcm9ncmVzcyhldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5SZXNwb25zZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudC5ib2R5O1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpbHRlcih2YWx1ZSA9PiAhIXZhbHVlKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==