@eo-sdk/client 8.0.1 → 8.3.0-rc.1

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 (37) hide show
  1. package/README.md +2 -2
  2. package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts +10 -2
  3. package/app/eo-framework/object-details/object-history/object-history.component.d.ts +3 -2
  4. package/app/eo-framework-core/api/plugins.service.d.ts +3 -2
  5. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +26 -14
  6. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
  7. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
  8. package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
  9. package/bundles/eo-sdk-client.umd.js +86 -27
  10. package/bundles/eo-sdk-client.umd.js.map +1 -1
  11. package/bundles/eo-sdk-client.umd.min.js +1 -1
  12. package/bundles/eo-sdk-client.umd.min.js.map +1 -1
  13. package/eo-sdk-client.metadata.json +1 -1
  14. package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
  15. package/esm2015/app/eo-framework/form-elements/datetime/datepicker/datepicker.component.js +2 -2
  16. package/esm2015/app/eo-framework/form-elements/datetime/datetime.component.js +2 -2
  17. package/esm2015/app/eo-framework/form-elements/id-reference/id-reference.component.js +52 -7
  18. package/esm2015/app/eo-framework/inbox-details/inbox-details.component.js +5 -6
  19. package/esm2015/app/eo-framework/object-details/object-history/object-history.component.js +14 -7
  20. package/esm2015/app/eo-framework/object-form/object-form/object-form.component.js +2 -2
  21. package/esm2015/app/eo-framework/process/details/process-details.component.js +6 -9
  22. package/esm2015/app/eo-framework/process/history/process-history.component.js +2 -2
  23. package/esm2015/app/eo-framework-core/api/plugins.service.js +10 -3
  24. package/esm2015/projects/eo-sdk/core/lib/config/translate-json-loader.js +10 -1
  25. package/esm2015/projects/eo-sdk/core/lib/model/dms-object-history.model.js +1 -1
  26. package/esm2015/projects/eo-sdk/core/lib/model/eo-user.model.js +2 -2
  27. package/esm2015/projects/eo-sdk/core/lib/service/bpm/bpm.service.js +1 -1
  28. package/esm2015/projects/eo-sdk/core/lib/service/dms/dms.service.js +5 -3
  29. package/esm2015/projects/eo-sdk/core/lib/service/search/search.service.js +4 -4
  30. package/esm2015/projects/eo-sdk/core/lib/service/user/user.service.js +7 -6
  31. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +23 -11
  32. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
  33. package/fesm2015/eo-sdk-client.js +82 -28
  34. package/fesm2015/eo-sdk-client.js.map +1 -1
  35. package/package.json +2 -2
  36. package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
  37. package/projects/eo-sdk/core/package.json +1 -1
