stream-chat-angular 2.8.1 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/assets/i18n/en.d.ts +2 -0
  2. package/assets/version.d.ts +1 -1
  3. package/bundles/stream-chat-angular.umd.js +618 -218
  4. package/bundles/stream-chat-angular.umd.js.map +1 -1
  5. package/esm2015/assets/i18n/en.js +3 -1
  6. package/esm2015/assets/version.js +2 -2
  7. package/esm2015/lib/attachment-list/attachment-list.component.js +21 -8
  8. package/esm2015/lib/channel/channel.component.js +3 -2
  9. package/esm2015/lib/channel.service.js +179 -38
  10. package/esm2015/lib/chat-client.service.js +6 -1
  11. package/esm2015/lib/icon/icon.component.js +2 -2
  12. package/esm2015/lib/message/message.component.js +18 -3
  13. package/esm2015/lib/message-actions-box/message-actions-box.component.js +15 -7
  14. package/esm2015/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.js +35 -9
  15. package/esm2015/lib/message-input/message-input-config.service.js +1 -1
  16. package/esm2015/lib/message-input/message-input.component.js +40 -8
  17. package/esm2015/lib/message-input/textarea.directive.js +10 -2
  18. package/esm2015/lib/message-input/textarea.interface.js +1 -1
  19. package/esm2015/lib/message-list/message-list.component.js +126 -55
  20. package/esm2015/lib/message-preview.js +3 -2
  21. package/esm2015/lib/stream-chat.module.js +8 -3
  22. package/esm2015/lib/thread/thread.component.js +37 -0
  23. package/esm2015/lib/types.js +1 -1
  24. package/esm2015/public-api.js +2 -1
  25. package/fesm2015/stream-chat-angular.js +491 -134
  26. package/fesm2015/stream-chat-angular.js.map +1 -1
  27. package/lib/attachment-list/attachment-list.component.d.ts +8 -3
  28. package/lib/channel/channel.component.d.ts +2 -1
  29. package/lib/channel.service.d.ts +20 -7
  30. package/lib/chat-client.service.d.ts +4 -3
  31. package/lib/icon/icon.component.d.ts +1 -1
  32. package/lib/message/message.component.d.ts +17 -3
  33. package/lib/message-actions-box/message-actions-box.component.d.ts +4 -1
  34. package/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.d.ts +6 -3
  35. package/lib/message-input/message-input-config.service.d.ts +2 -1
  36. package/lib/message-input/message-input.component.d.ts +6 -2
  37. package/lib/message-input/textarea.directive.d.ts +3 -2
  38. package/lib/message-input/textarea.interface.d.ts +2 -1
  39. package/lib/message-list/message-list.component.d.ts +21 -7
  40. package/lib/message-preview.d.ts +1 -1
  41. package/lib/stream-chat.module.d.ts +5 -4
  42. package/lib/thread/thread.component.d.ts +18 -0
  43. package/lib/types.d.ts +7 -1
  44. package/package.json +2 -2
  45. package/public-api.d.ts +1 -0
  46. package/src/assets/i18n/en.ts +4 -0
  47. package/src/assets/version.ts +1 -1
@@ -22,8 +22,9 @@ export class AutocompleteTextareaComponent {
22
22
  this.valueChange = new EventEmitter();
23
23
  this.send = new EventEmitter();
24
24
  this.userMentions = new EventEmitter();
25
- this.labelKey = 'autocompleteLabel';
25
+ this.autocompleteKey = 'autocompleteLabel';
26
26
  this.mentionTriggerChar = '@';
27
+ this.commandTriggerChar = '/';
27
28
  this.autocompleteConfig = {
28
29
  mentions: [],
29
30
  };
@@ -32,7 +33,15 @@ export class AutocompleteTextareaComponent {
32
33
  this.userMentionConfig = {
33
34
  triggerChar: this.mentionTriggerChar,
34
35
  dropUp: true,
35
- labelKey: this.labelKey,
36
+ labelKey: this.autocompleteKey,
37
+ returnTrigger: true,
38
+ mentionFilter: (searchString, items) => this.filter(searchString, items),
39
+ mentionSelect: (item, triggerChar) => this.itemSelectedFromAutocompleteList(item, triggerChar),
40
+ };
41
+ this.slashCommandConfig = {
42
+ triggerChar: this.commandTriggerChar,
43
+ dropUp: true,
44
+ labelKey: 'name',
36
45
  returnTrigger: true,
37
46
  mentionFilter: (searchString, items) => this.filter(searchString, items),
38
47
  mentionSelect: (item, triggerChar) => this.itemSelectedFromAutocompleteList(item, triggerChar),
@@ -45,20 +54,30 @@ export class AutocompleteTextareaComponent {
45
54
  void this.updateMentionOptions(searchTerm);
46
55
  }
47
56
  });
48
- this.subscriptions.push(this.channelService.activeChannel$.subscribe(() => {
57
+ this.subscriptions.push(this.channelService.activeChannel$.subscribe((channel) => {
58
+ var _a;
59
+ const commands = ((_a = channel === null || channel === void 0 ? void 0 : channel.getConfig()) === null || _a === void 0 ? void 0 : _a.commands) || [];
60
+ this.slashCommandConfig.items = commands.map((c) => (Object.assign(Object.assign({}, c), { [this.autocompleteKey]: c.name, type: 'command' })));
49
61
  this.mentionedUsers = [];
50
62
  this.userMentions.next([...this.mentionedUsers]);
51
63
  void this.updateMentionOptions(this.searchTerm$.getValue());
52
64
  }));
65
+ this.autocompleteConfig.mentions = [
66
+ this.userMentionConfig,
67
+ this.slashCommandConfig,
68
+ ];
53
69
  }
54
70
  ngOnChanges(changes) {
55
71
  if (changes.areMentionsEnabled) {
56
72
  if (this.areMentionsEnabled) {
57
- this.autocompleteConfig.mentions = [this.userMentionConfig];
73
+ this.autocompleteConfig.mentions = [
74
+ this.userMentionConfig,
75
+ this.slashCommandConfig,
76
+ ];
58
77
  this.autocompleteConfig = Object.assign({}, this.autocompleteConfig);
59
78
  }
60
79
  else {
61
- this.autocompleteConfig.mentions = [];
80
+ this.autocompleteConfig.mentions = [this.slashCommandConfig];
62
81
  this.autocompleteConfig = Object.assign({}, this.autocompleteConfig);
63
82
  }
64
83
  }
@@ -74,7 +93,9 @@ export class AutocompleteTextareaComponent {
74
93
  this.mentionedUsers.push((item.user ? item.user : item));
75
94
  this.userMentions.next([...this.mentionedUsers]);
76
95
  }
77
- return triggerChar + item.autocompleteLabel;
96
+ return (triggerChar +
97
+ item.autocompleteLabel +
98
+ (triggerChar === this.commandTriggerChar ? ' ' : ''));
78
99
  }
79
100
  autcompleteSearchTermChanged(searchTerm) {
80
101
  if (searchTerm === this.mentionTriggerChar) {
@@ -118,7 +139,10 @@ export class AutocompleteTextareaComponent {
118
139
  return Object.assign(Object.assign({}, i), { autocompleteLabel: user.name || user.id, type: 'mention' });
119
140
  }));
120
141
  this.userMentionConfig.items = items;
121
- this.autocompleteConfig.mentions = [this.userMentionConfig];
142
+ this.autocompleteConfig.mentions = [
143
+ this.userMentionConfig,
144
+ this.slashCommandConfig,
145
+ ];
122
146
  this.autocompleteConfig = Object.assign({}, this.autocompleteConfig);
123
147
  });
124
148
  }
@@ -137,7 +161,7 @@ export class AutocompleteTextareaComponent {
137
161
  }
138
162
  }
139
163
  AutocompleteTextareaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: AutocompleteTextareaComponent, deps: [{ token: i1.ChannelService }, { token: i2.ChatClientService }, { token: i3.TransliterationService }], target: i0.ɵɵFactoryTarget.Component });
