@projectcor/maia-components 2.50.1-1 → 2.51.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 (429) hide show
  1. package/README.md +2 -0
  2. package/lib/App.js +19 -44
  3. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +1 -3
  4. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.js +1 -3
  5. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +14 -24
  6. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.js +10 -28
  7. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +15 -19
  8. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +4 -8
  9. package/lib/components/atoms/ClientSelector/ClientSelector.js +13 -15
  10. package/lib/components/atoms/Fade/Fade.js +6 -10
  11. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +1 -3
  12. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -19
  13. package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.js +2 -3
  14. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.js +2 -3
  15. package/lib/components/atoms/MAIAInput/MAIAInput.js +99 -123
  16. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.js +4 -9
  17. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.js +5 -4
  18. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.js +26 -28
  19. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.styles.js +14 -15
  20. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +2 -7
  21. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +24 -41
  22. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +10 -25
  23. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +43 -78
  24. package/lib/components/atoms/ReasoningBlock/groupParallelSteps.js +11 -9
  25. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +15 -37
  26. package/lib/components/index.js +1 -2
  27. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +8 -6
  28. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +4 -6
  29. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +16 -25
  30. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -7
  31. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +72 -93
  32. package/lib/components/molecules/ChatAIHome/styles.js +78 -85
  33. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +14 -30
  34. package/lib/components/molecules/ChatAIMessages/newStyles.js +35 -32
  35. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +1 -8
  36. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +8 -25
  37. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
  38. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +153 -15
  39. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -2
  40. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +367 -63
  41. package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -10
  42. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +2 -5
  43. package/lib/components/molecules/Sidebar/Sidebar.js +23 -41
  44. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +2 -2
  45. package/lib/components/organisms/ProjectSummary/ProjectSummary.js +7 -11
  46. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.js +1 -4
  47. package/lib/constants/permissions/index.js +2 -2
  48. package/lib/constants/permissions/utils.js +1 -4
  49. package/lib/dev/DevReasoningTimeline.js +37 -68
  50. package/lib/dev/Providers.js +3 -5
  51. package/lib/hooks/useAgentModel/useUpdateAgent.js +6 -7
  52. package/lib/hooks/useChatManager/useChatManager.helpers.js +3 -3
  53. package/lib/hooks/useChatManager/useChatManager.js +7 -8
  54. package/lib/hooks/useEntitySearch.js +1 -3
  55. package/lib/hooks/useFrequentlyUsedActions.js +22 -61
  56. package/lib/hooks/useKnowledge/downloadKnowledge.js +4 -4
  57. package/lib/hooks/useKnowledge/useKnowledgeOperations.js +15 -16
  58. package/lib/hooks/useProjectSummaryConfig.js +5 -10
  59. package/lib/index.js +2 -5
  60. package/lib/lang/br/index.js +2 -27
  61. package/lib/lang/en/index.js +2 -27
  62. package/lib/lang/es/index.js +2 -27
  63. package/lib/lang/fr/index.js +2 -27
  64. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
  65. package/lib/services/maia/Agents/connectors.js +1 -3
  66. package/lib/store/sessions/sessionStreamManager.js +55 -51
  67. package/lib/store/useChatsStore.js +3 -4
  68. package/lib/styles/cascade.js +3 -29
  69. package/lib/styles/transitions.js +1 -3
  70. package/lib/types/global.d.js +1 -1
  71. package/lib/utils/hoursPlannerQuickActionType.js +1 -116
  72. package/lib/utils/imagePreprocessor.js +3 -14
  73. package/lib/utils/navigateContextEntity.js +2 -2
  74. package/lib/utils/openTaskInCorPanel.js +2 -2
  75. package/lib/utils/streamActivityMessages.helpers.js +4 -5
  76. package/lib/utils/streamActivityMessages.js +20 -32
  77. package/package.json +1 -1
  78. package/lib/components/atoms/ActionableButton.spec.js +0 -111
  79. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.spec.js +0 -52
  80. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.spec.js +0 -11
  81. package/lib/components/atoms/ApprovalBox/ApprovalBox.helpers.spec.js +0 -63
  82. package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +0 -183
  83. package/lib/components/atoms/AttachmentCard/AttachmentCard.spec.js +0 -123
  84. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.spec.js +0 -139
  85. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.spec.js +0 -385
  86. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.spec.js +0 -78
  87. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.spec.js +0 -94
  88. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.spec.js +0 -396
  89. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.spec.js +0 -80
  90. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.spec.js +0 -526
  91. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.spec.js +0 -169
  92. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.spec.js +0 -11
  93. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.spec.js +0 -77
  94. package/lib/components/atoms/Backdrop/Backdrop.spec.js +0 -28
  95. package/lib/components/atoms/CardMenu/CardMenu.spec.js +0 -56
  96. package/lib/components/atoms/ChatClientSelector/ChatClientSelector.spec.js +0 -67
  97. package/lib/components/atoms/Checkbox/Checkbox.spec.js +0 -27
  98. package/lib/components/atoms/Chip/Chip.spec.js +0 -82
  99. package/lib/components/atoms/ChipLlm/ChipLlm.spec.js +0 -26
  100. package/lib/components/atoms/ClientSelector/ClientSelector.helpers.spec.js +0 -45
  101. package/lib/components/atoms/ClientSelector/ClientSelector.spec.js +0 -133
  102. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.spec.js +0 -107
  103. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +0 -29
  104. package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.spec.js +0 -46
  105. package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.spec.js +0 -109
  106. package/lib/components/atoms/ContextMentionChip/buildChipElement.spec.js +0 -81
  107. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.spec.js +0 -92
  108. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.spec.js +0 -319
  109. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.spec.js +0 -107
  110. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.spec.js +0 -136
  111. package/lib/components/atoms/CopyToClipboard.spec.js +0 -74
  112. package/lib/components/atoms/EditableLabel/EditableLabel.spec.js +0 -76
  113. package/lib/components/atoms/EntitySelector/EntitySelector.spec.js +0 -86
  114. package/lib/components/atoms/Expand/Expand.spec.js +0 -57
  115. package/lib/components/atoms/Fade/Fade.spec.js +0 -66
  116. package/lib/components/atoms/FeedbackButton/FeedbackButton.spec.js +0 -75
  117. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.spec.js +0 -104
  118. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.spec.js +0 -91
  119. package/lib/components/atoms/HelpButton.spec.js +0 -87
  120. package/lib/components/atoms/ImagePreview/ImagePreview.spec.js +0 -96
  121. package/lib/components/atoms/ListMenuOption/ListMenuOption.spec.js +0 -54
  122. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.spec.js +0 -21
  123. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.spec.js +0 -20
  124. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.spec.js +0 -26
  125. package/lib/components/atoms/LoadingText/LoadingText.spec.js +0 -25
  126. package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +0 -42
  127. package/lib/components/atoms/MAIAError/MAIAError.spec.js +0 -27
  128. package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.spec.js +0 -113
  129. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.spec.js +0 -381
  130. package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +0 -719
  131. package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.spec.js +0 -92
  132. package/lib/components/atoms/MAIAInput/MAIAInputEditor.spec.js +0 -193
  133. package/lib/components/atoms/MAIAInput/maiaInputLayout.spec.js +0 -32
  134. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.spec.js +0 -64
  135. package/lib/components/atoms/MaiaWrapper/MaiaWrapper.spec.js +0 -43
  136. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.spec.js +0 -114
  137. package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.spec.js +0 -51
  138. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.spec.js +0 -48
  139. package/lib/components/atoms/ModalProject/ModalProject.spec.js +0 -66
  140. package/lib/components/atoms/NextPageLoader.spec.js +0 -37
  141. package/lib/components/atoms/OnboardingModalButton/OnboardingModal.spec.js +0 -20
  142. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.spec.js +0 -35
  143. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.spec.js +0 -47
  144. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.spec.js +0 -146
  145. package/lib/components/atoms/PrimaryButton.spec.js +0 -42
  146. package/lib/components/atoms/ProjectSelector/ProjectSelector.spec.js +0 -69
  147. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +0 -69
  148. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +0 -59
  149. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +0 -170
  150. package/lib/components/atoms/ReasoningBlock/groupParallelSteps.spec.js +0 -199
  151. package/lib/components/atoms/ReasoningBlock/reasoningLeading.spec.js +0 -70
  152. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +0 -120
  153. package/lib/components/atoms/ReasoningBlock/reasoningMotion.js +0 -8
  154. package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.spec.js +0 -31
  155. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +0 -52
  156. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +0 -90
  157. package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.js +0 -29
  158. package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.spec.js +0 -38
  159. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.spec.js +0 -16
  160. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +0 -107
  161. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.spec.js +0 -24
  162. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.helpers.spec.js +0 -71
  163. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +0 -120
  164. package/lib/components/atoms/Switch/Switch.spec.js +0 -41
  165. package/lib/components/atoms/TextArea/CustomTextArea.spec.js +0 -52
  166. package/lib/components/atoms/TextArea/TextArea.helpers.spec.js +0 -25
  167. package/lib/components/atoms/TextArea/TextArea.spec.js +0 -126
  168. package/lib/components/atoms/ThirdButton.spec.js +0 -29
  169. package/lib/components/atoms/VideoModal/VideoModal.spec.js +0 -68
  170. package/lib/components/atoms/WithAppCfg.spec.js +0 -82
  171. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.spec.js +0 -53
  172. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +0 -742
  173. package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.spec.js +0 -107
  174. package/lib/components/molecules/AbmSection/AbmGeneralSection.spec.js +0 -256
  175. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.spec.js +0 -175
  176. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.spec.js +0 -318
  177. package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.spec.js +0 -50
  178. package/lib/components/molecules/AbmSection/AbmLoaderFiles.spec.js +0 -94
  179. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.js +0 -83
  180. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.styles.js +0 -30
  181. package/lib/components/molecules/AgentInputBlock/index.js +0 -5
  182. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.js +0 -52
  183. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.spec.js +0 -76
  184. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.js +0 -20
  185. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.spec.js +0 -34
  186. package/lib/components/molecules/AgentInputBlock/useAgentChangeModelAction.js +0 -36
  187. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.spec.js +0 -66
  188. package/lib/components/molecules/ChatAIContent/ChatAIContent.spec.js +0 -145
  189. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.spec.js +0 -204
  190. package/lib/components/molecules/ChatAIHome/ChatAIHome.helpers.spec.js +0 -622
  191. package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +0 -264
  192. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.spec.js +0 -86
  193. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +0 -104
  194. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.spec.js +0 -742
  195. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +0 -541
  196. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +0 -46
  197. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +0 -1394
  198. package/lib/components/molecules/ChatAIModal/ChatAIModal.spec.js +0 -1401
  199. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.spec.js +0 -33
  200. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.spec.js +0 -116
  201. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.spec.js +0 -134
  202. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.spec.js +0 -142
  203. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.spec.js +0 -241
  204. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.utils.js +0 -69
  205. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.utils.spec.js +0 -144
  206. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderAgentDropdown.js +0 -95
  207. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderAgentSelector.js +0 -174
  208. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderLayoutMenu.js +0 -99
  209. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderLayoutMenu.spec.js +0 -65
  210. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.spec.js +0 -37
  211. package/lib/components/molecules/ChatAIModal/constants.spec.js +0 -16
  212. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.spec.js +0 -22
  213. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.spec.js +0 -67
  214. package/lib/components/molecules/ChatAIModal/layout.spec.js +0 -72
  215. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.helpers.spec.js +0 -93
  216. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.spec.js +0 -297
  217. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.helpers.spec.js +0 -62
  218. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +0 -221
  219. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.spec.js +0 -66
  220. package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +0 -369
  221. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.spec.js +0 -10
  222. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.spec.js +0 -104
  223. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.spec.js +0 -139
  224. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +0 -84
  225. package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +0 -116
  226. package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.spec.js +0 -126
  227. package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.spec.js +0 -115
  228. package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.spec.js +0 -79
  229. package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.spec.js +0 -37
  230. package/lib/components/molecules/Sidebar/Sidebar.helpers.spec.js +0 -119
  231. package/lib/components/molecules/Sidebar/Sidebar.spec.js +0 -464
  232. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.spec.js +0 -1067
  233. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +0 -1236
  234. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.spec.js +0 -112
  235. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.helpers.spec.js +0 -77
  236. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +0 -503
  237. package/lib/components/organisms/ChatAI/ChatAI.spec.js +0 -174
  238. package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -525
  239. package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +0 -246
  240. package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
  241. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +0 -253
  242. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +0 -291
  243. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +0 -13
  244. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +0 -284
  245. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +0 -343
  246. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +0 -197
  247. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.js +0 -94
  248. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.spec.js +0 -69
  249. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCards.skeleton.js +0 -38
  250. package/lib/components/organisms/ChatAIPage/getDaypart.js +0 -9
  251. package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +0 -19
  252. package/lib/components/organisms/ChatAIPage/index.js +0 -3
  253. package/lib/components/organisms/ClientAIButton/ClientAIButton.spec.js +0 -53
  254. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +0 -59
  255. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +0 -79
  256. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +0 -86
  257. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.spec.js +0 -49
  258. package/lib/components/organisms/ProjectAIButton/ProjectAIButton.spec.js +0 -67
  259. package/lib/components/organisms/ProjectSummary/ProjectSummary.spec.js +0 -117
  260. package/lib/components/organisms/SnackBar/Snackbar.spec.js +0 -66
  261. package/lib/components/organisms/SourcesInformation/SourceItem.spec.js +0 -19
  262. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.spec.js +0 -52
  263. package/lib/constants/formatExtensions.spec.js +0 -15
  264. package/lib/constants/maiaExternalConnectorsAccess.spec.js +0 -29
  265. package/lib/constants/maiaFeatureAccess.spec.js +0 -30
  266. package/lib/constants/maiaHourAgentAccess.spec.js +0 -30
  267. package/lib/constants/maiaTaskPanelAccess.spec.js +0 -41
  268. package/lib/constants/permissions/clientRoleAccess.spec.js +0 -65
  269. package/lib/constants/permissions/utils.spec.js +0 -128
  270. package/lib/constants/plannerSyncEvents.spec.js +0 -31
  271. package/lib/constants/taskUrls.spec.js +0 -9
  272. package/lib/dev/DevMaiaPage.js +0 -30
  273. package/lib/hooks/frequentlyUsedActionsCache.js +0 -17
  274. package/lib/hooks/frequentlyUsedActionsCache.spec.js +0 -25
  275. package/lib/hooks/useAccessClient/useAccessClient.spec.js +0 -149
  276. package/lib/hooks/useAgentModel/useAgentModel.spec.js +0 -83
  277. package/lib/hooks/useAgentModel/useCreateAgent.helpers.spec.js +0 -268
  278. package/lib/hooks/useAgentModel/useCreateAgent.spec.js +0 -314
  279. package/lib/hooks/useAgentModel/useDeleteAgent.spec.js +0 -183
  280. package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +0 -374
  281. package/lib/hooks/useAgentSuggestions.spec.js +0 -89
  282. package/lib/hooks/useCaretPosition.spec.js +0 -58
  283. package/lib/hooks/useChatManager/useChatManager.helpers.spec.js +0 -2027
  284. package/lib/hooks/useChatManager/useChatManager.spec.js +0 -2409
  285. package/lib/hooks/useChatMessages/useChatMessages.helpers.spec.js +0 -491
  286. package/lib/hooks/useChatMessages/useChatMessages.spec.js +0 -729
  287. package/lib/hooks/useChats/useChats.spec.js +0 -208
  288. package/lib/hooks/useClientSearch.helpers.spec.js +0 -52
  289. package/lib/hooks/useClientSearch.spec.js +0 -86
  290. package/lib/hooks/useContextMentions.helpers.spec.js +0 -267
  291. package/lib/hooks/useContextMentions.spec.js +0 -338
  292. package/lib/hooks/useContextPinPopover.helpers.spec.js +0 -183
  293. package/lib/hooks/useContextPinPopover.spec.js +0 -159
  294. package/lib/hooks/useContinueLegacyContextInNewChat/index.js +0 -2
  295. package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.js +0 -93
  296. package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.spec.js +0 -257
  297. package/lib/hooks/useDebounce.spec.js +0 -42
  298. package/lib/hooks/useEntitySearch.helpers.spec.js +0 -723
  299. package/lib/hooks/useEntitySearch.spec.js +0 -718
  300. package/lib/hooks/useEvent.spec.js +0 -45
  301. package/lib/hooks/useFrequentlyAskedQuestions.spec.js +0 -222
  302. package/lib/hooks/useFrequentlyUsedActions.spec.js +0 -293
  303. package/lib/hooks/useIsMaiaPageRoute.js +0 -26
  304. package/lib/hooks/useIsMaiaPageRoute.spec.js +0 -26
  305. package/lib/hooks/useKnowledge/deleteKnowledge.spec.js +0 -122
  306. package/lib/hooks/useKnowledge/downloadKnowledge.spec.js +0 -148
  307. package/lib/hooks/useKnowledge/saveKnowledge.spec.js +0 -104
  308. package/lib/hooks/useKnowledge/useKnowledgeOperations.spec.js +0 -178
  309. package/lib/hooks/useMaiaChatSessionMeta/index.js +0 -2
  310. package/lib/hooks/useMaiaChatSessionMeta/useMaiaChatSessionMeta.js +0 -24
  311. package/lib/hooks/useMentionAllowedTypes.spec.js +0 -89
  312. package/lib/hooks/useMentionPopover.helpers.spec.js +0 -100
  313. package/lib/hooks/useMentionPopover.spec.js +0 -392
  314. package/lib/hooks/useMinimizedPillBottomOffset.helpers.spec.js +0 -176
  315. package/lib/hooks/useMinimizedPillBottomOffset.spec.js +0 -89
  316. package/lib/hooks/useMinimizedPillNoveltyDot/useMinimizedPillNoveltyDot.spec.js +0 -67
  317. package/lib/hooks/useModal/useModal.spec.js +0 -73
  318. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.helpers.spec.js +0 -138
  319. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.spec.js +0 -417
  320. package/lib/hooks/useProjectSearch.helpers.spec.js +0 -89
  321. package/lib/hooks/useProjectSearch.spec.js +0 -91
  322. package/lib/hooks/useProjectSummary.spec.js +0 -193
  323. package/lib/hooks/useProjectSummaryConfig.helpers.spec.js +0 -151
  324. package/lib/hooks/useProjectSummaryConfig.spec.js +0 -133
  325. package/lib/hooks/useReasoningTrace/reasoningStore.spec.js +0 -112
  326. package/lib/hooks/useRecentClientsSearch.helpers.spec.js +0 -33
  327. package/lib/hooks/useRecentClientsSearch.spec.js +0 -85
  328. package/lib/hooks/useRecentContexts.spec.js +0 -139
  329. package/lib/hooks/useResize.spec.js +0 -37
  330. package/lib/hooks/useSkillsCatalog.spec.js +0 -88
  331. package/lib/hooks/useSlashCommands.spec.js +0 -139
  332. package/lib/hooks/useSmoothStreamText/useSmoothStreamText.spec.js +0 -101
  333. package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +0 -33
  334. package/lib/hooks/useStreamResponse.spec.js +0 -199
  335. package/lib/hooks/useT.spec.js +0 -20
  336. package/lib/hooks/useToggle.spec.js +0 -33
  337. package/lib/hooks/useToggleFavorite/useToggleFavorite.spec.js +0 -171
  338. package/lib/services/appcues.spec.js +0 -37
  339. package/lib/services/maia/Access/updateAccess.spec.js +0 -137
  340. package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +0 -121
  341. package/lib/services/maia/Actions/getSlashCommands.spec.js +0 -91
  342. package/lib/services/maia/Agents/connectors.spec.js +0 -496
  343. package/lib/services/maia/Agents/createAgent.spec.js +0 -55
  344. package/lib/services/maia/Agents/deleteAgent.spec.js +0 -57
  345. package/lib/services/maia/Agents/fetchAgentDetail.spec.js +0 -108
  346. package/lib/services/maia/Agents/getAgentById.spec.js +0 -190
  347. package/lib/services/maia/Agents/getAgentModels.spec.js +0 -190
  348. package/lib/services/maia/Agents/getAgentSuggestions.spec.js +0 -89
  349. package/lib/services/maia/Agents/getAgents.helpers.spec.js +0 -325
  350. package/lib/services/maia/Agents/getAgents.spec.js +0 -1135
  351. package/lib/services/maia/Agents/setAgentToolGroups.spec.js +0 -45
  352. package/lib/services/maia/Agents/toggleFavorite.spec.js +0 -59
  353. package/lib/services/maia/Agents/updateAgent.spec.js +0 -48
  354. package/lib/services/maia/Chats/deleteChat.spec.js +0 -31
  355. package/lib/services/maia/Chats/getChatMessages.spec.js +0 -150
  356. package/lib/services/maia/Chats/getChatsByUserId.spec.js +0 -149
  357. package/lib/services/maia/Chats/markSessionAsRead.spec.js +0 -30
  358. package/lib/services/maia/Chats/patchChat.spec.js +0 -41
  359. package/lib/services/maia/Chats/wasHelpfulChat.spec.js +0 -28
  360. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +0 -58
  361. package/lib/services/maia/Knowledge/delete.spec.js +0 -45
  362. package/lib/services/maia/Knowledge/download.spec.js +0 -78
  363. package/lib/services/maia/Knowledge/save.spec.js +0 -58
  364. package/lib/services/maia/Orchestrator/orchestrator.helpers.spec.js +0 -225
  365. package/lib/services/maia/Orchestrator/orchestrator.spec.js +0 -181
  366. package/lib/services/maia/RecentClients/getRecentClients.spec.js +0 -52
  367. package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +0 -103
  368. package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +0 -82
  369. package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +0 -63
  370. package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +0 -82
  371. package/lib/services/maia/Skills/createSkill.spec.js +0 -68
  372. package/lib/services/maia/Skills/deleteSkill.spec.js +0 -42
  373. package/lib/services/maia/Skills/generateSkill.spec.js +0 -48
  374. package/lib/services/maia/Skills/getSkills.spec.js +0 -152
  375. package/lib/services/maia/Skills/updateSkill.spec.js +0 -62
  376. package/lib/services/maia/client.spec.js +0 -56
  377. package/lib/services/utils/fetchCOR.spec.js +0 -211
  378. package/lib/services/utils/getCookie.spec.js +0 -20
  379. package/lib/services/utils/mapChatMessages.helpers.spec.js +0 -336
  380. package/lib/services/utils/mapChatMessages.spec.js +0 -254
  381. package/lib/store/chatsSidebarOptimistic.spec.js +0 -145
  382. package/lib/store/maiaLastChatPersistence.spec.js +0 -22
  383. package/lib/store/maiaPanelSessionPersistence.spec.js +0 -62
  384. package/lib/store/sessions/sessionNotificationSound.spec.js +0 -145
  385. package/lib/store/sessions/sessionNotifications.helpers.spec.js +0 -63
  386. package/lib/store/sessions/sessionNotifications.spec.js +0 -106
  387. package/lib/store/sessions/sessionStreamManager.helpers.spec.js +0 -177
  388. package/lib/store/sessions/sessionStreamManager.spec.js +0 -939
  389. package/lib/store/sessions/sessions.types.spec.js +0 -16
  390. package/lib/store/sessions/useSessionsStore.spec.js +0 -135
  391. package/lib/store/useChatsStore.spec.js +0 -619
  392. package/lib/store/useFaqsStore.spec.js +0 -57
  393. package/lib/utils/actionCategoryMap.spec.js +0 -18
  394. package/lib/utils/agentDisplayName.spec.js +0 -48
  395. package/lib/utils/autoApproveStorage.spec.js +0 -25
  396. package/lib/utils/chatInputFiles.spec.js +0 -39
  397. package/lib/utils/contextMentionIcons.spec.js +0 -41
  398. package/lib/utils/contextMentionLabel.spec.js +0 -13
  399. package/lib/utils/contextMentionTriggers.spec.js +0 -44
  400. package/lib/utils/contextMentionTypeLabel.spec.js +0 -14
  401. package/lib/utils/corConnectorMentionTypes.spec.js +0 -23
  402. package/lib/utils/entityLinkRender.spec.js +0 -72
  403. package/lib/utils/fileDownloadHelper.spec.js +0 -67
  404. package/lib/utils/formatQuickActionMessage.spec.js +0 -27
  405. package/lib/utils/formatUnreadCount.spec.js +0 -12
  406. package/lib/utils/getUnitFileSize.spec.js +0 -18
  407. package/lib/utils/hitlAnalytics.spec.js +0 -136
  408. package/lib/utils/hoursPlannerQuickActionType.spec.js +0 -124
  409. package/lib/utils/imagePreprocessor.helpers.spec.js +0 -28
  410. package/lib/utils/imagePreprocessor.spec.js +0 -112
  411. package/lib/utils/maiaPageRoute.js +0 -24
  412. package/lib/utils/maiaPageRoute.spec.js +0 -23
  413. package/lib/utils/mapBackendLang.spec.js +0 -19
  414. package/lib/utils/navigateContextEntity.spec.js +0 -50
  415. package/lib/utils/normalizeAgentConnectors.spec.js +0 -98
  416. package/lib/utils/openTaskInCorPanel.spec.js +0 -43
  417. package/lib/utils/orchestratorSubagents.spec.js +0 -32
  418. package/lib/utils/reasoningMappers.spec.js +0 -103
  419. package/lib/utils/recentContextsHomeLimit.spec.js +0 -32
  420. package/lib/utils/renderContextMentions.helpers.spec.js +0 -87
  421. package/lib/utils/renderContextMentions.spec.js +0 -268
  422. package/lib/utils/retryCompletion.spec.js +0 -181
  423. package/lib/utils/skillContentSize.spec.js +0 -13
  424. package/lib/utils/slashCommandMarker.spec.js +0 -43
  425. package/lib/utils/sortManagerHoursHomeFuas.spec.js +0 -51
  426. package/lib/utils/sseStreamContent.spec.js +0 -31
  427. package/lib/utils/streamActivityMessages.helpers.spec.js +0 -84
  428. package/lib/utils/streamActivityMessages.spec.js +0 -336
  429. package/lib/utils/validateTrimmedFields.spec.js +0 -26
