@projectcor/maia-components 2.11.110-0 → 2.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/README.md +2 -0
  2. package/package.json +3 -3
  3. package/CHANGELOG.md +0 -642
  4. package/lib/App.js +0 -55
  5. package/lib/components/atoms/ActionableButton.js +0 -60
  6. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.js +0 -89
  7. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.styles.js +0 -21
  8. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.js +0 -9
  9. package/lib/components/atoms/AgentActivityIndicator/index.js +0 -2
  10. package/lib/components/atoms/ApprovalBox/ApprovalBox.js +0 -209
  11. package/lib/components/atoms/ApprovalBox/ApprovalBox.styles.js +0 -93
  12. package/lib/components/atoms/ApprovalBox/index.js +0 -2
  13. package/lib/components/atoms/AttachmentCard/AttachmentCard.js +0 -218
  14. package/lib/components/atoms/AttachmentCard/AttachmentCard.styles.js +0 -52
  15. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.js +0 -448
  16. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.styles.js +0 -58
  17. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.js +0 -55
  18. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.styles.js +0 -14
  19. package/lib/components/atoms/AttachmentCard/index.js +0 -4
  20. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +0 -442
  21. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.styles.js +0 -119
  22. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.js +0 -222
  23. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +0 -313
  24. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +0 -128
  25. package/lib/components/atoms/AttachmentPreviewModal/index.js +0 -2
  26. package/lib/components/atoms/Backdrop/Backdrop.js +0 -17
  27. package/lib/components/atoms/Backdrop/Backdrop.styles.js +0 -9
  28. package/lib/components/atoms/Backdrop/index.js +0 -2
  29. package/lib/components/atoms/CardItem.js +0 -7
  30. package/lib/components/atoms/CardMenu/CardMenu.js +0 -131
  31. package/lib/components/atoms/CardMenu/index.js +0 -2
  32. package/lib/components/atoms/CardMenu/styles.js +0 -21
  33. package/lib/components/atoms/ChatClientSelector/ChatClientSelector.js +0 -77
  34. package/lib/components/atoms/ChatClientSelector/index.js +0 -2
  35. package/lib/components/atoms/ChatDisclaimerMessage/ChatDisclaimerMessage.js +0 -9
  36. package/lib/components/atoms/ChatDisclaimerMessage/index.js +0 -2
  37. package/lib/components/atoms/ChatDisclaimerMessage/styles.js +0 -6
  38. package/lib/components/atoms/Checkbox/Checkbox.js +0 -34
  39. package/lib/components/atoms/Checkbox/index.js +0 -2
  40. package/lib/components/atoms/Checkbox/styles.js +0 -39
  41. package/lib/components/atoms/Chip/Chip.js +0 -150
  42. package/lib/components/atoms/Chip/index.js +0 -2
  43. package/lib/components/atoms/Chip/styles.js +0 -43
  44. package/lib/components/atoms/ChipLlm/ChipLlm.js +0 -45
  45. package/lib/components/atoms/ChipLlm/ChipLlm.style.js +0 -21
  46. package/lib/components/atoms/ChipLlm/index.js +0 -2
  47. package/lib/components/atoms/ChipStatus/ChipStatus.interface.js +0 -2
  48. package/lib/components/atoms/ChipStatus/ChipStatus.js +0 -14
  49. package/lib/components/atoms/ChipStatus/ChipStatus.styles.js +0 -27
  50. package/lib/components/atoms/ChipStatus/index.js +0 -2
  51. package/lib/components/atoms/ClearButton.js +0 -6
  52. package/lib/components/atoms/ClientSelector/ClientSelector.js +0 -146
  53. package/lib/components/atoms/ClientSelector/ClientSelector.styles.js +0 -15
  54. package/lib/components/atoms/ClientSelector/index.js +0 -2
  55. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.js +0 -38
  56. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +0 -188
  57. package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.js +0 -39
  58. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +0 -445
  59. package/lib/components/atoms/ContextMentionChip/index.js +0 -4
  60. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +0 -533
  61. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +0 -10
  62. package/lib/components/atoms/ContextMentionEditor/index.js +0 -2
  63. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +0 -282
  64. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +0 -148
  65. package/lib/components/atoms/ContextMentionItem/index.js +0 -2
  66. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +0 -290
  67. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +0 -108
  68. package/lib/components/atoms/ContextMentionPopover/index.js +0 -3
  69. package/lib/components/atoms/CopyToClipboard.js +0 -70
  70. package/lib/components/atoms/EditableLabel/EditableLabel.js +0 -110
  71. package/lib/components/atoms/EditableLabel/index.js +0 -2
  72. package/lib/components/atoms/EditableLabel/styles.js +0 -7
  73. package/lib/components/atoms/EmptySearchClients/EmptySearchClients.js +0 -22
  74. package/lib/components/atoms/EmptySearchClients/EmptySearchClients.styles.js +0 -18
  75. package/lib/components/atoms/EmptySearchClients/index.js +0 -2
  76. package/lib/components/atoms/EmptySearchProjects/EmptySearchProjects.js +0 -19
  77. package/lib/components/atoms/EmptySearchProjects/EmptySearchProjects.styles.js +0 -15
  78. package/lib/components/atoms/EmptySearchProjects/index.js +0 -2
  79. package/lib/components/atoms/EntitySelector/EntitySelector.js +0 -247
  80. package/lib/components/atoms/EntitySelector/EntitySelector.skeleton.js +0 -38
  81. package/lib/components/atoms/EntitySelector/EntitySelector.styles.js +0 -67
  82. package/lib/components/atoms/EntitySelector/index.js +0 -2
  83. package/lib/components/atoms/ErrorSearchClients/ErrorSearchClients.js +0 -14
  84. package/lib/components/atoms/ErrorSearchClients/ErrorSearchClients.styles.js +0 -15
  85. package/lib/components/atoms/ErrorSearchFaqs/ErrorSearchFaqs.js +0 -14
  86. package/lib/components/atoms/ErrorSearchFaqs/ErrorSearchFaqs.style.js +0 -15
  87. package/lib/components/atoms/ErrorSearchFaqs/index.js +0 -2
  88. package/lib/components/atoms/ErrorSearchProjects/ErrorSearchProjects.js +0 -18
  89. package/lib/components/atoms/ErrorSearchProjects/ErrorSearchProjects.style.js +0 -15
  90. package/lib/components/atoms/ErrorSearchProjects/index.js +0 -2
  91. package/lib/components/atoms/Expand/Expand.js +0 -32
  92. package/lib/components/atoms/Expand/index.js +0 -2
  93. package/lib/components/atoms/Fade/Fade.js +0 -56
  94. package/lib/components/atoms/Fade/index.js +0 -2
  95. package/lib/components/atoms/FeedbackButton/FeedbackButton.js +0 -59
  96. package/lib/components/atoms/FeedbackButton/FeedbackButton.styles.js +0 -14
  97. package/lib/components/atoms/FeedbackButton/index.js +0 -2
  98. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +0 -138
  99. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.skeleton.js +0 -44
  100. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +0 -43
  101. package/lib/components/atoms/FrequentlyAskedQuestions/index.js +0 -2
  102. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +0 -122
  103. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.skeleton.js +0 -43
  104. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +0 -62
  105. package/lib/components/atoms/FrequentlyUsedActions/index.js +0 -2
  106. package/lib/components/atoms/GoBackButton.js +0 -24
  107. package/lib/components/atoms/HelpButton.js +0 -44
  108. package/lib/components/atoms/IconButton.js +0 -56
  109. package/lib/components/atoms/ImagePreview/ImagePreview.js +0 -96
  110. package/lib/components/atoms/ImagePreview/ImagePreview.styles.js +0 -70
  111. package/lib/components/atoms/Input/CustomInput.interface.js +0 -2
  112. package/lib/components/atoms/Input/CustomInput.js +0 -91
  113. package/lib/components/atoms/Input/CustomInput.styles.js +0 -39
  114. package/lib/components/atoms/Input/index.js +0 -2
  115. package/lib/components/atoms/ListMenuOption/ListMenuOption.js +0 -41
  116. package/lib/components/atoms/ListMenuOption/index.js +0 -2
  117. package/lib/components/atoms/ListMenuOption/styles.js +0 -9
  118. package/lib/components/atoms/Loader.js +0 -41
  119. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.js +0 -11
  120. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.style.js +0 -6
  121. package/lib/components/atoms/LoadingFaqs/index.js +0 -2
  122. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.js +0 -11
  123. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.styles.js +0 -6
  124. package/lib/components/atoms/LoadingSearchClients/index.js +0 -2
  125. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.js +0 -14
  126. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.style.js +0 -10
  127. package/lib/components/atoms/LoadingSearchProjects/index.js +0 -2
  128. package/lib/components/atoms/LoadingText/LoadingText.js +0 -18
  129. package/lib/components/atoms/LoadingText/index.js +0 -2
  130. package/lib/components/atoms/LoadingText/styles.js +0 -7
  131. package/lib/components/atoms/MAIAButton/MAIAButton.js +0 -33
  132. package/lib/components/atoms/MAIAButton/index.js +0 -2
  133. package/lib/components/atoms/MAIAError/MAIAError.js +0 -15
  134. package/lib/components/atoms/MAIAError/index.js +0 -2
  135. package/lib/components/atoms/MAIAInput/MAIAInput.js +0 -1232
  136. package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +0 -266
  137. package/lib/components/atoms/MAIAInput/index.js +0 -2
  138. package/lib/components/atoms/MAIAInput/maiaInputLayout.js +0 -25
  139. package/lib/components/atoms/MAIAInput/styles.js +0 -186
  140. package/lib/components/atoms/MAIAMessage/MAIAMessage.interfaces.js +0 -2
  141. package/lib/components/atoms/MAIAMessage/MAIAMessage.js +0 -22
  142. package/lib/components/atoms/MAIAMessage/index.js +0 -2
  143. package/lib/components/atoms/MAIAMessage/styles.js +0 -7
  144. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.config.js +0 -23
  145. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.interfaces.js +0 -2
  146. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.js +0 -51
  147. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.styles.js +0 -26
  148. package/lib/components/atoms/MaiaStreamdown/index.js +0 -2
  149. package/lib/components/atoms/MaiaWrapper/MaiaWrapper.js +0 -18
  150. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.js +0 -84
  151. package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.js +0 -15
  152. package/lib/components/atoms/MaiaWrapper/index.js +0 -3
  153. package/lib/components/atoms/MaiaWrapper/styles.js +0 -21
  154. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.interface.js +0 -2
  155. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.js +0 -84
  156. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.styles.js +0 -53
  157. package/lib/components/atoms/ModalClientAccess/index.js +0 -2
  158. package/lib/components/atoms/ModalInfo/ModalInfo.js +0 -52
  159. package/lib/components/atoms/ModalInfo/ModalInfoContent.js +0 -7
  160. package/lib/components/atoms/ModalInfo/index.js +0 -3
  161. package/lib/components/atoms/ModalInfo/styles.js +0 -7
  162. package/lib/components/atoms/ModalProject/ModalProject.interface.js +0 -2
  163. package/lib/components/atoms/ModalProject/ModalProject.js +0 -112
  164. package/lib/components/atoms/ModalProject/ModalProject.style.js +0 -59
  165. package/lib/components/atoms/ModalProject/index.js +0 -2
  166. package/lib/components/atoms/NextPageLoader.js +0 -33
  167. package/lib/components/atoms/OnboardingModalButton/OnboardingModal.js +0 -28
  168. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.js +0 -180
  169. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.styles.js +0 -34
  170. package/lib/components/atoms/OnboardingModalButton/index.js +0 -3
  171. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.js +0 -131
  172. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.styles.js +0 -59
  173. package/lib/components/atoms/OptionAccessibility/index.js +0 -2
  174. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.js +0 -27
  175. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.styles.js +0 -18
  176. package/lib/components/atoms/OptionCorPermission/index.js +0 -2
  177. package/lib/components/atoms/PrimaryButton.js +0 -31
  178. package/lib/components/atoms/ProjectSelector/ProjectSelector.js +0 -77
  179. package/lib/components/atoms/ProjectSelector/ProjectSelector.styles.js +0 -61
  180. package/lib/components/atoms/ProjectSelector/index.js +0 -2
  181. package/lib/components/atoms/SecondaryButton.js +0 -20
  182. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.js +0 -20
  183. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.styles.js +0 -20
  184. package/lib/components/atoms/SessionGeneratingDot/index.js +0 -2
  185. package/lib/components/atoms/Skeleton/Skeleton.js +0 -36
  186. package/lib/components/atoms/Skeleton/index.js +0 -2
  187. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.js +0 -188
  188. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.styles.js +0 -69
  189. package/lib/components/atoms/SkillsDropdown/index.js +0 -2
  190. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.js +0 -16
  191. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.styles.js +0 -24
  192. package/lib/components/atoms/SlashCommandChip/buildSlashChipElement.js +0 -18
  193. package/lib/components/atoms/SlashCommandChip/index.js +0 -4
  194. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +0 -210
  195. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.styles.js +0 -53
  196. package/lib/components/atoms/SlashCommandDropdown/index.js +0 -2
  197. package/lib/components/atoms/Switch/Switch.js +0 -27
  198. package/lib/components/atoms/Switch/Switch.styles.js +0 -22
  199. package/lib/components/atoms/Switch/index.js +0 -2
  200. package/lib/components/atoms/TextArea/CustomTextArea.interface.js +0 -2
  201. package/lib/components/atoms/TextArea/CustomTextArea.js +0 -93
  202. package/lib/components/atoms/TextArea/CustomTextArea.styles.js +0 -25
  203. package/lib/components/atoms/TextArea/TextArea.interfaces.js +0 -2
  204. package/lib/components/atoms/TextArea/TextArea.js +0 -172
  205. package/lib/components/atoms/TextArea/TextArea.styles.js +0 -16
  206. package/lib/components/atoms/TextArea/index.js +0 -2
  207. package/lib/components/atoms/ThirdButton.js +0 -19
  208. package/lib/components/atoms/VideoModal/VideoModal.js +0 -76
  209. package/lib/components/atoms/VideoModal/index.js +0 -2
  210. package/lib/components/atoms/WithAppCfg.js +0 -26
  211. package/lib/components/atoms/WithFeatureValidation.js +0 -23
  212. package/lib/components/atoms/WrapperCenterIcon/WrapperCenterIcon.js +0 -9
  213. package/lib/components/atoms/WrapperCenterIcon/WrapperCenterIcon.styles.js +0 -6
  214. package/lib/components/atoms/WrapperCenterIcon/index.js +0 -2
  215. package/lib/components/atoms/icons/AIIcon.js +0 -23
  216. package/lib/components/atoms/icons/AacFile.js +0 -39
  217. package/lib/components/atoms/icons/AccessibilityIcon.js +0 -42
  218. package/lib/components/atoms/icons/ActionAssignIcon.js +0 -111
  219. package/lib/components/atoms/icons/ActionCalendarIcon.js +0 -112
  220. package/lib/components/atoms/icons/ActionChargeHoursIcon.js +0 -111
  221. package/lib/components/atoms/icons/ActionChatIcon.js +0 -71
  222. package/lib/components/atoms/icons/ActionCreateIcon.js +0 -91
  223. package/lib/components/atoms/icons/ActionCreateReworkIcon.js +0 -39
  224. package/lib/components/atoms/icons/ActionCreateSubtaskIcon.js +0 -37
  225. package/lib/components/atoms/icons/ActionEditIcon.js +0 -39
  226. package/lib/components/atoms/icons/ActionSummaryMessagesIcon.js +0 -88
  227. package/lib/components/atoms/icons/ActionSummaryTaskIcon.js +0 -37
  228. package/lib/components/atoms/icons/ActionTimeBackIcon.js +0 -112
  229. package/lib/components/atoms/icons/AgentMaiaIcon.js +0 -31
  230. package/lib/components/atoms/icons/Brain.js +0 -77
  231. package/lib/components/atoms/icons/CorAccessIcon.js +0 -41
  232. package/lib/components/atoms/icons/CorLogo.js +0 -76
  233. package/lib/components/atoms/icons/CsvFile.js +0 -41
  234. package/lib/components/atoms/icons/DocFile.js +0 -41
  235. package/lib/components/atoms/icons/DocxFile.js +0 -41
  236. package/lib/components/atoms/icons/EmptyClientIllustration.js +0 -67
  237. package/lib/components/atoms/icons/EmptyHistory.js +0 -46
  238. package/lib/components/atoms/icons/EmptySearchIllustration.js +0 -37
  239. package/lib/components/atoms/icons/EmptyState.js +0 -84
  240. package/lib/components/atoms/icons/EmptyStateAgents.js +0 -58
  241. package/lib/components/atoms/icons/ErrorIcon.js +0 -14
  242. package/lib/components/atoms/icons/ErrorSearchIllustration.js +0 -52
  243. package/lib/components/atoms/icons/ErrorState.js +0 -51
  244. package/lib/components/atoms/icons/FaqChevronIcon.js +0 -39
  245. package/lib/components/atoms/icons/FaqsIcon.js +0 -51
  246. package/lib/components/atoms/icons/FlacIcon.js +0 -39
  247. package/lib/components/atoms/icons/FolderIcon.js +0 -29
  248. package/lib/components/atoms/icons/HomeIcon.js +0 -30
  249. package/lib/components/atoms/icons/ImageFile.js +0 -46
  250. package/lib/components/atoms/icons/M4aFile.js +0 -39
  251. package/lib/components/atoms/icons/MAIAIcon.js +0 -20
  252. package/lib/components/atoms/icons/MAIAIsologo.js +0 -65
  253. package/lib/components/atoms/icons/MDFile.js +0 -41
  254. package/lib/components/atoms/icons/MaiaChatLayoutFloatingIcon.js +0 -41
  255. package/lib/components/atoms/icons/MaiaChatLayoutFullscreenIcon.js +0 -41
  256. package/lib/components/atoms/icons/MaiaChatLayoutMenuIcon.js +0 -33
  257. package/lib/components/atoms/icons/MaiaChatLayoutSidebarIcon.js +0 -41
  258. package/lib/components/atoms/icons/MaiaInputAddIcon.js +0 -42
  259. package/lib/components/atoms/icons/MaiaInputAttachIcon.js +0 -29
  260. package/lib/components/atoms/icons/MaiaInputAttachmentImageIcon.js +0 -33
  261. package/lib/components/atoms/icons/MaiaInputDeepSearchIcon.js +0 -35
  262. package/lib/components/atoms/icons/MaiaInputMentionIcon.js +0 -44
  263. package/lib/components/atoms/icons/MaiaInputRobotIcon.js +0 -29
  264. package/lib/components/atoms/icons/MaiaInputSendIcon.js +0 -29
  265. package/lib/components/atoms/icons/MaiaInputSlashIcon.js +0 -29
  266. package/lib/components/atoms/icons/MaiaInputWebSearchIcon.js +0 -35
  267. package/lib/components/atoms/icons/MaiaSettingsProject.js +0 -111
  268. package/lib/components/atoms/icons/MaiaSettingsProjectV2.js +0 -193
  269. package/lib/components/atoms/icons/MaiaSparkleIcon.js +0 -75
  270. package/lib/components/atoms/icons/MaiaStoreIcon.js +0 -31
  271. package/lib/components/atoms/icons/Mp3File.js +0 -39
  272. package/lib/components/atoms/icons/Mp4File.js +0 -39
  273. package/lib/components/atoms/icons/MyAgentsNavIcon.js +0 -51
  274. package/lib/components/atoms/icons/NewChat.js +0 -29
  275. package/lib/components/atoms/icons/NotionIcon.js +0 -36
  276. package/lib/components/atoms/icons/OgaFile.js +0 -39
  277. package/lib/components/atoms/icons/OggFile.js +0 -39
  278. package/lib/components/atoms/icons/PdfFile.js +0 -39
  279. package/lib/components/atoms/icons/PlusIcon.js +0 -29
  280. package/lib/components/atoms/icons/PptFile.js +0 -47
  281. package/lib/components/atoms/icons/PptxFile.js +0 -49
  282. package/lib/components/atoms/icons/RetryIcon.js +0 -34
  283. package/lib/components/atoms/icons/SkillIcon.js +0 -30
  284. package/lib/components/atoms/icons/SkillVisibilityEveryoneIcon.js +0 -23
  285. package/lib/components/atoms/icons/SkillVisibilityOnlyMeIcon.js +0 -23
  286. package/lib/components/atoms/icons/SkillsNavIcon.js +0 -24
  287. package/lib/components/atoms/icons/SubtaskIcon.js +0 -36
  288. package/lib/components/atoms/icons/TaskLinkIcon.js +0 -27
  289. package/lib/components/atoms/icons/TelescopeIcon.js +0 -60
  290. package/lib/components/atoms/icons/TemplateGradientIcon.js +0 -42
  291. package/lib/components/atoms/icons/TextFile.js +0 -41
  292. package/lib/components/atoms/icons/WavFile.js +0 -39
  293. package/lib/components/atoms/icons/WebmFile.js +0 -50
  294. package/lib/components/atoms/icons/XlsFile.js +0 -42
  295. package/lib/components/atoms/icons/XlsxFile.js +0 -42
  296. package/lib/components/atoms/icons/index.js +0 -53
  297. package/lib/components/atoms/index.js +0 -42
  298. package/lib/components/index.js +0 -11
  299. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.interface.js +0 -2
  300. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +0 -149
  301. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +0 -53
  302. package/lib/components/molecules/AbmSection/AbmGeneralSection.js +0 -415
  303. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +0 -152
  304. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +0 -374
  305. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +0 -106
  306. package/lib/components/molecules/AbmSection/AbmLoaderFiles.js +0 -92
  307. package/lib/components/molecules/AbmSection/AbmLoaderFiles.styles.js +0 -57
  308. package/lib/components/molecules/AbmSection/index.js +0 -4
  309. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +0 -52
  310. package/lib/components/molecules/ChatAIClientSelector/index.js +0 -2
  311. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +0 -119
  312. package/lib/components/molecules/ChatAIContent/ChatAIContent.skeleton.js +0 -187
  313. package/lib/components/molecules/ChatAIContent/ChatAIContent.styles.js +0 -6
  314. package/lib/components/molecules/ChatAIContent/index.js +0 -2
  315. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +0 -241
  316. package/lib/components/molecules/ChatAIHistory/index.js +0 -2
  317. package/lib/components/molecules/ChatAIHistory/styles.js +0 -22
  318. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +0 -649
  319. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +0 -115
  320. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +0 -95
  321. package/lib/components/molecules/ChatAIHome/index.js +0 -2
  322. package/lib/components/molecules/ChatAIHome/styles.js +0 -335
  323. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.js +0 -137
  324. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +0 -853
  325. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.js +0 -47
  326. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.styles.js +0 -37
  327. package/lib/components/molecules/ChatAIMessages/README.md +0 -101
  328. package/lib/components/molecules/ChatAIMessages/index.js +0 -2
  329. package/lib/components/molecules/ChatAIMessages/newStyles.js +0 -131
  330. package/lib/components/molecules/ChatAIMessages/styles.js +0 -94
  331. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +0 -1250
  332. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +0 -58
  333. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +0 -127
  334. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.styles.js +0 -34
  335. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/index.js +0 -2
  336. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +0 -189
  337. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +0 -26
  338. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/index.js +0 -2
  339. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +0 -453
  340. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +0 -108
  341. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/index.js +0 -2
  342. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.js +0 -48
  343. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.styles.js +0 -38
  344. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/index.js +0 -2
  345. package/lib/components/molecules/ChatAIModal/constants.js +0 -40
  346. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.js +0 -16
  347. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.styles.js +0 -12
  348. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/constants.js +0 -13
  349. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/index.js +0 -3
  350. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.js +0 -57
  351. package/lib/components/molecules/ChatAIModal/index.js +0 -2
  352. package/lib/components/molecules/ChatAIModal/layout.js +0 -74
  353. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +0 -457
  354. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +0 -218
  355. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +0 -384
  356. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +0 -165
  357. package/lib/components/molecules/ChatAIMySkills/index.js +0 -2
  358. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.js +0 -48
  359. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.styles.js +0 -49
  360. package/lib/components/molecules/ChatAIProjectSelector/index.js +0 -2
  361. package/lib/components/molecules/ChatFooter/ChatFooter.js +0 -337
  362. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.js +0 -32
  363. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.styles.js +0 -14
  364. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +0 -201
  365. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.styles.js +0 -51
  366. package/lib/components/molecules/ChatFooter/index.js +0 -2
  367. package/lib/components/molecules/ChatFooter/styles.js +0 -23
  368. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +0 -60
  369. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.styles.js +0 -6
  370. package/lib/components/molecules/ContextMentionInput/index.js +0 -2
  371. package/lib/components/molecules/MessageFeedback/MessageFeedback.js +0 -118
  372. package/lib/components/molecules/MessageFeedback/index.js +0 -2
  373. package/lib/components/molecules/MessageFeedback/styles.js +0 -14
  374. package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.js +0 -127
  375. package/lib/components/molecules/ProjectSummaryChat/index.js +0 -2
  376. package/lib/components/molecules/ProjectSummaryChat/styles.js +0 -8
  377. package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.js +0 -152
  378. package/lib/components/molecules/ProjectSummaryConfig/index.js +0 -2
  379. package/lib/components/molecules/ProjectSummaryConfig/styles.js +0 -86
  380. package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.js +0 -49
  381. package/lib/components/molecules/ProjectSummaryContent/index.js +0 -2
  382. package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.js +0 -19
  383. package/lib/components/molecules/ProjectSummaryModal/index.js +0 -2
  384. package/lib/components/molecules/ProjectSummaryModal/styles.js +0 -2
  385. package/lib/components/molecules/Sidebar/Sidebar.js +0 -716
  386. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +0 -157
  387. package/lib/components/molecules/Sidebar/Sidebar.skeleton.js +0 -48
  388. package/lib/components/molecules/Sidebar/Sidebar.styles.js +0 -75
  389. package/lib/components/molecules/Sidebar/index.js +0 -2
  390. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +0 -1420
  391. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +0 -93
  392. package/lib/components/organisms/AbmAgentModal/index.js +0 -2
  393. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +0 -182
  394. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +0 -34
  395. package/lib/components/organisms/AbmSkillGenerateModal/index.js +0 -2
  396. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +0 -550
  397. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +0 -118
  398. package/lib/components/organisms/AbmSkillModal/index.js +0 -2
  399. package/lib/components/organisms/ChatAI/ChatAI.js +0 -167
  400. package/lib/components/organisms/ChatAI/index.js +0 -2
  401. package/lib/components/organisms/ChatAI/styles.js +0 -7
  402. package/lib/components/organisms/ClientAIButton/ClientAIButton.js +0 -23
  403. package/lib/components/organisms/ClientAIButton/index.js +0 -2
  404. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.js +0 -86
  405. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.styles.js +0 -39
  406. package/lib/components/organisms/DeleteAgentModal/index.js +0 -2
  407. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +0 -122
  408. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.styles.js +0 -47
  409. package/lib/components/organisms/DeleteQuestionModal/index.js +0 -2
  410. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +0 -138
  411. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.styles.js +0 -69
  412. package/lib/components/organisms/EditQuestionModal/index.js +0 -2
  413. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.js +0 -113
  414. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.styles.js +0 -54
  415. package/lib/components/organisms/ModalFileExceeds/index.js +0 -2
  416. package/lib/components/organisms/ProjectAIButton/ProjectAIButton.js +0 -26
  417. package/lib/components/organisms/ProjectAIButton/index.js +0 -2
  418. package/lib/components/organisms/ProjectSummary/ProjectSummary.js +0 -60
  419. package/lib/components/organisms/ProjectSummary/index.js +0 -2
  420. package/lib/components/organisms/ProjectSummary/styles.js +0 -7
  421. package/lib/components/organisms/SnackBar/Snackbar.interface.js +0 -2
  422. package/lib/components/organisms/SnackBar/Snackbar.js +0 -73
  423. package/lib/components/organisms/SnackBar/Snackbar.styles.js +0 -9
  424. package/lib/components/organisms/SnackBar/index.js +0 -2
  425. package/lib/components/organisms/SourcesInformation/SourceItem.js +0 -18
  426. package/lib/components/organisms/SourcesInformation/SourceItem.styles.js +0 -14
  427. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.js +0 -66
  428. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.styles.js +0 -27
  429. package/lib/components/organisms/SourcesInformation/index.js +0 -2
  430. package/lib/constants/config.js +0 -10
  431. package/lib/constants/formatExtensions.js +0 -55
  432. package/lib/constants/gqlClient.js +0 -4
  433. package/lib/constants/maiaHourAgentAccess.js +0 -15
  434. package/lib/constants/maiaTaskPanelAccess.js +0 -24
  435. package/lib/constants/maiaTaskPanelOutsideClick.js +0 -9
  436. package/lib/constants/maiaTaskPanelZIndex.js +0 -19
  437. package/lib/constants/permissions/config.js +0 -72
  438. package/lib/constants/permissions/index.js +0 -3
  439. package/lib/constants/permissions/types.js +0 -2
  440. package/lib/constants/permissions/utils.js +0 -18
  441. package/lib/constants/plannerSyncEvents.js +0 -15
  442. package/lib/constants/taskLinkIcon.js +0 -15
  443. package/lib/constants/taskUrls.js +0 -11
  444. package/lib/context/cor-user.js +0 -31
  445. package/lib/context/global-context.js +0 -39
  446. package/lib/dev/DevChatAI.js +0 -101
  447. package/lib/dev/DevContextMentionInput.js +0 -67
  448. package/lib/dev/ProjectSummary.js +0 -9
  449. package/lib/dev/Providers.js +0 -27
  450. package/lib/exports.js +0 -2
  451. package/lib/hooks/README.md +0 -192
  452. package/lib/hooks/index.js +0 -30
  453. package/lib/hooks/useAccessClient/index.js +0 -2
  454. package/lib/hooks/useAccessClient/useAccessClient.js +0 -81
  455. package/lib/hooks/useAgentModel/index.js +0 -2
  456. package/lib/hooks/useAgentModel/useAgentModel.js +0 -62
  457. package/lib/hooks/useAgentModel/useCreateAgent.js +0 -128
  458. package/lib/hooks/useAgentModel/useDeleteAgent.js +0 -88
  459. package/lib/hooks/useAgentModel/useUpdateAgent.js +0 -129
  460. package/lib/hooks/useAgentSuggestions.js +0 -60
  461. package/lib/hooks/useCaretPosition.js +0 -65
  462. package/lib/hooks/useChatManager/index.js +0 -2
  463. package/lib/hooks/useChatManager/useChatManager.interface.js +0 -2
  464. package/lib/hooks/useChatManager/useChatManager.js +0 -1782
  465. package/lib/hooks/useChatMessages/index.js +0 -2
  466. package/lib/hooks/useChatMessages/useChatMessages.interface.js +0 -2
  467. package/lib/hooks/useChatMessages/useChatMessages.js +0 -722
  468. package/lib/hooks/useChats/index.js +0 -2
  469. package/lib/hooks/useChats/useChats.interfaces.js +0 -2
  470. package/lib/hooks/useChats/useChats.js +0 -187
  471. package/lib/hooks/useClientSearch.js +0 -163
  472. package/lib/hooks/useContextMentions.js +0 -500
  473. package/lib/hooks/useContextPinPopover.js +0 -228
  474. package/lib/hooks/useDebounce.js +0 -18
  475. package/lib/hooks/useEntitySearch.js +0 -1053
  476. package/lib/hooks/useEvent.js +0 -93
  477. package/lib/hooks/useFrequentlyAskedQuestions.js +0 -150
  478. package/lib/hooks/useFrequentlyUsedActions.js +0 -94
  479. package/lib/hooks/useKnowledge/deleteKnowledge.js +0 -69
  480. package/lib/hooks/useKnowledge/downloadKnowledge.js +0 -81
  481. package/lib/hooks/useKnowledge/index.js +0 -4
  482. package/lib/hooks/useKnowledge/saveKnowledge.js +0 -107
  483. package/lib/hooks/useKnowledge/useKnowledgeOperations.js +0 -156
  484. package/lib/hooks/useMaiaTaskPanelZIndex.js +0 -17
  485. package/lib/hooks/useMentionAllowedTypes.js +0 -120
  486. package/lib/hooks/useMentionPopover.js +0 -342
  487. package/lib/hooks/useMinimizedPillBottomOffset.js +0 -110
  488. package/lib/hooks/useModal/index.js +0 -2
  489. package/lib/hooks/useModal/useModal.interfaces.js +0 -2
  490. package/lib/hooks/useModal/useModal.js +0 -47
  491. package/lib/hooks/useOnboardingNavigation.js +0 -20
  492. package/lib/hooks/useOrchestratorStream/index.js +0 -2
  493. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +0 -2
  494. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +0 -269
  495. package/lib/hooks/useProjectSearch.js +0 -183
  496. package/lib/hooks/useProjectSummary.js +0 -101
  497. package/lib/hooks/useProjectSummaryConfig.js +0 -211
  498. package/lib/hooks/useProjects.js +0 -46
  499. package/lib/hooks/useRecentClientsSearch.js +0 -150
  500. package/lib/hooks/useRecentContexts.js +0 -86
  501. package/lib/hooks/useResize.js +0 -29
  502. package/lib/hooks/useSkillsCatalog.js +0 -66
  503. package/lib/hooks/useSlashCommands.js +0 -84
  504. package/lib/hooks/useSmoothStreamText/index.js +0 -2
  505. package/lib/hooks/useSmoothStreamText/useSmoothStreamText.js +0 -197
  506. package/lib/hooks/useSnackBarManager/useSnackBarManager.js +0 -41
  507. package/lib/hooks/useStreamResponse.js +0 -112
  508. package/lib/hooks/useStreamdownStyles.js +0 -13
  509. package/lib/hooks/useStreamingMessage/index.js +0 -2
  510. package/lib/hooks/useStreamingMessage/useStreamingMessage.js +0 -18
  511. package/lib/hooks/useT.js +0 -17
  512. package/lib/hooks/useTabTaskDefault.js +0 -33
  513. package/lib/hooks/useTaskPanel.js +0 -22
  514. package/lib/hooks/useTextOverflowEllipsisTooltip.js +0 -34
  515. package/lib/hooks/useToggle.js +0 -19
  516. package/lib/hooks/useToggleFavorite/index.js +0 -2
  517. package/lib/hooks/useToggleFavorite/useToggleFavorite.js +0 -83
  518. package/lib/index.css +0 -76
  519. package/lib/index.js +0 -30
  520. package/lib/lang/br/index.js +0 -783
  521. package/lib/lang/en/index.js +0 -783
  522. package/lib/lang/es/index.js +0 -784
  523. package/lib/lang/fr/index.js +0 -604
  524. package/lib/lang/index.js +0 -24
  525. package/lib/lang/utils.js +0 -33
  526. package/lib/mocks/mockChats.js +0 -395
  527. package/lib/mocks/mockOrchestrator.js +0 -5
  528. package/lib/mocks/mockProject.js +0 -11
  529. package/lib/mocks/mockProjectSummary.js +0 -6
  530. package/lib/mocks/mockedUser.js +0 -169
  531. package/lib/services/apolloClient.js +0 -3
  532. package/lib/services/appcues.js +0 -19
  533. package/lib/services/corpilot/ProjectSummary/getProjectSummary.js +0 -31
  534. package/lib/services/corpilot/ProjectSummary/index.js +0 -5
  535. package/lib/services/corpilot/client.js +0 -27
  536. package/lib/services/corpilot/index.js +0 -5
  537. package/lib/services/maia/Access/updateAccess.js +0 -59
  538. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +0 -46
  539. package/lib/services/maia/Actions/getSlashCommands.js +0 -39
  540. package/lib/services/maia/Actions/index.js +0 -7
  541. package/lib/services/maia/Agents/createAgent.js +0 -39
  542. package/lib/services/maia/Agents/deleteAgent.js +0 -38
  543. package/lib/services/maia/Agents/fetchAgentDetail.js +0 -122
  544. package/lib/services/maia/Agents/getAgentById.js +0 -162
  545. package/lib/services/maia/Agents/getAgentModels.js +0 -112
  546. package/lib/services/maia/Agents/getAgentSuggestions.js +0 -44
  547. package/lib/services/maia/Agents/getAgents.js +0 -718
  548. package/lib/services/maia/Agents/setAgentToolGroups.js +0 -42
  549. package/lib/services/maia/Agents/toggleFavorite.js +0 -34
  550. package/lib/services/maia/Agents/updateAgent.js +0 -39
  551. package/lib/services/maia/Chats/deleteChat.js +0 -32
  552. package/lib/services/maia/Chats/getChatMessages.js +0 -144
  553. package/lib/services/maia/Chats/getChatsByUserId.js +0 -82
  554. package/lib/services/maia/Chats/index.js +0 -15
  555. package/lib/services/maia/Chats/markSessionAsRead.js +0 -32
  556. package/lib/services/maia/Chats/patchChat.js +0 -43
  557. package/lib/services/maia/Chats/wasHelpfulChat.js +0 -31
  558. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.js +0 -55
  559. package/lib/services/maia/Faqs/index.js +0 -5
  560. package/lib/services/maia/Knowledge/delete.js +0 -41
  561. package/lib/services/maia/Knowledge/download.js +0 -48
  562. package/lib/services/maia/Knowledge/index.js +0 -3
  563. package/lib/services/maia/Knowledge/save.js +0 -43
  564. package/lib/services/maia/Orchestrator/index.js +0 -7
  565. package/lib/services/maia/Orchestrator/orchestrator.js +0 -246
  566. package/lib/services/maia/RecentClients/getRecentClients.js +0 -43
  567. package/lib/services/maia/RecentClients/index.js +0 -6
  568. package/lib/services/maia/RecentContexts/getRecentContexts.js +0 -54
  569. package/lib/services/maia/RecentContexts/index.js +0 -6
  570. package/lib/services/maia/RecentProjects/getRecentProjects.js +0 -55
  571. package/lib/services/maia/RecentProjects/index.js +0 -6
  572. package/lib/services/maia/RecentTasks/getRecentTasks.js +0 -54
  573. package/lib/services/maia/RecentTasks/index.js +0 -6
  574. package/lib/services/maia/RecentUsers/getRecentUsers.js +0 -59
  575. package/lib/services/maia/RecentUsers/index.js +0 -6
  576. package/lib/services/maia/Skills/createSkill.js +0 -39
  577. package/lib/services/maia/Skills/deleteSkill.js +0 -38
  578. package/lib/services/maia/Skills/generateSkill.js +0 -41
  579. package/lib/services/maia/Skills/getSkills.js +0 -120
  580. package/lib/services/maia/Skills/updateSkill.js +0 -39
  581. package/lib/services/maia/client.js +0 -27
  582. package/lib/services/maia/index.js +0 -17
  583. package/lib/services/query/ClientSearchQuery.js +0 -5
  584. package/lib/services/query/entitySearchQuery.js +0 -18
  585. package/lib/services/query/index.js +0 -2
  586. package/lib/services/query/projectSearchByValueQuery.js +0 -5
  587. package/lib/services/query/taskUserTabQuery.js +0 -8
  588. package/lib/services/query/usersDirectoryQuery.js +0 -19
  589. package/lib/services/types.js +0 -6
  590. package/lib/services/utils/fetchCOR.js +0 -117
  591. package/lib/services/utils/getCookie.js +0 -10
  592. package/lib/services/utils/index.js +0 -3
  593. package/lib/services/utils/mapChatMessages.js +0 -287
  594. package/lib/services/utils/validateIsMaia.js +0 -4
  595. package/lib/store/chatsSidebarOptimistic.js +0 -92
  596. package/lib/store/chatsStore.types.js +0 -2
  597. package/lib/store/chatsStoreLifecycle.js +0 -8
  598. package/lib/store/faqsStore.types.js +0 -2
  599. package/lib/store/index.js +0 -4
  600. package/lib/store/maiaLastChatPersistence.js +0 -35
  601. package/lib/store/sessions/activeView.js +0 -22
  602. package/lib/store/sessions/index.js +0 -9
  603. package/lib/store/sessions/sessionHitlContext.js +0 -15
  604. package/lib/store/sessions/sessionNotificationSound.js +0 -57
  605. package/lib/store/sessions/sessionNotifications.js +0 -110
  606. package/lib/store/sessions/sessionNotifications.types.js +0 -2
  607. package/lib/store/sessions/sessionStreamManager.js +0 -715
  608. package/lib/store/sessions/sessionStreamingText.js +0 -80
  609. package/lib/store/sessions/sessions.types.js +0 -35
  610. package/lib/store/sessions/useSessionMeta.js +0 -39
  611. package/lib/store/sessions/useSessionStreamingText.js +0 -18
  612. package/lib/store/sessions/useSessionsStore.js +0 -197
  613. package/lib/store/useChatsStore.js +0 -387
  614. package/lib/store/useFaqsStore.js +0 -27
  615. package/lib/streamdownStyles.js +0 -9
  616. package/lib/styles/StyledCleanContainer.js +0 -7
  617. package/lib/styles/cascade.js +0 -14
  618. package/lib/styles/config.js +0 -47
  619. package/lib/styles/shared/scrollable.js +0 -3
  620. package/lib/styles/transitions.js +0 -21
  621. package/lib/types/Action.js +0 -2
  622. package/lib/types/AgentSuggestion.js +0 -2
  623. package/lib/types/Chat.js +0 -10
  624. package/lib/types/Client.js +0 -2
  625. package/lib/types/FrequentlyAskedQuestion.js +0 -2
  626. package/lib/types/Project.js +0 -2
  627. package/lib/types/ProjectSummaryConfigKeys.js +0 -9
  628. package/lib/types/Task.js +0 -2
  629. package/lib/types/agent.js +0 -2
  630. package/lib/types/agentModal.js +0 -2
  631. package/lib/types/contextMention.js +0 -37
  632. package/lib/types/global.d.js +0 -2
  633. package/lib/types/skill.js +0 -2
  634. package/lib/types/streamActivity.js +0 -2
  635. package/lib/types/userType.d.js +0 -2
  636. package/lib/utils/actionCategoryMap.js +0 -37
  637. package/lib/utils/actionIconMap.js +0 -61
  638. package/lib/utils/agentDisplayName.js +0 -42
  639. package/lib/utils/chatInputFiles.js +0 -52
  640. package/lib/utils/contextMentionIcons.js +0 -134
  641. package/lib/utils/contextMentionLabel.js +0 -4
  642. package/lib/utils/contextMentionTriggers.js +0 -51
  643. package/lib/utils/contextMentionTypeLabel.js +0 -17
  644. package/lib/utils/corConnectorMentionTypes.js +0 -41
  645. package/lib/utils/ensureStreamdownStyles.js +0 -21
  646. package/lib/utils/entityLinkRender.js +0 -135
  647. package/lib/utils/fileDownloadHelper.js +0 -40
  648. package/lib/utils/formatQuickActionMessage.js +0 -16
  649. package/lib/utils/formatUnreadCount.js +0 -6
  650. package/lib/utils/getUnitFileSize.js +0 -13
  651. package/lib/utils/hitlAnalytics.js +0 -65
  652. package/lib/utils/hoursPlannerQuickActionType.js +0 -64
  653. package/lib/utils/imagePreprocessor.js +0 -108
  654. package/lib/utils/index.js +0 -3
  655. package/lib/utils/maiaHostOpen.js +0 -19
  656. package/lib/utils/maiaStreamdownRehypePlugins.js +0 -27
  657. package/lib/utils/mapBackendLang.js +0 -8
  658. package/lib/utils/normalizeAgentConnectors.js +0 -70
  659. package/lib/utils/openTaskInCorPanel.js +0 -22
  660. package/lib/utils/orchestratorSubagents.js +0 -11
  661. package/lib/utils/renderContextMentions.js +0 -420
  662. package/lib/utils/retryCompletion.js +0 -85
  663. package/lib/utils/slashCommandMarker.js +0 -30
  664. package/lib/utils/sortManagerHoursHomeFuas.js +0 -14
  665. package/lib/utils/sseStreamContent.js +0 -17
  666. package/lib/utils/streamActivityMessages.js +0 -359
  667. package/lib/utils/validateTrimmedFields.js +0 -8
