stream-chat-angular 2.10.0 → 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 (32) 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 +449 -182
  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/channel/channel.component.js +3 -2
  8. package/esm2015/lib/channel.service.js +158 -40
  9. package/esm2015/lib/icon/icon.component.js +2 -2
  10. package/esm2015/lib/message/message.component.js +18 -3
  11. package/esm2015/lib/message-actions-box/message-actions-box.component.js +1 -1
  12. package/esm2015/lib/message-input/message-input.component.js +32 -8
  13. package/esm2015/lib/message-list/message-list.component.js +100 -53
  14. package/esm2015/lib/message-preview.js +3 -2
  15. package/esm2015/lib/stream-chat.module.js +8 -3
  16. package/esm2015/lib/thread/thread.component.js +37 -0
  17. package/esm2015/public-api.js +2 -1
  18. package/fesm2015/stream-chat-angular.js +351 -108
  19. package/fesm2015/stream-chat-angular.js.map +1 -1
  20. package/lib/channel/channel.component.d.ts +2 -1
  21. package/lib/channel.service.d.ts +18 -7
  22. package/lib/icon/icon.component.d.ts +1 -1
  23. package/lib/message/message.component.d.ts +7 -1
  24. package/lib/message-input/message-input.component.d.ts +4 -1
  25. package/lib/message-list/message-list.component.d.ts +12 -3
  26. package/lib/message-preview.d.ts +1 -1
  27. package/lib/stream-chat.module.d.ts +5 -4
  28. package/lib/thread/thread.component.d.ts +18 -0
  29. package/package.json +2 -2
  30. package/public-api.d.ts +1 -0
  31. package/src/assets/i18n/en.ts +4 -0
  32. package/src/assets/version.ts +1 -1
@@ -7,6 +7,7 @@ import * as i2 from "../chat-client.service";
7
7
  import * as i3 from "./image-load.service";
8
8
  import * as i4 from "../message/message.component";
9
9
  import * as i5 from "@angular/common";