@@ -351,8 +351,6 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
351
351
  case 24:
352
352
  _context.prev = 24;
353
353
  if (generation === recentsFetchGenerationRef.current) {
354
- // Falso positivo: el reset esta en finally, condicionado a que la request siga vigente
355
- // react-doctor-disable-next-line react-doctor/no-loading-flag-reset-outside-finally
356
354
  setLoading(false);
357
355
  }
358
356
  return _context.finish(24);
@@ -668,4 +666,4 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
668
666
  fetchRecent: fetchRecent
669
667
  };
670
668
  };
671
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXp5UXVlcnkiLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImdldFJlY2VudFRhc2tzIiwidXNlVXNlciIsIlBST0pFQ1RTX0ZBTExCQUNLIiwiU0VBUkNIX0VOVElUSUVTIiwiVEFTS19GQU1JTFlfRkFMTEJBQ0siLCJTRUFSQ0hfQ0xJRU5UUyIsIlVTRVJTX0RJUkVDVE9SWSIsIlNFQVJDSF9RVUVSWV9ERUJPVU5DRV9NUyIsInVzZURlYm91bmNlIiwidXNlVCIsImJ1aWxkRmlsdGVyc0ZvclR5cGUiLCJidWlsZFNlYXJjaEVudGl0aWVzRXh0cmEiLCJidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyIsIm1hcENsaWVudFRvSXRlbSIsIm1hcE1jcFNsdWdzVG9JdGVtcyIsIm1hcFJlY2VudFRhc2tUb0l0ZW0iLCJtYXBTZWFyY2hUb0l0ZW0iLCJtYXBVc2VyVG9JdGVtIiwibm9ybWFsaXplUG9zaXRpdmVJbnQiLCJub3JtYWxpemVQcm9qZWN0c0ZhbGxiYWNrUmVjb3JkIiwibm9ybWFsaXplVGFza0ZhbWlseVJlY29yZCIsInJlc29sdmVDbGllbnRzUGFnaW5hdGlvbiIsInJlc29sdmVQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uIiwicmVzb2x2ZVRhc2tGYWxsYmFja1BhZ2luYXRpb24iLCJyZXNvbHZlVXNlcnNQYWdpbmF0aW9uIiwiYXBwZW5kVW5pcXVlTWVudGlvbkl0ZW1zIiwiYnVpbGRQcm9qZWN0RmFsbGJhY2tBcmd1bWVudHMiLCJidWlsZFRhc2tGYW1pbHlTY29wZUZpbHRlciIsImJ1aWxkVXNlckRpcmVjdG9yeUl0ZW1zIiwiY2FuTG9hZE1vcmVFbnRpdHlTZWFyY2giLCJyZXNvbHZlRW50aXR5U2VhcmNoUmVjZW50c1RyaWdnZXIiLCJidWlsZFJlY2VudFRhc2tGaWx0ZXJzIiwiYnVpbGRVc2VyUmVjZW50c1dpdGhNZSIsIm1lcmdlVXNlcnNEaXJlY3RvcnlMb2FkTW9yZSIsInJlc29sdmVEZWJvdW5jZWRTZWFyY2hQYWdpbmF0aW9uU291cmNlIiwiaXNSZWNlbnRzRmV0Y2hHZW5lcmF0aW9uU3RhbGUiLCJ1c2VFbnRpdHlTZWFyY2giLCJ0eXBlIiwic2NvcGUiLCJfc2NvcGUkbWNwU2x1Z3MiLCJjb3JVc2VyIiwiX3VzZVQiLCJ0IiwicmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJkZWJvdW5jZWRTZWFyY2hWYWx1ZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXRlbXMiLCJzZXRJdGVtcyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwibG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImVycm9yIiwic2V0RXJyb3IiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsImhpZGVSZWNlbnRzTGFiZWwiLCJzZXRIaWRlUmVjZW50c0xhYmVsIiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwiaGFzTW9yZSIsInNldEhhc01vcmUiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwiaXNMb2FkaW5nTW9yZSIsInNldElzTG9hZGluZ01vcmUiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwiY3VycmVudFBhZ2UiLCJzZXRDdXJyZW50UGFnZSIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJhY3RpdmVQYWdpbmF0aW9uU291cmNlIiwic2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSIsIm1jcFNsdWdzS2V5IiwibWNwU2x1Z3MiLCJqb2luIiwic2hvd1Byb2plY3ROYW1lSW5UYXNrUm93IiwiYWdlbnRFbnRpdHkiLCJzdGFibGVTY29wZSIsIl9zY29wZSRjbGllbnRJZCIsIl9zY29wZSRwcm9qZWN0SWQiLCJfc2NvcGUkbWNwU2x1Z3MyIiwiX3Njb3BlJGFnZW50RW50aXR5IiwiY2xpZW50SWQiLCJwcm9qZWN0SWQiLCJfdXNlTGF6eVF1ZXJ5IiwidmFyaWFibGVzIiwibGltaXQiLCJmZXRjaFBvbGljeSIsIl91c2VMYXp5UXVlcnkyIiwiZmV0Y2hTZWFyY2hFbnRpdGllcyIsIl91c2VMYXp5UXVlcnkyJCIsInNlYXJjaERhdGEiLCJkYXRhIiwic2VhcmNoTG9hZGluZyIsInNlYXJjaEVycm9yIiwiX3VzZUxhenlRdWVyeTMiLCJfdXNlTGF6eVF1ZXJ5NCIsImZldGNoU2VhcmNoQ2xpZW50cyIsIl91c2VMYXp5UXVlcnk0JCIsImNsaWVudHNEYXRhIiwiY2xpZW50c0xvYWRpbmciLCJjbGllbnRzRXJyb3IiLCJfdXNlTGF6eVF1ZXJ5NSIsIl91c2VMYXp5UXVlcnk2IiwiZmV0Y2hVc2Vyc0RpcmVjdG9yeSIsIl91c2VMYXp5UXVlcnk2JCIsInVzZXJzRGF0YSIsInVzZXJzTG9hZGluZyIsInVzZXJzRXJyb3IiLCJzeW5jVXNlcnNQYWdpbmF0aW9uIiwicGF5bG9hZCIsIl9yZXNvbHZlVXNlcnNQYWdpbmF0aSIsInBhZ2UiLCJtb3JlIiwic3luY0NsaWVudHNQYWdpbmF0aW9uIiwiX3Jlc29sdmVDbGllbnRzUGFnaW5hIiwic3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24iLCJfcmVzb2x2ZVRhc2tGYWxsYmFja1AiLCJzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbiIsIl9yZXNvbHZlUHJvamVjdEZhbGxiYSIsIl91c2VMYXp5UXVlcnk3IiwiX3VzZUxhenlRdWVyeTgiLCJmZXRjaFRhc2tGYW1pbHlGYWxsYmFjayIsIl91c2VMYXp5UXVlcnk5IiwiX3VzZUxhenlRdWVyeTAiLCJmZXRjaFByb2plY3RzRmFsbGJhY2siLCJmZXRjaFJlY2VudCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiZ2VuZXJhdGlvbiIsIl9zdGFibGVTY29wZSRtY3BTbHVncyIsInNsdWdzIiwiX2ZhbGxiYWNrRGF0YSRwcm9qZWN0IiwiX2ZhbGxiYWNrRGF0YSRwcm9qZWN0MiIsImFyZ3VtZW50c0ZpbHRlciIsIl95aWVsZCRmZXRjaFByb2plY3RzRiIsImZhbGxiYWNrRGF0YSIsIm1hcHBlZCIsInRhc2tJdGVtcyIsIl9mYWxsYmFja0RhdGEkdGFza0ZhbSIsIl9mYWxsYmFja0RhdGEkdGFza0ZhbTIiLCJzY29wZUZpbHRlciIsIl95aWVsZCRmZXRjaFRhc2tGYW1pbCIsIl9mYWxsYmFja0RhdGEiLCJfZGF0YSR1c2VycyRkYXRhIiwiX2RhdGEkdXNlcnMiLCJfeWllbGQkZmV0Y2hVc2Vyc0RpcmUiLCJfZGF0YSIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJjdXJyZW50IiwiYWJydXB0IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsInBlclBhZ2UiLCJzZW50IiwicHJvamVjdHMiLCJtYXAiLCJmaWx0ZXIiLCJpdGVtIiwibGVuZ3RoIiwidGFzayIsImFyY2hpdmVkIiwicGFnaW5hdGlvbiIsIm9mZnNldCIsInNpemUiLCJ0YXNrRmFtaWx5IiwiZmlsdGVycyIsInVzZXJzIiwiZmluaXNoIiwic3RvcCIsInEiLCJ0cmltIiwiX3N0YWJsZVNjb3BlJG1jcFNsdWdzMiIsIm5hbWUiLCJleHRyYSIsInVuZGVmaW5lZCIsIl9jbGllbnRzRGF0YSRjbGllbnRzIiwiY2xpZW50cyIsImMiLCJfdXNlcnNEYXRhJHVzZXJzIiwic2VhcmNoIiwiciIsImxvYWRNb3JlIiwiX2NhbGxlZTIiLCJzYWZlQ3VycmVudFBhZ2UiLCJuZXh0UGFnZSIsImxvYWRNb3JlQmFzZWxpbmVHZW4iLCJfZGF0YSR1c2VycyRkYXRhMiIsIl9kYXRhJHVzZXJzMiIsIl95aWVsZCRmZXRjaFVzZXJzRGlyZTIiLCJuZXh0SXRlbXMiLCJfZGF0YTIkY2xpZW50cyRkYXRhIiwiX2RhdGEyJGNsaWVudHMiLCJfeWllbGQkZmV0Y2hTZWFyY2hDbGkiLCJfZGF0YTIiLCJfbmV4dEl0ZW1zIiwiX2RhdGEzJHRhc2tGYW1pbHkkZGF0IiwiX2RhdGEzJHRhc2tGYW1pbHkiLCJfeWllbGQkZmV0Y2hUYXNrRmFtaWwyIiwiX2RhdGEzIiwiX25leHRJdGVtczIiLCJfZGF0YTQkcHJvamVjdHMkZGF0YSIsIl9kYXRhNCRwcm9qZWN0cyIsIl95aWVsZCRmZXRjaFByb2plY3RzRjIiLCJfZGF0YTQiLCJfbmV4dEl0ZW1zMyIsIl90MiIsIl9jb250ZXh0MiIsInUiLCJjb25zb2xlIiwic291cmNlIiwiZmV0Y2hSZWNlbnRSZWYiLCJyZWNlbnRzVHJpZ2dlciIsInVwZGF0ZVNlYXJjaFZhbHVlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUVudGl0eVNlYXJjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VMYXp5UXVlcnkgfSBmcm9tICdAYXBvbGxvL2NsaWVudCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGdldFJlY2VudFRhc2tzIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpYS9SZWNlbnRUYXNrcy9nZXRSZWNlbnRUYXNrcydcbmltcG9ydCB0eXBlIHsgUmVjZW50VGFza0l0ZW0gfSBmcm9tICcuLi9zZXJ2aWNlcy9tYWlhL1JlY2VudFRhc2tzL2dldFJlY2VudFRhc2tzJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBQUk9KRUNUU19GQUxMQkFDSywgU0VBUkNIX0VOVElUSUVTLCBUQVNLX0ZBTUlMWV9GQUxMQkFDSyB9IGZyb20gJy4uL3NlcnZpY2VzL3F1ZXJ5L2VudGl0eVNlYXJjaFF1ZXJ5J1xuaW1wb3J0IHsgU0VBUkNIX0NMSUVOVFMgfSBmcm9tICcuLi9zZXJ2aWNlcy9xdWVyeS9DbGllbnRTZWFyY2hRdWVyeSdcbmltcG9ydCB7IFVTRVJTX0RJUkVDVE9SWSB9IGZyb20gJy4uL3NlcnZpY2VzL3F1ZXJ5L3VzZXJzRGlyZWN0b3J5UXVlcnknXG5pbXBvcnQgeyBTRUFSQ0hfUVVFUllfREVCT1VOQ0VfTVMgfSBmcm9tICcuLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgdXNlRGVib3VuY2UgfSBmcm9tICcuL3VzZURlYm91bmNlJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4vdXNlVCdcbmltcG9ydCB7IENvbnRleHRFbnRpdHlUeXBlLCBDb250ZXh0TWVudGlvbkl0ZW0gfSBmcm9tICcuLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7XG4gIGJ1aWxkRmlsdGVyc0ZvclR5cGUsXG4gIGJ1aWxkU2VhcmNoRW50aXRpZXNFeHRyYSxcbiAgYnVpbGRVc2Vyc0RpcmVjdG9yeUZpbHRlcnMsXG4gIG1hcENsaWVudFRvSXRlbSxcbiAgbWFwTWNwU2x1Z3NUb0l0ZW1zLFxuICBtYXBSZWNlbnRUYXNrVG9JdGVtLFxuICBtYXBTZWFyY2hUb0l0ZW0sXG4gIG1hcFVzZXJUb0l0ZW0sXG4gIG5vcm1hbGl6ZVBvc2l0aXZlSW50LFxuICBub3JtYWxpemVQcm9qZWN0c0ZhbGxiYWNrUmVjb3JkLFxuICBub3JtYWxpemVUYXNrRmFtaWx5UmVjb3JkLFxuICByZXNvbHZlQ2xpZW50c1BhZ2luYXRpb24sXG4gIHJlc29sdmVQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uLFxuICByZXNvbHZlVGFza0ZhbGxiYWNrUGFnaW5hdGlvbixcbiAgcmVzb2x2ZVVzZXJzUGFnaW5hdGlvbixcbiAgYXBwZW5kVW5pcXVlTWVudGlvbkl0ZW1zLFxuICBidWlsZFByb2plY3RGYWxsYmFja0FyZ3VtZW50cyxcbiAgYnVpbGRUYXNrRmFtaWx5U2NvcGVGaWx0ZXIsXG4gIGJ1aWxkVXNlckRpcmVjdG9yeUl0ZW1zLFxuICBjYW5Mb2FkTW9yZUVudGl0eVNlYXJjaCxcbiAgcmVzb2x2ZUVudGl0eVNlYXJjaFJlY2VudHNUcmlnZ2VyLFxuICBidWlsZFJlY2VudFRhc2tGaWx0ZXJzLFxuICBidWlsZFVzZXJSZWNlbnRzV2l0aE1lLFxuICBtZXJnZVVzZXJzRGlyZWN0b3J5TG9hZE1vcmUsXG4gIHJlc29sdmVEZWJvdW5jZWRTZWFyY2hQYWdpbmF0aW9uU291cmNlLFxuICBpc1JlY2VudHNGZXRjaEdlbmVyYXRpb25TdGFsZSxcbiAgdHlwZSBFbnRpdHlTZWFyY2hQYWdpbmF0aW9uU291cmNlLFxuICB0eXBlIEVudGl0eVNlYXJjaFNjb3BlLFxuICB0eXBlIEZhbGxiYWNrUHJvamVjdFJlY29yZCxcbiAgdHlwZSBSYXdDbGllbnQsXG4gIHR5cGUgUmF3RGlyZWN0b3J5VXNlcixcbiAgdHlwZSBSYXdTZWFyY2hSZXN1bHQsXG4gIHR5cGUgVGFza0ZhbWlseVJlY29yZCxcbn0gZnJvbSAnLi91c2VFbnRpdHlTZWFyY2guaGVscGVycydcblxuZXhwb3J0IHR5cGUgeyBFbnRpdHlTZWFyY2hTY29wZSB9IGZyb20gJy4vdXNlRW50aXR5U2VhcmNoLmhlbHBlcnMnXG5cbnR5cGUgU2VhcmNoRW50aXRpZXNEYXRhID0geyBzZWFyY2g6IFJhd1NlYXJjaFJlc3VsdFtdIHwgbnVsbCB9XG50eXBlIFNlYXJjaENsaWVudHNEYXRhID0ge1xuICBjbGllbnRzOiB7XG4gICAgdG90YWw/OiBudW1iZXIgfCBudWxsXG4gICAgcGVyUGFnZT86IG51bWJlciB8IG51bGxcbiAgICBwYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIGxhc3RQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIGRhdGE6IFJhd0NsaWVudFtdXG4gIH0gfCBudWxsXG59XG50eXBlIFVzZXJzRGlyZWN0b3J5RGF0YSA9IHtcbiAgdXNlcnM6IHtcbiAgICB0b3RhbD86IG51bWJlciB8IG51bGxcbiAgICBwZXJQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIHBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgbGFzdFBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgZGF0YTogUmF3RGlyZWN0b3J5VXNlcltdIHwgbnVsbFxuICB9IHwgbnVsbFxufVxuXG50eXBlIFRhc2tGYW1pbHlEYXRhID0ge1xuICB0YXNrRmFtaWx5Pzoge1xuICAgIHRvdGFsPzogbnVtYmVyIHwgbnVsbFxuICAgIHBlclBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgcGFnZT86IG51bWJlciB8IG51bGxcbiAgICBsYXN0UGFnZT86IG51bWJlciB8IG51bGxcbiAgICBkYXRhPzogVGFza0ZhbWlseVJlY29yZFtdIHwgbnVsbFxuICB9IHwgbnVsbFxufVxuXG50eXBlIFByb2plY3RzRmFsbGJhY2tEYXRhID0ge1xuICBwcm9qZWN0cz86IHtcbiAgICB0b3RhbD86IG51bWJlciB8IG51bGxcbiAgICBwZXJQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIHBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgbGFzdFBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgZGF0YT86IEZhbGxiYWNrUHJvamVjdFJlY29yZFtdIHwgbnVsbFxuICB9IHwgbnVsbFxufVxuXG5leHBvcnQgY29uc3QgdXNlRW50aXR5U2VhcmNoID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBzY29wZT86IEVudGl0eVNlYXJjaFNjb3BlKSA9PiB7XG4gIGNvbnN0IGNvclVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgLyoqIEV2aXRhIGFwbGljYXIgcmVzdWx0YWRvcyBkZSB1biBgZmV0Y2hSZWNlbnRgIHZpZWpvIGN1YW5kbyBlbCB1c3VhcmlvIHlhIGNhbWJpw7MgZGUgdGFiIChyYWNlIGFzeW5jKS4gKi9cbiAgY29uc3QgcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBkZWJvdW5jZWRTZWFyY2hWYWx1ZSA9IHVzZURlYm91bmNlKHNlYXJjaFZhbHVlLCBTRUFSQ0hfUVVFUllfREVCT1VOQ0VfTVMpXG4gIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGU8Q29udGV4dE1lbnRpb25JdGVtW10+KFtdKVxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2hpZGVSZWNlbnRzTGFiZWwsIHNldEhpZGVSZWNlbnRzTGFiZWxdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtoYXNNb3JlLCBzZXRIYXNNb3JlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNMb2FkaW5nTW9yZSwgc2V0SXNMb2FkaW5nTW9yZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2N1cnJlbnRQYWdlLCBzZXRDdXJyZW50UGFnZV0gPSB1c2VTdGF0ZSgxKVxuICBjb25zdCBbYWN0aXZlUGFnaW5hdGlvblNvdXJjZSwgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZV0gPSB1c2VTdGF0ZTxFbnRpdHlTZWFyY2hQYWdpbmF0aW9uU291cmNlPignbm9uZScpXG5cbiAgY29uc3QgbWNwU2x1Z3NLZXkgPSAoc2NvcGU/Lm1jcFNsdWdzID8/IFtdKS5qb2luKCd8JylcbiAgY29uc3Qgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93ID0gc2NvcGU/LmFnZW50RW50aXR5ICE9PSAncHJvamVjdCdcblxuICAvLyBFc3RhYmlsaXphbW9zIGVsIHNjb3BlIHBhcmEgbm8gZGlzcGFyYXIgZmV0Y2hzIHBvciBjYW1iaW9zIGRlIGlkZW50aWRhZCBkZSBvYmpldG8uXG4gIGNvbnN0IHN0YWJsZVNjb3BlID0gdXNlTWVtbzxFbnRpdHlTZWFyY2hTY29wZT4oXG4gICAgKCkgPT4gKHtcbiAgICAgIGNsaWVudElkOiBzY29wZT8uY2xpZW50SWQgPz8gbnVsbCxcbiAgICAgIHByb2plY3RJZDogc2NvcGU/LnByb2plY3RJZCA/PyBudWxsLFxuICAgICAgbWNwU2x1Z3M6IHNjb3BlPy5tY3BTbHVncyA/PyBbXSxcbiAgICAgIGFnZW50RW50aXR5OiBzY29wZT8uYWdlbnRFbnRpdHkgPz8gbnVsbCxcbiAgICB9KSxcbiAgICBbc2NvcGU/LmNsaWVudElkLCBzY29wZT8ucHJvamVjdElkLCBtY3BTbHVnc0tleSwgc2NvcGU/LmFnZW50RW50aXR5XVxuICApXG5cbiAgLy8gLS0tIFNlYXJjaDogcHJvamVjdCB8IHRhc2sgKEdyYXBoUUw6IHNlYXJjaCkgLS0tXG4gIGNvbnN0IFtmZXRjaFNlYXJjaEVudGl0aWVzLCB7IGRhdGE6IHNlYXJjaERhdGEsIGxvYWRpbmc6IHNlYXJjaExvYWRpbmcsIGVycm9yOiBzZWFyY2hFcnJvciB9XSA9XG4gICAgdXNlTGF6eVF1ZXJ5PFNlYXJjaEVudGl0aWVzRGF0YT4oU0VBUkNIX0VOVElUSUVTLCB7XG4gICAgICB2YXJpYWJsZXM6IHsgbGltaXQ6IDIwIH0sXG4gICAgICBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScsXG4gICAgfSlcblxuICAvLyAtLS0gU2VhcmNoOiBjbGllbnQgKEdyYXBoUUwpIC0tLVxuICBjb25zdCBbZmV0Y2hTZWFyY2hDbGllbnRzLCB7IGRhdGE6IGNsaWVudHNEYXRhLCBsb2FkaW5nOiBjbGllbnRzTG9hZGluZywgZXJyb3I6IGNsaWVudHNFcnJvciB9XSA9XG4gICAgdXNlTGF6eVF1ZXJ5PFNlYXJjaENsaWVudHNEYXRhPihTRUFSQ0hfQ0xJRU5UUywge1xuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pXG5cbiAgLy8gLS0tIFNlYXJjaDogdXNlciAoR3JhcGhRTDogdXNlcnMpIC0tLVxuICBjb25zdCBbZmV0Y2hVc2Vyc0RpcmVjdG9yeSwgeyBkYXRhOiB1c2Vyc0RhdGEsIGxvYWRpbmc6IHVzZXJzTG9hZGluZywgZXJyb3I6IHVzZXJzRXJyb3IgfV0gPVxuICAgIHVzZUxhenlRdWVyeTxVc2Vyc0RpcmVjdG9yeURhdGE+KFVTRVJTX0RJUkVDVE9SWSwge1xuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pXG5cbiAgY29uc3Qgc3luY1VzZXJzUGFnaW5hdGlvbiA9IHVzZUNhbGxiYWNrKChwYXlsb2FkPzogVXNlcnNEaXJlY3RvcnlEYXRhIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IHsgcGFnZSwgaGFzTW9yZTogbW9yZSB9ID0gcmVzb2x2ZVVzZXJzUGFnaW5hdGlvbihwYXlsb2FkKVxuICAgIHNldEN1cnJlbnRQYWdlKHBhZ2UpXG4gICAgc2V0SGFzTW9yZShtb3JlKVxuICB9LCBbXSlcblxuICBjb25zdCBzeW5jQ2xpZW50c1BhZ2luYXRpb24gPSB1c2VDYWxsYmFjaygocGF5bG9hZD86IFNlYXJjaENsaWVudHNEYXRhIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IHsgcGFnZSwgaGFzTW9yZTogbW9yZSB9ID0gcmVzb2x2ZUNsaWVudHNQYWdpbmF0aW9uKHBheWxvYWQpXG4gICAgc2V0Q3VycmVudFBhZ2UocGFnZSlcbiAgICBzZXRIYXNNb3JlKG1vcmUpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uID0gdXNlQ2FsbGJhY2soKHBheWxvYWQ/OiBUYXNrRmFtaWx5RGF0YSB8IG51bGwpID0+IHtcbiAgICBjb25zdCB7IHBhZ2UsIGhhc01vcmU6IG1vcmUgfSA9IHJlc29sdmVUYXNrRmFsbGJhY2tQYWdpbmF0aW9uKHBheWxvYWQpXG4gICAgc2V0Q3VycmVudFBhZ2UocGFnZSlcbiAgICBzZXRIYXNNb3JlKG1vcmUpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN5bmNQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uID0gdXNlQ2FsbGJhY2soKHBheWxvYWQ/OiBQcm9qZWN0c0ZhbGxiYWNrRGF0YSB8IG51bGwpID0+IHtcbiAgICBjb25zdCB7IHBhZ2UsIGhhc01vcmU6IG1vcmUgfSA9IHJlc29sdmVQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uKHBheWxvYWQpXG4gICAgc2V0Q3VycmVudFBhZ2UocGFnZSlcbiAgICBzZXRIYXNNb3JlKG1vcmUpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IFtmZXRjaFRhc2tGYW1pbHlGYWxsYmFja10gPSB1c2VMYXp5UXVlcnk8VGFza0ZhbWlseURhdGE+KFRBU0tfRkFNSUxZX0ZBTExCQUNLLCB7XG4gICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICB9KVxuXG4gIGNvbnN0IFtmZXRjaFByb2plY3RzRmFsbGJhY2tdID0gdXNlTGF6eVF1ZXJ5PFByb2plY3RzRmFsbGJhY2tEYXRhPihQUk9KRUNUU19GQUxMQkFDSywge1xuICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgfSlcblxuICBjb25zdCBmZXRjaFJlY2VudCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQgKz0gMVxuICAgIGNvbnN0IGdlbmVyYXRpb24gPSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnRcblxuICAgIGlmICh0eXBlID09PSAnbWNwJykge1xuICAgICAgY29uc3Qgc2x1Z3MgPSBzdGFibGVTY29wZS5tY3BTbHVncyA/PyBbXVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgc2V0SXRlbXMobWFwTWNwU2x1Z3NUb0l0ZW1zKHNsdWdzLCAnJykpXG4gICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0TG9hZGluZyh0cnVlKVxuICAgIHNldEVycm9yKGZhbHNlKVxuICAgIHRyeSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgc2V0SXRlbXMoW10pXG4gICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ25vbmUnKVxuICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgY29uc3QgYXJndW1lbnRzRmlsdGVyID0gYnVpbGRQcm9qZWN0RmFsbGJhY2tBcmd1bWVudHMoc3RhYmxlU2NvcGUpXG4gICAgICAgIGNvbnN0IHsgZGF0YTogZmFsbGJhY2tEYXRhIH0gPSBhd2FpdCBmZXRjaFByb2plY3RzRmFsbGJhY2soe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgLi4uKGFyZ3VtZW50c0ZpbHRlciA/IHsgYXJndW1lbnRzOiBhcmd1bWVudHNGaWx0ZXIgfSA6IHt9KSxcbiAgICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgICBwZXJQYWdlOiAyMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBpZiAoaXNSZWNlbnRzRmV0Y2hHZW5lcmF0aW9uU3RhbGUoZ2VuZXJhdGlvbiwgcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG1hcHBlZCA9IChmYWxsYmFja0RhdGE/LnByb2plY3RzPy5kYXRhID8/IFtdKVxuICAgICAgICAgIC5tYXAobm9ybWFsaXplUHJvamVjdHNGYWxsYmFja1JlY29yZClcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKTogaXRlbSBpcyBSYXdTZWFyY2hSZXN1bHQgPT4gaXRlbSAhPT0gbnVsbClcbiAgICAgICAgICAubWFwKGl0ZW0gPT4gbWFwU2VhcmNoVG9JdGVtKGl0ZW0sICdwcm9qZWN0JywgJycpKVxuICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKG1hcHBlZC5sZW5ndGggPiAwKVxuICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdwcm9qZWN0LWZhbGxiYWNrJylcbiAgICAgICAgc3luY1Byb2plY3RGYWxsYmFja1BhZ2luYXRpb24oZmFsbGJhY2tEYXRhKVxuICAgICAgICBpZiAoaXNSZWNlbnRzRmV0Y2hHZW5lcmF0aW9uU3RhbGUoZ2VuZXJhdGlvbiwgcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSkgcmV0dXJuXG4gICAgICAgIHNldEl0ZW1zKG1hcHBlZClcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3Rhc2snKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBnZXRSZWNlbnRUYXNrcyhidWlsZFJlY2VudFRhc2tGaWx0ZXJzKHN0YWJsZVNjb3BlKSlcbiAgICAgICAgaWYgKGlzUmVjZW50c0ZldGNoR2VuZXJhdGlvblN0YWxlKGdlbmVyYXRpb24sIHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkpIHJldHVyblxuICAgICAgICBsZXQgdGFza0l0ZW1zID0gKGRhdGEgPz8gW10pLm1hcCh0YXNrID0+IG1hcFJlY2VudFRhc2tUb0l0ZW0odGFzaywgJycsIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdykpXG4gICAgICAgIGlmICh0YXNrSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3Qgc2NvcGVGaWx0ZXIgPSBidWlsZFRhc2tGYW1pbHlTY29wZUZpbHRlcihzdGFibGVTY29wZSlcbiAgICAgICAgICBjb25zdCB7IGRhdGE6IGZhbGxiYWNrRGF0YSB9ID0gYXdhaXQgZmV0Y2hUYXNrRmFtaWx5RmFsbGJhY2soe1xuICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgIGZpbHRlcjogeyBhcmNoaXZlZDogZmFsc2UsIC4uLnNjb3BlRmlsdGVyIH0sXG4gICAgICAgICAgICAgIHBhZ2luYXRpb246IHsgb2Zmc2V0OiAwLCBzaXplOiAyMCB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChpc1JlY2VudHNGZXRjaEdlbmVyYXRpb25TdGFsZShnZW5lcmF0aW9uLCByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpKSByZXR1cm5cbiAgICAgICAgICB0YXNrSXRlbXMgPSAoZmFsbGJhY2tEYXRhPy50YXNrRmFtaWx5Py5kYXRhID8/IFtdKVxuICAgICAgICAgICAgLm1hcChub3JtYWxpemVUYXNrRmFtaWx5UmVjb3JkKVxuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSk6IGl0ZW0gaXMgUmVjZW50VGFza0l0ZW0gPT4gaXRlbSAhPT0gbnVsbClcbiAgICAgICAgICAgIC5tYXAodGFzayA9PiBtYXBSZWNlbnRUYXNrVG9JdGVtKHRhc2ssICcnLCBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cpKVxuICAgICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwodGFza0l0ZW1zLmxlbmd0aCA+IDApXG4gICAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgndGFzay1mYWxsYmFjaycpXG4gICAgICAgICAgc3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24oZmFsbGJhY2tEYXRhKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNSZWNlbnRzRmV0Y2hHZW5lcmF0aW9uU3RhbGUoZ2VuZXJhdGlvbiwgcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSkgcmV0dXJuXG4gICAgICAgIHNldEl0ZW1zKHRhc2tJdGVtcylcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3VzZXInKSB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgZmV0Y2hVc2Vyc0RpcmVjdG9yeSh7XG4gICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycygnJyksXG4gICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChpc1JlY2VudHNGZXRjaEdlbmVyYXRpb25TdGFsZShnZW5lcmF0aW9uLCByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpKSByZXR1cm5cbiAgICAgICAgaWYgKGlzUmVjZW50c0ZldGNoR2VuZXJhdGlvblN0YWxlKGdlbmVyYXRpb24sIHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkpIHJldHVyblxuICAgICAgICBzZXRJdGVtcyhidWlsZFVzZXJSZWNlbnRzV2l0aE1lKGRhdGE/LnVzZXJzPy5kYXRhID8/IFtdLCBjb3JVc2VyLCB0KCdjb250ZXh0TWVudGlvbi5tZScpKSlcbiAgICAgICAgc3luY1VzZXJzUGFnaW5hdGlvbihkYXRhKVxuICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCd1c2VycycpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNSZWNlbnRzRmV0Y2hHZW5lcmF0aW9uU3RhbGUoZ2VuZXJhdGlvbiwgcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSkgcmV0dXJuXG4gICAgICAgIHNldEl0ZW1zKFtdKVxuICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICAgICAgc2V0Q3VycmVudFBhZ2UoMSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIGlmIChpc1JlY2VudHNGZXRjaEdlbmVyYXRpb25TdGFsZShnZW5lcmF0aW9uLCByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpKSByZXR1cm5cbiAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICBzZXRJdGVtcyhbXSlcbiAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChnZW5lcmF0aW9uID09PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgLy8gRmFsc28gcG9zaXRpdm86IGVsIHJlc2V0IGVzdGEgZW4gZmluYWxseSwgY29uZGljaW9uYWRvIGEgcXVlIGxhIHJlcXVlc3Qgc2lnYSB2aWdlbnRlXG4gICAgICAgIC8vIHJlYWN0LWRvY3Rvci1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1kb2N0b3Ivbm8tbG9hZGluZy1mbGFnLXJlc2V0LW91dHNpZGUtZmluYWxseVxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIHR5cGUsXG4gICAgc3RhYmxlU2NvcGUsXG4gICAgZmV0Y2hVc2Vyc0RpcmVjdG9yeSxcbiAgICBmZXRjaFRhc2tGYW1pbHlGYWxsYmFjayxcbiAgICBmZXRjaFByb2plY3RzRmFsbGJhY2ssXG4gICAgc3luY1VzZXJzUGFnaW5hdGlvbixcbiAgICBzeW5jVGFza0ZhbGxiYWNrUGFnaW5hdGlvbixcbiAgICBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbixcbiAgICBzaG93UHJvamVjdE5hbWVJblRhc2tSb3csXG4gICAgY29yVXNlcixcbiAgICB0LFxuICBdKVxuXG4gIC8vIERpc3BhcmFyIHNlYXJjaCBhbCBjYW1iaWFyIGRlYm91bmNlZCB2YWx1ZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHEgPSBkZWJvdW5jZWRTZWFyY2hWYWx1ZS50cmltKClcblxuICAgIGlmICh0eXBlID09PSAnbWNwJykge1xuICAgICAgY29uc3Qgc2x1Z3MgPSBzdGFibGVTY29wZS5tY3BTbHVncyA/PyBbXVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgc2V0SXRlbXMobWFwTWNwU2x1Z3NUb0l0ZW1zKHNsdWdzLCBxKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghcSkgcmV0dXJuXG5cbiAgICBpZiAodHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgIGZldGNoU2VhcmNoQ2xpZW50cyh7XG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGZpbHRlcjogeyBuYW1lOiBxIH0sXG4gICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICBwZXJQYWdlOiAyMCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKHJlc29sdmVEZWJvdW5jZWRTZWFyY2hQYWdpbmF0aW9uU291cmNlKHR5cGUpKVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3VzZXInKSB7XG4gICAgICBmZXRjaFVzZXJzRGlyZWN0b3J5KHtcbiAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgZmlsdGVyczogYnVpbGRVc2Vyc0RpcmVjdG9yeUZpbHRlcnMocSksXG4gICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKHJlc29sdmVEZWJvdW5jZWRTZWFyY2hQYWdpbmF0aW9uU291cmNlKHR5cGUpKVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3Byb2plY3QnIHx8IHR5cGUgPT09ICd0YXNrJykge1xuICAgICAgY29uc3QgZmlsdGVycyA9IGJ1aWxkRmlsdGVyc0ZvclR5cGUodHlwZSlcbiAgICAgIGNvbnN0IGV4dHJhID0gYnVpbGRTZWFyY2hFbnRpdGllc0V4dHJhKHR5cGUsIHN0YWJsZVNjb3BlKVxuICAgICAgZmV0Y2hTZWFyY2hFbnRpdGllcyh7XG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIHEsXG4gICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAuLi4oZXh0cmEgIT09IHVuZGVmaW5lZCA/IHsgZXh0cmEgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKHJlc29sdmVEZWJvdW5jZWRTZWFyY2hQYWdpbmF0aW9uU291cmNlKHR5cGUpKVxuICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICB9XG4gIH0sIFtkZWJvdW5jZWRTZWFyY2hWYWx1ZSwgdHlwZSwgc3RhYmxlU2NvcGUsIGZldGNoU2VhcmNoRW50aXRpZXMsIGZldGNoU2VhcmNoQ2xpZW50cywgZmV0Y2hVc2Vyc0RpcmVjdG9yeV0pXG5cbiAgLy8gU2luY3Jvbml6YXIgcmVzdWx0YWRvcyBkZSBzZWFyY2hcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZSA9PT0gJ21jcCcpIHJldHVyblxuXG4gICAgY29uc3QgcSA9IGRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKVxuICAgIGlmICghcSkgcmV0dXJuXG4gICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcblxuICAgIGlmICh0eXBlID09PSAnY2xpZW50Jykge1xuICAgICAgc2V0TG9hZGluZyhjbGllbnRzTG9hZGluZylcbiAgICAgIGlmIChjbGllbnRzRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoY2xpZW50c0RhdGE/LmNsaWVudHM/LmRhdGEpIHtcbiAgICAgICAgc2V0SXRlbXMoY2xpZW50c0RhdGEuY2xpZW50cy5kYXRhLm1hcChjID0+IG1hcENsaWVudFRvSXRlbShjLCBxKSkpXG4gICAgICAgIHN5bmNDbGllbnRzUGFnaW5hdGlvbihjbGllbnRzRGF0YSlcbiAgICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAndXNlcicpIHtcbiAgICAgIHNldExvYWRpbmcodXNlcnNMb2FkaW5nKVxuICAgICAgaWYgKHVzZXJzRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAodXNlcnNEYXRhPy51c2Vycz8uZGF0YSkge1xuICAgICAgICBzZXRJdGVtcyhidWlsZFVzZXJEaXJlY3RvcnlJdGVtcyh1c2Vyc0RhdGEudXNlcnMuZGF0YSwgY29yVXNlciwgcSwgdCgnY29udGV4dE1lbnRpb24ubWUnKSkpXG4gICAgICAgIHN5bmNVc2Vyc1BhZ2luYXRpb24odXNlcnNEYXRhKVxuICAgICAgICBzZXRFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2V0TG9hZGluZyhzZWFyY2hMb2FkaW5nKVxuICAgICAgaWYgKHNlYXJjaEVycm9yKSB7XG4gICAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKHNlYXJjaERhdGE/LnNlYXJjaCkge1xuICAgICAgICBzZXRJdGVtcyhzZWFyY2hEYXRhLnNlYXJjaC5tYXAociA9PiBtYXBTZWFyY2hUb0l0ZW0ociwgdHlwZSwgcSwgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93KSkpXG4gICAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIHNlYXJjaERhdGEsXG4gICAgY2xpZW50c0RhdGEsXG4gICAgdXNlcnNEYXRhLFxuICAgIHNlYXJjaExvYWRpbmcsXG4gICAgY2xpZW50c0xvYWRpbmcsXG4gICAgdXNlcnNMb2FkaW5nLFxuICAgIHNlYXJjaEVycm9yLFxuICAgIGNsaWVudHNFcnJvcixcbiAgICB1c2Vyc0Vycm9yLFxuICAgIGRlYm91bmNlZFNlYXJjaFZhbHVlLFxuICAgIHR5cGUsXG4gICAgc3luY0NsaWVudHNQYWdpbmF0aW9uLFxuICAgIHN5bmNVc2Vyc1BhZ2luYXRpb24sXG4gICAgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93LFxuICAgIGNvclVzZXIsXG4gICAgdCxcbiAgXSlcblxuICBjb25zdCBsb2FkTW9yZSA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWNhbkxvYWRNb3JlRW50aXR5U2VhcmNoKGlzTG9hZGluZ01vcmUsIGhhc01vcmUsIGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc2FmZUN1cnJlbnRQYWdlID0gbm9ybWFsaXplUG9zaXRpdmVJbnQoY3VycmVudFBhZ2UsIDEpXG4gICAgY29uc3QgbmV4dFBhZ2UgPSBzYWZlQ3VycmVudFBhZ2UgKyAxXG4gICAgY29uc3QgcSA9IGRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKVxuICAgIGNvbnN0IGxvYWRNb3JlQmFzZWxpbmVHZW4gPSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnRcbiAgICBzZXRJc0xvYWRpbmdNb3JlKHRydWUpXG4gICAgdHJ5IHtcbiAgICAgIGlmIChhY3RpdmVQYWdpbmF0aW9uU291cmNlID09PSAndXNlcnMnKSB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgZmV0Y2hVc2Vyc0RpcmVjdG9yeSh7XG4gICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyhxKSxcbiAgICAgICAgICAgIHBhZ2U6IG5leHRQYWdlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChpc1JlY2VudHNGZXRjaEdlbmVyYXRpb25TdGFsZShsb2FkTW9yZUJhc2VsaW5lR2VuLCByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpKSByZXR1cm5cbiAgICAgICAgY29uc3QgbmV4dEl0ZW1zID0gKGRhdGE/LnVzZXJzPy5kYXRhID8/IFtdKS5tYXAodSA9PiBtYXBVc2VyVG9JdGVtKHUsIHEpKVxuICAgICAgICBzZXRJdGVtcyhwcmV2ID0+IG1lcmdlVXNlcnNEaXJlY3RvcnlMb2FkTW9yZShwcmV2LCBuZXh0SXRlbXMsIGNvclVzZXIsIHEsIHQoJ2NvbnRleHRNZW50aW9uLm1lJykpKVxuICAgICAgICBzeW5jVXNlcnNQYWdpbmF0aW9uKGRhdGEpXG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICdjbGllbnRzLXNlYXJjaCcpIHtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBmZXRjaFNlYXJjaENsaWVudHMoe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgZmlsdGVyOiB7IG5hbWU6IHEgfSxcbiAgICAgICAgICAgIHBhZ2U6IG5leHRQYWdlLFxuICAgICAgICAgICAgcGVyUGFnZTogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGlzUmVjZW50c0ZldGNoR2VuZXJhdGlvblN0YWxlKGxvYWRNb3JlQmFzZWxpbmVHZW4sIHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkpIHJldHVyblxuICAgICAgICBjb25zdCBuZXh0SXRlbXMgPSAoZGF0YT8uY2xpZW50cz8uZGF0YSA/PyBbXSkubWFwKGMgPT4gbWFwQ2xpZW50VG9JdGVtKGMsIHEpKVxuICAgICAgICBzZXRJdGVtcyhwcmV2ID0+IGFwcGVuZFVuaXF1ZU1lbnRpb25JdGVtcyhwcmV2LCBuZXh0SXRlbXMpKVxuICAgICAgICBzeW5jQ2xpZW50c1BhZ2luYXRpb24oZGF0YSlcbiAgICAgIH0gZWxzZSBpZiAoYWN0aXZlUGFnaW5hdGlvblNvdXJjZSA9PT0gJ3Rhc2stZmFsbGJhY2snKSB7XG4gICAgICAgIGNvbnN0IHNjb3BlRmlsdGVyID0gYnVpbGRUYXNrRmFtaWx5U2NvcGVGaWx0ZXIoc3RhYmxlU2NvcGUpXG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgZmV0Y2hUYXNrRmFtaWx5RmFsbGJhY2soe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgZmlsdGVyOiB7IGFyY2hpdmVkOiBmYWxzZSwgLi4uc2NvcGVGaWx0ZXIgfSxcbiAgICAgICAgICAgIHBhZ2luYXRpb246IHsgb2Zmc2V0OiAobmV4dFBhZ2UgLSAxKSAqIDIwLCBzaXplOiAyMCB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChpc1JlY2VudHNGZXRjaEdlbmVyYXRpb25TdGFsZShsb2FkTW9yZUJhc2VsaW5lR2VuLCByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpKSByZXR1cm5cbiAgICAgICAgY29uc3QgbmV4dEl0ZW1zID0gKGRhdGE/LnRhc2tGYW1pbHk/LmRhdGEgPz8gW10pXG4gICAgICAgICAgLm1hcChub3JtYWxpemVUYXNrRmFtaWx5UmVjb3JkKVxuICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pOiBpdGVtIGlzIFJlY2VudFRhc2tJdGVtID0+IGl0ZW0gIT09IG51bGwpXG4gICAgICAgICAgLm1hcCh0YXNrID0+IG1hcFJlY2VudFRhc2tUb0l0ZW0odGFzaywgJycsIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdykpXG4gICAgICAgIHNldEl0ZW1zKHByZXYgPT4gYXBwZW5kVW5pcXVlTWVudGlvbkl0ZW1zKHByZXYsIG5leHRJdGVtcykpXG4gICAgICAgIHN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uKGRhdGEpXG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICdwcm9qZWN0LWZhbGxiYWNrJykge1xuICAgICAgICBjb25zdCBhcmd1bWVudHNGaWx0ZXIgPSBidWlsZFByb2plY3RGYWxsYmFja0FyZ3VtZW50cyhzdGFibGVTY29wZSlcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBmZXRjaFByb2plY3RzRmFsbGJhY2soe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgLi4uKGFyZ3VtZW50c0ZpbHRlciA/IHsgYXJndW1lbnRzOiBhcmd1bWVudHNGaWx0ZXIgfSA6IHt9KSxcbiAgICAgICAgICAgIHBhZ2U6IG5leHRQYWdlLFxuICAgICAgICAgICAgcGVyUGFnZTogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGlzUmVjZW50c0ZldGNoR2VuZXJhdGlvblN0YWxlKGxvYWRNb3JlQmFzZWxpbmVHZW4sIHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkpIHJldHVyblxuICAgICAgICBjb25zdCBuZXh0SXRlbXMgPSAoZGF0YT8ucHJvamVjdHM/LmRhdGEgPz8gW10pXG4gICAgICAgICAgLm1hcChub3JtYWxpemVQcm9qZWN0c0ZhbGxiYWNrUmVjb3JkKVxuICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pOiBpdGVtIGlzIFJhd1NlYXJjaFJlc3VsdCA9PiBpdGVtICE9PSBudWxsKVxuICAgICAgICAgIC5tYXAoaXRlbSA9PiBtYXBTZWFyY2hUb0l0ZW0oaXRlbSwgJ3Byb2plY3QnLCAnJykpXG4gICAgICAgIHNldEl0ZW1zKHByZXYgPT4gYXBwZW5kVW5pcXVlTWVudGlvbkl0ZW1zKHByZXYsIG5leHRJdGVtcykpXG4gICAgICAgIHN5bmNQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uKGRhdGEpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAobG9hZE1vcmVCYXNlbGluZUdlbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VFbnRpdHlTZWFyY2hdIGxvYWRNb3JlIGZhaWxlZCcsIHtcbiAgICAgICAgc291cmNlOiBhY3RpdmVQYWdpbmF0aW9uU291cmNlLFxuICAgICAgICBuZXh0UGFnZSxcbiAgICAgICAgZXJyb3I6IGVycixcbiAgICAgIH0pXG4gICAgICAvLyBFdml0YSBsb29wIGRlIHJlaW50ZW50b3MgYXV0b23DoXRpY29zIHBvciBzY3JvbGwgY3VhbmRvIGJhY2tlbmQgZXN0w6EgY2HDrWRvIChlai4gNTAzKS5cbiAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRJc0xvYWRpbmdNb3JlKGZhbHNlKVxuICAgIH1cbiAgfSwgW1xuICAgIGlzTG9hZGluZ01vcmUsXG4gICAgaGFzTW9yZSxcbiAgICBjdXJyZW50UGFnZSxcbiAgICBhY3RpdmVQYWdpbmF0aW9uU291cmNlLFxuICAgIGRlYm91bmNlZFNlYXJjaFZhbHVlLFxuICAgIGZldGNoVXNlcnNEaXJlY3RvcnksXG4gICAgZmV0Y2hTZWFyY2hDbGllbnRzLFxuICAgIGZldGNoVGFza0ZhbWlseUZhbGxiYWNrLFxuICAgIGZldGNoUHJvamVjdHNGYWxsYmFjayxcbiAgICBzdGFibGVTY29wZS5wcm9qZWN0SWQsXG4gICAgc3RhYmxlU2NvcGUuY2xpZW50SWQsXG4gICAgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93LFxuICAgIGNvclVzZXIsXG4gICAgdCxcbiAgICBzeW5jQ2xpZW50c1BhZ2luYXRpb24sXG4gICAgc3luY1VzZXJzUGFnaW5hdGlvbixcbiAgICBzeW5jVGFza0ZhbGxiYWNrUGFnaW5hdGlvbixcbiAgICBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbixcbiAgXSlcblxuICAvLyBNYW50ZW5lbW9zIHVuYSByZWYgYSBsYSDDumx0aW1hIGZldGNoUmVjZW50IHBhcmEgcXVlIGVsIGVmZmVjdCBkZSByZWNlbnRzIG5vIHNlXG4gIC8vIHJlLWRpc3BhcmUgc29sbyBwb3JxdWUgY2FtYmnDsyBsYSBpZGVudGlkYWQgZGUgZmV0Y2hSZWNlbnQgKHNjb3BlL2NvclVzZXIvdCkuXG4gIGNvbnN0IGZldGNoUmVjZW50UmVmID0gdXNlUmVmKGZldGNoUmVjZW50KVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoUmVjZW50UmVmLmN1cnJlbnQgPSBmZXRjaFJlY2VudFxuICB9LCBbZmV0Y2hSZWNlbnRdKVxuXG4gIC8vIFRyaWdnZXIgZGUgcmVjZW50czogbG9zIHJlY2VudHMgZGUgdXNlciBOTyBkZXBlbmRlbiBkZWwgc2NvcGUsIGFzw60gcXVlIGNhbWJpYXJcbiAgLy8gZGUgcHJveWVjdG8vY2xpZW50ZSBubyBkZWJlIHJlLWZldGNoZWFybG9zLiBMb3MgdGlwb3Mgc2NvcGVhZG9zIChwcm9qZWN0L3Rhc2spIHPDrS5cbiAgY29uc3QgcmVjZW50c1RyaWdnZXIgPSByZXNvbHZlRW50aXR5U2VhcmNoUmVjZW50c1RyaWdnZXIodHlwZSwgc3RhYmxlU2NvcGUsIG1jcFNsdWdzS2V5KVxuXG4gIC8vIEN1YW5kbyBzZSBsaW1waWEgZWwgc2VhcmNoLCB2b2x2ZXIgYSByZWNlbnRzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFkZWJvdW5jZWRTZWFyY2hWYWx1ZS50cmltKCkpIHtcbiAgICAgIGZldGNoUmVjZW50UmVmLmN1cnJlbnQoKVxuICAgIH1cbiAgfSwgW2RlYm91bmNlZFNlYXJjaFZhbHVlLCByZWNlbnRzVHJpZ2dlcl0pXG5cbiAgcmV0dXJuIHtcbiAgICBpdGVtcyxcbiAgICBsb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIGhpZGVSZWNlbnRzTGFiZWwsXG4gICAgaGFzTW9yZSxcbiAgICBpc0xvYWRpbmdNb3JlLFxuICAgIGxvYWRNb3JlLFxuICAgIHNlYXJjaFZhbHVlLFxuICAgIHVwZGF0ZVNlYXJjaFZhbHVlOiBzZXRTZWFyY2hWYWx1ZSxcbiAgICBmZXRjaFJlY2VudCxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxTQUFTQSxZQUFZLFFBQVEsZ0JBQWdCO0FBQzdDLFNBQVNDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDekUsU0FBU0MsY0FBYyxRQUFRLDZDQUE2QztBQUU1RSxTQUFTQyxPQUFPLFFBQVEscUJBQXFCO0FBQzdDLFNBQVNDLGlCQUFpQixFQUFFQyxlQUFlLEVBQUVDLG9CQUFvQixRQUFRLHFDQUFxQztBQUM5RyxTQUFTQyxjQUFjLFFBQVEscUNBQXFDO0FBQ3BFLFNBQVNDLGVBQWUsUUFBUSx1Q0FBdUM7QUFDdkUsU0FBU0Msd0JBQXdCLFFBQVEscUJBQXFCO0FBQzlELFNBQVNDLFdBQVcsUUFBUSxlQUFlO0FBQzNDLFNBQVNDLElBQUksUUFBUSxRQUFRO0FBRTdCLFNBQ0VDLG1CQUFtQixFQUNuQkMsd0JBQXdCLEVBQ3hCQywwQkFBMEIsRUFDMUJDLGVBQWUsRUFDZkMsa0JBQWtCLEVBQ2xCQyxtQkFBbUIsRUFDbkJDLGVBQWUsRUFDZkMsYUFBYSxFQUNiQyxvQkFBb0Is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
669
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXp5UXVlcnkiLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImdldFJlY2VudFRhc2tzIiwidXNlVXNlciIsIlBST0pFQ1RTX0ZBTExCQUNLIiwiU0VBUkNIX0VOVElUSUVTIiwiVEFTS19GQU1JTFlfRkFMTEJBQ0siLCJTRUFSQ0hfQ0xJRU5UUyIsIlVTRVJTX0RJUkVDVE9SWSIsIlNFQVJDSF9RVUVSWV9ERUJPVU5DRV9NUyIsInVzZURlYm91bmNlIiwidXNlVCIsImJ1aWxkRmlsdGVyc0ZvclR5cGUiLCJidWlsZFNlYXJjaEVudGl0aWVzRXh0cmEiLCJidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyIsIm1hcENsaWVudFRvSXRlbSIsIm1hcE1jcFNsdWdzVG9JdGVtcyIsIm1hcFJlY2VudFRhc2tUb0l0ZW0iLCJtYXBTZWFyY2hUb0l0ZW0iLCJtYXBVc2VyVG9JdGVtIiwibm9ybWFsaXplUG9zaXRpdmVJbnQiLCJub3JtYWxpemVQcm9qZWN0c0ZhbGxiYWNrUmVjb3JkIiwibm9ybWFsaXplVGFza0ZhbWlseVJlY29yZCIsInJlc29sdmVDbGllbnRzUGFnaW5hdGlvbiIsInJlc29sdmVQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uIiwicmVzb2x2ZVRhc2tGYWxsYmFja1BhZ2luYXRpb24iLCJyZXNvbHZlVXNlcnNQYWdpbmF0aW9uIiwiYXBwZW5kVW5pcXVlTWVudGlvbkl0ZW1zIiwiYnVpbGRQcm9qZWN0RmFsbGJhY2tBcmd1bWVudHMiLCJidWlsZFRhc2tGYW1pbHlTY29wZUZpbHRlciIsImJ1aWxkVXNlckRpcmVjdG9yeUl0ZW1zIiwiY2FuTG9hZE1vcmVFbnRpdHlTZWFyY2giLCJyZXNvbHZlRW50aXR5U2VhcmNoUmVjZW50c1RyaWdnZXIiLCJidWlsZFJlY2VudFRhc2tGaWx0ZXJzIiwiYnVpbGRVc2VyUmVjZW50c1dpdGhNZSIsIm1lcmdlVXNlcnNEaXJlY3RvcnlMb2FkTW9yZSIsInJlc29sdmVEZWJvdW5jZWRTZWFyY2hQYWdpbmF0aW9uU291cmNlIiwiaXNSZWNlbnRzRmV0Y2hHZW5lcmF0aW9uU3RhbGUiLCJ1c2VFbnRpdHlTZWFyY2giLCJ0eXBlIiwic2NvcGUiLCJfc2NvcGUkbWNwU2x1Z3MiLCJjb3JVc2VyIiwiX3VzZVQiLCJ0IiwicmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJkZWJvdW5jZWRTZWFyY2hWYWx1ZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXRlbXMiLCJzZXRJdGVtcyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwibG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImVycm9yIiwic2V0RXJyb3IiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsImhpZGVSZWNlbnRzTGFiZWwiLCJzZXRIaWRlUmVjZW50c0xhYmVsIiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwiaGFzTW9yZSIsInNldEhhc01vcmUiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwiaXNMb2FkaW5nTW9yZSIsInNldElzTG9hZGluZ01vcmUiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwiY3VycmVudFBhZ2UiLCJzZXRDdXJyZW50UGFnZSIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJhY3RpdmVQYWdpbmF0aW9uU291cmNlIiwic2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSIsIm1jcFNsdWdzS2V5IiwibWNwU2x1Z3MiLCJqb2luIiwic2hvd1Byb2plY3ROYW1lSW5UYXNrUm93IiwiYWdlbnRFbnRpdHkiLCJzdGFibGVTY29wZSIsIl9zY29wZSRjbGllbnRJZCIsIl9zY29wZSRwcm9qZWN0SWQiLCJfc2NvcGUkbWNwU2x1Z3MyIiwiX3Njb3BlJGFnZW50RW50aXR5IiwiY2xpZW50SWQiLCJwcm9qZWN0SWQiLCJfdXNlTGF6eVF1ZXJ5IiwidmFyaWFibGVzIiwibGltaXQiLCJmZXRjaFBvbGljeSIsIl91c2VMYXp5UXVlcnkyIiwiZmV0Y2hTZWFyY2hFbnRpdGllcyIsIl91c2VMYXp5UXVlcnkyJCIsInNlYXJjaERhdGEiLCJkYXRhIiwic2VhcmNoTG9hZGluZyIsInNlYXJjaEVycm9yIiwiX3VzZUxhenlRdWVyeTMiLCJfdXNlTGF6eVF1ZXJ5NCIsImZldGNoU2VhcmNoQ2xpZW50cyIsIl91c2VMYXp5UXVlcnk0JCIsImNsaWVudHNEYXRhIiwiY2xpZW50c0xvYWRpbmciLCJjbGllbnRzRXJyb3IiLCJfdXNlTGF6eVF1ZXJ5NSIsIl91c2VMYXp5UXVlcnk2IiwiZmV0Y2hVc2Vyc0RpcmVjdG9yeSIsIl91c2VMYXp5UXVlcnk2JCIsInVzZXJzRGF0YSIsInVzZXJzTG9hZGluZyIsInVzZXJzRXJyb3IiLCJzeW5jVXNlcnNQYWdpbmF0aW9uIiwicGF5bG9hZCIsIl9yZXNvbHZlVXNlcnNQYWdpbmF0aSIsInBhZ2UiLCJtb3JlIiwic3luY0NsaWVudHNQYWdpbmF0aW9uIiwiX3Jlc29sdmVDbGllbnRzUGFnaW5hIiwic3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24iLCJfcmVzb2x2ZVRhc2tGYWxsYmFja1AiLCJzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbiIsIl9yZXNvbHZlUHJvamVjdEZhbGxiYSIsIl91c2VMYXp5UXVlcnk3IiwiX3VzZUxhenlRdWVyeTgiLCJmZXRjaFRhc2tGYW1pbHlGYWxsYmFjayIsIl91c2VMYXp5UXVlcnk5IiwiX3VzZUxhenlRdWVyeTAiLCJmZXRjaFByb2plY3RzRmFsbGJhY2siLCJmZXRjaFJlY2VudCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiZ2VuZXJhdGlvbiIsIl9zdGFibGVTY29wZSRtY3BTbHVncyIsInNsdWdzIiwiX2ZhbGxiYWNrRGF0YSRwcm9qZWN0IiwiX2ZhbGxiYWNrRGF0YSRwcm9qZWN0MiIsImFyZ3VtZW50c0ZpbHRlciIsIl95aWVsZCRmZXRjaFByb2plY3RzRiIsImZhbGxiYWNrRGF0YSIsIm1hcHBlZCIsInRhc2tJdGVtcyIsIl9mYWxsYmFja0RhdGEkdGFza0ZhbSIsIl9mYWxsYmFja0RhdGEkdGFza0ZhbTIiLCJzY29wZUZpbHRlciIsIl95aWVsZCRmZXRjaFRhc2tGYW1pbCIsIl9mYWxsYmFja0RhdGEiLCJfZGF0YSR1c2VycyRkYXRhIiwiX2RhdGEkdXNlcnMiLCJfeWllbGQkZmV0Y2hVc2Vyc0RpcmUiLCJfZGF0YSIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJjdXJyZW50IiwiYWJydXB0IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsInBlclBhZ2UiLCJzZW50IiwicHJvamVjdHMiLCJtYXAiLCJmaWx0ZXIiLCJpdGVtIiwibGVuZ3RoIiwidGFzayIsImFyY2hpdmVkIiwicGFnaW5hdGlvbiIsIm9mZnNldCIsInNpemUiLCJ0YXNrRmFtaWx5IiwiZmlsdGVycyIsInVzZXJzIiwiZmluaXNoIiwic3RvcCIsInEiLCJ0cmltIiwiX3N0YWJsZVNjb3BlJG1jcFNsdWdzMiIsIm5hbWUiLCJleHRyYSIsInVuZGVmaW5lZCIsIl9jbGllbnRzRGF0YSRjbGllbnRzIiwiY2xpZW50cyIsImMiLCJfdXNlcnNEYXRhJHVzZXJzIiwic2VhcmNoIiwiciIsImxvYWRNb3JlIiwiX2NhbGxlZTIiLCJzYWZlQ3VycmVudFBhZ2UiLCJuZXh0UGFnZSIsImxvYWRNb3JlQmFzZWxpbmVHZW4iLCJfZGF0YSR1c2VycyRkYXRhMiIsIl9kYXRhJHVzZXJzMiIsIl95aWVsZCRmZXRjaFVzZXJzRGlyZTIiLCJuZXh0SXRlbXMiLCJfZGF0YTIkY2xpZW50cyRkYXRhIiwiX2RhdGEyJGNsaWVudHMiLCJfeWllbGQkZmV0Y2hTZWFyY2hDbGkiLCJfZGF0YTIiLCJfbmV4dEl0ZW1zIiwiX2RhdGEzJHRhc2tGYW1pbHkkZGF0IiwiX2RhdGEzJHRhc2tGYW1pbHkiLCJfeWllbGQkZmV0Y2hUYXNrRmFtaWwyIiwiX2RhdGEzIiwiX25leHRJdGVtczIiLCJfZGF0YTQkcHJvamVjdHMkZGF0YSIsIl9kYXRhNCRwcm9qZWN0cyIsIl95aWVsZCRmZXRjaFByb2plY3RzRjIiLCJfZGF0YTQiLCJfbmV4dEl0ZW1zMyIsIl90MiIsIl9jb250ZXh0MiIsInUiLCJjb25zb2xlIiwic291cmNlIiwiZmV0Y2hSZWNlbnRSZWYiLCJyZWNlbnRzVHJpZ2dlciIsInVwZGF0ZVNlYXJjaFZhbHVlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUVudGl0eVNlYXJjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VMYXp5UXVlcnkgfSBmcm9tICdAYXBvbGxvL2NsaWVudCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGdldFJlY2VudFRhc2tzIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpYS9SZWNlbnRUYXNrcy9nZXRSZWNlbnRUYXNrcydcbmltcG9ydCB0eXBlIHsgUmVjZW50VGFza0l0ZW0gfSBmcm9tICcuLi9zZXJ2aWNlcy9tYWlhL1JlY2VudFRhc2tzL2dldFJlY2VudFRhc2tzJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBQUk9KRUNUU19GQUxMQkFDSywgU0VBUkNIX0VOVElUSUVTLCBUQVNLX0ZBTUlMWV9GQUxMQkFDSyB9IGZyb20gJy4uL3NlcnZpY2VzL3F1ZXJ5L2VudGl0eVNlYXJjaFF1ZXJ5J1xuaW1wb3J0IHsgU0VBUkNIX0NMSUVOVFMgfSBmcm9tICcuLi9zZXJ2aWNlcy9xdWVyeS9DbGllbnRTZWFyY2hRdWVyeSdcbmltcG9ydCB7IFVTRVJTX0RJUkVDVE9SWSB9IGZyb20gJy4uL3NlcnZpY2VzL3F1ZXJ5L3VzZXJzRGlyZWN0b3J5UXVlcnknXG5pbXBvcnQgeyBTRUFSQ0hfUVVFUllfREVCT1VOQ0VfTVMgfSBmcm9tICcuLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgdXNlRGVib3VuY2UgfSBmcm9tICcuL3VzZURlYm91bmNlJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4vdXNlVCdcbmltcG9ydCB7IENvbnRleHRFbnRpdHlUeXBlLCBDb250ZXh0TWVudGlvbkl0ZW0gfSBmcm9tICcuLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7XG4gIGJ1aWxkRmlsdGVyc0ZvclR5cGUsXG4gIGJ1aWxkU2VhcmNoRW50aXRpZXNFeHRyYSxcbiAgYnVpbGRVc2Vyc0RpcmVjdG9yeUZpbHRlcnMsXG4gIG1hcENsaWVudFRvSXRlbSxcbiAgbWFwTWNwU2x1Z3NUb0l0ZW1zLFxuICBtYXBSZWNlbnRUYXNrVG9JdGVtLFxuICBtYXBTZWFyY2hUb0l0ZW0sXG4gIG1hcFVzZXJUb0l0ZW0sXG4gIG5vcm1hbGl6ZVBvc2l0aXZlSW50LFxuICBub3JtYWxpemVQcm9qZWN0c0ZhbGxiYWNrUmVjb3JkLFxuICBub3JtYWxpemVUYXNrRmFtaWx5UmVjb3JkLFxuICByZXNvbHZlQ2xpZW50c1BhZ2luYXRpb24sXG4gIHJlc29sdmVQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uLFxuICByZXNvbHZlVGFza0ZhbGxiYWNrUGFnaW5hdGlvbixcbiAgcmVzb2x2ZVVzZXJzUGFnaW5hdGlvbixcbiAgYXBwZW5kVW5pcXVlTWVudGlvbkl0ZW1zLFxuICBidWlsZFByb2plY3RGYWxsYmFja0FyZ3VtZW50cyxcbiAgYnVpbGRUYXNrRmFtaWx5U2NvcGVGaWx0ZXIsXG4gIGJ1aWxkVXNlckRpcmVjdG9yeUl0ZW1zLFxuICBjYW5Mb2FkTW9yZUVudGl0eVNlYXJjaCxcbiAgcmVzb2x2ZUVudGl0eVNlYXJjaFJlY2VudHNUcmlnZ2VyLFxuICBidWlsZFJlY2VudFRhc2tGaWx0ZXJzLFxuICBidWlsZFVzZXJSZWNlbnRzV2l0aE1lLFxuICBtZXJnZVVzZXJzRGlyZWN0b3J5TG9hZE1vcmUsXG4gIHJlc29sdmVEZWJvdW5jZWRTZWFyY2hQYWdpbmF0aW9uU291cmNlLFxuICBpc1JlY2VudHNGZXRjaEdlbmVyYXRpb25TdGFsZSxcbiAgdHlwZSBFbnRpdHlTZWFyY2hQYWdpbmF0aW9uU291cmNlLFxuICB0eXBlIEVudGl0eVNlYXJjaFNjb3BlLFxuICB0eXBlIEZhbGxiYWNrUHJvamVjdFJlY29yZCxcbiAgdHlwZSBSYXdDbGllbnQsXG4gIHR5cGUgUmF3RGlyZWN0b3J5VXNlcixcbiAgdHlwZSBSYXdTZWFyY2hSZXN1bHQsXG4gIHR5cGUgVGFza0ZhbWlseVJlY29yZCxcbn0gZnJvbSAnLi91c2VFbnRpdHlTZWFyY2guaGVscGVycydcblxuZXhwb3J0IHR5cGUgeyBFbnRpdHlTZWFyY2hTY29wZSB9IGZyb20gJy4vdXNlRW50aXR5U2VhcmNoLmhlbHBlcnMnXG5cbnR5cGUgU2VhcmNoRW50aXRpZXNEYXRhID0geyBzZWFyY2g6IFJhd1NlYXJjaFJlc3VsdFtdIHwgbnVsbCB9XG50eXBlIFNlYXJjaENsaWVudHNEYXRhID0ge1xuICBjbGllbnRzOiB7XG4gICAgdG90YWw/OiBudW1iZXIgfCBudWxsXG4gICAgcGVyUGFnZT86IG51bWJlciB8IG51bGxcbiAgICBwYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIGxhc3RQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIGRhdGE6IFJhd0NsaWVudFtdXG4gIH0gfCBudWxsXG59XG50eXBlIFVzZXJzRGlyZWN0b3J5RGF0YSA9IHtcbiAgdXNlcnM6IHtcbiAgICB0b3RhbD86IG51bWJlciB8IG51bGxcbiAgICBwZXJQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIHBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgbGFzdFBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgZGF0YTogUmF3RGlyZWN0b3J5VXNlcltdIHwgbnVsbFxuICB9IHwgbnVsbFxufVxuXG50eXBlIFRhc2tGYW1pbHlEYXRhID0ge1xuICB0YXNrRmFtaWx5Pzoge1xuICAgIHRvdGFsPzogbnVtYmVyIHwgbnVsbFxuICAgIHBlclBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgcGFnZT86IG51bWJlciB8IG51bGxcbiAgICBsYXN0UGFnZT86IG51bWJlciB8IG51bGxcbiAgICBkYXRhPzogVGFza0ZhbWlseVJlY29yZFtdIHwgbnVsbFxuICB9IHwgbnVsbFxufVxuXG50eXBlIFByb2plY3RzRmFsbGJhY2tEYXRhID0ge1xuICBwcm9qZWN0cz86IHtcbiAgICB0b3RhbD86IG51bWJlciB8IG51bGxcbiAgICBwZXJQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIHBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgbGFzdFBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgZGF0YT86IEZhbGxiYWNrUHJvamVjdFJlY29yZFtdIHwgbnVsbFxuICB9IHwgbnVsbFxufVxuXG5leHBvcnQgY29uc3QgdXNlRW50aXR5U2VhcmNoID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBzY29wZT86IEVudGl0eVNlYXJjaFNjb3BlKSA9PiB7XG4gIGNvbnN0IGNvclVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgLyoqIEV2aXRhIGFwbGljYXIgcmVzdWx0YWRvcyBkZSB1biBgZmV0Y2hSZWNlbnRgIHZpZWpvIGN1YW5kbyBlbCB1c3VhcmlvIHlhIGNhbWJpw7MgZGUgdGFiIChyYWNlIGFzeW5jKS4gKi9cbiAgY29uc3QgcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBkZWJvdW5jZWRTZWFyY2hWYWx1ZSA9IHVzZURlYm91bmNlKHNlYXJjaFZhbHVlLCBTRUFSQ0hfUVVFUllfREVCT1VOQ0VfTVMpXG4gIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGU8Q29udGV4dE1lbnRpb25JdGVtW10+KFtdKVxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2hpZGVSZWNlbnRzTGFiZWwsIHNldEhpZGVSZWNlbnRzTGFiZWxdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtoYXNNb3JlLCBzZXRIYXNNb3JlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNMb2FkaW5nTW9yZSwgc2V0SXNMb2FkaW5nTW9yZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2N1cnJlbnRQYWdlLCBzZXRDdXJyZW50UGFnZV0gPSB1c2VTdGF0ZSgxKVxuICBjb25zdCBbYWN0aXZlUGFnaW5hdGlvblNvdXJjZSwgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZV0gPSB1c2VTdGF0ZTxFbnRpdHlTZWFyY2hQYWdpbmF0aW9uU291cmNlPignbm9uZScpXG5cbiAgY29uc3QgbWNwU2x1Z3NLZXkgPSAoc2NvcGU/Lm1jcFNsdWdzID8/IFtdKS5qb2luKCd8JylcbiAgY29uc3Qgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93ID0gc2NvcGU/LmFnZW50RW50aXR5ICE9PSAncHJvamVjdCdcblxuICAvLyBFc3RhYmlsaXphbW9zIGVsIHNjb3BlIHBhcmEgbm8gZGlzcGFyYXIgZmV0Y2hzIHBvciBjYW1iaW9zIGRlIGlkZW50aWRhZCBkZSBvYmpldG8uXG4gIGNvbnN0IHN0YWJsZVNjb3BlID0gdXNlTWVtbzxFbnRpdHlTZWFyY2hTY29wZT4oXG4gICAgKCkgPT4gKHtcbiAgICAgIGNsaWVudElkOiBzY29wZT8uY2xpZW50SWQgPz8gbnVsbCxcbiAgICAgIHByb2plY3RJZDogc2NvcGU/LnByb2plY3RJZCA/PyBudWxsLFxuICAgICAgbWNwU2x1Z3M6IHNjb3BlPy5tY3BTbHVncyA/PyBbXSxcbiAgICAgIGFnZW50RW50aXR5OiBzY29wZT8uYWdlbnRFbnRpdHkgPz8gbnVsbCxcbiAgICB9KSxcbiAgICBbc2NvcGU/LmNsaWVudElkLCBzY29wZT8ucHJvamVjdElkLCBtY3BTbHVnc0tleSwgc2NvcGU/LmFnZW50RW50aXR5XVxuICApXG5cbiAgLy8gLS0tIFNlYXJjaDogcHJvamVjdCB8IHRhc2sgKEdyYXBoUUw6IHNlYXJjaCkgLS0tXG4gIGNvbnN0IFtmZXRjaFNlYXJjaEVudGl0aWVzLCB7IGRhdGE6IHNlYXJjaERhdGEsIGxvYWRpbmc6IHNlYXJjaExvYWRpbmcsIGVycm9yOiBzZWFyY2hFcnJvciB9XSA9XG4gICAgdXNlTGF6eVF1ZXJ5PFNlYXJjaEVudGl0aWVzRGF0YT4oU0VBUkNIX0VOVElUSUVTLCB7XG4gICAgICB2YXJpYWJsZXM6IHsgbGltaXQ6IDIwIH0sXG4gICAgICBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScsXG4gICAgfSlcblxuICAvLyAtLS0gU2VhcmNoOiBjbGllbnQgKEdyYXBoUUwpIC0tLVxuICBjb25zdCBbZmV0Y2hTZWFyY2hDbGllbnRzLCB7IGRhdGE6IGNsaWVudHNEYXRhLCBsb2FkaW5nOiBjbGllbnRzTG9hZGluZywgZXJyb3I6IGNsaWVudHNFcnJvciB9XSA9XG4gICAgdXNlTGF6eVF1ZXJ5PFNlYXJjaENsaWVudHNEYXRhPihTRUFSQ0hfQ0xJRU5UUywge1xuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pXG5cbiAgLy8gLS0tIFNlYXJjaDogdXNlciAoR3JhcGhRTDogdXNlcnMpIC0tLVxuICBjb25zdCBbZmV0Y2hVc2Vyc0RpcmVjdG9yeSwgeyBkYXRhOiB1c2Vyc0RhdGEsIGxvYWRpbmc6IHVzZXJzTG9hZGluZywgZXJyb3I6IHVzZXJzRXJyb3IgfV0gPVxuICAgIHVzZUxhenlRdWVyeTxVc2Vyc0RpcmVjdG9yeURhdGE+KFVTRVJTX0RJUkVDVE9SWSwge1xuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pXG5cbiAgY29uc3Qgc3luY1VzZXJzUGFnaW5hdGlvbiA9IHVzZUNhbGxiYWNrKChwYXlsb2FkPzogVXNlcnNEaXJlY3RvcnlEYXRhIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IHsgcGFnZSwgaGFzTW9yZTogbW9yZSB9ID0gcmVzb2x2ZVVzZXJzUGFnaW5hdGlvbihwYXlsb2FkKVxuICAgIHNldEN1cnJlbnRQYWdlKHBhZ2UpXG4gICAgc2V0SGFzTW9yZShtb3JlKVxuICB9LCBbXSlcblxuICBjb25zdCBzeW5jQ2xpZW50c1BhZ2luYXRpb24gPSB1c2VDYWxsYmFjaygocGF5bG9hZD86IFNlYXJjaENsaWVudHNEYXRhIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IHsgcGFnZSwgaGFzTW9yZTogbW9yZSB9ID0gcmVzb2x2ZUNsaWVudHNQYWdpbmF0aW9uKHBheWxvYWQpXG4gICAgc2V0Q3VycmVudFBhZ2UocGFnZSlcbiAgICBzZXRIYXNNb3JlKG1vcmUpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uID0gdXNlQ2FsbGJhY2soKHBheWxvYWQ/OiBUYXNrRmFtaWx5RGF0YSB8IG51bGwpID0+IHtcbiAgICBjb25zdCB7IHBhZ2UsIGhhc01vcmU6IG1vcmUgfSA9IHJlc29sdmVUYXNrRmFsbGJhY2tQYWdpbmF0aW9uKHBheWxvYWQpXG4gICAgc2V0Q3VycmVudFBhZ2UocGFnZSlcbiAgICBzZXRIYXNNb3JlKG1vcmUpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN5bmNQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uID0gdXNlQ2FsbGJhY2soKHBheWxvYWQ/OiBQcm9qZWN0c0ZhbGxiYWNrRGF0YSB8IG51bGwpID0+IHtcbiAgICBjb25zdCB7IHBhZ2UsIGhhc01vcmU6IG1vcmUgfSA9IHJlc29sdmVQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uKHBheWxvYWQpXG4gICAgc2V0Q3VycmVudFBhZ2UocGFnZSlcbiAgICBzZXRIYXNNb3JlKG1vcmUpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IFtmZXRjaFRhc2tGYW1pbHlGYWxsYmFja10gPSB1c2VMYXp5UXVlcnk8VGFza0ZhbWlseURhdGE+KFRBU0tfRkFNSUxZX0ZBTExCQUNLLCB7XG4gICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICB9KVxuXG4gIGNvbnN0IFtmZXRjaFByb2plY3RzRmFsbGJhY2tdID0gdXNlTGF6eVF1ZXJ5PFByb2plY3RzRmFsbGJhY2tEYXRhPihQUk9KRUNUU19GQUxMQkFDSywge1xuICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgfSlcblxuICBjb25zdCBmZXRjaFJlY2VudCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQgKz0gMVxuICAgIGNvbnN0IGdlbmVyYXRpb24gPSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnRcblxuICAgIGlmICh0eXBlID09PSAnbWNwJykge1xuICAgICAgY29uc3Qgc2x1Z3MgPSBzdGFibGVTY29wZS5tY3BTbHVncyA/PyBbXVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgc2V0SXRlbXMobWFwTWNwU2x1Z3NUb0l0ZW1zKHNsdWdzLCAnJykpXG4gICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0TG9hZGluZyh0cnVlKVxuICAgIHNldEVycm9yKGZhbHNlKVxuICAgIHRyeSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgc2V0SXRlbXMoW10pXG4gICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ25vbmUnKVxuICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgY29uc3QgYXJndW1lbnRzRmlsdGVyID0gYnVpbGRQcm9qZWN0RmFsbGJhY2tBcmd1bWVudHMoc3RhYmxlU2NvcGUpXG4gICAgICAgIGNvbnN0IHsgZGF0YTogZmFsbGJhY2tEYXRhIH0gPSBhd2FpdCBmZXRjaFByb2plY3RzRmFsbGJhY2soe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgLi4uKGFyZ3VtZW50c0ZpbHRlciA/IHsgYXJndW1lbnRzOiBhcmd1bWVudHNGaWx0ZXIgfSA6IHt9KSxcbiAgICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgICBwZXJQYWdlOiAyMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBpZiAoaXNSZWNlbnRzRmV0Y2hHZW5lcmF0aW9uU3RhbGUoZ2VuZXJhdGlvbiwgcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG1hcHBlZCA9IChmYWxsYmFja0RhdGE/LnByb2plY3RzPy5kYXRhID8/IFtdKVxuICAgICAgICAgIC5tYXAobm9ybWFsaXplUHJvamVjdHNGYWxsYmFja1JlY29yZClcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKTogaXRlbSBpcyBSYXdTZWFyY2hSZXN1bHQgPT4gaXRlbSAhPT0gbnVsbClcbiAgICAgICAgICAubWFwKGl0ZW0gPT4gbWFwU2VhcmNoVG9JdGVtKGl0ZW0sICdwcm9qZWN0JywgJycpKVxuICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKG1hcHBlZC5sZW5ndGggPiAwKVxuICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdwcm9qZWN0LWZhbGxiYWNrJylcbiAgICAgICAgc3luY1Byb2plY3RGYWxsYmFja1BhZ2luYXRpb24oZmFsbGJhY2tEYXRhKVxuICAgICAgICBpZiAoaXNSZWNlbnRzRmV0Y2hHZW5lcmF0aW9uU3RhbGUoZ2VuZXJhdGlvbiwgcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSkgcmV0dXJuXG4gICAgICAgIHNldEl0ZW1zKG1hcHBlZClcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3Rhc2snKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBnZXRSZWNlbnRUYXNrcyhidWlsZFJlY2VudFRhc2tGaWx0ZXJzKHN0YWJsZVNjb3BlKSlcbiAgICAgICAgaWYgKGlzUmVjZW50c0ZldGNoR2VuZXJhdGlvblN0YWxlKGdlbmVyYXRpb24sIHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkpIHJldHVyblxuICAgICAgICBsZXQgdGFza0l0ZW1zID0gKGRhdGEgPz8gW10pLm1hcCh0YXNrID0+IG1hcFJlY2VudFRhc2tUb0l0ZW0odGFzaywgJycsIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdykpXG4gICAgICAgIGlmICh0YXNrSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3Qgc2NvcGVGaWx0ZXIgPSBidWlsZFRhc2tGYW1pbHlTY29wZUZpbHRlcihzdGFibGVTY29wZSlcbiAgICAgICAgICBjb25zdCB7IGRhdGE6IGZhbGxiYWNrRGF0YSB9ID0gYXdhaXQgZmV0Y2hUYXNrRmFtaWx5RmFsbGJhY2soe1xuICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgIGZpbHRlcjogeyBhcmNoaXZlZDogZmFsc2UsIC4uLnNjb3BlRmlsdGVyIH0sXG4gICAgICAgICAgICAgIHBhZ2luYXRpb246IHsgb2Zmc2V0OiAwLCBzaXplOiAyMCB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChpc1JlY2VudHNGZXRjaEdlbmVyYXRpb25TdGFsZShnZW5lcmF0aW9uLCByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpKSByZXR1cm5cbiAgICAgICAgICB0YXNrSXRlbXMgPSAoZmFsbGJhY2tEYXRhPy50YXNrRmFtaWx5Py5kYXRhID8/IFtdKVxuICAgICAgICAgICAgLm1hcChub3JtYWxpemVUYXNrRmFtaWx5UmVjb3JkKVxuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSk6IGl0ZW0gaXMgUmVjZW50VGFza0l0ZW0gPT4gaXRlbSAhPT0gbnVsbClcbiAgICAgICAgICAgIC5tYXAodGFzayA9PiBtYXBSZWNlbnRUYXNrVG9JdGVtKHRhc2ssICcnLCBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cpKVxuICAgICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwodGFza0l0ZW1zLmxlbmd0aCA+IDApXG4gICAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgndGFzay1mYWxsYmFjaycpXG4gICAgICAgICAgc3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24oZmFsbGJhY2tEYXRhKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNSZWNlbnRzRmV0Y2hHZW5lcmF0aW9uU3RhbGUoZ2VuZXJhdGlvbiwgcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSkgcmV0dXJuXG4gICAgICAgIHNldEl0ZW1zKHRhc2tJdGVtcylcbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3VzZXInKSB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgZmV0Y2hVc2Vyc0RpcmVjdG9yeSh7XG4gICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycygnJyksXG4gICAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChpc1JlY2VudHNGZXRjaEdlbmVyYXRpb25TdGFsZShnZW5lcmF0aW9uLCByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpKSByZXR1cm5cbiAgICAgICAgaWYgKGlzUmVjZW50c0ZldGNoR2VuZXJhdGlvblN0YWxlKGdlbmVyYXRpb24sIHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkpIHJldHVyblxuICAgICAgICBzZXRJdGVtcyhidWlsZFVzZXJSZWNlbnRzV2l0aE1lKGRhdGE/LnVzZXJzPy5kYXRhID8/IFtdLCBjb3JVc2VyLCB0KCdjb250ZXh0TWVudGlvbi5tZScpKSlcbiAgICAgICAgc3luY1VzZXJzUGFnaW5hdGlvbihkYXRhKVxuICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCd1c2VycycpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNSZWNlbnRzRmV0Y2hHZW5lcmF0aW9uU3RhbGUoZ2VuZXJhdGlvbiwgcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSkgcmV0dXJuXG4gICAgICAgIHNldEl0ZW1zKFtdKVxuICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICAgICAgc2V0Q3VycmVudFBhZ2UoMSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIGlmIChpc1JlY2VudHNGZXRjaEdlbmVyYXRpb25TdGFsZShnZW5lcmF0aW9uLCByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpKSByZXR1cm5cbiAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICBzZXRJdGVtcyhbXSlcbiAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChnZW5lcmF0aW9uID09PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICB0eXBlLFxuICAgIHN0YWJsZVNjb3BlLFxuICAgIGZldGNoVXNlcnNEaXJlY3RvcnksXG4gICAgZmV0Y2hUYXNrRmFtaWx5RmFsbGJhY2ssXG4gICAgZmV0Y2hQcm9qZWN0c0ZhbGxiYWNrLFxuICAgIHN5bmNVc2Vyc1BhZ2luYXRpb24sXG4gICAgc3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24sXG4gICAgc3luY1Byb2plY3RGYWxsYmFja1BhZ2luYXRpb24sXG4gICAgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93LFxuICAgIGNvclVzZXIsXG4gICAgdCxcbiAgXSlcblxuICAvLyBEaXNwYXJhciBzZWFyY2ggYWwgY2FtYmlhciBkZWJvdW5jZWQgdmFsdWVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBxID0gZGVib3VuY2VkU2VhcmNoVmFsdWUudHJpbSgpXG5cbiAgICBpZiAodHlwZSA9PT0gJ21jcCcpIHtcbiAgICAgIGNvbnN0IHNsdWdzID0gc3RhYmxlU2NvcGUubWNwU2x1Z3MgPz8gW11cbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRFcnJvcihmYWxzZSlcbiAgICAgIHNldEl0ZW1zKG1hcE1jcFNsdWdzVG9JdGVtcyhzbHVncywgcSkpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXEpIHJldHVyblxuXG4gICAgaWYgKHR5cGUgPT09ICdjbGllbnQnKSB7XG4gICAgICBmZXRjaFNlYXJjaENsaWVudHMoe1xuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBmaWx0ZXI6IHsgbmFtZTogcSB9LFxuICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgcGVyUGFnZTogMjAsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZShyZXNvbHZlRGVib3VuY2VkU2VhcmNoUGFnaW5hdGlvblNvdXJjZSh0eXBlKSlcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd1c2VyJykge1xuICAgICAgZmV0Y2hVc2Vyc0RpcmVjdG9yeSh7XG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGZpbHRlcnM6IGJ1aWxkVXNlcnNEaXJlY3RvcnlGaWx0ZXJzKHEpLFxuICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZShyZXNvbHZlRGVib3VuY2VkU2VhcmNoUGFnaW5hdGlvblNvdXJjZSh0eXBlKSlcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdwcm9qZWN0JyB8fCB0eXBlID09PSAndGFzaycpIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBidWlsZEZpbHRlcnNGb3JUeXBlKHR5cGUpXG4gICAgICBjb25zdCBleHRyYSA9IGJ1aWxkU2VhcmNoRW50aXRpZXNFeHRyYSh0eXBlLCBzdGFibGVTY29wZSlcbiAgICAgIGZldGNoU2VhcmNoRW50aXRpZXMoe1xuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBxLFxuICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgLi4uKGV4dHJhICE9PSB1bmRlZmluZWQgPyB7IGV4dHJhIH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZShyZXNvbHZlRGVib3VuY2VkU2VhcmNoUGFnaW5hdGlvblNvdXJjZSh0eXBlKSlcbiAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgfVxuICB9LCBbZGVib3VuY2VkU2VhcmNoVmFsdWUsIHR5cGUsIHN0YWJsZVNjb3BlLCBmZXRjaFNlYXJjaEVudGl0aWVzLCBmZXRjaFNlYXJjaENsaWVudHMsIGZldGNoVXNlcnNEaXJlY3RvcnldKVxuXG4gIC8vIFNpbmNyb25pemFyIHJlc3VsdGFkb3MgZGUgc2VhcmNoXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGUgPT09ICdtY3AnKSByZXR1cm5cblxuICAgIGNvbnN0IHEgPSBkZWJvdW5jZWRTZWFyY2hWYWx1ZS50cmltKClcbiAgICBpZiAoIXEpIHJldHVyblxuICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG5cbiAgICBpZiAodHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgIHNldExvYWRpbmcoY2xpZW50c0xvYWRpbmcpXG4gICAgICBpZiAoY2xpZW50c0Vycm9yKSB7XG4gICAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGNsaWVudHNEYXRhPy5jbGllbnRzPy5kYXRhKSB7XG4gICAgICAgIHNldEl0ZW1zKGNsaWVudHNEYXRhLmNsaWVudHMuZGF0YS5tYXAoYyA9PiBtYXBDbGllbnRUb0l0ZW0oYywgcSkpKVxuICAgICAgICBzeW5jQ2xpZW50c1BhZ2luYXRpb24oY2xpZW50c0RhdGEpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3VzZXInKSB7XG4gICAgICBzZXRMb2FkaW5nKHVzZXJzTG9hZGluZylcbiAgICAgIGlmICh1c2Vyc0Vycm9yKSB7XG4gICAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKHVzZXJzRGF0YT8udXNlcnM/LmRhdGEpIHtcbiAgICAgICAgc2V0SXRlbXMoYnVpbGRVc2VyRGlyZWN0b3J5SXRlbXModXNlcnNEYXRhLnVzZXJzLmRhdGEsIGNvclVzZXIsIHEsIHQoJ2NvbnRleHRNZW50aW9uLm1lJykpKVxuICAgICAgICBzeW5jVXNlcnNQYWdpbmF0aW9uKHVzZXJzRGF0YSlcbiAgICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldExvYWRpbmcoc2VhcmNoTG9hZGluZylcbiAgICAgIGlmIChzZWFyY2hFcnJvcikge1xuICAgICAgICBzZXRFcnJvcih0cnVlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChzZWFyY2hEYXRhPy5zZWFyY2gpIHtcbiAgICAgICAgc2V0SXRlbXMoc2VhcmNoRGF0YS5zZWFyY2gubWFwKHIgPT4gbWFwU2VhcmNoVG9JdGVtKHIsIHR5cGUsIHEsIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdykpKVxuICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgICBzZXRFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBzZWFyY2hEYXRhLFxuICAgIGNsaWVudHNEYXRhLFxuICAgIHVzZXJzRGF0YSxcbiAgICBzZWFyY2hMb2FkaW5nLFxuICAgIGNsaWVudHNMb2FkaW5nLFxuICAgIHVzZXJzTG9hZGluZyxcbiAgICBzZWFyY2hFcnJvcixcbiAgICBjbGllbnRzRXJyb3IsXG4gICAgdXNlcnNFcnJvcixcbiAgICBkZWJvdW5jZWRTZWFyY2hWYWx1ZSxcbiAgICB0eXBlLFxuICAgIHN5bmNDbGllbnRzUGFnaW5hdGlvbixcbiAgICBzeW5jVXNlcnNQYWdpbmF0aW9uLFxuICAgIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdyxcbiAgICBjb3JVc2VyLFxuICAgIHQsXG4gIF0pXG5cbiAgY29uc3QgbG9hZE1vcmUgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFjYW5Mb2FkTW9yZUVudGl0eVNlYXJjaChpc0xvYWRpbmdNb3JlLCBoYXNNb3JlLCBhY3RpdmVQYWdpbmF0aW9uU291cmNlKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHNhZmVDdXJyZW50UGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KGN1cnJlbnRQYWdlLCAxKVxuICAgIGNvbnN0IG5leHRQYWdlID0gc2FmZUN1cnJlbnRQYWdlICsgMVxuICAgIGNvbnN0IHEgPSBkZWJvdW5jZWRTZWFyY2hWYWx1ZS50cmltKClcbiAgICBjb25zdCBsb2FkTW9yZUJhc2VsaW5lR2VuID0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50XG4gICAgc2V0SXNMb2FkaW5nTW9yZSh0cnVlKVxuICAgIHRyeSB7XG4gICAgICBpZiAoYWN0aXZlUGFnaW5hdGlvblNvdXJjZSA9PT0gJ3VzZXJzJykge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGZldGNoVXNlcnNEaXJlY3Rvcnkoe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgZmlsdGVyczogYnVpbGRVc2Vyc0RpcmVjdG9yeUZpbHRlcnMocSksXG4gICAgICAgICAgICBwYWdlOiBuZXh0UGFnZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBpZiAoaXNSZWNlbnRzRmV0Y2hHZW5lcmF0aW9uU3RhbGUobG9hZE1vcmVCYXNlbGluZUdlbiwgcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IChkYXRhPy51c2Vycz8uZGF0YSA/PyBbXSkubWFwKHUgPT4gbWFwVXNlclRvSXRlbSh1LCBxKSlcbiAgICAgICAgc2V0SXRlbXMocHJldiA9PiBtZXJnZVVzZXJzRGlyZWN0b3J5TG9hZE1vcmUocHJldiwgbmV4dEl0ZW1zLCBjb3JVc2VyLCBxLCB0KCdjb250ZXh0TWVudGlvbi5tZScpKSlcbiAgICAgICAgc3luY1VzZXJzUGFnaW5hdGlvbihkYXRhKVxuICAgICAgfSBlbHNlIGlmIChhY3RpdmVQYWdpbmF0aW9uU291cmNlID09PSAnY2xpZW50cy1zZWFyY2gnKSB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgZmV0Y2hTZWFyY2hDbGllbnRzKHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGZpbHRlcjogeyBuYW1lOiBxIH0sXG4gICAgICAgICAgICBwYWdlOiBuZXh0UGFnZSxcbiAgICAgICAgICAgIHBlclBhZ2U6IDIwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChpc1JlY2VudHNGZXRjaEdlbmVyYXRpb25TdGFsZShsb2FkTW9yZUJhc2VsaW5lR2VuLCByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpKSByZXR1cm5cbiAgICAgICAgY29uc3QgbmV4dEl0ZW1zID0gKGRhdGE/LmNsaWVudHM/LmRhdGEgPz8gW10pLm1hcChjID0+IG1hcENsaWVudFRvSXRlbShjLCBxKSlcbiAgICAgICAgc2V0SXRlbXMocHJldiA9PiBhcHBlbmRVbmlxdWVNZW50aW9uSXRlbXMocHJldiwgbmV4dEl0ZW1zKSlcbiAgICAgICAgc3luY0NsaWVudHNQYWdpbmF0aW9uKGRhdGEpXG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICd0YXNrLWZhbGxiYWNrJykge1xuICAgICAgICBjb25zdCBzY29wZUZpbHRlciA9IGJ1aWxkVGFza0ZhbWlseVNjb3BlRmlsdGVyKHN0YWJsZVNjb3BlKVxuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGZldGNoVGFza0ZhbWlseUZhbGxiYWNrKHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGZpbHRlcjogeyBhcmNoaXZlZDogZmFsc2UsIC4uLnNjb3BlRmlsdGVyIH0sXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiB7IG9mZnNldDogKG5leHRQYWdlIC0gMSkgKiAyMCwgc2l6ZTogMjAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBpZiAoaXNSZWNlbnRzRmV0Y2hHZW5lcmF0aW9uU3RhbGUobG9hZE1vcmVCYXNlbGluZUdlbiwgcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IChkYXRhPy50YXNrRmFtaWx5Py5kYXRhID8/IFtdKVxuICAgICAgICAgIC5tYXAobm9ybWFsaXplVGFza0ZhbWlseVJlY29yZClcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKTogaXRlbSBpcyBSZWNlbnRUYXNrSXRlbSA9PiBpdGVtICE9PSBudWxsKVxuICAgICAgICAgIC5tYXAodGFzayA9PiBtYXBSZWNlbnRUYXNrVG9JdGVtKHRhc2ssICcnLCBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cpKVxuICAgICAgICBzZXRJdGVtcyhwcmV2ID0+IGFwcGVuZFVuaXF1ZU1lbnRpb25JdGVtcyhwcmV2LCBuZXh0SXRlbXMpKVxuICAgICAgICBzeW5jVGFza0ZhbGxiYWNrUGFnaW5hdGlvbihkYXRhKVxuICAgICAgfSBlbHNlIGlmIChhY3RpdmVQYWdpbmF0aW9uU291cmNlID09PSAncHJvamVjdC1mYWxsYmFjaycpIHtcbiAgICAgICAgY29uc3QgYXJndW1lbnRzRmlsdGVyID0gYnVpbGRQcm9qZWN0RmFsbGJhY2tBcmd1bWVudHMoc3RhYmxlU2NvcGUpXG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgZmV0Y2hQcm9qZWN0c0ZhbGxiYWNrKHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIC4uLihhcmd1bWVudHNGaWx0ZXIgPyB7IGFyZ3VtZW50czogYXJndW1lbnRzRmlsdGVyIH0gOiB7fSksXG4gICAgICAgICAgICBwYWdlOiBuZXh0UGFnZSxcbiAgICAgICAgICAgIHBlclBhZ2U6IDIwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChpc1JlY2VudHNGZXRjaEdlbmVyYXRpb25TdGFsZShsb2FkTW9yZUJhc2VsaW5lR2VuLCByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpKSByZXR1cm5cbiAgICAgICAgY29uc3QgbmV4dEl0ZW1zID0gKGRhdGE/LnByb2plY3RzPy5kYXRhID8/IFtdKVxuICAgICAgICAgIC5tYXAobm9ybWFsaXplUHJvamVjdHNGYWxsYmFja1JlY29yZClcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKTogaXRlbSBpcyBSYXdTZWFyY2hSZXN1bHQgPT4gaXRlbSAhPT0gbnVsbClcbiAgICAgICAgICAubWFwKGl0ZW0gPT4gbWFwU2VhcmNoVG9JdGVtKGl0ZW0sICdwcm9qZWN0JywgJycpKVxuICAgICAgICBzZXRJdGVtcyhwcmV2ID0+IGFwcGVuZFVuaXF1ZU1lbnRpb25JdGVtcyhwcmV2LCBuZXh0SXRlbXMpKVxuICAgICAgICBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbihkYXRhKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICBjb25zb2xlLmVycm9yKCdbdXNlRW50aXR5U2VhcmNoXSBsb2FkTW9yZSBmYWlsZWQnLCB7XG4gICAgICAgIHNvdXJjZTogYWN0aXZlUGFnaW5hdGlvblNvdXJjZSxcbiAgICAgICAgbmV4dFBhZ2UsXG4gICAgICAgIGVycm9yOiBlcnIsXG4gICAgICB9KVxuICAgICAgLy8gRXZpdGEgbG9vcCBkZSByZWludGVudG9zIGF1dG9tw6F0aWNvcyBwb3Igc2Nyb2xsIGN1YW5kbyBiYWNrZW5kIGVzdMOhIGNhw61kbyAoZWouIDUwMykuXG4gICAgICBzZXRFcnJvcih0cnVlKVxuICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNMb2FkaW5nTW9yZShmYWxzZSlcbiAgICB9XG4gIH0sIFtcbiAgICBpc0xvYWRpbmdNb3JlLFxuICAgIGhhc01vcmUsXG4gICAgY3VycmVudFBhZ2UsXG4gICAgYWN0aXZlUGFnaW5hdGlvblNvdXJjZSxcbiAgICBkZWJvdW5jZWRTZWFyY2hWYWx1ZSxcbiAgICBmZXRjaFVzZXJzRGlyZWN0b3J5LFxuICAgIGZldGNoU2VhcmNoQ2xpZW50cyxcbiAgICBmZXRjaFRhc2tGYW1pbHlGYWxsYmFjayxcbiAgICBmZXRjaFByb2plY3RzRmFsbGJhY2ssXG4gICAgc3RhYmxlU2NvcGUucHJvamVjdElkLFxuICAgIHN0YWJsZVNjb3BlLmNsaWVudElkLFxuICAgIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdyxcbiAgICBjb3JVc2VyLFxuICAgIHQsXG4gICAgc3luY0NsaWVudHNQYWdpbmF0aW9uLFxuICAgIHN5bmNVc2Vyc1BhZ2luYXRpb24sXG4gICAgc3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24sXG4gICAgc3luY1Byb2plY3RGYWxsYmFja1BhZ2luYXRpb24sXG4gIF0pXG5cbiAgLy8gTWFudGVuZW1vcyB1bmEgcmVmIGEgbGEgw7psdGltYSBmZXRjaFJlY2VudCBwYXJhIHF1ZSBlbCBlZmZlY3QgZGUgcmVjZW50cyBubyBzZVxuICAvLyByZS1kaXNwYXJlIHNvbG8gcG9ycXVlIGNhbWJpw7MgbGEgaWRlbnRpZGFkIGRlIGZldGNoUmVjZW50IChzY29wZS9jb3JVc2VyL3QpLlxuICBjb25zdCBmZXRjaFJlY2VudFJlZiA9IHVzZVJlZihmZXRjaFJlY2VudClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaFJlY2VudFJlZi5jdXJyZW50ID0gZmV0Y2hSZWNlbnRcbiAgfSwgW2ZldGNoUmVjZW50XSlcblxuICAvLyBUcmlnZ2VyIGRlIHJlY2VudHM6IGxvcyByZWNlbnRzIGRlIHVzZXIgTk8gZGVwZW5kZW4gZGVsIHNjb3BlLCBhc8OtIHF1ZSBjYW1iaWFyXG4gIC8vIGRlIHByb3llY3RvL2NsaWVudGUgbm8gZGViZSByZS1mZXRjaGVhcmxvcy4gTG9zIHRpcG9zIHNjb3BlYWRvcyAocHJvamVjdC90YXNrKSBzw60uXG4gIGNvbnN0IHJlY2VudHNUcmlnZ2VyID0gcmVzb2x2ZUVudGl0eVNlYXJjaFJlY2VudHNUcmlnZ2VyKHR5cGUsIHN0YWJsZVNjb3BlLCBtY3BTbHVnc0tleSlcblxuICAvLyBDdWFuZG8gc2UgbGltcGlhIGVsIHNlYXJjaCwgdm9sdmVyIGEgcmVjZW50c1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZGVib3VuY2VkU2VhcmNoVmFsdWUudHJpbSgpKSB7XG4gICAgICBmZXRjaFJlY2VudFJlZi5jdXJyZW50KClcbiAgICB9XG4gIH0sIFtkZWJvdW5jZWRTZWFyY2hWYWx1ZSwgcmVjZW50c1RyaWdnZXJdKVxuXG4gIHJldHVybiB7XG4gICAgaXRlbXMsXG4gICAgbG9hZGluZyxcbiAgICBlcnJvcixcbiAgICBoaWRlUmVjZW50c0xhYmVsLFxuICAgIGhhc01vcmUsXG4gICAgaXNMb2FkaW5nTW9yZSxcbiAgICBsb2FkTW9yZSxcbiAgICBzZWFyY2hWYWx1ZSxcbiAgICB1cGRhdGVTZWFyY2hWYWx1ZTogc2V0U2VhcmNoVmFsdWUsXG4gICAgZmV0Y2hSZWNlbnQsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsU0FBU0EsWUFBWSxRQUFRLGdCQUFnQjtBQUM3QyxTQUFTQyxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ3pFLFNBQVNDLGNBQWMsUUFBUSw2Q0FBNkM7QUFFNUUsU0FBU0MsT0FBTyxRQUFRLHFCQUFxQjtBQUM3QyxTQUFTQyxpQkFBaUIsRUFBRUMsZUFBZSxFQUFFQyxvQkFBb0IsUUFBUSxxQ0FBcUM7QUFDOUcsU0FBU0MsY0FBYyxRQUFRLHFDQUFxQztBQUNwRSxTQUFTQyxlQUFlLFFBQVEsdUNBQXVDO0FBQ3ZFLFNBQVNDLHdCQUF3QixRQUFRLHFCQUFxQjtBQUM5RCxTQUFTQyxXQUFXLFFBQVEsZUFBZTtBQUMzQyxTQUFTQyxJQUFJLFFBQVEsUUFBUTtBQUU3QixTQUNFQyxtQkFBbUIsRUFDbkJDLHdCQUF3QixFQUN4QkMsMEJBQTBCLEVBQzFCQyxlQUFlLEVBQ2ZDLGtCQUFrQixFQUNsQkMsbUJBQW1CLEVBQ25CQyxlQUFlLEVBQ2ZDLGFBQWEsRUFDYkMsb0JBQW9CLEVBQ3BCQywrQkFBK0IsRUFDL0JDLHlCQUF5QixFQUN6QkMsd0JBQXdCLEVBQ3hCQyxnQ0FBZ0MsRUFDaENDLDZCQUE2QixFQUM3QkMsc0JBQXNCLEVBQ3RCQyx3QkFBd0IsRUFDeEJDLDZCQUE2QixFQUM3QkMsMEJBQTBCLEVBQzFCQyx1QkFBdUIsRUFDdkJDLHVCQUF1QixFQUN2QkMsaUNBQWlDLEVBQ2pDQyxzQkFBc0IsRUFDdEJDLHNC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
@@ -1,14 +1,12 @@
1
1
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _regeneratorRuntime from "@babel/runtime/regenerator";
4
- import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
+ import { useCallback, useEffect, useMemo, useState } from 'react';
5
5
  import { getFrequentlyUsedActions } from '../services/maia/Actions/getFrequentlyUsedActions';
