@cometchat/chat-uikit-angular 4.0.0-beta.1.4 → 4.0.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 (147) hide show
  1. package/Calls/CallingExtension.d.ts +4 -3
  2. package/Calls/CallingExtensionDecorator.d.ts +0 -1
  3. package/Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component.d.ts +4 -3
  4. package/Calls/CometChatIncomingCall/cometchat-incoming-call/cometchat-incoming-call.component.d.ts +4 -3
  5. package/Calls/CometChatOngoingCall/cometchat-ongoing-call/cometchat-ongoing-call.component.d.ts +14 -6
  6. package/Calls/CometChatOutgoingCall/cometchat-outgoing-call/cometchat-outgoing-call.component.d.ts +0 -1
  7. package/CometChatAddMembers/cometchat-add-members/cometchat-add-members.component.d.ts +5 -5
  8. package/CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component.d.ts +6 -5
  9. package/CometChatContacts/cometchat-contacts/cometchat-contacts.component.d.ts +65 -0
  10. package/CometChatContacts/cometchat-contacts.module.d.ts +12 -0
  11. package/CometChatConversations/cometchat-conversations/cometchat-conversations.component.d.ts +21 -15
  12. package/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.d.ts +13 -4
  13. package/CometChatConversationsWithMessages/cometchat-conversations-with-messages.module.d.ts +2 -1
  14. package/CometChatDetails/cometchat-details/cometchat-details.component.d.ts +7 -7
  15. package/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.d.ts +14 -12
  16. package/CometChatGroups/cometchat-groups/cometchat-groups.component.d.ts +12 -6
  17. package/CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component.d.ts +6 -4
  18. package/CometChatList/cometchat-list.component.d.ts +2 -1
  19. package/CometChatMessageBubble/cometchat-message-bubble/cometchat-message-bubble.component.d.ts +2 -2
  20. package/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.d.ts +23 -6
  21. package/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.d.ts +1 -1
  22. package/CometChatMessageInformation/cometchat-message-information/cometchat-message-information.component.d.ts +95 -0
  23. package/CometChatMessageInformation/cometchat-message-information.module.d.ts +10 -0
  24. package/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.d.ts +45 -26
  25. package/CometChatMessageList/cometchat-message-list.module.d.ts +3 -1
  26. package/CometChatMessages/cometchat-messages/cometchat-messages.component.d.ts +5 -3
  27. package/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.d.ts +0 -1
  28. package/CometChatTransferOwnership/cometchat-transfer-ownership/cometchat-transfer-ownership.component.d.ts +3 -3
  29. package/CometChatUsers/cometchat-users/cometchat-users.component.d.ts +11 -5
  30. package/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.d.ts +2 -2
  31. package/Extensions/CollaborativeDocument/CollaborativeDocumentExtension.d.ts +4 -8
  32. package/Extensions/CollaborativeDocument/CollaborativeDocumentExtensionDecorator.d.ts +1 -4
  33. package/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtension.d.ts +4 -8
  34. package/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtensionDecorator.d.ts +1 -4
  35. package/Extensions/ImageModeration/ImageModerationExtension.d.ts +4 -4
  36. package/Extensions/LinkPreviewExtension/LinkPreviewExtension.d.ts +4 -4
  37. package/Extensions/MessageTranslation/MessageTranslationExtension.d.ts +4 -8
  38. package/Extensions/MessageTranslation/MessageTranslationExtensionDecorator.d.ts +1 -4
  39. package/Extensions/PollsExtension/PollsExtension.d.ts +4 -4
  40. package/Extensions/PollsExtension/PollsExtensionDecorator.d.ts +0 -1
  41. package/Extensions/Reactions/ReactionExtension.d.ts +4 -4
  42. package/Extensions/Reactions/ReactionExtensionDecorator.d.ts +0 -1
  43. package/Extensions/SmartReplies/SmartRepliesExtension.d.ts +4 -8
  44. package/Extensions/SmartReplies/SmartRepliesExtensionDecorator.d.ts +2 -2
  45. package/Extensions/Stickers/StickersExtension.d.ts +4 -8
  46. package/Extensions/Stickers/StickersExtensionDecorator.d.ts +2 -2
  47. package/Extensions/TextModerator/TextModeratorExtension.d.ts +4 -3
  48. package/Extensions/TextModerator/TextModeratorExtensionDecorator.d.ts +0 -1
  49. package/Extensions/ThumbnailGeneration/ThumbnailGenerationExtension.d.ts +4 -4
  50. package/README.md +4 -7
  51. package/Shared/CometChatUIkit/CometChatUIKit.d.ts +10 -6
  52. package/Shared/Framework/DataSource.d.ts +0 -1
  53. package/Shared/Framework/DataSourceDecorator.d.ts +0 -1
  54. package/Shared/Utils/ComeChatException.d.ts +1 -2
  55. package/Shared/Utils/MessageUtils.d.ts +2 -1
  56. package/Shared/Views/CometChatTabs/cometchat-tabs/cometchat-tabs.component.d.ts +38 -9
  57. package/Shared/Views/CometChatTabs/cometchat-tabs.module.d.ts +1 -5
  58. package/assets/.gitkeep +0 -0
  59. package/assets/Reply@2x.svg +9 -0
  60. package/assets/call.svg +0 -0
  61. package/assets/chats.svg +0 -0
  62. package/assets/group.svg +0 -0
  63. package/assets/message-privately.svg +6 -0
  64. package/assets/mic.svg +11 -0
  65. package/assets/new-chat.svg +13 -0
  66. package/assets/open-thread.svg +0 -0
  67. package/assets/pause-icon.svg +14 -0
  68. package/assets/play-icon.svg +18 -0
  69. package/assets/record-icon.svg +8 -0
  70. package/assets/start-conversation.svg +46 -0
  71. package/assets/stop.svg +1 -0
  72. package/assets/user.svg +0 -0
  73. package/esm2020/Calls/CallingExtension.mjs +7 -4
  74. package/esm2020/Calls/CallingExtensionDecorator.mjs +4 -4
  75. package/esm2020/Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component.mjs +58 -21
  76. package/esm2020/Calls/CometChatIncomingCall/cometchat-incoming-call/cometchat-incoming-call.component.mjs +48 -17
  77. package/esm2020/Calls/CometChatOngoingCall/cometchat-ongoing-call/cometchat-ongoing-call.component.mjs +110 -9
  78. package/esm2020/Calls/CometChatOutgoingCall/cometchat-outgoing-call/cometchat-outgoing-call.component.mjs +9 -7
  79. package/esm2020/CometChatAddMembers/cometchat-add-members/cometchat-add-members.component.mjs +9 -6
  80. package/esm2020/CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component.mjs +12 -7
  81. package/esm2020/CometChatContacts/cometchat-contacts/cometchat-contacts.component.mjs +273 -0
  82. package/esm2020/CometChatContacts/cometchat-contacts.module.mjs +23 -0
  83. package/esm2020/CometChatConversations/cometchat-conversations/cometchat-conversations.component.mjs +122 -65
  84. package/esm2020/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.mjs +105 -17
  85. package/esm2020/CometChatConversationsWithMessages/cometchat-conversations-with-messages.module.mjs +6 -2
  86. package/esm2020/CometChatDetails/cometchat-details/cometchat-details.component.mjs +13 -11
  87. package/esm2020/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.mjs +45 -46
  88. package/esm2020/CometChatGroups/cometchat-groups/cometchat-groups.component.mjs +69 -28
  89. package/esm2020/CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component.mjs +60 -21
  90. package/esm2020/CometChatList/cometchat-list.component.mjs +8 -9
  91. package/esm2020/CometChatMessageBubble/cometchat-message-bubble/cometchat-message-bubble.component.mjs +4 -5
  92. package/esm2020/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.mjs +200 -30
  93. package/esm2020/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.mjs +4 -5
  94. package/esm2020/CometChatMessageInformation/cometchat-message-information/cometchat-message-information.component.mjs +288 -0
  95. package/esm2020/CometChatMessageInformation/cometchat-message-information.module.mjs +28 -0
  96. package/esm2020/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.mjs +401 -185
  97. package/esm2020/CometChatMessageList/cometchat-message-list.module.mjs +12 -4
  98. package/esm2020/CometChatMessages/cometchat-messages/cometchat-messages.component.mjs +28 -15
  99. package/esm2020/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.mjs +3 -4
  100. package/esm2020/CometChatTransferOwnership/cometchat-transfer-ownership/cometchat-transfer-ownership.component.mjs +14 -15
  101. package/esm2020/CometChatUsers/cometchat-users/cometchat-users.component.mjs +72 -45
  102. package/esm2020/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.mjs +21 -9
  103. package/esm2020/Extensions/CollaborativeDocument/CollaborativeDocumentExtension.mjs +7 -6
  104. package/esm2020/Extensions/CollaborativeDocument/CollaborativeDocumentExtensionDecorator.mjs +3 -4
  105. package/esm2020/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtension.mjs +7 -6
  106. package/esm2020/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtensionDecorator.mjs +3 -4
  107. package/esm2020/Extensions/ImageModeration/ImageModerationExtension.mjs +7 -5
  108. package/esm2020/Extensions/LinkPreviewExtension/LinkPreviewExtension.mjs +7 -5
  109. package/esm2020/Extensions/MessageTranslation/MessageTranslationExtension.mjs +7 -6
  110. package/esm2020/Extensions/MessageTranslation/MessageTranslationExtensionDecorator.mjs +2 -4
  111. package/esm2020/Extensions/PollsExtension/PollsExtension.mjs +7 -5
  112. package/esm2020/Extensions/PollsExtension/PollsExtensionDecorator.mjs +1 -1
  113. package/esm2020/Extensions/Reactions/ReactionExtension.mjs +7 -5
  114. package/esm2020/Extensions/Reactions/ReactionExtensionDecorator.mjs +3 -2
  115. package/esm2020/Extensions/SmartReplies/SmartRepliesExtension.mjs +7 -6
  116. package/esm2020/Extensions/SmartReplies/SmartRepliesExtensionDecorator.mjs +5 -7
  117. package/esm2020/Extensions/Stickers/StickersExtension.mjs +7 -10
  118. package/esm2020/Extensions/Stickers/StickersExtensionDecorator.mjs +5 -7
  119. package/esm2020/Extensions/TextModerator/TextModeratorExtension.mjs +16 -4
  120. package/esm2020/Extensions/TextModerator/TextModeratorExtensionDecorator.mjs +1 -1
  121. package/esm2020/Extensions/ThumbnailGeneration/ThumbnailGenerationExtension.mjs +7 -5
  122. package/esm2020/Shared/CometChatUIkit/CometChatUIKit.mjs +66 -32
  123. package/esm2020/Shared/Framework/DataSource.mjs +1 -1
  124. package/esm2020/Shared/Framework/DataSourceDecorator.mjs +1 -1
  125. package/esm2020/Shared/Utils/ComeChatException.mjs +2 -2
  126. package/esm2020/Shared/Utils/MessageUtils.mjs +36 -6
  127. package/esm2020/Shared/Views/CometChatTabs/cometchat-tabs/cometchat-tabs.component.mjs +61 -25
  128. package/esm2020/Shared/Views/CometChatTabs/cometchat-tabs.module.mjs +2 -18
  129. package/esm2020/public-api.mjs +8 -5
  130. package/fesm2015/cometchat-chat-uikit-angular.mjs +3658 -3185
  131. package/fesm2015/cometchat-chat-uikit-angular.mjs.map +1 -1
  132. package/fesm2020/cometchat-chat-uikit-angular.mjs +3639 -3164
  133. package/fesm2020/cometchat-chat-uikit-angular.mjs.map +1 -1
  134. package/package.json +5 -5
  135. package/public-api.d.ts +7 -4
  136. package/Calls/CometChatCallDetails/cometchat-call-details/cometchat-call-details.component.d.ts +0 -139
  137. package/Calls/CometChatCallDetails/cometchat-call-details.module.d.ts +0 -10
  138. package/Calls/CometChatCallHistory/cometchat-call-history/cometchat-call-history.component.d.ts +0 -125
  139. package/Calls/CometChatCallHistory/cometchat-call-history.module.d.ts +0 -10
  140. package/Calls/CometChatCallHistoryWithDetails/cometchat-call-history-with-details/cometchat-call-history-with-details.component.d.ts +0 -59
  141. package/Calls/CometChatCallHistoryWithDetails/cometchat-call-history-with-details.module.d.ts +0 -12
  142. package/esm2020/Calls/CometChatCallDetails/cometchat-call-details/cometchat-call-details.component.mjs +0 -452
  143. package/esm2020/Calls/CometChatCallDetails/cometchat-call-details.module.mjs +0 -31
  144. package/esm2020/Calls/CometChatCallHistory/cometchat-call-history/cometchat-call-history.component.mjs +0 -397
  145. package/esm2020/Calls/CometChatCallHistory/cometchat-call-history.module.mjs +0 -28
  146. package/esm2020/Calls/CometChatCallHistoryWithDetails/cometchat-call-history-with-details/cometchat-call-history-with-details.component.mjs +0 -143
  147. package/esm2020/Calls/CometChatCallHistoryWithDetails/cometchat-call-history-with-details.module.mjs +0 -39