10
+ import * as i6 from "@ngx-translate/core";
10
11
  export class MessageListComponent {
11
12
  constructor(channelService, chatClientService, imageLoadService) {
12
13
  this.channelService = channelService;
@@ -21,22 +22,17 @@ export class MessageListComponent {
21
22
  */
22
23
  /* eslint-disable-next-line @angular-eslint/no-input-rename */
23
24
  this.enabledMessageActionsInput = undefined;
25
+ this.mode = 'main';
24
26
  this.enabledMessageActions = [];
25
27
  this.class = 'str-chat-angular__main-panel-inner str-chat-angular__message-list-host';
26
28
  this.unreadMessageCount = 0;
27
29
  this.groupStyles = [];
28
30
  this.authorizedMessageActions = ['flag'];
29
31
  this.isUserScrolledUpThreshold = 300;
30
- this.channelService.activeChannel$.subscribe((channel) => {
32
+ this.subscriptions = [];
33
+ this.subscriptions.push(this.channelService.activeChannel$.subscribe((channel) => {
31
34
  var _a;
32
- this.latestMessageDate = undefined;
33
- this.hasNewMessages = true;
34
- this.isUserScrolledUp = false;
35
- this.containerHeight = undefined;
36
- this.olderMassagesLoaded = false;
37
- this.oldestMessageDate = undefined;
38
- this.unreadMessageCount = 0;
39
- this.isNewMessageSentByUser = undefined;
35
+ this.resetScrollState();
40
36
  const capabilites = (_a = channel === null || channel === void 0 ? void 0 : channel.data) === null || _a === void 0 ? void 0 : _a.own_capabilities;
41
37
  if (capabilites) {
42
38
  this.canReactToMessage = capabilites.indexOf('send-reaction') !== -1;
@@ -65,47 +61,13 @@ export class MessageListComponent {
65
61
  this.authorizedMessageActions.push('delete');
66
62
  this.authorizedMessageActions.push('delete-any');
67
63
  }
68
- this.setEnabledActions();
69
- }
70
- });
71
- this.messages$ = this.channelService.activeChannelMessages$.pipe(tap((messages) => {
72
- var _a, _b, _c, _d, _e;
73
- if (messages.length === 0) {
74
- return;
75
- }
76
- const currentLatestMessageDate = messages[messages.length - 1].created_at;
77
- if (!this.latestMessageDate ||
78
- ((_a = this.latestMessageDate) === null || _a === void 0 ? void 0 : _a.getTime()) < currentLatestMessageDate.getTime()) {
79
- this.latestMessageDate = currentLatestMessageDate;
80
- this.hasNewMessages = true;
81
- this.isNewMessageSentByUser =
82
- ((_b = messages[messages.length - 1].user) === null || _b === void 0 ? void 0 : _b.id) ===
83
- ((_d = (_c = this.chatClientService.chatClient) === null || _c === void 0 ? void 0 : _c.user) === null || _d === void 0 ? void 0 : _d.id);
84
- if (this.isUserScrolledUp) {
85
- this.unreadMessageCount++;
64
+ if (capabilites.indexOf('send-reply') !== -1) {
65
+ this.authorizedMessageActions.push('send-reply');
86
66
  }
67
+ this.setEnabledActions();
87
68
  }
88
- const currentOldestMessageDate = messages[0].created_at;
89
- if (!this.oldestMessageDate) {
90
- this.oldestMessageDate = currentOldestMessageDate;
91
- }
92
- else if (((_e = this.oldestMessageDate) === null || _e === void 0 ? void 0 : _e.getTime()) > currentOldestMessageDate.getTime()) {
93
- this.oldestMessageDate = currentOldestMessageDate;
94
- this.olderMassagesLoaded = true;
95
- }
96
- }), tap((messages) => {
97
- this.groupStyles = messages.map((m, i) => getGroupStyles(m, messages[i - 1], messages[i + 1]));
98
- }), tap((messages) => {
99
- var _a;
100
- return (this.lastSentMessageId = (_a = [...messages]
101
- .reverse()
102
- .find((m) => {
103
- var _a, _b, _c;
104
- return ((_a = m.user) === null || _a === void 0 ? void 0 : _a.id) === ((_c = (_b = this.chatClientService.chatClient) === null || _b === void 0 ? void 0 : _b.user) === null || _c === void 0 ? void 0 : _c.id) &&
105
- m.status !== 'sending';
106
- })) === null || _a === void 0 ? void 0 : _a.id);
107
69
  }));
108
- this.imageLoadService.imageLoad$.subscribe(() => {
70
+ this.subscriptions.push(this.imageLoadService.imageLoad$.subscribe(() => {
109
71
  if (!this.isUserScrolledUp) {
110
72
  this.scrollToBottom();
111
73
  // Hacky and unreliable workaround to scroll down after loaded images move the scrollbar
@@ -113,12 +75,27 @@ export class MessageListComponent {
113
75
  this.scrollToBottom();
114
76
  }, 300);
115
77
  }
116
- });
78
+ }));
79
+ this.subscriptions.push(this.channelService.activeParentMessage$.subscribe((message) => {
80
+ if (message &&
81
+ this.parentMessage &&
82
+ message.id !== this.parentMessage.id &&
83
+ this.mode === 'thread') {
84
+ this.resetScrollState();
85
+ }
86
+ this.parentMessage = message;
87
+ }));
88
+ }
89
+ ngOnInit() {
90
+ this.setMessages$();
117
91
  }
118
92
  ngOnChanges(changes) {
119
93
  if (changes.enabledMessageActionsInput) {
120
94
  this.setEnabledActions();
121
95
  }
96
+ if (changes.mode) {
97
+ this.setMessages$();
98
+ }
122
99
  }
123
100
  ngAfterViewChecked() {
124
101
  if (this.hasNewMessages) {
@@ -144,6 +121,9 @@ export class MessageListComponent {
144
121
  this.containerHeight = this.scrollContainer.nativeElement.scrollHeight;
145
122
  }
146
123
  }
124
+ ngOnDestroy() {
125
+ this.subscriptions.forEach((s) => s.unsubscribe());
126
+ }
147
127
  trackByMessageId(index, item) {
148
128
  return item.id;
149
129
  }
@@ -152,6 +132,7 @@ export class MessageListComponent {
152
132
  this.scrollContainer.nativeElement.scrollHeight;
153
133
  }
154
134
  scrolled() {
135
+ var _a, _b;
155
136
  this.isUserScrolledUp =
156
137
  this.scrollContainer.nativeElement.scrollHeight -
157
138
  (this.scrollContainer.nativeElement.scrollTop +
@@ -160,14 +141,22 @@ export class MessageListComponent {
160
141
  if (!this.isUserScrolledUp) {
161
142
  this.unreadMessageCount = 0;
162
143
  }
163
- if (this.scrollContainer.nativeElement.scrollTop === 0) {
144
+ if (this.scrollContainer.nativeElement.scrollTop <=
145
+ (((_a = this.parentMessageElement) === null || _a === void 0 ? void 0 : _a.nativeElement.clientHeight) || 0) &&
146
+ (this.prevScrollTop === undefined ||
147
+ this.prevScrollTop >
148
+ (((_b = this.parentMessageElement) === null || _b === void 0 ? void 0 : _b.nativeElement.clientHeight) || 0))) {
164
149
  this.containerHeight = this.scrollContainer.nativeElement.scrollHeight;
165
- void this.channelService.loadMoreMessages();
150
+ this.mode === 'main'
151
+ ? void this.channelService.loadMoreMessages()
152
+ : void this.channelService.loadMoreThreadReplies();
166
153
  }
154
+ this.prevScrollTop = this.scrollContainer.nativeElement.scrollTop;
167
155
  }
168
156
  preserveScrollbarPosition() {
169
157
  this.scrollContainer.nativeElement.scrollTop =
170
- this.scrollContainer.nativeElement.scrollHeight - this.containerHeight;
158
+ (this.prevScrollTop || 0) +
159
+ (this.scrollContainer.nativeElement.scrollHeight - this.containerHeight);
171
160
  }
172
161
  setEnabledActions() {
173
162
  this.enabledMessageActions = [];
@@ -179,6 +168,7 @@ export class MessageListComponent {
179
168
  ...this.enabledMessageActionsInput,
180
169
  'send-reaction',
181
170
  'read-events',
171
+ 'send-reply',
182
172
  ];
183
173
  this.enabledMessageActionsInput.forEach((action) => {
184
174
  const isAuthorized = this.authorizedMessageActions.indexOf(action) !== -1;
@@ -187,9 +177,61 @@ export class MessageListComponent {
187
177
  }
188
178
  });
189
179
  }
180
+ setMessages$() {
181
+ this.messages$ = (this.mode === 'main'
182
+ ? this.channelService.activeChannelMessages$
183
+ : this.channelService.activeThreadMessages$).pipe(tap((messages) => {
184
+ var _a, _b, _c, _d, _e;
185
+ if (messages.length === 0) {
186
+ return;
187
+ }
188
+ const currentLatestMessageDate = messages[messages.length - 1].created_at;
189
+ if (!this.latestMessageDate ||
190
+ ((_a = this.latestMessageDate) === null || _a === void 0 ? void 0 : _a.getTime()) < currentLatestMessageDate.getTime()) {
191
+ this.latestMessageDate = currentLatestMessageDate;
192
+ this.hasNewMessages = true;
193
+ this.isNewMessageSentByUser =
194
+ ((_b = messages[messages.length - 1].user) === null || _b === void 0 ? void 0 : _b.id) ===
195
+ ((_d = (_c = this.chatClientService.chatClient) === null || _c === void 0 ? void 0 : _c.user) === null || _d === void 0 ? void 0 : _d.id);
196
+ if (this.isUserScrolledUp) {
197
+ this.unreadMessageCount++;
198
+ }
199
+ }
200
+ const currentOldestMessageDate = messages[0].created_at;
201
+ if (!this.oldestMessageDate) {
202
+ this.oldestMessageDate = currentOldestMessageDate;
203
+ }
204
+ else if (((_e = this.oldestMessageDate) === null || _e === void 0 ? void 0 : _e.getTime()) > currentOldestMessageDate.getTime()) {
205
+ this.oldestMessageDate = currentOldestMessageDate;
206
+ this.olderMassagesLoaded = true;
207
+ }
208
+ }), tap((messages) => {
209
+ this.groupStyles = messages.map((m, i) => getGroupStyles(m, messages[i - 1], messages[i + 1]));
210
+ }), tap((messages) => {
211
+ var _a;
212
+ return (this.lastSentMessageId = (_a = [...messages]
213
+ .reverse()
214
+ .find((m) => {
215
+ var _a, _b, _c;
216
+ return ((_a = m.user) === null || _a === void 0 ? void 0 : _a.id) === ((_c = (_b = this.chatClientService.chatClient) === null || _b === void 0 ? void 0 : _b.user) === null || _c === void 0 ? void 0 : _c.id) &&
217
+ m.status !== 'sending';
218
+ })) === null || _a === void 0 ? void 0 : _a.id);
219
+ }));
220
+ }
221
+ resetScrollState() {
222
+ this.latestMessageDate = undefined;
223
+ this.hasNewMessages = true;
224
+ this.isUserScrolledUp = false;
225
+ this.containerHeight = undefined;
226
+ this.olderMassagesLoaded = false;
227
+ this.oldestMessageDate = undefined;
228
+ this.unreadMessageCount = 0;
229
+ this.prevScrollTop = undefined;
230
+ this.isNewMessageSentByUser = undefined;
231
+ }
190
232
  }
191
233
  MessageListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageListComponent, deps: [{ token: i1.ChannelService }, { token: i2.ChatClientService }, { token: i3.ImageLoadService }], target: i0.ɵɵFactoryTarget.Component });
192
- MessageListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageListComponent, selector: "stream-message-list", inputs: { messageTemplate: "messageTemplate", messageInputTemplate: "messageInputTemplate", mentionTemplate: "mentionTemplate", areReactionsEnabled: "areReactionsEnabled", enabledMessageActionsInput: ["enabledMessageActions", "enabledMessageActionsInput"] }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #scrollContainer\n data-testid=\"scroll-container\"\n class=\"str-chat__list\"\n (scroll)=\"scrolled()\"\n>\n <div class=\"str-chat__reverse-infinite-scroll\">\n <ul class=\"str-chat__ul\">\n <li\n data-testclass=\"message\"\n *ngFor=\"\n let message of messages$ | async;\n let i = index;\n trackBy: trackByMessageId\n \"\n class=\"str-chat__li str-chat__li--{{ groupStyles[i] }}\"\n >\n <ng-container *ngIf=\"messageTemplate; else defaultMessageTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n messageTemplate;\n context: {\n message: message,\n areReactionsEnabled: areReactionsEnabled,\n canReactToMessage: canReactToMessage,\n lastSentMessageId: !!(\n lastSentMessageId && message?.id === lastSentMessageId\n ),\n canReceiveReadEvents: canReceiveReadEvents,\n messageInputTemplate: messageInputTemplate,\n mentionTemplate: mentionTemplate\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultMessageTemplate>\n <stream-message\n [message]=\"message\"\n [areReactionsEnabled]=\"areReactionsEnabled\"\n [canReactToMessage]=\"canReactToMessage\"\n [isLastSentMessage]=\"\n !!(lastSentMessageId && message?.id === lastSentMessageId)\n \"\n [enabledMessageActions]=\"enabledMessageActions\"\n [canReceiveReadEvents]=\"canReceiveReadEvents\"\n [messageInputTemplate]=\"messageInputTemplate\"\n [mentionTemplate]=\"mentionTemplate\"\n ></stream-message>\n </ng-template>\n </li>\n </ul>\n </div>\n</div>\n<div class=\"str-chat__list-notifications\">\n <button\n data-testid=\"scroll-to-bottom\"\n *ngIf=\"isUserScrolledUp\"\n class=\"\n str-chat__message-notification\n str-chat__message-notification-right\n str-chat__message-notification-scroll-down\n \"\n (keyup.enter)=\"scrollToBottom()\"\n (click)=\"scrollToBottom()\"\n >\n <div\n *ngIf=\"unreadMessageCount > 0\"\n class=\"\n str-chat__message-notification\n str-chat__message-notification-scroll-down-unread-count\n \"\n >\n {{ unreadMessageCount }}\n </div>\n </button>\n</div>\n", components: [{ type: i4.MessageComponent, selector: "stream-message", inputs: ["messageInputTemplate", "mentionTemplate", "message", "enabledMessageActions", "areReactionsEnabled", "canReactToMessage", "isLastSentMessage", "canReceiveReadEvents"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i5.AsyncPipe } });
234
+ MessageListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageListComponent, selector: "stream-message-list", inputs: { messageTemplate: "messageTemplate", messageInputTemplate: "messageInputTemplate", mentionTemplate: "mentionTemplate", areReactionsEnabled: "areReactionsEnabled", enabledMessageActionsInput: ["enabledMessageActions", "enabledMessageActionsInput"], mode: "mode" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }, { propertyName: "parentMessageElement", first: true, predicate: ["parentMessageElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #scrollContainer\n data-testid=\"scroll-container\"\n class=\"str-chat__list\"\n (scroll)=\"scrolled()\"\n>\n <div class=\"str-chat__reverse-infinite-scroll\">\n <ul class=\"str-chat__ul\">\n <li\n #parentMessageElement\n *ngIf=\"mode === 'thread'\"\n data-testid=\"parent-message\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n messageTemplateContainer;\n context: { message: parentMessage }\n \"\n ></ng-container>\n <div class=\"str-chat__thread-start\" translate>\n streamChat.Start of a new thread\n </div>\n </li>\n <li\n data-testclass=\"message\"\n *ngFor=\"\n let message of messages$ | async;\n let i = index;\n trackBy: trackByMessageId\n \"\n class=\"str-chat__li str-chat__li--{{ groupStyles[i] }}\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n messageTemplateContainer;\n context: { message: message }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n</div>\n<div class=\"str-chat__list-notifications\">\n <button\n data-testid=\"scroll-to-bottom\"\n *ngIf=\"isUserScrolledUp\"\n class=\"\n str-chat__message-notification\n str-chat__message-notification-right\n str-chat__message-notification-scroll-down\n \"\n (keyup.enter)=\"scrollToBottom()\"\n (click)=\"scrollToBottom()\"\n >\n <div\n *ngIf=\"unreadMessageCount > 0\"\n class=\"\n str-chat__message-notification\n str-chat__message-notification-scroll-down-unread-count\n \"\n >\n {{ unreadMessageCount }}\n </div>\n </button>\n</div>\n\n<ng-template #messageTemplateContainer let-message=\"message\">\n <ng-container *ngIf=\"messageTemplate; else defaultMessageTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n messageTemplate;\n context: {\n message: message,\n areReactionsEnabled: areReactionsEnabled,\n canReactToMessage: canReactToMessage,\n lastSentMessageId: !!(\n lastSentMessageId && message?.id === lastSentMessageId\n ),\n canReceiveReadEvents: canReceiveReadEvents,\n messageInputTemplate: messageInputTemplate,\n mentionTemplate: mentionTemplate,\n mode: mode\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultMessageTemplate>\n <stream-message\n [message]=\"message\"\n [areReactionsEnabled]=\"areReactionsEnabled\"\n [canReactToMessage]=\"canReactToMessage\"\n [isLastSentMessage]=\"\n !!(lastSentMessageId && message?.id === lastSentMessageId)\n \"\n [enabledMessageActions]=\"enabledMessageActions\"\n [canReceiveReadEvents]=\"canReceiveReadEvents\"\n [messageInputTemplate]=\"messageInputTemplate\"\n [mentionTemplate]=\"mentionTemplate\"\n [mode]=\"mode\"\n ></stream-message>\n </ng-template>\n</ng-template>\n", components: [{ type: i4.MessageComponent, selector: "stream-message", inputs: ["messageInputTemplate", "mentionTemplate", "message", "enabledMessageActions", "areReactionsEnabled", "canReactToMessage", "isLastSentMessage", "canReceiveReadEvents", "mode"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i5.AsyncPipe } });
193
235
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageListComponent, decorators: [{
194
236
  type: Component,
195
237
  args: [{
@@ -208,11 +250,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
208
250
  }], enabledMessageActionsInput: [{
209
251
  type: Input,
210
252
  args: ['enabledMessageActions']
253
+ }], mode: [{
254
+ type: Input
211
255
  }], class: [{
212
256
  type: HostBinding,
213
257
  args: ['class']
214
258
  }], scrollContainer: [{
215
259
  type: ViewChild,
216
260
  args: ['scrollContainer']
261
+ }], parentMessageElement: [{
262
+ type: ViewChild,
263
+ args: ['parentMessageElement']
217
264
  }] } });
218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFJTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE9BQU8sRUFBRSxjQUFjLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVE1RCxNQUFNLE9BQU8sb0JBQW9CO0lBb0MvQixZQUNVLGNBQThCLEVBQzlCLGlCQUFvQyxFQUNwQyxnQkFBa0M7UUFGbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQW5DNUM7O1dBRUc7UUFDTSx3QkFBbUIsR0FBd0IsU0FBUyxDQUFDO1FBQzlEOztXQUVHO1FBQ0gsOERBQThEO1FBQzlCLCtCQUEwQixHQUUxQyxTQUFTLENBQUM7UUFJMUIsMEJBQXFCLEdBQWEsRUFBRSxDQUFDO1FBQ1AsVUFBSyxHQUNqQyx3RUFBd0UsQ0FBQztRQUMzRSx1QkFBa0IsR0FBRyxDQUFDLENBQUM7UUFFdkIsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO1FBVXZCLDZCQUF3QixHQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsOEJBQXlCLEdBQUcsR0FBRyxDQUFDO1FBTy9DLElBQUksQ0FBQyxjQUFj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LENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDakQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMxRSxJQUFJLFlBQVksRUFBRTtnQkFDaEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN6QztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7aUhBdk5VLG9CQUFvQjtxR0FBcEIsb0JBQW9CLHdmQ3hCakMscThFQTRFQTsyRkRwRGEsb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFdBQVcsRUFBRSwrQkFBK0I7b0JBQzVDLE1BQU0sRUFBRSxFQUFFO2lCQUNYO29LQUVVLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBSUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUswQiwwQkFBMEI7c0JBQXpELEtBQUs7dUJBQUMsdUJBQXVCO2dCQU9BLEtBQUs7c0JBQWxDLFdBQVc7dUJBQUMsT0FBTztnQkFPWixlQUFlO3NCQUR0QixTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3RyZWFtTWVzc2FnZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRHcm91cFN0eWxlcywgR3JvdXBTdHlsZSB9IGZyb20gJy4vZ3JvdXAtc3R5bGVzJztcbmltcG9ydCB7IEltYWdlTG9hZFNlcnZpY2UgfSBmcm9tICcuL2ltYWdlLWxvYWQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1tZXNzYWdlLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkLCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBtZXNzYWdlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIG1lc3NhZ2VJbnB1dFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBtZW50aW9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3Mvc2RrL2FuZ3VsYXIvY29tcG9uZW50cy9tZXNzYWdlX2xpc3QvI2NhdXRpb24tYXJlcmVhY3Rpb25zZW5hYmxlZC1kZXByZWNhdGVkXG4gICAqL1xuICBASW5wdXQoKSBhcmVSZWFjdGlvbnNFbmFibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL3Nkay9hbmd1bGFyL2NvbXBvbmVudHMvbWVzc2FnZV9saXN0LyNjYXV0aW9uLWVuYWJsZWRtZXNzYWdlYWN0aW9ucy1kZXByZWNhdGVkXG4gICAqL1xuICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZSAqL1xuICBASW5wdXQoJ2VuYWJsZWRNZXNzYWdlQWN0aW9ucycpIGVuYWJsZWRNZXNzYWdlQWN0aW9uc0lucHV0OlxuICAgIHwgc3RyaW5nW11cbiAgICB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgbWVzc2FnZXMkITogT2JzZXJ2YWJsZTxTdHJlYW1NZXNzYWdlW10+O1xuICBjYW5SZWFjdFRvTWVzc2FnZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgY2FuUmVjZWl2ZVJlYWRFdmVudHM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHByaXZhdGUgY2xhc3MgPVxuICAgICdzdHItY2hhdC1hbmd1bGFyX19tYWluLXBhbmVsLWlubmVyIHN0ci1jaGF0LWFuZ3VsYXJfX21lc3NhZ2UtbGlzdC1ob3N0JztcbiAgdW5yZWFkTWVzc2FnZUNvdW50ID0gMDtcbiAgaXNVc2VyU2Nyb2xsZWRVcDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgZ3JvdXBTdHlsZXM6IEdyb3VwU3R5bGVbXSA9IFtdO1xuICBsYXN0U2VudE1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBAVmlld0NoaWxkKCdzY3JvbGxDb250YWluZXInKVxuICBwcml2YXRlIHNjcm9sbENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBwcml2YXRlIGxhdGVzdE1lc3NhZ2VEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhhc05ld01lc3NhZ2VzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNvbnRhaW5lckhlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9sZGVzdE1lc3NhZ2VEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9sZGVyTWFzc2FnZXNMb2FkZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaXNOZXdNZXNzYWdlU2VudEJ5VXNlcjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBhdXRob3JpemVkTWVzc2FnZUFjdGlvbnM6IHN0cmluZ1tdID0gWydmbGFnJ107XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNVc2VyU2Nyb2xsZWRVcFRocmVzaG9sZCA9IDMwMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwcml2YXRlIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBwcml2YXRlIGltYWdlTG9hZFNlcnZpY2U6IEltYWdlTG9hZFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsJC5zdWJzY3JpYmUoKGNoYW5uZWwpID0+IHtcbiAgICAgIHRoaXMubGF0ZXN0TWVzc2FnZURhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmhhc05ld01lc3NhZ2VzID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNVc2VyU2Nyb2xsZWRVcCA9IGZhbHNlO1xuICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMub2xkZXN0TWVzc2FnZURhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnVucmVhZE1lc3NhZ2VDb3VudCA9IDA7XG4gICAgICB0aGlzLmlzTmV3TWVzc2FnZVNlbnRCeVVzZXIgPSB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBjYXBhYmlsaXRlcyA9IGNoYW5uZWw/LmRhdGE/Lm93bl9jYXBhYmlsaXRpZXMgYXMgc3RyaW5nW107XG4gICAgICBpZiAoY2FwYWJpbGl0ZXMpIHtcbiAgICAgICAgdGhpcy5jYW5SZWFjdFRvTWVzc2FnZSA9IGNhcGFiaWxpdGVzLmluZGV4T2YoJ3NlbmQtcmVhY3Rpb24nKSAhPT0gLTE7XG4gICAgICAgIHRoaXMuY2FuUmVjZWl2ZVJlYWRFdmVudHMgPSBjYXBhYmlsaXRlcy5pbmRleE9mKCdyZWFkLWV2ZW50cycpICE9PSAtMTtcbiAgICAgICAgdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnMgPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuY2FuUmVhY3RUb01lc3NhZ2UpIHtcbiAgICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5wdXNoKCdzZW5kLXJlYWN0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY2FuUmVjZWl2ZVJlYWRFdmVudHMpIHtcbiAgICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5wdXNoKCdyZWFkLWV2ZW50cycpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYXBhYmlsaXRlcy5pbmRleE9mKCdmbGFnLW1lc3NhZ2UnKSAhPT0gLTEpIHtcbiAgICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5wdXNoKCdmbGFnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhcGFiaWxpdGVzLmluZGV4T2YoJ3VwZGF0ZS1vd24tbWVzc2FnZScpICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMuYXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zLnB1c2goJ2VkaXQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FwYWJpbGl0ZXMuaW5kZXhPZigndXBkYXRlLWFueS1tZXNzYWdlJykgIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnMucHVzaCgnZWRpdCcpO1xuICAgICAgICAgIHRoaXMuYXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zLnB1c2goJ2VkaXQtYW55Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhcGFiaWxpdGVzLmluZGV4T2YoJ2RlbGV0ZS1vd24tbWVzc2FnZScpICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMuYXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zLnB1c2goJ2RlbGV0ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYXBhYmlsaXRlcy5pbmRleE9mKCdkZWxldGUtYW55LW1lc3NhZ2UnKSAhPT0gLTEpIHtcbiAgICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5wdXNoKCdkZWxldGUnKTtcbiAgICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5wdXNoKCdkZWxldGUtYW55Jyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRFbmFibGVkQWN0aW9ucygpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMubWVzc2FnZXMkID0gdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsTWVzc2FnZXMkLnBpcGUoXG4gICAgICB0YXAoKG1lc3NhZ2VzKSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudExhdGVzdE1lc3NhZ2VEYXRlID1cbiAgICAgICAgICBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXS5jcmVhdGVkX2F0O1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIXRoaXMubGF0ZXN0TWVzc2FnZURhdGUgfHxcbiAgICAgICAgICB0aGlzLmxhdGVzdE1lc3NhZ2VEYXRlPy5nZXRUaW1lKCkgPCBjdXJyZW50TGF0ZXN0TWVzc2FnZURhdGUuZ2V0VGltZSgpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMubGF0ZXN0TWVzc2FnZURhdGUgPSBjdXJyZW50TGF0ZXN0TWVzc2FnZURhdGU7XG4gICAgICAgICAgdGhpcy5oYXNOZXdNZXNzYWdlcyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pc05ld01lc3NhZ2VTZW50QnlVc2VyID1cbiAgICAgICAgICAgIG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdLnVzZXI/LmlkID09PVxuICAgICAgICAgICAgdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50Py51c2VyPy5pZDtcbiAgICAgICAgICBpZiAodGhpcy5pc1VzZXJTY3JvbGxlZFVwKSB7XG4gICAgICAgICAgICB0aGlzLnVucmVhZE1lc3NhZ2VDb3VudCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50T2xkZXN0TWVzc2FnZURhdGUgPSBtZXNzYWdlc1swXS5jcmVhdGVkX2F0O1xuICAgICAgICBpZiAoIXRoaXMub2xkZXN0TWVzc2FnZURhdGUpIHtcbiAgICAgICAgICB0aGlzLm9sZGVzdE1lc3NhZ2VEYXRlID0gY3VycmVudE9sZGVzdE1lc3NhZ2VEYXRlO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIHRoaXMub2xkZXN0TWVzc2FnZURhdGU/LmdldFRpbWUoKSA+IGN1cnJlbnRPbGRlc3RNZXNzYWdlRGF0ZS5nZXRUaW1lKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5vbGRlc3RNZXNzYWdlRGF0ZSA9IGN1cnJlbnRPbGRlc3RNZXNzYWdlRGF0ZTtcbiAgICAgICAgICB0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRhcCgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgdGhpcy5ncm91cFN0eWxlcyA9IG1lc3NhZ2VzLm1hcCgobSwgaSkgPT5cbiAgICAgICAgICBnZXRHcm91cFN0eWxlcyhtLCBtZXNzYWdlc1tpIC0gMV0sIG1lc3NhZ2VzW2kgKyAxXSlcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKFxuICAgICAgICAobWVzc2FnZXMpID0+XG4gICAgICAgICAgKHRoaXMubGFzdFNlbnRNZXNzYWdlSWQgPSBbLi4ubWVzc2FnZXNdXG4gICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAuZmluZChcbiAgICAgICAgICAgICAgKG0pID0+XG4gICAgICAgICAgICAgICAgbS51c2VyPy5pZCA9PT0gdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50Py51c2VyPy5pZCAmJlxuICAgICAgICAgICAgICAgIG0uc3RhdHVzICE9PSAnc2VuZGluZydcbiAgICAgICAgICAgICk/LmlkKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5pbWFnZUxvYWRTZXJ2aWNlLmltYWdlTG9hZCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5pc1VzZXJTY3JvbGxlZFVwKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgICAgLy8gSGFja3kgYW5kIHVucmVsaWFibGUgd29ya2Fyb3VuZCB0byBzY3JvbGwgZG93biBhZnRlciBsb2FkZWQgaW1hZ2VzIG1vdmUgdGhlIHNjcm9sbGJhclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zSW5wdXQpIHtcbiAgICAgIHRoaXMuc2V0RW5hYmxlZEFjdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgaWYgKHRoaXMuaGFzTmV3TWVzc2FnZXMpIHtcbiAgICAgIGlmICghdGhpcy5pc1VzZXJTY3JvbGxlZFVwIHx8IHRoaXMuaXNOZXdNZXNzYWdlU2VudEJ5VXNlcikge1xuICAgICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICAgIC8vIEhhY2t5IGFuZCB1bnJlbGlhYmxlIHdvcmthcm91bmQgdG8gc2Nyb2xsIGRvd24gYWZ0ZXIgbG9hZGVkIGltYWdlcyBtb3ZlIHRoZSBzY3JvbGxiYXJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICAgICAgICB9LCAzMDApO1xuICAgICAgfVxuICAgICAgdGhpcy5oYXNOZXdNZXNzYWdlcyA9IGZhbHNlO1xuICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICB9IGVsc2UgaWYgKHRoaXMub2xkZXJNYXNzYWdlc0xvYWRlZCkge1xuICAgICAgdGhpcy5wcmVzZXJ2ZVNjcm9sbGJhclBvc2l0aW9uKCk7XG4gICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgdGhpcy5vbGRlck1hc3NhZ2VzTG9hZGVkID0gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0IDwgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgJiZcbiAgICAgICF0aGlzLmlzVXNlclNjcm9sbGVkVXBcbiAgICApIHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeU1lc3NhZ2VJZChpbmRleDogbnVtYmVyLCBpdGVtOiBTdHJlYW1NZXNzYWdlKSB7XG4gICAgcmV0dXJuIGl0ZW0uaWQ7XG4gIH1cblxuICBzY3JvbGxUb0JvdHRvbSgpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgfVxuXG4gIHNjcm9sbGVkKCkge1xuICAgIHRoaXMuaXNVc2VyU2Nyb2xsZWRVcCA9XG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCAtXG4gICAgICAgICh0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCArXG4gICAgICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQpID5cbiAgICAgIHRoaXMuaXNVc2VyU2Nyb2xsZWRVcFRocmVzaG9sZDtcbiAgICBpZiAoIXRoaXMuaXNVc2VyU2Nyb2xsZWRVcCkge1xuICAgICAgdGhpcy51bnJlYWRNZXNzYWdlQ291bnQgPSAwO1xuICAgIH1cbiAgICBpZiAodGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPT09IDApIHtcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UubG9hZE1vcmVNZXNzYWdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJlc2VydmVTY3JvbGxiYXJQb3NpdGlvbigpIHtcbiAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCAtIHRoaXMuY29udGFpbmVySGVpZ2h0ITtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RW5hYmxlZEFjdGlvbnMoKSB7XG4gICAgdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMgPSBbXTtcbiAgICBpZiAoIXRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zSW5wdXQpIHtcbiAgICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zID0gdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnM7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zSW5wdXQgPSBbXG4gICAgICAuLi50aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9uc0lucHV0LFxuICAgICAgJ3NlbmQtcmVhY3Rpb24nLFxuICAgICAgJ3JlYWQtZXZlbnRzJyxcbiAgICBdO1xuICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zSW5wdXQuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBpc0F1dGhvcml6ZWQgPSB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5pbmRleE9mKGFjdGlvbikgIT09IC0xO1xuICAgICAgaWYgKGlzQXV0aG9yaXplZCkge1xuICAgICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgI3Njcm9sbENvbnRhaW5lclxuICBkYXRhLXRlc3RpZD1cInNjcm9sbC1jb250YWluZXJcIlxuICBjbGFzcz1cInN0ci1jaGF0X19saXN0XCJcbiAgKHNjcm9sbCk9XCJzY3JvbGxlZCgpXCJcbj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19yZXZlcnNlLWluZmluaXRlLXNjcm9sbFwiPlxuICAgIDx1bCBjbGFzcz1cInN0ci1jaGF0X191bFwiPlxuICAgICAgPGxpXG4gICAgICAgIGRhdGEtdGVzdGNsYXNzPVwibWVzc2FnZVwiXG4gICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBtZXNzYWdlIG9mIG1lc3NhZ2VzJCB8IGFzeW5jO1xuICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tCeU1lc3NhZ2VJZFxuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19saSBzdHItY2hhdF9fbGktLXt7IGdyb3VwU3R5bGVzW2ldIH19XCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0TWVzc2FnZVRlbXBsYXRlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgbWVzc2FnZVRlbXBsYXRlO1xuICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBhcmVSZWFjdGlvbnNFbmFibGVkOiBhcmVSZWFjdGlvbnNFbmFibGVkLFxuICAgICAgICAgICAgICAgIGNhblJlYWN0VG9NZXNzYWdlOiBjYW5SZWFjdFRvTWVzc2FnZSxcbiAgICAgICAgICAgICAgICBsYXN0U2VudE1lc3NhZ2VJZDogISEoXG4gICAgICAgICAgICAgICAgICBsYXN0U2VudE1lc3NhZ2VJZCAmJiBtZXNzYWdlPy5pZCA9PT0gbGFzdFNlbnRNZXNzYWdlSWRcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGNhblJlY2VpdmVSZWFkRXZlbnRzOiBjYW5SZWNlaXZlUmVhZEV2ZW50cyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlSW5wdXRUZW1wbGF0ZTogbWVzc2FnZUlucHV0VGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgbWVudGlvblRlbXBsYXRlOiBtZW50aW9uVGVtcGxhdGVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRNZXNzYWdlVGVtcGxhdGU+XG4gICAgICAgICAgPHN0cmVhbS1tZXNzYWdlXG4gICAgICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlXCJcbiAgICAgICAgICAgIFthcmVSZWFjdGlvbnNFbmFibGVkXT1cImFyZVJlYWN0aW9uc0VuYWJsZWRcIlxuICAgICAgICAgICAgW2NhblJlYWN0VG9NZXNzYWdlXT1cImNhblJlYWN0VG9NZXNzYWdlXCJcbiAgICAgICAgICAgIFtpc0xhc3RTZW50TWVzc2FnZV09XCJcbiAgICAgICAgICAgICAgISEobGFzdFNlbnRNZXNzYWdlSWQgJiYgbWVzc2FnZT8uaWQgPT09IGxhc3RTZW50TWVzc2FnZUlkKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtlbmFibGVkTWVzc2FnZUFjdGlvbnNdPVwiZW5hYmxlZE1lc3NhZ2VBY3Rpb25zXCJcbiAgICAgICAgICAgIFtjYW5SZWNlaXZlUmVhZEV2ZW50c109XCJjYW5SZWNlaXZlUmVhZEV2ZW50c1wiXG4gICAgICAgICAgICBbbWVzc2FnZUlucHV0VGVtcGxhdGVdPVwibWVzc2FnZUlucHV0VGVtcGxhdGVcIlxuICAgICAgICAgICAgW21lbnRpb25UZW1wbGF0ZV09XCJtZW50aW9uVGVtcGxhdGVcIlxuICAgICAgICAgID48L3N0cmVhbS1tZXNzYWdlPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInN0ci1jaGF0X19saXN0LW5vdGlmaWNhdGlvbnNcIj5cbiAgPGJ1dHRvblxuICAgIGRhdGEtdGVzdGlkPVwic2Nyb2xsLXRvLWJvdHRvbVwiXG4gICAgKm5nSWY9XCJpc1VzZXJTY3JvbGxlZFVwXCJcbiAgICBjbGFzcz1cIlxuICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utbm90aWZpY2F0aW9uXG4gICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb24tcmlnaHRcbiAgICAgIHN0ci1jaGF0X19tZXNzYWdlLW5vdGlmaWNhdGlvbi1zY3JvbGwtZG93blxuICAgIFwiXG4gICAgKGtleXVwLmVudGVyKT1cInNjcm9sbFRvQm90dG9tKClcIlxuICAgIChjbGljayk9XCJzY3JvbGxUb0JvdHRvbSgpXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwidW5yZWFkTWVzc2FnZUNvdW50ID4gMFwiXG4gICAgICBjbGFzcz1cIlxuICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb25cbiAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utbm90aWZpY2F0aW9uLXNjcm9sbC1kb3duLXVucmVhZC1jb3VudFxuICAgICAgXCJcbiAgICA+XG4gICAgICB7eyB1bnJlYWRNZXNzYWdlQ291bnQgfX1cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
265
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFNTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE9BQU8sRUFBRSxjQUFjLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFRNUQsTUFBTSxPQUFPLG9CQUFvQjtJQTRDL0IsWUFDVSxjQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsZ0JBQWtDO1FBRmxDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUF6QzVDOztXQUVHO1FBQ00sd0JBQW1CLEdBQXdCLFNBQVMsQ0FBQztRQUM5RDs7V0FFRztRQUNILDhEQUE4RDtRQUM5QiwrQkFBMEIsR0FFMUMsU0FBUyxDQUFDO1FBQ2pCLFNBQUksR0FBc0IsTUFBTSxDQUFDO1FBSTFDLDBCQUFxQixHQUFhLEVBQUUsQ0FBQztRQUNQLFVBQUssR0FDakMsd0VBQXdFLENBQUM7UUFDM0UsdUJBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBRXZCLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQWF2Qiw2QkFBd0IsR0FBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLDhCQUF5QixHQUFHLEdB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TUFBTSxFQUFFLEVBQUU7aUJBQ1g7b0tBSVUsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFJRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBSzBCLDBCQUEwQjtzQkFBekQsS0FBSzt1QkFBQyx1QkFBdUI7Z0JBR3JCLElBQUk7c0JBQVosS0FBSztnQkFLd0IsS0FBSztzQkFBbEMsV0FBVzt1QkFBQyxPQUFPO2dCQVFaLGVBQWU7c0JBRHRCLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUdwQixvQkFBb0I7c0JBRDNCLFNBQVM7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdHJlYW1NZXNzYWdlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ2hhdENsaWVudFNlcnZpY2UgfSBmcm9tICcuLi9jaGF0LWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldEdyb3VwU3R5bGVzLCBHcm91cFN0eWxlIH0gZnJvbSAnLi9ncm91cC1zdHlsZXMnO1xuaW1wb3J0IHsgSW1hZ2VMb2FkU2VydmljZSB9IGZyb20gJy4vaW1hZ2UtbG9hZC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLW1lc3NhZ2UtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlTGlzdENvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KCkgbWVzc2FnZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBtZXNzYWdlSW5wdXRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgbWVudGlvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL3Nkay9hbmd1bGFyL2NvbXBvbmVudHMvbWVzc2FnZV9saXN0LyNjYXV0aW9uLWFyZXJlYWN0aW9uc2VuYWJsZWQtZGVwcmVjYXRlZFxuICAgKi9cbiAgQElucHV0KCkgYXJlUmVhY3Rpb25zRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9zZGsvYW5ndWxhci9jb21wb25lbnRzL21lc3NhZ2VfbGlzdC8jY2F1dGlvbi1lbmFibGVkbWVzc2FnZWFjdGlvbnMtZGVwcmVjYXRlZFxuICAgKi9cbiAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWUgKi9cbiAgQElucHV0KCdlbmFibGVkTWVzc2FnZUFjdGlvbnMnKSBlbmFibGVkTWVzc2FnZUFjdGlvbnNJbnB1dDpcbiAgICB8IHN0cmluZ1tdXG4gICAgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIG1vZGU6ICdtYWluJyB8ICd0aHJlYWQnID0gJ21haW4nO1xuICBtZXNzYWdlcyQhOiBPYnNlcnZhYmxlPFN0cmVhbU1lc3NhZ2VbXT47XG4gIGNhblJlYWN0VG9NZXNzYWdlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBjYW5SZWNlaXZlUmVhZEV2ZW50czogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgZW5hYmxlZE1lc3NhZ2VBY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgcHJpdmF0ZSBjbGFzcyA9XG4gICAgJ3N0ci1jaGF0LWFuZ3VsYXJfX21haW4tcGFuZWwtaW5uZXIgc3RyLWNoYXQtYW5ndWxhcl9fbWVzc2FnZS1saXN0LWhvc3QnO1xuICB1bnJlYWRNZXNzYWdlQ291bnQgPSAwO1xuICBpc1VzZXJTY3JvbGxlZFVwOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBncm91cFN0eWxlczogR3JvdXBTdHlsZVtdID0gW107XG4gIGxhc3RTZW50TWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBhcmVudE1lc3NhZ2U6IFN0cmVhbU1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbENvbnRhaW5lcicpXG4gIHByaXZhdGUgc2Nyb2xsQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3BhcmVudE1lc3NhZ2VFbGVtZW50JylcbiAgcHJpdmF0ZSBwYXJlbnRNZXNzYWdlRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBwcml2YXRlIGxhdGVzdE1lc3NhZ2VEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhhc05ld01lc3NhZ2VzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNvbnRhaW5lckhlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9sZGVzdE1lc3NhZ2VEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9sZGVyTWFzc2FnZXNMb2FkZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaXNOZXdNZXNzYWdlU2VudEJ5VXNlcjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBhdXRob3JpemVkTWVzc2FnZUFjdGlvbnM6IHN0cmluZ1tdID0gWydmbGFnJ107XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNVc2VyU2Nyb2xsZWRVcFRocmVzaG9sZCA9IDMwMDtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIHByZXZTY3JvbGxUb3A6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwcml2YXRlIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBwcml2YXRlIGltYWdlTG9hZFNlcnZpY2U6IEltYWdlTG9hZFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLnN1YnNjcmliZSgoY2hhbm5lbCkgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0U2Nyb2xsU3RhdGUoKTtcbiAgICAgICAgY29uc3QgY2FwYWJpbGl0ZXMgPSBjaGFubmVsPy5kYXRhPy5vd25fY2FwYWJpbGl0aWVzIGFzIHN0cmluZ1tdO1xuICAgICAgICBpZiAoY2FwYWJpbGl0ZXMpIHtcbiAgICAgICAgICB0aGlzLmNhblJlYWN0VG9NZXNzYWdlID0gY2FwYWJpbGl0ZXMuaW5kZXhPZignc2VuZC1yZWFjdGlvbicpICE9PSAtMTtcbiAgICAgICAgICB0aGlzLmNhblJlY2VpdmVSZWFkRXZlbnRzID0gY2FwYWJpbGl0ZXMuaW5kZXhPZigncmVhZC1ldmVudHMnKSAhPT0gLTE7XG4gICAgICAgICAgdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnMgPSBbXTtcbiAgICAgICAgICBpZiAodGhpcy5jYW5SZWFjdFRvTWVzc2FnZSkge1xuICAgICAgICAgICAgdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnMucHVzaCgnc2VuZC1yZWFjdGlvbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5jYW5SZWNlaXZlUmVhZEV2ZW50cykge1xuICAgICAgICAgICAgdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnMucHVzaCgncmVhZC1ldmVudHMnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNhcGFiaWxpdGVzLmluZGV4T2YoJ2ZsYWctbWVzc2FnZScpICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnMucHVzaCgnZmxhZycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2FwYWJpbGl0ZXMuaW5kZXhPZigndXBkYXRlLW93bi1tZXNzYWdlJykgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5wdXNoKCdlZGl0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjYXBhYmlsaXRlcy5pbmRleE9mKCd1cGRhdGUtYW55LW1lc3NhZ2UnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zLnB1c2goJ2VkaXQnKTtcbiAgICAgICAgICAgIHRoaXMuYXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zLnB1c2goJ2VkaXQtYW55Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjYXBhYmlsaXRlcy5pbmRleE9mKCdkZWxldGUtb3duLW1lc3NhZ2UnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zLnB1c2goJ2RlbGV0ZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2FwYWJpbGl0ZXMuaW5kZXhPZignZGVsZXRlLWFueS1tZXNzYWdlJykgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5wdXNoKCdkZWxldGUnKTtcbiAgICAgICAgICAgIHRoaXMuYXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zLnB1c2goJ2RlbGV0ZS1hbnknKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNhcGFiaWxpdGVzLmluZGV4T2YoJ3NlbmQtcmVwbHknKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zLnB1c2goJ3NlbmQtcmVwbHknKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZXRFbmFibGVkQWN0aW9ucygpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmltYWdlTG9hZFNlcnZpY2UuaW1hZ2VMb2FkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNVc2VyU2Nyb2xsZWRVcCkge1xuICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgICAgICAvLyBIYWNreSBhbmQgdW5yZWxpYWJsZSB3b3JrYXJvdW5kIHRvIHNjcm9sbCBkb3duIGFmdGVyIGxvYWRlZCBpbWFnZXMgbW92ZSB0aGUgc2Nyb2xsYmFyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVQYXJlbnRNZXNzYWdlJC5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG1lc3NhZ2UgJiZcbiAgICAgICAgICB0aGlzLnBhcmVudE1lc3NhZ2UgJiZcbiAgICAgICAgICBtZXNzYWdlLmlkICE9PSB0aGlzLnBhcmVudE1lc3NhZ2UuaWQgJiZcbiAgICAgICAgICB0aGlzLm1vZGUgPT09ICd0aHJlYWQnXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMucmVzZXRTY3JvbGxTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFyZW50TWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldE1lc3NhZ2VzJCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmVuYWJsZWRNZXNzYWdlQWN0aW9uc0lucHV0KSB7XG4gICAgICB0aGlzLnNldEVuYWJsZWRBY3Rpb25zKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLm1vZGUpIHtcbiAgICAgIHRoaXMuc2V0TWVzc2FnZXMkKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIGlmICh0aGlzLmhhc05ld01lc3NhZ2VzKSB7XG4gICAgICBpZiAoIXRoaXMuaXNVc2VyU2Nyb2xsZWRVcCB8fCB0aGlzLmlzTmV3TWVzc2FnZVNlbnRCeVVzZXIpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICAgICAgICAvLyBIYWNreSBhbmQgdW5yZWxpYWJsZSB3b3JrYXJvdW5kIHRvIHNjcm9sbCBkb3duIGFmdGVyIGxvYWRlZCBpbWFnZXMgbW92ZSB0aGUgc2Nyb2xsYmFyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQpIHtcbiAgICAgIHRoaXMucHJlc2VydmVTY3JvbGxiYXJQb3NpdGlvbigpO1xuICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgIHRoaXMub2xkZXJNYXNzYWdlc0xvYWRlZCA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA8IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ICYmXG4gICAgICAhdGhpcy5pc1VzZXJTY3JvbGxlZFVwXG4gICAgKSB7XG4gICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgdHJhY2tCeU1lc3NhZ2VJZChpbmRleDogbnVtYmVyLCBpdGVtOiBTdHJlYW1NZXNzYWdlKSB7XG4gICAgcmV0dXJuIGl0ZW0uaWQ7XG4gIH1cblxuICBzY3JvbGxUb0JvdHRvbSgpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9XG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgfVxuXG4gIHNjcm9sbGVkKCkge1xuICAgIHRoaXMuaXNVc2VyU2Nyb2xsZWRVcCA9XG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCAtXG4gICAgICAgICh0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCArXG4gICAgICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQpID5cbiAgICAgIHRoaXMuaXNVc2VyU2Nyb2xsZWRVcFRocmVzaG9sZDtcbiAgICBpZiAoIXRoaXMuaXNVc2VyU2Nyb2xsZWRVcCkge1xuICAgICAgdGhpcy51bnJlYWRNZXNzYWdlQ291bnQgPSAwO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA8PVxuICAgICAgICAodGhpcy5wYXJlbnRNZXNzYWdlRWxlbWVudD8ubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQgfHwgMCkgJiZcbiAgICAgICh0aGlzLnByZXZTY3JvbGxUb3AgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICB0aGlzLnByZXZTY3JvbGxUb3AgPlxuICAgICAgICAgICh0aGlzLnBhcmVudE1lc3NhZ2VFbGVtZW50Py5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCB8fCAwKSlcbiAgICApIHtcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICB0aGlzLm1vZGUgPT09ICdtYWluJ1xuICAgICAgICA/IHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5sb2FkTW9yZU1lc3NhZ2VzKClcbiAgICAgICAgOiB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UubG9hZE1vcmVUaHJlYWRSZXBsaWVzKCk7XG4gICAgfVxuICAgIHRoaXMucHJldlNjcm9sbFRvcCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVzZXJ2ZVNjcm9sbGJhclBvc2l0aW9uKCkge1xuICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID1cbiAgICAgICh0aGlzLnByZXZTY3JvbGxUb3AgfHwgMCkgK1xuICAgICAgKHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gdGhpcy5jb250YWluZXJIZWlnaHQhKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RW5hYmxlZEFjdGlvbnMoKSB7XG4gICAgdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMgPSBbXTtcbiAgICBpZiAoIXRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zSW5wdXQpIHtcbiAgICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zID0gdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnM7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zSW5wdXQgPSBbXG4gICAgICAuLi50aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9uc0lucHV0LFxuICAgICAgJ3NlbmQtcmVhY3Rpb24nLFxuICAgICAgJ3JlYWQtZXZlbnRzJyxcbiAgICAgICdzZW5kLXJlcGx5JyxcbiAgICBdO1xuICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zSW5wdXQuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBpc0F1dGhvcml6ZWQgPSB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5pbmRleE9mKGFjdGlvbikgIT09IC0xO1xuICAgICAgaWYgKGlzQXV0aG9yaXplZCkge1xuICAgICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldE1lc3NhZ2VzJCgpIHtcbiAgICB0aGlzLm1lc3NhZ2VzJCA9IChcbiAgICAgIHRoaXMubW9kZSA9PT0gJ21haW4nXG4gICAgICAgID8gdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsTWVzc2FnZXMkXG4gICAgICAgIDogdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVUaHJlYWRNZXNzYWdlcyRcbiAgICApLnBpcGUoXG4gICAgICB0YXAoKG1lc3NhZ2VzKSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudExhdGVzdE1lc3NhZ2VEYXRlID1cbiAgICAgICAgICBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXS5jcmVhdGVkX2F0O1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIXRoaXMubGF0ZXN0TWVzc2FnZURhdGUgfHxcbiAgICAgICAgICB0aGlzLmxhdGVzdE1lc3NhZ2VEYXRlPy5nZXRUaW1lKCkgPCBjdXJyZW50TGF0ZXN0TWVzc2FnZURhdGUuZ2V0VGltZSgpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMubGF0ZXN0TWVzc2FnZURhdGUgPSBjdXJyZW50TGF0ZXN0TWVzc2FnZURhdGU7XG4gICAgICAgICAgdGhpcy5oYXNOZXdNZXNzYWdlcyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5pc05ld01lc3NhZ2VTZW50QnlVc2VyID1cbiAgICAgICAgICAgIG1lc3NhZ2VzW21lc3NhZ2VzLmxlbmd0aCAtIDFdLnVzZXI/LmlkID09PVxuICAgICAgICAgICAgdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50Py51c2VyPy5pZDtcbiAgICAgICAgICBpZiAodGhpcy5pc1VzZXJTY3JvbGxlZFVwKSB7XG4gICAgICAgICAgICB0aGlzLnVucmVhZE1lc3NhZ2VDb3VudCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50T2xkZXN0TWVzc2FnZURhdGUgPSBtZXNzYWdlc1swXS5jcmVhdGVkX2F0O1xuICAgICAgICBpZiAoIXRoaXMub2xkZXN0TWVzc2FnZURhdGUpIHtcbiAgICAgICAgICB0aGlzLm9sZGVzdE1lc3NhZ2VEYXRlID0gY3VycmVudE9sZGVzdE1lc3NhZ2VEYXRlO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIHRoaXMub2xkZXN0TWVzc2FnZURhdGU/LmdldFRpbWUoKSA+IGN1cnJlbnRPbGRlc3RNZXNzYWdlRGF0ZS5nZXRUaW1lKClcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5vbGRlc3RNZXNzYWdlRGF0ZSA9IGN1cnJlbnRPbGRlc3RNZXNzYWdlRGF0ZTtcbiAgICAgICAgICB0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRhcCgobWVzc2FnZXMpID0+IHtcbiAgICAgICAgdGhpcy5ncm91cFN0eWxlcyA9IG1lc3NhZ2VzLm1hcCgobSwgaSkgPT5cbiAgICAgICAgICBnZXRHcm91cFN0eWxlcyhtLCBtZXNzYWdlc1tpIC0gMV0sIG1lc3NhZ2VzW2kgKyAxXSlcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKFxuICAgICAgICAobWVzc2FnZXMpID0+XG4gICAgICAgICAgKHRoaXMubGFzdFNlbnRNZXNzYWdlSWQgPSBbLi4ubWVzc2FnZXNdXG4gICAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgICAuZmluZChcbiAgICAgICAgICAgICAgKG0pID0+XG4gICAgICAgICAgICAgICAgbS51c2VyPy5pZCA9PT0gdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50Py51c2VyPy5pZCAmJlxuICAgICAgICAgICAgICAgIG0uc3RhdHVzICE9PSAnc2VuZGluZydcbiAgICAgICAgICAgICk/LmlkKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0U2Nyb2xsU3RhdGUoKSB7XG4gICAgdGhpcy5sYXRlc3RNZXNzYWdlRGF0ZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmhhc05ld01lc3NhZ2VzID0gdHJ1ZTtcbiAgICB0aGlzLmlzVXNlclNjcm9sbGVkVXAgPSBmYWxzZTtcbiAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQgPSBmYWxzZTtcbiAgICB0aGlzLm9sZGVzdE1lc3NhZ2VEYXRlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMudW5yZWFkTWVzc2FnZUNvdW50ID0gMDtcbiAgICB0aGlzLnByZXZTY3JvbGxUb3AgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pc05ld01lc3NhZ2VTZW50QnlVc2VyID0gdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8ZGl2XG4gICNzY3JvbGxDb250YWluZXJcbiAgZGF0YS10ZXN0aWQ9XCJzY3JvbGwtY29udGFpbmVyXCJcbiAgY2xhc3M9XCJzdHItY2hhdF9fbGlzdFwiXG4gIChzY3JvbGwpPVwic2Nyb2xsZWQoKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcmV2ZXJzZS1pbmZpbml0ZS1zY3JvbGxcIj5cbiAgICA8dWwgY2xhc3M9XCJzdHItY2hhdF9fdWxcIj5cbiAgICAgIDxsaVxuICAgICAgICAjcGFyZW50TWVzc2FnZUVsZW1lbnRcbiAgICAgICAgKm5nSWY9XCJtb2RlID09PSAndGhyZWFkJ1wiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwicGFyZW50LW1lc3NhZ2VcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIG1lc3NhZ2VUZW1wbGF0ZUNvbnRhaW5lcjtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgbWVzc2FnZTogcGFyZW50TWVzc2FnZSB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3RocmVhZC1zdGFydFwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICBzdHJlYW1DaGF0LlN0YXJ0IG9mIGEgbmV3IHRocmVhZFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbGk+XG4gICAgICA8bGlcbiAgICAgICAgZGF0YS10ZXN0Y2xhc3M9XCJtZXNzYWdlXCJcbiAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgbGV0IG1lc3NhZ2Ugb2YgbWVzc2FnZXMkIHwgYXN5bmM7XG4gICAgICAgICAgbGV0IGkgPSBpbmRleDtcbiAgICAgICAgICB0cmFja0J5OiB0cmFja0J5TWVzc2FnZUlkXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2xpIHN0ci1jaGF0X19saS0te3sgZ3JvdXBTdHlsZXNbaV0gfX1cIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIG1lc3NhZ2VUZW1wbGF0ZUNvbnRhaW5lcjtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgbWVzc2FnZTogbWVzc2FnZSB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInN0ci1jaGF0X19saXN0LW5vdGlmaWNhdGlvbnNcIj5cbiAgPGJ1dHRvblxuICAgIGRhdGEtdGVzdGlkPVwic2Nyb2xsLXRvLWJvdHRvbVwiXG4gICAgKm5nSWY9XCJpc1VzZXJTY3JvbGxlZFVwXCJcbiAgICBjbGFzcz1cIlxuICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utbm90aWZpY2F0aW9uXG4gICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb24tcmlnaHRcbiAgICAgIHN0ci1jaGF0X19tZXNzYWdlLW5vdGlmaWNhdGlvbi1zY3JvbGwtZG93blxuICAgIFwiXG4gICAgKGtleXVwLmVudGVyKT1cInNjcm9sbFRvQm90dG9tKClcIlxuICAgIChjbGljayk9XCJzY3JvbGxUb0JvdHRvbSgpXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwidW5yZWFkTWVzc2FnZUNvdW50ID4gMFwiXG4gICAgICBjbGFzcz1cIlxuICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb25cbiAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utbm90aWZpY2F0aW9uLXNjcm9sbC1kb3duLXVucmVhZC1jb3VudFxuICAgICAgXCJcbiAgICA+XG4gICAgICB7eyB1bnJlYWRNZXNzYWdlQ291bnQgfX1cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNtZXNzYWdlVGVtcGxhdGVDb250YWluZXIgbGV0LW1lc3NhZ2U9XCJtZXNzYWdlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlVGVtcGxhdGU7IGVsc2UgZGVmYXVsdE1lc3NhZ2VUZW1wbGF0ZVwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgIG1lc3NhZ2VUZW1wbGF0ZTtcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgICAgYXJlUmVhY3Rpb25zRW5hYmxlZDogYXJlUmVhY3Rpb25zRW5hYmxlZCxcbiAgICAgICAgICBjYW5SZWFjdFRvTWVzc2FnZTogY2FuUmVhY3RUb01lc3NhZ2UsXG4gICAgICAgICAgbGFzdFNlbnRNZXNzYWdlSWQ6ICEhKFxuICAgICAgICAgICAgbGFzdFNlbnRNZXNzYWdlSWQgJiYgbWVzc2FnZT8uaWQgPT09IGxhc3RTZW50TWVzc2FnZUlkXG4gICAgICAgICAgKSxcbiAgICAgICAgICBjYW5SZWNlaXZlUmVhZEV2ZW50czogY2FuUmVjZWl2ZVJlYWRFdmVudHMsXG4gICAgICAgICAgbWVzc2FnZUlucHV0VGVtcGxhdGU6IG1lc3NhZ2VJbnB1dFRlbXBsYXRlLFxuICAgICAgICAgIG1lbnRpb25UZW1wbGF0ZTogbWVudGlvblRlbXBsYXRlLFxuICAgICAgICAgIG1vZGU6IG1vZGVcbiAgICAgICAgfVxuICAgICAgXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRNZXNzYWdlVGVtcGxhdGU+XG4gICAgPHN0cmVhbS1tZXNzYWdlXG4gICAgICBbbWVzc2FnZV09XCJtZXNzYWdlXCJcbiAgICAgIFthcmVSZWFjdGlvbnNFbmFibGVkXT1cImFyZVJlYWN0aW9uc0VuYWJsZWRcIlxuICAgICAgW2NhblJlYWN0VG9NZXNzYWdlXT1cImNhblJlYWN0VG9NZXNzYWdlXCJcbiAgICAgIFtpc0xhc3RTZW50TWVzc2FnZV09XCJcbiAgICAgICAgISEobGFzdFNlbnRNZXNzYWdlSWQgJiYgbWVzc2FnZT8uaWQgPT09IGxhc3RTZW50TWVzc2FnZUlkKVxuICAgICAgXCJcbiAgICAgIFtlbmFibGVkTWVzc2FnZUFjdGlvbnNdPVwiZW5hYmxlZE1lc3NhZ2VBY3Rpb25zXCJcbiAgICAgIFtjYW5SZWNlaXZlUmVhZEV2ZW50c109XCJjYW5SZWNlaXZlUmVhZEV2ZW50c1wiXG4gICAgICBbbWVzc2FnZUlucHV0VGVtcGxhdGVdPVwibWVzc2FnZUlucHV0VGVtcGxhdGVcIlxuICAgICAgW21lbnRpb25UZW1wbGF0ZV09XCJtZW50aW9uVGVtcGxhdGVcIlxuICAgICAgW21vZGVdPVwibW9kZVwiXG4gICAgPjwvc3RyZWFtLW1lc3NhZ2U+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,5 +1,5 @@
1
1
  import { v4 as uuidv4 } from 'uuid';
2
- export const createMessagePreview = (user, text, attachments, mentionedUsers) => {
2
+ export const createMessagePreview = (user, text, attachments, mentionedUsers, parentId) => {
3
3
  const clientSideId = `${user.id}-${uuidv4()}`;
4
4
  return {
5
5
  __html: text,
@@ -13,6 +13,7 @@ export const createMessagePreview = (user, text, attachments, mentionedUsers) =>
13
13
  user,
14
14
  attachments,
15
15
  mentioned_users: mentionedUsers,
16
+ parent_id: parentId,
16
17
  };
17
18
  };
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wcmV2aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtcHJldmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUNsQyxJQUFrQixFQUNsQixJQUFZLEVBQ1osV0FBeUIsRUFDekIsY0FBOEIsRUFDOUIsRUFBRTtJQUNGLE1BQU0sWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBRTlDLE9BQU87UUFDTCxNQUFNLEVBQUUsSUFBSTtRQUNaLFVBQVUsRUFBRSxJQUFJLElBQUksRUFBRTtRQUN0QixJQUFJLEVBQUUsSUFBSTtRQUNWLEVBQUUsRUFBRSxZQUFZO1FBQ2hCLFNBQVMsRUFBRSxFQUFFO1FBQ2IsTUFBTSxFQUFFLFNBQVM7UUFDakIsSUFBSTtRQUNKLElBQUksRUFBRSxTQUFTO1FBQ2YsSUFBSTtRQUNKLFdBQVc7UUFDWCxlQUFlLEVBQUUsY0FBYztLQUNGLENBQUM7QUFDbEMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXR0YWNobWVudCwgTWVzc2FnZVJlc3BvbnNlLCBVc2VyUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1lc3NhZ2VQcmV2aWV3ID0gKFxuICB1c2VyOiBVc2VyUmVzcG9uc2UsXG4gIHRleHQ6IHN0cmluZyxcbiAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRbXSxcbiAgbWVudGlvbmVkVXNlcnM6IFVzZXJSZXNwb25zZVtdXG4pID0+IHtcbiAgY29uc3QgY2xpZW50U2lkZUlkID0gYCR7dXNlci5pZH0tJHt1dWlkdjQoKX1gO1xuXG4gIHJldHVybiB7XG4gICAgX19odG1sOiB0ZXh0LFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCksXG4gICAgaHRtbDogdGV4dCxcbiAgICBpZDogY2xpZW50U2lkZUlkLFxuICAgIHJlYWN0aW9uczogW10sXG4gICAgc3RhdHVzOiAnc2VuZGluZycsXG4gICAgdGV4dCxcbiAgICB0eXBlOiAncmVndWxhcicsXG4gICAgdXNlcixcbiAgICBhdHRhY2htZW50cyxcbiAgICBtZW50aW9uZWRfdXNlcnM6IG1lbnRpb25lZFVzZXJzLFxuICB9IGFzIHVua25vd24gYXMgTWVzc2FnZVJlc3BvbnNlO1xufTtcbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wcmV2aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtcHJldmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUNsQyxJQUFrQixFQUNsQixJQUFZLEVBQ1osV0FBeUIsRUFDekIsY0FBOEIsRUFDOUIsUUFBNEIsRUFDNUIsRUFBRTtJQUNGLE1BQU0sWUFBWSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBRTlDLE9BQU87UUFDTCxNQUFNLEVBQUUsSUFBSTtRQUNaLFVBQVUsRUFBRSxJQUFJLElBQUksRUFBRTtRQUN0QixJQUFJLEVBQUUsSUFBSTtRQUNWLEVBQUUsRUFBRSxZQUFZO1FBQ2hCLFNBQVMsRUFBRSxFQUFFO1FBQ2IsTUFBTSxFQUFFLFNBQVM7UUFDakIsSUFBSTtRQUNKLElBQUksRUFBRSxTQUFTO1FBQ2YsSUFBSTtRQUNKLFdBQVc7UUFDWCxlQUFlLEVBQUUsY0FBYztRQUMvQixTQUFTLEVBQUUsUUFBUTtLQUNVLENBQUM7QUFDbEMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXR0YWNobWVudCwgTWVzc2FnZVJlc3BvbnNlLCBVc2VyUmVzcG9uc2UgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1lc3NhZ2VQcmV2aWV3ID0gKFxuICB1c2VyOiBVc2VyUmVzcG9uc2UsXG4gIHRleHQ6IHN0cmluZyxcbiAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRbXSxcbiAgbWVudGlvbmVkVXNlcnM6IFVzZXJSZXNwb25zZVtdLFxuICBwYXJlbnRJZDogdW5kZWZpbmVkIHwgc3RyaW5nXG4pID0+IHtcbiAgY29uc3QgY2xpZW50U2lkZUlkID0gYCR7dXNlci5pZH0tJHt1dWlkdjQoKX1gO1xuXG4gIHJldHVybiB7XG4gICAgX19odG1sOiB0ZXh0LFxuICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCksXG4gICAgaHRtbDogdGV4dCxcbiAgICBpZDogY2xpZW50U2lkZUlkLFxuICAgIHJlYWN0aW9uczogW10sXG4gICAgc3RhdHVzOiAnc2VuZGluZycsXG4gICAgdGV4dCxcbiAgICB0eXBlOiAncmVndWxhcicsXG4gICAgdXNlcixcbiAgICBhdHRhY2htZW50cyxcbiAgICBtZW50aW9uZWRfdXNlcnM6IG1lbnRpb25lZFVzZXJzLFxuICAgIHBhcmVudF9pZDogcGFyZW50SWQsXG4gIH0gYXMgdW5rbm93biBhcyBNZXNzYWdlUmVzcG9uc2U7XG59O1xuIl19
@@ -19,6 +19,7 @@ import { AttachmentPreviewListComponent } from './attachment-preview-list/attach
19
19
  import { ModalComponent } from './modal/modal.component';
20
20
  import { TextareaDirective } from './message-input/textarea.directive';
21
21
  import { StreamAvatarModule } from './stream-avatar.module';
22
+ import { ThreadComponent } from './thread/thread.component';
22
23
  import * as i0 from "@angular/core";
23
24
  export class StreamChatModule {
24
25
  }
@@ -39,7 +40,8 @@ StreamChatModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
39
40
  NotificationListComponent,
40
41
  AttachmentPreviewListComponent,
41
42
  ModalComponent,
42
- TextareaDirective], imports: [CommonModule, TranslateModule, StreamAvatarModule], exports: [ChannelComponent,
43
+ TextareaDirective,
44
+ ThreadComponent], imports: [CommonModule, TranslateModule, StreamAvatarModule], exports: [ChannelComponent,
43
45
  ChannelHeaderComponent,
44
46
  ChannelListComponent,
45
47
  ChannelPreviewComponent,
@@ -55,7 +57,8 @@ StreamChatModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
55
57
  NotificationListComponent,
56
58
  AttachmentPreviewListComponent,
57
59
  ModalComponent,
58
- StreamAvatarModule] });
60
+ StreamAvatarModule,
61
+ ThreadComponent] });
59
62
  StreamChatModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: StreamChatModule, imports: [[CommonModule, TranslateModule, StreamAvatarModule], StreamAvatarModule] });