6
6
  import { useT } from './useT';
7
7
  import { mapBackendLang } from '../utils/mapBackendLang';
8
- import { buildFrequentlyUsedActionsCacheKey, getCachedFrequentlyUsedActions, setCachedFrequentlyUsedActions } from './frequentlyUsedActionsCache';
9
8
  export var mapMaiaSectionToFuasApiSection = function mapMaiaSectionToFuasApiSection(section) {
10
9
  if (section === 'home_with_hours') return 'home_with_hours';
11
- if (section === 'home_collaborator') return 'home_collaborator';
12
10
  if (section === 'task') return 'tasks';
13
11
  if (section === 'planner') return 'planner';
14
12
  return 'home';
@@ -20,17 +18,12 @@ export var useFrequentlyUsedActions = function useFrequentlyUsedActions(agentId,
20
18
  var apiSection = useMemo(function () {
21
19
  return mapMaiaSectionToFuasApiSection(maiaSection !== null && maiaSection !== void 0 ? maiaSection : 'header');
22
20
  }, [maiaSection]);
23
- var cacheKey = agentId ? buildFrequentlyUsedActionsCacheKey(agentId, apiSection, entityType) : null;
24
- var requestIdRef = useRef(0);
25
- var _useState = useState(function () {
26
- var _getCachedFrequentlyU;
27
- return cacheKey ? (_getCachedFrequentlyU = getCachedFrequentlyUsedActions(cacheKey)) !== null && _getCachedFrequentlyU !== void 0 ? _getCachedFrequentlyU : [] : [];
28
- }),
21
+ var _useState = useState([]),
29
22
  _useState2 = _slicedToArray(_useState, 2),
30
23
  actions = _useState2[0],
31
24
  setActions = _useState2[1];
32
25
  var _useState3 = useState(function () {
33
- return Boolean(agentId && !(cacheKey && getCachedFrequentlyUsedActions(cacheKey)));
26
+ return Boolean(agentId);
34
27
  }),
35
28
  _useState4 = _slicedToArray(_useState3, 2),
36
29
  loading = _useState4[0],
@@ -41,16 +34,11 @@ export var useFrequentlyUsedActions = function useFrequentlyUsedActions(agentId,
41
34
  setError = _useState6[1];
42
35
  var handleGetFrequentlyUsedActions = useCallback(/*#__PURE__*/function () {
43
36
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(aid) {
44
- var requestId, cachedActions, response, message, _t;
37
+ var response, message, _t;
45
38
  return _regeneratorRuntime.wrap(function (_context) {
46
39
  while (1) switch (_context.prev = _context.next) {
47
40
  case 0:
48
- requestIdRef.current += 1;
49
- requestId = requestIdRef.current;
50
- cachedActions = cacheKey ? getCachedFrequentlyUsedActions(cacheKey) : undefined;
51
- if (!(cachedActions !== null && cachedActions !== void 0 && cachedActions.length)) {
52
- setLoading(true);
53
- }
41
+ setLoading(true);
54
42
  setError(null);
55
43
  _context.prev = 1;
56
44
  _context.next = 2;
@@ -68,66 +56,39 @@ export var useFrequentlyUsedActions = function useFrequentlyUsedActions(agentId,
68
56
  }
69
57
  throw new Error('Invalid response format from server');
70
58
  case 3:
71
- if (!(requestId !== requestIdRef.current)) {
72
- _context.next = 4;
73
- break;
74
- }
75
- return _context.abrupt("return");
76
- case 4:
77
59
  setActions(response.data);
78
- if (cacheKey) {
79
- setCachedFrequentlyUsedActions(cacheKey, response.data);
80
- }
81
- _context.next = 7;
60
+ _context.next = 5;
82
61
  break;
83
- case 5:
84
- _context.prev = 5;
62
+ case 4:
63
+ _context.prev = 4;
85
64
  _t = _context["catch"](1);
86
- if (!(requestId !== requestIdRef.current)) {
87
- _context.next = 6;
88
- break;
89
- }
90
- return _context.abrupt("return");
91
- case 6:
92
65
  message = _t instanceof Error ? _t.message : 'An unknown error occurred';
93
66
  setError(message);
94
67
  console.error('Error fetching frequently used actions:', _t);
95
- case 7:
96
- _context.prev = 7;
97
- if (requestId === requestIdRef.current) setLoading(false);
98
- return _context.finish(7);
99
- case 8:
68
+ case 5:
69
+ _context.prev = 5;
70
+ setLoading(false);
71
+ return _context.finish(5);
72
+ case 6:
100
73
  case "end":
101
74
  return _context.stop();
102
75
  }
103
- }, _callee, null, [[1, 5, 7, 8]]);
76
+ }, _callee, null, [[1, 4, 5, 6]]);
104
77
  }));
105
78
  return function (_x) {
106
79
  return _ref.apply(this, arguments);
107
80
  };
108
- }(), [cacheKey, lang, apiSection, entityType]);
81
+ }(), [lang, apiSection, entityType]);
109
82
  useEffect(function () {
110
- if (!agentId || !cacheKey) {
111
- setActions([]);
112
- setLoading(false);
113
- setError(null);
114
- return function () {
115
- requestIdRef.current += 1;
116
- };
117
- }
118
- var cached = getCachedFrequentlyUsedActions(cacheKey);
83
+ setActions([]);
119
84
  setError(null);
120
- if (cached) {
121
- setActions(cached);
122
- } else {
123
- setActions([]);
124
- setLoading(true);
85
+ if (!agentId) {
86
+ setLoading(false);
87
+ return;
125
88
  }
89
+ setLoading(true);
126
90
  handleGetFrequentlyUsedActions(agentId);
127
- return function () {
128
- requestIdRef.current += 1;
129
- };
130
- }, [agentId, cacheKey, handleGetFrequentlyUsedActions]);
91
+ }, [agentId, handleGetFrequentlyUsedActions]);
131
92
  return {
132
93
  actions: actions,
133
94
  loading: loading,
@@ -135,4 +96,4 @@ export var useFrequentlyUsedActions = function useFrequentlyUsedActions(agentId,
135
96
  handleGetFrequentlyUsedActions: handleGetFrequentlyUsedActions
136
97
  };
137
98
  };
