@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,550 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
- import _regeneratorRuntime from "@babel/runtime/regenerator";
5
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
6
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
- /* eslint-disable @typescript-eslint/no-explicit-any */
8
- import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
9
- import { createPortal } from 'react-dom';
10
- import { Cross } from '@projectcor/icons/lib/components/Cross';
11
- import { FileUpload } from '@projectcor/icons/lib/components/FileUpload';
12
- import { useTranslation } from 'react-i18next';
13
- import { Backdrop } from '../../atoms/Backdrop';
14
- import { Loader } from '../../atoms/Loader';
15
- import { Switch } from '../../atoms/Switch';
16
- import { SECTIONS } from '../../../constants/config';
17
- import { useUser, isCollaboratorRole } from '../../../context/cor-user';
18
- import { useSnackBarManager } from '../../../hooks/useSnackBarManager/useSnackBarManager';
19
- import { formatDate } from '../../../lang/utils';
20
- import { createSkill } from '../../../services/maia/Skills/createSkill';
21
- import { updateSkill } from '../../../services/maia/Skills/updateSkill';
22
- import { deleteSkill } from '../../../services/maia/Skills/deleteSkill';
23
- import { DeleteQuestionModal } from '../DeleteQuestionModal/DeleteQuestionModal';
24
- import { SCASMCancelButton, SCASMCloseButton, SCASMBody, SCASMDeleteSlot, SCASMFieldBox, SCASMFieldInput, SCASMFieldLabel, SCASMFieldTextarea, SCASMFooter, SCASMHeader, SCASMHeaderTitle, SCASMHiddenFileInput, SCASMInstructionsField, SCASMInstructionsHeader, SCASMInstructionsPanel, SCASMInstructionsTextarea, SCASMInstructionsTitle, SCASMMetadataItem, SCASMMetadataLabel, SCASMMetadataRow, SCASMMetadataValue, SCASMSaveOutlinedButton, SCASMSavePrimaryButton, SCASMSwitchLabel, SCASMSwitchRow, SCASMUploadButton, SCASMWrapper } from './AbmSkillModal.styles';
25
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
26
- export var SKILL_USE_AFTER_SAVE_EVENT = 'maia-use-skill-after-save';
27
- var initialValues = {
28
- isEditing: false,
29
- general: {
30
- id: undefined,
31
- name: '',
32
- description: '',
33
- content: '',
34
- access_type: 'only_me'
35
- }
36
- };
37
- var emptyBaseline = {
38
- name: '',
39
- description: '',
40
- content: '',
41
- access_type: 'only_me'
42
- };
43
- var parseDescriptionFromContent = function parseDescriptionFromContent(content) {
44
- var frontmatterMatch = content.match(/^---\s*\n([\s\S]*?)\n---/);
45
- if (!frontmatterMatch) return '';
46
- var descriptionMatch = frontmatterMatch[1].match(/^description:\s*(.+)$/m);
47
- return descriptionMatch ? descriptionMatch[1].trim() : '';
48
- };
49
- export var AbmSkillModal = function AbmSkillModal(_ref) {
50
- var _values$general, _values$general2, _values$general3, _values$general4, _values$general5, _values$general7, _values$general9;
51
- var addSkill = _ref.addSkill,
52
- updateSkillInList = _ref.updateSkillInList,
53
- removeSkill = _ref.removeSkill;
54
- var _useTranslation = useTranslation([SECTIONS.chatAI]),
55
- t = _useTranslation.t;
56
- var user = useUser();
57
- var _useSnackBarManager = useSnackBarManager(),
58
- handleSnackbarSuccess = _useSnackBarManager.handleSnackbarSuccess,
59
- handleSnackbarError = _useSnackBarManager.handleSnackbarError;
60
- var _useState = useState(false),
61
- _useState2 = _slicedToArray(_useState, 2),
62
- isOpen = _useState2[0],
63
- setIsOpen = _useState2[1];
64
- var _useState3 = useState(false),
65
- _useState4 = _slicedToArray(_useState3, 2),
66
- isSubmitting = _useState4[0],
67
- setIsSubmitting = _useState4[1];
68
- var _useState5 = useState(false),
69
- _useState6 = _slicedToArray(_useState5, 2),
70
- showDelete = _useState6[0],
71
- setShowDelete = _useState6[1];
72
- var _useState7 = useState(false),
73
- _useState8 = _slicedToArray(_useState7, 2),
74
- pendingUpload = _useState8[0],
75
- setPendingUpload = _useState8[1];
76
- var _useState9 = useState(initialValues),
77
- _useState0 = _slicedToArray(_useState9, 2),
78
- values = _useState0[0],
79
- setValues = _useState0[1];
80
- var fileInputRef = useRef(null);
81
- var initialRef = useRef(emptyBaseline);
82
- var isReadOnly = !!values.isReadOnly;
83
- var canShareWithCompany = !isCollaboratorRole(user.role_id) && !isReadOnly;
84
- var name = ((_values$general = values.general) === null || _values$general === void 0 ? void 0 : _values$general.name) || '';
85
- var description = ((_values$general2 = values.general) === null || _values$general2 === void 0 ? void 0 : _values$general2.description) || '';
86
- var content = ((_values$general3 = values.general) === null || _values$general3 === void 0 ? void 0 : _values$general3.content) || '';
87
- var accessType = ((_values$general4 = values.general) === null || _values$general4 === void 0 ? void 0 : _values$general4.access_type) || 'only_me';
88
- var effectiveAccessType = canShareWithCompany ? accessType : 'only_me';
89
- var skillId = (_values$general5 = values.general) === null || _values$general5 === void 0 ? void 0 : _values$general5.id;
90
- var isValid = !!name.trim() && !!description.trim() && !!content.trim();
91
- var hasChanges = name.trim() !== initialRef.current.name || description.trim() !== initialRef.current.description || content.trim() !== initialRef.current.content || canShareWithCompany && effectiveAccessType !== initialRef.current.access_type;
92
- var createdByLabel = useMemo(function () {
93
- var _values$general6;
94
- return ((_values$general6 = values.general) === null || _values$general6 === void 0 || (_values$general6 = _values$general6.created_by_name) === null || _values$general6 === void 0 ? void 0 : _values$general6.trim()) || "".concat(user.firstName, " ").concat(user.lastName).trim();
95
- }, [(_values$general7 = values.general) === null || _values$general7 === void 0 ? void 0 : _values$general7.created_by_name, user.firstName, user.lastName]);
96
- var lastUpdatedLabel = useMemo(function () {
97
- var _values$general8;
98
- var updatedAt = (_values$general8 = values.general) === null || _values$general8 === void 0 ? void 0 : _values$general8.updated_at;
99
- if (!updatedAt) return '';
100
- var parsed = new Date(updatedAt);
101
- if (Number.isNaN(parsed.getTime())) return '';
102
- return formatDate(parsed);
103
- }, [(_values$general9 = values.general) === null || _values$general9 === void 0 ? void 0 : _values$general9.updated_at]);
104
- var handleClose = useCallback(function () {
105
- setIsOpen(false);
106
- setShowDelete(false);
107
- setPendingUpload(false);
108
- setValues(initialValues);
109
- initialRef.current = emptyBaseline;
110
- }, []);
111
- var handleBackdropClick = useCallback(function (event) {
112
- if (event.target === event.currentTarget) {
113
- handleClose();
114
- }
115
- }, [handleClose]);
116
- useEffect(function () {
117
- var handleSetSkillValues = function handleSetSkillValues(event) {
118
- var _skillValues$values, _skillValues$values2, _skillValues$values3;
119
- var _ref2 = event.detail || {},
120
- skillValues = _ref2.skillValues;
121
- if (!skillValues) return;
122
- var incomingGeneral = _objectSpread(_objectSpread({}, initialValues.general), (_skillValues$values = skillValues.values) === null || _skillValues$values === void 0 ? void 0 : _skillValues$values.general);
123
- var incomingName = (incomingGeneral.name || '').trim();
124
- var incomingDescription = (incomingGeneral.description || '').trim();
125
- var incomingContent = (incomingGeneral.content || '').trim();
126
- var incomingAccessType = isCollaboratorRole(user.role_id) ? 'only_me' : incomingGeneral.access_type || 'only_me';
127
- var parsedDescription = incomingDescription || (incomingContent ? parseDescriptionFromContent(incomingContent) : '');
128
- initialRef.current = (_skillValues$values2 = skillValues.values) !== null && _skillValues$values2 !== void 0 && _skillValues$values2.isEditing ? {
129
- name: incomingName,
130
- description: parsedDescription,
131
- content: incomingContent,
132
- access_type: incomingAccessType
133
- } : emptyBaseline;
134
- setValues(_objectSpread(_objectSpread(_objectSpread({}, initialValues), skillValues.values), {}, {
135
- general: _objectSpread(_objectSpread({}, incomingGeneral), {}, {
136
- description: parsedDescription,
137
- access_type: incomingAccessType
138
- })
139
- }));
140
- setPendingUpload(((_skillValues$values3 = skillValues.values) === null || _skillValues$values3 === void 0 ? void 0 : _skillValues$values3.intent) === 'upload');
141
- setIsOpen(!!skillValues.isOpen);
142
- };
143
- document.addEventListener('abm-skill-modal-set-values', handleSetSkillValues);
144
- return function () {
145
- document.removeEventListener('abm-skill-modal-set-values', handleSetSkillValues);
146
- };
147
- }, [user.role_id]);
148
- useEffect(function () {
149
- if (isOpen && pendingUpload) {
150
- var _fileInputRef$current;
151
- setPendingUpload(false);
152
- (_fileInputRef$current = fileInputRef.current) === null || _fileInputRef$current === void 0 || _fileInputRef$current.click();
153
- }
154
- }, [isOpen, pendingUpload]);
155
- var handleChangeField = function handleChangeField(field, value) {
156
- setValues(function (prev) {
157
- return _objectSpread(_objectSpread({}, prev), {}, {
158
- general: _objectSpread(_objectSpread({}, prev.general), {}, _defineProperty({}, field, value))
159
- });
160
- });
161
- };
162
- var handleAccessTypeChange = function handleAccessTypeChange(checked) {
163
- if (!canShareWithCompany) return;
164
- setValues(function (prev) {
165
- return _objectSpread(_objectSpread({}, prev), {}, {
166
- general: _objectSpread(_objectSpread({}, prev.general), {}, {
167
- access_type: checked ? 'company' : 'only_me'
168
- })
169
- });
170
- });
171
- };
172
- var handleUploadClick = function handleUploadClick() {
173
- var _fileInputRef$current2;
174
- (_fileInputRef$current2 = fileInputRef.current) === null || _fileInputRef$current2 === void 0 || _fileInputRef$current2.click();
175
- };
176
- var handleFileChange = /*#__PURE__*/function () {
177
- var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(event) {
178
- var _event$target$files;
179
- var file, isMarkdown, text, baseName, parsedDescription, _t;
180
- return _regeneratorRuntime.wrap(function (_context) {
181
- while (1) switch (_context.prev = _context.next) {
182
- case 0:
183
- file = (_event$target$files = event.target.files) === null || _event$target$files === void 0 ? void 0 : _event$target$files[0];
184
- if (fileInputRef.current) {
185
- fileInputRef.current.value = '';
186
- }
187
- if (file) {
188
- _context.next = 1;
189
- break;
190
- }
191
- return _context.abrupt("return");
192
- case 1:
193
- isMarkdown = /\.(md|markdown)$/i.test(file.name);
194
- if (isMarkdown) {
195
- _context.next = 2;
196
- break;
197
- }
198
- handleSnackbarError(t('mySkills.uploadError'));
199
- return _context.abrupt("return");
200
- case 2:
201
- _context.prev = 2;
202
- _context.next = 3;
203
- return file.text();
204
- case 3:
205
- text = _context.sent;
206
- baseName = file.name.replace(/\.(md|markdown)$/i, '');
207
- parsedDescription = parseDescriptionFromContent(text);
208
- setValues(function (prev) {
209
- var _prev$general, _prev$general2, _prev$general3;
210
- return _objectSpread(_objectSpread({}, prev), {}, {
211
- general: _objectSpread(_objectSpread({}, prev.general), {}, {
212
- content: text,
213
- description: (_prev$general = prev.general) !== null && _prev$general !== void 0 && (_prev$general = _prev$general.description) !== null && _prev$general !== void 0 && _prev$general.trim() ? prev.general.description : parsedDescription || ((_prev$general2 = prev.general) === null || _prev$general2 === void 0 ? void 0 : _prev$general2.description) || '',
214
- name: (_prev$general3 = prev.general) !== null && _prev$general3 !== void 0 && (_prev$general3 = _prev$general3.name) !== null && _prev$general3 !== void 0 && _prev$general3.trim() ? prev.general.name : baseName
215
- })
216
- });
217
- });
218
- _context.next = 5;
219
- break;
220
- case 4:
221
- _context.prev = 4;
222
- _t = _context["catch"](2);
223
- handleSnackbarError(t('mySkills.uploadError'));
224
- case 5:
225
- case "end":
226
- return _context.stop();
227
- }
228
- }, _callee, null, [[2, 4]]);
229
- }));
230
- return function handleFileChange(_x) {
231
- return _ref3.apply(this, arguments);
232
- };
233
- }();
234
- var persistSkill = /*#__PURE__*/function () {
235
- var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
236
- var payload, updated, created;
237
- return _regeneratorRuntime.wrap(function (_context2) {
238
- while (1) switch (_context2.prev = _context2.next) {
239
- case 0:
240
- payload = {
241
- name: name.trim(),
242
- description: description.trim(),
243
- content: content.trim(),
244
- access_type: effectiveAccessType
245
- };
246
- if (!(values.isEditing && skillId)) {
247
- _context2.next = 2;
248
- break;
249
- }
250
- _context2.next = 1;
251
- return updateSkill(skillId, payload);
252
- case 1:
253
- updated = _context2.sent;
254
- updateSkillInList === null || updateSkillInList === void 0 || updateSkillInList(updated);
255
- handleSnackbarSuccess(t('mySkills.updateSuccess'));
256
- return _context2.abrupt("return", updated);
257
- case 2:
258
- _context2.next = 3;
259
- return createSkill(payload);
260
- case 3:
261
- created = _context2.sent;
262
- addSkill === null || addSkill === void 0 || addSkill(created);
263
- handleSnackbarSuccess(t('mySkills.createSuccess'));
264
- return _context2.abrupt("return", created);
265
- case 4:
266
- case "end":
267
- return _context2.stop();
268
- }
269
- }, _callee2);
270
- }));
271
- return function persistSkill() {
272
- return _ref4.apply(this, arguments);
273
- };
274
- }();
275
- var handleSave = /*#__PURE__*/function () {
276
- var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
277
- var _t2;
278
- return _regeneratorRuntime.wrap(function (_context3) {
279
- while (1) switch (_context3.prev = _context3.next) {
280
- case 0:
281
- if (!(!isValid || isSubmitting || !hasChanges)) {
282
- _context3.next = 1;
283
- break;
284
- }
285
- return _context3.abrupt("return");
286
- case 1:
287
- setIsSubmitting(true);
288
- _context3.prev = 2;
289
- _context3.next = 3;
290
- return persistSkill();
291
- case 3:
292
- handleClose();
293
- _context3.next = 5;
294
- break;
295
- case 4:
296
- _context3.prev = 4;
297
- _t2 = _context3["catch"](2);
298
- handleSnackbarError(values.isEditing ? t('mySkills.updateError') : t('mySkills.createError'));
299
- case 5:
300
- _context3.prev = 5;
301
- setIsSubmitting(false);
302
- return _context3.finish(5);
303
- case 6:
304
- case "end":
305
- return _context3.stop();
306
- }
307
- }, _callee3, null, [[2, 4, 5, 6]]);
308
- }));
309
- return function handleSave() {
310
- return _ref5.apply(this, arguments);
311
- };
312
- }();
313
- var handleSaveAndUse = /*#__PURE__*/function () {
314
- var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
315
- var savedSkill, _t3;
316
- return _regeneratorRuntime.wrap(function (_context4) {
317
- while (1) switch (_context4.prev = _context4.next) {
318
- case 0:
319
- if (!(!isValid || isSubmitting)) {
320
- _context4.next = 1;
321
- break;
322
- }
323
- return _context4.abrupt("return");
324
- case 1:
325
- setIsSubmitting(true);
326
- _context4.prev = 2;
327
- _context4.next = 3;
328
- return persistSkill();
329
- case 3:
330
- savedSkill = _context4.sent;
331
- if (savedSkill) {
332
- document.dispatchEvent(new CustomEvent(SKILL_USE_AFTER_SAVE_EVENT, {
333
- detail: {
334
- skill: savedSkill
335
- }
336
- }));
337
- }
338
- handleClose();
339
- _context4.next = 5;
340
- break;
341
- case 4:
342
- _context4.prev = 4;
343
- _t3 = _context4["catch"](2);
344
- handleSnackbarError(values.isEditing ? t('mySkills.updateError') : t('mySkills.createError'));
345
- case 5:
346
- _context4.prev = 5;
347
- setIsSubmitting(false);
348
- return _context4.finish(5);
349
- case 6:
350
- case "end":
351
- return _context4.stop();
352
- }
353
- }, _callee4, null, [[2, 4, 5, 6]]);
354
- }));
355
- return function handleSaveAndUse() {
356
- return _ref6.apply(this, arguments);
357
- };
358
- }();
359
- var handleConfirmDelete = /*#__PURE__*/function () {
360
- var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5() {
361
- var _t4;
362
- return _regeneratorRuntime.wrap(function (_context5) {
363
- while (1) switch (_context5.prev = _context5.next) {
364
- case 0:
365
- if (skillId) {
366
- _context5.next = 1;
367
- break;
368
- }
369
- return _context5.abrupt("return");
370
- case 1:
371
- _context5.prev = 1;
372
- _context5.next = 2;
373
- return deleteSkill(skillId);
374
- case 2:
375
- removeSkill === null || removeSkill === void 0 || removeSkill(skillId);
376
- handleSnackbarSuccess(t('mySkills.deleteSuccess'));
377
- handleClose();
378
- _context5.next = 4;
379
- break;
380
- case 3:
381
- _context5.prev = 3;
382
- _t4 = _context5["catch"](1);
383
- handleSnackbarError(t('mySkills.deleteError'));
384
- case 4:
385
- case "end":
386
- return _context5.stop();
387
- }
388
- }, _callee5, null, [[1, 3]]);
389
- }));
390
- return function handleConfirmDelete() {
391
- return _ref7.apply(this, arguments);
392
- };
393
- }();
394
- if (!isOpen) return null;
395
- var container = document.getElementById('modal-root-actions');
396
- if (!container) return null;
397
- var editOrCreateTitle = values.isEditing ? t('mySkills.editTitle') : t('mySkills.createTitle');
398
- var modalTitle = isReadOnly ? t('mySkills.viewTitle') : editOrCreateTitle;
399
- return /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(Backdrop, {
400
- zIndex: 1112,
401
- onClick: handleBackdropClick,
402
- children: [/*#__PURE__*/_jsxs(SCASMWrapper, {
403
- onClick: function onClick(event) {
404
- return event.stopPropagation();
405
- },
406
- children: [/*#__PURE__*/_jsxs(SCASMHeader, {
407
- children: [/*#__PURE__*/_jsx(SCASMHeaderTitle, {
408
- children: modalTitle
409
- }), /*#__PURE__*/_jsx(SCASMCloseButton, {
410
- type: "button",
411
- onClick: handleClose,
412
- "aria-label": t('mySkills.close'),
413
- children: /*#__PURE__*/_jsx(Cross, {
414
- color: "#a6a6a6",
415
- width: 18,
416
- height: 18
417
- })
418
- })]
419
- }), /*#__PURE__*/_jsxs(SCASMBody, {
420
- children: [/*#__PURE__*/_jsxs(SCASMFieldBox, {
421
- $height: 50,
422
- children: [/*#__PURE__*/_jsx(SCASMFieldLabel, {
423
- htmlFor: "skill-name-input",
424
- children: t('mySkills.nameLabel')
425
- }), /*#__PURE__*/_jsx(SCASMFieldInput, {
426
- id: "skill-name-input",
427
- type: "text",
428
- maxLength: 150,
429
- placeholder: t('mySkills.namePlaceholder'),
430
- value: name,
431
- disabled: isSubmitting || isReadOnly,
432
- onChange: function onChange(event) {
433
- return handleChangeField('name', event.target.value);
434
- }
435
- })]
436
- }), /*#__PURE__*/_jsxs(SCASMFieldBox, {
437
- $height: 120,
438
- $clipOverflow: true,
439
- children: [/*#__PURE__*/_jsx(SCASMFieldLabel, {
440
- htmlFor: "skill-description-input",
441
- children: t('mySkills.descriptionLabel')
442
- }), /*#__PURE__*/_jsx(SCASMFieldTextarea, {
443
- id: "skill-description-input",
444
- maxLength: 500,
445
- placeholder: t('mySkills.descriptionPlaceholder'),
446
- value: description,
447
- disabled: isSubmitting || isReadOnly,
448
- onChange: function onChange(event) {
449
- return handleChangeField('description', event.target.value);
450
- }
451
- })]
452
- }), canShareWithCompany ? /*#__PURE__*/_jsxs(SCASMSwitchRow, {
453
- children: [/*#__PURE__*/_jsx(Switch, {
454
- checked: accessType === 'company',
455
- onChange: handleAccessTypeChange,
456
- disabled: isSubmitting,
457
- "aria-label": t('mySkills.shareWithCompany')
458
- }), /*#__PURE__*/_jsx(SCASMSwitchLabel, {
459
- children: t('mySkills.shareWithCompany')
460
- })]
461
- }) : null, /*#__PURE__*/_jsxs(SCASMInstructionsPanel, {
462
- children: [/*#__PURE__*/_jsxs(SCASMInstructionsHeader, {
463
- children: [/*#__PURE__*/_jsx(SCASMInstructionsTitle, {
464
- children: t('mySkills.instructionsLabel')
465
- }), !isReadOnly ? /*#__PURE__*/_jsxs(_Fragment, {
466
- children: [/*#__PURE__*/_jsxs(SCASMUploadButton, {
467
- type: "button",
468
- onClick: handleUploadClick,
469
- disabled: isSubmitting,
470
- children: [/*#__PURE__*/_jsx(FileUpload, {
471
- width: 18,
472
- height: 18,
473
- color: "#08C"
474
- }), t('mySkills.uploadMd')]
475
- }), /*#__PURE__*/_jsx(SCASMHiddenFileInput, {
476
- ref: fileInputRef,
477
- type: "file",
478
- accept: ".md,.markdown,text/markdown",
479
- onChange: handleFileChange
480
- })]
481
- }) : null]
482
- }), /*#__PURE__*/_jsx(SCASMInstructionsField, {
483
- children: /*#__PURE__*/_jsx(SCASMInstructionsTextarea, {
484
- id: "skill-content-input",
485
- maxLength: 100000,
486
- placeholder: t('mySkills.contentPlaceholder'),
487
- value: content,
488
- disabled: isSubmitting || isReadOnly,
489
- onChange: function onChange(event) {
490
- return handleChangeField('content', event.target.value);
491
- }
492
- })
493
- })]
494
- }), values.isEditing ? /*#__PURE__*/_jsxs(SCASMMetadataRow, {
495
- children: [/*#__PURE__*/_jsxs(SCASMMetadataItem, {
496
- children: [/*#__PURE__*/_jsx(SCASMMetadataLabel, {
497
- children: t('mySkills.createdBy')
498
- }), /*#__PURE__*/_jsx(SCASMMetadataValue, {
499
- children: createdByLabel
500
- })]
501
- }), lastUpdatedLabel ? /*#__PURE__*/_jsxs(SCASMMetadataItem, {
502
- children: [/*#__PURE__*/_jsx(SCASMMetadataLabel, {
503
- children: t('mySkills.lastUpdated')
504
- }), /*#__PURE__*/_jsx(SCASMMetadataValue, {
505
- children: lastUpdatedLabel
506
- })]
507
- }) : null]
508
- }) : null]
509
- }), !isReadOnly ? /*#__PURE__*/_jsxs(SCASMFooter, {
510
- children: [values.isEditing ? /*#__PURE__*/_jsx(SCASMDeleteSlot, {
511
- children: /*#__PURE__*/_jsx(SCASMCancelButton, {
512
- type: "button",
513
- onClick: function onClick() {
514
- return setShowDelete(true);
515
- },
516
- disabled: isSubmitting,
517
- children: t('mySkills.delete')
518
- })
519
- }) : null, /*#__PURE__*/_jsx(SCASMSaveOutlinedButton, {
520
- type: "button",
521
- onClick: handleSave,
522
- disabled: !isValid || isSubmitting || !hasChanges,
523
- children: isSubmitting ? /*#__PURE__*/_jsx(Loader, {
524
- size: "small"
525
- }) : t('mySkills.save')
526
- }), /*#__PURE__*/_jsx(SCASMSavePrimaryButton, {
527
- type: "button",
528
- onClick: handleSaveAndUse,
529
- disabled: !isValid || isSubmitting,
530
- children: isSubmitting ? /*#__PURE__*/_jsx(Loader, {
531
- size: "small"
532
- }) : t('mySkills.saveAndUse')
533
- })]
534
- }) : null]
535
- }), showDelete && skillId ? /*#__PURE__*/_jsx(DeleteQuestionModal, {
536
- onClose: function onClose() {
537
- return setShowDelete(false);
538
- },
539
- handlers: {
540
- handleConfirmAction: handleConfirmDelete
541
- },
542
- chat: {
543
- title: name,
544
- id: skillId
545
- },
546
- action: "skill"
547
- }) : null]
548
- }), container);
549
- };
550
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIkNyb3NzIiwiRmlsZVVwbG9hZCIsInVzZVRyYW5zbGF0aW9uIiwiQmFja2Ryb3AiLCJMb2FkZXIiLCJTd2l0Y2giLCJTRUNUSU9OUyIsInVzZVVzZXIiLCJpc0NvbGxhYm9yYXRvclJvbGUiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJmb3JtYXREYXRlIiwiY3JlYXRlU2tpbGwiLCJ1cGRhdGVTa2lsbCIsImRlbGV0ZVNraWxsIiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsIlNDQVNNQ2FuY2VsQnV0dG9uIiwiU0NBU01DbG9zZUJ1dHRvbiIsIlNDQVNNQm9keSIsIlNDQVNNRGVsZXRlU2xvdCIsIlNDQVNNRmllbGRCb3giLCJTQ0FTTUZpZWxkSW5wdXQiLCJTQ0FTTUZpZWxkTGFiZWwiLCJTQ0FTTUZpZWxkVGV4dGFyZWEiLCJTQ0FTTUZvb3RlciIsIlNDQVNNSGVhZGVyIiwiU0NBU01IZWFkZXJUaXRsZSIsIlNDQVNNSGlkZGVuRmlsZUlucHV0IiwiU0NBU01JbnN0cnVjdGlvbnNGaWVsZCIsIlNDQVNNSW5zdHJ1Y3Rpb25zSGVhZGVyIiwiU0NBU01JbnN0cnVjdGlvbnNQYW5lbCIsIlNDQVNNSW5zdHJ1Y3Rpb25zVGV4dGFyZWEiLCJTQ0FTTUluc3RydWN0aW9uc1RpdGxlIiwiU0NBU01NZXRhZGF0YUl0ZW0iLCJTQ0FTTU1ldGFkYXRhTGFiZWwiLCJTQ0FTTU1ldGFkYXRhUm93IiwiU0NBU01NZXRhZGF0YVZhbHVlIiwiU0NBU01TYXZlT3V0bGluZWRCdXR0b24iLCJTQ0FTTVNhdmVQcmltYXJ5QnV0dG9uIiwiU0NBU01Td2l0Y2hMYWJlbCIsIlNDQVNNU3dpdGNoUm93IiwiU0NBU01VcGxvYWRCdXR0b24iLCJTQ0FTTVdyYXBwZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCIsImluaXRpYWxWYWx1ZXMiLCJpc0VkaXRpbmciLCJnZW5lcmFsIiwiaWQiLCJ1bmRlZmluZWQiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJjb250ZW50IiwiYWNjZXNzX3R5cGUiLCJlbXB0eUJhc2VsaW5lIiwicGFyc2VEZXNjcmlwdGlvbkZyb21Db250ZW50IiwiZnJvbnRtYXR0ZXJNYXRjaCIsIm1hdGNoIiwiZGVzY3JpcHRpb25NYXRjaCIsInRyaW0iLCJBYm1Ta2lsbE1vZGFsIiwiX3JlZiIsIl92YWx1ZXMkZ2VuZXJhbCIsIl92YWx1ZXMkZ2VuZXJhbDIiLCJfdmFsdWVzJGdlbmVyYWwzIiwiX3ZhbHVlcyRnZW5lcmFsNCIsIl92YWx1ZXMkZ2VuZXJhbDUiLCJfdmFsdWVzJGdlbmVyYWw3IiwiX3ZhbHVlcyRnZW5lcmFsOSIsImFkZFNraWxsIiwidXBkYXRlU2tpbGxJbkxpc3QiLCJyZW1vdmVTa2lsbCIsIl91c2VUcmFuc2xhdGlvbiIsImNoYXRBSSIsInQiLCJ1c2VyIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyU3VjY2VzcyIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzU3VibWl0dGluZyIsInNldElzU3VibWl0dGluZyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2hvd0RlbGV0ZSIsInNldFNob3dEZWxldGUiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInBlbmRpbmdVcGxvYWQiLCJzZXRQZW5kaW5nVXBsb2FkIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJ2YWx1ZXMiLCJzZXRWYWx1ZXMiLCJmaWxlSW5wdXRSZWYiLCJpbml0aWFsUmVmIiwiaXNSZWFkT25seSIsImNhblNoYXJlV2l0aENvbXBhbnkiLCJyb2xlX2lkIiwiYWNjZXNzVHlwZSIsImVmZmVjdGl2ZUFjY2Vzc1R5cGUiLCJza2lsbElkIiwiaXNWYWxpZCIsImhhc0NoYW5nZXMiLCJjdXJyZW50IiwiY3JlYXRlZEJ5TGFiZWwiLCJfdmFsdWVzJGdlbmVyYWw2IiwiY3JlYXRlZF9ieV9uYW1lIiwiY29uY2F0IiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJsYXN0VXBkYXRlZExhYmVsIiwiX3ZhbHVlcyRnZW5lcmFsOCIsInVwZGF0ZWRBdCIsInVwZGF0ZWRfYXQiLCJwYXJzZWQiLCJEYXRlIiwiTnVtYmVyIiwiaXNOYU4iLCJnZXRUaW1lIiwiaGFuZGxlQ2xvc2UiLCJoYW5kbGVCYWNrZHJvcENsaWNrIiwiZXZlbnQiLCJ0YXJnZXQiLCJjdXJyZW50VGFyZ2V0IiwiaGFuZGxlU2V0U2tpbGxWYWx1ZXMiLCJfc2tpbGxWYWx1ZXMkdmFsdWVzIiwiX3NraWxsVmFsdWVzJHZhbHVlczIiLCJfc2tpbGxWYWx1ZXMkdmFsdWVzMyIsIl9yZWYyIiwiZGV0YWlsIiwic2tpbGxWYWx1ZXMiLCJpbmNvbWluZ0dlbmVyYWwiLCJfb2JqZWN0U3ByZWFkIiwiaW5jb21pbmdOYW1lIiwiaW5jb21pbmdEZXNjcmlwdGlvbiIsImluY29taW5nQ29udGVudCIsImluY29taW5nQWNjZXNzVHlwZSIsInBhcnNlZERlc2NyaXB0aW9uIiwiaW50ZW50IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIl9maWxlSW5wdXRSZWYkY3VycmVudCIsImNsaWNrIiwiaGFuZGxlQ2hhbmdlRmllbGQiLCJmaWVsZCIsInZhbHVlIiwicHJldiIsIl9kZWZpbmVQcm9wZXJ0eSIsImhhbmRsZUFjY2Vzc1R5cGVDaGFuZ2UiLCJjaGVja2VkIiwiaGFuZGxlVXBsb2FkQ2xpY2siLCJfZmlsZUlucHV0UmVmJGN1cnJlbnQyIiwiaGFuZGxlRmlsZUNoYW5nZSIsIl9yZWYzIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfZXZlbnQkdGFyZ2V0JGZpbGVzIiwiZmlsZSIsImlzTWFya2Rvd24iLCJ0ZXh0IiwiYmFzZU5hbWUiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJmaWxlcyIsImFicnVwdCIsInRlc3QiLCJzZW50IiwicmVwbGFjZSIsIl9wcmV2JGdlbmVyYWwiLCJfcHJldiRnZW5lcmFsMiIsIl9wcmV2JGdlbmVyYWwzIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJwZXJzaXN0U2tpbGwiLCJfcmVmNCIsIl9jYWxsZWUyIiwicGF5bG9hZCIsInVwZGF0ZWQiLCJjcmVhdGVkIiwiX2NvbnRleHQyIiwiaGFuZGxlU2F2ZSIsIl9yZWY1IiwiX2NhbGxlZTMiLCJfdDIiLCJfY29udGV4dDMiLCJmaW5pc2giLCJoYW5kbGVTYXZlQW5kVXNlIiwiX3JlZjYiLCJfY2FsbGVlNCIsInNhdmVkU2tpbGwiLCJfdDMiLCJfY29udGV4dDQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJza2lsbCIsImhhbmRsZUNvbmZpcm1EZWxldGUiLCJfcmVmNyIsIl9jYWxsZWU1IiwiX3Q0IiwiX2NvbnRleHQ1IiwiY29udGFpbmVyIiwiZ2V0RWxlbWVudEJ5SWQiLCJlZGl0T3JDcmVhdGVUaXRsZSIsIm1vZGFsVGl0bGUiLCJ6SW5kZXgiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJzdG9wUHJvcGFnYXRpb24iLCJ0eXBlIiwiY29sb3IiLCJ3aWR0aCIsImhlaWdodCIsIiRoZWlnaHQiLCJodG1sRm9yIiwibWF4TGVuZ3RoIiwicGxhY2Vob2xkZXIiLCJkaXNhYmxlZCIsIm9uQ2hhbmdlIiwiJGNsaXBPdmVyZmxvdyIsInJlZiIsImFjY2VwdCIsInNpemUiLCJvbkNsb3NlIiwiaGFuZGxlcnMiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiY2hhdCIsInRpdGxlIiwiYWN0aW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0FibVNraWxsTW9kYWwvQWJtU2tpbGxNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQ2hhbmdlRXZlbnQsIE1vdXNlRXZlbnQsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvRmlsZVVwbG9hZCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEJhY2tkcm9wIH0gZnJvbSAnLi4vLi4vYXRvbXMvQmFja2Ryb3AnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBTd2l0Y2ggfSBmcm9tICcuLi8uLi9hdG9tcy9Td2l0Y2gnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VVc2VyLCBpc0NvbGxhYm9yYXRvclJvbGUgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgY3JlYXRlU2tpbGwgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NraWxscy9jcmVhdGVTa2lsbCdcbmltcG9ydCB7IHVwZGF0ZVNraWxsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvdXBkYXRlU2tpbGwnXG5pbXBvcnQgeyBkZWxldGVTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2RlbGV0ZVNraWxsJ1xuaW1wb3J0IHsgU2tpbGwsIFNraWxsQWNjZXNzVHlwZSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3NraWxsJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uL0RlbGV0ZVF1ZXN0aW9uTW9kYWwvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7XG4gIFNDQVNNQ2FuY2VsQnV0dG9uLFxuICBTQ0FTTUNsb3NlQnV0dG9uLFxuICBTQ0FTTUJvZHksXG4gIFNDQVNNRGVsZXRlU2xvdCxcbiAgU0NBU01GaWVsZEJveCxcbiAgU0NBU01GaWVsZElucHV0LFxuICBTQ0FTTUZpZWxkTGFiZWwsXG4gIFNDQVNNRmllbGRUZXh0YXJlYSxcbiAgU0NBU01Gb290ZXIsXG4gIFNDQVNNSGVhZGVyLFxuICBTQ0FTTUhlYWRlclRpdGxlLFxuICBTQ0FTTUhpZGRlbkZpbGVJbnB1dCxcbiAgU0NBU01JbnN0cnVjdGlvbnNGaWVsZCxcbiAgU0NBU01JbnN0cnVjdGlvbnNIZWFkZXIsXG4gIFNDQVNNSW5zdHJ1Y3Rpb25zUGFuZWwsXG4gIFNDQVNNSW5zdHJ1Y3Rpb25zVGV4dGFyZWEsXG4gIFNDQVNNSW5zdHJ1Y3Rpb25zVGl0bGUsXG4gIFNDQVNNTWV0YWRhdGFJdGVtLFxuICBTQ0FTTU1ldGFkYXRhTGFiZWwsXG4gIFNDQVNNTWV0YWRhdGFSb3csXG4gIFNDQVNNTWV0YWRhdGFWYWx1ZSxcbiAgU0NBU01TYXZlT3V0bGluZWRCdXR0b24sXG4gIFNDQVNNU2F2ZVByaW1hcnlCdXR0b24sXG4gIFNDQVNNU3dpdGNoTGFiZWwsXG4gIFNDQVNNU3dpdGNoUm93LFxuICBTQ0FTTVVwbG9hZEJ1dHRvbixcbiAgU0NBU01XcmFwcGVyLFxufSBmcm9tICcuL0FibVNraWxsTW9kYWwuc3R5bGVzJ1xuXG5leHBvcnQgY29uc3QgU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQgPSAnbWFpYS11c2Utc2tpbGwtYWZ0ZXItc2F2ZSdcblxudHlwZSBTa2lsbE1vZGFsR2VuZXJhbCA9IHtcbiAgaWQ/OiBzdHJpbmdcbiAgbmFtZT86IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICBjb250ZW50Pzogc3RyaW5nXG4gIGFjY2Vzc190eXBlPzogU2tpbGxBY2Nlc3NUeXBlXG4gIGNyZWF0ZWRfYnlfbmFtZT86IHN0cmluZ1xuICB1cGRhdGVkX2F0Pzogc3RyaW5nXG59XG5cbnR5cGUgU2tpbGxNb2RhbFZhbHVlcyA9IHtcbiAgaXNFZGl0aW5nOiBib29sZWFuXG4gIGlzUmVhZE9ubHk/OiBib29sZWFuXG4gIGludGVudD86ICdnZW5lcmF0ZScgfCAnd3JpdGUnIHwgJ3VwbG9hZCdcbiAgZ2VuZXJhbD86IFNraWxsTW9kYWxHZW5lcmFsXG59XG5cbnR5cGUgQWJtU2tpbGxNb2RhbFByb3BzID0ge1xuICBhZGRTa2lsbD86IChza2lsbDogU2tpbGwpID0+IHZvaWRcbiAgdXBkYXRlU2tpbGxJbkxpc3Q/OiAoc2tpbGw6IFNraWxsKSA9PiB2b2lkXG4gIHJlbW92ZVNraWxsPzogKHNraWxsSWQ6IHN0cmluZykgPT4gdm9pZFxufVxuXG5jb25zdCBpbml0aWFsVmFsdWVzOiBTa2lsbE1vZGFsVmFsdWVzID0ge1xuICBpc0VkaXRpbmc6IGZhbHNlLFxuICBnZW5lcmFsOiB7XG4gICAgaWQ6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiAnJyxcbiAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgY29udGVudDogJycsXG4gICAgYWNjZXNzX3R5cGU6ICdvbmx5X21lJyxcbiAgfSxcbn1cblxudHlwZSBTa2lsbEZvcm1CYXNlbGluZSA9IHtcbiAgbmFtZTogc3RyaW5nXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmdcbiAgY29udGVudDogc3RyaW5nXG4gIGFjY2Vzc190eXBlOiBTa2lsbEFjY2Vzc1R5cGVcbn1cblxuY29uc3QgZW1wdHlCYXNlbGluZTogU2tpbGxGb3JtQmFzZWxpbmUgPSB7XG4gIG5hbWU6ICcnLFxuICBkZXNjcmlwdGlvbjogJycsXG4gIGNvbnRlbnQ6ICcnLFxuICBhY2Nlc3NfdHlwZTogJ29ubHlfbWUnLFxufVxuXG5jb25zdCBwYXJzZURlc2NyaXB0aW9uRnJvbUNvbnRlbnQgPSAoY29udGVudDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgZnJvbnRtYXR0ZXJNYXRjaCA9IGNvbnRlbnQubWF0Y2goL14tLS1cXHMqXFxuKFtcXHNcXFNdKj8pXFxuLS0tLylcbiAgaWYgKCFmcm9udG1hdHRlck1hdGNoKSByZXR1cm4gJydcbiAgY29uc3QgZGVzY3JpcHRpb25NYXRjaCA9IGZyb250bWF0dGVyTWF0Y2hbMV0ubWF0Y2goL15kZXNjcmlwdGlvbjpcXHMqKC4rKSQvbSlcbiAgcmV0dXJuIGRlc2NyaXB0aW9uTWF0Y2ggPyBkZXNjcmlwdGlvbk1hdGNoWzFdLnRyaW0oKSA6ICcnXG59XG5cbmV4cG9ydCBjb25zdCBBYm1Ta2lsbE1vZGFsID0gKHsgYWRkU2tpbGwsIHVwZGF0ZVNraWxsSW5MaXN0LCByZW1vdmVTa2lsbCB9OiBBYm1Ta2lsbE1vZGFsUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyU3VjY2VzcywgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNTdWJtaXR0aW5nLCBzZXRJc1N1Ym1pdHRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzaG93RGVsZXRlLCBzZXRTaG93RGVsZXRlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcGVuZGluZ1VwbG9hZCwgc2V0UGVuZGluZ1VwbG9hZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3ZhbHVlcywgc2V0VmFsdWVzXSA9IHVzZVN0YXRlPFNraWxsTW9kYWxWYWx1ZXM+KGluaXRpYWxWYWx1ZXMpXG4gIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKVxuICBjb25zdCBpbml0aWFsUmVmID0gdXNlUmVmPFNraWxsRm9ybUJhc2VsaW5lPihlbXB0eUJhc2VsaW5lKVxuXG4gIGNvbnN0IGlzUmVhZE9ubHkgPSAhIXZhbHVlcy5pc1JlYWRPbmx5XG4gIGNvbnN0IGNhblNoYXJlV2l0aENvbXBhbnkgPSAhaXNDb2xsYWJvcmF0b3JSb2xlKHVzZXIucm9sZV9pZCkgJiYgIWlzUmVhZE9ubHlcblxuICBjb25zdCBuYW1lID0gdmFsdWVzLmdlbmVyYWw/Lm5hbWUgfHwgJydcbiAgY29uc3QgZGVzY3JpcHRpb24gPSB2YWx1ZXMuZ2VuZXJhbD8uZGVzY3JpcHRpb24gfHwgJydcbiAgY29uc3QgY29udGVudCA9IHZhbHVlcy5nZW5lcmFsPy5jb250ZW50IHx8ICcnXG4gIGNvbnN0IGFjY2Vzc1R5cGU6IFNraWxsQWNjZXNzVHlwZSA9IHZhbHVlcy5nZW5lcmFsPy5hY2Nlc3NfdHlwZSB8fCAnb25seV9tZSdcbiAgY29uc3QgZWZmZWN0aXZlQWNjZXNzVHlwZTogU2tpbGxBY2Nlc3NUeXBlID0gY2FuU2hhcmVXaXRoQ29tcGFueSA/IGFjY2Vzc1R5cGUgOiAnb25seV9tZSdcbiAgY29uc3Qgc2tpbGxJZCA9IHZhbHVlcy5nZW5lcmFsPy5pZFxuICBjb25zdCBpc1ZhbGlkID0gISFuYW1lLnRyaW0oKSAmJiAhIWRlc2NyaXB0aW9uLnRyaW0oKSAmJiAhIWNvbnRlbnQudHJpbSgpXG4gIGNvbnN0IGhhc0NoYW5nZXMgPVxuICAgIG5hbWUudHJpbSgpICE9PSBpbml0aWFsUmVmLmN1cnJlbnQubmFtZSB8fFxuICAgIGRlc2NyaXB0aW9uLnRyaW0oKSAhPT0gaW5pdGlhbFJlZi5jdXJyZW50LmRlc2NyaXB0aW9uIHx8XG4gICAgY29udGVudC50cmltKCkgIT09IGluaXRpYWxSZWYuY3VycmVudC5jb250ZW50IHx8XG4gICAgKGNhblNoYXJlV2l0aENvbXBhbnkgJiYgZWZmZWN0aXZlQWNjZXNzVHlwZSAhPT0gaW5pdGlhbFJlZi5jdXJyZW50LmFjY2Vzc190eXBlKVxuXG4gIGNvbnN0IGNyZWF0ZWRCeUxhYmVsID0gdXNlTWVtbyhcbiAgICAoKSA9PiB2YWx1ZXMuZ2VuZXJhbD8uY3JlYXRlZF9ieV9uYW1lPy50cmltKCkgfHwgYCR7dXNlci5maXJzdE5hbWV9ICR7dXNlci5sYXN0TmFtZX1gLnRyaW0oKSxcbiAgICBbdmFsdWVzLmdlbmVyYWw/LmNyZWF0ZWRfYnlfbmFtZSwgdXNlci5maXJzdE5hbWUsIHVzZXIubGFzdE5hbWVdXG4gIClcblxuICBjb25zdCBsYXN0VXBkYXRlZExhYmVsID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgdXBkYXRlZEF0ID0gdmFsdWVzLmdlbmVyYWw/LnVwZGF0ZWRfYXRcbiAgICBpZiAoIXVwZGF0ZWRBdCkgcmV0dXJuICcnXG4gICAgY29uc3QgcGFyc2VkID0gbmV3IERhdGUodXBkYXRlZEF0KVxuICAgIGlmIChOdW1iZXIuaXNOYU4ocGFyc2VkLmdldFRpbWUoKSkpIHJldHVybiAnJ1xuICAgIHJldHVybiBmb3JtYXREYXRlKHBhcnNlZClcbiAgfSwgW3ZhbHVlcy5nZW5lcmFsPy51cGRhdGVkX2F0XSlcblxuICBjb25zdCBoYW5kbGVDbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc09wZW4oZmFsc2UpXG4gICAgc2V0U2hvd0RlbGV0ZShmYWxzZSlcbiAgICBzZXRQZW5kaW5nVXBsb2FkKGZhbHNlKVxuICAgIHNldFZhbHVlcyhpbml0aWFsVmFsdWVzKVxuICAgIGluaXRpYWxSZWYuY3VycmVudCA9IGVtcHR5QmFzZWxpbmVcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlQmFja2Ryb3BDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbaGFuZGxlQ2xvc2VdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVNldFNraWxsVmFsdWVzID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHsgc2tpbGxWYWx1ZXMgfSA9IGV2ZW50LmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFza2lsbFZhbHVlcykgcmV0dXJuXG5cbiAgICAgIGNvbnN0IGluY29taW5nR2VuZXJhbCA9IHtcbiAgICAgICAgLi4uaW5pdGlhbFZhbHVlcy5nZW5lcmFsLFxuICAgICAgICAuLi5za2lsbFZhbHVlcy52YWx1ZXM/LmdlbmVyYWwsXG4gICAgICB9XG4gICAgICBjb25zdCBpbmNvbWluZ05hbWUgPSAoaW5jb21pbmdHZW5lcmFsLm5hbWUgfHwgJycpLnRyaW0oKVxuICAgICAgY29uc3QgaW5jb21pbmdEZXNjcmlwdGlvbiA9IChpbmNvbWluZ0dlbmVyYWwuZGVzY3JpcHRpb24gfHwgJycpLnRyaW0oKVxuICAgICAgY29uc3QgaW5jb21pbmdDb250ZW50ID0gKGluY29taW5nR2VuZXJhbC5jb250ZW50IHx8ICcnKS50cmltKClcbiAgICAgIGNvbnN0IGluY29taW5nQWNjZXNzVHlwZTogU2tpbGxBY2Nlc3NUeXBlID0gaXNDb2xsYWJvcmF0b3JSb2xlKHVzZXIucm9sZV9pZClcbiAgICAgICAgPyAnb25seV9tZSdcbiAgICAgICAgOiBpbmNvbWluZ0dlbmVyYWwuYWNjZXNzX3R5cGUgfHwgJ29ubHlfbWUnXG4gICAgICBjb25zdCBwYXJzZWREZXNjcmlwdGlvbiA9XG4gICAgICAgIGluY29taW5nRGVzY3JpcHRpb24gfHwgKGluY29taW5nQ29udGVudCA/IHBhcnNlRGVzY3JpcHRpb25Gcm9tQ29udGVudChpbmNvbWluZ0NvbnRlbnQpIDogJycpXG5cbiAgICAgIGluaXRpYWxSZWYuY3VycmVudCA9IHNraWxsVmFsdWVzLnZhbHVlcz8uaXNFZGl0aW5nXG4gICAgICAgID8ge1xuICAgICAgICAgICAgbmFtZTogaW5jb21pbmdOYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHBhcnNlZERlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY29udGVudDogaW5jb21pbmdDb250ZW50LFxuICAgICAgICAgICAgYWNjZXNzX3R5cGU6IGluY29taW5nQWNjZXNzVHlwZSxcbiAgICAgICAgICB9XG4gICAgICAgIDogZW1wdHlCYXNlbGluZVxuXG4gICAgICBzZXRWYWx1ZXMoe1xuICAgICAgICAuLi5pbml0aWFsVmFsdWVzLFxuICAgICAgICAuLi5za2lsbFZhbHVlcy52YWx1ZXMsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAuLi5pbmNvbWluZ0dlbmVyYWwsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHBhcnNlZERlc2NyaXB0aW9uLFxuICAgICAgICAgIGFjY2Vzc190eXBlOiBpbmNvbWluZ0FjY2Vzc1R5cGUsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgc2V0UGVuZGluZ1VwbG9hZChza2lsbFZhbHVlcy52YWx1ZXM/LmludGVudCA9PT0gJ3VwbG9hZCcpXG4gICAgICBzZXRJc09wZW4oISFza2lsbFZhbHVlcy5pc09wZW4pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCBoYW5kbGVTZXRTa2lsbFZhbHVlcylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCBoYW5kbGVTZXRTa2lsbFZhbHVlcylcbiAgICB9XG4gIH0sIFt1c2VyLnJvbGVfaWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzT3BlbiAmJiBwZW5kaW5nVXBsb2FkKSB7XG4gICAgICBzZXRQZW5kaW5nVXBsb2FkKGZhbHNlKVxuICAgICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgICB9XG4gIH0sIFtpc09wZW4sIHBlbmRpbmdVcGxvYWRdKVxuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZUZpZWxkID0gKGZpZWxkOiAnbmFtZScgfCAnZGVzY3JpcHRpb24nIHwgJ2NvbnRlbnQnLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0VmFsdWVzKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBnZW5lcmFsOiB7IC4uLnByZXYuZ2VuZXJhbCwgW2ZpZWxkXTogdmFsdWUgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUFjY2Vzc1R5cGVDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIGlmICghY2FuU2hhcmVXaXRoQ29tcGFueSkgcmV0dXJuXG4gICAgc2V0VmFsdWVzKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBnZW5lcmFsOiB7XG4gICAgICAgIC4uLnByZXYuZ2VuZXJhbCxcbiAgICAgICAgYWNjZXNzX3R5cGU6IGNoZWNrZWQgPyAnY29tcGFueScgOiAnb25seV9tZScsXG4gICAgICB9LFxuICAgIH0pKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVXBsb2FkQ2xpY2sgPSAoKSA9PiB7XG4gICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZpbGVDaGFuZ2UgPSBhc3luYyAoZXZlbnQ6IENoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlcz8uWzBdXG4gICAgaWYgKGZpbGVJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICBmaWxlSW5wdXRSZWYuY3VycmVudC52YWx1ZSA9ICcnXG4gICAgfVxuICAgIGlmICghZmlsZSkgcmV0dXJuXG5cbiAgICBjb25zdCBpc01hcmtkb3duID0gL1xcLihtZHxtYXJrZG93bikkL2kudGVzdChmaWxlLm5hbWUpXG4gICAgaWYgKCFpc01hcmtkb3duKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLnVwbG9hZEVycm9yJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGZpbGUudGV4dCgpXG4gICAgICBjb25zdCBiYXNlTmFtZSA9IGZpbGUubmFtZS5yZXBsYWNlKC9cXC4obWR8bWFya2Rvd24pJC9pLCAnJylcbiAgICAgIGNvbnN0IHBhcnNlZERlc2NyaXB0aW9uID0gcGFyc2VEZXNjcmlwdGlvbkZyb21Db250ZW50KHRleHQpXG4gICAgICBzZXRWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgIGNvbnRlbnQ6IHRleHQsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHByZXYuZ2VuZXJhbD8uZGVzY3JpcHRpb24/LnRyaW0oKVxuICAgICAgICAgICAgPyBwcmV2LmdlbmVyYWwuZGVzY3JpcHRpb25cbiAgICAgICAgICAgIDogcGFyc2VkRGVzY3JpcHRpb24gfHwgcHJldi5nZW5lcmFsPy5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgICBuYW1lOiBwcmV2LmdlbmVyYWw/Lm5hbWU/LnRyaW0oKSA/IHByZXYuZ2VuZXJhbC5uYW1lIDogYmFzZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9KSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy51cGxvYWRFcnJvcicpKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBlcnNpc3RTa2lsbCA9IGFzeW5jICgpOiBQcm9taXNlPFNraWxsIHwgbnVsbD4gPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBuYW1lOiBuYW1lLnRyaW0oKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbi50cmltKCksXG4gICAgICBjb250ZW50OiBjb250ZW50LnRyaW0oKSxcbiAgICAgIGFjY2Vzc190eXBlOiBlZmZlY3RpdmVBY2Nlc3NUeXBlLFxuICAgIH1cblxuICAgIGlmICh2YWx1ZXMuaXNFZGl0aW5nICYmIHNraWxsSWQpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB1cGRhdGVTa2lsbChza2lsbElkLCBwYXlsb2FkKVxuICAgICAgdXBkYXRlU2tpbGxJbkxpc3Q/Lih1cGRhdGVkKVxuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ215U2tpbGxzLnVwZGF0ZVN1Y2Nlc3MnKSlcbiAgICAgIHJldHVybiB1cGRhdGVkXG4gICAgfVxuXG4gICAgY29uc3QgY3JlYXRlZCA9IGF3YWl0IGNyZWF0ZVNraWxsKHBheWxvYWQpXG4gICAgYWRkU2tpbGw/LihjcmVhdGVkKVxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5jcmVhdGVTdWNjZXNzJykpXG4gICAgcmV0dXJuIGNyZWF0ZWRcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFpc1ZhbGlkIHx8IGlzU3VibWl0dGluZyB8fCAhaGFzQ2hhbmdlcykgcmV0dXJuXG4gICAgc2V0SXNTdWJtaXR0aW5nKHRydWUpXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHBlcnNpc3RTa2lsbCgpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodmFsdWVzLmlzRWRpdGluZyA/IHQoJ215U2tpbGxzLnVwZGF0ZUVycm9yJykgOiB0KCdteVNraWxscy5jcmVhdGVFcnJvcicpKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRJc1N1Ym1pdHRpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2F2ZUFuZFVzZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWlzVmFsaWQgfHwgaXNTdWJtaXR0aW5nKSByZXR1cm5cbiAgICBzZXRJc1N1Ym1pdHRpbmcodHJ1ZSlcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2F2ZWRTa2lsbCA9IGF3YWl0IHBlcnNpc3RTa2lsbCgpXG4gICAgICBpZiAoc2F2ZWRTa2lsbCkge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudChTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCwge1xuICAgICAgICAgICAgZGV0YWlsOiB7IHNraWxsOiBzYXZlZFNraWxsIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHZhbHVlcy5pc0VkaXRpbmcgPyB0KCdteVNraWxscy51cGRhdGVFcnJvcicpIDogdCgnbXlTa2lsbHMuY3JlYXRlRXJyb3InKSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNTdWJtaXR0aW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFza2lsbElkKSByZXR1cm5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2tpbGwoc2tpbGxJZClcbiAgICAgIHJlbW92ZVNraWxsPy4oc2tpbGxJZClcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5kZWxldGVTdWNjZXNzJykpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMuZGVsZXRlRXJyb3InKSlcbiAgICB9XG4gIH1cblxuICBpZiAoIWlzT3BlbikgcmV0dXJuIG51bGxcblxuICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtcm9vdC1hY3Rpb25zJylcbiAgaWYgKCFjb250YWluZXIpIHJldHVybiBudWxsXG5cbiAgY29uc3QgZWRpdE9yQ3JlYXRlVGl0bGUgPSB2YWx1ZXMuaXNFZGl0aW5nID8gdCgnbXlTa2lsbHMuZWRpdFRpdGxlJykgOiB0KCdteVNraWxscy5jcmVhdGVUaXRsZScpXG4gIGNvbnN0IG1vZGFsVGl0bGUgPSBpc1JlYWRPbmx5ID8gdCgnbXlTa2lsbHMudmlld1RpdGxlJykgOiBlZGl0T3JDcmVhdGVUaXRsZVxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPEJhY2tkcm9wIHpJbmRleD17MTExMn0gb25DbGljaz17aGFuZGxlQmFja2Ryb3BDbGlja30+XG4gICAgICA8U0NBU01XcmFwcGVyIG9uQ2xpY2s9e2V2ZW50ID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfT5cbiAgICAgICAgPFNDQVNNSGVhZGVyPlxuICAgICAgICAgIDxTQ0FTTUhlYWRlclRpdGxlPnttb2RhbFRpdGxlfTwvU0NBU01IZWFkZXJUaXRsZT5cbiAgICAgICAgICA8U0NBU01DbG9zZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlQ2xvc2V9IGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLmNsb3NlJyl9PlxuICAgICAgICAgICAgPENyb3NzIGNvbG9yPVwiI2E2YTZhNlwiIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICA8L1NDQVNNQ2xvc2VCdXR0b24+XG4gICAgICAgIDwvU0NBU01IZWFkZXI+XG5cbiAgICAgICAgPFNDQVNNQm9keT5cbiAgICAgICAgICA8U0NBU01GaWVsZEJveCAkaGVpZ2h0PXs1MH0+XG4gICAgICAgICAgICA8U0NBU01GaWVsZExhYmVsIGh0bWxGb3I9XCJza2lsbC1uYW1lLWlucHV0XCI+e3QoJ215U2tpbGxzLm5hbWVMYWJlbCcpfTwvU0NBU01GaWVsZExhYmVsPlxuICAgICAgICAgICAgPFNDQVNNRmllbGRJbnB1dFxuICAgICAgICAgICAgICBpZD1cInNraWxsLW5hbWUtaW5wdXRcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIG1heExlbmd0aD17MTUwfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dCgnbXlTa2lsbHMubmFtZVBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgICAgIHZhbHVlPXtuYW1lfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17aXNTdWJtaXR0aW5nIHx8IGlzUmVhZE9ubHl9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtldmVudCA9PiBoYW5kbGVDaGFuZ2VGaWVsZCgnbmFtZScsIGV2ZW50LnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU0NBU01GaWVsZEJveD5cblxuICAgICAgICAgIDxTQ0FTTUZpZWxkQm94ICRoZWlnaHQ9ezEyMH0gJGNsaXBPdmVyZmxvdz5cbiAgICAgICAgICAgIDxTQ0FTTUZpZWxkTGFiZWwgaHRtbEZvcj1cInNraWxsLWRlc2NyaXB0aW9uLWlucHV0XCI+e3QoJ215U2tpbGxzLmRlc2NyaXB0aW9uTGFiZWwnKX08L1NDQVNNRmllbGRMYWJlbD5cbiAgICAgICAgICAgIDxTQ0FTTUZpZWxkVGV4dGFyZWFcbiAgICAgICAgICAgICAgaWQ9XCJza2lsbC1kZXNjcmlwdGlvbi1pbnB1dFwiXG4gICAgICAgICAgICAgIG1heExlbmd0aD17NTAwfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dCgnbXlTa2lsbHMuZGVzY3JpcHRpb25QbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICB2YWx1ZT17ZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRpbmcgfHwgaXNSZWFkT25seX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IGhhbmRsZUNoYW5nZUZpZWxkKCdkZXNjcmlwdGlvbicsIGV2ZW50LnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU0NBU01GaWVsZEJveD5cblxuICAgICAgICAgIHtjYW5TaGFyZVdpdGhDb21wYW55ID8gKFxuICAgICAgICAgICAgPFNDQVNNU3dpdGNoUm93PlxuICAgICAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICAgICAgY2hlY2tlZD17YWNjZXNzVHlwZSA9PT0gJ2NvbXBhbnknfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVBY2Nlc3NUeXBlQ2hhbmdlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnbXlTa2lsbHMuc2hhcmVXaXRoQ29tcGFueScpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8U0NBU01Td2l0Y2hMYWJlbD57dCgnbXlTa2lsbHMuc2hhcmVXaXRoQ29tcGFueScpfTwvU0NBU01Td2l0Y2hMYWJlbD5cbiAgICAgICAgICAgIDwvU0NBU01Td2l0Y2hSb3c+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICA8U0NBU01JbnN0cnVjdGlvbnNQYW5lbD5cbiAgICAgICAgICAgIDxTQ0FTTUluc3RydWN0aW9uc0hlYWRlcj5cbiAgICAgICAgICAgICAgPFNDQVNNSW5zdHJ1Y3Rpb25zVGl0bGU+e3QoJ215U2tpbGxzLmluc3RydWN0aW9uc0xhYmVsJyl9PC9TQ0FTTUluc3RydWN0aW9uc1RpdGxlPlxuICAgICAgICAgICAgICB7IWlzUmVhZE9ubHkgPyAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxTQ0FTTVVwbG9hZEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlVXBsb2FkQ2xpY2t9IGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9PlxuICAgICAgICAgICAgICAgICAgICA8RmlsZVVwbG9hZCB3aWR0aD17MTh9IGhlaWdodD17MTh9IGNvbG9yPVwiIzA4Q1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy51cGxvYWRNZCcpfVxuICAgICAgICAgICAgICAgICAgPC9TQ0FTTVVwbG9hZEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxTQ0FTTUhpZGRlbkZpbGVJbnB1dFxuICAgICAgICAgICAgICAgICAgICByZWY9e2ZpbGVJbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICAgICAgICBhY2NlcHQ9XCIubWQsLm1hcmtkb3duLHRleHQvbWFya2Rvd25cIlxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9TQ0FTTUluc3RydWN0aW9uc0hlYWRlcj5cblxuICAgICAgICAgICAgPFNDQVNNSW5zdHJ1Y3Rpb25zRmllbGQ+XG4gICAgICAgICAgICAgIDxTQ0FTTUluc3RydWN0aW9uc1RleHRhcmVhXG4gICAgICAgICAgICAgICAgaWQ9XCJza2lsbC1jb250ZW50LWlucHV0XCJcbiAgICAgICAgICAgICAgICBtYXhMZW5ndGg9ezEwMDAwMH1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dCgnbXlTa2lsbHMuY29udGVudFBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2NvbnRlbnR9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGluZyB8fCBpc1JlYWRPbmx5fVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtldmVudCA9PiBoYW5kbGVDaGFuZ2VGaWVsZCgnY29udGVudCcsIGV2ZW50LnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1NDQVNNSW5zdHJ1Y3Rpb25zRmllbGQ+XG4gICAgICAgICAgPC9TQ0FTTUluc3RydWN0aW9uc1BhbmVsPlxuXG4gICAgICAgICAge3ZhbHVlcy5pc0VkaXRpbmcgPyAoXG4gICAgICAgICAgICA8U0NBU01NZXRhZGF0YVJvdz5cbiAgICAgICAgICAgICAgPFNDQVNNTWV0YWRhdGFJdGVtPlxuICAgICAgICAgICAgICAgIDxTQ0FTTU1ldGFkYXRhTGFiZWw+e3QoJ215U2tpbGxzLmNyZWF0ZWRCeScpfTwvU0NBU01NZXRhZGF0YUxhYmVsPlxuICAgICAgICAgICAgICAgIDxTQ0FTTU1ldGFkYXRhVmFsdWU+e2NyZWF0ZWRCeUxhYmVsfTwvU0NBU01NZXRhZGF0YVZhbHVlPlxuICAgICAgICAgICAgICA8L1NDQVNNTWV0YWRhdGFJdGVtPlxuICAgICAgICAgICAgICB7bGFzdFVwZGF0ZWRMYWJlbCA/IChcbiAgICAgICAgICAgICAgICA8U0NBU01NZXRhZGF0YUl0ZW0+XG4gICAgICAgICAgICAgICAgICA8U0NBU01NZXRhZGF0YUxhYmVsPnt0KCdteVNraWxscy5sYXN0VXBkYXRlZCcpfTwvU0NBU01NZXRhZGF0YUxhYmVsPlxuICAgICAgICAgICAgICAgICAgPFNDQVNNTWV0YWRhdGFWYWx1ZT57bGFzdFVwZGF0ZWRMYWJlbH08L1NDQVNNTWV0YWRhdGFWYWx1ZT5cbiAgICAgICAgICAgICAgICA8L1NDQVNNTWV0YWRhdGFJdGVtPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvU0NBU01NZXRhZGF0YVJvdz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9TQ0FTTUJvZHk+XG5cbiAgICAgICAgeyFpc1JlYWRPbmx5ID8gKFxuICAgICAgICAgIDxTQ0FTTUZvb3Rlcj5cbiAgICAgICAgICAgIHt2YWx1ZXMuaXNFZGl0aW5nID8gKFxuICAgICAgICAgICAgICA8U0NBU01EZWxldGVTbG90PlxuICAgICAgICAgICAgICAgIDxTQ0FTTUNhbmNlbEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gc2V0U2hvd0RlbGV0ZSh0cnVlKX0gZGlzYWJsZWQ9e2lzU3VibWl0dGluZ30+XG4gICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuZGVsZXRlJyl9XG4gICAgICAgICAgICAgICAgPC9TQ0FTTUNhbmNlbEJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9TQ0FTTURlbGV0ZVNsb3Q+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDxTQ0FTTVNhdmVPdXRsaW5lZEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2F2ZX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc1ZhbGlkIHx8IGlzU3VibWl0dGluZyB8fCAhaGFzQ2hhbmdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2lzU3VibWl0dGluZyA/IDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz4gOiB0KCdteVNraWxscy5zYXZlJyl9XG4gICAgICAgICAgICA8L1NDQVNNU2F2ZU91dGxpbmVkQnV0dG9uPlxuICAgICAgICAgICAgPFNDQVNNU2F2ZVByaW1hcnlCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVNhdmVBbmRVc2V9IGRpc2FibGVkPXshaXNWYWxpZCB8fCBpc1N1Ym1pdHRpbmd9PlxuICAgICAgICAgICAgICB7aXNTdWJtaXR0aW5nID8gPExvYWRlciBzaXplPVwic21hbGxcIiAvPiA6IHQoJ215U2tpbGxzLnNhdmVBbmRVc2UnKX1cbiAgICAgICAgICAgIDwvU0NBU01TYXZlUHJpbWFyeUJ1dHRvbj5cbiAgICAgICAgICA8L1NDQVNNRm9vdGVyPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvU0NBU01XcmFwcGVyPlxuXG4gICAgICB7c2hvd0RlbGV0ZSAmJiBza2lsbElkID8gKFxuICAgICAgICA8RGVsZXRlUXVlc3Rpb25Nb2RhbFxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dEZWxldGUoZmFsc2UpfVxuICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uOiBoYW5kbGVDb25maXJtRGVsZXRlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2hhdD17eyB0aXRsZTogbmFtZSwgaWQ6IHNraWxsSWQgfX1cbiAgICAgICAgICBhY3Rpb249XCJza2lsbFwiXG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICA8L0JhY2tkcm9wPixcbiAgICBjb250YWluZXJcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBLFNBQWtDQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ2xHLFNBQVNDLFlBQVksUUFBUSxXQUFXO0FBQ3hDLFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsVUFBVSxRQUFRLDZDQUE2QztBQUN4RSxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxRQUFRLFFBQVEsc0JBQXNCO0FBQy9DLFNBQVNDLE1BQU0sUUFBUSxvQkFBb0I7QUFDM0MsU0FBU0MsTUFBTSxRQUFRLG9CQUFvQjtBQUMzQyxTQUFTQyxRQUFRLFFBQVEsMkJBQTJCO0FBQ3BELFNBQVNDLE9BQU8sRUFBRUMsa0JBQWtCLFFBQVEsMkJBQTJCO0FBQ3ZFLFNBQVNDLGtCQUFrQixRQUFRLHNEQUFzRDtBQUN6RixTQUFTQyxVQUFVLFFBQVEscUJBQXFCO0FBQ2hELFNBQVNDLFdBQVcsUUFBUSwyQ0FBMkM7QUFDdkUsU0FBU0MsV0FBVyxRQUFRLDJDQUEyQztBQUN2RSxTQUFTQyxXQUFXLFFBQVEsMkNBQTJDO0FBRXZFLFNBQVNDLG1CQUFtQixRQUFRLDRDQUE0QztBQUNoRixTQUNFQyxpQkFBaUIsRUFDakJDLGdCQUFnQixFQUNoQkMsU0FBUyxFQUNUQyxlQUFlLEVB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