@eo-sdk/client 8.0.0-rc.7 → 8.2.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 (38) hide show
  1. package/README.md +2 -2
  2. package/app/eo-framework/object-details/object-history/object-history.component.d.ts +3 -2
  3. package/app/eo-framework-core/api/plugins.service.d.ts +3 -2
  4. package/assets/_default/config/main.json +0 -4
  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 +57 -32
  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 +4 -4
  15. package/esm2015/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.js +2 -2
  16. package/esm2015/app/eo-framework/form-elements/datetime/datepicker/datepicker.component.js +2 -2
  17. package/esm2015/app/eo-framework/form-elements/datetime/datetime.component.js +2 -2
  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/tab-container/tab-view-nav/tab-view-nav.component.js +1 -1
  24. package/esm2015/app/eo-framework/upload-overlay/upload-overlay.component.js +4 -4
  25. package/esm2015/app/eo-framework-core/api/plugins.service.js +10 -3
  26. package/esm2015/projects/eo-sdk/core/lib/config/translate-json-loader.js +11 -2
  27. package/esm2015/projects/eo-sdk/core/lib/model/dms-object-history.model.js +1 -1
  28. package/esm2015/projects/eo-sdk/core/lib/service/bpm/bpm.service.js +1 -1
  29. package/esm2015/projects/eo-sdk/core/lib/service/dms/dms.service.js +5 -3
  30. package/esm2015/projects/eo-sdk/core/lib/service/search/search.service.js +4 -4
  31. package/esm2015/projects/eo-sdk/core/lib/service/user/user.service.js +7 -6
  32. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +23 -11
  33. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
  34. package/fesm2015/eo-sdk-client.js +40 -30
  35. package/fesm2015/eo-sdk-client.js.map +1 -1
  36. package/package.json +2 -2
  37. package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
  38. package/projects/eo-sdk/core/package.json +1 -1
@@ -53,7 +53,7 @@ export class UploadOverlayComponent {
53
53
  }
54
54
  if (!this.invalidInput) {
55
55
  this.setFileOver(true);
56
- this.onFilesDropped(transfer.files);
56
+ this.onFilesDropped(Array.from(transfer.files));
57
57
  }
58
58
  }
59
59
  }