138
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImdldEZyZXF1ZW50bHlVc2VkQWN0aW9ucyIsInVzZVQiLCJtYXBCYWNrZW5kTGFuZyIsImJ1aWxkRnJlcXVlbnRseVVzZWRBY3Rpb25zQ2FjaGVLZXkiLCJnZXRDYWNoZWRGcmVxdWVudGx5VXNlZEFjdGlvbnMiLCJzZXRDYWNoZWRGcmVxdWVudGx5VXNlZEFjdGlvbnMiLCJtYXBNYWlhU2VjdGlvblRvRnVhc0FwaVNlY3Rpb24iLCJzZWN0aW9uIiwidXNlRnJlcXVlbnRseVVzZWRBY3Rpb25zIiwiYWdlbnRJZCIsIm1haWFTZWN0aW9uIiwiZW50aXR5VHlwZSIsIl91c2VUIiwiaTE4biIsImxhbmciLCJsYW5ndWFnZSIsImFwaVNlY3Rpb24iLCJjYWNoZUtleSIsInJlcXVlc3RJZFJlZiIsIl91c2VTdGF0ZSIsIl9nZXRDYWNoZWRGcmVxdWVudGx5VSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImFjdGlvbnMiLCJzZXRBY3Rpb25zIiwiX3VzZVN0YXRlMyIsIkJvb2xlYW4iLCJfdXNlU3RhdGU0IiwibG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImVycm9yIiwic2V0RXJyb3IiLCJoYW5kbGVHZXRGcmVxdWVudGx5VXNlZEFjdGlvbnMiLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJhaWQiLCJyZXF1ZXN0SWQiLCJjYWNoZWRBY3Rpb25zIiwicmVzcG9uc2UiLCJtZXNzYWdlIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImN1cnJlbnQiLCJ1bmRlZmluZWQiLCJsZW5ndGgiLCJzZW50IiwiQXJyYXkiLCJpc0FycmF5IiwiZGF0YSIsIkVycm9yIiwiYWJydXB0IiwiY29uc29sZSIsImZpbmlzaCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiY2FjaGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IEFjdGlvbiB9IGZyb20gJy4uL3R5cGVzL0FjdGlvbidcbmltcG9ydCB7XG4gIGdldEZyZXF1ZW50bHlVc2VkQWN0aW9ucyxcbiAgdHlwZSBGcmVxdWVudGx5VXNlZEFjdGlvbnNBcGlTZWN0aW9uLFxufSBmcm9tICcuLi9zZXJ2aWNlcy9tYWlhL0FjdGlvbnMvZ2V0RnJlcXVlbnRseVVzZWRBY3Rpb25zJ1xuaW1wb3J0IHR5cGUgeyBTZWN0aW9uIH0gZnJvbSAnLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuL3VzZVQnXG5pbXBvcnQgeyBtYXBCYWNrZW5kTGFuZyB9IGZyb20gJy4uL3V0aWxzL21hcEJhY2tlbmRMYW5nJ1xuaW1wb3J0IHtcbiAgYnVpbGRGcmVxdWVudGx5VXNlZEFjdGlvbnNDYWNoZUtleSxcbiAgZ2V0Q2FjaGVkRnJlcXVlbnRseVVzZWRBY3Rpb25zLFxuICBzZXRDYWNoZWRGcmVxdWVudGx5VXNlZEFjdGlvbnMsXG59IGZyb20gJy4vZnJlcXVlbnRseVVzZWRBY3Rpb25zQ2FjaGUnXG5cbmV4cG9ydCB0eXBlIEZyZXF1ZW50bHlVc2VkQWN0aW9uc01haWFTZWN0aW9uID0gU2VjdGlvbiB8ICdob21lX3dpdGhfaG91cnMnIHwgJ2hvbWVfY29sbGFib3JhdG9yJ1xuXG5leHBvcnQgY29uc3QgbWFwTWFpYVNlY3Rpb25Ub0Z1YXNBcGlTZWN0aW9uID0gKFxuICBzZWN0aW9uOiBGcmVxdWVudGx5VXNlZEFjdGlvbnNNYWlhU2VjdGlvblxuKTogRnJlcXVlbnRseVVzZWRBY3Rpb25zQXBpU2VjdGlvbiA9PiB7XG4gIGlmIChzZWN0aW9uID09PSAnaG9tZV93aXRoX2hvdXJzJykgcmV0dXJuICdob21lX3dpdGhfaG91cnMnXG4gIGlmIChzZWN0aW9uID09PSAnaG9tZV9jb2xsYWJvcmF0b3InKSByZXR1cm4gJ2hvbWVfY29sbGFib3JhdG9yJ1xuICBpZiAoc2VjdGlvbiA9PT0gJ3Rhc2snKSByZXR1cm4gJ3Rhc2tzJ1xuICBpZiAoc2VjdGlvbiA9PT0gJ3BsYW5uZXInKSByZXR1cm4gJ3BsYW5uZXInXG4gIHJldHVybiAnaG9tZSdcbn1cblxuZXhwb3J0IGNvbnN0IHVzZUZyZXF1ZW50bHlVc2VkQWN0aW9ucyA9IChcbiAgYWdlbnRJZD86IHN0cmluZyxcbiAgbWFpYVNlY3Rpb24/OiBGcmVxdWVudGx5VXNlZEFjdGlvbnNNYWlhU2VjdGlvbixcbiAgZW50aXR5VHlwZT86IHN0cmluZ1xuKSA9PiB7XG4gIGNvbnN0IHsgaTE4biB9ID0gdXNlVCgpXG4gIGNvbnN0IGxhbmcgPSBtYXBCYWNrZW5kTGFuZyhpMThuLmxhbmd1YWdlKVxuICBjb25zdCBhcGlTZWN0aW9uID0gdXNlTWVtbygoKSA9PiBtYXBNYWlhU2VjdGlvblRvRnVhc0FwaVNlY3Rpb24obWFpYVNlY3Rpb24gPz8gJ2hlYWRlcicpLCBbbWFpYVNlY3Rpb25dKVxuICBjb25zdCBjYWNoZUtleSA9IGFnZW50SWQgPyBidWlsZEZyZXF1ZW50bHlVc2VkQWN0aW9uc0NhY2hlS2V5KGFnZW50SWQsIGFwaVNlY3Rpb24sIGVudGl0eVR5cGUpIDogbnVsbFxuICBjb25zdCByZXF1ZXN0SWRSZWYgPSB1c2VSZWYoMClcbiAgY29uc3QgW2FjdGlvbnMsIHNldEFjdGlvbnNdID0gdXNlU3RhdGU8QWN0aW9uW10+KCgpID0+XG4gICAgY2FjaGVLZXkgPyAoZ2V0Q2FjaGVkRnJlcXVlbnRseVVzZWRBY3Rpb25zKGNhY2hlS2V5KSA/PyBbXSkgOiBbXVxuICApXG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKCgpID0+XG4gICAgQm9vbGVhbihhZ2VudElkICYmICEoY2FjaGVLZXkgJiYgZ2V0Q2FjaGVkRnJlcXVlbnRseVVzZWRBY3Rpb25zKGNhY2hlS2V5KSkpXG4gIClcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IGhhbmRsZUdldEZyZXF1ZW50bHlVc2VkQWN0aW9ucyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChhaWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmVxdWVzdElkUmVmLmN1cnJlbnQgKz0gMVxuICAgICAgY29uc3QgcmVxdWVzdElkID0gcmVxdWVzdElkUmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IGNhY2hlZEFjdGlvbnMgPSBjYWNoZUtleSA/IGdldENhY2hlZEZyZXF1ZW50bHlVc2VkQWN0aW9ucyhjYWNoZUtleSkgOiB1bmRlZmluZWRcbiAgICAgIGlmICghY2FjaGVkQWN0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgIH1cbiAgICAgIHNldEVycm9yKG51bGwpXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGdldEZyZXF1ZW50bHlVc2VkQWN0aW9ucyh7IGFnZW50SWQ6IGFpZCwgbGFuZywgc2VjdGlvbjogYXBpU2VjdGlvbiwgZW50aXR5VHlwZSB9KVxuICAgICAgICBpZiAoIXJlc3BvbnNlIHx8ICFBcnJheS5pc0FycmF5KHJlc3BvbnNlLmRhdGEpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHJlc3BvbnNlIGZvcm1hdCBmcm9tIHNlcnZlcicpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcXVlc3RJZCAhPT0gcmVxdWVzdElkUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBzZXRBY3Rpb25zKHJlc3BvbnNlLmRhdGEpXG4gICAgICAgIGlmIChjYWNoZUtleSkge1xuICAgICAgICAgIHNldENhY2hlZEZyZXF1ZW50bHlVc2VkQWN0aW9ucyhjYWNoZUtleSwgcmVzcG9uc2UuZGF0YSlcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmIChyZXF1ZXN0SWQgIT09IHJlcXVlc3RJZFJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCdcbiAgICAgICAgc2V0RXJyb3IobWVzc2FnZSlcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgZnJlcXVlbnRseSB1c2VkIGFjdGlvbnM6JywgZXJyKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKHJlcXVlc3RJZCA9PT0gcmVxdWVzdElkUmVmLmN1cnJlbnQpIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICB9XG4gICAgfSxcbiAgICBbY2FjaGVLZXksIGxhbmcsIGFwaVNlY3Rpb24sIGVudGl0eVR5cGVdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghYWdlbnRJZCB8fCAhY2FjaGVLZXkpIHtcbiAgICAgIHNldEFjdGlvbnMoW10pXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0RXJyb3IobnVsbClcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHJlcXVlc3RJZFJlZi5jdXJyZW50ICs9IDFcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjYWNoZWQgPSBnZXRDYWNoZWRGcmVxdWVudGx5VXNlZEFjdGlvbnMoY2FjaGVLZXkpXG4gICAgc2V0RXJyb3IobnVsbClcbiAgICBpZiAoY2FjaGVkKSB7XG4gICAgICBzZXRBY3Rpb25zKGNhY2hlZClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0QWN0aW9ucyhbXSlcbiAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICB9XG5cbiAgICBoYW5kbGVHZXRGcmVxdWVudGx5VXNlZEFjdGlvbnMoYWdlbnRJZClcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICByZXF1ZXN0SWRSZWYuY3VycmVudCArPSAxXG4gICAgfVxuICB9LCBbYWdlbnRJZCwgY2FjaGVLZXksIGhhbmRsZUdldEZyZXF1ZW50bHlVc2VkQWN0aW9uc10pXG5cbiAgcmV0dXJuIHtcbiAgICBhY3Rpb25zLFxuICAgIGxvYWRpbmcsXG4gICAgZXJyb3IsXG4gICAgaGFuZGxlR2V0RnJlcXVlbnRseVVzZWRBY3Rpb25zLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQVNBLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFFekUsU0FDRUMsd0JBQXdCLFFBRW5CLG1EQUFtRDtBQUUxRCxTQUFTQyxJQUFJLFFBQVEsUUFBUTtBQUM3QixTQUFTQyxjQUFjLFFBQVEseUJBQXlCO0FBQ3hELFNBQ0VDLGtDQUFrQyxFQUNsQ0MsOEJBQThCLEVBQzlCQyw4QkFBOEIsUUFDekIsOEJBQThCO0FBSXJDLE9BQU8sSUFBTUMsOEJBQThCLEdBQUcsU0FBakNBLDhCQUE4QkEsQ0FDekNDLE9BQXlDLEVBQ0w7RUFDcEMsSUFBSUEsT0FBTyxLQUFLLGlCQUFpQixFQUFFLE9BQU8saUJBQWlCO0VBQzNELElBQUlBLE9BQU8sS0FBSyxtQkFBbUIsRUFBRSxPQUFPLG1CQUFtQjtFQUMvRCxJQUFJQSxPQUFPLEtBQUssTUFBTSxFQUFFLE9BQU8sT0FBTztFQUN0QyxJQUFJQSxPQUFPLEtBQUssU0FBUyxFQUFFLE9BQU8sU0FBUztFQUMzQyxPQUFPLE1BQU07QUFDZixDQUFDO0FBRUQsT0FBTyxJQUFNQyx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCQSxDQUNuQ0MsT0FBZ0IsRUFDaEJDLFdBQThDLEVBQzlDQyxVQUFtQixFQUNoQjtFQUNILElBQUFDLEtBQUEsR0FBaUJYLElBQUksQ0FBQyxDQUFDO0lBQWZZLElBQUksR0FBQUQsS0FBQSxDQUFKQyxJQUFJ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
99
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsImdldEZyZXF1ZW50bHlVc2VkQWN0aW9ucyIsInVzZVQiLCJtYXBCYWNrZW5kTGFuZyIsIm1hcE1haWFTZWN0aW9uVG9GdWFzQXBpU2VjdGlvbiIsInNlY3Rpb24iLCJ1c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMiLCJhZ2VudElkIiwibWFpYVNlY3Rpb24iLCJlbnRpdHlUeXBlIiwiX3VzZVQiLCJpMThuIiwibGFuZyIsImxhbmd1YWdlIiwiYXBpU2VjdGlvbiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImFjdGlvbnMiLCJzZXRBY3Rpb25zIiwiX3VzZVN0YXRlMyIsIkJvb2xlYW4iLCJfdXNlU3RhdGU0IiwibG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImVycm9yIiwic2V0RXJyb3IiLCJoYW5kbGVHZXRGcmVxdWVudGx5VXNlZEFjdGlvbnMiLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJhaWQiLCJyZXNwb25zZSIsIm1lc3NhZ2UiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwic2VudCIsIkFycmF5IiwiaXNBcnJheSIsImRhdGEiLCJFcnJvciIsImNvbnNvbGUiLCJmaW5pc2giLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgQWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMvQWN0aW9uJ1xuaW1wb3J0IHtcbiAgZ2V0RnJlcXVlbnRseVVzZWRBY3Rpb25zLFxuICB0eXBlIEZyZXF1ZW50bHlVc2VkQWN0aW9uc0FwaVNlY3Rpb24sXG59IGZyb20gJy4uL3NlcnZpY2VzL21haWEvQWN0aW9ucy9nZXRGcmVxdWVudGx5VXNlZEFjdGlvbnMnXG5pbXBvcnQgdHlwZSB7IFNlY3Rpb24gfSBmcm9tICcuLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4vdXNlVCdcbmltcG9ydCB7IG1hcEJhY2tlbmRMYW5nIH0gZnJvbSAnLi4vdXRpbHMvbWFwQmFja2VuZExhbmcnXG5cbmV4cG9ydCB0eXBlIEZyZXF1ZW50bHlVc2VkQWN0aW9uc01haWFTZWN0aW9uID0gU2VjdGlvbiB8ICdob21lX3dpdGhfaG91cnMnXG5cbmV4cG9ydCBjb25zdCBtYXBNYWlhU2VjdGlvblRvRnVhc0FwaVNlY3Rpb24gPSAoXG4gIHNlY3Rpb246IEZyZXF1ZW50bHlVc2VkQWN0aW9uc01haWFTZWN0aW9uXG4pOiBGcmVxdWVudGx5VXNlZEFjdGlvbnNBcGlTZWN0aW9uID0+IHtcbiAgaWYgKHNlY3Rpb24gPT09ICdob21lX3dpdGhfaG91cnMnKSByZXR1cm4gJ2hvbWVfd2l0aF9ob3VycydcbiAgaWYgKHNlY3Rpb24gPT09ICd0YXNrJykgcmV0dXJuICd0YXNrcydcbiAgaWYgKHNlY3Rpb24gPT09ICdwbGFubmVyJykgcmV0dXJuICdwbGFubmVyJ1xuICByZXR1cm4gJ2hvbWUnXG59XG5cbmV4cG9ydCBjb25zdCB1c2VGcmVxdWVudGx5VXNlZEFjdGlvbnMgPSAoXG4gIGFnZW50SWQ/OiBzdHJpbmcsXG4gIG1haWFTZWN0aW9uPzogRnJlcXVlbnRseVVzZWRBY3Rpb25zTWFpYVNlY3Rpb24sXG4gIGVudGl0eVR5cGU/OiBzdHJpbmdcbikgPT4ge1xuICBjb25zdCB7IGkxOG4gfSA9IHVzZVQoKVxuICBjb25zdCBsYW5nID0gbWFwQmFja2VuZExhbmcoaTE4bi5sYW5ndWFnZSlcbiAgY29uc3QgYXBpU2VjdGlvbiA9IHVzZU1lbW8oKCkgPT4gbWFwTWFpYVNlY3Rpb25Ub0Z1YXNBcGlTZWN0aW9uKG1haWFTZWN0aW9uID8/ICdoZWFkZXInKSwgW21haWFTZWN0aW9uXSlcbiAgY29uc3QgW2FjdGlvbnMsIHNldEFjdGlvbnNdID0gdXNlU3RhdGU8QWN0aW9uW10+KFtdKVxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZSgoKSA9PiBCb29sZWFuKGFnZW50SWQpKVxuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgaGFuZGxlR2V0RnJlcXVlbnRseVVzZWRBY3Rpb25zID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGFpZDogc3RyaW5nKSA9PiB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBzZXRFcnJvcihudWxsKVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBnZXRGcmVxdWVudGx5VXNlZEFjdGlvbnMoeyBhZ2VudElkOiBhaWQsIGxhbmcsIHNlY3Rpb246IGFwaVNlY3Rpb24sIGVudGl0eVR5cGUgfSlcbiAgICAgICAgaWYgKCFyZXNwb25zZSB8fCAhQXJyYXkuaXNBcnJheShyZXNwb25zZS5kYXRhKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByZXNwb25zZSBmb3JtYXQgZnJvbSBzZXJ2ZXInKVxuICAgICAgICB9XG4gICAgICAgIHNldEFjdGlvbnMocmVzcG9uc2UuZGF0YSlcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdBbiB1bmtub3duIGVycm9yIG9jY3VycmVkJ1xuICAgICAgICBzZXRFcnJvcihtZXNzYWdlKVxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBmcmVxdWVudGx5IHVzZWQgYWN0aW9uczonLCBlcnIpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2xhbmcsIGFwaVNlY3Rpb24sIGVudGl0eVR5cGVdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldEFjdGlvbnMoW10pXG4gICAgc2V0RXJyb3IobnVsbClcbiAgICBpZiAoIWFnZW50SWQpIHtcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0TG9hZGluZyh0cnVlKVxuICAgIGhhbmRsZUdldEZyZXF1ZW50bHlVc2VkQWN0aW9ucyhhZ2VudElkKVxuICB9LCBbYWdlbnRJZCwgaGFuZGxlR2V0RnJlcXVlbnRseVVzZWRBY3Rpb25zXSlcblxuICByZXR1cm4ge1xuICAgIGFjdGlvbnMsXG4gICAgbG9hZGluZyxcbiAgICBlcnJvcixcbiAgICBoYW5kbGVHZXRGcmVxdWVudGx5VXNlZEFjdGlvbnMsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBU0EsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFFakUsU0FDRUMsd0JBQXdCLFFBRW5CLG1EQUFtRDtBQUUxRCxTQUFTQyxJQUFJLFFBQVEsUUFBUTtBQUM3QixTQUFTQyxjQUFjLFFBQVEseUJBQXlCO0FBSXhELE9BQU8sSUFBTUMsOEJBQThCLEdBQUcsU0FBakNBLDhCQUE4QkEsQ0FDekNDLE9BQXlDLEVBQ0w7RUFDcEMsSUFBSUEsT0FBTyxLQUFLLGlCQUFpQixFQUFFLE9BQU8saUJBQWlCO0VBQzNELElBQUlBLE9BQU8sS0FBSyxNQUFNLEVBQUUsT0FBTyxPQUFPO0VBQ3RDLElBQUlBLE9BQU8sS0FBSyxTQUFTLEVBQUUsT0FBTyxTQUFTO0VBQzNDLE9BQU8sTUFBTTtBQUNmLENBQUM7QUFFRCxPQUFPLElBQU1DLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQ25DQyxPQUFnQixFQUNoQkMsV0FBOEMsRUFDOUNDLFVBQW1CLEVBQ2hCO0VBQ0gsSUFBQUMsS0FBQSxHQUFpQlIsSUFBSSxDQUFDLENBQUM7SUFBZlMsSUFBSSxHQUFBRCxLQUFBLENBQUpDLElBQUk7RUFDWixJQUFNQyxJQUFJLEdBQUdULGNBQWMsQ0FBQ1EsSUFBSSxDQUFDRSxRQUFRLENBQUM7RUFDMUMsSUFBTUMsVUFBVSxHQUFHZixPQUFPLENBQUM7SUFBQSxPQUFNSyw4QkFBOEIsQ0FBQ0ksV0FBVyxhQUFYQSxXQUFXLGNBQVhBLFdBQVcsR0FBSSxRQUFRLENBQUM7RUFBQSxHQUFFLENBQUNBLFdBQVcsQ0FBQyxDQUFDO0VBQ3hHLElBQUFPLFNBQUEsR0FBOEJmLFFBQVEsQ0FBVyxFQUFFLENBQUM7SUFBQWdCLFVBQUEsR0FBQUMsY0FBQSxDQUFBRixTQUFBO0lBQTdDRyxPQUFPLEdBQUFGLFVBQUE7SUFBRUcsVUFBVSxHQUFBSCxVQUFBO0VBQzFCLElBQUFJLFVBQUEsR0FBOEJwQixRQUFRLENBQUM7TUFBQSxPQUFNcUIsT0FBTyxDQUFDZCxPQUFPLENBQUM7SUFBQSxFQUFDO0lBQUFlLFVBQUEsR0FBQUwsY0FBQSxDQUFBRyxVQUFBO0lBQXZERyxPQUFPLEdBQUFELFVBQUE7SUFBRUUsVUFBVSxHQUFBRixVQUFBO0VBQzFCLElBQUFHLFVBQUEsR0FBMEJ6QixRQUFRLENBQWdCLElBQUksQ0FBQztJQUFBMEIsVUFBQSxHQUFBVCxjQUFBLENBQUFRLFVBQUE7SUFBaERFLEtBQUssR0FBQUQsVUFBQTtJQUFFRSxRQUFRLEdBQUFGLFVBQUE7RUFFdEIsSUFBTUcsOEJBQThCLEdBQUdoQyxXQUFXO0lBQUEsSUFBQWlDLElBQUEsR0FBQUMsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUNoRCxTQUFBQyxRQUFPQyxHQUFXO01BQUEsSUFBQUMsUUFBQSxFQUFBQyxPQUFBLEVBQUFDLEVBQUE7TUFBQSxPQUFBTixtQkFBQSxDQUFBTyxJQUFBLFdBQUFDLFFBQUE7UUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtVQUFBO1lBQ2hCbEIsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNoQkksUUFBUSxDQUFDLElBQUksQ0FBQztZQUFBWSxRQUFBLENBQUFDLElBQUE7WUFBQUQsUUFBQSxDQUFBRSxJQUFBO1lBQUEsT0FFV3pDLHdCQUF3QixDQUFDO2NBQUVNLE9BQU8sRUFBRTRCLEdBQUc7Y0FBRXZCLElBQUksRUFBSkEsSUFBSTtjQUFFUCxPQUFPLEVBQUVTLFVBQVU7Y0FBRUwsVUFBVSxFQUFWQTtZQUFXLENBQUMsQ0FBQztVQUFBO1lBQWxHMkIsUUFBUSxHQUFBSSxRQUFBLENBQUFHLElBQUE7WUFBQSxNQUNWLENBQUNQLFFBQVEsSUFBSSxDQUFDUSxLQUFLLENBQUNDLE9BQU8sQ0FBQ1QsUUFBUSxDQUFDVSxJQUFJLENBQUM7Y0FBQU4sUUFBQSxDQUFBRSxJQUFBO2NBQUE7WUFBQTtZQUFBLE1BQ3RDLElBQUlLLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQztVQUFBO1lBRXhENUIsVUFBVSxDQUFDaUIsUUFBUSxDQUFDVSxJQUFJLENBQUM7WUFBQU4sUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtZQUFBRixRQUFBLENBQUFDLElBQUE7WUFBQUgsRUFBQSxHQUFBRSxRQUFBO1lBRW5CSCxPQUFPLEdBQUdDLEVBQUEsWUFBZVMsS0FBSyxHQUFHVCxFQUFBLENBQUlELE9BQU8sR0FBRywyQkFBMkI7WUFDaEZULFFBQVEsQ0FBQ1MsT0FBTyxDQUFDO1lBQ2pCVyxPQUFPLENBQUNyQixLQUFLLENBQUMseUNBQXlDLEVBQUFXLEVBQUssQ0FBQztVQUFBO1lBQUFFLFFBQUEsQ0FBQUMsSUFBQTtZQUU3RGpCLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFBQSxPQUFBZ0IsUUFBQSxDQUFBUyxNQUFBO1VBQUE7VUFBQTtZQUFBLE9BQUFULFFBQUEsQ0FBQVUsSUFBQTtRQUFBO01BQUEsR0FBQWhCLE9BQUE7SUFBQSxDQUVwQjtJQUFBLGlCQUFBaUIsRUFBQTtNQUFBLE9BQUFyQixJQUFBLENBQUFzQixLQUFBLE9BQUFDLFNBQUE7SUFBQTtFQUFBLEtBQ0QsQ0FBQ3pDLElBQUksRUFBRUUsVUFBVSxFQUFFTCxVQUFVLENBQy9CLENBQUM7RUFFRFgsU0FBUyxDQUFDLFlBQU07SUFDZHFCLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDZFMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNkLElBQUksQ0FBQ3JCLE9BQU8sRUFBRTtNQUNaaUIsVUFBVSxDQUFDLEtBQUssQ0FBQztNQUNqQjtJQUNGO0lBQ0FBLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDaEJLLDhCQUE4QixDQUFDdEIsT0FBTyxDQUFDO0VBQ3pDLENBQUMsRUFBRSxDQUFDQSxPQUFPLEVBQUVzQiw4QkFBOEIsQ0FBQyxDQUFDO0VBRTdDLE9BQU87SUFDTFgsT0FBTyxFQUFQQSxPQUFPO0lBQ1BLLE9BQU8sRUFBUEEsT0FBTztJQUNQSSxLQUFLLEVBQUxBLEtBQUs7SUFDTEUsOEJBQThCLEVBQTlCQTtFQUNGLENBQUM7QUFDSCxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -2,7 +2,7 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _regeneratorRuntime from "@babel/runtime/regenerator";
4
4
  /* eslint-disable consistent-return */