@@ -1,384 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
- import _regeneratorRuntime from "@babel/runtime/regenerator";
5
- import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
6
- import { MenuDots } from '@projectcor/icons/lib/components/MenuDots';
7
- import { Search } from '@projectcor/icons/lib/components/Search';
8
- import { useTranslation } from 'react-i18next';
9
- import { deleteSkill } from '../../../services/maia/Skills/deleteSkill';
10
- import { useSnackBarManager } from '../../../hooks/useSnackBarManager/useSnackBarManager';
11
- import { DeleteQuestionModal } from '../../organisms/DeleteQuestionModal/DeleteQuestionModal';
12
- import { SECTIONS } from '../../../constants/config';
13
- import { Loader } from '../../atoms/Loader';
14
- import { SkillVisibilityEveryoneIcon } from '../../atoms/icons/SkillVisibilityEveryoneIcon';
15
- import { SkillVisibilityOnlyMeIcon } from '../../atoms/icons/SkillVisibilityOnlyMeIcon';
16
- import { SCMSBody, SCMSCardButton, SCMSCardContentText, SCMSCardMenu, SCMSCardMenuItem, SCMSCardTitleName, SCMSCardTopRow, SCMSCardVisibilityRow, SCMSCardVisibilityText, SCMSCardsList, SCMSContainer, SCMSCreateButton, SCMSCreateButtonText, SCMSSharedEmptyStateRoot, SCMSSharedEmptyStateSubtitle, SCMSSharedEmptyStateTitle, SCMSSharedEmptyStateTitleBlock, SCMSKebabButton, SCMSLoadWrapper, SCMSMetaDescription, SCMSMetaRow, SCMSPanel, SCMSPanelHeader, SCMSListScrollArea, SCMSSearchInput, SCMSSearchWrapper, SCMSTabBar, SCMSTabButton, SCMSTitle, SCMSTitleBlock } from './ChatAIMySkills.styles';
17
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
18
- var DROPDOWN_GAP_PX = 6;
19
- var CARD_MENU_HEIGHT_PX = 88;
20
- var resolveDropdownPlacement = function resolveDropdownPlacement(anchor, dropdownHeight) {
21
- var rect = anchor.getBoundingClientRect();
22
- var spaceBelow = window.innerHeight - rect.bottom - DROPDOWN_GAP_PX;
23
- var spaceAbove = rect.top - DROPDOWN_GAP_PX;
24
- if (spaceBelow >= dropdownHeight) return 'bottom';
25
- if (spaceAbove >= dropdownHeight) return 'top';
26
- return spaceBelow >= spaceAbove ? 'bottom' : 'top';
27
- };
28
- var formatSkillDisplayName = function formatSkillDisplayName(name) {
29
- var normalized = name.replace(/^(@\/|#)/, '');
30
- return "#".concat(normalized);
31
- };
32
- var openSkillModal = function openSkillModal(values) {
33
- document.dispatchEvent(new CustomEvent('abm-skill-modal-set-values', {
34
- detail: {
35
- skillValues: {
36
- values: values,
37
- isOpen: true
38
- }
39
- }
40
- }));
41
- };
42
- var SkillSearchInput = /*#__PURE__*/React.memo(function (_ref) {
43
- var onSearch = _ref.onSearch,
44
- placeholder = _ref.placeholder;
45
- var _useState = useState(''),
46
- _useState2 = _slicedToArray(_useState, 2),
47
- value = _useState2[0],
48
- setValue = _useState2[1];
49
- var debounceRef = useRef(null);
50
- var handleChange = useCallback(function (event) {
51
- var nextValue = event.target.value;
52
- setValue(nextValue);
53
- if (debounceRef.current) clearTimeout(debounceRef.current);
54
- debounceRef.current = setTimeout(function () {
55
- onSearch(nextValue.trim());
56
- }, 250);
57
- }, [onSearch]);
58
- useEffect(function () {
59
- return function () {
60
- if (debounceRef.current) clearTimeout(debounceRef.current);
61
- };
62
- }, []);
63
- return /*#__PURE__*/_jsxs(SCMSSearchWrapper, {
64
- children: [/*#__PURE__*/_jsx(Search, {
65
- width: 16,
66
- height: 16,
67
- color: "#999"
68
- }), /*#__PURE__*/_jsx(SCMSSearchInput, {
69
- type: "text",
70
- value: value,
71
- onChange: handleChange,
72
- placeholder: placeholder
73
- })]
74
- });
75
- });
76
- export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
77
- var mySkills = _ref2.mySkills,
78
- sharedSkills = _ref2.sharedSkills,
79
- _ref2$loading = _ref2.loading,
80
- loading = _ref2$loading === void 0 ? false : _ref2$loading,
81
- onDeleteSkill = _ref2.onDeleteSkill;
82
- var _useTranslation = useTranslation([SECTIONS.chatAI]),
83
- t = _useTranslation.t;
84
- var _useSnackBarManager = useSnackBarManager(),
85
- handleSnackbarSuccess = _useSnackBarManager.handleSnackbarSuccess,
86
- handleSnackbarError = _useSnackBarManager.handleSnackbarError;
87
- var listScrollRef = useRef(null);
88
- var _useState3 = useState('mine'),
89
- _useState4 = _slicedToArray(_useState3, 2),
90
- activeTab = _useState4[0],
91
- setActiveTab = _useState4[1];
92
- var _useState5 = useState(''),
93
- _useState6 = _slicedToArray(_useState5, 2),
94
- searchQuery = _useState6[0],
95
- setSearchQuery = _useState6[1];
96
- var _useState7 = useState(null),
97
- _useState8 = _slicedToArray(_useState7, 2),
98
- menuOpenForSkillId = _useState8[0],
99
- setMenuOpenForSkillId = _useState8[1];
100
- var _useState9 = useState('bottom'),
101
- _useState0 = _slicedToArray(_useState9, 2),
102
- cardMenuPlacement = _useState0[0],
103
- setCardMenuPlacement = _useState0[1];
104
- var _useState1 = useState(null),
105
- _useState10 = _slicedToArray(_useState1, 2),
106
- skillToDelete = _useState10[0],
107
- setSkillToDelete = _useState10[1];
108
- var isMineTab = activeTab === 'mine';
109
- var tabSkills = isMineTab ? mySkills : sharedSkills;
110
- var filteredSkills = useMemo(function () {
111
- var normalizedQuery = searchQuery.toLowerCase();
112
- var matched = normalizedQuery ? tabSkills.filter(function (skill) {
113
- return skill.name.toLowerCase().includes(normalizedQuery);
114
- }) : tabSkills;
115
- return _toConsumableArray(matched).sort(function (a, b) {
116
- return a.name.localeCompare(b.name);
117
- });
118
- }, [searchQuery, tabSkills]);
119
- var handleCreateSkill = useCallback(function () {
120
- openSkillModal({
121
- isEditing: false,
122
- intent: 'write'
123
- });
124
- }, []);
125
- var handleToggleCardMenu = useCallback(function (event, skillId) {
126
- event.preventDefault();
127
- event.stopPropagation();
128
- var cardAnchor = event.currentTarget.closest('[data-skill-card-id]');
129
- if (cardAnchor instanceof HTMLElement) {
130
- setCardMenuPlacement(resolveDropdownPlacement(cardAnchor, CARD_MENU_HEIGHT_PX));
131
- }
132
- setMenuOpenForSkillId(function (prev) {
133
- return prev === skillId ? null : skillId;
134
- });
135
- }, []);
136
- var handleOpenSkill = useCallback(function (skill, isReadOnly) {
137
- openSkillModal({
138
- isEditing: true,
139
- isReadOnly: isReadOnly,
140
- general: {
141
- id: skill.id,
142
- name: skill.name,
143
- description: skill.description,
144
- content: skill.content,
145
- access_type: skill.access_type,
146
- created_by_name: skill.created_by_name,
147
- updated_at: skill.updated_at
148
- }
149
- });
150
- setMenuOpenForSkillId(null);
151
- }, []);
152
- var deleteModalChat = useMemo(function () {
153
- return skillToDelete ? {
154
- title: skillToDelete.name,
155
- id: skillToDelete.id
156
- } : null;
157
- }, [skillToDelete]);
158
- var handleConfirmDelete = /*#__PURE__*/function () {
159
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(chat) {
160
- var _t;
161
- return _regeneratorRuntime.wrap(function (_context) {
162
- while (1) switch (_context.prev = _context.next) {
163
- case 0:
164
- _context.prev = 0;
165
- _context.next = 1;
166
- return deleteSkill(chat.id);
167
- case 1:
168
- handleSnackbarSuccess(t('mySkills.deleteSuccess'));
169
- onDeleteSkill === null || onDeleteSkill === void 0 || onDeleteSkill(chat.id);
170
- setSkillToDelete(null);
171
- setMenuOpenForSkillId(null);
172
- _context.next = 3;
173
- break;
174
- case 2:
175
- _context.prev = 2;
176
- _t = _context["catch"](0);
177
- handleSnackbarError(t('mySkills.deleteError'));
178
- case 3:
179
- case "end":
180
- return _context.stop();
181
- }
182
- }, _callee, null, [[0, 2]]);
183
- }));
184
- return function handleConfirmDelete(_x) {
185
- return _ref3.apply(this, arguments);
186
- };
187
- }();
188
- useEffect(function () {
189
- var handleClickOutside = function handleClickOutside() {
190
- if (menuOpenForSkillId) {
191
- setMenuOpenForSkillId(null);
192
- }
193
- };
194
- document.addEventListener('click', handleClickOutside);
195
- return function () {
196
- document.removeEventListener('click', handleClickOutside);
197
- };
198
- }, [menuOpenForSkillId]);
199
- useEffect(function () {
200
- if (!menuOpenForSkillId) return undefined;
201
- var handleReposition = function handleReposition() {
202
- var _listScrollRef$curren;
203
- var openCard = (_listScrollRef$curren = listScrollRef.current) === null || _listScrollRef$curren === void 0 ? void 0 : _listScrollRef$curren.querySelector("[data-skill-card-id=\"".concat(menuOpenForSkillId, "\"]"));
204
- if (openCard) {
205
- setCardMenuPlacement(resolveDropdownPlacement(openCard, CARD_MENU_HEIGHT_PX));
206
- }
207
- };
208
- var scrollContainer = listScrollRef.current;
209
- scrollContainer === null || scrollContainer === void 0 || scrollContainer.addEventListener('scroll', handleReposition, {
210
- passive: true
211
- });
212
- window.addEventListener('resize', handleReposition);
213
- return function () {
214
- scrollContainer === null || scrollContainer === void 0 || scrollContainer.removeEventListener('scroll', handleReposition);
215
- window.removeEventListener('resize', handleReposition);
216
- };
217
- }, [menuOpenForSkillId]);
218
- var tabDescription = isMineTab ? t('mySkills.mySkillsDescription') : t('mySkills.sharedSkillsDescription');
219
- var isMineEmpty = isMineTab && !loading && mySkills.length === 0 && !searchQuery;
220
- var showSkillsToolbar = isMineTab ? !isMineEmpty : tabSkills.length > 0 || !!searchQuery;
221
- var renderCreateSkillButton = function renderCreateSkillButton() {
222
- return /*#__PURE__*/_jsx(SCMSCreateButton, {
223
- type: "button",
224
- onClick: handleCreateSkill,
225
- children: /*#__PURE__*/_jsx(SCMSCreateButtonText, {
226
- children: t('mySkills.createSkill')
227
- })
228
- });
229
- };
230
- var renderSearchEmptyState = function renderSearchEmptyState() {
231
- return /*#__PURE__*/_jsx(SCMSSharedEmptyStateRoot, {
232
- children: /*#__PURE__*/_jsxs(SCMSSharedEmptyStateTitleBlock, {
233
- children: [/*#__PURE__*/_jsx(SCMSSharedEmptyStateTitle, {
234
- children: t('mySkills.searchEmptyStateTitle')
235
- }), /*#__PURE__*/_jsx(SCMSSharedEmptyStateSubtitle, {
236
- children: t('mySkills.searchEmptyStateDescription')
237
- })]
238
- })
239
- });
240
- };
241
- var renderEmptyState = function renderEmptyState() {
242
- if (!isMineTab) {
243
- if (searchQuery) {
244
- return renderSearchEmptyState();
245
- }
246
- return /*#__PURE__*/_jsx(SCMSSharedEmptyStateRoot, {
247
- children: /*#__PURE__*/_jsxs(SCMSSharedEmptyStateTitleBlock, {
248
- children: [/*#__PURE__*/_jsx(SCMSSharedEmptyStateTitle, {
249
- children: t('mySkills.sharedEmptyStateTitle')
250
- }), /*#__PURE__*/_jsx(SCMSSharedEmptyStateSubtitle, {
251
- children: t('mySkills.sharedEmptyStateDescription')
252
- })]
253
- })
254
- });
255
- }
256
- if (searchQuery) {
257
- return renderSearchEmptyState();
258
- }
259
- return /*#__PURE__*/_jsxs(SCMSSharedEmptyStateRoot, {
260
- children: [/*#__PURE__*/_jsxs(SCMSSharedEmptyStateTitleBlock, {
261
- children: [/*#__PURE__*/_jsx(SCMSSharedEmptyStateTitle, {
262
- children: t('mySkills.emptyStateTitle')
263
- }), /*#__PURE__*/_jsx(SCMSSharedEmptyStateSubtitle, {
264
- children: t('mySkills.emptyStateDescription')
265
- })]
266
- }), renderCreateSkillButton()]
267
- });
268
- };
269
- return /*#__PURE__*/_jsxs(SCMSContainer, {
270
- children: [/*#__PURE__*/_jsxs(SCMSBody, {
271
- children: [/*#__PURE__*/_jsx(SCMSTitleBlock, {
272
- children: /*#__PURE__*/_jsx(SCMSTitle, {
273
- children: t('mySkills.title')
274
- })
275
- }), /*#__PURE__*/_jsxs(SCMSPanel, {
276
- children: [/*#__PURE__*/_jsxs(SCMSPanelHeader, {
277
- children: [/*#__PURE__*/_jsxs(SCMSTabBar, {
278
- children: [/*#__PURE__*/_jsx(SCMSTabButton, {
279
- type: "button",
280
- $active: isMineTab,
281
- onClick: function onClick() {
282
- return setActiveTab('mine');
283
- },
284
- children: t('mySkills.tabMySkills')
285
- }), /*#__PURE__*/_jsx(SCMSTabButton, {
286
- type: "button",
287
- $active: !isMineTab,
288
- onClick: function onClick() {
289
- return setActiveTab('shared');
290
- },
291
- children: t('mySkills.tabSharedSkills')
292
- })]
293
- }), showSkillsToolbar ? /*#__PURE__*/_jsxs(_Fragment, {
294
- children: [/*#__PURE__*/_jsxs(SCMSMetaRow, {
295
- children: [/*#__PURE__*/_jsx(SCMSMetaDescription, {
296
- children: tabDescription
297
- }), isMineTab ? renderCreateSkillButton() : null]
298
- }), /*#__PURE__*/_jsx(SkillSearchInput, {
299
- onSearch: setSearchQuery,
300
- placeholder: t('mySkills.searchPlaceholder')
301
- })]
302
- }) : null]
303
- }), /*#__PURE__*/_jsxs(SCMSListScrollArea, {
304
- ref: listScrollRef,
305
- children: [loading ? /*#__PURE__*/_jsx(SCMSLoadWrapper, {
306
- children: /*#__PURE__*/_jsx(Loader, {
307
- size: "small"
308
- })
309
- }) : null, !loading && filteredSkills.length ? /*#__PURE__*/_jsx(SCMSCardsList, {
310
- children: filteredSkills.map(function (skill, index) {
311
- return /*#__PURE__*/_jsxs(SCMSCardButton, {
312
- type: "button",
313
- "data-skill-card-id": skill.id,
314
- $index: index,
315
- $elevated: menuOpenForSkillId === skill.id,
316
- onClick: function onClick() {
317
- return handleOpenSkill(skill, !isMineTab);
318
- },
319
- children: [/*#__PURE__*/_jsxs(SCMSCardTopRow, {
320
- children: [/*#__PURE__*/_jsx(SCMSCardTitleName, {
321
- children: formatSkillDisplayName(skill.name)
322
- }), isMineTab ? /*#__PURE__*/_jsx(SCMSKebabButton, {
323
- type: "button",
324
- $visible: menuOpenForSkillId === skill.id,
325
- "aria-label": t('mySkills.cardMenuAriaLabel'),
326
- onClick: function onClick(event) {
327
- return handleToggleCardMenu(event, skill.id);
328
- },
329
- children: /*#__PURE__*/_jsx(MenuDots, {
330
- color: "#808080",
331
- width: 20,
332
- height: 20
333
- })
334
- }) : null]
335
- }), /*#__PURE__*/_jsx(SCMSCardContentText, {
336
- children: skill.description || skill.content
337
- }), /*#__PURE__*/_jsx(SCMSCardVisibilityRow, {
338
- children: isMineTab ? /*#__PURE__*/_jsxs(_Fragment, {
339
- children: [skill.access_type === 'company' ? /*#__PURE__*/_jsx(SkillVisibilityEveryoneIcon, {}) : /*#__PURE__*/_jsx(SkillVisibilityOnlyMeIcon, {}), /*#__PURE__*/_jsx(SCMSCardVisibilityText, {
340
- children: skill.access_type === 'company' ? t('mySkills.visibilityEveryone') : t('mySkills.visibilityOnlyMe')
341
- })]
342
- }) : /*#__PURE__*/_jsx(SCMSCardVisibilityText, {
343
- children: t('mySkills.sharedCreatedBy', {
344
- name: skill.created_by_name || ''
345
- })
346
- })
347
- }), menuOpenForSkillId === skill.id && isMineTab ? /*#__PURE__*/_jsxs(SCMSCardMenu, {
348
- $placement: cardMenuPlacement,
349
- onClick: function onClick(event) {
350
- event.preventDefault();
351
- event.stopPropagation();
352
- },
353
- children: [/*#__PURE__*/_jsx(SCMSCardMenuItem, {
354
- type: "button",
355
- onClick: function onClick() {
356
- return handleOpenSkill(skill, false);
357
- },
358
- children: t('mySkills.edit')
359
- }), /*#__PURE__*/_jsx(SCMSCardMenuItem, {
360
- type: "button",
361
- onClick: function onClick() {
362
- return setSkillToDelete(skill);
363
- },
364
- children: t('mySkills.delete')
365
- })]
366
- }) : null]
367
- }, skill.id);
368
- })
369
- }) : null, !loading && !filteredSkills.length ? renderEmptyState() : null]
370
- })]
371
- })]
372
- }), deleteModalChat ? /*#__PURE__*/_jsx(DeleteQuestionModal, {
373
- onClose: function onClose() {
374
- return setSkillToDelete(null);
375
- },
376
- handlers: {
377
- handleConfirmAction: handleConfirmDelete
378
- },
379
- chat: deleteModalChat,
380
- action: "skill"
381
- }) : null]
382
- });
383
- };
384
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwiTWVudURvdHMiLCJTZWFyY2giLCJ1c2VUcmFuc2xhdGlvbiIsImRlbGV0ZVNraWxsIiwidXNlU25hY2tCYXJNYW5hZ2VyIiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsIlNFQ1RJT05TIiwiTG9hZGVyIiwiU2tpbGxWaXNpYmlsaXR5RXZlcnlvbmVJY29uIiwiU2tpbGxWaXNpYmlsaXR5T25seU1lSWNvbiIsIlNDTVNCb2R5IiwiU0NNU0NhcmRCdXR0b24iLCJTQ01TQ2FyZENvbnRlbnRUZXh0IiwiU0NNU0NhcmRNZW51IiwiU0NNU0NhcmRNZW51SXRlbSIsIlNDTVNDYXJkVGl0bGVOYW1lIiwiU0NNU0NhcmRUb3BSb3ciLCJTQ01TQ2FyZFZpc2liaWxpdHlSb3ciLCJTQ01TQ2FyZFZpc2liaWxpdHlUZXh0IiwiU0NNU0NhcmRzTGlzdCIsIlNDTVNDb250YWluZXIiLCJTQ01TQ3JlYXRlQnV0dG9uIiwiU0NNU0NyZWF0ZUJ1dHRvblRleHQiLCJTQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3QiLCJTQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlIiwiU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZSIsIlNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jayIsIlNDTVNLZWJhYkJ1dHRvbiIsIlNDTVNMb2FkV3JhcHBlciIsIlNDTVNNZXRhRGVzY3JpcHRpb24iLCJTQ01TTWV0YVJvdyIsIlNDTVNQYW5lbCIsIlNDTVNQYW5lbEhlYWRlciIsIlNDTVNMaXN0U2Nyb2xsQXJlYSIsIlNDTVNTZWFyY2hJbnB1dCIsIlNDTVNTZWFyY2hXcmFwcGVyIiwiU0NNU1RhYkJhciIsIlNDTVNUYWJCdXR0b24iLCJTQ01TVGl0bGUiLCJTQ01TVGl0bGVCbG9jayIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkRST1BET1dOX0dBUF9QWCIsIkNBUkRfTUVOVV9IRUlHSFRfUFgiLCJyZXNvbHZlRHJvcGRvd25QbGFjZW1lbnQiLCJhbmNob3IiLCJkcm9wZG93bkhlaWdodCIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJzcGFjZUJlbG93Iiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJib3R0b20iLCJzcGFjZUFib3ZlIiwidG9wIiwiZm9ybWF0U2tpbGxEaXNwbGF5TmFtZSIsIm5hbWUiLCJub3JtYWxpemVkIiwicmVwbGFjZSIsImNvbmNhdCIsIm9wZW5Ta2lsbE1vZGFsIiwidmFsdWVzIiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJza2lsbFZhbHVlcyIsImlzT3BlbiIsIlNraWxsU2VhcmNoSW5wdXQiLCJtZW1vIiwiX3JlZiIsIm9uU2VhcmNoIiwicGxhY2Vob2xkZXIiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ2YWx1ZSIsInNldFZhbHVlIiwiZGVib3VuY2VSZWYiLCJoYW5kbGVDaGFuZ2UiLCJldmVudCIsIm5leHRWYWx1ZSIsInRhcmdldCIsImN1cnJlbnQiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwidHJpbSIsImNoaWxkcmVuIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsInR5cGUiLCJvbkNoYW5nZSIsIkNoYXRBSU15U2tpbGxzIiwiX3JlZjIiLCJteVNraWxscyIsInNoYXJlZFNraWxscyIsIl9yZWYyJGxvYWRpbmciLCJsb2FkaW5nIiwib25EZWxldGVTa2lsbCIsIl91c2VUcmFuc2xhdGlvbiIsImNoYXRBSSIsInQiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsImxpc3RTY3JvbGxSZWYiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImFjdGl2ZVRhYiIsInNldEFjdGl2ZVRhYiIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2VhcmNoUXVlcnkiLCJzZXRTZWFyY2hRdWVyeSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibWVudU9wZW5Gb3JTa2lsbElkIiwic2V0TWVudU9wZW5Gb3JTa2lsbElkIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJjYXJkTWVudVBsYWNlbWVudCIsInNldENhcmRNZW51UGxhY2VtZW50IiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwic2tpbGxUb0RlbGV0ZSIsInNldFNraWxsVG9EZWxldGUiLCJpc01pbmVUYWIiLCJ0YWJTa2lsbHMiLCJmaWx0ZXJlZFNraWxscyIsIm5vcm1hbGl6ZWRRdWVyeSIsInRvTG93ZXJDYXNlIiwibWF0Y2hlZCIsImZpbHRlciIsInNraWxsIiwiaW5jbHVkZXMiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwiaGFuZGxlQ3JlYXRlU2tpbGwiLCJpc0VkaXRpbmciLCJpbnRlbnQiLCJoYW5kbGVUb2dnbGVDYXJkTWVudSIsInNraWxsSWQiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImNhcmRBbmNob3IiLCJjdXJyZW50VGFyZ2V0IiwiY2xvc2VzdCIsIkhUTUxFbGVtZW50IiwicHJldiIsImhhbmRsZU9wZW5Ta2lsbCIsImlzUmVhZE9ubHkiLCJnZW5lcmFsIiwiaWQiLCJkZXNjcmlwdGlvbiIsImNvbnRlbnQiLCJhY2Nlc3NfdHlwZSIsImNyZWF0ZWRfYnlfbmFtZSIsInVwZGF0ZWRfYXQiLCJkZWxldGVNb2RhbENoYXQiLCJ0aXRsZSIsImhhbmRsZUNvbmZpcm1EZWxldGUiLCJfcmVmMyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiY2hhdCIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ1bmRlZmluZWQiLCJoYW5kbGVSZXBvc2l0aW9uIiwiX2xpc3RTY3JvbGxSZWYkY3VycmVuIiwib3BlbkNhcmQiLCJxdWVyeVNlbGVjdG9yIiwic2Nyb2xsQ29udGFpbmVyIiwicGFzc2l2ZSIsInRhYkRlc2NyaXB0aW9uIiwiaXNNaW5lRW1wdHkiLCJsZW5ndGgiLCJzaG93U2tpbGxzVG9vbGJhciIsInJlbmRlckNyZWF0ZVNraWxsQnV0dG9uIiwib25DbGljayIsInJlbmRlclNlYXJjaEVtcHR5U3RhdGUiLCJyZW5kZXJFbXB0eVN0YXRlIiwiJGFjdGl2ZSIsInJlZiIsInNpemUiLCJtYXAiLCJpbmRleCIsIiRpbmRleCIsIiRlbGV2YXRlZCIsIiR2aXNpYmxlIiwiJHBsYWNlbWVudCIsIm9uQ2xvc2UiLCJoYW5kbGVycyIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJhY3Rpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTXlTa2lsbHMvQ2hhdEFJTXlTa2lsbHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBNZW51RG90cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL01lbnVEb3RzJ1xuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvU2VhcmNoJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgU2tpbGwgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9za2lsbCdcbmltcG9ydCB7IGRlbGV0ZVNraWxsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvZGVsZXRlU2tpbGwnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBTa2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9Ta2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24nXG5pbXBvcnQgeyBTa2lsbFZpc2liaWxpdHlPbmx5TWVJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvU2tpbGxWaXNpYmlsaXR5T25seU1lSWNvbidcbmltcG9ydCB7XG4gIFNDTVNCb2R5LFxuICBTQ01TQ2FyZEJ1dHRvbixcbiAgU0NNU0NhcmRDb250ZW50VGV4dCxcbiAgU0NNU0NhcmRNZW51LFxuICBTQ01TQ2FyZE1lbnVJdGVtLFxuICBTQ01TQ2FyZFRpdGxlTmFtZSxcbiAgU0NNU0NhcmRUb3BSb3csXG4gIFNDTVNDYXJkVmlzaWJpbGl0eVJvdyxcbiAgU0NNU0NhcmRWaXNpYmlsaXR5VGV4dCxcbiAgU0NNU0NhcmRzTGlzdCxcbiAgU0NNU0NvbnRhaW5lcixcbiAgU0NNU0NyZWF0ZUJ1dHRvbixcbiAgU0NNU0NyZWF0ZUJ1dHRvblRleHQsXG4gIFNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdCxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZSxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZSxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrLFxuICBTQ01TS2ViYWJCdXR0b24sXG4gIFNDTVNMb2FkV3JhcHBlcixcbiAgU0NNU01ldGFEZXNjcmlwdGlvbixcbiAgU0NNU01ldGFSb3csXG4gIFNDTVNQYW5lbCxcbiAgU0NNU1BhbmVsSGVhZGVyLFxuICBTQ01TTGlzdFNjcm9sbEFyZWEsXG4gIFNDTVNTZWFyY2hJbnB1dCxcbiAgU0NNU1NlYXJjaFdyYXBwZXIsXG4gIFNDTVNUYWJCYXIsXG4gIFNDTVNUYWJCdXR0b24sXG4gIFNDTVNUaXRsZSxcbiAgU0NNU1RpdGxlQmxvY2ssXG59IGZyb20gJy4vQ2hhdEFJTXlTa2lsbHMuc3R5bGVzJ1xuXG50eXBlIENoYXRBSU15U2tpbGxzUHJvcHMgPSB7XG4gIG15U2tpbGxzOiBTa2lsbFtdXG4gIHNoYXJlZFNraWxsczogU2tpbGxbXVxuICBsb2FkaW5nPzogYm9vbGVhblxuICBvbkRlbGV0ZVNraWxsPzogKHNraWxsSWQ6IHN0cmluZykgPT4gdm9pZFxufVxuXG50eXBlIFNraWxsc1RhYiA9ICdtaW5lJyB8ICdzaGFyZWQnXG5cbnR5cGUgU2tpbGxNb2RhbEludGVudCA9ICdnZW5lcmF0ZScgfCAnd3JpdGUnXG5cbnR5cGUgRHJvcGRvd25QbGFjZW1lbnQgPSAndG9wJyB8ICdib3R0b20nXG5cbmNvbnN0IERST1BET1dOX0dBUF9QWCA9IDZcbmNvbnN0IENBUkRfTUVOVV9IRUlHSFRfUFggPSA4OFxuXG5jb25zdCByZXNvbHZlRHJvcGRvd25QbGFjZW1lbnQgPSAoYW5jaG9yOiBIVE1MRWxlbWVudCwgZHJvcGRvd25IZWlnaHQ6IG51bWJlcik6IERyb3Bkb3duUGxhY2VtZW50ID0+IHtcbiAgY29uc3QgcmVjdCA9IGFuY2hvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBzcGFjZUJlbG93ID0gd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b20gLSBEUk9QRE9XTl9HQVBfUFhcbiAgY29uc3Qgc3BhY2VBYm92ZSA9IHJlY3QudG9wIC0gRFJPUERPV05fR0FQX1BYXG5cbiAgaWYgKHNwYWNlQmVsb3cgPj0gZHJvcGRvd25IZWlnaHQpIHJldHVybiAnYm90dG9tJ1xuICBpZiAoc3BhY2VBYm92ZSA+PSBkcm9wZG93bkhlaWdodCkgcmV0dXJuICd0b3AnXG4gIHJldHVybiBzcGFjZUJlbG93ID49IHNwYWNlQWJvdmUgPyAnYm90dG9tJyA6ICd0b3AnXG59XG5cbmNvbnN0IGZvcm1hdFNraWxsRGlzcGxheU5hbWUgPSAobmFtZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBuYW1lLnJlcGxhY2UoL14oQFxcL3wjKS8sICcnKVxuICByZXR1cm4gYCMke25vcm1hbGl6ZWR9YFxufVxuXG5jb25zdCBvcGVuU2tpbGxNb2RhbCA9ICh2YWx1ZXM6IHtcbiAgaXNFZGl0aW5nOiBib29sZWFuXG4gIGlzUmVhZE9ubHk/OiBib29sZWFuXG4gIGludGVudD86IFNraWxsTW9kYWxJbnRlbnRcbiAgZ2VuZXJhbD86IHtcbiAgICBpZD86IHN0cmluZ1xuICAgIG5hbWU/OiBzdHJpbmdcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICAgIGNvbnRlbnQ/OiBzdHJpbmdcbiAgICBhY2Nlc3NfdHlwZT86IFNraWxsWydhY2Nlc3NfdHlwZSddXG4gICAgY3JlYXRlZF9ieV9uYW1lPzogc3RyaW5nXG4gICAgdXBkYXRlZF9hdD86IHN0cmluZ1xuICB9XG59KSA9PiB7XG4gIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgbmV3IEN1c3RvbUV2ZW50KCdhYm0tc2tpbGwtbW9kYWwtc2V0LXZhbHVlcycsIHtcbiAgICAgIGRldGFpbDoge1xuICAgICAgICBza2lsbFZhbHVlczoge1xuICAgICAgICAgIHZhbHVlcyxcbiAgICAgICAgICBpc09wZW46IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pXG4gIClcbn1cblxuY29uc3QgU2tpbGxTZWFyY2hJbnB1dCA9IFJlYWN0Lm1lbW8oXG4gICh7IG9uU2VhcmNoLCBwbGFjZWhvbGRlciB9OiB7IG9uU2VhcmNoOiAocXVlcnk6IHN0cmluZykgPT4gdm9pZDsgcGxhY2Vob2xkZXI6IHN0cmluZyB9KSA9PiB7XG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgnJylcbiAgICBjb25zdCBkZWJvdW5jZVJlZiA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpXG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAgIChldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgICAgIHNldFZhbHVlKG5leHRWYWx1ZSlcbiAgICAgICAgaWYgKGRlYm91bmNlUmVmLmN1cnJlbnQpIGNsZWFyVGltZW91dChkZWJvdW5jZVJlZi5jdXJyZW50KVxuICAgICAgICBkZWJvdW5jZVJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgb25TZWFyY2gobmV4dFZhbHVlLnRyaW0oKSlcbiAgICAgICAgfSwgMjUwKVxuICAgICAgfSxcbiAgICAgIFtvblNlYXJjaF1cbiAgICApXG5cbiAgICB1c2VFZmZlY3QoXG4gICAgICAoKSA9PiAoKSA9PiB7XG4gICAgICAgIGlmIChkZWJvdW5jZVJlZi5jdXJyZW50KSBjbGVhclRpbWVvdXQoZGVib3VuY2VSZWYuY3VycmVudClcbiAgICAgIH0sXG4gICAgICBbXVxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICA8U0NNU1NlYXJjaFdyYXBwZXI+XG4gICAgICAgIDxTZWFyY2ggd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSBjb2xvcj1cIiM5OTlcIiAvPlxuICAgICAgICA8U0NNU1NlYXJjaElucHV0IHR5cGU9XCJ0ZXh0XCIgdmFsdWU9e3ZhbHVlfSBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfSBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9IC8+XG4gICAgICA8L1NDTVNTZWFyY2hXcmFwcGVyPlxuICAgIClcbiAgfVxuKVxuXG5leHBvcnQgY29uc3QgQ2hhdEFJTXlTa2lsbHMgPSAoeyBteVNraWxscywgc2hhcmVkU2tpbGxzLCBsb2FkaW5nID0gZmFsc2UsIG9uRGVsZXRlU2tpbGwgfTogQ2hhdEFJTXlTa2lsbHNQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5jaGF0QUldKVxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyU3VjY2VzcywgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcbiAgY29uc3QgbGlzdFNjcm9sbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW2FjdGl2ZVRhYiwgc2V0QWN0aXZlVGFiXSA9IHVzZVN0YXRlPFNraWxsc1RhYj4oJ21pbmUnKVxuICBjb25zdCBbc2VhcmNoUXVlcnksIHNldFNlYXJjaFF1ZXJ5XSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbbWVudU9wZW5Gb3JTa2lsbElkLCBzZXRNZW51T3BlbkZvclNraWxsSWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2NhcmRNZW51UGxhY2VtZW50LCBzZXRDYXJkTWVudVBsYWNlbWVudF0gPSB1c2VTdGF0ZTxEcm9wZG93blBsYWNlbWVudD4oJ2JvdHRvbScpXG4gIGNvbnN0IFtza2lsbFRvRGVsZXRlLCBzZXRTa2lsbFRvRGVsZXRlXSA9IHVzZVN0YXRlPFNraWxsIHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNNaW5lVGFiID0gYWN0aXZlVGFiID09PSAnbWluZSdcblxuICBjb25zdCB0YWJTa2lsbHMgPSBpc01pbmVUYWIgPyBteVNraWxscyA6IHNoYXJlZFNraWxsc1xuXG4gIGNvbnN0IGZpbHRlcmVkU2tpbGxzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3Qgbm9ybWFsaXplZFF1ZXJ5ID0gc2VhcmNoUXVlcnkudG9Mb3dlckNhc2UoKVxuICAgIGNvbnN0IG1hdGNoZWQgPSBub3JtYWxpemVkUXVlcnlcbiAgICAgID8gdGFiU2tpbGxzLmZpbHRlcihza2lsbCA9PiBza2lsbC5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobm9ybWFsaXplZFF1ZXJ5KSlcbiAgICAgIDogdGFiU2tpbGxzXG4gICAgcmV0dXJuIFsuLi5tYXRjaGVkXS5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKVxuICB9LCBbc2VhcmNoUXVlcnksIHRhYlNraWxsc10pXG5cbiAgY29uc3QgaGFuZGxlQ3JlYXRlU2tpbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgb3BlblNraWxsTW9kYWwoeyBpc0VkaXRpbmc6IGZhbHNlLCBpbnRlbnQ6ICd3cml0ZScgfSlcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlQ2FyZE1lbnUgPSB1c2VDYWxsYmFjaygoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+LCBza2lsbElkOiBzdHJpbmcpID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBjb25zdCBjYXJkQW5jaG9yID0gZXZlbnQuY3VycmVudFRhcmdldC5jbG9zZXN0KCdbZGF0YS1za2lsbC1jYXJkLWlkXScpXG4gICAgaWYgKGNhcmRBbmNob3IgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgc2V0Q2FyZE1lbnVQbGFjZW1lbnQocmVzb2x2ZURyb3Bkb3duUGxhY2VtZW50KGNhcmRBbmNob3IsIENBUkRfTUVOVV9IRUlHSFRfUFgpKVxuICAgIH1cbiAgICBzZXRNZW51T3BlbkZvclNraWxsSWQocHJldiA9PiAocHJldiA9PT0gc2tpbGxJZCA/IG51bGwgOiBza2lsbElkKSlcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlT3BlblNraWxsID0gdXNlQ2FsbGJhY2soKHNraWxsOiBTa2lsbCwgaXNSZWFkT25seTogYm9vbGVhbikgPT4ge1xuICAgIG9wZW5Ta2lsbE1vZGFsKHtcbiAgICAgIGlzRWRpdGluZzogdHJ1ZSxcbiAgICAgIGlzUmVhZE9ubHksXG4gICAgICBnZW5lcmFsOiB7XG4gICAgICAgIGlkOiBza2lsbC5pZCxcbiAgICAgICAgbmFtZTogc2tpbGwubmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHNraWxsLmRlc2NyaXB0aW9uLFxuICAgICAgICBjb250ZW50OiBza2lsbC5jb250ZW50LFxuICAgICAgICBhY2Nlc3NfdHlwZTogc2tpbGwuYWNjZXNzX3R5cGUsXG4gICAgICAgIGNyZWF0ZWRfYnlfbmFtZTogc2tpbGwuY3JlYXRlZF9ieV9uYW1lLFxuICAgICAgICB1cGRhdGVkX2F0OiBza2lsbC51cGRhdGVkX2F0LFxuICAgICAgfSxcbiAgICB9KVxuICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICB9LCBbXSlcblxuICBjb25zdCBkZWxldGVNb2RhbENoYXQgPSB1c2VNZW1vKFxuICAgICgpID0+IChza2lsbFRvRGVsZXRlID8geyB0aXRsZTogc2tpbGxUb0RlbGV0ZS5uYW1lLCBpZDogc2tpbGxUb0RlbGV0ZS5pZCB9IDogbnVsbCksXG4gICAgW3NraWxsVG9EZWxldGVdXG4gIClcblxuICBjb25zdCBoYW5kbGVDb25maXJtRGVsZXRlID0gYXN5bmMgKGNoYXQ6IHsgaWQ6IHN0cmluZyB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGRlbGV0ZVNraWxsKGNoYXQuaWQpXG4gICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnbXlTa2lsbHMuZGVsZXRlU3VjY2VzcycpKVxuICAgICAgb25EZWxldGVTa2lsbD8uKGNoYXQuaWQpXG4gICAgICBzZXRTa2lsbFRvRGVsZXRlKG51bGwpXG4gICAgICBzZXRNZW51T3BlbkZvclNraWxsSWQobnVsbClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy5kZWxldGVFcnJvcicpKVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKCkgPT4ge1xuICAgICAgaWYgKG1lbnVPcGVuRm9yU2tpbGxJZCkge1xuICAgICAgICBzZXRNZW51T3BlbkZvclNraWxsSWQobnVsbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuICB9LCBbbWVudU9wZW5Gb3JTa2lsbElkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbWVudU9wZW5Gb3JTa2lsbElkKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBjb25zdCBoYW5kbGVSZXBvc2l0aW9uID0gKCkgPT4ge1xuICAgICAgY29uc3Qgb3BlbkNhcmQgPSBsaXN0U2Nyb2xsUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3I8SFRNTEJ1dHRvbkVsZW1lbnQ+KFxuICAgICAgICBgW2RhdGEtc2tpbGwtY2FyZC1pZD1cIiR7bWVudU9wZW5Gb3JTa2lsbElkfVwiXWBcbiAgICAgIClcbiAgICAgIGlmIChvcGVuQ2FyZCkge1xuICAgICAgICBzZXRDYXJkTWVudVBsYWNlbWVudChyZXNvbHZlRHJvcGRvd25QbGFjZW1lbnQob3BlbkNhcmQsIENBUkRfTUVOVV9IRUlHSFRfUFgpKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHNjcm9sbENvbnRhaW5lciA9IGxpc3RTY3JvbGxSZWYuY3VycmVudFxuICAgIHNjcm9sbENvbnRhaW5lcj8uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlUmVwb3NpdGlvbiwgeyBwYXNzaXZlOiB0cnVlIH0pXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlcG9zaXRpb24pXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgc2Nyb2xsQ29udGFpbmVyPy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVSZXBvc2l0aW9uKVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlcG9zaXRpb24pXG4gICAgfVxuICB9LCBbbWVudU9wZW5Gb3JTa2lsbElkXSlcblxuICBjb25zdCB0YWJEZXNjcmlwdGlvbiA9IGlzTWluZVRhYiA/IHQoJ215U2tpbGxzLm15U2tpbGxzRGVzY3JpcHRpb24nKSA6IHQoJ215U2tpbGxzLnNoYXJlZFNraWxsc0Rlc2NyaXB0aW9uJylcblxuICBjb25zdCBpc01pbmVFbXB0eSA9IGlzTWluZVRhYiAmJiAhbG9hZGluZyAmJiBteVNraWxscy5sZW5ndGggPT09IDAgJiYgIXNlYXJjaFF1ZXJ5XG4gIGNvbnN0IHNob3dTa2lsbHNUb29sYmFyID0gaXNNaW5lVGFiID8gIWlzTWluZUVtcHR5IDogdGFiU2tpbGxzLmxlbmd0aCA+IDAgfHwgISFzZWFyY2hRdWVyeVxuXG4gIGNvbnN0IHJlbmRlckNyZWF0ZVNraWxsQnV0dG9uID0gKCkgPT4gKFxuICAgIDxTQ01TQ3JlYXRlQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVDcmVhdGVTa2lsbH0+XG4gICAgICA8U0NNU0NyZWF0ZUJ1dHRvblRleHQ+e3QoJ215U2tpbGxzLmNyZWF0ZVNraWxsJyl9PC9TQ01TQ3JlYXRlQnV0dG9uVGV4dD5cbiAgICA8L1NDTVNDcmVhdGVCdXR0b24+XG4gIClcblxuICBjb25zdCByZW5kZXJTZWFyY2hFbXB0eVN0YXRlID0gKCkgPT4gKFxuICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZT57dCgnbXlTa2lsbHMuc2VhcmNoRW1wdHlTdGF0ZVRpdGxlJyl9PC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPlxuICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZT57dCgnbXlTa2lsbHMuc2VhcmNoRW1wdHlTdGF0ZURlc2NyaXB0aW9uJyl9PC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPlxuICAgICAgPC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgPC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3Q+XG4gIClcblxuICBjb25zdCByZW5kZXJFbXB0eVN0YXRlID0gKCkgPT4ge1xuICAgIGlmICghaXNNaW5lVGFiKSB7XG4gICAgICBpZiAoc2VhcmNoUXVlcnkpIHtcbiAgICAgICAgcmV0dXJuIHJlbmRlclNlYXJjaEVtcHR5U3RhdGUoKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVSb290PlxuICAgICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZT57dCgnbXlTa2lsbHMuc2hhcmVkRW1wdHlTdGF0ZVRpdGxlJyl9PC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPlxuICAgICAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGU+e3QoJ215U2tpbGxzLnNoYXJlZEVtcHR5U3RhdGVEZXNjcmlwdGlvbicpfTwvU0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZT5cbiAgICAgICAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgPC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKHNlYXJjaFF1ZXJ5KSB7XG4gICAgICByZXR1cm4gcmVuZGVyU2VhcmNoRW1wdHlTdGF0ZSgpXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGU+e3QoJ215U2tpbGxzLmVtcHR5U3RhdGVUaXRsZScpfTwvU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZT5cbiAgICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZT57dCgnbXlTa2lsbHMuZW1wdHlTdGF0ZURlc2NyaXB0aW9uJyl9PC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPlxuICAgICAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAge3JlbmRlckNyZWF0ZVNraWxsQnV0dG9uKCl9XG4gICAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ01TQ29udGFpbmVyPlxuICAgICAgPFNDTVNCb2R5PlxuICAgICAgICA8U0NNU1RpdGxlQmxvY2s+XG4gICAgICAgICAgPFNDTVNUaXRsZT57dCgnbXlTa2lsbHMudGl0bGUnKX08L1NDTVNUaXRsZT5cbiAgICAgICAgPC9TQ01TVGl0bGVCbG9jaz5cblxuICAgICAgICA8U0NNU1BhbmVsPlxuICAgICAgICAgIDxTQ01TUGFuZWxIZWFkZXI+XG4gICAgICAgICAgICA8U0NNU1RhYkJhcj5cbiAgICAgICAgICAgICAgPFNDTVNUYWJCdXR0b24gdHlwZT1cImJ1dHRvblwiICRhY3RpdmU9e2lzTWluZVRhYn0gb25DbGljaz17KCkgPT4gc2V0QWN0aXZlVGFiKCdtaW5lJyl9PlxuICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy50YWJNeVNraWxscycpfVxuICAgICAgICAgICAgICA8L1NDTVNUYWJCdXR0b24+XG4gICAgICAgICAgICAgIDxTQ01TVGFiQnV0dG9uIHR5cGU9XCJidXR0b25cIiAkYWN0aXZlPXshaXNNaW5lVGFifSBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVUYWIoJ3NoYXJlZCcpfT5cbiAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMudGFiU2hhcmVkU2tpbGxzJyl9XG4gICAgICAgICAgICAgIDwvU0NNU1RhYkJ1dHRvbj5cbiAgICAgICAgICAgIDwvU0NNU1RhYkJhcj5cblxuICAgICAgICAgICAge3Nob3dTa2lsbHNUb29sYmFyID8gKFxuICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgIDxTQ01TTWV0YVJvdz5cbiAgICAgICAgICAgICAgICAgIDxTQ01TTWV0YURlc2NyaXB0aW9uPnt0YWJEZXNjcmlwdGlvbn08L1NDTVNNZXRhRGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgICB7aXNNaW5lVGFiID8gcmVuZGVyQ3JlYXRlU2tpbGxCdXR0b24oKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9TQ01TTWV0YVJvdz5cblxuICAgICAgICAgICAgICAgIDxTa2lsbFNlYXJjaElucHV0IG9uU2VhcmNoPXtzZXRTZWFyY2hRdWVyeX0gcGxhY2Vob2xkZXI9e3QoJ215U2tpbGxzLnNlYXJjaFBsYWNlaG9sZGVyJyl9IC8+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9TQ01TUGFuZWxIZWFkZXI+XG5cbiAgICAgICAgICA8U0NNU0xpc3RTY3JvbGxBcmVhIHJlZj17bGlzdFNjcm9sbFJlZn0+XG4gICAgICAgICAgICB7bG9hZGluZyA/IChcbiAgICAgICAgICAgICAgPFNDTVNMb2FkV3JhcHBlcj5cbiAgICAgICAgICAgICAgICA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+XG4gICAgICAgICAgICAgIDwvU0NNU0xvYWRXcmFwcGVyPlxuICAgICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICAgIHshbG9hZGluZyAmJiBmaWx0ZXJlZFNraWxscy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgIDxTQ01TQ2FyZHNMaXN0PlxuICAgICAgICAgICAgICAgIHtmaWx0ZXJlZFNraWxscy5tYXAoKHNraWxsLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGtleT17c2tpbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLXNraWxsLWNhcmQtaWQ9e3NraWxsLmlkfVxuICAgICAgICAgICAgICAgICAgICAkaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAkZWxldmF0ZWQ9e21lbnVPcGVuRm9yU2tpbGxJZCA9PT0gc2tpbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZU9wZW5Ta2lsbChza2lsbCwgIWlzTWluZVRhYil9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZFRvcFJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRUaXRsZU5hbWU+e2Zvcm1hdFNraWxsRGlzcGxheU5hbWUoc2tpbGwubmFtZSl9PC9TQ01TQ2FyZFRpdGxlTmFtZT5cbiAgICAgICAgICAgICAgICAgICAgICB7aXNNaW5lVGFiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNLZWJhYkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJHZpc2libGU9e21lbnVPcGVuRm9yU2tpbGxJZCA9PT0gc2tpbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLmNhcmRNZW51QXJpYUxhYmVsJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IGhhbmRsZVRvZ2dsZUNhcmRNZW51KGV2ZW50LCBza2lsbC5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNZW51RG90cyBjb2xvcj1cIiM4MDgwODBcIiB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNLZWJhYkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZFRvcFJvdz5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkQ29udGVudFRleHQ+e3NraWxsLmRlc2NyaXB0aW9uIHx8IHNraWxsLmNvbnRlbnR9PC9TQ01TQ2FyZENvbnRlbnRUZXh0PlxuICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRWaXNpYmlsaXR5Um93PlxuICAgICAgICAgICAgICAgICAgICAgIHtpc01pbmVUYWIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7c2tpbGwuYWNjZXNzX3R5cGUgPT09ICdjb21wYW55JyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2tpbGxWaXNpYmlsaXR5RXZlcnlvbmVJY29uIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNraWxsVmlzaWJpbGl0eU9ubHlNZUljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkVmlzaWJpbGl0eVRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3NraWxsLmFjY2Vzc190eXBlID09PSAnY29tcGFueSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdCgnbXlTa2lsbHMudmlzaWJpbGl0eUV2ZXJ5b25lJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdCgnbXlTa2lsbHMudmlzaWJpbGl0eU9ubHlNZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkVmlzaWJpbGl0eVRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkVmlzaWJpbGl0eVRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5zaGFyZWRDcmVhdGVkQnknLCB7IG5hbWU6IHNraWxsLmNyZWF0ZWRfYnlfbmFtZSB8fCAnJyB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRWaXNpYmlsaXR5VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkVmlzaWJpbGl0eVJvdz5cbiAgICAgICAgICAgICAgICAgICAge21lbnVPcGVuRm9yU2tpbGxJZCA9PT0gc2tpbGwuaWQgJiYgaXNNaW5lVGFiID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVcbiAgICAgICAgICAgICAgICAgICAgICAgICRwbGFjZW1lbnQ9e2NhcmRNZW51UGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVJdGVtIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBoYW5kbGVPcGVuU2tpbGwoc2tpbGwsIGZhbHNlKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5lZGl0Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRNZW51SXRlbSB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gc2V0U2tpbGxUb0RlbGV0ZShza2lsbCl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuZGVsZXRlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZE1lbnU+XG4gICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZEJ1dHRvbj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TQ01TQ2FyZHNMaXN0PlxuICAgICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICAgIHshbG9hZGluZyAmJiAhZmlsdGVyZWRTa2lsbHMubGVuZ3RoID8gcmVuZGVyRW1wdHlTdGF0ZSgpIDogbnVsbH1cbiAgICAgICAgICA8L1NDTVNMaXN0U2Nyb2xsQXJlYT5cbiAgICAgICAgPC9TQ01TUGFuZWw+XG4gICAgICA8L1NDTVNCb2R5PlxuXG4gICAgICB7ZGVsZXRlTW9kYWxDaGF0ID8gKFxuICAgICAgICA8RGVsZXRlUXVlc3Rpb25Nb2RhbFxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNraWxsVG9EZWxldGUobnVsbCl9XG4gICAgICAgICAgaGFuZGxlcnM9e3tcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb246IGhhbmRsZUNvbmZpcm1EZWxldGUsXG4gICAgICAgICAgfX1cbiAgICAgICAgICBjaGF0PXtkZWxldGVNb2RhbENoYXR9XG4gICAgICAgICAgYWN0aW9uPVwic2tpbGxcIlxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgPC9TQ01TQ29udGFpbmVyPlxuICApXG59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