@@ -0,0 +1,288 @@
1
+ import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
2
+ import { CometChat } from '@cometchat/chat-sdk-javascript';
3
+ import { CometChatUIKitConstants, Receipts, States, fontHelper, localize } from '@cometchat/uikit-resources';
4
+ import { MessageInformationStyle, MessageReceiptUtils } from '@cometchat/uikit-shared';
5
+ import { ListItemStyle, ReceiptStyle } from '@cometchat/uikit-elements';
6
+ import { CometChatException } from '../../Shared/Utils/ComeChatException';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../../CometChatTheme.service";
9
+ import * as i2 from "../../CometChatList/cometchat-list.component";
10
+ import * as i3 from "@angular/common";
11
+ /**
12
+ *
13
+ * CometChatMessageInformationComponent is a used to render listitem component.
14
+ *
15
+ * @version 1.0.0
16
+ * @author CometChatTeam
17
+ * @copyright © 2022 CometChat Inc.
18
+ *
19
+ */
20
+ export class CometChatMessageInformationComponent {
21
+ constructor(ref, themeService) {
22
+ this.ref = ref;
23
+ this.themeService = themeService;
24
+ this.closeIconURL = "assets/close2x.svg";
25
+ this.title = localize("MESSAGE_INFORMATION");
26
+ this.onError = (error) => {
27
+ console.log(error);
28
+ };
29
+ this.messageInformationStyle = {
30
+ height: "500px",
31
+ width: "500px"
32
+ };
33
+ this.readIcon = "assets/message-read.svg";
34
+ this.deliveredIcon = "assets/message-delivered.svg";
35
+ this.listItemStyle = {};
36
+ this.emptyStateText = localize("NO_RECIPIENTS");
37
+ this.errorStateText = localize("SOMETHING_WRONG");
38
+ this.loadingIconURL = "assets/Spinner.svg";
39
+ this.receipts = [];
40
+ this.receiptStyle = new ReceiptStyle({
41
+ waitIconTint: this.themeService.theme.palette.getAccent700(),
42
+ sentIconTint: this.themeService.theme.palette.getAccent600(),
43
+ deliveredIconTint: this.themeService.theme.palette.getAccent600(),
44
+ readIconTint: this.themeService.theme.palette.getPrimary(),
45
+ errorIconTint: this.themeService.theme.palette.getError(),
46
+ height: "20px",
47
+ width: "20px"
48
+ });
49
+ this.isUserType = false;
50
+ this.deliveredReceipt = Receipts.delivered;
51
+ this.msgListenerId = "message_" + new Date().getTime();
52
+ this.readReceipt = Receipts.read;
53
+ this.listStyle = {};
54
+ this.messageText = localize("MESSAGE");
55
+ this.receiptInfoText = localize("RECEIPT_INFORMATION");
56
+ this.emptyLabelStyle = {
57
+ textFont: '400 11px Inter',
58
+ textColor: "black"
59
+ };
60
+ this.dateStyle = {};
61
+ this.dividerStyle = {};
62
+ this.states = States.loading;
63
+ this.closeButtonStyle = () => {
64
+ return {
65
+ height: "24px",
66
+ width: "24px",
67
+ border: "none",
68
+ borderRadius: "0",
69
+ background: "transparent",
70
+ buttonIconTint: this.themeService.theme.palette.getPrimary()
71
+ };
72
+ };
73
+ this.wrapperStyle = () => {
74
+ return {
75
+ height: this.messageInformationStyle.height,
76
+ width: this.messageInformationStyle.width,
77
+ background: this.messageInformationStyle.background,
78
+ border: this.messageInformationStyle.border,
79
+ borderRadius: this.messageInformationStyle.borderRadius
80
+ };
81
+ };
82
+ this.getCaptionStyle = () => {
83
+ return {
84
+ textFont: this.messageInformationStyle.captionTextFont,
85
+ textColor: this.messageInformationStyle.captionTextColor
86
+ };
87
+ };
88
+ }
89
+ ngOnChanges(changes) {
90
+ }
91
+ getDatePattern(timestamp) {
92
+ if (this.receiptDatePattern) {
93
+ return this.receiptDatePattern(timestamp);
94
+ }
95
+ else {
96
+ return undefined;
97
+ }
98
+ }
99
+ ngOnInit() {
100
+ this.setTheme();
101
+ this.getMessageReceipts();
102
+ this.addMessageEventListeners();
103
+ }
104
+ setTheme() {
105
+ this.setMessageInfoStyle();
106
+ this.setListItemStyle();
107
+ this.listStyle = {
108
+ titleTextFont: this.messageInformationStyle.titleTextFont,
109
+ titleTextColor: this.messageInformationStyle.titleTextColor,
110
+ emptyStateTextFont: this.messageInformationStyle.emptyStateTextFont,
111
+ emptyStateTextColor: this.messageInformationStyle.emptyStateTextColor,
112
+ errorStateTextFont: this.messageInformationStyle.errorStateTextFont,
113
+ errorStateTextColor: this.messageInformationStyle.errorStateTextColor,
114
+ loadingIconTint: this.messageInformationStyle.loadingIconTint,
115
+ };
116
+ this.dividerStyle = {
117
+ background: this.messageInformationStyle.dividerTint,
118
+ height: "1px",
119
+ width: "100%",
120
+ };
121
+ this.dateStyle = {
122
+ textFont: '400 11px Inter',
123
+ textColor: this.themeService.theme.palette.getAccent600(),
124
+ background: "transparent",
125
+ height: "100%",
126
+ width: "100%",
127
+ };
128
+ this.ref.detectChanges();
129
+ }
130
+ setListItemStyle() {
131
+ let defaultStyle = new ListItemStyle({
132
+ height: "fit-content",
133
+ width: "100%",
134
+ background: this.themeService.theme.palette.getBackground(),
135
+ activeBackground: "transparent",
136
+ borderRadius: "0",
137
+ titleFont: fontHelper(this.themeService.theme.typography.title2),
138
+ titleColor: this.themeService.theme.palette.getAccent(),
139
+ border: "none",
140
+ separatorColor: this.themeService.theme.palette.getAccent200(),
141
+ hoverBackground: "transparent"
142
+ });
143
+ this.listItemStyle = { ...defaultStyle, ...this.listItemStyle };
144
+ }
145
+ setMessageInfoStyle() {
146
+ let defaultStyle = new MessageInformationStyle({
147
+ background: this.themeService.theme.palette.getBackground(),
148
+ border: `1px solid ${this.themeService.theme.palette.getAccent50()}`,
149
+ titleTextFont: fontHelper(this.themeService.theme.typography.title1),
150
+ titleTextColor: this.themeService.theme.palette.getAccent(),
151
+ emptyStateTextFont: fontHelper(this.themeService.theme.typography.title1),
152
+ emptyStateTextColor: this.themeService.theme.palette.getAccent600(),
153
+ errorStateTextFont: fontHelper(this.themeService.theme.typography.title1),
154
+ errorStateTextColor: this.themeService.theme.palette.getAccent600(),
155
+ loadingIconTint: this.themeService.theme.palette.getAccent600(),
156
+ borderRadius: "8px",
157
+ subtitleTextColor: this.themeService.theme.palette.getAccent600(),
158
+ subtitleTextFont: fontHelper(this.themeService.theme.typography.caption2),
159
+ dividerTint: this.themeService.theme.palette.getAccent100(),
160
+ height: "500px",
161
+ width: "500px",
162
+ captionTextColor: this.themeService.theme.palette.getAccent600(),
163
+ captionTextFont: fontHelper(this.themeService.theme.typography.caption2)
164
+ });
165
+ this.messageInformationStyle = { ...defaultStyle, ...this.messageInformationStyle };
166
+ }
167
+ ngOnDestroy() {
168
+ CometChat.removeMessageListener(this.msgListenerId);
169
+ }
170
+ addMessageEventListeners() {
171
+ try {
172
+ CometChat.addMessageListener(this.msgListenerId, new CometChat.MessageListener({
173
+ onMessagesDelivered: (messageReceipt) => {
174
+ if (this.message?.getId() == Number(messageReceipt.getMessageId())) {
175
+ this.message?.setDeliveredAt(messageReceipt.getDeliveredAt());
176
+ this.ref.detectChanges();
177
+ }
178
+ },
179
+ onMessagesRead: (messageReceipt) => {
180
+ if (this.message?.getId() == Number(messageReceipt.getMessageId())) {
181
+ this.message?.setReadAt(messageReceipt.getReadAt());
182
+ this.ref.detectChanges();
183
+ }
184
+ }
185
+ }));
186
+ }
187
+ catch (error) {
188
+ if (this.onError) {
189
+ this.onError(CometChatException(error));
190
+ }
191
+ }
192
+ }
193
+ getAvatarUrl() {
194
+ return this.isUserType ? this.message.getReceiver().getAvatar() : "";
195
+ }
196
+ getUserReceipt() {
197
+ return this.message.getReadAt() || this.message.getDeliveredAt();
198
+ }
199
+ getMessageReceipt() {
200
+ let receipt = MessageReceiptUtils.getReceiptStatus(this.message);
201
+ return receipt;
202
+ }
203
+ getMessageReceipts() {
204
+ if (this.message.getReceiverType() == CometChatUIKitConstants.MessageReceiverType.user) {
205
+ this.isUserType = true;
206
+ this.emptyStateText = localize("NO_RECIPIENT");
207
+ this.states = States.loaded;
208
+ this.ref.detectChanges();
209
+ }
210
+ else {
211
+ this.emptyStateText = localize("NO_RECIPIENTS");
212
+ this.states = States.loading;
213
+ this.isUserType = false;
214
+ CometChat.getMessageReceipts(this.message.getId()).then((receipts) => {
215
+ this.receipts = receipts;
216
+ this.states = this.receipts.length > 0 ? States.loaded : States.empty;
217
+ this.ref.detectChanges();
218
+ })
219
+ .catch((err) => {
220
+ this.states = States.error;
221
+ });
222
+ }
223
+ }
224
+ closeClicked() {
225
+ if (this.onClose) {
226
+ this.onClose();
227
+ }
228
+ }
229
+ getSubtitleStyle() {
230
+ return {
231
+ textFont: this.messageInformationStyle.subtitleTextFont,
232
+ textColor: this.messageInformationStyle.subtitleTextColor
233
+ };
234
+ }
235
+ getTitleStyle() {
236
+ return {
237
+ textFont: this.messageInformationStyle.titleTextFont,
238
+ textColor: this.messageInformationStyle.titleTextColor
239
+ };
240
+ }
241
+ }
242
+ CometChatMessageInformationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatMessageInformationComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.CometChatThemeService }], target: i0.ɵɵFactoryTarget.Component });
243
+ CometChatMessageInformationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatMessageInformationComponent, selector: "cometchat-message-information", inputs: { closeIconURL: "closeIconURL", message: "message", title: "title", template: "template", bubbleView: "bubbleView", subtitleView: "subtitleView", listItemView: "listItemView", receiptDatePattern: "receiptDatePattern", onError: "onError", messageInformationStyle: "messageInformationStyle", readIcon: "readIcon", deliveredIcon: "deliveredIcon", onClose: "onClose", listItemStyle: "listItemStyle", emptyStateText: "emptyStateText", errorStateText: "errorStateText", emptyStateView: "emptyStateView", loadingIconURL: "loadingIconURL", loadingStateView: "loadingStateView", errorStateView: "errorStateView" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cc-message-information__wrapper\" [ngStyle]=\"wrapperStyle()\">\n <div class=\"cc-message-information__header\">\n <div class=\"cc-message-information__title\">\n <cometchat-label [text]=\"title\" [labelStyle]=\"getTitleStyle()\" ></cometchat-label>\n </div>\n <div class=\"cc-close-button\">\n <cometchat-button [iconURL]=\"closeIconURL\" [buttonStyle]=\"closeButtonStyle()\" (cc-button-clicked)=\"closeClicked()\">\n </cometchat-button>\n </div>\n </div>\n <div class=\"cc-message-information__bubble\">\n <cometchat-label class=\"cc-message-information__caption\" [labelStyle]=\"getCaptionStyle()\" [text]=\"messageText\"></cometchat-label>\n <div class=\"cc-message-information__bubble-view\">\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n <ng-container *ngTemplateOutlet=\"bubbleView; context:{ $implicit: message }\">\n </ng-container>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n </div>\n </div>\n <div class=\"cc-message-information__list-item\">\n <cometchat-label class=\"cc-message-information__caption\" [labelStyle]=\"getCaptionStyle()\" [text]=\"receiptInfoText\"></cometchat-label>\n <div class=\"cc-message-information__bubble-view\" *ngIf=\"isUserType; else listView\">\n <ng-container *ngIf=\"listItemView; else userListitem\">\n <ng-container *ngTemplateOutlet=\"listItemView; context:{ $implicit: message }\">\n </ng-container>\n </ng-container>\n <ng-template #userListitem>\n <div *ngIf=\"!getUserReceipt(); else userReceiptView\" class=\"cc-empty-state-view\">\n <cometchat-label *ngIf=\"!emptyStateView else customEmptyView\" [text]=\"emptyStateText\" [labelStyle]=\"emptyLabelStyle\"></cometchat-label>\n <ng-template #customEmptyView>\n <ng-container *ngTemplateOutlet=\"emptyStateView\">\n </ng-container>\n </ng-template>\n </div>\n <ng-template #userReceiptView>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n <cometchat-list-item [hideSeparator]=\"true\"\n [id]=\"message.getId()\"\n [title]=\"message.getReceiver().getName()\"\n [listItemStyle]=\"listItemStyle\" [avatarURL]=\"getAvatarUrl()\" [avatarName]=\"message.getReceiver().getName()\">\n <div slot=\"subtitleView\" *ngIf=\"subtitleView;else userSubtitle\">\n <ng-container *ngTemplateOutlet=\"subtitleView\">\n </ng-container>\n </div>\n <ng-template #userSubtitle>\n <div class=\"cc-list-item__subtitle-view \" slot=\"subtitleView\">\n <div class=\"cc-list-item__subtitle\">\n <div class=\"cc-list-item__delivered-receipt\" *ngIf=\"message.getDeliveredAt()\">\n <div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"deliveredReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Delivered'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n </div>\n <cometchat-date [timestamp]=\"message.getDeliveredAt()\" [dateStyle]=\"dateStyle\"></cometchat-date>\n </div>\n <div class=\"cc-list-item__read-receipt\" *ngIf=\"message.getReadAt()\">\n <div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"readReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Read'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n </div>\n <cometchat-date [timestamp]=\"message.getReadAt()\" [dateStyle]=\"dateStyle\"></cometchat-date>\n </div>\n </div>\n </div>\n </ng-template>\n </cometchat-list-item>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n </ng-template>\n </ng-template>\n </div>\n </div>\n</div>\n<!-- list item view -->\n<ng-template #listView>\n<cometchat-list\n[list]=\"receipts\"\n[listItemView]=\"listItemView ? listItemView : listItem\"\n[hideSearch]=\"true\"\n[state]=\"states\"\n[emptyStateText]=\"emptyStateText\"\n[errorStateText]=\"errorStateText\"\n[loadingIconURL]=\"loadingIconURL\"\n[loadingStateView]=\"loadingStateView\"\n[errorStateView]=\"errorStateView\"\n[emptyStateView]=\"emptyStateView\"\n[title]=\"''\"\n></cometchat-list>\n</ng-template>\n<ng-template #listItem let-messageReceipt>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n <cometchat-list-item [hideSeparator]=\"true\"\n [title]=\"messageReceipt.getSender().getName()\"\n [listItemStyle]=\"listItemStyle\" [avatarURL]=\"messageReceipt.getSender()?.getAvatar()\" [avatarName]=\"messageReceipt.getSender().getName()\">\n <div slot=\"subtitleView\" *ngIf=\"subtitleView;else userSubtitle\">\n <ng-container *ngTemplateOutlet=\"subtitleView\">\n </ng-container>\n </div>\n <ng-template #userSubtitle>\n <div class=\"cc-list-item__subtitle-view \" slot=\"subtitleView\">\n<div class=\"cc-list-item__subtitle\">\n <div class=\"cc-list-item__delivered-receipt\" *ngIf=\"messageReceipt.getDeliveredAt()\">\n<div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"deliveredReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Delivered'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n</div>\n <cometchat-date [timestamp]=\"messageReceipt.getDeliveredAt()\" [dateStyle]=\"dateStyle\" [pattern]=\"deliveredReceipt\" [customDateString]=\"getDatePattern(messageReceipt.getDeliveredAt())\"></cometchat-date>\n </div>\n <div class=\"cc-list-item__read-receipt\" *ngIf=\"messageReceipt.getReadAt()\">\n <div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"readReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Read'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n </div>\n <cometchat-date [pattern]=\"readReceipt\" [timestamp]=\"messageReceipt.getReadAt()\" [dateStyle]=\"dateStyle\" [customDateString]=\"getDatePattern(messageReceipt.getReadAt())\"></cometchat-date>\n </div>\n</div>\n </div>\n </ng-template>\n </cometchat-list-item>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n</ng-template>", styles: [".cc-message-information__wrapper{height:500px;width:500px;background-color:#fff;padding:8px;display:flex;overflow:hidden;flex-direction:column}*{margin:0;padding:0;box-sizing:border-box}.cc-message-information__title{display:flex;align-items:center;justify-content:center;height:-moz-fit-content;height:fit-content;width:100%;padding:8px 0}.cc-close-button{padding:8px 0}.cc-message-information__header{display:flex;flex-direction:row;justify-content:flex-end}.cc-message-information__bubble-header{display:flex;align-items:flex-start;justify-content:flex-start;padding-bottom:2px}.cc-message-information__bubble,.cc-message-information__list-item{margin:8px 0;overflow:hidden}.cc-list-item__delivered-receipt,.cc-list-item__read-receipt{display:flex;justify-content:space-between}.cc-list-item__receipt{display:flex}cometchat-label{display:flex;align-items:center;justify-content:flex-start}.cc-empty-state-view{display:flex;align-items:flex-start;justify-content:center}\n"], components: [{ type: i2.CometchatListComponent, selector: "cometchat-list", inputs: ["listItemView", "onScrolledToBottom", "onScrolledToTop", "list", "onSearch", "searchText", "searchIconURL", "listStyle", "searchPlaceholderText", "hideSearch", "hideError", "title", "titleAlignment", "errorStateView", "loadingStateView", "emptyStateView", "state", "errorStateText", "emptyStateText", "loadingIconURL", "showSectionHeader", "sectionHeaderField"] }], directives: [{ type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
244
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatMessageInformationComponent, decorators: [{
245
+ type: Component,
246
+ args: [{ selector: 'cometchat-message-information', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cc-message-information__wrapper\" [ngStyle]=\"wrapperStyle()\">\n <div class=\"cc-message-information__header\">\n <div class=\"cc-message-information__title\">\n <cometchat-label [text]=\"title\" [labelStyle]=\"getTitleStyle()\" ></cometchat-label>\n </div>\n <div class=\"cc-close-button\">\n <cometchat-button [iconURL]=\"closeIconURL\" [buttonStyle]=\"closeButtonStyle()\" (cc-button-clicked)=\"closeClicked()\">\n </cometchat-button>\n </div>\n </div>\n <div class=\"cc-message-information__bubble\">\n <cometchat-label class=\"cc-message-information__caption\" [labelStyle]=\"getCaptionStyle()\" [text]=\"messageText\"></cometchat-label>\n <div class=\"cc-message-information__bubble-view\">\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n <ng-container *ngTemplateOutlet=\"bubbleView; context:{ $implicit: message }\">\n </ng-container>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n </div>\n </div>\n <div class=\"cc-message-information__list-item\">\n <cometchat-label class=\"cc-message-information__caption\" [labelStyle]=\"getCaptionStyle()\" [text]=\"receiptInfoText\"></cometchat-label>\n <div class=\"cc-message-information__bubble-view\" *ngIf=\"isUserType; else listView\">\n <ng-container *ngIf=\"listItemView; else userListitem\">\n <ng-container *ngTemplateOutlet=\"listItemView; context:{ $implicit: message }\">\n </ng-container>\n </ng-container>\n <ng-template #userListitem>\n <div *ngIf=\"!getUserReceipt(); else userReceiptView\" class=\"cc-empty-state-view\">\n <cometchat-label *ngIf=\"!emptyStateView else customEmptyView\" [text]=\"emptyStateText\" [labelStyle]=\"emptyLabelStyle\"></cometchat-label>\n <ng-template #customEmptyView>\n <ng-container *ngTemplateOutlet=\"emptyStateView\">\n </ng-container>\n </ng-template>\n </div>\n <ng-template #userReceiptView>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n <cometchat-list-item [hideSeparator]=\"true\"\n [id]=\"message.getId()\"\n [title]=\"message.getReceiver().getName()\"\n [listItemStyle]=\"listItemStyle\" [avatarURL]=\"getAvatarUrl()\" [avatarName]=\"message.getReceiver().getName()\">\n <div slot=\"subtitleView\" *ngIf=\"subtitleView;else userSubtitle\">\n <ng-container *ngTemplateOutlet=\"subtitleView\">\n </ng-container>\n </div>\n <ng-template #userSubtitle>\n <div class=\"cc-list-item__subtitle-view \" slot=\"subtitleView\">\n <div class=\"cc-list-item__subtitle\">\n <div class=\"cc-list-item__delivered-receipt\" *ngIf=\"message.getDeliveredAt()\">\n <div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"deliveredReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Delivered'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n </div>\n <cometchat-date [timestamp]=\"message.getDeliveredAt()\" [dateStyle]=\"dateStyle\"></cometchat-date>\n </div>\n <div class=\"cc-list-item__read-receipt\" *ngIf=\"message.getReadAt()\">\n <div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"readReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Read'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n </div>\n <cometchat-date [timestamp]=\"message.getReadAt()\" [dateStyle]=\"dateStyle\"></cometchat-date>\n </div>\n </div>\n </div>\n </ng-template>\n </cometchat-list-item>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n </ng-template>\n </ng-template>\n </div>\n </div>\n</div>\n<!-- list item view -->\n<ng-template #listView>\n<cometchat-list\n[list]=\"receipts\"\n[listItemView]=\"listItemView ? listItemView : listItem\"\n[hideSearch]=\"true\"\n[state]=\"states\"\n[emptyStateText]=\"emptyStateText\"\n[errorStateText]=\"errorStateText\"\n[loadingIconURL]=\"loadingIconURL\"\n[loadingStateView]=\"loadingStateView\"\n[errorStateView]=\"errorStateView\"\n[emptyStateView]=\"emptyStateView\"\n[title]=\"''\"\n></cometchat-list>\n</ng-template>\n<ng-template #listItem let-messageReceipt>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n <cometchat-list-item [hideSeparator]=\"true\"\n [title]=\"messageReceipt.getSender().getName()\"\n [listItemStyle]=\"listItemStyle\" [avatarURL]=\"messageReceipt.getSender()?.getAvatar()\" [avatarName]=\"messageReceipt.getSender().getName()\">\n <div slot=\"subtitleView\" *ngIf=\"subtitleView;else userSubtitle\">\n <ng-container *ngTemplateOutlet=\"subtitleView\">\n </ng-container>\n </div>\n <ng-template #userSubtitle>\n <div class=\"cc-list-item__subtitle-view \" slot=\"subtitleView\">\n<div class=\"cc-list-item__subtitle\">\n <div class=\"cc-list-item__delivered-receipt\" *ngIf=\"messageReceipt.getDeliveredAt()\">\n<div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"deliveredReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Delivered'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n</div>\n <cometchat-date [timestamp]=\"messageReceipt.getDeliveredAt()\" [dateStyle]=\"dateStyle\" [pattern]=\"deliveredReceipt\" [customDateString]=\"getDatePattern(messageReceipt.getDeliveredAt())\"></cometchat-date>\n </div>\n <div class=\"cc-list-item__read-receipt\" *ngIf=\"messageReceipt.getReadAt()\">\n <div class=\"cc-list-item__receipt\">\n <cometchat-receipt [receipt]=\"readReceipt\" [receiptStyle]=\"receiptStyle\" [deliveredIcon]=\"deliveredIcon\" [readIcon]=\"readIcon\"></cometchat-receipt>\n <cometchat-label [text]=\"'Read'\" [labelStyle]=\"getSubtitleStyle()\"></cometchat-label>\n </div>\n <cometchat-date [pattern]=\"readReceipt\" [timestamp]=\"messageReceipt.getReadAt()\" [dateStyle]=\"dateStyle\" [customDateString]=\"getDatePattern(messageReceipt.getReadAt())\"></cometchat-date>\n </div>\n</div>\n </div>\n </ng-template>\n </cometchat-list-item>\n <cometchat-divider [dividerStyle]=\"dividerStyle\"></cometchat-divider>\n</ng-template>", styles: [".cc-message-information__wrapper{height:500px;width:500px;background-color:#fff;padding:8px;display:flex;overflow:hidden;flex-direction:column}*{margin:0;padding:0;box-sizing:border-box}.cc-message-information__title{display:flex;align-items:center;justify-content:center;height:-moz-fit-content;height:fit-content;width:100%;padding:8px 0}.cc-close-button{padding:8px 0}.cc-message-information__header{display:flex;flex-direction:row;justify-content:flex-end}.cc-message-information__bubble-header{display:flex;align-items:flex-start;justify-content:flex-start;padding-bottom:2px}.cc-message-information__bubble,.cc-message-information__list-item{margin:8px 0;overflow:hidden}.cc-list-item__delivered-receipt,.cc-list-item__read-receipt{display:flex;justify-content:space-between}.cc-list-item__receipt{display:flex}cometchat-label{display:flex;align-items:center;justify-content:flex-start}.cc-empty-state-view{display:flex;align-items:flex-start;justify-content:center}\n"] }]
247
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.CometChatThemeService }]; }, propDecorators: { closeIconURL: [{
248
+ type: Input
249
+ }], message: [{
250
+ type: Input
251
+ }], title: [{
252
+ type: Input
253
+ }], template: [{
254
+ type: Input
255
+ }], bubbleView: [{
256
+ type: Input
257
+ }], subtitleView: [{
258
+ type: Input
259
+ }], listItemView: [{
260
+ type: Input
261
+ }], receiptDatePattern: [{
262
+ type: Input
263
+ }], onError: [{
264
+ type: Input
265
+ }], messageInformationStyle: [{
266
+ type: Input
267
+ }], readIcon: [{
268
+ type: Input
269
+ }], deliveredIcon: [{
270
+ type: Input
271
+ }], onClose: [{
272
+ type: Input
273
+ }], listItemStyle: [{
274
+ type: Input
275
+ }], emptyStateText: [{
276
+ type: Input
277
+ }], errorStateText: [{
278
+ type: Input
279
+ }], emptyStateView: [{
280
+ type: Input
281
+ }], loadingIconURL: [{
282
+ type: Input
283
+ }], loadingStateView: [{
284
+ type: Input
285
+ }], errorStateView: [{
286
+ type: Input
287
+ }] } });
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9Db21ldENoYXRNZXNzYWdlSW5mb3JtYXRpb24vY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24vY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9Db21ldENoYXRNZXNzYWdlSW5mb3JtYXRpb24vY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24vY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBNkIsdUJBQXVCLEVBQTRCLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUM1SSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFM0QsT0FBTyxFQUE0Qix1QkFBdUIsRUFBZ0IsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckosT0FBTyxFQUFhLHVCQUF1QixFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEcsT0FBTyxFQUF5QixhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7O0FBQzFFOzs7Ozs7OztFQVFFO0FBT0YsTUFBTSxPQUFPLG9DQUFvQztJQW9EL0MsWUFBb0IsR0FBcUIsRUFBUyxZQUFrQztRQUFoRSxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUFTLGlCQUFZLEdBQVosWUFBWSxDQUFzQjtRQW5EM0UsaUJBQVksR0FBVSxvQkFBb0IsQ0FBQztRQUUzQyxVQUFLLEdBQVUsUUFBUSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFNL0MsWUFBTyxHQUF1RCxDQUFDLEtBQWtDLEVBQUMsRUFBRTtZQUMzRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3BCLENBQUMsQ0FBQTtRQUNRLDRCQUF1QixHQUEyQjtZQUN6RCxNQUFNLEVBQUUsT0FBTztZQUNmLEtBQUssRUFBRSxPQUFPO1NBQ2YsQ0FBQztRQUNPLGFBQVEsR0FBVSx5QkFBeUIsQ0FBQztRQUM1QyxrQkFBYSxHQUFVLDhCQUE4QixDQUFDO1FBRXRELGtCQUFhLEdBQWlCLEVBQUUsQ0FBQztRQUNqQyxtQkFBYyxHQUFXLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUNsRCxtQkFBYyxHQUFXLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXJELG1CQUFjLEdBQVUsb0JBQW9CLENBQUM7UUFHdEQsYUFBUSxHQUE4QixFQUFFLENBQUM7UUFDekMsaUJBQVksR0FBRyxJQUFJLFlBQVksQ0FBQztZQUM5QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUM1RCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUM1RCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ2pFLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQzFELGFBQWEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3pELE1BQU0sRUFBQyxNQUFNO1lBQ2IsS0FBSyxFQUFDLE1BQU07U0FDYixDQUFDLENBQUE7UUFDRixlQUFVLEdBQVcsS0FBSyxDQUFDO1FBQzNCLHFCQUFnQixHQUFZLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDeEMsa0JBQWEsR0FBRyxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6RCxnQkFBVyxHQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDckMsY0FBUyxHQUFhLEVBQUUsQ0FBQztRQUN6QixnQkFBVyxHQUFVLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QyxvQkFBZSxHQUFVLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBQ3hELG9CQUFlLEdBQWM7WUFDM0IsUUFBUSxFQUFDLGdCQUFnQjtZQUN6QixTQUFTLEVBQUMsT0FBTztTQUNsQixDQUFBO1FBQ0QsY0FBUyxHQUFhLEVBRXJCLENBQUE7UUFDRCxpQkFBWSxHQUFPLEVBQUUsQ0FBQTtRQUNyQixXQUFNLEdBQVUsTUFBTSxDQUFDLE9BQU8sQ0FBQTtRQXFKNUIscUJBQWdCLEdBQUcsR0FBRSxFQUFFO1lBQ3JCLE9BQU87Z0JBQ0wsTUFBTSxFQUFDLE1BQU07Z0JBQ2IsS0FBSyxFQUFDLE1BQU07Z0JBQ1osTUFBTSxFQUFDLE1BQU07Z0JBQ2IsWUFBWSxFQUFDLEdBQUc7Z0JBQ2hCLFVBQVUsRUFBQyxhQUFhO2dCQUN4QixjQUFjLEVBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTthQUM1RCxDQUFBO1FBQ0gsQ0FBQyxDQUFBO1FBYUQsaUJBQVksR0FBRyxHQUFHLEVBQUU7WUFDbEIsT0FBTztnQkFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU07Z0JBQzNDLEtBQUssRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSztnQkFDekMsVUFBVSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVO2dCQUNuRCxNQUFNLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU07Z0JBQzNDLFlBQVksRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWTthQUN4RCxDQUFBO1FBQ0gsQ0FBQyxDQUFBO1FBQ0Qsb0JBQWUsR0FBRyxHQUFFLEVBQUU7WUFDcEIsT0FBTztnQkFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGVBQWU7Z0JBQ3RELFNBQVMsRUFBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCO2FBQ3hELENBQUE7UUFDSCxDQUFDLENBQUE7SUF4TG9GLENBQUM7SUFDeEYsV0FBVyxDQUFDLE9BQXNCO0lBRWxDLENBQUM7SUFDRCxjQUFjLENBQUMsU0FBZ0I7UUFDN0IsSUFBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUE7U0FDekM7YUFDRztZQUNGLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUNELFFBQVE7UUFDVixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDZixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtRQUN6QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQTtJQUU3QixDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUU7WUFDZCxhQUFhLEVBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGFBQWE7WUFDMUQsY0FBYyxFQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjO1lBQzVELGtCQUFrQixFQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0I7WUFDcEUsbUJBQW1CLEVBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLG1CQUFtQjtZQUN0RSxrQkFBa0IsRUFBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCO1lBQ3BFLG1CQUFtQixFQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxtQkFBbUI7WUFDdEUsZUFBZSxFQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlO1NBQy9ELENBQUE7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2xCLFVBQVUsRUFBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVztZQUNuRCxNQUFNLEVBQUUsS0FBSztZQUNiLEtBQUssRUFBRSxNQUFNO1NBQ2QsQ0FBQTtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ3pELFVBQVUsRUFBRSxhQUFhO1lBQ3pCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsS0FBSyxFQUFFLE1BQU07U0FDZCxDQUFBO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBQ0QsZ0JBQWdCO1FBQ2QsSUFBSSxZQUFZLEdBQWlCLElBQUksYUFBYSxDQUFDO1lBQ2pELE1BQU0sRUFBRSxhQUFhO1lBQ3JCLEtBQUssRUFBRSxNQUFNO1lBQ2IsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUU7WUFDM0QsZ0JBQWdCLEVBQUUsYUFBYTtZQUMvQixZQUFZLEVBQUUsR0FBRztZQUNqQixTQUFTLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDaEUsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDdkQsTUFBTSxFQUFFLE1BQU07WUFDZCxjQUFjLEVBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUM3RCxlQUFlLEVBQUMsYUFBYTtTQUM5QixDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUMsR0FBRyxZQUFZLEVBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFDLENBQUE7SUFDOUQsQ0FBQztJQUNELG1CQUFtQjtRQUNqQixJQUFJLFlBQVksR0FBMkIsSUFBSSx1QkFBdUIsQ0FBQztZQUNyRSxVQUFVLEVBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUMxRCxNQUFNLEVBQUMsYUFBYSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDbkUsYUFBYSxFQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ25FLGNBQWMsRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQzFELGtCQUFrQixFQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3hFLG1CQUFtQixFQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUU7WUFDbEUsa0JBQWtCLEVBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDeEUsbUJBQW1CLEVBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUNsRSxlQUFlLEVBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUM5RCxZQUFZLEVBQUMsS0FBSztZQUNsQixpQkFBaUIsRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ2hFLGdCQUFnQixFQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3hFLFdBQVcsRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQzFELE1BQU0sRUFBRSxPQUFPO1lBQ2YsS0FBSyxFQUFFLE9BQU87WUFDZCxnQkFBZ0IsRUFBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQy9ELGVBQWUsRUFBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztTQUN4RSxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsdUJBQXVCLEdBQUcsRUFBQyxHQUFHLFlBQVksRUFBQyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBQyxDQUFBO0lBQ2xGLENBQUM7SUFDRCxXQUFXO1FBQ1QsU0FBUyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0Qsd0JBQXdCO1FBQ3RCLElBQUk7WUFDRixTQUFTLENBQUMsa0JBQWtCLENBQzFCLElBQUksQ0FBQyxhQUFhLEVBQ2xCLElBQUksU0FBUyxDQUFDLGVBQWUsQ0FBQztnQkFDNUIsbUJBQW1CLEVBQUUsQ0FBQyxjQUF3QyxFQUFFLEVBQUU7b0JBQ2hFLElBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUM7d0JBQy9ELElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFBO3dCQUM3RCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFBO3FCQUMxQjtnQkFDSCxDQUFDO2dCQUNELGNBQWMsRUFBRSxDQUFDLGNBQXdDLEVBQUUsRUFBRTtvQkFDM0QsSUFBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBQzt3QkFDaEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUE7d0JBQ25ELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUE7cUJBQzFCO2dCQUNGLENBQUM7YUFDRixDQUFDLENBQ0gsQ0FBQztTQUVIO1FBQUMsT0FBTyxLQUFVLEVBQUU7WUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDekM7U0FDRjtJQUNILENBQUM7SUFDRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBcUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQzFGLENBQUM7SUFDRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUE7SUFDbEUsQ0FBQztJQUNELGlCQUFpQjtRQUNmLElBQUksT0FBTyxHQUFHLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNoRSxPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDO0lBQ0Qsa0JBQWtCO1FBQ2hCLElBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsSUFBSSx1QkFBdUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUM7WUFDcEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUE7WUFDOUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFBO1lBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUE7U0FDekI7YUFDRztZQUNGLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1lBQ3JELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQTtZQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixTQUFTLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBQyxFQUFFO2dCQUNsRSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQXNDLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFBO2dCQUNyRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFBO1lBRTFCLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsQ0FBQyxHQUFnQyxFQUFDLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQTtZQUM3QixDQUFDLENBQUMsQ0FBQTtTQUNIO0lBRUgsQ0FBQztJQUNELFlBQVk7UUFDVixJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUM7WUFDZCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7U0FDZjtJQUNILENBQUM7SUFXQyxnQkFBZ0I7UUFDZCxPQUFPO1lBQ0wsUUFBUSxFQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0I7WUFDdEQsU0FBUyxFQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxpQkFBaUI7U0FDekQsQ0FBQTtJQUNILENBQUM7SUFDRCxhQUFhO1FBQ1gsT0FBTztZQUNMLFFBQVEsRUFBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYTtZQUNuRCxTQUFTLEVBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGNBQWM7U0FDdEQsQ0FBQTtJQUNILENBQUM7O2tJQTdOUSxvQ0FBb0M7c0hBQXBDLG9DQUFvQyxnc0JDdEJqRCx1dk1Bc0hjOzRGRGhHRCxvQ0FBb0M7a0JBTmhELFNBQVM7K0JBQ0UsK0JBQStCLG1CQUd4Qix1QkFBdUIsQ0FBQyxNQUFNOzRJQUd0QyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUdHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21ldENoYXQgfSBmcm9tICdAY29tZXRjaGF0L2NoYXQtc2RrLWphdmFzY3JpcHQnO1xuaW1wb3J0IHsgQ29tZXRDaGF0VGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vQ29tZXRDaGF0VGhlbWUuc2VydmljZSc7XG5pbXBvcnQgeyBDb21ldENoYXRNZXNzYWdlVGVtcGxhdGUsIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLCBEYXRlUGF0dGVybnMsIFJlY2VpcHRzLCBTdGF0ZXMsIGZvbnRIZWxwZXIsIGxvY2FsaXplIH0gZnJvbSAnQGNvbWV0Y2hhdC91aWtpdC1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgTGlzdFN0eWxlLCBNZXNzYWdlSW5mb3JtYXRpb25TdHlsZSwgTWVzc2FnZVJlY2VpcHRVdGlscyB9IGZyb20gJ0Bjb21ldGNoYXQvdWlraXQtc2hhcmVkJztcbmltcG9ydCB7IERhdGVTdHlsZSwgTGFiZWxTdHlsZSwgTGlzdEl0ZW1TdHlsZSwgUmVjZWlwdFN0eWxlIH0gZnJvbSAnQGNvbWV0Y2hhdC91aWtpdC1lbGVtZW50cyc7XG5pbXBvcnQgeyBDb21ldENoYXRFeGNlcHRpb24gfSBmcm9tICcuLi8uLi9TaGFyZWQvVXRpbHMvQ29tZUNoYXRFeGNlcHRpb24nO1xuLyoqXG4qXG4qIENvbWV0Q2hhdE1lc3NhZ2VJbmZvcm1hdGlvbkNvbXBvbmVudCBpcyBhIHVzZWQgdG8gcmVuZGVyIGxpc3RpdGVtIGNvbXBvbmVudC5cbipcbiogQHZlcnNpb24gMS4wLjBcbiogQGF1dGhvciBDb21ldENoYXRUZWFtXG4qIEBjb3B5cmlnaHQgwqkgMjAyMiBDb21ldENoYXQgSW5jLlxuKlxuKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NvbWV0Y2hhdC1tZXNzYWdlLWluZm9ybWF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbWV0Y2hhdC1tZXNzYWdlLWluZm9ybWF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ29tZXRDaGF0TWVzc2FnZUluZm9ybWF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGNsb3NlSWNvblVSTDpzdHJpbmcgPSBcImFzc2V0cy9jbG9zZTJ4LnN2Z1wiO1xuICBASW5wdXQoKSBtZXNzYWdlITpDb21ldENoYXQuQmFzZU1lc3NhZ2U7XG4gIEBJbnB1dCgpIHRpdGxlOnN0cmluZyA9IGxvY2FsaXplKFwiTUVTU0FHRV9JTkZPUk1BVElPTlwiKTtcbiAgQElucHV0KCkgdGVtcGxhdGUhOkNvbWV0Q2hhdE1lc3NhZ2VUZW1wbGF0ZTtcbiAgQElucHV0KCkgYnViYmxlVmlldyE6VGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgc3VidGl0bGVWaWV3ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgbGlzdEl0ZW1WaWV3ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgcmVjZWlwdERhdGVQYXR0ZXJuIToodGltZXN0YW1wOm51bWJlcik9PnN0cmluZztcbiAgQElucHV0KCkgb25FcnJvcjooKGVycm9yOkNvbWV0Q2hhdC5Db21ldENoYXRFeGNlcHRpb24pPT52b2lkKSB8IG51bGwgPSAoZXJyb3I6Q29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbik9PntcbiAgICBjb25zb2xlLmxvZyhlcnJvcilcbiAgfVxuICBASW5wdXQoKSBtZXNzYWdlSW5mb3JtYXRpb25TdHlsZTpNZXNzYWdlSW5mb3JtYXRpb25TdHlsZSA9IHtcbiAgICBoZWlnaHQ6IFwiNTAwcHhcIixcbiAgICB3aWR0aDogXCI1MDBweFwiXG4gIH07XG4gIEBJbnB1dCgpIHJlYWRJY29uOnN0cmluZyA9IFwiYXNzZXRzL21lc3NhZ2UtcmVhZC5zdmdcIjtcbiAgQElucHV0KCkgZGVsaXZlcmVkSWNvbjpzdHJpbmcgPSBcImFzc2V0cy9tZXNzYWdlLWRlbGl2ZXJlZC5zdmdcIjtcbiAgQElucHV0KCkgb25DbG9zZSE6KCk9PnZvaWQ7XG4gIEBJbnB1dCgpIGxpc3RJdGVtU3R5bGU6TGlzdEl0ZW1TdHlsZSA9IHt9O1xuICBASW5wdXQoKSBlbXB0eVN0YXRlVGV4dDogc3RyaW5nID0gbG9jYWxpemUoXCJOT19SRUNJUElFTlRTXCIpXG4gIEBJbnB1dCgpIGVycm9yU3RhdGVUZXh0OiBzdHJpbmcgPSBsb2NhbGl6ZShcIlNPTUVUSElOR19XUk9OR1wiKTtcbiAgQElucHV0KCkgZW1wdHlTdGF0ZVZpZXchOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBsb2FkaW5nSWNvblVSTDpzdHJpbmcgPSBcImFzc2V0cy9TcGlubmVyLnN2Z1wiO1xuICBASW5wdXQoKSBsb2FkaW5nU3RhdGVWaWV3ITpUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBlcnJvclN0YXRlVmlldyE6IFRlbXBsYXRlUmVmPGFueT47XG4gIHJlY2VpcHRzOkNvbWV0Q2hhdC5NZXNzYWdlUmVjZWlwdFtdID0gW107XG4gIHJlY2VpcHRTdHlsZSA9IG5ldyBSZWNlaXB0U3R5bGUoe1xuICAgIHdhaXRJY29uVGludDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ3MDAoKSxcbiAgICBzZW50SWNvblRpbnQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgZGVsaXZlcmVkSWNvblRpbnQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgcmVhZEljb25UaW50OiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldFByaW1hcnkoKSxcbiAgICBlcnJvckljb25UaW50OiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEVycm9yKCksXG4gICAgaGVpZ2h0OlwiMjBweFwiLFxuICAgIHdpZHRoOlwiMjBweFwiXG4gIH0pXG4gIGlzVXNlclR5cGU6Ym9vbGVhbiA9IGZhbHNlO1xuICBkZWxpdmVyZWRSZWNlaXB0OlJlY2VpcHRzID0gUmVjZWlwdHMuZGVsaXZlcmVkO1xuICBwdWJsaWMgbXNnTGlzdGVuZXJJZCA9IFwibWVzc2FnZV9cIiArIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICByZWFkUmVjZWlwdDpSZWNlaXB0cyA9IFJlY2VpcHRzLnJlYWQ7XG4gIGxpc3RTdHlsZTpMaXN0U3R5bGUgPSB7fTtcbiAgbWVzc2FnZVRleHQ6c3RyaW5nID0gbG9jYWxpemUoXCJNRVNTQUdFXCIpO1xuICByZWNlaXB0SW5mb1RleHQ6c3RyaW5nID0gbG9jYWxpemUoXCJSRUNFSVBUX0lORk9STUFUSU9OXCIpXG4gIGVtcHR5TGFiZWxTdHlsZTpMYWJlbFN0eWxlID0ge1xuICAgIHRleHRGb250Oic0MDAgMTFweCBJbnRlcicsXG4gICAgdGV4dENvbG9yOlwiYmxhY2tcIlxuICB9XG4gIGRhdGVTdHlsZTpEYXRlU3R5bGUgPSB7XG5cbiAgfVxuICBkaXZpZGVyU3R5bGU6YW55ID0ge31cbiAgc3RhdGVzOlN0YXRlcyA9IFN0YXRlcy5sb2FkaW5nXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOkNoYW5nZURldGVjdG9yUmVmLHByaXZhdGUgdGhlbWVTZXJ2aWNlOkNvbWV0Q2hhdFRoZW1lU2VydmljZSkge31cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuXG4gIH1cbiAgZ2V0RGF0ZVBhdHRlcm4odGltZXN0YW1wOm51bWJlcil7XG4gICAgaWYodGhpcy5yZWNlaXB0RGF0ZVBhdHRlcm4pe1xuICAgICByZXR1cm4gdGhpcy5yZWNlaXB0RGF0ZVBhdHRlcm4odGltZXN0YW1wKVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG50aGlzLnNldFRoZW1lKClcbnRoaXMuZ2V0TWVzc2FnZVJlY2VpcHRzKClcbnRoaXMuYWRkTWVzc2FnZUV2ZW50TGlzdGVuZXJzKClcblxuICB9XG4gIHNldFRoZW1lKCl7XG4gICAgdGhpcy5zZXRNZXNzYWdlSW5mb1N0eWxlKClcbiAgICB0aGlzLnNldExpc3RJdGVtU3R5bGUoKVxuICAgIHRoaXMubGlzdFN0eWxlID17XG4gICAgICB0aXRsZVRleHRGb250IDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS50aXRsZVRleHRGb250LFxuICAgICAgdGl0bGVUZXh0Q29sb3IgOiB0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLnRpdGxlVGV4dENvbG9yLFxuICAgICAgZW1wdHlTdGF0ZVRleHRGb250IDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5lbXB0eVN0YXRlVGV4dEZvbnQsXG4gICAgICBlbXB0eVN0YXRlVGV4dENvbG9yIDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5lbXB0eVN0YXRlVGV4dENvbG9yLFxuICAgICAgZXJyb3JTdGF0ZVRleHRGb250IDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5lcnJvclN0YXRlVGV4dEZvbnQsXG4gICAgICBlcnJvclN0YXRlVGV4dENvbG9yIDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5lcnJvclN0YXRlVGV4dENvbG9yLFxuICAgICAgbG9hZGluZ0ljb25UaW50IDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5sb2FkaW5nSWNvblRpbnQsXG4gICAgfVxuICAgIHRoaXMuZGl2aWRlclN0eWxlID0ge1xuICAgICAgYmFja2dyb3VuZDp0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLmRpdmlkZXJUaW50LFxuICAgICAgaGVpZ2h0OiBcIjFweFwiLFxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgIH1cbiAgICB0aGlzLmRhdGVTdHlsZSA9IHtcbiAgICAgIHRleHRGb250OiAnNDAwIDExcHggSW50ZXInLFxuICAgICAgdGV4dENvbG9yOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDYwMCgpLFxuICAgICAgYmFja2dyb3VuZDogXCJ0cmFuc3BhcmVudFwiLFxuICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICB9XG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cbiAgc2V0TGlzdEl0ZW1TdHlsZSgpe1xuICAgIGxldCBkZWZhdWx0U3R5bGU6TGlzdEl0ZW1TdHlsZSA9IG5ldyBMaXN0SXRlbVN0eWxlKHtcbiAgICAgIGhlaWdodDogXCJmaXQtY29udGVudFwiLFxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgYmFja2dyb3VuZDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgICBhY3RpdmVCYWNrZ3JvdW5kOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICBib3JkZXJSYWRpdXM6IFwiMFwiLFxuICAgICAgdGl0bGVGb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkudGl0bGUyKSxcbiAgICAgIHRpdGxlQ29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50KCksXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgc2VwYXJhdG9yQ29sb3I6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQyMDAoKSxcbiAgICAgIGhvdmVyQmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCJcbiAgICB9KVxuICAgIHRoaXMubGlzdEl0ZW1TdHlsZSA9IHsuLi5kZWZhdWx0U3R5bGUsLi4udGhpcy5saXN0SXRlbVN0eWxlfVxuICB9XG4gIHNldE1lc3NhZ2VJbmZvU3R5bGUoKXtcbiAgICBsZXQgZGVmYXVsdFN0eWxlOk1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlID0gbmV3IE1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlKHtcbiAgICAgIGJhY2tncm91bmQ6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgICBib3JkZXI6YDFweCBzb2xpZCAke3RoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NTAoKX1gLFxuICAgICAgdGl0bGVUZXh0Rm9udDpmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkudGl0bGUxKSxcbiAgICAgIHRpdGxlVGV4dENvbG9yOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50KCksXG4gICAgICBlbXB0eVN0YXRlVGV4dEZvbnQ6Zm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRpdGxlMSksXG4gICAgICBlbXB0eVN0YXRlVGV4dENvbG9yOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICBlcnJvclN0YXRlVGV4dEZvbnQ6Zm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRpdGxlMSksXG4gICAgICBlcnJvclN0YXRlVGV4dENvbG9yOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICBsb2FkaW5nSWNvblRpbnQ6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ2MDAoKSxcbiAgICAgIGJvcmRlclJhZGl1czpcIjhweFwiLFxuICAgICAgc3VidGl0bGVUZXh0Q29sb3I6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ2MDAoKSxcbiAgICAgIHN1YnRpdGxlVGV4dEZvbnQ6Zm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LmNhcHRpb24yKSxcbiAgICAgIGRpdmlkZXJUaW50OnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MTAwKCksXG4gICAgICBoZWlnaHQ6IFwiNTAwcHhcIixcbiAgICAgIHdpZHRoOiBcIjUwMHB4XCIsXG4gICAgICBjYXB0aW9uVGV4dENvbG9yOnRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICBjYXB0aW9uVGV4dEZvbnQ6Zm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LmNhcHRpb24yKVxuICAgIH0pXG4gICAgdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZSA9IHsuLi5kZWZhdWx0U3R5bGUsLi4udGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZX1cbiAgfVxuICBuZ09uRGVzdHJveSgpe1xuICAgIENvbWV0Q2hhdC5yZW1vdmVNZXNzYWdlTGlzdGVuZXIodGhpcy5tc2dMaXN0ZW5lcklkKTtcbiAgfVxuICBhZGRNZXNzYWdlRXZlbnRMaXN0ZW5lcnMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIENvbWV0Q2hhdC5hZGRNZXNzYWdlTGlzdGVuZXIoXG4gICAgICAgIHRoaXMubXNnTGlzdGVuZXJJZCxcbiAgICAgICAgbmV3IENvbWV0Q2hhdC5NZXNzYWdlTGlzdGVuZXIoe1xuICAgICAgICAgIG9uTWVzc2FnZXNEZWxpdmVyZWQ6IChtZXNzYWdlUmVjZWlwdDogQ29tZXRDaGF0Lk1lc3NhZ2VSZWNlaXB0KSA9PiB7XG4gICAgICAgICAgICBpZih0aGlzLm1lc3NhZ2U/LmdldElkKCkgPT0gTnVtYmVyKG1lc3NhZ2VSZWNlaXB0LmdldE1lc3NhZ2VJZCgpKSl7XG4gICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2U/LnNldERlbGl2ZXJlZEF0KG1lc3NhZ2VSZWNlaXB0LmdldERlbGl2ZXJlZEF0KCkpXG4gICAgICAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uTWVzc2FnZXNSZWFkOiAobWVzc2FnZVJlY2VpcHQ6IENvbWV0Q2hhdC5NZXNzYWdlUmVjZWlwdCkgPT4ge1xuICAgICAgICAgICAgaWYodGhpcy5tZXNzYWdlPy5nZXRJZCgpID09IE51bWJlcihtZXNzYWdlUmVjZWlwdC5nZXRNZXNzYWdlSWQoKSkpe1xuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2U/LnNldFJlYWRBdChtZXNzYWdlUmVjZWlwdC5nZXRSZWFkQXQoKSlcbiAgICAgICAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgaWYgKHRoaXMub25FcnJvcikge1xuICAgICAgICB0aGlzLm9uRXJyb3IoQ29tZXRDaGF0RXhjZXB0aW9uKGVycm9yKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGdldEF2YXRhclVybCgpe1xuICAgIHJldHVybiB0aGlzLmlzVXNlclR5cGUgPyAodGhpcy5tZXNzYWdlLmdldFJlY2VpdmVyKCkgYXMgQ29tZXRDaGF0LlVzZXIpLmdldEF2YXRhcigpIDogXCJcIlxuICB9XG4gIGdldFVzZXJSZWNlaXB0KCl7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZS5nZXRSZWFkQXQoKSB8fCB0aGlzLm1lc3NhZ2UuZ2V0RGVsaXZlcmVkQXQoKVxuICB9XG4gIGdldE1lc3NhZ2VSZWNlaXB0KCkge1xuICAgIGxldCByZWNlaXB0ID0gTWVzc2FnZVJlY2VpcHRVdGlscy5nZXRSZWNlaXB0U3RhdHVzKHRoaXMubWVzc2FnZSlcbiAgICByZXR1cm4gcmVjZWlwdFxuICB9XG4gIGdldE1lc3NhZ2VSZWNlaXB0cygpe1xuICAgIGlmKHRoaXMubWVzc2FnZS5nZXRSZWNlaXZlclR5cGUoKSA9PSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlUmVjZWl2ZXJUeXBlLnVzZXIpe1xuICAgICAgdGhpcy5pc1VzZXJUeXBlID0gdHJ1ZTtcbiAgICAgIHRoaXMuZW1wdHlTdGF0ZVRleHQgPSBsb2NhbGl6ZShcIk5PX1JFQ0lQSUVOVFwiKVxuICAgICAgdGhpcy5zdGF0ZXMgPSBTdGF0ZXMubG9hZGVkXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIHRoaXMuZW1wdHlTdGF0ZVRleHQgPSBsb2NhbGl6ZShcIk5PX1JFQ0lQSUVOVFNcIilcbnRoaXMuc3RhdGVzID0gU3RhdGVzLmxvYWRpbmdcbiAgICAgIHRoaXMuaXNVc2VyVHlwZSA9IGZhbHNlO1xuICAgICAgQ29tZXRDaGF0LmdldE1lc3NhZ2VSZWNlaXB0cyh0aGlzLm1lc3NhZ2UuZ2V0SWQoKSkudGhlbigocmVjZWlwdHMpPT57XG4gICAgICAgIHRoaXMucmVjZWlwdHMgPSByZWNlaXB0cyBhcyBDb21ldENoYXQuTWVzc2FnZVJlY2VpcHRbXTtcbiAgICAgICAgdGhpcy5zdGF0ZXMgPSB0aGlzLnJlY2VpcHRzLmxlbmd0aCA+IDAgPyBTdGF0ZXMubG9hZGVkIDogU3RhdGVzLmVtcHR5XG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnI6Q29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbik9PntcbiAgICAgICAgIHRoaXMuc3RhdGVzID0gU3RhdGVzLmVycm9yXG4gICAgICB9KVxuICAgIH1cblxuICB9XG4gIGNsb3NlQ2xpY2tlZCgpe1xuICAgIGlmKHRoaXMub25DbG9zZSl7XG4gICAgICB0aGlzLm9uQ2xvc2UoKVxuICAgIH1cbiAgfVxuICAgIGNsb3NlQnV0dG9uU3R5bGUgPSAoKT0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhlaWdodDpcIjI0cHhcIixcbiAgICAgICAgd2lkdGg6XCIyNHB4XCIsXG4gICAgICAgIGJvcmRlcjpcIm5vbmVcIixcbiAgICAgICAgYm9yZGVyUmFkaXVzOlwiMFwiLFxuICAgICAgICBiYWNrZ3JvdW5kOlwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgYnV0dG9uSWNvblRpbnQ6dGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRQcmltYXJ5KClcbiAgICAgIH1cbiAgICB9XG4gICAgZ2V0U3VidGl0bGVTdHlsZSgpe1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGV4dEZvbnQ6dGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5zdWJ0aXRsZVRleHRGb250LFxuICAgICAgICB0ZXh0Q29sb3I6dGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5zdWJ0aXRsZVRleHRDb2xvclxuICAgICAgfVxuICAgIH1cbiAgICBnZXRUaXRsZVN0eWxlKCl7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0ZXh0Rm9udDp0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLnRpdGxlVGV4dEZvbnQsXG4gICAgICAgIHRleHRDb2xvcjp0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLnRpdGxlVGV4dENvbG9yXG4gICAgICB9XG4gICAgfVxuICAgIHdyYXBwZXJTdHlsZSA9ICgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhlaWdodDogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5oZWlnaHQsXG4gICAgICAgIHdpZHRoOiB0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLndpZHRoLFxuICAgICAgICBiYWNrZ3JvdW5kOiB0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLmJhY2tncm91bmQsXG4gICAgICAgIGJvcmRlcjogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5ib3JkZXIsXG4gICAgICAgIGJvcmRlclJhZGl1czogdGhpcy5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5ib3JkZXJSYWRpdXNcbiAgICAgIH1cbiAgICB9XG4gICAgZ2V0Q2FwdGlvblN0eWxlID0gKCk9PntcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRleHRGb250OiB0aGlzLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLmNhcHRpb25UZXh0Rm9udCxcbiAgICAgICAgdGV4dENvbG9yOnRoaXMubWVzc2FnZUluZm9ybWF0aW9uU3R5bGUuY2FwdGlvblRleHRDb2xvclxuICAgICAgfVxuICAgIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImNjLW1lc3NhZ2UtaW5mb3JtYXRpb25fX3dyYXBwZXJcIiBbbmdTdHlsZV09XCJ3cmFwcGVyU3R5bGUoKVwiPlxuICA8ZGl2IGNsYXNzPVwiY2MtbWVzc2FnZS1pbmZvcm1hdGlvbl9faGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNjLW1lc3NhZ2UtaW5mb3JtYXRpb25fX3RpdGxlXCI+XG4gICAgICA8Y29tZXRjaGF0LWxhYmVsIFt0ZXh0XT1cInRpdGxlXCIgW2xhYmVsU3R5bGVdPVwiZ2V0VGl0bGVTdHlsZSgpXCIgID48L2NvbWV0Y2hhdC1sYWJlbD5cbiAgICAgPC9kaXY+XG4gICAgIDxkaXYgY2xhc3M9XCJjYy1jbG9zZS1idXR0b25cIj5cbiAgICAgIDxjb21ldGNoYXQtYnV0dG9uIFtpY29uVVJMXT1cImNsb3NlSWNvblVSTFwiIFtidXR0b25TdHlsZV09XCJjbG9zZUJ1dHRvblN0eWxlKClcIiAoY2MtYnV0dG9uLWNsaWNrZWQpPVwiY2xvc2VDbGlja2VkKClcIj5cbiAgICAgIDwvY29tZXRjaGF0LWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjYy1tZXNzYWdlLWluZm9ybWF0aW9uX19idWJibGVcIj5cbiAgICA8Y29tZXRjaGF0LWxhYmVsIGNsYXNzPVwiY2MtbWVzc2FnZS1pbmZvcm1hdGlvbl9fY2FwdGlvblwiIFtsYWJlbFN0eWxlXT1cImdldENhcHRpb25TdHlsZSgpXCIgW3RleHRdPVwibWVzc2FnZVRleHRcIj48L2NvbWV0Y2hhdC1sYWJlbD5cbiAgIDxkaXYgY2xhc3M9XCJjYy1tZXNzYWdlLWluZm9ybWF0aW9uX19idWJibGUtdmlld1wiPlxuICAgIDxjb21ldGNoYXQtZGl2aWRlciBbZGl2aWRlclN0eWxlXT1cImRpdmlkZXJTdHlsZVwiPjwvY29tZXRjaGF0LWRpdmlkZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1YmJsZVZpZXc7IGNvbnRleHQ6eyAkaW1wbGljaXQ6IG1lc3NhZ2UgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxjb21ldGNoYXQtZGl2aWRlciBbZGl2aWRlclN0eWxlXT1cImRpdmlkZXJTdHlsZVwiPjwvY29tZXRjaGF0LWRpdmlkZXI+XG4gICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjYy1tZXNzYWdlLWluZm9ybWF0aW9uX19saXN0LWl0ZW1cIj5cbiAgICA8Y29tZXRjaGF0LWxhYmVsIGNsYXNzPVwiY2MtbWVzc2FnZS1pbmZvcm1hdGlvbl9fY2FwdGlvblwiIFtsYWJlbFN0eWxlXT1cImdldENhcHRpb25TdHlsZSgpXCIgW3RleHRdPVwicmVjZWlwdEluZm9UZXh0XCI+PC9jb21ldGNoYXQtbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNjLW1lc3NhZ2UtaW5mb3JtYXRpb25fX2J1YmJsZS12aWV3XCIgKm5nSWY9XCJpc1VzZXJUeXBlOyBlbHNlIGxpc3RWaWV3XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdEl0ZW1WaWV3OyBlbHNlIHVzZXJMaXN0aXRlbVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdEl0ZW1WaWV3OyBjb250ZXh0OnsgJGltcGxpY2l0OiBtZXNzYWdlIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdXNlckxpc3RpdGVtPlxuICA8ZGl2ICpuZ0lmPVwiIWdldFVzZXJSZWNlaXB0KCk7IGVsc2UgdXNlclJlY2VpcHRWaWV3XCIgY2xhc3M9XCJjYy1lbXB0eS1zdGF0ZS12aWV3XCI+XG4gPGNvbWV0Y2hhdC1sYWJlbCAqbmdJZj1cIiFlbXB0eVN0YXRlVmlldyBlbHNlIGN1c3RvbUVtcHR5Vmlld1wiIFt0ZXh0XT1cImVtcHR5U3RhdGVUZXh0XCIgW2xhYmVsU3R5bGVdPVwiZW1wdHlMYWJlbFN0eWxlXCI+PC9jb21ldGNoYXQtbGFiZWw+XG4gPG5nLXRlbXBsYXRlICNjdXN0b21FbXB0eVZpZXc+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVN0YXRlVmlld1wiPlxuICA8L25nLWNvbnRhaW5lcj5cbiA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICN1c2VyUmVjZWlwdFZpZXc+XG4gICAgPGNvbWV0Y2hhdC1kaXZpZGVyIFtkaXZpZGVyU3R5bGVdPVwiZGl2aWRlclN0eWxlXCI+PC9jb21ldGNoYXQtZGl2aWRlcj5cbiAgICA8Y29tZXRjaGF0LWxpc3QtaXRlbSBbaGlkZVNlcGFyYXRvcl09XCJ0cnVlXCJcbiAgICBbaWRdPVwibWVzc2FnZS5nZXRJZCgpXCJcbiAgICAgW3RpdGxlXT1cIm1lc3NhZ2UuZ2V0UmVjZWl2ZXIoKS5nZXROYW1lKClcIlxuICAgIFtsaXN0SXRlbVN0eWxlXT1cImxpc3RJdGVtU3R5bGVcIiBbYXZhdGFyVVJMXT1cImdldEF2YXRhclVybCgpXCIgW2F2YXRhck5hbWVdPVwibWVzc2FnZS5nZXRSZWNlaXZlcigpLmdldE5hbWUoKVwiPlxuICAgICAgPGRpdiBzbG90PVwic3VidGl0bGVWaWV3XCIgKm5nSWY9XCJzdWJ0aXRsZVZpZXc7ZWxzZSB1c2VyU3VidGl0bGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1YnRpdGxlVmlld1wiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI3VzZXJTdWJ0aXRsZT5cbiAgICA8ZGl2IGNsYXNzPVwiY2MtbGlzdC1pdGVtX19zdWJ0aXRsZS12aWV3IFwiIHNsb3Q9XCJzdWJ0aXRsZVZpZXdcIj5cbiAgPGRpdiBjbGFzcz1cImNjLWxpc3QtaXRlbV9fc3VidGl0bGVcIj5cbiAgIDxkaXYgY2xhc3M9XCJjYy1saXN0LWl0ZW1fX2RlbGl2ZXJlZC1yZWNlaXB0XCIgICpuZ0lmPVwibWVzc2FnZS5nZXREZWxpdmVyZWRBdCgpXCI+XG4gIDxkaXYgY2xhc3M9XCJjYy1saXN0LWl0ZW1fX3JlY2VpcHRcIj5cbiAgIDxjb21ldGNoYXQtcmVjZWlwdCAgW3JlY2VpcHRdPVwiZGVsaXZlcmVkUmVjZWlwdFwiIFtyZWNlaXB0U3R5bGVdPVwicmVjZWlwdFN0eWxlXCIgW2RlbGl2ZXJlZEljb25dPVwiZGVsaXZlcmVkSWNvblwiIFtyZWFkSWNvbl09XCJyZWFkSWNvblwiPjwvY29tZXRjaGF0LXJlY2VpcHQ+XG4gICA8Y29tZXRjaGF0LWxhYmVsIFt0ZXh0XT1cIidEZWxpdmVyZWQnXCIgW2xhYmVsU3R5bGVdPVwiZ2V0U3VidGl0bGVTdHlsZSgpXCI+PC9jb21ldGNoYXQtbGFiZWw+XG4gIDwvZGl2PlxuICAgICA8Y29tZXRjaGF0LWRhdGUgIFt0aW1lc3RhbXBdPVwibWVzc2FnZS5nZXREZWxpdmVyZWRBdCgpXCIgW2RhdGVTdHlsZV09XCJkYXRlU3R5bGVcIj48L2NvbWV0Y2hhdC1kYXRlPlxuICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNjLWxpc3QtaXRlbV9fcmVhZC1yZWNlaXB0XCIgKm5nSWY9XCJtZXNzYWdlLmdldFJlYWRBdCgpXCI+XG4gICAgIDxkaXYgY2xhc3M9XCJjYy1saXN0LWl0ZW1fX3JlY2VpcHRcIj5cbiAgICAgICA8Y29tZXRjaGF0LXJlY2VpcHQgIFtyZWNlaXB0XT1cInJlYWRSZWNlaXB0XCIgW3JlY2VpcHRTdHlsZV09XCJyZWNlaXB0U3R5bGVcIiBbZGVsaXZlcmVkSWNvbl09XCJkZWxpdmVyZWRJY29uXCIgW3JlYWRJY29uXT1cInJlYWRJY29uXCI+PC9jb21ldGNoYXQtcmVjZWlwdD5cbiAgICAgICA8Y29tZXRjaGF0LWxhYmVsIFt0ZXh0XT1cIidSZWFkJ1wiIFtsYWJlbFN0eWxlXT1cImdldFN1YnRpdGxlU3R5bGUoKVwiPjwvY29tZXRjaGF0LWxhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8Y29tZXRjaGF0LWRhdGUgIFt0aW1lc3RhbXBdPVwibWVzc2FnZS5nZXRSZWFkQXQoKVwiIFtkYXRlU3R5bGVdPVwiZGF0ZVN0eWxlXCI+PC9jb21ldGNoYXQtZGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2NvbWV0Y2hhdC1saXN0LWl0ZW0+XG4gICAgPGNvbWV0Y2hhdC1kaXZpZGVyIFtkaXZpZGVyU3R5bGVdPVwiZGl2aWRlclN0eWxlXCI+PC9jb21ldGNoYXQtZGl2aWRlcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIGxpc3QgaXRlbSB2aWV3IC0tPlxuPG5nLXRlbXBsYXRlICNsaXN0Vmlldz5cbjxjb21ldGNoYXQtbGlzdFxuW2xpc3RdPVwicmVjZWlwdHNcIlxuW2xpc3RJdGVtVmlld109XCJsaXN0SXRlbVZpZXcgPyBsaXN0SXRlbVZpZXcgOiBsaXN0SXRlbVwiXG5baGlkZVNlYXJjaF09XCJ0cnVlXCJcbltzdGF0ZV09XCJzdGF0ZXNcIlxuW2VtcHR5U3RhdGVUZXh0XT1cImVtcHR5U3RhdGVUZXh0XCJcbltlcnJvclN0YXRlVGV4dF09XCJlcnJvclN0YXRlVGV4dFwiXG5bbG9hZGluZ0ljb25VUkxdPVwibG9hZGluZ0ljb25VUkxcIlxuW2xvYWRpbmdTdGF0ZVZpZXddPVwibG9hZGluZ1N0YXRlVmlld1wiXG5bZXJyb3JTdGF0ZVZpZXddPVwiZXJyb3JTdGF0ZVZpZXdcIlxuW2VtcHR5U3RhdGVWaWV3XT1cImVtcHR5U3RhdGVWaWV3XCJcblt0aXRsZV09XCInJ1wiXG4+PC9jb21ldGNoYXQtbGlzdD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2xpc3RJdGVtIGxldC1tZXNzYWdlUmVjZWlwdD5cbiAgPGNvbWV0Y2hhdC1kaXZpZGVyIFtkaXZpZGVyU3R5bGVdPVwiZGl2aWRlclN0eWxlXCI+PC9jb21ldGNoYXQtZGl2aWRlcj5cbiAgPGNvbWV0Y2hhdC1saXN0LWl0ZW0gW2hpZGVTZXBhcmF0b3JdPVwidHJ1ZVwiXG4gICBbdGl0bGVdPVwibWVzc2FnZVJlY2VpcHQuZ2V0U2VuZGVyKCkuZ2V0TmFtZSgpXCJcbiAgW2xpc3RJdGVtU3R5bGVdPVwibGlzdEl0ZW1TdHlsZVwiIFthdmF0YXJVUkxdPVwibWVzc2FnZVJlY2VpcHQuZ2V0U2VuZGVyKCk/LmdldEF2YXRhcigpXCIgW2F2YXRhck5hbWVdPVwibWVzc2FnZVJlY2VpcHQuZ2V0U2VuZGVyKCkuZ2V0TmFtZSgpXCI+XG4gICAgPGRpdiBzbG90PVwic3VidGl0bGVWaWV3XCIgKm5nSWY9XCJzdWJ0aXRsZVZpZXc7ZWxzZSB1c2VyU3VidGl0bGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWJ0aXRsZVZpZXdcIj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICN1c2VyU3VidGl0bGU+XG4gIDxkaXYgY2xhc3M9XCJjYy1saXN0LWl0ZW1fX3N1YnRpdGxlLXZpZXcgXCIgc2xvdD1cInN1YnRpdGxlVmlld1wiPlxuPGRpdiBjbGFzcz1cImNjLWxpc3QtaXRlbV9fc3VidGl0bGVcIj5cbiA8ZGl2IGNsYXNzPVwiY2MtbGlzdC1pdGVtX19kZWxpdmVyZWQtcmVjZWlwdFwiICAqbmdJZj1cIm1lc3NhZ2VSZWNlaXB0LmdldERlbGl2ZXJlZEF0KClcIj5cbjxkaXYgY2xhc3M9XCJjYy1saXN0LWl0ZW1fX3JlY2VpcHRcIj5cbiA8Y29tZXRjaGF0LXJlY2VpcHQgIFtyZWNlaXB0XT1cImRlbGl2ZXJlZFJlY2VpcHRcIiBbcmVjZWlwdFN0eWxlXT1cInJlY2VpcHRTdHlsZVwiIFtkZWxpdmVyZWRJY29uXT1cImRlbGl2ZXJlZEljb25cIiBbcmVhZEljb25dPVwicmVhZEljb25cIj48L2NvbWV0Y2hhdC1yZWNlaXB0PlxuIDxjb21ldGNoYXQtbGFiZWwgW3RleHRdPVwiJ0RlbGl2ZXJlZCdcIiAgW2xhYmVsU3R5bGVdPVwiZ2V0U3VidGl0bGVTdHlsZSgpXCI+PC9jb21ldGNoYXQtbGFiZWw+XG48L2Rpdj5cbiAgIDxjb21ldGNoYXQtZGF0ZSAgW3RpbWVzdGFtcF09XCJtZXNzYWdlUmVjZWlwdC5nZXREZWxpdmVyZWRBdCgpXCIgW2RhdGVTdHlsZV09XCJkYXRlU3R5bGVcIiBbcGF0dGVybl09XCJkZWxpdmVyZWRSZWNlaXB0XCIgW2N1c3RvbURhdGVTdHJpbmddPVwiZ2V0RGF0ZVBhdHRlcm4obWVzc2FnZVJlY2VpcHQuZ2V0RGVsaXZlcmVkQXQoKSlcIj48L2NvbWV0Y2hhdC1kYXRlPlxuIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2MtbGlzdC1pdGVtX19yZWFkLXJlY2VpcHRcIiAqbmdJZj1cIm1lc3NhZ2VSZWNlaXB0LmdldFJlYWRBdCgpXCI+XG4gICA8ZGl2IGNsYXNzPVwiY2MtbGlzdC1pdGVtX19yZWNlaXB0XCI+XG4gICAgIDxjb21ldGNoYXQtcmVjZWlwdCAgW3JlY2VpcHRdPVwicmVhZFJlY2VpcHRcIiBbcmVjZWlwdFN0eWxlXT1cInJlY2VpcHRTdHlsZVwiIFtkZWxpdmVyZWRJY29uXT1cImRlbGl2ZXJlZEljb25cIiBbcmVhZEljb25dPVwicmVhZEljb25cIj48L2NvbWV0Y2hhdC1yZWNlaXB0PlxuICAgICA8Y29tZXRjaGF0LWxhYmVsIFt0ZXh0XT1cIidSZWFkJ1wiICBbbGFiZWxTdHlsZV09XCJnZXRTdWJ0aXRsZVN0eWxlKClcIj48L2NvbWV0Y2hhdC1sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8Y29tZXRjaGF0LWRhdGUgW3BhdHRlcm5dPVwicmVhZFJlY2VpcHRcIiBbdGltZXN0YW1wXT1cIm1lc3NhZ2VSZWNlaXB0LmdldFJlYWRBdCgpXCIgW2RhdGVTdHlsZV09XCJkYXRlU3R5bGVcIiBbY3VzdG9tRGF0ZVN0cmluZ109XCJnZXREYXRlUGF0dGVybihtZXNzYWdlUmVjZWlwdC5nZXRSZWFkQXQoKSlcIj48L2NvbWV0Y2hhdC1kYXRlPlxuICA8L2Rpdj5cbjwvZGl2PlxuICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9jb21ldGNoYXQtbGlzdC1pdGVtPlxuICA8Y29tZXRjaGF0LWRpdmlkZXIgW2RpdmlkZXJTdHlsZV09XCJkaXZpZGVyU3R5bGVcIj48L2NvbWV0Y2hhdC1kaXZpZGVyPlxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -0,0 +1,28 @@
1
+ import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from "@angular/core";
2
+ import { CommonModule } from "@angular/common";
3
+ import { CometChatMessageInformationComponent } from "./cometchat-message-information/cometchat-message-information.component";
4
+ import '@cometchat/uikit-elements';
5
+ import { CometChatList } from "../CometChatList/cometchat-list.module";
6
+ import * as i0 from "@angular/core";
7
+ export class CometChatMessageInformation {
8
+ }
9
+ CometChatMessageInformation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatMessageInformation, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ CometChatMessageInformation.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatMessageInformation, declarations: [CometChatMessageInformationComponent], imports: [CommonModule,
11
+ CometChatList], exports: [CometChatMessageInformationComponent] });
12
+ CometChatMessageInformation.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatMessageInformation, imports: [[
13
+ CommonModule,
14
+ CometChatList
15
+ ]] });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatMessageInformation, decorators: [{
17
+ type: NgModule,
18
+ args: [{
19
+ declarations: [CometChatMessageInformationComponent],
20
+ imports: [
21
+ CommonModule,
22
+ CometChatList
23
+ ],
24
+ exports: [CometChatMessageInformationComponent],
25
+ schemas: [CUSTOM_ELEMENTS_SCHEMA]
26
+ }]
27
+ }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9Db21ldENoYXRNZXNzYWdlSW5mb3JtYXRpb24vY29tZXRjaGF0LW1lc3NhZ2UtaW5mb3JtYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHlFQUF5RSxDQUFDO0FBRS9ILE9BQU8sMkJBQTJCLENBQUE7QUFDbEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOztBQVd2RSxNQUFNLE9BQU8sMkJBQTJCOzt5SEFBM0IsMkJBQTJCOzBIQUEzQiwyQkFBMkIsaUJBVHZCLG9DQUFvQyxhQUVqRCxZQUFZO1FBQ1osYUFBYSxhQUdMLG9DQUFvQzswSEFHbkMsMkJBQTJCLFlBUjdCO1lBQ1AsWUFBWTtZQUNaLGFBQWE7U0FFZDs0RkFJVSwyQkFBMkI7a0JBVnZDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsb0NBQW9DLENBQUM7b0JBQ3BELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7cUJBRWQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsb0NBQW9DLENBQUM7b0JBQy9DLE9BQU8sRUFBQyxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvbWV0Q2hhdE1lc3NhZ2VJbmZvcm1hdGlvbkNvbXBvbmVudCB9IGZyb20gXCIuL2NvbWV0Y2hhdC1tZXNzYWdlLWluZm9ybWF0aW9uL2NvbWV0Y2hhdC1tZXNzYWdlLWluZm9ybWF0aW9uLmNvbXBvbmVudFwiO1xuXG5pbXBvcnQgJ0Bjb21ldGNoYXQvdWlraXQtZWxlbWVudHMnXG5pbXBvcnQgeyBDb21ldENoYXRMaXN0IH0gZnJvbSBcIi4uL0NvbWV0Q2hhdExpc3QvY29tZXRjaGF0LWxpc3QubW9kdWxlXCI7XG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtDb21ldENoYXRNZXNzYWdlSW5mb3JtYXRpb25Db21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvbWV0Q2hhdExpc3RcblxuICBdLFxuICBleHBvcnRzOiBbQ29tZXRDaGF0TWVzc2FnZUluZm9ybWF0aW9uQ29tcG9uZW50XSxcbiAgc2NoZW1hczpbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV1cbn0pXG5leHBvcnQgY2xhc3MgQ29tZXRDaGF0TWVzc2FnZUluZm9ybWF0aW9uIHt9Il19