5
- import { useCallback, useState } from 'react';
5
+ import { useState } from 'react';
6
6
  import { useTranslation } from 'react-i18next';
7
7
  import { downloadKnowledge } from '../../services/maia/Knowledge/download';
8
8
  import { useSnackBarManager } from '../useSnackBarManager/useSnackBarManager';
@@ -65,11 +65,11 @@ export var useDownloadKnowledge = function useDownloadKnowledge() {
65
65
  return _ref2.apply(this, arguments);
66
66
  };
67
67
  }();
68
- var handleResetStates = useCallback(function () {
68
+ var handleResetStates = function handleResetStates() {
69
69
  setIsLoading(false);
70
70
  setError(null);
71
71
  setSuccess(null);
72
- }, []);
72
+ };
73
73
  return {
74
74
  isLoading: isLoading,
75
75
  error: error,
@@ -78,4 +78,4 @@ export var useDownloadKnowledge = function useDownloadKnowledge() {
78
78
  handleResetStates: handleResetStates
79
79
  };
80
80
  };
81
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVN0YXRlIiwidXNlVHJhbnNsYXRpb24iLCJkb3dubG9hZEtub3dsZWRnZSIsInVzZVNuYWNrQmFyTWFuYWdlciIsInVzZURvd25sb2FkS25vd2xlZGdlIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzTG9hZGluZyIsInNldElzTG9hZGluZyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZXJyb3IiLCJzZXRFcnJvciIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic3VjY2VzcyIsInNldFN1Y2Nlc3MiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsImhhbmRsZURvd25sb2FkS25vd2xlZGdlIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl9yZWYiLCJhZ2VudElkIiwia25vd2xlZGdlSWQiLCJyZXNwb25zZSIsImVycm9yTWVzc2FnZSIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJzZW50IiwiYWJydXB0IiwiRXJyb3IiLCJtZXNzYWdlIiwiY29uc29sZSIsImZpbmlzaCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlUmVzZXRTdGF0ZXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlS25vd2xlZGdlL2Rvd25sb2FkS25vd2xlZGdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNvbnNpc3RlbnQtcmV0dXJuICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IGRvd25sb2FkS25vd2xlZGdlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYS9Lbm93bGVkZ2UvZG93bmxvYWQnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuXG5leHBvcnQgY29uc3QgdXNlRG93bmxvYWRLbm93bGVkZ2UgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ2FibV9hZ2VudF9zZWN0aW9uJylcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzdWNjZXNzLCBzZXRTdWNjZXNzXSA9IHVzZVN0YXRlPHtcbiAgICBibG9iOiBCbG9iXG4gICAgZmlsZW5hbWU6IHN0cmluZ1xuICAgIGNvbnRlbnRUeXBlOiBzdHJpbmdcbiAgICBzaXplOiBudW1iZXJcbiAgfSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcblxuICBjb25zdCBoYW5kbGVEb3dubG9hZEtub3dsZWRnZSA9IGFzeW5jICh7IGFnZW50SWQsIGtub3dsZWRnZUlkIH06IHsgYWdlbnRJZDogc3RyaW5nOyBrbm93bGVkZ2VJZDogc3RyaW5nIH0pID0+IHtcbiAgICBzZXRJc0xvYWRpbmcodHJ1ZSlcbiAgICBzZXRFcnJvcihudWxsKVxuICAgIHNldFN1Y2Nlc3MobnVsbClcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGRvd25sb2FkS25vd2xlZGdlKHsgYWdlbnRJZCwga25vd2xlZGdlSWQgfSlcbiAgICAgIHNldFN1Y2Nlc3MocmVzcG9uc2UpXG4gICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiB0KCdlcnJvckFnZW50Q3JlYXRlZCcpXG4gICAgICBzZXRFcnJvcihlcnJvck1lc3NhZ2UpXG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWdlbnRDcmVhdGVkJykpXG4gICAgICBjb25zb2xlLmVycm9yKHQoJ2Vycm9yQWdlbnRDcmVhdGVkJyksIGVycilcbiAgICAgIHJldHVybiBudWxsXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVSZXNldFN0YXRlcyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgc2V0RXJyb3IobnVsbClcbiAgICBzZXRTdWNjZXNzKG51bGwpXG4gIH0sIFtdKVxuXG4gIHJldHVybiB7XG4gICAgaXNMb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIHN1Y2Nlc3MsXG4gICAgaGFuZGxlRG93bmxvYWRLbm93bGVkZ2UsXG4gICAgaGFuZGxlUmVzZXRTdGF0ZXMsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDQSxTQUFTQSxXQUFXLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQzdDLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLGlCQUFpQixRQUFRLHdDQUF3QztBQUMxRSxTQUFTQyxrQkFBa0IsUUFBUSwwQ0FBMEM7QUFFN0UsT0FBTyxJQUFNQyxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFBLEVBQVM7RUFDeEMsSUFBQUMsZUFBQSxHQUFjSixjQUFjLENBQUMsbUJBQW1CLENBQUM7SUFBekNLLENBQUMsR0FBQUQsZUFBQSxDQUFEQyxDQUFDO0VBQ1QsSUFBQUMsU0FBQSxHQUFrQ1AsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBUSxVQUFBLEdBQUFDLGNBQUEsQ0FBQUYsU0FBQTtJQUExQ0csU0FBUyxHQUFBRixVQUFB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
81
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZVRyYW5zbGF0aW9uIiwiZG93bmxvYWRLbm93bGVkZ2UiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJ1c2VEb3dubG9hZEtub3dsZWRnZSIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImVycm9yIiwic2V0RXJyb3IiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInN1Y2Nlc3MiLCJzZXRTdWNjZXNzIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJoYW5kbGVEb3dubG9hZEtub3dsZWRnZSIsIl9yZWYyIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfcmVmIiwiYWdlbnRJZCIsImtub3dsZWRnZUlkIiwicmVzcG9uc2UiLCJlcnJvck1lc3NhZ2UiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwic2VudCIsImFicnVwdCIsIkVycm9yIiwibWVzc2FnZSIsImNvbnNvbGUiLCJmaW5pc2giLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhbmRsZVJlc2V0U3RhdGVzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUtub3dsZWRnZS9kb3dubG9hZEtub3dsZWRnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb25zaXN0ZW50LXJldHVybiAqL1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IGRvd25sb2FkS25vd2xlZGdlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYS9Lbm93bGVkZ2UvZG93bmxvYWQnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuXG5leHBvcnQgY29uc3QgdXNlRG93bmxvYWRLbm93bGVkZ2UgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ2FibV9hZ2VudF9zZWN0aW9uJylcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzdWNjZXNzLCBzZXRTdWNjZXNzXSA9IHVzZVN0YXRlPHtcbiAgICBibG9iOiBCbG9iXG4gICAgZmlsZW5hbWU6IHN0cmluZ1xuICAgIGNvbnRlbnRUeXBlOiBzdHJpbmdcbiAgICBzaXplOiBudW1iZXJcbiAgfSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcblxuICBjb25zdCBoYW5kbGVEb3dubG9hZEtub3dsZWRnZSA9IGFzeW5jICh7IGFnZW50SWQsIGtub3dsZWRnZUlkIH06IHsgYWdlbnRJZDogc3RyaW5nOyBrbm93bGVkZ2VJZDogc3RyaW5nIH0pID0+IHtcbiAgICBzZXRJc0xvYWRpbmcodHJ1ZSlcbiAgICBzZXRFcnJvcihudWxsKVxuICAgIHNldFN1Y2Nlc3MobnVsbClcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGRvd25sb2FkS25vd2xlZGdlKHsgYWdlbnRJZCwga25vd2xlZGdlSWQgfSlcbiAgICAgIHNldFN1Y2Nlc3MocmVzcG9uc2UpXG4gICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiB0KCdlcnJvckFnZW50Q3JlYXRlZCcpXG4gICAgICBzZXRFcnJvcihlcnJvck1lc3NhZ2UpXG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWdlbnRDcmVhdGVkJykpXG4gICAgICBjb25zb2xlLmVycm9yKHQoJ2Vycm9yQWdlbnRDcmVhdGVkJyksIGVycilcbiAgICAgIHJldHVybiBudWxsXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVSZXNldFN0YXRlcyA9ICgpID0+IHtcbiAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgc2V0RXJyb3IobnVsbClcbiAgICBzZXRTdWNjZXNzKG51bGwpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGlzTG9hZGluZyxcbiAgICBlcnJvcixcbiAgICBzdWNjZXNzLFxuICAgIGhhbmRsZURvd25sb2FkS25vd2xlZGdlLFxuICAgIGhhbmRsZVJlc2V0U3RhdGVzLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBO0FBQ0EsU0FBU0EsUUFBUSxRQUFRLE9BQU87QUFDaEMsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsaUJBQWlCLFFBQVEsd0NBQXdDO0FBQzFFLFNBQVNDLGtCQUFrQixRQUFRLDBDQUEwQztBQUU3RSxPQUFPLElBQU1DLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUEsRUFBUztFQUN4QyxJQUFBQyxlQUFBLEdBQWNKLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQztJQUF6Q0ssQ0FBQyxHQUFBRCxlQUFBLENBQURDLENBQUM7RUFDVCxJQUFBQyxTQUFBLEdBQWtDUCxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUFRLFVBQUEsR0FBQUMsY0FBQSxDQUFBRixTQUFBO0lBQTFDRyxTQUFTLEdBQUFGLFVBQUE7SUFBRUcsWUFBWSxHQUFBSCxVQUFBO0VBQzlCLElBQUFJLFVBQUEsR0FBMEJaLFFBQVEsQ0FB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