@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
@@ -229,12 +229,12 @@ var CaseDataset = /** @class */ (function (_super) {
229
229
  return resolver.getIndex(datafield.fieldId, SearchIndex.BOOLEAN);
230
230
  case 'file':
231
231
  case 'fileList':
232
- return resolver.getIndex(datafield.fieldId, SearchIndex.FILE_NAME, this.isSelectedOperator(Equals) || this.isSelectedOperator(NotEquals));
232
+ return resolver.getIndex(datafield.fieldId, SearchIndex.FILE_NAME, this.isSelectedOperator(Equals) || this.isSelectedOperator(NotEquals) || this.isSelectedOperator(Substring));
233
233
  case 'user':
234
234
  case 'userList':
235
235
  return resolver.getIndex(datafield.fieldId, SearchIndex.USER_ID);
236
236
  default:
237
- return resolver.getIndex(datafield.fieldId, SearchIndex.FULLTEXT, this.isSelectedOperator(Equals) || this.isSelectedOperator(NotEquals));
237
+ return resolver.getIndex(datafield.fieldId, SearchIndex.FULLTEXT, this.isSelectedOperator(Equals) || this.isSelectedOperator(NotEquals) || this.isSelectedOperator(Substring));
238
238
  }
239
239
  };
240
240
  Object.defineProperty(CaseDataset.prototype, "inputPlaceholder", {
@@ -382,9 +382,6 @@ var CaseDataset = /** @class */ (function (_super) {
382
382
  }
383
383
  return value;
384
384
  };
385
- CaseDataset.prototype.isSelectedOperator = function (operatorClass) {
386
- return this.selectedOperator === this._operatorService.getOperator(operatorClass);
387
- };
388
385
  CaseDataset.prototype.serializeClass = function () {
389
386
  return Categories.CASE_DATASET;
390
387
  };
@@ -441,4 +438,4 @@ var CaseDataset = /** @class */ (function (_super) {
441
438
  return CaseDataset;
442
439
  }(Category));
443
440
  export { CaseDataset };
444
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1kYXRhc2V0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5ldGdyaWYvY29tcG9uZW50cy1jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlYXJjaC9tb2RlbHMvY2F0ZWdvcnkvY2FzZS9jYXNlLWRhdGFzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUdBLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUV4QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRXhELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sRUFBQyxlQUFlLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUdsRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFDLElBQUksRUFBQyxN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RDtJQUNMLENBQUM7SUFFUywyREFBcUMsR0FBL0M7UUFDSSxPQUFPLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBcGF1QixpQkFBSyxHQUFHLDhCQUE4QixDQUFDO0lBQzlDLDBCQUFjLEdBQUcsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuRCw4QkFBa0IsR0FBRyxXQUFXLENBQUM7SUFDbkMsNkJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7SUFrYWpFLGtCQUFDO0NBQUEsQUF2YUQsQ0FBaUMsUUFBUSxHQXVheEM7U0F2YVksV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T3BlcmF0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9vcGVyYXRvci1zZXJ2aWNlL29wZXJhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtPcGVyYXRvcn0gZnJvbSAnLi4vLi4vb3BlcmF0b3Ivb3BlcmF0b3InO1xuaW1wb3J0IHtRdWVyeX0gZnJvbSAnLi4vLi4vcXVlcnkvcXVlcnknO1xuaW1wb3J0IHtPcHRpb25hbERlcGVuZGVuY2llc30gZnJvbSAnLi4vLi4vLi4vY2F0ZWdvcnktZmFjdG9yeS9vcHRpb25hbC1kZXBlbmRlbmNpZXMnO1xuaW1wb3J0IHtTZWFyY2hJbnB1dFR5cGV9IGZyb20gJy4uL3NlYXJjaC1pbnB1dC10eXBlJztcbmltcG9ydCB7RGF0YWZpZWxkTWFwS2V5fSBmcm9tICcuLi8uLi9kYXRhZmllbGQtbWFwLWtleSc7XG5pbXBvcnQge1NlYXJjaEF1dG9jb21wbGV0ZU9wdGlvbn0gZnJvbSAnLi4vc2VhcmNoLWF1dG9jb21wbGV0ZS1vcHRpb24nO1xuaW1wb3J0IHtCb29sZWFuT3BlcmF0b3J9IGZyb20gJy4uLy4uL2Jvb2xlYW4tb3BlcmF0b3InO1xuaW1wb3J0IHtDYXNlUHJvY2Vzc30gZnJvbSAnLi9jYXNlLXByb2Nlc3MnO1xuaW1wb3J0IHtFcXVhbHNEYXRlfSBmcm9tICcuLi8uLi9vcGVyYXRvci9lcXVhbHMtZGF0ZSc7XG5pbXBvcnQge1N1YnN0cmluZ30gZnJvbSAnLi4vLi4vb3BlcmF0b3Ivc3Vic3RyaW5nJztcbmltcG9ydCB7RXF1YWxzRGF0ZVRpbWV9IGZyb20gJy4uLy4uL29wZXJhdG9yL2VxdWFscy1kYXRlLXRpbWUnO1xuaW1wb3J0IHtFcXVhbHN9IGZyb20gJy4uLy4uL29wZXJhdG9yL2VxdWFscyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtoYXNDb250ZW50fSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXR5L3BhZ2luYXRpb24vcGFnZS1oYXMtY29udGVudCc7XG5pbXBvcnQge0NhdGVnb3J5fSBmcm9tICcuLi9jYXRlZ29yeSc7XG5pbXBvcnQge05vdEVxdWFsc30gZnJvbSAnLi4vLi4vb3BlcmF0b3Ivbm90LWVxdWFscyc7XG5pbXBvcnQge01vcmVUaGFufSBmcm9tICcuLi8uLi9vcGVyYXRvci9tb3JlLXRoYW4nO1xuaW1wb3J0IHtMZXNzVGhhbn0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuJztcbmltcG9ydCB7SW5SYW5nZX0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvaW4tcmFuZ2UnO1xuaW1wb3J0IHtJc051bGx9IGZyb20gJy4uLy4uL29wZXJhdG9yL2lzLW51bGwnO1xuaW1wb3J0IHtMaWtlfSBmcm9tICcuLi8uLi9vcGVyYXRvci9saWtlJztcbmltcG9ydCB7Tm90RXF1YWxzRGF0ZX0gZnJvbSAnLi4vLi4vb3BlcmF0b3Ivbm90LWVxdWFscy1kYXRlJztcbmltcG9ydCB7TW9yZVRoYW5EYXRlfSBmcm9tICcuLi8uLi9vcGVyYXRvci9tb3JlLXRoYW4tZGF0ZSc7XG5pbXBvcnQge0xlc3NUaGFuRGF0ZX0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuLWRhdGUnO1xuaW1wb3J0IHtJblJhbmdlRGF0ZX0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvaW4tcmFuZ2UtZGF0ZSc7XG5pbXBvcnQge01vcmVUaGFuRGF0ZVRpbWV9IGZyb20gJy4uLy4uL29wZXJhdG9yL21vcmUtdGhhbi1kYXRlLXRpbWUnO1xuaW1wb3J0IHtMZXNzVGhhbkRhdGVUaW1lfSBmcm9tICcuLi8uLi9vcGVyYXRvci9sZXNzLXRoYW4tZGF0ZS10aW1lJztcbmltcG9ydCB7SW5SYW5nZURhdGVUaW1lfSBmcm9tICcuLi8uLi9vcGVyYXRvci9pbi1yYW5nZS1kYXRlLXRpbWUnO1xuaW1wb3J0IHtBdXRvY29tcGxldGVPcHRpb25zfSBmcm9tICcuLi9hdXRvY29tcGxldGUtb3B0aW9ucyc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25JbnB1dH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbi1pbnB1dCc7XG5pbXBvcnQge1NlYXJjaEluZGV4fSBmcm9tICcuLi8uLi9zZWFyY2gtaW5kZXgnO1xuaW1wb3J0IHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2F0ZWdvcmllc30gZnJvbSAnLi4vY2F0ZWdvcmllcyc7XG5pbXBvcnQge0Zvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgbW9tZW50LCB7TW9tZW50fSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHtDYXRlZ29yeU1ldGFkYXRhQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vLi4vcGVyc2lzdGFuY2UvZ2VuZXJhdG9yLW1ldGFkYXRhJztcbmltcG9ydCB7TW9yZVRoYW5FcXVhbH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbW9yZS10aGFuLWVxdWFsJztcbmltcG9ydCB7TGVzc1RoYW5FcXVhbH0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuLWVxdWFsJztcbmltcG9ydCB7TW9yZVRoYW5FcXVhbERhdGV9IGZyb20gJy4uLy4uL29wZXJhdG9yL21vcmUtdGhhbi1lcXVhbC1kYXRlJztcbmltcG9ydCB7TGVzc1RoYW5FcXVhbERhdGV9IGZyb20gJy4uLy4uL29wZXJhdG9yL2xlc3MtdGhhbi1lcXVhbC1kYXRlJztcbmltcG9ydCB7TW9yZVRoYW5FcXVhbERhdGVUaW1lfSBmcm9tICcuLi8uLi9vcGVyYXRvci9tb3JlLXRoYW4tZXF1YWwtZGF0ZS10aW1lJztcbmltcG9ydCB7TGVzc1RoYW5FcXVhbERhdGVUaW1lfSBmcm9tICcuLi8uLi9vcGVyYXRvci9sZXNzLXRoYW4tZXF1YWwtZGF0ZS10aW1lJztcbmltcG9ydCB7RmlsdGVyVGV4dFNlZ21lbnR9IGZyb20gJy4uLy4uL3BlcnNpc3RhbmNlL2ZpbHRlci10ZXh0LXNlZ21lbnQnO1xuaW1wb3J0IHtVc2VyQXV0b2NvbXBsZXRlfSBmcm9tICcuLi91c2VyLWF1dG9jb21wbGV0ZSc7XG5cbmludGVyZmFjZSBEYXRhZmllbGQge1xuICAgIG5ldElkZW50aWZpZXI6IHN0cmluZztcbiAgICBmaWVsZElkOiBzdHJpbmc7XG4gICAgZmllbGRUeXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBDYXNlRGF0YXNldCBleHRlbmRzIENhdGVnb3J5PERhdGFmaWVsZD4gaW1wbGVtZW50cyBBdXRvY29tcGxldGVPcHRpb25zIHtcblxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pMThuID0gJ3NlYXJjaC5jYXRlZ29yeS5jYXNlLmRhdGFzZXQnO1xuICAgIHByb3RlY3RlZCBzdGF0aWMgRElTQUJMRURfVFlQRVMgPSBbJ2J1dHRvbicsICd0YXNrUmVmJywgJ2Nhc2VSZWYnLCAnZmlsdGVyJ107XG4gICAgcHJvdGVjdGVkIHN0YXRpYyByZWFkb25seSBEQVRBRklFTERfTUVUQURBVEEgPSAnZGF0YWZpZWxkJztcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBVVRPQ09NUExFVEVfSUNPTiA9ICdhY2NvdW50X2NpcmNsZSc7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX0RBVEFGSUVMRF9JTlBVVDogQ29uZmlndXJhdGlvbklucHV0O1xuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzQ2F0ZWdvcnk6IENhc2VQcm9jZXNzO1xuXG4gICAgcHJvdGVjdGVkIF9jb25maWd1cmF0aW9uSW5wdXRzJDogQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbmZpZ3VyYXRpb25JbnB1dD4+O1xuXG4gICAgcHJvdGVjdGVkIF9kYXRhZmllbGRPcHRpb25zOiBNYXA8c3RyaW5nLCBBcnJheTxEYXRhZmllbGQ+PjtcblxuICAgIHByaXZhdGUgX2RhdGFmaWVsZE9wdGlvbnNJbml0aWFsaXplZCQ6IFJlcGxheVN1YmplY3Q8dm9pZD47XG4gICAgcHJpdmF0ZSBfYWxsb3dlZE5ldHNTdWI6IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIF91c2VyQXV0b2NvbXBsZXRlOiBVc2VyQXV0b2NvbXBsZXRlO1xuXG4gICAgcHVibGljIHN0YXRpYyBGaWVsZFR5cGVUb0lucHV0VHlwZShmaWVsZFR5cGU6IHN0cmluZyk6IFNlYXJjaElucHV0VHlwZSB7XG4gICAgICAgIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gU2VhcmNoSW5wdXRUeXBlLkRBVEU7XG4gICAgICAgICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFNlYXJjaElucHV0VHlwZS5EQVRFX1RJTUU7XG4gICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuTlVNQkVSO1xuICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFNlYXJjaElucHV0VHlwZS5CT09MRUFOO1xuICAgICAgICAgICAgY2FzZSAndXNlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFNlYXJjaElucHV0VHlwZS5BVVRPQ09NUExFVEU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuVEVYVDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKG9wZXJhdG9yczogT3BlcmF0b3JTZXJ2aWNlLCBsb2dnZXI6IExvZ2dlclNlcnZpY2UsIHByb3RlY3RlZCBfb3B0aW9uYWxEZXBlbmRlbmNpZXM6IE9wdGlvbmFsRGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIHN1cGVyKHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGAke0Nhc2VEYXRhc2V0Ll9pMThufS5uYW1lYCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGxvZ2dlcixcbiAgICAgICAgICAgIG9wZXJhdG9ycyk7XG5cbiAgICAgICAgdGhpcy5fcHJvY2Vzc0NhdGVnb3J5ID0gdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMuY2F0ZWdvcnlGYWN0b3J5LmdldChDYXNlUHJvY2VzcykgYXMgQ2FzZVByb2Nlc3M7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NDYXRlZ29yeS5zZWxlY3REZWZhdWx0T3BlcmF0b3IoKTtcblxuICAgICAgICB0aGlzLl9kYXRhZmllbGRPcHRpb25zID0gbmV3IE1hcDxzdHJpbmcsIEFycmF5PERhdGFmaWVsZD4+KCk7XG4gICAgICAgIHRoaXMuX3VzZXJBdXRvY29tcGxldGUgPSBuZXcgVXNlckF1dG9jb21wbGV0ZSh0aGlzLl9vcHRpb25hbERlcGVuZGVuY2llcyk7XG4gICAgICAgIHRoaXMuY3JlYXRlRGF0YWZpZWxkT3B0aW9ucygpO1xuXG4gICAgICAgIHRoaXMuX0RBVEFGSUVMRF9JTlBVVCA9IG5ldyBDb25maWd1cmF0aW9uSW5wdXQoXG4gICAgICAgICAgICBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFLFxuICAgICAgICAgICAgJ3NlYXJjaC5jYXRlZ29yeS5jYXNlLmRhdGFzZXQucGxhY2Vob2xkZXIuZmllbGQnLFxuICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnMsXG4gICAgICAgICAgICAobWFwS2V5cywgbmV3VmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFwS2V5cy5tYXAoc2VyaWFsaXplZE1hcEtleSA9PiBEYXRhZmllbGRNYXBLZXkucGFyc2Uoc2VyaWFsaXplZE1hcEtleSkpXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIobWFwS2V5ID0+IG1hcEtleS50aXRsZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgobmV3VmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9uSW5wdXRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8Q29uZmlndXJhdGlvbklucHV0Pj4oW3RoaXMuX0RBVEFGSUVMRF9JTlBVVF0pO1xuXG4gICAgICAgIHRoaXMuX0RBVEFGSUVMRF9JTlBVVC52YWx1ZUNoYW5nZXMkKCkuc3Vic2NyaWJlKG5ld1ZhbHVlID0+IHtcbiAgICAgICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9uSW5wdXRzJC5uZXh0KFt0aGlzLl9EQVRBRklFTERfSU5QVVRdKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQuZ2V0VmFsdWUoKS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jb25maWd1cmF0aW9uSW5wdXRzJC5uZXh0KFt0aGlzLl9EQVRBRklFTERfSU5QVVQsIHRoaXMuX09QRVJBVE9SX0lOUFVUXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9vcGVyYXRvckZvcm1Db250cm9sLnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fZGF0YWZpZWxkT3B0aW9uc0luaXRpYWxpemVkJC5jb21wbGV0ZSgpO1xuICAgICAgICBpZiAodGhpcy5fYWxsb3dlZE5ldHNTdWIgJiYgIXRoaXMuX2FsbG93ZWROZXRzU3ViLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5fYWxsb3dlZE5ldHNTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wcm9jZXNzQ2F0ZWdvcnkuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGdldCBjb25maWd1cmF0aW9uSW5wdXRzJCgpOiBPYnNlcnZhYmxlPEFycmF5PENvbmZpZ3VyYXRpb25JbnB1dD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbmZpZ3VyYXRpb25JbnB1dHMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaW5wdXRUeXBlKCk6IFNlYXJjaElucHV0VHlwZSB7XG4gICAgICAgIGlmICghdGhpcy5oYXNTZWxlY3RlZERhdGFmaWVsZHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW5wdXQgdHlwZSBvZiBhcmd1bWVudHMgY2Fubm90IGJlIGRldGVybWluZWQgYmVmb3JlIHNlbGVjdGluZyBhIGRhdGEgZmllbGQgZHVyaW5nIHRoZSBjb25maWd1cmF0aW9uLicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBDYXNlRGF0YXNldC5GaWVsZFR5cGVUb0lucHV0VHlwZSh0aGlzLl9zZWxlY3RlZERhdGFmaWVsZHNbMF0uZmllbGRUeXBlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYWxsb3dlZCBvcGVyYXRvcnMgYXJlIGRlcGVuZGFudCBvbiB0aGUgc2VsZWN0ZWQgZGF0YSBmaWVsZC5cbiAgICAgKlxuICAgICAqIEJld2FyZSB0aGF0IGlmIHlvdSB3YW50IHRvIGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlIGFsbG93ZWQgb3BlcmF0b3JzLCB0aGVuIHlvdSBtdXN0IGFsc28gdXBkYXRlIHRoZVxuICAgICAqIFtzZWxlY3REZWZhdWx0T3BlcmF0b3IoKV17QGxpbmsgQ2F0ZWdvcnkjc2VsZWN0RGVmYXVsdE9wZXJhdG9yfSBtZXRob2QsIHNvIHRoYXQgZGVmYXVsdCBvcGVyYXRvciBmb3IgZWFjaCBkYXRhIGZpZWxkIHR5cGUgbWF0Y2hlc1xuICAgICAqIHRoZSBkZWZhdWx0IG9wZXJhdG9yIG9mIHRoZSB7QGxpbmsgQ2FzZVNpbXBsZURhdGFzZXR9IHNlYXJjaCBjYXRlZ29yeS4gT3RoZXJ3aXNlIHRoZSB0cmFuc2l0aW9uIG9mIGhlYWRlciBzZWFyY2ggaW50byB0aGUgc2VhcmNoIEdVSVxuICAgICAqIHdvbid0IHdvcmsgcHJvcGVybHkuXG4gICAgICovXG4gICAgcHVibGljIGdldCBhbGxvd2VkT3BlcmF0b3JzKCk6IEFycmF5PE9wZXJhdG9yPGFueT4+IHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1NlbGVjdGVkRGF0YWZpZWxkcykge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAodGhpcy5fc2VsZWN0ZWREYXRhZmllbGRzWzBdLmZpZWxkVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE5vdEVxdWFscyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihNb3JlVGhhbiksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihNb3JlVGhhbkVxdWFsKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKExlc3NUaGFuKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKExlc3NUaGFuRXF1YWwpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSW5SYW5nZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihJc051bGwpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTm90RXF1YWxzKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlICd1c2VyJzpcbiAgICAgICAgICAgIGNhc2UgJ3VzZXJMaXN0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE5vdEVxdWFscyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihJc051bGwpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihFcXVhbHNEYXRlKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE5vdEVxdWFsc0RhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW5EYXRlKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE1vcmVUaGFuRXF1YWxEYXRlKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKExlc3NUaGFuRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbkVxdWFsRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihJblJhbmdlRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihJc051bGwpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGNhc2UgJ2RhdGVUaW1lJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzRGF0ZVRpbWUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW5EYXRlVGltZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihNb3JlVGhhbkVxdWFsRGF0ZVRpbWUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTGVzc1RoYW5EYXRlVGltZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbkVxdWFsRGF0ZVRpbWUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSW5SYW5nZURhdGVUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKElzTnVsbClcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoU3Vic3RyaW5nKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFscyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihOb3RFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKExpa2UpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIGBDYXNlRGF0YXNldGAgY2F0ZWdvcnkgaXMgbm90IGRpc3BsYXllZCBpbiBib2xkIGZvciBiZXR0ZXIgcmVhZGFiaWxpdHlcbiAgICAgKi9cbiAgICBnZXQgZGlzcGxheUJvbGQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1NlbGVjdGVkRGF0YWZpZWxkcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX0RBVEFGSUVMRF9JTlBVVC5pc09wdGlvblNlbGVjdGVkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgX3NlbGVjdGVkRGF0YWZpZWxkcygpOiBBcnJheTxEYXRhZmllbGQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnMuZ2V0KHRoaXMuX0RBVEFGSUVMRF9JTlBVVC5mb3JtQ29udHJvbC52YWx1ZS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0KCkge1xuICAgICAgICBzdXBlci5yZXNldCgpO1xuICAgICAgICB0aGlzLl9EQVRBRklFTERfSU5QVVQuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBkdXBsaWNhdGUoKTogQ2FzZURhdGFzZXQge1xuICAgICAgICByZXR1cm4gbmV3IENhc2VEYXRhc2V0KHRoaXMuX29wZXJhdG9yU2VydmljZSwgdGhpcy5fbG9nLCB0aGlzLl9vcHRpb25hbERlcGVuZGVuY2llcyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBlbGFzdGljS2V5d29yZHMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIGlmICghdGhpcy5oYXNTZWxlY3RlZERhdGFmaWVsZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZERhdGFmaWVsZHMubWFwKGRhdGFmaWVsZCA9PiB0aGlzLnJlc29sdmVFbGFzdGljS2V5d29yZChkYXRhZmllbGQpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlRWxhc3RpY0tleXdvcmQoZGF0YWZpZWxkOiBEYXRhZmllbGQpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCByZXNvbHZlciA9IHRoaXMuX29wdGlvbmFsRGVwZW5kZW5jaWVzLnNlYXJjaEluZGV4UmVzb2x2ZXI7XG4gICAgICAgIHN3aXRjaCAoZGF0YWZpZWxkLmZpZWxkVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXIuZ2V0SW5kZXgoZGF0YWZpZWxkLmZpZWxkSWQsIFNlYXJjaEluZGV4Lk5VTUJFUik7XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgIGNhc2UgJ2RhdGVUaW1lJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXIuZ2V0SW5kZXgoZGF0YWZpZWxkLmZpZWxkSWQsIFNlYXJjaEluZGV4LlRJTUVTVEFNUCk7XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXIuZ2V0SW5kZXgoZGF0YWZpZWxkLmZpZWxkSWQsIFNlYXJjaEluZGV4LkJPT0xFQU4pO1xuICAgICAgICAgICAgY2FzZSAnZmlsZSc6XG4gICAgICAgICAgICBjYXNlICdmaWxlTGlzdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5GSUxFX05BTUUsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKEVxdWFscykgfHwgdGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoTm90RXF1YWxzKSk7XG4gICAgICAgICAgICBjYXNlICd1c2VyJzpcbiAgICAgICAgICAgIGNhc2UgJ3VzZXJMaXN0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXIuZ2V0SW5kZXgoZGF0YWZpZWxkLmZpZWxkSWQsIFNlYXJjaEluZGV4LlVTRVJfSUQpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXIuZ2V0SW5kZXgoZGF0YWZpZWxkLmZpZWxkSWQsIFNlYXJjaEluZGV4LkZVTExURVhULFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihFcXVhbHMpIHx8IHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKE5vdEVxdWFscykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGlucHV0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1NlbGVjdGVkRGF0YWZpZWxkcykge1xuICAgICAgICAgICAgcmV0dXJuIGAke0Nhc2VEYXRhc2V0Ll9pMThufS5wbGFjZWhvbGRlci5maWVsZGA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke0Nhc2VEYXRhc2V0Ll9pMThufS5wbGFjZWhvbGRlci52YWx1ZWA7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBkYXRhZmllbGRPcHRpb25zSW5pdGlhbGl6ZWQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YWZpZWxkT3B0aW9uc0luaXRpYWxpemVkJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2VuZXJhdGVRdWVyeSh1c2VySW5wdXQ6IEFycmF5PHVua25vd24+KTogUXVlcnkge1xuICAgICAgICBsZXQgcXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3k7XG4gICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihJc051bGwpKSB7XG4gICAgICAgICAgICBxdWVyeUdlbmVyYXRpb25TdHJhdGVneSA9IChkLCBfKSA9PiB0aGlzLmlzTnVsbE9wZXJhdG9yUXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3koZCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pbnB1dFR5cGUgPT09IFNlYXJjaElucHV0VHlwZS5BVVRPQ09NUExFVEUpIHtcbiAgICAgICAgICAgIHF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5ID0gKGQsIHVpKSA9PiB0aGlzLnN0YW5kYXJkUXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3koZCwgdWlbMF0sIGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5ID0gKGQsIHVpKSA9PiB0aGlzLnN0YW5kYXJkUXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3koZCwgdWkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVlcmllcyA9IHRoaXMuX3NlbGVjdGVkRGF0YWZpZWxkcy5tYXAoZGF0YWZpZWxkID0+IHF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5KGRhdGFmaWVsZCwgdXNlcklucHV0KSk7XG4gICAgICAgIHJldHVybiBRdWVyeS5jb21iaW5lUXVlcmllcyhxdWVyaWVzLCBCb29sZWFuT3BlcmF0b3IuT1IpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzdGFuZGFyZFF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5KGRhdGFmaWVsZDogRGF0YWZpZWxkLCB1c2VySW5wdXQ6IEFycmF5PHVua25vd24+LCBlc2NhcGVJbnB1dCA9IHRydWUpOiBRdWVyeSB7XG4gICAgICAgIGNvbnN0IHZhbHVlUXVlcnkgPSB0aGlzLnNlbGVjdGVkT3BlcmF0b3IuY3JlYXRlUXVlcnkodGhpcy5lbGFzdGljS2V5d29yZHMsIHVzZXJJbnB1dCwgZXNjYXBlSW5wdXQpO1xuICAgICAgICBjb25zdCBuZXRRdWVyeSA9IHRoaXMuZ2VuZXJhdGVOZXRDb25zdHJhaW50KGRhdGFmaWVsZCk7XG4gICAgICAgIHJldHVybiBRdWVyeS5jb21iaW5lUXVlcmllcyhbdmFsdWVRdWVyeSwgbmV0UXVlcnldLCBCb29sZWFuT3BlcmF0b3IuQU5EKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNOdWxsT3BlcmF0b3JRdWVyeUdlbmVyYXRpb25TdHJhdGVneShkYXRhZmllbGQ6IERhdGFmaWVsZCk6IFF1ZXJ5IHtcbiAgICAgICAgY29uc3QgY29uc3RyYWludCA9IHRoaXMuZ2VuZXJhdGVOZXRDb25zdHJhaW50KGRhdGFmaWVsZCk7XG4gICAgICAgIHJldHVybiAodGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKElzTnVsbCkgYXMgSXNOdWxsKS5jcmVhdGVRdWVyeVdpdGhDb25zdHJhaW50KHRoaXMuZWxhc3RpY0tleXdvcmRzLCBjb25zdHJhaW50KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2VuZXJhdGVOZXRDb25zdHJhaW50KGRhdGFmaWVsZDogRGF0YWZpZWxkKTogUXVlcnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc0NhdGVnb3J5LmdlbmVyYXRlUHJlZGljYXRlKFtbZGF0YWZpZWxkLm5ldElkZW50aWZpZXJdXSkucXVlcnk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZURhdGFmaWVsZE9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnNJbml0aWFsaXplZCQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigxKTtcbiAgICAgICAgdGhpcy5fYWxsb3dlZE5ldHNTdWIgPSB0aGlzLl9vcHRpb25hbERlcGVuZGVuY2llcy5hbGxvd2VkTmV0c1NlcnZpY2UuYWxsb3dlZE5ldHMkLnN1YnNjcmliZShhbGxvd2VkTmV0cyA9PiB7XG4gICAgICAgICAgICBhbGxvd2VkTmV0cy5mb3JFYWNoKHBldHJpTmV0ID0+IHtcbiAgICAgICAgICAgICAgICBwZXRyaU5ldC5pbW1lZGlhdGVEYXRhXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoaW1tZWRpYXRlRGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW1tZWRpYXRlRGF0YS50aXRsZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgaW1tZWRpYXRlRGF0YS50aXRsZS50cmltKCkubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFDYXNlRGF0YXNldC5ESVNBQkxFRF9UWVBFUy5pbmNsdWRlcyhpbW1lZGlhdGVEYXRhLnR5cGUpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaChpbW1lZGlhdGVEYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0eXBlID0gaW1tZWRpYXRlRGF0YS50eXBlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3Igc2VhcmNoIHB1cnBvc2VzLCBlbnVtZXJhdGlvbiBhbmQgbXVsdGljaG9pY2UgbWFwcyBhcmUgZXF1aXZhbGVudCB0byB0aGVpciBzaW1wbGVyIGNvdW50ZXJwYXJ0c1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdlbnVtZXJhdGlvbl9tYXAnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICdlbnVtZXJhdGlvbic7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdtdWx0aWNob2ljZV9tYXAnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICdtdWx0aWNob2ljZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVG9EYXRhZmllbGRPcHRpb25zTWFwKERhdGFmaWVsZE1hcEtleS5zZXJpYWxpemVkRm9ybShpbW1lZGlhdGVEYXRhLnR5cGUsIGltbWVkaWF0ZURhdGEudGl0bGUpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0SWRlbnRpZmllcjogcGV0cmlOZXQuaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZElkOiBpbW1lZGlhdGVEYXRhLnN0cmluZ0lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkVHlwZTogaW1tZWRpYXRlRGF0YS50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9kYXRhZmllbGRPcHRpb25zSW5pdGlhbGl6ZWQkLm5leHQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZmlsdGVyT3B0aW9ucyh1c2VySW5wdXQ6IE9ic2VydmFibGU8c3RyaW5nIHwgU2VhcmNoQXV0b2NvbXBsZXRlT3B0aW9uPEFycmF5PHN0cmluZz4+Pik6XG4gICAgICAgIE9ic2VydmFibGU8QXJyYXk8U2VhcmNoQXV0b2NvbXBsZXRlT3B0aW9uPEFycmF5PHN0cmluZz4+Pj4ge1xuXG4gICAgICAgIGlmICghdGhpcy5oYXNTZWxlY3RlZERhdGFmaWVsZHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGNhdGVnb3J5IG11c3QgYmUgZnVsbHkgY29uZmlndXJlZCBiZWZvcmUgYXR0ZW1wdGluZyB0byBnZXQgYXV0b2NvbXBsZXRlIG9wdGlvbnMhJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRUeXBlICE9PSBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaWx0ZXIgb3B0aW9ucyBvZiBub24tYXV0b2NvbXBsZXRlIG9wZXJhbmRzJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fdXNlckF1dG9jb21wbGV0ZS5maWx0ZXJPcHRpb25zKHVzZXJJbnB1dCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdERhdGFmaWVsZHMoZGF0YWZpZWxkTWFwS2V5OiBzdHJpbmcsIHNlbGVjdERlZmF1bHRPcGVyYXRvciA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhZmllbGRPcHRpb25zLmhhcyhkYXRhZmllbGRNYXBLZXkpKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cud2FybihgVGhlIHByb3ZpZGVkICdkYXRhZmllbGRNYXBLZXknICgke2RhdGFmaWVsZE1hcEtleX0pIGRvZXMgbm90IGV4aXN0LmApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX0RBVEFGSUVMRF9JTlBVVC5mb3JtQ29udHJvbC5zZXRWYWx1ZShEYXRhZmllbGRNYXBLZXkucGFyc2UoZGF0YWZpZWxkTWFwS2V5KSk7XG4gICAgICAgIGlmIChzZWxlY3REZWZhdWx0T3BlcmF0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGVmYXVsdE9wZXJhdG9yKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgbmV3IGVudHJ5IG9yIHB1c2hlcyB2YWx1ZSBpbnRvIGFuIGV4aXN0aW5nIGVudHJ5LlxuICAgICAqIFdoZW4gYSBuZXcgZW50cnkgaXMgY3JlYXRlZCwgaXQgaXMgY3JlYXRlZCBhcyBhbiBBcnJheSBvZiBvbmUgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ga2V5IHdoZXJlIGluIHRoZSBtYXAgc2hvdWxkIHRoZSB2YWx1ZSBiZSBhZGRlZFxuICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdGhhdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIG1hcFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBhZGRUb0RhdGFmaWVsZE9wdGlvbnNNYXAoa2V5OiBzdHJpbmcsIHZhbHVlOiBEYXRhZmllbGQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGFmaWVsZE9wdGlvbnMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnMuZ2V0KGtleSkucHVzaCh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhZmllbGRPcHRpb25zLnNldChrZXksIFt2YWx1ZV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGlzT3BlcmFuZFZhbHVlU2VsZWN0ZWQobmV3VmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNPcGVyYXRvclNlbGVjdGVkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaW5wdXRUeXBlOiBTZWFyY2hJbnB1dFR5cGU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpbnB1dFR5cGUgPSB0aGlzLmlucHV0VHlwZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChpbnB1dFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLk5VTUJFUjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIG5ld1ZhbHVlID09PSAnbnVtYmVyJztcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLkJPT0xFQU46XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ2Jvb2xlYW4nO1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFOlxuICAgICAgICAgICAgICAgIHJldHVybiAhKCFuZXdWYWx1ZSB8fCB0eXBlb2YgbmV3VmFsdWUgPT09ICdzdHJpbmcnKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICEhbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIHRyYW5zZm9ybWF0aW9uIG9mIHRoZSBgRm9ybUNvbnRyb2xgIHZhbHVlIGJlZm9yZSBwYXNzaW5nIGl0IGludG8gdGhlIHNlbGVjdGVkIGBPcGVyYXRvcmAgZm9yIHF1ZXJ5IGdlbmVyYXRpb24uXG4gICAgICogSXQgaXMgbW9zdGx5IHVzZWZ1bCBvbmx5IGZvciBBdXRvY29tcGxldGVDYXRlZ29yaWVzLCB3aGVyZSB0aGUgc2VsZWN0ZWQgdmFsdWUgb2YgdGhlIEZvcm1Db250cm9sIGlzIGFuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgRm9ybUNvbnRyb2xWYWx1ZVxuICAgICAqIEByZXR1cm5zIElmIHRoZSBzZWxlY3RlZCBkYXRhIGZpZWxkIGhhcyBpbnB1dCB0eXBlIGBBVVRPQ09NUExFVEVgIHRoZW4gcmV0dXJucyB0aGUge0BsaW5rIFNlYXJjaEF1dG9jb21wbGV0ZU9wdGlvbn0gYHZhbHVlYFxuICAgICAqIGF0dHJpYnV0ZS4gT3RoZXJ3aXNlIHBlcmZvcm1zIGFuIGlkZW50aXR5IG9wZXJhdGlvbi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdHJhbnNmb3JtQ2F0ZWdvcnlWYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRUeXBlID09PSBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFKSB7XG4gICAgICAgICAgICByZXR1cm4gKHZhbHVlIGFzIFNlYXJjaEF1dG9jb21wbGV0ZU9wdGlvbjxBcnJheTxudW1iZXI+PikudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpc1NlbGVjdGVkT3BlcmF0b3Iob3BlcmF0b3JDbGFzczogVHlwZTxhbnk+KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkT3BlcmF0b3IgPT09IHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihvcGVyYXRvckNsYXNzKTtcbiAgICB9XG5cbiAgICBzZXJpYWxpemVDbGFzcygpOiBDYXRlZ29yaWVzIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIENhdGVnb3JpZXMuQ0FTRV9EQVRBU0VUO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXJpYWxpemVPcGVyYW5kVmFsdWUodmFsdWVGb3JtQ29udHJvbDogRm9ybUNvbnRyb2wpOiB1bmtub3duIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmlucHV0VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl91c2VyQXV0b2NvbXBsZXRlLnNlcmlhbGl6ZU9wZXJhbmRWYWx1ZSh2YWx1ZUZvcm1Db250cm9sKTtcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLkRBVEU6XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5EQVRFX1RJTUU6XG4gICAgICAgICAgICAgICAgcmV0dXJuICh2YWx1ZUZvcm1Db250cm9sLnZhbHVlIGFzIE1vbWVudCkudmFsdWVPZigpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuc2VyaWFsaXplT3BlcmFuZFZhbHVlKHZhbHVlRm9ybUNvbnRyb2wpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZU1ldGFkYXRhQ29uZmlndXJhdGlvbigpOiBDYXRlZ29yeU1ldGFkYXRhQ29uZmlndXJhdGlvbiB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHN1cGVyLmNyZWF0ZU1ldGFkYXRhQ29uZmlndXJhdGlvbigpO1xuICAgICAgICBjb25maWdbQ2FzZURhdGFzZXQuREFUQUZJRUxEX01FVEFEQVRBXSA9ICh0aGlzLl9EQVRBRklFTERfSU5QVVQuZm9ybUNvbnRyb2wudmFsdWUgYXMgRGF0YWZpZWxkTWFwS2V5KS50b1NlcmlhbGl6ZWRGb3JtKCk7XG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRDb25maWd1cmF0aW9uRnJvbU1ldGFkYXRhKGNvbmZpZ3VyYXRpb246IENhdGVnb3J5TWV0YWRhdGFDb25maWd1cmF0aW9uKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigxKTtcbiAgICAgICAgdGhpcy5kYXRhZmllbGRPcHRpb25zSW5pdGlhbGl6ZWQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXJpYWxpemVkTWFwS2V5ID0gY29uZmlndXJhdGlvbltDYXNlRGF0YXNldC5EQVRBRklFTERfTUVUQURBVEFdIGFzIHN0cmluZztcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0YWZpZWxkcyhzZXJpYWxpemVkTWFwS2V5LCBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0ZWREYXRhZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZWFyY2hlZCBkYXRhIGZpZWxkcyBjYW5ub3QgYmUgcmVzdG9yZWQgZnJvbSB0aGUgcHJvdmlkZWQgY29uZmlndXJhdGlvbiAoJHtzZXJpYWxpemVkTWFwS2V5XG4gICAgICAgICAgICAgICAgfSkuIE1ha2Ugc3VyZSwgdGhhdCB0aGUgY29ycmVjdCBhbGxvd2VkIG5ldHMgYXJlIHByb3ZpZGVkIGluIHRoaXMgdmlldy5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN1cGVyLmxvYWRDb25maWd1cmF0aW9uRnJvbU1ldGFkYXRhKGNvbmZpZ3VyYXRpb24pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzdWx0JC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgcmVzdWx0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZGVzZXJpYWxpemVPcGVyYW5kVmFsdWUodmFsdWU6IHVua25vd24pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuaW5wdXRUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5BVVRPQ09NUExFVEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3VzZXJBdXRvY29tcGxldGUuZGVzZXJpYWxpemVPcGVyYW5kVmFsdWUodmFsdWUgYXMgU2VhcmNoQXV0b2NvbXBsZXRlT3B0aW9uPEFycmF5PHN0cmluZz4+KTtcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLkRBVEU6XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5EQVRFX1RJTUU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKG1vbWVudCh2YWx1ZSBhcyBzdHJpbmcpKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmRlc2VyaWFsaXplT3BlcmFuZFZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVDb25maWd1cmF0aW9uRmlsdGVyVGV4dFNlZ21lbnRzKCk6IEFycmF5PEZpbHRlclRleHRTZWdtZW50PiB7XG4gICAgICAgIHJldHVybiBbe3NlZ21lbnQ6IHRoaXMuX2NvbmZpZ3VyYXRpb25JbnB1dHMkLnZhbHVlWzBdLmZvcm1Db250cm9sLnZhbHVlLnRleHQsIGJvbGQ6IHRydWV9XTtcbiAgICB9XG59XG4iXX0=
441
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1kYXRhc2V0LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5ldGdyaWYvY29tcG9uZW50cy1jb3JlLyIsInNvdXJjZXMiOlsibGliL3NlYXJjaC9tb2RlbHMvY2F0ZWdvcnkvY2FzZS9jYXNlLWRhdGFzZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUdBLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUV4QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRXhELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sRUFBQyxlQUFlLEVBQWMsRUFBRSxFQUFFLGFBQWEsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUdsRixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFDLElBQUksRUFBQyxN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QUMsT0FBTyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQWhhdUIsaUJBQUssR0FBRyw4QkFBOEIsQ0FBQztJQUM5QywwQkFBYyxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkQsOEJBQWtCLEdBQUcsV0FBVyxDQUFDO0lBQ25DLDZCQUFpQixHQUFHLGdCQUFnQixDQUFDO0lBOFpqRSxrQkFBQztDQUFBLEFBbmFELENBQWlDLFFBQVEsR0FtYXhDO1NBbmFZLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09wZXJhdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vb3BlcmF0b3Itc2VydmljZS9vcGVyYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7T3BlcmF0b3J9IGZyb20gJy4uLy4uL29wZXJhdG9yL29wZXJhdG9yJztcbmltcG9ydCB7UXVlcnl9IGZyb20gJy4uLy4uL3F1ZXJ5L3F1ZXJ5JztcbmltcG9ydCB7T3B0aW9uYWxEZXBlbmRlbmNpZXN9IGZyb20gJy4uLy4uLy4uL2NhdGVnb3J5LWZhY3Rvcnkvb3B0aW9uYWwtZGVwZW5kZW5jaWVzJztcbmltcG9ydCB7U2VhcmNoSW5wdXRUeXBlfSBmcm9tICcuLi9zZWFyY2gtaW5wdXQtdHlwZSc7XG5pbXBvcnQge0RhdGFmaWVsZE1hcEtleX0gZnJvbSAnLi4vLi4vZGF0YWZpZWxkLW1hcC1rZXknO1xuaW1wb3J0IHtTZWFyY2hBdXRvY29tcGxldGVPcHRpb259IGZyb20gJy4uL3NlYXJjaC1hdXRvY29tcGxldGUtb3B0aW9uJztcbmltcG9ydCB7Qm9vbGVhbk9wZXJhdG9yfSBmcm9tICcuLi8uLi9ib29sZWFuLW9wZXJhdG9yJztcbmltcG9ydCB7Q2FzZVByb2Nlc3N9IGZyb20gJy4vY2FzZS1wcm9jZXNzJztcbmltcG9ydCB7RXF1YWxzRGF0ZX0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvZXF1YWxzLWRhdGUnO1xuaW1wb3J0IHtTdWJzdHJpbmd9IGZyb20gJy4uLy4uL29wZXJhdG9yL3N1YnN0cmluZyc7XG5pbXBvcnQge0VxdWFsc0RhdGVUaW1lfSBmcm9tICcuLi8uLi9vcGVyYXRvci9lcXVhbHMtZGF0ZS10aW1lJztcbmltcG9ydCB7RXF1YWxzfSBmcm9tICcuLi8uLi9vcGVyYXRvci9lcXVhbHMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7aGFzQ29udGVudH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0eS9wYWdpbmF0aW9uL3BhZ2UtaGFzLWNvbnRlbnQnO1xuaW1wb3J0IHtDYXRlZ29yeX0gZnJvbSAnLi4vY2F0ZWdvcnknO1xuaW1wb3J0IHtOb3RFcXVhbHN9IGZyb20gJy4uLy4uL29wZXJhdG9yL25vdC1lcXVhbHMnO1xuaW1wb3J0IHtNb3JlVGhhbn0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbW9yZS10aGFuJztcbmltcG9ydCB7TGVzc1RoYW59IGZyb20gJy4uLy4uL29wZXJhdG9yL2xlc3MtdGhhbic7XG5pbXBvcnQge0luUmFuZ2V9IGZyb20gJy4uLy4uL29wZXJhdG9yL2luLXJhbmdlJztcbmltcG9ydCB7SXNOdWxsfSBmcm9tICcuLi8uLi9vcGVyYXRvci9pcy1udWxsJztcbmltcG9ydCB7TGlrZX0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGlrZSc7XG5pbXBvcnQge05vdEVxdWFsc0RhdGV9IGZyb20gJy4uLy4uL29wZXJhdG9yL25vdC1lcXVhbHMtZGF0ZSc7XG5pbXBvcnQge01vcmVUaGFuRGF0ZX0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbW9yZS10aGFuLWRhdGUnO1xuaW1wb3J0IHtMZXNzVGhhbkRhdGV9IGZyb20gJy4uLy4uL29wZXJhdG9yL2xlc3MtdGhhbi1kYXRlJztcbmltcG9ydCB7SW5SYW5nZURhdGV9IGZyb20gJy4uLy4uL29wZXJhdG9yL2luLXJhbmdlLWRhdGUnO1xuaW1wb3J0IHtNb3JlVGhhbkRhdGVUaW1lfSBmcm9tICcuLi8uLi9vcGVyYXRvci9tb3JlLXRoYW4tZGF0ZS10aW1lJztcbmltcG9ydCB7TGVzc1RoYW5EYXRlVGltZX0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuLWRhdGUtdGltZSc7XG5pbXBvcnQge0luUmFuZ2VEYXRlVGltZX0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvaW4tcmFuZ2UtZGF0ZS10aW1lJztcbmltcG9ydCB7QXV0b2NvbXBsZXRlT3B0aW9uc30gZnJvbSAnLi4vYXV0b2NvbXBsZXRlLW9wdGlvbnMnO1xuaW1wb3J0IHtDb25maWd1cmF0aW9uSW5wdXR9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb24taW5wdXQnO1xuaW1wb3J0IHtTZWFyY2hJbmRleH0gZnJvbSAnLi4vLi4vc2VhcmNoLWluZGV4JztcbmltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NhdGVnb3JpZXN9IGZyb20gJy4uL2NhdGVnb3JpZXMnO1xuaW1wb3J0IHtGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IG1vbWVudCwge01vbWVudH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7Q2F0ZWdvcnlNZXRhZGF0YUNvbmZpZ3VyYXRpb259IGZyb20gJy4uLy4uL3BlcnNpc3RhbmNlL2dlbmVyYXRvci1tZXRhZGF0YSc7XG5pbXBvcnQge01vcmVUaGFuRXF1YWx9IGZyb20gJy4uLy4uL29wZXJhdG9yL21vcmUtdGhhbi1lcXVhbCc7XG5pbXBvcnQge0xlc3NUaGFuRXF1YWx9IGZyb20gJy4uLy4uL29wZXJhdG9yL2xlc3MtdGhhbi1lcXVhbCc7XG5pbXBvcnQge01vcmVUaGFuRXF1YWxEYXRlfSBmcm9tICcuLi8uLi9vcGVyYXRvci9tb3JlLXRoYW4tZXF1YWwtZGF0ZSc7XG5pbXBvcnQge0xlc3NUaGFuRXF1YWxEYXRlfSBmcm9tICcuLi8uLi9vcGVyYXRvci9sZXNzLXRoYW4tZXF1YWwtZGF0ZSc7XG5pbXBvcnQge01vcmVUaGFuRXF1YWxEYXRlVGltZX0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbW9yZS10aGFuLWVxdWFsLWRhdGUtdGltZSc7XG5pbXBvcnQge0xlc3NUaGFuRXF1YWxEYXRlVGltZX0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvbGVzcy10aGFuLWVxdWFsLWRhdGUtdGltZSc7XG5pbXBvcnQge0ZpbHRlclRleHRTZWdtZW50fSBmcm9tICcuLi8uLi9wZXJzaXN0YW5jZS9maWx0ZXItdGV4dC1zZWdtZW50JztcbmltcG9ydCB7VXNlckF1dG9jb21wbGV0ZX0gZnJvbSAnLi4vdXNlci1hdXRvY29tcGxldGUnO1xuXG5pbnRlcmZhY2UgRGF0YWZpZWxkIHtcbiAgICBuZXRJZGVudGlmaWVyOiBzdHJpbmc7XG4gICAgZmllbGRJZDogc3RyaW5nO1xuICAgIGZpZWxkVHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQ2FzZURhdGFzZXQgZXh0ZW5kcyBDYXRlZ29yeTxEYXRhZmllbGQ+IGltcGxlbWVudHMgQXV0b2NvbXBsZXRlT3B0aW9ucyB7XG5cbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaTE4biA9ICdzZWFyY2guY2F0ZWdvcnkuY2FzZS5kYXRhc2V0JztcbiAgICBwcm90ZWN0ZWQgc3RhdGljIERJU0FCTEVEX1RZUEVTID0gWydidXR0b24nLCAndGFza1JlZicsICdjYXNlUmVmJywgJ2ZpbHRlciddO1xuICAgIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgREFUQUZJRUxEX01FVEFEQVRBID0gJ2RhdGFmaWVsZCc7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQVVUT0NPTVBMRVRFX0lDT04gPSAnYWNjb3VudF9jaXJjbGUnO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9EQVRBRklFTERfSU5QVVQ6IENvbmZpZ3VyYXRpb25JbnB1dDtcblxuICAgIHByb3RlY3RlZCBfcHJvY2Vzc0NhdGVnb3J5OiBDYXNlUHJvY2VzcztcblxuICAgIHByb3RlY3RlZCBfY29uZmlndXJhdGlvbklucHV0cyQ6IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb25maWd1cmF0aW9uSW5wdXQ+PjtcblxuICAgIHByb3RlY3RlZCBfZGF0YWZpZWxkT3B0aW9uczogTWFwPHN0cmluZywgQXJyYXk8RGF0YWZpZWxkPj47XG5cbiAgICBwcml2YXRlIF9kYXRhZmllbGRPcHRpb25zSW5pdGlhbGl6ZWQkOiBSZXBsYXlTdWJqZWN0PHZvaWQ+O1xuICAgIHByaXZhdGUgX2FsbG93ZWROZXRzU3ViOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBfdXNlckF1dG9jb21wbGV0ZTogVXNlckF1dG9jb21wbGV0ZTtcblxuICAgIHB1YmxpYyBzdGF0aWMgRmllbGRUeXBlVG9JbnB1dFR5cGUoZmllbGRUeXBlOiBzdHJpbmcpOiBTZWFyY2hJbnB1dFR5cGUge1xuICAgICAgICBzd2l0Y2ggKGZpZWxkVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFNlYXJjaElucHV0VHlwZS5EQVRFO1xuICAgICAgICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuREFURV9USU1FO1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gU2VhcmNoSW5wdXRUeXBlLk5VTUJFUjtcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuQk9PTEVBTjtcbiAgICAgICAgICAgIGNhc2UgJ3VzZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gU2VhcmNoSW5wdXRUeXBlLlRFWFQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihvcGVyYXRvcnM6IE9wZXJhdG9yU2VydmljZSwgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwcm90ZWN0ZWQgX29wdGlvbmFsRGVwZW5kZW5jaWVzOiBPcHRpb25hbERlcGVuZGVuY2llcykge1xuICAgICAgICBzdXBlcih1bmRlZmluZWQsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBgJHtDYXNlRGF0YXNldC5faTE4bn0ubmFtZWAsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBsb2dnZXIsXG4gICAgICAgICAgICBvcGVyYXRvcnMpO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NDYXRlZ29yeSA9IHRoaXMuX29wdGlvbmFsRGVwZW5kZW5jaWVzLmNhdGVnb3J5RmFjdG9yeS5nZXQoQ2FzZVByb2Nlc3MpIGFzIENhc2VQcm9jZXNzO1xuICAgICAgICB0aGlzLl9wcm9jZXNzQ2F0ZWdvcnkuc2VsZWN0RGVmYXVsdE9wZXJhdG9yKCk7XG5cbiAgICAgICAgdGhpcy5fZGF0YWZpZWxkT3B0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxEYXRhZmllbGQ+PigpO1xuICAgICAgICB0aGlzLl91c2VyQXV0b2NvbXBsZXRlID0gbmV3IFVzZXJBdXRvY29tcGxldGUodGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMpO1xuICAgICAgICB0aGlzLmNyZWF0ZURhdGFmaWVsZE9wdGlvbnMoKTtcblxuICAgICAgICB0aGlzLl9EQVRBRklFTERfSU5QVVQgPSBuZXcgQ29uZmlndXJhdGlvbklucHV0KFxuICAgICAgICAgICAgU2VhcmNoSW5wdXRUeXBlLkFVVE9DT01QTEVURSxcbiAgICAgICAgICAgICdzZWFyY2guY2F0ZWdvcnkuY2FzZS5kYXRhc2V0LnBsYWNlaG9sZGVyLmZpZWxkJyxcbiAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICB0aGlzLl9kYXRhZmllbGRPcHRpb25zLFxuICAgICAgICAgICAgKG1hcEtleXMsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcEtleXMubWFwKHNlcmlhbGl6ZWRNYXBLZXkgPT4gRGF0YWZpZWxkTWFwS2V5LnBhcnNlKHNlcmlhbGl6ZWRNYXBLZXkpKVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKG1hcEtleSA9PiBtYXBLZXkudGl0bGUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKG5ld1ZhbHVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbmZpZ3VyYXRpb25JbnB1dD4+KFt0aGlzLl9EQVRBRklFTERfSU5QVVRdKTtcblxuICAgICAgICB0aGlzLl9EQVRBRklFTERfSU5QVVQudmFsdWVDaGFuZ2VzJCgpLnN1YnNjcmliZShuZXdWYWx1ZSA9PiB7XG4gICAgICAgICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgbmV3VmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQubmV4dChbdGhpcy5fREFUQUZJRUxEX0lOUFVUXSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NvbmZpZ3VyYXRpb25JbnB1dHMkLmdldFZhbHVlKCkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29uZmlndXJhdGlvbklucHV0cyQubmV4dChbdGhpcy5fREFUQUZJRUxEX0lOUFVULCB0aGlzLl9PUEVSQVRPUl9JTlBVVF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JGb3JtQ29udHJvbC5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25JbnB1dHMkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnNJbml0aWFsaXplZCQuY29tcGxldGUoKTtcbiAgICAgICAgaWYgKHRoaXMuX2FsbG93ZWROZXRzU3ViICYmICF0aGlzLl9hbGxvd2VkTmV0c1N1Yi5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2FsbG93ZWROZXRzU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJvY2Vzc0NhdGVnb3J5LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBnZXQgY29uZmlndXJhdGlvbklucHV0cyQoKTogT2JzZXJ2YWJsZTxBcnJheTxDb25maWd1cmF0aW9uSW5wdXQ+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb25maWd1cmF0aW9uSW5wdXRzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlucHV0VHlwZSgpOiBTZWFyY2hJbnB1dFR5cGUge1xuICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0ZWREYXRhZmllbGRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IHR5cGUgb2YgYXJndW1lbnRzIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGJlZm9yZSBzZWxlY3RpbmcgYSBkYXRhIGZpZWxkIGR1cmluZyB0aGUgY29uZmlndXJhdGlvbi4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQ2FzZURhdGFzZXQuRmllbGRUeXBlVG9JbnB1dFR5cGUodGhpcy5fc2VsZWN0ZWREYXRhZmllbGRzWzBdLmZpZWxkVHlwZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGFsbG93ZWQgb3BlcmF0b3JzIGFyZSBkZXBlbmRhbnQgb24gdGhlIHNlbGVjdGVkIGRhdGEgZmllbGQuXG4gICAgICpcbiAgICAgKiBCZXdhcmUgdGhhdCBpZiB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBhbGxvd2VkIG9wZXJhdG9ycywgdGhlbiB5b3UgbXVzdCBhbHNvIHVwZGF0ZSB0aGVcbiAgICAgKiBbc2VsZWN0RGVmYXVsdE9wZXJhdG9yKClde0BsaW5rIENhdGVnb3J5I3NlbGVjdERlZmF1bHRPcGVyYXRvcn0gbWV0aG9kLCBzbyB0aGF0IGRlZmF1bHQgb3BlcmF0b3IgZm9yIGVhY2ggZGF0YSBmaWVsZCB0eXBlIG1hdGNoZXNcbiAgICAgKiB0aGUgZGVmYXVsdCBvcGVyYXRvciBvZiB0aGUge0BsaW5rIENhc2VTaW1wbGVEYXRhc2V0fSBzZWFyY2ggY2F0ZWdvcnkuIE90aGVyd2lzZSB0aGUgdHJhbnNpdGlvbiBvZiBoZWFkZXIgc2VhcmNoIGludG8gdGhlIHNlYXJjaCBHVUlcbiAgICAgKiB3b24ndCB3b3JrIHByb3Blcmx5LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYWxsb3dlZE9wZXJhdG9ycygpOiBBcnJheTxPcGVyYXRvcjxhbnk+PiB7XG4gICAgICAgIGlmICghdGhpcy5oYXNTZWxlY3RlZERhdGFmaWVsZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRoaXMuX3NlbGVjdGVkRGF0YWZpZWxkc1swXS5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFscyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihOb3RFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW4pLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW5FcXVhbCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbiksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbkVxdWFsKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEluUmFuZ2UpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE5vdEVxdWFscylcbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgY2FzZSAndXNlcic6XG4gICAgICAgICAgICBjYXNlICd1c2VyTGlzdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFscyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihOb3RFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihOb3RFcXVhbHNEYXRlKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE1vcmVUaGFuRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihNb3JlVGhhbkVxdWFsRGF0ZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMZXNzVGhhbkRhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTGVzc1RoYW5FcXVhbERhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSW5SYW5nZURhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFsc0RhdGVUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKE1vcmVUaGFuRGF0ZVRpbWUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTW9yZVRoYW5FcXVhbERhdGVUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKExlc3NUaGFuRGF0ZVRpbWUpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTGVzc1RoYW5FcXVhbERhdGVUaW1lKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEluUmFuZ2VEYXRlVGltZSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihJc051bGwpXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKFN1YnN0cmluZyksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihFcXVhbHMpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoTm90RXF1YWxzKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKElzTnVsbCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihMaWtlKVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBgQ2FzZURhdGFzZXRgIGNhdGVnb3J5IGlzIG5vdCBkaXNwbGF5ZWQgaW4gYm9sZCBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5XG4gICAgICovXG4gICAgZ2V0IGRpc3BsYXlCb2xkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNTZWxlY3RlZERhdGFmaWVsZHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9EQVRBRklFTERfSU5QVVQuaXNPcHRpb25TZWxlY3RlZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IF9zZWxlY3RlZERhdGFmaWVsZHMoKTogQXJyYXk8RGF0YWZpZWxkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhZmllbGRPcHRpb25zLmdldCh0aGlzLl9EQVRBRklFTERfSU5QVVQuZm9ybUNvbnRyb2wudmFsdWUudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNldCgpIHtcbiAgICAgICAgc3VwZXIucmVzZXQoKTtcbiAgICAgICAgdGhpcy5fREFUQUZJRUxEX0lOUFVULmNsZWFyKCk7XG4gICAgfVxuXG4gICAgZHVwbGljYXRlKCk6IENhc2VEYXRhc2V0IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXNlRGF0YXNldCh0aGlzLl9vcGVyYXRvclNlcnZpY2UsIHRoaXMuX2xvZywgdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZWxhc3RpY0tleXdvcmRzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0ZWREYXRhZmllbGRzKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWREYXRhZmllbGRzLm1hcChkYXRhZmllbGQgPT4gdGhpcy5yZXNvbHZlRWxhc3RpY0tleXdvcmQoZGF0YWZpZWxkKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzb2x2ZUVsYXN0aWNLZXl3b3JkKGRhdGFmaWVsZDogRGF0YWZpZWxkKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLl9vcHRpb25hbERlcGVuZGVuY2llcy5zZWFyY2hJbmRleFJlc29sdmVyO1xuICAgICAgICBzd2l0Y2ggKGRhdGFmaWVsZC5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5OVU1CRVIpO1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5USU1FU1RBTVApO1xuICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVyLmdldEluZGV4KGRhdGFmaWVsZC5maWVsZElkLCBTZWFyY2hJbmRleC5CT09MRUFOKTtcbiAgICAgICAgICAgIGNhc2UgJ2ZpbGUnOlxuICAgICAgICAgICAgY2FzZSAnZmlsZUxpc3QnOlxuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlci5nZXRJbmRleChkYXRhZmllbGQuZmllbGRJZCwgU2VhcmNoSW5kZXguRklMRV9OQU1FLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihFcXVhbHMpIHx8IHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKE5vdEVxdWFscykgfHwgdGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoU3Vic3RyaW5nKSk7XG4gICAgICAgICAgICBjYXNlICd1c2VyJzpcbiAgICAgICAgICAgIGNhc2UgJ3VzZXJMaXN0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXIuZ2V0SW5kZXgoZGF0YWZpZWxkLmZpZWxkSWQsIFNlYXJjaEluZGV4LlVTRVJfSUQpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZXIuZ2V0SW5kZXgoZGF0YWZpZWxkLmZpZWxkSWQsIFNlYXJjaEluZGV4LkZVTExURVhULFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihFcXVhbHMpIHx8IHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKE5vdEVxdWFscykgfHwgdGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoU3Vic3RyaW5nKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgaW5wdXRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuaGFzU2VsZWN0ZWREYXRhZmllbGRzKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7Q2FzZURhdGFzZXQuX2kxOG59LnBsYWNlaG9sZGVyLmZpZWxkYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCR7Q2FzZURhdGFzZXQuX2kxOG59LnBsYWNlaG9sZGVyLnZhbHVlYDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGRhdGFmaWVsZE9wdGlvbnNJbml0aWFsaXplZCQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhZmllbGRPcHRpb25zSW5pdGlhbGl6ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZW5lcmF0ZVF1ZXJ5KHVzZXJJbnB1dDogQXJyYXk8dW5rbm93bj4pOiBRdWVyeSB7XG4gICAgICAgIGxldCBxdWVyeUdlbmVyYXRpb25TdHJhdGVneTtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKElzTnVsbCkpIHtcbiAgICAgICAgICAgIHF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5ID0gKGQsIF8pID0+IHRoaXMuaXNOdWxsT3BlcmF0b3JRdWVyeUdlbmVyYXRpb25TdHJhdGVneShkKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlucHV0VHlwZSA9PT0gU2VhcmNoSW5wdXRUeXBlLkFVVE9DT01QTEVURSkge1xuICAgICAgICAgICAgcXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3kgPSAoZCwgdWkpID0+IHRoaXMuc3RhbmRhcmRRdWVyeUdlbmVyYXRpb25TdHJhdGVneShkLCB1aVswXSwgZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3kgPSAoZCwgdWkpID0+IHRoaXMuc3RhbmRhcmRRdWVyeUdlbmVyYXRpb25TdHJhdGVneShkLCB1aSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdWVyaWVzID0gdGhpcy5fc2VsZWN0ZWREYXRhZmllbGRzLm1hcChkYXRhZmllbGQgPT4gcXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3koZGF0YWZpZWxkLCB1c2VySW5wdXQpKTtcbiAgICAgICAgcmV0dXJuIFF1ZXJ5LmNvbWJpbmVRdWVyaWVzKHF1ZXJpZXMsIEJvb2xlYW5PcGVyYXRvci5PUik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0YW5kYXJkUXVlcnlHZW5lcmF0aW9uU3RyYXRlZ3koZGF0YWZpZWxkOiBEYXRhZmllbGQsIHVzZXJJbnB1dDogQXJyYXk8dW5rbm93bj4sIGVzY2FwZUlucHV0ID0gdHJ1ZSk6IFF1ZXJ5IHtcbiAgICAgICAgY29uc3QgdmFsdWVRdWVyeSA9IHRoaXMuc2VsZWN0ZWRPcGVyYXRvci5jcmVhdGVRdWVyeSh0aGlzLmVsYXN0aWNLZXl3b3JkcywgdXNlcklucHV0LCBlc2NhcGVJbnB1dCk7XG4gICAgICAgIGNvbnN0IG5ldFF1ZXJ5ID0gdGhpcy5nZW5lcmF0ZU5ldENvbnN0cmFpbnQoZGF0YWZpZWxkKTtcbiAgICAgICAgcmV0dXJuIFF1ZXJ5LmNvbWJpbmVRdWVyaWVzKFt2YWx1ZVF1ZXJ5LCBuZXRRdWVyeV0sIEJvb2xlYW5PcGVyYXRvci5BTkQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpc051bGxPcGVyYXRvclF1ZXJ5R2VuZXJhdGlvblN0cmF0ZWd5KGRhdGFmaWVsZDogRGF0YWZpZWxkKTogUXVlcnkge1xuICAgICAgICBjb25zdCBjb25zdHJhaW50ID0gdGhpcy5nZW5lcmF0ZU5ldENvbnN0cmFpbnQoZGF0YWZpZWxkKTtcbiAgICAgICAgcmV0dXJuICh0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoSXNOdWxsKSBhcyBJc051bGwpLmNyZWF0ZVF1ZXJ5V2l0aENvbnN0cmFpbnQodGhpcy5lbGFzdGljS2V5d29yZHMsIGNvbnN0cmFpbnQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZW5lcmF0ZU5ldENvbnN0cmFpbnQoZGF0YWZpZWxkOiBEYXRhZmllbGQpOiBRdWVyeSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzQ2F0ZWdvcnkuZ2VuZXJhdGVQcmVkaWNhdGUoW1tkYXRhZmllbGQubmV0SWRlbnRpZmllcl1dKS5xdWVyeTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlRGF0YWZpZWxkT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGF0YWZpZWxkT3B0aW9uc0luaXRpYWxpemVkJCA9IG5ldyBSZXBsYXlTdWJqZWN0PHZvaWQ+KDEpO1xuICAgICAgICB0aGlzLl9hbGxvd2VkTmV0c1N1YiA9IHRoaXMuX29wdGlvbmFsRGVwZW5kZW5jaWVzLmFsbG93ZWROZXRzU2VydmljZS5hbGxvd2VkTmV0cyQuc3Vic2NyaWJlKGFsbG93ZWROZXRzID0+IHtcbiAgICAgICAgICAgIGFsbG93ZWROZXRzLmZvckVhY2gocGV0cmlOZXQgPT4ge1xuICAgICAgICAgICAgICAgIHBldHJpTmV0LmltbWVkaWF0ZURhdGFcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihpbW1lZGlhdGVEYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbW1lZGlhdGVEYXRhLnRpdGxlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBpbW1lZGlhdGVEYXRhLnRpdGxlLnRyaW0oKS5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIUNhc2VEYXRhc2V0LkRJU0FCTEVEX1RZUEVTLmluY2x1ZGVzKGltbWVkaWF0ZURhdGEudHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKGltbWVkaWF0ZURhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHR5cGUgPSBpbW1lZGlhdGVEYXRhLnR5cGU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBzZWFyY2ggcHVycG9zZXMsIGVudW1lcmF0aW9uIGFuZCBtdWx0aWNob2ljZSBtYXBzIGFyZSBlcXVpdmFsZW50IHRvIHRoZWlyIHNpbXBsZXIgY291bnRlcnBhcnRzXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2VudW1lcmF0aW9uX21hcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gJ2VudW1lcmF0aW9uJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ211bHRpY2hvaWNlX21hcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gJ211bHRpY2hvaWNlJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRUb0RhdGFmaWVsZE9wdGlvbnNNYXAoRGF0YWZpZWxkTWFwS2V5LnNlcmlhbGl6ZWRGb3JtKGltbWVkaWF0ZURhdGEudHlwZSwgaW1tZWRpYXRlRGF0YS50aXRsZSksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRJZGVudGlmaWVyOiBwZXRyaU5ldC5pZGVudGlmaWVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkSWQ6IGltbWVkaWF0ZURhdGEuc3RyaW5nSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRUeXBlOiBpbW1lZGlhdGVEYXRhLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnNJbml0aWFsaXplZCQubmV4dCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmaWx0ZXJPcHRpb25zKHVzZXJJbnB1dDogT2JzZXJ2YWJsZTxzdHJpbmcgfCBTZWFyY2hBdXRvY29tcGxldGVPcHRpb248QXJyYXk8c3RyaW5nPj4+KTpcbiAgICAgICAgT2JzZXJ2YWJsZTxBcnJheTxTZWFyY2hBdXRvY29tcGxldGVPcHRpb248QXJyYXk8c3RyaW5nPj4+PiB7XG5cbiAgICAgICAgaWYgKCF0aGlzLmhhc1NlbGVjdGVkRGF0YWZpZWxkcykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgY2F0ZWdvcnkgbXVzdCBiZSBmdWxseSBjb25maWd1cmVkIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGdldCBhdXRvY29tcGxldGUgb3B0aW9ucyEnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbnB1dFR5cGUgIT09IFNlYXJjaElucHV0VHlwZS5BVVRPQ09NUExFVEUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGZpbHRlciBvcHRpb25zIG9mIG5vbi1hdXRvY29tcGxldGUgb3BlcmFuZHMnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl91c2VyQXV0b2NvbXBsZXRlLmZpbHRlck9wdGlvbnModXNlcklucHV0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0RGF0YWZpZWxkcyhkYXRhZmllbGRNYXBLZXk6IHN0cmluZywgc2VsZWN0RGVmYXVsdE9wZXJhdG9yID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2RhdGFmaWVsZE9wdGlvbnMuaGFzKGRhdGFmaWVsZE1hcEtleSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy53YXJuKGBUaGUgcHJvdmlkZWQgJ2RhdGFmaWVsZE1hcEtleScgKCR7ZGF0YWZpZWxkTWFwS2V5fSkgZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fREFUQUZJRUxEX0lOUFVULmZvcm1Db250cm9sLnNldFZhbHVlKERhdGFmaWVsZE1hcEtleS5wYXJzZShkYXRhZmllbGRNYXBLZXkpKTtcbiAgICAgICAgaWYgKHNlbGVjdERlZmF1bHRPcGVyYXRvcikge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3REZWZhdWx0T3BlcmF0b3IoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBuZXcgZW50cnkgb3IgcHVzaGVzIHZhbHVlIGludG8gYW4gZXhpc3RpbmcgZW50cnkuXG4gICAgICogV2hlbiBhIG5ldyBlbnRyeSBpcyBjcmVhdGVkLCBpdCBpcyBjcmVhdGVkIGFzIGFuIEFycmF5IG9mIG9uZSBlbGVtZW50LlxuICAgICAqIEBwYXJhbSBrZXkgd2hlcmUgaW4gdGhlIG1hcCBzaG91bGQgdGhlIHZhbHVlIGJlIGFkZGVkXG4gICAgICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0aGF0IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgbWFwXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFkZFRvRGF0YWZpZWxkT3B0aW9uc01hcChrZXk6IHN0cmluZywgdmFsdWU6IERhdGFmaWVsZCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZGF0YWZpZWxkT3B0aW9ucy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YWZpZWxkT3B0aW9ucy5nZXQoa2V5KS5wdXNoKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFmaWVsZE9wdGlvbnMuc2V0KGtleSwgW3ZhbHVlXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNPcGVyYW5kVmFsdWVTZWxlY3RlZChuZXdWYWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5pc09wZXJhdG9yU2VsZWN0ZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpbnB1dFR5cGU6IFNlYXJjaElucHV0VHlwZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlucHV0VHlwZSA9IHRoaXMuaW5wdXRUeXBlO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGlucHV0VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuTlVNQkVSOlxuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgbmV3VmFsdWUgPT09ICdudW1iZXInO1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuQk9PTEVBTjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIG5ld1ZhbHVlID09PSAnYm9vbGVhbic7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5BVVRPQ09NUExFVEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuICEoIW5ld1ZhbHVlIHx8IHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ3N0cmluZycpO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gISFuZXdWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgdHJhbnNmb3JtYXRpb24gb2YgdGhlIGBGb3JtQ29udHJvbGAgdmFsdWUgYmVmb3JlIHBhc3NpbmcgaXQgaW50byB0aGUgc2VsZWN0ZWQgYE9wZXJhdG9yYCBmb3IgcXVlcnkgZ2VuZXJhdGlvbi5cbiAgICAgKiBJdCBpcyBtb3N0bHkgdXNlZnVsIG9ubHkgZm9yIEF1dG9jb21wbGV0ZUNhdGVnb3JpZXMsIHdoZXJlIHRoZSBzZWxlY3RlZCB2YWx1ZSBvZiB0aGUgRm9ybUNvbnRyb2wgaXMgYW4gb2JqZWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIHRoZSBGb3JtQ29udHJvbFZhbHVlXG4gICAgICogQHJldHVybnMgSWYgdGhlIHNlbGVjdGVkIGRhdGEgZmllbGQgaGFzIGlucHV0IHR5cGUgYEFVVE9DT01QTEVURWAgdGhlbiByZXR1cm5zIHRoZSB7QGxpbmsgU2VhcmNoQXV0b2NvbXBsZXRlT3B0aW9ufSBgdmFsdWVgXG4gICAgICogYXR0cmlidXRlLiBPdGhlcndpc2UgcGVyZm9ybXMgYW4gaWRlbnRpdHkgb3BlcmF0aW9uLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCB0cmFuc2Zvcm1DYXRlZ29yeVZhbHVlKHZhbHVlOiBhbnkpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5pbnB1dFR5cGUgPT09IFNlYXJjaElucHV0VHlwZS5BVVRPQ09NUExFVEUpIHtcbiAgICAgICAgICAgIHJldHVybiAodmFsdWUgYXMgU2VhcmNoQXV0b2NvbXBsZXRlT3B0aW9uPEFycmF5PG51bWJlcj4+KS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgc2VyaWFsaXplQ2xhc3MoKTogQ2F0ZWdvcmllcyB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBDYXRlZ29yaWVzLkNBU0VfREFUQVNFVDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2VyaWFsaXplT3BlcmFuZFZhbHVlKHZhbHVlRm9ybUNvbnRyb2w6IEZvcm1Db250cm9sKTogdW5rbm93biB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pbnB1dFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoSW5wdXRUeXBlLkFVVE9DT01QTEVURTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdXNlckF1dG9jb21wbGV0ZS5zZXJpYWxpemVPcGVyYW5kVmFsdWUodmFsdWVGb3JtQ29udHJvbCk7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5EQVRFOlxuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuREFURV9USU1FOlxuICAgICAgICAgICAgICAgIHJldHVybiAodmFsdWVGb3JtQ29udHJvbC52YWx1ZSBhcyBNb21lbnQpLnZhbHVlT2YoKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLnNlcmlhbGl6ZU9wZXJhbmRWYWx1ZSh2YWx1ZUZvcm1Db250cm9sKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBjcmVhdGVNZXRhZGF0YUNvbmZpZ3VyYXRpb24oKTogQ2F0ZWdvcnlNZXRhZGF0YUNvbmZpZ3VyYXRpb24ge1xuICAgICAgICBjb25zdCBjb25maWcgPSBzdXBlci5jcmVhdGVNZXRhZGF0YUNvbmZpZ3VyYXRpb24oKTtcbiAgICAgICAgY29uZmlnW0Nhc2VEYXRhc2V0LkRBVEFGSUVMRF9NRVRBREFUQV0gPSAodGhpcy5fREFUQUZJRUxEX0lOUFVULmZvcm1Db250cm9sLnZhbHVlIGFzIERhdGFmaWVsZE1hcEtleSkudG9TZXJpYWxpemVkRm9ybSgpO1xuICAgICAgICByZXR1cm4gY29uZmlnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkQ29uZmlndXJhdGlvbkZyb21NZXRhZGF0YShjb25maWd1cmF0aW9uOiBDYXRlZ29yeU1ldGFkYXRhQ29uZmlndXJhdGlvbik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCByZXN1bHQkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XG4gICAgICAgIHRoaXMuZGF0YWZpZWxkT3B0aW9uc0luaXRpYWxpemVkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VyaWFsaXplZE1hcEtleSA9IGNvbmZpZ3VyYXRpb25bQ2FzZURhdGFzZXQuREFUQUZJRUxEX01FVEFEQVRBXSBhcyBzdHJpbmc7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdERhdGFmaWVsZHMoc2VyaWFsaXplZE1hcEtleSwgZmFsc2UpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmhhc1NlbGVjdGVkRGF0YWZpZWxkcykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2VhcmNoZWQgZGF0YSBmaWVsZHMgY2Fubm90IGJlIHJlc3RvcmVkIGZyb20gdGhlIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb24gKCR7c2VyaWFsaXplZE1hcEtleVxuICAgICAgICAgICAgICAgIH0pLiBNYWtlIHN1cmUsIHRoYXQgdGhlIGNvcnJlY3QgYWxsb3dlZCBuZXRzIGFyZSBwcm92aWRlZCBpbiB0aGlzIHZpZXcuYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdXBlci5sb2FkQ29uZmlndXJhdGlvbkZyb21NZXRhZGF0YShjb25maWd1cmF0aW9uKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdCQubmV4dCgpO1xuICAgICAgICAgICAgICAgIHJlc3VsdCQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGRlc2VyaWFsaXplT3BlcmFuZFZhbHVlKHZhbHVlOiB1bmtub3duKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmlucHV0VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuQVVUT0NPTVBMRVRFOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl91c2VyQXV0b2NvbXBsZXRlLmRlc2VyaWFsaXplT3BlcmFuZFZhbHVlKHZhbHVlIGFzIFNlYXJjaEF1dG9jb21wbGV0ZU9wdGlvbjxBcnJheTxzdHJpbmc+Pik7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaElucHV0VHlwZS5EQVRFOlxuICAgICAgICAgICAgY2FzZSBTZWFyY2hJbnB1dFR5cGUuREFURV9USU1FOlxuICAgICAgICAgICAgICAgIHJldHVybiBvZihtb21lbnQodmFsdWUgYXMgc3RyaW5nKSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5kZXNlcmlhbGl6ZU9wZXJhbmRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlQ29uZmlndXJhdGlvbkZpbHRlclRleHRTZWdtZW50cygpOiBBcnJheTxGaWx0ZXJUZXh0U2VnbWVudD4ge1xuICAgICAgICByZXR1cm4gW3tzZWdtZW50OiB0aGlzLl9jb25maWd1cmF0aW9uSW5wdXRzJC52YWx1ZVswXS5mb3JtQ29udHJvbC52YWx1ZS50ZXh0LCBib2xkOiB0cnVlfV07XG4gICAgfVxufVxuIl19
@@ -65,14 +65,14 @@ var CaseSimpleDataset = /** @class */ (function (_super) {
65
65
  break;
66
66
  case 'file':
67
67
  case 'fileList':
68
- this._elasticKeyword = resolver.getIndex(this._fieldId, SearchIndex.FILE_NAME);
68
+ this._elasticKeyword = resolver.getIndex(this._fieldId, SearchIndex.FILE_NAME, this.isSelectedOperator(Substring));
69
69
  break;
70
70
  case 'user':
71
71
  case 'userList':
72
72
  this._elasticKeyword = resolver.getIndex(this._fieldId, SearchIndex.USER_ID);
73
73
  break;
74
74
  default:
75
- this._elasticKeyword = resolver.getIndex(this._fieldId, SearchIndex.FULLTEXT);
75
+ this._elasticKeyword = resolver.getIndex(this._fieldId, SearchIndex.FULLTEXT, this.isSelectedOperator(Substring));
76
76
  }
77
77
  };
78
78
  Object.defineProperty(CaseSimpleDataset.prototype, "elasticKeywords", {
@@ -150,4 +150,4 @@ var CaseSimpleDataset = /** @class */ (function (_super) {
150
150
  return CaseSimpleDataset;
151
151
  }(NoConfigurationCategory));
152
152
  export { CaseSimpleDataset };
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1zaW1wbGUtZGF0YXNldC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZXRncmlmL2NvbXBvbmVudHMtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zZWFyY2gvbW9kZWxzL2NhdGVnb3J5L2Nhc2UvY2FzZS1zaW1wbGUtZGF0YXNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRXhDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJekM7Ozs7Ozs7OztHQVNHO0FBQ0g7SUFBdUMscUNBQStCO0lBV2xFLDJCQUFZLFNBQTBCLEVBQzFCLE1BQXFCLEVBQ1gscUJBQTJDO1FBRmpFLFlBR0ksa0JBQU0sU0FBUyxFQUNYLFNBQVMsRUFDTixpQkFBaUIsQ0FBQyxLQUFLLFVBQU8sRUFDakMsU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLENBQUMsU0FHakI7UUFUcUIsMkJBQXFCLEdBQXJCLHFC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QztRQUN0RixJQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxVQUFBLEVBQUUsSUFBSSxPQUFBLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBckQsQ0FBcUQsQ0FBQyxFQUNyRixlQUFlLENBQUMsRUFBRSxDQUNyQixDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsMENBQWMsR0FBZDtRQUNJLE9BQU8sVUFBVSxDQUFDLG1CQUFtQixDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNILDBDQUFjLEdBQWQ7UUFDSSxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsNENBQWdCLEdBQWhCLFVBQWlCLFFBQW1DO1FBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBMUl1Qix1QkFBSyxHQUFHLDhCQUE4QixDQUFDO0lBMkluRSx3QkFBQztDQUFBLEFBN0lELENBQXVDLHVCQUF1QixHQTZJN0Q7U0E3SVksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPcGVyYXRvclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL29wZXJhdG9yLXNlcnZpY2Uvb3BlcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge1F1ZXJ5fSBmcm9tICcuLi8uLi9xdWVyeS9xdWVyeSc7XG5pbXBvcnQge09wZXJhdG9yfSBmcm9tICcuLi8uLi9vcGVyYXRvci9vcGVyYXRvcic7XG5pbXBvcnQge0VxdWFsc30gZnJvbSAnLi4vLi4vb3BlcmF0b3IvZXF1YWxzJztcbmltcG9ydCB7RXF1YWxzRGF0ZX0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvZXF1YWxzLWRhdGUnO1xuaW1wb3J0IHtFcXVhbHNEYXRlVGltZX0gZnJvbSAnLi4vLi4vb3BlcmF0b3IvZXF1YWxzLWRhdGUtdGltZSc7XG5pbXBvcnQge1N1YnN0cmluZ30gZnJvbSAnLi4vLi4vb3BlcmF0b3Ivc3Vic3RyaW5nJztcbmltcG9ydCB7Q2FzZVByb2Nlc3N9IGZyb20gJy4vY2FzZS1wcm9jZXNzJztcbmltcG9ydCB7T3B0aW9uYWxEZXBlbmRlbmNpZXN9IGZyb20gJy4uLy4uLy4uL2NhdGVnb3J5LWZhY3Rvcnkvb3B0aW9uYWwtZGVwZW5kZW5jaWVzJztcbmltcG9ydCB7Qm9vbGVhbk9wZXJhdG9yfSBmcm9tICcuLi8uLi9ib29sZWFuLW9wZXJhdG9yJztcbmltcG9ydCB7Tm9Db25maWd1cmF0aW9uQ2F0ZWdvcnl9IGZyb20gJy4uL25vLWNvbmZpZ3VyYXRpb24tY2F0ZWdvcnknO1xuaW1wb3J0IHtDYXNlRGF0YXNldH0gZnJvbSAnLi9jYXNlLWRhdGFzZXQnO1xuaW1wb3J0IHtEYXRhZmllbGRNYXBLZXl9IGZyb20gJy4uLy4uL2RhdGFmaWVsZC1tYXAta2V5JztcbmltcG9ydCB7U2VhcmNoSW5kZXh9IGZyb20gJy4uLy4uL3NlYXJjaC1pbmRleCc7XG5pbXBvcnQge0NhdGVnb3JpZXN9IGZyb20gJy4uL2NhdGVnb3JpZXMnO1xuaW1wb3J0IHtDYXRlZ29yeUdlbmVyYXRvck1ldGFkYXRhfSBmcm9tICcuLi8uLi9wZXJzaXN0YW5jZS9nZW5lcmF0b3ItbWV0YWRhdGEnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGFpbXMgdG8gYmUgYSBzaW1wbGVyIG1vcmUgbGltaXRlZCB2ZXJzaW9uIG9mIHRoZSB7QGxpbmsgQ2FzZURhdGFzZXR9IHtAbGluayBDYXRlZ29yeX0gaW1wbGVtZW50YXRpb24uXG4gKlxuICogSXQgY2FuIG9ubHkgZ2VuZXJhdGUgXCJlcXVhbGl0eVwiIHF1ZXJpZXMgZm9yIGEgc2luZ2xlIGZpZWxkLiBUaGUgY2F0ZWdvcnkgbXVzdCBiZSBjb25maWd1cmVkIGJlZm9yZSBpdCBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBxdWVyaWVzLlxuICpcbiAqIFRoaXMgY2F0ZWdvcnkgY2Fubm90IGJlIHNlcmlhbGl6ZWQuIElmIHlvdSB3YW50IHRvIHByZXNlcnZlIHRoaXMgY2F0ZWdvcnkncyBzdGF0ZSBjb252ZXJ0IGl0IHRvIHtAbGluayBDYXNlRGF0YXNldH1cbiAqIHdpdGggdGhlIFt0cmFuc2Zvcm1Ub0Nhc2VEYXRhc2V0KClde0BsaW5rIENhc2VTaW1wbGVEYXRhc2V0I3RyYW5zZm9ybVRvQ2FzZURhdGFzZXR9IG1ldGhvZCBhbmQgc2VyaWFsaXplIHRoZSByZXN1bHQuXG4gKlxuICogU2VlIFtjb25maWd1cmVde0BsaW5rIENhc2VTaW1wbGVEYXRhc2V0I2NvbmZpZ3VyZX0gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBDYXNlU2ltcGxlRGF0YXNldCBleHRlbmRzIE5vQ29uZmlndXJhdGlvbkNhdGVnb3J5PHN0cmluZz4ge1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2kxOG4gPSAnc2VhcmNoLmNhdGVnb3J5LmNhc2UuZGF0YXNldCc7XG5cbiAgICBwcm90ZWN0ZWQgX2ZpZWxkSWQ6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX2ZpZWxkVHlwZTogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfbmV0SWRlbnRpZmllcnM6IEFycmF5PHN0cmluZz47XG4gICAgcHJvdGVjdGVkIF9lbGFzdGljS2V5d29yZDogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9wcm9jZXNzQ2F0ZWdvcnk6IENhc2VQcm9jZXNzO1xuXG4gICAgY29uc3RydWN0b3Iob3BlcmF0b3JzOiBPcGVyYXRvclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfb3B0aW9uYWxEZXBlbmRlbmNpZXM6IE9wdGlvbmFsRGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIHN1cGVyKHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGAke0Nhc2VTaW1wbGVEYXRhc2V0Ll9pMThufS5uYW1lYCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGxvZ2dlcixcbiAgICAgICAgICAgIG9wZXJhdG9ycyk7XG5cbiAgICAgICAgdGhpcy5fcHJvY2Vzc0NhdGVnb3J5ID0gX29wdGlvbmFsRGVwZW5kZW5jaWVzLmNhdGVnb3J5RmFjdG9yeS5nZXRXaXRoRGVmYXVsdE9wZXJhdG9yKENhc2VQcm9jZXNzKSBhcyBDYXNlUHJvY2VzcztcbiAgICB9XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBzdXBlci5kZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NDYXRlZ29yeS5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgZ2V0IGlucHV0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25maWd1cmUoZmllbGRJZDogc3RyaW5nLCBmaWVsZFR5cGU6IHN0cmluZywgbmV0SWRlbnRpZmllcnM6IEFycmF5PHN0cmluZz4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFmaWVsZElkIHx8ICFmaWVsZFR5cGUgfHwgIW5ldElkZW50aWZpZXJzIHx8IG5ldElkZW50aWZpZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdDYXNlU2ltcGxlRGF0YXNldCBtdXN0IGJlIGNvbmZpZ3VyZWQgd2l0aCBkZWZpbmVkIHZhbHVlcyBhbmQgYSBub24tZW1wdHkgYXJyYXknKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9maWVsZElkID0gZmllbGRJZDtcbiAgICAgICAgdGhpcy5fZmllbGRUeXBlID0gZmllbGRUeXBlO1xuICAgICAgICB0aGlzLl9uZXRJZGVudGlmaWVycyA9IG5ldElkZW50aWZpZXJzO1xuICAgICAgICB0aGlzLnJlc29sdmVFbGFzdGljS2V5d29yZCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNvbHZlRWxhc3RpY0tleXdvcmQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMuc2VhcmNoSW5kZXhSZXNvbHZlcjtcbiAgICAgICAgc3dpdGNoICh0aGlzLl9maWVsZFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5fZWxhc3RpY0tleXdvcmQgPSByZXNvbHZlci5nZXRJbmRleCh0aGlzLl9maWVsZElkLCBTZWFyY2hJbmRleC5OVU1CRVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5fZWxhc3RpY0tleXdvcmQgPSByZXNvbHZlci5nZXRJbmRleCh0aGlzLl9maWVsZElkLCBTZWFyY2hJbmRleC5USU1FU1RBTVApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgdGhpcy5fZWxhc3RpY0tleXdvcmQgPSByZXNvbHZlci5nZXRJbmRleCh0aGlzLl9maWVsZElkLCBTZWFyY2hJbmRleC5CT09MRUFOKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZpbGUnOlxuICAgICAgICAgICAgY2FzZSAnZmlsZUxpc3QnOlxuICAgICAgICAgICAgICAgIHRoaXMuX2VsYXN0aWNLZXl3b3JkID0gcmVzb2x2ZXIuZ2V0SW5kZXgodGhpcy5fZmllbGRJZCwgU2VhcmNoSW5kZXguRklMRV9OQU1FKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3VzZXInOlxuICAgICAgICAgICAgY2FzZSAndXNlckxpc3QnOlxuICAgICAgICAgICAgICAgIHRoaXMuX2VsYXN0aWNLZXl3b3JkID0gcmVzb2x2ZXIuZ2V0SW5kZXgodGhpcy5fZmllbGRJZCwgU2VhcmNoSW5kZXguVVNFUl9JRCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuX2VsYXN0aWNLZXl3b3JkID0gcmVzb2x2ZXIuZ2V0SW5kZXgodGhpcy5fZmllbGRJZCwgU2VhcmNoSW5kZXguRlVMTFRFWFQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBlbGFzdGljS2V5d29yZHMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIGlmICghdGhpcy5fZmllbGRJZCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFt0aGlzLl9lbGFzdGljS2V5d29yZF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkT3BlcmF0b3IoKTogT3BlcmF0b3I8YW55PiB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5fZmllbGRUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzKTtcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzKTtcbiAgICAgICAgICAgIGNhc2UgJ3VzZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzKTtcbiAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoRXF1YWxzRGF0ZSk7XG4gICAgICAgICAgICBjYXNlICdkYXRlVGltZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihFcXVhbHNEYXRlVGltZSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vcGVyYXRvclNlcnZpY2UuZ2V0T3BlcmF0b3IoU3Vic3RyaW5nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGR1cGxpY2F0ZSgpOiBDYXNlU2ltcGxlRGF0YXNldCB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FzZVNpbXBsZURhdGFzZXQodGhpcy5fb3BlcmF0b3JTZXJ2aWNlLCB0aGlzLl9sb2csIHRoaXMuX29wdGlvbmFsRGVwZW5kZW5jaWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEge0BsaW5rIENhc2VEYXRhc2V0fSBpbnN0YW5jZSBhbmQgY29uZmlndXJlcyBpdCBzbywgdGhhdCB0aGUgcXVlcnkgaXQgZ2VuZXJhdGVzIHRhcmdldHNcbiAgICAgKiB0aGUgc2VsZWN0ZWQgZmllbGQsIHVzZXMgdGhlIGRlZmF1bHQgb3BlcmF0b3IgYW5kIGl0cyBvcGVyYW5kcyBhcmUgd2hhdCB0aGUgdXNlciBwcm92aWRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWVsZFR5cGUgdGhlIHR5cGUgb2YgdGhlIGZpZWxkIHRoYXQgc2hvdWxkIGJlIHRhcmdldGVkIGJ5IHRoZSB0cmFuc2Zvcm1lZCBDYXRlZ29yeVxuICAgICAqIEBwYXJhbSBmaWVsZFRpdGxlIHRoZSB0aXRsZSBvZiB0aGUgZmllbGQgdGhhdCBzaG91bGQgYmUgdGFyZ2V0ZWQgYnkgdGhlIHRyYW5zZm9ybWVkIENhdGVnb3J5XG4gICAgICogQHBhcmFtIHVzZXJJbnB1dCB0aGUgb3BlcmFuZHMgZm9yIHRoZSBxdWVyaWVkIGZpZWxkXG4gICAgICogQHJldHVybnMgYSBuZXcge0BsaW5rIENhc2VEYXRhc2V0fSBjb25maWd1cmVkIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlc1xuICAgICAqL1xuICAgIHB1YmxpYyB0cmFuc2Zvcm1Ub0Nhc2VEYXRhc2V0KGZpZWxkVHlwZTogc3RyaW5nLCBmaWVsZFRpdGxlOiBzdHJpbmcsIHVzZXJJbnB1dDogQXJyYXk8YW55Pik6IENhc2VEYXRhc2V0IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMuY2F0ZWdvcnlGYWN0b3J5LmdldChDYXNlRGF0YXNldCkgYXMgQ2FzZURhdGFzZXQ7XG4gICAgICAgIHJlc3VsdC5zZWxlY3REYXRhZmllbGRzKERhdGFmaWVsZE1hcEtleS5zZXJpYWxpemVkRm9ybShmaWVsZFR5cGUsIGZpZWxkVGl0bGUpKTtcbiAgICAgICAgcmVzdWx0LnNldE9wZXJhbmRzKHVzZXJJbnB1dCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdlbmVyYXRlUXVlcnkodXNlcklucHV0OiBBcnJheTx1bmtub3duPik6IFF1ZXJ5IHtcbiAgICAgICAgY29uc3QgdmFsdWVRdWVyeSA9IHRoaXMuc2VsZWN0ZWRPcGVyYXRvci5jcmVhdGVRdWVyeSh0aGlzLmVsYXN0aWNLZXl3b3JkcywgdXNlcklucHV0KTtcbiAgICAgICAgY29uc3QgbmV0c1F1ZXJ5ID0gUXVlcnkuY29tYmluZVF1ZXJpZXMoXG4gICAgICAgICAgICB0aGlzLl9uZXRJZGVudGlmaWVycy5tYXAoaWQgPT4gdGhpcy5fcHJvY2Vzc0NhdGVnb3J5LmdlbmVyYXRlUHJlZGljYXRlKFtbaWRdXSkucXVlcnkpLFxuICAgICAgICAgICAgQm9vbGVhbk9wZXJhdG9yLk9SXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBRdWVyeS5jb21iaW5lUXVlcmllcyhbdmFsdWVRdWVyeSwgbmV0c1F1ZXJ5XSwgQm9vbGVhbk9wZXJhdG9yLkFORCk7XG4gICAgfVxuXG4gICAgc2VyaWFsaXplQ2xhc3MoKTogQ2F0ZWdvcmllcyB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBDYXRlZ29yaWVzLkNBU0VfU0lNUExFX0RBVEFTRVQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VyaWFsaXphdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiBUaHJvd3MgYW4gZXJyb3IuXG4gICAgICovXG4gICAgY3JlYXRlTWV0YWRhdGEoKTogbmV2ZXIge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhc2VTaW1wbGVEYXRhc2V0IGRvZXMgbm90IHN1cHBvcnQgc2VyaWFsaXphdGlvbiEnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXNlcmlhbGl6YXRpb24gaXMgbm90IHN1cHBvcnRlZC4gVGhyb3dzIGFuIGVycm9yLlxuICAgICAqL1xuICAgIGxvYWRGcm9tTWV0YWRhdGEobWV0YWRhdGE6IENhdGVnb3J5R2VuZXJhdG9yTWV0YWRhdGEpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYXNlU2ltcGxlRGF0YXNldCBkb2VzIG5vdCBzdXBwb3J0IGRlc2VyaWFsaXphdGlvbiEnKTtcbiAgICB9XG59XG4iXX0=
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1zaW1wbGUtZGF0YXNldC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZXRncmlmL2NvbXBvbmVudHMtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zZWFyY2gvbW9kZWxzL2NhdGVnb3J5L2Nhc2UvY2FzZS1zaW1wbGUtZGF0YXNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRXhDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJekM7Ozs7Ozs7OztHQVNHO0FBQ0g7SUFBdUMscUNBQStCO0lBV2xFLDJCQUFZLFNBQTBCLEVBQzFCLE1BQXFCLEVBQ1gscUJBQTJDO1FBRmpFLFlBR0ksa0JBQU0sU0FBUyxFQUNYLFNBQVMsRUFDTixpQkFBaUIsQ0FBQyxLQUFLLFVBQU8sRUFDakMsU0FBUyxFQUNULE1BQU0sRUFDTixTQUFTLENBQUMsU0FHakI7UUFUcUIsMkJBQXFCLEdBQXJCLHFC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QUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3RGLElBQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFVBQUEsRUFBRSxJQUFJLE9BQUEsS0FBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFyRCxDQUFxRCxDQUFDLEVBQ3JGLGVBQWUsQ0FBQyxFQUFFLENBQ3JCLENBQUM7UUFDRixPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCwwQ0FBYyxHQUFkO1FBQ0ksT0FBTyxVQUFVLENBQUMsbUJBQW1CLENBQUM7SUFDMUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsMENBQWMsR0FBZDtRQUNJLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCw0Q0FBZ0IsR0FBaEIsVUFBaUIsUUFBbUM7UUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUExSXVCLHVCQUFLLEdBQUcsOEJBQThCLENBQUM7SUEySW5FLHdCQUFDO0NBQUEsQUE3SUQsQ0FBdUMsdUJBQXVCLEdBNkk3RDtTQTdJWSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09wZXJhdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vb3BlcmF0b3Itc2VydmljZS9vcGVyYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7UXVlcnl9IGZyb20gJy4uLy4uL3F1ZXJ5L3F1ZXJ5JztcbmltcG9ydCB7T3BlcmF0b3J9IGZyb20gJy4uLy4uL29wZXJhdG9yL29wZXJhdG9yJztcbmltcG9ydCB7RXF1YWxzfSBmcm9tICcuLi8uLi9vcGVyYXRvci9lcXVhbHMnO1xuaW1wb3J0IHtFcXVhbHNEYXRlfSBmcm9tICcuLi8uLi9vcGVyYXRvci9lcXVhbHMtZGF0ZSc7XG5pbXBvcnQge0VxdWFsc0RhdGVUaW1lfSBmcm9tICcuLi8uLi9vcGVyYXRvci9lcXVhbHMtZGF0ZS10aW1lJztcbmltcG9ydCB7U3Vic3RyaW5nfSBmcm9tICcuLi8uLi9vcGVyYXRvci9zdWJzdHJpbmcnO1xuaW1wb3J0IHtDYXNlUHJvY2Vzc30gZnJvbSAnLi9jYXNlLXByb2Nlc3MnO1xuaW1wb3J0IHtPcHRpb25hbERlcGVuZGVuY2llc30gZnJvbSAnLi4vLi4vLi4vY2F0ZWdvcnktZmFjdG9yeS9vcHRpb25hbC1kZXBlbmRlbmNpZXMnO1xuaW1wb3J0IHtCb29sZWFuT3BlcmF0b3J9IGZyb20gJy4uLy4uL2Jvb2xlYW4tb3BlcmF0b3InO1xuaW1wb3J0IHtOb0NvbmZpZ3VyYXRpb25DYXRlZ29yeX0gZnJvbSAnLi4vbm8tY29uZmlndXJhdGlvbi1jYXRlZ29yeSc7XG5pbXBvcnQge0Nhc2VEYXRhc2V0fSBmcm9tICcuL2Nhc2UtZGF0YXNldCc7XG5pbXBvcnQge0RhdGFmaWVsZE1hcEtleX0gZnJvbSAnLi4vLi4vZGF0YWZpZWxkLW1hcC1rZXknO1xuaW1wb3J0IHtTZWFyY2hJbmRleH0gZnJvbSAnLi4vLi4vc2VhcmNoLWluZGV4JztcbmltcG9ydCB7Q2F0ZWdvcmllc30gZnJvbSAnLi4vY2F0ZWdvcmllcyc7XG5pbXBvcnQge0NhdGVnb3J5R2VuZXJhdG9yTWV0YWRhdGF9IGZyb20gJy4uLy4uL3BlcnNpc3RhbmNlL2dlbmVyYXRvci1tZXRhZGF0YSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgYWltcyB0byBiZSBhIHNpbXBsZXIgbW9yZSBsaW1pdGVkIHZlcnNpb24gb2YgdGhlIHtAbGluayBDYXNlRGF0YXNldH0ge0BsaW5rIENhdGVnb3J5fSBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBJdCBjYW4gb25seSBnZW5lcmF0ZSBcImVxdWFsaXR5XCIgcXVlcmllcyBmb3IgYSBzaW5nbGUgZmllbGQuIFRoZSBjYXRlZ29yeSBtdXN0IGJlIGNvbmZpZ3VyZWQgYmVmb3JlIGl0IGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIHF1ZXJpZXMuXG4gKlxuICogVGhpcyBjYXRlZ29yeSBjYW5ub3QgYmUgc2VyaWFsaXplZC4gSWYgeW91IHdhbnQgdG8gcHJlc2VydmUgdGhpcyBjYXRlZ29yeSdzIHN0YXRlIGNvbnZlcnQgaXQgdG8ge0BsaW5rIENhc2VEYXRhc2V0fVxuICogd2l0aCB0aGUgW3RyYW5zZm9ybVRvQ2FzZURhdGFzZXQoKV17QGxpbmsgQ2FzZVNpbXBsZURhdGFzZXQjdHJhbnNmb3JtVG9DYXNlRGF0YXNldH0gbWV0aG9kIGFuZCBzZXJpYWxpemUgdGhlIHJlc3VsdC5cbiAqXG4gKiBTZWUgW2NvbmZpZ3VyZV17QGxpbmsgQ2FzZVNpbXBsZURhdGFzZXQjY29uZmlndXJlfSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIENhc2VTaW1wbGVEYXRhc2V0IGV4dGVuZHMgTm9Db25maWd1cmF0aW9uQ2F0ZWdvcnk8c3RyaW5nPiB7XG5cbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaTE4biA9ICdzZWFyY2guY2F0ZWdvcnkuY2FzZS5kYXRhc2V0JztcblxuICAgIHByb3RlY3RlZCBfZmllbGRJZDogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfZmllbGRUeXBlOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9uZXRJZGVudGlmaWVyczogQXJyYXk8c3RyaW5nPjtcbiAgICBwcm90ZWN0ZWQgX2VsYXN0aWNLZXl3b3JkOiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NDYXRlZ29yeTogQ2FzZVByb2Nlc3M7XG5cbiAgICBjb25zdHJ1Y3RvcihvcGVyYXRvcnM6IE9wZXJhdG9yU2VydmljZSxcbiAgICAgICAgICAgICAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9vcHRpb25hbERlcGVuZGVuY2llczogT3B0aW9uYWxEZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgc3VwZXIodW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgYCR7Q2FzZVNpbXBsZURhdGFzZXQuX2kxOG59Lm5hbWVgLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgbG9nZ2VyLFxuICAgICAgICAgICAgb3BlcmF0b3JzKTtcblxuICAgICAgICB0aGlzLl9wcm9jZXNzQ2F0ZWdvcnkgPSBfb3B0aW9uYWxEZXBlbmRlbmNpZXMuY2F0ZWdvcnlGYWN0b3J5LmdldFdpdGhEZWZhdWx0T3BlcmF0b3IoQ2FzZVByb2Nlc3MpIGFzIENhc2VQcm9jZXNzO1xuICAgIH1cblxuICAgIGRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLmRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0NhdGVnb3J5LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBnZXQgaW5wdXRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbmZpZ3VyZShmaWVsZElkOiBzdHJpbmcsIGZpZWxkVHlwZTogc3RyaW5nLCBuZXRJZGVudGlmaWVyczogQXJyYXk8c3RyaW5nPik6IHZvaWQge1xuICAgICAgICBpZiAoIWZpZWxkSWQgfHwgIWZpZWxkVHlwZSB8fCAhbmV0SWRlbnRpZmllcnMgfHwgbmV0SWRlbnRpZmllcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0Nhc2VTaW1wbGVEYXRhc2V0IG11c3QgYmUgY29uZmlndXJlZCB3aXRoIGRlZmluZWQgdmFsdWVzIGFuZCBhIG5vbi1lbXB0eSBhcnJheScpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2ZpZWxkSWQgPSBmaWVsZElkO1xuICAgICAgICB0aGlzLl9maWVsZFR5cGUgPSBmaWVsZFR5cGU7XG4gICAgICAgIHRoaXMuX25ldElkZW50aWZpZXJzID0gbmV0SWRlbnRpZmllcnM7XG4gICAgICAgIHRoaXMucmVzb2x2ZUVsYXN0aWNLZXl3b3JkKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlc29sdmVFbGFzdGljS2V5d29yZCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLl9vcHRpb25hbERlcGVuZGVuY2llcy5zZWFyY2hJbmRleFJlc29sdmVyO1xuICAgICAgICBzd2l0Y2ggKHRoaXMuX2ZpZWxkVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9lbGFzdGljS2V5d29yZCA9IHJlc29sdmVyLmdldEluZGV4KHRoaXMuX2ZpZWxkSWQsIFNlYXJjaEluZGV4Lk5VTUJFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgIGNhc2UgJ2RhdGVUaW1lJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9lbGFzdGljS2V5d29yZCA9IHJlc29sdmVyLmdldEluZGV4KHRoaXMuX2ZpZWxkSWQsIFNlYXJjaEluZGV4LlRJTUVTVEFNUCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9lbGFzdGljS2V5d29yZCA9IHJlc29sdmVyLmdldEluZGV4KHRoaXMuX2ZpZWxkSWQsIFNlYXJjaEluZGV4LkJPT0xFQU4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZmlsZSc6XG4gICAgICAgICAgICBjYXNlICdmaWxlTGlzdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fZWxhc3RpY0tleXdvcmQgPSByZXNvbHZlci5nZXRJbmRleCh0aGlzLl9maWVsZElkLCBTZWFyY2hJbmRleC5GSUxFX05BTUUsIHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKFN1YnN0cmluZykpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndXNlcic6XG4gICAgICAgICAgICBjYXNlICd1c2VyTGlzdCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fZWxhc3RpY0tleXdvcmQgPSByZXNvbHZlci5nZXRJbmRleCh0aGlzLl9maWVsZElkLCBTZWFyY2hJbmRleC5VU0VSX0lEKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fZWxhc3RpY0tleXdvcmQgPSByZXNvbHZlci5nZXRJbmRleCh0aGlzLl9maWVsZElkLCBTZWFyY2hJbmRleC5GVUxMVEVYVCwgdGhpcy5pc1NlbGVjdGVkT3BlcmF0b3IoU3Vic3RyaW5nKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGVsYXN0aWNLZXl3b3JkcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9maWVsZElkKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW3RoaXMuX2VsYXN0aWNLZXl3b3JkXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWRPcGVyYXRvcigpOiBPcGVyYXRvcjxhbnk+IHtcbiAgICAgICAgc3dpdGNoICh0aGlzLl9maWVsZFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihFcXVhbHMpO1xuICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihFcXVhbHMpO1xuICAgICAgICAgICAgY2FzZSAndXNlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihFcXVhbHMpO1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihFcXVhbHNEYXRlKTtcbiAgICAgICAgICAgIGNhc2UgJ2RhdGVUaW1lJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fb3BlcmF0b3JTZXJ2aWNlLmdldE9wZXJhdG9yKEVxdWFsc0RhdGVUaW1lKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX29wZXJhdG9yU2VydmljZS5nZXRPcGVyYXRvcihTdWJzdHJpbmcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHVwbGljYXRlKCk6IENhc2VTaW1wbGVEYXRhc2V0IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXNlU2ltcGxlRGF0YXNldCh0aGlzLl9vcGVyYXRvclNlcnZpY2UsIHRoaXMuX2xvZywgdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSB7QGxpbmsgQ2FzZURhdGFzZXR9IGluc3RhbmNlIGFuZCBjb25maWd1cmVzIGl0IHNvLCB0aGF0IHRoZSBxdWVyeSBpdCBnZW5lcmF0ZXMgdGFyZ2V0c1xuICAgICAqIHRoZSBzZWxlY3RlZCBmaWVsZCwgdXNlcyB0aGUgZGVmYXVsdCBvcGVyYXRvciBhbmQgaXRzIG9wZXJhbmRzIGFyZSB3aGF0IHRoZSB1c2VyIHByb3ZpZGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpZWxkVHlwZSB0aGUgdHlwZSBvZiB0aGUgZmllbGQgdGhhdCBzaG91bGQgYmUgdGFyZ2V0ZWQgYnkgdGhlIHRyYW5zZm9ybWVkIENhdGVnb3J5XG4gICAgICogQHBhcmFtIGZpZWxkVGl0bGUgdGhlIHRpdGxlIG9mIHRoZSBmaWVsZCB0aGF0IHNob3VsZCBiZSB0YXJnZXRlZCBieSB0aGUgdHJhbnNmb3JtZWQgQ2F0ZWdvcnlcbiAgICAgKiBAcGFyYW0gdXNlcklucHV0IHRoZSBvcGVyYW5kcyBmb3IgdGhlIHF1ZXJpZWQgZmllbGRcbiAgICAgKiBAcmV0dXJucyBhIG5ldyB7QGxpbmsgQ2FzZURhdGFzZXR9IGNvbmZpZ3VyZWQgd2l0aCB0aGUgcHJvdmlkZWQgdmFsdWVzXG4gICAgICovXG4gICAgcHVibGljIHRyYW5zZm9ybVRvQ2FzZURhdGFzZXQoZmllbGRUeXBlOiBzdHJpbmcsIGZpZWxkVGl0bGU6IHN0cmluZywgdXNlcklucHV0OiBBcnJheTxhbnk+KTogQ2FzZURhdGFzZXQge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9vcHRpb25hbERlcGVuZGVuY2llcy5jYXRlZ29yeUZhY3RvcnkuZ2V0KENhc2VEYXRhc2V0KSBhcyBDYXNlRGF0YXNldDtcbiAgICAgICAgcmVzdWx0LnNlbGVjdERhdGFmaWVsZHMoRGF0YWZpZWxkTWFwS2V5LnNlcmlhbGl6ZWRGb3JtKGZpZWxkVHlwZSwgZmllbGRUaXRsZSkpO1xuICAgICAgICByZXN1bHQuc2V0T3BlcmFuZHModXNlcklucHV0KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2VuZXJhdGVRdWVyeSh1c2VySW5wdXQ6IEFycmF5PHVua25vd24+KTogUXVlcnkge1xuICAgICAgICBjb25zdCB2YWx1ZVF1ZXJ5ID0gdGhpcy5zZWxlY3RlZE9wZXJhdG9yLmNyZWF0ZVF1ZXJ5KHRoaXMuZWxhc3RpY0tleXdvcmRzLCB1c2VySW5wdXQpO1xuICAgICAgICBjb25zdCBuZXRzUXVlcnkgPSBRdWVyeS5jb21iaW5lUXVlcmllcyhcbiAgICAgICAgICAgIHRoaXMuX25ldElkZW50aWZpZXJzLm1hcChpZCA9PiB0aGlzLl9wcm9jZXNzQ2F0ZWdvcnkuZ2VuZXJhdGVQcmVkaWNhdGUoW1tpZF1dKS5xdWVyeSksXG4gICAgICAgICAgICBCb29sZWFuT3BlcmF0b3IuT1JcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIFF1ZXJ5LmNvbWJpbmVRdWVyaWVzKFt2YWx1ZVF1ZXJ5LCBuZXRzUXVlcnldLCBCb29sZWFuT3BlcmF0b3IuQU5EKTtcbiAgICB9XG5cbiAgICBzZXJpYWxpemVDbGFzcygpOiBDYXRlZ29yaWVzIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIENhdGVnb3JpZXMuQ0FTRV9TSU1QTEVfREFUQVNFVDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXJpYWxpemF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuIFRocm93cyBhbiBlcnJvci5cbiAgICAgKi9cbiAgICBjcmVhdGVNZXRhZGF0YSgpOiBuZXZlciB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FzZVNpbXBsZURhdGFzZXQgZG9lcyBub3Qgc3VwcG9ydCBzZXJpYWxpemF0aW9uIScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc2VyaWFsaXphdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiBUaHJvd3MgYW4gZXJyb3IuXG4gICAgICovXG4gICAgbG9hZEZyb21NZXRhZGF0YShtZXRhZGF0YTogQ2F0ZWdvcnlHZW5lcmF0b3JNZXRhZGF0YSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhc2VTaW1wbGVEYXRhc2V0IGRvZXMgbm90IHN1cHBvcnQgZGVzZXJpYWxpemF0aW9uIScpO1xuICAgIH1cbn1cbiJdfQ==
@@ -9,13 +9,15 @@ import { Categories } from '../categories';
9
9
  import { CaseSearch } from './case-search.enum';
10
10
  var CaseTitle = /** @class */ (function (_super) {
11
11
  __extends(CaseTitle, _super);
12
- function CaseTitle(operators, logger) {
13
- return _super.call(this, [CaseSearch.TITLE], [
12
+ function CaseTitle(operators, logger, _optionalDependencies) {
13
+ var _this = _super.call(this, [CaseSearch.TITLE], [
14
14
  operators.getOperator(Substring),
15
15
  operators.getOperator(Equals),
16
16
  operators.getOperator(NotEquals),
17
17
  operators.getOperator(Like)
18
18
  ], CaseTitle._i18n + ".name", SearchInputType.TEXT, logger, operators) || this;
19
+ _this._optionalDependencies = _optionalDependencies;
20
+ return _this;
19
21
  }
20
22
  Object.defineProperty(CaseTitle.prototype, "inputPlaceholder", {
21
23
  get: function () {
@@ -25,13 +27,26 @@ var CaseTitle = /** @class */ (function (_super) {
25
27
  configurable: true
26
28
  });
27
29
  CaseTitle.prototype.duplicate = function () {
28
- return new CaseTitle(this._operatorService, this._log);
30
+ return new CaseTitle(this._operatorService, this._log, this._optionalDependencies);
29
31
  };
30
32
  CaseTitle.prototype.serializeClass = function () {
31
33
  return Categories.CASE_TITLE;
32
34
  };
35
+ Object.defineProperty(CaseTitle.prototype, "elasticKeywords", {
36
+ get: function () {
37
+ if (!!this._optionalDependencies) {
38
+ var resolver = this._optionalDependencies.searchIndexResolver;
39
+ return [resolver.getCoreIndex(CaseSearch.TITLE, this.isSelectedOperator(Substring))];
40
+ }
41
+ else {
42
+ return this._elasticKeywords;
43
+ }
44
+ },
45
+ enumerable: false,
46
+ configurable: true
47
+ });
33
48
  CaseTitle._i18n = 'search.category.case.title';
34
49
  return CaseTitle;
35
50
  }(NoConfigurationCategory));
36
51
  export { CaseTitle };
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS10aXRsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZXRncmlmL2NvbXBvbmVudHMtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zZWFyY2gvbW9kZWxzL2NhdGVnb3J5L2Nhc2UvY2FzZS10aXRsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUU5QztJQUErQiw2QkFBK0I7SUFJMUQsbUJBQVksU0FBMEIsRUFBRSxNQUFxQjtlQUN6RCxrQkFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFDcEI7WUFDSSxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztZQUNoQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUM3QixTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztZQUNoQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztTQUM5QixFQUNFLFNBQVMsQ0FBQyxLQUFLLFVBQU8sRUFDekIsZUFBZSxDQUFDLElBQUksRUFDcEIsTUFBTSxFQUNOLFNBQVMsQ0FBQztJQUNsQixDQUFDO0lBRUQsc0JBQUksdUNBQWdCO2FBQXBCO1lBQ0ksT0FBVSxTQUFTLENBQUMsS0FBSyxpQkFBYyxDQUFDO1FBQzVDLENBQUM7OztPQUFBO0lBRUQsNkJBQVMsR0FBVDtRQUNJLE9BQU8sSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsa0NBQWMsR0FBZDtRQUNJLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQztJQUNqQyxDQUFDO0lBMUJ1QixlQUFLLEdBQUcsNEJBQTRCLENBQUM7SUEyQmpFLGdCQUFDO0NBQUEsQUE3QkQsQ0FBK0IsdUJBQXVCLEdBNkJyRDtTQTdCWSxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPcGVyYXRvclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL29wZXJhdG9yLXNlcnZpY2Uvb3BlcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQge1N1YnN0cmluZ30gZnJvbSAnLi4vLi4vb3BlcmF0b3Ivc3Vic3RyaW5nJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7U2VhcmNoSW5wdXRUeXBlfSBmcm9tICcuLi9zZWFyY2gtaW5wdXQtdHlwZSc7XG5pbXBvcnQge05vQ29uZmlndXJhdGlvbkNhdGVnb3J5fSBmcm9tICcuLi9uby1jb25maWd1cmF0aW9uLWNhdGVnb3J5JztcbmltcG9ydCB7RXF1YWxzfSBmcm9tICcuLi8uLi9vcGVyYXRvci9lcXVhbHMnO1xuaW1wb3J0IHtOb3RFcXVhbHN9IGZyb20gJy4uLy4uL29wZXJhdG9yL25vdC1lcXVhbHMnO1xuaW1wb3J0IHtMaWtlfSBmcm9tICcuLi8uLi9vcGVyYXRvci9saWtlJztcbmltcG9ydCB7Q2F0ZWdvcmllc30gZnJvbSAnLi4vY2F0ZWdvcmllcyc7XG5pbXBvcnQge0Nhc2VTZWFyY2h9IGZyb20gJy4vY2FzZS1zZWFyY2guZW51bSc7XG5cbmV4cG9ydCBjbGFzcyBDYXNlVGl0bGUgZXh0ZW5kcyBOb0NvbmZpZ3VyYXRpb25DYXRlZ29yeTxzdHJpbmc+IHtcblxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pMThuID0gJ3NlYXJjaC5jYXRlZ29yeS5jYXNlLnRpdGxlJztcblxuICAgIGNvbnN0cnVjdG9yKG9wZXJhdG9yczogT3BlcmF0b3JTZXJ2aWNlLCBsb2dnZXI6IExvZ2dlclNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoW0Nhc2VTZWFyY2guVElUTEVdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIG9wZXJhdG9ycy5nZXRPcGVyYXRvcihTdWJzdHJpbmcpLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9ycy5nZXRPcGVyYXRvcihFcXVhbHMpLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9ycy5nZXRPcGVyYXRvcihOb3RFcXVhbHMpLFxuICAgICAgICAgICAgICAgIG9wZXJhdG9ycy5nZXRPcGVyYXRvcihMaWtlKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGAke0Nhc2VUaXRsZS5faTE4bn0ubmFtZWAsXG4gICAgICAgICAgICBTZWFyY2hJbnB1dFR5cGUuVEVYVCxcbiAgICAgICAgICAgIGxvZ2dlcixcbiAgICAgICAgICAgIG9wZXJhdG9ycyk7XG4gICAgfVxuXG4gICAgZ2V0IGlucHV0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke0Nhc2VUaXRsZS5faTE4bn0ucGxhY2Vob2xkZXJgO1xuICAgIH1cblxuICAgIGR1cGxpY2F0ZSgpOiBDYXNlVGl0bGUge1xuICAgICAgICByZXR1cm4gbmV3IENhc2VUaXRsZSh0aGlzLl9vcGVyYXRvclNlcnZpY2UsIHRoaXMuX2xvZyk7XG4gICAgfVxuXG4gICAgc2VyaWFsaXplQ2xhc3MoKTogQ2F0ZWdvcmllcyB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBDYXRlZ29yaWVzLkNBU0VfVElUTEU7XG4gICAgfVxufVxuIl19
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS10aXRsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZXRncmlmL2NvbXBvbmVudHMtY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zZWFyY2gvbW9kZWxzL2NhdGVnb3J5L2Nhc2UvY2FzZS10aXRsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUc5QztJQUErQiw2QkFBK0I7SUFJMUQsbUJBQVksU0FBMEIsRUFBRSxNQUFxQixFQUFZLHFCQUE0QztRQUFySCxZQUNJLGtCQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUNwQjtZQUNJLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO1lBQ2hDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO1lBQzdCLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO1lBQ2hDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1NBQzlCLEVBQ0UsU0FBUyxDQUFDLEtBQUssVUFBTyxFQUN6QixlQUFlLENBQUMsSUFBSSxFQUNwQixNQUFNLEVBQ04sU0FBUyxDQUFDLFNBQ2pCO1FBWndFLDJCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7O0lBWXJILENBQUM7SUFFRCxzQkFBSSx1Q0FBZ0I7YUFBcEI7WUFDSSxPQUFVLFNBQVMsQ0FBQyxLQUFLLGlCQUFjLENBQUM7UUFDNUMsQ0FBQzs7O09BQUE7SUFFRCw2QkFBUyxHQUFUO1FBQ0ksT0FBTyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsa0NBQWMsR0FBZDtRQUNJLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsc0JBQWMsc0NBQWU7YUFBN0I7WUFDSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7Z0JBQzlCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDaEUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3hGO2lCQUFNO2dCQUNILE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO2FBQ2hDO1FBQ0wsQ0FBQzs7O09BQUE7SUFuQ3VCLGVBQUssR0FBRyw0QkFBNEIsQ0FBQztJQW9DakUsZ0JBQUM7Q0FBQSxBQXRDRCxDQUErQix1QkFBdUIsR0FzQ3JEO1NBdENZLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09wZXJhdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vb3BlcmF0b3Itc2VydmljZS9vcGVyYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7U3Vic3RyaW5nfSBmcm9tICcuLi8uLi9vcGVyYXRvci9zdWJzdHJpbmcnO1xuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtTZWFyY2hJbnB1dFR5cGV9IGZyb20gJy4uL3NlYXJjaC1pbnB1dC10eXBlJztcbmltcG9ydCB7Tm9Db25maWd1cmF0aW9uQ2F0ZWdvcnl9IGZyb20gJy4uL25vLWNvbmZpZ3VyYXRpb24tY2F0ZWdvcnknO1xuaW1wb3J0IHtFcXVhbHN9IGZyb20gJy4uLy4uL29wZXJhdG9yL2VxdWFscyc7XG5pbXBvcnQge05vdEVxdWFsc30gZnJvbSAnLi4vLi4vb3BlcmF0b3Ivbm90LWVxdWFscyc7XG5pbXBvcnQge0xpa2V9IGZyb20gJy4uLy4uL29wZXJhdG9yL2xpa2UnO1xuaW1wb3J0IHtDYXRlZ29yaWVzfSBmcm9tICcuLi9jYXRlZ29yaWVzJztcbmltcG9ydCB7Q2FzZVNlYXJjaH0gZnJvbSAnLi9jYXNlLXNlYXJjaC5lbnVtJztcbmltcG9ydCB7T3B0aW9uYWxEZXBlbmRlbmNpZXN9IGZyb20gJy4uLy4uLy4uL2NhdGVnb3J5LWZhY3Rvcnkvb3B0aW9uYWwtZGVwZW5kZW5jaWVzJztcblxuZXhwb3J0IGNsYXNzIENhc2VUaXRsZSBleHRlbmRzIE5vQ29uZmlndXJhdGlvbkNhdGVnb3J5PHN0cmluZz4ge1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2kxOG4gPSAnc2VhcmNoLmNhdGVnb3J5LmNhc2UudGl0bGUnO1xuXG4gICAgY29uc3RydWN0b3Iob3BlcmF0b3JzOiBPcGVyYXRvclNlcnZpY2UsIGxvZ2dlcjogTG9nZ2VyU2VydmljZSwgcHJvdGVjdGVkIF9vcHRpb25hbERlcGVuZGVuY2llcz86IE9wdGlvbmFsRGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIHN1cGVyKFtDYXNlU2VhcmNoLlRJVExFXSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBvcGVyYXRvcnMuZ2V0T3BlcmF0b3IoU3Vic3RyaW5nKSxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcnMuZ2V0T3BlcmF0b3IoRXF1YWxzKSxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcnMuZ2V0T3BlcmF0b3IoTm90RXF1YWxzKSxcbiAgICAgICAgICAgICAgICBvcGVyYXRvcnMuZ2V0T3BlcmF0b3IoTGlrZSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBgJHtDYXNlVGl0bGUuX2kxOG59Lm5hbWVgLFxuICAgICAgICAgICAgU2VhcmNoSW5wdXRUeXBlLlRFWFQsXG4gICAgICAgICAgICBsb2dnZXIsXG4gICAgICAgICAgICBvcGVyYXRvcnMpO1xuICAgIH1cblxuICAgIGdldCBpbnB1dFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtDYXNlVGl0bGUuX2kxOG59LnBsYWNlaG9sZGVyYDtcbiAgICB9XG5cbiAgICBkdXBsaWNhdGUoKTogQ2FzZVRpdGxlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXNlVGl0bGUodGhpcy5fb3BlcmF0b3JTZXJ2aWNlLCB0aGlzLl9sb2csIHRoaXMuX29wdGlvbmFsRGVwZW5kZW5jaWVzKTtcbiAgICB9XG5cbiAgICBzZXJpYWxpemVDbGFzcygpOiBDYXRlZ29yaWVzIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIENhdGVnb3JpZXMuQ0FTRV9USVRMRTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGVsYXN0aWNLZXl3b3JkcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgaWYgKCEhdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMuc2VhcmNoSW5kZXhSZXNvbHZlcjtcbiAgICAgICAgICAgIHJldHVybiBbcmVzb2x2ZXIuZ2V0Q29yZUluZGV4KENhc2VTZWFyY2guVElUTEUsIHRoaXMuaXNTZWxlY3RlZE9wZXJhdG9yKFN1YnN0cmluZykpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9lbGFzdGljS2V5d29yZHM7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -8,8 +8,10 @@ import { Categories } from '../categories';
8
8
  import { CaseSearch } from './case-search.enum';
9
9
  var CaseVisualId = /** @class */ (function (_super) {
10
10
  __extends(CaseVisualId, _super);
11
- function CaseVisualId(operators, logger) {
12
- return _super.call(this, [CaseSearch.VISUAL_ID], [operators.getOperator(Substring), operators.getOperator(Equals), operators.getOperator(NotEquals)], CaseVisualId._i18n + ".name", SearchInputType.TEXT, logger, operators) || this;
11
+ function CaseVisualId(operators, logger, _optionalDependencies) {
12
+ var _this = _super.call(this, [CaseSearch.VISUAL_ID], [operators.getOperator(Substring), operators.getOperator(Equals), operators.getOperator(NotEquals)], CaseVisualId._i18n + ".name", SearchInputType.TEXT, logger, operators) || this;
13
+ _this._optionalDependencies = _optionalDependencies;
14
+ return _this;
13
15
  }
14
16
  Object.defineProperty(CaseVisualId.prototype, "inputPlaceholder", {
15
17
  get: function () {
@@ -19,13 +21,26 @@ var CaseVisualId = /** @class */ (function (_super) {
19
21
  configurable: true
20
22
  });
21
23
  CaseVisualId.prototype.duplicate = function () {
22
- return new CaseVisualId(this._operatorService, this._log);
24
+ return new CaseVisualId(this._operatorService, this._log, this._optionalDependencies);
23
25
  };
24
26
  CaseVisualId.prototype.serializeClass = function () {
25
27
  return Categories.CASE_VISUAL_ID;
26
28
  };
29
+ Object.defineProperty(CaseVisualId.prototype, "elasticKeywords", {
30
+ get: function () {
31
+ if (!!this._optionalDependencies) {
32
+ var resolver = this._optionalDependencies.searchIndexResolver;
33
+ return [resolver.getCoreIndex(CaseSearch.VISUAL_ID, this.isSelectedOperator(Substring))];
34
+ }
35
+ else {
36
+ return this._elasticKeywords;
37
+ }
38
+ },
39
+ enumerable: false,
40
+ configurable: true
41
+ });
27
42
  CaseVisualId._i18n = 'search.category.case.visualId';
28
43
  return CaseVisualId;
29
44
  }(NoConfigurationCategory));
30
45
  export { CaseVisualId };
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS12aXN1YWwtaWQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmV0Z3JpZi9jb21wb25lbnRzLWNvcmUvIiwic291cmNlcyI6WyJsaWIvc2VhcmNoL21vZGVscy9jYXRlZ29yeS9jYXNlL2Nhc2UtdmlzdWFsLWlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFOUM7SUFBa0MsZ0NBQStCO0lBSTdELHNCQUFZLFNBQTBCLEVBQUUsTUFBcUI7ZUFDekQsa0JBQU0sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQ3hCLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsRUFDaEcsWUFBWSxDQUFDLEtBQUssVUFBTyxFQUM1QixlQUFlLENBQUMsSUFBSSxFQUNwQixNQUFNLEVBQ04sU0FBUyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxzQkFBSSwwQ0FBZ0I7YUFBcEI7WUFDSSxPQUFVLFlBQVksQ0FBQyxLQUFLLGlCQUFjLENBQUM7UUFDL0MsQ0FBQzs7O09BQUE7SUFFRCxnQ0FBUyxHQUFUO1FBQ0ksT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxxQ0FBYyxHQUFkO1FBQ0ksT0FBTyxVQUFVLENBQUMsY0FBYyxDQUFDO0lBQ3JDLENBQUM7SUFyQnVCLGtCQUFLLEdBQUcsK0JBQStCLENBQUM7SUFzQnBFLG1CQUFDO0NBQUEsQUF4QkQsQ0FBa0MsdUJBQXVCLEdBd0J4RDtTQXhCWSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPcGVyYXRvclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL29wZXJhdG9yLXNlcnZpY2Uvb3BlcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL2xvZ2dlci9zZXJ2aWNlcy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge1N1YnN0cmluZ30gZnJvbSAnLi4vLi4vb3BlcmF0b3Ivc3Vic3RyaW5nJztcbmltcG9ydCB7U2VhcmNoSW5wdXRUeXBlfSBmcm9tICcuLi9zZWFyY2gtaW5wdXQtdHlwZSc7XG5pbXBvcnQge05vQ29uZmlndXJhdGlvbkNhdGVnb3J5fSBmcm9tICcuLi9uby1jb25maWd1cmF0aW9uLWNhdGVnb3J5JztcbmltcG9ydCB7RXF1YWxzfSBmcm9tICcuLi8uLi9vcGVyYXRvci9lcXVhbHMnO1xuaW1wb3J0IHtOb3RFcXVhbHN9IGZyb20gJy4uLy4uL29wZXJhdG9yL25vdC1lcXVhbHMnO1xuaW1wb3J0IHtDYXRlZ29yaWVzfSBmcm9tICcuLi9jYXRlZ29yaWVzJztcbmltcG9ydCB7Q2FzZVNlYXJjaH0gZnJvbSAnLi9jYXNlLXNlYXJjaC5lbnVtJztcblxuZXhwb3J0IGNsYXNzIENhc2VWaXN1YWxJZCBleHRlbmRzIE5vQ29uZmlndXJhdGlvbkNhdGVnb3J5PHN0cmluZz4ge1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2kxOG4gPSAnc2VhcmNoLmNhdGVnb3J5LmNhc2UudmlzdWFsSWQnO1xuXG4gICAgY29uc3RydWN0b3Iob3BlcmF0b3JzOiBPcGVyYXRvclNlcnZpY2UsIGxvZ2dlcjogTG9nZ2VyU2VydmljZSkge1xuICAgICAgICBzdXBlcihbQ2FzZVNlYXJjaC5WSVNVQUxfSURdLFxuICAgICAgICAgICAgW29wZXJhdG9ycy5nZXRPcGVyYXRvcihTdWJzdHJpbmcpLCBvcGVyYXRvcnMuZ2V0T3BlcmF0b3IoRXF1YWxzKSwgb3BlcmF0b3JzLmdldE9wZXJhdG9yKE5vdEVxdWFscyldLFxuICAgICAgICAgICAgYCR7Q2FzZVZpc3VhbElkLl9pMThufS5uYW1lYCxcbiAgICAgICAgICAgIFNlYXJjaElucHV0VHlwZS5URVhULFxuICAgICAgICAgICAgbG9nZ2VyLFxuICAgICAgICAgICAgb3BlcmF0b3JzKTtcbiAgICB9XG5cbiAgICBnZXQgaW5wdXRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7Q2FzZVZpc3VhbElkLl9pMThufS5wbGFjZWhvbGRlcmA7XG4gICAgfVxuXG4gICAgZHVwbGljYXRlKCk6IENhc2VWaXN1YWxJZCB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FzZVZpc3VhbElkKHRoaXMuX29wZXJhdG9yU2VydmljZSwgdGhpcy5fbG9nKTtcbiAgICB9XG5cbiAgICBzZXJpYWxpemVDbGFzcygpOiBDYXRlZ29yaWVzIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIENhdGVnb3JpZXMuQ0FTRV9WSVNVQUxfSUQ7XG4gICAgfVxufVxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS12aXN1YWwtaWQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbmV0Z3JpZi9jb21wb25lbnRzLWNvcmUvIiwic291cmNlcyI6WyJsaWIvc2VhcmNoL21vZGVscy9jYXRlZ29yeS9jYXNlL2Nhc2UtdmlzdWFsLWlkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFHOUM7SUFBa0MsZ0NBQStCO0lBSTdELHNCQUFZLFNBQTBCLEVBQUUsTUFBcUIsRUFBWSxxQkFBNEM7UUFBckgsWUFDSSxrQkFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFDeEIsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUNoRyxZQUFZLENBQUMsS0FBSyxVQUFPLEVBQzVCLGVBQWUsQ0FBQyxJQUFJLEVBQ3BCLE1BQU0sRUFDTixTQUFTLENBQUMsU0FDakI7UUFQd0UsMkJBQXFCLEdBQXJCLHFCQUFxQixDQUF1Qjs7SUFPckgsQ0FBQztJQUVELHNCQUFJLDBDQUFnQjthQUFwQjtZQUNJLE9BQVUsWUFBWSxDQUFDLEtBQUssaUJBQWMsQ0FBQztRQUMvQyxDQUFDOzs7T0FBQTtJQUVELGdDQUFTLEdBQVQ7UUFDSSxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRCxxQ0FBYyxHQUFkO1FBQ0ksT0FBTyxVQUFVLENBQUMsY0FBYyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxzQkFBYyx5Q0FBZTthQUE3QjtZQUNJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtnQkFDOUIsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDO2dCQUNoRSxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDNUY7aUJBQU07Z0JBQ0gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7YUFDaEM7UUFDTCxDQUFDOzs7T0FBQTtJQTlCdUIsa0JBQUssR0FBRywrQkFBK0IsQ0FBQztJQStCcEUsbUJBQUM7Q0FBQSxBQWpDRCxDQUFrQyx1QkFBdUIsR0FpQ3hEO1NBakNZLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09wZXJhdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vb3BlcmF0b3Itc2VydmljZS9vcGVyYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7U3Vic3RyaW5nfSBmcm9tICcuLi8uLi9vcGVyYXRvci9zdWJzdHJpbmcnO1xuaW1wb3J0IHtTZWFyY2hJbnB1dFR5cGV9IGZyb20gJy4uL3NlYXJjaC1pbnB1dC10eXBlJztcbmltcG9ydCB7Tm9Db25maWd1cmF0aW9uQ2F0ZWdvcnl9IGZyb20gJy4uL25vLWNvbmZpZ3VyYXRpb24tY2F0ZWdvcnknO1xuaW1wb3J0IHtFcXVhbHN9IGZyb20gJy4uLy4uL29wZXJhdG9yL2VxdWFscyc7XG5pbXBvcnQge05vdEVxdWFsc30gZnJvbSAnLi4vLi4vb3BlcmF0b3Ivbm90LWVxdWFscyc7XG5pbXBvcnQge0NhdGVnb3JpZXN9IGZyb20gJy4uL2NhdGVnb3JpZXMnO1xuaW1wb3J0IHtDYXNlU2VhcmNofSBmcm9tICcuL2Nhc2Utc2VhcmNoLmVudW0nO1xuaW1wb3J0IHtPcHRpb25hbERlcGVuZGVuY2llc30gZnJvbSAnLi4vLi4vLi4vY2F0ZWdvcnktZmFjdG9yeS9vcHRpb25hbC1kZXBlbmRlbmNpZXMnO1xuXG5leHBvcnQgY2xhc3MgQ2FzZVZpc3VhbElkIGV4dGVuZHMgTm9Db25maWd1cmF0aW9uQ2F0ZWdvcnk8c3RyaW5nPiB7XG5cbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaTE4biA9ICdzZWFyY2guY2F0ZWdvcnkuY2FzZS52aXN1YWxJZCc7XG5cbiAgICBjb25zdHJ1Y3RvcihvcGVyYXRvcnM6IE9wZXJhdG9yU2VydmljZSwgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwcm90ZWN0ZWQgX29wdGlvbmFsRGVwZW5kZW5jaWVzPzogT3B0aW9uYWxEZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgc3VwZXIoW0Nhc2VTZWFyY2guVklTVUFMX0lEXSxcbiAgICAgICAgICAgIFtvcGVyYXRvcnMuZ2V0T3BlcmF0b3IoU3Vic3RyaW5nKSwgb3BlcmF0b3JzLmdldE9wZXJhdG9yKEVxdWFscyksIG9wZXJhdG9ycy5nZXRPcGVyYXRvcihOb3RFcXVhbHMpXSxcbiAgICAgICAgICAgIGAke0Nhc2VWaXN1YWxJZC5faTE4bn0ubmFtZWAsXG4gICAgICAgICAgICBTZWFyY2hJbnB1dFR5cGUuVEVYVCxcbiAgICAgICAgICAgIGxvZ2dlcixcbiAgICAgICAgICAgIG9wZXJhdG9ycyk7XG4gICAgfVxuXG4gICAgZ2V0IGlucHV0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke0Nhc2VWaXN1YWxJZC5faTE4bn0ucGxhY2Vob2xkZXJgO1xuICAgIH1cblxuICAgIGR1cGxpY2F0ZSgpOiBDYXNlVmlzdWFsSWQge1xuICAgICAgICByZXR1cm4gbmV3IENhc2VWaXN1YWxJZCh0aGlzLl9vcGVyYXRvclNlcnZpY2UsIHRoaXMuX2xvZywgdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMpO1xuICAgIH1cblxuICAgIHNlcmlhbGl6ZUNsYXNzKCk6IENhdGVnb3JpZXMgfCBzdHJpbmcge1xuICAgICAgICByZXR1cm4gQ2F0ZWdvcmllcy5DQVNFX1ZJU1VBTF9JRDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGVsYXN0aWNLZXl3b3JkcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgaWYgKCEhdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5fb3B0aW9uYWxEZXBlbmRlbmNpZXMuc2VhcmNoSW5kZXhSZXNvbHZlcjtcbiAgICAgICAgICAgIHJldHVybiBbcmVzb2x2ZXIuZ2V0Q29yZUluZGV4KENhc2VTZWFyY2guVklTVUFMX0lELCB0aGlzLmlzU2VsZWN0ZWRPcGVyYXRvcihTdWJzdHJpbmcpKV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxhc3RpY0tleXdvcmRzO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19