140
- AutocompleteTextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: AutocompleteTextareaComponent, selector: "stream-autocomplete-textarea", inputs: { value: "value", areMentionsEnabled: "areMentionsEnabled", mentionAutocompleteItemTemplate: "mentionAutocompleteItemTemplate", mentionScope: "mentionScope" }, outputs: { valueChange: "valueChange", send: "send", userMentions: "userMentions" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "messageInput", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<textarea\n [value]=\"value || ''\"\n autofocus\n data-testid=\"textarea\"\n #input\n placeholder=\"{{ 'streamChat.Type your message' | translate }}\"\n class=\"rta__textarea str-chat__textarea__textarea\"\n rows=\"1\"\n (input)=\"inputChanged()\"\n (keydown.enter)=\"sent($event)\"\n [mentionConfig]=\"autocompleteConfig\"\n (searchTerm)=\"autcompleteSearchTermChanged($event)\"\n [mentionListTemplate]=\"autocompleteItem\"\n (blur)=\"inputLeft()\"\n></textarea>\n<ng-template #autocompleteItem let-item=\"item\">\n <div class=\"rta rta__item str-chat__emojisearch__item\" [ngSwitch]=\"item.type\">\n <div class=\"rta__entity\" *ngSwitchCase=\"'mention'\">\n <ng-container\n *ngTemplateOutlet=\"\n mentionAutocompleteItemTemplate || defaultMentionTemplate;\n context: { item: item }\n \"\n ></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #defaultMentionTemplate let-item=\"item\">\n <div class=\"str-chat__user-item\">\n <stream-avatar\n data-testclass=\"avatar\"\n class=\"str-chat__avatar str-chat__avatar--circle\"\n style=\"height: 20px\"\n [size]=\"20\"\n [imageUrl]=\"item.image || item.user?.image\"\n [name]=\"item.autocompleteLabel\"\n ></stream-avatar>\n <span data-testclass=\"username\" class=\"str-chat__user-item--name\">{{\n item.autocompleteLabel\n }}</span>\n </div>\n</ng-template>\n", components: [{ type: i4.AvatarComponent, selector: "stream-avatar", inputs: ["name", "imageUrl", "size"] }], directives: [{ type: i5.MentionDirective, selector: "[mention], [mentionConfig]", inputs: ["mentionConfig", "mention", "mentionListTemplate"], outputs: ["searchTerm", "itemSelected", "opened", "closed"] }, { type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "translate": i7.TranslatePipe } });
164
+ AutocompleteTextareaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: AutocompleteTextareaComponent, selector: "stream-autocomplete-textarea", inputs: { value: "value", areMentionsEnabled: "areMentionsEnabled", mentionAutocompleteItemTemplate: "mentionAutocompleteItemTemplate", commandAutocompleteItemTemplate: "commandAutocompleteItemTemplate", mentionScope: "mentionScope" }, outputs: { valueChange: "valueChange", send: "send", userMentions: "userMentions" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "messageInput", first: true, predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<textarea\n [value]=\"value || ''\"\n autofocus\n data-testid=\"textarea\"\n #input\n placeholder=\"{{ 'streamChat.Type your message' | translate }}\"\n class=\"rta__textarea str-chat__textarea__textarea\"\n rows=\"1\"\n (input)=\"inputChanged()\"\n (keydown.enter)=\"sent($event)\"\n [mentionConfig]=\"autocompleteConfig\"\n (searchTerm)=\"autcompleteSearchTermChanged($event)\"\n [mentionListTemplate]=\"autocompleteItem\"\n (blur)=\"inputLeft()\"\n></textarea>\n<ng-template #autocompleteItem let-item=\"item\">\n <div class=\"rta rta__item str-chat__emojisearch__item\" [ngSwitch]=\"item.type\">\n <div class=\"rta__entity\" *ngSwitchCase=\"'mention'\">\n <ng-container\n *ngTemplateOutlet=\"\n mentionAutocompleteItemTemplate || defaultMentionTemplate;\n context: { item: item }\n \"\n ></ng-container>\n </div>\n <div class=\"rta__entity\" *ngSwitchCase=\"'command'\">\n <ng-container\n *ngTemplateOutlet=\"\n commandAutocompleteItemTemplate || defaultCommandTemplate;\n context: { item: item }\n \"\n ></ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #defaultCommandTemplate let-item=\"item\">\n <div class=\"str-chat__slash-command\">\n <span class=\"str-chat__slash-command-header\">\n <strong data-testclass=\"command-name\">{{ item.name }}</strong>\n {{ item.args }}\n </span>\n <br />\n <span class=\"str-chat__slash-command-description\">{{\n item.description\n }}</span>\n </div>\n</ng-template>\n\n<ng-template #defaultMentionTemplate let-item=\"item\">\n <div class=\"str-chat__user-item\">\n <stream-avatar\n data-testclass=\"avatar\"\n class=\"str-chat__avatar str-chat__avatar--circle\"\n style=\"height: 20px\"\n [size]=\"20\"\n [imageUrl]=\"item.image || item.user?.image\"\n [name]=\"item.autocompleteLabel\"\n ></stream-avatar>\n <span data-testclass=\"username\" class=\"str-chat__user-item--name\">{{\n item.autocompleteLabel\n }}</span>\n </div>\n</ng-template>\n", components: [{ type: i4.AvatarComponent, selector: "stream-avatar", inputs: ["name", "imageUrl", "size"] }], directives: [{ type: i5.MentionDirective, selector: "[mention], [mentionConfig]", inputs: ["mentionConfig", "mention", "mentionListTemplate"], outputs: ["searchTerm", "itemSelected", "opened", "closed"] }, { type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "translate": i7.TranslatePipe } });
141
165
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: AutocompleteTextareaComponent, decorators: [{
142
166
  type: Component,
143
167
  args: [{
@@ -153,6 +177,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
153
177
  type: Input
154
178
  }], mentionAutocompleteItemTemplate: [{
155
179
  type: Input
180
+ }], commandAutocompleteItemTemplate: [{
181
+ type: Input
156
182
  }], mentionScope: [{
157
183
  type: Input
158
184
  }], valueChange: [{
@@ -165,4 +191,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
165
191
  type: ViewChild,
166
192
  args: ['input']
167
193
  }] } });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXRleHRhcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWlucHV0L2F1dG9jb21wbGV0ZS10ZXh0YXJlYS9hdXRvY29tcGxldGUtdGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtaW5wdXQvYXV0b2NvbXBsZXRlLXRleHRhcmVhL2F1dG9jb21wbGV0ZS10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBT3ZCLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBS3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBUXBFLE1BQU0sT0FBTyw2QkFBNkI7SUFtQ3hDLFlBQ1UsY0FBOEIsRUFDOUIsaUJBQW9DLEVBQ3BDLHNCQUE4QztRQUY5QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBbkN6QyxVQUFLLEdBQUcsb0JBQW9CLENBQUM7UUFDbkMsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLHVCQUFrQixHQUF3QixJQUFJLENBQUM7UUFJL0MsaUJBQVksR0FBOEIsU0FBUyxDQUFDO1FBQzFDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN6QyxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVEs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K0I7c0JBQXZDLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSztnQkFDYSxXQUFXO3NCQUE3QixNQUFNO2dCQUNZLElBQUk7c0JBQXRCLE1BQU07Z0JBQ1ksWUFBWTtzQkFBOUIsTUFBTTtnQkFNcUIsWUFBWTtzQkFBdkMsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudGlvbkNvbmZpZywgTWVudGlvbnMgfSBmcm9tICdhbmd1bGFyLW1lbnRpb25zJztcbmltcG9ydCB7XG4gIE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtQ29udGV4dCxcbiAgTWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW0sXG59IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IFRleHRhcmVhSW50ZXJmYWNlIH0gZnJvbSAnLi4vdGV4dGFyZWEuaW50ZXJmYWNlJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVHJhbnNsaXRlcmF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3RyYW5zbGl0ZXJhdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLWF1dG9jb21wbGV0ZS10ZXh0YXJlYScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUtdGV4dGFyZWEuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVUZXh0YXJlYUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIFRleHRhcmVhSW50ZXJmYWNlLCBPbkNoYW5nZXNcbntcbiAgQEhvc3RCaW5kaW5nKCkgY2xhc3MgPSAnc3RyLWNoYXRfX3RleHRhcmVhJztcbiAgQElucHV0KCkgdmFsdWUgPSAnJztcbiAgQElucHV0KCkgYXJlTWVudGlvbnNFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdHJ1ZTtcbiAgQElucHV0KCkgbWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZTpcbiAgICB8IFRlbXBsYXRlUmVmPE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtQ29udGV4dD5cbiAgICB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgbWVudGlvblNjb3BlOiAnY2hhbm5lbCcgfCAnYXBwbGljYXRpb24nID0gJ2NoYW5uZWwnO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbmQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSB1c2VyTWVudGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXJSZXNwb25zZVtdPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxhYmVsS2V5ID0gJ2F1dG9jb21wbGV0ZUxhYmVsJztcbiAgcHJpdmF0ZSByZWFkb25seSBtZW50aW9uVHJpZ2dlckNoYXIgPSAnQCc7XG4gIGF1dG9jb21wbGV0ZUNvbmZpZzogTWVudGlvbkNvbmZpZyA9IHtcbiAgICBtZW50aW9uczogW10sXG4gIH07XG4gIEBWaWV3Q2hpbGQoJ2lucHV0JykgcHJpdmF0ZSBtZXNzYWdlSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgbWVudGlvbmVkVXNlcnM6IFVzZXJSZXNwb25zZVtdID0gW107XG4gIHByaXZhdGUgdXNlck1lbnRpb25Db25maWc6IE1lbnRpb25zID0ge1xuICAgIHRyaWdnZXJDaGFyOiB0aGlzLm1lbnRpb25UcmlnZ2VyQ2hhcixcbiAgICBkcm9wVXA6IHRydWUsXG4gICAgbGFiZWxLZXk6IHRoaXMubGFiZWxLZXksXG4gICAgcmV0dXJuVHJpZ2dlcjogdHJ1ZSxcbiAgICBtZW50aW9uRmlsdGVyOiAoXG4gICAgICBzZWFyY2hTdHJpbmc6IHN0cmluZyxcbiAgICAgIGl0ZW1zOiB7IGF1dG9jb21wbGV0ZUxhYmVsOiBzdHJpbmcgfVtdXG4gICAgKSA9PiB0aGlzLmZpbHRlcihzZWFyY2hTdHJpbmcsIGl0ZW1zKSxcbiAgICBtZW50aW9uU2VsZWN0OiAoaXRlbSwgdHJpZ2dlckNoYXIpID0+XG4gICAgICB0aGlzLml0ZW1TZWxlY3RlZEZyb21BdXRvY29tcGxldGVMaXN0KGl0ZW0sIHRyaWdnZXJDaGFyKSxcbiAgfTtcbiAgcHJpdmF0ZSBzZWFyY2hUZXJtJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGF0Q2xpZW50U2VydmljZTogQ2hhdENsaWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xpdGVyYXRpb25TZXJ2aWNlOiBUcmFuc2xpdGVyYXRpb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc2VhcmNoVGVybSRcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgzMDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZSgoc2VhcmNoVGVybSkgPT4ge1xuICAgICAgICBpZiAoc2VhcmNoVGVybS5zdGFydHNXaXRoKHRoaXMubWVudGlvblRyaWdnZXJDaGFyKSkge1xuICAgICAgICAgIHZvaWQgdGhpcy51cGRhdGVNZW50aW9uT3B0aW9ucyhzZWFyY2hUZXJtKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubWVudGlvbmVkVXNlcnMgPSBbXTtcbiAgICAgICAgdGhpcy51c2VyTWVudGlvbnMubmV4dChbLi4udGhpcy5tZW50aW9uZWRVc2Vyc10pO1xuICAgICAgICB2b2lkIHRoaXMudXBkYXRlTWVudGlvbk9wdGlvbnModGhpcy5zZWFyY2hUZXJtJC5nZXRWYWx1ZSgpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5hcmVNZW50aW9uc0VuYWJsZWQpIHtcbiAgICAgIGlmICh0aGlzLmFyZU1lbnRpb25zRW5hYmxlZCkge1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbmZpZy5tZW50aW9ucyA9IFt0aGlzLnVzZXJNZW50aW9uQ29uZmlnXTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb25maWcgPSB7IC4uLnRoaXMuYXV0b2NvbXBsZXRlQ29uZmlnIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbmZpZy5tZW50aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbmZpZyA9IHsgLi4udGhpcy5hdXRvY29tcGxldGVDb25maWcgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWVudGlvblNjb3BlKSB7XG4gICAgICB2b2lkIHRoaXMudXBkYXRlTWVudGlvbk9wdGlvbnModGhpcy5zZWFyY2hUZXJtJC5nZXRWYWx1ZSgpKTtcbiAgICB9XG4gIH1cblxuICBmaWx0ZXIoc2VhcmNoU3RyaW5nOiBzdHJpbmcsIGl0ZW1zOiB7IGF1dG9jb21wbGV0ZUxhYmVsOiBzdHJpbmcgfVtdKSB7XG4gICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbSkgPT5cbiAgICAgIHRoaXMudHJhbnNsaXRlcmF0ZShpdGVtLmF1dG9jb21wbGV0ZUxhYmVsLnRvTG93ZXJDYXNlKCkpLmluY2x1ZGVzKFxuICAgICAgICB0aGlzLnRyYW5zbGl0ZXJhdGUoc2VhcmNoU3RyaW5nLnRvTG93ZXJDYXNlKCkpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGl0ZW1TZWxlY3RlZEZyb21BdXRvY29tcGxldGVMaXN0KFxuICAgIGl0ZW06IE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtLFxuICAgIHRyaWdnZXJDaGFyID0gJydcbiAgKSB7XG4gICAgaWYgKHRyaWdnZXJDaGFyID09PSB0aGlzLm1lbnRpb25UcmlnZ2VyQ2hhcikge1xuICAgICAgdGhpcy5tZW50aW9uZWRVc2Vycy5wdXNoKChpdGVtLnVzZXIgPyBpdGVtLnVzZXIgOiBpdGVtKSBhcyBVc2VyUmVzcG9uc2UpO1xuICAgICAgdGhpcy51c2VyTWVudGlvbnMubmV4dChbLi4udGhpcy5tZW50aW9uZWRVc2Vyc10pO1xuICAgIH1cbiAgICByZXR1cm4gdHJpZ2dlckNoYXIgKyBpdGVtLmF1dG9jb21wbGV0ZUxhYmVsO1xuICB9XG5cbiAgYXV0Y29tcGxldGVTZWFyY2hUZXJtQ2hhbmdlZChzZWFyY2hUZXJtOiBzdHJpbmcpIHtcbiAgICBpZiAoc2VhcmNoVGVybSA9PT0gdGhpcy5tZW50aW9uVHJpZ2dlckNoYXIpIHtcbiAgICAgIHZvaWQgdGhpcy51cGRhdGVNZW50aW9uT3B0aW9ucygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlYXJjaFRlcm0kLm5leHQoc2VhcmNoVGVybSk7XG4gICAgfVxuICB9XG5cbiAgaW5wdXRDaGFuZ2VkKCkge1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLm1lc3NhZ2VJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlKTtcbiAgfVxuXG4gIGlucHV0TGVmdCgpIHtcbiAgICB0aGlzLnVwZGF0ZU1lbnRpb25lZFVzZXJzRnJvbVRleHQoKTtcbiAgfVxuXG4gIHNlbnQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnVwZGF0ZU1lbnRpb25lZFVzZXJzRnJvbVRleHQoKTtcbiAgICB0aGlzLnNlbmQubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2xpdGVyYXRlKHM6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnRyYW5zbGl0ZXJhdGlvblNlcnZpY2UpIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYW5zbGl0ZXJhdGlvblNlcnZpY2UudHJhbnNsaXRlcmF0ZShzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVNZW50aW9uT3B0aW9ucyhzZWFyY2hUZXJtPzogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLmFyZU1lbnRpb25zRW5hYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZWFyY2hUZXJtID0gc2VhcmNoVGVybT8ucmVwbGFjZSh0aGlzLm1lbnRpb25UcmlnZ2VyQ2hhciwgJycpO1xuICAgIGNvbnN0IHJlcXVlc3QgPVxuICAgICAgdGhpcy5tZW50aW9uU2NvcGUgPT09ICdhcHBsaWNhdGlvbidcbiAgICAgICAgPyAoczogc3RyaW5nKSA9PiB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmF1dG9jb21wbGV0ZVVzZXJzKHMpXG4gICAgICAgIDogKHM6IHN0cmluZykgPT4gdGhpcy5jaGFubmVsU2VydmljZS5hdXRvY29tcGxldGVNZW1iZXJzKHMpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlcXVlc3Qoc2VhcmNoVGVybSB8fCAnJyk7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmZpbHRlcihcbiAgICAgIHNlYXJjaFRlcm0gfHwgJycsXG4gICAgICByZXN1bHQubWFwKChpKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSAoaS51c2VyID8gaS51c2VyIDogaSkgYXMgVXNlclJlc3BvbnNlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmksXG4gICAgICAgICAgYXV0b2NvbXBsZXRlTGFiZWw6IHVzZXIubmFtZSB8fCB1c2VyLmlkLFxuICAgICAgICAgIHR5cGU6ICdtZW50aW9uJyxcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnVzZXJNZW50aW9uQ29uZmlnLml0ZW1zID0gaXRlbXM7XG4gICAgdGhpcy5hdXRvY29tcGxldGVDb25maWcubWVudGlvbnMgPSBbdGhpcy51c2VyTWVudGlvbkNvbmZpZ107XG4gICAgdGhpcy5hdXRvY29tcGxldGVDb25maWcgPSB7IC4uLnRoaXMuYXV0b2NvbXBsZXRlQ29uZmlnIH07XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1lbnRpb25lZFVzZXJzRnJvbVRleHQoKSB7XG4gICAgY29uc3QgdXBkYXRlZE1lbnRpb25lZFVzZXJzOiBVc2VyUmVzcG9uc2VbXSA9IFtdO1xuICAgIHRoaXMubWVudGlvbmVkVXNlcnMuZm9yRWFjaCgodSkgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gdS5uYW1lIHx8IHUuaWQ7XG4gICAgICBpZiAodGhpcy52YWx1ZS5pbmNsdWRlcyhgJHt0aGlzLm1lbnRpb25UcmlnZ2VyQ2hhcn0ke2tleX1gKSkge1xuICAgICAgICB1cGRhdGVkTWVudGlvbmVkVXNlcnMucHVzaCh1KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAodXBkYXRlZE1lbnRpb25lZFVzZXJzLmxlbmd0aCAhPT0gdGhpcy5tZW50aW9uZWRVc2Vycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudXNlck1lbnRpb25zLm5leHQoWy4uLnVwZGF0ZWRNZW50aW9uZWRVc2Vyc10pO1xuICAgICAgdGhpcy5tZW50aW9uZWRVc2VycyA9IHVwZGF0ZWRNZW50aW9uZWRVc2VycztcbiAgICB9XG4gIH1cbn1cbiIsIjx0ZXh0YXJlYVxuICBbdmFsdWVdPVwidmFsdWUgfHwgJydcIlxuICBhdXRvZm9jdXNcbiAgZGF0YS10ZXN0aWQ9XCJ0ZXh0YXJlYVwiXG4gICNpbnB1dFxuICBwbGFjZWhvbGRlcj1cInt7ICdzdHJlYW1DaGF0LlR5cGUgeW91ciBtZXNzYWdlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gIGNsYXNzPVwicnRhX190ZXh0YXJlYSBzdHItY2hhdF9fdGV4dGFyZWFfX3RleHRhcmVhXCJcbiAgcm93cz1cIjFcIlxuICAoaW5wdXQpPVwiaW5wdXRDaGFuZ2VkKClcIlxuICAoa2V5ZG93bi5lbnRlcik9XCJzZW50KCRldmVudClcIlxuICBbbWVudGlvbkNvbmZpZ109XCJhdXRvY29tcGxldGVDb25maWdcIlxuICAoc2VhcmNoVGVybSk9XCJhdXRjb21wbGV0ZVNlYXJjaFRlcm1DaGFuZ2VkKCRldmVudClcIlxuICBbbWVudGlvbkxpc3RUZW1wbGF0ZV09XCJhdXRvY29tcGxldGVJdGVtXCJcbiAgKGJsdXIpPVwiaW5wdXRMZWZ0KClcIlxuPjwvdGV4dGFyZWE+XG48bmctdGVtcGxhdGUgI2F1dG9jb21wbGV0ZUl0ZW0gbGV0LWl0ZW09XCJpdGVtXCI+XG4gIDxkaXYgY2xhc3M9XCJydGEgcnRhX19pdGVtIHN0ci1jaGF0X19lbW9qaXNlYXJjaF9faXRlbVwiIFtuZ1N3aXRjaF09XCJpdGVtLnR5cGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwicnRhX19lbnRpdHlcIiAqbmdTd2l0Y2hDYXNlPVwiJ21lbnRpb24nXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgbWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSB8fCBkZWZhdWx0TWVudGlvblRlbXBsYXRlO1xuICAgICAgICAgIGNvbnRleHQ6IHsgaXRlbTogaXRlbSB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0TWVudGlvblRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3VzZXItaXRlbVwiPlxuICAgIDxzdHJlYW0tYXZhdGFyXG4gICAgICBkYXRhLXRlc3RjbGFzcz1cImF2YXRhclwiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19hdmF0YXIgc3RyLWNoYXRfX2F2YXRhci0tY2lyY2xlXCJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiAyMHB4XCJcbiAgICAgIFtzaXplXT1cIjIwXCJcbiAgICAgIFtpbWFnZVVybF09XCJpdGVtLmltYWdlIHx8IGl0ZW0udXNlcj8uaW1hZ2VcIlxuICAgICAgW25hbWVdPVwiaXRlbS5hdXRvY29tcGxldGVMYWJlbFwiXG4gICAgPjwvc3RyZWFtLWF2YXRhcj5cbiAgICA8c3BhbiBkYXRhLXRlc3RjbGFzcz1cInVzZXJuYW1lXCIgY2xhc3M9XCJzdHItY2hhdF9fdXNlci1pdGVtLS1uYW1lXCI+e3tcbiAgICAgIGl0ZW0uYXV0b2NvbXBsZXRlTGFiZWxcbiAgICB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXRleHRhcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWlucHV0L2F1dG9jb21wbGV0ZS10ZXh0YXJlYS9hdXRvY29tcGxldGUtdGV4dGFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtaW5wdXQvYXV0b2NvbXBsZXRlLXRleHRhcmVhL2F1dG9jb21wbGV0ZS10ZXh0YXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBUXZCLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBS3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBUXBFLE1BQU0sT0FBTyw2QkFBNkI7SUFtRHhDLFlBQ1UsY0FBOEIsRUFDOUIsaUJBQW9DLEVBQ3BDLHNCQUE4QztRQUY5QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBbkR6QyxVQUFLLEdBQUcsb0JBQW9CLENBQUM7UUFDbkMsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLHVCQUFrQixHQUF3QixJQUFJLENBQUM7UUFPL0MsaUJBQVksR0FBOEIsU0FBUyxDQUFDO1FBQzFDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN6QyxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVEs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QXZDLEtBQUs7Z0JBR0csK0JBQStCO3NCQUF2QyxLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ2EsV0FBVztzQkFBN0IsTUFBTTtnQkFDWSxJQUFJO3NCQUF0QixNQUFNO2dCQUNZLFlBQVk7c0JBQTlCLE1BQU07Z0JBT3FCLFlBQVk7c0JBQXZDLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lbnRpb25Db25maWcsIE1lbnRpb25zIH0gZnJvbSAnYW5ndWxhci1tZW50aW9ucyc7XG5pbXBvcnQge1xuICBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbUNvbnRleHQsXG4gIE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtLFxuICBDb21tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW1Db250ZXh0LFxufSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVc2VyUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uLy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBUZXh0YXJlYUludGVyZmFjZSB9IGZyb20gJy4uL3RleHRhcmVhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRyYW5zbGl0ZXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi90cmFuc2xpdGVyYXRpb24uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1hdXRvY29tcGxldGUtdGV4dGFyZWEnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLXRleHRhcmVhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlVGV4dGFyZWFDb21wb25lbnRcbiAgaW1wbGVtZW50cyBUZXh0YXJlYUludGVyZmFjZSwgT25DaGFuZ2VzXG57XG4gIEBIb3N0QmluZGluZygpIGNsYXNzID0gJ3N0ci1jaGF0X190ZXh0YXJlYSc7XG4gIEBJbnB1dCgpIHZhbHVlID0gJyc7XG4gIEBJbnB1dCgpIGFyZU1lbnRpb25zRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHRydWU7XG4gIEBJbnB1dCgpIG1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGU6XG4gICAgfCBUZW1wbGF0ZVJlZjxNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbUNvbnRleHQ+XG4gICAgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGU6XG4gICAgfCBUZW1wbGF0ZVJlZjxDb21tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW1Db250ZXh0PlxuICAgIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBtZW50aW9uU2NvcGU6ICdjaGFubmVsJyB8ICdhcHBsaWNhdGlvbicgPSAnY2hhbm5lbCc7XG4gIEBPdXRwdXQoKSByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHVzZXJNZW50aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXI8VXNlclJlc3BvbnNlW10+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0b2NvbXBsZXRlS2V5ID0gJ2F1dG9jb21wbGV0ZUxhYmVsJztcbiAgcHJpdmF0ZSByZWFkb25seSBtZW50aW9uVHJpZ2dlckNoYXIgPSAnQCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29tbWFuZFRyaWdnZXJDaGFyID0gJy8nO1xuICBhdXRvY29tcGxldGVDb25maWc6IE1lbnRpb25Db25maWcgPSB7XG4gICAgbWVudGlvbnM6IFtdLFxuICB9O1xuICBAVmlld0NoaWxkKCdpbnB1dCcpIHByaXZhdGUgbWVzc2FnZUlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIG1lbnRpb25lZFVzZXJzOiBVc2VyUmVzcG9uc2VbXSA9IFtdO1xuICBwcml2YXRlIHVzZXJNZW50aW9uQ29uZmlnOiBNZW50aW9ucyA9IHtcbiAgICB0cmlnZ2VyQ2hhcjogdGhpcy5tZW50aW9uVHJpZ2dlckNoYXIsXG4gICAgZHJvcFVwOiB0cnVlLFxuICAgIGxhYmVsS2V5OiB0aGlzLmF1dG9jb21wbGV0ZUtleSxcbiAgICByZXR1cm5UcmlnZ2VyOiB0cnVlLFxuICAgIG1lbnRpb25GaWx0ZXI6IChcbiAgICAgIHNlYXJjaFN0cmluZzogc3RyaW5nLFxuICAgICAgaXRlbXM6IHsgYXV0b2NvbXBsZXRlTGFiZWw6IHN0cmluZyB9W11cbiAgICApID0+IHRoaXMuZmlsdGVyKHNlYXJjaFN0cmluZywgaXRlbXMpLFxuICAgIG1lbnRpb25TZWxlY3Q6IChpdGVtLCB0cmlnZ2VyQ2hhcikgPT5cbiAgICAgIHRoaXMuaXRlbVNlbGVjdGVkRnJvbUF1dG9jb21wbGV0ZUxpc3QoaXRlbSwgdHJpZ2dlckNoYXIpLFxuICB9O1xuICBwcml2YXRlIHNsYXNoQ29tbWFuZENvbmZpZzogTWVudGlvbnMgPSB7XG4gICAgdHJpZ2dlckNoYXI6IHRoaXMuY29tbWFuZFRyaWdnZXJDaGFyLFxuICAgIGRyb3BVcDogdHJ1ZSxcbiAgICBsYWJlbEtleTogJ25hbWUnLFxuICAgIHJldHVyblRyaWdnZXI6IHRydWUsXG4gICAgbWVudGlvbkZpbHRlcjogKFxuICAgICAgc2VhcmNoU3RyaW5nOiBzdHJpbmcsXG4gICAgICBpdGVtczogeyBhdXRvY29tcGxldGVMYWJlbDogc3RyaW5nIH1bXVxuICAgICkgPT4gdGhpcy5maWx0ZXIoc2VhcmNoU3RyaW5nLCBpdGVtcyksXG4gICAgbWVudGlvblNlbGVjdDogKGl0ZW0sIHRyaWdnZXJDaGFyKSA9PlxuICAgICAgdGhpcy5pdGVtU2VsZWN0ZWRGcm9tQXV0b2NvbXBsZXRlTGlzdChpdGVtLCB0cmlnZ2VyQ2hhciksXG4gIH07XG4gIHByaXZhdGUgc2VhcmNoVGVybSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhdENsaWVudFNlcnZpY2U6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsaXRlcmF0aW9uU2VydmljZTogVHJhbnNsaXRlcmF0aW9uU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNlYXJjaFRlcm0kXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHNlYXJjaFRlcm0pID0+IHtcbiAgICAgICAgaWYgKHNlYXJjaFRlcm0uc3RhcnRzV2l0aCh0aGlzLm1lbnRpb25UcmlnZ2VyQ2hhcikpIHtcbiAgICAgICAgICB2b2lkIHRoaXMudXBkYXRlTWVudGlvbk9wdGlvbnMoc2VhcmNoVGVybSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsJC5zdWJzY3JpYmUoKGNoYW5uZWwpID0+IHtcbiAgICAgICAgY29uc3QgY29tbWFuZHMgPSBjaGFubmVsPy5nZXRDb25maWcoKT8uY29tbWFuZHMgfHwgW107XG4gICAgICAgIHRoaXMuc2xhc2hDb21tYW5kQ29uZmlnLml0ZW1zID0gY29tbWFuZHMubWFwKChjKSA9PiAoe1xuICAgICAgICAgIC4uLmMsXG4gICAgICAgICAgW3RoaXMuYXV0b2NvbXBsZXRlS2V5XTogYy5uYW1lLFxuICAgICAgICAgIHR5cGU6ICdjb21tYW5kJyxcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLm1lbnRpb25lZFVzZXJzID0gW107XG4gICAgICAgIHRoaXMudXNlck1lbnRpb25zLm5leHQoWy4uLnRoaXMubWVudGlvbmVkVXNlcnNdKTtcbiAgICAgICAgdm9pZCB0aGlzLnVwZGF0ZU1lbnRpb25PcHRpb25zKHRoaXMuc2VhcmNoVGVybSQuZ2V0VmFsdWUoKSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVDb25maWcubWVudGlvbnMgPSBbXG4gICAgICB0aGlzLnVzZXJNZW50aW9uQ29uZmlnLFxuICAgICAgdGhpcy5zbGFzaENvbW1hbmRDb25maWcsXG4gICAgXTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5hcmVNZW50aW9uc0VuYWJsZWQpIHtcbiAgICAgIGlmICh0aGlzLmFyZU1lbnRpb25zRW5hYmxlZCkge1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbmZpZy5tZW50aW9ucyA9IFtcbiAgICAgICAgICB0aGlzLnVzZXJNZW50aW9uQ29uZmlnLFxuICAgICAgICAgIHRoaXMuc2xhc2hDb21tYW5kQ29uZmlnLFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbmZpZyA9IHsgLi4udGhpcy5hdXRvY29tcGxldGVDb25maWcgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29uZmlnLm1lbnRpb25zID0gW3RoaXMuc2xhc2hDb21tYW5kQ29uZmlnXTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb25maWcgPSB7IC4uLnRoaXMuYXV0b2NvbXBsZXRlQ29uZmlnIH07XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLm1lbnRpb25TY29wZSkge1xuICAgICAgdm9pZCB0aGlzLnVwZGF0ZU1lbnRpb25PcHRpb25zKHRoaXMuc2VhcmNoVGVybSQuZ2V0VmFsdWUoKSk7XG4gICAgfVxuICB9XG5cbiAgZmlsdGVyKHNlYXJjaFN0cmluZzogc3RyaW5nLCBpdGVtczogeyBhdXRvY29tcGxldGVMYWJlbDogc3RyaW5nIH1bXSkge1xuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+XG4gICAgICB0aGlzLnRyYW5zbGl0ZXJhdGUoaXRlbS5hdXRvY29tcGxldGVMYWJlbC50b0xvd2VyQ2FzZSgpKS5pbmNsdWRlcyhcbiAgICAgICAgdGhpcy50cmFuc2xpdGVyYXRlKHNlYXJjaFN0cmluZy50b0xvd2VyQ2FzZSgpKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBpdGVtU2VsZWN0ZWRGcm9tQXV0b2NvbXBsZXRlTGlzdChcbiAgICBpdGVtOiBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbSxcbiAgICB0cmlnZ2VyQ2hhciA9ICcnXG4gICkge1xuICAgIGlmICh0cmlnZ2VyQ2hhciA9PT0gdGhpcy5tZW50aW9uVHJpZ2dlckNoYXIpIHtcbiAgICAgIHRoaXMubWVudGlvbmVkVXNlcnMucHVzaCgoaXRlbS51c2VyID8gaXRlbS51c2VyIDogaXRlbSkgYXMgVXNlclJlc3BvbnNlKTtcbiAgICAgIHRoaXMudXNlck1lbnRpb25zLm5leHQoWy4uLnRoaXMubWVudGlvbmVkVXNlcnNdKTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHRyaWdnZXJDaGFyICtcbiAgICAgIGl0ZW0uYXV0b2NvbXBsZXRlTGFiZWwgK1xuICAgICAgKHRyaWdnZXJDaGFyID09PSB0aGlzLmNvbW1hbmRUcmlnZ2VyQ2hhciA/ICcgJyA6ICcnKVxuICAgICk7XG4gIH1cblxuICBhdXRjb21wbGV0ZVNlYXJjaFRlcm1DaGFuZ2VkKHNlYXJjaFRlcm06IHN0cmluZykge1xuICAgIGlmIChzZWFyY2hUZXJtID09PSB0aGlzLm1lbnRpb25UcmlnZ2VyQ2hhcikge1xuICAgICAgdm9pZCB0aGlzLnVwZGF0ZU1lbnRpb25PcHRpb25zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgICB9XG4gIH1cblxuICBpbnB1dENoYW5nZWQoKSB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMubWVzc2FnZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICB9XG5cbiAgaW5wdXRMZWZ0KCkge1xuICAgIHRoaXMudXBkYXRlTWVudGlvbmVkVXNlcnNGcm9tVGV4dCgpO1xuICB9XG5cbiAgc2VudChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMudXBkYXRlTWVudGlvbmVkVXNlcnNGcm9tVGV4dCgpO1xuICAgIHRoaXMuc2VuZC5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zbGl0ZXJhdGUoczogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMudHJhbnNsaXRlcmF0aW9uU2VydmljZSkge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsaXRlcmF0aW9uU2VydmljZS50cmFuc2xpdGVyYXRlKHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZU1lbnRpb25PcHRpb25zKHNlYXJjaFRlcm0/OiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuYXJlTWVudGlvbnNFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNlYXJjaFRlcm0gPSBzZWFyY2hUZXJtPy5yZXBsYWNlKHRoaXMubWVudGlvblRyaWdnZXJDaGFyLCAnJyk7XG4gICAgY29uc3QgcmVxdWVzdCA9XG4gICAgICB0aGlzLm1lbnRpb25TY29wZSA9PT0gJ2FwcGxpY2F0aW9uJ1xuICAgICAgICA/IChzOiBzdHJpbmcpID0+IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuYXV0b2NvbXBsZXRlVXNlcnMocylcbiAgICAgICAgOiAoczogc3RyaW5nKSA9PiB0aGlzLmNoYW5uZWxTZXJ2aWNlLmF1dG9jb21wbGV0ZU1lbWJlcnMocyk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVxdWVzdChzZWFyY2hUZXJtIHx8ICcnKTtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZmlsdGVyKFxuICAgICAgc2VhcmNoVGVybSB8fCAnJyxcbiAgICAgIHJlc3VsdC5tYXAoKGkpID0+IHtcbiAgICAgICAgY29uc3QgdXNlciA9IChpLnVzZXIgPyBpLnVzZXIgOiBpKSBhcyBVc2VyUmVzcG9uc2U7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uaSxcbiAgICAgICAgICBhdXRvY29tcGxldGVMYWJlbDogdXNlci5uYW1lIHx8IHVzZXIuaWQsXG4gICAgICAgICAgdHlwZTogJ21lbnRpb24nLFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMudXNlck1lbnRpb25Db25maWcuaXRlbXMgPSBpdGVtcztcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbmZpZy5tZW50aW9ucyA9IFtcbiAgICAgIHRoaXMudXNlck1lbnRpb25Db25maWcsXG4gICAgICB0aGlzLnNsYXNoQ29tbWFuZENvbmZpZyxcbiAgICBdO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29uZmlnID0geyAuLi50aGlzLmF1dG9jb21wbGV0ZUNvbmZpZyB9O1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVNZW50aW9uZWRVc2Vyc0Zyb21UZXh0KCkge1xuICAgIGNvbnN0IHVwZGF0ZWRNZW50aW9uZWRVc2VyczogVXNlclJlc3BvbnNlW10gPSBbXTtcbiAgICB0aGlzLm1lbnRpb25lZFVzZXJzLmZvckVhY2goKHUpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IHUubmFtZSB8fCB1LmlkO1xuICAgICAgaWYgKHRoaXMudmFsdWUuaW5jbHVkZXMoYCR7dGhpcy5tZW50aW9uVHJpZ2dlckNoYXJ9JHtrZXl9YCkpIHtcbiAgICAgICAgdXBkYXRlZE1lbnRpb25lZFVzZXJzLnB1c2godSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHVwZGF0ZWRNZW50aW9uZWRVc2Vycy5sZW5ndGggIT09IHRoaXMubWVudGlvbmVkVXNlcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnVzZXJNZW50aW9ucy5uZXh0KFsuLi51cGRhdGVkTWVudGlvbmVkVXNlcnNdKTtcbiAgICAgIHRoaXMubWVudGlvbmVkVXNlcnMgPSB1cGRhdGVkTWVudGlvbmVkVXNlcnM7XG4gICAgfVxuICB9XG59XG4iLCI8dGV4dGFyZWFcbiAgW3ZhbHVlXT1cInZhbHVlIHx8ICcnXCJcbiAgYXV0b2ZvY3VzXG4gIGRhdGEtdGVzdGlkPVwidGV4dGFyZWFcIlxuICAjaW5wdXRcbiAgcGxhY2Vob2xkZXI9XCJ7eyAnc3RyZWFtQ2hhdC5UeXBlIHlvdXIgbWVzc2FnZScgfCB0cmFuc2xhdGUgfX1cIlxuICBjbGFzcz1cInJ0YV9fdGV4dGFyZWEgc3RyLWNoYXRfX3RleHRhcmVhX190ZXh0YXJlYVwiXG4gIHJvd3M9XCIxXCJcbiAgKGlucHV0KT1cImlucHV0Q2hhbmdlZCgpXCJcbiAgKGtleWRvd24uZW50ZXIpPVwic2VudCgkZXZlbnQpXCJcbiAgW21lbnRpb25Db25maWddPVwiYXV0b2NvbXBsZXRlQ29uZmlnXCJcbiAgKHNlYXJjaFRlcm0pPVwiYXV0Y29tcGxldGVTZWFyY2hUZXJtQ2hhbmdlZCgkZXZlbnQpXCJcbiAgW21lbnRpb25MaXN0VGVtcGxhdGVdPVwiYXV0b2NvbXBsZXRlSXRlbVwiXG4gIChibHVyKT1cImlucHV0TGVmdCgpXCJcbj48L3RleHRhcmVhPlxuPG5nLXRlbXBsYXRlICNhdXRvY29tcGxldGVJdGVtIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8ZGl2IGNsYXNzPVwicnRhIHJ0YV9faXRlbSBzdHItY2hhdF9fZW1vamlzZWFyY2hfX2l0ZW1cIiBbbmdTd2l0Y2hdPVwiaXRlbS50eXBlXCI+XG4gICAgPGRpdiBjbGFzcz1cInJ0YV9fZW50aXR5XCIgKm5nU3dpdGNoQ2FzZT1cIidtZW50aW9uJ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIG1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGUgfHwgZGVmYXVsdE1lbnRpb25UZW1wbGF0ZTtcbiAgICAgICAgICBjb250ZXh0OiB7IGl0ZW06IGl0ZW0gfVxuICAgICAgICBcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJydGFfX2VudGl0eVwiICpuZ1N3aXRjaENhc2U9XCInY29tbWFuZCdcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICBjb21tYW5kQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlIHx8IGRlZmF1bHRDb21tYW5kVGVtcGxhdGU7XG4gICAgICAgICAgY29udGV4dDogeyBpdGVtOiBpdGVtIH1cbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRDb21tYW5kVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fc2xhc2gtY29tbWFuZFwiPlxuICAgIDxzcGFuIGNsYXNzPVwic3RyLWNoYXRfX3NsYXNoLWNvbW1hbmQtaGVhZGVyXCI+XG4gICAgICA8c3Ryb25nIGRhdGEtdGVzdGNsYXNzPVwiY29tbWFuZC1uYW1lXCI+e3sgaXRlbS5uYW1lIH19PC9zdHJvbmc+XG4gICAgICB7eyBpdGVtLmFyZ3MgfX1cbiAgICA8L3NwYW4+XG4gICAgPGJyIC8+XG4gICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fc2xhc2gtY29tbWFuZC1kZXNjcmlwdGlvblwiPnt7XG4gICAgICBpdGVtLmRlc2NyaXB0aW9uXG4gICAgfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0TWVudGlvblRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3VzZXItaXRlbVwiPlxuICAgIDxzdHJlYW0tYXZhdGFyXG4gICAgICBkYXRhLXRlc3RjbGFzcz1cImF2YXRhclwiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19hdmF0YXIgc3RyLWNoYXRfX2F2YXRhci0tY2lyY2xlXCJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiAyMHB4XCJcbiAgICAgIFtzaXplXT1cIjIwXCJcbiAgICAgIFtpbWFnZVVybF09XCJpdGVtLmltYWdlIHx8IGl0ZW0udXNlcj8uaW1hZ2VcIlxuICAgICAgW25hbWVdPVwiaXRlbS5hdXRvY29tcGxldGVMYWJlbFwiXG4gICAgPjwvc3RyZWFtLWF2YXRhcj5cbiAgICA8c3BhbiBkYXRhLXRlc3RjbGFzcz1cInVzZXJuYW1lXCIgY2xhc3M9XCJzdHItY2hhdF9fdXNlci1pdGVtLS1uYW1lXCI+e3tcbiAgICAgIGl0ZW0uYXV0b2NvbXBsZXRlTGFiZWxcbiAgICB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -16,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
