ngx-edu-sharing-ui 10.0.9 → 10.0.11

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.
@@ -52,11 +52,13 @@ export class MdsViewerComponent {
52
52
  try {
53
53
  this.mdsViewerService.values$.next(this.data);
54
54
  this.mdsViewerService.mds$.next(this.mds);
55
- const editor = await this.mdsEditorInstanceService.initWithoutNodes(this.groupId, this.setId, HOME_REPOSITORY, 'viewer', this.data);
56
- if (!editor) {
57
- // Initialization was interrupted. Probably, this method was called again before it
58
- // could finish.
59
- return;
55
+ if (this.mdsEditorInstanceService) {
56
+ const editor = await this.mdsEditorInstanceService.initWithoutNodes(this.groupId, this.setId, HOME_REPOSITORY, 'viewer', this.data);
57
+ if (!editor) {
58
+ // Initialization was interrupted. Probably, this method was called again before it
59
+ // could finish.
60
+ return;
61
+ }
60
62
  }
61
63
  }
62
64
  catch (e) {
@@ -151,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
151
153
  }], headingLevel: [{
152
154
  type: Input
153
155
  }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRzLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL21kcy12aWV3ZXIvbWRzLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL21kcy12aWV3ZXIvbWRzLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUlULEtBQUssRUFJTCxZQUFZLEdBRWYsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUNILGVBQWUsRUFJZixhQUFhLEdBQ2hCLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7OztBQVE5RCxNQUFNLE9BQU8sa0JBQWtCO0lBa0IzQjs7Ozs7T0FLRztJQUNILElBQ0ksWUFBWSxDQUFDLEtBQW9CO1FBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztJQUMxQyxDQUFDO0lBRUQsWUFDWSxVQUFzQixFQUN0QixnQkFBa0MsRUFDbEMsZUFBeUMsRUFDekMsUUFBa0IsRUFDbEIsWUFBOEIsRUFDOUIsU0FBdUIsRUFDdkIsWUFBaUM7UUFOakMsZUFBVSxH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QUM7d1FBR3ZCLFNBQVM7c0JBQW5DLFlBQVk7dUJBQUMsV0FBVztnQkFFaEIsd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQVVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFTRixZQUFZO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgTWRzV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXQvbWRzLXdpZGdldC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBIT01FX1JFUE9TSVRPUlksXG4gICAgTWRzRGVmaW5pdGlvbixcbiAgICBNZHNTZXJ2aWNlLFxuICAgIE1kc1ZpZXcsIE1kc1dpZGdldCxcbiAgICBSZXN0Q29uc3RhbnRzLFxufSBmcm9tICduZ3gtZWR1LXNoYXJpbmctYXBpJztcbmltcG9ydCB7IFZhbHVlcyB9IGZyb20gJy4uL3NlcnZpY2VzL3NlYXJjaC1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyByZXBsYWNlRWxlbWVudFdpdGhEaXYgfSBmcm9tICcuL3JlcGxhY2UtZWxlbWVudC13aXRoLWRpdic7XG5pbXBvcnQgeyBVSVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91aS5zZXJ2aWNlJztcbmltcG9ydCB7IE1kc1ZpZXdlclNlcnZpY2UgfSBmcm9tICcuL21kcy12aWV3ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3SW5zdGFuY2VTZXJ2aWNlIH0gZnJvbSAnLi92aWV3LWluc3RhbmNlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VzLW1kcy12aWV3ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnbWRzLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ21kcy12aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtNZHNWaWV3ZXJTZXJ2aWNlLCBWaWV3SW5zdGFuY2VTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRzVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkcmVuKCdjb250YWluZXInKSBjb250YWluZXI6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIEBJbnB1dCgpIG1kc0VkaXRvckluc3RhbmNlU2VydmljZTogYW55O1xuICAgIEBJbnB1dCgpIGdyb3VwSWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBzZXRJZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRhdGE6IFZhbHVlcztcbiAgICBtZHM6IE1kc0RlZmluaXRpb247XG4gICAgdGVtcGxhdGVzOiB7XG4gICAgICAgIHZpZXc6IE1kc1ZpZXc7XG4gICAgICAgIGh0bWw6IFNhZmVIdG1sO1xuICAgIH1bXTtcblxuICAgIC8qKlxuICAgICAqIHNob3cgZ3JvdXAgaGVhZGluZ3MgKCsgaWNvbnMpIGZvciB0aGUgaW5kaXZpZHVhbCB0ZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG93R3JvdXBIZWFkaW5ncyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaGVhZGluZyBsZXZlbCBmcm9tIDEgdG8gNiB0byB1c2UgZm9yIHdpZGdldCBsYWJlbHMsIGVxdWl2YWxlbnQgdG8gYGgxYCB0byBgaDZgLlxuICAgICAqXG4gICAgICogSWYgbm90IHNldCwgd2lkZ2V0IGxhYmVscyBhcmUgbm90IG1hcmtlZCBhcyBoZWFkaW5ncyBhbmQgYW4gaW52aXNpYmxlIGNvbG9uIGlzIGFkZGVkIGJldHdlZW5cbiAgICAgKiBsYWJlbHMgYW5kIHZhbHVlcywgdGhhdCB3aWxsIGJlIHJlYWQgb3V0IGJ5IHNjcmVlbiByZWFkZXJzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGhlYWRpbmdMZXZlbCh2YWx1ZTogbnVtYmVyIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnZpZXdJbnN0YW5jZS5oZWFkaW5nTGV2ZWwgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IGhlYWRpbmdMZXZlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0luc3RhbmNlLmhlYWRpbmdMZXZlbDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBtZHNTZXJ2aWNlOiBNZHNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG1kc1ZpZXdlclNlcnZpY2U6IE1kc1ZpZXdlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGNvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJpdmF0ZSB2aWV3SW5zdGFuY2U6IFZpZXdJbnN0YW5jZVNlcnZpY2UsXG4gICAgKSB7fVxuXG4gICAgZ2V0R3JvdXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1kcy5ncm91cHMuZmluZCgoZzogYW55KSA9PiBnLmlkID09IHRoaXMuZ3JvdXBJZCk7XG4gICAgfVxuICAgIGdldFZpZXcoaWQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5tZHMudmlld3MuZmluZCgodjogYW55KSA9PiB2LmlkID09IGlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5mbGF0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm1kcykge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmluZmxhdGUoKSwgMTAwMCAvIDYwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5tZHNWaWV3ZXJTZXJ2aWNlLnZhbHVlcyQubmV4dCh0aGlzLmRhdGEpO1xuICAgICAgICAgICAgdGhpcy5tZHNWaWV3ZXJTZXJ2aWNlLm1kcyQubmV4dCh0aGlzLm1kcyk7XG4gICAgICAgICAgICBjb25zdCBlZGl0b3IgPSBhd2FpdCB0aGlzLm1kc0VkaXRvckluc3RhbmNlU2VydmljZS5pbml0V2l0aG91dE5vZGVzKFxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBJZCxcbiAgICAgICAgICAgICAgICB0aGlzLnNldElkLFxuICAgICAgICAgICAgICAgIEhPTUVfUkVQT1NJVE9SWSxcbiAgICAgICAgICAgICAgICAndmlld2VyJyxcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGEsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgICAgICAgICAgICAvLyBJbml0aWFsaXphdGlvbiB3YXMgaW50ZXJydXB0ZWQuIFByb2JhYmx5LCB0aGlzIG1ldGhvZCB3YXMgY2FsbGVkIGFnYWluIGJlZm9yZSBpdFxuICAgICAgICAgICAgICAgIC8vIGNvdWxkIGZpbmlzaC5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRlbXBsYXRlcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHZpZXcgb2YgdGhpcy5nZXRHcm91cCgpLnZpZXdzKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy5nZXRWaWV3KHZpZXcpO1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgdmlldzogdixcbiAgICAgICAgICAgICAgICBodG1sOiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0aGlzLnByZXBhcmVIVE1MKHYuaHRtbCkpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gd2FpdCBmb3IgYW5ndWxhciB0byBpbmZsYXRlIHRoZSBuZXcgYmluZGluZ1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgd2lkZ2V0IG9mICh0aGlzLm1kc0VkaXRvckluc3RhbmNlU2VydmljZT8ud2lkZ2V0cy52YWx1ZS5tYXAoKHc6IGFueSkgPT4gdy5kZWZpbml0aW9uKSB8fCB0aGlzLm1kcy53aWRnZXRzKSBhcyBNZHNXaWRnZXRbXSkge1xuICAgICAgICAgICAgICAgIC8vIEBUT0RPOiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gZmlsdGVyIGJ5IHdpZGdldHMgYmFzZWQgb24gdGVtcGxhdGUgYW5kIGNvbmRpdGlvbiwgc2hvdWxkIGJlIGltcGxlbWVudGVkIGluIDUuMVxuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLnRvQXJyYXkoKS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IGMubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldC5pZCxcbiAgICAgICAgICAgICAgICAgICAgKT8uWzBdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWRzRWRpdG9yVmlld0NvbXBvbmVudC51cGRhdGVXaWRnZXRXaXRoSFRNTEF0dHJpYnV0ZXMoZWxlbWVudCwgdyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0gcmVwbGFjZUVsZW1lbnRXaXRoRGl2KGVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBVSVNlcnZpY2UuaW5qZWN0QW5ndWxhckNvbXBvbmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lclJlZixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZHNXaWRnZXRDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNsb3NlIGFsbCBjdXN0b20gdGFncyBpbnNpZGUgdGhlIGh0bWwgd2hpY2ggYXJlIG5vdCBjbG9zZWRcbiAgICAgKiBlLmcuIDxjbTpuYW1lPlxuICAgICAqICAgICAtPiA8Y206bmFtZT48L2NtOm5hbWU+XG4gICAgICogQHBhcmFtIGh0bWxcbiAgICAgKi9cbiAgICBwcml2YXRlIHByZXBhcmVIVE1MKGh0bWw6IHN0cmluZykge1xuICAgICAgICBmb3IgKGNvbnN0IHcgb2YgdGhpcy5tZHMud2lkZ2V0cykge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBodG1sLmluZGV4T2YoJzwnICsgdy5pZCk7XG4gICAgICAgICAgICBpZiAoc3RhcnQgPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGVuZCA9IGh0bWwuaW5kZXhPZignPicsIHN0YXJ0KSArIDE7XG4gICAgICAgICAgICBodG1sID0gaHRtbC5zdWJzdHJpbmcoMCwgZW5kKSArICc8LycgKyB3LmlkICsgJz4nICsgaHRtbC5zdWJzdHJpbmcoZW5kKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaHRtbDtcbiAgICB9XG5cbiAgICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGxldCBpbmZsYXRlID0gZmFsc2U7XG4gICAgICAgIGlmIChjaGFuZ2VzLnNldElkKSB7XG4gICAgICAgICAgICB0aGlzLm1kcyA9IGF3YWl0IHRoaXMubWRzU2VydmljZVxuICAgICAgICAgICAgICAgIC5nZXRNZXRhZGF0YVNldCh7IG1ldGFkYXRhU2V0OiB0aGlzLnNldElkIH0pXG4gICAgICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgaW5mbGF0ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMuZGF0YSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVtSZXN0Q29uc3RhbnRzLkNNX1BST1BfTUVUQURBVEFTRVRfRURVX01FVEFEQVRBU0VUXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZHMgPSBhd2FpdCB0aGlzLm1kc1NlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLmdldE1ldGFkYXRhU2V0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhU2V0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVtSZXN0Q29uc3RhbnRzLkNNX1BST1BfTUVUQURBVEFTRVRfRURVX01FVEFEQVRBU0VUXVswXSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5tZHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1kcyA9IGF3YWl0IHRoaXMubWRzU2VydmljZS5nZXRNZXRhZGF0YVNldCh7fSkudG9Qcm9taXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbmZsYXRlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5mbGF0ZSkge1xuICAgICAgICAgICAgdm9pZCB0aGlzLmluZmxhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgKm5nRm9yPVwibGV0IHQgb2YgdGVtcGxhdGVzXCIgI2NvbnRhaW5lciBjbGFzcz1cIm1kcy12aWV3ZXJcIj5cbiAgPGRpdiAqbmdJZj1cInNob3dHcm91cEhlYWRpbmdzICYmIHQudmlldy5jYXB0aW9uXCIgY2xhc3M9XCJjYXJkLXRpdGxlLWVsZW1lbnQgZ3JvdXAtaGVhZGluZ1wiPlxuICAgIDxpIFtlc0ljb25dPVwidC52aWV3Lmljb25cIiAqbmdJZj1cInQudmlldy5pY29uXCI+PC9pPjxzcGFuPnt7IHQudmlldy5jYXB0aW9uIH19PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInRlbXBsYXRlXCIgW2lubmVySFRNTF09XCJ0Lmh0bWxcIj48L2Rpdj5cbjwvZGl2PlxuIl19
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRzLXZpZXdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL21kcy12aWV3ZXIvbWRzLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL21kcy12aWV3ZXIvbWRzLXZpZXdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUlULEtBQUssRUFJTCxZQUFZLEdBRWYsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUNILGVBQWUsRUFJZixhQUFhLEdBQ2hCLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7OztBQVE5RCxNQUFNLE9BQU8sa0JBQWtCO0lBa0IzQjs7Ozs7T0FLRztJQUNILElBQ0ksWUFBWSxDQUFDLEtBQW9CO1FBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztJQUMxQyxDQUFDO0lBRUQsWUFDWSxVQUFzQixFQUN0QixnQkFBa0MsRUFDbEMsZUFBeUMsRUFDekMsUUFBa0IsRUFDbEIsWUFBOEIsRUFDOUIsU0FBdUIsRUFDdkIsWUFBaUM7UUFOakMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG9CQUFlLEdBQWYsZUFBZSxDQUEwQjtRQUN6QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtRQUM5QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3ZCLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQTFCN0M7O1dBRUc7UUFDTSxzQkFBaUIsR0FBRyxJQUFJLENBQUM7SUF3Qi9CLENBQUM7SUFFSixRQUFRO1FBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFDRCxPQUFPLENBQUMsRUFBVTtRQUNkLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTSxLQUFLLENBQUMsT0FBTztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1osVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDNUMsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUM7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLElBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQy9CLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixDQUMvRCxJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxLQUFLLEVBQ1YsZUFBZSxFQUNmLFFBQVEsRUFDUixJQUFJLENBQUMsSUFBSSxDQUNaLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNWLG1GQUFtRjtvQkFDbkYsZ0JBQWdCO29CQUNoQixPQUFPO2dCQUNYLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVCxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLElBQUksRUFBRSxDQUFDO2dCQUNQLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3pFLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCw4Q0FBOEM7UUFDOUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLEtBQUssTUFBTSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBZ0IsRUFBRSxDQUFDO2dCQUNuSSwrR0FBK0c7Z0JBQy9HLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ25DLElBQUksT0FBTyxHQUFnQixDQUFDLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUMzRCxNQUFNLENBQUMsRUFBRSxDQUNaLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDUCxJQUFJLE9BQU8sRUFBRSxDQUFDO3dCQUNWLHFFQUFxRTt3QkFDckUsT0FBTyxHQUFHLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUV6QyxTQUFTLENBQUMsc0JBQXNCLENBQzVCLElBQUksQ0FBQyxlQUFlLEVBQ3BCLElBQUksQ0FBQyxZQUFZLEVBQ2pCLGtCQUFrQixFQUNsQixPQUFPLEVBQ1A7NEJBQ0ksTUFBTTt5QkFDVCxFQUNELEVBQUUsRUFDRixJQUFJLENBQUMsUUFBUSxDQUNoQixDQUFDO29CQUNOLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxXQUFXLENBQUMsSUFBWTtRQUM1QixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2QsU0FBUztZQUNiLENBQUM7WUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFzQjtRQUNwQyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVO2lCQUMzQixjQUFjLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUMzQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ25CLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsbUNBQW1DLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDdkUsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVO3FCQUMzQixjQUFjLENBQUM7b0JBQ1osV0FBVyxFQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN0RSxDQUFDO3FCQUNELFNBQVMsRUFBRSxDQUFDO1lBQ3JCLENBQUM7aUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BFLENBQUM7WUFDRCxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ25CLENBQUM7UUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1YsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEIsQ0FBQztJQUNMLENBQUM7K0dBekpRLGtCQUFrQjttR0FBbEIsa0JBQWtCLGtPQUZoQixDQUFDLGdCQUFnQixFQUFFLG1CQUFtQixDQUFDLDBJQy9CdEQsaVZBTUE7OzRGRDJCYSxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0ksZUFBZSxhQUdkLENBQUMsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUM7d1FBR3ZCLFNBQVM7c0JBQW5DLFlBQVk7dUJBQUMsV0FBVztnQkFFaEIsd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQVVHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFTRixZQUFZO3NCQURmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgTWRzV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXQvbWRzLXdpZGdldC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBIT01FX1JFUE9TSVRPUlksXG4gICAgTWRzRGVmaW5pdGlvbixcbiAgICBNZHNTZXJ2aWNlLFxuICAgIE1kc1ZpZXcsIE1kc1dpZGdldCxcbiAgICBSZXN0Q29uc3RhbnRzLFxufSBmcm9tICduZ3gtZWR1LXNoYXJpbmctYXBpJztcbmltcG9ydCB7IFZhbHVlcyB9IGZyb20gJy4uL3NlcnZpY2VzL3NlYXJjaC1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyByZXBsYWNlRWxlbWVudFdpdGhEaXYgfSBmcm9tICcuL3JlcGxhY2UtZWxlbWVudC13aXRoLWRpdic7XG5pbXBvcnQgeyBVSVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91aS5zZXJ2aWNlJztcbmltcG9ydCB7IE1kc1ZpZXdlclNlcnZpY2UgfSBmcm9tICcuL21kcy12aWV3ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3SW5zdGFuY2VTZXJ2aWNlIH0gZnJvbSAnLi92aWV3LWluc3RhbmNlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VzLW1kcy12aWV3ZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnbWRzLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ21kcy12aWV3ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtNZHNWaWV3ZXJTZXJ2aWNlLCBWaWV3SW5zdGFuY2VTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgTWRzVmlld2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkcmVuKCdjb250YWluZXInKSBjb250YWluZXI6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIEBJbnB1dCgpIG1kc0VkaXRvckluc3RhbmNlU2VydmljZTogYW55O1xuICAgIEBJbnB1dCgpIGdyb3VwSWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBzZXRJZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRhdGE6IFZhbHVlcztcbiAgICBtZHM6IE1kc0RlZmluaXRpb247XG4gICAgdGVtcGxhdGVzOiB7XG4gICAgICAgIHZpZXc6IE1kc1ZpZXc7XG4gICAgICAgIGh0bWw6IFNhZmVIdG1sO1xuICAgIH1bXTtcblxuICAgIC8qKlxuICAgICAqIHNob3cgZ3JvdXAgaGVhZGluZ3MgKCsgaWNvbnMpIGZvciB0aGUgaW5kaXZpZHVhbCB0ZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzaG93R3JvdXBIZWFkaW5ncyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaGVhZGluZyBsZXZlbCBmcm9tIDEgdG8gNiB0byB1c2UgZm9yIHdpZGdldCBsYWJlbHMsIGVxdWl2YWxlbnQgdG8gYGgxYCB0byBgaDZgLlxuICAgICAqXG4gICAgICogSWYgbm90IHNldCwgd2lkZ2V0IGxhYmVscyBhcmUgbm90IG1hcmtlZCBhcyBoZWFkaW5ncyBhbmQgYW4gaW52aXNpYmxlIGNvbG9uIGlzIGFkZGVkIGJldHdlZW5cbiAgICAgKiBsYWJlbHMgYW5kIHZhbHVlcywgdGhhdCB3aWxsIGJlIHJlYWQgb3V0IGJ5IHNjcmVlbiByZWFkZXJzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGhlYWRpbmdMZXZlbCh2YWx1ZTogbnVtYmVyIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnZpZXdJbnN0YW5jZS5oZWFkaW5nTGV2ZWwgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IGhlYWRpbmdMZXZlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0luc3RhbmNlLmhlYWRpbmdMZXZlbDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBtZHNTZXJ2aWNlOiBNZHNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG1kc1ZpZXdlclNlcnZpY2U6IE1kc1ZpZXdlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGNvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJpdmF0ZSB2aWV3SW5zdGFuY2U6IFZpZXdJbnN0YW5jZVNlcnZpY2UsXG4gICAgKSB7fVxuXG4gICAgZ2V0R3JvdXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1kcy5ncm91cHMuZmluZCgoZzogYW55KSA9PiBnLmlkID09IHRoaXMuZ3JvdXBJZCk7XG4gICAgfVxuICAgIGdldFZpZXcoaWQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5tZHMudmlld3MuZmluZCgodjogYW55KSA9PiB2LmlkID09IGlkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5mbGF0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm1kcykge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmluZmxhdGUoKSwgMTAwMCAvIDYwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5tZHNWaWV3ZXJTZXJ2aWNlLnZhbHVlcyQubmV4dCh0aGlzLmRhdGEpO1xuICAgICAgICAgICAgdGhpcy5tZHNWaWV3ZXJTZXJ2aWNlLm1kcyQubmV4dCh0aGlzLm1kcyk7XG4gICAgICAgICAgICBpZih0aGlzLm1kc0VkaXRvckluc3RhbmNlU2VydmljZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVkaXRvciA9IGF3YWl0IHRoaXMubWRzRWRpdG9ySW5zdGFuY2VTZXJ2aWNlLmluaXRXaXRob3V0Tm9kZXMoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBJZCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJZCxcbiAgICAgICAgICAgICAgICAgICAgSE9NRV9SRVBPU0lUT1JZLFxuICAgICAgICAgICAgICAgICAgICAndmlld2VyJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKCFlZGl0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSW5pdGlhbGl6YXRpb24gd2FzIGludGVycnVwdGVkLiBQcm9iYWJseSwgdGhpcyBtZXRob2Qgd2FzIGNhbGxlZCBhZ2FpbiBiZWZvcmUgaXRcbiAgICAgICAgICAgICAgICAgICAgLy8gY291bGQgZmluaXNoLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCB2aWV3IG9mIHRoaXMuZ2V0R3JvdXAoKS52aWV3cykge1xuICAgICAgICAgICAgY29uc3QgdiA9IHRoaXMuZ2V0Vmlldyh2aWV3KTtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGVzLnB1c2goe1xuICAgICAgICAgICAgICAgIHZpZXc6IHYsXG4gICAgICAgICAgICAgICAgaHRtbDogdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGhpcy5wcmVwYXJlSFRNTCh2Lmh0bWwpKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIHdhaXQgZm9yIGFuZ3VsYXIgdG8gaW5mbGF0ZSB0aGUgbmV3IGJpbmRpbmdcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHdpZGdldCBvZiAodGhpcy5tZHNFZGl0b3JJbnN0YW5jZVNlcnZpY2U/LndpZGdldHMudmFsdWUubWFwKCh3OiBhbnkpID0+IHcuZGVmaW5pdGlvbikgfHwgdGhpcy5tZHMud2lkZ2V0cykgYXMgTWRzV2lkZ2V0W10pIHtcbiAgICAgICAgICAgICAgICAvLyBAVE9ETzogaXQgd291bGQgYmUgYmV0dGVyIHRvIGZpbHRlciBieSB3aWRnZXRzIGJhc2VkIG9uIHRlbXBsYXRlIGFuZCBjb25kaXRpb24sIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiA1LjFcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci50b0FycmF5KCkuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZWxlbWVudDogSFRNTEVsZW1lbnQgPSBjLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXQuaWQsXG4gICAgICAgICAgICAgICAgICAgICk/LlswXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1kc0VkaXRvclZpZXdDb21wb25lbnQudXBkYXRlV2lkZ2V0V2l0aEhUTUxBdHRyaWJ1dGVzKGVsZW1lbnQsIHcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCA9IHJlcGxhY2VFbGVtZW50V2l0aERpdihlbGVtZW50KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgVUlTZXJ2aWNlLmluamVjdEFuZ3VsYXJDb21wb25lbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mYWN0b3J5UmVzb2x2ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXJSZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWRzV2lkZ2V0Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluamVjdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjbG9zZSBhbGwgY3VzdG9tIHRhZ3MgaW5zaWRlIHRoZSBodG1sIHdoaWNoIGFyZSBub3QgY2xvc2VkXG4gICAgICogZS5nLiA8Y206bmFtZT5cbiAgICAgKiAgICAgLT4gPGNtOm5hbWU+PC9jbTpuYW1lPlxuICAgICAqIEBwYXJhbSBodG1sXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcmVwYXJlSFRNTChodG1sOiBzdHJpbmcpIHtcbiAgICAgICAgZm9yIChjb25zdCB3IG9mIHRoaXMubWRzLndpZGdldHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gaHRtbC5pbmRleE9mKCc8JyArIHcuaWQpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0ID09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlbmQgPSBodG1sLmluZGV4T2YoJz4nLCBzdGFydCkgKyAxO1xuICAgICAgICAgICAgaHRtbCA9IGh0bWwuc3Vic3RyaW5nKDAsIGVuZCkgKyAnPC8nICsgdy5pZCArICc+JyArIGh0bWwuc3Vic3RyaW5nKGVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGh0bWw7XG4gICAgfVxuXG4gICAgYXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBsZXQgaW5mbGF0ZSA9IGZhbHNlO1xuICAgICAgICBpZiAoY2hhbmdlcy5zZXRJZCkge1xuICAgICAgICAgICAgdGhpcy5tZHMgPSBhd2FpdCB0aGlzLm1kc1NlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0TWV0YWRhdGFTZXQoeyBtZXRhZGF0YVNldDogdGhpcy5zZXRJZCB9KVxuICAgICAgICAgICAgICAgIC50b1Byb21pc2UoKTtcbiAgICAgICAgICAgIGluZmxhdGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLmRhdGEpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFbUmVzdENvbnN0YW50cy5DTV9QUk9QX01FVEFEQVRBU0VUX0VEVV9NRVRBREFUQVNFVF0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMubWRzID0gYXdhaXQgdGhpcy5tZHNTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5nZXRNZXRhZGF0YVNldCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YVNldDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFbUmVzdENvbnN0YW50cy5DTV9QUk9QX01FVEFEQVRBU0VUX0VEVV9NRVRBREFUQVNFVF1bMF0sXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC50b1Byb21pc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMubWRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZHMgPSBhd2FpdCB0aGlzLm1kc1NlcnZpY2UuZ2V0TWV0YWRhdGFTZXQoe30pLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5mbGF0ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZmxhdGUpIHtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5pbmZsYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0Zvcj1cImxldCB0IG9mIHRlbXBsYXRlc1wiICNjb250YWluZXIgY2xhc3M9XCJtZHMtdmlld2VyXCI+XG4gIDxkaXYgKm5nSWY9XCJzaG93R3JvdXBIZWFkaW5ncyAmJiB0LnZpZXcuY2FwdGlvblwiIGNsYXNzPVwiY2FyZC10aXRsZS1lbGVtZW50IGdyb3VwLWhlYWRpbmdcIj5cbiAgICA8aSBbZXNJY29uXT1cInQudmlldy5pY29uXCIgKm5nSWY9XCJ0LnZpZXcuaWNvblwiPjwvaT48c3Bhbj57eyB0LnZpZXcuY2FwdGlvbiB9fTwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ0ZW1wbGF0ZVwiIFtpbm5lckhUTUxdPVwidC5odG1sXCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -12,12 +12,13 @@ import * as i0 from "@angular/core";
12
12
  import * as i1 from "@ngx-translate/core";
13
13
  import * as i2 from "../../services/ui.service";
14
14
  import * as i3 from "../view-instance.service";
15
- import * as i4 from "@angular/common";
16
- import * as i5 from "@angular/material/core";
17
- import * as i6 from "@angular/router";
18
- import * as i7 from "../../directives/icon.directive";
19
- import * as i8 from "../../pipes/mds-duration.pipe";
20
- import * as i9 from "../../pipes/vcard-name.pipe";
15
+ import * as i4 from "../mds-viewer.service";
16
+ import * as i5 from "@angular/common";
17
+ import * as i6 from "@angular/material/core";
18
+ import * as i7 from "@angular/router";
19
+ import * as i8 from "../../directives/icon.directive";
20
+ import * as i9 from "../../pipes/mds-duration.pipe";
21
+ import * as i10 from "../../pipes/vcard-name.pipe";
21
22
  export var MdsType;
22
23
  (function (MdsType) {
23
24
  MdsType["Io"] = "io";
@@ -86,10 +87,11 @@ export class MdsWidgetComponent {
86
87
  }
87
88
  constructor(
88
89
  // public mdsEditorInstance: MdsEditorInstanceService,
89
- translate, ui, viewInstance) {
90
+ translate, ui, viewInstance, mdsViewerService) {
90
91
  this.translate = translate;
91
92
  this.ui = ui;
92
93
  this.viewInstance = viewInstance;
94
+ this.mdsViewerService = mdsViewerService;
93
95
  this.ROUTER_PREFIX = UIConstants.ROUTER_PREFIX;
94
96
  this.valueType = ValueType.String;
95
97
  this.showCaption = true;
@@ -152,19 +154,27 @@ export class MdsWidgetComponent {
152
154
  supportsInlineEditing() {
153
155
  return MdsWidgetComponent.inlineEditing.includes(this.widget?.definition.type);
154
156
  }
157
+ getNodeValues() {
158
+ if (this.mdsEditorInstance) {
159
+ return this.mdsEditorInstance?.values$.value;
160
+ }
161
+ else {
162
+ return this.mdsViewerService.values$.value;
163
+ }
164
+ }
155
165
  getNodeValue() {
156
166
  if (this.temporaryValue !== undefined) {
157
167
  return this.getValue(this.temporaryValue);
158
168
  }
159
169
  const id = this.getDefinition().id;
170
+ const values = this.getNodeValues();
160
171
  if (this.getDefinition().type === 'range') {
161
- const values = this.mdsEditorInstance?.values$.value;
162
172
  if (values) {
163
173
  return [values[id + '_from']?.[0], values[id + '_to']?.[0]];
164
174
  }
165
175
  return null;
166
176
  }
167
- else if (this.mdsEditorInstance?.values$.value?.[id]) {
177
+ else if (values?.[id]) {
168
178
  // support on the fly changes+updates of the values
169
179
  return this.getValue(this.mdsEditorInstance.values$.value[id]);
170
180
  }
@@ -323,13 +333,13 @@ export class MdsWidgetComponent {
323
333
  event.stopPropagation();
324
334
  void this.view.injectEditField(this, this.editWrapper.nativeElement.children[0]);
325
335
  }
326
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MdsWidgetComponent, deps: [{ token: i1.TranslateService }, { token: i2.UIService }, { token: i3.ViewInstanceService }], target: i0.ɵɵFactoryTarget.Component }); }
327
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: MdsWidgetComponent, selector: "es-mds-widget", inputs: { widget: "widget", showCaption: "showCaption", inlineEditing: "inlineEditing", definition: "definition", view: "view" }, viewQueries: [{ propertyName: "editWrapper", first: true, predicate: ["editWrapper"], descendants: true }, { propertyName: "matRipple", first: true, predicate: MatRipple, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<es-mds-editor-widget-container\n *ngIf=\"!editWrapper.innerText.trim()\"\n [injectedView]=\"this\"\n [widget]=\"widget\"\n [label]=\"false\"\n [wrapInFormField]=\"false\"\n [wrapInGroup]=\"false\"\n [valueType]=\"valueType\"\n matRipple\n [matRippleDisabled]=\"true\"\n>\n <div class=\"edit-wrapper\">\n <div\n *ngIf=\"!isEmpty() || !widget.definition.hideIfEmpty || isEditable()\"\n class=\"widget-wrapper\"\n >\n <div\n class=\"widget-label\"\n [attr.role]=\"headingLevel ? 'heading' : null\"\n [attr.aria-level]=\"headingLevel\"\n *ngIf=\"widget.definition.caption && showCaption\"\n >\n {{ widget.definition.caption\n }}<span *ngIf=\"!headingLevel\" class=\"cdk-visually-hidden\">: </span>\n </div>\n <div\n class=\"value-wrapper\"\n [class.value-wrapper-edit]=\"isEditable()\"\n (click)=\"isEditable() ? startEdit($event) : null\"\n >\n <div *ngIf=\"isEmpty()\" class=\"widget-data widget-no-data widget-type-{{ basicType }}\">\n -\n </div>\n <div\n *ngIf=\"!isEmpty()\"\n class=\"widget-data widget-type-{{ basicType }} {{\n widget.definition.link ? 'widget-link' : ''\n }}\"\n (click)=\"click()\"\n >\n <div *ngIf=\"basicType === 'text'\">{{ formatText() }}</div>\n <div *ngIf=\"basicType === 'number'\">{{ formatNumber() }}</div>\n <div *ngIf=\"basicType === 'date'\">{{ formatDate() }}</div>\n <div *ngIf=\"basicType === 'array'\">\n <div class=\"array-entry\" *ngFor=\"let v of value\">{{ v }}</div>\n </div>\n <div *ngIf=\"basicType === 'tree'\">\n <div class=\"tree-entry\" *ngFor=\"let v of rawValue\">\n <ng-container *ngTemplateOutlet=\"treeEntry; context: { path: v.path }\"></ng-container>\n </div>\n </div>\n <div *ngIf=\"basicType === 'vcard'\">\n <div class=\"array-entry\" *ngFor=\"let v of value\">{{ v | vcardName }}</div>\n </div>\n <div *ngIf=\"basicType === 'slider'\">\n <span class=\"slider-value\">{{ value }}</span\n ><span> / </span><span class=\"slider-max\">{{ widget.definition.max }}</span>\n </div>\n <div *ngIf=\"basicType === 'duration'\">\n <span class=\"duration-value\">{{ value[0] | appMdsDuration }}</span>\n </div>\n <div *ngIf=\"basicType === 'range'\">\n <span class=\"slider-value\">{{ value[0] }}</span\n >-<span class=\"slider-value\">{{ value[1] }}</span>\n </div>\n <div *ngIf=\"basicType === 'unknown'\">\n The widget type {{ widget.definition.type }} is currently not supported via angular\n rendering\n </div>\n </div>\n </div>\n </div>\n <!--<button mat-icon-button\n *ngIf=\"mdsEditorInstance.editorMode === 'inline' && widget.definition.interactionType === 'Input'\"\n (click)=\"view.injectEditField(this, edit)\"\n class=\"btn-edit\">\n <i esIcon=\"edit\"></i>\n </button>-->\n </div>\n</es-mds-editor-widget-container>\n<div class=\"edit-wrapper\">\n <div #editWrapper><div #edit></div></div>\n <!--<button *ngIf=\"!!editWrapper.innerText.trim()\" mat-icon-button><i esIcon=\"save\"></i></button>-->\n</div>\n<ng-template #treeEntry let-path=\"path\">\n <ng-container *ngFor=\"let t of path; let first = first\">\n <ng-container *ngIf=\"!first\">\n <span class=\"cdk-visually-hidden\">{{ 'SUB_CATEGORY_ARIA' | translate }}</span>\n <i esIcon=\"keyboard_arrow_right\" [aria]=\"false\"></i>\n </ng-container>\n <a\n [routerLink]=\"'/' + ROUTER_PREFIX + 'search'\"\n [queryParams]=\"getSearchParams(t)\"\n *ngIf=\"widget.definition.isSearchable\"\n >{{ t.caption }}</a\n >\n <span *ngIf=\"!widget.definition.isSearchable\">{{ t.caption }}</span>\n </ng-container>\n</ng-template>\n", styles: [".widget-label{font-size:90%;opacity:.8}.edit-wrapper{display:flex;align-items:center;transition:var(--transitionNormal) all}.edit-wrapper>div:first-child{flex-grow:1}.edit-wrapper>button{margin-left:10px}.edit-wrapper .widget-wrapper{padding:2px 5px}.edit-wrapper .value-wrapper-edit:hover{outline:1px solid #ccc;cursor:text}.widget-data{padding:4px 0 10px;word-break:break-word}.widget-data.widget-type-slider{opacity:.8}.widget-data.widget-type-slider .slider-value{opacity:.9;font-weight:700}.widget-data.widget-type-array .array-entry,.widget-data.widget-type-vcard .array-entry{display:inline}.widget-data.widget-type-array .array-entry:not(:last-child):after,.widget-data.widget-type-vcard .array-entry:not(:last-child):after{content:\", \";padding-right:.3em;display:inline;align-items:flex-end}.widget-data.widget-type-tree>div{display:flex;flex-wrap:wrap;gap:10px}.widget-data.widget-type-tree .tree-entry{display:inline-block;border-radius:5px;padding:5px 10px;background-color:#f9f9f9}.widget-data.widget-type-tree .tree-entry>a{color:var(--palette-primary-800);text-decoration:none}.widget-data.widget-type-tree .tree-entry>*{vertical-align:middle}.widget-data.widget-type-tree .tree-entry>i{font-size:18px}.widget-data.widget-link{text-decoration:underline;cursor:pointer}.widget-type-text>div{white-space:pre-line}:host ::ng-deep .edit-wrapper .widget-container mat-form-field{margin-top:.5em}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i7.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: i8.MdsDurationPipe, name: "appMdsDuration" }, { kind: "pipe", type: i9.VCardNamePipe, name: "vcardName" }] }); }
336
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MdsWidgetComponent, deps: [{ token: i1.TranslateService }, { token: i2.UIService }, { token: i3.ViewInstanceService }, { token: i4.MdsViewerService }], target: i0.ɵɵFactoryTarget.Component }); }
337
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: MdsWidgetComponent, selector: "es-mds-widget", inputs: { widget: "widget", showCaption: "showCaption", inlineEditing: "inlineEditing", definition: "definition", view: "view" }, viewQueries: [{ propertyName: "editWrapper", first: true, predicate: ["editWrapper"], descendants: true }, { propertyName: "matRipple", first: true, predicate: MatRipple, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<es-mds-editor-widget-container\n *ngIf=\"!editWrapper.innerText.trim()\"\n [injectedView]=\"this\"\n [widget]=\"widget\"\n [label]=\"false\"\n [wrapInFormField]=\"false\"\n [wrapInGroup]=\"false\"\n [valueType]=\"valueType\"\n matRipple\n [matRippleDisabled]=\"true\"\n>\n <div class=\"edit-wrapper\">\n <div\n *ngIf=\"!isEmpty() || !widget.definition.hideIfEmpty || isEditable()\"\n class=\"widget-wrapper\"\n >\n <div\n class=\"widget-label\"\n [attr.role]=\"headingLevel ? 'heading' : null\"\n [attr.aria-level]=\"headingLevel\"\n *ngIf=\"widget.definition.caption && showCaption\"\n >\n {{ widget.definition.caption\n }}<span *ngIf=\"!headingLevel\" class=\"cdk-visually-hidden\">: </span>\n </div>\n <div\n class=\"value-wrapper\"\n [class.value-wrapper-edit]=\"isEditable()\"\n (click)=\"isEditable() ? startEdit($event) : null\"\n >\n <div *ngIf=\"isEmpty()\" class=\"widget-data widget-no-data widget-type-{{ basicType }}\">\n -\n </div>\n <div\n *ngIf=\"!isEmpty()\"\n class=\"widget-data widget-type-{{ basicType }} {{\n widget.definition.link ? 'widget-link' : ''\n }}\"\n (click)=\"click()\"\n >\n <div *ngIf=\"basicType === 'text'\">{{ formatText() }}</div>\n <div *ngIf=\"basicType === 'number'\">{{ formatNumber() }}</div>\n <div *ngIf=\"basicType === 'date'\">{{ formatDate() }}</div>\n <div *ngIf=\"basicType === 'array'\">\n <div class=\"array-entry\" *ngFor=\"let v of value\">{{ v }}</div>\n </div>\n <div *ngIf=\"basicType === 'tree'\">\n <div class=\"tree-entry\" *ngFor=\"let v of rawValue\">\n <ng-container *ngTemplateOutlet=\"treeEntry; context: { path: v.path }\"></ng-container>\n </div>\n </div>\n <div *ngIf=\"basicType === 'vcard'\">\n <div class=\"array-entry\" *ngFor=\"let v of value\">{{ v | vcardName }}</div>\n </div>\n <div *ngIf=\"basicType === 'slider'\">\n <span class=\"slider-value\">{{ value }}</span\n ><span> / </span><span class=\"slider-max\">{{ widget.definition.max }}</span>\n </div>\n <div *ngIf=\"basicType === 'duration'\">\n <span class=\"duration-value\">{{ value[0] | appMdsDuration }}</span>\n </div>\n <div *ngIf=\"basicType === 'range'\">\n <span class=\"slider-value\">{{ value[0] }}</span\n >-<span class=\"slider-value\">{{ value[1] }}</span>\n </div>\n <div *ngIf=\"basicType === 'unknown'\">\n The widget type {{ widget.definition.type }} is currently not supported via angular\n rendering\n </div>\n </div>\n </div>\n </div>\n <!--<button mat-icon-button\n *ngIf=\"mdsEditorInstance.editorMode === 'inline' && widget.definition.interactionType === 'Input'\"\n (click)=\"view.injectEditField(this, edit)\"\n class=\"btn-edit\">\n <i esIcon=\"edit\"></i>\n </button>-->\n </div>\n</es-mds-editor-widget-container>\n<div class=\"edit-wrapper\">\n <div #editWrapper><div #edit></div></div>\n <!--<button *ngIf=\"!!editWrapper.innerText.trim()\" mat-icon-button><i esIcon=\"save\"></i></button>-->\n</div>\n<ng-template #treeEntry let-path=\"path\">\n <ng-container *ngFor=\"let t of path; let first = first\">\n <ng-container *ngIf=\"!first\">\n <span class=\"cdk-visually-hidden\">{{ 'SUB_CATEGORY_ARIA' | translate }}</span>\n <i esIcon=\"keyboard_arrow_right\" [aria]=\"false\"></i>\n </ng-container>\n <a\n [routerLink]=\"'/' + ROUTER_PREFIX + 'search'\"\n [queryParams]=\"getSearchParams(t)\"\n *ngIf=\"widget.definition.isSearchable\"\n >{{ t.caption }}</a\n >\n <span *ngIf=\"!widget.definition.isSearchable\">{{ t.caption }}</span>\n </ng-container>\n</ng-template>\n", styles: [".widget-label{font-size:90%;opacity:.8}.edit-wrapper{display:flex;align-items:center;transition:var(--transitionNormal) all}.edit-wrapper>div:first-child{flex-grow:1}.edit-wrapper>button{margin-left:10px}.edit-wrapper .widget-wrapper{padding:2px 5px}.edit-wrapper .value-wrapper-edit:hover{outline:1px solid #ccc;cursor:text}.widget-data{padding:4px 0 10px;word-break:break-word}.widget-data.widget-type-slider{opacity:.8}.widget-data.widget-type-slider .slider-value{opacity:.9;font-weight:700}.widget-data.widget-type-array .array-entry,.widget-data.widget-type-vcard .array-entry{display:inline}.widget-data.widget-type-array .array-entry:not(:last-child):after,.widget-data.widget-type-vcard .array-entry:not(:last-child):after{content:\", \";padding-right:.3em;display:inline;align-items:flex-end}.widget-data.widget-type-tree>div{display:flex;flex-wrap:wrap;gap:10px}.widget-data.widget-type-tree .tree-entry{display:inline-block;border-radius:5px;padding:5px 10px;background-color:#f9f9f9}.widget-data.widget-type-tree .tree-entry>a{color:var(--palette-primary-800);text-decoration:none}.widget-data.widget-type-tree .tree-entry>*{vertical-align:middle}.widget-data.widget-type-tree .tree-entry>i{font-size:18px}.widget-data.widget-link{text-decoration:underline;cursor:pointer}.widget-type-text>div{white-space:pre-line}:host ::ng-deep .edit-wrapper .widget-container mat-form-field{margin-top:.5em}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i8.IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: i9.MdsDurationPipe, name: "appMdsDuration" }, { kind: "pipe", type: i10.VCardNamePipe, name: "vcardName" }] }); }
328
338
  }
329
339
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: MdsWidgetComponent, decorators: [{
330
340
  type: Component,
331
341
  args: [{ selector: 'es-mds-widget', template: "<es-mds-editor-widget-container\n *ngIf=\"!editWrapper.innerText.trim()\"\n [injectedView]=\"this\"\n [widget]=\"widget\"\n [label]=\"false\"\n [wrapInFormField]=\"false\"\n [wrapInGroup]=\"false\"\n [valueType]=\"valueType\"\n matRipple\n [matRippleDisabled]=\"true\"\n>\n <div class=\"edit-wrapper\">\n <div\n *ngIf=\"!isEmpty() || !widget.definition.hideIfEmpty || isEditable()\"\n class=\"widget-wrapper\"\n >\n <div\n class=\"widget-label\"\n [attr.role]=\"headingLevel ? 'heading' : null\"\n [attr.aria-level]=\"headingLevel\"\n *ngIf=\"widget.definition.caption && showCaption\"\n >\n {{ widget.definition.caption\n }}<span *ngIf=\"!headingLevel\" class=\"cdk-visually-hidden\">: </span>\n </div>\n <div\n class=\"value-wrapper\"\n [class.value-wrapper-edit]=\"isEditable()\"\n (click)=\"isEditable() ? startEdit($event) : null\"\n >\n <div *ngIf=\"isEmpty()\" class=\"widget-data widget-no-data widget-type-{{ basicType }}\">\n -\n </div>\n <div\n *ngIf=\"!isEmpty()\"\n class=\"widget-data widget-type-{{ basicType }} {{\n widget.definition.link ? 'widget-link' : ''\n }}\"\n (click)=\"click()\"\n >\n <div *ngIf=\"basicType === 'text'\">{{ formatText() }}</div>\n <div *ngIf=\"basicType === 'number'\">{{ formatNumber() }}</div>\n <div *ngIf=\"basicType === 'date'\">{{ formatDate() }}</div>\n <div *ngIf=\"basicType === 'array'\">\n <div class=\"array-entry\" *ngFor=\"let v of value\">{{ v }}</div>\n </div>\n <div *ngIf=\"basicType === 'tree'\">\n <div class=\"tree-entry\" *ngFor=\"let v of rawValue\">\n <ng-container *ngTemplateOutlet=\"treeEntry; context: { path: v.path }\"></ng-container>\n </div>\n </div>\n <div *ngIf=\"basicType === 'vcard'\">\n <div class=\"array-entry\" *ngFor=\"let v of value\">{{ v | vcardName }}</div>\n </div>\n <div *ngIf=\"basicType === 'slider'\">\n <span class=\"slider-value\">{{ value }}</span\n ><span> / </span><span class=\"slider-max\">{{ widget.definition.max }}</span>\n </div>\n <div *ngIf=\"basicType === 'duration'\">\n <span class=\"duration-value\">{{ value[0] | appMdsDuration }}</span>\n </div>\n <div *ngIf=\"basicType === 'range'\">\n <span class=\"slider-value\">{{ value[0] }}</span\n >-<span class=\"slider-value\">{{ value[1] }}</span>\n </div>\n <div *ngIf=\"basicType === 'unknown'\">\n The widget type {{ widget.definition.type }} is currently not supported via angular\n rendering\n </div>\n </div>\n </div>\n </div>\n <!--<button mat-icon-button\n *ngIf=\"mdsEditorInstance.editorMode === 'inline' && widget.definition.interactionType === 'Input'\"\n (click)=\"view.injectEditField(this, edit)\"\n class=\"btn-edit\">\n <i esIcon=\"edit\"></i>\n </button>-->\n </div>\n</es-mds-editor-widget-container>\n<div class=\"edit-wrapper\">\n <div #editWrapper><div #edit></div></div>\n <!--<button *ngIf=\"!!editWrapper.innerText.trim()\" mat-icon-button><i esIcon=\"save\"></i></button>-->\n</div>\n<ng-template #treeEntry let-path=\"path\">\n <ng-container *ngFor=\"let t of path; let first = first\">\n <ng-container *ngIf=\"!first\">\n <span class=\"cdk-visually-hidden\">{{ 'SUB_CATEGORY_ARIA' | translate }}</span>\n <i esIcon=\"keyboard_arrow_right\" [aria]=\"false\"></i>\n </ng-container>\n <a\n [routerLink]=\"'/' + ROUTER_PREFIX + 'search'\"\n [queryParams]=\"getSearchParams(t)\"\n *ngIf=\"widget.definition.isSearchable\"\n >{{ t.caption }}</a\n >\n <span *ngIf=\"!widget.definition.isSearchable\">{{ t.caption }}</span>\n </ng-container>\n</ng-template>\n", styles: [".widget-label{font-size:90%;opacity:.8}.edit-wrapper{display:flex;align-items:center;transition:var(--transitionNormal) all}.edit-wrapper>div:first-child{flex-grow:1}.edit-wrapper>button{margin-left:10px}.edit-wrapper .widget-wrapper{padding:2px 5px}.edit-wrapper .value-wrapper-edit:hover{outline:1px solid #ccc;cursor:text}.widget-data{padding:4px 0 10px;word-break:break-word}.widget-data.widget-type-slider{opacity:.8}.widget-data.widget-type-slider .slider-value{opacity:.9;font-weight:700}.widget-data.widget-type-array .array-entry,.widget-data.widget-type-vcard .array-entry{display:inline}.widget-data.widget-type-array .array-entry:not(:last-child):after,.widget-data.widget-type-vcard .array-entry:not(:last-child):after{content:\", \";padding-right:.3em;display:inline;align-items:flex-end}.widget-data.widget-type-tree>div{display:flex;flex-wrap:wrap;gap:10px}.widget-data.widget-type-tree .tree-entry{display:inline-block;border-radius:5px;padding:5px 10px;background-color:#f9f9f9}.widget-data.widget-type-tree .tree-entry>a{color:var(--palette-primary-800);text-decoration:none}.widget-data.widget-type-tree .tree-entry>*{vertical-align:middle}.widget-data.widget-type-tree .tree-entry>i{font-size:18px}.widget-data.widget-link{text-decoration:underline;cursor:pointer}.widget-type-text>div{white-space:pre-line}:host ::ng-deep .edit-wrapper .widget-container mat-form-field{margin-top:.5em}\n"] }]
332
- }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.UIService }, { type: i3.ViewInstanceService }], propDecorators: { widget: [{
342
+ }], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.UIService }, { type: i3.ViewInstanceService }, { type: i4.MdsViewerService }], propDecorators: { widget: [{
333
343
  type: Input
334
344
  }], showCaption: [{
335
345
  type: Input
@@ -346,4 +356,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
346
356
  type: ViewChild,
347
357
  args: [MatRipple]
348
358
  }] } });
349
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRzLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL21kcy12aWV3ZXIvd2lkZ2V0L21kcy13aWRnZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9tZHMtdmlld2VyL3dpZGdldC9tZHMtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssRUFJTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBNkIsYUFBYSxFQUFjLE1BQU0scUJBQXFCLENBQUM7QUFDM0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUduRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7O0FBRTFCLE1BQU0sQ0FBTixJQUFZLE9BVVg7QUFWRCxXQUFZLE9BQU87SUFDZixvQkFBUyxDQUFBO0lBQ1QsNkJBQWtCLENBQUE7SUFDbEIsc0JBQVcsQ0FBQTtJQUNYLDZCQUFrQixDQUFBO0lBQ2xCLDJDQUFnQyxDQUFBO0lBQ2hDLG9DQUF5QixDQUFBO0lBQ3pCLDZDQUFrQyxDQUFBO0lBQ2xDLHlDQUE4QixDQUFBO0lBQzlCLHVDQUE0QixDQUFBO0FBQ2hDLENBQUMsRUFWVyxPQUFPLEtBQVAsT0FBTyxRQVVsQjtBQU1ELE1BQU0sQ0FBTixJQUFZLGFBNEJYO0FBNUJELFdBQVksYUFBYTtJQUNyQiw4QkFBYSxDQUFBO0lBQ2Isa0NBQWlCLENBQUE7SUFDakIsZ0NBQWUsQ0FBQTtJQUNmLDhCQUFhLENBQUE7SUFDYixnQ0FBZSxDQUFBO0lBQ2YsZ0NBQWUsQ0FBQTtJQUNmLHNDQUFxQixDQUFBO0lBQ3JCLG9DQUFtQixDQUFBO0lBQ25CLGdDQUFlLENBQUE7SUFDZixzQ0FBcUIsQ0FBQTtJQUNyQixvREFBbUMsQ0FBQTtJQUNuQyxnREFBK0IsQ0FBQTtJQUMvQiwwREFBeUMsQ0FBQTtJQUN6QyxzREFBcUMsQ0FBQTtJQUNyQyxzREFBcUMsQ0FBQTtJQUNyQyxnRUFBK0MsQ0FBQTtJQUMvQyxvRUFBbUQsQ0FBQTtJQUNuRCx3RUFBdUQsQ0FBQTtJQUN2RCw4Q0FBNkIsQ0FBQTtJQUM3QixrQ0FBaUIsQ0FBQTtJQUNqQixnQ0FBZSxDQUFBO0lBQ2Ysc0NBQXFCLENBQUE7SUFDckIsb0RBQW1DLENBQUE7SUFDbkMsc0VBQXFELENBQUE7SUFDckQsa0RBQWlDLENBQUE7SUFDakMsOENBQTZCLENBQUE7SUFDN0Isd0NBQXVCLENBQUE7QUFDM0IsQ0FBQyxFQTVCVyxhQUFhLEtBQWIsYUFBYSxRQTRCeEI7QUFFRCxNQUFNLENBQU4sSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ2pCLDZDQUFNLENBQUE7SUFDTixxREFBVSxDQUFBO0lBQ1YsMkNBQUssQ0FBQTtBQUNULENBQUMsRUFKVyxTQUFTLEtBQVQsU0FBUyxRQUlwQjtBQVFELE1BQU0sT0FBTyxrQkFBa0I7YUFFSCxrQkFBYSxHQUFvQjtRQUNyRCxhQUFhLENBQUMsSUFBSTtRQUNsQixhQUFhLENBQUMsTUFBTTtRQUNwQixhQUFhLENBQUMsSUFBSTtRQUNsQixhQUFhLENBQUMsS0FBSztRQUNuQixhQUFhLENBQUMsUUFBUTtRQUN0QixhQUFhLENBQUMsWUFBWTtRQUMxQixhQUFhLENBQUMsZUFBZTtRQUM3QixhQUFhLENBQUMsd0JBQXdCO1FBQ3RDLGFBQWEsQ0FBQyxnQkFBZ0I7UUFDOUIsYUFBYSxDQUFDLHFCQUFxQjtRQUNuQyxhQUFhLENBQUMsdUJBQXVCO1FBQ3JDLGFBQWEsQ0FBQyxjQUFjO0tBQy9CLEFBYm9DLENBYW5DO0lBc0JGLElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7SUFDMUMsQ0FBQztJQUtEO0lBQ0ksc0RBQXNEO0lBQy9DLFNBQTJCLEVBQzFCLEVBQWEsRUFDYixZQUFpQztRQUZsQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMxQixPQUFFLEdBQUYsRUFBRSxDQUFXO1FBQ2IsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBL0NwQyxrQkFBYSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFnQjFDLGNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBSTdCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQzVCOztXQUVHO1FBQ00sa0JBQWEsR0FBc0IsTUFBTSxDQUFDO1FBZ0JuRCxVQUFLLEdBQWEsU0FBUyxDQUFDO1FBQ3BCLG1CQUFjLEdBQWEsU0FBUyxDQUFDO1FBUXpDLGlDQUFpQztJQUNyQyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUTtRQUNWLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNO2FBQ04sdUJBQXVCLEVBQUU7YUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3RDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBbUIsRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUNQLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVELGFBQWE7UUFDVCxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDdEQsQ0FBQztJQUVELFlBQVk7UUFDUixRQUFRLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxLQUFLLE1BQU0sQ0FBQztZQUNaLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxPQUFPLENBQUM7WUFDYixLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssY0FBYztnQkFDZixPQUFPLE1BQU0sQ0FBQztZQUNsQixLQUFLLFFBQVE7Z0JBQ1QsT0FBTyxRQUFRLENBQUM7WUFDcEIsS0FBSyxNQUFNO2dCQUNQLE9BQU8sTUFBTSxDQUFDO1lBQ2xCLEtBQUssT0FBTztnQkFDUixPQUFPLE9BQU8sQ0FBQztZQUNuQixLQUFLLHVCQUF1QixDQUFDO1lBQzdCLEtBQUsseUJBQXlCLENBQUM7WUFDL0IsS0FBSywwQkFBMEIsQ0FBQztZQUNoQyxLQUFLLGtCQUFrQixDQUFDO1lBQ3hCLEtBQUssaUJBQWlCLENBQUM7WUFDdkIsS0FBSyxnQkFBZ0I7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUN2RSxLQUFLLFFBQVE7Z0JBQ1QsT0FBTyxRQUFRLENBQUM7WUFDcEIsS0FBSyxVQUFVO2dCQUNYLE9BQU8sVUFBVSxDQUFDO1lBQ3RCLEtBQUssT0FBTztnQkFDUixPQUFPLE9BQU8sQ0FBQztRQUN2QixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVELHFCQUFxQjtRQUNqQixPQUFPLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQzVDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLElBQXFCLENBQ2hELENBQUM7SUFDTixDQUFDO0lBRU8sWUFBWTtRQUNoQixJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDckQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDVCxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hFLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDckQsbURBQW1EO1lBQ25ELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25FLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBYztRQUNuQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbkMsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU07aUJBQ3hDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2lCQUM3RCxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNoQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNWLE9BQU8sT0FBTyxDQUFDO1lBQ25CLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQy9DLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNuRixDQUFDO0lBRUQsVUFBVTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN4QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDO29CQUNELE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3hFLENBQUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztvQkFDL0QsT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFO3dCQUM1QyxjQUFjLEVBQUUsSUFBSTtxQkFDdkIsQ0FBQyxDQUFDO2dCQUNQLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFO29CQUM1QyxjQUFjLEVBQUUsSUFBSTtpQkFDdkIsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFlBQVk7UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQzVDLE9BQU8sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRCxDQUFDO1lBQ0QsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3hCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEUsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsZ0NBQWdDO0lBQ2hDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBYSxFQUFFLEtBQUssR0FBRyxLQUFLO1FBQ3pDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDNUQsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzFCLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEMsT0FBTyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDbEQsT0FBTyxDQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEtBQUssUUFBUTtZQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEtBQUssT0FBTztZQUNsRCxLQUFLLEVBQUUsTUFBTSxLQUFLLENBQUM7WUFDbkIsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsWUFBWSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUMvQixDQUFDO0lBQ04sQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1AsNkJBQTZCO1FBQzdCLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLG1HQUFtRztRQUNuRywrREFBK0Q7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ssT0FBTyxDQUFDLENBQVM7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMvQixPQUFPO2dCQUNIO29CQUNJLEVBQUUsRUFBRSxDQUFDO29CQUNMLE9BQU8sRUFBRSxDQUFDO2lCQUNiO2FBQ0osQ0FBQztRQUNOLENBQUM7UUFDRCxNQUFNLElBQUksR0FBZSxFQUFFLENBQUM7UUFDNUIsSUFBSSxPQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQztZQUN6RSxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xCLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQzVCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixNQUFNO1lBQ1YsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssV0FBVztRQUNmLE9BQU8sQ0FDSCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FDL0IsS0FBSyxFQUFFLEVBQ1AsR0FBRyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FDYixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFjLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDcEUsT0FBTztnQkFDSCxFQUFFO2dCQUNGLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQzthQUN6QixDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQ0wsQ0FDSixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FDaEIsQ0FBQztJQUNOLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBYTtRQUN6QixNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFDdkIsTUFBTSxHQUFHLEdBQWdDLEVBQUUsQ0FBQztRQUM1QyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWlCO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDOytHQXhTUSxrQkFBa0I7bUdBQWxCLGtCQUFrQiwrVEErQmhCLFNBQVMscUVDL0d4QixrOEhBbUdBOzs0RkRuQmEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNJLGVBQWU7K0lBeUJoQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFJRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVvQixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0YsU0FBUztzQkFBOUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdFJpcHBsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWRzVmFsdWUsIE1kc1dpZGdldCwgTm9kZSwgUmVzdENvbnN0YW50cywgU3VnZ2VzdGlvbiB9IGZyb20gJ25neC1lZHUtc2hhcmluZy1hcGknO1xuaW1wb3J0IHsgVUlDb25zdGFudHMgfSBmcm9tICcuLi8uLi91dGlsL3VpLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBEYXRlSGVscGVyIH0gZnJvbSAnLi4vLi4vdXRpbC9EYXRlSGVscGVyJztcbmltcG9ydCB7IFVJU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VpLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmlld0luc3RhbmNlU2VydmljZSB9IGZyb20gJy4uL3ZpZXctaW5zdGFuY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBSZXN0SGVscGVyIH0gZnJvbSAnLi4vLi4vdXRpbC9yZXN0LWhlbHBlcic7XG5pbXBvcnQgeyBGb3JtYXRTaXplUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2ZpbGUtc2l6ZS5waXBlJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBlbnVtIE1kc1R5cGUge1xuICAgIElvID0gJ2lvJyxcbiAgICBJb0J1bGsgPSAnaW9fYnVsaycsXG4gICAgTWFwID0gJ21hcCcsXG4gICAgTWFwUmVmID0gJ21hcF9yZWYnLFxuICAgIElvQ2hpbGRPYmplY3QgPSAnaW9fY2hpbGRvYmplY3QnLFxuICAgIENvbGxlY3Rpb24gPSAnY29sbGVjdGlvbicsXG4gICAgVG9vbERlZmluaXRpb24gPSAndG9vbF9kZWZpbml0aW9uJyxcbiAgICBUb29sSW5zdGFuY2UgPSAndG9vbF9pbnN0YW5jZScsXG4gICAgU2F2ZWRTZWFyY2ggPSAnc2F2ZWRfc2VhcmNoJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZHNWYWx1ZUxpc3Qge1xuICAgIHZhbHVlczogU3VnZ2VzdGlvbltdO1xufVxuXG5leHBvcnQgZW51bSBNZHNXaWRnZXRUeXBlIHtcbiAgICBUZXh0ID0gJ3RleHQnLFxuICAgIE51bWJlciA9ICdudW1iZXInLFxuICAgIEVtYWlsID0gJ2VtYWlsJyxcbiAgICBEYXRlID0gJ2RhdGUnLFxuICAgIE1vbnRoID0gJ21vbnRoJyxcbiAgICBDb2xvciA9ICdjb2xvcicsXG4gICAgVGV4dGFyZWEgPSAndGV4dGFyZWEnLFxuICAgIFRpbnlNQ0UgPSAndGlueU1DRScsXG4gICAgVkNhcmQgPSAndmNhcmQnLFxuICAgIENoZWNrYm94ID0gJ2NoZWNrYm94JyxcbiAgICBSYWRpb0hvcml6b250YWwgPSAncmFkaW9Ib3Jpem9udGFsJyxcbiAgICBSYWRpb1ZlcnRpY2FsID0gJ3JhZGlvVmVydGljYWwnLFxuICAgIENoZWNrYm94SG9yaXpvbnRhbCA9ICdjaGVja2JveEhvcml6b250YWwnLFxuICAgIENoZWNrYm94VmVydGljYWwgPSAnY2hlY2tib3hWZXJ0aWNhbCcsXG4gICAgTXVsdGlWYWx1ZUJhZGdlcyA9ICdtdWx0aXZhbHVlQmFkZ2VzJyxcbiAgICBNdWx0aVZhbHVlRml4ZWRCYWRnZXMgPSAnbXVsdGl2YWx1ZUZpeGVkQmFkZ2VzJyxcbiAgICBNdWx0aVZhbHVlU3VnZ2VzdEJhZGdlcyA9ICdtdWx0aXZhbHVlU3VnZ2VzdEJhZGdlcycsXG4gICAgTXVsdGlWYWx1ZUF1dGhvcml0eUJhZGdlcyA9ICdtdWx0aXZhbHVlQXV0aG9yaXR5QmFkZ2VzJyxcbiAgICBTaW5nbGVvcHRpb24gPSAnc2luZ2xlb3B0aW9uJyxcbiAgICBTbGlkZXIgPSAnc2xpZGVyJyxcbiAgICBSYW5nZSA9ICdyYW5nZScsXG4gICAgRHVyYXRpb24gPSAnZHVyYXRpb24nLFxuICAgIFNpbmdsZVZhbHVlVHJlZSA9ICdzaW5nbGV2YWx1ZVRyZWUnLFxuICAgIFNpbmdsZVZhbHVlU3VnZ2VzdEJhZGdlcyA9ICdzaW5nbGV2YWx1ZVN1Z2dlc3RCYWRnZXMnLFxuICAgIE11bHRpVmFsdWVUcmVlID0gJ211bHRpdmFsdWVUcmVlJyxcbiAgICBEZWZhdWx0VmFsdWUgPSAnZGVmYXVsdHZhbHVlJyxcbiAgICBGYWNldExpc3QgPSAnZmFjZXRMaXN0Jyxcbn1cblxuZXhwb3J0IGVudW0gVmFsdWVUeXBlIHtcbiAgICBTdHJpbmcsXG4gICAgTXVsdGlWYWx1ZSxcbiAgICBSYW5nZSxcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlcy1tZHMtd2lkZ2V0JyxcbiAgICB0ZW1wbGF0ZVVybDogJ21kcy13aWRnZXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydtZHMtd2lkZ2V0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgLy8gcmVxdWlyZWQgZm9yIGV4dGVybmFsIGVkaXRvciBpbmplY3Rpb25cbn0pXG5leHBvcnQgY2xhc3MgTWRzV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIHJlYWRvbmx5IFJPVVRFUl9QUkVGSVggPSBVSUNvbnN0YW50cy5ST1VURVJfUFJFRklYO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGlubGluZUVkaXRpbmc6IE1kc1dpZGdldFR5cGVbXSA9IFtcbiAgICAgICAgTWRzV2lkZ2V0VHlwZS5UZXh0LFxuICAgICAgICBNZHNXaWRnZXRUeXBlLk51bWJlcixcbiAgICAgICAgTWRzV2lkZ2V0VHlwZS5EYXRlLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLkVtYWlsLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLlRleHRhcmVhLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLlNpbmdsZW9wdGlvbixcbiAgICAgICAgTWRzV2lkZ2V0VHlwZS5TaW5nbGVWYWx1ZVRyZWUsXG4gICAgICAgIE1kc1dpZGdldFR5cGUuU2luZ2xlVmFsdWVTdWdnZXN0QmFkZ2VzLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLk11bHRpVmFsdWVCYWRnZXMsXG4gICAgICAgIE1kc1dpZGdldFR5cGUuTXVsdGlWYWx1ZUZpeGVkQmFkZ2VzLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLk11bHRpVmFsdWVTdWdnZXN0QmFkZ2VzLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLk11bHRpVmFsdWVUcmVlLFxuICAgIF07XG5cbiAgICByZWFkb25seSB2YWx1ZVR5cGUgPSBWYWx1ZVR5cGUuU3RyaW5nO1xuXG4gICAgLy8gdXNlIGFueSBpbnN0ZWFkIG9mIGBXaWRnZXRgIGNhdXNlIG9mIGV4dGVybmFsIHR5cGVcbiAgICBASW5wdXQoKSB3aWRnZXQ6IGFueTtcbiAgICBASW5wdXQoKSBzaG93Q2FwdGlvbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogYWxsb3cgaW5saW5lIGVkaXRpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpbmxpbmVFZGl0aW5nOiAnYXV0bycgfCAnYWx3YXlzJyA9ICdhdXRvJztcbiAgICBASW5wdXQoKSBkZWZpbml0aW9uOiBNZHNXaWRnZXQ7XG4gICAgLy8gdXNlIGFueSBpbnN0ZWFkIG9mIE1kc0VkaXRvclZpZXdDb21wb25lbnQgY2F1c2Ugb2YgZXh0ZXJuYWwgdHlwZVxuICAgIEBJbnB1dCgpIHZpZXc6IGFueTtcblxuICAgIEBWaWV3Q2hpbGQoJ2VkaXRXcmFwcGVyJykgZWRpdFdyYXBwZXI6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZChNYXRSaXBwbGUpIG1hdFJpcHBsZTogTWF0UmlwcGxlO1xuICAgIGJhc2ljVHlwZTogc3RyaW5nO1xuICAgIHJhd1ZhbHVlOiB7IHBhdGg6IE1kc1ZhbHVlW107IGlkOiBzdHJpbmcgfVtdO1xuXG4gICAgcHJpdmF0ZSBtZHNFZGl0b3JJbnN0YW5jZTogYW55O1xuXG4gICAgZ2V0IGhlYWRpbmdMZXZlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0luc3RhbmNlLmhlYWRpbmdMZXZlbDtcbiAgICB9XG5cbiAgICB2YWx1ZTogc3RyaW5nW10gPSB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSB0ZW1wb3JhcnlWYWx1ZTogc3RyaW5nW10gPSB1bmRlZmluZWQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgLy8gcHVibGljIG1kc0VkaXRvckluc3RhbmNlOiBNZHNFZGl0b3JJbnN0YW5jZVNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdWk6IFVJU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB2aWV3SW5zdGFuY2U6IFZpZXdJbnN0YW5jZVNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIC8vIHN1cGVyKHRvYXN0LCBudWxsLCB0cmFuc2xhdGUpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0Tm9kZVZhbHVlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmdldE5vZGVWYWx1ZSgpO1xuICAgICAgICB0aGlzLndpZGdldFxuICAgICAgICAgICAgLmdldEluaXRpYWxEaXNwbGF5VmFsdWVzKClcbiAgICAgICAgICAgIC5waXBlKGZpbHRlcigodjogTWRzVmFsdWVMaXN0KSA9PiAhIXYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyAodmFsdWU6IE1kc1ZhbHVlTGlzdCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZS52YWx1ZXMubWFwKCh2KSA9PiB2LmRpc3BsYXlTdHJpbmcpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYmFzaWNUeXBlID0gdGhpcy5nZXRCYXNpY1R5cGUoKTtcbiAgICAgICAgdGhpcy5yYXdWYWx1ZSA9IGF3YWl0IHRoaXMuZ2V0UmF3VmFsdWUoKS50b1Byb21pc2UoKTtcbiAgICB9XG5cbiAgICBnZXREZWZpbml0aW9uKCk6IE1kc1dpZGdldCB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldD8uZGVmaW5pdGlvbiB8fCB0aGlzLmRlZmluaXRpb247XG4gICAgfVxuXG4gICAgZ2V0QmFzaWNUeXBlKCkge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuZ2V0RGVmaW5pdGlvbigpLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICAgICAgY2FzZSAnY29sb3InOlxuICAgICAgICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICAgICAgY2FzZSAnc2luZ2xlb3B0aW9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RleHQnO1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ251bWJlcic7XG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2RhdGUnO1xuICAgICAgICAgICAgY2FzZSAndmNhcmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiAndmNhcmQnO1xuICAgICAgICAgICAgY2FzZSAnbXVsdGl2YWx1ZUZpeGVkQmFkZ2VzJzpcbiAgICAgICAgICAgIGNhc2UgJ211bHRpdmFsdWVTdWdnZXN0QmFkZ2VzJzpcbiAgICAgICAgICAgIGNhc2UgJ3NpbmdsZXZhbHVlU3VnZ2VzdEJhZGdlcyc6XG4gICAgICAgICAgICBjYXNlICdtdWx0aXZhbHVlQmFkZ2VzJzpcbiAgICAgICAgICAgIGNhc2UgJ3NpbmdsZXZhbHVlVHJlZSc6XG4gICAgICAgICAgICBjYXNlICdtdWx0aXZhbHVlVHJlZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmlld0luc3RhbmNlLnRyZWVEaXNwbGF5ID09PSAnZmxhdCcgPyAnYXJyYXknIDogJ3RyZWUnO1xuICAgICAgICAgICAgY2FzZSAnc2xpZGVyJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NsaWRlcic7XG4gICAgICAgICAgICBjYXNlICdkdXJhdGlvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdkdXJhdGlvbic7XG4gICAgICAgICAgICBjYXNlICdyYW5nZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyYW5nZSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICB9XG5cbiAgICBzdXBwb3J0c0lubGluZUVkaXRpbmcoKSB7XG4gICAgICAgIHJldHVybiBNZHNXaWRnZXRDb21wb25lbnQuaW5saW5lRWRpdGluZy5pbmNsdWRlcyhcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0Py5kZWZpbml0aW9uLnR5cGUgYXMgTWRzV2lkZ2V0VHlwZSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE5vZGVWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudGVtcG9yYXJ5VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUodGhpcy50ZW1wb3JhcnlWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLmdldERlZmluaXRpb24oKS5pZDtcbiAgICAgICAgaWYgKHRoaXMuZ2V0RGVmaW5pdGlvbigpLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMubWRzRWRpdG9ySW5zdGFuY2U/LnZhbHVlcyQudmFsdWU7XG4gICAgICAgICAgICBpZiAodmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt2YWx1ZXNbaWQgKyAnX2Zyb20nXT8uWzBdLCB2YWx1ZXNbaWQgKyAnX3RvJ10/LlswXV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1kc0VkaXRvckluc3RhbmNlPy52YWx1ZXMkLnZhbHVlPy5baWRdKSB7XG4gICAgICAgICAgICAvLyBzdXBwb3J0IG9uIHRoZSBmbHkgY2hhbmdlcyt1cGRhdGVzIG9mIHRoZSB2YWx1ZXNcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKHRoaXMubWRzRWRpdG9ySW5zdGFuY2UudmFsdWVzJC52YWx1ZVtpZF0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMud2lkZ2V0LmdldEluaXRpYWxWYWx1ZXMoKT8uam9pbnRWYWx1ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKHRoaXMud2lkZ2V0LmdldEluaXRpYWxWYWx1ZXMoKS5qb2ludFZhbHVlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFZhbHVlKGRhdGE6IHN0cmluZ1tdKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IGRhdGE7XG4gICAgICAgIGlmICghdmFsdWUgfHwgdmFsdWUuZXZlcnkoKHYpID0+ICF2KSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5nZXREZWZpbml0aW9uKCkudmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBtYXBwaW5nID0gdGhpcy53aWRnZXQuZGVmaW5pdGlvbi52YWx1ZXNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKCh2OiBhbnkpID0+IGRhdGEuZmlsdGVyKChkKSA9PiBkID09PSB2LmlkKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgIC5tYXAoKHY6IGFueSkgPT4gdi5jYXB0aW9uKTtcbiAgICAgICAgICAgIGlmIChtYXBwaW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcHBpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBjbGljaygpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0RGVmaW5pdGlvbigpLmxpbmsgPT09ICdfQkxBTksnKSB7XG4gICAgICAgICAgICB3aW5kb3cub3Blbih0aGlzLmZvcm1hdFRleHQoKVswXSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXREZWZpbml0aW9uKCkubGluayA9PT0gJ19TRUxGJykge1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmZvcm1hdFRleHQoKVswXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVW5zdXBwb3J0ZWQgbGluayB0eXBlICcgKyB0aGlzLmdldERlZmluaXRpb24oKS5saW5rKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlPy5ldmVyeSgodikgPT4gIXYpIHx8IHRoaXMudmFsdWU/Lmxlbmd0aCA9PT0gMCB8fCAhdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICBmb3JtYXREYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5tYXAoKHYpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldERlZmluaXRpb24oKS5mb3JtYXQpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGVQaXBlKCdlbicpLnRyYW5zZm9ybSh2LCB0aGlzLmdldERlZmluaXRpb24oKS5mb3JtYXQpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdDb3VsZCBub3QgZm9ybWF0IGRhdGUnLCBlLCB0aGlzLmdldERlZmluaXRpb24oKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBEYXRlSGVscGVyLmZvcm1hdERhdGUodGhpcy50cmFuc2xhdGUsIHYsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBbHdheXNUaW1lOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBEYXRlSGVscGVyLmZvcm1hdERhdGUodGhpcy50cmFuc2xhdGUsIHYsIHtcbiAgICAgICAgICAgICAgICAgICAgc2hvd0Fsd2F5c1RpbWU6IHRydWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGZvcm1hdE51bWJlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubWFwKCh2KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy53aWRnZXQuZGVmaW5pdGlvbi5mb3JtYXQgPT09ICdieXRlcycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZvcm1hdFNpemVQaXBlKHRoaXMudHJhbnNsYXRlKS50cmFuc2Zvcm0odik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9ybWF0VGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubWFwKCh2KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy53aWRnZXQuZGVmaW5pdGlvbi5mb3JtYXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53aWRnZXQuZGVmaW5pdGlvbi5mb3JtYXQucmVwbGFjZSgnJHt2YWx1ZX0nLCB2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gaW5zdGFuY2U6IE1kc0VkaXRvcldpZGdldEJhc2VcbiAgICBhc3luYyBmaW5pc2hFZGl0KGluc3RhbmNlOiBhbnksIHN0b3JlID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHN0b3JlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1kc0VkaXRvckluc3RhbmNlLnNhdmVXaWRnZXRWYWx1ZShpbnN0YW5jZS53aWRnZXQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGVtcG9yYXJ5VmFsdWUgPSBpbnN0YW5jZS53aWRnZXQuZ2V0VmFsdWUoKTtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0Tm9kZVZhbHVlKCk7XG4gICAgICAgIHRoaXMuZWRpdFdyYXBwZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5pbm5lckhUTUwgPSBudWxsO1xuICAgICAgICBhd2FpdCB0aGlzLm1kc0VkaXRvckluc3RhbmNlLmZldGNoRGlzcGxheVZhbHVlcyh0aGlzLndpZGdldCk7XG4gICAgfVxuXG4gICAgaXNFZGl0YWJsZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm1kc0VkaXRvckluc3RhbmNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5saW5lRWRpdGluZyA9PT0gJ2Fsd2F5cycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1cHBvcnRzSW5saW5lRWRpdGluZygpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vZGVzID0gdGhpcy5tZHNFZGl0b3JJbnN0YW5jZS5ub2RlcyQudmFsdWU7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm1kc0VkaXRvckluc3RhbmNlLmVkaXRvck1vZGUgPT09ICdpbmxpbmUnICYmXG4gICAgICAgICAgICB0aGlzLndpZGdldC5kZWZpbml0aW9uLmludGVyYWN0aW9uVHlwZSA9PT0gJ0lucHV0JyAmJlxuICAgICAgICAgICAgbm9kZXM/Lmxlbmd0aCA9PT0gMSAmJlxuICAgICAgICAgICAgUmVzdEhlbHBlci5oYXNBY2Nlc3NQZXJtaXNzaW9uKG5vZGVzWzBdLCBSZXN0Q29uc3RhbnRzLkFDQ0VTU19XUklURSkgJiZcbiAgICAgICAgICAgIHRoaXMuc3VwcG9ydHNJbmxpbmVFZGl0aW5nKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhc3luYyBmb2N1cygpIHtcbiAgICAgICAgLy8gdGhpcy5tYXRSaXBwbGUubGF1bmNoKHt9KTtcbiAgICAgICAgYXdhaXQgdGhpcy51aS5zY3JvbGxTbW9vdGhFbGVtZW50VG9DaGlsZCh0aGlzLmVkaXRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLm1hdFJpcHBsZS5sYXVuY2goe30pO1xuICAgICAgICAvL2NvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMudmlldy5pbmplY3RFZGl0RmllbGQodGhpcywgdGhpcy5lZGl0V3JhcHBlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdKTtcbiAgICAgICAgLy9hd2FpdCB0aGlzLnVpLnNjcm9sbFNtb290aEVsZW1lbnRUb0NoaWxkKHJlc3VsdC5odG1sRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJuIHRoZSBwYXRoIGZvciBhIGdpdmVuIHZhbHVlIGluIGEgdHJlZVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0UGF0aCh2OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLmdldERlZmluaXRpb24oKS52YWx1ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogdixcbiAgICAgICAgICAgICAgICAgICAgY2FwdGlvbjogdixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXRoOiBNZHNWYWx1ZVtdID0gW107XG4gICAgICAgIGxldCBwb2ludGVyOiBzdHJpbmcgPSB2O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBtYXBwZWQgPSB0aGlzLmdldERlZmluaXRpb24oKS52YWx1ZXMuZmluZCgodykgPT4gdy5pZCA9PT0gcG9pbnRlcik7XG4gICAgICAgICAgICBpZiAobWFwcGVkKSB7XG4gICAgICAgICAgICAgICAgcGF0aC5wdXNoKG1hcHBlZCk7XG4gICAgICAgICAgICAgICAgcG9pbnRlciA9IG1hcHBlZC5wYXJlbnQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXRoLnJldmVyc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmZXRjaCB0aGUgcmF3IG5vZGUgdmFsdWVcbiAgICAgKiBOb3RlOiBXaWxsIG5vdCB3b3JrIGluIGEgYnVsayBzdGF0ZSFcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFJhd1ZhbHVlKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5tZHNFZGl0b3JJbnN0YW5jZT8ubm9kZXMkLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgICAgICBtYXAoKHY6IE5vZGVbXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHY/LlswXT8ucHJvcGVydGllc1t0aGlzLndpZGdldC5kZWZpbml0aW9uLmlkXSBhcyBzdHJpbmdbXSk/Lm1hcCgoaWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogdGhpcy5nZXRQYXRoKGlkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApIHx8IG9mKG51bGwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0U2VhcmNoUGFyYW1zKGtleTogTWRzVmFsdWUpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7fTtcbiAgICAgICAgY29uc3QgbWRzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fTtcbiAgICAgICAgbWRzW3RoaXMud2lkZ2V0LmRlZmluaXRpb24uaWRdID0gW2tleS5pZF07XG4gICAgICAgIHBhcmFtcy5tZHMgPSB0aGlzLm1kc0VkaXRvckluc3RhbmNlLm1kc0lkO1xuICAgICAgICBwYXJhbXMuc2lkZW5hdiA9IHRydWU7XG4gICAgICAgIHBhcmFtcy5yZXBvID0gdGhpcy5tZHNFZGl0b3JJbnN0YW5jZS5ub2RlcyQudmFsdWU/LlswXS5yZWYucmVwbztcbiAgICAgICAgcGFyYW1zLmZpbHRlcnMgPSBKU09OLnN0cmluZ2lmeShtZHMpO1xuICAgICAgICByZXR1cm4gcGFyYW1zO1xuICAgIH1cblxuICAgIHN0YXJ0RWRpdChldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdm9pZCB0aGlzLnZpZXcuaW5qZWN0RWRpdEZpZWxkKHRoaXMsIHRoaXMuZWRpdFdyYXBwZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSk7XG4gICAgfVxufVxuIiwiPGVzLW1kcy1lZGl0b3Itd2lkZ2V0LWNvbnRhaW5lclxuICAqbmdJZj1cIiFlZGl0V3JhcHBlci5pbm5lclRleHQudHJpbSgpXCJcbiAgW2luamVjdGVkVmlld109XCJ0aGlzXCJcbiAgW3dpZGdldF09XCJ3aWRnZXRcIlxuICBbbGFiZWxdPVwiZmFsc2VcIlxuICBbd3JhcEluRm9ybUZpZWxkXT1cImZhbHNlXCJcbiAgW3dyYXBJbkdyb3VwXT1cImZhbHNlXCJcbiAgW3ZhbHVlVHlwZV09XCJ2YWx1ZVR5cGVcIlxuICBtYXRSaXBwbGVcbiAgW21hdFJpcHBsZURpc2FibGVkXT1cInRydWVcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZWRpdC13cmFwcGVyXCI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCIhaXNFbXB0eSgpIHx8ICF3aWRnZXQuZGVmaW5pdGlvbi5oaWRlSWZFbXB0eSB8fCBpc0VkaXRhYmxlKClcIlxuICAgICAgY2xhc3M9XCJ3aWRnZXQtd3JhcHBlclwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIndpZGdldC1sYWJlbFwiXG4gICAgICAgIFthdHRyLnJvbGVdPVwiaGVhZGluZ0xldmVsID8gJ2hlYWRpbmcnIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGV2ZWxdPVwiaGVhZGluZ0xldmVsXCJcbiAgICAgICAgKm5nSWY9XCJ3aWRnZXQuZGVmaW5pdGlvbi5jYXB0aW9uICYmIHNob3dDYXB0aW9uXCJcbiAgICAgID5cbiAgICAgICAge3sgd2lkZ2V0LmRlZmluaXRpb24uY2FwdGlvblxuICAgICAgICB9fTxzcGFuICpuZ0lmPVwiIWhlYWRpbmdMZXZlbFwiIGNsYXNzPVwiY2RrLXZpc3VhbGx5LWhpZGRlblwiPjogPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidmFsdWUtd3JhcHBlclwiXG4gICAgICAgIFtjbGFzcy52YWx1ZS13cmFwcGVyLWVkaXRdPVwiaXNFZGl0YWJsZSgpXCJcbiAgICAgICAgKGNsaWNrKT1cImlzRWRpdGFibGUoKSA/IHN0YXJ0RWRpdCgkZXZlbnQpIDogbnVsbFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0VtcHR5KClcIiBjbGFzcz1cIndpZGdldC1kYXRhIHdpZGdldC1uby1kYXRhIHdpZGdldC10eXBlLXt7IGJhc2ljVHlwZSB9fVwiPlxuICAgICAgICAgIC1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cIiFpc0VtcHR5KClcIlxuICAgICAgICAgIGNsYXNzPVwid2lkZ2V0LWRhdGEgd2lkZ2V0LXR5cGUte3sgYmFzaWNUeXBlIH19IHt7XG4gICAgICAgICAgICB3aWRnZXQuZGVmaW5pdGlvbi5saW5rID8gJ3dpZGdldC1saW5rJyA6ICcnXG4gICAgICAgICAgfX1cIlxuICAgICAgICAgIChjbGljayk9XCJjbGljaygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNpY1R5cGUgPT09ICd0ZXh0J1wiPnt7IGZvcm1hdFRleHQoKSB9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNpY1R5cGUgPT09ICdudW1iZXInXCI+e3sgZm9ybWF0TnVtYmVyKCkgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmFzaWNUeXBlID09PSAnZGF0ZSdcIj57eyBmb3JtYXREYXRlKCkgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmFzaWNUeXBlID09PSAnYXJyYXknXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyYXktZW50cnlcIiAqbmdGb3I9XCJsZXQgdiBvZiB2YWx1ZVwiPnt7IHYgfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmFzaWNUeXBlID09PSAndHJlZSdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVlLWVudHJ5XCIgKm5nRm9yPVwibGV0IHYgb2YgcmF3VmFsdWVcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRyZWVFbnRyeTsgY29udGV4dDogeyBwYXRoOiB2LnBhdGggfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImJhc2ljVHlwZSA9PT0gJ3ZjYXJkJ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycmF5LWVudHJ5XCIgKm5nRm9yPVwibGV0IHYgb2YgdmFsdWVcIj57eyB2IHwgdmNhcmROYW1lIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImJhc2ljVHlwZSA9PT0gJ3NsaWRlcidcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2xpZGVyLXZhbHVlXCI+e3sgdmFsdWUgfX08L3NwYW5cbiAgICAgICAgICAgID48c3Bhbj4gLyA8L3NwYW4+PHNwYW4gY2xhc3M9XCJzbGlkZXItbWF4XCI+e3sgd2lkZ2V0LmRlZmluaXRpb24ubWF4IH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNpY1R5cGUgPT09ICdkdXJhdGlvbidcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHVyYXRpb24tdmFsdWVcIj57eyB2YWx1ZVswXSB8IGFwcE1kc0R1cmF0aW9uIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNpY1R5cGUgPT09ICdyYW5nZSdcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2xpZGVyLXZhbHVlXCI+e3sgdmFsdWVbMF0gfX08L3NwYW5cbiAgICAgICAgICAgID4tPHNwYW4gY2xhc3M9XCJzbGlkZXItdmFsdWVcIj57eyB2YWx1ZVsxXSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmFzaWNUeXBlID09PSAndW5rbm93bidcIj5cbiAgICAgICAgICAgIFRoZSB3aWRnZXQgdHlwZSB7eyB3aWRnZXQuZGVmaW5pdGlvbi50eXBlIH19IGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIHZpYSBhbmd1bGFyXG4gICAgICAgICAgICByZW5kZXJpbmdcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tPGJ1dHRvbiBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwibWRzRWRpdG9ySW5zdGFuY2UuZWRpdG9yTW9kZSA9PT0gJ2lubGluZScgJiYgd2lkZ2V0LmRlZmluaXRpb24uaW50ZXJhY3Rpb25UeXBlID09PSAnSW5wdXQnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ2aWV3LmluamVjdEVkaXRGaWVsZCh0aGlzLCBlZGl0KVwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0bi1lZGl0XCI+XG4gICAgICA8aSBlc0ljb249XCJlZGl0XCI+PC9pPlxuICAgIDwvYnV0dG9uPi0tPlxuICA8L2Rpdj5cbjwvZXMtbWRzLWVkaXRvci13aWRnZXQtY29udGFpbmVyPlxuPGRpdiBjbGFzcz1cImVkaXQtd3JhcHBlclwiPlxuICA8ZGl2ICNlZGl0V3JhcHBlcj48ZGl2ICNlZGl0PjwvZGl2PjwvZGl2PlxuICA8IS0tPGJ1dHRvbiAqbmdJZj1cIiEhZWRpdFdyYXBwZXIuaW5uZXJUZXh0LnRyaW0oKVwiIG1hdC1pY29uLWJ1dHRvbj48aSBlc0ljb249XCJzYXZlXCI+PC9pPjwvYnV0dG9uPi0tPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI3RyZWVFbnRyeSBsZXQtcGF0aD1cInBhdGhcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdCBvZiBwYXRoOyBsZXQgZmlyc3QgPSBmaXJzdFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmlyc3RcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiY2RrLXZpc3VhbGx5LWhpZGRlblwiPnt7ICdTVUJfQ0FURUdPUllfQVJJQScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICA8aSBlc0ljb249XCJrZXlib2FyZF9hcnJvd19yaWdodFwiIFthcmlhXT1cImZhbHNlXCI+PC9pPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxhXG4gICAgICBbcm91dGVyTGlua109XCInLycgKyBST1VURVJfUFJFRklYICsgJ3NlYXJjaCdcIlxuICAgICAgW3F1ZXJ5UGFyYW1zXT1cImdldFNlYXJjaFBhcmFtcyh0KVwiXG4gICAgICAqbmdJZj1cIndpZGdldC5kZWZpbml0aW9uLmlzU2VhcmNoYWJsZVwiXG4gICAgICA+e3sgdC5jYXB0aW9uIH19PC9hXG4gICAgPlxuICAgIDxzcGFuICpuZ0lmPVwiIXdpZGdldC5kZWZpbml0aW9uLmlzU2VhcmNoYWJsZVwiPnt7IHQuY2FwdGlvbiB9fTwvc3Bhbj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
359
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWRzLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lZHUtc2hhcmluZy11aS9zcmMvbGliL21kcy12aWV3ZXIvd2lkZ2V0L21kcy13aWRnZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWR1LXNoYXJpbmctdWkvc3JjL2xpYi9tZHMtdmlld2VyL3dpZGdldC9tZHMtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsU0FBUyxFQUVULEtBQUssRUFJTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBNkIsYUFBYSxFQUFjLE1BQU0scUJBQXFCLENBQUM7QUFDM0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUduRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7OztBQUkxQixNQUFNLENBQU4sSUFBWSxPQVVYO0FBVkQsV0FBWSxPQUFPO0lBQ2Ysb0JBQVMsQ0FBQTtJQUNULDZCQUFrQixDQUFBO0lBQ2xCLHNCQUFXLENBQUE7SUFDWCw2QkFBa0IsQ0FBQTtJQUNsQiwyQ0FBZ0MsQ0FBQTtJQUNoQyxvQ0FB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Q0FBQztRQUNyQyxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWlCO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDOytHQS9TUSxrQkFBa0I7bUdBQWxCLGtCQUFrQiwrVEErQmhCLFNBQVMscUVDakh4QixrOEhBbUdBOzs0RkRqQmEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNJLGVBQWU7OEtBeUJoQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFJRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVvQixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0YsU0FBUztzQkFBOUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdFJpcHBsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWRzVmFsdWUsIE1kc1dpZGdldCwgTm9kZSwgUmVzdENvbnN0YW50cywgU3VnZ2VzdGlvbiB9IGZyb20gJ25neC1lZHUtc2hhcmluZy1hcGknO1xuaW1wb3J0IHsgVUlDb25zdGFudHMgfSBmcm9tICcuLi8uLi91dGlsL3VpLWNvbnN0YW50cyc7XG5pbXBvcnQgeyBEYXRlSGVscGVyIH0gZnJvbSAnLi4vLi4vdXRpbC9EYXRlSGVscGVyJztcbmltcG9ydCB7IFVJU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VpLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmlld0luc3RhbmNlU2VydmljZSB9IGZyb20gJy4uL3ZpZXctaW5zdGFuY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBSZXN0SGVscGVyIH0gZnJvbSAnLi4vLi4vdXRpbC9yZXN0LWhlbHBlcic7XG5pbXBvcnQgeyBGb3JtYXRTaXplUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2ZpbGUtc2l6ZS5waXBlJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZHNWaWV3ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbWRzLXZpZXdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbHVlcyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlYXJjaC1oZWxwZXIuc2VydmljZSc7XG5cbmV4cG9ydCBlbnVtIE1kc1R5cGUge1xuICAgIElvID0gJ2lvJyxcbiAgICBJb0J1bGsgPSAnaW9fYnVsaycsXG4gICAgTWFwID0gJ21hcCcsXG4gICAgTWFwUmVmID0gJ21hcF9yZWYnLFxuICAgIElvQ2hpbGRPYmplY3QgPSAnaW9fY2hpbGRvYmplY3QnLFxuICAgIENvbGxlY3Rpb24gPSAnY29sbGVjdGlvbicsXG4gICAgVG9vbERlZmluaXRpb24gPSAndG9vbF9kZWZpbml0aW9uJyxcbiAgICBUb29sSW5zdGFuY2UgPSAndG9vbF9pbnN0YW5jZScsXG4gICAgU2F2ZWRTZWFyY2ggPSAnc2F2ZWRfc2VhcmNoJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZHNWYWx1ZUxpc3Qge1xuICAgIHZhbHVlczogU3VnZ2VzdGlvbltdO1xufVxuXG5leHBvcnQgZW51bSBNZHNXaWRnZXRUeXBlIHtcbiAgICBUZXh0ID0gJ3RleHQnLFxuICAgIE51bWJlciA9ICdudW1iZXInLFxuICAgIEVtYWlsID0gJ2VtYWlsJyxcbiAgICBEYXRlID0gJ2RhdGUnLFxuICAgIE1vbnRoID0gJ21vbnRoJyxcbiAgICBDb2xvciA9ICdjb2xvcicsXG4gICAgVGV4dGFyZWEgPSAndGV4dGFyZWEnLFxuICAgIFRpbnlNQ0UgPSAndGlueU1DRScsXG4gICAgVkNhcmQgPSAndmNhcmQnLFxuICAgIENoZWNrYm94ID0gJ2NoZWNrYm94JyxcbiAgICBSYWRpb0hvcml6b250YWwgPSAncmFkaW9Ib3Jpem9udGFsJyxcbiAgICBSYWRpb1ZlcnRpY2FsID0gJ3JhZGlvVmVydGljYWwnLFxuICAgIENoZWNrYm94SG9yaXpvbnRhbCA9ICdjaGVja2JveEhvcml6b250YWwnLFxuICAgIENoZWNrYm94VmVydGljYWwgPSAnY2hlY2tib3hWZXJ0aWNhbCcsXG4gICAgTXVsdGlWYWx1ZUJhZGdlcyA9ICdtdWx0aXZhbHVlQmFkZ2VzJyxcbiAgICBNdWx0aVZhbHVlRml4ZWRCYWRnZXMgPSAnbXVsdGl2YWx1ZUZpeGVkQmFkZ2VzJyxcbiAgICBNdWx0aVZhbHVlU3VnZ2VzdEJhZGdlcyA9ICdtdWx0aXZhbHVlU3VnZ2VzdEJhZGdlcycsXG4gICAgTXVsdGlWYWx1ZUF1dGhvcml0eUJhZGdlcyA9ICdtdWx0aXZhbHVlQXV0aG9yaXR5QmFkZ2VzJyxcbiAgICBTaW5nbGVvcHRpb24gPSAnc2luZ2xlb3B0aW9uJyxcbiAgICBTbGlkZXIgPSAnc2xpZGVyJyxcbiAgICBSYW5nZSA9ICdyYW5nZScsXG4gICAgRHVyYXRpb24gPSAnZHVyYXRpb24nLFxuICAgIFNpbmdsZVZhbHVlVHJlZSA9ICdzaW5nbGV2YWx1ZVRyZWUnLFxuICAgIFNpbmdsZVZhbHVlU3VnZ2VzdEJhZGdlcyA9ICdzaW5nbGV2YWx1ZVN1Z2dlc3RCYWRnZXMnLFxuICAgIE11bHRpVmFsdWVUcmVlID0gJ211bHRpdmFsdWVUcmVlJyxcbiAgICBEZWZhdWx0VmFsdWUgPSAnZGVmYXVsdHZhbHVlJyxcbiAgICBGYWNldExpc3QgPSAnZmFjZXRMaXN0Jyxcbn1cblxuZXhwb3J0IGVudW0gVmFsdWVUeXBlIHtcbiAgICBTdHJpbmcsXG4gICAgTXVsdGlWYWx1ZSxcbiAgICBSYW5nZSxcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlcy1tZHMtd2lkZ2V0JyxcbiAgICB0ZW1wbGF0ZVVybDogJ21kcy13aWRnZXQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydtZHMtd2lkZ2V0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgLy8gcmVxdWlyZWQgZm9yIGV4dGVybmFsIGVkaXRvciBpbmplY3Rpb25cbn0pXG5leHBvcnQgY2xhc3MgTWRzV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIHJlYWRvbmx5IFJPVVRFUl9QUkVGSVggPSBVSUNvbnN0YW50cy5ST1VURVJfUFJFRklYO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGlubGluZUVkaXRpbmc6IE1kc1dpZGdldFR5cGVbXSA9IFtcbiAgICAgICAgTWRzV2lkZ2V0VHlwZS5UZXh0LFxuICAgICAgICBNZHNXaWRnZXRUeXBlLk51bWJlcixcbiAgICAgICAgTWRzV2lkZ2V0VHlwZS5EYXRlLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLkVtYWlsLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLlRleHRhcmVhLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLlNpbmdsZW9wdGlvbixcbiAgICAgICAgTWRzV2lkZ2V0VHlwZS5TaW5nbGVWYWx1ZVRyZWUsXG4gICAgICAgIE1kc1dpZGdldFR5cGUuU2luZ2xlVmFsdWVTdWdnZXN0QmFkZ2VzLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLk11bHRpVmFsdWVCYWRnZXMsXG4gICAgICAgIE1kc1dpZGdldFR5cGUuTXVsdGlWYWx1ZUZpeGVkQmFkZ2VzLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLk11bHRpVmFsdWVTdWdnZXN0QmFkZ2VzLFxuICAgICAgICBNZHNXaWRnZXRUeXBlLk11bHRpVmFsdWVUcmVlLFxuICAgIF07XG5cbiAgICByZWFkb25seSB2YWx1ZVR5cGUgPSBWYWx1ZVR5cGUuU3RyaW5nO1xuXG4gICAgLy8gdXNlIGFueSBpbnN0ZWFkIG9mIGBXaWRnZXRgIGNhdXNlIG9mIGV4dGVybmFsIHR5cGVcbiAgICBASW5wdXQoKSB3aWRnZXQ6IGFueTtcbiAgICBASW5wdXQoKSBzaG93Q2FwdGlvbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogYWxsb3cgaW5saW5lIGVkaXRpbmdcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpbmxpbmVFZGl0aW5nOiAnYXV0bycgfCAnYWx3YXlzJyA9ICdhdXRvJztcbiAgICBASW5wdXQoKSBkZWZpbml0aW9uOiBNZHNXaWRnZXQ7XG4gICAgLy8gdXNlIGFueSBpbnN0ZWFkIG9mIE1kc0VkaXRvclZpZXdDb21wb25lbnQgY2F1c2Ugb2YgZXh0ZXJuYWwgdHlwZVxuICAgIEBJbnB1dCgpIHZpZXc6IGFueTtcblxuICAgIEBWaWV3Q2hpbGQoJ2VkaXRXcmFwcGVyJykgZWRpdFdyYXBwZXI6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZChNYXRSaXBwbGUpIG1hdFJpcHBsZTogTWF0UmlwcGxlO1xuICAgIGJhc2ljVHlwZTogc3RyaW5nO1xuICAgIHJhd1ZhbHVlOiB7IHBhdGg6IE1kc1ZhbHVlW107IGlkOiBzdHJpbmcgfVtdO1xuXG4gICAgcHJpdmF0ZSBtZHNFZGl0b3JJbnN0YW5jZTogYW55O1xuXG4gICAgZ2V0IGhlYWRpbmdMZXZlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0luc3RhbmNlLmhlYWRpbmdMZXZlbDtcbiAgICB9XG5cbiAgICB2YWx1ZTogc3RyaW5nW10gPSB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSB0ZW1wb3JhcnlWYWx1ZTogc3RyaW5nW10gPSB1bmRlZmluZWQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgLy8gcHVibGljIG1kc0VkaXRvckluc3RhbmNlOiBNZHNFZGl0b3JJbnN0YW5jZVNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdWk6IFVJU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB2aWV3SW5zdGFuY2U6IFZpZXdJbnN0YW5jZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbWRzVmlld2VyU2VydmljZTogTWRzVmlld2VyU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgLy8gc3VwZXIodG9hc3QsIG51bGwsIHRyYW5zbGF0ZSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5nZXROb2RlVmFsdWUoKTtcbiAgICB9XG5cbiAgICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0Tm9kZVZhbHVlKCk7XG4gICAgICAgIHRoaXMud2lkZ2V0XG4gICAgICAgICAgICAuZ2V0SW5pdGlhbERpc3BsYXlWYWx1ZXMoKVxuICAgICAgICAgICAgLnBpcGUoZmlsdGVyKCh2OiBNZHNWYWx1ZUxpc3QpID0+ICEhdikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGFzeW5jICh2YWx1ZTogTWRzVmFsdWVMaXN0KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlLnZhbHVlcy5tYXAoKHYpID0+IHYuZGlzcGxheVN0cmluZyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5iYXNpY1R5cGUgPSB0aGlzLmdldEJhc2ljVHlwZSgpO1xuICAgICAgICB0aGlzLnJhd1ZhbHVlID0gYXdhaXQgdGhpcy5nZXRSYXdWYWx1ZSgpLnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIGdldERlZmluaXRpb24oKTogTWRzV2lkZ2V0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0Py5kZWZpbml0aW9uIHx8IHRoaXMuZGVmaW5pdGlvbjtcbiAgICB9XG5cbiAgICBnZXRCYXNpY1R5cGUoKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5nZXREZWZpbml0aW9uKCkudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICBjYXNlICdjb2xvcic6XG4gICAgICAgICAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICAgICAgICBjYXNlICdzaW5nbGVvcHRpb24nOlxuICAgICAgICAgICAgICAgIHJldHVybiAndGV4dCc7XG4gICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiAnbnVtYmVyJztcbiAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgICAgIHJldHVybiAnZGF0ZSc7XG4gICAgICAgICAgICBjYXNlICd2Y2FyZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICd2Y2FyZCc7XG4gICAgICAgICAgICBjYXNlICdtdWx0aXZhbHVlRml4ZWRCYWRnZXMnOlxuICAgICAgICAgICAgY2FzZSAnbXVsdGl2YWx1ZVN1Z2dlc3RCYWRnZXMnOlxuICAgICAgICAgICAgY2FzZSAnc2luZ2xldmFsdWVTdWdnZXN0QmFkZ2VzJzpcbiAgICAgICAgICAgIGNhc2UgJ211bHRpdmFsdWVCYWRnZXMnOlxuICAgICAgICAgICAgY2FzZSAnc2luZ2xldmFsdWVUcmVlJzpcbiAgICAgICAgICAgIGNhc2UgJ211bHRpdmFsdWVUcmVlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52aWV3SW5zdGFuY2UudHJlZURpc3BsYXkgPT09ICdmbGF0JyA/ICdhcnJheScgOiAndHJlZSc7XG4gICAgICAgICAgICBjYXNlICdzbGlkZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiAnc2xpZGVyJztcbiAgICAgICAgICAgIGNhc2UgJ2R1cmF0aW9uJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2R1cmF0aW9uJztcbiAgICAgICAgICAgIGNhc2UgJ3JhbmdlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3JhbmdlJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ3Vua25vd24nO1xuICAgIH1cblxuICAgIHN1cHBvcnRzSW5saW5lRWRpdGluZygpIHtcbiAgICAgICAgcmV0dXJuIE1kc1dpZGdldENvbXBvbmVudC5pbmxpbmVFZGl0aW5nLmluY2x1ZGVzKFxuICAgICAgICAgICAgdGhpcy53aWRnZXQ/LmRlZmluaXRpb24udHlwZSBhcyBNZHNXaWRnZXRUeXBlLFxuICAgICAgICApO1xuICAgIH1cbiAgICBwcml2YXRlIGdldE5vZGVWYWx1ZXMoKSB7XG4gICAgICAgIGlmKHRoaXMubWRzRWRpdG9ySW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1kc0VkaXRvckluc3RhbmNlPy52YWx1ZXMkLnZhbHVlIGFzIFZhbHVlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1kc1ZpZXdlclNlcnZpY2UudmFsdWVzJC52YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIGdldE5vZGVWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudGVtcG9yYXJ5VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUodGhpcy50ZW1wb3JhcnlWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLmdldERlZmluaXRpb24oKS5pZDtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy5nZXROb2RlVmFsdWVzKCk7XG4gICAgICAgIGlmICh0aGlzLmdldERlZmluaXRpb24oKS50eXBlID09PSAncmFuZ2UnKSB7XG4gICAgICAgICAgICBpZiAodmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt2YWx1ZXNbaWQgKyAnX2Zyb20nXT8uWzBdLCB2YWx1ZXNbaWQgKyAnX3RvJ10/LlswXV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZXM/LltpZF0pIHtcbiAgICAgICAgICAgIC8vIHN1cHBvcnQgb24gdGhlIGZseSBjaGFuZ2VzK3VwZGF0ZXMgb2YgdGhlIHZhbHVlc1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUodGhpcy5tZHNFZGl0b3JJbnN0YW5jZS52YWx1ZXMkLnZhbHVlW2lkXSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy53aWRnZXQuZ2V0SW5pdGlhbFZhbHVlcygpPy5qb2ludFZhbHVlcykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUodGhpcy53aWRnZXQuZ2V0SW5pdGlhbFZhbHVlcygpLmpvaW50VmFsdWVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0VmFsdWUoZGF0YTogc3RyaW5nW10pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gZGF0YTtcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZS5ldmVyeSgodikgPT4gIXYpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmdldERlZmluaXRpb24oKS52YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcHBpbmcgPSB0aGlzLndpZGdldC5kZWZpbml0aW9uLnZhbHVlc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHY6IGFueSkgPT4gZGF0YS5maWx0ZXIoKGQpID0+IGQgPT09IHYuaWQpLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgICAgLm1hcCgodjogYW55KSA9PiB2LmNhcHRpb24pO1xuICAgICAgICAgICAgaWYgKG1hcHBpbmcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFwcGluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGNsaWNrKCkge1xuICAgICAgICBpZiAodGhpcy5nZXREZWZpbml0aW9uKCkubGluayA9PT0gJ19CTEFOSycpIHtcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKHRoaXMuZm9ybWF0VGV4dCgpWzBdKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldERlZmluaXRpb24oKS5saW5rID09PSAnX1NFTEYnKSB7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuZm9ybWF0VGV4dCgpWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbnN1cHBvcnRlZCBsaW5rIHR5cGUgJyArIHRoaXMuZ2V0RGVmaW5pdGlvbigpLmxpbmspO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNFbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU/LmV2ZXJ5KCh2KSA9PiAhdikgfHwgdGhpcy52YWx1ZT8ubGVuZ3RoID09PSAwIHx8ICF0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGZvcm1hdERhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlLm1hcCgodikgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0RGVmaW5pdGlvbigpLmZvcm1hdCkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZVBpcGUoJ2VuJykudHJhbnNmb3JtKHYsIHRoaXMuZ2V0RGVmaW5pdGlvbigpLmZvcm1hdCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ0NvdWxkIG5vdCBmb3JtYXQgZGF0ZScsIGUsIHRoaXMuZ2V0RGVmaW5pdGlvbigpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERhdGVIZWxwZXIuZm9ybWF0RGF0ZSh0aGlzLnRyYW5zbGF0ZSwgdiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0Fsd2F5c1RpbWU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIERhdGVIZWxwZXIuZm9ybWF0RGF0ZSh0aGlzLnRyYW5zbGF0ZSwgdiwge1xuICAgICAgICAgICAgICAgICAgICBzaG93QWx3YXlzVGltZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9ybWF0TnVtYmVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5tYXAoKHYpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLndpZGdldC5kZWZpbml0aW9uLmZvcm1hdCA9PT0gJ2J5dGVzJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRm9ybWF0U2l6ZVBpcGUodGhpcy50cmFuc2xhdGUpLnRyYW5zZm9ybSh2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3JtYXRUZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5tYXAoKHYpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLndpZGdldC5kZWZpbml0aW9uLmZvcm1hdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndpZGdldC5kZWZpbml0aW9uLmZvcm1hdC5yZXBsYWNlKCcke3ZhbHVlfScsIHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBpbnN0YW5jZTogTWRzRWRpdG9yV2lkZ2V0QmFzZVxuICAgIGFzeW5jIGZpbmlzaEVkaXQoaW5zdGFuY2U6IGFueSwgc3RvcmUgPSBmYWxzZSkge1xuICAgICAgICBpZiAoc3RvcmUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubWRzRWRpdG9ySW5zdGFuY2Uuc2F2ZVdpZGdldFZhbHVlKGluc3RhbmNlLndpZGdldCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50ZW1wb3JhcnlWYWx1ZSA9IGluc3RhbmNlLndpZGdldC5nZXRWYWx1ZSgpO1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5nZXROb2RlVmFsdWUoKTtcbiAgICAgICAgdGhpcy5lZGl0V3JhcHBlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLmlubmVySFRNTCA9IG51bGw7XG4gICAgICAgIGF3YWl0IHRoaXMubWRzRWRpdG9ySW5zdGFuY2UuZmV0Y2hEaXNwbGF5VmFsdWVzKHRoaXMud2lkZ2V0KTtcbiAgICB9XG5cbiAgICBpc0VkaXRhYmxlKCkge1xuICAgICAgICBpZiAoIXRoaXMubWRzRWRpdG9ySW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbmxpbmVFZGl0aW5nID09PSAnYWx3YXlzJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3VwcG9ydHNJbmxpbmVFZGl0aW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLm1kc0VkaXRvckluc3RhbmNlLm5vZGVzJC52YWx1ZTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMubWRzRWRpdG9ySW5zdGFuY2UuZWRpdG9yTW9kZSA9PT0gJ2lubGluZScgJiZcbiAgICAgICAgICAgIHRoaXMud2lkZ2V0LmRlZmluaXRpb24uaW50ZXJhY3Rpb25UeXBlID09PSAnSW5wdXQnICYmXG4gICAgICAgICAgICBub2Rlcz8ubGVuZ3RoID09PSAxICYmXG4gICAgICAgICAgICBSZXN0SGVscGVyLmhhc0FjY2Vzc1Blcm1pc3Npb24obm9kZXNbMF0sIFJlc3RDb25zdGFudHMuQUNDRVNTX1dSSVRFKSAmJlxuICAgICAgICAgICAgdGhpcy5zdXBwb3J0c0lubGluZUVkaXRpbmcoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGFzeW5jIGZvY3VzKCkge1xuICAgICAgICAvLyB0aGlzLm1hdFJpcHBsZS5sYXVuY2goe30pO1xuICAgICAgICBhd2FpdCB0aGlzLnVpLnNjcm9sbFNtb290aEVsZW1lbnRUb0NoaWxkKHRoaXMuZWRpdFdyYXBwZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMubWF0UmlwcGxlLmxhdW5jaCh7fSk7XG4gICAgICAgIC8vY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy52aWV3LmluamVjdEVkaXRGaWVsZCh0aGlzLCB0aGlzLmVkaXRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0pO1xuICAgICAgICAvL2F3YWl0IHRoaXMudWkuc2Nyb2xsU21vb3RoRWxlbWVudFRvQ2hpbGQocmVzdWx0Lmh0bWxFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm4gdGhlIHBhdGggZm9yIGEgZ2l2ZW4gdmFsdWUgaW4gYSB0cmVlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRQYXRoKHY6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMuZ2V0RGVmaW5pdGlvbigpLnZhbHVlcykge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiB2LFxuICAgICAgICAgICAgICAgICAgICBjYXB0aW9uOiB2LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhdGg6IE1kc1ZhbHVlW10gPSBbXTtcbiAgICAgICAgbGV0IHBvaW50ZXI6IHN0cmluZyA9IHY7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG1hcHBlZCA9IHRoaXMuZ2V0RGVmaW5pdGlvbigpLnZhbHVlcy5maW5kKCh3KSA9PiB3LmlkID09PSBwb2ludGVyKTtcbiAgICAgICAgICAgIGlmIChtYXBwZWQpIHtcbiAgICAgICAgICAgICAgICBwYXRoLnB1c2gobWFwcGVkKTtcbiAgICAgICAgICAgICAgICBwb2ludGVyID0gbWFwcGVkLnBhcmVudDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhdGgucmV2ZXJzZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZldGNoIHRoZSByYXcgbm9kZSB2YWx1ZVxuICAgICAqIE5vdGU6IFdpbGwgbm90IHdvcmsgaW4gYSBidWxrIHN0YXRlIVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0UmF3VmFsdWUoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLm1kc0VkaXRvckluc3RhbmNlPy5ub2RlcyQucGlwZShcbiAgICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICAgIG1hcCgodjogTm9kZVtdKSA9PlxuICAgICAgICAgICAgICAgICAgICAodj8uWzBdPy5wcm9wZXJ0aWVzW3RoaXMud2lkZ2V0LmRlZmluaXRpb24uaWRdIGFzIHN0cmluZ1tdKT8ubWFwKChpZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiB0aGlzLmdldFBhdGgoaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICkgfHwgb2YobnVsbClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRTZWFyY2hQYXJhbXMoa2V5OiBNZHNWYWx1ZSkge1xuICAgICAgICBjb25zdCBwYXJhbXM6IGFueSA9IHt9O1xuICAgICAgICBjb25zdCBtZHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xuICAgICAgICBtZHNbdGhpcy53aWRnZXQuZGVmaW5pdGlvbi5pZF0gPSBba2V5LmlkXTtcbiAgICAgICAgcGFyYW1zLm1kcyA9IHRoaXMubWRzRWRpdG9ySW5zdGFuY2UubWRzSWQ7XG4gICAgICAgIHBhcmFtcy5zaWRlbmF2ID0gdHJ1ZTtcbiAgICAgICAgcGFyYW1zLnJlcG8gPSB0aGlzLm1kc0VkaXRvckluc3RhbmNlLm5vZGVzJC52YWx1ZT8uWzBdLnJlZi5yZXBvO1xuICAgICAgICBwYXJhbXMuZmlsdGVycyA9IEpTT04uc3RyaW5naWZ5KG1kcyk7XG4gICAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfVxuXG4gICAgc3RhcnRFZGl0KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB2b2lkIHRoaXMudmlldy5pbmplY3RFZGl0RmllbGQodGhpcywgdGhpcy5lZGl0V3JhcHBlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdKTtcbiAgICB9XG59XG4iLCI8ZXMtbWRzLWVkaXRvci13aWRnZXQtY29udGFpbmVyXG4gICpuZ0lmPVwiIWVkaXRXcmFwcGVyLmlubmVyVGV4dC50cmltKClcIlxuICBbaW5qZWN0ZWRWaWV3XT1cInRoaXNcIlxuICBbd2lkZ2V0XT1cIndpZGdldFwiXG4gIFtsYWJlbF09XCJmYWxzZVwiXG4gIFt3cmFwSW5Gb3JtRmllbGRdPVwiZmFsc2VcIlxuICBbd3JhcEluR3JvdXBdPVwiZmFsc2VcIlxuICBbdmFsdWVUeXBlXT1cInZhbHVlVHlwZVwiXG4gIG1hdFJpcHBsZVxuICBbbWF0UmlwcGxlRGlzYWJsZWRdPVwidHJ1ZVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJlZGl0LXdyYXBwZXJcIj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cIiFpc0VtcHR5KCkgfHwgIXdpZGdldC5kZWZpbml0aW9uLmhpZGVJZkVtcHR5IHx8IGlzRWRpdGFibGUoKVwiXG4gICAgICBjbGFzcz1cIndpZGdldC13cmFwcGVyXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwid2lkZ2V0LWxhYmVsXCJcbiAgICAgICAgW2F0dHIucm9sZV09XCJoZWFkaW5nTGV2ZWwgPyAnaGVhZGluZycgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sZXZlbF09XCJoZWFkaW5nTGV2ZWxcIlxuICAgICAgICAqbmdJZj1cIndpZGdldC5kZWZpbml0aW9uLmNhcHRpb24gJiYgc2hvd0NhcHRpb25cIlxuICAgICAgPlxuICAgICAgICB7eyB3aWRnZXQuZGVmaW5pdGlvbi5jYXB0aW9uXG4gICAgICAgIH19PHNwYW4gKm5nSWY9XCIhaGVhZGluZ0xldmVsXCIgY2xhc3M9XCJjZGstdmlzdWFsbHktaGlkZGVuXCI+OiA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ2YWx1ZS13cmFwcGVyXCJcbiAgICAgICAgW2NsYXNzLnZhbHVlLXdyYXBwZXItZWRpdF09XCJpc0VkaXRhYmxlKClcIlxuICAgICAgICAoY2xpY2spPVwiaXNFZGl0YWJsZSgpID8gc3RhcnRFZGl0KCRldmVudCkgOiBudWxsXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzRW1wdHkoKVwiIGNsYXNzPVwid2lkZ2V0LWRhdGEgd2lkZ2V0LW5vLWRhdGEgd2lkZ2V0LXR5cGUte3sgYmFzaWNUeXBlIH19XCI+XG4gICAgICAgICAgLVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiIWlzRW1wdHkoKVwiXG4gICAgICAgICAgY2xhc3M9XCJ3aWRnZXQtZGF0YSB3aWRnZXQtdHlwZS17eyBiYXNpY1R5cGUgfX0ge3tcbiAgICAgICAgICAgIHdpZGdldC5kZWZpbml0aW9uLmxpbmsgPyAnd2lkZ2V0LWxpbmsnIDogJydcbiAgICAgICAgICB9fVwiXG4gICAgICAgICAgKGNsaWNrKT1cImNsaWNrKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImJhc2ljVHlwZSA9PT0gJ3RleHQnXCI+e3sgZm9ybWF0VGV4dCgpIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImJhc2ljVHlwZSA9PT0gJ251bWJlcidcIj57eyBmb3JtYXROdW1iZXIoKSB9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNpY1R5cGUgPT09ICdkYXRlJ1wiPnt7IGZvcm1hdERhdGUoKSB9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNpY1R5cGUgPT09ICdhcnJheSdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcnJheS1lbnRyeVwiICpuZ0Zvcj1cImxldCB2IG9mIHZhbHVlXCI+e3sgdiB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNpY1R5cGUgPT09ICd0cmVlJ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyZWUtZW50cnlcIiAqbmdGb3I9XCJsZXQgdiBvZiByYXdWYWx1ZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHJlZUVudHJ5OyBjb250ZXh0OiB7IHBhdGg6IHYucGF0aCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmFzaWNUeXBlID09PSAndmNhcmQnXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyYXktZW50cnlcIiAqbmdGb3I9XCJsZXQgdiBvZiB2YWx1ZVwiPnt7IHYgfCB2Y2FyZE5hbWUgfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmFzaWNUeXBlID09PSAnc2xpZGVyJ1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzbGlkZXItdmFsdWVcIj57eyB2YWx1ZSB9fTwvc3BhblxuICAgICAgICAgICAgPjxzcGFuPiAvIDwvc3Bhbj48c3BhbiBjbGFzcz1cInNsaWRlci1tYXhcIj57eyB3aWRnZXQuZGVmaW5pdGlvbi5tYXggfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImJhc2ljVHlwZSA9PT0gJ2R1cmF0aW9uJ1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkdXJhdGlvbi12YWx1ZVwiPnt7IHZhbHVlWzBdIHwgYXBwTWRzRHVyYXRpb24gfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImJhc2ljVHlwZSA9PT0gJ3JhbmdlJ1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzbGlkZXItdmFsdWVcIj57eyB2YWx1ZVswXSB9fTwvc3BhblxuICAgICAgICAgICAgPi08c3BhbiBjbGFzcz1cInNsaWRlci12YWx1ZVwiPnt7IHZhbHVlWzFdIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJiYXNpY1R5cGUgPT09ICd1bmtub3duJ1wiPlxuICAgICAgICAgICAgVGhlIHdpZGdldCB0eXBlIHt7IHdpZGdldC5kZWZpbml0aW9uLnR5cGUgfX0gaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgdmlhIGFuZ3VsYXJcbiAgICAgICAgICAgIHJlbmRlcmluZ1xuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS08YnV0dG9uIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJtZHNFZGl0b3JJbnN0YW5jZS5lZGl0b3JNb2RlID09PSAnaW5saW5lJyAmJiB3aWRnZXQuZGVmaW5pdGlvbi5pbnRlcmFjdGlvblR5cGUgPT09ICdJbnB1dCdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInZpZXcuaW5qZWN0RWRpdEZpZWxkKHRoaXMsIGVkaXQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWVkaXRcIj5cbiAgICAgIDxpIGVzSWNvbj1cImVkaXRcIj48L2k+XG4gICAgPC9idXR0b24+LS0+XG4gIDwvZGl2PlxuPC9lcy1tZHMtZWRpdG9yLXdpZGdldC1jb250YWluZXI+XG48ZGl2IGNsYXNzPVwiZWRpdC13cmFwcGVyXCI+XG4gIDxkaXYgI2VkaXRXcmFwcGVyPjxkaXYgI2VkaXQ+PC9kaXY+PC9kaXY+XG4gIDwhLS08YnV0dG9uICpuZ0lmPVwiISFlZGl0V3JhcHBlci5pbm5lclRleHQudHJpbSgpXCIgbWF0LWljb24tYnV0dG9uPjxpIGVzSWNvbj1cInNhdmVcIj48L2k+PC9idXR0b24+LS0+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjdHJlZUVudHJ5IGxldC1wYXRoPVwicGF0aFwiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0IG9mIHBhdGg7IGxldCBmaXJzdCA9IGZpcnN0XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaXJzdFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJjZGstdmlzdWFsbHktaGlkZGVuXCI+e3sgJ1NVQl9DQVRFR09SWV9BUklBJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgIDxpIGVzSWNvbj1cImtleWJvYXJkX2Fycm93X3JpZ2h0XCIgW2FyaWFdPVwiZmFsc2VcIj48L2k+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGFcbiAgICAgIFtyb3V0ZXJMaW5rXT1cIicvJyArIFJPVVRFUl9QUkVGSVggKyAnc2VhcmNoJ1wiXG4gICAgICBbcXVlcnlQYXJhbXNdPVwiZ2V0U2VhcmNoUGFyYW1zKHQpXCJcbiAgICAgICpuZ0lmPVwid2lkZ2V0LmRlZmluaXRpb24uaXNTZWFyY2hhYmxlXCJcbiAgICAgID57eyB0LmNhcHRpb24gfX08L2FcbiAgICA+XG4gICAgPHNwYW4gKm5nSWY9XCIhd2lkZ2V0LmRlZmluaXRpb24uaXNTZWFyY2hhYmxlXCI+e3sgdC5jYXB0aW9uIH19PC9zcGFuPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=