@@ -352,16 +352,14 @@ export class InboxDetailsComponent extends UnsubscribeOnDestroy {
352
352
  setupWorkItem() {
353
353
  this.locked = this.workItem.state === 'PERSON';
354
354
  this.preventClickThrough = true;
355
- setTimeout(() => {
356
- this.preventClickThrough = false;
357
- }, 1000);
355
+ setTimeout(() => this.preventClickThrough = false, 1000);
358
356
  const { form, data } = this.workItem;
359
357
  const workItem = { form, data };
360
358
  this.workItemIndexdata = form && data ? workItem : null;
361
359
  // fetch history
362
360
  this.bpmService
363
361
  .getProcessHistory(this.workItem.processId)
364
- .subscribe(res => {
362
+ .pipe(map(res => {
365
363
  res.forEach(item => {
366
364
  if (item.editor) {
367
365
  item.data.image = this.userService.getUserImageUri(item.editor.id);
@@ -370,7 +368,8 @@ export class InboxDetailsComponent extends UnsubscribeOnDestroy {
370
368
  // sort by number because this is the auto-incrementing
371
369
  // index of added history entries
372
370
  this.history = res.sort((a, b) => b.number - a.number);
373
- });
371
+ }))
372
+ .subscribe();
374
373
  }
375
374
  trackByCode(index, item) {
376
375
  return item.code;
@@ -430,4 +429,4 @@ InboxDetailsComponent.propDecorators = {
430
429
  onDmsItemSelected: [{ type: Output }],
431
430
  dataType: [{ type: HostBinding, args: ['attr.data-type',] }]
432
431
  };
433
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3gtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9pbmJveC1kZXRhaWxzL2luYm94LWRldGFpbHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RSxPQUFPLEVBRUwsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxVQUFVLEVBRVYsZUFBZSxFQUNmLGdCQUFnQixFQUVoQixVQUFVLEVBQ1YsWUFBWSxFQUVaLFNBQVMsRUFDVCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsS0FBSyxFQUlOLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTFELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQ3RHLE9BQU8sRUFFTCxnQkFBZ0IsRUFDakIsTUFBTSxxREFBcUQsQ0FBQztBQUk3RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUVqRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQU8vRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsb0JBQW9CO0lBcUU3RCxZQUNVLFVBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLFlBQTBCLEVB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QUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FDckQsQ0FBQztRQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OztZQTVmRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIseXJWQUE2Qzs7YUFFOUM7OztZQXRDQyxVQUFVO1lBWVYsV0FBVztZQUhYLFlBQVk7WUFlWixnQkFBZ0I7WUExQlEsTUFBTTtZQVE5QixZQUFZO1lBSFosZ0JBQWdCO1lBUWhCLGdCQUFnQjtZQVVWLHFCQUFxQjtZQVgzQixvQkFBb0I7Ozt3QkErQm5CLFNBQVMsU0FBQyxTQUFTO3dCQW1DbkIsZUFBZSxTQUFDLGlCQUFpQjt5QkFDakMsZUFBZSxTQUFDLGtCQUFrQjt5QkFJbEMsS0FBSzs2QkFDTCxLQUFLO21CQUVMLEtBQUssU0FBQyxNQUFNO2dDQWtCWixNQUFNO3VCQUVOLFdBQVcsU0FBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NlbGxSZW5kZXJlcn0gZnJvbSAnLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9hcGkvZ3JpZC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge05hdmlnYXRpb25FeHRyYXMsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtcclxuICBCcG1TZXJ2aWNlLFxyXG4gIENsaXBib2FyZCxcclxuICBDbGlwYm9hcmRBY3Rpb24sXHJcbiAgQ2xpcGJvYXJkU2VydmljZSxcclxuICBEbXNQYXJhbXMsXHJcbiAgRW5haW9FdmVudCxcclxuICBFdmVudFNlcnZpY2UsXHJcbiAgRmlsZUVudHJ5LFxyXG4gIEluYm94SXRlbSxcclxuICBJbmJveFNlcnZpY2UsXHJcbiAgTm90aWZpY2F0aW9uc1NlcnZpY2UsXHJcbiAgVHJhbnNsYXRlU2VydmljZSxcclxuICBVc2VyU2VydmljZSxcclxuICBVdGlscyxcclxuICBXb3JrSXRlbSxcclxuICBXb3JrSXRlbUFjdGlvbixcclxuICBXb3JrSXRlbUhpc3RvcnlFbnRyeVxyXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtjYXRjaEVycm9yLCBtYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0VtcHR5U3RhdGV9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFNlbGVjdGlvbkNvbmZpZyxcclxuICBTZWxlY3Rpb25TZXJ2aWNlXHJcbn0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvc2VsZWN0aW9uL3NlbGVjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybS9mb3JtLXN0YXR1cy1jaGFuZ2VkLWV2ZW50LmludGVyZmFjZSc7XHJcbmltcG9ydCB7T2JqZWN0Rm9ybU9wdGlvbnN9IGZyb20gJy4uL29iamVjdC1mb3JtL29iamVjdC1mb3JtLW9wdGlvbnMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtPYmplY3RGb3JtQ29tcG9uZW50fSBmcm9tICcuLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1RhYlBsdWdpbkNvbXBvbmVudH0gZnJvbSAnLi4vcGx1Z2lucy9wbHVnaW4uY29tcG9uZW50JztcclxuaW1wb3J0IHtUYWJQYW5lbENvbXBvbmVudH0gZnJvbSAnLi4vdGFiLWNvbnRhaW5lci90YWItcGFuZWwvdGFiLXBhbmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7SW5kZXhEYXRhfSBmcm9tICcuLi91aS9pbmRleGRhdGEtc3VtbWFyeS9pbmRleGRhdGEtc3VtbWFyeS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1Vuc3Vic2NyaWJlT25EZXN0cm95fSBmcm9tICcuLi91dGlsL3Vuc3Vic2NyaWJlL3Vuc3Vic2NyaWJlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLWluYm94LWRldGFpbHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmJveC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbmJveC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEluYm94RGV0YWlsc0NvbXBvbmVudCBleHRlbmRzIFVuc3Vic2NyaWJlT25EZXN0cm95XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2JwbUZvcm0nKSBicG1Gb3JtRWw6IE9iamVjdEZvcm1Db21wb25lbnQ7XHJcblxyXG4gIHByaXZhdGUgZGVmYXVsdFdvcmtJdGVtQWN0aW9uOiBXb3JrSXRlbUFjdGlvbjtcclxuXHJcbiAgLy8gSUQgc2V0IGJ5IHBlbmRpbmdDaGFuZ2VzIHNlcnZpY2Ugd2hlbiBlZGl0aW5nIGluZGV4ZGF0YVxyXG4gIC8vIFVzZWQgdG8gZmluaXNoIHRoZSBwZW5kaW5nIHRhc2sgd2hlbiBlZGl0aW5nIGlzIGRvbmVcclxuICBwcml2YXRlIHBlbmRpbmdUYXNrSWQ6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSBfaXRlbTogSW5ib3hJdGVtO1xyXG4gIHdvcmtJdGVtOiBXb3JrSXRlbTtcclxuICBoaXN0b3J5OiBXb3JrSXRlbUhpc3RvcnlFbnRyeVtdO1xyXG4gIC8vIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgd29yayBpdGVtIGlzIGxvY2tlZCBieSB0aGUgdXNlclxyXG4gIGxvY2tlZDogYm9vbGVhbjtcclxuICAvLyBDT09MLTExNTA2XHJcbiAgcHJldmVudENsaWNrVGhyb3VnaDogYm9vbGVhbjtcclxuICAvLyBjdXJyZW50IGNsaXBib2FyZCBjb250ZW50c1xyXG4gIGNsaXBib2FyZDogQ2xpcGJvYXJkO1xyXG5cclxuICAvLyB1c2VkIGZvciBoYW5kbGluZyBTVUJTQ1JJUFRJT05TIGFuZCBSRVNVQk1JU1NJT05TXHJcbiAgc2V0dGluZ3M6IHtcclxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgICBhY3Rpb25UaXRsZTogc3RyaW5nO1xyXG4gIH07XHJcbiAgZm9ybVN0YXRlOiBGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50O1xyXG4gIGZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucztcclxuICBzZWxlY3RlZENvbnRlbnRGaWxlSWQ6IHN0cmluZztcclxuICB3b3JrSXRlbUluZGV4ZGF0YTogSW5kZXhEYXRhO1xyXG4gIHBlcmZvcm1lclNob3c6IGJvb2xlYW47XHJcbiAgc3Vic3RpdHV0ZVNob3c6IGJvb2xlYW47XHJcbiAgYWN0aW9uUHJvY2Vzc2luZzogU3Vic2NyaXB0aW9uIHwgYW55ID0ge2Nsb3NlZDogdHJ1ZX07XHJcbiAgaW5pdGlhbGl6aW5nOiBTdWJzY3JpcHRpb24gfCBhbnkgPSB7Y2xvc2VkOiB0cnVlfTtcclxuICBmaWxlc0FkZGluZzogU3Vic2NyaXB0aW9uIHwgYW55ID0ge2Nsb3NlZDogdHJ1ZX07XHJcbiAgbG9hZEVycm9yOiBib29sZWFuO1xyXG5cclxuICBleHRlcm5hbFBhbmVscyA9IG5ldyBRdWVyeUxpc3Q8VGFiUGFuZWxDb21wb25lbnQ+KCk7XHJcbiAgQENvbnRlbnRDaGlsZHJlbihUYWJQYW5lbENvbXBvbmVudCkgdGFiUGFuZWxzOiBRdWVyeUxpc3Q8VGFiUGFuZWxDb21wb25lbnQ+O1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiUGx1Z2luQ29tcG9uZW50KSB0YWJQbHVnaW5zOiBRdWVyeUxpc3Q8XHJcbiAgICBUYWJQbHVnaW5Db21wb25lbnRcclxuICA+O1xyXG5cclxuICBASW5wdXQoKSBlbXB0eVN0YXRlOiBFbXB0eVN0YXRlO1xyXG4gIEBJbnB1dCgpIGFwcGx5U2VsZWN0aW9uOiBTZWxlY3Rpb25Db25maWc7XHJcblxyXG4gIEBJbnB1dCgnaXRlbScpXHJcbiAgc2V0IGl0ZW0oaTogSW5ib3hJdGVtKSB7XHJcbiAgICB0aGlzLl9pdGVtID0gaTtcclxuICAgIGlmIChpKSB7XHJcbiAgICAgIC8vIHJlc2V0IHZhbHVlc1xyXG4gICAgICB0aGlzLndvcmtJdGVtID0gbnVsbDtcclxuICAgICAgdGhpcy5oaXN0b3J5ID0gW107XHJcbiAgICAgIHRoaXMubG9ja2VkID0gZmFsc2U7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wcm9jZXNzKCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLm91dCkuZm9jdXMobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaXRlbSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pdGVtO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG9uRG1zSXRlbVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxEbXNQYXJhbXM+KCk7XHJcblxyXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXR5cGUnKSBnZXQgZGF0YVR5cGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtID8gdGhpcy5pdGVtLnR5cGUgOiAnbm9uZSc7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYnBtU2VydmljZTogQnBtU2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBpbmJveFNlcnZpY2U6IEluYm94U2VydmljZSxcclxuICAgIHByaXZhdGUgc2VsZWN0aW9uOiBTZWxlY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNsaXBib2FyZFNlcnZpY2U6IENsaXBib2FyZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZ5OiBOb3RpZmljYXRpb25zU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuZGVmYXVsdFdvcmtJdGVtQWN0aW9uID0ge1xyXG4gICAgICAgIGNvZGU6IDAsXHJcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MudGFzay5hY3Rpb25zLmRlZmF1bHQudGl0bGUnKSxcclxuICAgICAgICB0eXBlOiAnRk9SV0FSRCdcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbS50eXBlID09PSBJbmJveEl0ZW0uVFlQRV9CUE0pIHtcclxuICAgICAgdGhpcy5jcmVhdGVCUE1Xb3JrSXRlbSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pdGVtID0gdGhpcy5faXRlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRm9ybVN0YXR1c0NoYW5nZWQoZXZ0OiBGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50KSB7XHJcbiAgICB0aGlzLmZvcm1TdGF0ZSA9IGV2dDtcclxuICAgIGlmICh0aGlzLmZvcm1TdGF0ZS5kaXJ0eSkge1xyXG4gICAgICB0aGlzLnN0YXJ0UGVuZGluZygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXJ0UGVuZGluZygpIHtcclxuICAgIC8vIGJlY2F1c2UgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgZXZlcnkgdGltZSB0aGUgZm9ybSBzdGF0dXMgY2hhbmdlcyxcclxuICAgIC8vIHBlbmRpbmcgdGFzayB3aWxsIG9ubHkgYmUgc3RhcnRlZCBvbmNlIHVudGlsIGl0IHdhcyBmaW5pc2hlZFxyXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XHJcbiAgICAgIHRoaXMucGVuZGluZ1Rhc2tJZCA9IHRoaXMucGVuZGluZ0NoYW5nZXMuc3RhcnRUYXNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZpbmlzaFBlbmRpbmcoKSB7XHJcbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzLmZpbmlzaFRhc2sodGhpcy5wZW5kaW5nVGFza0lkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb2Nlc3MgdGhlIGN1cnJlbnQgaW5ib3ggaXRlbVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcHJvY2VzcygpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZEVycm9yID0gZmFsc2U7XHJcbiAgICB0aGlzLmluaXRpYWxpemluZy5jbG9zZWQgPSBmYWxzZTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuaXRlbS50eXBlKSB7XHJcbiAgICAgIGNhc2UgSW5ib3hJdGVtLlRZUEVfQlBNOiB7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXppbmcgPSB0aGlzLmNyZWF0ZUJQTVdvcmtJdGVtKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBJbmJveEl0ZW0uVFlQRV9TVUJTQ1JJUFRJT046IHtcclxuICAgICAgICB0aGlzLmNyZWF0ZURNU0l0ZW0oJ3N1YnNjcmlwdGlvbicpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgSW5ib3hJdGVtLlRZUEVfUkVTVUJNSVNTSU9OOiB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVETVNJdGVtKCdyZXN1Ym1pc3Npb24nKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JlYXRlRE1TSXRlbShkbXNUeXBlKSB7XHJcbiAgICB0aGlzLnNldHRpbmdzID0ge1xyXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICBgZW8ucHJvY2Vzcy5kZXRhaWxzLnRhc2suJHtkbXNUeXBlfS5kZXNjcmlwdGlvbmBcclxuICAgICAgKSxcclxuICAgICAgYWN0aW9uVGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgYGVvLnByb2Nlc3MuZGV0YWlscy5idXR0b24uJHtkbXNUeXBlfS5yZW1vdmVgXHJcbiAgICAgIClcclxuICAgIH07XHJcbiAgICB0aGlzLm9wZW5Xb3JrSXRlbUNvbnRlbnQodGhpcy5pdGVtLnRhcmdldCk7XHJcbiAgICB0aGlzLmluaXRpYWxpemluZy5jbG9zZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGREZWZhdWx0QWN0aW9uSWZFbXB0eSA9IChyZXM6IFdvcmtJdGVtKTogV29ya0l0ZW0gPT4ge1xyXG4gICAgaWYoIXJlcy5hY3Rpb25zPy5sZW5ndGgpe1xyXG4gICAgICByZXMuYWN0aW9ucyA9IFt0aGlzLmRlZmF1bHRXb3JrSXRlbUFjdGlvbl07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIGl0ZW1zIG9mIHR5cGUgJ0JQTScgZmV0Y2ggd29yayBpdGVtIGZvciBtb3JlIGluZm9ybWF0aW9uc1xyXG4gIGNyZWF0ZUJQTVdvcmtJdGVtKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYnBtU2VydmljZVxyXG4gICAgICAuZ2V0V29ya0l0ZW0odGhpcy5pdGVtLnNvdXJjZUlkLCB0aGlzLml0ZW0uaWQpXHJcbiAgICAgIC5waXBlKG1hcCh0aGlzLmFkZERlZmF1bHRBY3Rpb25JZkVtcHR5KSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgdGhpcy53b3JrSXRlbSA9IHJlcztcclxuICAgICAgICAgIHRoaXMuc2V0dXBXb3JrSXRlbSgpO1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtT3B0aW9ucyhcclxuICAgICAgICAgICAgdGhpcy53b3JrSXRlbS5mb3JtLFxyXG4gICAgICAgICAgICB0aGlzLndvcmtJdGVtLmRhdGEsXHJcbiAgICAgICAgICAgIHRoaXMud29ya0l0ZW0uYWN0aW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIC8vIGF1dG8tc2VsZWN0IGZpcnN0IGF0dGFjaGVkIGNvbnRlbnRcclxuICAgICAgICAgIHRoaXMub3BlbldvcmtJdGVtQ29udGVudChcclxuICAgICAgICAgICAgdGhpcy53b3JrSXRlbS5maWxlLmxlbmd0aCA/IHRoaXMud29ya0l0ZW0uZmlsZVswXSA6IG51bGxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmeS5lcnJvcihcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5kZXRhaWxzLndvcmtpdGVtLmxvYWQuZmFpbCcpLFxyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAgICdlby5wcm9jZXNzLmRldGFpbHMud29ya2l0ZW0ubG9hZC5mYWlsLmRlc2NyaXB0aW9uJ1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Rm9ybU9wdGlvbnMoZm9ybSwgZGF0YSwgYWN0aW9uczogV29ya0l0ZW1BY3Rpb25bXSkge1xyXG4gICAgaWYgKGZvcm0pIHtcclxuICAgICAgZm9ybS5zaXR1YXRpb24gPSAnRURJVCc7XHJcbiAgICAgIHRoaXMuZm9ybU9wdGlvbnMgPSB7XHJcbiAgICAgICAgLi4ue1xyXG4gICAgICAgICAgZm9ybU1vZGVsOiBmb3JtLFxyXG4gICAgICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgICAgIGFjdGlvbnM6IGFjdGlvbnMgPyB0aGlzLnRyYW5zZm9ybUFjdGlvbnMoYWN0aW9ucykgOiB7fSxcclxuICAgICAgICAgIC8vIGZvcm0gc2NyaXB0IHdpbGwgYmUgcHJvdmlkZWQgd2l0aCB0aGUgbGlzdCBvZiBmaWxlIGVudHJpZXNcclxuICAgICAgICAgIC8vIGF0dGFjaGVkIHRvIHRoZSBjdXJyZW50IHdvcmsgaXRlbVxyXG4gICAgICAgICAgb2JqZWN0czogdGhpcy53b3JrSXRlbS5maWxlXHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50cmFuc2Zvcm1BY3Rpb25zKGFjdGlvbnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVJbmJveFNhdGUoKSB7XHJcbiAgICB0aGlzLmluYm94U2VydmljZS5yZWZyZXNoSW5ib3hTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2Zvcm1BY3Rpb25zKGFjdGlvbnMpIHtcclxuICAgIGxldCB0cmFuc2Zvcm1lZEFjdGlvbnMgPSB7fTtcclxuICAgIGFjdGlvbnMuZm9yRWFjaChhID0+IHtcclxuICAgICAgaWYgKGEuZmVhc2libGUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGEuZmVhc2libGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGEuZmVhc2liaWxpdHkgPSB2YWx1ZSA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGEuZmVhc2libGUgPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGEuZmVhc2libGU7XHJcbiAgICAgIH07XHJcbiAgICAgIHRyYW5zZm9ybWVkQWN0aW9uc1thLmNvZGUudG9TdHJpbmcoKV0gPSBhO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdHJhbnNmb3JtZWRBY3Rpb25zO1xyXG4gIH1cclxuXHJcbiAgLyogTG9ja3MgYSB3b3JrIGl0ZW0gKHBlcnNvbmFsaXplKSAqL1xyXG4gIGxvY2tXb3JrSXRlbSgpIHtcclxuICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuYnBtU2VydmljZVxyXG4gICAgICAubG9ja1dvcmtJdGVtKHRoaXMud29ya0l0ZW0pXHJcbiAgICAgIC5waXBlKG1hcCh0aGlzLmFkZERlZmF1bHRBY3Rpb25JZkVtcHR5KSlcclxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIGNvbnN0IHthY3Rpb25zLCBkYXRhLCBmb3JtfSA9IHJlcztcclxuICAgICAgICB0aGlzLndvcmtJdGVtID0gcmVzO1xyXG4gICAgICAgIHRoaXMuc2V0dXBXb3JrSXRlbSgpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybU9wdGlvbnMoZm9ybSwgZGF0YSwgYWN0aW9ucyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVJbmJveFNhdGUoKTtcclxuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5hY3Rpdml0eS5sb2NrLmRlbmllZCcpLCB0aGlzLndvcmtJdGVtLnRpdGxlKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVbi1Mb2NrcyBhIHdvcmsgaXRlbSAoZGUtcGVyc29uYWxpemUpXHJcbiAgICovXHJcbiAgdW5sb2NrV29ya0l0ZW0oKSB7XHJcbiAgICBpZighdGhpcy5wZW5kaW5nQ2hhbmdlcy5jaGVjaygpKXtcclxuICAgICAgdGhpcy5hY3Rpb25Qcm9jZXNzaW5nID0gdGhpcy5icG1TZXJ2aWNlXHJcbiAgICAgICAgLnVubG9ja1dvcmtJdGVtKHRoaXMud29ya0l0ZW0pXHJcbiAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgdGhpcy53b3JrSXRlbSA9IHJlcztcclxuICAgICAgICAgIHRoaXMuc2V0dXBXb3JrSXRlbSgpO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVJbmJveFNhdGUoKTtcclxuICAgICAgICB9LCBVdGlscy50aHJvdyhudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcm9jZXNzLmFjdGl2aXR5LnVubG9jay5kZW5pZWQnKSwgdGhpcy53b3JrSXRlbS50aXRsZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYSB3b3JrIGl0ZW1zIGFjdGlvbi5cclxuICAgKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb24gdG8gYmUgZXhlY3V0ZXNcclxuICAgKi9cclxuICBleGVjdXRlV29ya0l0ZW1BY3Rpb24oYWN0aW9uOiBXb3JrSXRlbUFjdGlvbikge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5mb3JtU3RhdGUgfHwgIXRoaXMuZm9ybVN0YXRlLmludmFsaWQpIHtcclxuICAgICAgICBpZiAoYWN0aW9uLnVybCkge1xyXG4gICAgICAgICAgLy8gcHJvY2VzcyBleHRlcm5hbCBhY3Rpb24gYnkgc2F2aW5nIHdvcmsgaXRlbSBhbmQgcmVkaXJlY3QgdG8gYWN0aW9ucyB1cmxcclxuICAgICAgICAgIGlmICh0aGlzLmJwbUZvcm1FbCkge1xyXG4gICAgICAgICAgICB0aGlzLmFjdGlvblByb2Nlc3NpbmcgPSB0aGlzLnNhdmVXb3JrSXRlbSgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcGVuQWN0aW9uVXJsKGFjdGlvbi51cmwpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbkFjdGlvblVybChhY3Rpb24udXJsKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHRoaXMuYnBtRm9ybUVsKSB7XHJcbiAgICAgICAgICAgIHRoaXMud29ya0l0ZW0uZGF0YSA9IHRoaXMuYnBtRm9ybUVsLmdldEZvcm1EYXRhKCk7XHJcbiAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gcmVtb3ZlIHBlbmRpbmcgdGFzayBiZWNhdXNlIHRoZSBmb3JtIHdpbGwgYmUgZGVzdHJveWVkIHdpdGhvdXQgc2F2aW5nXHJcbiAgICAgICAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5icG1TZXJ2aWNlXHJcbiAgICAgICAgICAgIC5mb3J3YXJkV29ya0l0ZW0odGhpcy53b3JrSXRlbSwgYWN0aW9uKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm5vdGlmeS5zdWNjZXNzKFxyXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYnBtLmFjdGl2aXR5LmZvcndhcmQuc3VjY2VzcycpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtLnRpdGxlXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYnBtLmFjdGl2aXR5LmZvcndhcmQuZXJyb3InKSwgdGhpcy53b3JrSXRlbS50aXRsZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb3BlbkFjdGlvblVybCh1cmw6IHN0cmluZykge1xyXG4gICAgaWYgKHVybC5zdWJzdHIoMCwgNCkgPT09ICdodHRwJykge1xyXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdHMgYSB3b3JrIGl0ZW1zIGZpbGUgZW50cnkgYW4gZW1pdHMgb25EbXNJdGVtU2VsZWN0ZWQgZXZlbnQuXHJcbiAgICogQHBhcmFtIGZpbGUgRmlsZUVudHJ5IGVsZW1lbnQgdG8gYmUgc2VsZWN0ZWRcclxuICAgKi9cclxuICBvcGVuV29ya0l0ZW1Db250ZW50KGZpbGU/OiBGaWxlRW50cnkpIHtcclxuICAgIGlmICghZmlsZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29udGVudEZpbGVJZCA9IG51bGw7XHJcbiAgICAgIHRoaXMub25EbXNJdGVtU2VsZWN0ZWQuZW1pdChudWxsKTtcclxuICAgICAgaWYgKHRoaXMuYXBwbHlTZWxlY3Rpb24pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbi5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24ub3V0KS5mb2N1cyhudWxsKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvbnRlbnRGaWxlSWQgPSBmaWxlLmlkO1xyXG4gICAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICAgIGlkOiBmaWxlLmlkLFxyXG4gICAgICAgIHR5cGU6IGZpbGUudHlwZVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLm9uRG1zSXRlbVNlbGVjdGVkLmVtaXQocGFyYW1zKTtcclxuICAgICAgaWYgKHRoaXMuYXBwbHlTZWxlY3Rpb24pIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGlvbi5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24ub3V0KS5mb2N1cyhwYXJhbXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVucyB0aGUgZmlsZSAoYXR0YWNoZWQgRE1TT2JqZWN0KSBpbiBvYmplY3Qgc3RhdGVcclxuICAgKiBAcGFyYW0gZmlsZVxyXG4gICAqL1xyXG4gIG9wZW5Xb3JrSXRlbUNvbnRlbnRJbkNvbnRleHQoZXZ0KSB7XHJcbiAgICBjb25zdCBmaWxlOiBGaWxlRW50cnkgPSBldnQuZGF0YSB8fCB7fTtcclxuICAgIGNvbnN0IGZpbGVUeXBlOiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7dHlwZTogZmlsZS50eXBlfX07XHJcbiAgICBpZiAoZXZ0LmN0cmxLZXkpIHtcclxuICAgICAgd2luZG93Lm9wZW4oQ2VsbFJlbmRlcmVyLndpbmRvd1VSSSh0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFsnb2JqZWN0JywgZmlsZS5pZF0sIGZpbGVUeXBlKSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvb2JqZWN0JywgZmlsZS5pZF0sIGZpbGVUeXBlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHMgY2xpcGJvYXJkIGNvbnRlbnQgdG8gdGhlIHdvcmsgaXRlbVxyXG4gICAqL1xyXG4gIGFkZEZyb21DbGlwYm9hcmQoKSB7XHJcbiAgICB0aGlzLmJwbVNlcnZpY2VcclxuICAgICAgLmFkZEZpbGVFbGVtZW50c0Zyb21DbGlwYm9hcmQodGhpcy53b3JrSXRlbSwgdGhpcy5jbGlwYm9hcmQpXHJcbiAgICAgIC5zdWJzY3JpYmUod29ya0l0ZW0gPT4ge1xyXG4gICAgICAgIHRoaXMud29ya0l0ZW0gPSB3b3JrSXRlbTtcclxuICAgICAgICB0aGlzLmNsaXBib2FyZFNlcnZpY2UuY2xlYXIoKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkQ29udGVudEZpbGVJZCkge1xyXG4gICAgICAgICAgLy8gb3BlbiBmaXJzdCBpdGVtIHdoZW4gbm90aGluZyBpcyBzZWxlY3RlZFxyXG4gICAgICAgICAgdGhpcy5vcGVuV29ya0l0ZW1Db250ZW50KHRoaXMud29ya0l0ZW0uZmlsZVswXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCBVdGlscy50aHJvdyhudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcm9jZXNzLmZpbGUubm90aWZpY2F0aW9uLmVycm9yJyksIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZmlsZS5ub3RpZmljYXRpb24uYWRkLm1lc3NhZ2UnKSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGEgZmlsZSBlbnRyeSBmcm9tIHRoZSB3b3JrIGl0ZW1zIGZpbGVcclxuICAgKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSBlbnRyeSB0byBiZSByZW1vdmVkXHJcbiAgICogQHBhcmFtIGV2dCBUaGUgY2xpY2sgZXZlbnRcclxuICAgKi9cclxuICByZW1vdmVXb3JrSXRlbUNvbnRlbnQoZXZ0KSB7XHJcbiAgICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGlmIChldnQuZGF0YSkge1xyXG4gICAgICBjb25zdCBmaWxlOiBGaWxlRW50cnkgPSBldnQuZGF0YTtcclxuICAgICAgdGhpcy5icG1TZXJ2aWNlXHJcbiAgICAgICAgLnJlbW92ZUZpbGVFbGVtZW50KHRoaXMud29ya0l0ZW0ucHJvY2Vzc0lkLCB0aGlzLndvcmtJdGVtLmlkLCBmaWxlLmlkKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy53b3JrSXRlbS5maWxlID0gdGhpcy53b3JrSXRlbS5maWxlLmZpbHRlcihmID0+IGYuaWQgIT09IGZpbGUuaWQpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb250ZW50RmlsZUlkID09PSBmaWxlLmlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbldvcmtJdGVtQ29udGVudChcclxuICAgICAgICAgICAgICB0aGlzLndvcmtJdGVtLmZpbGUubGVuZ3RoID8gdGhpcy53b3JrSXRlbS5maWxlWzBdIDogbnVsbFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZmlsZS5ub3RpZmljYXRpb24ucmVtb3ZlJyksIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZmlsZS5ub3RpZmljYXRpb24ucmVtb3ZlLm1lc3NhZ2UnKSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2F2ZSB0aGUgd29yayBpdGVtcyBmb3JtIGRhdGFcclxuICAgKi9cclxuICBzYXZlV29ya0l0ZW1EYXRhKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmZvcm1TdGF0ZSAmJiAhdGhpcy5mb3JtU3RhdGUuaW52YWxpZCAmJiB0aGlzLmZvcm1TdGF0ZS5kaXJ0eSkge1xyXG4gICAgICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuc2F2ZVdvcmtJdGVtKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVJbmJveFNhdGUoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcblxyXG4gIHByZXBhcmVOZXdXb3JrSXRlbSh3b3JrSXRlbTogV29ya0l0ZW0pOiBib29sZWFuIHtcclxuICAgIHRoaXMud29ya0l0ZW0gPSB3b3JrSXRlbTtcclxuICAgIGNvbnN0IHthY3Rpb25zLCBmb3JtLCBkYXRhfSA9IHRoaXMud29ya0l0ZW07XHJcbiAgICB0aGlzLnNldHVwV29ya0l0ZW0oKTtcclxuICAgIHRoaXMuc2V0Rm9ybU9wdGlvbnMoZm9ybSwgZGF0YSwgYWN0aW9ucyk7XHJcbiAgICB0aGlzLm5vdGlmeS5zdWNjZXNzKFxyXG4gICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5icG0uYWN0aXZpdHkuaW5kZXhkYXRhLnNhdmUuc3VjY2VzcycpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYXZlcyB0aGUgY3VycmVudCB3b3JrIGl0ZW1cclxuICAgKi9cclxuICBwcml2YXRlIHNhdmVXb3JrSXRlbSgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy53b3JrSXRlbS5kYXRhID0gdGhpcy5icG1Gb3JtRWwuZ2V0Rm9ybURhdGEoKTtcclxuICAgIHJldHVybiB0aGlzLmJwbVNlcnZpY2Uuc2F2ZVdvcmtJdGVtKHRoaXMud29ya0l0ZW0pLnBpcGUoXHJcbiAgICAgIG1hcCh0aGlzLmFkZERlZmF1bHRBY3Rpb25JZkVtcHR5KSxcclxuICAgICAgbWFwKHdvcmtJdGVtID0+IHRoaXMucHJlcGFyZU5ld1dvcmtJdGVtKHdvcmtJdGVtKSksXHJcbiAgICAgIGNhdGNoRXJyb3IoXHJcbiAgICAgICAgVXRpbHMuY2F0Y2goXHJcbiAgICAgICAgICBudWxsLFxyXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYnBtLmFjdGl2aXR5LmluZGV4ZGF0YS5zYXZlLmVycm9yJylcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIHRoZSBjdXJyZW50IGl0ZW0gZnJvbSB0aGUgaW5ib3guXHJcbiAgICovXHJcbiAgY29uZmlybUluYm94SXRlbSgpIHtcclxuICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuaW5ib3hTZXJ2aWNlXHJcbiAgICAgIC5yZW1vdmVJdGVtKHRoaXMuaXRlbSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ub3RpZnkuc3VjY2VzcyhcclxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmluYm94LmFjdGl2aXR5LmNvbmZpcm0uc3VjY2VzcycpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuSU5CT1hfSVRFTV9DT05GSVJNRUQsIHRoaXMuaXRlbSk7XHJcbiAgICAgICAgdGhpcy5pbmJveFNlcnZpY2UucmVmcmVzaEluYm94U3RhdGUoKTtcclxuICAgICAgfSwgVXRpbHMuY2F0Y2gobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5pdGVtLnJlbW92ZS5mYWlsJykpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdXAgc3RhdGUgYW5kIGRhdGEgZm9yIHRoZSBjdXJyZW50IHdvcmsgaXRlbS5cclxuICAgKi9cclxuICBwcml2YXRlIHNldHVwV29ya0l0ZW0oKSB7XHJcbiAgICB0aGlzLmxvY2tlZCA9IHRoaXMud29ya0l0ZW0uc3RhdGUgPT09ICdQRVJTT04nO1xyXG4gICAgdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnByZXZlbnRDbGlja1Rocm91Z2ggPSBmYWxzZTtcclxuICAgIH0sIDEwMDApXHJcbiAgICBjb25zdCB7Zm9ybSwgZGF0YX0gPSB0aGlzLndvcmtJdGVtO1xyXG4gICAgY29uc3Qgd29ya0l0ZW0gPSB7Zm9ybSwgZGF0YX07XHJcbiAgICB0aGlzLndvcmtJdGVtSW5kZXhkYXRhID0gZm9ybSAmJiBkYXRhID8gd29ya0l0ZW0gOiBudWxsO1xyXG5cclxuICAgIC8vIGZldGNoIGhpc3RvcnlcclxuICAgIHRoaXMuYnBtU2VydmljZVxyXG4gICAgICAuZ2V0UHJvY2Vzc0hpc3RvcnkodGhpcy53b3JrSXRlbS5wcm9jZXNzSWQpXHJcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICByZXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgIGlmIChpdGVtLmVkaXRvcikge1xyXG4gICAgICAgICAgICBpdGVtLmRhdGEuaW1hZ2UgPSB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJJbWFnZVVyaShpdGVtLmVkaXRvci5pZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gc29ydCBieSBudW1iZXIgYmVjYXVzZSB0aGlzIGlzIHRoZSBhdXRvLWluY3JlbWVudGluZ1xyXG4gICAgICAgIC8vIGluZGV4IG9mIGFkZGVkIGhpc3RvcnkgZW50cmllc1xyXG4gICAgICAgIHRoaXMuaGlzdG9yeSA9IHJlcy5zb3J0KChhLCBiKSA9PiBiLm51bWJlciAtIGEubnVtYmVyKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5Q29kZShpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uY29kZTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlJZChpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SW5kZXgoaW5kZXgsIGl0ZW0pIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gc3Vic2NyaWJlIGZvciBjaGFuZ2VzIHRvIHRoZSBjbGlwYm9hcmQgdG8gZW5hYmxlIGFkZGluZyBjb250ZW50cyB0byB0aGUgd29yayBpdGVtXHJcbiAgICB0aGlzLmNsaXBib2FyZFNlcnZpY2UuY2xpcGJvYXJkJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoY2xpcGJvYXJkOiBDbGlwYm9hcmQpID0+XHJcbiAgICAgICAgICAodGhpcy5jbGlwYm9hcmQgPVxyXG4gICAgICAgICAgICBjbGlwYm9hcmQuYWN0aW9uID09PSBDbGlwYm9hcmRBY3Rpb24uQ09QWSA/IGNsaXBib2FyZCA6IG51bGwpXHJcbiAgICAgICk7XHJcbiAgICAvLyBjb21wb25lbnQgaXMgb25seSBpbnRlcmVzdGVkIGluIGNvcGllZCBpdGVtc1xyXG5cclxuICAgIGlmICh0aGlzLmFwcGx5U2VsZWN0aW9uKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uXHJcbiAgICAgICAgLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5pbilcclxuICAgICAgICAuZm9jdXMkLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoaXRlbTogYW55KSA9PiAodGhpcy5pdGVtID0gaXRlbSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgbGV0IHBhbmVscyA9IHRoaXMudGFiUGFuZWxzLnRvQXJyYXkoKTtcclxuICAgIHRoaXMudGFiUGx1Z2lucy5mb3JFYWNoKFxyXG4gICAgICBwID0+IChwYW5lbHMgPSBwYW5lbHMuY29uY2F0KHAudGFiUGFuZWxzLnRvQXJyYXkoKSkpXHJcbiAgICApO1xyXG4gICAgdGhpcy5leHRlcm5hbFBhbmVscy5yZXNldChwYW5lbHMpO1xyXG4gIH1cclxufVxyXG4iXX0=
432
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3gtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9pbmJveC1kZXRhaWxzL2luYm94LWRldGFpbHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RSxPQUFPLEVBRUwsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxVQUFVLEVBRVYsZUFBZSxFQUNmLGdCQUFnQixFQUVoQixVQUFVLEVBQ1YsWUFBWSxFQUVaLFNBQVMsRUFDVCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsS0FBSyxFQUlOLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTFELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQ3RHLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUl0RyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUVqRixPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQU8vRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsb0JBQW9CO0lBcUU3RCxZQUNVLFVBQXNCLEVBQ3RCLFdBQXdCLEVBQ3hCLFlBQTBCLEVB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Q0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQ3JELENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDOzs7WUEzZkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLHlyVkFBNkM7O2FBRTlDOzs7WUFuQ0MsVUFBVTtZQVlWLFdBQVc7WUFIWCxZQUFZO1lBYVcsZ0JBQWdCO1lBeEJmLE1BQU07WUFROUIsWUFBWTtZQUhaLGdCQUFnQjtZQVFoQixnQkFBZ0I7WUFVVixxQkFBcUI7WUFYM0Isb0JBQW9COzs7d0JBNEJuQixTQUFTLFNBQUMsU0FBUzt3QkFtQ25CLGVBQWUsU0FBQyxpQkFBaUI7eUJBQ2pDLGVBQWUsU0FBQyxrQkFBa0I7eUJBSWxDLEtBQUs7NkJBQ0wsS0FBSzttQkFFTCxLQUFLLFNBQUMsTUFBTTtnQ0FrQlosTUFBTTt1QkFFTixXQUFXLFNBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDZWxsUmVuZGVyZXJ9IGZyb20gJy4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvYXBpL2dyaWQuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7XHJcbiAgQnBtU2VydmljZSxcclxuICBDbGlwYm9hcmQsXHJcbiAgQ2xpcGJvYXJkQWN0aW9uLFxyXG4gIENsaXBib2FyZFNlcnZpY2UsXHJcbiAgRG1zUGFyYW1zLFxyXG4gIEVuYWlvRXZlbnQsXHJcbiAgRXZlbnRTZXJ2aWNlLFxyXG4gIEZpbGVFbnRyeSxcclxuICBJbmJveEl0ZW0sXHJcbiAgSW5ib3hTZXJ2aWNlLFxyXG4gIE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxyXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgVXNlclNlcnZpY2UsXHJcbiAgVXRpbHMsXHJcbiAgV29ya0l0ZW0sXHJcbiAgV29ya0l0ZW1BY3Rpb24sXHJcbiAgV29ya0l0ZW1IaXN0b3J5RW50cnlcclxufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xyXG5pbXBvcnQge09ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtFbXB0eVN0YXRlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1BlbmRpbmdDaGFuZ2VzU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcGVuZGluZy1jaGFuZ2VzL3BlbmRpbmctY2hhbmdlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHtTZWxlY3Rpb25Db25maWcsIFNlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7Rm9ybVN0YXR1c0NoYW5nZWRFdmVudH0gZnJvbSAnLi4vb2JqZWN0LWZvcm0vZm9ybS1zdGF0dXMtY2hhbmdlZC1ldmVudC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge09iamVjdEZvcm1PcHRpb25zfSBmcm9tICcuLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1vcHRpb25zLmludGVyZmFjZSc7XHJcbmltcG9ydCB7T2JqZWN0Rm9ybUNvbXBvbmVudH0gZnJvbSAnLi4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHtUYWJQbHVnaW5Db21wb25lbnR9IGZyb20gJy4uL3BsdWdpbnMvcGx1Z2luLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7VGFiUGFuZWxDb21wb25lbnR9IGZyb20gJy4uL3RhYi1jb250YWluZXIvdGFiLXBhbmVsL3RhYi1wYW5lbC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0luZGV4RGF0YX0gZnJvbSAnLi4vdWkvaW5kZXhkYXRhLXN1bW1hcnkvaW5kZXhkYXRhLXN1bW1hcnkuY29tcG9uZW50JztcclxuaW1wb3J0IHtVbnN1YnNjcmliZU9uRGVzdHJveX0gZnJvbSAnLi4vdXRpbC91bnN1YnNjcmliZS91bnN1YnNjcmliZS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlby1pbmJveC1kZXRhaWxzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5ib3gtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5ib3gtZGV0YWlscy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmJveERldGFpbHNDb21wb25lbnQgZXh0ZW5kcyBVbnN1YnNjcmliZU9uRGVzdHJveVxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBAVmlld0NoaWxkKCdicG1Gb3JtJykgYnBtRm9ybUVsOiBPYmplY3RGb3JtQ29tcG9uZW50O1xyXG5cclxuICBwcml2YXRlIGRlZmF1bHRXb3JrSXRlbUFjdGlvbjogV29ya0l0ZW1BY3Rpb247XHJcblxyXG4gIC8vIElEIHNldCBieSBwZW5kaW5nQ2hhbmdlcyBzZXJ2aWNlIHdoZW4gZWRpdGluZyBpbmRleGRhdGFcclxuICAvLyBVc2VkIHRvIGZpbmlzaCB0aGUgcGVuZGluZyB0YXNrIHdoZW4gZWRpdGluZyBpcyBkb25lXHJcbiAgcHJpdmF0ZSBwZW5kaW5nVGFza0lkOiBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgX2l0ZW06IEluYm94SXRlbTtcclxuICB3b3JrSXRlbTogV29ya0l0ZW07XHJcbiAgaGlzdG9yeTogV29ya0l0ZW1IaXN0b3J5RW50cnlbXTtcclxuICAvLyBmbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdGhlIHdvcmsgaXRlbSBpcyBsb2NrZWQgYnkgdGhlIHVzZXJcclxuICBsb2NrZWQ6IGJvb2xlYW47XHJcbiAgLy8gQ09PTC0xMTUwNlxyXG4gIHByZXZlbnRDbGlja1Rocm91Z2g6IGJvb2xlYW47XHJcbiAgLy8gY3VycmVudCBjbGlwYm9hcmQgY29udGVudHNcclxuICBjbGlwYm9hcmQ6IENsaXBib2FyZDtcclxuXHJcbiAgLy8gdXNlZCBmb3IgaGFuZGxpbmcgU1VCU0NSSVBUSU9OUyBhbmQgUkVTVUJNSVNTSU9OU1xyXG4gIHNldHRpbmdzOiB7XHJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgYWN0aW9uVGl0bGU6IHN0cmluZztcclxuICB9O1xyXG4gIGZvcm1TdGF0ZTogRm9ybVN0YXR1c0NoYW5nZWRFdmVudDtcclxuICBmb3JtT3B0aW9uczogT2JqZWN0Rm9ybU9wdGlvbnM7XHJcbiAgc2VsZWN0ZWRDb250ZW50RmlsZUlkOiBzdHJpbmc7XHJcbiAgd29ya0l0ZW1JbmRleGRhdGE6IEluZGV4RGF0YTtcclxuICBwZXJmb3JtZXJTaG93OiBib29sZWFuO1xyXG4gIHN1YnN0aXR1dGVTaG93OiBib29sZWFuO1xyXG4gIGFjdGlvblByb2Nlc3Npbmc6IFN1YnNjcmlwdGlvbiB8IGFueSA9IHtjbG9zZWQ6IHRydWV9O1xyXG4gIGluaXRpYWxpemluZzogU3Vic2NyaXB0aW9uIHwgYW55ID0ge2Nsb3NlZDogdHJ1ZX07XHJcbiAgZmlsZXNBZGRpbmc6IFN1YnNjcmlwdGlvbiB8IGFueSA9IHtjbG9zZWQ6IHRydWV9O1xyXG4gIGxvYWRFcnJvcjogYm9vbGVhbjtcclxuXHJcbiAgZXh0ZXJuYWxQYW5lbHMgPSBuZXcgUXVlcnlMaXN0PFRhYlBhbmVsQ29tcG9uZW50PigpO1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oVGFiUGFuZWxDb21wb25lbnQpIHRhYlBhbmVsczogUXVlcnlMaXN0PFRhYlBhbmVsQ29tcG9uZW50PjtcclxuICBAQ29udGVudENoaWxkcmVuKFRhYlBsdWdpbkNvbXBvbmVudCkgdGFiUGx1Z2luczogUXVlcnlMaXN0PFxyXG4gICAgVGFiUGx1Z2luQ29tcG9uZW50XHJcbiAgPjtcclxuXHJcbiAgQElucHV0KCkgZW1wdHlTdGF0ZTogRW1wdHlTdGF0ZTtcclxuICBASW5wdXQoKSBhcHBseVNlbGVjdGlvbjogU2VsZWN0aW9uQ29uZmlnO1xyXG5cclxuICBASW5wdXQoJ2l0ZW0nKVxyXG4gIHNldCBpdGVtKGk6IEluYm94SXRlbSkge1xyXG4gICAgdGhpcy5faXRlbSA9IGk7XHJcbiAgICBpZiAoaSkge1xyXG4gICAgICAvLyByZXNldCB2YWx1ZXNcclxuICAgICAgdGhpcy53b3JrSXRlbSA9IG51bGw7XHJcbiAgICAgIHRoaXMuaGlzdG9yeSA9IFtdO1xyXG4gICAgICB0aGlzLmxvY2tlZCA9IGZhbHNlO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucHJvY2VzcygpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5vdXQpLmZvY3VzKG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGl0ZW0oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBvbkRtc0l0ZW1TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RG1zUGFyYW1zPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10eXBlJykgZ2V0IGRhdGFUeXBlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaXRlbSA/IHRoaXMuaXRlbS50eXBlIDogJ25vbmUnO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGJwbVNlcnZpY2U6IEJwbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjbGlwYm9hcmRTZXJ2aWNlOiBDbGlwYm9hcmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBlbmRpbmdDaGFuZ2VzOiBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmeTogTm90aWZpY2F0aW9uc1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmRlZmF1bHRXb3JrSXRlbUFjdGlvbiA9IHtcclxuICAgICAgY29kZTogMCxcclxuICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MudGFzay5hY3Rpb25zLmRlZmF1bHQudGl0bGUnKSxcclxuICAgICAgdHlwZTogJ0ZPUldBUkQnXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIGlmICh0aGlzLml0ZW0udHlwZSA9PT0gSW5ib3hJdGVtLlRZUEVfQlBNKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlQlBNV29ya0l0ZW0oKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXRlbSA9IHRoaXMuX2l0ZW07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkZvcm1TdGF0dXNDaGFuZ2VkKGV2dDogRm9ybVN0YXR1c0NoYW5nZWRFdmVudCkge1xyXG4gICAgdGhpcy5mb3JtU3RhdGUgPSBldnQ7XHJcbiAgICBpZiAodGhpcy5mb3JtU3RhdGUuZGlydHkpIHtcclxuICAgICAgdGhpcy5zdGFydFBlbmRpbmcoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGFydFBlbmRpbmcoKSB7XHJcbiAgICAvLyBiZWNhdXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGZvcm0gc3RhdHVzIGNoYW5nZXMsXHJcbiAgICAvLyBwZW5kaW5nIHRhc2sgd2lsbCBvbmx5IGJlIHN0YXJ0ZWQgb25jZSB1bnRpbCBpdCB3YXMgZmluaXNoZWRcclxuICAgIGlmICghdGhpcy5wZW5kaW5nQ2hhbmdlcy5oYXNQZW5kaW5nVGFzayh0aGlzLnBlbmRpbmdUYXNrSWQgfHwgJyAnKSkge1xyXG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaW5pc2hQZW5kaW5nKCkge1xyXG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcy5maW5pc2hUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm9jZXNzIHRoZSBjdXJyZW50IGluYm94IGl0ZW1cclxuICAgKi9cclxuICBwcml2YXRlIHByb2Nlc3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRFcnJvciA9IGZhbHNlO1xyXG4gICAgdGhpcy5pbml0aWFsaXppbmcuY2xvc2VkID0gZmFsc2U7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLml0ZW0udHlwZSkge1xyXG4gICAgICBjYXNlIEluYm94SXRlbS5UWVBFX0JQTToge1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6aW5nID0gdGhpcy5jcmVhdGVCUE1Xb3JrSXRlbSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgSW5ib3hJdGVtLlRZUEVfU1VCU0NSSVBUSU9OOiB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVETVNJdGVtKCdzdWJzY3JpcHRpb24nKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIEluYm94SXRlbS5UWVBFX1JFU1VCTUlTU0lPTjoge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRE1TSXRlbSgncmVzdWJtaXNzaW9uJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNyZWF0ZURNU0l0ZW0oZG1zVHlwZSkge1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IHtcclxuICAgICAgZGVzY3JpcHRpb246IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICAgYGVvLnByb2Nlc3MuZGV0YWlscy50YXNrLiR7ZG1zVHlwZX0uZGVzY3JpcHRpb25gXHJcbiAgICAgICksXHJcbiAgICAgIGFjdGlvblRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgIGBlby5wcm9jZXNzLmRldGFpbHMuYnV0dG9uLiR7ZG1zVHlwZX0ucmVtb3ZlYFxyXG4gICAgICApXHJcbiAgICB9O1xyXG4gICAgdGhpcy5vcGVuV29ya0l0ZW1Db250ZW50KHRoaXMuaXRlbS50YXJnZXQpO1xyXG4gICAgdGhpcy5pbml0aWFsaXppbmcuY2xvc2VkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkRGVmYXVsdEFjdGlvbklmRW1wdHkgPSAocmVzOiBXb3JrSXRlbSk6IFdvcmtJdGVtID0+IHtcclxuICAgIGlmICghcmVzLmFjdGlvbnM/Lmxlbmd0aCkge1xyXG4gICAgICByZXMuYWN0aW9ucyA9IFt0aGlzLmRlZmF1bHRXb3JrSXRlbUFjdGlvbl07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIGl0ZW1zIG9mIHR5cGUgJ0JQTScgZmV0Y2ggd29yayBpdGVtIGZvciBtb3JlIGluZm9ybWF0aW9uc1xyXG4gIGNyZWF0ZUJQTVdvcmtJdGVtKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYnBtU2VydmljZVxyXG4gICAgICAuZ2V0V29ya0l0ZW0odGhpcy5pdGVtLnNvdXJjZUlkLCB0aGlzLml0ZW0uaWQpXHJcbiAgICAgIC5waXBlKG1hcCh0aGlzLmFkZERlZmF1bHRBY3Rpb25JZkVtcHR5KSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgdGhpcy53b3JrSXRlbSA9IHJlcztcclxuICAgICAgICAgIHRoaXMuc2V0dXBXb3JrSXRlbSgpO1xyXG4gICAgICAgICAgdGhpcy5zZXRGb3JtT3B0aW9ucyhcclxuICAgICAgICAgICAgdGhpcy53b3JrSXRlbS5mb3JtLFxyXG4gICAgICAgICAgICB0aGlzLndvcmtJdGVtLmRhdGEsXHJcbiAgICAgICAgICAgIHRoaXMud29ya0l0ZW0uYWN0aW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIC8vIGF1dG8tc2VsZWN0IGZpcnN0IGF0dGFjaGVkIGNvbnRlbnRcclxuICAgICAgICAgIHRoaXMub3BlbldvcmtJdGVtQ29udGVudChcclxuICAgICAgICAgICAgdGhpcy53b3JrSXRlbS5maWxlLmxlbmd0aCA/IHRoaXMud29ya0l0ZW0uZmlsZVswXSA6IG51bGxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLm5vdGlmeS5lcnJvcihcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5kZXRhaWxzLndvcmtpdGVtLmxvYWQuZmFpbCcpLFxyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAgICdlby5wcm9jZXNzLmRldGFpbHMud29ya2l0ZW0ubG9hZC5mYWlsLmRlc2NyaXB0aW9uJ1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Rm9ybU9wdGlvbnMoZm9ybSwgZGF0YSwgYWN0aW9uczogV29ya0l0ZW1BY3Rpb25bXSkge1xyXG4gICAgaWYgKGZvcm0pIHtcclxuICAgICAgZm9ybS5zaXR1YXRpb24gPSAnRURJVCc7XHJcbiAgICAgIHRoaXMuZm9ybU9wdGlvbnMgPSB7XHJcbiAgICAgICAgLi4ue1xyXG4gICAgICAgICAgZm9ybU1vZGVsOiBmb3JtLFxyXG4gICAgICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgICAgIGFjdGlvbnM6IGFjdGlvbnMgPyB0aGlzLnRyYW5zZm9ybUFjdGlvbnMoYWN0aW9ucykgOiB7fSxcclxuICAgICAgICAgIC8vIGZvcm0gc2NyaXB0IHdpbGwgYmUgcHJvdmlkZWQgd2l0aCB0aGUgbGlzdCBvZiBmaWxlIGVudHJpZXNcclxuICAgICAgICAgIC8vIGF0dGFjaGVkIHRvIHRoZSBjdXJyZW50IHdvcmsgaXRlbVxyXG4gICAgICAgICAgb2JqZWN0czogdGhpcy53b3JrSXRlbS5maWxlXHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50cmFuc2Zvcm1BY3Rpb25zKGFjdGlvbnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVJbmJveFNhdGUoKSB7XHJcbiAgICB0aGlzLmluYm94U2VydmljZS5yZWZyZXNoSW5ib3hTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2Zvcm1BY3Rpb25zKGFjdGlvbnMpIHtcclxuICAgIGxldCB0cmFuc2Zvcm1lZEFjdGlvbnMgPSB7fTtcclxuICAgIGFjdGlvbnMuZm9yRWFjaChhID0+IHtcclxuICAgICAgaWYgKGEuZmVhc2libGUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGEuZmVhc2libGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGEuZmVhc2liaWxpdHkgPSB2YWx1ZSA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGEuZmVhc2libGUgPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGEuZmVhc2libGU7XHJcbiAgICAgIH07XHJcbiAgICAgIHRyYW5zZm9ybWVkQWN0aW9uc1thLmNvZGUudG9TdHJpbmcoKV0gPSBhO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdHJhbnNmb3JtZWRBY3Rpb25zO1xyXG4gIH1cclxuXHJcbiAgLyogTG9ja3MgYSB3b3JrIGl0ZW0gKHBlcnNvbmFsaXplKSAqL1xyXG4gIGxvY2tXb3JrSXRlbSgpIHtcclxuICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuYnBtU2VydmljZVxyXG4gICAgICAubG9ja1dvcmtJdGVtKHRoaXMud29ya0l0ZW0pXHJcbiAgICAgIC5waXBlKG1hcCh0aGlzLmFkZERlZmF1bHRBY3Rpb25JZkVtcHR5KSlcclxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIGNvbnN0IHthY3Rpb25zLCBkYXRhLCBmb3JtfSA9IHJlcztcclxuICAgICAgICB0aGlzLndvcmtJdGVtID0gcmVzO1xyXG4gICAgICAgIHRoaXMuc2V0dXBXb3JrSXRlbSgpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9ybU9wdGlvbnMoZm9ybSwgZGF0YSwgYWN0aW9ucyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVJbmJveFNhdGUoKTtcclxuICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5hY3Rpdml0eS5sb2NrLmRlbmllZCcpLCB0aGlzLndvcmtJdGVtLnRpdGxlKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVbi1Mb2NrcyBhIHdvcmsgaXRlbSAoZGUtcGVyc29uYWxpemUpXHJcbiAgICovXHJcbiAgdW5sb2NrV29ya0l0ZW0oKSB7XHJcbiAgICBpZiAoIXRoaXMucGVuZGluZ0NoYW5nZXMuY2hlY2soKSkge1xyXG4gICAgICB0aGlzLmFjdGlvblByb2Nlc3NpbmcgPSB0aGlzLmJwbVNlcnZpY2VcclxuICAgICAgICAudW5sb2NrV29ya0l0ZW0odGhpcy53b3JrSXRlbSlcclxuICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICB0aGlzLndvcmtJdGVtID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5zZXR1cFdvcmtJdGVtKCk7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUluYm94U2F0ZSgpO1xyXG4gICAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuYWN0aXZpdHkudW5sb2NrLmRlbmllZCcpLCB0aGlzLndvcmtJdGVtLnRpdGxlKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlcyBhIHdvcmsgaXRlbXMgYWN0aW9uLlxyXG4gICAqIEBwYXJhbSBhY3Rpb24gVGhlIGFjdGlvbiB0byBiZSBleGVjdXRlc1xyXG4gICAqL1xyXG4gIGV4ZWN1dGVXb3JrSXRlbUFjdGlvbihhY3Rpb246IFdvcmtJdGVtQWN0aW9uKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmZvcm1TdGF0ZSB8fCAhdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xyXG4gICAgICAgIGlmIChhY3Rpb24udXJsKSB7XHJcbiAgICAgICAgICAvLyBwcm9jZXNzIGV4dGVybmFsIGFjdGlvbiBieSBzYXZpbmcgd29yayBpdGVtIGFuZCByZWRpcmVjdCB0byBhY3Rpb25zIHVybFxyXG4gICAgICAgICAgaWYgKHRoaXMuYnBtRm9ybUVsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uUHJvY2Vzc2luZyA9IHRoaXMuc2F2ZVdvcmtJdGVtKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLm9wZW5BY3Rpb25VcmwoYWN0aW9uLnVybCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuQWN0aW9uVXJsKGFjdGlvbi51cmwpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5icG1Gb3JtRWwpIHtcclxuICAgICAgICAgICAgdGhpcy53b3JrSXRlbS5kYXRhID0gdGhpcy5icG1Gb3JtRWwuZ2V0Rm9ybURhdGEoKTtcclxuICAgICAgICAgICAgLy8gd2UgbmVlZCB0byByZW1vdmUgcGVuZGluZyB0YXNrIGJlY2F1c2UgdGhlIGZvcm0gd2lsbCBiZSBkZXN0cm95ZWQgd2l0aG91dCBzYXZpbmdcclxuICAgICAgICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmJwbVNlcnZpY2VcclxuICAgICAgICAgICAgLmZvcndhcmRXb3JrSXRlbSh0aGlzLndvcmtJdGVtLCBhY3Rpb24pXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMubm90aWZ5LnN1Y2Nlc3MoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5icG0uYWN0aXZpdHkuZm9yd2FyZC5zdWNjZXNzJyksXHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW0udGl0bGVcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9LCBVdGlscy50aHJvdyhudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5icG0uYWN0aXZpdHkuZm9yd2FyZC5lcnJvcicpLCB0aGlzLndvcmtJdGVtLnRpdGxlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvcGVuQWN0aW9uVXJsKHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAodXJsLnN1YnN0cigwLCA0KSA9PT0gJ2h0dHAnKSB7XHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh1cmwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VsZWN0cyBhIHdvcmsgaXRlbXMgZmlsZSBlbnRyeSBhbiBlbWl0cyBvbkRtc0l0ZW1TZWxlY3RlZCBldmVudC5cclxuICAgKiBAcGFyYW0gZmlsZSBGaWxlRW50cnkgZWxlbWVudCB0byBiZSBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIG9wZW5Xb3JrSXRlbUNvbnRlbnQoZmlsZT86IEZpbGVFbnRyeSkge1xyXG4gICAgaWYgKCFmaWxlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZW50RmlsZUlkID0gbnVsbDtcclxuICAgICAgdGhpcy5vbkRtc0l0ZW1TZWxlY3RlZC5lbWl0KG51bGwpO1xyXG4gICAgICBpZiAodGhpcy5hcHBseVNlbGVjdGlvbikge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5vdXQpLmZvY3VzKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29udGVudEZpbGVJZCA9IGZpbGUuaWQ7XHJcbiAgICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgICAgaWQ6IGZpbGUuaWQsXHJcbiAgICAgICAgdHlwZTogZmlsZS50eXBlXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMub25EbXNJdGVtU2VsZWN0ZWQuZW1pdChwYXJhbXMpO1xyXG4gICAgICBpZiAodGhpcy5hcHBseVNlbGVjdGlvbikge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLmZpbmQodGhpcy5hcHBseVNlbGVjdGlvbi5vdXQpLmZvY3VzKHBhcmFtcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIHRoZSBmaWxlIChhdHRhY2hlZCBETVNPYmplY3QpIGluIG9iamVjdCBzdGF0ZVxyXG4gICAqIEBwYXJhbSBmaWxlXHJcbiAgICovXHJcbiAgb3BlbldvcmtJdGVtQ29udGVudEluQ29udGV4dChldnQpIHtcclxuICAgIGNvbnN0IGZpbGU6IEZpbGVFbnRyeSA9IGV2dC5kYXRhIHx8IHt9O1xyXG4gICAgY29uc3QgZmlsZVR5cGU6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXM6IHt0eXBlOiBmaWxlLnR5cGV9fTtcclxuICAgIGlmIChldnQuY3RybEtleSkge1xyXG4gICAgICB3aW5kb3cub3BlbihDZWxsUmVuZGVyZXIud2luZG93VVJJKHRoaXMucm91dGVyLmNyZWF0ZVVybFRyZWUoWydvYmplY3QnLCBmaWxlLmlkXSwgZmlsZVR5cGUpKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9vYmplY3QnLCBmaWxlLmlkXSwgZmlsZVR5cGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkcyBjbGlwYm9hcmQgY29udGVudCB0byB0aGUgd29yayBpdGVtXHJcbiAgICovXHJcbiAgYWRkRnJvbUNsaXBib2FyZCgpIHtcclxuICAgIHRoaXMuYnBtU2VydmljZVxyXG4gICAgICAuYWRkRmlsZUVsZW1lbnRzRnJvbUNsaXBib2FyZCh0aGlzLndvcmtJdGVtLCB0aGlzLmNsaXBib2FyZClcclxuICAgICAgLnN1YnNjcmliZSh3b3JrSXRlbSA9PiB7XHJcbiAgICAgICAgdGhpcy53b3JrSXRlbSA9IHdvcmtJdGVtO1xyXG4gICAgICAgIHRoaXMuY2xpcGJvYXJkU2VydmljZS5jbGVhcigpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDb250ZW50RmlsZUlkKSB7XHJcbiAgICAgICAgICAvLyBvcGVuIGZpcnN0IGl0ZW0gd2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkXHJcbiAgICAgICAgICB0aGlzLm9wZW5Xb3JrSXRlbUNvbnRlbnQodGhpcy53b3JrSXRlbS5maWxlWzBdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnByb2Nlc3MuZmlsZS5ub3RpZmljYXRpb24uZXJyb3InKSwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5maWxlLm5vdGlmaWNhdGlvbi5hZGQubWVzc2FnZScpKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgYSBmaWxlIGVudHJ5IGZyb20gdGhlIHdvcmsgaXRlbXMgZmlsZVxyXG4gICAqIEBwYXJhbSBmaWxlIFRoZSBmaWxlIGVudHJ5IHRvIGJlIHJlbW92ZWRcclxuICAgKiBAcGFyYW0gZXZ0IFRoZSBjbGljayBldmVudFxyXG4gICAqL1xyXG4gIHJlbW92ZVdvcmtJdGVtQ29udGVudChldnQpIHtcclxuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKGV2dC5kYXRhKSB7XHJcbiAgICAgIGNvbnN0IGZpbGU6IEZpbGVFbnRyeSA9IGV2dC5kYXRhO1xyXG4gICAgICB0aGlzLmJwbVNlcnZpY2VcclxuICAgICAgICAucmVtb3ZlRmlsZUVsZW1lbnQodGhpcy53b3JrSXRlbS5wcm9jZXNzSWQsIHRoaXMud29ya0l0ZW0uaWQsIGZpbGUuaWQpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLndvcmtJdGVtLmZpbGUgPSB0aGlzLndvcmtJdGVtLmZpbGUuZmlsdGVyKGYgPT4gZi5pZCAhPT0gZmlsZS5pZCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZENvbnRlbnRGaWxlSWQgPT09IGZpbGUuaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuV29ya0l0ZW1Db250ZW50KFxyXG4gICAgICAgICAgICAgIHRoaXMud29ya0l0ZW0uZmlsZS5sZW5ndGggPyB0aGlzLndvcmtJdGVtLmZpbGVbMF0gOiBudWxsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgVXRpbHMudGhyb3cobnVsbCwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5maWxlLm5vdGlmaWNhdGlvbi5yZW1vdmUnKSwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ucHJvY2Vzcy5maWxlLm5vdGlmaWNhdGlvbi5yZW1vdmUubWVzc2FnZScpKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYXZlIHRoZSB3b3JrIGl0ZW1zIGZvcm0gZGF0YVxyXG4gICAqL1xyXG4gIHNhdmVXb3JrSXRlbURhdGEoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuZm9ybVN0YXRlICYmICF0aGlzLmZvcm1TdGF0ZS5pbnZhbGlkICYmIHRoaXMuZm9ybVN0YXRlLmRpcnR5KSB7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25Qcm9jZXNzaW5nID0gdGhpcy5zYXZlV29ya0l0ZW0oKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUluYm94U2F0ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcbiAgcHJlcGFyZU5ld1dvcmtJdGVtKHdvcmtJdGVtOiBXb3JrSXRlbSk6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy53b3JrSXRlbSA9IHdvcmtJdGVtO1xyXG4gICAgY29uc3Qge2FjdGlvbnMsIGZvcm0sIGRhdGF9ID0gdGhpcy53b3JrSXRlbTtcclxuICAgIHRoaXMuc2V0dXBXb3JrSXRlbSgpO1xyXG4gICAgdGhpcy5zZXRGb3JtT3B0aW9ucyhmb3JtLCBkYXRhLCBhY3Rpb25zKTtcclxuICAgIHRoaXMubm90aWZ5LnN1Y2Nlc3MoXHJcbiAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmJwbS5hY3Rpdml0eS5pbmRleGRhdGEuc2F2ZS5zdWNjZXNzJylcclxuICAgICk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhdmVzIHRoZSBjdXJyZW50IHdvcmsgaXRlbVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2F2ZVdvcmtJdGVtKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLndvcmtJdGVtLmRhdGEgPSB0aGlzLmJwbUZvcm1FbC5nZXRGb3JtRGF0YSgpO1xyXG4gICAgcmV0dXJuIHRoaXMuYnBtU2VydmljZS5zYXZlV29ya0l0ZW0odGhpcy53b3JrSXRlbSkucGlwZShcclxuICAgICAgbWFwKHRoaXMuYWRkRGVmYXVsdEFjdGlvbklmRW1wdHkpLFxyXG4gICAgICBtYXAod29ya0l0ZW0gPT4gdGhpcy5wcmVwYXJlTmV3V29ya0l0ZW0od29ya0l0ZW0pKSxcclxuICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICBVdGlscy5jYXRjaChcclxuICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5icG0uYWN0aXZpdHkuaW5kZXhkYXRhLnNhdmUuZXJyb3InKVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgdGhlIGN1cnJlbnQgaXRlbSBmcm9tIHRoZSBpbmJveC5cclxuICAgKi9cclxuICBjb25maXJtSW5ib3hJdGVtKCkge1xyXG4gICAgdGhpcy5hY3Rpb25Qcm9jZXNzaW5nID0gdGhpcy5pbmJveFNlcnZpY2VcclxuICAgICAgLnJlbW92ZUl0ZW0odGhpcy5pdGVtKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLm5vdGlmeS5zdWNjZXNzKFxyXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uaW5ib3guYWN0aXZpdHkuY29uZmlybS5zdWNjZXNzJylcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5JTkJPWF9JVEVNX0NPTkZJUk1FRCwgdGhpcy5pdGVtKTtcclxuICAgICAgICB0aGlzLmluYm94U2VydmljZS5yZWZyZXNoSW5ib3hTdGF0ZSgpO1xyXG4gICAgICB9LCBVdGlscy5jYXRjaChudWxsLCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5wcm9jZXNzLml0ZW0ucmVtb3ZlLmZhaWwnKSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2V0cyB1cCBzdGF0ZSBhbmQgZGF0YSBmb3IgdGhlIGN1cnJlbnQgd29yayBpdGVtLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0dXBXb3JrSXRlbSgpIHtcclxuICAgIHRoaXMubG9ja2VkID0gdGhpcy53b3JrSXRlbS5zdGF0ZSA9PT0gJ1BFUlNPTic7XHJcbiAgICB0aGlzLnByZXZlbnRDbGlja1Rocm91Z2ggPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnByZXZlbnRDbGlja1Rocm91Z2ggPSBmYWxzZSwgMTAwMClcclxuICAgIGNvbnN0IHtmb3JtLCBkYXRhfSA9IHRoaXMud29ya0l0ZW07XHJcbiAgICBjb25zdCB3b3JrSXRlbSA9IHtmb3JtLCBkYXRhfTtcclxuICAgIHRoaXMud29ya0l0ZW1JbmRleGRhdGEgPSBmb3JtICYmIGRhdGEgPyB3b3JrSXRlbSA6IG51bGw7XHJcblxyXG4gICAgLy8gZmV0Y2ggaGlzdG9yeVxyXG4gICAgdGhpcy5icG1TZXJ2aWNlXHJcbiAgICAgIC5nZXRQcm9jZXNzSGlzdG9yeSh0aGlzLndvcmtJdGVtLnByb2Nlc3NJZClcclxuICAgICAgLnBpcGUobWFwKHJlcyA9PiB7XHJcbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXRlbS5lZGl0b3IpIHtcclxuICAgICAgICAgICAgaXRlbS5kYXRhLmltYWdlID0gdGhpcy51c2VyU2VydmljZS5nZXRVc2VySW1hZ2VVcmkoaXRlbS5lZGl0b3IuaWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIHNvcnQgYnkgbnVtYmVyIGJlY2F1c2UgdGhpcyBpcyB0aGUgYXV0by1pbmNyZW1lbnRpbmdcclxuICAgICAgICAvLyBpbmRleCBvZiBhZGRlZCBoaXN0b3J5IGVudHJpZXNcclxuICAgICAgICB0aGlzLmhpc3RvcnkgPSByZXMuc29ydCgoYSwgYikgPT4gYi5udW1iZXIgLSBhLm51bWJlcik7XHJcbiAgICAgIH0pKVxyXG4gICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5Q29kZShpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uY29kZTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlJZChpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SW5kZXgoaW5kZXgsIGl0ZW0pIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gc3Vic2NyaWJlIGZvciBjaGFuZ2VzIHRvIHRoZSBjbGlwYm9hcmQgdG8gZW5hYmxlIGFkZGluZyBjb250ZW50cyB0byB0aGUgd29yayBpdGVtXHJcbiAgICB0aGlzLmNsaXBib2FyZFNlcnZpY2UuY2xpcGJvYXJkJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoY2xpcGJvYXJkOiBDbGlwYm9hcmQpID0+XHJcbiAgICAgICAgKHRoaXMuY2xpcGJvYXJkID1cclxuICAgICAgICAgIGNsaXBib2FyZC5hY3Rpb24gPT09IENsaXBib2FyZEFjdGlvbi5DT1BZID8gY2xpcGJvYXJkIDogbnVsbClcclxuICAgICAgKTtcclxuICAgIC8vIGNvbXBvbmVudCBpcyBvbmx5IGludGVyZXN0ZWQgaW4gY29waWVkIGl0ZW1zXHJcblxyXG4gICAgaWYgKHRoaXMuYXBwbHlTZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25cclxuICAgICAgICAuZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLmluKVxyXG4gICAgICAgIC5mb2N1cyQucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChpdGVtOiBhbnkpID0+ICh0aGlzLml0ZW0gPSBpdGVtKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBsZXQgcGFuZWxzID0gdGhpcy50YWJQYW5lbHMudG9BcnJheSgpO1xyXG4gICAgdGhpcy50YWJQbHVnaW5zLmZvckVhY2goXHJcbiAgICAgIHAgPT4gKHBhbmVscyA9IHBhbmVscy5jb25jYXQocC50YWJQYW5lbHMudG9BcnJheSgpKSlcclxuICAgICk7XHJcbiAgICB0aGlzLmV4dGVybmFsUGFuZWxzLnJlc2V0KHBhbmVscyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { takeUntil } from 'rxjs/operators';
1
+ import { map, takeUntil } from 'rxjs/operators';
2
2
  import { Component, ChangeDetectorRef, ChangeDetectionStrategy, Input } from '@angular/core';
3
3
  import { DmsService, EnaioEvent, EventService } from '@eo-sdk/core';
4
4
  import { UnsubscribeOnDestroy } from '../../util/unsubscribe/unsubscribe.component';
@@ -9,7 +9,7 @@ export class ObjectHistoryComponent extends UnsubscribeOnDestroy {
9
9
  this.cd = cd;
10
10
  this.eventService = eventService;
11
11
  this._history = [];
12
- this.history = [];
12
+ // history: DmsObjectHistoryEntry[] = [];
13
13
  this.filters = [];
14
14
  this.visibleFilter = { select: true, input: true };
15
15
  this.eventService
@@ -20,6 +20,12 @@ export class ObjectHistoryComponent extends UnsubscribeOnDestroy {
20
20
  }
21
21
  });
22
22
  }
23
+ set history(historyObj) {
24
+ this._history = historyObj;
25
+ }
26
+ get history() {
27
+ return this._history;
28
+ }
23
29
  set params(p) {
24
30
  this._params = p;
25
31
  this.fetchHistory(p.id, p.type);
@@ -36,7 +42,7 @@ export class ObjectHistoryComponent extends UnsubscribeOnDestroy {
36
42
  this.filters.push(type);
37
43
  }
38
44
  // todo: ChangeDetection should not work here, Hä?
39
- this.history = this._history.filter(entry => this.filters.indexOf(entry.group) === -1);
45
+ this.history = this.history.filter(entry => this.filters.indexOf(entry.group) === -1);
40
46
  }
41
47
  trackByIndex(index, item) {
42
48
  return index;
@@ -44,11 +50,12 @@ export class ObjectHistoryComponent extends UnsubscribeOnDestroy {
44
50
  fetchHistory(id, type) {
45
51
  this.dmsService
46
52
  .getHistory(id, type)
47
- .subscribe((res) => {
48
- this._history = res.reverse();
53
+ .pipe(map((res) => {
54
+ this.history = res.reverse();
49
55
  this.toggleFilter(['INFORMATIONAL', true]);
50
56
  this.cd.markForCheck();
51
- });
57
+ }))
58
+ .subscribe();
52
59
  }
53
60
  }
54
61
  ObjectHistoryComponent.decorators = [
@@ -67,4 +74,4 @@ ObjectHistoryComponent.ctorParameters = () => [
67
74
  ObjectHistoryComponent.propDecorators = {
68
75
  params: [{ type: Input }]
69
76
  };
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWhpc3RvcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWhpc3Rvcnkvb2JqZWN0LWhpc3RvcnkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQVksVUFBVSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQXdCLE1BQU0sY0FBYyxDQUFDO0FBRXBHLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBU2xGLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxvQkFBb0I7SUFtQjlELFlBQW9CLFVBQXNCLEVBQVUsRUFBcUIsRUFBVSxZQUEwQjtRQUMzRyxLQUFLLEVBQUUsQ0FBQztRQURVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBaEI3RyxhQUFRLEdBQTRCLEVBQUUsQ0FBQztRQUN2QyxZQUFPLEdBQTRCLEVBQUUsQ0FBQztRQUN0QyxZQUFPLEdBQWEsRUFBRSxDQUFDO1FBRXZCLGtCQUFhLEdBQW1CLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLENBQUM7UUFjMUQsSUFBSSxDQUFDLFlBQVk7YUFDZCxFQUFFLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUN2QyxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7YUFDbkMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pCLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtnQkFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQzNCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBcEJELElBQ0ksTUFBTSxDQUFDLENBQVk7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFjRCxZQUFZLENBQUMsTUFBTTtRQUNqQixNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUNqQyxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7U0FDckQ7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pCO1FBQ0Qsa0RBQWtEO1FBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLFlBQVksQ0FBQyxFQUFVLEVBQUUsSUFBYTtRQUM1QyxJQUFJLENBQUMsVUFBVTthQUNaLFVBQVUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDO2FBQ3BCLFNBQVMsQ0FBQyxDQUFDLEdBQTRCLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OztZQTVERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsaTlFQUE4QztnQkFFOUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUFWa0IsVUFBVTtZQURWLGlCQUFpQjtZQUNPLFlBQVk7OztxQkFvQnBELEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3Rha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0NvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RG1zUGFyYW1zLCBEbXNTZXJ2aWNlLCBFbmFpb0V2ZW50LCBFdmVudFNlcnZpY2UsIERtc09iamVjdEhpc3RvcnlFbnRyeX0gZnJvbSAnQGVvLXNkay9jb3JlJztcclxuaW1wb3J0IHtJVmlzaWJsZUZpbHRlcn0gZnJvbSAnLi9oaXN0b3J5LWZpbHRlci9oaXN0b3J5LWZpbHRlcic7XHJcbmltcG9ydCB7VW5zdWJzY3JpYmVPbkRlc3Ryb3l9IGZyb20gJy4uLy4uL3V0aWwvdW5zdWJzY3JpYmUvdW5zdWJzY3JpYmUuY29tcG9uZW50JztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1oaXN0b3J5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWhpc3RvcnkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1oaXN0b3J5LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIE9iamVjdEhpc3RvcnlDb21wb25lbnQgZXh0ZW5kcyBVbnN1YnNjcmliZU9uRGVzdHJveSB7XHJcblxyXG4gIF9wYXJhbXM6IERtc1BhcmFtcztcclxuICBfaGlzdG9yeTogRG1zT2JqZWN0SGlzdG9yeUVudHJ5W10gPSBbXTtcclxuICBoaXN0b3J5OiBEbXNPYmplY3RIaXN0b3J5RW50cnlbXSA9IFtdO1xyXG4gIGZpbHRlcnM6IHN0cmluZ1tdID0gW107XHJcbiAgZmlsdGVydGVybTogc3RyaW5nO1xyXG4gIHZpc2libGVGaWx0ZXI6IElWaXNpYmxlRmlsdGVyID0ge3NlbGVjdDogdHJ1ZSwgaW5wdXQ6IHRydWV9O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBwYXJhbXMocDogRG1zUGFyYW1zKSB7XHJcbiAgICB0aGlzLl9wYXJhbXMgPSBwO1xyXG4gICAgdGhpcy5mZXRjaEhpc3RvcnkocC5pZCwgcC50eXBlKTtcclxuICB9XHJcblxyXG4gIGdldCBwYXJhbXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkbXNTZXJ2aWNlOiBEbXNTZXJ2aWNlLCBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlXHJcbiAgICAgIC5vbihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfVVBEQVRFRCkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgIGlmIChldmVudC5kYXRhICYmIHRoaXMucGFyYW1zLmlkID09PSBldmVudC5kYXRhLmlkKSB7XHJcbiAgICAgICAgICB0aGlzLnBhcmFtcyA9IHRoaXMucGFyYW1zO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVGaWx0ZXIoZmlsdGVyKSB7XHJcbiAgICBjb25zdCBbdHlwZSwgaGFzRmlsdGVyXSA9IGZpbHRlcjtcclxuICAgIGlmIChoYXNGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzID0gdGhpcy5maWx0ZXJzLmZpbHRlcihzID0+IHMgIT09IHR5cGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWx0ZXJzLnB1c2godHlwZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0b2RvOiBDaGFuZ2VEZXRlY3Rpb24gc2hvdWxkIG5vdCB3b3JrIGhlcmUsIEjDpD9cclxuICAgIHRoaXMuaGlzdG9yeSA9IHRoaXMuX2hpc3RvcnkuZmlsdGVyKGVudHJ5ID0+IHRoaXMuZmlsdGVycy5pbmRleE9mKGVudHJ5Lmdyb3VwKSA9PT0gLTEpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUluZGV4KGluZGV4LCBpdGVtKSB7XHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoSGlzdG9yeShpZDogc3RyaW5nLCB0eXBlPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRtc1NlcnZpY2VcclxuICAgICAgLmdldEhpc3RvcnkoaWQsIHR5cGUpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogRG1zT2JqZWN0SGlzdG9yeUVudHJ5W10pID0+IHtcclxuICAgICAgICB0aGlzLl9oaXN0b3J5ID0gcmVzLnJldmVyc2UoKTtcclxuICAgICAgICB0aGlzLnRvZ2dsZUZpbHRlcihbJ0lORk9STUFUSU9OQUwnLCB0cnVlXSk7XHJcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWhpc3RvcnkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWhpc3Rvcnkvb2JqZWN0LWhpc3RvcnkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFZLFVBQVUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUF3QixNQUFNLGNBQWMsQ0FBQztBQUVwRyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQVNsRixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsb0JBQW9CO0lBMkI5RCxZQUFvQixVQUFzQixFQUFVLEVBQXFCLEVBQVUsWUFBMEI7UUFDM0csS0FBSyxFQUFFLENBQUM7UUFEVSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXhCckcsYUFBUSxHQUE0QixFQUFFLENBQUM7UUFDL0MseUNBQXlDO1FBQ3pDLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFFdkIsa0JBQWEsR0FBbUIsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsQ0FBQztRQXNCMUQsSUFBSSxDQUFDLFlBQVk7YUFDZCxFQUFFLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUNyQyxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7YUFDckMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pCLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtnQkFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQzNCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBNUJELElBQUksT0FBTyxDQUFDLFVBQW1DO1FBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQ0ksTUFBTSxDQUFDLENBQVk7UUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFjRCxZQUFZLENBQUMsTUFBTTtRQUNqQixNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUNqQyxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7U0FDckQ7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pCO1FBQ0Qsa0RBQWtEO1FBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLFlBQVksQ0FBQyxFQUFVLEVBQUUsSUFBYTtRQUM1QyxJQUFJLENBQUMsVUFBVTthQUNaLFVBQVUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDO2FBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUE0QixFQUFFLEVBQUU7WUFDekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFekIsQ0FBQyxDQUFDLENBQUM7YUFDRixTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDOzs7WUF0RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLGk5RUFBOEM7Z0JBRTlDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7O1lBVmtCLFVBQVU7WUFEVixpQkFBaUI7WUFDTyxZQUFZOzs7cUJBNEJwRCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0NvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RG1zUGFyYW1zLCBEbXNTZXJ2aWNlLCBFbmFpb0V2ZW50LCBFdmVudFNlcnZpY2UsIERtc09iamVjdEhpc3RvcnlFbnRyeX0gZnJvbSAnQGVvLXNkay9jb3JlJztcclxuaW1wb3J0IHtJVmlzaWJsZUZpbHRlcn0gZnJvbSAnLi9oaXN0b3J5LWZpbHRlci9oaXN0b3J5LWZpbHRlcic7XHJcbmltcG9ydCB7VW5zdWJzY3JpYmVPbkRlc3Ryb3l9IGZyb20gJy4uLy4uL3V0aWwvdW5zdWJzY3JpYmUvdW5zdWJzY3JpYmUuY29tcG9uZW50JztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1oaXN0b3J5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWhpc3RvcnkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1oaXN0b3J5LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIE9iamVjdEhpc3RvcnlDb21wb25lbnQgZXh0ZW5kcyBVbnN1YnNjcmliZU9uRGVzdHJveSB7XHJcblxyXG4gIF9wYXJhbXM6IERtc1BhcmFtcztcclxuICBwcml2YXRlIF9oaXN0b3J5OiBEbXNPYmplY3RIaXN0b3J5RW50cnlbXSA9IFtdO1xyXG4gIC8vIGhpc3Rvcnk6IERtc09iamVjdEhpc3RvcnlFbnRyeVtdID0gW107XHJcbiAgZmlsdGVyczogc3RyaW5nW10gPSBbXTtcclxuICBmaWx0ZXJ0ZXJtOiBzdHJpbmc7XHJcbiAgdmlzaWJsZUZpbHRlcjogSVZpc2libGVGaWx0ZXIgPSB7c2VsZWN0OiB0cnVlLCBpbnB1dDogdHJ1ZX07XHJcblxyXG4gIHNldCBoaXN0b3J5KGhpc3RvcnlPYmo6IERtc09iamVjdEhpc3RvcnlFbnRyeVtdKSB7XHJcbiAgICB0aGlzLl9oaXN0b3J5ID0gaGlzdG9yeU9iajtcclxuICB9XHJcblxyXG4gIGdldCBoaXN0b3J5KCk6IERtc09iamVjdEhpc3RvcnlFbnRyeVtdIHtcclxuICAgIHJldHVybiB0aGlzLl9oaXN0b3J5O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcGFyYW1zKHA6IERtc1BhcmFtcykge1xyXG4gICAgdGhpcy5fcGFyYW1zID0gcDtcclxuICAgIHRoaXMuZmV0Y2hIaXN0b3J5KHAuaWQsIHAudHlwZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgcGFyYW1zKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhcmFtcztcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSwgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmV2ZW50U2VydmljZVxyXG4gICAgICAub24oRW5haW9FdmVudC5ETVNfT0JKRUNUX1VQREFURUQpLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgIGlmIChldmVudC5kYXRhICYmIHRoaXMucGFyYW1zLmlkID09PSBldmVudC5kYXRhLmlkKSB7XHJcbiAgICAgICAgICB0aGlzLnBhcmFtcyA9IHRoaXMucGFyYW1zO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVGaWx0ZXIoZmlsdGVyKSB7XHJcbiAgICBjb25zdCBbdHlwZSwgaGFzRmlsdGVyXSA9IGZpbHRlcjtcclxuICAgIGlmIChoYXNGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzID0gdGhpcy5maWx0ZXJzLmZpbHRlcihzID0+IHMgIT09IHR5cGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWx0ZXJzLnB1c2godHlwZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0b2RvOiBDaGFuZ2VEZXRlY3Rpb24gc2hvdWxkIG5vdCB3b3JrIGhlcmUsIEjDpD9cclxuICAgIHRoaXMuaGlzdG9yeSA9IHRoaXMuaGlzdG9yeS5maWx0ZXIoZW50cnkgPT4gdGhpcy5maWx0ZXJzLmluZGV4T2YoZW50cnkuZ3JvdXApID09PSAtMSk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SW5kZXgoaW5kZXgsIGl0ZW0pIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hIaXN0b3J5KGlkOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZG1zU2VydmljZVxyXG4gICAgICAuZ2V0SGlzdG9yeShpZCwgdHlwZSlcclxuICAgICAgLnBpcGUobWFwKChyZXM6IERtc09iamVjdEhpc3RvcnlFbnRyeVtdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oaXN0b3J5ID0gcmVzLnJldmVyc2UoKTtcclxuICAgICAgICB0aGlzLnRvZ2dsZUZpbHRlcihbJ0lORk9STUFUSU9OQUwnLCB0cnVlXSk7XHJcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICAgIH0pKVxyXG4gICAgICAuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==