60
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: StreamChatModule, decorators: [{
61
64
  type: NgModule,
@@ -78,6 +81,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
78
81
  AttachmentPreviewListComponent,
79
82
  ModalComponent,
80
83
  TextareaDirective,
84
+ ThreadComponent,
81
85
  ],
82
86
  imports: [CommonModule, TranslateModule, StreamAvatarModule],
83
87
  exports: [
@@ -98,7 +102,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
98
102
  AttachmentPreviewListComponent,
99
103
  ModalComponent,
100
104
  StreamAvatarModule,
105
+ ThreadComponent,
101
106
  ],
102
107
  }]
103
108
  }] });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLWNoYXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3N0cmVhbS1jaGF0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDNUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUEyQzVELE1BQU0sT0FBTyxnQkFBZ0I7OzZHQUFoQixnQkFBZ0I7OEdBQWhCLGdCQUFnQixpQkF2Q3pCLGdCQUFnQjtRQUNoQixzQkFBc0I7UUFDdEIsb0JBQW9CO1FBQ3BCLHVCQUF1QjtRQUN2QixnQkFBZ0I7UUFDaEIscUJBQXFCO1FBQ3JCLG9CQUFvQjtRQUNwQix5QkFBeUI7UUFDekIsYUFBYTtRQUNiLDBCQUEwQjtRQUMxQix1QkFBdUI7UUFDdkIseUJBQXlCO1FBQ3pCLHFCQUFxQjtRQUNyQix5QkFBeUI7UUFDekIsOEJBQThCO1FBQzlCLGNBQWM7UUFDZCxpQkFBaUIsYUFFVCxZQUFZLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixhQUV6RCxnQkFBZ0I7UUFDaEIsc0JBQXNCO1FBQ3RCLG9CQUFvQjtRQUNwQix1QkFBdUI7UUFDdkIsZ0JBQWdCO1FBQ2hCLHFCQUFxQjtRQUNyQixvQkFBb0I7UUFDcEIseUJBQXlCO1FBQ3pCLGFBQWE7UUFDYiwwQkFBMEI7UUFDMUIsdUJBQXVCO1FBQ3ZCLHlCQUF5QjtRQUN6QixxQkFBcUI7UUFDckIseUJBQXlCO1FBQ3pCLDhCQUE4QjtRQUM5QixjQUFjO1FBQ2Qsa0JBQWtCOzhHQUdULGdCQUFnQixZQXJCbEIsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixDQUFDLEVBa0IxRCxrQkFBa0I7MkZBR1QsZ0JBQWdCO2tCQXpDNUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osZ0JBQWdCO3dCQUNoQixzQkFBc0I7d0JBQ3RCLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQix5QkFBeUI7d0JBQ3pCLGFBQWE7d0JBQ2IsMEJBQTBCO3dCQUMxQix1QkFBdUI7d0JBQ3ZCLHlCQUF5Qjt3QkFDekIscUJBQXFCO3dCQUNyQix5QkFBeUI7d0JBQ3pCLDhCQUE4Qjt3QkFDOUIsY0FBYzt3QkFDZCxpQkFBaUI7cUJBQ2xCO29CQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsa0JBQWtCLENBQUM7b0JBQzVELE9BQU8sRUFBRTt3QkFDUCxnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEIsb0JBQW9CO3dCQUNwQix1QkFBdUI7d0JBQ3ZCLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCLHlCQUF5Qjt3QkFDekIsYUFBYTt3QkFDYiwwQkFBMEI7d0JBQzFCLHVCQUF1Qjt3QkFDdkIseUJBQXlCO3dCQUN6QixxQkFBcUI7d0JBQ3JCLHlCQUF5Qjt3QkFDekIsOEJBQThCO3dCQUM5QixjQUFjO3dCQUNkLGtCQUFrQjtxQkFDbkI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhbm5lbENvbXBvbmVudCB9IGZyb20gJy4vY2hhbm5lbC9jaGFubmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGFubmVsSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFubmVsLWhlYWRlci9jaGFubmVsLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhbm5lbExpc3RDb21wb25lbnQgfSBmcm9tICcuL2NoYW5uZWwtbGlzdC9jaGFubmVsLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IENoYW5uZWxQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jaGFubmVsLXByZXZpZXcvY2hhbm5lbC1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlL21lc3NhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vbWVzc2FnZS1pbnB1dC9tZXNzYWdlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZXNzYWdlTGlzdENvbXBvbmVudCB9IGZyb20gJy4vbWVzc2FnZS1saXN0L21lc3NhZ2UtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExvYWRpbmdJbmRpY2F0b3JDb21wb25lbnQgfSBmcm9tICcuL2xvYWRpbmctaW5kaWNhdG9yL2xvYWRpbmctaW5kaWNhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VBY3Rpb25zQm94Q29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlLWFjdGlvbnMtYm94L21lc3NhZ2UtYWN0aW9ucy1ib3guY29tcG9uZW50JztcbmltcG9ydCB7IEF0dGFjaG1lbnRMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9hdHRhY2htZW50LWxpc3QvYXR0YWNobWVudC1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZXNzYWdlUmVhY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlLXJlYWN0aW9ucy9tZXNzYWdlLXJlYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9ub3RpZmljYXRpb24tbGlzdC9ub3RpZmljYXRpb24tbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBdHRhY2htZW50UHJldmlld0xpc3RDb21wb25lbnQgfSBmcm9tICcuL2F0dGFjaG1lbnQtcHJldmlldy1saXN0L2F0dGFjaG1lbnQtcHJldmlldy1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRhcmVhRGlyZWN0aXZlIH0gZnJvbSAnLi9tZXNzYWdlLWlucHV0L3RleHRhcmVhLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTdHJlYW1BdmF0YXJNb2R1bGUgfSBmcm9tICcuL3N0cmVhbS1hdmF0YXIubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQ2hhbm5lbENvbXBvbmVudCxcbiAgICBDaGFubmVsSGVhZGVyQ29tcG9uZW50LFxuICAgIENoYW5uZWxMaXN0Q29tcG9uZW50LFxuICAgIENoYW5uZWxQcmV2aWV3Q29tcG9uZW50LFxuICAgIE1lc3NhZ2VDb21wb25lbnQsXG4gICAgTWVzc2FnZUlucHV0Q29tcG9uZW50LFxuICAgIE1lc3NhZ2VMaXN0Q29tcG9uZW50LFxuICAgIExvYWRpbmdJbmRpY2F0b3JDb21wb25lbnQsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBNZXNzYWdlQWN0aW9uc0JveENvbXBvbmVudCxcbiAgICBBdHRhY2htZW50TGlzdENvbXBvbmVudCxcbiAgICBNZXNzYWdlUmVhY3Rpb25zQ29tcG9uZW50LFxuICAgIE5vdGlmaWNhdGlvbkNvbXBvbmVudCxcbiAgICBOb3RpZmljYXRpb25MaXN0Q29tcG9uZW50LFxuICAgIEF0dGFjaG1lbnRQcmV2aWV3TGlzdENvbXBvbmVudCxcbiAgICBNb2RhbENvbXBvbmVudCxcbiAgICBUZXh0YXJlYURpcmVjdGl2ZSxcbiAgXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBTdHJlYW1BdmF0YXJNb2R1bGVdLFxuICBleHBvcnRzOiBbXG4gICAgQ2hhbm5lbENvbXBvbmVudCxcbiAgICBDaGFubmVsSGVhZGVyQ29tcG9uZW50LFxuICAgIENoYW5uZWxMaXN0Q29tcG9uZW50LFxuICAgIENoYW5uZWxQcmV2aWV3Q29tcG9uZW50LFxuICAgIE1lc3NhZ2VDb21wb25lbnQsXG4gICAgTWVzc2FnZUlucHV0Q29tcG9uZW50LFxuICAgIE1lc3NhZ2VMaXN0Q29tcG9uZW50LFxuICAgIExvYWRpbmdJbmRpY2F0b3JDb21wb25lbnQsXG4gICAgSWNvbkNvbXBvbmVudCxcbiAgICBNZXNzYWdlQWN0aW9uc0JveENvbXBvbmVudCxcbiAgICBBdHRhY2htZW50TGlzdENvbXBvbmVudCxcbiAgICBNZXNzYWdlUmVhY3Rpb25zQ29tcG9uZW50LFxuICAgIE5vdGlmaWNhdGlvbkNvbXBvbmVudCxcbiAgICBOb3RpZmljYXRpb25MaXN0Q29tcG9uZW50LFxuICAgIEF0dGFjaG1lbnRQcmV2aWV3TGlzdENvbXBvbmVudCxcbiAgICBNb2RhbENvbXBvbmVudCxcbiAgICBTdHJlYW1BdmF0YXJNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFN0cmVhbUNoYXRNb2R1bGUge31cbiJdfQ==
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLWNoYXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3N0cmVhbS1jaGF0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDNUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBNkM1RCxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBekN6QixnQkFBZ0I7UUFDaEIsc0JBQXNCO1FBQ3RCLG9CQUFvQjtRQUNwQix1QkFBdUI7UUFDdkIsZ0JBQWdCO1FBQ2hCLHFCQUFxQjtRQUNyQixvQkFBb0I7UUFDcEIseUJBQXlCO1FBQ3pCLGFBQWE7UUFDYiwwQkFBMEI7UUFDMUIsdUJBQXVCO1FBQ3ZCLHlCQUF5QjtRQUN6QixxQkFBcUI7UUFDckIseUJBQXlCO1FBQ3pCLDhCQUE4QjtRQUM5QixjQUFjO1FBQ2QsaUJBQWlCO1FBQ2pCLGVBQWUsYUFFUCxZQUFZLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixhQUV6RCxnQkFBZ0I7UUFDaEIsc0JBQXNCO1FBQ3RCLG9CQUFvQjtRQUNwQix1QkFBdUI7UUFDdkIsZ0JBQWdCO1FBQ2hCLHFCQUFxQjtRQUNyQixvQkFBb0I7UUFDcEIseUJBQXlCO1FBQ3pCLGFBQWE7UUFDYiwwQkFBMEI7UUFDMUIsdUJBQXVCO1FBQ3ZCLHlCQUF5QjtRQUN6QixxQkFBcUI7UUFDckIseUJBQXlCO1FBQ3pCLDhCQUE4QjtRQUM5QixjQUFjO1FBQ2Qsa0JBQWtCO1FBQ2xCLGVBQWU7OEdBR04sZ0JBQWdCLFlBdEJsQixDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsa0JBQWtCLENBQUMsRUFrQjFELGtCQUFrQjsyRkFJVCxnQkFBZ0I7a0JBM0M1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEIsb0JBQW9CO3dCQUNwQix1QkFBdUI7d0JBQ3ZCLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCLHlCQUF5Qjt3QkFDekIsYUFBYTt3QkFDYiwwQkFBMEI7d0JBQzFCLHVCQUF1Qjt3QkFDdkIseUJBQXlCO3dCQUN6QixxQkFBcUI7d0JBQ3JCLHlCQUF5Qjt3QkFDekIsOEJBQThCO3dCQUM5QixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsZUFBZTtxQkFDaEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQztvQkFDNUQsT0FBTyxFQUFFO3dCQUNQLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3dCQUN0QixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIseUJBQXlCO3dCQUN6QixhQUFhO3dCQUNiLDBCQUEwQjt3QkFDMUIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLHFCQUFxQjt3QkFDckIseUJBQXlCO3dCQUN6Qiw4QkFBOEI7d0JBQzlCLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixlQUFlO3FCQUNoQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFubmVsQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFubmVsL2NoYW5uZWwuY29tcG9uZW50JztcbmltcG9ydCB7IENoYW5uZWxIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2NoYW5uZWwtaGVhZGVyL2NoYW5uZWwtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGFubmVsTGlzdENvbXBvbmVudCB9IGZyb20gJy4vY2hhbm5lbC1saXN0L2NoYW5uZWwtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhbm5lbFByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NoYW5uZWwtcHJldmlldy9jaGFubmVsLXByZXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2UvbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVzc2FnZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlLWlucHV0L21lc3NhZ2UtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTG9hZGluZ0luZGljYXRvckNvbXBvbmVudCB9IGZyb20gJy4vbG9hZGluZy1pbmRpY2F0b3IvbG9hZGluZy1pbmRpY2F0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWVzc2FnZUFjdGlvbnNCb3hDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2UtYWN0aW9ucy1ib3gvbWVzc2FnZS1hY3Rpb25zLWJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXR0YWNobWVudExpc3RDb21wb25lbnQgfSBmcm9tICcuL2F0dGFjaG1lbnQtbGlzdC9hdHRhY2htZW50LWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IE1lc3NhZ2VSZWFjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2UtcmVhY3Rpb25zL21lc3NhZ2UtcmVhY3Rpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25Db21wb25lbnQgfSBmcm9tICcuL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbkxpc3RDb21wb25lbnQgfSBmcm9tICcuL25vdGlmaWNhdGlvbi1saXN0L25vdGlmaWNhdGlvbi1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEF0dGFjaG1lbnRQcmV2aWV3TGlzdENvbXBvbmVudCB9IGZyb20gJy4vYXR0YWNobWVudC1wcmV2aWV3LWxpc3QvYXR0YWNobWVudC1wcmV2aWV3LWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dGFyZWFEaXJlY3RpdmUgfSBmcm9tICcuL21lc3NhZ2UtaW5wdXQvdGV4dGFyZWEuZGlyZWN0aXZlJztcbmltcG9ydCB7IFN0cmVhbUF2YXRhck1vZHVsZSB9IGZyb20gJy4vc3RyZWFtLWF2YXRhci5tb2R1bGUnO1xuaW1wb3J0IHsgVGhyZWFkQ29tcG9uZW50IH0gZnJvbSAnLi90aHJlYWQvdGhyZWFkLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIENoYW5uZWxDb21wb25lbnQsXG4gICAgQ2hhbm5lbEhlYWRlckNvbXBvbmVudCxcbiAgICBDaGFubmVsTGlzdENvbXBvbmVudCxcbiAgICBDaGFubmVsUHJldmlld0NvbXBvbmVudCxcbiAgICBNZXNzYWdlQ29tcG9uZW50LFxuICAgIE1lc3NhZ2VJbnB1dENvbXBvbmVudCxcbiAgICBNZXNzYWdlTGlzdENvbXBvbmVudCxcbiAgICBMb2FkaW5nSW5kaWNhdG9yQ29tcG9uZW50LFxuICAgIEljb25Db21wb25lbnQsXG4gICAgTWVzc2FnZUFjdGlvbnNCb3hDb21wb25lbnQsXG4gICAgQXR0YWNobWVudExpc3RDb21wb25lbnQsXG4gICAgTWVzc2FnZVJlYWN0aW9uc0NvbXBvbmVudCxcbiAgICBOb3RpZmljYXRpb25Db21wb25lbnQsXG4gICAgTm90aWZpY2F0aW9uTGlzdENvbXBvbmVudCxcbiAgICBBdHRhY2htZW50UHJldmlld0xpc3RDb21wb25lbnQsXG4gICAgTW9kYWxDb21wb25lbnQsXG4gICAgVGV4dGFyZWFEaXJlY3RpdmUsXG4gICAgVGhyZWFkQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIFN0cmVhbUF2YXRhck1vZHVsZV0sXG4gIGV4cG9ydHM6IFtcbiAgICBDaGFubmVsQ29tcG9uZW50LFxuICAgIENoYW5uZWxIZWFkZXJDb21wb25lbnQsXG4gICAgQ2hhbm5lbExpc3RDb21wb25lbnQsXG4gICAgQ2hhbm5lbFByZXZpZXdDb21wb25lbnQsXG4gICAgTWVzc2FnZUNvbXBvbmVudCxcbiAgICBNZXNzYWdlSW5wdXRDb21wb25lbnQsXG4gICAgTWVzc2FnZUxpc3RDb21wb25lbnQsXG4gICAgTG9hZGluZ0luZGljYXRvckNvbXBvbmVudCxcbiAgICBJY29uQ29tcG9uZW50LFxuICAgIE1lc3NhZ2VBY3Rpb25zQm94Q29tcG9uZW50LFxuICAgIEF0dGFjaG1lbnRMaXN0Q29tcG9uZW50LFxuICAgIE1lc3NhZ2VSZWFjdGlvbnNDb21wb25lbnQsXG4gICAgTm90aWZpY2F0aW9uQ29tcG9uZW50LFxuICAgIE5vdGlmaWNhdGlvbkxpc3RDb21wb25lbnQsXG4gICAgQXR0YWNobWVudFByZXZpZXdMaXN0Q29tcG9uZW50LFxuICAgIE1vZGFsQ29tcG9uZW50LFxuICAgIFN0cmVhbUF2YXRhck1vZHVsZSxcbiAgICBUaHJlYWRDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFN0cmVhbUNoYXRNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,37 @@
1
+ import { Component, HostBinding } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../channel.service";
4
+ import * as i2 from "../icon/icon.component";
5
+ import * as i3 from "@ngx-translate/core";
6
+ export class ThreadComponent {
7
+ constructor(channelService) {
8
+ this.channelService = channelService;
9
+ this.class = 'str-chat__thread';
10
+ this.subscriptions = [];
11
+ this.subscriptions.push(this.channelService.activeParentMessage$.subscribe((parentMessage) => (this.parentMessage = parentMessage)));
12
+ }
13
+ ngOnDestroy() {
14
+ this.subscriptions.forEach((s) => s.unsubscribe());
15
+ }
16
+ get replyCountParam() {
17
+ var _a;
18
+ return { replyCount: (_a = this.parentMessage) === null || _a === void 0 ? void 0 : _a.reply_count };
19
+ }
20
+ closeThread() {
21
+ void this.channelService.setAsActiveParentMessage(undefined);
22
+ }
23
+ }
24
+ ThreadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ThreadComponent, deps: [{ token: i1.ChannelService }], target: i0.ɵɵFactoryTarget.Component });
25
+ ThreadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ThreadComponent, selector: "stream-thread", host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<div class=\"str-chat__thread-header\">\n <div class=\"str-chat__thread-header-details\">\n <strong translate>streamChat.Thread</strong>\n <small data-testid=\"reply-count\">\n {{parentMessage?.reply_count === 1 ? ('streamChat.1 reply' | translate) : ('streamChat.{{ replyCount }}\n replies' | translate:replyCountParam)}}\n </small>\n </div>\n <button\n class=\"str-chat__square-button\"\n data-testid=\"close-button\"\n (click)=\"closeThread()\"\n >\n <stream-icon icon=\"close-no-outline\"></stream-icon>\n </button>\n</div>\n<ng-content select='[name=\"thread-message-list\"]'></ng-content>\n<div class=\"str-chat__small-message-input__wrapper\">\n <ng-content select='[name=\"thread-message-input\"]'></ng-content>\n</div>\n", components: [{ type: i2.IconComponent, selector: "stream-icon", inputs: ["icon", "size"] }], directives: [{ type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], pipes: { "translate": i3.TranslatePipe } });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ThreadComponent, decorators: [{
27
+ type: Component,
28
+ args: [{
29
+ selector: 'stream-thread',
30
+ templateUrl: './thread.component.html',
31
+ styles: [],
32
+ }]
33
+ }], ctorParameters: function () { return [{ type: i1.ChannelService }]; }, propDecorators: { class: [{
34
+ type: HostBinding,
35
+ args: ['class']
36
+ }] } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyZWFkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi90aHJlYWQvdGhyZWFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi90aHJlYWQvdGhyZWFkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7OztBQVVsRSxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFKcEIsVUFBSyxHQUFHLGtCQUFrQixDQUFDO1FBRWpELGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUd6QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQ2hELENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDLENBQ3hELENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLGVBQWU7O1FBQ2pCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxXQUFXLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBRUQsV0FBVztRQUNULEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRCxDQUFDOzs0R0F2QlUsZUFBZTtnR0FBZixlQUFlLHNHQ1Y1Qixnd0JBb0JBOzJGRFZhLGVBQWU7a0JBTDNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFdBQVcsRUFBRSx5QkFBeUI7b0JBQ3RDLE1BQU0sRUFBRSxFQUFFO2lCQUNYO3FHQUUrQixLQUFLO3NCQUFsQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RyZWFtTWVzc2FnZSB9IGZyb20gJy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLXRocmVhZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90aHJlYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBUaHJlYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgcHJpdmF0ZSBjbGFzcyA9ICdzdHItY2hhdF9fdGhyZWFkJztcbiAgcGFyZW50TWVzc2FnZTogU3RyZWFtTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZVBhcmVudE1lc3NhZ2UkLnN1YnNjcmliZShcbiAgICAgICAgKHBhcmVudE1lc3NhZ2UpID0+ICh0aGlzLnBhcmVudE1lc3NhZ2UgPSBwYXJlbnRNZXNzYWdlKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIGdldCByZXBseUNvdW50UGFyYW0oKSB7XG4gICAgcmV0dXJuIHsgcmVwbHlDb3VudDogdGhpcy5wYXJlbnRNZXNzYWdlPy5yZXBseV9jb3VudCB9O1xuICB9XG5cbiAgY2xvc2VUaHJlYWQoKSB7XG4gICAgdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLnNldEFzQWN0aXZlUGFyZW50TWVzc2FnZSh1bmRlZmluZWQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3RocmVhZC1oZWFkZXJcIj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X190aHJlYWQtaGVhZGVyLWRldGFpbHNcIj5cbiAgICA8c3Ryb25nIHRyYW5zbGF0ZT5zdHJlYW1DaGF0LlRocmVhZDwvc3Ryb25nPlxuICAgIDxzbWFsbCBkYXRhLXRlc3RpZD1cInJlcGx5LWNvdW50XCI+XG4gICAgICB7e3BhcmVudE1lc3NhZ2U/LnJlcGx5X2NvdW50ID09PSAxID8gKCdzdHJlYW1DaGF0LjEgcmVwbHknIHwgdHJhbnNsYXRlKSA6ICgnc3RyZWFtQ2hhdC57eyByZXBseUNvdW50IH19XG4gICAgICByZXBsaWVzJyB8IHRyYW5zbGF0ZTpyZXBseUNvdW50UGFyYW0pfX1cbiAgICA8L3NtYWxsPlxuICA8L2Rpdj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwic3RyLWNoYXRfX3NxdWFyZS1idXR0b25cIlxuICAgIGRhdGEtdGVzdGlkPVwiY2xvc2UtYnV0dG9uXCJcbiAgICAoY2xpY2spPVwiY2xvc2VUaHJlYWQoKVwiXG4gID5cbiAgICA8c3RyZWFtLWljb24gaWNvbj1cImNsb3NlLW5vLW91dGxpbmVcIj48L3N0cmVhbS1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuPG5nLWNvbnRlbnQgc2VsZWN0PSdbbmFtZT1cInRocmVhZC1tZXNzYWdlLWxpc3RcIl0nPjwvbmctY29udGVudD5cbjxkaXYgY2xhc3M9XCJzdHItY2hhdF9fc21hbGwtbWVzc2FnZS1pbnB1dF9fd3JhcHBlclwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9J1tuYW1lPVwidGhyZWFkLW1lc3NhZ2UtaW5wdXRcIl0nPjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
@@ -32,6 +32,7 @@ export * from './lib/attachment-preview-list/attachment-preview-list.component';
32
32
  export * from './lib/message-reactions/message-reactions.component';