@@ -119,8 +119,8 @@ export class UploadOverlayComponent {
119
119
  // clear queue when new files are added
120
120
  // todo: remove in future releases to support collective file adding
121
121
  this.queue = [];
122
- for (let i = 0; i < fileItems.length; i++) {
123
- this.queue.push(new UploadFileItem(fileItems.item(i)));
122
+ for (let file of fileItems) {
123
+ this.queue.push(new UploadFileItem(file));
124
124
  }
125
125
  // bind ESC key listener for closing the dialog as late as possible
126
126
  if (!this.escKeyListener) {
@@ -390,4 +390,4 @@ UploadOverlayComponent.ctorParameters = () => [
390
390
  UploadOverlayComponent.propDecorators = {
391
391
  overlayEl: [{ type: ViewChild, args: ['overlay',] }]
392
392
  };
393
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLW92ZXJsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvdXBsb2FkLW92ZXJsYXkvdXBsb2FkLW92ZXJsYXkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxFQUFFLElBQUksWUFBWSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsRUFBRSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEYsT0FBTyxFQUFDLFNBQVMsRUFBVSxTQUFTLEVBQUUsU0FBUyxFQUFzQyxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUVMLFlBQVksRUFDWixVQUFVLEVBQ1YscUJBQXFCLEVBQ3JCLFlBQVksRUFDWixjQUFjLEVBQ2QsY0FBYyxFQUNkLEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQUUsYUFBYSxFQUNoQyxNQUFNLGNBQWMsQ0FBQztBQU90QixNQUFNLE9BQU8sc0JBQXNCO0lBc0JqQyxZQUFvQixNQUFjLEVBQ2QsUUFBbUIsRUFDbkIsY0FBOEIsRUFDOUIsU0FBMkIsRUFDM0IsYUFBNEIsRUFDNUIsWUFBMEIsRUFDMUIsY0FBcUM7UUFOckMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQXhCekQsVUFBSyxHQUFxQixFQUFFLENBQUM7UUFNN0IsdUJBQWtCLEdBQW1CLEVBQUUsQ0FBQztRQUdoQyxrQkFBYSxHQUFtQixFQUFFLENBQUM7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QUFrQixDQUFDLEtBQXFCO1FBQzlDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMzRixDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSTtRQUN6QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELHlDQUF5QztJQUN6QyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUk7UUFDbkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDOzs7WUF2YkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLG1wS0FBOEM7O2FBRS9DOzs7WUFsQk8sTUFBTTtZQURhLFNBQVM7WUFTbEMsY0FBYztZQUVkLGdCQUFnQjtZQUNFLGFBQWE7WUFSL0IsWUFBWTtZQUVaLHFCQUFxQjs7O3dCQWdCcEIsU0FBUyxTQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge29mIGFzIG9ic2VydmFibGVPZiwgZm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgSG9zdExpc3RlbmVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7XHJcbiAgT2JqZWN0VHlwZSxcclxuICBFdmVudFNlcnZpY2UsXHJcbiAgRW5haW9FdmVudCxcclxuICBVcGxvYWRSZWdpc3RyeVNlcnZpY2UsXHJcbiAgVXBsb2FkVGFyZ2V0LFxyXG4gIFVwbG9hZEZpbGVJdGVtLFxyXG4gIFByZXBhcmVTZXJ2aWNlLFxyXG4gIFV0aWxzLFxyXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgRW52aXJvbm1lbnRFbmFpbywgU3lzdGVtU2VydmljZVxyXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLXVwbG9hZC1vdmVybGF5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkLW92ZXJsYXkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VwbG9hZC1vdmVybGF5LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFVwbG9hZE92ZXJsYXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ292ZXJsYXknKSBvdmVybGF5RWw6IEVsZW1lbnRSZWY7XHJcblxyXG4gIHF1ZXVlOiBVcGxvYWRGaWxlSXRlbVtdID0gW107XHJcbiAgZmlsZU92ZXI6IGJvb2xlYW47XHJcbiAgaXNVcGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgaGFzVmFsaWRVcGxvYWRUYXJnZXRzOiBib29sZWFuO1xyXG4gIGludmFsaWRJbnB1dDogYm9vbGVhbjtcclxuICBxdWV1ZVNpemU6IG51bWJlcjtcclxuICB2YWxpZFVwbG9hZFRhcmdldHM6IFVwbG9hZFRhcmdldFtdID0gW107XHJcbiAgc2VsZWN0ZWRVcGxvYWRUYXJnZXQ6IFVwbG9hZFRhcmdldDtcclxuXHJcbiAgcHJpdmF0ZSB1cGxvYWRUYXJnZXRzOiBVcGxvYWRUYXJnZXRbXSA9IFtdO1xyXG4gIHByaXZhdGUgZHJhZ0xlYXZlTGlzdGVuZXI6IEZ1bmN0aW9uO1xyXG4gIHByaXZhdGUgZHJvcExpc3RlbmVyOiBGdW5jdGlvbjtcclxuICBwcml2YXRlIGRyYWdPdmVyTGlzdGVuZXI6IEZ1bmN0aW9uO1xyXG4gIHByaXZhdGUgZXNjS2V5TGlzdGVuZXI6IEZ1bmN0aW9uO1xyXG4gIHByaXZhdGUgZHJhZ0VudGVyTGlzdGVuZXI6IEZ1bmN0aW9uO1xyXG4gIHByaXZhdGUgcGFzdGVMaXN0ZW5lcjogRnVuY3Rpb247XHJcbiAgcHJpdmF0ZSBkcmFnRXZlbnRDb3VudCA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcHJlcGFyZVNlcnZpY2U6IFByZXBhcmVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgdXBsb2FkUmVnaXN0cnk6IFVwbG9hZFJlZ2lzdHJ5U2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0KCkge1xyXG5cclxuICAgIC8vIGdsb2JhbCBkcmFnJmRyb3AgdXBsb2FkIHdpbGwgb25seSBiZSBhdmFpbGFibGUgb24gZGVza3RvcCAod2ViIG9yIGVsZWN0cm9uKVxyXG4gICAgaWYgKEVudmlyb25tZW50RW5haW8uaXNNb2JpbGVFbnZpcm9ubWVudCgpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzdWJzY3JpYmUgZm9yIHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgdXBsb2FkIHRhcmdldHNcclxuICAgIHRoaXMudXBsb2FkUmVnaXN0cnkudXBsb2FkVGFyZ2V0cyQuc3Vic2NyaWJlKCh1cGxvYWRUYXJnZXRzOiBVcGxvYWRUYXJnZXRbXSkgPT4ge1xyXG4gICAgICB0aGlzLnVwbG9hZFRhcmdldHMgPSB1cGxvYWRUYXJnZXRzO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5wYXN0ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ3Bhc3RlJywgKGU6IENsaXBib2FyZEV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMub25QYXN0ZShlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnZHJhZ2VudGVyJywgKGU6IERyYWdFdmVudCkgPT4ge1xyXG4gICAgICB0aGlzLm9uRHJhZ0VudGVyKGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uUGFzdGUoZTogQ2xpcGJvYXJkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmlzVXBsb2FkaW5nKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuaGFzVmFsaWRVcGxvYWRUYXJnZXRzID0gdHJ1ZTtcclxuICAgIHRoaXMuaW52YWxpZElucHV0ID0gZmFsc2U7XHJcbiAgICBpZiAoIXRoaXMuZmlsZU92ZXIgJiYgdGhpcy5wYXN0ZUNvbnRhaW5zRmlsZXMoZSkpIHtcclxuICAgICAgbGV0IHRyYW5zZmVyID0gZS5jbGlwYm9hcmREYXRhO1xyXG4gICAgICBpZiAoIXRyYW5zZmVyKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3ByZXZlbnRBbmRTdG9wKGUpO1xyXG5cclxuICAgICAgLy8gY2hlY2sgZm9yIGRpcmVjdG9yaWVzXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJhbnNmZXIuaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBmZSA9IHRyYW5zZmVyLml0ZW1zW2ldLndlYmtpdEdldEFzRW50cnkoKTtcclxuICAgICAgICBpZiAoZmUgJiYgZmUuaXNEaXJlY3RvcnkpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnZhbGlkSW5wdXQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuaW52YWxpZElucHV0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRGaWxlT3Zlcih0cnVlKTtcclxuICAgICAgICB0aGlzLm9uRmlsZXNEcm9wcGVkKHRyYW5zZmVyLmZpbGVzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkRyYWdFbnRlcihlOiBEcmFnRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmlzVXBsb2FkaW5nKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuaGFzVmFsaWRVcGxvYWRUYXJnZXRzID0gdHJ1ZTtcclxuICAgIGlmICghdGhpcy5maWxlT3ZlciAmJiB0aGlzLmRyYWdDb250YWluc0ZpbGVzKGUpKSB7XHJcbiAgICAgIHRoaXMuZHJhZ0V2ZW50Q291bnQgPSAwO1xyXG4gICAgICB0aGlzLnNldEZpbGVPdmVyKHRydWUpO1xyXG5cclxuXHJcbiAgICAgIC8vIHVzZSB0aW1lb3V0IGhlcmUgdG8gZm9yY2UgYW5ndWxhciBkaWdlc3QgY3ljbGUgYmVmb3JlIGNvbnRpbnVpbmcsIGJlY2F1c2Ugd2UgYXJlIGFjY2Vzc2luZyBkb20gZWxlbWVudHNcclxuICAgICAgLy8gdGhhdCBhcmUgbm90IHRoZXJlICgqbmdJZikgdW50aWwgZmlsZU92ZXIgaXMgc2V0IHRvIHRydWUuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRvZG86IHJlcGxhY2UgYnkgcmVuZGVyZXIgc29sdXRpb24gd2hlbiBhdmFpbGFibGUgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE1Njc0KVxyXG4gICAgICAgIHRoaXMub3ZlcmxheUVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAvLyBiaW5kIGxhdGUgKG9ubHksIHdoZW4gbmVlZGVkKSB0byBkcmFnbGVhdmUgZXZlbnQgdG8gYXZvaWQgaGVhdnkgcHJvY2Vzc2luZyBvbiBldmVyeSBkcmFnIGV2ZW50XHJcbiAgICAgICAgdGhpcy5kcmFnTGVhdmVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMub3ZlcmxheUVsLm5hdGl2ZUVsZW1lbnQsICdkcmFnbGVhdmUnLCAoZXZ0KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRyYWdFdmVudENvdW50LS07XHJcbiAgICAgICAgICBpZiAodGhpcy5kcmFnRXZlbnRDb3VudCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuZHJvcExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5vdmVybGF5RWwubmF0aXZlRWxlbWVudCwgJ2Ryb3AnLCAoZXZ0KSA9PiB7XHJcbiAgICAgICAgICBsZXQgdHJhbnNmZXIgPSB0aGlzLl9nZXRUcmFuc2ZlcihldnQpO1xyXG4gICAgICAgICAgaWYgKCF0cmFuc2Zlcikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLl9wcmV2ZW50QW5kU3RvcChldnQpO1xyXG5cclxuICAgICAgICAgIC8vIGNoZWNrIGZvciBkaXJlY3Rvcmllc1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0cmFuc2Zlci5pdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBmZSA9IHRyYW5zZmVyLml0ZW1zW2ldLndlYmtpdEdldEFzRW50cnkoKTtcclxuICAgICAgICAgICAgaWYgKGZlLmlzRGlyZWN0b3J5KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkSW5wdXQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIXRoaXMuaW52YWxpZElucHV0KSB7XHJcbiAgICAgICAgICAgIHRoaXMub25GaWxlc0Ryb3BwZWQodHJhbnNmZXIuZmlsZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRyYWdPdmVyTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLm92ZXJsYXlFbC5uYXRpdmVFbGVtZW50LCAnZHJhZ292ZXInLCAoZXZ0KSA9PiB7XHJcbiAgICAgICAgICBsZXQgdHJhbnNmZXIgPSB0aGlzLl9nZXRUcmFuc2ZlcihldnQpO1xyXG4gICAgICAgICAgaWYgKCF0cmFuc2Zlcikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0cmFuc2Zlci5kcm9wRWZmZWN0ID0gJ2NvcHknO1xyXG4gICAgICAgICAgdGhpcy5fcHJldmVudEFuZFN0b3AoZXZ0KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRyYWdFdmVudENvdW50Kys7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRUcmFuc2ZlcihldmVudDogYW55KTogYW55IHtcclxuICAgIHJldHVybiBldmVudC5kYXRhVHJhbnNmZXIgPyBldmVudC5kYXRhVHJhbnNmZXIgOiBldmVudC5vcmlnaW5hbEV2ZW50LmRhdGFUcmFuc2ZlcjsgLy8galF1ZXJ5IGZpeDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXZlbnRBbmRTdG9wKGV2ZW50OiBhbnkpOiBhbnkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkZpbGVzRHJvcHBlZChmaWxlSXRlbXM6IEZpbGVMaXN0KSB7XHJcbiAgICAvLyBjbGVhciBxdWV1ZSB3aGVuIG5ldyBmaWxlcyBhcmUgYWRkZWRcclxuICAgIC8vIHRvZG86IHJlbW92ZSBpbiBmdXR1cmUgcmVsZWFzZXMgdG8gc3VwcG9ydCBjb2xsZWN0aXZlIGZpbGUgYWRkaW5nXHJcbiAgICB0aGlzLnF1ZXVlID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVJdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLnF1ZXVlLnB1c2gobmV3IFVwbG9hZEZpbGVJdGVtKGZpbGVJdGVtcy5pdGVtKGkpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYmluZCBFU0Mga2V5IGxpc3RlbmVyIGZvciBjbG9zaW5nIHRoZSBkaWFsb2cgYXMgbGF0ZSBhcyBwb3NzaWJsZVxyXG4gICAgaWYgKCF0aGlzLmVzY0tleUxpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuZXNjS2V5TGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAna2V5dXAnLCAoZSkgPT4ge1xyXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMjcpIHtcclxuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLy8gY2FsY3VsYXRlIHRvdGFsIHNpemUgb2YgcXVldWVcclxuICAgIHRoaXMuc2V0UXVldWVTaXplKCk7XHJcbiAgICAvLyBmaWx0ZXIgYXZhaWxhYmxlIHRhcmdldHNcclxuICAgIHRoaXMudmFsaWRhdGVVcGxvYWRUYXJnZXRzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaWx0ZXIgbGlzdCBvZiByZWdpc3RlcmVkIHVwbG9hZCB0YXJnZXRzLCBzbyBvbmx5IHZhbGlkIHRhcmdldHMgd2lsbCBiZSBzaG93bi5cclxuICAgKi9cclxuICBwcml2YXRlIHZhbGlkYXRlVXBsb2FkVGFyZ2V0cygpIHtcclxuICAgIHRoaXMuaGFzVmFsaWRVcGxvYWRUYXJnZXRzID0gdHJ1ZTtcclxuICAgIG9ic2VydmFibGVGb3JrSm9pbih0aGlzLnVwbG9hZFRhcmdldHMubWFwKHQgPT4gdGhpcy52YWxpZGF0ZVVwbG9hZFRhcmdldCh0KSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogeyB0YXJnZXQ6IFVwbG9hZFRhcmdldCwgdmFsaWQ6IGJvb2xlYW4gfVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkVXBsb2FkVGFyZ2V0cyA9IHJlcy5maWx0ZXIociA9PiByLnZhbGlkKS5tYXAoZmlsdGVyZWQgPT4gZmlsdGVyZWQudGFyZ2V0KS5yZXZlcnNlKCkuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gYS50eXBlID09PSAnY29udGV4dCcgPyAtMSA6IGIudHlwZSA9PT0gJ2NvbnRleHQnID8gMSA6IDA7IC8vIENvbnRleHQgc2hvdWxkIGJlIG9uIHRvcFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMudmFsaWRVcGxvYWRUYXJnZXRzID0gW107XHJcbiAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYXNWYWxpZFVwbG9hZFRhcmdldHMgPSB0aGlzLnZhbGlkVXBsb2FkVGFyZ2V0cy5sZW5ndGggPiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVVcGxvYWRUYXJnZXQodGFyZ2V0OiBVcGxvYWRUYXJnZXQpOiBPYnNlcnZhYmxlPHsgdGFyZ2V0OiBVcGxvYWRUYXJnZXQsIHZhbGlkOiBib29sZWFuIH0+IHtcclxuXHJcbiAgICBpZiAoIXRoaXMucXVldWUpIHtcclxuICAgICAgcmV0dXJuIG9ic2VydmFibGVPZih7dGFyZ2V0OiB0YXJnZXQsIHZhbGlkOiBmYWxzZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZShvID0+IHtcclxuICAgICAgbGV0IHZhbGlkID0gZmFsc2U7XHJcblxyXG4gICAgICBpZiAodGFyZ2V0LnR5cGUgPT09IFVwbG9hZFRhcmdldC5ST09UKSB7XHJcblxyXG4gICAgICAgIC8vIHRvZG86IGFyZSB0aGVyZSBvdGhlciByZXN0cmljdGlvbnMgb24gcm9vdCB0YXJnZXQ/XHJcbiAgICAgICAgdGhpcy5wcmVwYXJlU2VydmljZS5nZXRQcmVwYXJlQ2hpbGRUeXBlcyhudWxsLCB0cnVlKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKHJlczogeyBwYXJlbnQ6IHN0cmluZywgdHlwZXM6IE9iamVjdFR5cGVbXSB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgdmFsaWQgPSB0aGlzLnF1ZXVlLmxlbmd0aCA+IDAgJiYgcmVzLnR5cGVzLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgICAgICAgby5uZXh0KHt0YXJnZXQ6IHRhcmdldCwgdmFsaWQ6IHZhbGlkfSk7XHJcbiAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIG8ubmV4dCh7dGFyZ2V0OiB0YXJnZXQsIHZhbGlkOiBmYWxzZX0pO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmICh0YXJnZXQudHlwZSA9PT0gVXBsb2FkVGFyZ2V0Lk9CSkVDVCkge1xyXG5cclxuICAgICAgICAvLyB0b2RvOiBjaGVjayBpZiB0aGUgcmVmZXJlbmNlIG9iamVjdCBzdXBwb3J0cyB0aGUgZ2l2ZW4gZmlsZSB0eXBlXHJcbiAgICAgICAgdmFsaWQgPSB0YXJnZXQucmVmZXJlbmNlT2JqZWN0ICYmXHJcbiAgICAgICAgICB0YXJnZXQucmVmZXJlbmNlT2JqZWN0LnR5cGUubWF4RmlsZXMgPiAwICYmXHJcbiAgICAgICAgICAhdGFyZ2V0LnJlZmVyZW5jZU9iamVjdC5sb2NrICYmXHJcbiAgICAgICAgICAhdGFyZ2V0LnJlZmVyZW5jZU9iamVjdC5pc0ZpbmFsaXplZCAmJlxyXG4gICAgICAgICAgKHRhcmdldC5yZWZlcmVuY2VPYmplY3QucmlnaHRzICYmIHRhcmdldC5yZWZlcmVuY2VPYmplY3QucmlnaHRzLmVkaXQpICYmXHJcbiAgICAgICAgICB0aGlzLnF1ZXVlLmxlbmd0aCA9PT0gMTtcclxuICAgICAgICBvLm5leHQoe3RhcmdldDogdGFyZ2V0LCB2YWxpZDogdmFsaWR9KTtcclxuICAgICAgICBvLmNvbXBsZXRlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGFyZ2V0LnR5cGUgPT09IFVwbG9hZFRhcmdldC5DT05URVhUIHx8IHRhcmdldC50eXBlID09PSBVcGxvYWRUYXJnZXQuQ09OVEVYVF9UUkVFKSB7XHJcblxyXG4gICAgICAgIC8vIHRvZG86IGFkZCBjaGVja3MgcmVsYXRlZCB0byB0aGUgcmVmZXJlbmNlIG9iamVjdCAoZS5nLiBhbGxvd2VkIGZpbGUgdHlwZXMpXHJcbiAgICAgICAgdGhpcy5wcmVwYXJlU2VydmljZS5nZXRQcmVwYXJlQ2hpbGRUeXBlcyh0YXJnZXQucmVmZXJlbmNlT2JqZWN0LmlkLCB0cnVlKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKHJlczogeyBwYXJlbnQ6IHN0cmluZywgdHlwZXM6IE9iamVjdFR5cGVbXSB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgdmFsaWQgPSB0YXJnZXQucmVmZXJlbmNlT2JqZWN0ICYmIHRoaXMucXVldWUubGVuZ3RoID4gMCAmJiByZXMudHlwZXMubGVuZ3RoID4gMDtcclxuXHJcbiAgICAgICAgICAgICAgLy8gZm9yIENPTlRFWFRfVFJFRSB0YXJnZXRzIGFsc28gY2hlY2sgaWYgdGhlIGRlc2lyZWQgbm9kZVxyXG4gICAgICAgICAgICAgIC8vIHR5cGUgaXMgcGFydCBvZiB0aGUgcHJlcGFyZSBjaGlsZCB0eXBlc1xyXG4gICAgICAgICAgICAgIGlmICh0YXJnZXQudHlwZSA9PT0gVXBsb2FkVGFyZ2V0LkNPTlRFWFRfVFJFRSAmJiB0YXJnZXQuc3ViRm9sZGVyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJGb2xkZXI6IGFueSA9IHRhcmdldC5zdWJGb2xkZXI7XHJcbiAgICAgICAgICAgICAgICB2YWxpZCA9ICEhcmVzLnR5cGVzLmZpbmQodCA9PiB0aGlzLnN5c3RlbVNlcnZpY2UuaW1wbGVtZW50c1R5cGUodCwgc3ViRm9sZGVyLmRhdGEudHlwZSkpO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgby5uZXh0KHt0YXJnZXQ6IHRhcmdldCwgdmFsaWQ6IHZhbGlkfSk7XHJcbiAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIG8ubmV4dCh7dGFyZ2V0OiB0YXJnZXQsIHZhbGlkOiBmYWxzZX0pO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvLm5leHQoe3RhcmdldDogdGFyZ2V0LCB2YWxpZDogZmFsc2V9KTtcclxuICAgICAgICBvLmNvbXBsZXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlcyBhIGZpbGUgZnJvbSB0aGUgbGlzdCBvZiBmaWxlcyB0byBiZSB1cGxvYWRlZC5cclxuICAgKiBAcGFyYW0gZmlsZUl0ZW0gLSB0aGUgZmlsZSBpdGVtIHRvIGJlIHJlbW92ZWRcclxuICAgKi9cclxuICBwdWJsaWMgcmVtb3ZlRmlsZUl0ZW0oZmlsZUl0ZW06IFVwbG9hZEZpbGVJdGVtKSB7XHJcblxyXG4gICAgdGhpcy5xdWV1ZSA9IHRoaXMucXVldWUuZmlsdGVyKChmKSA9PiBmLmlkICE9PSBmaWxlSXRlbS5pZCk7XHJcbiAgICBpZiAoIXRoaXMucXVldWUubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHVwZGF0ZSBhdmFpbGFibGUgdXBsb2FkIHRhcmdldHMgYmVjYXVzZSB0aGVpciB2YWxpZGl0eVxyXG4gICAgICAvLyBtYXkgYmUgYmFzZWQgb24gdGhlIHF1ZXVlIHNpemVcclxuICAgICAgdGhpcy52YWxpZGF0ZVVwbG9hZFRhcmdldHMoKTtcclxuICAgICAgdGhpcy5zZXRRdWV1ZVNpemUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb2NlZWQgdXBsb2FkIHdpdGggYSBzZWxlY3RlZCB1cGxvYWQgdGFyZ2V0LlxyXG4gICAqIEBwYXJhbSB1cGxvYWRUYXJnZXQgLSB0aGUgdGFyZ2V0IHRvIHVwbG9hZCBmaWxlcyB0b1xyXG4gICAqL1xyXG4gIHB1YmxpYyBwcm9jZWVkV2l0aFVwbG9hZCh1cGxvYWRUYXJnZXQ6IFVwbG9hZFRhcmdldCkge1xyXG5cclxuICAgIGlmICh1cGxvYWRUYXJnZXQudHlwZSAhPT0gVXBsb2FkVGFyZ2V0LkNVU1RPTSAmJiB0aGlzLnF1ZXVlLmxlbmd0aCA+IDEpIHtcclxuICAgICAgLy8gRm9yIG1vcmUgdGhhbiBvbmUgZmlsZSB0byBiZSB1cGxvYWRlZCB0byBhIG5vbmUgY3VzdG9tIHRhcmdldCwgd2UgbGV0IHRoZSB1c2VyIGRlY2lkZSBpZlxyXG4gICAgICAvLyBiYXRjaCB1cGxvYWQgc2hvdWxkIGJlIHVzZWQgb3Igbm90IC4uLlxyXG5cclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRVcGxvYWRUYXJnZXQgPSB1cGxvYWRUYXJnZXQ7XHJcbiAgICB9IGVsc2UgaWYgKHVwbG9hZFRhcmdldC50eXBlID09PSBVcGxvYWRUYXJnZXQuT0JKRUNUKSB7XHJcbiAgICAgIC8vIC4uLiBvdGhlcndpc2UgdXBsb2FkIGlzIHN0YXJ0ZWQgaW1tZWRpYXRlbHlcclxuICAgICAgdGhpcy5zdGFydFVwbG9hZCh1cGxvYWRUYXJnZXQsIFtudWxsLCB0aGlzLmdldFN0YXRlUm91dGUoKV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdGFydFVwbG9hZCh1cGxvYWRUYXJnZXQsIFtudWxsLCAnL3ByZXBhcmUnXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm9jZWVkIHVwbG9hZCB1c2luZyB0aGUgc2VsZWN0ZWQgdXBsb2FkIHRhcmdldC5cclxuICAgKiBAcGFyYW0gdXNlQmF0Y2hVcGxvYWQgLSBmbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gdXNlIGJhdGNoIHVwbG9hZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwcm9jZWVkV2l0aFNlbGVjdGVkVGFyZ2V0KHVzZUJhdGNoVXBsb2FkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnN0YXJ0VXBsb2FkKHRoaXMuc2VsZWN0ZWRVcGxvYWRUYXJnZXQsIFt1c2VCYXRjaFVwbG9hZCwgJy9wcmVwYXJlJ10pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXRzIHRoZSBzZWxlY3RlZCB1cGxvYWQgdGFyZ2V0LlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXNldFNlbGVjdGVkVXBsb2FkVGFyZ2V0KCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFVwbG9hZFRhcmdldCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRTdGF0ZVJvdXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucm91dGVyLnVybDtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHN1Y2Nlc3NmdWxVcGxvYWQodGFyZ2V0LCB1cGxvYWRUYXJnZXQpIHtcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5ETVNfT0JKRUNUX1VQREFURUQsIHVwbG9hZFRhcmdldC5yZWZlcmVuY2VPYmplY3QpO1xyXG4gICAgdXBsb2FkVGFyZ2V0Lm9uVXBsb2FkU3VjY2Vzcyh0YXJnZXQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhcnQgdGhlIGFjdHVhbCB1cGxvYWQuXHJcbiAgICogQHBhcmFtIHVwbG9hZFRhcmdldCAtIHRhcmdldCB0byB1cGxvYWQgdGhlIGZpbGVzIHRvXHJcbiAgICogQHBhcmFtIHVzZUJhdGNoVXBsb2FkIC0gZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRvIHVzZSBiYXRjaCB1cGxvYWRcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXJ0VXBsb2FkKHVwbG9hZFRhcmdldDogVXBsb2FkVGFyZ2V0LCBbLi4uYXJnc10pIHtcclxuXHJcbiAgICBjb25zdCBbdXNlQmF0Y2hVcGxvYWQsIHRhcmdldF0gPSBhcmdzO1xyXG5cclxuICAgIHRoaXMuaXNVcGxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy51bmJpbmRMaXN0ZW5lcnMoKTtcclxuICAgIHRoaXMucHJlcGFyZVNlcnZpY2VcclxuICAgICAgLnVwbG9hZFRvVGFyZ2V0KHVwbG9hZFRhcmdldCwgdGhpcy5xdWV1ZSwgdXNlQmF0Y2hVcGxvYWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHVwbG9hZFRhcmdldC5zdWJGb2xkZXIgJiYgdXBsb2FkVGFyZ2V0LnN1YkZvbGRlci5kYXRhLmRhdGEpIHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkge1xyXG4gICAgICAgICAgICAgIGxldCBvYnMgPSBbXTtcclxuICAgICAgICAgICAgICByZXMuZm9yRWFjaChyID0+IHtcclxuICAgICAgICAgICAgICAgIG9icy5wdXNoKHRoaXMucHJlcGFyZVNlcnZpY2UudXBkYXRlUHJlcGFyZWRJdGVtSW5kZXhEYXRhKHIuaWQsIHVwbG9hZFRhcmdldC5zdWJGb2xkZXIuZGF0YS5kYXRhKSk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2YWJsZUZvcmtKb2luKG9icykuc3Vic2NyaWJlKCgpID0+IHRoaXMuc3VjY2Vzc2Z1bFVwbG9hZCh0YXJnZXQsIHVwbG9hZFRhcmdldCkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJlcGFyZVNlcnZpY2VcclxuICAgICAgICAgICAgICAgIC51cGRhdGVQcmVwYXJlZEl0ZW1JbmRleERhdGEocmVzLmlkLCB1cGxvYWRUYXJnZXQuc3ViRm9sZGVyLmRhdGEuZGF0YSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zdWNjZXNzZnVsVXBsb2FkKHRhcmdldCwgdXBsb2FkVGFyZ2V0KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VjY2Vzc2Z1bFVwbG9hZCh0YXJnZXQsIHVwbG9hZFRhcmdldCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgfSwgVXRpbHMudGhyb3coKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdXBsb2FkVGFyZ2V0Lm9uVXBsb2FkRmFpbCgpO1xyXG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8udXBsb2FkLmdsb2JhbC5lcnJvci50aXRsZScpLFxyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVwbG9hZC5nbG9iYWwuZXJyb3IuZGVzY3JpcHRpb24nKSlcclxuICAgICAgKTtcclxuICAgIHRoaXMucmVzZXRTZWxlY3RlZFVwbG9hZFRhcmdldCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRRdWV1ZVNpemUoKSB7XHJcbiAgICBsZXQgcyA9IDA7XHJcbiAgICBmb3IgKGxldCBmIG9mIHRoaXMucXVldWUpIHtcclxuICAgICAgcyArPSBmLnNpemU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnF1ZXVlU2l6ZSA9IHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZSB0aGUgdXBsb2FkIG92ZXJsYXkgYW5kIHJlbGVhc2UgYWxsIGJvdW5kIHJlc291cmNlcy5cclxuICAgKi9cclxuICBjbG9zZSgpIHtcclxuICAgIC8vIHVuYmluZCBib3VuZCBldmVudCBsaXN0ZW5lciwgd2hlbiB0aGV5IGFyZSBub3QgbmVlZGVkIGFueW1vcmVcclxuICAgIHRoaXMudW5iaW5kTGlzdGVuZXJzKCk7XHJcbiAgICAvLyBjbGVhciB1cGxvYWQgcXVldWVcclxuICAgIHRoaXMucXVldWUgPSBbXTtcclxuICAgIC8vIGhpZGUgdGhlIG92ZXJsYXlcclxuICAgIHRoaXMuc2V0RmlsZU92ZXIoZmFsc2UpO1xyXG4gICAgdGhpcy5pbnZhbGlkSW5wdXQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RmlsZU92ZXIodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZmlsZU92ZXIgPSB2YWx1ZTtcclxuICAgIHRoaXMudXBsb2FkUmVnaXN0cnkuc2V0T3ZlcmxheUFjdGl2ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVuYmluZExpc3RlbmVycygpIHtcclxuICAgIGlmICh0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuZHJhZ0xlYXZlTGlzdGVuZXIoKTtcclxuICAgICAgdGhpcy5kcmFnTGVhdmVMaXN0ZW5lciA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5kcmFnT3Zlckxpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuZHJhZ092ZXJMaXN0ZW5lcigpO1xyXG4gICAgICB0aGlzLmRyYWdPdmVyTGlzdGVuZXIgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZHJvcExpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuZHJvcExpc3RlbmVyKCk7XHJcbiAgICAgIHRoaXMuZHJvcExpc3RlbmVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmVzY0tleUxpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuZXNjS2V5TGlzdGVuZXIoKTtcclxuICAgICAgdGhpcy5lc2NLZXlMaXN0ZW5lciA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgZHJhZyBldmVudCBjb250YWlucyBvbmUgb3IgbW9yZSBmaWxlcy5cclxuICAgKiBAcGFyYW0gZXZlbnQgLSB0aGUgZHJhZyBldmVudCB0byBiZSBjaGVja2VkXHJcbiAgICogQHJldHVybnMgbnVtYmVyIG9mIGZpbGVzXHJcbiAgICovXHJcbiAgIHByaXZhdGUgZHJhZ0NvbnRhaW5zRmlsZXMoZXZlbnQ6IERyYWdFdmVudCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbShldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMgfHwgW10pLmZpbHRlcihpID0+IGkua2luZCA9PT0gJ2ZpbGUnKS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgcGFzdGUgZXZlbnQgY29udGFpbnMgb25lIG9yIG1vcmUgZmlsZXMuXHJcbiAgICogQHBhcmFtIGV2ZW50IC0gdGhlIHBhc3RlIGV2ZW50IHRvIGJlIGNoZWNrZWRcclxuICAgKiBAcmV0dXJucyBudW1iZXIgb2YgZmlsZXNcclxuICAgKi9cclxuICBwcml2YXRlIHBhc3RlQ29udGFpbnNGaWxlcyhldmVudDogQ2xpcGJvYXJkRXZlbnQpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcyB8fCBbXSkuZmlsdGVyKGkgPT4gaS5raW5kID09PSAnZmlsZScpLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIC8vIG5nRm9yIHRyYWNraW5nIGZ1bmN0aW9uIGZvciB1cGxvYWQgdGFyZ2V0c1xyXG4gIHRhcmdldFRyYWNrQnlGbihpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgfVxyXG5cclxuICAvLyBuZ0ZvciB0cmFja2luZyBmdW5jdGlvbiBmb3IgZmlsZSBpdGVtc1xyXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGluZGV4O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy5kcmFnRW50ZXJMaXN0ZW5lcigpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
393
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLW92ZXJsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvdXBsb2FkLW92ZXJsYXkvdXBsb2FkLW92ZXJsYXkuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxFQUFFLElBQUksWUFBWSxFQUFFLFFBQVEsSUFBSSxrQkFBa0IsRUFBRSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEYsT0FBTyxFQUFDLFNBQVMsRUFBVSxTQUFTLEVBQUUsU0FBUyxFQUFzQyxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUVMLFlBQVksRUFDWixVQUFVLEVBQ1YscUJBQXFCLEVBQ3JCLFlBQVksRUFDWixjQUFjLEVBQ2QsY0FBYyxFQUNkLEtBQUssRUFDTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQUUsYUFBYSxFQUNoQyxNQUFNLGNBQWMsQ0FBQztBQU90QixNQUFNLE9BQU8sc0JBQXNCO0lBc0JqQyxZQUFvQixNQUFjLEVBQ2QsUUFBbUIsRUFDbkIsY0FBOEIsRUFDOUIsU0FBMkIsRUFDM0IsYUFBNEIsRUFDNUIsWUFBMEIsRUFDMUIsY0FBcUM7UUFOckMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQXhCekQsVUFBSyxHQUFxQixFQUFFLENBQUM7UUFNN0IsdUJBQWtCLEdBQW1CLEVBQUUsQ0FBQztRQUdoQyxrQkFBYSxHQUFtQixFQUFFLENBQUM7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QyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMzRixDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSTtRQUN6QixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELHlDQUF5QztJQUN6QyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUk7UUFDbkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDOzs7WUF2YkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLG1wS0FBOEM7O2FBRS9DOzs7WUFsQk8sTUFBTTtZQURhLFNBQVM7WUFTbEMsY0FBYztZQUVkLGdCQUFnQjtZQUNFLGFBQWE7WUFSL0IsWUFBWTtZQUVaLHFCQUFxQjs7O3dCQWdCcEIsU0FBUyxTQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge29mIGFzIG9ic2VydmFibGVPZiwgZm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgSG9zdExpc3RlbmVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7XHJcbiAgT2JqZWN0VHlwZSxcclxuICBFdmVudFNlcnZpY2UsXHJcbiAgRW5haW9FdmVudCxcclxuICBVcGxvYWRSZWdpc3RyeVNlcnZpY2UsXHJcbiAgVXBsb2FkVGFyZ2V0LFxyXG4gIFVwbG9hZEZpbGVJdGVtLFxyXG4gIFByZXBhcmVTZXJ2aWNlLFxyXG4gIFV0aWxzLFxyXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgRW52aXJvbm1lbnRFbmFpbywgU3lzdGVtU2VydmljZVxyXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLXVwbG9hZC1vdmVybGF5JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXBsb2FkLW92ZXJsYXkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VwbG9hZC1vdmVybGF5LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFVwbG9hZE92ZXJsYXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ292ZXJsYXknKSBvdmVybGF5RWw6IEVsZW1lbnRSZWY7XHJcblxyXG4gIHF1ZXVlOiBVcGxvYWRGaWxlSXRlbVtdID0gW107XHJcbiAgZmlsZU92ZXI6IGJvb2xlYW47XHJcbiAgaXNVcGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgaGFzVmFsaWRVcGxvYWRUYXJnZXRzOiBib29sZWFuO1xyXG4gIGludmFsaWRJbnB1dDogYm9vbGVhbjtcclxuICBxdWV1ZVNpemU6IG51bWJlcjtcclxuICB2YWxpZFVwbG9hZFRhcmdldHM6IFVwbG9hZFRhcmdldFtdID0gW107XHJcbiAgc2VsZWN0ZWRVcGxvYWRUYXJnZXQ6IFVwbG9hZFRhcmdldDtcclxuXHJcbiAgcHJpdmF0ZSB1cGxvYWRUYXJnZXRzOiBVcGxvYWRUYXJnZXRbXSA9IFtdO1xyXG4gIHByaXZhdGUgZHJhZ0xlYXZlTGlzdGVuZXI6IEZ1bmN0aW9uO1xyXG4gIHByaXZhdGUgZHJvcExpc3RlbmVyOiBGdW5jdGlvbjtcclxuICBwcml2YXRlIGRyYWdPdmVyTGlzdGVuZXI6IEZ1bmN0aW9uO1xyXG4gIHByaXZhdGUgZXNjS2V5TGlzdGVuZXI6IEZ1bmN0aW9uO1xyXG4gIHByaXZhdGUgZHJhZ0VudGVyTGlzdGVuZXI6IEZ1bmN0aW9uO1xyXG4gIHByaXZhdGUgcGFzdGVMaXN0ZW5lcjogRnVuY3Rpb247XHJcbiAgcHJpdmF0ZSBkcmFnRXZlbnRDb3VudCA9IDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcHJlcGFyZVNlcnZpY2U6IFByZXBhcmVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgdXBsb2FkUmVnaXN0cnk6IFVwbG9hZFJlZ2lzdHJ5U2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0KCkge1xyXG5cclxuICAgIC8vIGdsb2JhbCBkcmFnJmRyb3AgdXBsb2FkIHdpbGwgb25seSBiZSBhdmFpbGFibGUgb24gZGVza3RvcCAod2ViIG9yIGVsZWN0cm9uKVxyXG4gICAgaWYgKEVudmlyb25tZW50RW5haW8uaXNNb2JpbGVFbnZpcm9ubWVudCgpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzdWJzY3JpYmUgZm9yIHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgdXBsb2FkIHRhcmdldHNcclxuICAgIHRoaXMudXBsb2FkUmVnaXN0cnkudXBsb2FkVGFyZ2V0cyQuc3Vic2NyaWJlKCh1cGxvYWRUYXJnZXRzOiBVcGxvYWRUYXJnZXRbXSkgPT4ge1xyXG4gICAgICB0aGlzLnVwbG9hZFRhcmdldHMgPSB1cGxvYWRUYXJnZXRzO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5wYXN0ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ3Bhc3RlJywgKGU6IENsaXBib2FyZEV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMub25QYXN0ZShlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnZHJhZ2VudGVyJywgKGU6IERyYWdFdmVudCkgPT4ge1xyXG4gICAgICB0aGlzLm9uRHJhZ0VudGVyKGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uUGFzdGUoZTogQ2xpcGJvYXJkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmlzVXBsb2FkaW5nKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuaGFzVmFsaWRVcGxvYWRUYXJnZXRzID0gdHJ1ZTtcclxuICAgIHRoaXMuaW52YWxpZElucHV0ID0gZmFsc2U7XHJcbiAgICBpZiAoIXRoaXMuZmlsZU92ZXIgJiYgdGhpcy5wYXN0ZUNvbnRhaW5zRmlsZXMoZSkpIHtcclxuICAgICAgbGV0IHRyYW5zZmVyID0gZS5jbGlwYm9hcmREYXRhO1xyXG4gICAgICBpZiAoIXRyYW5zZmVyKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX3ByZXZlbnRBbmRTdG9wKGUpO1xyXG5cclxuICAgICAgLy8gY2hlY2sgZm9yIGRpcmVjdG9yaWVzXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJhbnNmZXIuaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBmZSA9IHRyYW5zZmVyLml0ZW1zW2ldLndlYmtpdEdldEFzRW50cnkoKTtcclxuICAgICAgICBpZiAoZmUgJiYgZmUuaXNEaXJlY3RvcnkpIHtcclxuICAgICAgICAgICAgdGhpcy5pbnZhbGlkSW5wdXQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuaW52YWxpZElucHV0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRGaWxlT3Zlcih0cnVlKTtcclxuICAgICAgICB0aGlzLm9uRmlsZXNEcm9wcGVkKEFycmF5LmZyb20odHJhbnNmZXIuZmlsZXMpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkRyYWdFbnRlcihlOiBEcmFnRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmlzVXBsb2FkaW5nKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuaGFzVmFsaWRVcGxvYWRUYXJnZXRzID0gdHJ1ZTtcclxuICAgIGlmICghdGhpcy5maWxlT3ZlciAmJiB0aGlzLmRyYWdDb250YWluc0ZpbGVzKGUpKSB7XHJcbiAgICAgIHRoaXMuZHJhZ0V2ZW50Q291bnQgPSAwO1xyXG4gICAgICB0aGlzLnNldEZpbGVPdmVyKHRydWUpO1xyXG5cclxuXHJcbiAgICAgIC8vIHVzZSB0aW1lb3V0IGhlcmUgdG8gZm9yY2UgYW5ndWxhciBkaWdlc3QgY3ljbGUgYmVmb3JlIGNvbnRpbnVpbmcsIGJlY2F1c2Ugd2UgYXJlIGFjY2Vzc2luZyBkb20gZWxlbWVudHNcclxuICAgICAgLy8gdGhhdCBhcmUgbm90IHRoZXJlICgqbmdJZikgdW50aWwgZmlsZU92ZXIgaXMgc2V0IHRvIHRydWUuXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIC8vIHRvZG86IHJlcGxhY2UgYnkgcmVuZGVyZXIgc29sdXRpb24gd2hlbiBhdmFpbGFibGUgKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE1Njc0KVxyXG4gICAgICAgIHRoaXMub3ZlcmxheUVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICAvLyBiaW5kIGxhdGUgKG9ubHksIHdoZW4gbmVlZGVkKSB0byBkcmFnbGVhdmUgZXZlbnQgdG8gYXZvaWQgaGVhdnkgcHJvY2Vzc2luZyBvbiBldmVyeSBkcmFnIGV2ZW50XHJcbiAgICAgICAgdGhpcy5kcmFnTGVhdmVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMub3ZlcmxheUVsLm5hdGl2ZUVsZW1lbnQsICdkcmFnbGVhdmUnLCAoZXZ0KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRyYWdFdmVudENvdW50LS07XHJcbiAgICAgICAgICBpZiAodGhpcy5kcmFnRXZlbnRDb3VudCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuZHJvcExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5vdmVybGF5RWwubmF0aXZlRWxlbWVudCwgJ2Ryb3AnLCAoZXZ0KSA9PiB7XHJcbiAgICAgICAgICBsZXQgdHJhbnNmZXIgPSB0aGlzLl9nZXRUcmFuc2ZlcihldnQpO1xyXG4gICAgICAgICAgaWYgKCF0cmFuc2Zlcikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLl9wcmV2ZW50QW5kU3RvcChldnQpO1xyXG5cclxuICAgICAgICAgIC8vIGNoZWNrIGZvciBkaXJlY3Rvcmllc1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0cmFuc2Zlci5pdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBmZSA9IHRyYW5zZmVyLml0ZW1zW2ldLndlYmtpdEdldEFzRW50cnkoKTtcclxuICAgICAgICAgICAgaWYgKGZlLmlzRGlyZWN0b3J5KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkSW5wdXQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoIXRoaXMuaW52YWxpZElucHV0KSB7XHJcbiAgICAgICAgICAgIHRoaXMub25GaWxlc0Ryb3BwZWQodHJhbnNmZXIuZmlsZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRyYWdPdmVyTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLm92ZXJsYXlFbC5uYXRpdmVFbGVtZW50LCAnZHJhZ292ZXInLCAoZXZ0KSA9PiB7XHJcbiAgICAgICAgICBsZXQgdHJhbnNmZXIgPSB0aGlzLl9nZXRUcmFuc2ZlcihldnQpO1xyXG4gICAgICAgICAgaWYgKCF0cmFuc2Zlcikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0cmFuc2Zlci5kcm9wRWZmZWN0ID0gJ2NvcHknO1xyXG4gICAgICAgICAgdGhpcy5fcHJldmVudEFuZFN0b3AoZXZ0KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRyYWdFdmVudENvdW50Kys7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRUcmFuc2ZlcihldmVudDogYW55KTogYW55IHtcclxuICAgIHJldHVybiBldmVudC5kYXRhVHJhbnNmZXIgPyBldmVudC5kYXRhVHJhbnNmZXIgOiBldmVudC5vcmlnaW5hbEV2ZW50LmRhdGFUcmFuc2ZlcjsgLy8galF1ZXJ5IGZpeDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXZlbnRBbmRTdG9wKGV2ZW50OiBhbnkpOiBhbnkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkZpbGVzRHJvcHBlZChmaWxlSXRlbXM6IEZpbGVbXSkge1xyXG4gICAgLy8gY2xlYXIgcXVldWUgd2hlbiBuZXcgZmlsZXMgYXJlIGFkZGVkXHJcbiAgICAvLyB0b2RvOiByZW1vdmUgaW4gZnV0dXJlIHJlbGVhc2VzIHRvIHN1cHBvcnQgY29sbGVjdGl2ZSBmaWxlIGFkZGluZ1xyXG4gICAgdGhpcy5xdWV1ZSA9IFtdO1xyXG4gICAgZm9yIChsZXQgZmlsZSBvZiBmaWxlSXRlbXMpIHtcclxuICAgICAgdGhpcy5xdWV1ZS5wdXNoKG5ldyBVcGxvYWRGaWxlSXRlbShmaWxlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYmluZCBFU0Mga2V5IGxpc3RlbmVyIGZvciBjbG9zaW5nIHRoZSBkaWFsb2cgYXMgbGF0ZSBhcyBwb3NzaWJsZVxyXG4gICAgaWYgKCF0aGlzLmVzY0tleUxpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuZXNjS2V5TGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAna2V5dXAnLCAoZSkgPT4ge1xyXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMjcpIHtcclxuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLy8gY2FsY3VsYXRlIHRvdGFsIHNpemUgb2YgcXVldWVcclxuICAgIHRoaXMuc2V0UXVldWVTaXplKCk7XHJcbiAgICAvLyBmaWx0ZXIgYXZhaWxhYmxlIHRhcmdldHNcclxuICAgIHRoaXMudmFsaWRhdGVVcGxvYWRUYXJnZXRzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaWx0ZXIgbGlzdCBvZiByZWdpc3RlcmVkIHVwbG9hZCB0YXJnZXRzLCBzbyBvbmx5IHZhbGlkIHRhcmdldHMgd2lsbCBiZSBzaG93bi5cclxuICAgKi9cclxuICBwcml2YXRlIHZhbGlkYXRlVXBsb2FkVGFyZ2V0cygpIHtcclxuICAgIHRoaXMuaGFzVmFsaWRVcGxvYWRUYXJnZXRzID0gdHJ1ZTtcclxuICAgIG9ic2VydmFibGVGb3JrSm9pbih0aGlzLnVwbG9hZFRhcmdldHMubWFwKHQgPT4gdGhpcy52YWxpZGF0ZVVwbG9hZFRhcmdldCh0KSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogeyB0YXJnZXQ6IFVwbG9hZFRhcmdldCwgdmFsaWQ6IGJvb2xlYW4gfVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkVXBsb2FkVGFyZ2V0cyA9IHJlcy5maWx0ZXIociA9PiByLnZhbGlkKS5tYXAoZmlsdGVyZWQgPT4gZmlsdGVyZWQudGFyZ2V0KS5yZXZlcnNlKCkuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gYS50eXBlID09PSAnY29udGV4dCcgPyAtMSA6IGIudHlwZSA9PT0gJ2NvbnRleHQnID8gMSA6IDA7IC8vIENvbnRleHQgc2hvdWxkIGJlIG9uIHRvcFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMudmFsaWRVcGxvYWRUYXJnZXRzID0gW107XHJcbiAgICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYXNWYWxpZFVwbG9hZFRhcmdldHMgPSB0aGlzLnZhbGlkVXBsb2FkVGFyZ2V0cy5sZW5ndGggPiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVVcGxvYWRUYXJnZXQodGFyZ2V0OiBVcGxvYWRUYXJnZXQpOiBPYnNlcnZhYmxlPHsgdGFyZ2V0OiBVcGxvYWRUYXJnZXQsIHZhbGlkOiBib29sZWFuIH0+IHtcclxuXHJcbiAgICBpZiAoIXRoaXMucXVldWUpIHtcclxuICAgICAgcmV0dXJuIG9ic2VydmFibGVPZih7dGFyZ2V0OiB0YXJnZXQsIHZhbGlkOiBmYWxzZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBPYnNlcnZhYmxlLmNyZWF0ZShvID0+IHtcclxuICAgICAgbGV0IHZhbGlkID0gZmFsc2U7XHJcblxyXG4gICAgICBpZiAodGFyZ2V0LnR5cGUgPT09IFVwbG9hZFRhcmdldC5ST09UKSB7XHJcblxyXG4gICAgICAgIC8vIHRvZG86IGFyZSB0aGVyZSBvdGhlciByZXN0cmljdGlvbnMgb24gcm9vdCB0YXJnZXQ/XHJcbiAgICAgICAgdGhpcy5wcmVwYXJlU2VydmljZS5nZXRQcmVwYXJlQ2hpbGRUeXBlcyhudWxsLCB0cnVlKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKHJlczogeyBwYXJlbnQ6IHN0cmluZywgdHlwZXM6IE9iamVjdFR5cGVbXSB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgdmFsaWQgPSB0aGlzLnF1ZXVlLmxlbmd0aCA+IDAgJiYgcmVzLnR5cGVzLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgICAgICAgby5uZXh0KHt0YXJnZXQ6IHRhcmdldCwgdmFsaWQ6IHZhbGlkfSk7XHJcbiAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIG8ubmV4dCh7dGFyZ2V0OiB0YXJnZXQsIHZhbGlkOiBmYWxzZX0pO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmICh0YXJnZXQudHlwZSA9PT0gVXBsb2FkVGFyZ2V0Lk9CSkVDVCkge1xyXG5cclxuICAgICAgICAvLyB0b2RvOiBjaGVjayBpZiB0aGUgcmVmZXJlbmNlIG9iamVjdCBzdXBwb3J0cyB0aGUgZ2l2ZW4gZmlsZSB0eXBlXHJcbiAgICAgICAgdmFsaWQgPSB0YXJnZXQucmVmZXJlbmNlT2JqZWN0ICYmXHJcbiAgICAgICAgICB0YXJnZXQucmVmZXJlbmNlT2JqZWN0LnR5cGUubWF4RmlsZXMgPiAwICYmXHJcbiAgICAgICAgICAhdGFyZ2V0LnJlZmVyZW5jZU9iamVjdC5sb2NrICYmXHJcbiAgICAgICAgICAhdGFyZ2V0LnJlZmVyZW5jZU9iamVjdC5pc0ZpbmFsaXplZCAmJlxyXG4gICAgICAgICAgKHRhcmdldC5yZWZlcmVuY2VPYmplY3QucmlnaHRzICYmIHRhcmdldC5yZWZlcmVuY2VPYmplY3QucmlnaHRzLmVkaXQpICYmXHJcbiAgICAgICAgICB0aGlzLnF1ZXVlLmxlbmd0aCA9PT0gMTtcclxuICAgICAgICBvLm5leHQoe3RhcmdldDogdGFyZ2V0LCB2YWxpZDogdmFsaWR9KTtcclxuICAgICAgICBvLmNvbXBsZXRlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGFyZ2V0LnR5cGUgPT09IFVwbG9hZFRhcmdldC5DT05URVhUIHx8IHRhcmdldC50eXBlID09PSBVcGxvYWRUYXJnZXQuQ09OVEVYVF9UUkVFKSB7XHJcblxyXG4gICAgICAgIC8vIHRvZG86IGFkZCBjaGVja3MgcmVsYXRlZCB0byB0aGUgcmVmZXJlbmNlIG9iamVjdCAoZS5nLiBhbGxvd2VkIGZpbGUgdHlwZXMpXHJcbiAgICAgICAgdGhpcy5wcmVwYXJlU2VydmljZS5nZXRQcmVwYXJlQ2hpbGRUeXBlcyh0YXJnZXQucmVmZXJlbmNlT2JqZWN0LmlkLCB0cnVlKVxyXG4gICAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgICAgKHJlczogeyBwYXJlbnQ6IHN0cmluZywgdHlwZXM6IE9iamVjdFR5cGVbXSB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgdmFsaWQgPSB0YXJnZXQucmVmZXJlbmNlT2JqZWN0ICYmIHRoaXMucXVldWUubGVuZ3RoID4gMCAmJiByZXMudHlwZXMubGVuZ3RoID4gMDtcclxuXHJcbiAgICAgICAgICAgICAgLy8gZm9yIENPTlRFWFRfVFJFRSB0YXJnZXRzIGFsc28gY2hlY2sgaWYgdGhlIGRlc2lyZWQgbm9kZVxyXG4gICAgICAgICAgICAgIC8vIHR5cGUgaXMgcGFydCBvZiB0aGUgcHJlcGFyZSBjaGlsZCB0eXBlc1xyXG4gICAgICAgICAgICAgIGlmICh0YXJnZXQudHlwZSA9PT0gVXBsb2FkVGFyZ2V0LkNPTlRFWFRfVFJFRSAmJiB0YXJnZXQuc3ViRm9sZGVyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJGb2xkZXI6IGFueSA9IHRhcmdldC5zdWJGb2xkZXI7XHJcbiAgICAgICAgICAgICAgICB2YWxpZCA9ICEhcmVzLnR5cGVzLmZpbmQodCA9PiB0aGlzLnN5c3RlbVNlcnZpY2UuaW1wbGVtZW50c1R5cGUodCwgc3ViRm9sZGVyLmRhdGEudHlwZSkpO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgby5uZXh0KHt0YXJnZXQ6IHRhcmdldCwgdmFsaWQ6IHZhbGlkfSk7XHJcbiAgICAgICAgICAgICAgby5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIG8ubmV4dCh7dGFyZ2V0OiB0YXJnZXQsIHZhbGlkOiBmYWxzZX0pO1xyXG4gICAgICAgICAgICAgIG8uY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBvLm5leHQoe3RhcmdldDogdGFyZ2V0LCB2YWxpZDogZmFsc2V9KTtcclxuICAgICAgICBvLmNvbXBsZXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlcyBhIGZpbGUgZnJvbSB0aGUgbGlzdCBvZiBmaWxlcyB0byBiZSB1cGxvYWRlZC5cclxuICAgKiBAcGFyYW0gZmlsZUl0ZW0gLSB0aGUgZmlsZSBpdGVtIHRvIGJlIHJlbW92ZWRcclxuICAgKi9cclxuICBwdWJsaWMgcmVtb3ZlRmlsZUl0ZW0oZmlsZUl0ZW06IFVwbG9hZEZpbGVJdGVtKSB7XHJcblxyXG4gICAgdGhpcy5xdWV1ZSA9IHRoaXMucXVldWUuZmlsdGVyKChmKSA9PiBmLmlkICE9PSBmaWxlSXRlbS5pZCk7XHJcbiAgICBpZiAoIXRoaXMucXVldWUubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHVwZGF0ZSBhdmFpbGFibGUgdXBsb2FkIHRhcmdldHMgYmVjYXVzZSB0aGVpciB2YWxpZGl0eVxyXG4gICAgICAvLyBtYXkgYmUgYmFzZWQgb24gdGhlIHF1ZXVlIHNpemVcclxuICAgICAgdGhpcy52YWxpZGF0ZVVwbG9hZFRhcmdldHMoKTtcclxuICAgICAgdGhpcy5zZXRRdWV1ZVNpemUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFByb2NlZWQgdXBsb2FkIHdpdGggYSBzZWxlY3RlZCB1cGxvYWQgdGFyZ2V0LlxyXG4gICAqIEBwYXJhbSB1cGxvYWRUYXJnZXQgLSB0aGUgdGFyZ2V0IHRvIHVwbG9hZCBmaWxlcyB0b1xyXG4gICAqL1xyXG4gIHB1YmxpYyBwcm9jZWVkV2l0aFVwbG9hZCh1cGxvYWRUYXJnZXQ6IFVwbG9hZFRhcmdldCkge1xyXG5cclxuICAgIGlmICh1cGxvYWRUYXJnZXQudHlwZSAhPT0gVXBsb2FkVGFyZ2V0LkNVU1RPTSAmJiB0aGlzLnF1ZXVlLmxlbmd0aCA+IDEpIHtcclxuICAgICAgLy8gRm9yIG1vcmUgdGhhbiBvbmUgZmlsZSB0byBiZSB1cGxvYWRlZCB0byBhIG5vbmUgY3VzdG9tIHRhcmdldCwgd2UgbGV0IHRoZSB1c2VyIGRlY2lkZSBpZlxyXG4gICAgICAvLyBiYXRjaCB1cGxvYWQgc2hvdWxkIGJlIHVzZWQgb3Igbm90IC4uLlxyXG5cclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRVcGxvYWRUYXJnZXQgPSB1cGxvYWRUYXJnZXQ7XHJcbiAgICB9IGVsc2UgaWYgKHVwbG9hZFRhcmdldC50eXBlID09PSBVcGxvYWRUYXJnZXQuT0JKRUNUKSB7XHJcbiAgICAgIC8vIC4uLiBvdGhlcndpc2UgdXBsb2FkIGlzIHN0YXJ0ZWQgaW1tZWRpYXRlbHlcclxuICAgICAgdGhpcy5zdGFydFVwbG9hZCh1cGxvYWRUYXJnZXQsIFtudWxsLCB0aGlzLmdldFN0YXRlUm91dGUoKV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdGFydFVwbG9hZCh1cGxvYWRUYXJnZXQsIFtudWxsLCAnL3ByZXBhcmUnXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQcm9jZWVkIHVwbG9hZCB1c2luZyB0aGUgc2VsZWN0ZWQgdXBsb2FkIHRhcmdldC5cclxuICAgKiBAcGFyYW0gdXNlQmF0Y2hVcGxvYWQgLSBmbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdG8gdXNlIGJhdGNoIHVwbG9hZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwcm9jZWVkV2l0aFNlbGVjdGVkVGFyZ2V0KHVzZUJhdGNoVXBsb2FkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnN0YXJ0VXBsb2FkKHRoaXMuc2VsZWN0ZWRVcGxvYWRUYXJnZXQsIFt1c2VCYXRjaFVwbG9hZCwgJy9wcmVwYXJlJ10pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXRzIHRoZSBzZWxlY3RlZCB1cGxvYWQgdGFyZ2V0LlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXNldFNlbGVjdGVkVXBsb2FkVGFyZ2V0KCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFVwbG9hZFRhcmdldCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRTdGF0ZVJvdXRlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucm91dGVyLnVybDtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHN1Y2Nlc3NmdWxVcGxvYWQodGFyZ2V0LCB1cGxvYWRUYXJnZXQpIHtcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5ETVNfT0JKRUNUX1VQREFURUQsIHVwbG9hZFRhcmdldC5yZWZlcmVuY2VPYmplY3QpO1xyXG4gICAgdXBsb2FkVGFyZ2V0Lm9uVXBsb2FkU3VjY2Vzcyh0YXJnZXQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhcnQgdGhlIGFjdHVhbCB1cGxvYWQuXHJcbiAgICogQHBhcmFtIHVwbG9hZFRhcmdldCAtIHRhcmdldCB0byB1cGxvYWQgdGhlIGZpbGVzIHRvXHJcbiAgICogQHBhcmFtIHVzZUJhdGNoVXBsb2FkIC0gZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRvIHVzZSBiYXRjaCB1cGxvYWRcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXJ0VXBsb2FkKHVwbG9hZFRhcmdldDogVXBsb2FkVGFyZ2V0LCBbLi4uYXJnc10pIHtcclxuXHJcbiAgICBjb25zdCBbdXNlQmF0Y2hVcGxvYWQsIHRhcmdldF0gPSBhcmdzO1xyXG5cclxuICAgIHRoaXMuaXNVcGxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy51bmJpbmRMaXN0ZW5lcnMoKTtcclxuICAgIHRoaXMucHJlcGFyZVNlcnZpY2VcclxuICAgICAgLnVwbG9hZFRvVGFyZ2V0KHVwbG9hZFRhcmdldCwgdGhpcy5xdWV1ZSwgdXNlQmF0Y2hVcGxvYWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHVwbG9hZFRhcmdldC5zdWJGb2xkZXIgJiYgdXBsb2FkVGFyZ2V0LnN1YkZvbGRlci5kYXRhLmRhdGEpIHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkge1xyXG4gICAgICAgICAgICAgIGxldCBvYnMgPSBbXTtcclxuICAgICAgICAgICAgICByZXMuZm9yRWFjaChyID0+IHtcclxuICAgICAgICAgICAgICAgIG9icy5wdXNoKHRoaXMucHJlcGFyZVNlcnZpY2UudXBkYXRlUHJlcGFyZWRJdGVtSW5kZXhEYXRhKHIuaWQsIHVwbG9hZFRhcmdldC5zdWJGb2xkZXIuZGF0YS5kYXRhKSk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgb2JzZXJ2YWJsZUZvcmtKb2luKG9icykuc3Vic2NyaWJlKCgpID0+IHRoaXMuc3VjY2Vzc2Z1bFVwbG9hZCh0YXJnZXQsIHVwbG9hZFRhcmdldCkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJlcGFyZVNlcnZpY2VcclxuICAgICAgICAgICAgICAgIC51cGRhdGVQcmVwYXJlZEl0ZW1JbmRleERhdGEocmVzLmlkLCB1cGxvYWRUYXJnZXQuc3ViRm9sZGVyLmRhdGEuZGF0YSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zdWNjZXNzZnVsVXBsb2FkKHRhcmdldCwgdXBsb2FkVGFyZ2V0KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3VjY2Vzc2Z1bFVwbG9hZCh0YXJnZXQsIHVwbG9hZFRhcmdldCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgfSwgVXRpbHMudGhyb3coKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdXBsb2FkVGFyZ2V0Lm9uVXBsb2FkRmFpbCgpO1xyXG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8udXBsb2FkLmdsb2JhbC5lcnJvci50aXRsZScpLFxyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVwbG9hZC5nbG9iYWwuZXJyb3IuZGVzY3JpcHRpb24nKSlcclxuICAgICAgKTtcclxuICAgIHRoaXMucmVzZXRTZWxlY3RlZFVwbG9hZFRhcmdldCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRRdWV1ZVNpemUoKSB7XHJcbiAgICBsZXQgcyA9IDA7XHJcbiAgICBmb3IgKGxldCBmIG9mIHRoaXMucXVldWUpIHtcclxuICAgICAgcyArPSBmLnNpemU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnF1ZXVlU2l6ZSA9IHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZSB0aGUgdXBsb2FkIG92ZXJsYXkgYW5kIHJlbGVhc2UgYWxsIGJvdW5kIHJlc291cmNlcy5cclxuICAgKi9cclxuICBjbG9zZSgpIHtcclxuICAgIC8vIHVuYmluZCBib3VuZCBldmVudCBsaXN0ZW5lciwgd2hlbiB0aGV5IGFyZSBub3QgbmVlZGVkIGFueW1vcmVcclxuICAgIHRoaXMudW5iaW5kTGlzdGVuZXJzKCk7XHJcbiAgICAvLyBjbGVhciB1cGxvYWQgcXVldWVcclxuICAgIHRoaXMucXVldWUgPSBbXTtcclxuICAgIC8vIGhpZGUgdGhlIG92ZXJsYXlcclxuICAgIHRoaXMuc2V0RmlsZU92ZXIoZmFsc2UpO1xyXG4gICAgdGhpcy5pbnZhbGlkSW5wdXQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RmlsZU92ZXIodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZmlsZU92ZXIgPSB2YWx1ZTtcclxuICAgIHRoaXMudXBsb2FkUmVnaXN0cnkuc2V0T3ZlcmxheUFjdGl2ZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVuYmluZExpc3RlbmVycygpIHtcclxuICAgIGlmICh0aGlzLmRyYWdMZWF2ZUxpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuZHJhZ0xlYXZlTGlzdGVuZXIoKTtcclxuICAgICAgdGhpcy5kcmFnTGVhdmVMaXN0ZW5lciA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5kcmFnT3Zlckxpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuZHJhZ092ZXJMaXN0ZW5lcigpO1xyXG4gICAgICB0aGlzLmRyYWdPdmVyTGlzdGVuZXIgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZHJvcExpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuZHJvcExpc3RlbmVyKCk7XHJcbiAgICAgIHRoaXMuZHJvcExpc3RlbmVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmVzY0tleUxpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuZXNjS2V5TGlzdGVuZXIoKTtcclxuICAgICAgdGhpcy5lc2NLZXlMaXN0ZW5lciA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgZHJhZyBldmVudCBjb250YWlucyBvbmUgb3IgbW9yZSBmaWxlcy5cclxuICAgKiBAcGFyYW0gZXZlbnQgLSB0aGUgZHJhZyBldmVudCB0byBiZSBjaGVja2VkXHJcbiAgICogQHJldHVybnMgbnVtYmVyIG9mIGZpbGVzXHJcbiAgICovXHJcbiAgIHByaXZhdGUgZHJhZ0NvbnRhaW5zRmlsZXMoZXZlbnQ6IERyYWdFdmVudCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbShldmVudC5kYXRhVHJhbnNmZXIuaXRlbXMgfHwgW10pLmZpbHRlcihpID0+IGkua2luZCA9PT0gJ2ZpbGUnKS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIGN1cnJlbnQgcGFzdGUgZXZlbnQgY29udGFpbnMgb25lIG9yIG1vcmUgZmlsZXMuXHJcbiAgICogQHBhcmFtIGV2ZW50IC0gdGhlIHBhc3RlIGV2ZW50IHRvIGJlIGNoZWNrZWRcclxuICAgKiBAcmV0dXJucyBudW1iZXIgb2YgZmlsZXNcclxuICAgKi9cclxuICBwcml2YXRlIHBhc3RlQ29udGFpbnNGaWxlcyhldmVudDogQ2xpcGJvYXJkRXZlbnQpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIEFycmF5LmZyb20oZXZlbnQuY2xpcGJvYXJkRGF0YS5pdGVtcyB8fCBbXSkuZmlsdGVyKGkgPT4gaS5raW5kID09PSAnZmlsZScpLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIC8vIG5nRm9yIHRyYWNraW5nIGZ1bmN0aW9uIGZvciB1cGxvYWQgdGFyZ2V0c1xyXG4gIHRhcmdldFRyYWNrQnlGbihpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uaWQ7XHJcbiAgfVxyXG5cclxuICAvLyBuZ0ZvciB0cmFja2luZyBmdW5jdGlvbiBmb3IgZmlsZSBpdGVtc1xyXG4gIHRyYWNrQnlGbihpbmRleCwgaXRlbSkge1xyXG4gICAgcmV0dXJuIGluZGV4O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuZHJhZ0VudGVyTGlzdGVuZXIpIHtcclxuICAgICAgdGhpcy5kcmFnRW50ZXJMaXN0ZW5lcigpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,11 +1,11 @@
1
1
  import { map } from 'rxjs/operators';
2
- import { Injectable, NgZone } from '@angular/core';
2
+ import { ApplicationRef, Injectable, NgZone } from '@angular/core';
3
3
  import { Router } from '@angular/router';
4
4
  import { AgentService } from '../agent/agent.service';
5
5
  import { Logger, NotificationsService, BackendService, ClipboardService, DmsService, EventService, UserService, DmsObject, Utils, TranslateService, EnaioEvent } from '@eo-sdk/core';
6
6
  export const UNDOCK_WINDOW_NAME = 'eoViewer';
7
7
  export class PluginsService {
8
- constructor(backend, notifications, clipboard, logger, translate, dmsService, router, agentService, eventService, userService, ngZone) {
8
+ constructor(backend, notifications, clipboard, logger, translate, dmsService, router, agentService, eventService, userService, appRef, ngZone) {
9
9
  this.backend = backend;
10
10
  this.notifications = notifications;
11
11
  this.clipboard = clipboard;
@@ -16,6 +16,7 @@ export class PluginsService {
16
16
  this.agentService = agentService;
17
17
  this.eventService = eventService;
18
18
  this.userService = userService;
19
+ this.appRef = appRef;
19
20
  this.ngZone = ngZone;
20
21
  this.agentAction = {
21
22
  OPEN: 'eo.agent.action.open',
@@ -56,6 +57,11 @@ export class PluginsService {
56
57
  // todo: create inreface for API
57
58
  getApi() {
58
59
  return {
60
+ detectChanges: () => {
61
+ setTimeout(() => {
62
+ this.appRef.tick();
63
+ }, 500);
64
+ },
59
65
  router: {
60
66
  get: () => this.router
61
67
  },
@@ -248,6 +254,7 @@ PluginsService.ctorParameters = () => [
248
254
  { type: AgentService },
249
255
  { type: EventService },
250
256
  { type: UserService },
257
+ { type: ApplicationRef },
251
258
  { type: NgZone }
252
259
  ];
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFDRyxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUN0RSxVQUFVLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQW1CLEtBQUssRUFDeEUsZ0JBQWdCLEVBQWUsVUFBVSxFQUMxQyxNQUFNLGNBQWMsQ0FBQztBQUV0QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUM7QUFFN0MsTUFBTSxPQUFPLGNBQWM7SUFvQ3pCLFlBQW9CLE9BQXVCLEVBQ2pDLGFBQW1DLEVBQ25DLFNBQTJCLEVBQzNCLE1BQWMsRUFDZixTQUEyQixFQUMxQixVQUFzQixFQUN0QixNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsTUFBYztRQVZKLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ2pDLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQUNuQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2YsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZLENB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LENBQUM7UUFDckMsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksWUFBWSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU87UUFFNUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7YUFDM0QsU0FBUyxFQUFFO2FBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2YsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFVO1FBQzVCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7OztZQS9QRixVQUFVOzs7WUFONkIsY0FBYztZQUFwQyxvQkFBb0I7WUFBa0IsZ0JBQWdCO1lBQTlELE1BQU07WUFFZCxnQkFBZ0I7WUFEaEIsVUFBVTtZQUpKLE1BQU07WUFDTixZQUFZO1lBR04sWUFBWTtZQUFFLFdBQVc7WUFMbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7SW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7QWdlbnRTZXJ2aWNlfSBmcm9tICcuLi9hZ2VudC9hZ2VudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBFb1VzZXIsIExvZ2dlciwgTm90aWZpY2F0aW9uc1NlcnZpY2UsIEJhY2tlbmRTZXJ2aWNlLCBDbGlwYm9hcmRTZXJ2aWNlLFxyXG4gIERtc1NlcnZpY2UsIEV2ZW50U2VydmljZSwgVXNlclNlcnZpY2UsIERtc09iamVjdCwgQ2xpcGJvYXJkQWN0aW9uLCBVdGlscyxcclxuICBUcmFuc2xhdGVTZXJ2aWNlLCBIdHRwT3B0aW9ucywgRW5haW9FdmVudFxyXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgVU5ET0NLX1dJTkRPV19OQU1FID0gJ2VvVmlld2VyJztcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUGx1Z2luc1NlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHVzZXI6IEVvVXNlcjtcclxuICBwcml2YXRlIGFnZW50QWN0aW9uID0ge1xyXG4gICAgT1BFTjogJ2VvLmFnZW50LmFjdGlvbi5vcGVuJyxcclxuICAgIE1BSUw6ICdlby5hZ2VudC5hY3Rpb24ubWFpbCcsXHJcbiAgICBNQUlMX0FTX1BERjogJ2VvLmFnZW50LmFjdGlvbi5tYWlsLXBkZicsXHJcbiAgICBDTElQQk9BUkQ6ICdlby5hZ2VudC5hY3Rpb24uY2xpcGJvYXJkJyxcclxuICAgIENMSVBCT0FSRF9BU19QREY6ICdlby5hZ2VudC5hY3Rpb24uY2xpcGJvYXJkLXBkZicsXHJcbiAgICBFWFRFUk5BTDogJ2VvLmFnZW50LmFjdGlvbi5leHRlcm5hbCdcclxuICB9O1xyXG5cclxuICBwdWJsaWMgZ2V0IGN1cnJlbnRVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhcGkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRBcGkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseUZ1bmN0aW9uKHZhbHVlOiBzdHJpbmcgfCBGdW5jdGlvbiB8IGFueSwgcGFyYW1zPzogc3RyaW5nLCBhcmdzPzogYW55KSB7XHJcbiAgICBjb25zdCBmbmMgPSB2YWx1ZT8udG9TdHJpbmcoKS50cmltKCk7XHJcbiAgICBpZiAoIWZuYykgcmV0dXJuO1xyXG4gICAgY29uc3QgZiA9IGZuYy5tYXRjaCgvXmZ1bmN0aW9ufF5cXCguKlxcKVxccyo9Pi8pXHJcbiAgICAgID8gYHJldHVybiAoJHtmbmN9KS5hcHBseSh0aGlzLGFyZ3VtZW50cylgXHJcbiAgICAgIDogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhZm5jLnN0YXJ0c1dpdGgoXCInXCIpXHJcbiAgICAgID8gYHJldHVybiAnJHtmbmN9J2BcclxuICAgICAgOiBgcmV0dXJuICR7Zm5jfWA7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbiguLi4ocGFyYW1zIHx8ICdhcGknKS5zcGxpdCgnLCcpLm1hcCgoYSkgPT4gYS50cmltKCkpLCBmKS5hcHBseSh0aGlzLmFwaSwgYXJncyB8fCBbdGhpcy5hcGldKTtcclxuICAgICAgfSBjYXRjaChlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjbGlwYm9hcmQ6IENsaXBib2FyZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxyXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xyXG5cclxuICAgIHdpbmRvd1snYXBpJ10gPSB0aGlzLmFwaTtcclxuXHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC51c2VyJFxyXG4gICAgICAuc3Vic2NyaWJlKCh1c2VyKSA9PiB0aGlzLnVzZXIgPSB1c2VyKTtcclxuICB9XHJcblxyXG4gIC8vIHRvZG86IGNyZWF0ZSBpbnJlZmFjZSBmb3IgQVBJXHJcblxyXG4gIHB1YmxpYyBnZXRBcGkoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHJvdXRlcjoge1xyXG4gICAgICAgIGdldDogKCkgPT4gdGhpcy5yb3V0ZXJcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRzOiB7XHJcbiAgICAgICAgZW5haW9FdmVudFR5cGU6IEVuYWlvRXZlbnQsXHJcbiAgICAgICAgb246ICh0eXBlOiBzdHJpbmcpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS5vbih0eXBlKSksXHJcbiAgICAgICAgdHJpZ2dlcjogKHR5cGU6IHN0cmluZywgZGF0YT86IGFueSkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIodHlwZSwgZGF0YSkpXHJcbiAgICAgIH0sXHJcbiAgICAgIHNlc3Npb246IHtcclxuICAgICAgICBnZXRVc2VyOiAoKSA9PiB0aGlzLmdldEN1cnJlbnRVc2VyKClcclxuICAgICAgfSxcclxuICAgICAgZG1zOiB7XHJcbiAgICAgICAgZ2V0T2JqZWN0OiAoaWQsIHR5cGUsIHZlcnNpb24pID0+IHRoaXMuZ2V0RG1zT2JqZWN0KGlkLCB0eXBlLCB2ZXJzaW9uKSxcclxuICAgICAgICBnZXRSZXN1bHQ6IChmaWVsZHMsIHR5cGUpID0+IHRoaXMuZ2V0UmVzdWx0KGZpZWxkcywgdHlwZSksXHJcbiAgICAgICAgZG93bmxvYWRDb250ZW50OiAoZG1zT2JqZWN0czogRG1zT2JqZWN0W10sIHJlbmRpdGlvbj86ICdQREYnXHJcbiAgICAgICAgICB8ICdUSUZGJ1xyXG4gICAgICAgICAgfCAnVEVYVCdcclxuICAgICAgICAgIHwgJ0pQRUcnKSA9PiB0aGlzLmJhY2tlbmQuZG93bmxvYWRDb250ZW50KGRtc09iamVjdHMsIHJlbmRpdGlvbilcclxuICAgICAgfSxcclxuICAgICAgaHR0cDoge1xyXG4gICAgICAgIGdldDogKHVyaSwgYmFzZSwgb3B0aW9ucykgPT4gdGhpcy5nZXQodXJpLCBiYXNlLCBvcHRpb25zKSxcclxuICAgICAgICBwb3N0OiAodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLnBvc3QodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSxcclxuICAgICAgICBkZWw6ICh1cmksIGJhc2UsIG9wdGlvbnMpID0+IHRoaXMuZGVsKHVyaSwgYmFzZSwgb3B0aW9ucyksXHJcbiAgICAgICAgcHV0OiAodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLnB1dCh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpXHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgIGdldDogKCkgPT4gdGhpcy5nZXRDb25maWcoKVxyXG4gICAgICB9LFxyXG4gICAgICBjb250ZW50OiB7XHJcbiAgICAgICAgdmlld2VyOiAoKSA9PiB3aW5kb3dbVU5ET0NLX1dJTkRPV19OQU1FXSB8fCAod2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2VvLW1lZGlhIGlmcmFtZVtzcmNdJykgfHwge30pWydjb250ZW50V2luZG93J10sXHJcbiAgICAgICAgdHJpZ2dlckVycm9yOiAoZXJyLCB3aW4sIHBhcmFtZXRlcnMpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKFVORE9DS19XSU5ET1dfTkFNRSArICdFcnJvcicsIHsgZXJyLCB3aW4sIHBhcmFtZXRlcnMgfSkpLFxyXG4gICAgICAgIGNhdGNoRXJyb3I6ICgpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS5vbihVTkRPQ0tfV0lORE9XX05BTUUgKyAnRXJyb3InKSlcclxuICAgICAgfSxcclxuICAgICAgdXRpbDoge1xyXG4gICAgICAgICQ6IChzZWxlY3RvcnMsIGVsZW1lbnQpID0+IChlbGVtZW50IHx8IHdpbmRvdy5kb2N1bWVudCkucXVlcnlTZWxlY3RvcihzZWxlY3RvcnMpLFxyXG4gICAgICAgICQkOiAoc2VsZWN0b3JzLCBlbGVtZW50KSA9PiAoZWxlbWVudCB8fCB3aW5kb3cuZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3JzKSxcclxuICAgICAgICBzdHlsZXM6IChzdHlsZXMsIGlkID0gJ19fc3R5bGVzJywgd2luOiBhbnkgPSB3aW5kb3cpID0+IHtcclxuICAgICAgICAgIGxldCBzID0gd2luLmRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3RvcignIycgKyBpZCk7XHJcbiAgICAgICAgICBpZiAoIXMpIHtcclxuICAgICAgICAgICAgcyA9IHdpbi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG4gICAgICAgICAgICBzLnNldEF0dHJpYnV0ZSgnaWQnLCBpZCk7XHJcbiAgICAgICAgICAgIHdpbi5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcy5pbm5lckhUTUwgPSBzdHlsZXM7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmFuc2xhdGU6IChrZXksIGRhdGEpID0+IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5LCBkYXRhKSxcclxuICAgICAgICBlbmNvZGVGaWxlTmFtZTogKGZpbGVuYW1lKSA9PiB0aGlzLmVuY29kZUZpbGVOYW1lKGZpbGVuYW1lKSxcclxuICAgICAgICBub3RpZmllcjoge1xyXG4gICAgICAgICAgc3VjY2VzczogKHRleHQsIHRpdGxlKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnMuc3VjY2Vzcyh0aXRsZSwgdGV4dCksXHJcbiAgICAgICAgICBlcnJvcjogKHRleHQsIHRpdGxlKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnMuZXJyb3IodGl0bGUsIHRleHQpLFxyXG4gICAgICAgICAgaW5mbzogKHRleHQsIHRpdGxlKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnMuaW5mbyh0aXRsZSwgdGV4dCksXHJcbiAgICAgICAgICB3YXJuaW5nOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy53YXJuaW5nKHRpdGxlLCB0ZXh0KVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgY2xpcGJvYXJkOiB7XHJcbiAgICAgICAgc2V0OiAoZWxlbWVudHM6IERtc09iamVjdFtdLCBhY3Rpb246IENsaXBib2FyZEFjdGlvbikgPT4gdGhpcy5jbGlwYm9hcmQuc2V0KGVsZW1lbnRzLCBhY3Rpb24pLFxyXG4gICAgICAgIGdldDogKCkgPT4gdGhpcy5jbGlwYm9hcmQuZ2V0KCksXHJcbiAgICAgICAgY2xlYXI6ICgpID0+IHRoaXMuY2xpcGJvYXJkLmNsZWFyKClcclxuICAgICAgfSxcclxuICAgICAgLy8gQWdlbnRcclxuICAgICAgYWdlbnQ6IHtcclxuICAgICAgICBnZXRBdmFpbGFiaWxpdHk6ICgpID0+IHRoaXMuZ2V0QWdlbnRBdmFpbGFiaWxpdHkoKSxcclxuICAgICAgICBleGVjdXRlQWN0aW9uOiAoYWN0aW9uLCBhcmdzKSA9PiB0aGlzLmV4ZWN1dGVBZ2VudEFjdGlvbihhY3Rpb24sIGFyZ3MpLFxyXG4gICAgICAgIGFjdGlvbjogdGhpcy5hZ2VudEFjdGlvblxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBnZXRBZ2VudEF2YWlsYWJpbGl0eSgpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKHRoaXMuYWdlbnRTZXJ2aWNlLmlzQ29ubmVjdGVkKSB7XHJcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmFnZW50U2VydmljZS5hZ2VudEF2YWlsYWJpbGl0eS5DT05ORUNURUQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc29sdmUodGhpcy5hZ2VudFNlcnZpY2UuYWdlbnRBdmFpbGFiaWxpdHkuVU5BVkFJTEFCTEUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleGVjdXRlQWdlbnRBY3Rpb24oYWN0aW9uLCBhcmdzKSB7XHJcblxyXG4gICAgc3dpdGNoIChhY3Rpb24pIHtcclxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkNMSVBCT0FSRDpcclxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5jb3B5VG9DbGlwYm9hcmQoYXJncyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5DTElQQk9BUkRfQVNfUERGOlxyXG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmNvcHlUb0NsaXBib2FyZChhcmdzKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkVYVEVSTkFMOlxyXG4gICAgICAgIGlmICghYXJncy5leGVjdXRhYmxlKSB7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignTWlzc2luZyBmaWVsZCBhcmdzLmV4ZWN1dGFibGUnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKChhcmdzLmFyZ3MgJiYgYXJncy5hcmdzLmxlbmd0aCA9PT0gMCkgJiYgIUFycmF5LmlzQXJyYXkoYXJncy5hcmdzKSkge1xyXG4gICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZpZWxkIGFyZ3MuYXJncyBtdXN0IGJlIGVtcHR5IG9yIGFycmF5LicpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmFnZW50U2VydmljZS5zZW5kRXh0ZXJuYWxBY3Rpb24oYXJncy5leGVjdXRhYmxlLCBhcmdzLmFyZ3MgfHwgW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLk1BSUw6XHJcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5NQUlMX0FTX1BERjpcclxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5zZW5kQXNNYWlsKGFyZ3MpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uT1BFTjpcclxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5vcGVuRG9jdW1lbnQoYXJncywgYXJncy5sb2NrKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQodXJpLCBiYXNlID0gJycsIG9wdGlvbnM/OiBIdHRwT3B0aW9ucykge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0KHVyaSwgdGhpcy5iYWNrZW5kLmdldEhvc3QoKSArIGJhc2UsIG9wdGlvbnMgfHwge29ic2VydmU6ICdyZXNwb25zZSd9KS5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiBvcHRpb25zID8gcmVzIDogeyBzdGF0dXM6IHJlcy5zdGF0dXMsIGRhdGE6IHJlcy5ib2R5IH07XHJcbiAgICAgICAgfSkpLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHB1dCh1cmksIGRhdGEsIGJhc2UgPSAnJywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnB1dCh1cmksIGRhdGEsIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwb3N0KHVyaSwgZGF0YSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdCh1cmksIGRhdGEsIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWwodXJpLCBiYXNlID0gJycsIG9wdGlvbnM/OiBIdHRwT3B0aW9ucykge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWwodXJpLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucykudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q3VycmVudFVzZXIoKTogRW9Vc2VyIHtcclxuICAgIHJldHVybiB0aGlzLnVzZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpIHtcclxuICAgIHJldHVybiBVdGlscy5lbmNvZGVGaWxlTmFtZShmaWxlbmFtZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q29uZmlnKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2VydmljZUJhc2U6IHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpXHJcblxyXG4gICAgICAvLyB0b2RvOiBkbyB3ZSBoYXZlIHRvIHByb3ZpZGUgdGhlIHBsdWdpbiBkZXZlbG9wZXJzIHdpdGggdGhlc2UgaW5mb3JtYXRpb25zP1xyXG4gICAgICAvLyBwbHVnaW5zQmFzZTogJGVvQ29uZmlnLmdldFBsdWdpbkJhc2UoKSxcclxuICAgICAgLy8gcGx1Z2luU3RhdGVzQmFzZTogJGVvQ29uZmlnLmdldFBsdWdpblN0YXRlc0Jhc2UoKSxcclxuICAgICAgLy8gdGhlbWVCYXNlOiAkZW9Db25maWcuZ2V0VGhlbWVCYXNlKClcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBmZXRjaGVzIGRtcyBvYmplY3RzIGZyb20gdGhlIHNlcnZlciB0aGF0IG1hdGNoIHRoZSBnaXZlbiBwYXJhbXNcclxuICAgKlxyXG4gICAqIEBwYXJhbSBmaWVsZHMgLSB0aGUgZmllbGRzIHRvIG1hdGNoZWQuIGV4YW1wbGU6IHtuYW1lOiAnbWF4JywgcGx6OiAnNDcxMTF9XHJcbiAgICogQHBhcmFtIHR5cGUgLSB0aGUgdGFyZ2V0IG9iamVjdCB0eXBlXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB3aGljaCB3aWxsIGJlIHJlc29sdmVkIGJ5IGFuIGFycmF5IG9mIERtc09iamVjdHMgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhcmFtc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRSZXN1bHQoZmllbGRzLCB0eXBlKTogUHJvbWlzZTxEbXNPYmplY3RbXT4ge1xyXG5cclxuICAgIGxldCBxID0gT2JqZWN0LmtleXMoZmllbGRzKS5maWx0ZXIoayA9PiAoZmllbGRzW2tdICE9PSB1bmRlZmluZWQgJiYgZmllbGRzW2tdICE9PSBudWxsKSkubWFwKGsgPT4gayArICc9JyArIGZpZWxkc1trXSkuam9pbignOycpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLmdldEpzb24oYC9yZXN1bHQvcXVlcnk/cXVlcnk9JHtlbmNvZGVVUklDb21wb25lbnQocSl9JnR5cGU9JHt0eXBlfWApXHJcbiAgICAgIC50b1Byb21pc2UoKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCByZXNPYmplY3RzID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaXRlbSBvZiByZXNwb25zZSkge1xyXG4gICAgICAgICAgcmVzT2JqZWN0cy5wdXNoKG5ldyBEbXNPYmplY3QoaXRlbSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc09iamVjdHMpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2godGhpcy5oYW5kbGVFcnJvcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2FkcyBhIERNUyBvYmplY3QgZnJvbSB0aGUgYmFja2VuZC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgRE1TLU9iamVjdCB0byBiZSBmZXRjaGVkLlxyXG4gICAqIEBwYXJhbSBbdHlwZV0gLSBUaGUgb2JqZWN0IHR5cGUgb2YgdGhlIHNlbGVjdGVkIERNUy1PYmplY3QuIFdpbGwgaW1wcm92ZSBwZXJmb3JtYW5jZSBpZiBzZXQuXHJcbiAgICogQHBhcmFtIFt2ZXJzaW9uXSAtIHJldHJpZXZlIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgZG1zIG9iamVjdFxyXG4gICAqIEBwYXJhbSBbaW50ZW50XSAtIHVzZWQgZm9yIHNlcnZlciBzaWRlIGxvZ2dpbmcuIElmIHlvdSBwcm92aWRlIGFuIGludGVudCwgdGhlXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB3aGljaCB3aWxsIGJlIHJlc29sdmVkIGJ5IHRoZSBETVMgb2JqZWN0IGZldGNoZWQgZnJvbSB0aGUgc2VydmVyXHJcbiAgICovXHJcbiAgcHVibGljIGdldERtc09iamVjdChpZCwgdHlwZSwgdmVyc2lvbiwgaW50ZW50Pyk6IFByb21pc2U8RG1zT2JqZWN0PiB7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZG1zU2VydmljZS5nZXREbXNPYmplY3QoaWQsIHR5cGUsIHZlcnNpb24sIGludGVudClcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKHRoaXMuaGFuZGxlRXJyb3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvci5tZXNzYWdlIHx8IGVycm9yKTtcclxuICB9XHJcbn1cclxuIl19
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQ0csTUFBTSxFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFDdEUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFtQixLQUFLLEVBQ3hFLGdCQUFnQixFQUFlLFVBQVUsRUFDMUMsTUFBTSxjQUFjLENBQUM7QUFFdEIsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDO0FBRTdDLE1BQU0sT0FBTyxjQUFjO0lBb0N6QixZQUFvQixPQUF1QixFQUNqQyxhQUFtQyxFQUNuQyxTQUEyQixFQUMzQixNQUFjLEVBQ2YsU0FBMkIsRUFDMUIsVUFBc0IsRUFDdEIsTUFBYyxFQUNkLFlBQTBCLEVBQzFCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLE1BQXNCLEVBQ3RCLE1BQWM7UUFYSixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDbkMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNmLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtR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RUFBRSxFQUFFO1lBQ3RCLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUNwQixLQUFLLElBQUksSUFBSSxJQUFJLFFBQVEsRUFBRTtnQkFDekIsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ3RDO1lBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFlBQVksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFPO1FBRTVDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDO2FBQzNELFNBQVMsRUFBRTthQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNmLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBVTtRQUM1QixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDOzs7WUFyUUYsVUFBVTs7O1lBTjZCLGNBQWM7WUFBcEMsb0JBQW9CO1lBQWtCLGdCQUFnQjtZQUE5RCxNQUFNO1lBRWQsZ0JBQWdCO1lBRGhCLFVBQVU7WUFKSixNQUFNO1lBQ04sWUFBWTtZQUdOLFlBQVk7WUFBRSxXQUFXO1lBTC9CLGNBQWM7WUFBYyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtBcHBsaWNhdGlvblJlZiwgSW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7QWdlbnRTZXJ2aWNlfSBmcm9tICcuLi9hZ2VudC9hZ2VudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBFb1VzZXIsIExvZ2dlciwgTm90aWZpY2F0aW9uc1NlcnZpY2UsIEJhY2tlbmRTZXJ2aWNlLCBDbGlwYm9hcmRTZXJ2aWNlLFxyXG4gIERtc1NlcnZpY2UsIEV2ZW50U2VydmljZSwgVXNlclNlcnZpY2UsIERtc09iamVjdCwgQ2xpcGJvYXJkQWN0aW9uLCBVdGlscyxcclxuICBUcmFuc2xhdGVTZXJ2aWNlLCBIdHRwT3B0aW9ucywgRW5haW9FdmVudFxyXG59IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcblxyXG5leHBvcnQgY29uc3QgVU5ET0NLX1dJTkRPV19OQU1FID0gJ2VvVmlld2VyJztcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUGx1Z2luc1NlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHVzZXI6IEVvVXNlcjtcclxuICBwcml2YXRlIGFnZW50QWN0aW9uID0ge1xyXG4gICAgT1BFTjogJ2VvLmFnZW50LmFjdGlvbi5vcGVuJyxcclxuICAgIE1BSUw6ICdlby5hZ2VudC5hY3Rpb24ubWFpbCcsXHJcbiAgICBNQUlMX0FTX1BERjogJ2VvLmFnZW50LmFjdGlvbi5tYWlsLXBkZicsXHJcbiAgICBDTElQQk9BUkQ6ICdlby5hZ2VudC5hY3Rpb24uY2xpcGJvYXJkJyxcclxuICAgIENMSVBCT0FSRF9BU19QREY6ICdlby5hZ2VudC5hY3Rpb24uY2xpcGJvYXJkLXBkZicsXHJcbiAgICBFWFRFUk5BTDogJ2VvLmFnZW50LmFjdGlvbi5leHRlcm5hbCdcclxuICB9O1xyXG5cclxuICBwdWJsaWMgZ2V0IGN1cnJlbnRVcmwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBhcGkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRBcGkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseUZ1bmN0aW9uKHZhbHVlOiBzdHJpbmcgfCBGdW5jdGlvbiB8IGFueSwgcGFyYW1zPzogc3RyaW5nLCBhcmdzPzogYW55KSB7XHJcbiAgICBjb25zdCBmbmMgPSB2YWx1ZT8udG9TdHJpbmcoKS50cmltKCk7XHJcbiAgICBpZiAoIWZuYykgcmV0dXJuO1xyXG4gICAgY29uc3QgZiA9IGZuYy5tYXRjaCgvXmZ1bmN0aW9ufF5cXCguKlxcKVxccyo9Pi8pXHJcbiAgICAgID8gYHJldHVybiAoJHtmbmN9KS5hcHBseSh0aGlzLGFyZ3VtZW50cylgXHJcbiAgICAgIDogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhZm5jLnN0YXJ0c1dpdGgoXCInXCIpXHJcbiAgICAgID8gYHJldHVybiAnJHtmbmN9J2BcclxuICAgICAgOiBgcmV0dXJuICR7Zm5jfWA7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbiguLi4ocGFyYW1zIHx8ICdhcGknKS5zcGxpdCgnLCcpLm1hcCgoYSkgPT4gYS50cmltKCkpLCBmKS5hcHBseSh0aGlzLmFwaSwgYXJncyB8fCBbdGhpcy5hcGldKTtcclxuICAgICAgfSBjYXRjaChlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnM6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjbGlwYm9hcmQ6IENsaXBib2FyZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxyXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xyXG5cclxuICAgIHdpbmRvd1snYXBpJ10gPSB0aGlzLmFwaTtcclxuXHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXHJcbiAgICAgIC51c2VyJFxyXG4gICAgICAuc3Vic2NyaWJlKCh1c2VyKSA9PiB0aGlzLnVzZXIgPSB1c2VyKTtcclxuICB9XHJcblxyXG4gIC8vIHRvZG86IGNyZWF0ZSBpbnJlZmFjZSBmb3IgQVBJXHJcblxyXG4gIHB1YmxpYyBnZXRBcGkoKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGRldGVjdENoYW5nZXM6ICgpID0+IHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLmFwcFJlZi50aWNrKCk7XHJcbiAgICAgICAgfSwgNTAwKTtcclxuICAgICAgfSxcclxuICAgICAgcm91dGVyOiB7XHJcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLnJvdXRlclxyXG4gICAgICB9LFxyXG4gICAgICBldmVudHM6IHtcclxuICAgICAgICBlbmFpb0V2ZW50VHlwZTogRW5haW9FdmVudCxcclxuICAgICAgICBvbjogKHR5cGU6IHN0cmluZykgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLm9uKHR5cGUpKSxcclxuICAgICAgICB0cmlnZ2VyOiAodHlwZTogc3RyaW5nLCBkYXRhPzogYW55KSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcih0eXBlLCBkYXRhKSlcclxuICAgICAgfSxcclxuICAgICAgc2Vzc2lvbjoge1xyXG4gICAgICAgIGdldFVzZXI6ICgpID0+IHRoaXMuZ2V0Q3VycmVudFVzZXIoKVxyXG4gICAgICB9LFxyXG4gICAgICBkbXM6IHtcclxuICAgICAgICBnZXRPYmplY3Q6IChpZCwgdHlwZSwgdmVyc2lvbikgPT4gdGhpcy5nZXREbXNPYmplY3QoaWQsIHR5cGUsIHZlcnNpb24pLFxyXG4gICAgICAgIGdldFJlc3VsdDogKGZpZWxkcywgdHlwZSkgPT4gdGhpcy5nZXRSZXN1bHQoZmllbGRzLCB0eXBlKSxcclxuICAgICAgICBkb3dubG9hZENvbnRlbnQ6IChkbXNPYmplY3RzOiBEbXNPYmplY3RbXSwgcmVuZGl0aW9uPzogJ1BERidcclxuICAgICAgICAgIHwgJ1RJRkYnXHJcbiAgICAgICAgICB8ICdURVhUJ1xyXG4gICAgICAgICAgfCAnSlBFRycpID0+IHRoaXMuYmFja2VuZC5kb3dubG9hZENvbnRlbnQoZG1zT2JqZWN0cywgcmVuZGl0aW9uKVxyXG4gICAgICB9LFxyXG4gICAgICBodHRwOiB7XHJcbiAgICAgICAgZ2V0OiAodXJpLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLmdldCh1cmksIGJhc2UsIG9wdGlvbnMpLFxyXG4gICAgICAgIHBvc3Q6ICh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpID0+IHRoaXMucG9zdCh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpLFxyXG4gICAgICAgIGRlbDogKHVyaSwgYmFzZSwgb3B0aW9ucykgPT4gdGhpcy5kZWwodXJpLCBiYXNlLCBvcHRpb25zKSxcclxuICAgICAgICBwdXQ6ICh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpID0+IHRoaXMucHV0KHVyaSwgZGF0YSwgYmFzZSwgb3B0aW9ucylcclxuICAgICAgfSxcclxuICAgICAgY29uZmlnOiB7XHJcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLmdldENvbmZpZygpXHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbnRlbnQ6IHtcclxuICAgICAgICB2aWV3ZXI6ICgpID0+IHdpbmRvd1tVTkRPQ0tfV0lORE9XX05BTUVdIHx8ICh3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZW8tbWVkaWEgaWZyYW1lW3NyY10nKSB8fCB7fSlbJ2NvbnRlbnRXaW5kb3cnXSxcclxuICAgICAgICB0cmlnZ2VyRXJyb3I6IChlcnIsIHdpbiwgcGFyYW1ldGVycykgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoVU5ET0NLX1dJTkRPV19OQU1FICsgJ0Vycm9yJywgeyBlcnIsIHdpbiwgcGFyYW1ldGVycyB9KSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcjogKCkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLm9uKFVORE9DS19XSU5ET1dfTkFNRSArICdFcnJvcicpKVxyXG4gICAgICB9LFxyXG4gICAgICB1dGlsOiB7XHJcbiAgICAgICAgJDogKHNlbGVjdG9ycywgZWxlbWVudCkgPT4gKGVsZW1lbnQgfHwgd2luZG93LmRvY3VtZW50KS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9ycyksXHJcbiAgICAgICAgJCQ6IChzZWxlY3RvcnMsIGVsZW1lbnQpID0+IChlbGVtZW50IHx8IHdpbmRvdy5kb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcnMpLFxyXG4gICAgICAgIHN0eWxlczogKHN0eWxlcywgaWQgPSAnX19zdHlsZXMnLCB3aW46IGFueSA9IHdpbmRvdykgPT4ge1xyXG4gICAgICAgICAgbGV0IHMgPSB3aW4uZG9jdW1lbnQuaGVhZC5xdWVyeVNlbGVjdG9yKCcjJyArIGlkKTtcclxuICAgICAgICAgIGlmICghcykge1xyXG4gICAgICAgICAgICBzID0gd2luLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XHJcbiAgICAgICAgICAgIHMuc2V0QXR0cmlidXRlKCdpZCcsIGlkKTtcclxuICAgICAgICAgICAgd2luLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzLmlubmVySFRNTCA9IHN0eWxlcztcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyYW5zbGF0ZTogKGtleSwgZGF0YSkgPT4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChrZXksIGRhdGEpLFxyXG4gICAgICAgIGVuY29kZUZpbGVOYW1lOiAoZmlsZW5hbWUpID0+IHRoaXMuZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpLFxyXG4gICAgICAgIG5vdGlmaWVyOiB7XHJcbiAgICAgICAgICBzdWNjZXNzOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy5zdWNjZXNzKHRpdGxlLCB0ZXh0KSxcclxuICAgICAgICAgIGVycm9yOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy5lcnJvcih0aXRsZSwgdGV4dCksXHJcbiAgICAgICAgICBpbmZvOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy5pbmZvKHRpdGxlLCB0ZXh0KSxcclxuICAgICAgICAgIHdhcm5pbmc6ICh0ZXh0LCB0aXRsZSkgPT4gdGhpcy5ub3RpZmljYXRpb25zLndhcm5pbmcodGl0bGUsIHRleHQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBjbGlwYm9hcmQ6IHtcclxuICAgICAgICBzZXQ6IChlbGVtZW50czogRG1zT2JqZWN0W10sIGFjdGlvbjogQ2xpcGJvYXJkQWN0aW9uKSA9PiB0aGlzLmNsaXBib2FyZC5zZXQoZWxlbWVudHMsIGFjdGlvbiksXHJcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLmNsaXBib2FyZC5nZXQoKSxcclxuICAgICAgICBjbGVhcjogKCkgPT4gdGhpcy5jbGlwYm9hcmQuY2xlYXIoKVxyXG4gICAgICB9LFxyXG4gICAgICAvLyBBZ2VudFxyXG4gICAgICBhZ2VudDoge1xyXG4gICAgICAgIGdldEF2YWlsYWJpbGl0eTogKCkgPT4gdGhpcy5nZXRBZ2VudEF2YWlsYWJpbGl0eSgpLFxyXG4gICAgICAgIGV4ZWN1dGVBY3Rpb246IChhY3Rpb24sIGFyZ3MpID0+IHRoaXMuZXhlY3V0ZUFnZW50QWN0aW9uKGFjdGlvbiwgYXJncyksXHJcbiAgICAgICAgYWN0aW9uOiB0aGlzLmFnZW50QWN0aW9uXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGdldEFnZW50QXZhaWxhYmlsaXR5KCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQpIHtcclxuICAgICAgICByZXNvbHZlKHRoaXMuYWdlbnRTZXJ2aWNlLmFnZW50QXZhaWxhYmlsaXR5LkNPTk5FQ1RFRCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmFnZW50U2VydmljZS5hZ2VudEF2YWlsYWJpbGl0eS5VTkFWQUlMQUJMRSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4ZWN1dGVBZ2VudEFjdGlvbihhY3Rpb24sIGFyZ3MpIHtcclxuXHJcbiAgICBzd2l0Y2ggKGFjdGlvbikge1xyXG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uQ0xJUEJPQVJEOlxyXG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmNvcHlUb0NsaXBib2FyZChhcmdzKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkNMSVBCT0FSRF9BU19QREY6XHJcbiAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuY29weVRvQ2xpcGJvYXJkKGFyZ3MpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uRVhURVJOQUw6XHJcbiAgICAgICAgaWYgKCFhcmdzLmV4ZWN1dGFibGUpIHtcclxuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdNaXNzaW5nIGZpZWxkIGFyZ3MuZXhlY3V0YWJsZScpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoKGFyZ3MuYXJncyAmJiBhcmdzLmFyZ3MubGVuZ3RoID09PSAwKSAmJiAhQXJyYXkuaXNBcnJheShhcmdzLmFyZ3MpKSB7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmllbGQgYXJncy5hcmdzIG11c3QgYmUgZW1wdHkgb3IgYXJyYXkuJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLnNlbmRFeHRlcm5hbEFjdGlvbihhcmdzLmV4ZWN1dGFibGUsIGFyZ3MuYXJncyB8fCBbXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uTUFJTDpcclxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLk1BSUxfQVNfUERGOlxyXG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLnNlbmRBc01haWwoYXJncyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5PUEVOOlxyXG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLm9wZW5Eb2N1bWVudChhcmdzLCBhcmdzLmxvY2spO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCh1cmksIGJhc2UgPSAnJywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXQodXJpLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucyB8fCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMgPyByZXMgOiB7IHN0YXR1czogcmVzLnN0YXR1cywgZGF0YTogcmVzLmJvZHkgfTtcclxuICAgICAgICB9KSkudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHV0KHVyaSwgZGF0YSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucHV0KHVyaSwgZGF0YSwgdGhpcy5iYWNrZW5kLmdldEhvc3QoKSArIGJhc2UsIG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBvc3QodXJpLCBkYXRhLCBiYXNlID0gJycsIG9wdGlvbnM/OiBIdHRwT3B0aW9ucykge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KHVyaSwgZGF0YSwgdGhpcy5iYWNrZW5kLmdldEhvc3QoKSArIGJhc2UsIG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbCh1cmksIGJhc2UgPSAnJywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbCh1cmksIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDdXJyZW50VXNlcigpOiBFb1VzZXIge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbmNvZGVGaWxlTmFtZShmaWxlbmFtZSkge1xyXG4gICAgcmV0dXJuIFV0aWxzLmVuY29kZUZpbGVOYW1lKGZpbGVuYW1lKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDb25maWcoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzZXJ2aWNlQmFzZTogdGhpcy5iYWNrZW5kLmdldFNlcnZpY2VCYXNlKClcclxuXHJcbiAgICAgIC8vIHRvZG86IGRvIHdlIGhhdmUgdG8gcHJvdmlkZSB0aGUgcGx1Z2luIGRldmVsb3BlcnMgd2l0aCB0aGVzZSBpbmZvcm1hdGlvbnM/XHJcbiAgICAgIC8vIHBsdWdpbnNCYXNlOiAkZW9Db25maWcuZ2V0UGx1Z2luQmFzZSgpLFxyXG4gICAgICAvLyBwbHVnaW5TdGF0ZXNCYXNlOiAkZW9Db25maWcuZ2V0UGx1Z2luU3RhdGVzQmFzZSgpLFxyXG4gICAgICAvLyB0aGVtZUJhc2U6ICRlb0NvbmZpZy5nZXRUaGVtZUJhc2UoKVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGZldGNoZXMgZG1zIG9iamVjdHMgZnJvbSB0aGUgc2VydmVyIHRoYXQgbWF0Y2ggdGhlIGdpdmVuIHBhcmFtc1xyXG4gICAqXHJcbiAgICogQHBhcmFtIGZpZWxkcyAtIHRoZSBmaWVsZHMgdG8gbWF0Y2hlZC4gZXhhbXBsZToge25hbWU6ICdtYXgnLCBwbHo6ICc0NzExMX1cclxuICAgKiBAcGFyYW0gdHlwZSAtIHRoZSB0YXJnZXQgb2JqZWN0IHR5cGVcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgYnkgYW4gYXJyYXkgb2YgRG1zT2JqZWN0cyBtYXRjaGluZyB0aGUgZ2l2ZW4gcGFyYW1zXHJcbiAgICovXHJcbiAgcHVibGljIGdldFJlc3VsdChmaWVsZHMsIHR5cGUpOiBQcm9taXNlPERtc09iamVjdFtdPiB7XHJcblxyXG4gICAgbGV0IHEgPSBPYmplY3Qua2V5cyhmaWVsZHMpLmZpbHRlcihrID0+IChmaWVsZHNba10gIT09IHVuZGVmaW5lZCAmJiBmaWVsZHNba10gIT09IG51bGwpKS5tYXAoayA9PiBrICsgJz0nICsgZmllbGRzW2tdKS5qb2luKCc7Jyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbihgL3Jlc3VsdC9xdWVyeT9xdWVyeT0ke2VuY29kZVVSSUNvbXBvbmVudChxKX0mdHlwZT0ke3R5cGV9YClcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IHJlc09iamVjdHMgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICByZXNPYmplY3RzLnB1c2gobmV3IERtc09iamVjdChpdGVtKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzT2JqZWN0cyk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCh0aGlzLmhhbmRsZUVycm9yKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWRzIGEgRE1TIG9iamVjdCBmcm9tIHRoZSBiYWNrZW5kLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIC0gVGhlIGlkIG9mIHRoZSBETVMtT2JqZWN0IHRvIGJlIGZldGNoZWQuXHJcbiAgICogQHBhcmFtIFt0eXBlXSAtIFRoZSBvYmplY3QgdHlwZSBvZiB0aGUgc2VsZWN0ZWQgRE1TLU9iamVjdC4gV2lsbCBpbXByb3ZlIHBlcmZvcm1hbmNlIGlmIHNldC5cclxuICAgKiBAcGFyYW0gW3ZlcnNpb25dIC0gcmV0cmlldmUgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBkbXMgb2JqZWN0XHJcbiAgICogQHBhcmFtIFtpbnRlbnRdIC0gdXNlZCBmb3Igc2VydmVyIHNpZGUgbG9nZ2luZy4gSWYgeW91IHByb3ZpZGUgYW4gaW50ZW50LCB0aGVcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgYnkgdGhlIERNUyBvYmplY3QgZmV0Y2hlZCBmcm9tIHRoZSBzZXJ2ZXJcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0RG1zT2JqZWN0KGlkLCB0eXBlLCB2ZXJzaW9uLCBpbnRlbnQ/KTogUHJvbWlzZTxEbXNPYmplY3Q+IHtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5kbXNTZXJ2aWNlLmdldERtc09iamVjdChpZCwgdHlwZSwgdmVyc2lvbiwgaW50ZW50KVxyXG4gICAgICAudG9Qcm9taXNlKClcclxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzcG9uc2UpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2godGhpcy5oYW5kbGVFcnJvcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yLm1lc3NhZ2UgfHwgZXJyb3IpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -22,6 +22,8 @@ import localeFr from '@angular/common/locales/fr';
22
22
  import localeExtraFr from '@angular/common/locales/extra/fr';
23
23
  import localeZh from '@angular/common/locales/zh';
24
24
  import localeExtraZh from '@angular/common/locales/extra/zh';
25
+ import localeZhHant from '@angular/common/locales/zh-Hant';
26
+ import localeExtraZhHant from '@angular/common/locales/extra/zh-Hant';
25
27
  import localeLv from '@angular/common/locales/lv';
26
28
  import localeExtraLv from '@angular/common/locales/extra/lv';
27
29
  import localeRu from '@angular/common/locales/ru';
@@ -44,6 +46,10 @@ import localeHi from '@angular/common/locales/hi';
44
46
  import localeExtraHi from '@angular/common/locales/extra/hi';
45
47
  import localeBn from '@angular/common/locales/bn';
46
48
  import localeExtraBn from '@angular/common/locales/extra/bn';
49
+ import localeVi from '@angular/common/locales/vi';
50
+ import localeExtraVi from '@angular/common/locales/extra/vi';
51
+ import localeTh from '@angular/common/locales/th';
52
+ import localeExtraTh from '@angular/common/locales/extra/th';
47
53
  /**
48
54
  * @ignore
49
55
  * Loader that fetches translations based on the configured locations
@@ -70,6 +76,9 @@ export class EoxTranslateJsonLoader {
70
76
  registerLocaleData(localeHi, 'hi', localeExtraHi); // Hindi
71
77
  registerLocaleData(localeBn, 'bn', localeExtraBn); // Bengalese
72
78
  registerLocaleData(localeDeCh, 'de-CH', localeExtraDeCh); // German (switzerland)
79
+ registerLocaleData(localeZhHant, 'zh-Hant', localeExtraZhHant); // Chinese (traditional)
80
+ registerLocaleData(localeTh, 'th', localeExtraTh); // Thai
81
+ registerLocaleData(localeVi, 'vi', localeExtraVi); // Vietnamese
73
82
  }
74
83
  /**
75
84
  *
@@ -82,7 +91,7 @@ export class EoxTranslateJsonLoader {
82
91
  loadTranslationFile(folder, lang) {
83
92
  return this.http.get(`${folder}${lang}.json`).pipe(catchError((e) => {
84
93
  // ISO codes with more than 2 characters are sub-languages like de-CH.
85
- // If there is no translation file for that sub-language we'll try to load
94
+ // If there is no translation file for that sub-language we'll try to load
86
95
  // the file for the base language (in this case de).
87
96
  return lang.length > 2 ? this.loadTranslationFile(folder, lang.substring(0, 2)) : of({});
88
97
  }));
@@ -92,4 +101,4 @@ EoxTranslateJsonLoader.ctorParameters = () => [
92
101
  { type: HttpClient },
93
102
  { type: CoreConfig, decorators: [{ type: Inject, args: [CORE_CONFIG,] }] }
94
103
  ];
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLWpzb24tbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9jb25maWcvdHJhbnNsYXRlLWpzb24tbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBYSxFQUFFLEVBQUUsUUFBUSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLFVBQVUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RCxPQUFPLGVBQWUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUc3RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0lBRWpDLFlBQW1CLElBQWdCLEVBQThCLE1BQWtCO1FBQWhFLFNBQUksR0FBSixJQUFJLENBQVk7UUFBOEIsV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQUNqRixrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM1RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM1RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUM3RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYTtRQUNoRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM1RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUM3RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUM3RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUM3RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUM3RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsUUFBUTtRQUMzRCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM1RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM1RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsWUFBWTtRQUMvRCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsV0FBVztRQUM5RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUM1RCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsUUFBUTtRQUMzRCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsWUFBWTtRQUMvRCxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsdUJBQXVCO0lBQ25GLENBQUM7SUFHRDs7OztPQUlHO0lBQ0gsY0FBYyxDQUFDLElBQVk7UUFDekIsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNsRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNoRSxDQUFDO0lBQ0osQ0FBQztJQUVPLG1CQUFtQixDQUFDLE1BQWMsRUFBRSxJQUFZO1FBQ3RELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ2hELFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2Ysc0VBQXNFO1lBQ3RFLDJFQUEyRTtZQUMzRSxvREFBb0Q7WUFDcEQsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDMUYsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7OztZQWpHSyxVQUFVO1lBSVYsVUFBVSx1QkFtRHNCLE1BQU0sU0FBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUcmFuc2xhdGVMb2FkZXJ9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge09ic2VydmFibGUsIG9mLCBmb3JrSm9pbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7Q29yZUNvbmZpZ30gZnJvbSAnLi9jb3JlLWNvbmZpZyc7XHJcbmltcG9ydCB7Q09SRV9DT05GSUd9IGZyb20gJy4vY29yZS1pbml0LnRva2Vucyc7XHJcblxyXG4vKipcclxuICogaTE4biBwYWNrYWdlc1xyXG4gKi9cclxuaW1wb3J0IHtyZWdpc3RlckxvY2FsZURhdGF9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCBsb2NhbGVEZUNoIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2RlLUNIJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhRGVDaCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9kZS1DSCc7XHJcbmltcG9ydCBsb2NhbGVEZSBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9kZSc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYURlIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL2RlJztcclxuaW1wb3J0IGxvY2FsZUFyIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2FyJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhQXIgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvYXInO1xyXG5pbXBvcnQgbG9jYWxlRXMgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXMnO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFFcyBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9lcyc7XHJcbmltcG9ydCBsb2NhbGVQdCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9wdCc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYVB0IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL3B0JztcclxuaW1wb3J0IGxvY2FsZUZyIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2ZyJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhRnIgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvZnInO1xyXG5pbXBvcnQgbG9jYWxlWmggZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvemgnO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFaaCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS96aCc7XHJcbmltcG9ydCBsb2NhbGVMdiBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9sdic7XHJcbmltcG9ydCBsb2NhbGVFeHRyYUx2IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL2x2JztcclxuaW1wb3J0IGxvY2FsZVJ1IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL3J1JztcclxuaW1wb3J0IGxvY2FsZUV4dHJhUnUgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvcnUnO1xyXG5pbXBvcnQgbG9jYWxlSXQgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvaXQnO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFJdCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9pdCc7XHJcbmltcG9ydCBsb2NhbGVObCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9ubCc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYU5sIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL25sJztcclxuaW1wb3J0IGxvY2FsZVNrIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL3NrJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhU2sgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvc2snO1xyXG5pbXBvcnQgbG9jYWxlUGwgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvcGwnO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFQbCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9wbCc7XHJcbmltcG9ydCBsb2NhbGVVayBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy91ayc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYVVrIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL3VrJztcclxuaW1wb3J0IGxvY2FsZUphIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2phJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhSmEgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvamEnO1xyXG5pbXBvcnQgbG9jYWxlS28gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMva28nO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFLbyBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9rbyc7XHJcbmltcG9ydCBsb2NhbGVIaSBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9oaSc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYUhpIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL2hpJztcclxuaW1wb3J0IGxvY2FsZUJuIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2JuJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhQm4gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvYm4nO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqIExvYWRlciB0aGF0IGZldGNoZXMgdHJhbnNsYXRpb25zIGJhc2VkIG9uIHRoZSBjb25maWd1cmVkIGxvY2F0aW9uc1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEVveFRyYW5zbGF0ZUpzb25Mb2FkZXIgaW1wbGVtZW50cyBUcmFuc2xhdGVMb2FkZXIge1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaHR0cDogSHR0cENsaWVudCwgQEluamVjdChDT1JFX0NPTkZJRykgcHVibGljIGNvbmZpZzogQ29yZUNvbmZpZykge1xyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZURlLCAnZGUnLCBsb2NhbGVFeHRyYURlKTsgLy8gR2VybWFuXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlQXIsICdhcicsIGxvY2FsZUV4dHJhQXIpOyAvLyBBcmFiaWNcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVFcywgJ2VzJywgbG9jYWxlRXh0cmFFcyk7IC8vIFNwYW5pc2hcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVQdCwgJ3B0JywgbG9jYWxlRXh0cmFQdCk7IC8vIFBvcnR1Z3Vlc2VcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVGciwgJ2ZyJywgbG9jYWxlRXh0cmFGcik7IC8vIEZyZW5jaFxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZVpoLCAnemgnLCBsb2NhbGVFeHRyYVpoKTsgLy8gQ2hpbmVzZVxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZUx2LCAnbHYnLCBsb2NhbGVFeHRyYUx2KTsgLy8gTGF0dmlhblxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZVJ1LCAncnUnLCBsb2NhbGVFeHRyYVJ1KTsgLy8gUnVzc2lhblxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZUl0LCAnaXQnLCBsb2NhbGVFeHRyYUl0KTsgLy8gSXRhbGlhblxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZU5sLCAnbmwnLCBsb2NhbGVFeHRyYU5sKTsgLy8gRHV0Y2hcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVTaywgJ3NrJywgbG9jYWxlRXh0cmFTayk7IC8vIFNsb3Zha1xyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZVBsLCAncGwnLCBsb2NhbGVFeHRyYVBsKTsgLy8gUG9saXNoXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlVWssICd1aycsIGxvY2FsZUV4dHJhVWspOyAvLyBVa3JhaW5pYW5cclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVKYSwgJ2phJywgbG9jYWxlRXh0cmFKYSk7IC8vIEphcGFuZXNlXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlS28sICdrbycsIGxvY2FsZUV4dHJhS28pOyAvLyBLb3JlYW5cclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVIaSwgJ2hpJywgbG9jYWxlRXh0cmFIaSk7IC8vIEhpbmRpXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlQm4sICdibicsIGxvY2FsZUV4dHJhQm4pOyAvLyBCZW5nYWxlc2VcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVEZUNoLCAnZGUtQ0gnLCBsb2NhbGVFeHRyYURlQ2gpOyAvLyBHZXJtYW4gKHN3aXR6ZXJsYW5kKVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHN0cmluZyBsYW5nXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxPYmplY3Q+XHJcbiAgICovXHJcbiAgZ2V0VHJhbnNsYXRpb24obGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxPYmplY3Q+IHtcclxuICAgIHJldHVybiBmb3JrSm9pbih0aGlzLmNvbmZpZy50cmFuc2xhdGlvbnMubWFwKGZvbGRlciA9PiB0aGlzLmxvYWRUcmFuc2xhdGlvbkZpbGUoZm9sZGVyLCBsYW5nKSkpLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzKSA9PiByZXMucmVkdWNlKChhY2MsIHgpID0+IE9iamVjdC5hc3NpZ24oYWNjLCB4KSwge30pKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFRyYW5zbGF0aW9uRmlsZShmb2xkZXI6IHN0cmluZywgbGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke2ZvbGRlcn0ke2xhbmd9Lmpzb25gKS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlKSA9PiB7XHJcbiAgICAgICAgLy8gSVNPIGNvZGVzIHdpdGggbW9yZSB0aGFuIDIgY2hhcmFjdGVycyBhcmUgc3ViLWxhbmd1YWdlcyBsaWtlIGRlLUNILlxyXG4gICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHRyYW5zbGF0aW9uIGZpbGUgZm9yIHRoYXQgc3ViLWxhbmd1YWdlIHdlJ2xsIHRyeSB0byBsb2FkIFxyXG4gICAgICAgIC8vIHRoZSBmaWxlIGZvciB0aGUgYmFzZSBsYW5ndWFnZSAoaW4gdGhpcyBjYXNlIGRlKS5cclxuICAgICAgICByZXR1cm4gbGFuZy5sZW5ndGggPiAyID8gdGhpcy5sb2FkVHJhbnNsYXRpb25GaWxlKGZvbGRlciwgbGFuZy5zdWJzdHJpbmcoMCwgMikpIDogb2Yoe30pXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfVxyXG59XHJcbiJdfQ==
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLWpzb24tbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9jb25maWcvdHJhbnNsYXRlLWpzb24tbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sRUFBYSxFQUFFLEVBQUUsUUFBUSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLFVBQVUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RCxPQUFPLGVBQWUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNsRSxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxrQ0FBa0MsQ0FBQztBQUM3RCxPQUFPLFFBQVEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRCxPQUFPLGFBQWEsTUFBTSxr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QyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNoRSxDQUFDO0lBQ0osQ0FBQztJQUVPLG1CQUFtQixDQUFDLE1BQWMsRUFBRSxJQUFZO1FBQ3RELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ2hELFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2Ysc0VBQXNFO1lBQ3RFLDBFQUEwRTtZQUMxRSxvREFBb0Q7WUFDcEQsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDMUYsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7OztZQXpHSyxVQUFVO1lBSVYsVUFBVSx1QkF3RHNCLE1BQU0sU0FBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUcmFuc2xhdGVMb2FkZXJ9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge09ic2VydmFibGUsIG9mLCBmb3JrSm9pbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7Q29yZUNvbmZpZ30gZnJvbSAnLi9jb3JlLWNvbmZpZyc7XHJcbmltcG9ydCB7Q09SRV9DT05GSUd9IGZyb20gJy4vY29yZS1pbml0LnRva2Vucyc7XHJcblxyXG4vKipcclxuICogaTE4biBwYWNrYWdlc1xyXG4gKi9cclxuaW1wb3J0IHtyZWdpc3RlckxvY2FsZURhdGF9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCBsb2NhbGVEZUNoIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2RlLUNIJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhRGVDaCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9kZS1DSCc7XHJcbmltcG9ydCBsb2NhbGVEZSBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9kZSc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYURlIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL2RlJztcclxuaW1wb3J0IGxvY2FsZUFyIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2FyJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhQXIgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvYXInO1xyXG5pbXBvcnQgbG9jYWxlRXMgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXMnO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFFcyBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9lcyc7XHJcbmltcG9ydCBsb2NhbGVQdCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9wdCc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYVB0IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL3B0JztcclxuaW1wb3J0IGxvY2FsZUZyIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2ZyJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhRnIgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvZnInO1xyXG5pbXBvcnQgbG9jYWxlWmggZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvemgnO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFaaCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS96aCc7XHJcbmltcG9ydCBsb2NhbGVaaEhhbnQgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvemgtSGFudCc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYVpoSGFudCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS96aC1IYW50JztcclxuaW1wb3J0IGxvY2FsZUx2IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2x2JztcclxuaW1wb3J0IGxvY2FsZUV4dHJhTHYgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvbHYnO1xyXG5pbXBvcnQgbG9jYWxlUnUgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvcnUnO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFSdSBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9ydSc7XHJcbmltcG9ydCBsb2NhbGVJdCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9pdCc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYUl0IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL2l0JztcclxuaW1wb3J0IGxvY2FsZU5sIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL25sJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhTmwgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvbmwnO1xyXG5pbXBvcnQgbG9jYWxlU2sgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvc2snO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFTayBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9zayc7XHJcbmltcG9ydCBsb2NhbGVQbCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9wbCc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYVBsIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL3BsJztcclxuaW1wb3J0IGxvY2FsZVVrIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL3VrJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhVWsgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvdWsnO1xyXG5pbXBvcnQgbG9jYWxlSmEgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvamEnO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFKYSBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9qYSc7XHJcbmltcG9ydCBsb2NhbGVLbyBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9rbyc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYUtvIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL2tvJztcclxuaW1wb3J0IGxvY2FsZUhpIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2hpJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhSGkgZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvaGknO1xyXG5pbXBvcnQgbG9jYWxlQm4gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvYm4nO1xyXG5pbXBvcnQgbG9jYWxlRXh0cmFCbiBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9leHRyYS9ibic7XHJcbmltcG9ydCBsb2NhbGVWaSBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy92aSc7XHJcbmltcG9ydCBsb2NhbGVFeHRyYVZpIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL2V4dHJhL3ZpJztcclxuaW1wb3J0IGxvY2FsZVRoIGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL3RoJztcclxuaW1wb3J0IGxvY2FsZUV4dHJhVGggZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2xvY2FsZXMvZXh0cmEvdGgnO1xyXG5cclxuLyoqXHJcbiAqIEBpZ25vcmVcclxuICogTG9hZGVyIHRoYXQgZmV0Y2hlcyB0cmFuc2xhdGlvbnMgYmFzZWQgb24gdGhlIGNvbmZpZ3VyZWQgbG9jYXRpb25zXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRW94VHJhbnNsYXRlSnNvbkxvYWRlciBpbXBsZW1lbnRzIFRyYW5zbGF0ZUxvYWRlciB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50LCBASW5qZWN0KENPUkVfQ09ORklHKSBwdWJsaWMgY29uZmlnOiBDb3JlQ29uZmlnKSB7XHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlRGUsICdkZScsIGxvY2FsZUV4dHJhRGUpOyAvLyBHZXJtYW5cclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVBciwgJ2FyJywgbG9jYWxlRXh0cmFBcik7IC8vIEFyYWJpY1xyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZUVzLCAnZXMnLCBsb2NhbGVFeHRyYUVzKTsgLy8gU3BhbmlzaFxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZVB0LCAncHQnLCBsb2NhbGVFeHRyYVB0KTsgLy8gUG9ydHVndWVzZVxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZUZyLCAnZnInLCBsb2NhbGVFeHRyYUZyKTsgLy8gRnJlbmNoXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlWmgsICd6aCcsIGxvY2FsZUV4dHJhWmgpOyAvLyBDaGluZXNlXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlTHYsICdsdicsIGxvY2FsZUV4dHJhTHYpOyAvLyBMYXR2aWFuXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlUnUsICdydScsIGxvY2FsZUV4dHJhUnUpOyAvLyBSdXNzaWFuXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlSXQsICdpdCcsIGxvY2FsZUV4dHJhSXQpOyAvLyBJdGFsaWFuXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlTmwsICdubCcsIGxvY2FsZUV4dHJhTmwpOyAvLyBEdXRjaFxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZVNrLCAnc2snLCBsb2NhbGVFeHRyYVNrKTsgLy8gU2xvdmFrXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlUGwsICdwbCcsIGxvY2FsZUV4dHJhUGwpOyAvLyBQb2xpc2hcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVVaywgJ3VrJywgbG9jYWxlRXh0cmFVayk7IC8vIFVrcmFpbmlhblxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZUphLCAnamEnLCBsb2NhbGVFeHRyYUphKTsgLy8gSmFwYW5lc2VcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVLbywgJ2tvJywgbG9jYWxlRXh0cmFLbyk7IC8vIEtvcmVhblxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZUhpLCAnaGknLCBsb2NhbGVFeHRyYUhpKTsgLy8gSGluZGlcclxuICAgIHJlZ2lzdGVyTG9jYWxlRGF0YShsb2NhbGVCbiwgJ2JuJywgbG9jYWxlRXh0cmFCbik7IC8vIEJlbmdhbGVzZVxyXG4gICAgcmVnaXN0ZXJMb2NhbGVEYXRhKGxvY2FsZURlQ2gsICdkZS1DSCcsIGxvY2FsZUV4dHJhRGVDaCk7IC8vIEdlcm1hbiAoc3dpdHplcmxhbmQpXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlWmhIYW50LCAnemgtSGFudCcsIGxvY2FsZUV4dHJhWmhIYW50KTsgLy8gQ2hpbmVzZSAodHJhZGl0aW9uYWwpXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlVGgsICd0aCcsIGxvY2FsZUV4dHJhVGgpOyAvLyBUaGFpXHJcbiAgICByZWdpc3RlckxvY2FsZURhdGEobG9jYWxlVmksICd2aScsIGxvY2FsZUV4dHJhVmkpOyAvLyBWaWV0bmFtZXNlXHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc3RyaW5nIGxhbmdcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPE9iamVjdD5cclxuICAgKi9cclxuICBnZXRUcmFuc2xhdGlvbihsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIGZvcmtKb2luKHRoaXMuY29uZmlnLnRyYW5zbGF0aW9ucy5tYXAoZm9sZGVyID0+IHRoaXMubG9hZFRyYW5zbGF0aW9uRmlsZShmb2xkZXIsIGxhbmcpKSkucGlwZShcclxuICAgICAgbWFwKChyZXMpID0+IHJlcy5yZWR1Y2UoKGFjYywgeCkgPT4gT2JqZWN0LmFzc2lnbihhY2MsIHgpLCB7fSkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkVHJhbnNsYXRpb25GaWxlKGZvbGRlcjogc3RyaW5nLCBsYW5nOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7Zm9sZGVyfSR7bGFuZ30uanNvbmApLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcclxuICAgICAgICAvLyBJU08gY29kZXMgd2l0aCBtb3JlIHRoYW4gMiBjaGFyYWN0ZXJzIGFyZSBzdWItbGFuZ3VhZ2VzIGxpa2UgZGUtQ0guXHJcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gdHJhbnNsYXRpb24gZmlsZSBmb3IgdGhhdCBzdWItbGFuZ3VhZ2Ugd2UnbGwgdHJ5IHRvIGxvYWRcclxuICAgICAgICAvLyB0aGUgZmlsZSBmb3IgdGhlIGJhc2UgbGFuZ3VhZ2UgKGluIHRoaXMgY2FzZSBkZSkuXHJcbiAgICAgICAgcmV0dXJuIGxhbmcubGVuZ3RoID4gMiA/IHRoaXMubG9hZFRyYW5zbGF0aW9uRmlsZShmb2xkZXIsIGxhbmcuc3Vic3RyaW5nKDAsIDIpKSA6IG9mKHt9KVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -20,4 +20,4 @@ export class DmsObjectHistoryEntry {
20
20
  }
21
21
  }
22
22
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLW9iamVjdC1oaXN0b3J5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9tb2RlbC9kbXMtb2JqZWN0LWhpc3RvcnkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUJBQXFCO0lBOENoQzs7O09BR0c7SUFDSCxZQUFZLElBQVM7UUFFbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUV0QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsbUNBQVEsSUFBSSxDQUFDLFNBQVMsS0FDbEMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUNoQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQ3BDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFDaEMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUNyQyxDQUFDO1NBQ0g7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09yZ1VzZXJ9IGZyb20gJy4vb3JnLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRhdGlvbiBvZiBhIGhpc3RvcnkgZW50cnkgZm9yIGEgZG1zIG9iamVjdFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIERtc09iamVjdEhpc3RvcnlFbnRyeSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFZlcnNpb24gb2YgdGhlIGRtcyBvYmplY3QgYXQgdGhlIHRpbWUgdGhlIGhpc3RvcnkgZW50cnkgd2FzIGNyZWF0ZWRcclxuICAgKi9cclxuICB2ZXJzaW9uOiBudW1iZXI7XHJcbiAgLyoqXHJcbiAgICogVGhlIHRpbWUgdGhlIGhpc3RvcnkgZW50cnkgd2FzIGNyZWF0ZWRcclxuICAgKi9cclxuICB0aW1lOiBEYXRlO1xyXG4gIC8qKlxyXG4gICAqIEVudHJ5J3MgdGl0bGVcclxuICAgKi9cclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEVudHJ5J3MgZGVzY3JpcHRpb25cclxuICAgKi9cclxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEN1c3RvbSBjb21tZW50IGFwcGxpZWQgdG8gdGhlIGVudHJ5XHJcbiAgICovXHJcbiAgY29tbWVudDogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEdyb3VwIG9mIHRoZSBlbnRyeVxyXG4gICAqL1xyXG4gIGdyb3VwOiAnUFJPQ0VTUycgfCAnTU9ESUZJQ0FUSU9OJyB8ICdJTkZPUk1BVElPTkFMJztcclxuICAvKipcclxuICAgKiBIaXN0b3J5IGVudHJ5J3MgdHlwZVxyXG4gICAqL1xyXG4gIHR5cGU6IHN0cmluZztcclxuICAvKipcclxuICAgKiBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHNwZWNpYWwgKEJQTSByZWxhdGVkKSB0eXBlcyBvZiBlbnRyaWVzXHJcbiAgICovXHJcbiAgcGFyYW1ldGVyPzoge1xyXG4gICAgcHJvY2Vzc0lkOiBzdHJpbmcsXHJcbiAgICBwcm9jZXNzTmFtZTogc3RyaW5nLFxyXG4gICAgYWN0aXZpdHlJZD86IHN0cmluZyxcclxuICAgIGFjdGl2aXR5TmFtZT86IHN0cmluZyxcclxuICAgIHR5cGU6IHN0cmluZ1xyXG4gIH07XHJcbiAgLyoqXHJcbiAgICogSWYgdGhlIGhpc3RvcnkgZW50cnkgd2FzIGNyZWF0ZWQgZnJvbSBhIHVzZXJzIGFjdGl2aXR5IChlLmcuIGluZGV4ZGF0YSBjaGFuZ2VzKSwgdGhpcyBwcm9wZXJ0eVxyXG4gICAqIGhvbGRzIHRoZSB1c2VyIHRoYXQgY2F1c2VkIHRoZSBlbnRyeVxyXG4gICAqL1xyXG4gIHVzZXI6IE9yZ1VzZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2VcclxuICAgKiBAcGFyYW0ganNvbiBUaGUgSlNPTiBvYmplY3QgcmVjZWl2ZWQgZnJvbSB0aGUgYmFja2VuZC4gVGhpcyB3aWxsIGJlIHVzZWQgdG8gY29uc3RydWN0IHRoZSBuZXcgaGlzdG9yeSBlbnRyeSBpbnN0YW5jZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKGpzb246IGFueSkge1xyXG5cclxuICAgIHRoaXMudmVyc2lvbiA9IGpzb24udmVyc2lvbjtcclxuICAgIHRoaXMudGltZSA9IGpzb24udGltZTtcclxuICAgIHRoaXMudGl0bGUgPSBqc29uLnRpdGxlO1xyXG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGpzb24uZGVzY3JpcHRpb247XHJcbiAgICB0aGlzLmNvbW1lbnQgPSBqc29uLmNvbW1lbnQ7XHJcbiAgICB0aGlzLmdyb3VwID0ganNvbi5ncm91cDtcclxuICAgIHRoaXMudHlwZSA9IGpzb24udHlwZTtcclxuICAgIHRoaXMudXNlciA9IGpzb24udXNlcjtcclxuXHJcbiAgICBpZiAoanNvbi5wYXJhbWV0ZXIpIHtcclxuICAgICAgdGhpcy5wYXJhbWV0ZXIgPSB7IC4uLmpzb24ucGFyYW1ldGVyLCBcclxuICAgICAgICBwcm9jZXNzSWQ6IGpzb24ucGFyYW1ldGVyLnByb2NJZCxcclxuICAgICAgICBwcm9jZXNzTmFtZToganNvbi5wYXJhbWV0ZXIucHJvY05hbWUsXHJcbiAgICAgICAgYWN0aXZpdHlJZDoganNvbi5wYXJhbWV0ZXIuYWN0SWQsXHJcbiAgICAgICAgYWN0aXZpdHlOYW1lOiBqc29uLnBhcmFtZXRlci5hY3ROYW1lXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLW9iamVjdC1oaXN0b3J5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW8tc2RrL2NvcmUvc3JjL2xpYi9tb2RlbC9kbXMtb2JqZWN0LWhpc3RvcnkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8scUJBQXFCO0lBOENoQzs7O09BR0c7SUFDSCxZQUFZLElBQVM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUV0QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsbUNBQ1QsSUFBSSxDQUFDLFNBQVMsS0FDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUNoQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQ3BDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFDaEMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUNyQyxDQUFDO1NBQ0g7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09yZ1VzZXJ9IGZyb20gJy4vb3JnLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBSZXByZXNlbnRhdGlvbiBvZiBhIGhpc3RvcnkgZW50cnkgZm9yIGEgZG1zIG9iamVjdFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIERtc09iamVjdEhpc3RvcnlFbnRyeSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFZlcnNpb24gb2YgdGhlIGRtcyBvYmplY3QgYXQgdGhlIHRpbWUgdGhlIGhpc3RvcnkgZW50cnkgd2FzIGNyZWF0ZWRcclxuICAgKi9cclxuICB2ZXJzaW9uOiBudW1iZXI7XHJcbiAgLyoqXHJcbiAgICogVGhlIHRpbWUgdGhlIGhpc3RvcnkgZW50cnkgd2FzIGNyZWF0ZWRcclxuICAgKi9cclxuICB0aW1lOiBEYXRlO1xyXG4gIC8qKlxyXG4gICAqIEVudHJ5J3MgdGl0bGVcclxuICAgKi9cclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEVudHJ5J3MgZGVzY3JpcHRpb25cclxuICAgKi9cclxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEN1c3RvbSBjb21tZW50IGFwcGxpZWQgdG8gdGhlIGVudHJ5XHJcbiAgICovXHJcbiAgY29tbWVudDogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEdyb3VwIG9mIHRoZSBlbnRyeVxyXG4gICAqL1xyXG4gIGdyb3VwOiAnUFJPQ0VTUycgfCAnTU9ESUZJQ0FUSU9OJyB8ICdJTkZPUk1BVElPTkFMJztcclxuICAvKipcclxuICAgKiBIaXN0b3J5IGVudHJ5J3MgdHlwZVxyXG4gICAqL1xyXG4gIHR5cGU6IHN0cmluZztcclxuICAvKipcclxuICAgKiBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHNwZWNpYWwgKEJQTSByZWxhdGVkKSB0eXBlcyBvZiBlbnRyaWVzXHJcbiAgICovXHJcbiAgcGFyYW1ldGVyPzoge1xyXG4gICAgcHJvY2Vzc0lkOiBzdHJpbmcsXHJcbiAgICBwcm9jZXNzTmFtZTogc3RyaW5nLFxyXG4gICAgYWN0aXZpdHlJZD86IHN0cmluZyxcclxuICAgIGFjdGl2aXR5TmFtZT86IHN0cmluZyxcclxuICAgIHR5cGU6IHN0cmluZ1xyXG4gIH07XHJcbiAgLyoqXHJcbiAgICogSWYgdGhlIGhpc3RvcnkgZW50cnkgd2FzIGNyZWF0ZWQgZnJvbSBhIHVzZXJzIGFjdGl2aXR5IChlLmcuIGluZGV4ZGF0YSBjaGFuZ2VzKSwgdGhpcyBwcm9wZXJ0eVxyXG4gICAqIGhvbGRzIHRoZSB1c2VyIHRoYXQgY2F1c2VkIHRoZSBlbnRyeVxyXG4gICAqL1xyXG4gIHVzZXI6IE9yZ1VzZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2VcclxuICAgKiBAcGFyYW0ganNvbiBUaGUgSlNPTiBvYmplY3QgcmVjZWl2ZWQgZnJvbSB0aGUgYmFja2VuZC4gVGhpcyB3aWxsIGJlIHVzZWQgdG8gY29uc3RydWN0IHRoZSBuZXcgaGlzdG9yeSBlbnRyeSBpbnN0YW5jZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKGpzb246IGFueSkge1xyXG4gICAgdGhpcy52ZXJzaW9uID0ganNvbi52ZXJzaW9uO1xyXG4gICAgdGhpcy50aW1lID0ganNvbi50aW1lO1xyXG4gICAgdGhpcy50aXRsZSA9IGpzb24udGl0bGU7XHJcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0ganNvbi5kZXNjcmlwdGlvbjtcclxuICAgIHRoaXMuY29tbWVudCA9IGpzb24uY29tbWVudDtcclxuICAgIHRoaXMuZ3JvdXAgPSBqc29uLmdyb3VwO1xyXG4gICAgdGhpcy50eXBlID0ganNvbi50eXBlO1xyXG4gICAgdGhpcy51c2VyID0ganNvbi51c2VyO1xyXG5cclxuICAgIGlmIChqc29uLnBhcmFtZXRlcikge1xyXG4gICAgICB0aGlzLnBhcmFtZXRlciA9IHtcclxuICAgICAgICAuLi5qc29uLnBhcmFtZXRlcixcclxuICAgICAgICBwcm9jZXNzSWQ6IGpzb24ucGFyYW1ldGVyLnByb2NJZCxcclxuICAgICAgICBwcm9jZXNzTmFtZToganNvbi5wYXJhbWV0ZXIucHJvY05hbWUsXHJcbiAgICAgICAgYWN0aXZpdHlJZDoganNvbi5wYXJhbWV0ZXIuYWN0SWQsXHJcbiAgICAgICAgYWN0aXZpdHlOYW1lOiBqc29uLnBhcmFtZXRlci5hY3ROYW1lXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -247,4 +247,4 @@ BpmService.ctorParameters = () => [
247
247
  { type: EventService },
248
248
  { type: InboxService }
249
249
  ];
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnBtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvYnBtL2JwbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBYyxhQUFhLEVBQUUsVUFBVSxJQUFJLG9CQUFvQixFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZJLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV6RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBK0IsT0FBTyxFQUFFLFFBQVEsRUFBaUIsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFbkU7Ozs7Ozs7OztHQVNHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFTckIsWUFBb0IsWUFBaUMsRUFDakMsT0FBdUIsRUFDdkIsWUFBMEIsRUFDMUIsWUFBMEI7UUFIMUIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGlC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QUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvRTtpQkFBTTtnQkFDTCxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQzthQUMvQjtZQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDeEU7YUFBTTtZQUNMLE9BQU8sb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDOzs7WUE3UEYsVUFBVTs7O1lBZkgsbUJBQW1CO1lBTG5CLGNBQWM7WUFJZCxZQUFZO1lBRFosWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Zm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLCBvZiBhcyBvYnNlcnZhYmxlT2YsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge21lcmdlTWFwLCB0YXAsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcclxuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xyXG5pbXBvcnQge1dvcmtJdGVtSGlzdG9yeUVudHJ5fSBmcm9tICcuLi8uLi9tb2RlbC93b3JrLWl0ZW0taGlzdG9yeS5tb2RlbCc7XHJcbmltcG9ydCB7RG1zT2JqZWN0fSBmcm9tICcuLi8uLi9tb2RlbC9kbXMtb2JqZWN0Lm1vZGVsJztcclxuaW1wb3J0IHtJbmJveFNlcnZpY2V9IGZyb20gJy4uL2luYm94L2luYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge0NhcGFiaWxpdGllc1NlcnZpY2V9IGZyb20gJy4uL2NhcGFiaWxpdGllcy9jYXBhYmlsaXRpZXMuc2VydmljZSc7XHJcbmltcG9ydCB7RXhlY3V0YWJsZVByb2Nlc3MsIEZpbGVFbnRyeSwgUHJvY2VzcywgV29ya0l0ZW0sIFdvcmtJdGVtQWN0aW9ufSBmcm9tICcuLi8uLi9tb2RlbC9icG0ubW9kZWwnO1xyXG5pbXBvcnQge0NsaXBib2FyZH0gZnJvbSAnLi4vY2xpcGJvYXJkL2NsaXBib2FyZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0NsaXBib2FyZEFjdGlvbn0gZnJvbSAnLi4vY2xpcGJvYXJkL2NsaXBib2FyZC1hY3Rpb24uZW51bSc7XHJcblxyXG4vKipcclxuICogYEJwbVNlcnZpY2VgIGhhbmRsZXMgaW50ZXJhY3Rpb24gcmVsYXRlZCB0byBCUE0gdGFza3MuXHJcbiAqXHJcbiAqIFRoZSBtYWluIHBhcnRzIHByb3ZpZGVkIGFuZCB1c2VkIGJ5IHRoaXMgc2VydmljZSBhcmUgUHJvY2Vzc2VzIGFuZCBXb3JrSXRlbXMuXHJcbiAqIFByb2Nlc3NlcyBhcmUgZGVmaW5lZCBvbiB0aGUgYmFja2VuZCBzaWRlLiBUaGV5IGRlc2NyaWJlIGEgc2V0IG9mIHRhc2tzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBieSB0aGUgcHJvY2Vzcy5cclxuICogVGFza3MgdGhhdCByZXF1aXJlIHVzZXIgaW50ZXJhY3Rpb24gYXJlIHJlZmVycmVkIHRvIGFzIFdvcmtJdGVtcy5cclxuICpcclxuICogUHJvY2Vzc2VzIGNhbiBiZSByZWxhdGVkIHRvIGEgc3BlY2lhbCBvYmplY3QgdHlwZSwgYnV0IHRoZXkgZG9uJ3QgaGF2ZSB0by4gSW4gYWRkaXRpb24gdG8gdGhhdCB0aGV5IGNhbiByZWZlclxyXG4gKiB0byBkbXMgb2JqZWN0cy5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJwbVNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHByb2Nlc3NJdGVtczogUHJvY2Vzc1tdO1xyXG4gIHByaXZhdGUgcHJvY2Vzc0l0ZW1zU291cmNlID0gbmV3IFJlcGxheVN1YmplY3Q8UHJvY2Vzc1tdPigxKTtcclxuICAvKipcclxuICAgKiBMb25nIHRlcm0gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgY3VycmVudCBwcm9jZXNzZXNcclxuICAgKi9cclxuICBwcm9jZXNzSXRlbXMkOiBPYnNlcnZhYmxlPFByb2Nlc3NbXT4gPSB0aGlzLnByb2Nlc3NJdGVtc1NvdXJjZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYXBhYmlsaXRpZXM6IENhcGFiaWxpdGllc1NlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIGFsbCBwcm9jZXNzZXMgb2YgdGhlIGN1cnJlbnQgdXNlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBzaXplIE1heGltdW0gbnVtYmVyIG9mIHByb2Nlc3NlcyB0byBiZSBmZXRjaGVkXHJcbiAgICogQHJldHVybnMgTGlzdCBvZiBQcm9jZXNzZXNcclxuICAgKi9cclxuICBnZXRQcm9jZXNzZXMoc2l6ZTogbnVtYmVyID0gMTAwMCk6IE9ic2VydmFibGU8UHJvY2Vzc1tdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKGAvcHJvY2Vzcy91c2VyP3NpemU9JHtzaXplfWAsIHRoaXMuYmFja2VuZC5nZXRCcG1CYXNlKCkpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcChyZXNwb25zZSA9PiByZXNwb25zZS5jb250ZW50Lm1hcChpdGVtID0+IG5ldyBQcm9jZXNzKGl0ZW0pKSksXHJcbiAgICAgICAgdGFwKChwcm9jZXNzZXM6IFByb2Nlc3NbXSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wcm9jZXNzSXRlbXMgPSBwcm9jZXNzZXM7XHJcbiAgICAgICAgICB0aGlzLnByb2Nlc3NJdGVtc1NvdXJjZS5uZXh0KHRoaXMucHJvY2Vzc0l0ZW1zKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGZvciB0aGUgZXhlY3V0YWJsZSBQcm9jZXNzZXMuIElmIHR5cGVzIGFyZSBwcm92aWRlZCwgeW91J2xsIGdldFxyXG4gICAqIG9ubHkgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBleGVjdXRhYmxlIGZvciBhbGwgb2YgdGhlbVxyXG4gICAqIEBwYXJhbSB0eXBlcyBMaXN0IG9mIGRtcyBvYmplY3QgdHlwZXMgdG8gZmV0Y2ggZXhlY3V0YWJsZSBwcm9jZXNzZXMgZm9yXHJcbiAgICogQHJldHVybnMgTGlzdCBvZiBleGVjdXRhYmxlIHByb2Nlc3Nlc1xyXG4gICAqL1xyXG4gIGdldEV4ZWN1dGFibGVQcm9jZXNzZXModHlwZXM/OiBzdHJpbmdbXSk6IE9ic2VydmFibGU8RXhlY3V0YWJsZVByb2Nlc3NbXT4ge1xyXG4gICAgaWYgKHRoaXMuY2FwYWJpbGl0aWVzLmhhc0NhcGFiaWxpdHkoJ2JwbScpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZldGNoRXhlY3V0YWJsZVByb2Nlc3Nlcyh0eXBlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKFtdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgZXhlY3V0YWJsZSBQcm9jZXNzZXMgZm9yIGEgZ2l2ZW4gc2V0IG9mIGRtcyBvYmplY3QuWW91J2xsIGdldFxyXG4gICAqIG9ubHkgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBleGVjdXRhYmxlIGZvciBhbGwgb2YgdGhlbS5cclxuICAgKiBAcGFyYW0gZG1zT2JqZWN0cyBMaXN0IG9mIGRtcyBvYmplY3RzIHRvIGZldGNoIGV4ZWN1dGFibGUgcHJvY2Vzc2VzIGZvclxyXG4gICAqIEByZXR1cm5zIExpc3Qgb2YgZXhlY3V0YWJsZSBwcm9jZXNzZXNcclxuICAgKi9cclxuICBnZXRFeGVjdXRhYmxlUHJvY2Vzc2VzRm9yRG1zT2JqZWN0cyhkbXNPYmplY3RzOiBEbXNPYmplY3RbXSk6IE9ic2VydmFibGU8RXhlY3V0YWJsZVByb2Nlc3NbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0YWJsZVByb2Nlc3NlcyhkbXNPYmplY3RzLm1hcChvID0+IG8udHlwZU5hbWUpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgZXhlY3V0YWJsZSBQcm9jZXNzZXMgZnJvbSB0aGUgYmFja2VuZC5cclxuICAgKiBAcGFyYW0gdHlwZXMgTGlzdCBvZiBkbXMgb2JqZWN0IHR5cGVzIHRvIGZldGNoIGV4ZWN1dGFibGUgcHJvY2Vzc2VzIGZvclxyXG4gICAqIEByZXR1cm5zIExpc3Qgb2YgZXhlY3V0YWJsZSBwcm9jZXNzZXNcclxuICAgKi9cclxuICBwcml2YXRlIGZldGNoRXhlY3V0YWJsZVByb2Nlc3Nlcyh0eXBlcz86IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxFeGVjdXRhYmxlUHJvY2Vzc1tdPiB7XHJcbiAgICBsZXQgdXJpID0gJy9icG0vcHJvY2Vzcy9leGVjdXRhYmxlP2Zvcm09dHJ1ZSZmaWVsZHM9dHJ1ZSc7XHJcbiAgICBpZiAodHlwZXMpIHtcclxuICAgICAgdXJpICs9IGAmdHlwZT0ke3R5cGVzLmpvaW4oJywnKX1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXQodXJpKS5waXBlKG1hcChyZXMgPT4gcmVzIGFzIEV4ZWN1dGFibGVQcm9jZXNzW10pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmb3IgYSBwcm9jZXNzZXMgZmlsZS4gVGhlIGZpbGUgb2YgYSBwcm9jZXNzIGNvbnRhaW5zXHJcbiAgICogZG1zIG9iamVjdHMgYXR0YWNoZWQgdG8gdGhlIHByb2Nlc3MuXHJcbiAgICogQHBhcmFtIHByb2Nlc3NJZCBJRCBvZiB0aGUgcHJvY2VzcyB0byBmZXRjaCBhdHRhY2hlZCBvYmplY3RzIGZvclxyXG4gICAqL1xyXG4gIGdldFByb2Nlc3NGaWxlKHByb2Nlc3NJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxGaWxlRW50cnlbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbihgL3Byb2Nlc3MvJHtwcm9jZXNzSWR9L2ZpbGVgLCB0aGlzLmJhY2tlbmQuZ2V0QnBtQmFzZSgpKS5waXBlKFxyXG4gICAgICAgIG1hcChyZXMgPT4gcmVzLmNvbnRlbnQubWFwKGkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IGkuZWxlbWVudGlkLFxyXG4gICAgICAgICAgICB0aXRsZTogaS50aXRsZSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGkuZGVzY3JpcHRpb24gPyBpLmRlc2NyaXB0aW9uIDogJycsXHJcbiAgICAgICAgICAgIGljb25pZDogaS5pY29uaWQsXHJcbiAgICAgICAgICAgIGNyZWF0b3I6IGkuY3JlYXRvcixcclxuICAgICAgICAgICAgYWRkdGltZTogaS5hZGR0aW1lLFxyXG4gICAgICAgICAgICB0eXBlOiBpLnR5cGVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSB3b3JrIGl0ZW0uXHJcbiAgICogQHBhcmFtIHByb2Nlc3NJZCBJRCBvZiB0aGUgcGFyZW50IHByb2Nlc3NcclxuICAgKiBAcGFyYW0gaXRlbUlkIElEIG9mIHRoZSB3b3JrIGl0ZW0gaXRzZWxmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0byBiZSBhZGRlZCB0byB0aGUgYmFja2VuZCBjYWxsXHJcbiAgICogQHJldHVybnMgYSBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIGdldFdvcmtJdGVtKHByb2Nlc3NJZDogc3RyaW5nLCBpdGVtSWQ6IHN0cmluZywgb3B0aW9ucyA/OiBhbnkpOiBPYnNlcnZhYmxlPFdvcmtJdGVtPiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSBvcHRpb25zID8gb3B0aW9ucyA6IHtmb3JtOiB0cnVlLCBmaWVsZHM6IHRydWV9O1xyXG4gICAgY29uc3QgdGFza3MgPSBbXHJcbiAgICAgIHRoaXMuYmFja2VuZC5nZXRKc29uKFV0aWxzLmJ1aWxkVXJpKGAvYnBtL3Byb2Nlc3MvJHtwcm9jZXNzSWR9LyR7aXRlbUlkfWAsIHBhcmFtcykpLFxyXG4gICAgICB0aGlzLmdldFByb2Nlc3NGaWxlKHByb2Nlc3NJZClcclxuICAgIF07XHJcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUZvcmtKb2luKHRhc2tzKS5waXBlKFxyXG4gICAgICBtYXAocmVzID0+IHtcclxuICAgICAgICBjb25zdCB3aSA9IG5ldyBXb3JrSXRlbShyZXNbMF0pO1xyXG4gICAgICAgIHdpLnNldEZpbGUocmVzWzFdKTtcclxuICAgICAgICByZXR1cm4gd2k7XHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhdmVzIGEgd29yayBpdGVtLlxyXG4gICAqIEBwYXJhbSBpdGVtIFRoZSB3b3JrIGl0ZW0gdG8gYmUgc2F2ZWRcclxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIHNhdmVXb3JrSXRlbShpdGVtOiBXb3JrSXRlbSk6IE9ic2VydmFibGU8V29ya0l0ZW0+IHtcclxuICAgIGNvbnN0IHtpZCwgcHJvY2Vzc0lkLCBmaWxlLCBkYXRhfSA9IGl0ZW07XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge2NvbnRlbnRzOiBmaWxlLCBkYXRhfTtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHtrZWVwbG9jazogdHJ1ZSwgaXNhdXRvbG9jazogZmFsc2V9O1xyXG5cclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLnBvc3QoVXRpbHMuYnVpbGRVcmkoYC9icG0vcHJvY2Vzcy8ke3Byb2Nlc3NJZH0vJHtpZH0vc2F2ZWAsIHBhcmFtcyksIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuZ2V0V29ya0l0ZW0ocHJvY2Vzc0lkLCBpZCkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGb3J3YXJkcyBhIHdvcmsgaXRlbS4gSWYgYSBXb3JrSXRlbSBwcm92aWRlcyBkaWZmZXJlbnQgYWN0aW9ucyAoQGxpbmsgV29ya0l0ZW1BY3Rpb24pXHJcbiAgICogeW91IGNhbiBwcm92aWRlIHRoZSBzZWxlY3RlZCBhY3Rpb24gdG9vLlxyXG4gICAqIEBwYXJhbSBpdGVtIFRoZSB3b3JrIGl0ZW0gdG8gYmUgZm9yd2FyZGVkXHJcbiAgICogQHBhcmFtIGFjdGlvbiBBY3Rpb24gdXNlZCBmb3IgZm9yd2FyZGluZ1xyXG4gICAqL1xyXG4gIGZvcndhcmRXb3JrSXRlbShpdGVtOiBXb3JrSXRlbSwgYWN0aW9uPzogV29ya0l0ZW1BY3Rpb24pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGFyYW1zID0ge2tlZXBsb2NrOiBmYWxzZSwgaXNhdXRvbG9jazogZmFsc2V9O1xyXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgYWN0aW9uOiBhY3Rpb24sXHJcbiAgICAgIGNvbnRlbnRzOiBpdGVtLmZpbGUsXHJcbiAgICAgIGRhdGE6IGl0ZW0uZGF0YVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcclxuICAgICAgLnBvc3QoVXRpbHMuYnVpbGRVcmkoYC9icG0vcHJvY2Vzcy8ke2l0ZW0ucHJvY2Vzc0lkfS8ke2l0ZW0uaWR9L3NhdmVgLCBwYXJhbXMpLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5pbmJveFNlcnZpY2UudXBkYXRlSW5ib3hJdGVtcyhpdGVtLmlkKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvY2tzIGEgV29ya0l0ZW0gZm9yIHRoZSBjdXJyZW50IHVzZXIgKHBlcnNvbmFsaXphdGlvbiksIG1lYW5pbmcgdGhhdCB0aGVcclxuICAgKiBjdXJyZW50IHVzZXIgaXMgbm93IGluIGNoYXJnZSBvZiBmdWxmaWxsaW5nIHRoZSBXb3JrSXRlbSB0YXNrLlxyXG4gICAqIEBwYXJhbSBpdGVtIFRoZSBXb3JrSXRlbSB0byBiZSBsb2NrZWRcclxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIGxvY2tXb3JrSXRlbShpdGVtOiBXb3JrSXRlbSk6IE9ic2VydmFibGU8V29ya0l0ZW0+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucHV0KGAvYnBtL3Byb2Nlc3MvJHtpdGVtLnByb2Nlc3NJZH0vJHtpdGVtLmlkfS9sb2NrYClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5nZXRXb3JrSXRlbShpdGVtLnByb2Nlc3NJZCwgaXRlbS5pZCkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWxlYXNlcyB0aGUgbG9jayBmb3IgYSBXb3JrSXRlbS5cclxuICAgKiBAcGFyYW0gaXRlbSBUaGUgd29yayBpdGVtIHRvIGJlIHVubG9ja2VkXHJcbiAgICogQHJldHVybnMgVGhlIHVwZGF0ZWQgV29ya0l0ZW1cclxuICAgKi9cclxuICB1bmxvY2tXb3JrSXRlbShpdGVtOiBXb3JrSXRlbSk6IE9ic2VydmFibGU8V29ya0l0ZW0+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZGVsKGAvYnBtL3Byb2Nlc3MvJHtpdGVtLnByb2Nlc3NJZH0vJHtpdGVtLmlkfS9sb2NrYCkucGlwZShcclxuICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5nZXRXb3JrSXRlbShpdGVtLnByb2Nlc3NJZCwgaXRlbS5pZCkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3RhcnRzIGFuIGV4ZWN1dGFibGUgcHJvY2Vzcy5cclxuICAgKiBAcGFyYW0gZXhlY3V0YWJsZVByb2Nlc3NJZCBJRCBvZiB0aGUgZXhlY3V0YWJsZSBQcm9jZXNzIHRvIGJlIHN0YXJ0ZWRcclxuICAgKiBAcGFyYW0gZGF0YSBEYXRhIHRvIGJlIHBhc3NlZCB0byB0aGUgcHJvY2VzcyAoc2ltcGxlIG9iamVjdCBvZiBrZXkvdmFsdWUgcGFpcnMpXHJcbiAgICogQHBhcmFtIGNvbnRlbnRzIE9iamVjdHMgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIHByb2Nlc3MgKHByb2Nlc3MuZmlsZSkuXHJcbiAgICovXHJcbiAgc3RhcnRQcm9jZXNzKGV4ZWN1dGFibGVQcm9jZXNzSWQ6IHN0cmluZywgZGF0YTogYW55LCBjb250ZW50czogeyBpZDogc3RyaW5nLCB0eXBlOiBzdHJpbmcgfVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChgL2JwbS9wcm9jZXNzLz9tb2RlbGlkPSR7ZXhlY3V0YWJsZVByb2Nlc3NJZH1gLCB7XHJcbiAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgIGNvbnRlbnRzOiBjb250ZW50c1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBoaXN0b3J5IGZvciBhIHByb2Nlc3MuIFdoaWNoIGVudHJpZXMgYXJlIHJldHVybmVkIGRlcGVuZHMgb24gdGhlXHJcbiAgICogcGVybWlzc2lvbnMgb2YgdGhlIGN1cnJlbnQgdXNlci5cclxuICAgKiBAcGFyYW0gcHJvY2Vzc0lkIFRoZSBJRCBvZiB0aGUgcHJvY2VzcyB0byBmZXRjaCBoaXN0b3J5IGZvclxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8V29ya0l0ZW1IaXN0b3J5RW50cnlbXT5cclxuICAgKi9cclxuICBnZXRQcm9jZXNzSGlzdG9yeShwcm9jZXNzSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8V29ya0l0ZW1IaXN0b3J5RW50cnlbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbihgL2JwbS9wcm9jZXNzLyR7cHJvY2Vzc0lkfS9oaXN0b3J5YClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKHJlcyA9PiByZXMgJiYgcmVzLmxlbmd0aCA/IHJlcy5tYXAoaXRlbSA9PiBuZXcgV29ya0l0ZW1IaXN0b3J5RW50cnkoaXRlbSkpIDogW10pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmVzIGEgY29udGVudCBmcm9tIHRoZSB3b3JrIGl0ZW1zIGZpbGUuXHJcbiAgICogQHBhcmFtIHByb2Nlc3NJZCBUaGUgSUQgb2YgdGhlIHByb2Nlc3MgdG8gcmVtb3ZlIHRoZSBpdGVtIGZyb21cclxuICAgKiBAcGFyYW0gd29ya0l0ZW1JZCBUaGUgSUQgb2YgdGhlIHdvcmsgaXRlbSBjb250YWluaW5nIHRoZSBmaWxlIGVsZW1lbnQgdG8gYmUgcmVtb3ZlZFxyXG4gICAqIEBwYXJhbSB3b3JrSXRlbUNvbnRlbnRJZCBUaGUgdGhlIElEIG9mIHRoZSBmaWxlIGVsZW1lbnQgdG8gYmUgcmVtb3ZlZFxyXG4gICAqL1xyXG4gIHJlbW92ZUZpbGVFbGVtZW50KHByb2Nlc3NJZDogc3RyaW5nLCB3b3JrSXRlbUlkOiBzdHJpbmcsIHdvcmtJdGVtQ29udGVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZGVsKGAvcHJvY2Vzcy8ke3Byb2Nlc3NJZH0vZmlsZS8ke3dvcmtJdGVtQ29udGVudElkfT9hY3Rpdml0eWlkPSR7d29ya0l0ZW1JZH1gLCB0aGlzLmJhY2tlbmQuZ2V0QnBtQmFzZSgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBjb250ZW50cyB0byBhIHdvcmsgaXRlbXMgZmlsZS5cclxuICAgKiBAcGFyYW0gcHJvY2Vzc0lkIFRoZSBJRCBvZiB0aGUgcHJvY2Vzc1xyXG4gICAqIEBwYXJhbSB3b3JrSXRlbUlkIFRoZSBJRCBvZiB0aGUgYWN0aXZpdHlcclxuICAgKiBAcGFyYW0gZWxlbWVudHMgVGhlIEVsZW1lbnRzIHRvIGJlIGFkZGVkXHJcbiAgICogQHJldHVybnMgVGhlIHVwZGF0ZWQgV29ya0l0ZW1cclxuICAgKi9cclxuICBhZGRGaWxlRWxlbWVudHMocHJvY2Vzc0lkOiBzdHJpbmcsIHdvcmtJdGVtSWQ6IHN0cmluZywgZWxlbWVudHM6IERtc09iamVjdFtdKTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgY29uc3QgdGFza3MgPSBbXTtcclxuICAgIGVsZW1lbnRzLmZvckVhY2goKGUpID0+IHtcclxuICAgICAgdGFza3MucHVzaCh0aGlzLmJhY2tlbmQucG9zdChcclxuICAgICAgICBgL3Byb2Nlc3MvJHtwcm9jZXNzSWR9L2ZpbGUvJHtlLmlkfT90eXBlPSR7ZS50eXBlLm5hbWV9JmFjdGl2aXR5aWQ9JHt3b3JrSXRlbUlkfWAsXHJcbiAgICAgICAge30sIHRoaXMuYmFja2VuZC5nZXRCcG1CYXNlKCkpKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG9ic2VydmFibGVGb3JrSm9pbih0YXNrcylcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5nZXRXb3JrSXRlbShwcm9jZXNzSWQsIHdvcmtJdGVtSWQpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGEgb2JqZWN0cyBmcm9tIHRoZSBjbGlwYm9hcmQgdG8gYSBXb3JrSXRlbS5cclxuICAgKiBAcGFyYW0gd29ya0l0ZW0gVGhlIHdvcmtJdGVtIHRvIGFkZCB0aGUgb2JqZWN0cyB0b1xyXG4gICAqIEBwYXJhbSBjbGlwYm9hcmQgQ2xpcGJvYXJkIG9iamVjdCBob2xkaW5nIHVzZXIgc2VsZWN0ZWQgb2JqZWN0c1xyXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIFdvcmtJdGVtXHJcbiAgICovXHJcbiAgYWRkRmlsZUVsZW1lbnRzRnJvbUNsaXBib2FyZCh3b3JrSXRlbTogV29ya0l0ZW0sIGNsaXBib2FyZDogQ2xpcGJvYXJkKTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgaWYgKCh3b3JrSXRlbSAmJiB3b3JrSXRlbS5maWxlRW50cnlQZXJtaXNzaW9ucy5hZGQpICYmIGNsaXBib2FyZCAmJiBjbGlwYm9hcmQuZWxlbWVudHMubGVuZ3RoICYmIGNsaXBib2FyZC5hY3Rpb24gPT09IENsaXBib2FyZEFjdGlvbi5DT1BZKSB7XHJcbiAgICAgIGxldCBjb250ZW50czogRG1zT2JqZWN0W107XHJcbiAgICAgIGlmICh3b3JrSXRlbS5maWxlLmxlbmd0aCkge1xyXG4gICAgICAgIC8vIG9ubHkgYWRkIGl0ZW1zIHRoYXQgYXJlIG5vdCBhbHJlYWR5IHBhcnQgb2YgdGhlIGF0dGFjaG1lbnRzXHJcbiAgICAgICAgY29uc3QgYXR0YWNobWVudElkcyA9IHdvcmtJdGVtLmZpbGUubWFwKGUgPT4gZS5pZCk7XHJcbiAgICAgICAgY29udGVudHMgPSBjbGlwYm9hcmQuZWxlbWVudHMuZmlsdGVyKGUgPT4gYXR0YWNobWVudElkcy5pbmRleE9mKGUuaWQpID09PSAtMSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29udGVudHMgPSBjbGlwYm9hcmQuZWxlbWVudHM7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuYWRkRmlsZUVsZW1lbnRzKHdvcmtJdGVtLnByb2Nlc3NJZCwgd29ya0l0ZW0uaWQsIGNvbnRlbnRzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcignZXJyb3InKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnBtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvYnBtL2JwbS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsRUFBRSxJQUFJLFlBQVksRUFBYyxhQUFhLEVBQUUsVUFBVSxJQUFJLG9CQUFvQixFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3ZJLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV6RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBK0IsT0FBTyxFQUFFLFFBQVEsRUFBaUIsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFbkU7Ozs7Ozs7OztHQVNHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFTckIsWUFBb0IsWUFBaUMsRUFDM0MsT0FBdUIsRUFDdkIsWUFBMEIsRUFDMUIsWUFBMEI7UUFIaEIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQzNDLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGlC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QUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvRTtpQkFBTTtnQkFDTCxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQzthQUMvQjtZQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDeEU7YUFBTTtZQUNMLE9BQU8sb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDOzs7WUEzUEYsVUFBVTs7O1lBZkgsbUJBQW1CO1lBTG5CLGNBQWM7WUFJZCxZQUFZO1lBRFosWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Zm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLCBvZiBhcyBvYnNlcnZhYmxlT2YsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIHRocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge21lcmdlTWFwLCB0YXAsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1V0aWxzfSBmcm9tICcuLi8uLi91dGlsL3V0aWxzJztcclxuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSAnLi4vYmFja2VuZC9iYWNrZW5kLnNlcnZpY2UnO1xyXG5pbXBvcnQge1dvcmtJdGVtSGlzdG9yeUVudHJ5fSBmcm9tICcuLi8uLi9tb2RlbC93b3JrLWl0ZW0taGlzdG9yeS5tb2RlbCc7XHJcbmltcG9ydCB7RG1zT2JqZWN0fSBmcm9tICcuLi8uLi9tb2RlbC9kbXMtb2JqZWN0Lm1vZGVsJztcclxuaW1wb3J0IHtJbmJveFNlcnZpY2V9IGZyb20gJy4uL2luYm94L2luYm94LnNlcnZpY2UnO1xyXG5pbXBvcnQge0V2ZW50U2VydmljZX0gZnJvbSAnLi4vZXZlbnRzL2V2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge0NhcGFiaWxpdGllc1NlcnZpY2V9IGZyb20gJy4uL2NhcGFiaWxpdGllcy9jYXBhYmlsaXRpZXMuc2VydmljZSc7XHJcbmltcG9ydCB7RXhlY3V0YWJsZVByb2Nlc3MsIEZpbGVFbnRyeSwgUHJvY2VzcywgV29ya0l0ZW0sIFdvcmtJdGVtQWN0aW9ufSBmcm9tICcuLi8uLi9tb2RlbC9icG0ubW9kZWwnO1xyXG5pbXBvcnQge0NsaXBib2FyZH0gZnJvbSAnLi4vY2xpcGJvYXJkL2NsaXBib2FyZC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0NsaXBib2FyZEFjdGlvbn0gZnJvbSAnLi4vY2xpcGJvYXJkL2NsaXBib2FyZC1hY3Rpb24uZW51bSc7XHJcblxyXG4vKipcclxuICogYEJwbVNlcnZpY2VgIGhhbmRsZXMgaW50ZXJhY3Rpb24gcmVsYXRlZCB0byBCUE0gdGFza3MuXHJcbiAqXHJcbiAqIFRoZSBtYWluIHBhcnRzIHByb3ZpZGVkIGFuZCB1c2VkIGJ5IHRoaXMgc2VydmljZSBhcmUgUHJvY2Vzc2VzIGFuZCBXb3JrSXRlbXMuXHJcbiAqIFByb2Nlc3NlcyBhcmUgZGVmaW5lZCBvbiB0aGUgYmFja2VuZCBzaWRlLiBUaGV5IGRlc2NyaWJlIGEgc2V0IG9mIHRhc2tzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBieSB0aGUgcHJvY2Vzcy5cclxuICogVGFza3MgdGhhdCByZXF1aXJlIHVzZXIgaW50ZXJhY3Rpb24gYXJlIHJlZmVycmVkIHRvIGFzIFdvcmtJdGVtcy5cclxuICpcclxuICogUHJvY2Vzc2VzIGNhbiBiZSByZWxhdGVkIHRvIGEgc3BlY2lhbCBvYmplY3QgdHlwZSwgYnV0IHRoZXkgZG9uJ3QgaGF2ZSB0by4gSW4gYWRkaXRpb24gdG8gdGhhdCB0aGV5IGNhbiByZWZlclxyXG4gKiB0byBkbXMgb2JqZWN0cy5cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJwbVNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHByb2Nlc3NJdGVtczogUHJvY2Vzc1tdO1xyXG4gIHByaXZhdGUgcHJvY2Vzc0l0ZW1zU291cmNlID0gbmV3IFJlcGxheVN1YmplY3Q8UHJvY2Vzc1tdPigxKTtcclxuICAvKipcclxuICAgKiBMb25nIHRlcm0gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgY3VycmVudCBwcm9jZXNzZXNcclxuICAgKi9cclxuICBwcm9jZXNzSXRlbXMkOiBPYnNlcnZhYmxlPFByb2Nlc3NbXT4gPSB0aGlzLnByb2Nlc3NJdGVtc1NvdXJjZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYXBhYmlsaXRpZXM6IENhcGFiaWxpdGllc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgaW5ib3hTZXJ2aWNlOiBJbmJveFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIGFsbCBwcm9jZXNzZXMgb2YgdGhlIGN1cnJlbnQgdXNlci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBzaXplIE1heGltdW0gbnVtYmVyIG9mIHByb2Nlc3NlcyB0byBiZSBmZXRjaGVkXHJcbiAgICogQHJldHVybnMgTGlzdCBvZiBQcm9jZXNzZXNcclxuICAgKi9cclxuICBnZXRQcm9jZXNzZXMoc2l6ZTogbnVtYmVyID0gMTAwMCk6IE9ic2VydmFibGU8UHJvY2Vzc1tdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5nZXRKc29uKGAvcHJvY2Vzcy91c2VyP3NpemU9JHtzaXplfWAsIHRoaXMuYmFja2VuZC5nZXRCcG1CYXNlKCkpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcChyZXNwb25zZSA9PiByZXNwb25zZS5jb250ZW50Lm1hcChpdGVtID0+IG5ldyBQcm9jZXNzKGl0ZW0pKSksXHJcbiAgICAgICAgdGFwKChwcm9jZXNzZXM6IFByb2Nlc3NbXSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wcm9jZXNzSXRlbXMgPSBwcm9jZXNzZXM7XHJcbiAgICAgICAgICB0aGlzLnByb2Nlc3NJdGVtc1NvdXJjZS5uZXh0KHRoaXMucHJvY2Vzc0l0ZW1zKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0dGVyIGZvciB0aGUgZXhlY3V0YWJsZSBQcm9jZXNzZXMuIElmIHR5cGVzIGFyZSBwcm92aWRlZCwgeW91J2xsIGdldFxyXG4gICAqIG9ubHkgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBleGVjdXRhYmxlIGZvciBhbGwgb2YgdGhlbVxyXG4gICAqIEBwYXJhbSB0eXBlcyBMaXN0IG9mIGRtcyBvYmplY3QgdHlwZXMgdG8gZmV0Y2ggZXhlY3V0YWJsZSBwcm9jZXNzZXMgZm9yXHJcbiAgICogQHJldHVybnMgTGlzdCBvZiBleGVjdXRhYmxlIHByb2Nlc3Nlc1xyXG4gICAqL1xyXG4gIGdldEV4ZWN1dGFibGVQcm9jZXNzZXModHlwZXM/OiBzdHJpbmdbXSk6IE9ic2VydmFibGU8RXhlY3V0YWJsZVByb2Nlc3NbXT4ge1xyXG4gICAgaWYgKHRoaXMuY2FwYWJpbGl0aWVzLmhhc0NhcGFiaWxpdHkoJ2JwbScpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZldGNoRXhlY3V0YWJsZVByb2Nlc3Nlcyh0eXBlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKFtdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgZXhlY3V0YWJsZSBQcm9jZXNzZXMgZm9yIGEgZ2l2ZW4gc2V0IG9mIGRtcyBvYmplY3QuWW91J2xsIGdldFxyXG4gICAqIG9ubHkgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBleGVjdXRhYmxlIGZvciBhbGwgb2YgdGhlbS5cclxuICAgKiBAcGFyYW0gZG1zT2JqZWN0cyBMaXN0IG9mIGRtcyBvYmplY3RzIHRvIGZldGNoIGV4ZWN1dGFibGUgcHJvY2Vzc2VzIGZvclxyXG4gICAqIEByZXR1cm5zIExpc3Qgb2YgZXhlY3V0YWJsZSBwcm9jZXNzZXNcclxuICAgKi9cclxuICBnZXRFeGVjdXRhYmxlUHJvY2Vzc2VzRm9yRG1zT2JqZWN0cyhkbXNPYmplY3RzOiBEbXNPYmplY3RbXSk6IE9ic2VydmFibGU8RXhlY3V0YWJsZVByb2Nlc3NbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RXhlY3V0YWJsZVByb2Nlc3NlcyhkbXNPYmplY3RzLm1hcChvID0+IG8udHlwZU5hbWUpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgZXhlY3V0YWJsZSBQcm9jZXNzZXMgZnJvbSB0aGUgYmFja2VuZC5cclxuICAgKiBAcGFyYW0gdHlwZXMgTGlzdCBvZiBkbXMgb2JqZWN0IHR5cGVzIHRvIGZldGNoIGV4ZWN1dGFibGUgcHJvY2Vzc2VzIGZvclxyXG4gICAqIEByZXR1cm5zIExpc3Qgb2YgZXhlY3V0YWJsZSBwcm9jZXNzZXNcclxuICAgKi9cclxuICBwcml2YXRlIGZldGNoRXhlY3V0YWJsZVByb2Nlc3Nlcyh0eXBlcz86IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxFeGVjdXRhYmxlUHJvY2Vzc1tdPiB7XHJcbiAgICBsZXQgdXJpID0gJy9icG0vcHJvY2Vzcy9leGVjdXRhYmxlP2Zvcm09dHJ1ZSZmaWVsZHM9dHJ1ZSc7XHJcbiAgICBpZiAodHlwZXMpIHtcclxuICAgICAgdXJpICs9IGAmdHlwZT0ke3R5cGVzLmpvaW4oJywnKX1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5nZXQodXJpKS5waXBlKG1hcChyZXMgPT4gcmVzIGFzIEV4ZWN1dGFibGVQcm9jZXNzW10pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHRlciBmb3IgYSBwcm9jZXNzZXMgZmlsZS4gVGhlIGZpbGUgb2YgYSBwcm9jZXNzIGNvbnRhaW5zXHJcbiAgICogZG1zIG9iamVjdHMgYXR0YWNoZWQgdG8gdGhlIHByb2Nlc3MuXHJcbiAgICogQHBhcmFtIHByb2Nlc3NJZCBJRCBvZiB0aGUgcHJvY2VzcyB0byBmZXRjaCBhdHRhY2hlZCBvYmplY3RzIGZvclxyXG4gICAqL1xyXG4gIGdldFByb2Nlc3NGaWxlKHByb2Nlc3NJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxGaWxlRW50cnlbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbihgL3Byb2Nlc3MvJHtwcm9jZXNzSWR9L2ZpbGVgLCB0aGlzLmJhY2tlbmQuZ2V0QnBtQmFzZSgpKS5waXBlKFxyXG4gICAgICAgIG1hcChyZXMgPT4gcmVzLmNvbnRlbnQubWFwKGkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaWQ6IGkuZWxlbWVudGlkLFxyXG4gICAgICAgICAgICB0aXRsZTogaS50aXRsZSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGkuZGVzY3JpcHRpb24gPyBpLmRlc2NyaXB0aW9uIDogJycsXHJcbiAgICAgICAgICAgIGljb25pZDogaS5pY29uaWQsXHJcbiAgICAgICAgICAgIGNyZWF0b3I6IGkuY3JlYXRvcixcclxuICAgICAgICAgICAgYWRkdGltZTogaS5hZGR0aW1lLFxyXG4gICAgICAgICAgICB0eXBlOiBpLnR5cGVcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSB3b3JrIGl0ZW0uXHJcbiAgICogQHBhcmFtIHByb2Nlc3NJZCBJRCBvZiB0aGUgcGFyZW50IHByb2Nlc3NcclxuICAgKiBAcGFyYW0gaXRlbUlkIElEIG9mIHRoZSB3b3JrIGl0ZW0gaXRzZWxmXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyB0byBiZSBhZGRlZCB0byB0aGUgYmFja2VuZCBjYWxsXHJcbiAgICogQHJldHVybnMgYSBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIGdldFdvcmtJdGVtKHByb2Nlc3NJZDogc3RyaW5nLCBpdGVtSWQ6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8V29ya0l0ZW0+IHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IG9wdGlvbnMgPyBvcHRpb25zIDoge2Zvcm06IHRydWUsIGZpZWxkczogdHJ1ZX07XHJcbiAgICBjb25zdCB0YXNrcyA9IFtcclxuICAgICAgdGhpcy5iYWNrZW5kLmdldEpzb24oVXRpbHMuYnVpbGRVcmkoYC9icG0vcHJvY2Vzcy8ke3Byb2Nlc3NJZH0vJHtpdGVtSWR9YCwgcGFyYW1zKSksXHJcbiAgICAgIHRoaXMuZ2V0UHJvY2Vzc0ZpbGUocHJvY2Vzc0lkKVxyXG4gICAgXTtcclxuICAgIHJldHVybiBvYnNlcnZhYmxlRm9ya0pvaW4odGFza3MpLnBpcGUoXHJcbiAgICAgIG1hcChyZXMgPT4ge1xyXG4gICAgICAgIGNvbnN0IHdpID0gbmV3IFdvcmtJdGVtKHJlc1swXSk7XHJcbiAgICAgICAgd2kuc2V0RmlsZShyZXNbMV0pO1xyXG4gICAgICAgIHJldHVybiB3aTtcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2F2ZXMgYSB3b3JrIGl0ZW0uXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIHdvcmsgaXRlbSB0byBiZSBzYXZlZFxyXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIFdvcmtJdGVtXHJcbiAgICovXHJcbiAgc2F2ZVdvcmtJdGVtKGl0ZW06IFdvcmtJdGVtKTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgY29uc3Qge2lkLCBwcm9jZXNzSWQsIGZpbGUsIGRhdGF9ID0gaXRlbTtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7Y29udGVudHM6IGZpbGUsIGRhdGF9O1xyXG4gICAgY29uc3QgcGFyYW1zID0ge2tlZXBsb2NrOiB0cnVlLCBpc2F1dG9sb2NrOiBmYWxzZX07XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAucG9zdChVdGlscy5idWlsZFVyaShgL2JwbS9wcm9jZXNzLyR7cHJvY2Vzc0lkfS8ke2lkfS9zYXZlYCwgcGFyYW1zKSwgcGF5bG9hZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5nZXRXb3JrSXRlbShwcm9jZXNzSWQsIGlkKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcndhcmRzIGEgd29yayBpdGVtLiBJZiBhIFdvcmtJdGVtIHByb3ZpZGVzIGRpZmZlcmVudCBhY3Rpb25zIChAbGluayBXb3JrSXRlbUFjdGlvbilcclxuICAgKiB5b3UgY2FuIHByb3ZpZGUgdGhlIHNlbGVjdGVkIGFjdGlvbiB0b28uXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIHdvcmsgaXRlbSB0byBiZSBmb3J3YXJkZWRcclxuICAgKiBAcGFyYW0gYWN0aW9uIEFjdGlvbiB1c2VkIGZvciBmb3J3YXJkaW5nXHJcbiAgICovXHJcbiAgZm9yd2FyZFdvcmtJdGVtKGl0ZW06IFdvcmtJdGVtLCBhY3Rpb24/OiBXb3JrSXRlbUFjdGlvbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7a2VlcGxvY2s6IGZhbHNlLCBpc2F1dG9sb2NrOiBmYWxzZX07XHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBhY3Rpb246IGFjdGlvbixcclxuICAgICAgY29udGVudHM6IGl0ZW0uZmlsZSxcclxuICAgICAgZGF0YTogaXRlbS5kYXRhXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAucG9zdChVdGlscy5idWlsZFVyaShgL2JwbS9wcm9jZXNzLyR7aXRlbS5wcm9jZXNzSWR9LyR7aXRlbS5pZH0vc2F2ZWAsIHBhcmFtcyksIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmluYm94U2VydmljZS51cGRhdGVJbmJveEl0ZW1zKGl0ZW0uaWQpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9ja3MgYSBXb3JrSXRlbSBmb3IgdGhlIGN1cnJlbnQgdXNlciAocGVyc29uYWxpemF0aW9uKSwgbWVhbmluZyB0aGF0IHRoZVxyXG4gICAqIGN1cnJlbnQgdXNlciBpcyBub3cgaW4gY2hhcmdlIG9mIGZ1bGZpbGxpbmcgdGhlIFdvcmtJdGVtIHRhc2suXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIFdvcmtJdGVtIHRvIGJlIGxvY2tlZFxyXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIFdvcmtJdGVtXHJcbiAgICovXHJcbiAgbG9ja1dvcmtJdGVtKGl0ZW06IFdvcmtJdGVtKTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wdXQoYC9icG0vcHJvY2Vzcy8ke2l0ZW0ucHJvY2Vzc0lkfS8ke2l0ZW0uaWR9L2xvY2tgKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldFdvcmtJdGVtKGl0ZW0ucHJvY2Vzc0lkLCBpdGVtLmlkKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbGVhc2VzIHRoZSBsb2NrIGZvciBhIFdvcmtJdGVtLlxyXG4gICAqIEBwYXJhbSBpdGVtIFRoZSB3b3JrIGl0ZW0gdG8gYmUgdW5sb2NrZWRcclxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIHVubG9ja1dvcmtJdGVtKGl0ZW06IFdvcmtJdGVtKTogT2JzZXJ2YWJsZTxXb3JrSXRlbT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWwoYC9icG0vcHJvY2Vzcy8ke2l0ZW0ucHJvY2Vzc0lkfS8ke2l0ZW0uaWR9L2xvY2tgKS5waXBlKFxyXG4gICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldFdvcmtJdGVtKGl0ZW0ucHJvY2Vzc0lkLCBpdGVtLmlkKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTdGFydHMgYW4gZXhlY3V0YWJsZSBwcm9jZXNzLlxyXG4gICAqIEBwYXJhbSBleGVjdXRhYmxlUHJvY2Vzc0lkIElEIG9mIHRoZSBleGVjdXRhYmxlIFByb2Nlc3MgdG8gYmUgc3RhcnRlZFxyXG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSBwcm9jZXNzIChzaW1wbGUgb2JqZWN0IG9mIGtleS92YWx1ZSBwYWlycylcclxuICAgKiBAcGFyYW0gY29udGVudHMgT2JqZWN0cyB0byBiZSBhdHRhY2hlZCB0byB0aGUgcHJvY2VzcyAocHJvY2Vzcy5maWxlKS5cclxuICAgKi9cclxuICBzdGFydFByb2Nlc3MoZXhlY3V0YWJsZVByb2Nlc3NJZDogc3RyaW5nLCBkYXRhOiBhbnksIGNvbnRlbnRzOiB7aWQ6IHN0cmluZywgdHlwZTogc3RyaW5nfVtdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmJhY2tlbmQucG9zdChgL2JwbS9wcm9jZXNzLz9tb2RlbGlkPSR7ZXhlY3V0YWJsZVByb2Nlc3NJZH1gLCB7XHJcbiAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgIGNvbnRlbnRzOiBjb250ZW50c1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBoaXN0b3J5IGZvciBhIHByb2Nlc3MuIFdoaWNoIGVudHJpZXMgYXJlIHJldHVybmVkIGRlcGVuZHMgb24gdGhlXHJcbiAgICogcGVybWlzc2lvbnMgb2YgdGhlIGN1cnJlbnQgdXNlci5cclxuICAgKiBAcGFyYW0gcHJvY2Vzc0lkIFRoZSBJRCBvZiB0aGUgcHJvY2VzcyB0byBmZXRjaCBoaXN0b3J5IGZvclxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8V29ya0l0ZW1IaXN0b3J5RW50cnlbXT5cclxuICAgKi9cclxuICBnZXRQcm9jZXNzSGlzdG9yeShwcm9jZXNzSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8V29ya0l0ZW1IaXN0b3J5RW50cnlbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxyXG4gICAgICAuZ2V0SnNvbihgL2JwbS9wcm9jZXNzLyR7cHJvY2Vzc0lkfS9oaXN0b3J5YClcclxuICAgICAgLnBpcGUobWFwKHJlcyA9PiByZXMgJiYgcmVzLmxlbmd0aCA/IHJlcy5tYXAoaXRlbSA9PiBuZXcgV29ya0l0ZW1IaXN0b3J5RW50cnkoaXRlbSkpIDogW10pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZXMgYSBjb250ZW50IGZyb20gdGhlIHdvcmsgaXRlbXMgZmlsZS5cclxuICAgKiBAcGFyYW0gcHJvY2Vzc0lkIFRoZSBJRCBvZiB0aGUgcHJvY2VzcyB0byByZW1vdmUgdGhlIGl0ZW0gZnJvbVxyXG4gICAqIEBwYXJhbSB3b3JrSXRlbUlkIFRoZSBJRCBvZiB0aGUgd29yayBpdGVtIGNvbnRhaW5pbmcgdGhlIGZpbGUgZWxlbWVudCB0byBiZSByZW1vdmVkXHJcbiAgICogQHBhcmFtIHdvcmtJdGVtQ29udGVudElkIFRoZSB0aGUgSUQgb2YgdGhlIGZpbGUgZWxlbWVudCB0byBiZSByZW1vdmVkXHJcbiAgICovXHJcbiAgcmVtb3ZlRmlsZUVsZW1lbnQocHJvY2Vzc0lkOiBzdHJpbmcsIHdvcmtJdGVtSWQ6IHN0cmluZywgd29ya0l0ZW1Db250ZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXHJcbiAgICAgIC5kZWwoYC9wcm9jZXNzLyR7cHJvY2Vzc0lkfS9maWxlLyR7d29ya0l0ZW1Db250ZW50SWR9P2FjdGl2aXR5aWQ9JHt3b3JrSXRlbUlkfWAsIHRoaXMuYmFja2VuZC5nZXRCcG1CYXNlKCkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIGNvbnRlbnRzIHRvIGEgd29yayBpdGVtcyBmaWxlLlxyXG4gICAqIEBwYXJhbSBwcm9jZXNzSWQgVGhlIElEIG9mIHRoZSBwcm9jZXNzXHJcbiAgICogQHBhcmFtIHdvcmtJdGVtSWQgVGhlIElEIG9mIHRoZSBhY3Rpdml0eVxyXG4gICAqIEBwYXJhbSBlbGVtZW50cyBUaGUgRWxlbWVudHMgdG8gYmUgYWRkZWRcclxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBXb3JrSXRlbVxyXG4gICAqL1xyXG4gIGFkZEZpbGVFbGVtZW50cyhwcm9jZXNzSWQ6IHN0cmluZywgd29ya0l0ZW1JZDogc3RyaW5nLCBlbGVtZW50czogRG1zT2JqZWN0W10pOiBPYnNlcnZhYmxlPFdvcmtJdGVtPiB7XHJcbiAgICBjb25zdCB0YXNrcyA9IFtdO1xyXG4gICAgZWxlbWVudHMuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICB0YXNrcy5wdXNoKHRoaXMuYmFja2VuZC5wb3N0KFxyXG4gICAgICAgIGAvcHJvY2Vzcy8ke3Byb2Nlc3NJZH0vZmlsZS8ke2UuaWR9P3R5cGU9JHtlLnR5cGUubmFtZX0mYWN0aXZpdHlpZD0ke3dvcmtJdGVtSWR9YCxcclxuICAgICAgICB7fSwgdGhpcy5iYWNrZW5kLmdldEJwbUJhc2UoKSkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gb2JzZXJ2YWJsZUZvcmtKb2luKHRhc2tzKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgoKSA9PiB0aGlzLmdldFdvcmtJdGVtKHByb2Nlc3NJZCwgd29ya0l0ZW1JZCkpXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgYSBvYmplY3RzIGZyb20gdGhlIGNsaXBib2FyZCB0byBhIFdvcmtJdGVtLlxyXG4gICAqIEBwYXJhbSB3b3JrSXRlbSBUaGUgd29ya0l0ZW0gdG8gYWRkIHRoZSBvYmplY3RzIHRvXHJcbiAgICogQHBhcmFtIGNsaXBib2FyZCBDbGlwYm9hcmQgb2JqZWN0IGhvbGRpbmcgdXNlciBzZWxlY3RlZCBvYmplY3RzXHJcbiAgICogQHJldHVybnMgVGhlIHVwZGF0ZWQgV29ya0l0ZW1cclxuICAgKi9cclxuICBhZGRGaWxlRWxlbWVudHNGcm9tQ2xpcGJvYXJkKHdvcmtJdGVtOiBXb3JrSXRlbSwgY2xpcGJvYXJkOiBDbGlwYm9hcmQpOiBPYnNlcnZhYmxlPFdvcmtJdGVtPiB7XHJcbiAgICBpZiAoKHdvcmtJdGVtICYmIHdvcmtJdGVtLmZpbGVFbnRyeVBlcm1pc3Npb25zLmFkZCkgJiYgY2xpcGJvYXJkICYmIGNsaXBib2FyZC5lbGVtZW50cy5sZW5ndGggJiYgY2xpcGJvYXJkLmFjdGlvbiA9PT0gQ2xpcGJvYXJkQWN0aW9uLkNPUFkpIHtcclxuICAgICAgbGV0IGNvbnRlbnRzOiBEbXNPYmplY3RbXTtcclxuICAgICAgaWYgKHdvcmtJdGVtLmZpbGUubGVuZ3RoKSB7XHJcbiAgICAgICAgLy8gb25seSBhZGQgaXRlbXMgdGhhdCBhcmUgbm90IGFscmVhZHkgcGFydCBvZiB0aGUgYXR0YWNobWVudHNcclxuICAgICAgICBjb25zdCBhdHRhY2htZW50SWRzID0gd29ya0l0ZW0uZmlsZS5tYXAoZSA9PiBlLmlkKTtcclxuICAgICAgICBjb250ZW50cyA9IGNsaXBib2FyZC5lbGVtZW50cy5maWx0ZXIoZSA9PiBhdHRhY2htZW50SWRzLmluZGV4T2YoZS5pZCkgPT09IC0xKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb250ZW50cyA9IGNsaXBib2FyZC5lbGVtZW50cztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5hZGRGaWxlRWxlbWVudHMod29ya0l0ZW0ucHJvY2Vzc0lkLCB3b3JrSXRlbS5pZCwgY29udGVudHMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKCdlcnJvcicpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=