16
16
  providedIn: 'root',
17
17
  }]
18
18
  }], ctorParameters: function () { return []; } });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1pbnB1dC1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWlucHV0L21lc3NhZ2UtaW5wdXQtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFNeEQsTUFBTSxPQUFPLHlCQUF5QjtJQWFwQztRQVpBLHdCQUFtQixHQUF3QixJQUFJLENBQUM7UUFDaEQsdUJBQWtCLEdBQXdCLElBQUksQ0FBQztRQVEvQyxnQ0FBMkIsR0FBd0IsSUFBSSxDQUFDO1FBQ3hELGlCQUFZLEdBQTBDLFNBQVMsQ0FBQztJQUVqRCxDQUFDOztzSEFiTCx5QkFBeUI7MEhBQXpCLHlCQUF5QixjQUZ4QixNQUFNOzJGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW1Db250ZXh0IH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZSB7XG4gIGlzRmlsZVVwbG9hZEVuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xuICBhcmVNZW50aW9uc0VuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xuICBtZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlOlxuICAgIHwgVGVtcGxhdGVSZWY8TWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW1Db250ZXh0PlxuICAgIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL3Nkay9hbmd1bGFyL3NlcnZpY2VzL21lc3NhZ2UtaW5wdXQtY29uZmlnLyNvdmVydmlld1xuICAgKi9cbiAgYWNjZXB0ZWRGaWxlVHlwZXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICBpc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB0cnVlO1xuICBtZW50aW9uU2NvcGU6ICdjaGFubmVsJyB8ICdhcHBsaWNhdGlvbicgfCB1bmRlZmluZWQgPSAnY2hhbm5lbCc7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxufVxuIl19
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1pbnB1dC1jb25maWcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWlucHV0L21lc3NhZ2UtaW5wdXQtY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZSxNQUFNLGVBQWUsQ0FBQzs7QUFTeEQsTUFBTSxPQUFPLHlCQUF5QjtJQWdCcEM7UUFmQSx3QkFBbUIsR0FBd0IsSUFBSSxDQUFDO1FBQ2hELHVCQUFrQixHQUF3QixJQUFJLENBQUM7UUFXL0MsZ0NBQTJCLEdBQXdCLElBQUksQ0FBQztRQUN4RCxpQkFBWSxHQUEwQyxTQUFTLENBQUM7SUFFakQsQ0FBQzs7c0hBaEJMLHlCQUF5QjswSEFBekIseUJBQXlCLGNBRnhCLE1BQU07MkZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb21tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW1Db250ZXh0LFxuICBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbUNvbnRleHQsXG59IGZyb20gJy4uL3R5cGVzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2Uge1xuICBpc0ZpbGVVcGxvYWRFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdHJ1ZTtcbiAgYXJlTWVudGlvbnNFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdHJ1ZTtcbiAgbWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZTpcbiAgICB8IFRlbXBsYXRlUmVmPE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtQ29udGV4dD5cbiAgICB8IHVuZGVmaW5lZDtcbiAgY29tbWFuZEF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZTpcbiAgICB8IFRlbXBsYXRlUmVmPENvbW1hbmRBdXRvY29tcGxldGVMaXN0SXRlbUNvbnRleHQ+XG4gICAgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3Mvc2RrL2FuZ3VsYXIvc2VydmljZXMvbWVzc2FnZS1pbnB1dC1jb25maWcvI292ZXJ2aWV3XG4gICAqL1xuICBhY2NlcHRlZEZpbGVUeXBlczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIGlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHRydWU7XG4gIG1lbnRpb25TY29wZTogJ2NoYW5uZWwnIHwgJ2FwcGxpY2F0aW9uJyB8IHVuZGVmaW5lZCA9ICdjaGFubmVsJztcblxuICBjb25zdHJ1Y3RvcigpIHt9XG59XG4iXX0=
@@ -26,6 +26,7 @@ export class MessageInputComponent {
26
26
  this.componentFactoryResolver = componentFactoryResolver;
27
27
  this.cdRef = cdRef;
28
28
  this.chatClient = chatClient;
29
+ this.mode = 'main';
29
30
  this.messageUpdate = new EventEmitter();
30
31
  this.textareaValue = '';
31
32
  this.mentionedUsers = [];
@@ -46,11 +47,8 @@ export class MessageInputComponent {
46
47
  this.isFileUploadAuthorized =
47
48
  capabilities.indexOf('upload-file') !== -1;
48
49
  this.canSendLinks = capabilities.indexOf('send-links') !== -1;
49
- this.canSendMessages = capabilities.indexOf('send-message') !== -1;
50
- if (this.isViewInited) {
51
- this.cdRef.detectChanges();
52
- this.initTextarea();
53
- }
50
+ this.channel = channel;
51
+ this.setCanSendMessages();
54
52
  }
55
53
  }));
56
54
  this.subscriptions.push(this.chatClient.appSettings$.subscribe((appSettings) => (this.appSettings = appSettings)));
@@ -63,6 +61,8 @@ export class MessageInputComponent {
63
61
  this.mentionAutocompleteItemTemplate =
64
62
  this.configService.mentionAutocompleteItemTemplate;
65
63
  this.mentionScope = this.configService.mentionScope;
64
+ this.commandAutocompleteItemTemplate =
65
+ this.configService.commandAutocompleteItemTemplate;
66
66
  }
67
67
  ngAfterViewInit() {
68
68
  this.isViewInited = true;
@@ -93,9 +93,16 @@ export class MessageInputComponent {
93
93
  this.configService.mentionAutocompleteItemTemplate =
94
94
  this.mentionAutocompleteItemTemplate;
95
95
  }
96
+ if (changes.commandAutocompleteItemTemplate) {
97
+ this.configService.commandAutocompleteItemTemplate =
98
+ this.commandAutocompleteItemTemplate;
99
+ }
96
100
  if (changes.mentionScope) {
97
101
  this.configService.mentionScope = this.mentionScope;
98
102
  }
103
+ if (changes.mode) {
104
+ this.setCanSendMessages();
105
+ }
99
106
  }
100
107
  ngOnDestroy() {
101
108
  this.subscriptions.forEach((s) => s.unsubscribe());
@@ -125,10 +132,16 @@ export class MessageInputComponent {
125
132
  if (!this.isUpdate) {
126
133
  this.textareaValue = '';
127
134
  }
135
+ let parentMessageId = undefined;
136
+ if (this.mode === 'thread') {
137
+ this.channelService.activeParentMessageId$
138
+ .pipe(first())
139
+ .subscribe((id) => (parentMessageId = id));
140
+ }
128
141
  try {
129
142
  yield (this.isUpdate
130
143
  ? this.channelService.updateMessage(Object.assign(Object.assign({}, this.message), { text: text, attachments: attachments }))
131
- : this.channelService.sendMessage(text, attachments, this.mentionedUsers));
144
+ : this.channelService.sendMessage(text, attachments, this.mentionedUsers, parentMessageId));
132
145
  this.messageUpdate.emit();
133
146
  if (!this.isUpdate) {
134
147
  this.attachmentService.resetAttachmentUploads();
@@ -222,9 +235,24 @@ export class MessageInputComponent {
222
235
  return isValid;
223
236
  });
224
237
  }
238
+ setCanSendMessages() {
239
+ var _a, _b;
240
+ const capabilities = (_b = (_a = this.channel) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.own_capabilities;
241
+ if (!capabilities) {
242
+ this.canSendMessages = false;
243
+ }
244
+ else {
245
+ this.canSendMessages =
246
+ capabilities.indexOf(this.mode === 'main' ? 'send-message' : 'send-reply') !== -1;
247
+ }
248
+ if (this.isViewInited) {
249
+ this.cdRef.detectChanges();
250
+ this.initTextarea();
251
+ }
252
+ }
225
253
  }
226
254
  MessageInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageInputComponent, deps: [{ token: i1.ChannelService }, { token: i2.NotificationService }, { token: i3.AttachmentService }, { token: i4.MessageInputConfigService }, { token: textareaInjectionToken }, { token: i0.ComponentFactoryResolver }, { token: i0.ChangeDetectorRef }, { token: i5.ChatClientService }], target: i0.ɵɵFactoryTarget.Component });