33
33
  export * from './lib/notification/notification.component';
34
34
  export * from './lib/notification-list/notification-list.component';
35
+ export * from './lib/thread/thread.component';
35
36
  export * from './lib/modal/modal.component';
36
37
  export * from './lib/read-by';
37
38
  export * from './lib/is-image-attachment';
@@ -46,4 +47,4 @@ export * from './lib/stream-autocomplete-textarea.module';
46
47
  export * from './lib/stream-textarea.module';
47
48
  export * from './lib/injection-tokens';
48
49
  export * from './lib/types';
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsMkVBQTJFLENBQUM7QUFDMUYsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBzdHJlYW0tY2hhdC1hbmd1bGFyXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhdC1jbGllbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGFubmVsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGhlbWUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdHRhY2htZW50LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RyZWFtLWkxOG4uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29uL2ljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvYWRpbmctaW5kaWNhdG9yL2xvYWRpbmctaW5kaWNhdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLWFjdGlvbnMtYm94L21lc3NhZ2UtYWN0aW9ucy1ib3guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYW5uZWwvY2hhbm5lbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhbm5lbC1oZWFkZXIvY2hhbm5lbC1oZWFkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYW5uZWwtcHJldmlldy9jaGFubmVsLXByZXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYW5uZWwtbGlzdC9jaGFubmVsLWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYW5uZWwtbGlzdC9jaGFubmVsLWxpc3QtdG9nZ2xlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS9tZXNzYWdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlL3BhcnNlLWRhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS9yZWFkLWJ5LXRleHQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1pbnB1dC9tZXNzYWdlLWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLWlucHV0L3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLWlucHV0L2F1dG9jb21wbGV0ZS10ZXh0YXJlYS9hdXRvY29tcGxldGUtdGV4dGFyZWEuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtaW5wdXQvbWVzc2FnZS1pbnB1dC1jb25maWcuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLWlucHV0L3RleHRhcmVhLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLWlucHV0L3RleHRhcmVhLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLWxpc3QvaW1hZ2UtbG9hZC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtbGlzdC9ncm91cC1zdHlsZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXR0YWNobWVudC1saXN0L2F0dGFjaG1lbnQtbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXR0YWNobWVudC1wcmV2aWV3LWxpc3QvYXR0YWNobWVudC1wcmV2aWV3LWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtcmVhY3Rpb25zL21lc3NhZ2UtcmVhY3Rpb25zLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3RpZmljYXRpb24tbGlzdC9ub3RpZmljYXRpb24tbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlYWQtYnknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaXMtaW1hZ2UtYXR0YWNobWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pcy1pbWFnZS1maWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RldmljZS13aWR0aCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLXByZXZpZXcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJhbnNsaXRlcmF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RyZWFtLWNoYXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0cmVhbS1hdmF0YXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0cmVhbS1hdXRvY29tcGxldGUtdGV4dGFyZWEubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0cmVhbS10ZXh0YXJlYS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5qZWN0aW9uLXRva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90eXBlcyc7XG4iXX0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsMkVBQTJFLENBQUM7QUFDMUYsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLGlFQUFpRSxDQUFDO0FBQ2hGLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHN0cmVhbS1jaGF0LWFuZ3VsYXJcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGF0LWNsaWVudC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYW5uZWwuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90aGVtZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F0dGFjaG1lbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdHJlYW0taTE4bi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F2YXRhci9hdmF0YXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ljb24vaWNvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbG9hZGluZy1pbmRpY2F0b3IvbG9hZGluZy1pbmRpY2F0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtYWN0aW9ucy1ib3gvbWVzc2FnZS1hY3Rpb25zLWJveC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhbm5lbC9jaGFubmVsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGFubmVsLWhlYWRlci9jaGFubmVsLWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhbm5lbC1wcmV2aWV3L2NoYW5uZWwtcHJldmlldy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhbm5lbC1saXN0L2NoYW5uZWwtbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhbm5lbC1saXN0L2NoYW5uZWwtbGlzdC10b2dnbGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlL21lc3NhZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UvcGFyc2UtZGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlL3JlYWQtYnktdGV4dCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLWlucHV0L21lc3NhZ2UtaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtaW5wdXQvdGV4dGFyZWEvdGV4dGFyZWEuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtaW5wdXQvYXV0b2NvbXBsZXRlLXRleHRhcmVhL2F1dG9jb21wbGV0ZS10ZXh0YXJlYS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1pbnB1dC9tZXNzYWdlLWlucHV0LWNvbmZpZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtaW5wdXQvdGV4dGFyZWEuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtaW5wdXQvdGV4dGFyZWEuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtbGlzdC9tZXNzYWdlLWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtbGlzdC9pbWFnZS1sb2FkLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1saXN0L2dyb3VwLXN0eWxlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdHRhY2htZW50LWxpc3QvYXR0YWNobWVudC1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdHRhY2htZW50LXByZXZpZXctbGlzdC9hdHRhY2htZW50LXByZXZpZXctbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1yZWFjdGlvbnMvbWVzc2FnZS1yZWFjdGlvbnMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL25vdGlmaWNhdGlvbi1saXN0L25vdGlmaWNhdGlvbi1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90aHJlYWQvdGhyZWFkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVhZC1ieSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pcy1pbWFnZS1hdHRhY2htZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lzLWltYWdlLWZpbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGV2aWNlLXdpZHRoJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtcHJldmlldyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90cmFuc2xpdGVyYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdHJlYW0tY2hhdC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RyZWFtLWF2YXRhci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RyZWFtLWF1dG9jb21wbGV0ZS10ZXh0YXJlYS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RyZWFtLXRleHRhcmVhLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbmplY3Rpb24tdG9rZW5zJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzJztcbiJdfQ==