@projectcor/maia-components 2.48.1-1 → 2.49.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 (422) hide show
  1. package/README.md +2 -0
  2. package/lib/App.js +19 -44
  3. package/lib/components/atoms/ApprovalBox/ApprovalBox.helpers.js +37 -0
  4. package/lib/components/atoms/ApprovalBox/ApprovalBox.js +3 -37
  5. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +53 -1
  6. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.js +28 -52
  7. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.js +37 -1
  8. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +33 -66
  9. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.js +227 -1
  10. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +53 -177
  11. package/lib/components/atoms/ClientSelector/ClientSelector.helpers.js +26 -0
  12. package/lib/components/atoms/ClientSelector/ClientSelector.js +12 -21
  13. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.js +29 -1
  14. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +12 -28
  15. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +1 -3
  16. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -19
  17. package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.js +74 -0
  18. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.js +173 -1
  19. package/lib/components/atoms/MAIAInput/MAIAInput.js +126 -171
  20. package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.js +47 -1
  21. package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +40 -61
  22. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +2 -7
  23. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +24 -41
  24. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +10 -25
  25. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +43 -78
  26. package/lib/components/atoms/ReasoningBlock/groupParallelSteps.js +11 -9
  27. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +15 -37
  28. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.helpers.js +101 -0
  29. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.js +21 -77
  30. package/lib/components/atoms/TextArea/TextArea.helpers.js +23 -0
  31. package/lib/components/atoms/TextArea/TextArea.js +11 -20
  32. package/lib/components/index.js +1 -2
  33. package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.js +30 -1
  34. package/lib/components/molecules/AbmSection/AbmGeneralSection.js +13 -18
  35. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +48 -1
  36. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +17 -26
  37. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -7
  38. package/lib/components/molecules/ChatAIHome/ChatAIHome.helpers.js +370 -0
  39. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +266 -321
  40. package/lib/components/molecules/ChatAIHome/styles.js +78 -85
  41. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.js +345 -1
  42. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +201 -200
  43. package/lib/components/molecules/ChatAIMessages/newStyles.js +35 -32
  44. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +373 -5
  45. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +199 -271
  46. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
  47. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +153 -15
  48. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -2
  49. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.js +20 -1
  50. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +87 -74
  51. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.helpers.js +39 -0
  52. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +30 -33
  53. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.helpers.js +41 -0
  54. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +9 -35
  55. package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -10
  56. package/lib/components/molecules/Sidebar/Sidebar.helpers.js +43 -0
  57. package/lib/components/molecules/Sidebar/Sidebar.js +46 -61
  58. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.js +314 -1
  59. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +261 -480
  60. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.helpers.js +37 -0
  61. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +13 -25
  62. package/lib/constants/permissions/index.js +2 -2
  63. package/lib/constants/permissions/utils.js +1 -4
  64. package/lib/dev/DevReasoningTimeline.js +37 -68
  65. package/lib/dev/Providers.js +3 -5
  66. package/lib/hooks/useAgentModel/useCreateAgent.helpers.js +144 -0
  67. package/lib/hooks/useAgentModel/useCreateAgent.js +38 -102
  68. package/lib/hooks/useChatManager/useChatManager.helpers.js +550 -1
  69. package/lib/hooks/useChatManager/useChatManager.js +245 -429
  70. package/lib/hooks/useChatMessages/useChatMessages.helpers.js +257 -1
  71. package/lib/hooks/useChatMessages/useChatMessages.js +50 -206
  72. package/lib/hooks/useContextMentions.helpers.js +61 -1
  73. package/lib/hooks/useContextMentions.js +5 -62
  74. package/lib/hooks/useEntitySearch.helpers.js +49 -1
  75. package/lib/hooks/useEntitySearch.js +22 -53
  76. package/lib/hooks/useFrequentlyUsedActions.js +22 -60
  77. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.helpers.js +86 -0
  78. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +8 -82
  79. package/lib/index.js +2 -5
  80. package/lib/lang/br/index.js +1 -26
  81. package/lib/lang/en/index.js +1 -26
  82. package/lib/lang/es/index.js +1 -26
  83. package/lib/lang/fr/index.js +1 -26
  84. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
  85. package/lib/services/maia/Agents/getAgents.helpers.js +61 -1
  86. package/lib/services/maia/Agents/getAgents.js +31 -59
  87. package/lib/services/utils/mapChatMessages.helpers.js +223 -0
  88. package/lib/services/utils/mapChatMessages.js +25 -249
  89. package/lib/store/sessions/sessionStreamManager.helpers.js +134 -0
  90. package/lib/store/sessions/sessionStreamManager.js +213 -273
  91. package/lib/styles/cascade.js +3 -29
  92. package/lib/styles/transitions.js +1 -3
  93. package/lib/types/global.d.js +1 -1
  94. package/lib/utils/hoursPlannerQuickActionType.js +1 -74
  95. package/lib/utils/renderContextMentions.helpers.js +110 -0
  96. package/lib/utils/renderContextMentions.js +4 -110
  97. package/lib/utils/streamActivityMessages.helpers.js +222 -0
  98. package/lib/utils/streamActivityMessages.js +21 -251
  99. package/package.json +1 -1
  100. package/lib/components/atoms/ActionableButton.spec.js +0 -111
  101. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.spec.js +0 -52
  102. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.spec.js +0 -11
  103. package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +0 -135
  104. package/lib/components/atoms/AttachmentCard/AttachmentCard.spec.js +0 -123
  105. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.spec.js +0 -66
  106. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.spec.js +0 -211
  107. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.spec.js +0 -78
  108. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.spec.js +0 -41
  109. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.spec.js +0 -253
  110. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.spec.js +0 -80
  111. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.spec.js +0 -33
  112. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.spec.js +0 -25
  113. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.spec.js +0 -11
  114. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.spec.js +0 -77
  115. package/lib/components/atoms/Backdrop/Backdrop.spec.js +0 -28
  116. package/lib/components/atoms/CardMenu/CardMenu.spec.js +0 -56
  117. package/lib/components/atoms/ChatClientSelector/ChatClientSelector.spec.js +0 -67
  118. package/lib/components/atoms/Checkbox/Checkbox.spec.js +0 -27
  119. package/lib/components/atoms/Chip/Chip.spec.js +0 -82
  120. package/lib/components/atoms/ChipLlm/ChipLlm.spec.js +0 -26
  121. package/lib/components/atoms/ClientSelector/ClientSelector.spec.js +0 -88
  122. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +0 -29
  123. package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.spec.js +0 -46
  124. package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.spec.js +0 -77
  125. package/lib/components/atoms/ContextMentionChip/buildChipElement.spec.js +0 -81
  126. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.spec.js +0 -48
  127. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.spec.js +0 -231
  128. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.spec.js +0 -107
  129. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.spec.js +0 -136
  130. package/lib/components/atoms/CopyToClipboard.spec.js +0 -74
  131. package/lib/components/atoms/EditableLabel/EditableLabel.spec.js +0 -76
  132. package/lib/components/atoms/EntitySelector/EntitySelector.spec.js +0 -86
  133. package/lib/components/atoms/Expand/Expand.spec.js +0 -57
  134. package/lib/components/atoms/Fade/Fade.spec.js +0 -31
  135. package/lib/components/atoms/FeedbackButton/FeedbackButton.spec.js +0 -75
  136. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.spec.js +0 -104
  137. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.spec.js +0 -91
  138. package/lib/components/atoms/HelpButton.spec.js +0 -87
  139. package/lib/components/atoms/ImagePreview/ImagePreview.spec.js +0 -96
  140. package/lib/components/atoms/ListMenuOption/ListMenuOption.spec.js +0 -54
  141. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.spec.js +0 -21
  142. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.spec.js +0 -20
  143. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.spec.js +0 -26
  144. package/lib/components/atoms/LoadingText/LoadingText.spec.js +0 -25
  145. package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +0 -42
  146. package/lib/components/atoms/MAIAError/MAIAError.spec.js +0 -27
  147. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.spec.js +0 -26
  148. package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +0 -444
  149. package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.spec.js +0 -20
  150. package/lib/components/atoms/MAIAInput/MAIAInputEditor.spec.js +0 -53
  151. package/lib/components/atoms/MAIAInput/maiaInputLayout.spec.js +0 -22
  152. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.spec.js +0 -64
  153. package/lib/components/atoms/MaiaWrapper/MaiaWrapper.spec.js +0 -43
  154. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.spec.js +0 -114
  155. package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.spec.js +0 -51
  156. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.spec.js +0 -48
  157. package/lib/components/atoms/ModalProject/ModalProject.spec.js +0 -66
  158. package/lib/components/atoms/NextPageLoader.spec.js +0 -37
  159. package/lib/components/atoms/OnboardingModalButton/OnboardingModal.spec.js +0 -20
  160. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.spec.js +0 -35
  161. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.spec.js +0 -47
  162. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.spec.js +0 -86
  163. package/lib/components/atoms/PrimaryButton.spec.js +0 -42
  164. package/lib/components/atoms/ProjectSelector/ProjectSelector.spec.js +0 -69
  165. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +0 -69
  166. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +0 -59
  167. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +0 -170
  168. package/lib/components/atoms/ReasoningBlock/groupParallelSteps.spec.js +0 -199
  169. package/lib/components/atoms/ReasoningBlock/reasoningLeading.spec.js +0 -70
  170. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +0 -120
  171. package/lib/components/atoms/ReasoningBlock/reasoningMotion.js +0 -8
  172. package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.spec.js +0 -31
  173. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +0 -52
  174. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +0 -90
  175. package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.js +0 -29
  176. package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.spec.js +0 -38
  177. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.spec.js +0 -16
  178. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +0 -107
  179. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.spec.js +0 -24
  180. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +0 -85
  181. package/lib/components/atoms/Switch/Switch.spec.js +0 -41
  182. package/lib/components/atoms/TextArea/CustomTextArea.spec.js +0 -52
  183. package/lib/components/atoms/TextArea/TextArea.spec.js +0 -68
  184. package/lib/components/atoms/ThirdButton.spec.js +0 -29
  185. package/lib/components/atoms/VideoModal/VideoModal.spec.js +0 -68
  186. package/lib/components/atoms/WithAppCfg.spec.js +0 -60
  187. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.spec.js +0 -53
  188. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +0 -495
  189. package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.spec.js +0 -57
  190. package/lib/components/molecules/AbmSection/AbmGeneralSection.spec.js +0 -227
  191. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.spec.js +0 -108
  192. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.spec.js +0 -254
  193. package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.spec.js +0 -50
  194. package/lib/components/molecules/AbmSection/AbmLoaderFiles.spec.js +0 -94
  195. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.js +0 -83
  196. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.styles.js +0 -30
  197. package/lib/components/molecules/AgentInputBlock/index.js +0 -5
  198. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.js +0 -52
  199. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.spec.js +0 -76
  200. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.js +0 -20
  201. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.spec.js +0 -34
  202. package/lib/components/molecules/AgentInputBlock/useAgentChangeModelAction.js +0 -36
  203. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.spec.js +0 -66
  204. package/lib/components/molecules/ChatAIContent/ChatAIContent.spec.js +0 -145
  205. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.spec.js +0 -204
  206. package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +0 -246
  207. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.spec.js +0 -86
  208. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +0 -104
  209. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.spec.js +0 -77
  210. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +0 -445
  211. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +0 -46
  212. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +0 -471
  213. package/lib/components/molecules/ChatAIModal/ChatAIModal.spec.js +0 -659
  214. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.spec.js +0 -33
  215. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.spec.js +0 -116
  216. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.spec.js +0 -134
  217. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.spec.js +0 -95
  218. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.spec.js +0 -241
  219. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.spec.js +0 -37
  220. package/lib/components/molecules/ChatAIModal/constants.spec.js +0 -16
  221. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.spec.js +0 -22
  222. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.spec.js +0 -67
  223. package/lib/components/molecules/ChatAIModal/layout.spec.js +0 -72
  224. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.spec.js +0 -172
  225. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +0 -128
  226. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.spec.js +0 -66
  227. package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +0 -369
  228. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.spec.js +0 -10
  229. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.spec.js +0 -82
  230. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.spec.js +0 -139
  231. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +0 -84
  232. package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +0 -116
  233. package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.spec.js +0 -126
  234. package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.spec.js +0 -115
  235. package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.spec.js +0 -79
  236. package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.spec.js +0 -37
  237. package/lib/components/molecules/Sidebar/Sidebar.spec.js +0 -453
  238. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.spec.js +0 -391
  239. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +0 -1204
  240. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.spec.js +0 -112
  241. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +0 -405
  242. package/lib/components/organisms/ChatAI/ChatAI.spec.js +0 -174
  243. package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -525
  244. package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +0 -246
  245. package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
  246. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +0 -253
  247. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +0 -139
  248. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +0 -13
  249. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +0 -275
  250. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +0 -275
  251. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +0 -195
  252. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.js +0 -94
  253. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.spec.js +0 -69
  254. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCards.skeleton.js +0 -38
  255. package/lib/components/organisms/ChatAIPage/getDaypart.js +0 -9
  256. package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +0 -19
  257. package/lib/components/organisms/ChatAIPage/index.js +0 -3
  258. package/lib/components/organisms/ClientAIButton/ClientAIButton.spec.js +0 -53
  259. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +0 -59
  260. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +0 -79
  261. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +0 -86
  262. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.spec.js +0 -49
  263. package/lib/components/organisms/ProjectAIButton/ProjectAIButton.spec.js +0 -67
  264. package/lib/components/organisms/ProjectSummary/ProjectSummary.spec.js +0 -117
  265. package/lib/components/organisms/SnackBar/Snackbar.spec.js +0 -66
  266. package/lib/components/organisms/SourcesInformation/SourceItem.spec.js +0 -19
  267. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.spec.js +0 -52
  268. package/lib/constants/maiaExternalConnectorsAccess.spec.js +0 -29
  269. package/lib/constants/maiaFeatureAccess.spec.js +0 -30
  270. package/lib/constants/maiaHourAgentAccess.spec.js +0 -30
  271. package/lib/constants/maiaTaskPanelAccess.spec.js +0 -30
  272. package/lib/constants/permissions/clientRoleAccess.spec.js +0 -31
  273. package/lib/constants/permissions/utils.spec.js +0 -128
  274. package/lib/dev/DevMaiaPage.js +0 -30
  275. package/lib/hooks/frequentlyUsedActionsCache.js +0 -17
  276. package/lib/hooks/frequentlyUsedActionsCache.spec.js +0 -25
  277. package/lib/hooks/useAccessClient/useAccessClient.spec.js +0 -149
  278. package/lib/hooks/useAgentModel/useAgentModel.spec.js +0 -83
  279. package/lib/hooks/useAgentModel/useCreateAgent.spec.js +0 -231
  280. package/lib/hooks/useAgentModel/useDeleteAgent.spec.js +0 -183
  281. package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +0 -313
  282. package/lib/hooks/useAgentSuggestions.spec.js +0 -89
  283. package/lib/hooks/useCaretPosition.spec.js +0 -58
  284. package/lib/hooks/useChatManager/useChatManager.helpers.spec.js +0 -506
  285. package/lib/hooks/useChatManager/useChatManager.spec.js +0 -1261
  286. package/lib/hooks/useChatMessages/useChatMessages.helpers.spec.js +0 -176
  287. package/lib/hooks/useChatMessages/useChatMessages.spec.js +0 -379
  288. package/lib/hooks/useChats/useChats.spec.js +0 -208
  289. package/lib/hooks/useClientSearch.helpers.spec.js +0 -52
  290. package/lib/hooks/useClientSearch.spec.js +0 -86
  291. package/lib/hooks/useContextMentions.helpers.spec.js +0 -143
  292. package/lib/hooks/useContextMentions.spec.js +0 -239
  293. package/lib/hooks/useContextPinPopover.helpers.spec.js +0 -115
  294. package/lib/hooks/useContextPinPopover.spec.js +0 -159
  295. package/lib/hooks/useContinueLegacyContextInNewChat/index.js +0 -2
  296. package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.js +0 -93
  297. package/lib/hooks/useDebounce.spec.js +0 -42
  298. package/lib/hooks/useEntitySearch.helpers.spec.js +0 -321
  299. package/lib/hooks/useEntitySearch.spec.js +0 -443
  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 -135
  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 -71
  313. package/lib/hooks/useMentionPopover.spec.js +0 -215
  314. package/lib/hooks/useMinimizedPillBottomOffset.helpers.spec.js +0 -132
  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.spec.js +0 -192
  319. package/lib/hooks/useProjectSearch.helpers.spec.js +0 -70
  320. package/lib/hooks/useProjectSearch.spec.js +0 -91
  321. package/lib/hooks/useProjectSummary.spec.js +0 -193
  322. package/lib/hooks/useProjectSummaryConfig.helpers.spec.js +0 -92
  323. package/lib/hooks/useProjectSummaryConfig.spec.js +0 -133
  324. package/lib/hooks/useReasoningTrace/reasoningStore.spec.js +0 -112
  325. package/lib/hooks/useRecentClientsSearch.helpers.spec.js +0 -33
  326. package/lib/hooks/useRecentClientsSearch.spec.js +0 -85
  327. package/lib/hooks/useRecentContexts.spec.js +0 -139
  328. package/lib/hooks/useResize.spec.js +0 -37
  329. package/lib/hooks/useSkillsCatalog.spec.js +0 -88
  330. package/lib/hooks/useSlashCommands.spec.js +0 -139
  331. package/lib/hooks/useSmoothStreamText/useSmoothStreamText.spec.js +0 -101
  332. package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +0 -33
  333. package/lib/hooks/useStreamResponse.spec.js +0 -199
  334. package/lib/hooks/useT.spec.js +0 -20
  335. package/lib/hooks/useToggle.spec.js +0 -33
  336. package/lib/hooks/useToggleFavorite/useToggleFavorite.spec.js +0 -171
  337. package/lib/services/maia/Access/updateAccess.spec.js +0 -137
  338. package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +0 -56
  339. package/lib/services/maia/Actions/getSlashCommands.spec.js +0 -91
  340. package/lib/services/maia/Agents/connectors.spec.js +0 -359
  341. package/lib/services/maia/Agents/createAgent.spec.js +0 -55
  342. package/lib/services/maia/Agents/deleteAgent.spec.js +0 -57
  343. package/lib/services/maia/Agents/fetchAgentDetail.spec.js +0 -108
  344. package/lib/services/maia/Agents/getAgentById.spec.js +0 -190
  345. package/lib/services/maia/Agents/getAgentModels.spec.js +0 -190
  346. package/lib/services/maia/Agents/getAgentSuggestions.spec.js +0 -89
  347. package/lib/services/maia/Agents/getAgents.helpers.spec.js +0 -211
  348. package/lib/services/maia/Agents/getAgents.spec.js +0 -697
  349. package/lib/services/maia/Agents/setAgentToolGroups.spec.js +0 -45
  350. package/lib/services/maia/Agents/toggleFavorite.spec.js +0 -59
  351. package/lib/services/maia/Agents/updateAgent.spec.js +0 -48
  352. package/lib/services/maia/Chats/deleteChat.spec.js +0 -31
  353. package/lib/services/maia/Chats/getChatMessages.spec.js +0 -150
  354. package/lib/services/maia/Chats/getChatsByUserId.spec.js +0 -149
  355. package/lib/services/maia/Chats/markSessionAsRead.spec.js +0 -30
  356. package/lib/services/maia/Chats/patchChat.spec.js +0 -41
  357. package/lib/services/maia/Chats/wasHelpfulChat.spec.js +0 -28
  358. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +0 -58
  359. package/lib/services/maia/Knowledge/delete.spec.js +0 -45
  360. package/lib/services/maia/Knowledge/download.spec.js +0 -78
  361. package/lib/services/maia/Knowledge/save.spec.js +0 -58
  362. package/lib/services/maia/Orchestrator/orchestrator.helpers.spec.js +0 -153
  363. package/lib/services/maia/Orchestrator/orchestrator.spec.js +0 -181
  364. package/lib/services/maia/RecentClients/getRecentClients.spec.js +0 -52
  365. package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +0 -103
  366. package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +0 -82
  367. package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +0 -63
  368. package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +0 -82
  369. package/lib/services/maia/Skills/createSkill.spec.js +0 -68
  370. package/lib/services/maia/Skills/deleteSkill.spec.js +0 -42
  371. package/lib/services/maia/Skills/generateSkill.spec.js +0 -48
  372. package/lib/services/maia/Skills/getSkills.spec.js +0 -152
  373. package/lib/services/maia/Skills/updateSkill.spec.js +0 -62
  374. package/lib/services/maia/client.spec.js +0 -56
  375. package/lib/services/utils/fetchCOR.spec.js +0 -211
  376. package/lib/services/utils/getCookie.spec.js +0 -20
  377. package/lib/services/utils/mapChatMessages.spec.js +0 -254
  378. package/lib/store/chatsSidebarOptimistic.spec.js +0 -112
  379. package/lib/store/maiaLastChatPersistence.spec.js +0 -22
  380. package/lib/store/maiaPanelSessionPersistence.spec.js +0 -62
  381. package/lib/store/sessions/sessionNotificationSound.spec.js +0 -145
  382. package/lib/store/sessions/sessionNotifications.helpers.spec.js +0 -63
  383. package/lib/store/sessions/sessionNotifications.spec.js +0 -106
  384. package/lib/store/sessions/sessionStreamManager.spec.js +0 -503
  385. package/lib/store/sessions/sessions.types.spec.js +0 -16
  386. package/lib/store/sessions/useSessionsStore.spec.js +0 -135
  387. package/lib/store/useChatsStore.spec.js +0 -619
  388. package/lib/store/useFaqsStore.spec.js +0 -57
  389. package/lib/utils/actionCategoryMap.spec.js +0 -18
  390. package/lib/utils/agentDisplayName.spec.js +0 -44
  391. package/lib/utils/autoApproveStorage.spec.js +0 -25
  392. package/lib/utils/chatInputFiles.spec.js +0 -39
  393. package/lib/utils/contextMentionIcons.spec.js +0 -41
  394. package/lib/utils/contextMentionLabel.spec.js +0 -13
  395. package/lib/utils/contextMentionTriggers.spec.js +0 -38
  396. package/lib/utils/contextMentionTypeLabel.spec.js +0 -14
  397. package/lib/utils/corConnectorMentionTypes.spec.js +0 -23
  398. package/lib/utils/entityLinkRender.spec.js +0 -72
  399. package/lib/utils/fileDownloadHelper.spec.js +0 -67
  400. package/lib/utils/formatQuickActionMessage.spec.js +0 -27
  401. package/lib/utils/formatUnreadCount.spec.js +0 -12
  402. package/lib/utils/getUnitFileSize.spec.js +0 -18
  403. package/lib/utils/hitlAnalytics.spec.js +0 -100
  404. package/lib/utils/hoursPlannerQuickActionType.spec.js +0 -64
  405. package/lib/utils/imagePreprocessor.helpers.spec.js +0 -28
  406. package/lib/utils/imagePreprocessor.spec.js +0 -112
  407. package/lib/utils/maiaPageRoute.js +0 -24
  408. package/lib/utils/maiaPageRoute.spec.js +0 -23
  409. package/lib/utils/mapBackendLang.spec.js +0 -19
  410. package/lib/utils/navigateContextEntity.spec.js +0 -50
  411. package/lib/utils/normalizeAgentConnectors.spec.js +0 -98
  412. package/lib/utils/orchestratorSubagents.spec.js +0 -32
  413. package/lib/utils/reasoningMappers.spec.js +0 -103
  414. package/lib/utils/recentContextsHomeLimit.spec.js +0 -32
  415. package/lib/utils/renderContextMentions.spec.js +0 -158
  416. package/lib/utils/retryCompletion.spec.js +0 -99
  417. package/lib/utils/skillContentSize.spec.js +0 -13
  418. package/lib/utils/slashCommandMarker.spec.js +0 -43
  419. package/lib/utils/sortManagerHoursHomeFuas.spec.js +0 -51
  420. package/lib/utils/sseStreamContent.spec.js +0 -31
  421. package/lib/utils/streamActivityMessages.spec.js +0 -253
  422. package/lib/utils/validateTrimmedFields.spec.js +0 -26
@@ -1,6 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
5
4
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
6
5
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -23,21 +22,8 @@ import { SkillCreatedByIcon } from '../../atoms/icons/SkillCreatedByIcon';
23
22
  import { SkillVisibilityEveryoneIcon } from '../../atoms/icons/SkillVisibilityEveryoneIcon';
24
23
  import { SkillVisibilityOnlyMeIcon } from '../../atoms/icons/SkillVisibilityOnlyMeIcon';
25
24
  import { SCMSBody, SCMSCardButton, SCMSCardContentText, SCMSCardMenu, SCMSCardMenuItem, SCMSCardTitleName, SCMSCardTopRow, SCMSCardVisibilityRow, SCMSCardVisibilityText, SCMSCardsList, SCMSContainer, SCMSCreateButton, SCMSCreateButtonText, SCMSSharedEmptyStateRoot, SCMSSharedEmptyStateSubtitle, SCMSSharedEmptyStateTitle, SCMSSharedEmptyStateTitleBlock, SCMSKebabButton, SCMSLoadWrapper, SCMSMetaDescription, SCMSMetaRow, SCMSPanel, SCMSPanelHeader, SCMSListScrollArea, SCMSSearchInput, SCMSSearchWrapper, SCMSTabBar, SCMSTabButton, SCMSTabInfoIcon, SCMSTitle, SCMSTitleBlock } from './ChatAIMySkills.styles';
