@cometchat/chat-uikit-angular 4.3.36 → 5.0.0-beta.2

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 (648) hide show
  1. package/README.md +41 -14
  2. package/fesm2022/cometchat-chat-uikit-angular.mjs +107859 -0
  3. package/fesm2022/cometchat-chat-uikit-angular.mjs.map +1 -0
  4. package/package.json +14 -21
  5. package/screenshots/sample_app_overview.png +0 -0
  6. package/src/lib/assets/Collaborative-Whiteboard-Preview-Light.png +0 -0
  7. package/src/lib/assets/Collaborative-document-Preview-light.png +0 -0
  8. package/src/lib/assets/Collaborative_Document_Dark.png +0 -0
  9. package/src/lib/assets/Collaborative_Document_Light.png +0 -0
  10. package/src/lib/assets/Collaborative_Whiteboard_Dark.png +0 -0
  11. package/src/lib/assets/Collaborative_Whiteboard_Light.png +0 -0
  12. package/src/lib/assets/Copy.svg +5 -0
  13. package/src/lib/assets/Info.svg +8 -0
  14. package/src/lib/assets/Profile.png +0 -0
  15. package/src/lib/assets/Send.svg +3 -0
  16. package/src/lib/assets/Spinner-Gradient-1.svg +12 -0
  17. package/src/lib/assets/account_circle.svg +8 -0
  18. package/src/lib/assets/activity.svg +10 -0
  19. package/src/lib/assets/add.svg +8 -0
  20. package/src/lib/assets/add_a_photo.svg +8 -0
  21. package/src/lib/assets/add_box.svg +8 -0
  22. package/src/lib/assets/add_call.svg +8 -0
  23. package/src/lib/assets/add_circle.svg +3 -0
  24. package/src/lib/assets/add_circle_fill.svg +3 -0
  25. package/src/lib/assets/add_comment.svg +8 -0
  26. package/src/lib/assets/add_reaction.svg +8 -0
  27. package/src/lib/assets/add_reaction_icon.svg +5 -0
  28. package/src/lib/assets/ai_conversation_summary.svg +3 -0
  29. package/src/lib/assets/ai_fill.svg +4 -0
  30. package/src/lib/assets/ai_suggest_reply.svg +3 -0
  31. package/src/lib/assets/alternate_email.svg +8 -0
  32. package/src/lib/assets/animals_nature.svg +10 -0
  33. package/src/lib/assets/archive.svg +8 -0
  34. package/src/lib/assets/arrow_back.svg +8 -0
  35. package/src/lib/assets/arrow_forward.svg +8 -0
  36. package/src/lib/assets/attach_file.svg +8 -0
  37. package/src/lib/assets/audio_call_button.svg +5 -0
  38. package/src/lib/assets/audio_filter_icon.svg +3 -0
  39. package/src/lib/assets/bar_chart.svg +3 -0
  40. package/src/lib/assets/bedtime.svg +8 -0
  41. package/src/lib/assets/block.svg +8 -0
  42. package/src/lib/assets/bold-format.svg +3 -0
  43. package/src/lib/assets/bookmark.svg +8 -0
  44. package/src/lib/assets/bookmark_add.svg +8 -0
  45. package/src/lib/assets/bullet-list-format.svg +3 -0
  46. package/src/lib/assets/calendar_add_on.svg +8 -0
  47. package/src/lib/assets/calendar_today.svg +8 -0
  48. package/src/lib/assets/call-log-audio.svg +3 -0
  49. package/src/lib/assets/call-log_video.svg +3 -0
  50. package/src/lib/assets/call-logs_empty_state.svg +8 -0
  51. package/src/lib/assets/call-logs_empty_state_dark.svg +8 -0
  52. package/src/lib/assets/call.svg +8 -0
  53. package/src/lib/assets/call_end.svg +8 -0
  54. package/src/lib/assets/call_end_no_fill.svg +3 -0
  55. package/src/lib/assets/call_log.svg +8 -0
  56. package/src/lib/assets/call_made.svg +8 -0
  57. package/src/lib/assets/call_missed.svg +8 -0
  58. package/src/lib/assets/call_missed_outgoing.svg +8 -0
  59. package/src/lib/assets/call_received.svg +8 -0
  60. package/src/lib/assets/cancel.svg +8 -0
  61. package/src/lib/assets/cancel_fill.svg +8 -0
  62. package/src/lib/assets/change_circle.svg +3 -0
  63. package/src/lib/assets/change_scope.png +0 -0
  64. package/src/lib/assets/chat-history.svg +3 -0
  65. package/src/lib/assets/chat.svg +8 -0
  66. package/src/lib/assets/chat_bot.svg +3 -0
  67. package/src/lib/assets/chats_filter_icon.svg +1 -0
  68. package/src/lib/assets/check.svg +8 -0
  69. package/src/lib/assets/check_circle.svg +3 -0
  70. package/src/lib/assets/checkbox_tick.svg +5 -0
  71. package/src/lib/assets/chevron_left.svg +8 -0
  72. package/src/lib/assets/chevron_right.svg +8 -0
  73. package/src/lib/assets/circle.svg +3 -0
  74. package/src/lib/assets/close.svg +8 -0
  75. package/src/lib/assets/code-block-format.svg +3 -0
  76. package/src/lib/assets/code-format.svg +3 -0
  77. package/src/lib/assets/collaborative_document_fill.svg +4 -0
  78. package/src/lib/assets/collaborative_whiteboard.svg +4 -0
  79. package/src/lib/assets/collaborative_whiteboard_fill.svg +4 -0
  80. package/src/lib/assets/collabrative_document.svg +4 -0
  81. package/src/lib/assets/content_copy.svg +8 -0
  82. package/src/lib/assets/conversation_summary.svg +4 -0
  83. package/src/lib/assets/conversations_audio-message.svg +8 -0
  84. package/src/lib/assets/conversations_card-message.svg +8 -0
  85. package/src/lib/assets/conversations_collaborative-document-message.svg +4 -0
  86. package/src/lib/assets/conversations_collaborative-whiteboard-message.svg +5 -0
  87. package/src/lib/assets/conversations_delete.svg +8 -0
  88. package/src/lib/assets/conversations_delivered.svg +3 -0
  89. package/src/lib/assets/conversations_dropdown.svg +3 -0
  90. package/src/lib/assets/conversations_empty_state.svg +20 -0
  91. package/src/lib/assets/conversations_empty_state_dark.svg +20 -0
  92. package/src/lib/assets/conversations_error.svg +16 -0
  93. package/src/lib/assets/conversations_file-message.svg +8 -0
  94. package/src/lib/assets/conversations_form-message.svg +3 -0
  95. package/src/lib/assets/conversations_image-message.svg +8 -0
  96. package/src/lib/assets/conversations_incoming-video-call.svg +8 -0
  97. package/src/lib/assets/conversations_incoming-voice-call.svg +3 -0
  98. package/src/lib/assets/conversations_link.svg +8 -0
  99. package/src/lib/assets/conversations_missed-video-call.svg +8 -0
  100. package/src/lib/assets/conversations_missed-voice-call.svg +3 -0
  101. package/src/lib/assets/conversations_outgoing-video-call.svg +8 -0
  102. package/src/lib/assets/conversations_outgoing-voice-call.svg +4 -0
  103. package/src/lib/assets/conversations_poll-message.svg +3 -0
  104. package/src/lib/assets/conversations_read.svg +3 -0
  105. package/src/lib/assets/conversations_schedular-message.svg +8 -0
  106. package/src/lib/assets/conversations_sent.svg +3 -0
  107. package/src/lib/assets/conversations_sticker-message.svg +4 -0
  108. package/src/lib/assets/conversations_thread.svg +8 -0
  109. package/src/lib/assets/conversations_video-message.svg +8 -0
  110. package/{assets/wait.svg → src/lib/assets/conversations_wait.svg} +0 -0
  111. package/src/lib/assets/copy-text.svg +3 -0
  112. package/src/lib/assets/crop.svg +8 -0
  113. package/src/lib/assets/delete.svg +8 -0
  114. package/src/lib/assets/delete_icon.svg +4 -0
  115. package/src/lib/assets/deliveredIcon.svg +5 -0
  116. package/src/lib/assets/description.svg +8 -0
  117. package/src/lib/assets/document_icon.svg +10 -0
  118. package/src/lib/assets/done_all.svg +8 -0
  119. package/src/lib/assets/download.svg +8 -0
  120. package/src/lib/assets/dropdown-arrow.svg +3 -0
  121. package/src/lib/assets/edit.svg +8 -0
  122. package/src/lib/assets/edit_calendar.svg +8 -0
  123. package/src/lib/assets/edit_icon.svg +5 -0
  124. package/src/lib/assets/edit_square.svg +3 -0
  125. package/src/lib/assets/error.svg +9 -0
  126. package/src/lib/assets/error_icon.svg +3 -0
  127. package/src/lib/assets/error_info.svg +3 -0
  128. package/src/lib/assets/event.svg +8 -0
  129. package/src/lib/assets/favorite.svg +8 -0
  130. package/src/lib/assets/file_filter_icon.svg +4 -0
  131. package/src/lib/assets/file_type_jpg.png +0 -0
  132. package/src/lib/assets/file_type_link.png +0 -0
  133. package/src/lib/assets/file_type_mov.png +0 -0
  134. package/src/lib/assets/file_type_mp3.png +0 -0
  135. package/src/lib/assets/file_type_pdf.png +0 -0
  136. package/src/lib/assets/file_type_ppt.png +0 -0
  137. package/src/lib/assets/file_type_txt.png +0 -0
  138. package/src/lib/assets/file_type_unsupported.png +0 -0
  139. package/src/lib/assets/file_type_word.png +0 -0
  140. package/src/lib/assets/file_type_xlsx.png +0 -0
  141. package/src/lib/assets/file_type_zip.png +0 -0
  142. package/src/lib/assets/filter_list.svg +8 -0
  143. package/src/lib/assets/filter_list_off.svg +8 -0
  144. package/src/lib/assets/flags.svg +5 -0
  145. package/src/lib/assets/flip_camera_ios.svg +8 -0
  146. package/src/lib/assets/food_drink.svg +10 -0
  147. package/src/lib/assets/forward.svg +8 -0
  148. package/src/lib/assets/gif.svg +3 -0
  149. package/src/lib/assets/graphic_eq.svg +3 -0
  150. package/src/lib/assets/group_filter_icon.svg +3 -0
  151. package/src/lib/assets/groups_empty_state.svg +8 -0
  152. package/src/lib/assets/groups_empty_state_dark.svg +8 -0
  153. package/src/lib/assets/help.svg +8 -0
  154. package/src/lib/assets/history.svg +8 -0
  155. package/src/lib/assets/image_placeholder.png +0 -0
  156. package/src/lib/assets/incoming_video.svg +8 -0
  157. package/src/lib/assets/incoming_video_no_fill.svg +4 -0
  158. package/src/lib/assets/info_icon.svg +3 -0
  159. package/src/lib/assets/info_icon_fill.svg +5 -0
  160. package/src/lib/assets/italic-format.svg +3 -0
  161. package/src/lib/assets/keep.svg +8 -0
  162. package/src/lib/assets/keep_off.svg +8 -0
  163. package/src/lib/assets/keyboard.svg +8 -0
  164. package/src/lib/assets/keyboard_arrow_down.svg +8 -0
  165. package/src/lib/assets/keyboard_arrow_up.svg +8 -0
  166. package/src/lib/assets/language.svg +8 -0
  167. package/src/lib/assets/link.svg +8 -0
  168. package/src/lib/assets/link_filter_icon.svg +3 -0
  169. package/src/lib/assets/link_icon_2x.svg +3 -0
  170. package/src/lib/assets/list_error_state_icon.svg +20 -0
  171. package/src/lib/assets/list_error_state_icon_dark.svg +27 -0
  172. package/src/lib/assets/loading.svg +5 -0
  173. package/src/lib/assets/loading_animation.svg +5 -0
  174. package/src/lib/assets/loading_icon.svg +3 -0
  175. package/src/lib/assets/location_on.svg +8 -0
  176. package/src/lib/assets/lock.svg +8 -0
  177. package/src/lib/assets/lock_open.svg +8 -0
  178. package/src/lib/assets/logout.svg +3 -0
  179. package/src/lib/assets/mail.svg +8 -0
  180. package/src/lib/assets/message_blocked.svg +8 -0
  181. package/src/lib/assets/message_delete.svg +8 -0
  182. package/src/lib/assets/messages_filter_icon.svg +1 -0
  183. package/src/lib/assets/mic.svg +3 -0
  184. package/src/lib/assets/mic_fill.svg +8 -0
  185. package/src/lib/assets/mic_off.svg +8 -0
  186. package/src/lib/assets/missedCallIcon.svg +10 -0
  187. package/src/lib/assets/missed_video_call.svg +8 -0
  188. package/src/lib/assets/missed_video_call_no_fill.svg +3 -0
  189. package/src/lib/assets/mood.svg +3 -0
  190. package/src/lib/assets/mood_fill.svg +8 -0
  191. package/src/lib/assets/more_icon.svg +5 -0
  192. package/src/lib/assets/more_vert.svg +8 -0
  193. package/src/lib/assets/near_me.svg +3 -0
  194. package/src/lib/assets/new-chat.svg +3 -0
  195. package/src/lib/assets/no-messages.svg +8 -0
  196. package/src/lib/assets/no_photography.svg +8 -0
  197. package/src/lib/assets/notifications.svg +8 -0
  198. package/src/lib/assets/notifications_off.svg +8 -0
  199. package/src/lib/assets/number-list-format.svg +3 -0
  200. package/src/lib/assets/objects.svg +10 -0
  201. package/src/lib/assets/outgoing_video.svg +8 -0
  202. package/src/lib/assets/outgoing_video_no_fill.svg +4 -0
  203. package/src/lib/assets/pause.svg +8 -0
  204. package/src/lib/assets/person.svg +8 -0
  205. package/src/lib/assets/person_add.svg +8 -0
  206. package/src/lib/assets/phone_in_talk.svg +8 -0
  207. package/src/lib/assets/phone_incoming.svg +3 -0
  208. package/src/lib/assets/phone_incoming_no_fill.svg +3 -0
  209. package/src/lib/assets/phone_missed.svg +8 -0
  210. package/src/lib/assets/phone_missed_no_fill.svg +3 -0
  211. package/src/lib/assets/phone_outgoing.svg +4 -0
  212. package/src/lib/assets/phone_outgoing_no_fill.svg +4 -0
  213. package/src/lib/assets/photo.svg +8 -0
  214. package/src/lib/assets/photo_camera.svg +8 -0
  215. package/src/lib/assets/photo_filter_icon.svg +3 -0
  216. package/src/lib/assets/placeholder.png +0 -0
  217. package/src/lib/assets/play_arrow.svg +8 -0
  218. package/src/lib/assets/play_circle.svg +8 -0
  219. package/src/lib/assets/poll.svg +5 -0
  220. package/src/lib/assets/quote-format.svg +3 -0
  221. package/src/lib/assets/readIcon.svg +5 -0
  222. package/src/lib/assets/rearrange.svg +3 -0
  223. package/src/lib/assets/recording_icon.svg +10 -0
  224. package/src/lib/assets/recording_resume.svg +10 -0
  225. package/src/lib/assets/refresh.svg +8 -0
  226. package/src/lib/assets/reply.svg +8 -0
  227. package/src/lib/assets/reply_all.svg +8 -0
  228. package/src/lib/assets/reply_in_thread.svg +10 -0
  229. package/src/lib/assets/retry.svg +3 -0
  230. package/src/lib/assets/right-arrow.svg +3 -0
  231. package/src/lib/assets/sample-audio.wav +0 -0
  232. package/src/lib/assets/sample-video-thumbnail.svg +7 -0
  233. package/src/lib/assets/sample-video.mp4 +0 -0
  234. package/src/lib/assets/schedule.svg +8 -0
  235. package/src/lib/assets/screen_share.svg +8 -0
  236. package/src/lib/assets/search.svg +8 -0
  237. package/src/lib/assets/search_message_icon.svg +8 -0
  238. package/src/lib/assets/send-message.svg +3 -0
  239. package/src/lib/assets/send_fill.svg +8 -0
  240. package/src/lib/assets/settings.svg +8 -0
  241. package/src/lib/assets/share.svg +8 -0
  242. package/src/lib/assets/shield.svg +3 -0
  243. package/src/lib/assets/smileys_people.svg +10 -0
  244. package/src/lib/assets/star.svg +8 -0
  245. package/src/lib/assets/status_delivered.svg +5 -0
  246. package/src/lib/assets/status_error.svg +16 -0
  247. package/src/lib/assets/status_read.svg +3 -0
  248. package/src/lib/assets/status_sending.svg +5 -0
  249. package/src/lib/assets/status_sent.svg +5 -0
  250. package/src/lib/assets/sticker.svg +3 -0
  251. package/src/lib/assets/sticker_fill.svg +4 -0
  252. package/src/lib/assets/stop-message.svg +3 -0
  253. package/src/lib/assets/stop.svg +8 -0
  254. package/src/lib/assets/stop_circle.svg +8 -0
  255. package/src/lib/assets/stop_screen_share.svg +8 -0
  256. package/src/lib/assets/strike-out-format.svg +3 -0
  257. package/src/lib/assets/subdirectory_arrow_left.svg +8 -0
  258. package/src/lib/assets/subdirectory_arrow_right.svg +8 -0
  259. package/src/lib/assets/sunny.svg +8 -0
  260. package/src/lib/assets/symbols.svg +13 -0
  261. package/src/lib/assets/thumb_down.svg +8 -0
  262. package/src/lib/assets/thumb_up.svg +8 -0
  263. package/src/lib/assets/toast_check_circle.svg +3 -0
  264. package/src/lib/assets/toast_error.svg +3 -0
  265. package/src/lib/assets/toast_info.svg +3 -0
  266. package/src/lib/assets/toast_warning.svg +3 -0
  267. package/src/lib/assets/toolbar-toggle.svg +3 -0
  268. package/src/lib/assets/tooltip-side.svg +5 -0
  269. package/src/lib/assets/tooltip.svg +5 -0
  270. package/src/lib/assets/translate.svg +3 -0
  271. package/src/lib/assets/travel_places.svg +10 -0
  272. package/src/lib/assets/ulr-format.svg +3 -0
  273. package/src/lib/assets/underline-format.svg +3 -0
  274. package/src/lib/assets/unread_filter_icon.svg +7 -0
  275. package/src/lib/assets/upload.svg +3 -0
  276. package/src/lib/assets/user_empty.svg +8 -0
  277. package/src/lib/assets/user_empty_dark.svg +8 -0
  278. package/src/lib/assets/video_call.svg +8 -0
  279. package/src/lib/assets/video_call_button.svg +5 -0
  280. package/src/lib/assets/video_filter_icon.svg +3 -0
  281. package/src/lib/assets/videocam.svg +8 -0
  282. package/src/lib/assets/videocam_off.svg +8 -0
  283. package/src/lib/assets/visibility_off.svg +3 -0
  284. package/src/lib/assets/volume_down.svg +8 -0
  285. package/src/lib/assets/volume_mute.svg +8 -0
  286. package/src/lib/assets/volume_off.svg +8 -0
  287. package/src/lib/assets/volume_up.svg +8 -0
  288. package/src/lib/assets/warning.svg +8 -0
  289. package/src/lib/assets/warning_neutral.svg +3 -0
  290. package/src/lib/assets/wifi.svg +8 -0
  291. package/src/lib/assets/zoom_in_map.svg +8 -0
  292. package/src/lib/assets/zoom_out_map.svg +8 -0
  293. package/styles/accessibility.css +148 -0
  294. package/styles/css-variables.css +547 -0
  295. package/styles/fonts/Roboto/LICENSE.txt +202 -0
  296. package/styles/fonts/Roboto/Roboto-Black.ttf +0 -0
  297. package/styles/fonts/Roboto/Roboto-BlackItalic.ttf +0 -0
  298. package/styles/fonts/Roboto/Roboto-Bold.ttf +0 -0
  299. package/styles/fonts/Roboto/Roboto-BoldItalic.ttf +0 -0
  300. package/styles/fonts/Roboto/Roboto-Italic.ttf +0 -0
  301. package/styles/fonts/Roboto/Roboto-Light.ttf +0 -0
  302. package/styles/fonts/Roboto/Roboto-LightItalic.ttf +0 -0
  303. package/styles/fonts/Roboto/Roboto-Medium.ttf +0 -0
  304. package/styles/fonts/Roboto/Roboto-MediumItalic.ttf +0 -0
  305. package/styles/fonts/Roboto/Roboto-Regular.ttf +0 -0
  306. package/styles/fonts/Roboto/Roboto-Thin.ttf +0 -0
  307. package/styles/fonts/Roboto/Roboto-ThinItalic.ttf +0 -0
  308. package/styles/mention-styles.css +190 -0
  309. package/styles/rich-text-styles.css +310 -0
  310. package/types/cometchat-chat-uikit-angular.d.ts +34636 -0
  311. package/AI/AIAssistBot/AIAssistBot.d.ts +0 -7
  312. package/AI/AIAssistBot/AIAssistBotDecorator.d.ts +0 -11
  313. package/AI/AIConversationStarter/AIConversationStarter.d.ts +0 -7
  314. package/AI/AIConversationStarter/AIConversationStarterDecorator.d.ts +0 -9
  315. package/AI/AIConversationSummary/AIConversationSummary.d.ts +0 -7
  316. package/AI/AIConversationSummary/AIConversationSummaryDecorator.d.ts +0 -10
  317. package/AI/AISmartReplies/AISmartReplies.d.ts +0 -7
  318. package/AI/AISmartReplies/AISmartRepliesDecorator.d.ts +0 -9
  319. package/Calls/CallingExtension.d.ts +0 -6
  320. package/Calls/CallingExtensionDecorator.d.ts +0 -16
  321. package/Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component.d.ts +0 -79
  322. package/Calls/CometChatCallButtons/cometchat-call-buttons.module.d.ts +0 -11
  323. package/Calls/CometChatCallLogDetails/cometchat-call-log-details/cometchat-call-log-details.component.d.ts +0 -136
  324. package/Calls/CometChatCallLogDetails/cometchat-call-log-details.module.d.ts +0 -14
  325. package/Calls/CometChatCallLogHistory/cometchat-call-log-history/cometchat-call-log-history.component.d.ts +0 -112
  326. package/Calls/CometChatCallLogHistory/cometchat-call-log-history.module.d.ts +0 -10
  327. package/Calls/CometChatCallLogParticipants/cometchat-call-log-participants/cometchat-call-log-participants.component.d.ts +0 -77
  328. package/Calls/CometChatCallLogParticipants/cometchat-call-log-participants.module.d.ts +0 -10
  329. package/Calls/CometChatCallLogRecordings/cometchat-call-log-recordings/cometchat-call-log-recordings.component.d.ts +0 -91
  330. package/Calls/CometChatCallLogRecordings/cometchat-call-log-recordings.module.d.ts +0 -10
  331. package/Calls/CometChatCallLogs/cometchat-call-logs/cometchat-call-logs.component.d.ts +0 -134
  332. package/Calls/CometChatCallLogs/cometchat-call-logs.module.d.ts +0 -12
  333. package/Calls/CometChatCallLogsWithDetails/cometchat-call-logs-with-details/cometchat-call-logs-with-details.component.d.ts +0 -54
  334. package/Calls/CometChatCallLogsWithDetails/cometchat-call-logs-with-details.module.d.ts +0 -12
  335. package/Calls/CometChatIncomingCall/cometchat-incoming-call/cometchat-incoming-call.component.d.ts +0 -81
  336. package/Calls/CometChatIncomingCall/cometchat-incoming-call.module.d.ts +0 -11
  337. package/Calls/CometChatOngoingCall/cometchat-ongoing-call/cometchat-ongoing-call.component.d.ts +0 -38
  338. package/Calls/CometChatOngoingCall/cometchat-ongoing-call.module.d.ts +0 -9
  339. package/Calls/CometChatOutgoingCall/cometchat-outgoing-call/cometchat-outgoing-call.component.d.ts +0 -57
  340. package/Calls/CometChatOutgoingCall/cometchat-outgoing-call.module.d.ts +0 -10
  341. package/CometChatAddMembers/cometchat-add-members/cometchat-add-members.component.d.ts +0 -117
  342. package/CometChatAddMembers/cometchat-add-members.module.d.ts +0 -12
  343. package/CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component.d.ts +0 -152
  344. package/CometChatBannedMembers/cometchat-banned-members.module.d.ts +0 -13
  345. package/CometChatContacts/cometchat-contacts/cometchat-contacts.component.d.ts +0 -66
  346. package/CometChatContacts/cometchat-contacts.module.d.ts +0 -12
  347. package/CometChatConversations/cometchat-conversations/cometchat-conversations.component.d.ts +0 -387
  348. package/CometChatConversations/cometchat-conversations.module.d.ts +0 -10
  349. package/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.d.ts +0 -98
  350. package/CometChatConversationsWithMessages/cometchat-conversations-with-messages.module.d.ts +0 -11
  351. package/CometChatDetails/cometchat-details/cometchat-details.component.d.ts +0 -164
  352. package/CometChatDetails/cometchat-details.module.d.ts +0 -12
  353. package/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.d.ts +0 -162
  354. package/CometChatGroupMembers/cometchat-group-members.module.d.ts +0 -13
  355. package/CometChatGroups/cometchat-groups/cometchat-groups.component.d.ts +0 -150
  356. package/CometChatGroups/cometchat-groups.module.d.ts +0 -10
  357. package/CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component.d.ts +0 -103
  358. package/CometChatGroupsWithMessages/cometchat-groups-with-messages.module.d.ts +0 -11
  359. package/CometChatList/cometchat-list.component.d.ts +0 -91
  360. package/CometChatList/cometchat-list.module.d.ts +0 -10
  361. package/CometChatMessageBubble/cometchat-message-bubble/cometchat-message-bubble.component.d.ts +0 -63
  362. package/CometChatMessageBubble/cometchat-message-bubble.module.d.ts +0 -8
  363. package/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.d.ts +0 -326
  364. package/CometChatMessageComposer/cometchat-message-composer.module.d.ts +0 -11
  365. package/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.d.ts +0 -99
  366. package/CometChatMessageHeader/cometchat-message-header.module.d.ts +0 -9
  367. package/CometChatMessageInformation/cometchat-message-information/cometchat-message-information.component.d.ts +0 -99
  368. package/CometChatMessageInformation/cometchat-message-information.module.d.ts +0 -10
  369. package/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.d.ts +0 -819
  370. package/CometChatMessageList/cometchat-message-list.module.d.ts +0 -13
  371. package/CometChatMessages/cometchat-messages/cometchat-messages.component.d.ts +0 -149
  372. package/CometChatMessages/cometchat-messages.module.d.ts +0 -16
  373. package/CometChatTheme.service.d.ts +0 -7
  374. package/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.d.ts +0 -85
  375. package/CometChatThreadedMessages/cometchat-threaded-messages.module.d.ts +0 -12
  376. package/CometChatTransferOwnership/cometchat-transfer-ownership/cometchat-transfer-ownership.component.d.ts +0 -88
  377. package/CometChatTransferOwnership/cometchat-transfer-ownership.module.d.ts +0 -10
  378. package/CometChatUserMemberWrapper/cometchat-user-member-wrapper.component.d.ts +0 -41
  379. package/CometChatUserMemberWrapper/cometchat-user-member-wrapper.module.d.ts +0 -11
  380. package/CometChatUsers/cometchat-users/cometchat-users.component.d.ts +0 -194
  381. package/CometChatUsers/cometchat-users.module.d.ts +0 -11
  382. package/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.d.ts +0 -72
  383. package/CometChatUsersWithMessages/cometchat-users-with-messages.module.d.ts +0 -10
  384. package/Extensions/CollaborativeDocument/CollaborativeDocumentExtension.d.ts +0 -5
  385. package/Extensions/CollaborativeDocument/CollaborativeDocumentExtensionDecorator.d.ts +0 -14
  386. package/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtension.d.ts +0 -5
  387. package/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtensionDecorator.d.ts +0 -14
  388. package/Extensions/ImageModeration/ImageModerationExtension.d.ts +0 -5
  389. package/Extensions/ImageModeration/ImageModerationExtensionDecorator.d.ts +0 -6
  390. package/Extensions/LinkPreviewExtension/LinkPreviewExtension.d.ts +0 -5
  391. package/Extensions/LinkPreviewExtension/LinkPreviewExtensionDecorator.d.ts +0 -6
  392. package/Extensions/MessageTranslation/MessageTranslationExtension.d.ts +0 -5
  393. package/Extensions/MessageTranslation/MessageTranslationExtensionDecorator.d.ts +0 -9
  394. package/Extensions/PollsExtension/PollsExtension.d.ts +0 -5
  395. package/Extensions/PollsExtension/PollsExtensionDecorator.d.ts +0 -14
  396. package/Extensions/SmartReplies/SmartRepliesExtension.d.ts +0 -5
  397. package/Extensions/SmartReplies/SmartRepliesExtensionDecorator.d.ts +0 -16
  398. package/Extensions/Stickers/StickersExtension.d.ts +0 -5
  399. package/Extensions/Stickers/StickersExtensionDecorator.d.ts +0 -28
  400. package/Extensions/TextModerator/TextModeratorExtension.d.ts +0 -6
  401. package/Extensions/TextModerator/TextModeratorExtensionDecorator.d.ts +0 -8
  402. package/Extensions/ThumbnailGeneration/ThumbnailGenerationExtension.d.ts +0 -5
  403. package/Extensions/ThumbnailGeneration/ThumbnailGenerationExtensionDecorator.d.ts +0 -6
  404. package/Screenshots/overview_cometchat_screens.png +0 -0
  405. package/Shared/CometChatUIkit/CometChatUIKit.d.ts +0 -49
  406. package/Shared/Framework/AIExtensionDataSource.d.ts +0 -5
  407. package/Shared/Framework/ChatConfigurator.d.ts +0 -8
  408. package/Shared/Framework/DataSource.d.ts +0 -40
  409. package/Shared/Framework/DataSourceDecorator.d.ts +0 -43
  410. package/Shared/Framework/ExtensionDataSource.d.ts +0 -3
  411. package/Shared/Utils/CallDetailUtils.d.ts +0 -8
  412. package/Shared/Utils/CallLogUtils.d.ts +0 -8
  413. package/Shared/Utils/ComeChatException.d.ts +0 -1
  414. package/Shared/Utils/MessageUtils.d.ts +0 -151
  415. package/Shared/Utils/UtilityFunctions.d.ts +0 -6
  416. package/Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list/aiassist-bot-message-list.component.d.ts +0 -71
  417. package/Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list.module.d.ts +0 -11
  418. package/Shared/Views/CometChatTabs/cometchat-tabs/cometchat-tabs.component.d.ts +0 -82
  419. package/Shared/Views/CometChatTabs/cometchat-tabs.module.d.ts +0 -8
  420. package/assets/.gitkeep +0 -0
  421. package/assets/Audio-Call.svg +0 -11
  422. package/assets/Audio-Call2x.svg +0 -11
  423. package/assets/Copy.svg +0 -17
  424. package/assets/Grid-layout.svg +0 -1
  425. package/assets/Heart.svg +0 -11
  426. package/assets/Imagemoderation.svg +0 -14
  427. package/assets/Info.svg +0 -13
  428. package/assets/InfoIcon.svg +0 -13
  429. package/assets/InfoSimpleIcon.svg +0 -4
  430. package/assets/Locked.svg +0 -10
  431. package/assets/More@2x.svg +0 -9
  432. package/assets/Plus.svg +0 -13
  433. package/assets/Private.svg +0 -10
  434. package/assets/Reactionsicon.svg +0 -9
  435. package/assets/Reply@2x.svg +0 -9
  436. package/assets/Send.svg +0 -12
  437. package/assets/Spinner.svg +0 -15
  438. package/assets/Stickers.svg +0 -16
  439. package/assets/Stipop.svg +0 -9
  440. package/assets/Video-call.svg +0 -12
  441. package/assets/Video-call2x.svg +0 -12
  442. package/assets/activity.svg +0 -22
  443. package/assets/addreaction.svg +0 -9
  444. package/assets/ai-bot.svg +0 -24
  445. package/assets/ai-empty.svg +0 -22
  446. package/assets/ai-error.svg +0 -21
  447. package/assets/animals.svg +0 -15
  448. package/assets/attachment-file.svg +0 -14
  449. package/assets/audio-file.svg +0 -12
  450. package/assets/back.png +0 -0
  451. package/assets/backbutton.svg +0 -12
  452. package/assets/call.svg +0 -1
  453. package/assets/chats.svg +0 -1
  454. package/assets/checkmark.svg +0 -11
  455. package/assets/close.svg +0 -12
  456. package/assets/close2x.svg +0 -12
  457. package/assets/collaborativedocument.svg +0 -13
  458. package/assets/collaborativewhiteboard.svg +0 -12
  459. package/assets/create-button.svg +0 -12
  460. package/assets/declaration.d.ts +0 -3
  461. package/assets/delete.svg +0 -7
  462. package/assets/deleteicon.svg +0 -15
  463. package/assets/down-arrow.svg +0 -1
  464. package/assets/download.svg +0 -13
  465. package/assets/editicon.svg +0 -14
  466. package/assets/emoji.svg +0 -2693
  467. package/assets/empty-slot.svg +0 -14
  468. package/assets/file-upload.svg +0 -2693
  469. package/assets/flags.svg +0 -12
  470. package/assets/food.svg +0 -26
  471. package/assets/greaterThanIcon.svg +0 -3
  472. package/assets/group.svg +0 -40
  473. package/assets/heart-reaction.png +0 -0
  474. package/assets/heart.png +0 -0
  475. package/assets/image.svg +0 -2693
  476. package/assets/incomingAudioCallIconUrl.svg +0 -5
  477. package/assets/incomingVideoCallIconUrl.svg +0 -6
  478. package/assets/incomingcall.wav +0 -0
  479. package/assets/increase-size.svg +0 -6
  480. package/assets/location.svg +0 -2693
  481. package/assets/message-delivered.png +0 -0
  482. package/assets/message-delivered.svg +0 -5
  483. package/assets/message-read.png +0 -0
  484. package/assets/message-read.svg +0 -5
  485. package/assets/message-sent.png +0 -0
  486. package/assets/message-sent.svg +0 -3
  487. package/assets/mic.svg +0 -11
  488. package/assets/missedAudioCallIconUrl.svg +0 -5
  489. package/assets/missedVideoCallIconUrl.svg +0 -6
  490. package/assets/moreicon.svg +0 -9
  491. package/assets/new-chat.svg +0 -13
  492. package/assets/new-message-icon.svg +0 -1
  493. package/assets/objects.svg +0 -13
  494. package/assets/open-thread.svg +0 -11
  495. package/assets/outgoingAudioCallIconUrl.svg +0 -5
  496. package/assets/outgoingVideoCallIconUrl.svg +0 -6
  497. package/assets/password-protected-group.svg +0 -3
  498. package/assets/pause-icon.svg +0 -14
  499. package/assets/photolibrary.svg +0 -11
  500. package/assets/placeholder.png +0 -0
  501. package/assets/play-icon.svg +0 -18
  502. package/assets/plus-rotated.svg +0 -13
  503. package/assets/polls.svg +0 -14
  504. package/assets/privacy.svg +0 -4
  505. package/assets/private-group.svg +0 -9
  506. package/assets/public.svg +0 -3
  507. package/assets/record-icon.svg +0 -8
  508. package/assets/reduce-size.svg +0 -6
  509. package/assets/right-arrow.svg +0 -6
  510. package/assets/search.png +0 -0
  511. package/assets/search.svg +0 -4
  512. package/assets/side-arrow.svg +0 -1
  513. package/assets/smileys.svg +0 -16
  514. package/assets/start-chat.svg +0 -1
  515. package/assets/start-conversation.svg +0 -46
  516. package/assets/stop.svg +0 -1
  517. package/assets/symbols.svg +0 -16
  518. package/assets/thread-arrow.svg +0 -1
  519. package/assets/thread-icon.svg +0 -38
  520. package/assets/threadIndicatorIcon.svg +0 -11
  521. package/assets/threadicon.svg +0 -14
  522. package/assets/translation.svg +0 -16
  523. package/assets/travel.svg +0 -18
  524. package/assets/unsafe-content.svg +0 -23
  525. package/assets/user.svg +0 -31
  526. package/assets/video-upload.svg +0 -2693
  527. package/assets/video.svg +0 -12
  528. package/assets/wait.png +0 -0
  529. package/assets/warning-small.png +0 -0
  530. package/assets/warning-small.svg +0 -5
  531. package/cometchat-chat-uikit-angular.d.ts +0 -5
  532. package/esm2020/AI/AIAssistBot/AIAssistBot.mjs +0 -21
  533. package/esm2020/AI/AIAssistBot/AIAssistBotDecorator.mjs +0 -68
  534. package/esm2020/AI/AIConversationStarter/AIConversationStarter.mjs +0 -21
  535. package/esm2020/AI/AIConversationStarter/AIConversationStarterDecorator.mjs +0 -31
  536. package/esm2020/AI/AIConversationSummary/AIConversationSummary.mjs +0 -21
  537. package/esm2020/AI/AIConversationSummary/AIConversationSummaryDecorator.mjs +0 -32
  538. package/esm2020/AI/AISmartReplies/AISmartReplies.mjs +0 -21
  539. package/esm2020/AI/AISmartReplies/AISmartRepliesDecorator.mjs +0 -31
  540. package/esm2020/Calls/CallingExtension.mjs +0 -14
  541. package/esm2020/Calls/CallingExtensionDecorator.mjs +0 -127
  542. package/esm2020/Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component.mjs +0 -409
  543. package/esm2020/Calls/CometChatCallButtons/cometchat-call-buttons.module.mjs +0 -32
  544. package/esm2020/Calls/CometChatCallLogDetails/cometchat-call-log-details/cometchat-call-log-details.component.mjs +0 -373
  545. package/esm2020/Calls/CometChatCallLogDetails/cometchat-call-log-details.module.mjs +0 -47
  546. package/esm2020/Calls/CometChatCallLogHistory/cometchat-call-log-history/cometchat-call-log-history.component.mjs +0 -352
  547. package/esm2020/Calls/CometChatCallLogHistory/cometchat-call-log-history.module.mjs +0 -21
  548. package/esm2020/Calls/CometChatCallLogParticipants/cometchat-call-log-participants/cometchat-call-log-participants.component.mjs +0 -189
  549. package/esm2020/Calls/CometChatCallLogParticipants/cometchat-call-log-participants.module.mjs +0 -21
  550. package/esm2020/Calls/CometChatCallLogRecordings/cometchat-call-log-recordings/cometchat-call-log-recordings.component.mjs +0 -246
  551. package/esm2020/Calls/CometChatCallLogRecordings/cometchat-call-log-recordings.module.mjs +0 -21
  552. package/esm2020/Calls/CometChatCallLogs/cometchat-call-logs/cometchat-call-logs.component.mjs +0 -592
  553. package/esm2020/Calls/CometChatCallLogs/cometchat-call-logs.module.mjs +0 -36
  554. package/esm2020/Calls/CometChatCallLogsWithDetails/cometchat-call-logs-with-details/cometchat-call-logs-with-details.component.mjs +0 -198
  555. package/esm2020/Calls/CometChatCallLogsWithDetails/cometchat-call-logs-with-details.module.mjs +0 -39
  556. package/esm2020/Calls/CometChatIncomingCall/cometchat-incoming-call/cometchat-incoming-call.component.mjs +0 -464
  557. package/esm2020/Calls/CometChatIncomingCall/cometchat-incoming-call.module.mjs +0 -32
  558. package/esm2020/Calls/CometChatOngoingCall/cometchat-ongoing-call/cometchat-ongoing-call.component.mjs +0 -176
  559. package/esm2020/Calls/CometChatOngoingCall/cometchat-ongoing-call.module.mjs +0 -27
  560. package/esm2020/Calls/CometChatOutgoingCall/cometchat-outgoing-call/cometchat-outgoing-call.component.mjs +0 -188
  561. package/esm2020/Calls/CometChatOutgoingCall/cometchat-outgoing-call.module.mjs +0 -28
  562. package/esm2020/CometChatAddMembers/cometchat-add-members/cometchat-add-members.component.mjs +0 -374
  563. package/esm2020/CometChatAddMembers/cometchat-add-members.module.mjs +0 -23
  564. package/esm2020/CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component.mjs +0 -530
  565. package/esm2020/CometChatBannedMembers/cometchat-banned-members.module.mjs +0 -24
  566. package/esm2020/CometChatContacts/cometchat-contacts/cometchat-contacts.component.mjs +0 -274
  567. package/esm2020/CometChatContacts/cometchat-contacts.module.mjs +0 -23
  568. package/esm2020/CometChatConversations/cometchat-conversations/cometchat-conversations.component.mjs +0 -1837
  569. package/esm2020/CometChatConversations/cometchat-conversations.module.mjs +0 -28
  570. package/esm2020/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.mjs +0 -413
  571. package/esm2020/CometChatConversationsWithMessages/cometchat-conversations-with-messages.module.mjs +0 -35
  572. package/esm2020/CometChatDetails/cometchat-details/cometchat-details.component.mjs +0 -789
  573. package/esm2020/CometChatDetails/cometchat-details.module.mjs +0 -27
  574. package/esm2020/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.mjs +0 -807
  575. package/esm2020/CometChatGroupMembers/cometchat-group-members.module.mjs +0 -24
  576. package/esm2020/CometChatGroups/cometchat-groups/cometchat-groups.component.mjs +0 -681
  577. package/esm2020/CometChatGroups/cometchat-groups.module.mjs +0 -28
  578. package/esm2020/CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component.mjs +0 -499
  579. package/esm2020/CometChatGroupsWithMessages/cometchat-groups-with-messages.module.mjs +0 -35
  580. package/esm2020/CometChatList/cometchat-list.component.mjs +0 -225
  581. package/esm2020/CometChatList/cometchat-list.module.mjs +0 -28
  582. package/esm2020/CometChatMessageBubble/cometchat-message-bubble/cometchat-message-bubble.component.mjs +0 -166
  583. package/esm2020/CometChatMessageBubble/cometchat-message-bubble.module.mjs +0 -23
  584. package/esm2020/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.mjs +0 -1976
  585. package/esm2020/CometChatMessageComposer/cometchat-message-composer.module.mjs +0 -22
  586. package/esm2020/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.mjs +0 -467
  587. package/esm2020/CometChatMessageHeader/cometchat-message-header.module.mjs +0 -26
  588. package/esm2020/CometChatMessageInformation/cometchat-message-information/cometchat-message-information.component.mjs +0 -308
  589. package/esm2020/CometChatMessageInformation/cometchat-message-information.module.mjs +0 -28
  590. package/esm2020/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.mjs +0 -4360
  591. package/esm2020/CometChatMessageList/cometchat-message-list.module.mjs +0 -42
  592. package/esm2020/CometChatMessages/cometchat-messages/cometchat-messages.component.mjs +0 -449
  593. package/esm2020/CometChatMessages/cometchat-messages.module.mjs +0 -52
  594. package/esm2020/CometChatTheme.service.mjs +0 -17
  595. package/esm2020/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.mjs +0 -372
  596. package/esm2020/CometChatThreadedMessages/cometchat-threaded-messages.module.mjs +0 -36
  597. package/esm2020/CometChatTransferOwnership/cometchat-transfer-ownership/cometchat-transfer-ownership.component.mjs +0 -336
  598. package/esm2020/CometChatTransferOwnership/cometchat-transfer-ownership.module.mjs +0 -21
  599. package/esm2020/CometChatUserMemberWrapper/cometchat-user-member-wrapper.component.mjs +0 -75
  600. package/esm2020/CometChatUserMemberWrapper/cometchat-user-member-wrapper.module.mjs +0 -21
  601. package/esm2020/CometChatUsers/cometchat-users/cometchat-users.component.mjs +0 -788
  602. package/esm2020/CometChatUsers/cometchat-users.module.mjs +0 -32
  603. package/esm2020/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.mjs +0 -205
  604. package/esm2020/CometChatUsersWithMessages/cometchat-users-with-messages.module.mjs +0 -31
  605. package/esm2020/Extensions/CollaborativeDocument/CollaborativeDocumentExtension.mjs +0 -12
  606. package/esm2020/Extensions/CollaborativeDocument/CollaborativeDocumentExtensionDecorator.mjs +0 -93
  607. package/esm2020/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtension.mjs +0 -12
  608. package/esm2020/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtensionDecorator.mjs +0 -94
  609. package/esm2020/Extensions/ImageModeration/ImageModerationExtension.mjs +0 -12
  610. package/esm2020/Extensions/ImageModeration/ImageModerationExtensionDecorator.mjs +0 -10
  611. package/esm2020/Extensions/LinkPreviewExtension/LinkPreviewExtension.mjs +0 -12
  612. package/esm2020/Extensions/LinkPreviewExtension/LinkPreviewExtensionDecorator.mjs +0 -10
  613. package/esm2020/Extensions/MessageTranslation/MessageTranslationExtension.mjs +0 -12
  614. package/esm2020/Extensions/MessageTranslation/MessageTranslationExtensionDecorator.mjs +0 -31
  615. package/esm2020/Extensions/PollsExtension/PollsExtension.mjs +0 -12
  616. package/esm2020/Extensions/PollsExtension/PollsExtensionDecorator.mjs +0 -77
  617. package/esm2020/Extensions/SmartReplies/SmartRepliesExtension.mjs +0 -12
  618. package/esm2020/Extensions/SmartReplies/SmartRepliesExtensionDecorator.mjs +0 -115
  619. package/esm2020/Extensions/Stickers/StickersExtension.mjs +0 -12
  620. package/esm2020/Extensions/Stickers/StickersExtensionDecorator.mjs +0 -125
  621. package/esm2020/Extensions/TextModerator/TextModeratorExtension.mjs +0 -22
  622. package/esm2020/Extensions/TextModerator/TextModeratorExtensionDecorator.mjs +0 -87
  623. package/esm2020/Extensions/ThumbnailGeneration/ThumbnailGenerationExtension.mjs +0 -12
  624. package/esm2020/Extensions/ThumbnailGeneration/ThumbnailGenerationExtensionDecorator.mjs +0 -10
  625. package/esm2020/Shared/CometChatUIkit/CometChatUIKit.mjs +0 -495
  626. package/esm2020/Shared/Framework/AIExtensionDataSource.mjs +0 -3
  627. package/esm2020/Shared/Framework/ChatConfigurator.mjs +0 -23
  628. package/esm2020/Shared/Framework/DataSource.mjs +0 -3
  629. package/esm2020/Shared/Framework/DataSourceDecorator.mjs +0 -113
  630. package/esm2020/Shared/Framework/ExtensionDataSource.mjs +0 -4
  631. package/esm2020/Shared/Utils/CallDetailUtils.mjs +0 -72
  632. package/esm2020/Shared/Utils/CallLogUtils.mjs +0 -122
  633. package/esm2020/Shared/Utils/ComeChatException.mjs +0 -10
  634. package/esm2020/Shared/Utils/MessageUtils.mjs +0 -682
  635. package/esm2020/Shared/Utils/UtilityFunctions.mjs +0 -36
  636. package/esm2020/Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list/aiassist-bot-message-list.component.mjs +0 -290
  637. package/esm2020/Shared/Views/AIAssistBotMessageList/aiassist-bot-message-list.module.mjs +0 -22
  638. package/esm2020/Shared/Views/CometChatTabs/cometchat-tabs/cometchat-tabs.component.mjs +0 -124
  639. package/esm2020/Shared/Views/CometChatTabs/cometchat-tabs.module.mjs +0 -23
  640. package/esm2020/cometchat-chat-uikit-angular.mjs +0 -5
  641. package/esm2020/public-api.mjs +0 -115
  642. package/examples/sample-app/README.md +0 -50
  643. package/fesm2015/cometchat-chat-uikit-angular.mjs +0 -22649
  644. package/fesm2015/cometchat-chat-uikit-angular.mjs.map +0 -1
  645. package/fesm2020/cometchat-chat-uikit-angular.mjs +0 -22538
  646. package/fesm2020/cometchat-chat-uikit-angular.mjs.map +0 -1
  647. package/public-api.d.ts +0 -106
  648. /package/{assets/message-privately.svg → src/lib/assets/send_message_privately.svg} +0 -0