227
- MessageInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageInputComponent, selector: "stream-message-input", inputs: { isFileUploadEnabled: "isFileUploadEnabled", areMentionsEnabled: "areMentionsEnabled", mentionScope: "mentionScope", mentionAutocompleteItemTemplate: "mentionAutocompleteItemTemplate", acceptedFileTypes: "acceptedFileTypes", isMultipleFileUploadEnabled: "isMultipleFileUploadEnabled", message: "message" }, outputs: { messageUpdate: "messageUpdate" }, providers: [AttachmentService], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "textareaAnchor", first: true, predicate: TextareaDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"str-chat__input-flat\"\n [class.str-chat__input-flat-has-attachments]=\"\n (attachmentUploads$ | async)!.length > 0\n \"\n>\n <div class=\"str-chat__input-flat-wrapper\">\n <div class=\"str-chat__input-flat--textarea-wrapper\">\n <stream-attachment-preview-list\n class=\"rfu-image-previewer-angular-host\"\n ></stream-attachment-preview-list>\n <div class=\"rta str-chat__textarea\">\n <ng-template\n *ngIf=\"canSendMessages; else notAllowed\"\n streamTextarea\n [(value)]=\"textareaValue\"\n (send)=\"messageSent()\"\n [componentRef]=\"textareaRef\"\n (userMentions)=\"mentionedUsers = $event\"\n [areMentionsEnabled]=\"areMentionsEnabled\"\n [mentionAutocompleteItemTemplate]=\"mentionAutocompleteItemTemplate\"\n [mentionScope]=\"mentionScope\"\n ></ng-template>\n <ng-template #notAllowed>\n <textarea\n disabled\n rows=\"1\"\n [value]=\"\n 'streamChat.You can\\'t send messages in this channel' | translate\n \"\n class=\"rta__textarea str-chat__textarea__textarea\"\n ></textarea>\n </ng-template>\n </div>\n <div\n *ngIf=\"isFileUploadEnabled && isFileUploadAuthorized && canSendMessages\"\n class=\"str-chat__fileupload-wrapper\"\n data-testid=\"file-upload-button\"\n >\n <div class=\"str-chat__tooltip\">\n {{ \"streamChat.Attach files\" | translate }}\n </div>\n <div class=\"rfu-file-upload-button\">\n <label>\n <input\n #fileInput\n type=\"file\"\n class=\"rfu-file-input\"\n data-testid=\"file-input\"\n [accept]=\"accept\"\n [multiple]=\"isMultipleFileUploadEnabled\"\n (change)=\"filesSelected(fileInput.files)\"\n />\n <span class=\"str-chat__input-flat-fileupload\">\n <stream-icon icon=\"file-upload\"></stream-icon>\n </span>\n </label>\n </div>\n </div>\n </div>\n <button\n *ngIf=\"canSendMessages\"\n data-testid=\"send-button\"\n class=\"str-chat__send-button\"\n (click)=\"messageSent()\"\n (keyup.enter)=\"messageSent()\"\n >\n <stream-icon icon=\"send\"></stream-icon>\n </button>\n </div>\n</div>\n", components: [{ type: i6.AttachmentPreviewListComponent, selector: "stream-attachment-preview-list" }, { type: i7.IconComponent, selector: "stream-icon", inputs: ["icon", "size"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.TextareaDirective, selector: "[streamTextarea]", inputs: ["componentRef", "areMentionsEnabled", "mentionAutocompleteItemTemplate", "mentionScope", "value"], outputs: ["valueChange", "send", "userMentions"] }], pipes: { "async": i8.AsyncPipe, "translate": i10.TranslatePipe } });
255
+ MessageInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageInputComponent, selector: "stream-message-input", inputs: { isFileUploadEnabled: "isFileUploadEnabled", areMentionsEnabled: "areMentionsEnabled", mentionScope: "mentionScope", mentionAutocompleteItemTemplate: "mentionAutocompleteItemTemplate", commandAutocompleteItemTemplate: "commandAutocompleteItemTemplate", mode: "mode", acceptedFileTypes: "acceptedFileTypes", isMultipleFileUploadEnabled: "isMultipleFileUploadEnabled", message: "message" }, outputs: { messageUpdate: "messageUpdate" }, providers: [AttachmentService], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "textareaAnchor", first: true, predicate: TextareaDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"{{\n mode === 'main' ? 'str-chat__input-flat' : 'str-chat__small-message-input'\n }}\"\n [class.str-chat__input-flat-has-attachments]=\"\n (attachmentUploads$ | async)!.length > 0\n \"\n>\n <div class=\"str-chat__input-flat-wrapper\" style=\"width: 100%\">\n <div\n class=\"{{\n mode === 'main'\n ? 'str-chat__input-flat--textarea-wrapper'\n : 'str-chat__small-message-input--textarea-wrapper'\n }}\"\n >\n <stream-attachment-preview-list\n class=\"rfu-image-previewer-angular-host\"\n ></stream-attachment-preview-list>\n <div class=\"rta str-chat__textarea\">\n <ng-template\n *ngIf=\"canSendMessages; else notAllowed\"\n streamTextarea\n [(value)]=\"textareaValue\"\n (send)=\"messageSent()\"\n [componentRef]=\"textareaRef\"\n (userMentions)=\"mentionedUsers = $event\"\n [areMentionsEnabled]=\"areMentionsEnabled\"\n [mentionAutocompleteItemTemplate]=\"mentionAutocompleteItemTemplate\"\n [commandAutocompleteItemTemplate]=\"commandAutocompleteItemTemplate\"\n [mentionScope]=\"mentionScope\"\n ></ng-template>\n <ng-template #notAllowed>\n <textarea\n disabled\n rows=\"1\"\n [value]=\"\n (mode === 'thread'\n ? 'You can\\'t send thread replies in this channel'\n : 'streamChat.You can\\'t send messages in this channel'\n ) | translate\n \"\n class=\"rta__textarea str-chat__textarea__textarea\"\n ></textarea>\n </ng-template>\n </div>\n <div\n *ngIf=\"isFileUploadEnabled && isFileUploadAuthorized && canSendMessages\"\n class=\"str-chat__fileupload-wrapper\"\n data-testid=\"file-upload-button\"\n >\n <div class=\"str-chat__tooltip\">\n {{ \"streamChat.Attach files\" | translate }}\n </div>\n <div class=\"rfu-file-upload-button\">\n <label>\n <input\n #fileInput\n type=\"file\"\n class=\"rfu-file-input\"\n data-testid=\"file-input\"\n [accept]=\"accept\"\n [multiple]=\"isMultipleFileUploadEnabled\"\n (change)=\"filesSelected(fileInput.files)\"\n />\n <span class=\"str-chat__input-flat-fileupload\">\n <stream-icon icon=\"file-upload\"></stream-icon>\n </span>\n </label>\n </div>\n </div>\n </div>\n <button\n *ngIf=\"canSendMessages\"\n data-testid=\"send-button\"\n class=\"str-chat__send-button\"\n (click)=\"messageSent()\"\n (keyup.enter)=\"messageSent()\"\n >\n <stream-icon icon=\"send\"></stream-icon>\n </button>\n </div>\n</div>\n", components: [{ type: i6.AttachmentPreviewListComponent, selector: "stream-attachment-preview-list" }, { type: i7.IconComponent, selector: "stream-icon", inputs: ["icon", "size"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.TextareaDirective, selector: "[streamTextarea]", inputs: ["componentRef", "areMentionsEnabled", "mentionAutocompleteItemTemplate", "mentionScope", "commandAutocompleteItemTemplate", "value"], outputs: ["valueChange", "send", "userMentions"] }], pipes: { "async": i8.AsyncPipe, "translate": i10.TranslatePipe } });
228
256
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageInputComponent, decorators: [{
229
257
  type: Component,
230
258
  args: [{
@@ -244,6 +272,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
244
272
  type: Input
245
273
  }], mentionAutocompleteItemTemplate: [{
246
274
  type: Input
275
+ }], commandAutocompleteItemTemplate: [{
276
+ type: Input
277
+ }], mode: [{
278
+ type: Input
247
279
  }], acceptedFileTypes: [{
248
280
  type: Input
249
281
  }], isMultipleFileUploadEnabled: [{
@@ -259,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
259
291
  type: ViewChild,
260
292
  args: [TextareaDirective, { static: false }]
261
293
  }] } });
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS1pbnB1dC9tZXNzYWdlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWlucHV0L21lc3NhZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFHTCxTQUFTLEVBSVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUlOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFRN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7Ozs7QUFRL0MsTUFBTSxPQUFPLHFCQUFxQjtJQStCaEMsWUFDVSxjQUE4QixFQUM5QixtQkFBd0MsRUFDeEMsaUJBQW9DLEVBQ3BDLGFBQXdDLEVBRXhDLFlBQXFDLEVBQ3JDLHdCQUFrRCxFQUNsRCxLQUF3QixFQUN4QixVQUE2QjtRQVI3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGtCQUFhLEdBQWIsYUFBYSxDQUEyQjtRQUV4QyxpQkFBWSxHQUFaLFlBQVksQ0FBeUI7UUFDckMsNkJB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Q29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVHlwZSxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwU2V0dGluZ3MsIFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IEF0dGFjaG1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vYXR0YWNobWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IHRleHRhcmVhSW5qZWN0aW9uVG9rZW4gfSBmcm9tICcuLi9pbmplY3Rpb24tdG9rZW5zJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQge1xuICBBdHRhY2htZW50VXBsb2FkLFxuICBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbUNvbnRleHQsXG4gIFN0cmVhbU1lc3NhZ2UsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IE1lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL21lc3NhZ2UtaW5wdXQtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGV4dGFyZWFEaXJlY3RpdmUgfSBmcm9tICcuL3RleHRhcmVhLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUZXh0YXJlYUludGVyZmFjZSB9IGZyb20gJy4vdGV4dGFyZWEuaW50ZXJmYWNlJztcbmltcG9ydCB7IGlzSW1hZ2VGaWxlIH0gZnJvbSAnLi4vaXMtaW1hZ2UtZmlsZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1tZXNzYWdlLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxuICBwcm92aWRlcnM6IFtBdHRhY2htZW50U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VJbnB1dENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0XG57XG4gIEBJbnB1dCgpIGlzRmlsZVVwbG9hZEVuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGFyZU1lbnRpb25zRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgbWVudGlvblNjb3BlOiAnY2hhbm5lbCcgfCAnYXBwbGljYXRpb24nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBtZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlOlxuICAgIHwgVGVtcGxhdGVSZWY8TWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW1Db250ZXh0PlxuICAgIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL3Nkay9hbmd1bGFyL2NvbXBvbmVudHMvbWVzc2FnZS1pbnB1dC8jY2F1dGlvbi1hY2NlcHRlZGZpbGV0eXBlc1xuICAgKi9cbiAgQElucHV0KCkgYWNjZXB0ZWRGaWxlVHlwZXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBpc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIG1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIEBPdXRwdXQoKSByZWFkb25seSBtZXNzYWdlVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBpc0ZpbGVVcGxvYWRBdXRob3JpemVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBjYW5TZW5kTGlua3M6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGNhblNlbmRNZXNzYWdlczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgYXR0YWNobWVudFVwbG9hZHMkOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnRVcGxvYWRbXT47XG4gIHRleHRhcmVhVmFsdWUgPSAnJztcbiAgdGV4dGFyZWFSZWY6IENvbXBvbmVudFJlZjxUZXh0YXJlYUludGVyZmFjZT4gfCB1bmRlZmluZWQ7XG4gIG1lbnRpb25lZFVzZXJzOiBVc2VyUmVzcG9uc2VbXSA9IFtdO1xuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBwcml2YXRlIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoVGV4dGFyZWFEaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwcml2YXRlIHRleHRhcmVhQW5jaG9yITogVGV4dGFyZWFEaXJlY3RpdmU7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBoaWRlTm90aWZpY2F0aW9uOiBGdW5jdGlvbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBpc1ZpZXdJbml0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBhcHBTZXR0aW5nczogQXBwU2V0dGluZ3MgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYXR0YWNobWVudFNlcnZpY2U6IEF0dGFjaG1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogTWVzc2FnZUlucHV0Q29uZmlnU2VydmljZSxcbiAgICBASW5qZWN0KHRleHRhcmVhSW5qZWN0aW9uVG9rZW4pXG4gICAgcHJpdmF0ZSB0ZXh0YXJlYVR5cGU6IFR5cGU8VGV4dGFyZWFJbnRlcmZhY2U+LFxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBjaGF0Q2xpZW50OiBDaGF0Q2xpZW50U2VydmljZVxuICApIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UuYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyJC5zdWJzY3JpYmUoXG4gICAgICAgIChjb3VudGVyKSA9PiB7XG4gICAgICAgICAgaWYgKGNvdW50ZXIgPT09IDAgJiYgdGhpcy5oaWRlTm90aWZpY2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVOb3RpZmljYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuaGlkZU5vdGlmaWNhdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsJC5zdWJzY3JpYmUoKGNoYW5uZWwpID0+IHtcbiAgICAgICAgdGhpcy50ZXh0YXJlYVZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UucmVzZXRBdHRhY2htZW50VXBsb2FkcygpO1xuICAgICAgICBjb25zdCBjYXBhYmlsaXRpZXMgPSBjaGFubmVsPy5kYXRhPy5vd25fY2FwYWJpbGl0aWVzIGFzIHN0cmluZ1tdO1xuICAgICAgICBpZiAoY2FwYWJpbGl0aWVzKSB7XG4gICAgICAgICAgdGhpcy5pc0ZpbGVVcGxvYWRBdXRob3JpemVkID1cbiAgICAgICAgICAgIGNhcGFiaWxpdGllcy5pbmRleE9mKCd1cGxvYWQtZmlsZScpICE9PSAtMTtcbiAgICAgICAgICB0aGlzLmNhblNlbmRMaW5rcyA9IGNhcGFiaWxpdGllcy5pbmRleE9mKCdzZW5kLWxpbmtzJykgIT09IC0xO1xuICAgICAgICAgIHRoaXMuY2FuU2VuZE1lc3NhZ2VzID0gY2FwYWJpbGl0aWVzLmluZGV4T2YoJ3NlbmQtbWVzc2FnZScpICE9PSAtMTtcbiAgICAgICAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5pbml0VGV4dGFyZWEoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhdENsaWVudC5hcHBTZXR0aW5ncyQuc3Vic2NyaWJlKFxuICAgICAgICAoYXBwU2V0dGluZ3MpID0+ICh0aGlzLmFwcFNldHRpbmdzID0gYXBwU2V0dGluZ3MpXG4gICAgICApXG4gICAgKTtcbiAgICB0aGlzLmF0dGFjaG1lbnRVcGxvYWRzJCA9IHRoaXMuYXR0YWNobWVudFNlcnZpY2UuYXR0YWNobWVudFVwbG9hZHMkO1xuICAgIHRoaXMuaXNGaWxlVXBsb2FkRW5hYmxlZCA9IHRoaXMuY29uZmlnU2VydmljZS5pc0ZpbGVVcGxvYWRFbmFibGVkO1xuICAgIHRoaXMuYWNjZXB0ZWRGaWxlVHlwZXMgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuYWNjZXB0ZWRGaWxlVHlwZXM7XG4gICAgdGhpcy5pc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQgPVxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZDtcbiAgICB0aGlzLmFyZU1lbnRpb25zRW5hYmxlZCA9IHRoaXMuY29uZmlnU2VydmljZS5hcmVNZW50aW9uc0VuYWJsZWQ7XG4gICAgdGhpcy5tZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlID1cbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5tZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlO1xuICAgIHRoaXMubWVudGlvblNjb3BlID0gdGhpcy5jb25maWdTZXJ2aWNlLm1lbnRpb25TY29wZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlld0luaXRlZCA9IHRydWU7XG4gICAgdGhpcy5pbml0VGV4dGFyZWEoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5tZXNzYWdlKSB7XG4gICAgICB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLnJlc2V0QXR0YWNobWVudFVwbG9hZHMoKTtcbiAgICAgIGlmICh0aGlzLmlzVXBkYXRlKSB7XG4gICAgICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UuY3JlYXRlRnJvbUF0dGFjaG1lbnRzKFxuICAgICAgICAgIHRoaXMubWVzc2FnZSEuYXR0YWNobWVudHMgfHwgW11cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50ZXh0YXJlYVZhbHVlID0gdGhpcy5tZXNzYWdlIS50ZXh0IHx8ICcnO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5pc0ZpbGVVcGxvYWRFbmFibGVkKSB7XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaXNGaWxlVXBsb2FkRW5hYmxlZCA9IHRoaXMuaXNGaWxlVXBsb2FkRW5hYmxlZDtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuYWNjZXB0ZWRGaWxlVHlwZXMpIHtcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5hY2NlcHRlZEZpbGVUeXBlcyA9IHRoaXMuYWNjZXB0ZWRGaWxlVHlwZXM7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZCkge1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZCA9XG4gICAgICAgIHRoaXMuaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5hcmVNZW50aW9uc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5hcmVNZW50aW9uc0VuYWJsZWQgPSB0aGlzLmFyZU1lbnRpb25zRW5hYmxlZDtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSkge1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLm1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGUgPVxuICAgICAgICB0aGlzLm1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLm1lbnRpb25TY29wZSkge1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLm1lbnRpb25TY29wZSA9IHRoaXMubWVudGlvblNjb3BlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgYXN5bmMgbWVzc2FnZVNlbnQoKSB7XG4gICAgbGV0IGF0dGFjaG1lbnRVcGxvYWRJblByb2dyZXNzQ291bnRlciE6IG51bWJlcjtcbiAgICB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLmF0dGFjaG1lbnRVcGxvYWRJblByb2dyZXNzQ291bnRlciRcbiAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKChjb3VudGVyKSA9PiAoYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyID0gY291bnRlcikpO1xuICAgIGlmIChhdHRhY2htZW50VXBsb2FkSW5Qcm9ncmVzc0NvdW50ZXIgPiAwKSB7XG4gICAgICBpZiAoIXRoaXMuaGlkZU5vdGlmaWNhdGlvbikge1xuICAgICAgICB0aGlzLmhpZGVOb3RpZmljYXRpb24gPVxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRQZXJtYW5lbnROb3RpZmljYXRpb24oXG4gICAgICAgICAgICAnc3RyZWFtQ2hhdC5XYWl0IHVudGlsIGFsbCBhdHRhY2htZW50cyBoYXZlIHVwbG9hZGVkJ1xuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gdGhpcy5hdHRhY2htZW50U2VydmljZS5tYXBUb0F0dGFjaG1lbnRzKCk7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMudGV4dGFyZWFWYWx1ZTtcbiAgICBpZiAoIXRleHQgJiYgKCFhdHRhY2htZW50cyB8fCBhdHRhY2htZW50cy5sZW5ndGggPT09IDApKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbnRhaW5zTGlua3MgJiYgIXRoaXMuY2FuU2VuZExpbmtzKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAnc3RyZWFtQ2hhdC5TZW5kaW5nIGxpbmtzIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udmVyc2F0aW9uJ1xuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzVXBkYXRlKSB7XG4gICAgICB0aGlzLnRleHRhcmVhVmFsdWUgPSAnJztcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0ICh0aGlzLmlzVXBkYXRlXG4gICAgICAgID8gdGhpcy5jaGFubmVsU2VydmljZS51cGRhdGVNZXNzYWdlKHtcbiAgICAgICAgICAgIC4uLnRoaXMubWVzc2FnZSEsXG4gICAgICAgICAgICB0ZXh0OiB0ZXh0LFxuICAgICAgICAgICAgYXR0YWNobWVudHM6IGF0dGFjaG1lbnRzLFxuICAgICAgICAgIH0pXG4gICAgICAgIDogdGhpcy5jaGFubmVsU2VydmljZS5zZW5kTWVzc2FnZShcbiAgICAgICAgICAgIHRleHQsXG4gICAgICAgICAgICBhdHRhY2htZW50cyxcbiAgICAgICAgICAgIHRoaXMubWVudGlvbmVkVXNlcnNcbiAgICAgICAgICApKTtcbiAgICAgIHRoaXMubWVzc2FnZVVwZGF0ZS5lbWl0KCk7XG4gICAgICBpZiAoIXRoaXMuaXNVcGRhdGUpIHtcbiAgICAgICAgdGhpcy5hdHRhY2htZW50U2VydmljZS5yZXNldEF0dGFjaG1lbnRVcGxvYWRzKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICh0aGlzLmlzVXBkYXRlKSB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRUZW1wb3JhcnlOb3RpZmljYXRpb24oXG4gICAgICAgICAgJ3N0cmVhbUNoYXQuRWRpdCBtZXNzYWdlIHJlcXVlc3QgZmFpbGVkJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBjb250YWluc0xpbmtzKCkge1xuICAgIHJldHVybiAvKD86KD86aHR0cHM/fGZ0cCk6XFwvXFwvKT9bXFx3L1xcLT89JS5dK1xcLltcXHcvXFwtJj89JS5dKy8udGVzdChcbiAgICAgIHRoaXMudGV4dGFyZWFWYWx1ZVxuICAgICk7XG4gIH1cblxuICBnZXQgYWNjZXB0KCkge1xuICAgIHJldHVybiB0aGlzLmFjY2VwdGVkRmlsZVR5cGVzID8gdGhpcy5hY2NlcHRlZEZpbGVUeXBlcz8uam9pbignLCcpIDogJyc7XG4gIH1cblxuICBhc3luYyBmaWxlc1NlbGVjdGVkKGZpbGVMaXN0OiBGaWxlTGlzdCB8IG51bGwpIHtcbiAgICBpZiAoIShhd2FpdCB0aGlzLmFyZUF0dGFjaGVtbnRzVmFsaWQoZmlsZUxpc3QpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLmZpbGVzU2VsZWN0ZWQoZmlsZUxpc3QpO1xuICAgIHRoaXMuY2xlYXJGaWxlSW5wdXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJGaWxlSW5wdXQoKSB7XG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaXNVcGRhdGUoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5tZXNzYWdlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0VGV4dGFyZWEoKSB7XG4gICAgaWYgKCF0aGlzLmNhblNlbmRNZXNzYWdlcyB8fCB0aGlzLnRleHRhcmVhUmVmIHx8ICF0aGlzLnRleHRhcmVhQW5jaG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbXBvbmVudEZhY3RvcnkgPVxuICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy50ZXh0YXJlYVR5cGUpO1xuICAgIHRoaXMudGV4dGFyZWFSZWYgPVxuICAgICAgdGhpcy50ZXh0YXJlYUFuY2hvci52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxhbnk+KFxuICAgICAgICBjb21wb25lbnRGYWN0b3J5XG4gICAgICApO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhcmVBdHRhY2hlbW50c1ZhbGlkKGZpbGVMaXN0OiBGaWxlTGlzdCB8IG51bGwpIHtcbiAgICBpZiAoIWZpbGVMaXN0IHx8IHRoaXMuYWNjZXB0ZWRGaWxlVHlwZXMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYXBwU2V0dGluZ3MpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2hhdENsaWVudC5nZXRBcHBTZXR0aW5ncygpO1xuICAgIH1cbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgQXJyYXkuZnJvbShmaWxlTGlzdCkuZm9yRWFjaCgoZikgPT4ge1xuICAgICAgbGV0IGhhc0Jsb2NrZWRFeHRlbnNpb246IGJvb2xlYW47XG4gICAgICBsZXQgaGFzQmxvY2tlZE1pbWVUeXBlOiBib29sZWFuO1xuICAgICAgbGV0IGhhc05vdEFsbG93ZWRFeHRlbnNpb246IGJvb2xlYW47XG4gICAgICBsZXQgaGFzTm90QWxsb3dlZE1pbWVUeXBlOiBib29sZWFuO1xuICAgICAgaWYgKGlzSW1hZ2VGaWxlKGYpKSB7XG4gICAgICAgIGhhc0Jsb2NrZWRFeHRlbnNpb24gPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uaW1hZ2VfdXBsb2FkX2NvbmZpZz8uYmxvY2tlZF9maWxlX2V4dGVuc2lvbnM/LmZpbmQoXG4gICAgICAgICAgICAoZXh0KSA9PiBmLm5hbWUuZW5kc1dpdGgoZXh0KVxuICAgICAgICAgICk7XG4gICAgICAgIGhhc0Jsb2NrZWRNaW1lVHlwZSA9XG4gICAgICAgICAgISF0aGlzLmFwcFNldHRpbmdzPy5pbWFnZV91cGxvYWRfY29uZmlnPy5ibG9ja2VkX21pbWVfdHlwZXM/LmZpbmQoXG4gICAgICAgICAgICAodHlwZSkgPT4gZi50eXBlID09PSB0eXBlXG4gICAgICAgICAgKTtcbiAgICAgICAgaGFzTm90QWxsb3dlZEV4dGVuc2lvbiA9XG4gICAgICAgICAgISF0aGlzLmFwcFNldHRpbmdzPy5pbWFnZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX2ZpbGVfZXh0ZW5zaW9uc1xuICAgICAgICAgICAgPy5sZW5ndGggJiZcbiAgICAgICAgICAhdGhpcy5hcHBTZXR0aW5ncz8uaW1hZ2VfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9maWxlX2V4dGVuc2lvbnM/LmZpbmQoXG4gICAgICAgICAgICAoZXh0KSA9PiBmLm5hbWUuZW5kc1dpdGgoZXh0KVxuICAgICAgICAgICk7XG4gICAgICAgIGhhc05vdEFsbG93ZWRNaW1lVHlwZSA9XG4gICAgICAgICAgISF0aGlzLmFwcFNldHRpbmdzPy5pbWFnZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX21pbWVfdHlwZXM/Lmxlbmd0aCAmJlxuICAgICAgICAgICF0aGlzLmFwcFNldHRpbmdzPy5pbWFnZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX21pbWVfdHlwZXM/LmZpbmQoXG4gICAgICAgICAgICAodHlwZSkgPT4gZi50eXBlID09PSB0eXBlXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhc0Jsb2NrZWRFeHRlbnNpb24gPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uZmlsZV91cGxvYWRfY29uZmlnPy5ibG9ja2VkX2ZpbGVfZXh0ZW5zaW9ucz8uZmluZChcbiAgICAgICAgICAgIChleHQpID0+IGYubmFtZS5lbmRzV2l0aChleHQpXG4gICAgICAgICAgKTtcbiAgICAgICAgaGFzQmxvY2tlZE1pbWVUeXBlID1cbiAgICAgICAgICAhIXRoaXMuYXBwU2V0dGluZ3M/LmZpbGVfdXBsb2FkX2NvbmZpZz8uYmxvY2tlZF9taW1lX3R5cGVzPy5maW5kKFxuICAgICAgICAgICAgKHR5cGUpID0+IGYudHlwZSA9PT0gdHlwZVxuICAgICAgICAgICk7XG4gICAgICAgIGhhc05vdEFsbG93ZWRFeHRlbnNpb24gPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uZmlsZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX2ZpbGVfZXh0ZW5zaW9uc1xuICAgICAgICAgICAgPy5sZW5ndGggJiZcbiAgICAgICAgICAhdGhpcy5hcHBTZXR0aW5ncz8uZmlsZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX2ZpbGVfZXh0ZW5zaW9ucz8uZmluZChcbiAgICAgICAgICAgIChleHQpID0+IGYubmFtZS5lbmRzV2l0aChleHQpXG4gICAgICAgICAgKTtcbiAgICAgICAgaGFzTm90QWxsb3dlZE1pbWVUeXBlID1cbiAgICAgICAgICAhIXRoaXMuYXBwU2V0dGluZ3M/LmZpbGVfdXBsb2FkX2NvbmZpZz8uYWxsb3dlZF9taW1lX3R5cGVzPy5sZW5ndGggJiZcbiAgICAgICAgICAhdGhpcy5hcHBTZXR0aW5ncz8uZmlsZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX21pbWVfdHlwZXM/LmZpbmQoXG4gICAgICAgICAgICAodHlwZSkgPT4gZi50eXBlID09PSB0eXBlXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgaGFzQmxvY2tlZEV4dGVuc2lvbiB8fFxuICAgICAgICBoYXNCbG9ja2VkTWltZVR5cGUgfHxcbiAgICAgICAgaGFzTm90QWxsb3dlZEV4dGVuc2lvbiB8fFxuICAgICAgICBoYXNOb3RBbGxvd2VkTWltZVR5cGVcbiAgICAgICkge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAgICdzdHJlYW1DaGF0LlVuc3VwcG9ydGVkIGZpbGUgdHlwZToge3t0eXBlfX0nLFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgeyB0eXBlOiBmLnR5cGUgfVxuICAgICAgICApO1xuICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzdHItY2hhdF9faW5wdXQtZmxhdFwiXG4gIFtjbGFzcy5zdHItY2hhdF9faW5wdXQtZmxhdC1oYXMtYXR0YWNobWVudHNdPVwiXG4gICAgKGF0dGFjaG1lbnRVcGxvYWRzJCB8IGFzeW5jKSEubGVuZ3RoID4gMFxuICBcIlxuPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2lucHV0LWZsYXQtd3JhcHBlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9faW5wdXQtZmxhdC0tdGV4dGFyZWEtd3JhcHBlclwiPlxuICAgICAgPHN0cmVhbS1hdHRhY2htZW50LXByZXZpZXctbGlzdFxuICAgICAgICBjbGFzcz1cInJmdS1pbWFnZS1wcmV2aWV3ZXItYW5ndWxhci1ob3N0XCJcbiAgICAgID48L3N0cmVhbS1hdHRhY2htZW50LXByZXZpZXctbGlzdD5cbiAgICAgIDxkaXYgY2xhc3M9XCJydGEgc3RyLWNoYXRfX3RleHRhcmVhXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICpuZ0lmPVwiY2FuU2VuZE1lc3NhZ2VzOyBlbHNlIG5vdEFsbG93ZWRcIlxuICAgICAgICAgIHN0cmVhbVRleHRhcmVhXG4gICAgICAgICAgWyh2YWx1ZSldPVwidGV4dGFyZWFWYWx1ZVwiXG4gICAgICAgICAgKHNlbmQpPVwibWVzc2FnZVNlbnQoKVwiXG4gICAgICAgICAgW2NvbXBvbmVudFJlZl09XCJ0ZXh0YXJlYVJlZlwiXG4gICAgICAgICAgKHVzZXJNZW50aW9ucyk9XCJtZW50aW9uZWRVc2VycyA9ICRldmVudFwiXG4gICAgICAgICAgW2FyZU1lbnRpb25zRW5hYmxlZF09XCJhcmVNZW50aW9uc0VuYWJsZWRcIlxuICAgICAgICAgIFttZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlXT1cIm1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGVcIlxuICAgICAgICAgIFttZW50aW9uU2NvcGVdPVwibWVudGlvblNjb3BlXCJcbiAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90QWxsb3dlZD5cbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIGRpc2FibGVkXG4gICAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiXG4gICAgICAgICAgICAgICdzdHJlYW1DaGF0LllvdSBjYW5cXCd0IHNlbmQgbWVzc2FnZXMgaW4gdGhpcyBjaGFubmVsJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwicnRhX190ZXh0YXJlYSBzdHItY2hhdF9fdGV4dGFyZWFfX3RleHRhcmVhXCJcbiAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImlzRmlsZVVwbG9hZEVuYWJsZWQgJiYgaXNGaWxlVXBsb2FkQXV0aG9yaXplZCAmJiBjYW5TZW5kTWVzc2FnZXNcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19maWxldXBsb2FkLXdyYXBwZXJcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cImZpbGUtdXBsb2FkLWJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdG9vbHRpcFwiPlxuICAgICAgICAgIHt7IFwic3RyZWFtQ2hhdC5BdHRhY2ggZmlsZXNcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJmdS1maWxlLXVwbG9hZC1idXR0b25cIj5cbiAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicmZ1LWZpbGUtaW5wdXRcIlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImZpbGUtaW5wdXRcIlxuICAgICAgICAgICAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgICAgICAgICAgIFttdWx0aXBsZV09XCJpc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWRcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cImZpbGVzU2VsZWN0ZWQoZmlsZUlucHV0LmZpbGVzKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9faW5wdXQtZmxhdC1maWxldXBsb2FkXCI+XG4gICAgICAgICAgICAgIDxzdHJlYW0taWNvbiBpY29uPVwiZmlsZS11cGxvYWRcIj48L3N0cmVhbS1pY29uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJjYW5TZW5kTWVzc2FnZXNcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJzZW5kLWJ1dHRvblwiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19zZW5kLWJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwibWVzc2FnZVNlbnQoKVwiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwibWVzc2FnZVNlbnQoKVwiXG4gICAgPlxuICAgICAgPHN0cmVhbS1pY29uIGljb249XCJzZW5kXCI+PC9zdHJlYW0taWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS1pbnB1dC9tZXNzYWdlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWlucHV0L21lc3NhZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFHTCxTQUFTLEVBSVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUlOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFTN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7Ozs7Ozs7QUFRL0MsTUFBTSxPQUFPLHFCQUFxQjtJQW1DaEMsWUFDVSxjQUE4QixFQUM5QixtQkFBd0MsRUFDeEMsaUJBQW9DLEVBQ3BDLGFBQXdDLEVBRXhDLFlBQXFDLEVBQ3JDLHdCQUFrRCxFQUNsRCxLQUF3QixFQUN4QixVQUE2QjtRQVI3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGtCQUFhLEdBQWIsYUFBYSxDQUEyQjtRQUV4QyxpQkFBWSxHQUFaLFlBQVksQ0FBeUI7UUFDckMsNkJB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biAgQ29tcG9uZW50LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVHlwZSxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwU2V0dGluZ3MsIENoYW5uZWwsIFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IEF0dGFjaG1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vYXR0YWNobWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IHRleHRhcmVhSW5qZWN0aW9uVG9rZW4gfSBmcm9tICcuLi9pbmplY3Rpb24tdG9rZW5zJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQge1xuICBBdHRhY2htZW50VXBsb2FkLFxuICBDb21tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW1Db250ZXh0LFxuICBNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbUNvbnRleHQsXG4gIFN0cmVhbU1lc3NhZ2UsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IE1lc3NhZ2VJbnB1dENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL21lc3NhZ2UtaW5wdXQtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGV4dGFyZWFEaXJlY3RpdmUgfSBmcm9tICcuL3RleHRhcmVhLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUZXh0YXJlYUludGVyZmFjZSB9IGZyb20gJy4vdGV4dGFyZWEuaW50ZXJmYWNlJztcbmltcG9ydCB7IGlzSW1hZ2VGaWxlIH0gZnJvbSAnLi4vaXMtaW1hZ2UtZmlsZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1tZXNzYWdlLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2UtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxuICBwcm92aWRlcnM6IFtBdHRhY2htZW50U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VJbnB1dENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0XG57XG4gIEBJbnB1dCgpIGlzRmlsZVVwbG9hZEVuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGFyZU1lbnRpb25zRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgbWVudGlvblNjb3BlOiAnY2hhbm5lbCcgfCAnYXBwbGljYXRpb24nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBtZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlOlxuICAgIHwgVGVtcGxhdGVSZWY8TWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW1Db250ZXh0PlxuICAgIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBjb21tYW5kQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlOlxuICAgIHwgVGVtcGxhdGVSZWY8Q29tbWFuZEF1dG9jb21wbGV0ZUxpc3RJdGVtQ29udGV4dD5cbiAgICB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgbW9kZTogJ3RocmVhZCcgfCAnbWFpbicgPSAnbWFpbic7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3Mvc2RrL2FuZ3VsYXIvY29tcG9uZW50cy9tZXNzYWdlLWlucHV0LyNjYXV0aW9uLWFjY2VwdGVkZmlsZXR5cGVzXG4gICAqL1xuICBASW5wdXQoKSBhY2NlcHRlZEZpbGVUeXBlczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGlzTXVsdGlwbGVGaWxlVXBsb2FkRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgbWVzc2FnZTogU3RyZWFtTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IG1lc3NhZ2VVcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIGlzRmlsZVVwbG9hZEF1dGhvcml6ZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGNhblNlbmRMaW5rczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgY2FuU2VuZE1lc3NhZ2VzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBhdHRhY2htZW50VXBsb2FkcyQ6IE9ic2VydmFibGU8QXR0YWNobWVudFVwbG9hZFtdPjtcbiAgdGV4dGFyZWFWYWx1ZSA9ICcnO1xuICB0ZXh0YXJlYVJlZjogQ29tcG9uZW50UmVmPFRleHRhcmVhSW50ZXJmYWNlPiB8IHVuZGVmaW5lZDtcbiAgbWVudGlvbmVkVXNlcnM6IFVzZXJSZXNwb25zZVtdID0gW107XG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIHByaXZhdGUgZmlsZUlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChUZXh0YXJlYURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHByaXZhdGUgdGV4dGFyZWFBbmNob3IhOiBUZXh0YXJlYURpcmVjdGl2ZTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIGhpZGVOb3RpZmljYXRpb246IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGlzVmlld0luaXRlZCA9IGZhbHNlO1xuICBwcml2YXRlIGFwcFNldHRpbmdzOiBBcHBTZXR0aW5ncyB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBjaGFubmVsOiBDaGFubmVsIHwgdW5kZWZpbmVkO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdHRhY2htZW50U2VydmljZTogQXR0YWNobWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBNZXNzYWdlSW5wdXRDb25maWdTZXJ2aWNlLFxuICAgIEBJbmplY3QodGV4dGFyZWFJbmplY3Rpb25Ub2tlbilcbiAgICBwcml2YXRlIHRleHRhcmVhVHlwZTogVHlwZTxUZXh0YXJlYUludGVyZmFjZT4sXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNoYXRDbGllbnQ6IENoYXRDbGllbnRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5hdHRhY2htZW50U2VydmljZS5hdHRhY2htZW50VXBsb2FkSW5Qcm9ncmVzc0NvdW50ZXIkLnN1YnNjcmliZShcbiAgICAgICAgKGNvdW50ZXIpID0+IHtcbiAgICAgICAgICBpZiAoY291bnRlciA9PT0gMCAmJiB0aGlzLmhpZGVOb3RpZmljYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZU5vdGlmaWNhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5oaWRlTm90aWZpY2F0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLnN1YnNjcmliZSgoY2hhbm5lbCkgPT4ge1xuICAgICAgICB0aGlzLnRleHRhcmVhVmFsdWUgPSAnJztcbiAgICAgICAgdGhpcy5hdHRhY2htZW50U2VydmljZS5yZXNldEF0dGFjaG1lbnRVcGxvYWRzKCk7XG4gICAgICAgIGNvbnN0IGNhcGFiaWxpdGllcyA9IGNoYW5uZWw/LmRhdGE/Lm93bl9jYXBhYmlsaXRpZXMgYXMgc3RyaW5nW107XG4gICAgICAgIGlmIChjYXBhYmlsaXRpZXMpIHtcbiAgICAgICAgICB0aGlzLmlzRmlsZVVwbG9hZEF1dGhvcml6ZWQgPVxuICAgICAgICAgICAgY2FwYWJpbGl0aWVzLmluZGV4T2YoJ3VwbG9hZC1maWxlJykgIT09IC0xO1xuICAgICAgICAgIHRoaXMuY2FuU2VuZExpbmtzID0gY2FwYWJpbGl0aWVzLmluZGV4T2YoJ3NlbmQtbGlua3MnKSAhPT0gLTE7XG4gICAgICAgICAgdGhpcy5jaGFubmVsID0gY2hhbm5lbDtcbiAgICAgICAgICB0aGlzLnNldENhblNlbmRNZXNzYWdlcygpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYXRDbGllbnQuYXBwU2V0dGluZ3MkLnN1YnNjcmliZShcbiAgICAgICAgKGFwcFNldHRpbmdzKSA9PiAodGhpcy5hcHBTZXR0aW5ncyA9IGFwcFNldHRpbmdzKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5hdHRhY2htZW50VXBsb2FkcyQgPSB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLmF0dGFjaG1lbnRVcGxvYWRzJDtcbiAgICB0aGlzLmlzRmlsZVVwbG9hZEVuYWJsZWQgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuaXNGaWxlVXBsb2FkRW5hYmxlZDtcbiAgICB0aGlzLmFjY2VwdGVkRmlsZVR5cGVzID0gdGhpcy5jb25maWdTZXJ2aWNlLmFjY2VwdGVkRmlsZVR5cGVzO1xuICAgIHRoaXMuaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkID1cbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5pc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQ7XG4gICAgdGhpcy5hcmVNZW50aW9uc0VuYWJsZWQgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuYXJlTWVudGlvbnNFbmFibGVkO1xuICAgIHRoaXMubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSA9XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZTtcbiAgICB0aGlzLm1lbnRpb25TY29wZSA9IHRoaXMuY29uZmlnU2VydmljZS5tZW50aW9uU2NvcGU7XG4gICAgdGhpcy5jb21tYW5kQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlID1cbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5jb21tYW5kQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaWV3SW5pdGVkID0gdHJ1ZTtcbiAgICB0aGlzLmluaXRUZXh0YXJlYSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLm1lc3NhZ2UpIHtcbiAgICAgIHRoaXMuYXR0YWNobWVudFNlcnZpY2UucmVzZXRBdHRhY2htZW50VXBsb2FkcygpO1xuICAgICAgaWYgKHRoaXMuaXNVcGRhdGUpIHtcbiAgICAgICAgdGhpcy5hdHRhY2htZW50U2VydmljZS5jcmVhdGVGcm9tQXR0YWNobWVudHMoXG4gICAgICAgICAgdGhpcy5tZXNzYWdlIS5hdHRhY2htZW50cyB8fCBbXVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnRleHRhcmVhVmFsdWUgPSB0aGlzLm1lc3NhZ2UhLnRleHQgfHwgJyc7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmlzRmlsZVVwbG9hZEVuYWJsZWQpIHtcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5pc0ZpbGVVcGxvYWRFbmFibGVkID0gdGhpcy5pc0ZpbGVVcGxvYWRFbmFibGVkO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5hY2NlcHRlZEZpbGVUeXBlcykge1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmFjY2VwdGVkRmlsZVR5cGVzID0gdGhpcy5hY2NlcHRlZEZpbGVUeXBlcztcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkKSB7XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkID1cbiAgICAgICAgdGhpcy5pc011bHRpcGxlRmlsZVVwbG9hZEVuYWJsZWQ7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmFyZU1lbnRpb25zRW5hYmxlZCkge1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmFyZU1lbnRpb25zRW5hYmxlZCA9IHRoaXMuYXJlTWVudGlvbnNFbmFibGVkO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5tZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlKSB7XG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSA9XG4gICAgICAgIHRoaXMubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuY29tbWFuZEF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSkge1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGUgPVxuICAgICAgICB0aGlzLmNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLm1lbnRpb25TY29wZSkge1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLm1lbnRpb25TY29wZSA9IHRoaXMubWVudGlvblNjb3BlO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5tb2RlKSB7XG4gICAgICB0aGlzLnNldENhblNlbmRNZXNzYWdlcygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgYXN5bmMgbWVzc2FnZVNlbnQoKSB7XG4gICAgbGV0IGF0dGFjaG1lbnRVcGxvYWRJblByb2dyZXNzQ291bnRlciE6IG51bWJlcjtcbiAgICB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLmF0dGFjaG1lbnRVcGxvYWRJblByb2dyZXNzQ291bnRlciRcbiAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKChjb3VudGVyKSA9PiAoYXR0YWNobWVudFVwbG9hZEluUHJvZ3Jlc3NDb3VudGVyID0gY291bnRlcikpO1xuICAgIGlmIChhdHRhY2htZW50VXBsb2FkSW5Qcm9ncmVzc0NvdW50ZXIgPiAwKSB7XG4gICAgICBpZiAoIXRoaXMuaGlkZU5vdGlmaWNhdGlvbikge1xuICAgICAgICB0aGlzLmhpZGVOb3RpZmljYXRpb24gPVxuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRQZXJtYW5lbnROb3RpZmljYXRpb24oXG4gICAgICAgICAgICAnc3RyZWFtQ2hhdC5XYWl0IHVudGlsIGFsbCBhdHRhY2htZW50cyBoYXZlIHVwbG9hZGVkJ1xuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gdGhpcy5hdHRhY2htZW50U2VydmljZS5tYXBUb0F0dGFjaG1lbnRzKCk7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMudGV4dGFyZWFWYWx1ZTtcbiAgICBpZiAoIXRleHQgJiYgKCFhdHRhY2htZW50cyB8fCBhdHRhY2htZW50cy5sZW5ndGggPT09IDApKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbnRhaW5zTGlua3MgJiYgIXRoaXMuY2FuU2VuZExpbmtzKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAnc3RyZWFtQ2hhdC5TZW5kaW5nIGxpbmtzIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udmVyc2F0aW9uJ1xuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmlzVXBkYXRlKSB7XG4gICAgICB0aGlzLnRleHRhcmVhVmFsdWUgPSAnJztcbiAgICB9XG4gICAgbGV0IHBhcmVudE1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICd0aHJlYWQnKSB7XG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZVBhcmVudE1lc3NhZ2VJZCRcbiAgICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgICAgLnN1YnNjcmliZSgoaWQpID0+IChwYXJlbnRNZXNzYWdlSWQgPSBpZCkpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgKHRoaXMuaXNVcGRhdGVcbiAgICAgICAgPyB0aGlzLmNoYW5uZWxTZXJ2aWNlLnVwZGF0ZU1lc3NhZ2Uoe1xuICAgICAgICAgICAgLi4udGhpcy5tZXNzYWdlISxcbiAgICAgICAgICAgIHRleHQ6IHRleHQsXG4gICAgICAgICAgICBhdHRhY2htZW50czogYXR0YWNobWVudHMsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiB0aGlzLmNoYW5uZWxTZXJ2aWNlLnNlbmRNZXNzYWdlKFxuICAgICAgICAgICAgdGV4dCxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgICAgICAgdGhpcy5tZW50aW9uZWRVc2VycyxcbiAgICAgICAgICAgIHBhcmVudE1lc3NhZ2VJZFxuICAgICAgICAgICkpO1xuICAgICAgdGhpcy5tZXNzYWdlVXBkYXRlLmVtaXQoKTtcbiAgICAgIGlmICghdGhpcy5pc1VwZGF0ZSkge1xuICAgICAgICB0aGlzLmF0dGFjaG1lbnRTZXJ2aWNlLnJlc2V0QXR0YWNobWVudFVwbG9hZHMoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKHRoaXMuaXNVcGRhdGUpIHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFRlbXBvcmFyeU5vdGlmaWNhdGlvbihcbiAgICAgICAgICAnc3RyZWFtQ2hhdC5FZGl0IG1lc3NhZ2UgcmVxdWVzdCBmYWlsZWQnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNvbnRhaW5zTGlua3MoKSB7XG4gICAgcmV0dXJuIC8oPzooPzpodHRwcz98ZnRwKTpcXC9cXC8pP1tcXHcvXFwtPz0lLl0rXFwuW1xcdy9cXC0mPz0lLl0rLy50ZXN0KFxuICAgICAgdGhpcy50ZXh0YXJlYVZhbHVlXG4gICAgKTtcbiAgfVxuXG4gIGdldCBhY2NlcHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWNjZXB0ZWRGaWxlVHlwZXMgPyB0aGlzLmFjY2VwdGVkRmlsZVR5cGVzPy5qb2luKCcsJykgOiAnJztcbiAgfVxuXG4gIGFzeW5jIGZpbGVzU2VsZWN0ZWQoZmlsZUxpc3Q6IEZpbGVMaXN0IHwgbnVsbCkge1xuICAgIGlmICghKGF3YWl0IHRoaXMuYXJlQXR0YWNoZW1udHNWYWxpZChmaWxlTGlzdCkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuYXR0YWNobWVudFNlcnZpY2UuZmlsZXNTZWxlY3RlZChmaWxlTGlzdCk7XG4gICAgdGhpcy5jbGVhckZpbGVJbnB1dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckZpbGVJbnB1dCgpIHtcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gIH1cblxuICBwcml2YXRlIGdldCBpc1VwZGF0ZSgpIHtcbiAgICByZXR1cm4gISF0aGlzLm1lc3NhZ2U7XG4gIH1cblxuICBwcml2YXRlIGluaXRUZXh0YXJlYSgpIHtcbiAgICBpZiAoIXRoaXMuY2FuU2VuZE1lc3NhZ2VzIHx8IHRoaXMudGV4dGFyZWFSZWYgfHwgIXRoaXMudGV4dGFyZWFBbmNob3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29tcG9uZW50RmFjdG9yeSA9XG4gICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0aGlzLnRleHRhcmVhVHlwZSk7XG4gICAgdGhpcy50ZXh0YXJlYVJlZiA9XG4gICAgICB0aGlzLnRleHRhcmVhQW5jaG9yLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50PGFueT4oXG4gICAgICAgIGNvbXBvbmVudEZhY3RvcnlcbiAgICAgICk7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFyZUF0dGFjaGVtbnRzVmFsaWQoZmlsZUxpc3Q6IEZpbGVMaXN0IHwgbnVsbCkge1xuICAgIGlmICghZmlsZUxpc3QgfHwgdGhpcy5hY2NlcHRlZEZpbGVUeXBlcykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICghdGhpcy5hcHBTZXR0aW5ncykge1xuICAgICAgYXdhaXQgdGhpcy5jaGF0Q2xpZW50LmdldEFwcFNldHRpbmdzKCk7XG4gICAgfVxuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICBBcnJheS5mcm9tKGZpbGVMaXN0KS5mb3JFYWNoKChmKSA9PiB7XG4gICAgICBsZXQgaGFzQmxvY2tlZEV4dGVuc2lvbjogYm9vbGVhbjtcbiAgICAgIGxldCBoYXNCbG9ja2VkTWltZVR5cGU6IGJvb2xlYW47XG4gICAgICBsZXQgaGFzTm90QWxsb3dlZEV4dGVuc2lvbjogYm9vbGVhbjtcbiAgICAgIGxldCBoYXNOb3RBbGxvd2VkTWltZVR5cGU6IGJvb2xlYW47XG4gICAgICBpZiAoaXNJbWFnZUZpbGUoZikpIHtcbiAgICAgICAgaGFzQmxvY2tlZEV4dGVuc2lvbiA9XG4gICAgICAgICAgISF0aGlzLmFwcFNldHRpbmdzPy5pbWFnZV91cGxvYWRfY29uZmlnPy5ibG9ja2VkX2ZpbGVfZXh0ZW5zaW9ucz8uZmluZChcbiAgICAgICAgICAgIChleHQpID0+IGYubmFtZS5lbmRzV2l0aChleHQpXG4gICAgICAgICAgKTtcbiAgICAgICAgaGFzQmxvY2tlZE1pbWVUeXBlID1cbiAgICAgICAgICAhIXRoaXMuYXBwU2V0dGluZ3M/LmltYWdlX3VwbG9hZF9jb25maWc/LmJsb2NrZWRfbWltZV90eXBlcz8uZmluZChcbiAgICAgICAgICAgICh0eXBlKSA9PiBmLnR5cGUgPT09IHR5cGVcbiAgICAgICAgICApO1xuICAgICAgICBoYXNOb3RBbGxvd2VkRXh0ZW5zaW9uID1cbiAgICAgICAgICAhIXRoaXMuYXBwU2V0dGluZ3M/LmltYWdlX3VwbG9hZF9jb25maWc/LmFsbG93ZWRfZmlsZV9leHRlbnNpb25zXG4gICAgICAgICAgICA/Lmxlbmd0aCAmJlxuICAgICAgICAgICF0aGlzLmFwcFNldHRpbmdzPy5pbWFnZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX2ZpbGVfZXh0ZW5zaW9ucz8uZmluZChcbiAgICAgICAgICAgIChleHQpID0+IGYubmFtZS5lbmRzV2l0aChleHQpXG4gICAgICAgICAgKTtcbiAgICAgICAgaGFzTm90QWxsb3dlZE1pbWVUeXBlID1cbiAgICAgICAgICAhIXRoaXMuYXBwU2V0dGluZ3M/LmltYWdlX3VwbG9hZF9jb25maWc/LmFsbG93ZWRfbWltZV90eXBlcz8ubGVuZ3RoICYmXG4gICAgICAgICAgIXRoaXMuYXBwU2V0dGluZ3M/LmltYWdlX3VwbG9hZF9jb25maWc/LmFsbG93ZWRfbWltZV90eXBlcz8uZmluZChcbiAgICAgICAgICAgICh0eXBlKSA9PiBmLnR5cGUgPT09IHR5cGVcbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFzQmxvY2tlZEV4dGVuc2lvbiA9XG4gICAgICAgICAgISF0aGlzLmFwcFNldHRpbmdzPy5maWxlX3VwbG9hZF9jb25maWc/LmJsb2NrZWRfZmlsZV9leHRlbnNpb25zPy5maW5kKFxuICAgICAgICAgICAgKGV4dCkgPT4gZi5uYW1lLmVuZHNXaXRoKGV4dClcbiAgICAgICAgICApO1xuICAgICAgICBoYXNCbG9ja2VkTWltZVR5cGUgPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uZmlsZV91cGxvYWRfY29uZmlnPy5ibG9ja2VkX21pbWVfdHlwZXM/LmZpbmQoXG4gICAgICAgICAgICAodHlwZSkgPT4gZi50eXBlID09PSB0eXBlXG4gICAgICAgICAgKTtcbiAgICAgICAgaGFzTm90QWxsb3dlZEV4dGVuc2lvbiA9XG4gICAgICAgICAgISF0aGlzLmFwcFNldHRpbmdzPy5maWxlX3VwbG9hZF9jb25maWc/LmFsbG93ZWRfZmlsZV9leHRlbnNpb25zXG4gICAgICAgICAgICA/Lmxlbmd0aCAmJlxuICAgICAgICAgICF0aGlzLmFwcFNldHRpbmdzPy5maWxlX3VwbG9hZF9jb25maWc/LmFsbG93ZWRfZmlsZV9leHRlbnNpb25zPy5maW5kKFxuICAgICAgICAgICAgKGV4dCkgPT4gZi5uYW1lLmVuZHNXaXRoKGV4dClcbiAgICAgICAgICApO1xuICAgICAgICBoYXNOb3RBbGxvd2VkTWltZVR5cGUgPVxuICAgICAgICAgICEhdGhpcy5hcHBTZXR0aW5ncz8uZmlsZV91cGxvYWRfY29uZmlnPy5hbGxvd2VkX21pbWVfdHlwZXM/Lmxlbmd0aCAmJlxuICAgICAgICAgICF0aGlzLmFwcFNldHRpbmdzPy5maWxlX3VwbG9hZF9jb25maWc/LmFsbG93ZWRfbWltZV90eXBlcz8uZmluZChcbiAgICAgICAgICAgICh0eXBlKSA9PiBmLnR5cGUgPT09IHR5cGVcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBoYXNCbG9ja2VkRXh0ZW5zaW9uIHx8XG4gICAgICAgIGhhc0Jsb2NrZWRNaW1lVHlwZSB8fFxuICAgICAgICBoYXNOb3RBbGxvd2VkRXh0ZW5zaW9uIHx8XG4gICAgICAgIGhhc05vdEFsbG93ZWRNaW1lVHlwZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGRUZW1wb3JhcnlOb3RpZmljYXRpb24oXG4gICAgICAgICAgJ3N0cmVhbUNoYXQuVW5zdXBwb3J0ZWQgZmlsZSB0eXBlOiB7e3R5cGV9fScsXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICB7IHR5cGU6IGYudHlwZSB9XG4gICAgICAgICk7XG4gICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaXNWYWxpZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2FuU2VuZE1lc3NhZ2VzKCkge1xuICAgIGNvbnN0IGNhcGFiaWxpdGllcyA9IHRoaXMuY2hhbm5lbD8uZGF0YT8ub3duX2NhcGFiaWxpdGllcyBhcyBzdHJpbmdbXTtcbiAgICBpZiAoIWNhcGFiaWxpdGllcykge1xuICAgICAgdGhpcy5jYW5TZW5kTWVzc2FnZXMgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jYW5TZW5kTWVzc2FnZXMgPVxuICAgICAgICBjYXBhYmlsaXRpZXMuaW5kZXhPZihcbiAgICAgICAgICB0aGlzLm1vZGUgPT09ICdtYWluJyA/ICdzZW5kLW1lc3NhZ2UnIDogJ3NlbmQtcmVwbHknXG4gICAgICAgICkgIT09IC0xO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5pbml0VGV4dGFyZWEoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJ7e1xuICAgIG1vZGUgPT09ICdtYWluJyA/ICdzdHItY2hhdF9faW5wdXQtZmxhdCcgOiAnc3RyLWNoYXRfX3NtYWxsLW1lc3NhZ2UtaW5wdXQnXG4gIH19XCJcbiAgW2NsYXNzLnN0ci1jaGF0X19pbnB1dC1mbGF0LWhhcy1hdHRhY2htZW50c109XCJcbiAgICAoYXR0YWNobWVudFVwbG9hZHMkIHwgYXN5bmMpIS5sZW5ndGggPiAwXG4gIFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9faW5wdXQtZmxhdC13cmFwcGVyXCIgc3R5bGU9XCJ3aWR0aDogMTAwJVwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwie3tcbiAgICAgICAgbW9kZSA9PT0gJ21haW4nXG4gICAgICAgICAgPyAnc3RyLWNoYXRfX2lucHV0LWZsYXQtLXRleHRhcmVhLXdyYXBwZXInXG4gICAgICAgICAgOiAnc3RyLWNoYXRfX3NtYWxsLW1lc3NhZ2UtaW5wdXQtLXRleHRhcmVhLXdyYXBwZXInXG4gICAgICB9fVwiXG4gICAgPlxuICAgICAgPHN0cmVhbS1hdHRhY2htZW50LXByZXZpZXctbGlzdFxuICAgICAgICBjbGFzcz1cInJmdS1pbWFnZS1wcmV2aWV3ZXItYW5ndWxhci1ob3N0XCJcbiAgICAgID48L3N0cmVhbS1hdHRhY2htZW50LXByZXZpZXctbGlzdD5cbiAgICAgIDxkaXYgY2xhc3M9XCJydGEgc3RyLWNoYXRfX3RleHRhcmVhXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICpuZ0lmPVwiY2FuU2VuZE1lc3NhZ2VzOyBlbHNlIG5vdEFsbG93ZWRcIlxuICAgICAgICAgIHN0cmVhbVRleHRhcmVhXG4gICAgICAgICAgWyh2YWx1ZSldPVwidGV4dGFyZWFWYWx1ZVwiXG4gICAgICAgICAgKHNlbmQpPVwibWVzc2FnZVNlbnQoKVwiXG4gICAgICAgICAgW2NvbXBvbmVudFJlZl09XCJ0ZXh0YXJlYVJlZlwiXG4gICAgICAgICAgKHVzZXJNZW50aW9ucyk9XCJtZW50aW9uZWRVc2VycyA9ICRldmVudFwiXG4gICAgICAgICAgW2FyZU1lbnRpb25zRW5hYmxlZF09XCJhcmVNZW50aW9uc0VuYWJsZWRcIlxuICAgICAgICAgIFttZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlXT1cIm1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGVcIlxuICAgICAgICAgIFtjb21tYW5kQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlXT1cImNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGVcIlxuICAgICAgICAgIFttZW50aW9uU2NvcGVdPVwibWVudGlvblNjb3BlXCJcbiAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm90QWxsb3dlZD5cbiAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgIGRpc2FibGVkXG4gICAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiXG4gICAgICAgICAgICAgIChtb2RlID09PSAndGhyZWFkJ1xuICAgICAgICAgICAgICAgID8gJ1lvdSBjYW5cXCd0IHNlbmQgdGhyZWFkIHJlcGxpZXMgaW4gdGhpcyBjaGFubmVsJ1xuICAgICAgICAgICAgICAgIDogJ3N0cmVhbUNoYXQuWW91IGNhblxcJ3Qgc2VuZCBtZXNzYWdlcyBpbiB0aGlzIGNoYW5uZWwnXG4gICAgICAgICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cInJ0YV9fdGV4dGFyZWEgc3RyLWNoYXRfX3RleHRhcmVhX190ZXh0YXJlYVwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJpc0ZpbGVVcGxvYWRFbmFibGVkICYmIGlzRmlsZVVwbG9hZEF1dGhvcml6ZWQgJiYgY2FuU2VuZE1lc3NhZ2VzXCJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fZmlsZXVwbG9hZC13cmFwcGVyXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJmaWxlLXVwbG9hZC1idXR0b25cIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3Rvb2x0aXBcIj5cbiAgICAgICAgICB7eyBcInN0cmVhbUNoYXQuQXR0YWNoIGZpbGVzXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZnUtZmlsZS11cGxvYWQtYnV0dG9uXCI+XG4gICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cInJmdS1maWxlLWlucHV0XCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJmaWxlLWlucHV0XCJcbiAgICAgICAgICAgICAgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiaXNNdWx0aXBsZUZpbGVVcGxvYWRFbmFibGVkXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJmaWxlc1NlbGVjdGVkKGZpbGVJbnB1dC5maWxlcylcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RyLWNoYXRfX2lucHV0LWZsYXQtZmlsZXVwbG9hZFwiPlxuICAgICAgICAgICAgICA8c3RyZWFtLWljb24gaWNvbj1cImZpbGUtdXBsb2FkXCI+PC9zdHJlYW0taWNvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiY2FuU2VuZE1lc3NhZ2VzXCJcbiAgICAgIGRhdGEtdGVzdGlkPVwic2VuZC1idXR0b25cIlxuICAgICAgY2xhc3M9XCJzdHItY2hhdF9fc2VuZC1idXR0b25cIlxuICAgICAgKGNsaWNrKT1cIm1lc3NhZ2VTZW50KClcIlxuICAgICAgKGtleXVwLmVudGVyKT1cIm1lc3NhZ2VTZW50KClcIlxuICAgID5cbiAgICAgIDxzdHJlYW0taWNvbiBpY29uPVwic2VuZFwiPjwvc3RyZWFtLWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -27,6 +27,8 @@ export class TextareaDirective {
27
27
  this.componentRef.instance.areMentionsEnabled = this.areMentionsEnabled;
28
28
  this.componentRef.instance.mentionAutocompleteItemTemplate =
29
29
  this.mentionAutocompleteItemTemplate;
30
+ this.componentRef.instance.commandAutocompleteItemTemplate =
31
+ this.commandAutocompleteItemTemplate;
30
32
  this.componentRef.instance.mentionScope = this.mentionScope;
31
33
  this.componentRef.instance.value = this.value;
32
34
  }