25
+ import { buildSkillDeleteModalChat, filterAndSortSkills, formatSkillDisplayName, resolveDropdownPlacement, resolveSkillCreateAnalyticsSource, resolveSkillsCardMenuHeightPx, shouldShowSkillsToolbar } from './ChatAIMySkills.helpers';
26
26
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
27
- var DROPDOWN_GAP_PX = 6;
28
- var CARD_MENU_ITEM_HEIGHT_PX = 40;
29
- var resolveDropdownPlacement = function resolveDropdownPlacement(anchor, dropdownHeight) {
30
- var rect = anchor.getBoundingClientRect();
31
- var spaceBelow = window.innerHeight - rect.bottom - DROPDOWN_GAP_PX;
32
- var spaceAbove = rect.top - DROPDOWN_GAP_PX;
33
- if (spaceBelow >= dropdownHeight) return 'bottom';
34
- if (spaceAbove >= dropdownHeight) return 'top';
35
- return spaceBelow >= spaceAbove ? 'bottom' : 'top';
36
- };
37
- var formatSkillDisplayName = function formatSkillDisplayName(name) {
38
- var normalized = name.replace(/^(@\/|#)/, '');
39
- return "#".concat(normalized);
40
- };
41
27
  var openSkillModal = function openSkillModal(values) {
42
28
  var analyticsSource = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'catalog';
43
29
  document.dispatchEvent(new CustomEvent('abm-skill-modal-set-values', {
@@ -121,30 +107,21 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
121
107
  var isMineTab = activeTab === 'mine';
122
108
  var tabSkills = isMineTab ? mySkills : sharedSkills;
123
109
  var filteredSkills = useMemo(function () {
124
- var normalizedQuery = searchQuery.toLowerCase();
125
- var matched = normalizedQuery ? tabSkills.filter(function (skill) {
126
- return skill.name.toLowerCase().includes(normalizedQuery);
127
- }) : tabSkills;
128
- return _toConsumableArray(matched).sort(function (a, b) {
129
- return a.name.localeCompare(b.name);
130
- });
110
+ return filterAndSortSkills(tabSkills, searchQuery);
131
111
  }, [searchQuery, tabSkills]);
132
112
  var handleCreateSkill = useCallback(function () {
133
- var fromEmpty = activeTab === 'mine' && !loading && mySkills.length === 0 && !searchQuery;
134
113
  openSkillModal({
135
114
  isEditing: false,
136
115
  intent: 'write'
137
- }, fromEmpty ? 'empty' : 'catalog');
116
+ }, resolveSkillCreateAnalyticsSource(activeTab, loading, mySkills.length, searchQuery));
138
117
  }, [activeTab, loading, mySkills.length, searchQuery]);
139
-
140
- // "Mis skills" tiene Usar + Editar + Eliminar; "Compartidas" solo Usar.
141
- var cardMenuHeightPx = isMineTab ? CARD_MENU_ITEM_HEIGHT_PX * 3 : CARD_MENU_ITEM_HEIGHT_PX;
118
+ var cardMenuHeightPx = resolveSkillsCardMenuHeightPx(isMineTab);
142
119
  var handleToggleCardMenu = useCallback(function (event, skillId) {
143
120
  event.preventDefault();
144
121
  event.stopPropagation();
145
122
  var cardAnchor = event.currentTarget.closest('[data-skill-card-id]');
146
123
  if (cardAnchor instanceof HTMLElement) {
147
- setCardMenuPlacement(resolveDropdownPlacement(cardAnchor, cardMenuHeightPx));
124
+ setCardMenuPlacement(resolveDropdownPlacement(cardAnchor.getBoundingClientRect(), cardMenuHeightPx));
148
125
  }
149
126
  setMenuOpenForSkillId(function (prev) {
150
127
  return prev === skillId ? null : skillId;
@@ -186,10 +163,7 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
186
163
  setMenuOpenForSkillId(null);
187
164
  }, [isMineTab]);
188
165
  var deleteModalChat = useMemo(function () {
189
- return skillToDelete ? {
190
- title: skillToDelete.name,
191
- id: skillToDelete.id
192
- } : null;
166
+ return buildSkillDeleteModalChat(skillToDelete);
193
167
  }, [skillToDelete]);
194
168
  var handleConfirmDelete = /*#__PURE__*/function () {
195
169
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(chat) {
@@ -242,7 +216,7 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
242
216
  var _listScrollRef$curren;
243
217
  var openCard = (_listScrollRef$curren = listScrollRef.current) === null || _listScrollRef$curren === void 0 ? void 0 : _listScrollRef$curren.querySelector("[data-skill-card-id=\"".concat(menuOpenForSkillId, "\"]"));
244
218
  if (openCard) {
245
- setCardMenuPlacement(resolveDropdownPlacement(openCard, cardMenuHeightPx));
219
+ setCardMenuPlacement(resolveDropdownPlacement(openCard.getBoundingClientRect(), cardMenuHeightPx));
246
220
  }
247
221
  };
248
222
  var scrollContainer = listScrollRef.current;
@@ -257,7 +231,7 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
257
231
  }, [menuOpenForSkillId, cardMenuHeightPx]);
258
232
  var tabDescription = isMineTab ? t('mySkills.mySkillsDescription') : t('mySkills.sharedSkillsDescription');
259
233
  var isMineEmpty = isMineTab && !loading && mySkills.length === 0 && !searchQuery;
260
- var showSkillsToolbar = isMineTab ? !isMineEmpty : tabSkills.length > 0 || !!searchQuery;
234
+ var showSkillsToolbar = shouldShowSkillsToolbar(isMineTab, isMineEmpty, tabSkills.length, searchQuery);
261
235
  var renderCreateSkillButton = function renderCreateSkillButton() {
262
236
  return /*#__PURE__*/_jsx(SCMSCreateButton, {
263
237
  type: "button",
@@ -445,4 +419,4 @@ export var ChatAIMySkills = function ChatAIMySkills(_ref2) {
445
419
  }) : null]
446
420
  });
447
421
  };
448
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwiTWVudURvdHMiLCJTZWFyY2giLCJJbmZvcm1hdGlvbkNpcmNsZSIsIlRvb2x0aXAiLCJ1c2VUcmFuc2xhdGlvbiIsImRlbGV0ZVNraWxsIiwidXNlU25hY2tCYXJNYW5hZ2VyIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsIlNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5UIiwiU0VDVElPTlMiLCJMb2FkZXIiLCJTa2lsbENyZWF0ZWRCeUljb24iLCJTa2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24iLCJTa2lsbFZpc2liaWxpdHlPbmx5TWVJY29uIiwiU0NNU0JvZHkiLCJTQ01TQ2FyZEJ1dHRvbiIsIlNDTVNDYXJkQ29udGVudFRleHQiLCJTQ01TQ2FyZE1lbnUiLCJTQ01TQ2FyZE1lbnVJdGVtIiwiU0NNU0NhcmRUaXRsZU5hbWUiLCJTQ01TQ2FyZFRvcFJvdyIsIlNDTVNDYXJkVmlzaWJpbGl0eVJvdyIsIlNDTVNDYXJkVmlzaWJpbGl0eVRleHQiLCJTQ01TQ2FyZHNMaXN0IiwiU0NNU0NvbnRhaW5lciIsIlNDTVNDcmVhdGVCdXR0b24iLCJTQ01TQ3JlYXRlQnV0dG9uVGV4dCIsIlNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdCIsIlNDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGUiLCJTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlIiwiU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrIiwiU0NNU0tlYmFiQnV0dG9uIiwiU0NNU0xvYWRXcmFwcGVyIiwiU0NNU01ldGFEZXNjcmlwdGlvbiIsIlNDTVNNZXRhUm93IiwiU0NNU1BhbmVsIiwiU0NNU1BhbmVsSGVhZGVyIiwiU0NNU0xpc3RTY3JvbGxBcmVhIiwiU0NNU1NlYXJjaElucHV0IiwiU0NNU1NlYXJjaFdyYXBwZXIiLCJTQ01TVGFiQmFyIiwiU0NNU1RhYkJ1dHRvbiIsIlNDTVNUYWJJbmZvSWNvbiIsIlNDTVNUaXRsZSIsIlNDTVNUaXRsZUJsb2NrIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiRFJPUERPV05fR0FQX1BYIiwiQ0FSRF9NRU5VX0lURU1fSEVJR0hUX1BYIiwicmVzb2x2ZURyb3Bkb3duUGxhY2VtZW50IiwiYW5jaG9yIiwiZHJvcGRvd25IZWlnaHQiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwic3BhY2VCZWxvdyIsIndpbmRvdyIsImlubmVySGVpZ2h0IiwiYm90dG9tIiwic3BhY2VBYm92ZSIsInRvcCIsImZvcm1hdFNraWxsRGlzcGxheU5hbWUiLCJuYW1lIiwibm9ybWFsaXplZCIsInJlcGxhY2UiLCJjb25jYXQiLCJvcGVuU2tpbGxNb2RhbCIsInZhbHVlcyIsImFuYWx5dGljc1NvdXJjZSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwic2tpbGxWYWx1ZXMiLCJpc09wZW4iLCJTa2lsbFNlYXJjaElucHV0IiwibWVtbyIsIl9yZWYiLCJvblNlYXJjaCIsInBsYWNlaG9sZGVyIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidmFsdWUiLCJzZXRWYWx1ZSIsImRlYm91bmNlUmVmIiwiaGFuZGxlQ2hhbmdlIiwiZXZlbnQiLCJuZXh0VmFsdWUiLCJ0YXJnZXQiLCJjdXJyZW50IiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsInRyaW0iLCJjaGlsZHJlbiIsIndpZHRoIiwiaGVpZ2h0IiwiY29sb3IiLCJ0eXBlIiwib25DaGFuZ2UiLCJDaGF0QUlNeVNraWxscyIsIl9yZWYyIiwibXlTa2lsbHMiLCJzaGFyZWRTa2lsbHMiLCJfcmVmMiRsb2FkaW5nIiwibG9hZGluZyIsIm9uRGVsZXRlU2tpbGwiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsInRvb2x0aXBaSW5kZXgiLCJsaXN0U2Nyb2xsUmVmIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJhY3RpdmVUYWIiLCJzZXRBY3RpdmVUYWIiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNlYXJjaFF1ZXJ5Iiwic2V0U2VhcmNoUXVlcnkiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsIm1lbnVPcGVuRm9yU2tpbGxJZCIsInNldE1lbnVPcGVuRm9yU2tpbGxJZCIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwiY2FyZE1lbnVQbGFjZW1lbnQiLCJzZXRDYXJkTWVudVBsYWNlbWVudCIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsInNraWxsVG9EZWxldGUiLCJzZXRTa2lsbFRvRGVsZXRlIiwiaXNNaW5lVGFiIiwidGFiU2tpbGxzIiwiZmlsdGVyZWRTa2lsbHMiLCJub3JtYWxpemVkUXVlcnkiLCJ0b0xvd2VyQ2FzZSIsIm1hdGNoZWQiLCJmaWx0ZXIiLCJza2lsbCIsImluY2x1ZGVzIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic29ydCIsImEiLCJiIiwibG9jYWxlQ29tcGFyZSIsImhhbmRsZUNyZWF0ZVNraWxsIiwiZnJvbUVtcHR5IiwiaXNFZGl0aW5nIiwiaW50ZW50IiwiY2FyZE1lbnVIZWlnaHRQeCIsImhhbmRsZVRvZ2dsZUNhcmRNZW51Iiwic2tpbGxJZCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiY2FyZEFuY2hvciIsImN1cnJlbnRUYXJnZXQiLCJjbG9zZXN0IiwiSFRNTEVsZW1lbnQiLCJwcmV2IiwiaGFuZGxlVXNlU2tpbGwiLCJhaUNoYXRTa2lsbFVzZSIsInNraWxsX2lkIiwiaWQiLCJhY2Nlc3NfdHlwZSIsInNvdXJjZSIsImlzX3NoYXJlZCIsInVzZUZpcnN0QWdlbnQiLCJoYW5kbGVPcGVuU2tpbGwiLCJpc1JlYWRPbmx5IiwiaXNTaGFyZWQiLCJnZW5lcmFsIiwiZGVzY3JpcHRpb24iLCJjb250ZW50IiwiY3JlYXRlZF9ieV9uYW1lIiwiY3JlYXRlZF9hdCIsInVwZGF0ZWRfYXQiLCJkZWxldGVNb2RhbENoYXQiLCJ0aXRsZSIsImhhbmRsZUNvbmZpcm1EZWxldGUiLCJfcmVmMyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiY2hhdCIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwibmV4dCIsImFpQ2hhdFNraWxsQWJtRGVsZXRlIiwic3RvcCIsIl94IiwiYXBwbHkiLCJoYW5kbGVDbGlja091dHNpZGUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVJlcG9zaXRpb24iLCJfbGlzdFNjcm9sbFJlZiRjdXJyZW4iLCJvcGVuQ2FyZCIsInF1ZXJ5U2VsZWN0b3IiLCJzY3JvbGxDb250YWluZXIiLCJwYXNzaXZlIiwidGFiRGVzY3JpcHRpb24iLCJpc01pbmVFbXB0eSIsInNob3dTa2lsbHNUb29sYmFyIiwicmVuZGVyQ3JlYXRlU2tpbGxCdXR0b24iLCJvbkNsaWNrIiwicmVuZGVyU2VhcmNoRW1wdHlTdGF0ZSIsInJlbmRlckVtcHR5U3RhdGUiLCIkYWN0aXZlIiwiX29iamVjdFNwcmVhZCIsInpJbmRleCIsInJlZiIsInNpemUiLCJtYXAiLCJpbmRleCIsIiRpbmRleCIsIiRlbGV2YXRlZCIsIiR2aXNpYmxlIiwiJHBsYWNlbWVudCIsIiRkZXN0cnVjdGl2ZSIsIm9uQ2xvc2UiLCJoYW5kbGVycyIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJhY3Rpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTXlTa2lsbHMvQ2hhdEFJTXlTa2lsbHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBNZW51RG90cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL01lbnVEb3RzJ1xuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvU2VhcmNoJ1xuaW1wb3J0IHsgSW5mb3JtYXRpb25DaXJjbGUgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9JbmZvcm1hdGlvbkNpcmNsZSdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IFNraWxsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc2tpbGwnXG5pbXBvcnQgeyBkZWxldGVTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2RlbGV0ZVNraWxsJ1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyBTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBTa2lsbENyZWF0ZWRCeUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9Ta2lsbENyZWF0ZWRCeUljb24nXG5pbXBvcnQgeyBTa2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9Ta2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24nXG5pbXBvcnQgeyBTa2lsbFZpc2liaWxpdHlPbmx5TWVJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvU2tpbGxWaXNpYmlsaXR5T25seU1lSWNvbidcbmltcG9ydCB7XG4gIFNDTVNCb2R5LFxuICBTQ01TQ2FyZEJ1dHRvbixcbiAgU0NNU0NhcmRDb250ZW50VGV4dCxcbiAgU0NNU0NhcmRNZW51LFxuICBTQ01TQ2FyZE1lbnVJdGVtLFxuICBTQ01TQ2FyZFRpdGxlTmFtZSxcbiAgU0NNU0NhcmRUb3BSb3csXG4gIFNDTVNDYXJkVmlzaWJpbGl0eVJvdyxcbiAgU0NNU0NhcmRWaXNpYmlsaXR5VGV4dCxcbiAgU0NNU0NhcmRzTGlzdCxcbiAgU0NNU0NvbnRhaW5lcixcbiAgU0NNU0NyZWF0ZUJ1dHRvbixcbiAgU0NNU0NyZWF0ZUJ1dHRvblRleHQsXG4gIFNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdCxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZSxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZSxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrLFxuICBTQ01TS2ViYWJCdXR0b24sXG4gIFNDTVNMb2FkV3JhcHBlcixcbiAgU0NNU01ldGFEZXNjcmlwdGlvbixcbiAgU0NNU01ldGFSb3csXG4gIFNDTVNQYW5lbCxcbiAgU0NNU1BhbmVsSGVhZGVyLFxuICBTQ01TTGlzdFNjcm9sbEFyZWEsXG4gIFNDTVNTZWFyY2hJbnB1dCxcbiAgU0NNU1NlYXJjaFdyYXBwZXIsXG4gIFNDTVNUYWJCYXIsXG4gIFNDTVNUYWJCdXR0b24sXG4gIFNDTVNUYWJJbmZvSWNvbixcbiAgU0NNU1RpdGxlLFxuICBTQ01TVGl0bGVCbG9jayxcbn0gZnJvbSAnLi9DaGF0QUlNeVNraWxscy5zdHlsZXMnXG5cbnR5cGUgQ2hhdEFJTXlTa2lsbHNQcm9wcyA9IHtcbiAgbXlTa2lsbHM6IFNraWxsW11cbiAgc2hhcmVkU2tpbGxzOiBTa2lsbFtdXG4gIGxvYWRpbmc/OiBib29sZWFuXG4gIG9uRGVsZXRlU2tpbGw/OiAoc2tpbGxJZDogc3RyaW5nKSA9PiB2b2lkXG59XG5cbnR5cGUgU2tpbGxzVGFiID0gJ21pbmUnIHwgJ3NoYXJlZCdcblxudHlwZSBTa2lsbE1vZGFsSW50ZW50ID0gJ2dlbmVyYXRlJyB8ICd3cml0ZSdcblxudHlwZSBEcm9wZG93blBsYWNlbWVudCA9ICd0b3AnIHwgJ2JvdHRvbSdcblxuY29uc3QgRFJPUERPV05fR0FQX1BYID0gNlxuY29uc3QgQ0FSRF9NRU5VX0lURU1fSEVJR0hUX1BYID0gNDBcblxuY29uc3QgcmVzb2x2ZURyb3Bkb3duUGxhY2VtZW50ID0gKGFuY2hvcjogSFRNTEVsZW1lbnQsIGRyb3Bkb3duSGVpZ2h0OiBudW1iZXIpOiBEcm9wZG93blBsYWNlbWVudCA9PiB7XG4gIGNvbnN0IHJlY3QgPSBhbmNob3IuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgY29uc3Qgc3BhY2VCZWxvdyA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHJlY3QuYm90dG9tIC0gRFJPUERPV05fR0FQX1BYXG4gIGNvbnN0IHNwYWNlQWJvdmUgPSByZWN0LnRvcCAtIERST1BET1dOX0dBUF9QWFxuXG4gIGlmIChzcGFjZUJlbG93ID49IGRyb3Bkb3duSGVpZ2h0KSByZXR1cm4gJ2JvdHRvbSdcbiAgaWYgKHNwYWNlQWJvdmUgPj0gZHJvcGRvd25IZWlnaHQpIHJldHVybiAndG9wJ1xuICByZXR1cm4gc3BhY2VCZWxvdyA+PSBzcGFjZUFib3ZlID8gJ2JvdHRvbScgOiAndG9wJ1xufVxuXG5jb25zdCBmb3JtYXRTa2lsbERpc3BsYXlOYW1lID0gKG5hbWU6IHN0cmluZykgPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gbmFtZS5yZXBsYWNlKC9eKEBcXC98IykvLCAnJylcbiAgcmV0dXJuIGAjJHtub3JtYWxpemVkfWBcbn1cblxuY29uc3Qgb3BlblNraWxsTW9kYWwgPSAoXG4gIHZhbHVlczoge1xuICAgIGlzRWRpdGluZzogYm9vbGVhblxuICAgIGlzUmVhZE9ubHk/OiBib29sZWFuXG4gICAgaXNTaGFyZWQ/OiBib29sZWFuXG4gICAgaW50ZW50PzogU2tpbGxNb2RhbEludGVudFxuICAgIGdlbmVyYWw/OiB7XG4gICAgICBpZD86IHN0cmluZ1xuICAgICAgbmFtZT86IHN0cmluZ1xuICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgICAgIGNvbnRlbnQ/OiBzdHJpbmdcbiAgICAgIGFjY2Vzc190eXBlPzogU2tpbGxbJ2FjY2Vzc190eXBlJ11cbiAgICAgIGNyZWF0ZWRfYnlfbmFtZT86IHN0cmluZ1xuICAgICAgY3JlYXRlZF9hdD86IHN0cmluZ1xuICAgICAgdXBkYXRlZF9hdD86IHN0cmluZ1xuICAgIH1cbiAgfSxcbiAgYW5hbHl0aWNzU291cmNlOiAnY2F0YWxvZycgfCAnZW1wdHknID0gJ2NhdGFsb2cnXG4pID0+IHtcbiAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1za2lsbC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgZGV0YWlsOiB7XG4gICAgICAgIHNraWxsVmFsdWVzOiB7XG4gICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYW5hbHl0aWNzU291cmNlLFxuICAgICAgfSxcbiAgICB9KVxuICApXG59XG5cbmNvbnN0IFNraWxsU2VhcmNoSW5wdXQgPSBSZWFjdC5tZW1vKFxuICAoeyBvblNlYXJjaCwgcGxhY2Vob2xkZXIgfTogeyBvblNlYXJjaDogKHF1ZXJ5OiBzdHJpbmcpID0+IHZvaWQ7IHBsYWNlaG9sZGVyOiBzdHJpbmcgfSkgPT4ge1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpXG4gICAgY29uc3QgZGVib3VuY2VSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsPihudWxsKVxuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgICBzZXRWYWx1ZShuZXh0VmFsdWUpXG4gICAgICAgIGlmIChkZWJvdW5jZVJlZi5jdXJyZW50KSBjbGVhclRpbWVvdXQoZGVib3VuY2VSZWYuY3VycmVudClcbiAgICAgICAgZGVib3VuY2VSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIG9uU2VhcmNoKG5leHRWYWx1ZS50cmltKCkpXG4gICAgICAgIH0sIDI1MClcbiAgICAgIH0sXG4gICAgICBbb25TZWFyY2hdXG4gICAgKVxuXG4gICAgdXNlRWZmZWN0KFxuICAgICAgKCkgPT4gKCkgPT4ge1xuICAgICAgICBpZiAoZGVib3VuY2VSZWYuY3VycmVudCkgY2xlYXJUaW1lb3V0KGRlYm91bmNlUmVmLmN1cnJlbnQpXG4gICAgICB9LFxuICAgICAgW11cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDTVNTZWFyY2hXcmFwcGVyPlxuICAgICAgICA8U2VhcmNoIHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gY29sb3I9XCIjOTk5XCIgLz5cbiAgICAgICAgPFNDTVNTZWFyY2hJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPXt2YWx1ZX0gb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0gcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfSAvPlxuICAgICAgPC9TQ01TU2VhcmNoV3JhcHBlcj5cbiAgICApXG4gIH1cbilcblxuZXhwb3J0IGNvbnN0IENoYXRBSU15U2tpbGxzID0gKHsgbXlTa2lsbHMsIHNoYXJlZFNraWxscywgbG9hZGluZyA9IGZhbHNlLCBvbkRlbGV0ZVNraWxsIH06IENoYXRBSU15U2tpbGxzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IGxpc3RTY3JvbGxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZTxTa2lsbHNUYWI+KCdtaW5lJylcbiAgY29uc3QgW3NlYXJjaFF1ZXJ5LCBzZXRTZWFyY2hRdWVyeV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgW21lbnVPcGVuRm9yU2tpbGxJZCwgc2V0TWVudU9wZW5Gb3JTa2lsbElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtjYXJkTWVudVBsYWNlbWVudCwgc2V0Q2FyZE1lbnVQbGFjZW1lbnRdID0gdXNlU3RhdGU8RHJvcGRvd25QbGFjZW1lbnQ+KCdib3R0b20nKVxuICBjb25zdCBbc2tpbGxUb0RlbGV0ZSwgc2V0U2tpbGxUb0RlbGV0ZV0gPSB1c2VTdGF0ZTxTa2lsbCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzTWluZVRhYiA9IGFjdGl2ZVRhYiA9PT0gJ21pbmUnXG5cbiAgY29uc3QgdGFiU2tpbGxzID0gaXNNaW5lVGFiID8gbXlTa2lsbHMgOiBzaGFyZWRTa2lsbHNcblxuICBjb25zdCBmaWx0ZXJlZFNraWxscyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRRdWVyeSA9IHNlYXJjaFF1ZXJ5LnRvTG93ZXJDYXNlKClcbiAgICBjb25zdCBtYXRjaGVkID0gbm9ybWFsaXplZFF1ZXJ5XG4gICAgICA/IHRhYlNraWxscy5maWx0ZXIoc2tpbGwgPT4gc2tpbGwubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5vcm1hbGl6ZWRRdWVyeSkpXG4gICAgICA6IHRhYlNraWxsc1xuICAgIHJldHVybiBbLi4ubWF0Y2hlZF0uc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgfSwgW3NlYXJjaFF1ZXJ5LCB0YWJTa2lsbHNdKVxuXG4gIGNvbnN0IGhhbmRsZUNyZWF0ZVNraWxsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGZyb21FbXB0eSA9IGFjdGl2ZVRhYiA9PT0gJ21pbmUnICYmICFsb2FkaW5nICYmIG15U2tpbGxzLmxlbmd0aCA9PT0gMCAmJiAhc2VhcmNoUXVlcnlcbiAgICBvcGVuU2tpbGxNb2RhbCh7IGlzRWRpdGluZzogZmFsc2UsIGludGVudDogJ3dyaXRlJyB9LCBmcm9tRW1wdHkgPyAnZW1wdHknIDogJ2NhdGFsb2cnKVxuICB9LCBbYWN0aXZlVGFiLCBsb2FkaW5nLCBteVNraWxscy5sZW5ndGgsIHNlYXJjaFF1ZXJ5XSlcblxuICAvLyBcIk1pcyBza2lsbHNcIiB0aWVuZSBVc2FyICsgRWRpdGFyICsgRWxpbWluYXI7IFwiQ29tcGFydGlkYXNcIiBzb2xvIFVzYXIuXG4gIGNvbnN0IGNhcmRNZW51SGVpZ2h0UHggPSBpc01pbmVUYWIgPyBDQVJEX01FTlVfSVRFTV9IRUlHSFRfUFggKiAzIDogQ0FSRF9NRU5VX0lURU1fSEVJR0hUX1BYXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlQ2FyZE1lbnUgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+LCBza2lsbElkOiBzdHJpbmcpID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICBjb25zdCBjYXJkQW5jaG9yID0gZXZlbnQuY3VycmVudFRhcmdldC5jbG9zZXN0KCdbZGF0YS1za2lsbC1jYXJkLWlkXScpXG4gICAgICBpZiAoY2FyZEFuY2hvciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHNldENhcmRNZW51UGxhY2VtZW50KHJlc29sdmVEcm9wZG93blBsYWNlbWVudChjYXJkQW5jaG9yLCBjYXJkTWVudUhlaWdodFB4KSlcbiAgICAgIH1cbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChwcmV2ID0+IChwcmV2ID09PSBza2lsbElkID8gbnVsbCA6IHNraWxsSWQpKVxuICAgIH0sXG4gICAgW2NhcmRNZW51SGVpZ2h0UHhdXG4gIClcblxuICAvKiogTWlzbW8gZmx1am8gcXVlIGVsIGJvdMOzbiBcIlVzYXIgc2tpbGxcIiBkZWwgbW9kYWw6IGNoYXQgbnVldm8gY29uIGVsIHByaW1lciBhZ2VudGUgeSBsYSBtZW5jacOzbiBwdWVzdGEuICovXG4gIGNvbnN0IGhhbmRsZVVzZVNraWxsID0gdXNlQ2FsbGJhY2soXG4gICAgKHNraWxsOiBTa2lsbCkgPT4ge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsVXNlLCB7XG4gICAgICAgIHNraWxsX2lkOiBza2lsbC5pZCxcbiAgICAgICAgYWNjZXNzX3R5cGU6IHNraWxsLmFjY2Vzc190eXBlIHx8ICdvbmx5X21lJyxcbiAgICAgICAgc291cmNlOiAnY2FyZCcsXG4gICAgICAgIGlzX3NoYXJlZDogIWlzTWluZVRhYixcbiAgICAgIH0pXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQsIHtcbiAgICAgICAgICBkZXRhaWw6IHsgc2tpbGwsIHVzZUZpcnN0QWdlbnQ6IHRydWUgfSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0sXG4gICAgW2V2ZW50QW1wbGl0dWRlLCBpc01pbmVUYWJdXG4gIClcblxuICBjb25zdCBoYW5kbGVPcGVuU2tpbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoc2tpbGw6IFNraWxsLCBpc1JlYWRPbmx5OiBib29sZWFuKSA9PiB7XG4gICAgICBvcGVuU2tpbGxNb2RhbCh7XG4gICAgICAgIGlzRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgaXNSZWFkT25seSxcbiAgICAgICAgaXNTaGFyZWQ6ICFpc01pbmVUYWIsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICBpZDogc2tpbGwuaWQsXG4gICAgICAgICAgbmFtZTogc2tpbGwubmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogc2tpbGwuZGVzY3JpcHRpb24sXG4gICAgICAgICAgY29udGVudDogc2tpbGwuY29udGVudCxcbiAgICAgICAgICBhY2Nlc3NfdHlwZTogc2tpbGwuYWNjZXNzX3R5cGUsXG4gICAgICAgICAgY3JlYXRlZF9ieV9uYW1lOiBza2lsbC5jcmVhdGVkX2J5X25hbWUsXG4gICAgICAgICAgY3JlYXRlZF9hdDogc2tpbGwuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBza2lsbC51cGRhdGVkX2F0LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0sXG4gICAgW2lzTWluZVRhYl1cbiAgKVxuXG4gIGNvbnN0IGRlbGV0ZU1vZGFsQ2hhdCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHNraWxsVG9EZWxldGUgPyB7IHRpdGxlOiBza2lsbFRvRGVsZXRlLm5hbWUsIGlkOiBza2lsbFRvRGVsZXRlLmlkIH0gOiBudWxsKSxcbiAgICBbc2tpbGxUb0RlbGV0ZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSBhc3luYyAoY2hhdDogeyBpZDogc3RyaW5nIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2tpbGwoY2hhdC5pZClcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbEFibURlbGV0ZSwgeyBza2lsbF9pZDogY2hhdC5pZCwgc291cmNlOiAnY2F0YWxvZycgfSlcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5kZWxldGVTdWNjZXNzJykpXG4gICAgICBvbkRlbGV0ZVNraWxsPy4oY2hhdC5pZClcbiAgICAgIHNldFNraWxsVG9EZWxldGUobnVsbClcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLmRlbGV0ZUVycm9yJykpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoKSA9PiB7XG4gICAgICBpZiAobWVudU9wZW5Gb3JTa2lsbElkKSB7XG4gICAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFttZW51T3BlbkZvclNraWxsSWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtZW51T3BlbkZvclNraWxsSWQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGhhbmRsZVJlcG9zaXRpb24gPSAoKSA9PiB7XG4gICAgICBjb25zdCBvcGVuQ2FyZCA9IGxpc3RTY3JvbGxSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcjxIVE1MQnV0dG9uRWxlbWVudD4oXG4gICAgICAgIGBbZGF0YS1za2lsbC1jYXJkLWlkPVwiJHttZW51T3BlbkZvclNraWxsSWR9XCJdYFxuICAgICAgKVxuICAgICAgaWYgKG9wZW5DYXJkKSB7XG4gICAgICAgIHNldENhcmRNZW51UGxhY2VtZW50KHJlc29sdmVEcm9wZG93blBsYWNlbWVudChvcGVuQ2FyZCwgY2FyZE1lbnVIZWlnaHRQeCkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyID0gbGlzdFNjcm9sbFJlZi5jdXJyZW50XG4gICAgc2Nyb2xsQ29udGFpbmVyPy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVSZXBvc2l0aW9uLCB7IHBhc3NpdmU6IHRydWUgfSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzY3JvbGxDb250YWluZXI/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVJlcG9zaXRpb24pXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcbiAgICB9XG4gIH0sIFttZW51T3BlbkZvclNraWxsSWQsIGNhcmRNZW51SGVpZ2h0UHhdKVxuXG4gIGNvbnN0IHRhYkRlc2NyaXB0aW9uID0gaXNNaW5lVGFiID8gdCgnbXlTa2lsbHMubXlTa2lsbHNEZXNjcmlwdGlvbicpIDogdCgnbXlTa2lsbHMuc2hhcmVkU2tpbGxzRGVzY3JpcHRpb24nKVxuXG4gIGNvbnN0IGlzTWluZUVtcHR5ID0gaXNNaW5lVGFiICYmICFsb2FkaW5nICYmIG15U2tpbGxzLmxlbmd0aCA9PT0gMCAmJiAhc2VhcmNoUXVlcnlcbiAgY29uc3Qgc2hvd1NraWxsc1Rvb2xiYXIgPSBpc01pbmVUYWIgPyAhaXNNaW5lRW1wdHkgOiB0YWJTa2lsbHMubGVuZ3RoID4gMCB8fCAhIXNlYXJjaFF1ZXJ5XG5cbiAgY29uc3QgcmVuZGVyQ3JlYXRlU2tpbGxCdXR0b24gPSAoKSA9PiAoXG4gICAgPFNDTVNDcmVhdGVCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNyZWF0ZVNraWxsfT5cbiAgICAgIDxTQ01TQ3JlYXRlQnV0dG9uVGV4dD57dCgnbXlTa2lsbHMuY3JlYXRlU2tpbGwnKX08L1NDTVNDcmVhdGVCdXR0b25UZXh0PlxuICAgIDwvU0NNU0NyZWF0ZUJ1dHRvbj5cbiAgKVxuXG4gIGNvbnN0IHJlbmRlclNlYXJjaEVtcHR5U3RhdGUgPSAoKSA9PiAoXG4gICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPnt0KCdteVNraWxscy5zZWFyY2hFbXB0eVN0YXRlVGl0bGUnKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGU+XG4gICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPnt0KCdteVNraWxscy5zZWFyY2hFbXB0eVN0YXRlRGVzY3JpcHRpb24nKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGU+XG4gICAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgKVxuXG4gIGNvbnN0IHJlbmRlckVtcHR5U3RhdGUgPSAoKSA9PiB7XG4gICAgaWYgKCFpc01pbmVUYWIpIHtcbiAgICAgIGlmIChzZWFyY2hRdWVyeSkge1xuICAgICAgICByZXR1cm4gcmVuZGVyU2VhcmNoRW1wdHlTdGF0ZSgpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3Q+XG4gICAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPnt0KCdteVNraWxscy5zaGFyZWRFbXB0eVN0YXRlVGl0bGUnKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGU+XG4gICAgICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZT57dCgnbXlTa2lsbHMuc2hhcmVkRW1wdHlTdGF0ZURlc2NyaXB0aW9uJyl9PC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPlxuICAgICAgICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICA8L1NDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoc2VhcmNoUXVlcnkpIHtcbiAgICAgIHJldHVybiByZW5kZXJTZWFyY2hFbXB0eVN0YXRlKClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZT57dCgnbXlTa2lsbHMuZW1wdHlTdGF0ZVRpdGxlJyl9PC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPlxuICAgICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPnt0KCdteVNraWxscy5lbXB0eVN0YXRlRGVzY3JpcHRpb24nKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGU+XG4gICAgICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICB7cmVuZGVyQ3JlYXRlU2tpbGxCdXR0b24oKX1cbiAgICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVSb290PlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDTVNDb250YWluZXI+XG4gICAgICA8U0NNU0JvZHk+XG4gICAgICAgIDxTQ01TVGl0bGVCbG9jaz5cbiAgICAgICAgICA8U0NNU1RpdGxlPnt0KCdteVNraWxscy50aXRsZScpfTwvU0NNU1RpdGxlPlxuICAgICAgICA8L1NDTVNUaXRsZUJsb2NrPlxuXG4gICAgICAgIDxTQ01TUGFuZWw+XG4gICAgICAgICAgPFNDTVNQYW5lbEhlYWRlcj5cbiAgICAgICAgICAgIDxTQ01TVGFiQmFyPlxuICAgICAgICAgICAgICA8U0NNU1RhYkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgJGFjdGl2ZT17aXNNaW5lVGFifSBvbkNsaWNrPXsoKSA9PiBzZXRBY3RpdmVUYWIoJ21pbmUnKX0+XG4gICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnRhYk15U2tpbGxzJyl9XG4gICAgICAgICAgICAgIDwvU0NNU1RhYkJ1dHRvbj5cbiAgICAgICAgICAgICAgPFNDTVNUYWJCdXR0b24gdHlwZT1cImJ1dHRvblwiICRhY3RpdmU9eyFpc01pbmVUYWJ9IG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYignc2hhcmVkJyl9PlxuICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy50YWJTaGFyZWRTa2lsbHMnKX1cbiAgICAgICAgICAgICAgPC9TQ01TVGFiQnV0dG9uPlxuICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnbXlTa2lsbHMuaW5mb1Rvb2x0aXAnKX0gey4uLih0b29sdGlwWkluZGV4ICE9IG51bGwgPyB7IHpJbmRleDogdG9vbHRpcFpJbmRleCB9IDoge30pfT5cbiAgICAgICAgICAgICAgICA8U0NNU1RhYkluZm9JY29uIGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLmluZm9Ub29sdGlwJyl9PlxuICAgICAgICAgICAgICAgICAgPEluZm9ybWF0aW9uQ2lyY2xlIGNvbG9yPVwiIzgwODA4MFwiIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICA8L1NDTVNUYWJJbmZvSWNvbj5cbiAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgPC9TQ01TVGFiQmFyPlxuXG4gICAgICAgICAgICB7c2hvd1NraWxsc1Rvb2xiYXIgPyAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPFNDTVNNZXRhUm93PlxuICAgICAgICAgICAgICAgICAgPFNDTVNNZXRhRGVzY3JpcHRpb24+e3RhYkRlc2NyaXB0aW9ufTwvU0NNU01ldGFEZXNjcmlwdGlvbj5cbiAgICAgICAgICAgICAgICAgIHtpc01pbmVUYWIgPyByZW5kZXJDcmVhdGVTa2lsbEJ1dHRvbigpIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L1NDTVNNZXRhUm93PlxuXG4gICAgICAgICAgICAgICAgPFNraWxsU2VhcmNoSW5wdXQgb25TZWFyY2g9e3NldFNlYXJjaFF1ZXJ5fSBwbGFjZWhvbGRlcj17dCgnbXlTa2lsbHMuc2VhcmNoUGxhY2Vob2xkZXInKX0gLz5cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L1NDTVNQYW5lbEhlYWRlcj5cblxuICAgICAgICAgIDxTQ01TTGlzdFNjcm9sbEFyZWEgcmVmPXtsaXN0U2Nyb2xsUmVmfT5cbiAgICAgICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgICAgICA8U0NNU0xvYWRXcmFwcGVyPlxuICAgICAgICAgICAgICAgIDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz5cbiAgICAgICAgICAgICAgPC9TQ01TTG9hZFdyYXBwZXI+XG4gICAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgICAgeyFsb2FkaW5nICYmIGZpbHRlcmVkU2tpbGxzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgPFNDTVNDYXJkc0xpc3Q+XG4gICAgICAgICAgICAgICAge2ZpbHRlcmVkU2tpbGxzLm1hcCgoc2tpbGwsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8U0NNU0NhcmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAga2V5PXtza2lsbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtc2tpbGwtY2FyZC1pZD17c2tpbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgICRpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICRlbGV2YXRlZD17bWVudU9wZW5Gb3JTa2lsbElkID09PSBza2lsbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlT3BlblNraWxsKHNraWxsLCB0cnVlKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkVG9wUm93PlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZFRpdGxlTmFtZT57Zm9ybWF0U2tpbGxEaXNwbGF5TmFtZShza2lsbC5uYW1lKX08L1NDTVNDYXJkVGl0bGVOYW1lPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01TS2ViYWJCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgJHZpc2libGU9e21lbnVPcGVuRm9yU2tpbGxJZCA9PT0gc2tpbGwuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdteVNraWxscy5jYXJkTWVudUFyaWFMYWJlbCcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gaGFuZGxlVG9nZ2xlQ2FyZE1lbnUoZXZlbnQsIHNraWxsLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWVudURvdHMgY29sb3I9XCIjODA4MDgwXCIgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0tlYmFiQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkVG9wUm93PlxuICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRDb250ZW50VGV4dD57c2tpbGwuZGVzY3JpcHRpb24gfHwgc2tpbGwuY29udGVudH08L1NDTVNDYXJkQ29udGVudFRleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZFZpc2liaWxpdHlSb3c+XG4gICAgICAgICAgICAgICAgICAgICAge2lzTWluZVRhYiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtza2lsbC5hY2Nlc3NfdHlwZSA9PT0gJ2NvbXBhbnknID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTa2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2tpbGxWaXNpYmlsaXR5T25seU1lSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRWaXNpYmlsaXR5VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2tpbGwuYWNjZXNzX3R5cGUgPT09ICdjb21wYW55J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0KCdteVNraWxscy52aXNpYmlsaXR5RXZlcnlvbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0KCdteVNraWxscy52aXNpYmlsaXR5T25seU1lJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRWaXNpYmlsaXR5VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIHshaXNNaW5lVGFiICYmIHNraWxsLmNyZWF0ZWRfYnlfbmFtZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTa2lsbENyZWF0ZWRCeUljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkVmlzaWJpbGl0eVRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnNoYXJlZENyZWF0ZWRCeScsIHsgbmFtZTogc2tpbGwuY3JlYXRlZF9ieV9uYW1lIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkVmlzaWJpbGl0eVRleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZFZpc2liaWxpdHlSb3c+XG4gICAgICAgICAgICAgICAgICAgIHttZW51T3BlbkZvclNraWxsSWQgPT09IHNraWxsLmlkID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVcbiAgICAgICAgICAgICAgICAgICAgICAgICRwbGFjZW1lbnQ9e2NhcmRNZW51UGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVJdGVtIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBoYW5kbGVVc2VTa2lsbChza2lsbCl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMudXNlU2tpbGwnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc01pbmVUYWIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkTWVudUl0ZW0gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9eygpID0+IGhhbmRsZU9wZW5Ta2lsbChza2lsbCwgZmFsc2UpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5lZGl0Jyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZE1lbnVJdGVtIHR5cGU9XCJidXR0b25cIiAkZGVzdHJ1Y3RpdmUgb25DbGljaz17KCkgPT4gc2V0U2tpbGxUb0RlbGV0ZShza2lsbCl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmRlbGV0ZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkTWVudT5cbiAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkQnV0dG9uPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1NDTVNDYXJkc0xpc3Q+XG4gICAgICAgICAgICApIDogbnVsbH1cblxuICAgICAgICAgICAgeyFsb2FkaW5nICYmICFmaWx0ZXJlZFNraWxscy5sZW5ndGggPyByZW5kZXJFbXB0eVN0YXRlKCkgOiBudWxsfVxuICAgICAgICAgIDwvU0NNU0xpc3RTY3JvbGxBcmVhPlxuICAgICAgICA8L1NDTVNQYW5lbD5cbiAgICAgIDwvU0NNU0JvZHk+XG5cbiAgICAgIHtkZWxldGVNb2RhbENoYXQgPyAoXG4gICAgICAgIDxEZWxldGVRdWVzdGlvbk1vZGFsXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2tpbGxUb0RlbGV0ZShudWxsKX1cbiAgICAgICAgICBoYW5kbGVycz17e1xuICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbjogaGFuZGxlQ29uZmlybURlbGV0ZSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNoYXQ9e2RlbGV0ZU1vZGFsQ2hhdH1cbiAgICAgICAgICBhY3Rpb249XCJza2lsbFwiXG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICA8L1NDTVNDb250YWluZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNoRixTQUFTQyxRQUFRLFFBQVEsMkNBQTJDO0FBQ3BFLFNBQVNDLE1BQU0sUUFBUSx5Q0FBeUM7QUFDaEUsU0FBU0MsaUJBQWlCLFFBQVEsb0RBQW9EO0FBQ3RGLFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFFOUMsU0FBU0MsV0FBVyxRQUFRLDJDQUEyQztBQUN2RSxTQUFTQyxrQkFBa0IsUUFBUSxzREFBc0Q7QUFDekYsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEseUJBQXlCO0FBQzFELFNBQVNDLHNCQUFzQixRQUFRLHVDQUF1QztBQUM5RSxTQUFTQyxtQkFBbUIsUUFBUSx5REFBeUQ7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
422
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZVN0YXRlIiwiTWVudURvdHMiLCJTZWFyY2giLCJJbmZvcm1hdGlvbkNpcmNsZSIsIlRvb2x0aXAiLCJ1c2VUcmFuc2xhdGlvbiIsImRlbGV0ZVNraWxsIiwidXNlU25hY2tCYXJNYW5hZ2VyIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsIlNLSUxMX1VTRV9BRlRFUl9TQVZFX0VWRU5UIiwiU0VDVElPTlMiLCJMb2FkZXIiLCJTa2lsbENyZWF0ZWRCeUljb24iLCJTa2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24iLCJTa2lsbFZpc2liaWxpdHlPbmx5TWVJY29uIiwiU0NNU0JvZHkiLCJTQ01TQ2FyZEJ1dHRvbiIsIlNDTVNDYXJkQ29udGVudFRleHQiLCJTQ01TQ2FyZE1lbnUiLCJTQ01TQ2FyZE1lbnVJdGVtIiwiU0NNU0NhcmRUaXRsZU5hbWUiLCJTQ01TQ2FyZFRvcFJvdyIsIlNDTVNDYXJkVmlzaWJpbGl0eVJvdyIsIlNDTVNDYXJkVmlzaWJpbGl0eVRleHQiLCJTQ01TQ2FyZHNMaXN0IiwiU0NNU0NvbnRhaW5lciIsIlNDTVNDcmVhdGVCdXR0b24iLCJTQ01TQ3JlYXRlQnV0dG9uVGV4dCIsIlNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdCIsIlNDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGUiLCJTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlIiwiU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrIiwiU0NNU0tlYmFiQnV0dG9uIiwiU0NNU0xvYWRXcmFwcGVyIiwiU0NNU01ldGFEZXNjcmlwdGlvbiIsIlNDTVNNZXRhUm93IiwiU0NNU1BhbmVsIiwiU0NNU1BhbmVsSGVhZGVyIiwiU0NNU0xpc3RTY3JvbGxBcmVhIiwiU0NNU1NlYXJjaElucHV0IiwiU0NNU1NlYXJjaFdyYXBwZXIiLCJTQ01TVGFiQmFyIiwiU0NNU1RhYkJ1dHRvbiIsIlNDTVNUYWJJbmZvSWNvbiIsIlNDTVNUaXRsZSIsIlNDTVNUaXRsZUJsb2NrIiwiYnVpbGRTa2lsbERlbGV0ZU1vZGFsQ2hhdCIsImZpbHRlckFuZFNvcnRTa2lsbHMiLCJmb3JtYXRTa2lsbERpc3BsYXlOYW1lIiwicmVzb2x2ZURyb3Bkb3duUGxhY2VtZW50IiwicmVzb2x2ZVNraWxsQ3JlYXRlQW5hbHl0aWNzU291cmNlIiwicmVzb2x2ZVNraWxsc0NhcmRNZW51SGVpZ2h0UHgiLCJzaG91bGRTaG93U2tpbGxzVG9vbGJhciIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIm9wZW5Ta2lsbE1vZGFsIiwidmFsdWVzIiwiYW5hbHl0aWNzU291cmNlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJza2lsbFZhbHVlcyIsImlzT3BlbiIsIlNraWxsU2VhcmNoSW5wdXQiLCJtZW1vIiwiX3JlZiIsIm9uU2VhcmNoIiwicGxhY2Vob2xkZXIiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ2YWx1ZSIsInNldFZhbHVlIiwiZGVib3VuY2VSZWYiLCJoYW5kbGVDaGFuZ2UiLCJldmVudCIsIm5leHRWYWx1ZSIsInRhcmdldCIsImN1cnJlbnQiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwidHJpbSIsImNoaWxkcmVuIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvciIsInR5cGUiLCJvbkNoYW5nZSIsIkNoYXRBSU15U2tpbGxzIiwiX3JlZjIiLCJteVNraWxscyIsInNoYXJlZFNraWxscyIsIl9yZWYyJGxvYWRpbmciLCJsb2FkaW5nIiwib25EZWxldGVTa2lsbCIsIl91c2VUcmFuc2xhdGlvbiIsImNoYXRBSSIsInQiLCJldmVudEFtcGxpdHVkZSIsIl91c2VTbmFja0Jhck1hbmFnZXIiLCJoYW5kbGVTbmFja2JhclN1Y2Nlc3MiLCJoYW5kbGVTbmFja2JhckVycm9yIiwidG9vbHRpcFpJbmRleCIsImxpc3RTY3JvbGxSZWYiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImFjdGl2ZVRhYiIsInNldEFjdGl2ZVRhYiIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2VhcmNoUXVlcnkiLCJzZXRTZWFyY2hRdWVyeSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibWVudU9wZW5Gb3JTa2lsbElkIiwic2V0TWVudU9wZW5Gb3JTa2lsbElkIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJjYXJkTWVudVBsYWNlbWVudCIsInNldENhcmRNZW51UGxhY2VtZW50IiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwic2tpbGxUb0RlbGV0ZSIsInNldFNraWxsVG9EZWxldGUiLCJpc01pbmVUYWIiLCJ0YWJTa2lsbHMiLCJmaWx0ZXJlZFNraWxscyIsImhhbmRsZUNyZWF0ZVNraWxsIiwiaXNFZGl0aW5nIiwiaW50ZW50IiwiY2FyZE1lbnVIZWlnaHRQeCIsImhhbmRsZVRvZ2dsZUNhcmRNZW51Iiwic2tpbGxJZCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiY2FyZEFuY2hvciIsImN1cnJlbnRUYXJnZXQiLCJjbG9zZXN0IiwiSFRNTEVsZW1lbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJwcmV2IiwiaGFuZGxlVXNlU2tpbGwiLCJza2lsbCIsImFpQ2hhdFNraWxsVXNlIiwic2tpbGxfaWQiLCJpZCIsImFjY2Vzc190eXBlIiwic291cmNlIiwiaXNfc2hhcmVkIiwidXNlRmlyc3RBZ2VudCIsImhhbmRsZU9wZW5Ta2lsbCIsImlzUmVhZE9ubHkiLCJpc1NoYXJlZCIsImdlbmVyYWwiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJjb250ZW50IiwiY3JlYXRlZF9ieV9uYW1lIiwiY3JlYXRlZF9hdCIsInVwZGF0ZWRfYXQiLCJkZWxldGVNb2RhbENoYXQiLCJoYW5kbGVDb25maXJtRGVsZXRlIiwiX3JlZjMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImNoYXQiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJhaUNoYXRTa2lsbEFibURlbGV0ZSIsInN0b3AiLCJfeCIsImFwcGx5IiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVSZXBvc2l0aW9uIiwiX2xpc3RTY3JvbGxSZWYkY3VycmVuIiwib3BlbkNhcmQiLCJxdWVyeVNlbGVjdG9yIiwiY29uY2F0Iiwic2Nyb2xsQ29udGFpbmVyIiwicGFzc2l2ZSIsIndpbmRvdyIsInRhYkRlc2NyaXB0aW9uIiwiaXNNaW5lRW1wdHkiLCJzaG93U2tpbGxzVG9vbGJhciIsInJlbmRlckNyZWF0ZVNraWxsQnV0dG9uIiwib25DbGljayIsInJlbmRlclNlYXJjaEVtcHR5U3RhdGUiLCJyZW5kZXJFbXB0eVN0YXRlIiwiJGFjdGl2ZSIsIl9vYmplY3RTcHJlYWQiLCJ0aXRsZSIsInpJbmRleCIsInJlZiIsInNpemUiLCJtYXAiLCJpbmRleCIsIiRpbmRleCIsIiRlbGV2YXRlZCIsIiR2aXNpYmxlIiwiJHBsYWNlbWVudCIsIiRkZXN0cnVjdGl2ZSIsIm9uQ2xvc2UiLCJoYW5kbGVycyIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJhY3Rpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTXlTa2lsbHMvQ2hhdEFJTXlTa2lsbHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBNZW51RG90cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL01lbnVEb3RzJ1xuaW1wb3J0IHsgU2VhcmNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvU2VhcmNoJ1xuaW1wb3J0IHsgSW5mb3JtYXRpb25DaXJjbGUgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9JbmZvcm1hdGlvbkNpcmNsZSdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IFNraWxsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc2tpbGwnXG5pbXBvcnQgeyBkZWxldGVTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2RlbGV0ZVNraWxsJ1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9EZWxldGVRdWVzdGlvbk1vZGFsL0RlbGV0ZVF1ZXN0aW9uTW9kYWwnXG5pbXBvcnQgeyBTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBTa2lsbENyZWF0ZWRCeUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9Ta2lsbENyZWF0ZWRCeUljb24nXG5pbXBvcnQgeyBTa2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9Ta2lsbFZpc2liaWxpdHlFdmVyeW9uZUljb24nXG5pbXBvcnQgeyBTa2lsbFZpc2liaWxpdHlPbmx5TWVJY29uIH0gZnJvbSAnLi4vLi4vYXRvbXMvaWNvbnMvU2tpbGxWaXNpYmlsaXR5T25seU1lSWNvbidcbmltcG9ydCB7XG4gIFNDTVNCb2R5LFxuICBTQ01TQ2FyZEJ1dHRvbixcbiAgU0NNU0NhcmRDb250ZW50VGV4dCxcbiAgU0NNU0NhcmRNZW51LFxuICBTQ01TQ2FyZE1lbnVJdGVtLFxuICBTQ01TQ2FyZFRpdGxlTmFtZSxcbiAgU0NNU0NhcmRUb3BSb3csXG4gIFNDTVNDYXJkVmlzaWJpbGl0eVJvdyxcbiAgU0NNU0NhcmRWaXNpYmlsaXR5VGV4dCxcbiAgU0NNU0NhcmRzTGlzdCxcbiAgU0NNU0NvbnRhaW5lcixcbiAgU0NNU0NyZWF0ZUJ1dHRvbixcbiAgU0NNU0NyZWF0ZUJ1dHRvblRleHQsXG4gIFNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdCxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZSxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZSxcbiAgU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrLFxuICBTQ01TS2ViYWJCdXR0b24sXG4gIFNDTVNMb2FkV3JhcHBlcixcbiAgU0NNU01ldGFEZXNjcmlwdGlvbixcbiAgU0NNU01ldGFSb3csXG4gIFNDTVNQYW5lbCxcbiAgU0NNU1BhbmVsSGVhZGVyLFxuICBTQ01TTGlzdFNjcm9sbEFyZWEsXG4gIFNDTVNTZWFyY2hJbnB1dCxcbiAgU0NNU1NlYXJjaFdyYXBwZXIsXG4gIFNDTVNUYWJCYXIsXG4gIFNDTVNUYWJCdXR0b24sXG4gIFNDTVNUYWJJbmZvSWNvbixcbiAgU0NNU1RpdGxlLFxuICBTQ01TVGl0bGVCbG9jayxcbn0gZnJvbSAnLi9DaGF0QUlNeVNraWxscy5zdHlsZXMnXG5pbXBvcnQge1xuICBidWlsZFNraWxsRGVsZXRlTW9kYWxDaGF0LFxuICBmaWx0ZXJBbmRTb3J0U2tpbGxzLFxuICBmb3JtYXRTa2lsbERpc3BsYXlOYW1lLFxuICByZXNvbHZlRHJvcGRvd25QbGFjZW1lbnQsXG4gIHJlc29sdmVTa2lsbENyZWF0ZUFuYWx5dGljc1NvdXJjZSxcbiAgcmVzb2x2ZVNraWxsc0NhcmRNZW51SGVpZ2h0UHgsXG4gIHNob3VsZFNob3dTa2lsbHNUb29sYmFyLFxufSBmcm9tICcuL0NoYXRBSU15U2tpbGxzLmhlbHBlcnMnXG5cbnR5cGUgQ2hhdEFJTXlTa2lsbHNQcm9wcyA9IHtcbiAgbXlTa2lsbHM6IFNraWxsW11cbiAgc2hhcmVkU2tpbGxzOiBTa2lsbFtdXG4gIGxvYWRpbmc/OiBib29sZWFuXG4gIG9uRGVsZXRlU2tpbGw/OiAoc2tpbGxJZDogc3RyaW5nKSA9PiB2b2lkXG59XG5cbnR5cGUgU2tpbGxzVGFiID0gJ21pbmUnIHwgJ3NoYXJlZCdcblxudHlwZSBTa2lsbE1vZGFsSW50ZW50ID0gJ2dlbmVyYXRlJyB8ICd3cml0ZSdcblxuY29uc3Qgb3BlblNraWxsTW9kYWwgPSAoXG4gIHZhbHVlczoge1xuICAgIGlzRWRpdGluZzogYm9vbGVhblxuICAgIGlzUmVhZE9ubHk/OiBib29sZWFuXG4gICAgaXNTaGFyZWQ/OiBib29sZWFuXG4gICAgaW50ZW50PzogU2tpbGxNb2RhbEludGVudFxuICAgIGdlbmVyYWw/OiB7XG4gICAgICBpZD86IHN0cmluZ1xuICAgICAgbmFtZT86IHN0cmluZ1xuICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgICAgIGNvbnRlbnQ/OiBzdHJpbmdcbiAgICAgIGFjY2Vzc190eXBlPzogU2tpbGxbJ2FjY2Vzc190eXBlJ11cbiAgICAgIGNyZWF0ZWRfYnlfbmFtZT86IHN0cmluZ1xuICAgICAgY3JlYXRlZF9hdD86IHN0cmluZ1xuICAgICAgdXBkYXRlZF9hdD86IHN0cmluZ1xuICAgIH1cbiAgfSxcbiAgYW5hbHl0aWNzU291cmNlOiAnY2F0YWxvZycgfCAnZW1wdHknID0gJ2NhdGFsb2cnXG4pID0+IHtcbiAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1za2lsbC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgZGV0YWlsOiB7XG4gICAgICAgIHNraWxsVmFsdWVzOiB7XG4gICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYW5hbHl0aWNzU291cmNlLFxuICAgICAgfSxcbiAgICB9KVxuICApXG59XG5cbmNvbnN0IFNraWxsU2VhcmNoSW5wdXQgPSBSZWFjdC5tZW1vKFxuICAoeyBvblNlYXJjaCwgcGxhY2Vob2xkZXIgfTogeyBvblNlYXJjaDogKHF1ZXJ5OiBzdHJpbmcpID0+IHZvaWQ7IHBsYWNlaG9sZGVyOiBzdHJpbmcgfSkgPT4ge1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpXG4gICAgY29uc3QgZGVib3VuY2VSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsPihudWxsKVxuXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgICAoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgICBzZXRWYWx1ZShuZXh0VmFsdWUpXG4gICAgICAgIGlmIChkZWJvdW5jZVJlZi5jdXJyZW50KSBjbGVhclRpbWVvdXQoZGVib3VuY2VSZWYuY3VycmVudClcbiAgICAgICAgZGVib3VuY2VSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIG9uU2VhcmNoKG5leHRWYWx1ZS50cmltKCkpXG4gICAgICAgIH0sIDI1MClcbiAgICAgIH0sXG4gICAgICBbb25TZWFyY2hdXG4gICAgKVxuXG4gICAgdXNlRWZmZWN0KFxuICAgICAgKCkgPT4gKCkgPT4ge1xuICAgICAgICBpZiAoZGVib3VuY2VSZWYuY3VycmVudCkgY2xlYXJUaW1lb3V0KGRlYm91bmNlUmVmLmN1cnJlbnQpXG4gICAgICB9LFxuICAgICAgW11cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNDTVNTZWFyY2hXcmFwcGVyPlxuICAgICAgICA8U2VhcmNoIHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gY29sb3I9XCIjOTk5XCIgLz5cbiAgICAgICAgPFNDTVNTZWFyY2hJbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPXt2YWx1ZX0gb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX0gcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfSAvPlxuICAgICAgPC9TQ01TU2VhcmNoV3JhcHBlcj5cbiAgICApXG4gIH1cbilcblxuZXhwb3J0IGNvbnN0IENoYXRBSU15U2tpbGxzID0gKHsgbXlTa2lsbHMsIHNoYXJlZFNraWxscywgbG9hZGluZyA9IGZhbHNlLCBvbkRlbGV0ZVNraWxsIH06IENoYXRBSU15U2tpbGxzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IGxpc3RTY3JvbGxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZTxTa2lsbHNUYWI+KCdtaW5lJylcbiAgY29uc3QgW3NlYXJjaFF1ZXJ5LCBzZXRTZWFyY2hRdWVyeV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgW21lbnVPcGVuRm9yU2tpbGxJZCwgc2V0TWVudU9wZW5Gb3JTa2lsbElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtjYXJkTWVudVBsYWNlbWVudCwgc2V0Q2FyZE1lbnVQbGFjZW1lbnRdID0gdXNlU3RhdGU8J3RvcCcgfCAnYm90dG9tJz4oJ2JvdHRvbScpXG4gIGNvbnN0IFtza2lsbFRvRGVsZXRlLCBzZXRTa2lsbFRvRGVsZXRlXSA9IHVzZVN0YXRlPFNraWxsIHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNNaW5lVGFiID0gYWN0aXZlVGFiID09PSAnbWluZSdcblxuICBjb25zdCB0YWJTa2lsbHMgPSBpc01pbmVUYWIgPyBteVNraWxscyA6IHNoYXJlZFNraWxsc1xuXG4gIGNvbnN0IGZpbHRlcmVkU2tpbGxzID0gdXNlTWVtbygoKSA9PiBmaWx0ZXJBbmRTb3J0U2tpbGxzKHRhYlNraWxscywgc2VhcmNoUXVlcnkpLCBbc2VhcmNoUXVlcnksIHRhYlNraWxsc10pXG5cbiAgY29uc3QgaGFuZGxlQ3JlYXRlU2tpbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgb3BlblNraWxsTW9kYWwoXG4gICAgICB7IGlzRWRpdGluZzogZmFsc2UsIGludGVudDogJ3dyaXRlJyB9LFxuICAgICAgcmVzb2x2ZVNraWxsQ3JlYXRlQW5hbHl0aWNzU291cmNlKGFjdGl2ZVRhYiwgbG9hZGluZywgbXlTa2lsbHMubGVuZ3RoLCBzZWFyY2hRdWVyeSlcbiAgICApXG4gIH0sIFthY3RpdmVUYWIsIGxvYWRpbmcsIG15U2tpbGxzLmxlbmd0aCwgc2VhcmNoUXVlcnldKVxuXG4gIGNvbnN0IGNhcmRNZW51SGVpZ2h0UHggPSByZXNvbHZlU2tpbGxzQ2FyZE1lbnVIZWlnaHRQeChpc01pbmVUYWIpXG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlQ2FyZE1lbnUgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+LCBza2lsbElkOiBzdHJpbmcpID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICBjb25zdCBjYXJkQW5jaG9yID0gZXZlbnQuY3VycmVudFRhcmdldC5jbG9zZXN0KCdbZGF0YS1za2lsbC1jYXJkLWlkXScpXG4gICAgICBpZiAoY2FyZEFuY2hvciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHNldENhcmRNZW51UGxhY2VtZW50KHJlc29sdmVEcm9wZG93blBsYWNlbWVudChjYXJkQW5jaG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCBjYXJkTWVudUhlaWdodFB4KSlcbiAgICAgIH1cbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChwcmV2ID0+IChwcmV2ID09PSBza2lsbElkID8gbnVsbCA6IHNraWxsSWQpKVxuICAgIH0sXG4gICAgW2NhcmRNZW51SGVpZ2h0UHhdXG4gIClcblxuICAvKiogTWlzbW8gZmx1am8gcXVlIGVsIGJvdMOzbiBcIlVzYXIgc2tpbGxcIiBkZWwgbW9kYWw6IGNoYXQgbnVldm8gY29uIGVsIHByaW1lciBhZ2VudGUgeSBsYSBtZW5jacOzbiBwdWVzdGEuICovXG4gIGNvbnN0IGhhbmRsZVVzZVNraWxsID0gdXNlQ2FsbGJhY2soXG4gICAgKHNraWxsOiBTa2lsbCkgPT4ge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsVXNlLCB7XG4gICAgICAgIHNraWxsX2lkOiBza2lsbC5pZCxcbiAgICAgICAgYWNjZXNzX3R5cGU6IHNraWxsLmFjY2Vzc190eXBlIHx8ICdvbmx5X21lJyxcbiAgICAgICAgc291cmNlOiAnY2FyZCcsXG4gICAgICAgIGlzX3NoYXJlZDogIWlzTWluZVRhYixcbiAgICAgIH0pXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQsIHtcbiAgICAgICAgICBkZXRhaWw6IHsgc2tpbGwsIHVzZUZpcnN0QWdlbnQ6IHRydWUgfSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0sXG4gICAgW2V2ZW50QW1wbGl0dWRlLCBpc01pbmVUYWJdXG4gIClcblxuICBjb25zdCBoYW5kbGVPcGVuU2tpbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoc2tpbGw6IFNraWxsLCBpc1JlYWRPbmx5OiBib29sZWFuKSA9PiB7XG4gICAgICBvcGVuU2tpbGxNb2RhbCh7XG4gICAgICAgIGlzRWRpdGluZzogdHJ1ZSxcbiAgICAgICAgaXNSZWFkT25seSxcbiAgICAgICAgaXNTaGFyZWQ6ICFpc01pbmVUYWIsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICBpZDogc2tpbGwuaWQsXG4gICAgICAgICAgbmFtZTogc2tpbGwubmFtZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogc2tpbGwuZGVzY3JpcHRpb24sXG4gICAgICAgICAgY29udGVudDogc2tpbGwuY29udGVudCxcbiAgICAgICAgICBhY2Nlc3NfdHlwZTogc2tpbGwuYWNjZXNzX3R5cGUsXG4gICAgICAgICAgY3JlYXRlZF9ieV9uYW1lOiBza2lsbC5jcmVhdGVkX2J5X25hbWUsXG4gICAgICAgICAgY3JlYXRlZF9hdDogc2tpbGwuY3JlYXRlZF9hdCxcbiAgICAgICAgICB1cGRhdGVkX2F0OiBza2lsbC51cGRhdGVkX2F0LFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0sXG4gICAgW2lzTWluZVRhYl1cbiAgKVxuXG4gIGNvbnN0IGRlbGV0ZU1vZGFsQ2hhdCA9IHVzZU1lbW8oKCkgPT4gYnVpbGRTa2lsbERlbGV0ZU1vZGFsQ2hhdChza2lsbFRvRGVsZXRlKSwgW3NraWxsVG9EZWxldGVdKVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSBhc3luYyAoY2hhdDogeyBpZDogc3RyaW5nIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2tpbGwoY2hhdC5pZClcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbEFibURlbGV0ZSwgeyBza2lsbF9pZDogY2hhdC5pZCwgc291cmNlOiAnY2F0YWxvZycgfSlcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5kZWxldGVTdWNjZXNzJykpXG4gICAgICBvbkRlbGV0ZVNraWxsPy4oY2hhdC5pZClcbiAgICAgIHNldFNraWxsVG9EZWxldGUobnVsbClcbiAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLmRlbGV0ZUVycm9yJykpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoKSA9PiB7XG4gICAgICBpZiAobWVudU9wZW5Gb3JTa2lsbElkKSB7XG4gICAgICAgIHNldE1lbnVPcGVuRm9yU2tpbGxJZChudWxsKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG4gIH0sIFttZW51T3BlbkZvclNraWxsSWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtZW51T3BlbkZvclNraWxsSWQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGhhbmRsZVJlcG9zaXRpb24gPSAoKSA9PiB7XG4gICAgICBjb25zdCBvcGVuQ2FyZCA9IGxpc3RTY3JvbGxSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcjxIVE1MQnV0dG9uRWxlbWVudD4oXG4gICAgICAgIGBbZGF0YS1za2lsbC1jYXJkLWlkPVwiJHttZW51T3BlbkZvclNraWxsSWR9XCJdYFxuICAgICAgKVxuICAgICAgaWYgKG9wZW5DYXJkKSB7XG4gICAgICAgIHNldENhcmRNZW51UGxhY2VtZW50KHJlc29sdmVEcm9wZG93blBsYWNlbWVudChvcGVuQ2FyZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgY2FyZE1lbnVIZWlnaHRQeCkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyID0gbGlzdFNjcm9sbFJlZi5jdXJyZW50XG4gICAgc2Nyb2xsQ29udGFpbmVyPy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVSZXBvc2l0aW9uLCB7IHBhc3NpdmU6IHRydWUgfSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBzY3JvbGxDb250YWluZXI/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVJlcG9zaXRpb24pXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcbiAgICB9XG4gIH0sIFttZW51T3BlbkZvclNraWxsSWQsIGNhcmRNZW51SGVpZ2h0UHhdKVxuXG4gIGNvbnN0IHRhYkRlc2NyaXB0aW9uID0gaXNNaW5lVGFiID8gdCgnbXlTa2lsbHMubXlTa2lsbHNEZXNjcmlwdGlvbicpIDogdCgnbXlTa2lsbHMuc2hhcmVkU2tpbGxzRGVzY3JpcHRpb24nKVxuXG4gIGNvbnN0IGlzTWluZUVtcHR5ID0gaXNNaW5lVGFiICYmICFsb2FkaW5nICYmIG15U2tpbGxzLmxlbmd0aCA9PT0gMCAmJiAhc2VhcmNoUXVlcnlcbiAgY29uc3Qgc2hvd1NraWxsc1Rvb2xiYXIgPSBzaG91bGRTaG93U2tpbGxzVG9vbGJhcihpc01pbmVUYWIsIGlzTWluZUVtcHR5LCB0YWJTa2lsbHMubGVuZ3RoLCBzZWFyY2hRdWVyeSlcblxuICBjb25zdCByZW5kZXJDcmVhdGVTa2lsbEJ1dHRvbiA9ICgpID0+IChcbiAgICA8U0NNU0NyZWF0ZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlQ3JlYXRlU2tpbGx9PlxuICAgICAgPFNDTVNDcmVhdGVCdXR0b25UZXh0Pnt0KCdteVNraWxscy5jcmVhdGVTa2lsbCcpfTwvU0NNU0NyZWF0ZUJ1dHRvblRleHQ+XG4gICAgPC9TQ01TQ3JlYXRlQnV0dG9uPlxuICApXG5cbiAgY29uc3QgcmVuZGVyU2VhcmNoRW1wdHlTdGF0ZSA9ICgpID0+IChcbiAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVSb290PlxuICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGVCbG9jaz5cbiAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGU+e3QoJ215U2tpbGxzLnNlYXJjaEVtcHR5U3RhdGVUaXRsZScpfTwvU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZT5cbiAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGU+e3QoJ215U2tpbGxzLnNlYXJjaEVtcHR5U3RhdGVEZXNjcmlwdGlvbicpfTwvU0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZT5cbiAgICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVSb290PlxuICApXG5cbiAgY29uc3QgcmVuZGVyRW1wdHlTdGF0ZSA9ICgpID0+IHtcbiAgICBpZiAoIWlzTWluZVRhYikge1xuICAgICAgaWYgKHNlYXJjaFF1ZXJ5KSB7XG4gICAgICAgIHJldHVybiByZW5kZXJTZWFyY2hFbXB0eVN0YXRlKClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlUm9vdD5cbiAgICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGU+e3QoJ215U2tpbGxzLnNoYXJlZEVtcHR5U3RhdGVUaXRsZScpfTwvU0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZT5cbiAgICAgICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVN1YnRpdGxlPnt0KCdteVNraWxscy5zaGFyZWRFbXB0eVN0YXRlRGVzY3JpcHRpb24nKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgIDwvU0NNU1NoYXJlZEVtcHR5U3RhdGVSb290PlxuICAgICAgKVxuICAgIH1cblxuICAgIGlmIChzZWFyY2hRdWVyeSkge1xuICAgICAgcmV0dXJuIHJlbmRlclNlYXJjaEVtcHR5U3RhdGUoKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVSb290PlxuICAgICAgICA8U0NNU1NoYXJlZEVtcHR5U3RhdGVUaXRsZUJsb2NrPlxuICAgICAgICAgIDxTQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlPnt0KCdteVNraWxscy5lbXB0eVN0YXRlVGl0bGUnKX08L1NDTVNTaGFyZWRFbXB0eVN0YXRlVGl0bGU+XG4gICAgICAgICAgPFNDTVNTaGFyZWRFbXB0eVN0YXRlU3VidGl0bGU+e3QoJ215U2tpbGxzLmVtcHR5U3RhdGVEZXNjcmlwdGlvbicpfTwvU0NNU1NoYXJlZEVtcHR5U3RhdGVTdWJ0aXRsZT5cbiAgICAgICAgPC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVRpdGxlQmxvY2s+XG4gICAgICAgIHtyZW5kZXJDcmVhdGVTa2lsbEJ1dHRvbigpfVxuICAgICAgPC9TQ01TU2hhcmVkRW1wdHlTdGF0ZVJvb3Q+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NNU0NvbnRhaW5lcj5cbiAgICAgIDxTQ01TQm9keT5cbiAgICAgICAgPFNDTVNUaXRsZUJsb2NrPlxuICAgICAgICAgIDxTQ01TVGl0bGU+e3QoJ215U2tpbGxzLnRpdGxlJyl9PC9TQ01TVGl0bGU+XG4gICAgICAgIDwvU0NNU1RpdGxlQmxvY2s+XG5cbiAgICAgICAgPFNDTVNQYW5lbD5cbiAgICAgICAgICA8U0NNU1BhbmVsSGVhZGVyPlxuICAgICAgICAgICAgPFNDTVNUYWJCYXI+XG4gICAgICAgICAgICAgIDxTQ01TVGFiQnV0dG9uIHR5cGU9XCJidXR0b25cIiAkYWN0aXZlPXtpc01pbmVUYWJ9IG9uQ2xpY2s9eygpID0+IHNldEFjdGl2ZVRhYignbWluZScpfT5cbiAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMudGFiTXlTa2lsbHMnKX1cbiAgICAgICAgICAgICAgPC9TQ01TVGFiQnV0dG9uPlxuICAgICAgICAgICAgICA8U0NNU1RhYkJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgJGFjdGl2ZT17IWlzTWluZVRhYn0gb25DbGljaz17KCkgPT4gc2V0QWN0aXZlVGFiKCdzaGFyZWQnKX0+XG4gICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnRhYlNoYXJlZFNraWxscycpfVxuICAgICAgICAgICAgICA8L1NDTVNUYWJCdXR0b24+XG4gICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdteVNraWxscy5pbmZvVG9vbHRpcCcpfSB7Li4uKHRvb2x0aXBaSW5kZXggIT0gbnVsbCA/IHsgekluZGV4OiB0b29sdGlwWkluZGV4IH0gOiB7fSl9PlxuICAgICAgICAgICAgICAgIDxTQ01TVGFiSW5mb0ljb24gYXJpYS1sYWJlbD17dCgnbXlTa2lsbHMuaW5mb1Rvb2x0aXAnKX0+XG4gICAgICAgICAgICAgICAgICA8SW5mb3JtYXRpb25DaXJjbGUgY29sb3I9XCIjODA4MDgwXCIgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgIDwvU0NNU1RhYkluZm9JY29uPlxuICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICA8L1NDTVNUYWJCYXI+XG5cbiAgICAgICAgICAgIHtzaG93U2tpbGxzVG9vbGJhciA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8U0NNU01ldGFSb3c+XG4gICAgICAgICAgICAgICAgICA8U0NNU01ldGFEZXNjcmlwdGlvbj57dGFiRGVzY3JpcHRpb259PC9TQ01TTWV0YURlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICAgICAge2lzTWluZVRhYiA/IHJlbmRlckNyZWF0ZVNraWxsQnV0dG9uKCkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvU0NNU01ldGFSb3c+XG5cbiAgICAgICAgICAgICAgICA8U2tpbGxTZWFyY2hJbnB1dCBvblNlYXJjaD17c2V0U2VhcmNoUXVlcnl9IHBsYWNlaG9sZGVyPXt0KCdteVNraWxscy5zZWFyY2hQbGFjZWhvbGRlcicpfSAvPlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvU0NNU1BhbmVsSGVhZGVyPlxuXG4gICAgICAgICAgPFNDTVNMaXN0U2Nyb2xsQXJlYSByZWY9e2xpc3RTY3JvbGxSZWZ9PlxuICAgICAgICAgICAge2xvYWRpbmcgPyAoXG4gICAgICAgICAgICAgIDxTQ01TTG9hZFdyYXBwZXI+XG4gICAgICAgICAgICAgICAgPExvYWRlciBzaXplPVwic21hbGxcIiAvPlxuICAgICAgICAgICAgICA8L1NDTVNMb2FkV3JhcHBlcj5cbiAgICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgICB7IWxvYWRpbmcgJiYgZmlsdGVyZWRTa2lsbHMubGVuZ3RoID8gKFxuICAgICAgICAgICAgICA8U0NNU0NhcmRzTGlzdD5cbiAgICAgICAgICAgICAgICB7ZmlsdGVyZWRTa2lsbHMubWFwKChza2lsbCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBrZXk9e3NraWxsLmlkfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1za2lsbC1jYXJkLWlkPXtza2lsbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgJGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgJGVsZXZhdGVkPXttZW51T3BlbkZvclNraWxsSWQgPT09IHNraWxsLmlkfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVPcGVuU2tpbGwoc2tpbGwsIHRydWUpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRUb3BSb3c+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkVGl0bGVOYW1lPntmb3JtYXRTa2lsbERpc3BsYXlOYW1lKHNraWxsLm5hbWUpfTwvU0NNU0NhcmRUaXRsZU5hbWU+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTVNLZWJhYkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAkdmlzaWJsZT17bWVudU9wZW5Gb3JTa2lsbElkID09PSBza2lsbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLmNhcmRNZW51QXJpYUxhYmVsJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiBoYW5kbGVUb2dnbGVDYXJkTWVudShldmVudCwgc2tpbGwuaWQpfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNZW51RG90cyBjb2xvcj1cIiM4MDgwODBcIiB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ01TS2ViYWJCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRUb3BSb3c+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZENvbnRlbnRUZXh0Pntza2lsbC5kZXNjcmlwdGlvbiB8fCBza2lsbC5jb250ZW50fTwvU0NNU0NhcmRDb250ZW50VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkVmlzaWJpbGl0eVJvdz5cbiAgICAgICAgICAgICAgICAgICAgICB7aXNNaW5lVGFiID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3NraWxsLmFjY2Vzc190eXBlID09PSAnY29tcGFueScgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNraWxsVmlzaWJpbGl0eUV2ZXJ5b25lSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTa2lsbFZpc2liaWxpdHlPbmx5TWVJY29uIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTQ01TQ2FyZFZpc2liaWxpdHlUZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtza2lsbC5hY2Nlc3NfdHlwZSA9PT0gJ2NvbXBhbnknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHQoJ215U2tpbGxzLnZpc2liaWxpdHlFdmVyeW9uZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHQoJ215U2tpbGxzLnZpc2liaWxpdHlPbmx5TWUnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZFZpc2liaWxpdHlUZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgeyFpc01pbmVUYWIgJiYgc2tpbGwuY3JlYXRlZF9ieV9uYW1lID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNraWxsQ3JlYXRlZEJ5SWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRWaXNpYmlsaXR5VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuc2hhcmVkQ3JlYXRlZEJ5JywgeyBuYW1lOiBza2lsbC5jcmVhdGVkX2J5X25hbWUgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRWaXNpYmlsaXR5VGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkVmlzaWJpbGl0eVJvdz5cbiAgICAgICAgICAgICAgICAgICAge21lbnVPcGVuRm9yU2tpbGxJZCA9PT0gc2tpbGwuaWQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkTWVudVxuICAgICAgICAgICAgICAgICAgICAgICAgJHBsYWNlbWVudD17Y2FyZE1lbnVQbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkTWVudUl0ZW0gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9eygpID0+IGhhbmRsZVVzZVNraWxsKHNraWxsKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy51c2VTa2lsbCcpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAge2lzTWluZVRhYiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U0NNU0NhcmRNZW51SXRlbSB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gaGFuZGxlT3BlblNraWxsKHNraWxsLCBmYWxzZSl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmVkaXQnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NDTVNDYXJkTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNDTVNDYXJkTWVudUl0ZW0gdHlwZT1cImJ1dHRvblwiICRkZXN0cnVjdGl2ZSBvbkNsaWNrPXsoKSA9PiBzZXRTa2lsbFRvRGVsZXRlKHNraWxsKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuZGVsZXRlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TQ01TQ2FyZE1lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRNZW51PlxuICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgIDwvU0NNU0NhcmRCdXR0b24+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU0NNU0NhcmRzTGlzdD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgICB7IWxvYWRpbmcgJiYgIWZpbHRlcmVkU2tpbGxzLmxlbmd0aCA/IHJlbmRlckVtcHR5U3RhdGUoKSA6IG51bGx9XG4gICAgICAgICAgPC9TQ01TTGlzdFNjcm9sbEFyZWE+XG4gICAgICAgIDwvU0NNU1BhbmVsPlxuICAgICAgPC9TQ01TQm9keT5cblxuICAgICAge2RlbGV0ZU1vZGFsQ2hhdCA/IChcbiAgICAgICAgPERlbGV0ZVF1ZXN0aW9uTW9kYWxcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTa2lsbFRvRGVsZXRlKG51bGwpfVxuICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uOiBoYW5kbGVDb25maXJtRGVsZXRlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2hhdD17ZGVsZXRlTW9kYWxDaGF0fVxuICAgICAgICAgIGFjdGlvbj1cInNraWxsXCJcbiAgICAgICAgLz5cbiAgICAgICkgOiBudWxsfVxuICAgIDwvU0NNU0NvbnRhaW5lcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDaEYsU0FBU0MsUUFBUSxRQUFRLDJDQUEyQztBQUNwRSxTQUFTQyxNQUFNLFFBQVEseUNBQXlDO0FBQ2hFLFNBQVNDLGlCQUFpQixRQUFRLG9EQUFvRDtBQUN0RixTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBQ3RFLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBRTlDLFNBQVNDLFdBQVcsUUFBUSwyQ0FBMkM7QUFDdkUsU0FBU0Msa0JBQWtCLFFBQVEsc0RBQXNEO0FBQ3pGLFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLHlCQUF5QjtBQUMxRCxTQUFTQyxzQkFBc0IsUUFBUSx1Q0FBdUM7QUFDOUUsU0FBU0MsbUJBQW1CLFFBQVEseURBQXlEO0FBQzdGLFNBQVNDLDBCQUEwQixR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
@@ -60,11 +60,7 @@ export function ChatFooter(_ref) {
60
60
  newChatKey = _ref.newChatKey,
61
61
  tooltipZIndex = _ref.tooltipZIndex,
62
62
  layoutMode = _ref.layoutMode,
63
- onInputFocus = _ref.onInputFocus,
64
- _ref$hideDisclaimer = _ref.hideDisclaimer,
65
- hideDisclaimer = _ref$hideDisclaimer === void 0 ? false : _ref$hideDisclaimer,
66
- _ref$orchestratorHome = _ref.orchestratorHomeComposer,
67
- orchestratorHomeComposer = _ref$orchestratorHome === void 0 ? false : _ref$orchestratorHome;
63
+ onInputFocus = _ref.onInputFocus;
68
64
  var _useGlobalContext = useGlobalContext(),
69
65
  project = _useGlobalContext.project,
70
66
  agent = _useGlobalContext.agent,
@@ -77,7 +73,6 @@ export function ChatFooter(_ref) {
77
73
  var event = useEvent();
78
74
  var inputPopoverAnchorRef = useRef(null);
79
75
  var isOrchestrator = (agent === null || agent === void 0 ? void 0 : agent.type) === 'orchestrator';
80
- var useOrchestratorHomePlaceholder = orchestratorHomeComposer && (!agent || isOrchestrator);
81
76
  var _useState = useState([]),
82
77
  _useState2 = _slicedToArray(_useState, 2),
83
78
  attachments = _useState2[0],
@@ -340,8 +335,7 @@ export function ChatFooter(_ref) {
340
335
  onSendMessage: handleSendMessage,
341
336
  className: MODAL_ELEMENTS,
342
337
  disabled: disabled,
343
- placeholder: useOrchestratorHomePlaceholder ? t('chat.footer.orchestratorPlaceholder') : (agent === null || agent === void 0 ? void 0 : agent.input_placeholder) || (isOrchestrator ? t('chat.footer.orchestratorPlaceholder') : t('chat.footer.placeholder')),
344
- orchestratorHomeComposer: orchestratorHomeComposer,
338
+ placeholder: (agent === null || agent === void 0 ? void 0 : agent.input_placeholder) || (isOrchestrator ? t('chat.footer.orchestratorPlaceholder') : t('chat.footer.placeholder')),
345
339
  onChange: onChange,
346
340
  onFocus: onInputFocus,
347
341
  onFileAttach: handleFileAttach,
@@ -367,9 +361,9 @@ export function ChatFooter(_ref) {
367
361
  tooltipZIndex: tooltipZIndex,
368
362
  layoutMode: layoutMode,
369
363
  contextChip: contextChip
370
- }), hideDisclaimer ? null : /*#__PURE__*/_jsx(ChatDisclaimerMessage, {
364
+ }), /*#__PURE__*/_jsx(ChatDisclaimerMessage, {
371
365
  message: disclaimerMessage
372
366
  })]
373
367
  });
374
368
  }
375
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIkF0dGFjaCIsIk1PREFMX0VMRU1FTlRTIiwiTUFJQUlucHV0IiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIlN0eWxlZENoYXRGb290ZXIiLCJUYXNrTGlua0ljb24iLCJDc3ZGaWxlSWNvbiIsIk1ERmlsZUljb24iLCJEb2NGaWxlSWNvbiIsIkRvY3hGaWxlSWNvbiIsIlBwdEZpbGVJY29uIiwiUHB0eEZpbGVJY29uIiwiVGV4dEZpbGVJY29uIiwiUGRmRmlsZUljb24iLCJJbWFnZUZpbGVJY29uIiwiWGxzeEZpbGVJY29uIiwiWGxzRmlsZUljb24iLCJNcDNGaWxlSWNvbiIsIldhdkZpbGVJY29uIiwiRmxhY0ZpbGVJY29uIiwiTTRhRmlsZUljb24iLCJNcDRGaWxlSWNvbiIsIk9nYUZpbGVJY29uIiwiT2dnRmlsZUljb24iLCJXZWJtRmlsZUljb24iLCJwcmVwcm9jZXNzSW1hZ2VGb3JCYWNrZW5kIiwidmFsaWRhdGVJc01haWEiLCJpc01haWFrZXJBZ2VudCIsIkNoYXREaXNjbGFpbWVyTWVzc2FnZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJJY29uQnlGaWxlVHlwZSIsIkNoYXRGb290ZXIiLCJfcmVmIiwib25TZW5kTWVzc2FnZSIsIml0ZW1zIiwiZGlzYWJsZWQiLCJpc1N0cmVhbWluZyIsImlzV3JpdGluZyIsIm9uU3RvcEdlbmVyYXRpb24iLCJjaGF0SWQiLCJuZXdDaGF0S2V5IiwidG9vbHRpcFpJbmRleCIsImxheW91dE1vZGUiLCJvbklucHV0Rm9jdXMiLCJfcmVmJGhpZGVEaXNjbGFpbWVyIiwiaGlkZURpc2NsYWltZXIiLCJfcmVmJG9yY2hlc3RyYXRvckhvbWUiLCJvcmNoZXN0cmF0b3JIb21lQ29tcG9zZXIiLCJfdXNlR2xvYmFsQ29udGV4dCIsInByb2plY3QiLCJhZ2VudCIsImNoaXBzUHJvamVjdCIsImNsaWVudCIsInRhc2siLCJkZWVwTGlua1NlbmRQZW5kaW5nUmVmIiwiX3VzZVQiLCJ0IiwiZXZlbnQiLCJpbnB1dFBvcG92ZXJBbmNob3JSZWYiLCJpc09yY2hlc3RyYXRvciIsInR5cGUiLCJ1c2VPcmNoZXN0cmF0b3JIb21lUGxhY2Vob2xkZXIiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJhdHRhY2htZW50cyIsInNldEF0dGFjaG1lbnRzIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJsb2FkaW5nTWVzc2FnZXMiLCJzZXRMb2FkaW5nTWVzc2FnZXMiLCJyZXBvcnRlZEV2ZW50IiwiaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50IiwiaGFuZGxlTG9hZGluZ01lc3NhZ2VzQ2hhbmdlIiwiZSIsImRldGFpbCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVTZXNzaW9uQ2hhbmdlIiwiY3VycmVudCIsIl91c2VNZW1vIiwiY2hpcEl0ZW1zIiwibmFtZSIsImNoaXBUeXBlIiwiY2hpcEVudGl0eUlkIiwiaWQiLCJwcm9qZWN0TmFtZSIsInByb2plY3RJZCIsImVudGl0eSIsImhhbmRsZUNvbnRleHRDaGlwTmF2aWdhdGUiLCJlbnRpdHlUeXBlIiwiYWlDaGF0Q29udGV4dENoaXBDbGljayIsImVudGl0eV90eXBlIiwiZW50aXR5X2lkIiwiU3RyaW5nIiwib25DaGFuZ2UiLCJwbUFpVHlwZWRUZXh0IiwiYWdlbnRfdHlwZSIsImhhbmRsZVNlbmRNZXNzYWdlIiwibWVzc2FnZSIsIm5ld0F0dGFjaG1lbnRzIiwibWVudGlvbnMiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwiZnVhSWQiLCJzY0lkIiwiZnJvbURlZXBMaW5rIiwiQm9vbGVhbiIsImFpQ2hhdFNlbmQiLCJfb2JqZWN0U3ByZWFkIiwiYWdlbnRfaWQiLCJhZ2VudF9uYW1lIiwic291cmNlIiwic2tpbGxJZHMiLCJmaWx0ZXIiLCJtZW50aW9uIiwibWFwIiwibGVuZ3RoIiwiYWlDaGF0U2tpbGxTZW5kIiwic2tpbGxfaWRzIiwic2tpbGxfY291bnQiLCJoYW5kbGVTZWxlY3RGYXEiLCJ1bmRlZmluZWQiLCJoYW5kbGVGaWxlQXR0YWNoIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImZpbGUiLCJfZmlsZU5hbWVQYXJ0cyRwb3AiLCJmaWxlTmFtZVBhcnRzIiwiZmlsZUV4dGVuc2lvbiIsImlzSW1hZ2VCeUV4dGVuc2lvbiIsImlzSW1hZ2VCeU1pbWUiLCJpc0ltYWdlIiwiZXh0ZW5zaW9uVG9JY29uIiwiaWNvbiIsImV4dGVuc2lvblRvTWltZVR5cGUiLCJtaW1lVHlwZUJ5RXh0ZW5zaW9uIiwicHJvY2Vzc2VkRmlsZSIsIm5ld0F0dGFjaG1lbnQiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwic3BsaXQiLCJjb25jYXQiLCJwb3AiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwic3RhcnRzV2l0aCIsImNvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJzZW50IiwiY29uc29sZSIsImVycm9yIiwib3JpZ2luYWxGaWxlIiwiRGF0ZSIsIm5vdyIsIk1hdGgiLCJyYW5kb20iLCJzaXplIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVEZWxldGVBdHRhY2htZW50IiwiZmlsZUlkIiwiYXR0YWNobWVudCIsImlzTUFJQSIsImRpc2NsYWltZXJNZXNzYWdlIiwiYWdlbnROYW1lIiwiY29udGV4dENoaXAiLCJlbnRpdHlJZCIsImxlYWRpbmdJY29uIiwib25FbnRpdHlOYXZpZ2F0ZSIsImNoaWxkcmVuIiwicG9wb3ZlckFuY2hvclJlZiIsImNsYXNzTmFtZSIsInBsYWNlaG9sZGVyIiwiaW5wdXRfcGxhY2Vob2xkZXIiLCJvbkZvY3VzIiwib25GaWxlQXR0YWNoIiwib25EZWxldGVBdHRhY2htZW50IiwiYXR0IiwiTnVtYmVyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3Rlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3JlcXVpcmUtZGVmYXVsdC1wcm9wcyAqL1xuaW1wb3J0IHsgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBBdHRhY2ggfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9BdHRhY2gnXG5pbXBvcnQgeyBNT0RBTF9FTEVNRU5UUyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1vZGFsL3VzZU1vZGFsJ1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQgeyBNQUlBSW5wdXQgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBSW5wdXQnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBTdHlsZWRDaGF0Rm9vdGVyIH0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQgeyBUYXNrTGlua0ljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9UYXNrTGlua0ljb24nXG5pbXBvcnQge1xuICBDc3ZGaWxlSWNvbixcbiAgTURGaWxlSWNvbixcbiAgRG9jRmlsZUljb24sXG4gIERvY3hGaWxlSWNvbixcbiAgUHB0RmlsZUljb24sXG4gIFBwdHhGaWxlSWNvbixcbiAgVGV4dEZpbGVJY29uLFxuICBQZGZGaWxlSWNvbixcbiAgSW1hZ2VGaWxlSWNvbixcbiAgWGxzeEZpbGVJY29uLFxuICBYbHNGaWxlSWNvbixcbiAgTXAzRmlsZUljb24sXG4gIFdhdkZpbGVJY29uLFxuICBGbGFjRmlsZUljb24sXG4gIE00YUZpbGVJY29uLFxuICBNcDRGaWxlSWNvbixcbiAgT2dhRmlsZUljb24sXG4gIE9nZ0ZpbGVJY29uLFxuICBXZWJtRmlsZUljb24sXG59IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgcHJlcHJvY2Vzc0ltYWdlRm9yQmFja2VuZCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2ltYWdlUHJlcHJvY2Vzc29yJ1xuaW1wb3J0IHsgdmFsaWRhdGVJc01haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy92YWxpZGF0ZUlzTWFpYSdcbmltcG9ydCB7IGlzTWFpYWtlckFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWdlbnREaXNwbGF5TmFtZSdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBDaGF0RGlzY2xhaW1lck1lc3NhZ2UgfSBmcm9tICcuLi8uLi9hdG9tcy9DaGF0RGlzY2xhaW1lck1lc3NhZ2UnXG5pbXBvcnQgdHlwZSB7IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlIH0gZnJvbSAnLi4vQ2hhdEFJTW9kYWwvbGF5b3V0J1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50RmlsZSA9IHtcbiAgZmlsZTogRmlsZVxuICBvcmlnaW5hbEZpbGU/OiBGaWxlXG4gIHVybF90aHVtYm5haWw/OiBzdHJpbmdcbiAgdXJsX29yaWdpbmFsPzogc3RyaW5nXG4gIHVybF9maWxlPzogc3RyaW5nXG4gIHJvbGU/OiAndXNlcicgfCAnYXNzaXN0YW50J1xuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzaXplOiBudW1iZXJcbiAgdHlwZTogc3RyaW5nXG4gIGljb24/OiBSZWFjdE5vZGVcbiAgZXh0Pzogc3RyaW5nXG4gIHN0YXR1cz86ICdwZW5kaW5nJyB8ICdwcm9jZXNzaW5nJyB8ICdkb25lJyB8ICdmYWlsZWQnIHwgJ3N0YXJ0ZWQnXG59XG5cbnR5cGUgQ2hhdEZvb3RlclByb3BzID0ge1xuICBpdGVtcz86IHN0cmluZ1tdXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNXcml0aW5nPzogYm9vbGVhblxuICBvblNlbmRNZXNzYWdlOiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgc2NJZD86IHN0cmluZ1xuICApID0+IHZvaWRcbiAgb25TdG9wR2VuZXJhdGlvbj86ICgoKSA9PiB2b2lkKSB8IG51bGxcbiAgY2hhdElkPzogc3RyaW5nIHwgbnVsbFxuICBuZXdDaGF0S2V5PzogbnVtYmVyXG4gIHRvb2x0aXBaSW5kZXg/OiBudW1iZXJcbiAgbGF5b3V0TW9kZT86IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlXG4gIG9uSW5wdXRGb2N1cz86ICgpID0+IHZvaWRcbiAgaGlkZURpc2NsYWltZXI/OiBib29sZWFuXG4gIC8qKiBIb21lIC9tYWlhOiBwbGFjZWhvbGRlciBvcmNoZXN0cmF0b3IgeSBAIGFudGVzIGRlIHF1ZSBsbGVndWUgZWwgYWdlbnRlLiAqL1xuICBvcmNoZXN0cmF0b3JIb21lQ29tcG9zZXI/OiBib29sZWFuXG59XG5cbmV4cG9ydCBjb25zdCBJY29uQnlGaWxlVHlwZSA9IHtcbiAgJ3RleHQvcGxhaW4nOiA8VGV4dEZpbGVJY29uIC8+LFxuICAndGV4dC94LW1hcmtkb3duJzogPE1ERmlsZUljb24gLz4sXG4gICd0ZXh0L2Nzdic6IDxDc3ZGaWxlSWNvbiAvPixcbiAgJ2FwcGxpY2F0aW9uL21zd29yZCc6IDxEb2NGaWxlSWNvbiAvPixcbiAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JzogPERvY3hGaWxlSWNvbiAvPixcbiAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JzogPFBwdEZpbGVJY29uIC8+LFxuICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbic6IDxQcHR4RmlsZUljb24gLz4sXG4gICdhcHBsaWNhdGlvbi9wZGYnOiA8UGRmRmlsZUljb24gLz4sXG4gICdpbWFnZS9wbmcnOiA8SW1hZ2VGaWxlSWNvbiAvPixcbiAgJ2ltYWdlL2pwZWcnOiA8SW1hZ2VGaWxlSWNvbiAvPixcbiAgJ2ltYWdlL2pwZyc6IDxJbWFnZUZpbGVJY29uIC8+LFxuICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnOiA8WGxzeEZpbGVJY29uIC8+LFxuICAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJzogPFhsc0ZpbGVJY29uIC8+LFxuICAnYXVkaW8vbXBlZyc6IDxNcDNGaWxlSWNvbiAvPixcbiAgJ2F1ZGlvL2ZsYWMnOiA8RmxhY0ZpbGVJY29uIC8+LFxuICAnYXVkaW8vbXA0JzogPE1wNEZpbGVJY29uIC8+LFxuICAnYXVkaW8vbTRhJzogPE00YUZpbGVJY29uIC8+LFxuICAnYXVkaW8vb2dnJzogPE9nZ0ZpbGVJY29uIC8+LFxuICAnYXVkaW8vb2dhJzogPE9nYUZpbGVJY29uIC8+LFxuICAnYXVkaW8vd2F2JzogPFdhdkZpbGVJY29uIC8+LFxuICAnYXVkaW8vd2VibSc6IDxXZWJtRmlsZUljb24gLz4sXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDaGF0Rm9vdGVyKHtcbiAgb25TZW5kTWVzc2FnZSxcbiAgaXRlbXMsXG4gIGRpc2FibGVkLFxuICBpc1N0cmVhbWluZyxcbiAgaXNXcml0aW5nLFxuICBvblN0b3BHZW5lcmF0aW9uLFxuICBjaGF0SWQsXG4gIG5ld0NoYXRLZXksXG4gIHRvb2x0aXBaSW5kZXgsXG4gIGxheW91dE1vZGUsXG4gIG9uSW5wdXRGb2N1cyxcbiAgaGlkZURpc2NsYWltZXIgPSBmYWxzZSxcbiAgb3JjaGVzdHJhdG9ySG9tZUNvbXBvc2VyID0gZmFsc2UsXG59OiBDaGF0Rm9vdGVyUHJvcHMpIHtcbiAgY29uc3QgeyBwcm9qZWN0LCBhZ2VudCwgY2hpcHNQcm9qZWN0LCBjbGllbnQsIHRhc2ssIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgaW5wdXRQb3BvdmVyQW5jaG9yUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBpc09yY2hlc3RyYXRvciA9IGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJ1xuICBjb25zdCB1c2VPcmNoZXN0cmF0b3JIb21lUGxhY2Vob2xkZXIgPSBvcmNoZXN0cmF0b3JIb21lQ29tcG9zZXIgJiYgKCFhZ2VudCB8fCBpc09yY2hlc3RyYXRvcilcbiAgY29uc3QgW2F0dGFjaG1lbnRzLCBzZXRBdHRhY2htZW50c10gPSB1c2VTdGF0ZTxBdHRhY2htZW50RmlsZVtdPihbXSlcbiAgY29uc3QgW2xvYWRpbmdNZXNzYWdlcywgc2V0TG9hZGluZ01lc3NhZ2VzXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IHJlcG9ydGVkRXZlbnQgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA9IGlzTWFpYWtlckFnZW50KGFnZW50KVxuXG4gIC8vIHVzZUVmZmVjdCB0byBsaXN0ZW4gbG9hZGluZ01lc3NhZ2VzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlTG9hZGluZ01lc3NhZ2VzQ2hhbmdlID0gKGU6IEN1c3RvbUV2ZW50KSA9PiB7XG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZXMoZS5kZXRhaWwubG9hZGluZ01lc3NhZ2VzKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYXQtbG9hZGluZy1tZXNzYWdlcy1jaGFuZ2VkJywgaGFuZGxlTG9hZGluZ01lc3NhZ2VzQ2hhbmdlIGFzIEV2ZW50TGlzdGVuZXIpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhdC1sb2FkaW5nLW1lc3NhZ2VzLWNoYW5nZWQnLCBoYW5kbGVMb2FkaW5nTWVzc2FnZXNDaGFuZ2UgYXMgRXZlbnRMaXN0ZW5lcilcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIENsZWFyIGF0dGFjaG1lbnRzIHdoZW4gc2Vzc2lvbiBjaGFuZ2VzICh1c2VyIHN3aXRjaGVzIHRvIGEgZGlmZmVyZW50IGNoYXQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2Vzc2lvbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgIGlmIChkZWVwTGlua1NlbmRQZW5kaW5nUmVmKSB7XG4gICAgICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgICBzZXRBdHRhY2htZW50cyhbXSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjaGF0LXNlc3Npb24tY2hhbmdlZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuICAgIH1cbiAgfSwgW2RlZXBMaW5rU2VuZFBlbmRpbmdSZWZdKVxuXG4gIGNvbnN0IHsgY2hpcEl0ZW1zLCBjaGlwVHlwZSwgY2hpcEVudGl0eUlkIH0gPSB1c2VNZW1vPHtcbiAgICBjaGlwSXRlbXM6IHN0cmluZ1tdXG4gICAgY2hpcFR5cGU/OiBDb250ZXh0RW50aXR5VHlwZVxuICAgIGNoaXBFbnRpdHlJZD86IHN0cmluZyB8IG51bWJlclxuICB9PigoKSA9PiB7XG4gICAgaWYgKGl0ZW1zKSByZXR1cm4geyBjaGlwSXRlbXM6IGl0ZW1zIH1cblxuICAgIC8vIE1vbm8tY29udGV4dG86IHNvbG8gbGEgZW50aWRhZCBtw6FzIGVzcGVjw61maWNhIChzaW4gYW5pZGFyIGNsaWVudGUvcHJveWVjdG8vdGFyZWEpLlxuICAgIGlmIChhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpIHtcbiAgICAgIGlmICh0YXNrPy5uYW1lKSByZXR1cm4geyBjaGlwSXRlbXM6IFt0YXNrLm5hbWVdLCBjaGlwVHlwZTogJ3Rhc2snLCBjaGlwRW50aXR5SWQ6IHRhc2suaWQgfVxuICAgICAgaWYgKGNoaXBzUHJvamVjdD8ucHJvamVjdE5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjaGlwSXRlbXM6IFtjaGlwc1Byb2plY3QucHJvamVjdE5hbWVdLFxuICAgICAgICAgIGNoaXBUeXBlOiAncHJvamVjdCcsXG4gICAgICAgICAgY2hpcEVudGl0eUlkOiBjaGlwc1Byb2plY3QucHJvamVjdElkLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2xpZW50Py5uYW1lKSByZXR1cm4geyBjaGlwSXRlbXM6IFtjbGllbnQubmFtZV0sIGNoaXBUeXBlOiAnY2xpZW50JywgY2hpcEVudGl0eUlkOiBjbGllbnQuaWQgfVxuICAgICAgcmV0dXJuIHsgY2hpcEl0ZW1zOiBbXSB9XG4gICAgfVxuXG4gICAgaWYgKGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnICYmIGNsaWVudD8ubmFtZSkge1xuICAgICAgcmV0dXJuIHsgY2hpcEl0ZW1zOiBbY2xpZW50Lm5hbWVdLCBjaGlwVHlwZTogJ2NsaWVudCcsIGNoaXBFbnRpdHlJZDogY2xpZW50LmlkIH1cbiAgICB9XG4gICAgaWYgKHRhc2s/Lm5hbWUpIHJldHVybiB7IGNoaXBJdGVtczogW3Rhc2submFtZV0sIGNoaXBUeXBlOiAndGFzaycsIGNoaXBFbnRpdHlJZDogdGFzay5pZCB9XG4gICAgaWYgKGNoaXBzUHJvamVjdD8ucHJvamVjdE5hbWUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNoaXBJdGVtczogW2NoaXBzUHJvamVjdC5wcm9qZWN0TmFtZV0sXG4gICAgICAgIGNoaXBUeXBlOiAncHJvamVjdCcsXG4gICAgICAgIGNoaXBFbnRpdHlJZDogY2hpcHNQcm9qZWN0LnByb2plY3RJZCxcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb2plY3Q/Lm5hbWUpIHJldHVybiB7IGNoaXBJdGVtczogW3Byb2plY3QubmFtZV0sIGNoaXBUeXBlOiAncHJvamVjdCcsIGNoaXBFbnRpdHlJZDogcHJvamVjdC5pZCB9XG5cbiAgICByZXR1cm4geyBjaGlwSXRlbXM6IFtdIH1cbiAgfSwgW2l0ZW1zLCBwcm9qZWN0LCBjaGlwc1Byb2plY3QsIGFnZW50Py5lbnRpdHksIGFnZW50Py50eXBlLCBjbGllbnQsIHRhc2tdKVxuXG4gIGNvbnN0IGhhbmRsZUNvbnRleHRDaGlwTmF2aWdhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAoZW50aXR5VHlwZTogQ29udGV4dEVudGl0eVR5cGUsIGlkOiBzdHJpbmcgfCBudW1iZXIpID0+IHtcbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRDb250ZXh0Q2hpcENsaWNrLCB7IGVudGl0eV90eXBlOiBlbnRpdHlUeXBlLCBlbnRpdHlfaWQ6IFN0cmluZyhpZCkgfSlcbiAgICB9LFxuICAgIFtldmVudF1cbiAgKVxuXG4gIGNvbnN0IG9uQ2hhbmdlID0gKCkgPT4ge1xuICAgIGlmIChyZXBvcnRlZEV2ZW50LmN1cnJlbnQpIHJldHVyblxuICAgIGV2ZW50KEVWRU5UUy5wbUFpVHlwZWRUZXh0LCB7XG4gICAgICBhZ2VudF90eXBlOiBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPyAnbWFya2V0cGxhY2UnIDogYWdlbnQ/LnR5cGUsXG4gICAgfSlcbiAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSB0cnVlXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IChcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgbmV3QXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICBmdWFJZD86IHN0cmluZyxcbiAgICBzY0lkPzogc3RyaW5nXG4gICkgPT4ge1xuICAgIGNvbnN0IGZyb21EZWVwTGluayA9IEJvb2xlYW4oZGVlcExpbmtTZW5kUGVuZGluZ1JlZj8uY3VycmVudClcbiAgICBpZiAoZGVlcExpbmtTZW5kUGVuZGluZ1JlZikge1xuICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9XG4gICAgZXZlbnQoRVZFTlRTLmFpQ2hhdFNlbmQsIHtcbiAgICAgIGFnZW50X3R5cGU6IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA/ICdtYXJrZXRwbGFjZScgOiBhZ2VudD8udHlwZSxcbiAgICAgIGFnZW50X2lkOiBhZ2VudD8uaWQsXG4gICAgICBhZ2VudF9uYW1lOiBhZ2VudD8ubmFtZSxcbiAgICAgIC4uLihmcm9tRGVlcExpbmsgPyB7IHNvdXJjZTogJ2RlZXBfbGluaycgfSA6IHt9KSxcbiAgICB9KVxuICAgIGNvbnN0IHNraWxsSWRzID0gKG1lbnRpb25zID8/IFtdKS5maWx0ZXIobWVudGlvbiA9PiBtZW50aW9uLnR5cGUgPT09ICdza2lsbCcpLm1hcChtZW50aW9uID0+IFN0cmluZyhtZW50aW9uLmlkKSlcbiAgICBpZiAoc2tpbGxJZHMubGVuZ3RoID4gMCkge1xuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdFNraWxsU2VuZCwge1xuICAgICAgICBza2lsbF9pZHM6IHNraWxsSWRzLFxuICAgICAgICBza2lsbF9jb3VudDogc2tpbGxJZHMubGVuZ3RoLFxuICAgICAgICBhZ2VudF90eXBlOiBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPyAnbWFya2V0cGxhY2UnIDogYWdlbnQ/LnR5cGUsXG4gICAgICB9KVxuICAgIH1cbiAgICBvblNlbmRNZXNzYWdlKG1lc3NhZ2UsIG5ld0F0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgICBzZXRBdHRhY2htZW50cyhbXSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEZhcSA9IChtZXNzYWdlOiBzdHJpbmcsIGZhcUlkOiBzdHJpbmcpID0+IHtcbiAgICBvblNlbmRNZXNzYWdlKG1lc3NhZ2UsIHVuZGVmaW5lZCwgZmFxSWQsIHVuZGVmaW5lZClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZpbGVBdHRhY2ggPSBhc3luYyAoZmlsZTogRmlsZSkgPT4ge1xuICAgIGNvbnN0IGZpbGVOYW1lUGFydHMgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKVxuICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBmaWxlTmFtZVBhcnRzLmxlbmd0aCA+IDEgPyBgLiR7ZmlsZU5hbWVQYXJ0cy5wb3AoKT8udG9Mb3dlckNhc2UoKX1gIDogJydcbiAgICBjb25zdCBpc0ltYWdlQnlFeHRlbnNpb24gPSBbJy5wbmcnLCAnLmpwZycsICcuanBlZyddLmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pXG4gICAgY29uc3QgaXNJbWFnZUJ5TWltZSA9IGZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKVxuICAgIGNvbnN0IGlzSW1hZ2UgPSBpc0ltYWdlQnlNaW1lICYmIGlzSW1hZ2VCeUV4dGVuc2lvblxuICAgIC8vIFNpIGVsIE1JTUUgbm8gZGlzdGluZ3VlIGJpZW4gbGEgZXh0ZW5zacOzbiAoYXVkaW8vb2dnLCBhdWRpby9tcDQsIFBvd2VyUG9pbnQpLCB1c2FyIGVsIGljb25vIHBvciBleHRlbnNpw7NuXG4gICAgY29uc3QgZXh0ZW5zaW9uVG9JY29uOiBSZWNvcmQ8c3RyaW5nLCBSZWFjdE5vZGU+ID0ge1xuICAgICAgJy5vZ2cnOiA8T2dnRmlsZUljb24gLz4sXG4gICAgICAnLm9nYSc6IDxPZ2FGaWxlSWNvbiAvPixcbiAgICAgICcubXA0JzogPE1wNEZpbGVJY29uIC8+LFxuICAgICAgJy5tNGEnOiA8TTRhRmlsZUljb24gLz4sXG4gICAgICAnLnBwdCc6IDxQcHRGaWxlSWNvbiAvPixcbiAgICAgICcucHB0eCc6IDxQcHR4RmlsZUljb24gLz4sXG4gICAgfVxuXG4gICAgbGV0IGljb24gPSBJY29uQnlGaWxlVHlwZVtmaWxlLnR5cGVdXG5cbiAgICAvLyBTaSBlbCB0aXBvIGVzIGF1ZGlvL29nZywgYXVkaW8vbXA0IG8gUG93ZXJQb2ludCBnZW7DqXJpY28sIHVzYXIgbGEgZXh0ZW5zacOzbiBwYXJhIGVsIGljb25vXG4gICAgaWYgKFxuICAgICAgKGZpbGUudHlwZSA9PT0gJ2F1ZGlvL29nZycgfHwgZmlsZS50eXBlID09PSAnYXVkaW8vbXA0JyB8fCBmaWxlLnR5cGUgPT09ICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcpICYmXG4gICAgICBmaWxlRXh0ZW5zaW9uXG4gICAgKSB7XG4gICAgICBpY29uID0gZXh0ZW5zaW9uVG9JY29uW2ZpbGVFeHRlbnNpb25dIHx8IGljb25cbiAgICB9XG5cbiAgICBpZiAoIWljb24pIHtcbiAgICAgIGNvbnN0IGV4dGVuc2lvblRvTWltZVR5cGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICcudHh0JzogJ3RleHQvcGxhaW4nLFxuICAgICAgICAnLm1kJzogJ3RleHQveC1tYXJrZG93bicsXG4gICAgICAgICcuY3N2JzogJ3RleHQvY3N2JyxcbiAgICAgICAgJy5kb2MnOiAnYXBwbGljYXRpb24vbXN3b3JkJyxcbiAgICAgICAgJy5kb2N4JzogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JyxcbiAgICAgICAgJy5wcHQnOiAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnLFxuICAgICAgICAnLnBwdHgnOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbicsXG4gICAgICAgICcucGRmJzogJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAgICAgICcueGxzeCc6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXG4gICAgICAgICcueGxzJzogJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcsXG4gICAgICAgICcuZmxhYyc6ICdhdWRpby9mbGFjJyxcbiAgICAgICAgJy5tNGEnOiAnYXVkaW8vbTRhJyxcbiAgICAgICAgJy5tcDMnOiAnYXVkaW8vbXBlZycsXG4gICAgICAgICcubXA0JzogJ2F1ZGlvL21wNCcsXG4gICAgICAgICcub2dhJzogJ2F1ZGlvL29nYScsXG4gICAgICAgICcub2dnJzogJ2F1ZGlvL29nZycsXG4gICAgICAgICcud2F2JzogJ2F1ZGlvL3dhdicsXG4gICAgICAgICcud2VibSc6ICdhdWRpby93ZWJtJyxcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1pbWVUeXBlQnlFeHRlbnNpb24gPSBleHRlbnNpb25Ub01pbWVUeXBlW2ZpbGVFeHRlbnNpb25dXG4gICAgICBpZiAobWltZVR5cGVCeUV4dGVuc2lvbikge1xuICAgICAgICBpY29uID0gSWNvbkJ5RmlsZVR5cGVbbWltZVR5cGVCeUV4dGVuc2lvbl1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGljb24gPSA8QXR0YWNoIGNvbG9yPVwicmdiYSgxMzUsIDY0LCAxOTEsIDEpXCIgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgfVxuICAgIH1cbiAgICBsZXQgcHJvY2Vzc2VkRmlsZSA9IGZpbGVcblxuICAgIC8vIFNpIGVzIHVuYSBpbWFnZW4sIHByZS1wcm9jZXNhcmxhIHBhcmEgZWwgYmFja2VuZCAoZWwgY2hpcCBkZWwgaW5wdXQgdXNhIGVsIMOtY29ubyBkZSB0aXBvKS5cbiAgICBpZiAoaXNJbWFnZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcHJvY2Vzc2VkRmlsZSA9IGF3YWl0IHByZXByb2Nlc3NJbWFnZUZvckJhY2tlbmQoZmlsZSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHByZS1wcm9jZXNhbmRvIGltYWdlbjonLCBlcnJvcilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBuZXdBdHRhY2htZW50OiBBdHRhY2htZW50RmlsZSA9IHtcbiAgICAgIGZpbGU6IHByb2Nlc3NlZEZpbGUsXG4gICAgICBvcmlnaW5hbEZpbGU6IGlzSW1hZ2UgPyBmaWxlIDogdW5kZWZpbmVkLFxuICAgICAgaWQ6IGAke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKX1gLFxuICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAgICAgc2l6ZTogcHJvY2Vzc2VkRmlsZS5zaXplLFxuICAgICAgdHlwZTogcHJvY2Vzc2VkRmlsZS50eXBlLFxuICAgICAgaWNvbixcbiAgICB9XG5cbiAgICBzZXRBdHRhY2htZW50cyhwcmV2ID0+IFsuLi5wcmV2LCBuZXdBdHRhY2htZW50XSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUF0dGFjaG1lbnQgPSAoZmlsZUlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBuZXdBdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzLmZpbHRlcihhdHRhY2htZW50ID0+IGF0dGFjaG1lbnQuaWQgIT09IGZpbGVJZClcbiAgICBzZXRBdHRhY2htZW50cyhuZXdBdHRhY2htZW50cylcbiAgfVxuXG4gIGNvbnN0IGlzTUFJQSA9IHZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KVxuICBjb25zdCBkaXNjbGFpbWVyTWVzc2FnZSA9IGlzTUFJQVxuICAgID8gdCgnY2hhdC5mb290ZXIuZGlzY2xhaW1lcicsIHsgYWdlbnROYW1lOiB0KCdnbG9iYWxzLmJyYW5kTmFtZScpIH0pXG4gICAgOiB0KCdjaGF0LmZvb3Rlci5kaXNjbGFpbWVyQWdlbnQnKVxuXG4gIGNvbnN0IGNvbnRleHRDaGlwID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFpc01BSUEgfHwgbG9hZGluZ01lc3NhZ2VzIHx8ICFjaGlwSXRlbXMubGVuZ3RoKSByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1zOiBjaGlwSXRlbXMsXG4gICAgICB0eXBlOiBjaGlwVHlwZSxcbiAgICAgIGVudGl0eUlkOiBjaGlwRW50aXR5SWQsXG4gICAgICBsZWFkaW5nSWNvbjogY2hpcFR5cGUgPT09ICd0YXNrJyA/IDxUYXNrTGlua0ljb24gd2lkdGg9ezE1fSBoZWlnaHQ9ezE1fSBjb2xvcj1cIiM4MDgwODBcIiAvPiA6IHVuZGVmaW5lZCxcbiAgICAgIG9uRW50aXR5TmF2aWdhdGU6IGhhbmRsZUNvbnRleHRDaGlwTmF2aWdhdGUsXG4gICAgfVxuICB9LCBbY2hpcEVudGl0eUlkLCBjaGlwSXRlbXMsIGNoaXBUeXBlLCBoYW5kbGVDb250ZXh0Q2hpcE5hdmlnYXRlLCBpc01BSUEsIGxvYWRpbmdNZXNzYWdlc10pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkQ2hhdEZvb3Rlcj5cbiAgICAgIDxNQUlBSW5wdXRcbiAgICAgICAgcG9wb3ZlckFuY2hvclJlZj17aW5wdXRQb3BvdmVyQW5jaG9yUmVmfVxuICAgICAgICBvblNlbmRNZXNzYWdlPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgY2xhc3NOYW1lPXtNT0RBTF9FTEVNRU5UU31cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBwbGFjZWhvbGRlcj17XG4gICAgICAgICAgdXNlT3JjaGVzdHJhdG9ySG9tZVBsYWNlaG9sZGVyXG4gICAgICAgICAgICA/IHQoJ2NoYXQuZm9vdGVyLm9yY2hlc3RyYXRvclBsYWNlaG9sZGVyJylcbiAgICAgICAgICAgIDogYWdlbnQ/LmlucHV0X3BsYWNlaG9sZGVyIHx8XG4gICAgICAgICAgICAgIChpc09yY2hlc3RyYXRvciA/IHQoJ2NoYXQuZm9vdGVyLm9yY2hlc3RyYXRvclBsYWNlaG9sZGVyJykgOiB0KCdjaGF0LmZvb3Rlci5wbGFjZWhvbGRlcicpKVxuICAgICAgICB9XG4gICAgICAgIG9yY2hlc3RyYXRvckhvbWVDb21wb3Nlcj17b3JjaGVzdHJhdG9ySG9tZUNvbXBvc2VyfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICAgIG9uRm9jdXM9e29uSW5wdXRGb2N1c31cbiAgICAgICAgb25GaWxlQXR0YWNoPXtoYW5kbGVGaWxlQXR0YWNofVxuICAgICAgICBvbkRlbGV0ZUF0dGFjaG1lbnQ9e2hhbmRsZURlbGV0ZUF0dGFjaG1lbnR9XG4gICAgICAgIGF0dGFjaG1lbnRzPXthdHRhY2htZW50c1xuICAgICAgICAgIC5maWx0ZXIoYXR0ID0+ICEhYXR0LmZpbGUpXG4gICAgICAgICAgLm1hcChhdHQgPT4gKHtcbiAgICAgICAgICAgIGZpbGU6IGF0dC5maWxlISxcbiAgICAgICAgICAgIG9yaWdpbmFsRmlsZTogYXR0Lm9yaWdpbmFsRmlsZSxcbiAgICAgICAgICAgIGlkOiBhdHQuaWQsXG4gICAgICAgICAgICBuYW1lOiBhdHQubmFtZSxcbiAgICAgICAgICAgIHNpemU6IHR5cGVvZiBhdHQuc2l6ZSA9PT0gJ251bWJlcicgPyBhdHQuc2l6ZSA6IE51bWJlcihhdHQuc2l6ZSkgfHwgMCxcbiAgICAgICAgICAgIHR5cGU6IGF0dC50eXBlLFxuICAgICAgICAgICAgaWNvbjogYXR0Lmljb24sXG4gICAgICAgICAgfSkpfVxuICAgICAgICBpc1N0cmVhbWluZz17aXNTdHJlYW1pbmd9XG4gICAgICAgIGlzV3JpdGluZz17aXNXcml0aW5nfVxuICAgICAgICBvblN0b3BHZW5lcmF0aW9uPXtvblN0b3BHZW5lcmF0aW9ufVxuICAgICAgICBjaGF0SWQ9e2NoYXRJZCB8fCB1bmRlZmluZWR9XG4gICAgICAgIG5ld0NoYXRLZXk9e25ld0NoYXRLZXl9XG4gICAgICAgIHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgIGNvbnRleHRDaGlwPXtjb250ZXh0Q2hpcH1cbiAgICAgIC8+XG4gICAgICB7aGlkZURpc2NsYWltZXIgPyBudWxsIDogPENoYXREaXNjbGFpbWVyTWVzc2FnZSBtZXNzYWdlPXtkaXNjbGFpbWVyTWVzc2FnZX0gLz59XG4gICAgPC9TdHlsZWRDaGF0Rm9vdGVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQW9CQSxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQ3BGLFNBQVNDLE1BQU0sUUFBUSx5Q0FBeUM7QUFDaEUsU0FBU0MsY0FBYyxRQUFRLGtDQUFrQzs7QUFFakU7QUFDQSxTQUFTQyxTQUFTLFFBQVEsdUJBQXVCO0FBQ2pELFNBQVNDLGdCQUFnQixRQUFRLGlDQUFpQztBQUNsRSxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBQzFDLFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLHlCQUF5QjtBQUUxRCxTQUFTQyxnQkFBZ0IsUUFBUSxVQUFVO0FBQzND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
369
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsIkF0dGFjaCIsIk1PREFMX0VMRU1FTlRTIiwiTUFJQUlucHV0IiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIlN0eWxlZENoYXRGb290ZXIiLCJUYXNrTGlua0ljb24iLCJDc3ZGaWxlSWNvbiIsIk1ERmlsZUljb24iLCJEb2NGaWxlSWNvbiIsIkRvY3hGaWxlSWNvbiIsIlBwdEZpbGVJY29uIiwiUHB0eEZpbGVJY29uIiwiVGV4dEZpbGVJY29uIiwiUGRmRmlsZUljb24iLCJJbWFnZUZpbGVJY29uIiwiWGxzeEZpbGVJY29uIiwiWGxzRmlsZUljb24iLCJNcDNGaWxlSWNvbiIsIldhdkZpbGVJY29uIiwiRmxhY0ZpbGVJY29uIiwiTTRhRmlsZUljb24iLCJNcDRGaWxlSWNvbiIsIk9nYUZpbGVJY29uIiwiT2dnRmlsZUljb24iLCJXZWJtRmlsZUljb24iLCJwcmVwcm9jZXNzSW1hZ2VGb3JCYWNrZW5kIiwidmFsaWRhdGVJc01haWEiLCJpc01haWFrZXJBZ2VudCIsIkNoYXREaXNjbGFpbWVyTWVzc2FnZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJJY29uQnlGaWxlVHlwZSIsIkNoYXRGb290ZXIiLCJfcmVmIiwib25TZW5kTWVzc2FnZSIsIml0ZW1zIiwiZGlzYWJsZWQiLCJpc1N0cmVhbWluZyIsImlzV3JpdGluZyIsIm9uU3RvcEdlbmVyYXRpb24iLCJjaGF0SWQiLCJuZXdDaGF0S2V5IiwidG9vbHRpcFpJbmRleCIsImxheW91dE1vZGUiLCJvbklucHV0Rm9jdXMiLCJfdXNlR2xvYmFsQ29udGV4dCIsInByb2plY3QiLCJhZ2VudCIsImNoaXBzUHJvamVjdCIsImNsaWVudCIsInRhc2siLCJkZWVwTGlua1NlbmRQZW5kaW5nUmVmIiwiX3VzZVQiLCJ0IiwiZXZlbnQiLCJpbnB1dFBvcG92ZXJBbmNob3JSZWYiLCJpc09yY2hlc3RyYXRvciIsInR5cGUiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJhdHRhY2htZW50cyIsInNldEF0dGFjaG1lbnRzIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJsb2FkaW5nTWVzc2FnZXMiLCJzZXRMb2FkaW5nTWVzc2FnZXMiLCJyZXBvcnRlZEV2ZW50IiwiaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50IiwiaGFuZGxlTG9hZGluZ01lc3NhZ2VzQ2hhbmdlIiwiZSIsImRldGFpbCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVTZXNzaW9uQ2hhbmdlIiwiY3VycmVudCIsIl91c2VNZW1vIiwiY2hpcEl0ZW1zIiwibmFtZSIsImNoaXBUeXBlIiwiY2hpcEVudGl0eUlkIiwiaWQiLCJwcm9qZWN0TmFtZSIsInByb2plY3RJZCIsImVudGl0eSIsImhhbmRsZUNvbnRleHRDaGlwTmF2aWdhdGUiLCJlbnRpdHlUeXBlIiwiYWlDaGF0Q29udGV4dENoaXBDbGljayIsImVudGl0eV90eXBlIiwiZW50aXR5X2lkIiwiU3RyaW5nIiwib25DaGFuZ2UiLCJwbUFpVHlwZWRUZXh0IiwiYWdlbnRfdHlwZSIsImhhbmRsZVNlbmRNZXNzYWdlIiwibWVzc2FnZSIsIm5ld0F0dGFjaG1lbnRzIiwibWVudGlvbnMiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwiZnVhSWQiLCJzY0lkIiwiZnJvbURlZXBMaW5rIiwiQm9vbGVhbiIsImFpQ2hhdFNlbmQiLCJfb2JqZWN0U3ByZWFkIiwiYWdlbnRfaWQiLCJhZ2VudF9uYW1lIiwic291cmNlIiwic2tpbGxJZHMiLCJmaWx0ZXIiLCJtZW50aW9uIiwibWFwIiwibGVuZ3RoIiwiYWlDaGF0U2tpbGxTZW5kIiwic2tpbGxfaWRzIiwic2tpbGxfY291bnQiLCJoYW5kbGVTZWxlY3RGYXEiLCJ1bmRlZmluZWQiLCJoYW5kbGVGaWxlQXR0YWNoIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsImZpbGUiLCJfZmlsZU5hbWVQYXJ0cyRwb3AiLCJmaWxlTmFtZVBhcnRzIiwiZmlsZUV4dGVuc2lvbiIsImlzSW1hZ2VCeUV4dGVuc2lvbiIsImlzSW1hZ2VCeU1pbWUiLCJpc0ltYWdlIiwiZXh0ZW5zaW9uVG9JY29uIiwiaWNvbiIsImV4dGVuc2lvblRvTWltZVR5cGUiLCJtaW1lVHlwZUJ5RXh0ZW5zaW9uIiwicHJvY2Vzc2VkRmlsZSIsIm5ld0F0dGFjaG1lbnQiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0Iiwic3BsaXQiLCJjb25jYXQiLCJwb3AiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwic3RhcnRzV2l0aCIsImNvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJzZW50IiwiY29uc29sZSIsImVycm9yIiwib3JpZ2luYWxGaWxlIiwiRGF0ZSIsIm5vdyIsIk1hdGgiLCJyYW5kb20iLCJzaXplIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVEZWxldGVBdHRhY2htZW50IiwiZmlsZUlkIiwiYXR0YWNobWVudCIsImlzTUFJQSIsImRpc2NsYWltZXJNZXNzYWdlIiwiYWdlbnROYW1lIiwiY29udGV4dENoaXAiLCJlbnRpdHlJZCIsImxlYWRpbmdJY29uIiwib25FbnRpdHlOYXZpZ2F0ZSIsImNoaWxkcmVuIiwicG9wb3ZlckFuY2hvclJlZiIsImNsYXNzTmFtZSIsInBsYWNlaG9sZGVyIiwiaW5wdXRfcGxhY2Vob2xkZXIiLCJvbkZvY3VzIiwib25GaWxlQXR0YWNoIiwib25EZWxldGVBdHRhY2htZW50IiwiYXR0IiwiTnVtYmVyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3Rlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3JlcXVpcmUtZGVmYXVsdC1wcm9wcyAqL1xuaW1wb3J0IHsgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBBdHRhY2ggfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9BdHRhY2gnXG5pbXBvcnQgeyBNT0RBTF9FTEVNRU5UUyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1vZGFsL3VzZU1vZGFsJ1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQgeyBNQUlBSW5wdXQgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBSW5wdXQnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBTdHlsZWRDaGF0Rm9vdGVyIH0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQgeyBUYXNrTGlua0ljb24gfSBmcm9tICcuLi8uLi9hdG9tcy9pY29ucy9UYXNrTGlua0ljb24nXG5pbXBvcnQge1xuICBDc3ZGaWxlSWNvbixcbiAgTURGaWxlSWNvbixcbiAgRG9jRmlsZUljb24sXG4gIERvY3hGaWxlSWNvbixcbiAgUHB0RmlsZUljb24sXG4gIFBwdHhGaWxlSWNvbixcbiAgVGV4dEZpbGVJY29uLFxuICBQZGZGaWxlSWNvbixcbiAgSW1hZ2VGaWxlSWNvbixcbiAgWGxzeEZpbGVJY29uLFxuICBYbHNGaWxlSWNvbixcbiAgTXAzRmlsZUljb24sXG4gIFdhdkZpbGVJY29uLFxuICBGbGFjRmlsZUljb24sXG4gIE00YUZpbGVJY29uLFxuICBNcDRGaWxlSWNvbixcbiAgT2dhRmlsZUljb24sXG4gIE9nZ0ZpbGVJY29uLFxuICBXZWJtRmlsZUljb24sXG59IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgcHJlcHJvY2Vzc0ltYWdlRm9yQmFja2VuZCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2ltYWdlUHJlcHJvY2Vzc29yJ1xuaW1wb3J0IHsgdmFsaWRhdGVJc01haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy92YWxpZGF0ZUlzTWFpYSdcbmltcG9ydCB7IGlzTWFpYWtlckFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWdlbnREaXNwbGF5TmFtZSdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBDaGF0RGlzY2xhaW1lck1lc3NhZ2UgfSBmcm9tICcuLi8uLi9hdG9tcy9DaGF0RGlzY2xhaW1lck1lc3NhZ2UnXG5pbXBvcnQgdHlwZSB7IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlIH0gZnJvbSAnLi4vQ2hhdEFJTW9kYWwvbGF5b3V0J1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50RmlsZSA9IHtcbiAgZmlsZTogRmlsZVxuICBvcmlnaW5hbEZpbGU/OiBGaWxlXG4gIHVybF90aHVtYm5haWw/OiBzdHJpbmdcbiAgdXJsX29yaWdpbmFsPzogc3RyaW5nXG4gIHVybF9maWxlPzogc3RyaW5nXG4gIHJvbGU/OiAndXNlcicgfCAnYXNzaXN0YW50J1xuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzaXplOiBudW1iZXJcbiAgdHlwZTogc3RyaW5nXG4gIGljb24/OiBSZWFjdE5vZGVcbiAgZXh0Pzogc3RyaW5nXG4gIHN0YXR1cz86ICdwZW5kaW5nJyB8ICdwcm9jZXNzaW5nJyB8ICdkb25lJyB8ICdmYWlsZWQnIHwgJ3N0YXJ0ZWQnXG59XG5cbnR5cGUgQ2hhdEZvb3RlclByb3BzID0ge1xuICBpdGVtcz86IHN0cmluZ1tdXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNXcml0aW5nPzogYm9vbGVhblxuICBvblNlbmRNZXNzYWdlOiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgc2NJZD86IHN0cmluZ1xuICApID0+IHZvaWRcbiAgb25TdG9wR2VuZXJhdGlvbj86ICgoKSA9PiB2b2lkKSB8IG51bGxcbiAgY2hhdElkPzogc3RyaW5nIHwgbnVsbFxuICBuZXdDaGF0S2V5PzogbnVtYmVyXG4gIHRvb2x0aXBaSW5kZXg/OiBudW1iZXJcbiAgbGF5b3V0TW9kZT86IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlXG4gIG9uSW5wdXRGb2N1cz86ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGNvbnN0IEljb25CeUZpbGVUeXBlID0ge1xuICAndGV4dC9wbGFpbic6IDxUZXh0RmlsZUljb24gLz4sXG4gICd0ZXh0L3gtbWFya2Rvd24nOiA8TURGaWxlSWNvbiAvPixcbiAgJ3RleHQvY3N2JzogPENzdkZpbGVJY29uIC8+LFxuICAnYXBwbGljYXRpb24vbXN3b3JkJzogPERvY0ZpbGVJY29uIC8+LFxuICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnOiA8RG9jeEZpbGVJY29uIC8+LFxuICAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnOiA8UHB0RmlsZUljb24gLz4sXG4gICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uJzogPFBwdHhGaWxlSWNvbiAvPixcbiAgJ2FwcGxpY2F0aW9uL3BkZic6IDxQZGZGaWxlSWNvbiAvPixcbiAgJ2ltYWdlL3BuZyc6IDxJbWFnZUZpbGVJY29uIC8+LFxuICAnaW1hZ2UvanBlZyc6IDxJbWFnZUZpbGVJY29uIC8+LFxuICAnaW1hZ2UvanBnJzogPEltYWdlRmlsZUljb24gLz4sXG4gICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCc6IDxYbHN4RmlsZUljb24gLz4sXG4gICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnOiA8WGxzRmlsZUljb24gLz4sXG4gICdhdWRpby9tcGVnJzogPE1wM0ZpbGVJY29uIC8+LFxuICAnYXVkaW8vZmxhYyc6IDxGbGFjRmlsZUljb24gLz4sXG4gICdhdWRpby9tcDQnOiA8TXA0RmlsZUljb24gLz4sXG4gICdhdWRpby9tNGEnOiA8TTRhRmlsZUljb24gLz4sXG4gICdhdWRpby9vZ2cnOiA8T2dnRmlsZUljb24gLz4sXG4gICdhdWRpby9vZ2EnOiA8T2dhRmlsZUljb24gLz4sXG4gICdhdWRpby93YXYnOiA8V2F2RmlsZUljb24gLz4sXG4gICdhdWRpby93ZWJtJzogPFdlYm1GaWxlSWNvbiAvPixcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENoYXRGb290ZXIoe1xuICBvblNlbmRNZXNzYWdlLFxuICBpdGVtcyxcbiAgZGlzYWJsZWQsXG4gIGlzU3RyZWFtaW5nLFxuICBpc1dyaXRpbmcsXG4gIG9uU3RvcEdlbmVyYXRpb24sXG4gIGNoYXRJZCxcbiAgbmV3Q2hhdEtleSxcbiAgdG9vbHRpcFpJbmRleCxcbiAgbGF5b3V0TW9kZSxcbiAgb25JbnB1dEZvY3VzLFxufTogQ2hhdEZvb3RlclByb3BzKSB7XG4gIGNvbnN0IHsgcHJvamVjdCwgYWdlbnQsIGNoaXBzUHJvamVjdCwgY2xpZW50LCB0YXNrLCBkZWVwTGlua1NlbmRQZW5kaW5nUmVmIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IGlucHV0UG9wb3ZlckFuY2hvclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgaXNPcmNoZXN0cmF0b3IgPSBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcbiAgY29uc3QgW2F0dGFjaG1lbnRzLCBzZXRBdHRhY2htZW50c10gPSB1c2VTdGF0ZTxBdHRhY2htZW50RmlsZVtdPihbXSlcbiAgY29uc3QgW2xvYWRpbmdNZXNzYWdlcywgc2V0TG9hZGluZ01lc3NhZ2VzXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IHJlcG9ydGVkRXZlbnQgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA9IGlzTWFpYWtlckFnZW50KGFnZW50KVxuXG4gIC8vIHVzZUVmZmVjdCB0byBsaXN0ZW4gbG9hZGluZ01lc3NhZ2VzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlTG9hZGluZ01lc3NhZ2VzQ2hhbmdlID0gKGU6IEN1c3RvbUV2ZW50KSA9PiB7XG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZXMoZS5kZXRhaWwubG9hZGluZ01lc3NhZ2VzKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYXQtbG9hZGluZy1tZXNzYWdlcy1jaGFuZ2VkJywgaGFuZGxlTG9hZGluZ01lc3NhZ2VzQ2hhbmdlIGFzIEV2ZW50TGlzdGVuZXIpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhdC1sb2FkaW5nLW1lc3NhZ2VzLWNoYW5nZWQnLCBoYW5kbGVMb2FkaW5nTWVzc2FnZXNDaGFuZ2UgYXMgRXZlbnRMaXN0ZW5lcilcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIENsZWFyIGF0dGFjaG1lbnRzIHdoZW4gc2Vzc2lvbiBjaGFuZ2VzICh1c2VyIHN3aXRjaGVzIHRvIGEgZGlmZmVyZW50IGNoYXQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2Vzc2lvbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgIGlmIChkZWVwTGlua1NlbmRQZW5kaW5nUmVmKSB7XG4gICAgICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgICBzZXRBdHRhY2htZW50cyhbXSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjaGF0LXNlc3Npb24tY2hhbmdlZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuICAgIH1cbiAgfSwgW2RlZXBMaW5rU2VuZFBlbmRpbmdSZWZdKVxuXG4gIGNvbnN0IHsgY2hpcEl0ZW1zLCBjaGlwVHlwZSwgY2hpcEVudGl0eUlkIH0gPSB1c2VNZW1vPHtcbiAgICBjaGlwSXRlbXM6IHN0cmluZ1tdXG4gICAgY2hpcFR5cGU/OiBDb250ZXh0RW50aXR5VHlwZVxuICAgIGNoaXBFbnRpdHlJZD86IHN0cmluZyB8IG51bWJlclxuICB9PigoKSA9PiB7XG4gICAgaWYgKGl0ZW1zKSByZXR1cm4geyBjaGlwSXRlbXM6IGl0ZW1zIH1cblxuICAgIC8vIE1vbm8tY29udGV4dG86IHNvbG8gbGEgZW50aWRhZCBtw6FzIGVzcGVjw61maWNhIChzaW4gYW5pZGFyIGNsaWVudGUvcHJveWVjdG8vdGFyZWEpLlxuICAgIGlmIChhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpIHtcbiAgICAgIGlmICh0YXNrPy5uYW1lKSByZXR1cm4geyBjaGlwSXRlbXM6IFt0YXNrLm5hbWVdLCBjaGlwVHlwZTogJ3Rhc2snLCBjaGlwRW50aXR5SWQ6IHRhc2suaWQgfVxuICAgICAgaWYgKGNoaXBzUHJvamVjdD8ucHJvamVjdE5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjaGlwSXRlbXM6IFtjaGlwc1Byb2plY3QucHJvamVjdE5hbWVdLFxuICAgICAgICAgIGNoaXBUeXBlOiAncHJvamVjdCcsXG4gICAgICAgICAgY2hpcEVudGl0eUlkOiBjaGlwc1Byb2plY3QucHJvamVjdElkLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2xpZW50Py5uYW1lKSByZXR1cm4geyBjaGlwSXRlbXM6IFtjbGllbnQubmFtZV0sIGNoaXBUeXBlOiAnY2xpZW50JywgY2hpcEVudGl0eUlkOiBjbGllbnQuaWQgfVxuICAgICAgcmV0dXJuIHsgY2hpcEl0ZW1zOiBbXSB9XG4gICAgfVxuXG4gICAgaWYgKGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnICYmIGNsaWVudD8ubmFtZSkge1xuICAgICAgcmV0dXJuIHsgY2hpcEl0ZW1zOiBbY2xpZW50Lm5hbWVdLCBjaGlwVHlwZTogJ2NsaWVudCcsIGNoaXBFbnRpdHlJZDogY2xpZW50LmlkIH1cbiAgICB9XG4gICAgaWYgKHRhc2s/Lm5hbWUpIHJldHVybiB7IGNoaXBJdGVtczogW3Rhc2submFtZV0sIGNoaXBUeXBlOiAndGFzaycsIGNoaXBFbnRpdHlJZDogdGFzay5pZCB9XG4gICAgaWYgKGNoaXBzUHJvamVjdD8ucHJvamVjdE5hbWUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNoaXBJdGVtczogW2NoaXBzUHJvamVjdC5wcm9qZWN0TmFtZV0sXG4gICAgICAgIGNoaXBUeXBlOiAncHJvamVjdCcsXG4gICAgICAgIGNoaXBFbnRpdHlJZDogY2hpcHNQcm9qZWN0LnByb2plY3RJZCxcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb2plY3Q/Lm5hbWUpIHJldHVybiB7IGNoaXBJdGVtczogW3Byb2plY3QubmFtZV0sIGNoaXBUeXBlOiAncHJvamVjdCcsIGNoaXBFbnRpdHlJZDogcHJvamVjdC5pZCB9XG5cbiAgICByZXR1cm4geyBjaGlwSXRlbXM6IFtdIH1cbiAgfSwgW2l0ZW1zLCBwcm9qZWN0LCBjaGlwc1Byb2plY3QsIGFnZW50Py5lbnRpdHksIGFnZW50Py50eXBlLCBjbGllbnQsIHRhc2tdKVxuXG4gIGNvbnN0IGhhbmRsZUNvbnRleHRDaGlwTmF2aWdhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAoZW50aXR5VHlwZTogQ29udGV4dEVudGl0eVR5cGUsIGlkOiBzdHJpbmcgfCBudW1iZXIpID0+IHtcbiAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRDb250ZXh0Q2hpcENsaWNrLCB7IGVudGl0eV90eXBlOiBlbnRpdHlUeXBlLCBlbnRpdHlfaWQ6IFN0cmluZyhpZCkgfSlcbiAgICB9LFxuICAgIFtldmVudF1cbiAgKVxuXG4gIGNvbnN0IG9uQ2hhbmdlID0gKCkgPT4ge1xuICAgIGlmIChyZXBvcnRlZEV2ZW50LmN1cnJlbnQpIHJldHVyblxuICAgIGV2ZW50KEVWRU5UUy5wbUFpVHlwZWRUZXh0LCB7XG4gICAgICBhZ2VudF90eXBlOiBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPyAnbWFya2V0cGxhY2UnIDogYWdlbnQ/LnR5cGUsXG4gICAgfSlcbiAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSB0cnVlXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IChcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgbmV3QXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICBmdWFJZD86IHN0cmluZyxcbiAgICBzY0lkPzogc3RyaW5nXG4gICkgPT4ge1xuICAgIGNvbnN0IGZyb21EZWVwTGluayA9IEJvb2xlYW4oZGVlcExpbmtTZW5kUGVuZGluZ1JlZj8uY3VycmVudClcbiAgICBpZiAoZGVlcExpbmtTZW5kUGVuZGluZ1JlZikge1xuICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9XG4gICAgZXZlbnQoRVZFTlRTLmFpQ2hhdFNlbmQsIHtcbiAgICAgIGFnZW50X3R5cGU6IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA/ICdtYXJrZXRwbGFjZScgOiBhZ2VudD8udHlwZSxcbiAgICAgIGFnZW50X2lkOiBhZ2VudD8uaWQsXG4gICAgICBhZ2VudF9uYW1lOiBhZ2VudD8ubmFtZSxcbiAgICAgIC4uLihmcm9tRGVlcExpbmsgPyB7IHNvdXJjZTogJ2RlZXBfbGluaycgfSA6IHt9KSxcbiAgICB9KVxuICAgIGNvbnN0IHNraWxsSWRzID0gKG1lbnRpb25zID8/IFtdKS5maWx0ZXIobWVudGlvbiA9PiBtZW50aW9uLnR5cGUgPT09ICdza2lsbCcpLm1hcChtZW50aW9uID0+IFN0cmluZyhtZW50aW9uLmlkKSlcbiAgICBpZiAoc2tpbGxJZHMubGVuZ3RoID4gMCkge1xuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdFNraWxsU2VuZCwge1xuICAgICAgICBza2lsbF9pZHM6IHNraWxsSWRzLFxuICAgICAgICBza2lsbF9jb3VudDogc2tpbGxJZHMubGVuZ3RoLFxuICAgICAgICBhZ2VudF90eXBlOiBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPyAnbWFya2V0cGxhY2UnIDogYWdlbnQ/LnR5cGUsXG4gICAgICB9KVxuICAgIH1cbiAgICBvblNlbmRNZXNzYWdlKG1lc3NhZ2UsIG5ld0F0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgICBzZXRBdHRhY2htZW50cyhbXSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEZhcSA9IChtZXNzYWdlOiBzdHJpbmcsIGZhcUlkOiBzdHJpbmcpID0+IHtcbiAgICBvblNlbmRNZXNzYWdlKG1lc3NhZ2UsIHVuZGVmaW5lZCwgZmFxSWQsIHVuZGVmaW5lZClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZpbGVBdHRhY2ggPSBhc3luYyAoZmlsZTogRmlsZSkgPT4ge1xuICAgIGNvbnN0IGZpbGVOYW1lUGFydHMgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKVxuICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBmaWxlTmFtZVBhcnRzLmxlbmd0aCA+IDEgPyBgLiR7ZmlsZU5hbWVQYXJ0cy5wb3AoKT8udG9Mb3dlckNhc2UoKX1gIDogJydcbiAgICBjb25zdCBpc0ltYWdlQnlFeHRlbnNpb24gPSBbJy5wbmcnLCAnLmpwZycsICcuanBlZyddLmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pXG4gICAgY29uc3QgaXNJbWFnZUJ5TWltZSA9IGZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKVxuICAgIGNvbnN0IGlzSW1hZ2UgPSBpc0ltYWdlQnlNaW1lICYmIGlzSW1hZ2VCeUV4dGVuc2lvblxuICAgIC8vIFNpIGVsIE1JTUUgbm8gZGlzdGluZ3VlIGJpZW4gbGEgZXh0ZW5zacOzbiAoYXVkaW8vb2dnLCBhdWRpby9tcDQsIFBvd2VyUG9pbnQpLCB1c2FyIGVsIGljb25vIHBvciBleHRlbnNpw7NuXG4gICAgY29uc3QgZXh0ZW5zaW9uVG9JY29uOiBSZWNvcmQ8c3RyaW5nLCBSZWFjdE5vZGU+ID0ge1xuICAgICAgJy5vZ2cnOiA8T2dnRmlsZUljb24gLz4sXG4gICAgICAnLm9nYSc6IDxPZ2FGaWxlSWNvbiAvPixcbiAgICAgICcubXA0JzogPE1wNEZpbGVJY29uIC8+LFxuICAgICAgJy5tNGEnOiA8TTRhRmlsZUljb24gLz4sXG4gICAgICAnLnBwdCc6IDxQcHRGaWxlSWNvbiAvPixcbiAgICAgICcucHB0eCc6IDxQcHR4RmlsZUljb24gLz4sXG4gICAgfVxuXG4gICAgbGV0IGljb24gPSBJY29uQnlGaWxlVHlwZVtmaWxlLnR5cGVdXG5cbiAgICAvLyBTaSBlbCB0aXBvIGVzIGF1ZGlvL29nZywgYXVkaW8vbXA0IG8gUG93ZXJQb2ludCBnZW7DqXJpY28sIHVzYXIgbGEgZXh0ZW5zacOzbiBwYXJhIGVsIGljb25vXG4gICAgaWYgKFxuICAgICAgKGZpbGUudHlwZSA9PT0gJ2F1ZGlvL29nZycgfHwgZmlsZS50eXBlID09PSAnYXVkaW8vbXA0JyB8fCBmaWxlLnR5cGUgPT09ICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcpICYmXG4gICAgICBmaWxlRXh0ZW5zaW9uXG4gICAgKSB7XG4gICAgICBpY29uID0gZXh0ZW5zaW9uVG9JY29uW2ZpbGVFeHRlbnNpb25dIHx8IGljb25cbiAgICB9XG5cbiAgICBpZiAoIWljb24pIHtcbiAgICAgIGNvbnN0IGV4dGVuc2lvblRvTWltZVR5cGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICcudHh0JzogJ3RleHQvcGxhaW4nLFxuICAgICAgICAnLm1kJzogJ3RleHQveC1tYXJrZG93bicsXG4gICAgICAgICcuY3N2JzogJ3RleHQvY3N2JyxcbiAgICAgICAgJy5kb2MnOiAnYXBwbGljYXRpb24vbXN3b3JkJyxcbiAgICAgICAgJy5kb2N4JzogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JyxcbiAgICAgICAgJy5wcHQnOiAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnLFxuICAgICAgICAnLnBwdHgnOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbicsXG4gICAgICAgICcucGRmJzogJ2FwcGxpY2F0aW9uL3BkZicsXG4gICAgICAgICcueGxzeCc6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXG4gICAgICAgICcueGxzJzogJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcsXG4gICAgICAgICcuZmxhYyc6ICdhdWRpby9mbGFjJyxcbiAgICAgICAgJy5tNGEnOiAnYXVkaW8vbTRhJyxcbiAgICAgICAgJy5tcDMnOiAnYXVkaW8vbXBlZycsXG4gICAgICAgICcubXA0JzogJ2F1ZGlvL21wNCcsXG4gICAgICAgICcub2dhJzogJ2F1ZGlvL29nYScsXG4gICAgICAgICcub2dnJzogJ2F1ZGlvL29nZycsXG4gICAgICAgICcud2F2JzogJ2F1ZGlvL3dhdicsXG4gICAgICAgICcud2VibSc6ICdhdWRpby93ZWJtJyxcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1pbWVUeXBlQnlFeHRlbnNpb24gPSBleHRlbnNpb25Ub01pbWVUeXBlW2ZpbGVFeHRlbnNpb25dXG4gICAgICBpZiAobWltZVR5cGVCeUV4dGVuc2lvbikge1xuICAgICAgICBpY29uID0gSWNvbkJ5RmlsZVR5cGVbbWltZVR5cGVCeUV4dGVuc2lvbl1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGljb24gPSA8QXR0YWNoIGNvbG9yPVwicmdiYSgxMzUsIDY0LCAxOTEsIDEpXCIgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgfVxuICAgIH1cbiAgICBsZXQgcHJvY2Vzc2VkRmlsZSA9IGZpbGVcblxuICAgIC8vIFNpIGVzIHVuYSBpbWFnZW4sIHByZS1wcm9jZXNhcmxhIHBhcmEgZWwgYmFja2VuZCAoZWwgY2hpcCBkZWwgaW5wdXQgdXNhIGVsIMOtY29ubyBkZSB0aXBvKS5cbiAgICBpZiAoaXNJbWFnZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcHJvY2Vzc2VkRmlsZSA9IGF3YWl0IHByZXByb2Nlc3NJbWFnZUZvckJhY2tlbmQoZmlsZSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHByZS1wcm9jZXNhbmRvIGltYWdlbjonLCBlcnJvcilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBuZXdBdHRhY2htZW50OiBBdHRhY2htZW50RmlsZSA9IHtcbiAgICAgIGZpbGU6IHByb2Nlc3NlZEZpbGUsXG4gICAgICBvcmlnaW5hbEZpbGU6IGlzSW1hZ2UgPyBmaWxlIDogdW5kZWZpbmVkLFxuICAgICAgaWQ6IGAke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKX1gLFxuICAgICAgbmFtZTogZmlsZS5uYW1lLFxuICAgICAgc2l6ZTogcHJvY2Vzc2VkRmlsZS5zaXplLFxuICAgICAgdHlwZTogcHJvY2Vzc2VkRmlsZS50eXBlLFxuICAgICAgaWNvbixcbiAgICB9XG5cbiAgICBzZXRBdHRhY2htZW50cyhwcmV2ID0+IFsuLi5wcmV2LCBuZXdBdHRhY2htZW50XSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUF0dGFjaG1lbnQgPSAoZmlsZUlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBuZXdBdHRhY2htZW50cyA9IGF0dGFjaG1lbnRzLmZpbHRlcihhdHRhY2htZW50ID0+IGF0dGFjaG1lbnQuaWQgIT09IGZpbGVJZClcbiAgICBzZXRBdHRhY2htZW50cyhuZXdBdHRhY2htZW50cylcbiAgfVxuXG4gIGNvbnN0IGlzTUFJQSA9IHZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KVxuICBjb25zdCBkaXNjbGFpbWVyTWVzc2FnZSA9IGlzTUFJQVxuICAgID8gdCgnY2hhdC5mb290ZXIuZGlzY2xhaW1lcicsIHsgYWdlbnROYW1lOiB0KCdnbG9iYWxzLmJyYW5kTmFtZScpIH0pXG4gICAgOiB0KCdjaGF0LmZvb3Rlci5kaXNjbGFpbWVyQWdlbnQnKVxuXG4gIGNvbnN0IGNvbnRleHRDaGlwID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFpc01BSUEgfHwgbG9hZGluZ01lc3NhZ2VzIHx8ICFjaGlwSXRlbXMubGVuZ3RoKSByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1zOiBjaGlwSXRlbXMsXG4gICAgICB0eXBlOiBjaGlwVHlwZSxcbiAgICAgIGVudGl0eUlkOiBjaGlwRW50aXR5SWQsXG4gICAgICBsZWFkaW5nSWNvbjogY2hpcFR5cGUgPT09ICd0YXNrJyA/IDxUYXNrTGlua0ljb24gd2lkdGg9ezE1fSBoZWlnaHQ9ezE1fSBjb2xvcj1cIiM4MDgwODBcIiAvPiA6IHVuZGVmaW5lZCxcbiAgICAgIG9uRW50aXR5TmF2aWdhdGU6IGhhbmRsZUNvbnRleHRDaGlwTmF2aWdhdGUsXG4gICAgfVxuICB9LCBbY2hpcEVudGl0eUlkLCBjaGlwSXRlbXMsIGNoaXBUeXBlLCBoYW5kbGVDb250ZXh0Q2hpcE5hdmlnYXRlLCBpc01BSUEsIGxvYWRpbmdNZXNzYWdlc10pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkQ2hhdEZvb3Rlcj5cbiAgICAgIDxNQUlBSW5wdXRcbiAgICAgICAgcG9wb3ZlckFuY2hvclJlZj17aW5wdXRQb3BvdmVyQW5jaG9yUmVmfVxuICAgICAgICBvblNlbmRNZXNzYWdlPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgY2xhc3NOYW1lPXtNT0RBTF9FTEVNRU5UU31cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBwbGFjZWhvbGRlcj17XG4gICAgICAgICAgYWdlbnQ/LmlucHV0X3BsYWNlaG9sZGVyIHx8XG4gICAgICAgICAgKGlzT3JjaGVzdHJhdG9yID8gdCgnY2hhdC5mb290ZXIub3JjaGVzdHJhdG9yUGxhY2Vob2xkZXInKSA6IHQoJ2NoYXQuZm9vdGVyLnBsYWNlaG9sZGVyJykpXG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICBvbkZvY3VzPXtvbklucHV0Rm9jdXN9XG4gICAgICAgIG9uRmlsZUF0dGFjaD17aGFuZGxlRmlsZUF0dGFjaH1cbiAgICAgICAgb25EZWxldGVBdHRhY2htZW50PXtoYW5kbGVEZWxldGVBdHRhY2htZW50fVxuICAgICAgICBhdHRhY2htZW50cz17YXR0YWNobWVudHNcbiAgICAgICAgICAuZmlsdGVyKGF0dCA9PiAhIWF0dC5maWxlKVxuICAgICAgICAgIC5tYXAoYXR0ID0+ICh7XG4gICAgICAgICAgICBmaWxlOiBhdHQuZmlsZSEsXG4gICAgICAgICAgICBvcmlnaW5hbEZpbGU6IGF0dC5vcmlnaW5hbEZpbGUsXG4gICAgICAgICAgICBpZDogYXR0LmlkLFxuICAgICAgICAgICAgbmFtZTogYXR0Lm5hbWUsXG4gICAgICAgICAgICBzaXplOiB0eXBlb2YgYXR0LnNpemUgPT09ICdudW1iZXInID8gYXR0LnNpemUgOiBOdW1iZXIoYXR0LnNpemUpIHx8IDAsXG4gICAgICAgICAgICB0eXBlOiBhdHQudHlwZSxcbiAgICAgICAgICAgIGljb246IGF0dC5pY29uLFxuICAgICAgICAgIH0pKX1cbiAgICAgICAgaXNTdHJlYW1pbmc9e2lzU3RyZWFtaW5nfVxuICAgICAgICBpc1dyaXRpbmc9e2lzV3JpdGluZ31cbiAgICAgICAgb25TdG9wR2VuZXJhdGlvbj17b25TdG9wR2VuZXJhdGlvbn1cbiAgICAgICAgY2hhdElkPXtjaGF0SWQgfHwgdW5kZWZpbmVkfVxuICAgICAgICBuZXdDaGF0S2V5PXtuZXdDaGF0S2V5fVxuICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICBjb250ZXh0Q2hpcD17Y29udGV4dENoaXB9XG4gICAgICAvPlxuICAgICAgPENoYXREaXNjbGFpbWVyTWVzc2FnZSBtZXNzYWdlPXtkaXNjbGFpbWVyTWVzc2FnZX0gLz5cbiAgICA8L1N0eWxlZENoYXRGb290ZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBb0JBLFdBQVcsRUFBRUMs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
@@ -0,0 +1,43 @@
1
+ export var abbreviateSpecialistInAgentName = function abbreviateSpecialistInAgentName(agentName) {
2
+ if (!agentName || typeof agentName !== 'string') return agentName;
3
+ return agentName.replace(/\b(especialista|especialist)\b/gi, 'Esp.').replace(/\bspecialist\b/gi, 'Spec.');
4
+ };
5
+ export var resolveToggleChatModalId = function resolveToggleChatModalId(currentModalChatId, clickedChatId) {
6
+ if (currentModalChatId && currentModalChatId !== clickedChatId) return null;
7
+ return currentModalChatId === clickedChatId ? null : clickedChatId;
8
+ };
9
+ export var isChatListScrolledToBottom = function isChatListScrolledToBottom(scrollTop, scrollHeight, clientHeight) {
10
+ var thresholdPx = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 10;
11
+ return scrollTop + clientHeight >= scrollHeight - thresholdPx;
12
+ };
13
+ export var countSidebarAgentNavButtons = function countSidebarAgentNavButtons(showMarketplaceSidebarButton, canViewAgents, canViewSkills) {
14
+ return (showMarketplaceSidebarButton ? 1 : 0) + (canViewAgents ? 1 : 0) + (canViewSkills ? 1 : 0);
15
+ };
16
+ export var resolveAgentsHubSection = function resolveAgentsHubSection(showNewChat, agentsNavActive) {
17
+ return showNewChat && (agentsNavActive === 'myAgents' || agentsNavActive === 'maiaker' || agentsNavActive === 'mySkills');
18
+ };
19
+ export var resolveShowNewChatButton = function resolveShowNewChatButton(params) {
20
+ var _params$selectedAgent, _params$selectedAgent2, _params$selectedAgent3;
21
+ var agentUsable = !((_params$selectedAgent = params.selectedAgent) !== null && _params$selectedAgent !== void 0 && _params$selectedAgent.is_deleted) && !((_params$selectedAgent2 = params.selectedAgent) !== null && _params$selectedAgent2 !== void 0 && _params$selectedAgent2.has_not_permissions) && !((_params$selectedAgent3 = params.selectedAgent) !== null && _params$selectedAgent3 !== void 0 && _params$selectedAgent3.has_not_access);
22
+ if (params.isAgentsHubSection) return true;
23
+ if (params.showNewChat || params.hasError || params.loadingChats || params.isLegacyContextSession) {
24
+ return false;
25
+ }
26
+ if (params.userCanViewAgents) return agentUsable;
27
+ return agentUsable;
28
+ };
29
+ export var shouldUseMaiaIconForChatAgent = function shouldUseMaiaIconForChatAgent(agentType) {
30
+ return agentType === 'clone' || agentType === 'orchestrator';
31
+ };
32
+ export var resolveSidebarChatAgentLabel = function resolveSidebarChatAgentLabel(params) {
33
+ var base = params.agentType === 'clone' || params.agentType === 'orchestrator' ? abbreviateSpecialistInAgentName(params.agentName || '') : params.agentName || '';
34
+ if (params.projectName) return "".concat(base, " - ").concat(params.projectName);
35
+ return base;
36
+ };
37
+ export var isChatUnreadIndicator = function isChatUnreadIndicator(isRead, isGenerating) {
38
+ return isRead === false && !isGenerating;
39
+ };
40
+ export var shouldCloseModalOnOutsideClick = function shouldCloseModalOnOutsideClick(isOpenModal, target) {
41
+ return Boolean(isOpenModal && !target.closest('[data-modal-container]'));
42
+ };
43
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lIiwiYWdlbnROYW1lIiwicmVwbGFjZSIsInJlc29sdmVUb2dnbGVDaGF0TW9kYWxJZCIsImN1cnJlbnRNb2RhbENoYXRJZCIsImNsaWNrZWRDaGF0SWQiLCJpc0NoYXRMaXN0U2Nyb2xsZWRUb0JvdHRvbSIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsInRocmVzaG9sZFB4IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY291bnRTaWRlYmFyQWdlbnROYXZCdXR0b25zIiwic2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiIsImNhblZpZXdBZ2VudHMiLCJjYW5WaWV3U2tpbGxzIiwicmVzb2x2ZUFnZW50c0h1YlNlY3Rpb24iLCJzaG93TmV3Q2hhdCIsImFnZW50c05hdkFjdGl2ZSIsInJlc29sdmVTaG93TmV3Q2hhdEJ1dHRvbiIsInBhcmFtcyIsIl9wYXJhbXMkc2VsZWN0ZWRBZ2VudCIsIl9wYXJhbXMkc2VsZWN0ZWRBZ2VudDIiLCJfcGFyYW1zJHNlbGVjdGVkQWdlbnQzIiwiYWdlbnRVc2FibGUiLCJzZWxlY3RlZEFnZW50IiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsImlzQWdlbnRzSHViU2VjdGlvbiIsImhhc0Vycm9yIiwibG9hZGluZ0NoYXRzIiwiaXNMZWdhY3lDb250ZXh0U2Vzc2lvbiIsInVzZXJDYW5WaWV3QWdlbnRzIiwic2hvdWxkVXNlTWFpYUljb25Gb3JDaGF0QWdlbnQiLCJhZ2VudFR5cGUiLCJyZXNvbHZlU2lkZWJhckNoYXRBZ2VudExhYmVsIiwiYmFzZSIsInByb2plY3ROYW1lIiwiY29uY2F0IiwiaXNDaGF0VW5yZWFkSW5kaWNhdG9yIiwiaXNSZWFkIiwiaXNHZW5lcmF0aW5nIiwic2hvdWxkQ2xvc2VNb2RhbE9uT3V0c2lkZUNsaWNrIiwiaXNPcGVuTW9kYWwiLCJ0YXJnZXQiLCJCb29sZWFuIiwiY2xvc2VzdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9TaWRlYmFyL1NpZGViYXIuaGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYWJicmV2aWF0ZVNwZWNpYWxpc3RJbkFnZW50TmFtZSA9IChhZ2VudE5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGlmICghYWdlbnROYW1lIHx8IHR5cGVvZiBhZ2VudE5hbWUgIT09ICdzdHJpbmcnKSByZXR1cm4gYWdlbnROYW1lXG4gIHJldHVybiBhZ2VudE5hbWUucmVwbGFjZSgvXFxiKGVzcGVjaWFsaXN0YXxlc3BlY2lhbGlzdClcXGIvZ2ksICdFc3AuJykucmVwbGFjZSgvXFxic3BlY2lhbGlzdFxcYi9naSwgJ1NwZWMuJylcbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVUb2dnbGVDaGF0TW9kYWxJZCA9IChjdXJyZW50TW9kYWxDaGF0SWQ6IHN0cmluZyB8IG51bGwsIGNsaWNrZWRDaGF0SWQ6IHN0cmluZyk6IHN0cmluZyB8IG51bGwgPT4ge1xuICBpZiAoY3VycmVudE1vZGFsQ2hhdElkICYmIGN1cnJlbnRNb2RhbENoYXRJZCAhPT0gY2xpY2tlZENoYXRJZCkgcmV0dXJuIG51bGxcbiAgcmV0dXJuIGN1cnJlbnRNb2RhbENoYXRJZCA9PT0gY2xpY2tlZENoYXRJZCA/IG51bGwgOiBjbGlja2VkQ2hhdElkXG59XG5cbmV4cG9ydCBjb25zdCBpc0NoYXRMaXN0U2Nyb2xsZWRUb0JvdHRvbSA9IChcbiAgc2Nyb2xsVG9wOiBudW1iZXIsXG4gIHNjcm9sbEhlaWdodDogbnVtYmVyLFxuICBjbGllbnRIZWlnaHQ6IG51bWJlcixcbiAgdGhyZXNob2xkUHggPSAxMFxuKTogYm9vbGVhbiA9PiBzY3JvbGxUb3AgKyBjbGllbnRIZWlnaHQgPj0gc2Nyb2xsSGVpZ2h0IC0gdGhyZXNob2xkUHhcblxuZXhwb3J0IHR5cGUgU2lkZWJhckFnZW50TmF2QnV0dG9uQ291bnQgPSAwIHwgMSB8IDIgfCAzXG5cbmV4cG9ydCBjb25zdCBjb3VudFNpZGViYXJBZ2VudE5hdkJ1dHRvbnMgPSAoXG4gIHNob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b246IGJvb2xlYW4sXG4gIGNhblZpZXdBZ2VudHM6IGJvb2xlYW4sXG4gIGNhblZpZXdTa2lsbHM6IGJvb2xlYW5cbik6IFNpZGViYXJBZ2VudE5hdkJ1dHRvbkNvdW50ID0+XG4gICgoc2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiA/IDEgOiAwKSArXG4gICAgKGNhblZpZXdBZ2VudHMgPyAxIDogMCkgK1xuICAgIChjYW5WaWV3U2tpbGxzID8gMSA6IDApKSBhcyBTaWRlYmFyQWdlbnROYXZCdXR0b25Db3VudFxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUFnZW50c0h1YlNlY3Rpb24gPSAoXG4gIHNob3dOZXdDaGF0OiBib29sZWFuLFxuICBhZ2VudHNOYXZBY3RpdmU6ICdtYWlha2VyJyB8ICdteUFnZW50cycgfCAnbXlTa2lsbHMnIHwgbnVsbFxuKTogYm9vbGVhbiA9PlxuICBzaG93TmV3Q2hhdCAmJiAoYWdlbnRzTmF2QWN0aXZlID09PSAnbXlBZ2VudHMnIHx8IGFnZW50c05hdkFjdGl2ZSA9PT0gJ21haWFrZXInIHx8IGFnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJylcblxuZXhwb3J0IHR5cGUgU2VsZWN0ZWRBZ2VudEdhdGUgPSB7XG4gIGlzX2RlbGV0ZWQ/OiBib29sZWFuXG4gIGhhc19ub3RfcGVybWlzc2lvbnM/OiBib29sZWFuXG4gIGhhc19ub3RfYWNjZXNzPzogYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVNob3dOZXdDaGF0QnV0dG9uID0gKHBhcmFtczoge1xuICBpc0FnZW50c0h1YlNlY3Rpb246IGJvb2xlYW5cbiAgc2hvd05ld0NoYXQ6IGJvb2xlYW5cbiAgaGFzRXJyb3I6IGJvb2xlYW5cbiAgbG9hZGluZ0NoYXRzOiBib29sZWFuXG4gIGlzTGVnYWN5Q29udGV4dFNlc3Npb246IGJvb2xlYW5cbiAgdXNlckNhblZpZXdBZ2VudHM6IGJvb2xlYW5cbiAgc2VsZWN0ZWRBZ2VudD86IFNlbGVjdGVkQWdlbnRHYXRlIHwgbnVsbFxufSk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBhZ2VudFVzYWJsZSA9XG4gICAgIXBhcmFtcy5zZWxlY3RlZEFnZW50Py5pc19kZWxldGVkICYmXG4gICAgIXBhcmFtcy5zZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zICYmXG4gICAgIXBhcmFtcy5zZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2Vzc1xuXG4gIGlmIChwYXJhbXMuaXNBZ2VudHNIdWJTZWN0aW9uKSByZXR1cm4gdHJ1ZVxuXG4gIGlmIChwYXJhbXMuc2hvd05ld0NoYXQgfHwgcGFyYW1zLmhhc0Vycm9yIHx8IHBhcmFtcy5sb2FkaW5nQ2hhdHMgfHwgcGFyYW1zLmlzTGVnYWN5Q29udGV4dFNlc3Npb24pIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmIChwYXJhbXMudXNlckNhblZpZXdBZ2VudHMpIHJldHVybiBhZ2VudFVzYWJsZVxuICByZXR1cm4gYWdlbnRVc2FibGVcbn1cblxuZXhwb3J0IGNvbnN0IHNob3VsZFVzZU1haWFJY29uRm9yQ2hhdEFnZW50ID0gKGFnZW50VHlwZT86IHN0cmluZyk6IGJvb2xlYW4gPT5cbiAgYWdlbnRUeXBlID09PSAnY2xvbmUnIHx8IGFnZW50VHlwZSA9PT0gJ29yY2hlc3RyYXRvcidcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVTaWRlYmFyQ2hhdEFnZW50TGFiZWwgPSAocGFyYW1zOiB7XG4gIGFnZW50VHlwZT86IHN0cmluZ1xuICBhZ2VudE5hbWU/OiBzdHJpbmdcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmcgfCBudWxsXG59KTogc3RyaW5nID0+IHtcbiAgY29uc3QgYmFzZSA9XG4gICAgcGFyYW1zLmFnZW50VHlwZSA9PT0gJ2Nsb25lJyB8fCBwYXJhbXMuYWdlbnRUeXBlID09PSAnb3JjaGVzdHJhdG9yJ1xuICAgICAgPyBhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lKHBhcmFtcy5hZ2VudE5hbWUgfHwgJycpXG4gICAgICA6IHBhcmFtcy5hZ2VudE5hbWUgfHwgJydcbiAgaWYgKHBhcmFtcy5wcm9qZWN0TmFtZSkgcmV0dXJuIGAke2Jhc2V9IC0gJHtwYXJhbXMucHJvamVjdE5hbWV9YFxuICByZXR1cm4gYmFzZVxufVxuXG5leHBvcnQgY29uc3QgaXNDaGF0VW5yZWFkSW5kaWNhdG9yID0gKGlzUmVhZDogYm9vbGVhbiB8IHVuZGVmaW5lZCwgaXNHZW5lcmF0aW5nOiBib29sZWFuKTogYm9vbGVhbiA9PlxuICBpc1JlYWQgPT09IGZhbHNlICYmICFpc0dlbmVyYXRpbmdcblxuZXhwb3J0IGNvbnN0IHNob3VsZENsb3NlTW9kYWxPbk91dHNpZGVDbGljayA9IChpc09wZW5Nb2RhbDogc3RyaW5nIHwgbnVsbCwgdGFyZ2V0OiBFbGVtZW50KTogYm9vbGVhbiA9PlxuICBCb29sZWFuKGlzT3Blbk1vZGFsICYmICF0YXJnZXQuY2xvc2VzdCgnW2RhdGEtbW9kYWwtY29udGFpbmVyXScpKVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQU1BLCtCQUErQixHQUFHLFNBQWxDQSwrQkFBK0JBLENBQUlDLFNBQWlCLEVBQWE7RUFDNUUsSUFBSSxDQUFDQSxTQUFTLElBQUksT0FBT0EsU0FBUyxLQUFLLFFBQVEsRUFBRSxPQUFPQSxTQUFTO0VBQ2pFLE9BQU9BLFNBQVMsQ0FBQ0MsT0FBTyxDQUFDLGtDQUFrQyxFQUFFLE1BQU0sQ0FBQyxDQUFDQSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDO0FBQzNHLENBQUM7QUFFRCxPQUFPLElBQU1DLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQUlDLGtCQUFpQyxFQUFFQyxhQUFxQixFQUFvQjtFQUNuSCxJQUFJRCxrQkFBa0IsSUFBSUEsa0JBQWtCLEtBQUtDLGFBQWEsRUFBRSxPQUFPLElBQUk7RUFDM0UsT0FBT0Qsa0JBQWtCLEtBQUtDLGFBQWEsR0FBRyxJQUFJLEdBQUdBLGFBQWE7QUFDcEUsQ0FBQztBQUVELE9BQU8sSUFBTUMsMEJBQTBCLEdBQUcsU0FBN0JBLDBCQUEwQkEsQ0FDckNDLFNBQWlCLEVBQ2pCQyxZQUFvQixFQUNwQkMsWUFBb0I7RUFBQSxJQUNwQkMsV0FBVyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxFQUFFO0VBQUEsT0FDSkosU0FBUyxHQUFHRSxZQUFZLElBQUlELFlBQVksR0FBR0UsV0FBVztBQUFBO0FBSXBFLE9BQU8sSUFBTUksMkJBQTJCLEdBQUcsU0FBOUJBLDJCQUEyQkEsQ0FDdENDLDRCQUFxQyxFQUNyQ0MsYUFBc0IsRUFDdEJDLGFBQXNCO0VBQUEsT0FFckIsQ0FBQ0YsNEJBQTRCLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FDbkNDLGFBQWEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQ3RCQyxhQUFhLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUFBLENBQStCO0FBRTFELE9BQU8sSUFBTUMsdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUF1QkEsQ0FDbENDLFdBQW9CLEVBQ3BCQyxlQUEyRDtFQUFBLE9BRTNERCxXQUFXLEtBQUtDLGVBQWUsS0FBSyxVQUFVLElBQUlBLGVBQWUsS0FBSyxTQUFTLElBQUlBLGVBQWUsS0FBSyxVQUFVLENBQUM7QUFBQTtBQVFwSCxPQUFPLElBQU1DLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQUlDLE1BUXhDLEVBQWM7RUFBQSxJQUFBQyxxQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxzQkFBQTtFQUNiLElBQU1DLFdBQVcsR0FDZixHQUFBSCxxQkFBQSxHQUFDRCxNQUFNLENBQUNLLGFBQWEsY0FBQUoscUJBQUEsZUFBcEJBLHFCQUFBLENBQXNCSyxVQUFVLEtBQ2pDLEdBQUFKLHNCQUFBLEdBQUNGLE1BQU0sQ0FBQ0ssYUFBYSxjQUFBSCxzQkFBQSxlQUFwQkEsc0JBQUEsQ0FBc0JLLG1CQUFtQixLQUMxQyxHQUFBSixzQkFBQSxHQUFDSCxNQUFNLENBQUNLLGFBQWEsY0FBQUYsc0JBQUEsZUFBcEJBLHNCQUFBLENBQXNCSyxjQUFjO0VBRXZDLElBQUlSLE1BQU0sQ0FBQ1Msa0JBQWtCLEVBQUUsT0FBTyxJQUFJO0VBRTFDLElBQUlULE1BQU0sQ0FBQ0gsV0FBVyxJQUFJRyxNQUFNLENBQUNVLFFBQVEsSUFBSVYsTUFBTSxDQUFDVyxZQUFZLElBQUlYLE1BQU0sQ0FBQ1ksc0JBQXNCLEVBQUU7SUFDakcsT0FBTyxLQUFLO0VBQ2Q7RUFFQSxJQUFJWixNQUFNLENBQUNhLGlCQUFpQixFQUFFLE9BQU9ULFdBQVc7RUFDaEQsT0FBT0EsV0FBVztBQUNwQixDQUFDO0FBRUQsT0FBTyxJQUFNVSw2QkFBNkIsR0FBRyxTQUFoQ0EsNkJBQTZCQSxDQUFJQyxTQUFrQjtFQUFBLE9BQzlEQSxTQUFTLEtBQUssT0FBTyxJQUFJQSxTQUFTLEtBQUssY0FBYztBQUFBO0FBRXZELE9BQU8sSUFBTUMsNEJBQTRCLEdBQUcsU0FBL0JBLDRCQUE0QkEsQ0FBSWhCLE1BSTVDLEVBQWE7RUFDWixJQUFNaUIsSUFBSSxHQUNSakIsTUFBTSxDQUFDZSxTQUFTLEtBQUssT0FBTyxJQUFJZixNQUFNLENBQUNlLFNBQVMsS0FBSyxjQUFjLEdBQy9EckMsK0JBQStCLENBQUNzQixNQUFNLENBQUNyQixTQUFTLElBQUksRUFBRSxDQUFDLEdBQ3ZEcUIsTUFBTSxDQUFDckIsU0FBUyxJQUFJLEVBQUU7RUFDNUIsSUFBSXFCLE1BQU0sQ0FBQ2tCLFdBQVcsRUFBRSxVQUFBQyxNQUFBLENBQVVGLElBQUksU0FBQUUsTUFBQSxDQUFNbkIsTUFBTSxDQUFDa0IsV0FBVztFQUM5RCxPQUFPRCxJQUFJO0FBQ2IsQ0FBQztBQUVELE9BQU8sSUFBTUcscUJBQXFCLEdBQUcsU0FBeEJBLHFCQUFxQkEsQ0FBSUMsTUFBMkIsRUFBRUMsWUFBcUI7RUFBQSxPQUN0RkQsTUFBTSxLQUFLLEtBQUssSUFBSSxDQUFDQyxZQUFZO0FBQUE7QUFFbkMsT0FBTyxJQUFNQyw4QkFBOEIsR0FBRyxTQUFqQ0EsOEJBQThCQSxDQUFJQyxXQUEwQixFQUFFQyxNQUFlO0VBQUEsT0FDeEZDLE9BQU8sQ0FBQ0YsV0FBVyxJQUFJLENBQUNDLE1BQU0sQ0FBQ0UsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==