@@ -1,28 +0,0 @@
1
- import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from "@angular/core";
2
- import { CommonModule } from "@angular/common";
3
- import { CometChatConversationsComponent } from "./cometchat-conversations/cometchat-conversations.component";
4
- import { CometChatList } from "../CometChatList/cometchat-list.module";
5
- import '@cometchat/uikit-elements';
6
- import * as i0 from "@angular/core";
7
- export class CometChatConversations {
8
- }
9
- CometChatConversations.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatConversations, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- CometChatConversations.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatConversations, declarations: [CometChatConversationsComponent], imports: [CommonModule,
11
- CometChatList], exports: [CometChatConversationsComponent] });
12
- CometChatConversations.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatConversations, imports: [[
13
- CommonModule,
14
- CometChatList
15
- ]] });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatConversations, decorators: [{
17
- type: NgModule,
18
- args: [{
19
- declarations: [CometChatConversationsComponent],
20
- imports: [
21
- CommonModule,
22
- CometChatList
23
- ],
24
- exports: [CometChatConversationsComponent],
25
- schemas: [CUSTOM_ELEMENTS_SCHEMA]
26
- }]
27
- }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LWNvbnZlcnNhdGlvbnMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hhdC11aWtpdC1hbmd1bGFyL3NyYy9Db21ldENoYXRDb252ZXJzYXRpb25zL2NvbWV0Y2hhdC1jb252ZXJzYXRpb25zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM5RyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdkUsT0FBTywyQkFBMkIsQ0FBQTs7QUFVbEMsTUFBTSxPQUFPLHNCQUFzQjs7b0hBQXRCLHNCQUFzQjtxSEFBdEIsc0JBQXNCLGlCQVJsQiwrQkFBK0IsYUFFNUMsWUFBWTtRQUNaLGFBQWEsYUFFTCwrQkFBK0I7cUhBRzlCLHNCQUFzQixZQVB4QjtZQUNQLFlBQVk7WUFDWixhQUFhO1NBQ2Q7NEZBSVUsc0JBQXNCO2tCQVRsQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLCtCQUErQixDQUFDO29CQUMvQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3FCQUNkO29CQUNELE9BQU8sRUFBRSxDQUFDLCtCQUErQixDQUFDO29CQUMxQyxPQUFPLEVBQUMsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDb21ldENoYXRDb252ZXJzYXRpb25zQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tZXRjaGF0LWNvbnZlcnNhdGlvbnMvY29tZXRjaGF0LWNvbnZlcnNhdGlvbnMuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDb21ldENoYXRMaXN0IH0gZnJvbSBcIi4uL0NvbWV0Q2hhdExpc3QvY29tZXRjaGF0LWxpc3QubW9kdWxlXCI7XG5pbXBvcnQgJ0Bjb21ldGNoYXQvdWlraXQtZWxlbWVudHMnXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtDb21ldENoYXRDb252ZXJzYXRpb25zQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBDb21ldENoYXRMaXN0XG4gIF0sXG4gIGV4cG9ydHM6IFtDb21ldENoYXRDb252ZXJzYXRpb25zQ29tcG9uZW50XSxcbiAgc2NoZW1hczpbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV1cbn0pXG5leHBvcnQgY2xhc3MgQ29tZXRDaGF0Q29udmVyc2F0aW9ucyB7fVxuIl19
@@ -1,413 +0,0 @@
1
- import { Component, Input, ChangeDetectionStrategy } from "@angular/core";
2
- import { CometChat } from "@cometchat/chat-sdk-javascript";
3
- import { WithMessagesStyle, MessagesConfiguration, ConversationsConfiguration, ContactsConfiguration } from '@cometchat/uikit-shared';
4
- import { CometChatTheme, fontHelper, localize, CometChatGroupEvents, CometChatUIKitConstants, CometChatConversationEvents, CometChatUIEvents } from '@cometchat/uikit-resources';
5
- import '@cometchat/uikit-elements';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../../CometChatTheme.service";
8
- import * as i2 from "../../CometChatConversations/cometchat-conversations/cometchat-conversations.component";
9
- import * as i3 from "../../CometChatMessages/cometchat-messages/cometchat-messages.component";
10
- import * as i4 from "../../CometChatContacts/cometchat-contacts/cometchat-contacts.component";
11
- import * as i5 from "@angular/common";
12
- /**
13
- *
14
- * CometChatConversationsWithMessagesComponent is a wrapper component for CometChatMessagesComponent and CometChatConversations component to show chats and messages in one screen
15
- *
16
- * @version 1.0.0
17
- * @author CometChatTeam
18
- * @copyright © 2022 CometChat Inc.
19
- *
20
- */
21
- export class CometChatConversationsWithMessagesComponent {
22
- constructor(elementRef, ref, themeService) {
23
- this.elementRef = elementRef;
24
- this.ref = ref;
25
- this.themeService = themeService;
26
- this.isMobileView = false;
27
- this.messageText = localize("NO_CHATS_SELECTED");
28
- this.conversationsWithMessagesStyle = {};
29
- this.messagesConfiguration = new MessagesConfiguration({});
30
- this.conversationConfiguration = new ConversationsConfiguration({});
31
- this.onError = (error) => {
32
- console.log(error);
33
- };
34
- this.startNewConversationIconURL = "assets/new-chat.svg";
35
- this.hideStartNewConversation = false;
36
- this.StartConversationConfiguration = new ContactsConfiguration({});
37
- this.theme = new CometChatTheme({});
38
- /**
39
- * Properties for internal use
40
- */
41
- this.showStartConversation = false;
42
- this.labelStyle = {
43
- background: "transparent",
44
- textFont: "700 22px Inter",
45
- textColor: "rgba(20, 20, 20, 0.33)"
46
- };
47
- this.hideSearch = true;
48
- this.startConversationButtonStyle = {};
49
- this.sideBarStyle = {};
50
- this.groupListenerId = "withmessages_group_" + new Date().getTime();
51
- this.onBack = () => {
52
- this.user = null;
53
- this.group = null;
54
- this.activeConversation = null;
55
- };
56
- this.onContactClicked = (user, group) => {
57
- this.showStartConversation = false;
58
- if (user) {
59
- this.group = null;
60
- this.user = user;
61
- this.ref.detectChanges();
62
- }
63
- if (group) {
64
- this.user = null;
65
- this.group = group;
66
- this.ref.detectChanges();
67
- }
68
- };
69
- this.onItemClick = (conversation) => {
70
- this.activeConversation = conversation;
71
- this.showStartConversation = false;
72
- if (conversation.getConversationType() && conversation.getConversationType() == CometChatUIKitConstants.MessageReceiverType.user) {
73
- this.group = null;
74
- this.user = conversation.getConversationWith();
75
- this.ref.detectChanges();
76
- }
77
- else if (conversation.getConversationType() && conversation.getConversationType() == CometChatUIKitConstants.MessageReceiverType.group) {
78
- this.user = null;
79
- this.group = conversation.getConversationWith();
80
- this.ref.detectChanges();
81
- }
82
- };
83
- this.closeStartConversation = () => {
84
- if (this.StartConversationConfiguration.onClose) {
85
- this.StartConversationConfiguration.onClose();
86
- }
87
- this.showStartConversation = false;
88
- };
89
- this.emptyMessageStyle = () => {
90
- return {
91
- background: this.conversationsWithMessagesStyle.background || this.themeService.theme.palette.getBackground(),
92
- height: this.conversationsWithMessagesStyle.height,
93
- width: `calc(${this.conversationsWithMessagesStyle.width} - 280px)`,
94
- border: "none",
95
- borderRadius: this.conversationsWithMessagesStyle.borderRadius,
96
- };
97
- };
98
- this.chatsWrapperStyles = () => {
99
- return {
100
- height: this.conversationsWithMessagesStyle.height,
101
- width: this.conversationsWithMessagesStyle.width,
102
- border: this.conversationsWithMessagesStyle.border,
103
- borderRadius: this.conversationsWithMessagesStyle.borderRadius,
104
- background: this.conversationsWithMessagesStyle.background || this.themeService.theme.palette.getBackground(),
105
- position: 'relative'
106
- };
107
- };
108
- this.contactsWrapperStyles = () => {
109
- return {
110
- background: this.StartConversationConfiguration.contactsStyle.background || this.themeService.theme.palette.getBackground(),
111
- };
112
- };
113
- }
114
- ngOnChanges(changes) {
115
- if (changes["isMobileView"]) {
116
- if (this.isMobileView) {
117
- this.messagesConfiguration.messageHeaderConfiguration.hideBackButton = false;
118
- if (!this.messagesConfiguration.detailsConfiguration.detailsStyle.padding) {
119
- this.messagesConfiguration.detailsConfiguration.detailsStyle.padding = "0 8px";
120
- }
121
- if (!this.messagesConfiguration.detailsConfiguration.addMembersConfiguration.addMembersStyle.padding) {
122
- this.messagesConfiguration.detailsConfiguration.addMembersConfiguration.addMembersStyle.padding = "0 8px";
123
- }
124
- if (!this.messagesConfiguration.detailsConfiguration.bannedMembersConfiguration.bannedMembersStyle.padding) {
125
- this.messagesConfiguration.detailsConfiguration.bannedMembersConfiguration.bannedMembersStyle.padding = "0 8px";
126
- }
127
- if (!this.messagesConfiguration.detailsConfiguration.bannedMembersConfiguration.bannedMembersStyle.padding) {
128
- this.messagesConfiguration.detailsConfiguration.bannedMembersConfiguration.bannedMembersStyle.padding = "0 8px";
129
- }
130
- this.messagesConfiguration.messageHeaderConfiguration = { ...this.messagesConfiguration.messageHeaderConfiguration };
131
- this.StartConversationConfiguration.contactsStyle.padding = "0 8px";
132
- this.StartConversationConfiguration = { ...this.StartConversationConfiguration };
133
- this.messagesConfiguration = { ...this.messagesConfiguration };
134
- }
135
- else if (!this.isMobileView) {
136
- this.messagesConfiguration.messageListConfiguration.messageInformationConfiguration.messageInformationStyle.height = "500px";
137
- this.messagesConfiguration.messageListConfiguration.messageInformationConfiguration.messageInformationStyle.width = "500px";
138
- this.messagesConfiguration.messageHeaderConfiguration.hideBackButton = true;
139
- if (!this.messagesConfiguration.detailsConfiguration.detailsStyle.padding) {
140
- this.messagesConfiguration.detailsConfiguration.detailsStyle.padding = "0 100px";
141
- }
142
- if (!this.messagesConfiguration.detailsConfiguration.addMembersConfiguration.addMembersStyle.padding) {
143
- this.messagesConfiguration.detailsConfiguration.addMembersConfiguration.addMembersStyle.padding = "0 100px";
144
- }
145
- if (!this.messagesConfiguration.detailsConfiguration.bannedMembersConfiguration.bannedMembersStyle.padding) {
146
- this.messagesConfiguration.detailsConfiguration.bannedMembersConfiguration.bannedMembersStyle.padding = "0 100px";
147
- }
148
- if (!this.messagesConfiguration.detailsConfiguration.bannedMembersConfiguration.bannedMembersStyle.padding) {
149
- this.messagesConfiguration.detailsConfiguration.bannedMembersConfiguration.bannedMembersStyle.padding = "0 100px";
150
- }
151
- this.StartConversationConfiguration.contactsStyle.padding = "0 100px";
152
- this.StartConversationConfiguration = { ...this.StartConversationConfiguration };
153
- this.messagesConfiguration.messageHeaderConfiguration = { ...this.messagesConfiguration.messageHeaderConfiguration };
154
- this.messagesConfiguration = { ...this.messagesConfiguration };
155
- }
156
- setTimeout(() => {
157
- this.updateBackdropHeight();
158
- }, 100);
159
- }
160
- if ((changes["user"] && changes["user"]?.currentValue) || (changes["group"] && changes["group"]?.currentValue)) {
161
- this.setActiveChat();
162
- }
163
- }
164
- triggerStartConversation() {
165
- this.showStartConversation = true;
166
- }
167
- removeChatOnGroupAction(leftUser, message) {
168
- const isSameUser = this.loggedInUser?.getUid() === leftUser.getUid();
169
- const actionForGroup = message.getActionFor() instanceof CometChat.Group;
170
- if (isSameUser && this.activeConversation && this.activeConversation.getConversationWith() instanceof CometChat.Group) {
171
- let group = this.activeConversation.getConversationWith();
172
- if (actionForGroup) {
173
- let actionOnGroup = message.getActionFor();
174
- if (actionOnGroup.getGuid() === group.getGuid()) {
175
- this.activeConversation = null;
176
- this.user = null;
177
- this.group = null;
178
- this.ref.detectChanges();
179
- }
180
- }
181
- }
182
- }
183
- attachGroupListeners() {
184
- CometChat.addGroupListener(this.groupListenerId, new CometChat.GroupListener({
185
- onGroupMemberKicked: (message, kickedUser, kickedBy, kickedFrom) => {
186
- this.removeChatOnGroupAction(kickedUser, message);
187
- },
188
- onGroupMemberBanned: (message, bannedUser, bannedBy, bannedFrom) => {
189
- this.removeChatOnGroupAction(bannedUser, message);
190
- },
191
- }));
192
- }
193
- setWithMessagesStyle() {
194
- let defaultStyle = new WithMessagesStyle({
195
- width: "100%",
196
- height: "100%",
197
- background: this.themeService.theme.palette.getBackground(),
198
- borderRadius: "none",
199
- border: `1px solid ${this.themeService.theme.palette.getAccent200()}`,
200
- messageTextColor: this.themeService.theme.palette.getAccent600(),
201
- messageTextFont: fontHelper(this.themeService.theme.typography.title1),
202
- });
203
- this.conversationsWithMessagesStyle = {
204
- ...defaultStyle,
205
- ...this.conversationsWithMessagesStyle
206
- };
207
- this.labelStyle.textFont = this.conversationsWithMessagesStyle.messageTextFont;
208
- this.labelStyle.textColor = this.conversationsWithMessagesStyle.messageTextColor;
209
- this.messagesConfiguration.messagesStyle.border = this.messagesConfiguration.messagesStyle.border ?? "none";
210
- this.conversationConfiguration.conversationsStyle.border = this.conversationConfiguration.conversationsStyle.border ?? "none";
211
- if (!this.conversationConfiguration?.conversationsStyle?.border || this.conversationConfiguration?.conversationsStyle?.border == "none") {
212
- this.sideBarStyle = { borderRight: this.conversationsWithMessagesStyle.border };
213
- }
214
- }
215
- ngAfterViewInit() {
216
- this.updateBackdropHeight();
217
- }
218
- updateBackdropHeight() {
219
- let divHeight = this.elementRef.nativeElement.offsetHeight;
220
- let divWidth = this.elementRef.nativeElement.offsetWidth;
221
- if (divHeight === 0 || divWidth === 0) {
222
- const rect = this.elementRef.nativeElement.getBoundingClientRect();
223
- divHeight = rect.height;
224
- divWidth = rect.width;
225
- }
226
- let backdropStyle = {
227
- height: divHeight + "px",
228
- width: divWidth + "px",
229
- background: "rgba(0, 0, 0, 0.5)",
230
- position: "fixed"
231
- };
232
- if (this.isMobileView) {
233
- this.messagesConfiguration.detailsConfiguration.transferOwnershipConfiguration.transferOwnershipStyle.height = (divHeight - 30) + "px";
234
- this.messagesConfiguration.detailsConfiguration.transferOwnershipConfiguration.transferOwnershipStyle.width = divWidth + "px";
235
- this.messagesConfiguration.messageListConfiguration.messageInformationConfiguration.messageInformationStyle.height = divHeight + "px";
236
- this.messagesConfiguration.messageListConfiguration.messageInformationConfiguration.messageInformationStyle.width = divWidth + "px";
237
- }
238
- else {
239
- this.messagesConfiguration.detailsConfiguration.transferOwnershipConfiguration.transferOwnershipStyle.height = "650px";
240
- this.messagesConfiguration.detailsConfiguration.transferOwnershipConfiguration.transferOwnershipStyle.width = "360px";
241
- }
242
- this.messagesConfiguration.messageListConfiguration.backdropStyle = this.messagesConfiguration.messageListConfiguration.backdropStyle || backdropStyle;
243
- this.conversationConfiguration.backdropStyle = this.conversationConfiguration.backdropStyle || backdropStyle;
244
- this.messagesConfiguration.detailsConfiguration.backdropStyle = this.messagesConfiguration.detailsConfiguration.backdropStyle || backdropStyle;
245
- this.messagesConfiguration.messageComposerConfiguration.backdropStyle = this.messagesConfiguration.messageComposerConfiguration.backdropStyle || backdropStyle;
246
- this.messagesConfiguration.detailsConfiguration.backdropStyle = this.messagesConfiguration.detailsConfiguration.backdropStyle || backdropStyle;
247
- this.messagesConfiguration.detailsConfiguration.groupMembersConfiguration.backdropStyle = this.messagesConfiguration.detailsConfiguration.groupMembersConfiguration.backdropStyle || backdropStyle;
248
- this.ref.detectChanges();
249
- }
250
- setActiveChat() {
251
- let type = this.user ? CometChatUIKitConstants.MessageReceiverType.user : CometChatUIKitConstants.MessageReceiverType.group;
252
- this.activeConversation = null;
253
- let conversationWith = this.user?.getUid() || this.group?.getGuid();
254
- CometChat.getConversation(conversationWith, type).then((conversation) => {
255
- this.activeConversation = conversation;
256
- this.ref.detectChanges();
257
- })
258
- .catch((error) => {
259
- if (this.onError) {
260
- this.onError(error);
261
- }
262
- });
263
- }
264
- ngOnInit() {
265
- this.StartConversationConfiguration.usersConfiguration.usersStyle.border = "none";
266
- this.StartConversationConfiguration.groupsConfiguration.groupsStyle.border = "none";
267
- this.startConversationButtonStyle = {
268
- height: "24px",
269
- width: "24px",
270
- border: "none",
271
- borderRadius: '0',
272
- background: "transparent",
273
- buttonIconTint: this.themeService.theme.palette.getPrimary()
274
- };
275
- this.StartConversationConfiguration = { ...this.StartConversationConfiguration };
276
- this.setWithMessagesStyle();
277
- if (!this.messagesConfiguration.messageHeaderConfiguration.onBack) {
278
- this.messagesConfiguration.messageHeaderConfiguration.onBack = this.onBack;
279
- }
280
- CometChat.getLoggedinUser()
281
- .then((user) => {
282
- this.loggedInUser = user;
283
- this.attachGroupListeners();
284
- this.subscribeToEvents();
285
- })
286
- .catch((error) => {
287
- if (this.onError) {
288
- this.onError(error);
289
- }
290
- });
291
- }
292
- ngOnDestroy() {
293
- this.unsubscribeToEvents();
294
- CometChat.removeGroupListener(this.groupListenerId);
295
- }
296
- // subscribe to global events
297
- subscribeToEvents() {
298
- this.ccConversationDeleted = CometChatConversationEvents.ccConversationDeleted.subscribe((conversation) => {
299
- this.removeActiveChatList(conversation); //to make m messages section empty after deleting conversation from conversationlist
300
- });
301
- this.ccGroupDeleted = CometChatGroupEvents.ccGroupDeleted.subscribe((group) => {
302
- if (this.group && group.getGuid() == this.group.getGuid()) {
303
- this.group = null;
304
- this.activeConversation = null;
305
- this.ref.detectChanges();
306
- }
307
- });
308
- this.ccGroupMemberAdded = CometChatGroupEvents.ccGroupMemberAdded.subscribe((item) => {
309
- if (this.group && this.group.getGuid() == item?.userAddedIn.getGuid()) {
310
- this.group = item?.userAddedIn;
311
- this.ref.detectChanges();
312
- }
313
- });
314
- this.ccGroupMemberBanned = CometChatGroupEvents.ccGroupMemberBanned.subscribe((item) => {
315
- if (this.group && this.group.getGuid() == item?.kickedFrom.getGuid()) {
316
- this.group = item?.kickedFrom;
317
- this.ref.detectChanges();
318
- }
319
- });
320
- this.ccGroupMemberJoined = CometChatGroupEvents.ccGroupMemberJoined.subscribe((item) => {
321
- if (this.group && this.group.getGuid() == item?.joinedGroup.getGuid()) {
322
- this.group = item?.joinedGroup;
323
- this.ref.detectChanges();
324
- }
325
- });
326
- this.ccGroupMemberKicked = CometChatGroupEvents.ccGroupMemberKicked.subscribe((item) => {
327
- if (this.group && this.group.getGuid() == item?.kickedFrom.getGuid()) {
328
- this.group = item?.kickedFrom;
329
- this.ref.detectChanges();
330
- }
331
- });
332
- this.ccOwnershipChanged = CometChatGroupEvents.ccOwnershipChanged.subscribe((item) => {
333
- if (this.group && this.group.getGuid() == item?.group.getGuid()) {
334
- this.group = item?.group;
335
- this.activeConversation?.setConversationWith(this.group);
336
- this.ref.detectChanges();
337
- }
338
- });
339
- this.ccGroupLeft = CometChatGroupEvents.ccGroupLeft.subscribe((item) => {
340
- if (this.group && this.group.getGuid() == item?.leftGroup.getGuid() && this.loggedInUser?.getUid() == item?.userLeft?.getUid()) {
341
- this.group = null;
342
- this.activeConversation = null;
343
- this.ref.detectChanges();
344
- }
345
- });
346
- // open chat and mark as active conversation
347
- this.ccOpenChat = CometChatUIEvents.ccOpenChat.subscribe((item) => {
348
- this.user = item.user ? item.user : null;
349
- this.group = item.group ? item.group : null;
350
- this.setActiveChat();
351
- });
352
- }
353
- // unsubscribe to subscribed events.
354
- unsubscribeToEvents() {
355
- this.ccConversationDeleted?.unsubscribe();
356
- this.ccGroupDeleted?.unsubscribe();
357
- this.ccGroupMemberAdded?.unsubscribe();
358
- this.ccGroupMemberBanned?.unsubscribe();
359
- this.ccGroupMemberJoined?.unsubscribe();
360
- this.ccGroupMemberKicked?.unsubscribe();
361
- this.ccOwnershipChanged?.unsubscribe();
362
- this.ccGroupLeft?.unsubscribe();
363
- this.ccOpenChat?.unsubscribe();
364
- }
365
- /**
366
- * remove active chat screen after deleting the conversation.
367
- * @param {CometChat.Conversation} conversation
368
- */
369
- removeActiveChatList(conversation) {
370
- const conversationType = conversation.getConversationType();
371
- const conversationWith = conversation.getConversationWith();
372
- if (conversationType === CometChatUIKitConstants.MessageReceiverType.user && this.user && this.user.getUid() === conversationWith.getUid()) {
373
- this.user = null;
374
- this.ref.detectChanges();
375
- }
376
- else if (conversationType === CometChatUIKitConstants.MessageReceiverType.group && this.group && this.group.getGuid() === conversationWith.getGuid()) {
377
- this.group = null;
378
- this.ref.detectChanges();
379
- }
380
- else {
381
- return;
382
- }
383
- }
384
- }
385
- CometChatConversationsWithMessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatConversationsWithMessagesComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.CometChatThemeService }], target: i0.ɵɵFactoryTarget.Component });
386
- CometChatConversationsWithMessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatConversationsWithMessagesComponent, selector: "cometchat-conversations-with-messages", inputs: { user: "user", group: "group", isMobileView: "isMobileView", messageText: "messageText", conversationsWithMessagesStyle: "conversationsWithMessagesStyle", messagesConfiguration: "messagesConfiguration", conversationConfiguration: "conversationConfiguration", onError: "onError", startNewConversationIconURL: "startNewConversationIconURL", hideStartNewConversation: "hideStartNewConversation", StartConversationConfiguration: "StartConversationConfiguration" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"cc-with-messages__wrapper\" [ngStyle]=\"chatsWrapperStyles()\">\n <div class=\"cc-with-messages__sidebar\" [ngClass]=\"{mobile : isMobileView}\"\n [ngStyle]=\"sideBarStyle\">\n <cometchat-conversations #conversationRef\n [activeConversation]=\"activeConversation\"\n [onItemClick]=\"conversationConfiguration.onItemClick || onItemClick\"\n [conversationsStyle]=\"conversationConfiguration.conversationsStyle\"\n [statusIndicatorStyle]=\"conversationConfiguration?.statusIndicatorStyle\"\n [avatarStyle]=\"conversationConfiguration?.avatarStyle!\"\n [subtitleView]=\"conversationConfiguration.subtitleView\"\n [options]=\"conversationConfiguration.options\"\n [disableUsersPresence]=\"conversationConfiguration.disableUsersPresence\"\n [disableReceipt]=\"conversationConfiguration.disableReceipt\"\n [hideReceipt]=\"conversationConfiguration.hideReceipt\"\n [disableTyping]=\"conversationConfiguration.disableTyping\"\n [deliveredIcon]=\"conversationConfiguration.deliveredIcon\"\n [readIcon]=\"conversationConfiguration.readIcon\"\n [waitIcon]=\"conversationConfiguration.waitIcon\"\n [errorIcon]=\"conversationConfiguration.errorIcon\"\n [datePattern]=\"conversationConfiguration.datePattern\"\n [receiptStyle]=\"conversationConfiguration.receiptStyle\"\n [sentIcon]=\"conversationConfiguration.sentIcon\"\n [privateGroupIcon]=\"conversationConfiguration.privateGroupIcon\"\n [protectedGroupIcon]=\"conversationConfiguration.protectedGroupIcon\"\n [passwordGroupIcon]=\"conversationConfiguration.passwordGroupIcon\"\n [customSoundForMessages]=\"conversationConfiguration.customSoundForMessages\"\n [conversationsRequestBuilder]=\"conversationConfiguration.conversationsRequestBuilder\"\n [emptyStateView]=\"conversationConfiguration.emptyStateView\"\n [onSelect]=\"conversationConfiguration.onSelect\"\n [loadingIconURL]=\"conversationConfiguration.loadingIconURL\"\n [errorStateView]=\"conversationConfiguration.errorStateView\"\n [loadingStateView]=\"conversationConfiguration.loadingStateView\"\n [titleAlignment]=\"conversationConfiguration.titleAlignment\"\n [listItemView]=\"conversationConfiguration.listItemView\"\n [menu]=\"conversationConfiguration.menu || startConversationButton\"\n [hideSeparator]=\"conversationConfiguration.hideSeparator\"\n [hideError]=\"conversationConfiguration.hideError\"\n [selectionMode]=\"conversationConfiguration.selectionMode\"\n [disableSoundForMessages]=\"conversationConfiguration.disableSoundForMessages\"\n [deleteConversationDialogStyle]=\"conversationConfiguration.deleteConversationDialogStyle\"\n [badgeStyle]=\"conversationConfiguration.badgeStyle\"\n [dateStyle]=\"conversationConfiguration.dateStyle\"\n [listItemStyle]=\"conversationConfiguration.listItemStyle\"\n [backdropStyle]=\"conversationConfiguration.backdropStyle\"\n [textFormatters]=\"conversationConfiguration?.textFormatters\"\n [disableMentions]=\"conversationConfiguration.disableMentions\"></cometchat-conversations>\n </div>\n <div class=\"cc-with-messages__main\" [ngClass]=\"{mobile : isMobileView}\"\n *ngIf=\"!showStartConversation && (user || group)\">\n <!--Message List Screen-->\n <cometchat-messages #messagesRef [user]=\"user!\" [group]=\"group!\"\n [messageHeaderConfiguration]=\"messagesConfiguration.messageHeaderConfiguration\"\n [messageListConfiguration]=\"messagesConfiguration.messageListConfiguration\"\n [messageComposerConfiguration]=\"messagesConfiguration.messageComposerConfiguration\"\n [messagesStyle]=\"messagesConfiguration.messagesStyle\"\n [customSoundForIncomingMessages]=\"messagesConfiguration.customSoundForIncomingMessages\"\n [customSoundForOutgoingMessages]=\"messagesConfiguration.customSoundForOutgoingMessages\"\n [detailsConfiguration]=\"messagesConfiguration.detailsConfiguration\"\n [disableSoundForMessages]=\"messagesConfiguration.disableSoundForMessages\"\n [disableTyping]=\"messagesConfiguration.disableTyping\"\n [hideMessageComposer]=\"messagesConfiguration.hideMessageComposer\"\n [hideMessageHeader]=\"messagesConfiguration.hideMessageHeader\"\n [messageComposerView]=\"messagesConfiguration.messageComposerView\"\n [messageHeaderView]=\"messagesConfiguration.messageHeaderView\"\n [messageListView]=\"messagesConfiguration.messageListView\"\n [hideDetails]=\"messagesConfiguration.hideDetails!\"\n [threadedMessageConfiguration]=\"messagesConfiguration.threadedMessageConfiguration\">\n </cometchat-messages>\n <!--Message List Screen ENDS-->\n </div>\n <div class=\"cc-with-messages__start-conversation\"\n [ngStyle]=\"contactsWrapperStyles()\"\n [ngClass]=\"{mobile : isMobileView}\" *ngIf=\"showStartConversation\">\n\n <cometchat-contacts [onItemClick]=\"onContactClicked\"\n [usersConfiguration]=\"StartConversationConfiguration?.usersConfiguration!\"\n [groupsConfiguration]=\"StartConversationConfiguration?.groupsConfiguration!\"\n [closeIconURL]=\"StartConversationConfiguration?.closeIconURL!\"\n [contactsStyle]=\"StartConversationConfiguration?.contactsStyle!\"\n [selectionMode]=\"StartConversationConfiguration?.selectionMode!\"\n [onClose]=\"closeStartConversation\"\n [tabVisibility]=\"StartConversationConfiguration?.tabVisibility!\"\n [selectionLimit]=\"StartConversationConfiguration?.selectionLimit!\"\n [tabs]=\"StartConversationConfiguration?.tabs!\"\n [onSubmitButtonClick]=\"StartConversationConfiguration?.onSubmitButtonClick!\"\n [hideSubmitButton]=\"StartConversationConfiguration?.hideSubmitButton!\"></cometchat-contacts>\n </div>\n <div class=\"cc-decorator__message--empty\"\n *ngIf=\"!user && !group && !showStartConversation\"\n [ngStyle]=\"emptyMessageStyle()\">\n <cometchat-label [text]=\"messageText\"\n [labelStyle]=\"labelStyle\"></cometchat-label>\n </div>\n <ng-template #startConversationButton>\n <cometchat-button *ngIf=\"!hideStartNewConversation\"\n [iconURL]=\"startNewConversationIconURL\"\n [buttonStyle]=\"startConversationButtonStyle\"\n (cc-button-clicked)=\"triggerStartConversation()\"></cometchat-button>\n\n </ng-template>\n", styles: [".cc-with-messages__wrapper{display:flex;height:100%;width:100%;box-sizing:border-box;overflow:hidden}.cc-with-messages__sidebar{width:280px;height:100%;position:relative}.cc-with-messages__main,.cc-with-messages__start-conversation{width:calc(100% - 280px);height:100%}.mobile{width:100%!important;height:100%;position:absolute}.cc-decorator__message--empty{display:flex;justify-content:center;align-items:center}\n"], components: [{ type: i2.CometChatConversationsComponent, selector: "cometchat-conversations", inputs: ["subtitleView", "title", "options", "searchPlaceHolder", "disableUsersPresence", "disableReceipt", "hideReceipt", "disableTyping", "deliveredIcon", "readIcon", "errorIcon", "datePattern", "onError", "sentIcon", "privateGroupIcon", "protectedGroupIcon", "passwordGroupIcon", "customSoundForMessages", "activeConversation", "searchIconURL", "hideSearch", "conversationsRequestBuilder", "emptyStateView", "onSelect", "loadingIconURL", "errorStateView", "loadingStateView", "emptyStateText", "errorStateText", "titleAlignment", "listItemView", "menu", "hideSeparator", "searchPlaceholder", "hideError", "selectionMode", "disableSoundForMessages", "confirmDialogTitle", "confirmButtonText", "cancelButtonText", "confirmDialogMessage", "onItemClick", "deleteConversationDialogStyle", "backdropStyle", "badgeStyle", "dateStyle", "conversationsStyle", "listItemStyle", "statusIndicatorStyle", "typingIndicatorText", "threadIndicatorText", "avatarStyle", "receiptStyle", "loggedInUser", "disableMentions", "textFormatters"] }, { type: i3.CometChatMessagesComponent, selector: "cometchat-messages", inputs: ["user", "group", "currentAskAIBot", "hideMessageComposer", "disableTyping", "messageHeaderConfiguration", "messageListConfiguration", "messageComposerConfiguration", "threadedMessageConfiguration", "detailsConfiguration", "customSoundForIncomingMessages", "customSoundForOutgoingMessages", "disableSoundForMessages", "messagesStyle", "messageHeaderView", "messageComposerView", "messageListView", "hideMessageHeader", "hideDetails", "auxiliaryMenu"] }, { type: i4.CometChatContactsComponent, selector: "cometchat-contacts", inputs: ["title", "usersTabTitle", "groupsTabTitle", "usersConfiguration", "groupsConfiguration", "onSubmitButtonClick", "closeIconURL", "contactsStyle", "selectionMode", "onClose", "onItemClick", "tabVisibility", "selectionLimit", "tabs", "hideSubmitButton", "submitButtonText"] }], directives: [{ type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
387
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatConversationsWithMessagesComponent, decorators: [{
388
- type: Component,
389
- args: [{ selector: "cometchat-conversations-with-messages", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cc-with-messages__wrapper\" [ngStyle]=\"chatsWrapperStyles()\">\n <div class=\"cc-with-messages__sidebar\" [ngClass]=\"{mobile : isMobileView}\"\n [ngStyle]=\"sideBarStyle\">\n <cometchat-conversations #conversationRef\n [activeConversation]=\"activeConversation\"\n [onItemClick]=\"conversationConfiguration.onItemClick || onItemClick\"\n [conversationsStyle]=\"conversationConfiguration.conversationsStyle\"\n [statusIndicatorStyle]=\"conversationConfiguration?.statusIndicatorStyle\"\n [avatarStyle]=\"conversationConfiguration?.avatarStyle!\"\n [subtitleView]=\"conversationConfiguration.subtitleView\"\n [options]=\"conversationConfiguration.options\"\n [disableUsersPresence]=\"conversationConfiguration.disableUsersPresence\"\n [disableReceipt]=\"conversationConfiguration.disableReceipt\"\n [hideReceipt]=\"conversationConfiguration.hideReceipt\"\n [disableTyping]=\"conversationConfiguration.disableTyping\"\n [deliveredIcon]=\"conversationConfiguration.deliveredIcon\"\n [readIcon]=\"conversationConfiguration.readIcon\"\n [waitIcon]=\"conversationConfiguration.waitIcon\"\n [errorIcon]=\"conversationConfiguration.errorIcon\"\n [datePattern]=\"conversationConfiguration.datePattern\"\n [receiptStyle]=\"conversationConfiguration.receiptStyle\"\n [sentIcon]=\"conversationConfiguration.sentIcon\"\n [privateGroupIcon]=\"conversationConfiguration.privateGroupIcon\"\n [protectedGroupIcon]=\"conversationConfiguration.protectedGroupIcon\"\n [passwordGroupIcon]=\"conversationConfiguration.passwordGroupIcon\"\n [customSoundForMessages]=\"conversationConfiguration.customSoundForMessages\"\n [conversationsRequestBuilder]=\"conversationConfiguration.conversationsRequestBuilder\"\n [emptyStateView]=\"conversationConfiguration.emptyStateView\"\n [onSelect]=\"conversationConfiguration.onSelect\"\n [loadingIconURL]=\"conversationConfiguration.loadingIconURL\"\n [errorStateView]=\"conversationConfiguration.errorStateView\"\n [loadingStateView]=\"conversationConfiguration.loadingStateView\"\n [titleAlignment]=\"conversationConfiguration.titleAlignment\"\n [listItemView]=\"conversationConfiguration.listItemView\"\n [menu]=\"conversationConfiguration.menu || startConversationButton\"\n [hideSeparator]=\"conversationConfiguration.hideSeparator\"\n [hideError]=\"conversationConfiguration.hideError\"\n [selectionMode]=\"conversationConfiguration.selectionMode\"\n [disableSoundForMessages]=\"conversationConfiguration.disableSoundForMessages\"\n [deleteConversationDialogStyle]=\"conversationConfiguration.deleteConversationDialogStyle\"\n [badgeStyle]=\"conversationConfiguration.badgeStyle\"\n [dateStyle]=\"conversationConfiguration.dateStyle\"\n [listItemStyle]=\"conversationConfiguration.listItemStyle\"\n [backdropStyle]=\"conversationConfiguration.backdropStyle\"\n [textFormatters]=\"conversationConfiguration?.textFormatters\"\n [disableMentions]=\"conversationConfiguration.disableMentions\"></cometchat-conversations>\n </div>\n <div class=\"cc-with-messages__main\" [ngClass]=\"{mobile : isMobileView}\"\n *ngIf=\"!showStartConversation && (user || group)\">\n <!--Message List Screen-->\n <cometchat-messages #messagesRef [user]=\"user!\" [group]=\"group!\"\n [messageHeaderConfiguration]=\"messagesConfiguration.messageHeaderConfiguration\"\n [messageListConfiguration]=\"messagesConfiguration.messageListConfiguration\"\n [messageComposerConfiguration]=\"messagesConfiguration.messageComposerConfiguration\"\n [messagesStyle]=\"messagesConfiguration.messagesStyle\"\n [customSoundForIncomingMessages]=\"messagesConfiguration.customSoundForIncomingMessages\"\n [customSoundForOutgoingMessages]=\"messagesConfiguration.customSoundForOutgoingMessages\"\n [detailsConfiguration]=\"messagesConfiguration.detailsConfiguration\"\n [disableSoundForMessages]=\"messagesConfiguration.disableSoundForMessages\"\n [disableTyping]=\"messagesConfiguration.disableTyping\"\n [hideMessageComposer]=\"messagesConfiguration.hideMessageComposer\"\n [hideMessageHeader]=\"messagesConfiguration.hideMessageHeader\"\n [messageComposerView]=\"messagesConfiguration.messageComposerView\"\n [messageHeaderView]=\"messagesConfiguration.messageHeaderView\"\n [messageListView]=\"messagesConfiguration.messageListView\"\n [hideDetails]=\"messagesConfiguration.hideDetails!\"\n [threadedMessageConfiguration]=\"messagesConfiguration.threadedMessageConfiguration\">\n </cometchat-messages>\n <!--Message List Screen ENDS-->\n </div>\n <div class=\"cc-with-messages__start-conversation\"\n [ngStyle]=\"contactsWrapperStyles()\"\n [ngClass]=\"{mobile : isMobileView}\" *ngIf=\"showStartConversation\">\n\n <cometchat-contacts [onItemClick]=\"onContactClicked\"\n [usersConfiguration]=\"StartConversationConfiguration?.usersConfiguration!\"\n [groupsConfiguration]=\"StartConversationConfiguration?.groupsConfiguration!\"\n [closeIconURL]=\"StartConversationConfiguration?.closeIconURL!\"\n [contactsStyle]=\"StartConversationConfiguration?.contactsStyle!\"\n [selectionMode]=\"StartConversationConfiguration?.selectionMode!\"\n [onClose]=\"closeStartConversation\"\n [tabVisibility]=\"StartConversationConfiguration?.tabVisibility!\"\n [selectionLimit]=\"StartConversationConfiguration?.selectionLimit!\"\n [tabs]=\"StartConversationConfiguration?.tabs!\"\n [onSubmitButtonClick]=\"StartConversationConfiguration?.onSubmitButtonClick!\"\n [hideSubmitButton]=\"StartConversationConfiguration?.hideSubmitButton!\"></cometchat-contacts>\n </div>\n <div class=\"cc-decorator__message--empty\"\n *ngIf=\"!user && !group && !showStartConversation\"\n [ngStyle]=\"emptyMessageStyle()\">\n <cometchat-label [text]=\"messageText\"\n [labelStyle]=\"labelStyle\"></cometchat-label>\n </div>\n <ng-template #startConversationButton>\n <cometchat-button *ngIf=\"!hideStartNewConversation\"\n [iconURL]=\"startNewConversationIconURL\"\n [buttonStyle]=\"startConversationButtonStyle\"\n (cc-button-clicked)=\"triggerStartConversation()\"></cometchat-button>\n\n </ng-template>\n", styles: [".cc-with-messages__wrapper{display:flex;height:100%;width:100%;box-sizing:border-box;overflow:hidden}.cc-with-messages__sidebar{width:280px;height:100%;position:relative}.cc-with-messages__main,.cc-with-messages__start-conversation{width:calc(100% - 280px);height:100%}.mobile{width:100%!important;height:100%;position:absolute}.cc-decorator__message--empty{display:flex;justify-content:center;align-items:center}\n"] }]
390
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.CometChatThemeService }]; }, propDecorators: { user: [{
391
- type: Input
392
- }], group: [{
393
- type: Input
394
- }], isMobileView: [{
395
- type: Input
396
- }], messageText: [{
397
- type: Input
398
- }], conversationsWithMessagesStyle: [{
399
- type: Input
400
- }], messagesConfiguration: [{
401
- type: Input
402
- }], conversationConfiguration: [{
403
- type: Input
404
- }], onError: [{
405
- type: Input
406
- }], startNewConversationIconURL: [{
407
- type: Input
408
- }], hideStartNewConversation: [{
409
- type: Input
410
- }], StartConversationConfiguration: [{
411
- type: Input
412
- }] } });
413
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LWNvbnZlcnNhdGlvbnMtd2l0aC1tZXNzYWdlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXVpa2l0LWFuZ3VsYXIvc3JjL0NvbWV0Q2hhdENvbnZlcnNhdGlvbnNXaXRoTWVzc2FnZXMvY29tZXRjaGF0LWNvbnZlcnNhdGlvbnMtd2l0aC1tZXNzYWdlcy9jb21ldGNoYXQtY29udmVyc2F0aW9ucy13aXRoLW1lc3NhZ2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoYXQtdWlraXQtYW5ndWxhci9zcmMvQ29tZXRDaGF0Q29udmVyc2F0aW9uc1dpdGhNZXNzYWdlcy9jb21ldGNoYXQtY29udmVyc2F0aW9ucy13aXRoLW1lc3NhZ2VzL2NvbWV0Y2hhdC1jb252ZXJzYXRpb25zLXdpdGgtbWVzc2FnZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsS0FBSyxFQUFFLHVCQUF1QixFQUEyRCxNQUFNLGVBQWUsQ0FBQztBQUN0SixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDckksT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFtQixvQkFBb0IsRUFBRSx1QkFBdUIsRUFBNkksMkJBQTJCLEVBQXlDLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFFblgsT0FBTywyQkFBMkIsQ0FBQTs7Ozs7OztBQUdsQzs7Ozs7Ozs7RUFRRTtBQU9GLE1BQU0sT0FBTywyQ0FBMkM7SUFrRHRELFlBQW9CLFVBQXNCLEVBQVUsR0FBc0IsRUFBVSxZQUFtQztRQUFuRyxlQUFVLEdBQVYs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LEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLDhCQUE4QjtzQkFBdEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb21ldENoYXQgfSBmcm9tIFwiQGNvbWV0Y2hhdC9jaGF0LXNkay1qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBXaXRoTWVzc2FnZXNTdHlsZSwgTWVzc2FnZXNDb25maWd1cmF0aW9uLCBDb252ZXJzYXRpb25zQ29uZmlndXJhdGlvbiwgQ29udGFjdHNDb25maWd1cmF0aW9uIH0gZnJvbSAnQGNvbWV0Y2hhdC91aWtpdC1zaGFyZWQnXG5pbXBvcnQgeyBDb21ldENoYXRUaGVtZSwgZm9udEhlbHBlciwgbG9jYWxpemUsIENvbWV0Q2hhdE9wdGlvbiwgQ29tZXRDaGF0R3JvdXBFdmVudHMsIENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLCBJR3JvdXBMZWZ0LCBJR3JvdXBNZW1iZXJBZGRlZCwgSUdyb3VwTWVtYmVyS2lja2VkQmFubmVkLCBJR3JvdXBNZW1iZXJTY29wZUNoYW5nZWQsIElNZXNzYWdlcywgQ29tZXRDaGF0VXNlckV2ZW50cywgQ29tZXRDaGF0TWVzc2FnZUV2ZW50cywgQ29tZXRDaGF0Q29udmVyc2F0aW9uRXZlbnRzLCBJR3JvdXBNZW1iZXJKb2luZWQsIElPd25lcnNoaXBDaGFuZ2VkLCBDb21ldENoYXRVSUV2ZW50cyB9IGZyb20gJ0Bjb21ldGNoYXQvdWlraXQtcmVzb3VyY2VzJ1xuXG5pbXBvcnQgJ0Bjb21ldGNoYXQvdWlraXQtZWxlbWVudHMnXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQ29tZXRDaGF0VGhlbWVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL0NvbWV0Q2hhdFRoZW1lLnNlcnZpY2VcIjtcbi8qKlxuKlxuKiBDb21ldENoYXRDb252ZXJzYXRpb25zV2l0aE1lc3NhZ2VzQ29tcG9uZW50IGlzIGEgd3JhcHBlciBjb21wb25lbnQgZm9yIENvbWV0Q2hhdE1lc3NhZ2VzQ29tcG9uZW50IGFuZCBDb21ldENoYXRDb252ZXJzYXRpb25zIGNvbXBvbmVudCB0byBzaG93IGNoYXRzIGFuZCBtZXNzYWdlcyBpbiBvbmUgc2NyZWVuXG4qXG4qIEB2ZXJzaW9uIDEuMC4wXG4qIEBhdXRob3IgQ29tZXRDaGF0VGVhbVxuKiBAY29weXJpZ2h0IMKpIDIwMjIgQ29tZXRDaGF0IEluYy5cbipcbiovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY29tZXRjaGF0LWNvbnZlcnNhdGlvbnMtd2l0aC1tZXNzYWdlc1wiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2NvbWV0Y2hhdC1jb252ZXJzYXRpb25zLXdpdGgtbWVzc2FnZXMuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2NvbWV0Y2hhdC1jb252ZXJzYXRpb25zLXdpdGgtbWVzc2FnZXMuY29tcG9uZW50LnNjc3NcIl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ldENoYXRDb252ZXJzYXRpb25zV2l0aE1lc3NhZ2VzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvLyB0YWtpbmcgcmVmZXJlbmNlIG9mIGNvbnZlcnNhdGlvbkNvbXBvbmVudCBhbmQgTWVzc2FnZXNDb21wb25lbnRcbiAgQElucHV0KCkgdXNlciE6IENvbWV0Q2hhdC5Vc2VyIHwgbnVsbDtcbiAgQElucHV0KCkgZ3JvdXAhOiBDb21ldENoYXQuR3JvdXAgfCBudWxsO1xuICBASW5wdXQoKSBpc01vYmlsZVZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbWVzc2FnZVRleHQ6IHN0cmluZyA9IGxvY2FsaXplKFwiTk9fQ0hBVFNfU0VMRUNURURcIik7XG4gIEBJbnB1dCgpIGNvbnZlcnNhdGlvbnNXaXRoTWVzc2FnZXNTdHlsZTogV2l0aE1lc3NhZ2VzU3R5bGUgPSB7fTtcbiAgQElucHV0KCkgbWVzc2FnZXNDb25maWd1cmF0aW9uOiBNZXNzYWdlc0NvbmZpZ3VyYXRpb24gPSBuZXcgTWVzc2FnZXNDb25maWd1cmF0aW9uKHt9KTtcbiAgQElucHV0KCkgY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbjogQ29udmVyc2F0aW9uc0NvbmZpZ3VyYXRpb24gPSBuZXcgQ29udmVyc2F0aW9uc0NvbmZpZ3VyYXRpb24oe30pO1xuICBASW5wdXQoKSBvbkVycm9yOiAoKGVycm9yOiBDb21ldENoYXQuQ29tZXRDaGF0RXhjZXB0aW9uKSA9PiB2b2lkKSB8IG51bGwgPSAoZXJyb3I6IENvbWV0Q2hhdC5Db21ldENoYXRFeGNlcHRpb24pID0+IHtcbiAgICBjb25zb2xlLmxvZyhlcnJvcilcbiAgfVxuICBASW5wdXQoKSBzdGFydE5ld0NvbnZlcnNhdGlvbkljb25VUkw6IHN0cmluZyA9IFwiYXNzZXRzL25ldy1jaGF0LnN2Z1wiXG4gIEBJbnB1dCgpIGhpZGVTdGFydE5ld0NvbnZlcnNhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBTdGFydENvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb246IENvbnRhY3RzQ29uZmlndXJhdGlvbiA9IG5ldyBDb250YWN0c0NvbmZpZ3VyYXRpb24oe30pXG4gIHRoZW1lOiBDb21ldENoYXRUaGVtZSA9IG5ldyBDb21ldENoYXRUaGVtZSh7fSk7XG4gIC8qKlxuICAgKiBQcm9wZXJ0aWVzIGZvciBpbnRlcm5hbCB1c2VcbiAgICovXG4gIHB1YmxpYyBzaG93U3RhcnRDb252ZXJzYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGxvZ2dlZEluVXNlciE6IENvbWV0Q2hhdC5Vc2VyIHwgbnVsbDtcbiAgcHVibGljIGFjdGl2ZUNvbnZlcnNhdGlvbiE6IENvbWV0Q2hhdC5Db252ZXJzYXRpb24gfCBudWxsO1xuICBsYWJlbFN0eWxlOiBhbnkgPSB7XG4gICAgYmFja2dyb3VuZDogXCJ0cmFuc3BhcmVudFwiLFxuICAgIHRleHRGb250OiBcIjcwMCAyMnB4IEludGVyXCIsXG4gICAgdGV4dENvbG9yOiBcInJnYmEoMjAsIDIwLCAyMCwgMC4zMylcIlxuICB9XG5cbiAgcHVibGljIGhpZGVTZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xuICBzdGFydENvbnZlcnNhdGlvbkJ1dHRvblN0eWxlOiBhbnkgPSB7XG5cbiAgfVxuICAvKipcbiAgKiBFdmVudHNcbiAgKi9cbiAgY2NHcm91cE1lbWJlckFkZGVkITogU3Vic2NyaXB0aW9uO1xuICBjY0dyb3VwTGVmdCE6IFN1YnNjcmlwdGlvbjtcbiAgY2NPcGVuQ2hhdCE6IFN1YnNjcmlwdGlvbjtcbiAgY2NHcm91cE1lbWJlckpvaW5lZCE6IFN1YnNjcmlwdGlvbjtcbiAgY2NHcm91cE1lbWJlcktpY2tlZCE6IFN1YnNjcmlwdGlvbjtcbiAgY2NHcm91cE1lbWJlckJhbm5lZCE6IFN1YnNjcmlwdGlvbjtcbiAgY2NPd25lcnNoaXBDaGFuZ2VkITogU3Vic2NyaXB0aW9uO1xuICBjY0dyb3VwRGVsZXRlZCE6IFN1YnNjcmlwdGlvbjtcbiAgc2lkZUJhclN0eWxlOiBhbnkgPSB7XG5cbiAgfVxuICBwdWJsaWMgZ3JvdXBMaXN0ZW5lcklkOiBzdHJpbmcgPSBcIndpdGhtZXNzYWdlc19ncm91cF9cIiArIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG4gIHB1YmxpYyBjY0NvbnZlcnNhdGlvbkRlbGV0ZWQhOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBDb21ldENoYXRUaGVtZVNlcnZpY2UpIHtcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG5cbiAgICBpZiAoY2hhbmdlc1tcImlzTW9iaWxlVmlld1wiXSkge1xuICAgICAgaWYgKHRoaXMuaXNNb2JpbGVWaWV3KSB7XG4gICAgICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VIZWFkZXJDb25maWd1cmF0aW9uLmhpZGVCYWNrQnV0dG9uID0gZmFsc2U7XG4gICAgICAgIGlmICghdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24uZGV0YWlsc0NvbmZpZ3VyYXRpb24uZGV0YWlsc1N0eWxlLnBhZGRpbmcpIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kZXRhaWxzQ29uZmlndXJhdGlvbi5kZXRhaWxzU3R5bGUucGFkZGluZyA9IFwiMCA4cHhcIlxuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24uZGV0YWlsc0NvbmZpZ3VyYXRpb24uYWRkTWVtYmVyc0NvbmZpZ3VyYXRpb24uYWRkTWVtYmVyc1N0eWxlLnBhZGRpbmcpIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kZXRhaWxzQ29uZmlndXJhdGlvbi5hZGRNZW1iZXJzQ29uZmlndXJhdGlvbi5hZGRNZW1iZXJzU3R5bGUucGFkZGluZyA9IFwiMCA4cHhcIlxuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24uZGV0YWlsc0NvbmZpZ3VyYXRpb24uYmFubmVkTWVtYmVyc0NvbmZpZ3VyYXRpb24uYmFubmVkTWVtYmVyc1N0eWxlLnBhZGRpbmcpIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kZXRhaWxzQ29uZmlndXJhdGlvbi5iYW5uZWRNZW1iZXJzQ29uZmlndXJhdGlvbi5iYW5uZWRNZW1iZXJzU3R5bGUucGFkZGluZyA9IFwiMCA4cHhcIlxuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24uZGV0YWlsc0NvbmZpZ3VyYXRpb24uYmFubmVkTWVtYmVyc0NvbmZpZ3VyYXRpb24uYmFubmVkTWVtYmVyc1N0eWxlLnBhZGRpbmcpIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kZXRhaWxzQ29uZmlndXJhdGlvbi5iYW5uZWRNZW1iZXJzQ29uZmlndXJhdGlvbi5iYW5uZWRNZW1iZXJzU3R5bGUucGFkZGluZyA9IFwiMCA4cHhcIlxuICAgICAgICB9XG4gICAgICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VIZWFkZXJDb25maWd1cmF0aW9uID0geyAuLi50aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlSGVhZGVyQ29uZmlndXJhdGlvbiB9XG4gICAgICAgIHRoaXMuU3RhcnRDb252ZXJzYXRpb25Db25maWd1cmF0aW9uLmNvbnRhY3RzU3R5bGUucGFkZGluZyA9IFwiMCA4cHhcIjtcbiAgICAgICAgdGhpcy5TdGFydENvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24gPSB7IC4uLnRoaXMuU3RhcnRDb252ZXJzYXRpb25Db25maWd1cmF0aW9uIH1cblxuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbiA9IHsgLi4udGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24gfVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoIXRoaXMuaXNNb2JpbGVWaWV3KSB7XG4gICAgICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5tZXNzYWdlSW5mb3JtYXRpb25Db25maWd1cmF0aW9uLm1lc3NhZ2VJbmZvcm1hdGlvblN0eWxlLmhlaWdodCA9IFwiNTAwcHhcIlxuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24ubWVzc2FnZUluZm9ybWF0aW9uQ29uZmlndXJhdGlvbi5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS53aWR0aCA9IFwiNTAwcHhcIlxuICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlSGVhZGVyQ29uZmlndXJhdGlvbi5oaWRlQmFja0J1dHRvbiA9IHRydWU7XG4gICAgICAgIGlmICghdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24uZGV0YWlsc0NvbmZpZ3VyYXRpb24uZGV0YWlsc1N0eWxlLnBhZGRpbmcpIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kZXRhaWxzQ29uZmlndXJhdGlvbi5kZXRhaWxzU3R5bGUucGFkZGluZyA9IFwiMCAxMDBweFwiXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kZXRhaWxzQ29uZmlndXJhdGlvbi5hZGRNZW1iZXJzQ29uZmlndXJhdGlvbi5hZGRNZW1iZXJzU3R5bGUucGFkZGluZykge1xuICAgICAgICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLmRldGFpbHNDb25maWd1cmF0aW9uLmFkZE1lbWJlcnNDb25maWd1cmF0aW9uLmFkZE1lbWJlcnNTdHlsZS5wYWRkaW5nID0gXCIwIDEwMHB4XCJcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLmRldGFpbHNDb25maWd1cmF0aW9uLmJhbm5lZE1lbWJlcnNDb25maWd1cmF0aW9uLmJhbm5lZE1lbWJlcnNTdHlsZS5wYWRkaW5nKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24uZGV0YWlsc0NvbmZpZ3VyYXRpb24uYmFubmVkTWVtYmVyc0NvbmZpZ3VyYXRpb24uYmFubmVkTWVtYmVyc1N0eWxlLnBhZGRpbmcgPSBcIjAgMTAwcHhcIlxuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24uZGV0YWlsc0NvbmZpZ3VyYXRpb24uYmFubmVkTWVtYmVyc0NvbmZpZ3VyYXRpb24uYmFubmVkTWVtYmVyc1N0eWxlLnBhZGRpbmcpIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kZXRhaWxzQ29uZmlndXJhdGlvbi5iYW5uZWRNZW1iZXJzQ29uZmlndXJhdGlvbi5iYW5uZWRNZW1iZXJzU3R5bGUucGFkZGluZyA9IFwiMCAxMDBweFwiXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5TdGFydENvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24uY29udGFjdHNTdHlsZS5wYWRkaW5nID0gXCIwIDEwMHB4XCI7XG4gICAgICAgIHRoaXMuU3RhcnRDb252ZXJzYXRpb25Db25maWd1cmF0aW9uID0geyAuLi50aGlzLlN0YXJ0Q29udmVyc2F0aW9uQ29uZmlndXJhdGlvbiB9XG4gICAgICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VIZWFkZXJDb25maWd1cmF0aW9uID0geyAuLi50aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlSGVhZGVyQ29uZmlndXJhdGlvbiB9XG4gICAgICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uID0geyAuLi50aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbiB9XG5cbiAgICAgIH1cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUJhY2tkcm9wSGVpZ2h0KClcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICAgIGlmICgoY2hhbmdlc1tcInVzZXJcIl0gJiYgY2hhbmdlc1tcInVzZXJcIl0/LmN1cnJlbnRWYWx1ZSkgfHwgKGNoYW5nZXNbXCJncm91cFwiXSAmJiBjaGFuZ2VzW1wiZ3JvdXBcIl0/LmN1cnJlbnRWYWx1ZSkpIHtcbiAgICAgIHRoaXMuc2V0QWN0aXZlQ2hhdCgpO1xuICAgIH1cbiAgfVxuICB0cmlnZ2VyU3RhcnRDb252ZXJzYXRpb24oKSB7XG4gICAgdGhpcy5zaG93U3RhcnRDb252ZXJzYXRpb24gPSB0cnVlO1xuICB9XG4gIHJlbW92ZUNoYXRPbkdyb3VwQWN0aW9uKGxlZnRVc2VyOiBDb21ldENoYXQuVXNlciwgbWVzc2FnZTogQ29tZXRDaGF0LkFjdGlvbikge1xuICAgIGNvbnN0IGlzU2FtZVVzZXIgPSB0aGlzLmxvZ2dlZEluVXNlcj8uZ2V0VWlkKCkgPT09IGxlZnRVc2VyLmdldFVpZCgpO1xuICAgIGNvbnN0IGFjdGlvbkZvckdyb3VwID0gbWVzc2FnZS5nZXRBY3Rpb25Gb3IoKSBpbnN0YW5jZW9mIENvbWV0Q2hhdC5Hcm91cDtcblxuICAgIGlmIChpc1NhbWVVc2VyICYmIHRoaXMuYWN0aXZlQ29udmVyc2F0aW9uICYmIHRoaXMuYWN0aXZlQ29udmVyc2F0aW9uLmdldENvbnZlcnNhdGlvbldpdGgoKSBpbnN0YW5jZW9mIENvbWV0Q2hhdC5Hcm91cCkge1xuICAgICAgbGV0IGdyb3VwID0gdGhpcy5hY3RpdmVDb252ZXJzYXRpb24uZ2V0Q29udmVyc2F0aW9uV2l0aCgpIGFzIENvbWV0Q2hhdC5Hcm91cDtcblxuICAgICAgaWYgKGFjdGlvbkZvckdyb3VwKSB7XG4gICAgICAgIGxldCBhY3Rpb25Pbkdyb3VwID0gbWVzc2FnZS5nZXRBY3Rpb25Gb3IoKSBhcyBDb21ldENoYXQuR3JvdXA7XG5cbiAgICAgICAgaWYgKGFjdGlvbk9uR3JvdXAuZ2V0R3VpZCgpID09PSBncm91cC5nZXRHdWlkKCkpIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZUNvbnZlcnNhdGlvbiA9IG51bGw7XG4gICAgICAgICAgdGhpcy51c2VyID0gbnVsbDtcbiAgICAgICAgICB0aGlzLmdyb3VwID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgYXR0YWNoR3JvdXBMaXN0ZW5lcnMoKSB7XG4gICAgQ29tZXRDaGF0LmFkZEdyb3VwTGlzdGVuZXIoXG4gICAgICB0aGlzLmdyb3VwTGlzdGVuZXJJZCxcbiAgICAgIG5ldyBDb21ldENoYXQuR3JvdXBMaXN0ZW5lcih7XG4gICAgICAgIG9uR3JvdXBNZW1iZXJLaWNrZWQ6IChcbiAgICAgICAgICBtZXNzYWdlOiBhbnksXG4gICAgICAgICAga2lja2VkVXNlcjogYW55LFxuICAgICAgICAgIGtpY2tlZEJ5OiBhbnksXG4gICAgICAgICAga2lja2VkRnJvbTogYW55XG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIHRoaXMucmVtb3ZlQ2hhdE9uR3JvdXBBY3Rpb24oa2lja2VkVXNlciwgbWVzc2FnZSlcblxuICAgICAgICB9LFxuICAgICAgICBvbkdyb3VwTWVtYmVyQmFubmVkOiAoXG4gICAgICAgICAgbWVzc2FnZTogYW55LFxuICAgICAgICAgIGJhbm5lZFVzZXI6IGFueSxcbiAgICAgICAgICBiYW5uZWRCeTogYW55LFxuICAgICAgICAgIGJhbm5lZEZyb206IGFueVxuICAgICAgICApID0+IHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUNoYXRPbkdyb3VwQWN0aW9uKGJhbm5lZFVzZXIsIG1lc3NhZ2UpXG5cbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuICBvbkJhY2sgPSAoKSA9PiB7XG4gICAgdGhpcy51c2VyID0gbnVsbFxuICAgIHRoaXMuZ3JvdXAgPSBudWxsXG4gICAgdGhpcy5hY3RpdmVDb252ZXJzYXRpb24gPSBudWxsXG4gIH1cbiAgc2V0V2l0aE1lc3NhZ2VzU3R5bGUoKSB7XG4gICAgbGV0IGRlZmF1bHRTdHlsZTogV2l0aE1lc3NhZ2VzU3R5bGUgPSBuZXcgV2l0aE1lc3NhZ2VzU3R5bGUoe1xuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgIGJhY2tncm91bmQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QmFja2dyb3VuZCgpLFxuICAgICAgYm9yZGVyUmFkaXVzOiBcIm5vbmVcIixcbiAgICAgIGJvcmRlcjogYDFweCBzb2xpZCAke3RoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MjAwKCl9YCxcbiAgICAgIG1lc3NhZ2VUZXh0Q29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICBtZXNzYWdlVGV4dEZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS50aXRsZTEpLFxuICAgIH0pXG4gICAgdGhpcy5jb252ZXJzYXRpb25zV2l0aE1lc3NhZ2VzU3R5bGUgPSB7XG4gICAgICAuLi5kZWZhdWx0U3R5bGUsXG4gICAgICAuLi50aGlzLmNvbnZlcnNhdGlvbnNXaXRoTWVzc2FnZXNTdHlsZVxuICAgIH1cbiAgICB0aGlzLmxhYmVsU3R5bGUudGV4dEZvbnQgPSB0aGlzLmNvbnZlcnNhdGlvbnNXaXRoTWVzc2FnZXNTdHlsZS5tZXNzYWdlVGV4dEZvbnRcbiAgICB0aGlzLmxhYmVsU3R5bGUudGV4dENvbG9yID0gdGhpcy5jb252ZXJzYXRpb25zV2l0aE1lc3NhZ2VzU3R5bGUubWVzc2FnZVRleHRDb2xvclxuICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VzU3R5bGUuYm9yZGVyID0gdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZXNTdHlsZS5ib3JkZXIgPz8gXCJub25lXCJcbiAgICB0aGlzLmNvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24uY29udmVyc2F0aW9uc1N0eWxlLmJvcmRlciA9IHRoaXMuY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbi5jb252ZXJzYXRpb25zU3R5bGUuYm9yZGVyID8/IFwibm9uZVwiXG4gICAgaWYgKCF0aGlzLmNvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24/LmNvbnZlcnNhdGlvbnNTdHlsZT8uYm9yZGVyIHx8IHRoaXMuY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbj8uY29udmVyc2F0aW9uc1N0eWxlPy5ib3JkZXIgPT0gXCJub25lXCIpIHtcbiAgICAgIHRoaXMuc2lkZUJhclN0eWxlID0geyBib3JkZXJSaWdodDogdGhpcy5jb252ZXJzYXRpb25zV2l0aE1lc3NhZ2VzU3R5bGUuYm9yZGVyIH1cblxuICAgIH1cbiAgfVxuICBvbkNvbnRhY3RDbGlja2VkID0gKHVzZXI/OiBDb21ldENoYXQuVXNlciwgZ3JvdXA/OiBDb21ldENoYXQuR3JvdXApID0+IHtcbiAgICB0aGlzLnNob3dTdGFydENvbnZlcnNhdGlvbiA9IGZhbHNlO1xuICAgIGlmICh1c2VyKSB7XG4gICAgICB0aGlzLmdyb3VwID0gbnVsbFxuICAgICAgdGhpcy51c2VyID0gdXNlcjtcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgaWYgKGdyb3VwKSB7XG4gICAgICB0aGlzLnVzZXIgPSBudWxsXG4gICAgICB0aGlzLmdyb3VwID0gZ3JvdXA7XG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBvbkl0ZW1DbGljazogKChjb252ZXJzYXRpb246IENvbWV0Q2hhdC5Db252ZXJzYXRpb24pID0+IHZvaWQpID0gKGNvbnZlcnNhdGlvbjogQ29tZXRDaGF0LkNvbnZlcnNhdGlvbikgPT4ge1xuICAgIHRoaXMuYWN0aXZlQ29udmVyc2F0aW9uID0gY29udmVyc2F0aW9uXG4gICAgdGhpcy5zaG93U3RhcnRDb252ZXJzYXRpb24gPSBmYWxzZTtcbiAgICBpZiAoY29udmVyc2F0aW9uLmdldENvbnZlcnNhdGlvblR5cGUoKSAmJiBjb252ZXJzYXRpb24uZ2V0Q29udmVyc2F0aW9uVHlwZSgpID09IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VSZWNlaXZlclR5cGUudXNlcikge1xuICAgICAgdGhpcy5ncm91cCA9IG51bGxcbiAgICAgIHRoaXMudXNlciA9IGNvbnZlcnNhdGlvbi5nZXRDb252ZXJzYXRpb25XaXRoKCkgYXMgQ29tZXRDaGF0LlVzZXI7XG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICB9XG4gICAgZWxzZSBpZiAoY29udmVyc2F0aW9uLmdldENvbnZlcnNhdGlvblR5cGUoKSAmJiBjb252ZXJzYXRpb24uZ2V0Q29udmVyc2F0aW9uVHlwZSgpID09IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VSZWNlaXZlclR5cGUuZ3JvdXApIHtcbiAgICAgIHRoaXMudXNlciA9IG51bGxcbiAgICAgIHRoaXMuZ3JvdXAgPSBjb252ZXJzYXRpb24uZ2V0Q29udmVyc2F0aW9uV2l0aCgpIGFzIENvbWV0Q2hhdC5Hcm91cFxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfVxuICB9O1xuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy51cGRhdGVCYWNrZHJvcEhlaWdodCgpXG4gIH1cbiAgdXBkYXRlQmFja2Ryb3BIZWlnaHQoKSB7XG4gICAgbGV0IGRpdkhlaWdodCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICBsZXQgZGl2V2lkdGggPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICBpZiAoZGl2SGVpZ2h0ID09PSAwIHx8IGRpdldpZHRoID09PSAwKSB7XG4gICAgICBjb25zdCByZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBkaXZIZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgICAgIGRpdldpZHRoID0gcmVjdC53aWR0aDtcbiAgICB9XG4gICAgbGV0IGJhY2tkcm9wU3R5bGUgPSB7XG4gICAgICBoZWlnaHQ6IGRpdkhlaWdodCArIFwicHhcIixcbiAgICAgIHdpZHRoOiBkaXZXaWR0aCArIFwicHhcIixcbiAgICAgIGJhY2tncm91bmQ6IFwicmdiYSgwLCAwLCAwLCAwLjUpXCIsXG4gICAgICBwb3NpdGlvbjogXCJmaXhlZFwiXG4gICAgfVxuICAgIGlmICh0aGlzLmlzTW9iaWxlVmlldykge1xuICAgICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24uZGV0YWlsc0NvbmZpZ3VyYXRpb24udHJhbnNmZXJPd25lcnNoaXBDb25maWd1cmF0aW9uLnRyYW5zZmVyT3duZXJzaGlwU3R5bGUuaGVpZ2h0ID0gKGRpdkhlaWdodCAtIDMwKSArIFwicHhcIjtcbiAgICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLmRldGFpbHNDb25maWd1cmF0aW9uLnRyYW5zZmVyT3duZXJzaGlwQ29uZmlndXJhdGlvbi50cmFuc2Zlck93bmVyc2hpcFN0eWxlLndpZHRoID0gZGl2V2lkdGggKyBcInB4XCI7XG4gICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24ubWVzc2FnZUluZm9ybWF0aW9uQ29uZmlndXJhdGlvbi5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS5oZWlnaHQgPSBkaXZIZWlnaHQgKyBcInB4XCI7XG4gICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24ubWVzc2FnZUluZm9ybWF0aW9uQ29uZmlndXJhdGlvbi5tZXNzYWdlSW5mb3JtYXRpb25TdHlsZS53aWR0aCA9IGRpdldpZHRoICsgXCJweFwiO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLmRldGFpbHNDb25maWd1cmF0aW9uLnRyYW5zZmVyT3duZXJzaGlwQ29uZmlndXJhdGlvbi50cmFuc2Zlck93bmVyc2hpcFN0eWxlLmhlaWdodCA9IFwiNjUwcHhcIjtcbiAgICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLmRldGFpbHNDb25maWd1cmF0aW9uLnRyYW5zZmVyT3duZXJzaGlwQ29uZmlndXJhdGlvbi50cmFuc2Zlck93bmVyc2hpcFN0eWxlLndpZHRoID0gXCIzNjBweFwiO1xuICAgIH1cbiAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlTGlzdENvbmZpZ3VyYXRpb24uYmFja2Ryb3BTdHlsZSA9IHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbi5iYWNrZHJvcFN0eWxlIHx8IGJhY2tkcm9wU3R5bGU7XG4gICAgdGhpcy5jb252ZXJzYXRpb25Db25maWd1cmF0aW9uLmJhY2tkcm9wU3R5bGUgPSB0aGlzLmNvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24uYmFja2Ryb3BTdHlsZSB8fCBiYWNrZHJvcFN0eWxlO1xuICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLmRldGFpbHNDb25maWd1cmF0aW9uLmJhY2tkcm9wU3R5bGUgPSB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kZXRhaWxzQ29uZmlndXJhdGlvbi5iYWNrZHJvcFN0eWxlIHx8IGJhY2tkcm9wU3R5bGU7XG4gICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUNvbXBvc2VyQ29uZmlndXJhdGlvbi5iYWNrZHJvcFN0eWxlID0gdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUNvbXBvc2VyQ29uZmlndXJhdGlvbi5iYWNrZHJvcFN0eWxlIHx8IGJhY2tkcm9wU3R5bGU7XG4gICAgdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24uZGV0YWlsc0NvbmZpZ3VyYXRpb24uYmFja2Ryb3BTdHlsZSA9dGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24uZGV0YWlsc0NvbmZpZ3VyYXRpb24uYmFja2Ryb3BTdHlsZSB8fCBiYWNrZHJvcFN0eWxlO1xuICAgIHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLmRldGFpbHNDb25maWd1cmF0aW9uLmdyb3VwTWVtYmVyc0NvbmZpZ3VyYXRpb24uYmFja2Ryb3BTdHlsZSA9IHRoaXMubWVzc2FnZXNDb25maWd1cmF0aW9uLmRldGFpbHNDb25maWd1cmF0aW9uLmdyb3VwTWVtYmVyc0NvbmZpZ3VyYXRpb24uYmFja2Ryb3BTdHlsZSB8fCBiYWNrZHJvcFN0eWxlO1xuXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cbiAgc2V0QWN0aXZlQ2hhdCgpIHtcbiAgICBsZXQgdHlwZTogc3RyaW5nID0gdGhpcy51c2VyID8gQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVJlY2VpdmVyVHlwZS51c2VyIDogQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVJlY2VpdmVyVHlwZS5ncm91cFxuICAgIHRoaXMuYWN0aXZlQ29udmVyc2F0aW9uID0gbnVsbFxuICAgIGxldCBjb252ZXJzYXRpb25XaXRoOiBzdHJpbmcgPSB0aGlzLnVzZXI/LmdldFVpZCgpISB8fCB0aGlzLmdyb3VwPy5nZXRHdWlkKCkhXG4gICAgQ29tZXRDaGF0LmdldENvbnZlcnNhdGlvbihjb252ZXJzYXRpb25XaXRoLCB0eXBlKS50aGVuKChjb252ZXJzYXRpb246IENvbWV0Q2hhdC5Db252ZXJzYXRpb24pID0+IHtcbiAgICAgIHRoaXMuYWN0aXZlQ29udmVyc2F0aW9uID0gY29udmVyc2F0aW9uXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcjogQ29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbikgPT4ge1xuICAgICAgICBpZiAodGhpcy5vbkVycm9yKSB7XG4gICAgICAgICAgdGhpcy5vbkVycm9yKGVycm9yKVxuICAgICAgICB9XG4gICAgICB9KVxuICB9XG4gIGNsb3NlU3RhcnRDb252ZXJzYXRpb24gPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuU3RhcnRDb252ZXJzYXRpb25Db25maWd1cmF0aW9uLm9uQ2xvc2UpIHtcbiAgICAgIHRoaXMuU3RhcnRDb252ZXJzYXRpb25Db25maWd1cmF0aW9uLm9uQ2xvc2UoKVxuICAgIH1cbiAgICB0aGlzLnNob3dTdGFydENvbnZlcnNhdGlvbiA9IGZhbHNlO1xuICB9XG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuU3RhcnRDb252ZXJzYXRpb25Db25maWd1cmF0aW9uLnVzZXJzQ29uZmlndXJhdGlvbi51c2Vyc1N0eWxlLmJvcmRlciA9IFwibm9uZVwiXG4gICAgdGhpcy5TdGFydENvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24uZ3JvdXBzQ29uZmlndXJhdGlvbi5ncm91cHNTdHlsZS5ib3JkZXIgPSBcIm5vbmVcIlxuXG4gICAgdGhpcy5zdGFydENvbnZlcnNhdGlvbkJ1dHRvblN0eWxlID0ge1xuICAgICAgaGVpZ2h0OiBcIjI0cHhcIixcbiAgICAgIHdpZHRoOiBcIjI0cHhcIixcbiAgICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgICBib3JkZXJSYWRpdXM6ICcwJyxcbiAgICAgIGJhY2tncm91bmQ6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgIGJ1dHRvbkljb25UaW50OiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldFByaW1hcnkoKVxuICAgIH1cbiAgICB0aGlzLlN0YXJ0Q29udmVyc2F0aW9uQ29uZmlndXJhdGlvbiA9IHsgLi4udGhpcy5TdGFydENvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24gfVxuICAgIHRoaXMuc2V0V2l0aE1lc3NhZ2VzU3R5bGUoKVxuICAgIGlmICghdGhpcy5tZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUhlYWRlckNvbmZpZ3VyYXRpb24ub25CYWNrKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlSGVhZGVyQ29uZmlndXJhdGlvbi5vbkJhY2sgPSB0aGlzLm9uQmFja1xuICAgIH1cbiAgICBDb21ldENoYXQuZ2V0TG9nZ2VkaW5Vc2VyKClcbiAgICAgIC50aGVuKCh1c2VyOiBDb21ldENoYXQuVXNlciB8IG51bGwpID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZWRJblVzZXIgPSB1c2VyO1xuICAgICAgICB0aGlzLmF0dGFjaEdyb3VwTGlzdGVuZXJzKCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9FdmVudHMoKTtcblxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IENvbWV0Q2hhdC5Db21ldENoYXRFeGNlcHRpb24pID0+IHtcbiAgICAgICAgaWYgKHRoaXMub25FcnJvcikge1xuICAgICAgICAgIHRoaXMub25FcnJvcihlcnJvcilcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgfVxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlVG9FdmVudHMoKTtcbiAgICBDb21ldENoYXQucmVtb3ZlR3JvdXBMaXN0ZW5lcih0aGlzLmdyb3VwTGlzdGVuZXJJZCk7XG4gIH1cbiAgLy8gc3Vic2NyaWJlIHRvIGdsb2JhbCBldmVudHNcbiAgc3Vic2NyaWJlVG9FdmVudHMoKSB7XG4gICAgdGhpcy5jY0NvbnZlcnNhdGlvbkRlbGV0ZWQgPSBDb21ldENoYXRDb252ZXJzYXRpb25FdmVudHMuY2NDb252ZXJzYXRpb25EZWxldGVkLnN1YnNjcmliZSgoY29udmVyc2F0aW9uOiBDb21ldENoYXQuQ29udmVyc2F0aW9uKSA9PiB7XG4gICAgICB0aGlzLnJlbW92ZUFjdGl2ZUNoYXRMaXN0KGNvbnZlcnNhdGlvbikgLy90byBtYWtlIG0gbWVzc2FnZXMgc2VjdGlvbiBlbXB0eSBhZnRlciBkZWxldGluZyBjb252ZXJzYXRpb24gZnJvbSBjb252ZXJzYXRpb25saXN0XG4gICAgfSlcbiAgICB0aGlzLmNjR3JvdXBEZWxldGVkID0gQ29tZXRDaGF0R3JvdXBFdmVudHMuY2NHcm91cERlbGV0ZWQuc3Vic2NyaWJlKChncm91cDogQ29tZXRDaGF0Lkdyb3VwKSA9PiB7XG4gICAgICBpZiAodGhpcy5ncm91cCAmJiBncm91cC5nZXRHdWlkKCkgPT0gdGhpcy5ncm91cC5nZXRHdWlkKCkpIHtcbiAgICAgICAgdGhpcy5ncm91cCA9IG51bGw7XG4gICAgICAgIHRoaXMuYWN0aXZlQ29udmVyc2F0aW9uID0gbnVsbDtcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICB9XG4gICAgfSlcbiAgICB0aGlzLmNjR3JvdXBNZW1iZXJBZGRlZCA9IENvbWV0Q2hhdEdyb3VwRXZlbnRzLmNjR3JvdXBNZW1iZXJBZGRlZC5zdWJzY3JpYmUoKGl0ZW06IElHcm91cE1lbWJlckFkZGVkKSA9PiB7XG4gICAgICBpZiAodGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwLmdldEd1aWQoKSA9PSBpdGVtPy51c2VyQWRkZWRJbiEuZ2V0R3VpZCgpKSB7XG4gICAgICAgIHRoaXMuZ3JvdXAgPSBpdGVtPy51c2VyQWRkZWRJbjtcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICB9XG4gICAgfSlcbiAgICB0aGlzLmNjR3JvdXBNZW1iZXJCYW5uZWQgPSBDb21ldENoYXRHcm91cEV2ZW50cy5jY0dyb3VwTWVtYmVyQmFubmVkLnN1YnNjcmliZSgoaXRlbTogSUdyb3VwTWVtYmVyS2lja2VkQmFubmVkKSA9PiB7XG4gICAgICBpZiAodGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwLmdldEd1aWQoKSA9PSBpdGVtPy5raWNrZWRGcm9tIS5nZXRHdWlkKCkpIHtcbiAgICAgICAgdGhpcy5ncm91cCA9IGl0ZW0/LmtpY2tlZEZyb207XG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5jY0dyb3VwTWVtYmVySm9pbmVkID0gQ29tZXRDaGF0R3JvdXBFdmVudHMuY2NHcm91cE1lbWJlckpvaW5lZC5zdWJzY3JpYmUoKGl0ZW06IElHcm91cE1lbWJlckpvaW5lZCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZ3JvdXAgJiYgdGhpcy5ncm91cC5nZXRHdWlkKCkgPT0gaXRlbT8uam9pbmVkR3JvdXAhLmdldEd1aWQoKSkge1xuICAgICAgICB0aGlzLmdyb3VwID0gaXRlbT8uam9pbmVkR3JvdXA7XG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5jY0dyb3VwTWVtYmVyS2lja2VkID0gQ29tZXRDaGF0R3JvdXBFdmVudHMuY2NHcm91cE1lbWJlcktpY2tlZC5zdWJzY3JpYmUoKGl0ZW06IElHcm91cE1lbWJlcktpY2tlZEJhbm5lZCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZ3JvdXAgJiYgdGhpcy5ncm91cC5nZXRHdWlkKCkgPT0gaXRlbT8ua2lja2VkRnJvbSEuZ2V0R3VpZCgpKSB7XG4gICAgICAgIHRoaXMuZ3JvdXAgPSBpdGVtPy5raWNrZWRGcm9tO1xuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMuY2NPd25lcnNoaXBDaGFuZ2VkID0gQ29tZXRDaGF0R3JvdXBFdmVudHMuY2NPd25lcnNoaXBDaGFuZ2VkLnN1YnNjcmliZSgoaXRlbTogSU93bmVyc2hpcENoYW5nZWQpID0+IHtcbiAgICAgIGlmICh0aGlzLmdyb3VwICYmIHRoaXMuZ3JvdXAuZ2V0R3VpZCgpID09IGl0ZW0/Lmdyb3VwIS5nZXRHdWlkKCkpIHtcbiAgICAgICAgdGhpcy5ncm91cCA9IGl0ZW0/Lmdyb3VwO1xuICAgICAgICB0aGlzLmFjdGl2ZUNvbnZlcnNhdGlvbj8uc2V0Q29udmVyc2F0aW9uV2l0aCh0aGlzLmdyb3VwKVxuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfSlcbiAgICB0aGlzLmNjR3JvdXBMZWZ0ID0gQ29tZXRDaGF0R3JvdXBFdmVudHMuY2NHcm91cExlZnQuc3Vic2NyaWJlKChpdGVtOiBJR3JvdXBMZWZ0KSA9PiB7XG4gICAgICBpZiAodGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwLmdldEd1aWQoKSA9PSBpdGVtPy5sZWZ0R3JvdXAhLmdldEd1aWQoKSAmJiB0aGlzLmxvZ2dlZEluVXNlcj8uZ2V0VWlkKCkgPT0gaXRlbT8udXNlckxlZnQ/LmdldFVpZCgpKSB7XG4gICAgICAgIHRoaXMuZ3JvdXAgPSBudWxsO1xuICAgICAgICB0aGlzLmFjdGl2ZUNvbnZlcnNhdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgfVxuICAgIH0pXG4gICAgLy8gb3BlbiBjaGF0IGFuZCBtYXJrIGFzIGFjdGl2ZSBjb252ZXJzYXRpb25cbiAgICB0aGlzLmNjT3BlbkNoYXQgPSBDb21ldENoYXRVSUV2ZW50cy5jY09wZW5DaGF0LnN1YnNjcmliZSgoaXRlbSkgPT4ge1xuICAgICAgdGhpcy51c2VyID0gaXRlbS51c2VyID8gaXRlbS51c2VyIDogbnVsbDtcbiAgICAgIHRoaXMuZ3JvdXAgPSBpdGVtLmdyb3VwID8gaXRlbS5ncm91cCA6IG51bGw7XG4gICAgICB0aGlzLnNldEFjdGl2ZUNoYXQoKVxuICAgIH0pXG4gIH1cbiAgLy8gdW5zdWJzY3JpYmUgdG8gc3Vic2NyaWJlZCBldmVudHMuXG4gIHVuc3Vic2NyaWJlVG9FdmVudHMoKSB7XG4gICAgdGhpcy5jY0NvbnZlcnNhdGlvbkRlbGV0ZWQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jY0dyb3VwRGVsZXRlZD8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNjR3JvdXBNZW1iZXJBZGRlZD8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNjR3JvdXBNZW1iZXJCYW5uZWQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jY0dyb3VwTWVtYmVySm9pbmVkPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2NHcm91cE1lbWJlcktpY2tlZD8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNjT3duZXJzaGlwQ2hhbmdlZD8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNjR3JvdXBMZWZ0Py51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2NPcGVuQ2hhdD8udW5zdWJzY3JpYmUoKTtcbiAgfVxuICAvKipcbiAgICogcmVtb3ZlIGFjdGl2ZSBjaGF0IHNjcmVlbiBhZnRlciBkZWxldGluZyB0aGUgY29udmVyc2F0aW9uLlxuICAgKiBAcGFyYW0gIHtDb21ldENoYXQuQ29udmVyc2F0aW9ufSBjb252ZXJzYXRpb25cbiAgICovXG4gIHJlbW92ZUFjdGl2ZUNoYXRMaXN0KGNvbnZlcnNhdGlvbjogQ29tZXRDaGF0LkNvbnZlcnNhdGlvbikge1xuICAgIGNvbnN0IGNvbnZlcnNhdGlvblR5cGUgPSBjb252ZXJzYXRpb24uZ2V0Q29udmVyc2F0aW9uVHlwZSgpO1xuICAgIGNvbnN0IGNvbnZlcnNhdGlvbldpdGggPSBjb252ZXJzYXRpb24uZ2V0Q29udmVyc2F0aW9uV2l0aCgpO1xuICAgIGlmIChjb252ZXJzYXRpb25UeXBlID09PSBDb21ldENoYXRVSUtpdENvbnN0YW50cy5NZXNzYWdlUmVjZWl2ZXJUeXBlLnVzZXIgJiYgdGhpcy51c2VyICYmIHRoaXMudXNlci5nZXRVaWQoKSA9PT0gKGNvbnZlcnNhdGlvbldpdGggYXMgQ29tZXRDaGF0LlVzZXIpLmdldFVpZCgpKSB7XG4gICAgICB0aGlzLnVzZXIgPSBudWxsO1xuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0gZWxzZSBpZiAoY29udmVyc2F0aW9uVHlwZSA9PT0gQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVJlY2VpdmVyVHlwZS5ncm91cCAmJiB0aGlzLmdyb3VwICYmIHRoaXMuZ3JvdXAuZ2V0R3VpZCgpID09PSAoY29udmVyc2F0aW9uV2l0aCBhcyBDb21ldENoYXQuR3JvdXApLmdldEd1aWQoKSkge1xuICAgICAgdGhpcy5ncm91cCA9IG51bGw7XG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgZW1wdHlNZXNzYWdlU3R5bGUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoaXMuY29udmVyc2F0aW9uc1dpdGhNZXNzYWdlc1N0eWxlLmJhY2tncm91bmQgfHwgdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRCYWNrZ3JvdW5kKCksXG4gICAgICBoZWlnaHQ6IHRoaXMuY29udmVyc2F0aW9uc1dpdGhNZXNzYWdlc1N0eWxlLmhlaWdodCxcbiAgICAgIHdpZHRoOiBgY2FsYygke3RoaXMuY29udmVyc2F0aW9uc1dpdGhNZXNzYWdlc1N0eWxlLndpZHRofSAtIDI4MHB4KWAsXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgYm9yZGVyUmFkaXVzOiB0aGlzLmNvbnZlcnNhdGlvbnNXaXRoTWVzc2FnZXNTdHlsZS5ib3JkZXJSYWRpdXMsXG4gICAgfVxuICB9XG4gIGNoYXRzV3JhcHBlclN0eWxlcyA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaGVpZ2h0OiB0aGlzLmNvbnZlcnNhdGlvbnNXaXRoTWVzc2FnZXNTdHlsZS5oZWlnaHQsXG4gICAgICB3aWR0aDogdGhpcy5jb252ZXJzYXRpb25zV2l0aE1lc3NhZ2VzU3R5bGUud2lkdGgsXG4gICAgICBib3JkZXI6IHRoaXMuY29udmVyc2F0aW9uc1dpdGhNZXNzYWdlc1N0eWxlLmJvcmRlcixcbiAgICAgIGJvcmRlclJhZGl1czogdGhpcy5jb252ZXJzYXRpb25zV2l0aE1lc3NhZ2VzU3R5bGUuYm9yZGVyUmFkaXVzLFxuICAgICAgYmFja2dyb3VuZDogdGhpcy5jb252ZXJzYXRpb25zV2l0aE1lc3NhZ2VzU3R5bGUuYmFja2dyb3VuZCB8fCB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEJhY2tncm91bmQoKSxcbiAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnXG4gICAgfVxuICB9XG4gIGNvbnRhY3RzV3JhcHBlclN0eWxlcyA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgYmFja2dyb3VuZDogdGhpcy5TdGFydENvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24uY29udGFjdHNTdHlsZS5iYWNrZ3JvdW5kIHx8IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QmFja2dyb3VuZCgpLFxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNjLXdpdGgtbWVzc2FnZXNfX3dyYXBwZXJcIiBbbmdTdHlsZV09XCJjaGF0c1dyYXBwZXJTdHlsZXMoKVwiPlxuICA8ZGl2IGNsYXNzPVwiY2Mtd2l0aC1tZXNzYWdlc19fc2lkZWJhclwiIFtuZ0NsYXNzXT1cInttb2JpbGUgOiBpc01vYmlsZVZpZXd9XCJcbiAgICBbbmdTdHlsZV09XCJzaWRlQmFyU3R5bGVcIj5cbiAgICA8Y29tZXRjaGF0LWNvbnZlcnNhdGlvbnMgI2NvbnZlcnNhdGlvblJlZlxuICAgICAgW2FjdGl2ZUNvbnZlcnNhdGlvbl09XCJhY3RpdmVDb252ZXJzYXRpb25cIlxuICAgICAgW29uSXRlbUNsaWNrXT1cImNvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24ub25JdGVtQ2xpY2sgfHwgb25JdGVtQ2xpY2tcIlxuICAgICAgW2NvbnZlcnNhdGlvbnNTdHlsZV09XCJjb252ZXJzYXRpb25Db25maWd1cmF0aW9uLmNvbnZlcnNhdGlvbnNTdHlsZVwiXG4gICAgICBbc3RhdHVzSW5kaWNhdG9yU3R5bGVdPVwiY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbj8uc3RhdHVzSW5kaWNhdG9yU3R5bGVcIlxuICAgICAgW2F2YXRhclN0eWxlXT1cImNvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24/LmF2YXRhclN0eWxlIVwiXG4gICAgICBbc3VidGl0bGVWaWV3XT1cImNvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24uc3VidGl0bGVWaWV3XCJcbiAgICAgIFtvcHRpb25zXT1cImNvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24ub3B0aW9uc1wiXG4gICAgICBbZGlzYWJsZVVzZXJzUHJlc2VuY2VdPVwiY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbi5kaXNhYmxlVXNlcnNQcmVzZW5jZVwiXG4gICAgICBbZGlzYWJsZVJlY2VpcHRdPVwiY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbi5kaXNhYmxlUmVjZWlwdFwiXG4gICAgICBbaGlkZVJlY2VpcHRdPVwiY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbi5oaWRlUmVjZWlwdFwiXG4gICAgICBbZGlzYWJsZVR5cGluZ109XCJjb252ZXJzYXRpb25Db25maWd1cmF0aW9uLmRpc2FibGVUeXBpbmdcIlxuICAgICAgW2RlbGl2ZXJlZEljb25dPVwiY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbi5kZWxpdmVyZWRJY29uXCJcbiAgICAgIFtyZWFkSWNvbl09XCJjb252ZXJzYXRpb25Db25maWd1cmF0aW9uLnJlYWRJY29uXCJcbiAgICAgIFt3YWl0SWNvbl09XCJjb252ZXJzYXRpb25Db25maWd1cmF0aW9uLndhaXRJY29uXCJcbiAgICAgIFtlcnJvckljb25dPVwiY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbi5lcnJvckljb25cIlxuICAgICAgW2RhdGVQYXR0ZXJuXT1cImNvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24uZGF0ZVBhdHRlcm5cIlxuICAgICAgW3JlY2VpcHRTdHlsZV09XCJjb252ZXJzYXRpb25Db25maWd1cmF0aW9uLnJlY2VpcHRTdHlsZVwiXG4gICAgICBbc2VudEljb25dPVwiY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbi5zZW50SWNvblwiXG4gICAgICBbcHJpdmF0ZUdyb3VwSWNvbl09XCJjb252ZXJzYXRpb25Db25maWd1cmF0aW9uLnByaXZhdGVHcm91cEljb25cIlxuICAgICAgW3Byb3RlY3RlZEdyb3VwSWNvbl09XCJjb252ZXJzYXRpb25Db25maWd1cmF0aW9uLnByb3RlY3RlZEdyb3VwSWNvblwiXG4gICAgICBbcGFzc3dvcmRHcm91cEljb25dPVwiY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbi5wYXNzd29yZEdyb3VwSWNvblwiXG4gICAgICBbY3VzdG9tU291bmRGb3JNZXNzYWdlc109XCJjb252ZXJzYXRpb25Db25maWd1cmF0aW9uLmN1c3RvbVNvdW5kRm9yTWVzc2FnZXNcIlxuICAgICAgW2NvbnZlcnNhdGlvbnNSZXF1ZXN0QnVpbGRlcl09XCJjb252ZXJzYXRpb25Db25maWd1cmF0aW9uLmNvbnZlcnNhdGlvbnNSZXF1ZXN0QnVpbGRlclwiXG4gICAgICBbZW1wdHlTdGF0ZVZpZXddPVwiY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbi5lbXB0eVN0YXRlVmlld1wiXG4gICAgICBbb25TZWxlY3RdPVwiY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbi5vblNlbGVjdFwiXG4gICAgICBbbG9hZGluZ0ljb25VUkxdPVwiY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbi5sb2FkaW5nSWNvblVSTFwiXG4gICAgICBbZXJyb3JTdGF0ZVZpZXddPVwiY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbi5lcnJvclN0YXRlVmlld1wiXG4gICAgICBbbG9hZGluZ1N0YXRlVmlld109XCJjb252ZXJzYXRpb25Db25maWd1cmF0aW9uLmxvYWRpbmdTdGF0ZVZpZXdcIlxuICAgICAgW3RpdGxlQWxpZ25tZW50XT1cImNvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24udGl0bGVBbGlnbm1lbnRcIlxuICAgICAgW2xpc3RJdGVtVmlld109XCJjb252ZXJzYXRpb25Db25maWd1cmF0aW9uLmxpc3RJdGVtVmlld1wiXG4gICAgICBbbWVudV09XCJjb252ZXJzYXRpb25Db25maWd1cmF0aW9uLm1lbnUgfHwgc3RhcnRDb252ZXJzYXRpb25CdXR0b25cIlxuICAgICAgW2hpZGVTZXBhcmF0b3JdPVwiY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbi5oaWRlU2VwYXJhdG9yXCJcbiAgICAgIFtoaWRlRXJyb3JdPVwiY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbi5oaWRlRXJyb3JcIlxuICAgICAgW3NlbGVjdGlvbk1vZGVdPVwiY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbi5zZWxlY3Rpb25Nb2RlXCJcbiAgICAgIFtkaXNhYmxlU291bmRGb3JNZXNzYWdlc109XCJjb252ZXJzYXRpb25Db25maWd1cmF0aW9uLmRpc2FibGVTb3VuZEZvck1lc3NhZ2VzXCJcbiAgICAgIFtkZWxldGVDb252ZXJzYXRpb25EaWFsb2dTdHlsZV09XCJjb252ZXJzYXRpb25Db25maWd1cmF0aW9uLmRlbGV0ZUNvbnZlcnNhdGlvbkRpYWxvZ1N0eWxlXCJcbiAgICAgIFtiYWRnZVN0eWxlXT1cImNvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24uYmFkZ2VTdHlsZVwiXG4gICAgICBbZGF0ZVN0eWxlXT1cImNvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24uZGF0ZVN0eWxlXCJcbiAgICAgIFtsaXN0SXRlbVN0eWxlXT1cImNvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24ubGlzdEl0ZW1TdHlsZVwiXG4gICAgICBbYmFja2Ryb3BTdHlsZV09XCJjb252ZXJzYXRpb25Db25maWd1cmF0aW9uLmJhY2tkcm9wU3R5bGVcIlxuICAgICAgW3RleHRGb3JtYXR0ZXJzXT1cImNvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24/LnRleHRGb3JtYXR0ZXJzXCJcbiAgICAgIFtkaXNhYmxlTWVudGlvbnNdPVwiY29udmVyc2F0aW9uQ29uZmlndXJhdGlvbi5kaXNhYmxlTWVudGlvbnNcIj48L2NvbWV0Y2hhdC1jb252ZXJzYXRpb25zPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNjLXdpdGgtbWVzc2FnZXNfX21haW5cIiBbbmdDbGFzc109XCJ7bW9iaWxlIDogaXNNb2JpbGVWaWV3fVwiXG4gICAgKm5nSWY9XCIhc2hvd1N0YXJ0Q29udmVyc2F0aW9uICYmICh1c2VyIHx8IGdyb3VwKVwiPlxuICAgIDwhLS1NZXNzYWdlIExpc3QgU2NyZWVuLS0+XG4gICAgPGNvbWV0Y2hhdC1tZXNzYWdlcyAjbWVzc2FnZXNSZWYgW3VzZXJdPVwidXNlciFcIiBbZ3JvdXBdPVwiZ3JvdXAhXCJcbiAgICAgIFttZXNzYWdlSGVhZGVyQ29uZmlndXJhdGlvbl09XCJtZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUhlYWRlckNvbmZpZ3VyYXRpb25cIlxuICAgICAgW21lc3NhZ2VMaXN0Q29uZmlndXJhdGlvbl09XCJtZXNzYWdlc0NvbmZpZ3VyYXRpb24ubWVzc2FnZUxpc3RDb25maWd1cmF0aW9uXCJcbiAgICAgIFttZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlQ29tcG9zZXJDb25maWd1cmF0aW9uXCJcbiAgICAgIFttZXNzYWdlc1N0eWxlXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlc1N0eWxlXCJcbiAgICAgIFtjdXN0b21Tb3VuZEZvckluY29taW5nTWVzc2FnZXNdPVwibWVzc2FnZXNDb25maWd1cmF0aW9uLmN1c3RvbVNvdW5kRm9ySW5jb21pbmdNZXNzYWdlc1wiXG4gICAgICBbY3VzdG9tU291bmRGb3JPdXRnb2luZ01lc3NhZ2VzXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5jdXN0b21Tb3VuZEZvck91dGdvaW5nTWVzc2FnZXNcIlxuICAgICAgW2RldGFpbHNDb25maWd1cmF0aW9uXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kZXRhaWxzQ29uZmlndXJhdGlvblwiXG4gICAgICBbZGlzYWJsZVNvdW5kRm9yTWVzc2FnZXNdPVwibWVzc2FnZXNDb25maWd1cmF0aW9uLmRpc2FibGVTb3VuZEZvck1lc3NhZ2VzXCJcbiAgICAgIFtkaXNhYmxlVHlwaW5nXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5kaXNhYmxlVHlwaW5nXCJcbiAgICAgIFtoaWRlTWVzc2FnZUNvbXBvc2VyXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5oaWRlTWVzc2FnZUNvbXBvc2VyXCJcbiAgICAgIFtoaWRlTWVzc2FnZUhlYWRlcl09XCJtZXNzYWdlc0NvbmZpZ3VyYXRpb24uaGlkZU1lc3NhZ2VIZWFkZXJcIlxuICAgICAgW21lc3NhZ2VDb21wb3NlclZpZXddPVwibWVzc2FnZXNDb25maWd1cmF0aW9uLm1lc3NhZ2VDb21wb3NlclZpZXdcIlxuICAgICAgW21lc3NhZ2VIZWFkZXJWaWV3XT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlSGVhZGVyVmlld1wiXG4gICAgICBbbWVzc2FnZUxpc3RWaWV3XT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5tZXNzYWdlTGlzdFZpZXdcIlxuICAgICAgW2hpZGVEZXRhaWxzXT1cIm1lc3NhZ2VzQ29uZmlndXJhdGlvbi5oaWRlRGV0YWlscyFcIlxuICAgICAgW3RocmVhZGVkTWVzc2FnZUNvbmZpZ3VyYXRpb25dPVwibWVzc2FnZXNDb25maWd1cmF0aW9uLnRocmVhZGVkTWVzc2FnZUNvbmZpZ3VyYXRpb25cIj5cbiAgICA8L2NvbWV0Y2hhdC1tZXNzYWdlcz5cbiAgICA8IS0tTWVzc2FnZSBMaXN0IFNjcmVlbiBFTkRTLS0+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2Mtd2l0aC1tZXNzYWdlc19fc3RhcnQtY29udmVyc2F0aW9uXCJcbiAgICBbbmdTdHlsZV09XCJjb250YWN0c1dyYXBwZXJTdHlsZXMoKVwiXG4gICAgW25nQ2xhc3NdPVwie21vYmlsZSA6IGlzTW9iaWxlVmlld31cIiAqbmdJZj1cInNob3dTdGFydENvbnZlcnNhdGlvblwiPlxuXG4gICAgPGNvbWV0Y2hhdC1jb250YWN0cyBbb25JdGVtQ2xpY2tdPVwib25Db250YWN0Q2xpY2tlZFwiXG4gICAgICBbdXNlcnNDb25maWd1cmF0aW9uXT1cIlN0YXJ0Q29udmVyc2F0aW9uQ29uZmlndXJhdGlvbj8udXNlcnNDb25maWd1cmF0aW9uIVwiXG4gICAgICBbZ3JvdXBzQ29uZmlndXJhdGlvbl09XCJTdGFydENvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24/Lmdyb3Vwc0NvbmZpZ3VyYXRpb24hXCJcbiAgICAgIFtjbG9zZUljb25VUkxdPVwiU3RhcnRDb252ZXJzYXRpb25Db25maWd1cmF0aW9uPy5jbG9zZUljb25VUkwhXCJcbiAgICAgIFtjb250YWN0c1N0eWxlXT1cIlN0YXJ0Q29udmVyc2F0aW9uQ29uZmlndXJhdGlvbj8uY29udGFjdHNTdHlsZSFcIlxuICAgICAgW3NlbGVjdGlvbk1vZGVdPVwiU3RhcnRDb252ZXJzYXRpb25Db25maWd1cmF0aW9uPy5zZWxlY3Rpb25Nb2RlIVwiXG4gICAgICBbb25DbG9zZV09XCJjbG9zZVN0YXJ0Q29udmVyc2F0aW9uXCJcbiAgICAgIFt0YWJWaXNpYmlsaXR5XT1cIlN0YXJ0Q29udmVyc2F0aW9uQ29uZmlndXJhdGlvbj8udGFiVmlzaWJpbGl0eSFcIlxuICAgICAgW3NlbGVjdGlvbkxpbWl0XT1cIlN0YXJ0Q29udmVyc2F0aW9uQ29uZmlndXJhdGlvbj8uc2VsZWN0aW9uTGltaXQhXCJcbiAgICAgIFt0YWJzXT1cIlN0YXJ0Q29udmVyc2F0aW9uQ29uZmlndXJhdGlvbj8udGFicyFcIlxuICAgICAgW29uU3VibWl0QnV0dG9uQ2xpY2tdPVwiU3RhcnRDb252ZXJzYXRpb25Db25maWd1cmF0aW9uPy5vblN1Ym1pdEJ1dHRvbkNsaWNrIVwiXG4gICAgICBbaGlkZVN1Ym1pdEJ1dHRvbl09XCJTdGFydENvbnZlcnNhdGlvbkNvbmZpZ3VyYXRpb24/LmhpZGVTdWJtaXRCdXR0b24hXCI+PC9jb21ldGNoYXQtY29udGFjdHM+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2MtZGVjb3JhdG9yX19tZXNzYWdlLS1lbXB0eVwiXG4gICAgKm5nSWY9XCIhdXNlciAmJiAhZ3JvdXAgJiYgIXNob3dTdGFydENvbnZlcnNhdGlvblwiXG4gICAgW25nU3R5bGVdPVwiZW1wdHlNZXNzYWdlU3R5bGUoKVwiPlxuICAgIDxjb21ldGNoYXQtbGFiZWwgW3RleHRdPVwibWVzc2FnZVRleHRcIlxuICAgICAgW2xhYmVsU3R5bGVdPVwibGFiZWxTdHlsZVwiPjwvY29tZXRjaGF0LWxhYmVsPlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICNzdGFydENvbnZlcnNhdGlvbkJ1dHRvbj5cbiAgICA8Y29tZXRjaGF0LWJ1dHRvbiAqbmdJZj1cIiFoaWRlU3RhcnROZXdDb252ZXJzYXRpb25cIlxuICAgICAgW2ljb25VUkxdPVwic3RhcnROZXdDb252ZXJzYXRpb25JY29uVVJMXCJcbiAgICAgIFtidXR0b25TdHlsZV09XCJzdGFydENvbnZlcnNhdGlvbkJ1dHRvblN0eWxlXCJcbiAgICAgIChjYy1idXR0b24tY2xpY2tlZCk9XCJ0cmlnZ2VyU3RhcnRDb252ZXJzYXRpb24oKVwiPjwvY29tZXRjaGF0LWJ1dHRvbj5cblxuICA8L25nLXRlbXBsYXRlPlxuIl19