@@ -38,6 +40,10 @@ export class TextareaDirective {
38
40
  this.componentRef.instance.mentionAutocompleteItemTemplate =
39
41
  this.mentionAutocompleteItemTemplate;
40
42
  }
43
+ if (changes.commandAutocompleteItemTemplate) {
44
+ this.componentRef.instance.commandAutocompleteItemTemplate =
45
+ this.commandAutocompleteItemTemplate;
46
+ }
41
47
  if (changes.mentionScope) {
42
48
  this.componentRef.instance.mentionScope = this.mentionScope;
43
49
  }
@@ -53,7 +59,7 @@ export class TextareaDirective {
53
59
  }
54
60
  }
55
61
  TextareaDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: TextareaDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
56
- TextareaDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.5", type: TextareaDirective, selector: "[streamTextarea]", inputs: { componentRef: "componentRef", areMentionsEnabled: "areMentionsEnabled", mentionAutocompleteItemTemplate: "mentionAutocompleteItemTemplate", mentionScope: "mentionScope", value: "value" }, outputs: { valueChange: "valueChange", send: "send", userMentions: "userMentions" }, usesOnChanges: true, ngImport: i0 });
62
+ TextareaDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.5", type: TextareaDirective, selector: "[streamTextarea]", inputs: { componentRef: "componentRef", areMentionsEnabled: "areMentionsEnabled", mentionAutocompleteItemTemplate: "mentionAutocompleteItemTemplate", mentionScope: "mentionScope", commandAutocompleteItemTemplate: "commandAutocompleteItemTemplate", value: "value" }, outputs: { valueChange: "valueChange", send: "send", userMentions: "userMentions" }, usesOnChanges: true, ngImport: i0 });
57
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: TextareaDirective, decorators: [{
58
64
  type: Directive,
59
65
  args: [{
@@ -67,6 +73,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
67
73
  type: Input
68
74
  }], mentionScope: [{
69
75
  type: Input
76
+ }], commandAutocompleteItemTemplate: [{
77
+ type: Input
70
78
  }], value: [{
71
79
  type: Input
72
80
  }], valueChange: [{
@@ -76,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
76
84
  }], userMentions: [{
77
85
  type: Output
78
86
  }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtaW5wdXQvdGV4dGFyZWEuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FJUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVMxQyxNQUFNLE9BQU8saUJBQWlCO0lBYTVCLFlBQW1CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBTjVDLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDekMsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDaEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUM3RCxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFDbkMsd0JBQW1CLEdBQW9CLEVBQUUsQ0FBQztJQUNNLENBQUM7SUFFekQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUNuRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsWUFBWSxDQUFD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bnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtQ29udGV4dCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IFRleHRhcmVhSW50ZXJmYWNlIH0gZnJvbSAnLi90ZXh0YXJlYS5pbnRlcmZhY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc3RyZWFtVGV4dGFyZWFdJyxcbn0pXG5leHBvcnQgY2xhc3MgVGV4dGFyZWFEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUZXh0YXJlYUludGVyZmFjZT4gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGFyZU1lbnRpb25zRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgbWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZTpcbiAgICB8IFRlbXBsYXRlUmVmPE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtQ29udGV4dD5cbiAgICB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgbWVudGlvblNjb3BlPzogJ2NoYW5uZWwnIHwgJ2FwcGxpY2F0aW9uJztcbiAgQElucHV0KCkgdmFsdWUgPSAnJztcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBzZW5kID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgdXNlck1lbnRpb25zID0gbmV3IEV2ZW50RW1pdHRlcjxVc2VyUmVzcG9uc2VbXT4oKTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIHVucHJvcGFnYXRlZENoYW5nZXM6IFNpbXBsZUNoYW5nZXNbXSA9IFtdO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy51bnByb3BhZ2F0ZWRDaGFuZ2VzLnB1c2goY2hhbmdlcyk7XG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnZhbHVlQ2hhbmdlLnN1YnNjcmliZSgodmFsdWUpID0+XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodmFsdWUpXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZW5kLnN1YnNjcmliZSgodmFsdWUpID0+XG4gICAgICAgICAgICB0aGlzLnNlbmQubmV4dCh2YWx1ZSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS51c2VyTWVudGlvbnMpIHtcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnVzZXJNZW50aW9ucy5zdWJzY3JpYmUoKHZhbHVlKSA9PlxuICAgICAgICAgICAgICB0aGlzLnVzZXJNZW50aW9ucy5uZXh0KHZhbHVlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuYXJlTWVudGlvbnNFbmFibGVkID0gdGhpcy5hcmVNZW50aW9uc0VuYWJsZWQ7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLm1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGUgPVxuICAgICAgICAgIHRoaXMubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubWVudGlvblNjb3BlID0gdGhpcy5tZW50aW9uU2NvcGU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuYXJlTWVudGlvbnNFbmFibGVkKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5hcmVNZW50aW9uc0VuYWJsZWQgPSB0aGlzLmFyZU1lbnRpb25zRW5hYmxlZDtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSA9XG4gICAgICAgIHRoaXMubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWVudGlvblNjb3BlKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5tZW50aW9uU2NvcGUgPSB0aGlzLm1lbnRpb25TY29wZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMudmFsdWUpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICB9XG4gICAgLy8gbmdPbkNoYW5nZXMgbm90IGNhbGxlZCBmb3IgZHluYW1pYyBjb21wb25lbnRzIHNpbmNlIHdlIGRvbid0IHVzZSB0ZW1wbGF0ZSBiaW5kaW5nXG4gICAgbGV0IGNoYW5nZXNUb1Byb3BhZ2F0ZSA9IHt9O1xuICAgIHRoaXMudW5wcm9wYWdhdGVkQ2hhbmdlcy5mb3JFYWNoKFxuICAgICAgKGMpID0+IChjaGFuZ2VzVG9Qcm9wYWdhdGUgPSB7IC4uLmNoYW5nZXNUb1Byb3BhZ2F0ZSwgLi4uYyB9KVxuICAgICk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1saWZlY3ljbGUtY2FsbFxuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLm5nT25DaGFuZ2VzKGNoYW5nZXNUb1Byb3BhZ2F0ZSk7XG4gICAgdGhpcy51bnByb3BhZ2F0ZWRDaGFuZ2VzID0gW107XG4gIH1cbn1cbiJdfQ==
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtaW5wdXQvdGV4dGFyZWEuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FJUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVkxQyxNQUFNLE9BQU8saUJBQWlCO0lBZ0I1QixZQUFtQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQU41QyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ0QsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3pDLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2hDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFDN0Qsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ25DLHdCQUFtQixHQUFvQixFQUFFLENBQUM7SUFDTSxDQUFDO0lBRXpELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLE9BQU87U0FDUjtRQUNELElBQUksT0FBTyxDQUFDLFlBQVksRUFBRTtZQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDbkQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLFlBQVksQ0FB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LEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLCtCQUErQjtzQkFBdkMsS0FBSztnQkFHRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLCtCQUErQjtzQkFBdkMsS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ2EsV0FBVztzQkFBN0IsTUFBTTtnQkFDWSxJQUFJO3NCQUF0QixNQUFNO2dCQUNZLFlBQVk7c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVXNlclJlc3BvbnNlIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHtcbiAgQ29tbWFuZEF1dG9jb21wbGV0ZUxpc3RJdGVtQ29udGV4dCxcbiAgTWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW1Db250ZXh0LFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBUZXh0YXJlYUludGVyZmFjZSB9IGZyb20gJy4vdGV4dGFyZWEuaW50ZXJmYWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3N0cmVhbVRleHRhcmVhXScsXG59KVxuZXhwb3J0IGNsYXNzIFRleHRhcmVhRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VGV4dGFyZWFJbnRlcmZhY2U+IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBhcmVNZW50aW9uc0VuYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIG1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGU6XG4gICAgfCBUZW1wbGF0ZVJlZjxNZW50aW9uQXV0Y29tcGxldGVMaXN0SXRlbUNvbnRleHQ+XG4gICAgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIG1lbnRpb25TY29wZT86ICdjaGFubmVsJyB8ICdhcHBsaWNhdGlvbic7XG4gIEBJbnB1dCgpIGNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGU6XG4gICAgfCBUZW1wbGF0ZVJlZjxDb21tYW5kQXV0b2NvbXBsZXRlTGlzdEl0ZW1Db250ZXh0PlxuICAgIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSB2YWx1ZSA9ICcnO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbmQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSB1c2VyTWVudGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXJSZXNwb25zZVtdPigpO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgdW5wcm9wYWdhdGVkQ2hhbmdlczogU2ltcGxlQ2hhbmdlc1tdID0gW107XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLnVucHJvcGFnYXRlZENoYW5nZXMucHVzaChjaGFuZ2VzKTtcbiAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmNvbXBvbmVudFJlZikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudmFsdWVDaGFuZ2Uuc3Vic2NyaWJlKCh2YWx1ZSkgPT5cbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UubmV4dCh2YWx1ZSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnNlbmQuc3Vic2NyaWJlKCh2YWx1ZSkgPT5cbiAgICAgICAgICAgIHRoaXMuc2VuZC5uZXh0KHZhbHVlKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnVzZXJNZW50aW9ucykge1xuICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudXNlck1lbnRpb25zLnN1YnNjcmliZSgodmFsdWUpID0+XG4gICAgICAgICAgICAgIHRoaXMudXNlck1lbnRpb25zLm5leHQodmFsdWUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5hcmVNZW50aW9uc0VuYWJsZWQgPSB0aGlzLmFyZU1lbnRpb25zRW5hYmxlZDtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSA9XG4gICAgICAgICAgdGhpcy5tZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb21tYW5kQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlID1cbiAgICAgICAgICB0aGlzLmNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLm1lbnRpb25TY29wZSA9IHRoaXMubWVudGlvblNjb3BlO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS52YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmFyZU1lbnRpb25zRW5hYmxlZCkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuYXJlTWVudGlvbnNFbmFibGVkID0gdGhpcy5hcmVNZW50aW9uc0VuYWJsZWQ7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLm1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGUpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLm1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGUgPVxuICAgICAgICB0aGlzLm1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGUpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGUgPVxuICAgICAgICB0aGlzLmNvbW1hbmRBdXRvY29tcGxldGVJdGVtVGVtcGxhdGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLm1lbnRpb25TY29wZSkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubWVudGlvblNjb3BlID0gdGhpcy5tZW50aW9uU2NvcGU7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLnZhbHVlKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS52YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgfVxuICAgIC8vIG5nT25DaGFuZ2VzIG5vdCBjYWxsZWQgZm9yIGR5bmFtaWMgY29tcG9uZW50cyBzaW5jZSB3ZSBkb24ndCB1c2UgdGVtcGxhdGUgYmluZGluZ1xuICAgIGxldCBjaGFuZ2VzVG9Qcm9wYWdhdGUgPSB7fTtcbiAgICB0aGlzLnVucHJvcGFnYXRlZENoYW5nZXMuZm9yRWFjaChcbiAgICAgIChjKSA9PiAoY2hhbmdlc1RvUHJvcGFnYXRlID0geyAuLi5jaGFuZ2VzVG9Qcm9wYWdhdGUsIC4uLmMgfSlcbiAgICApO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tbGlmZWN5Y2xlLWNhbGxcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5uZ09uQ2hhbmdlcyhjaGFuZ2VzVG9Qcm9wYWdhdGUpO1xuICAgIHRoaXMudW5wcm9wYWdhdGVkQ2hhbmdlcyA9IFtdO1xuICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtaW5wdXQvdGV4dGFyZWEuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIE9uQ2hhbmdlcywgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtQ29udGV4dCB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBUZXh0YXJlYUludGVyZmFjZSBleHRlbmRzIE9uQ2hhbmdlcyB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcbiAgc2VuZDogRXZlbnRFbWl0dGVyPHZvaWQ+O1xuICB1c2VyTWVudGlvbnM/OiBFdmVudEVtaXR0ZXI8VXNlclJlc3BvbnNlW10+O1xuICBhcmVNZW50aW9uc0VuYWJsZWQ/OiBib29sZWFuO1xuICBtZW50aW9uQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlPzpcbiAgICB8IFRlbXBsYXRlUmVmPE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtQ29udGV4dD5cbiAgICB8IHVuZGVmaW5lZDtcbiAgbWVudGlvblNjb3BlPzogJ2NoYW5uZWwnIHwgJ2FwcGxpY2F0aW9uJztcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtaW5wdXQvdGV4dGFyZWEuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIE9uQ2hhbmdlcywgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7XG4gIENvbW1hbmRBdXRvY29tcGxldGVMaXN0SXRlbUNvbnRleHQsXG4gIE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtQ29udGV4dCxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRhcmVhSW50ZXJmYWNlIGV4dGVuZHMgT25DaGFuZ2VzIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuICBzZW5kOiBFdmVudEVtaXR0ZXI8dm9pZD47XG4gIHVzZXJNZW50aW9ucz86IEV2ZW50RW1pdHRlcjxVc2VyUmVzcG9uc2VbXT47XG4gIGFyZU1lbnRpb25zRW5hYmxlZD86IGJvb2xlYW47XG4gIG1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGU/OlxuICAgIHwgVGVtcGxhdGVSZWY8TWVudGlvbkF1dGNvbXBsZXRlTGlzdEl0ZW1Db250ZXh0PlxuICAgIHwgdW5kZWZpbmVkO1xuICBjb21tYW5kQXV0b2NvbXBsZXRlSXRlbVRlbXBsYXRlPzpcbiAgICB8IFRlbXBsYXRlUmVmPENvbW1hbmRBdXRvY29tcGxldGVMaXN0SXRlbUNvbnRleHQ+XG4gICAgfCB1bmRlZmluZWQ7XG4gIG1lbnRpb25TY29wZT86ICdjaGFubmVsJyB8ICdhcHBsaWNhdGlvbic7XG59XG4iXX0=